From 4f0abc0e3eb553c94e8e409ea14a1b047efe3028 Mon Sep 17 00:00:00 2001 From: Max Date: Mon, 2 Dec 2013 11:30:32 +0100 Subject: Refactor COMP128v23 implementation and add test suit --- .gitignore | 1 + include/osmocom/gsm/comp128v23.h | 4 +- src/gsm/auth_comp128v23.c | 4 +- src/gsm/comp128v23.c | 63 +- tests/Makefile.am | 7 +- tests/comp128/comp128_test.c | 2123 ++++++++++++++++++++++++++++++++++++++ tests/comp128/comp128_test.ok | 2050 ++++++++++++++++++++++++++++++++++++ tests/testsuite.at | 6 + 8 files changed, 4216 insertions(+), 42 deletions(-) create mode 100644 tests/comp128/comp128_test.c create mode 100644 tests/comp128/comp128_test.ok diff --git a/.gitignore b/.gitignore index 28392b56..71b27f25 100644 --- a/.gitignore +++ b/.gitignore @@ -62,6 +62,7 @@ tests/ussd/ussd_test tests/smscb/smscb_test tests/bits/bitrev_test tests/a5/a5_test +tests/comp128/comp128_test tests/auth/milenage_test tests/conv/conv_test tests/lapd/lapd_test diff --git a/include/osmocom/gsm/comp128v23.h b/include/osmocom/gsm/comp128v23.h index aa26e56a..bebeb597 100644 --- a/include/osmocom/gsm/comp128v23.h +++ b/include/osmocom/gsm/comp128v23.h @@ -13,11 +13,11 @@ * Performs the COMP128 version 2 and 3 algorithm (used as A3/A8) * ki : uint8_t [16] * srand : uint8_t [16] - * version : uint8_t (2 or 3) * sres : uint8_t [4] * kc : uint8_t [8] * returns 1 if not version 2 or 3 specified */ -int comp128v23(const uint8_t *ki, const uint8_t *rand, uint8_t version, uint8_t *sres, uint8_t *kc); +int comp128v2(const uint8_t *ki, const uint8_t *rand, uint8_t *sres, uint8_t *kc); +int comp128v3(const uint8_t *ki, const uint8_t *rand, uint8_t *sres, uint8_t *kc); #endif /* __COMP128V23_H__ */ diff --git a/src/gsm/auth_comp128v23.c b/src/gsm/auth_comp128v23.c index 36383d93..168f8865 100644 --- a/src/gsm/auth_comp128v23.c +++ b/src/gsm/auth_comp128v23.c @@ -31,7 +31,7 @@ static int c128v2_gen_vec(struct osmo_auth_vector *vec, struct osmo_sub_auth_data *aud, const uint8_t *_rand) { - comp128v23(aud->u.gsm.ki, _rand, 2, vec->sres, vec->kc); + comp128v2(aud->u.gsm.ki, _rand, vec->sres, vec->kc); vec->auth_types = OSMO_AUTH_TYPE_GSM; return 0; @@ -48,7 +48,7 @@ static int c128v3_gen_vec(struct osmo_auth_vector *vec, struct osmo_sub_auth_data *aud, const uint8_t *_rand) { - comp128v23(aud->u.gsm.ki, _rand, 3, vec->sres, vec->kc); + comp128v3(aud->u.gsm.ki, _rand, vec->sres, vec->kc); vec->auth_types = OSMO_AUTH_TYPE_GSM; return 0; diff --git a/src/gsm/comp128v23.c b/src/gsm/comp128v23.c index 90042084..e21b718e 100644 --- a/src/gsm/comp128v23.c +++ b/src/gsm/comp128v23.c @@ -64,21 +64,17 @@ static const uint8_t table0[256] = { 218, 160, 187, 106, 35, 87, 105, 96, 145, 199, 159, 12, 121, 103, 112 }; -#define RAND_SIZE 16 -#define KI_SIZE 16 -#define SRES_SIZE 4 -#define KC_SIZE 8 static void _comp128v23_internal(uint8_t *output, const uint8_t *kxor, const uint8_t *rand) { - uint8_t temp[RAND_SIZE]; - uint8_t km_rm[RAND_SIZE+KI_SIZE]; + uint8_t temp[16]; + uint8_t km_rm[32]; uint8_t i,j,k,z; - memset(temp,0,sizeof(temp)/sizeof(uint8_t)); - memcpy(km_rm,rand,RAND_SIZE); - memcpy(km_rm+RAND_SIZE,kxor,KI_SIZE); + memset(temp, 0, sizeof(temp)); + memcpy(km_rm, rand, 16); + memcpy(km_rm + 16, kxor, 16); for (i=0; i<5; i++) { for (z=0; z<16; z++) { @@ -106,21 +102,18 @@ _comp128v23_internal(uint8_t *output, const uint8_t *kxor, const uint8_t *rand) } int -comp128v23(const uint8_t *ki, const uint8_t *rand, uint8_t version, uint8_t *sres, uint8_t *kc) +comp128v3(const uint8_t *ki, const uint8_t *rand, uint8_t *sres, uint8_t *kc) { - uint8_t k_mix[KI_SIZE]; - uint8_t rand_mix[RAND_SIZE]; - uint8_t katyvasz[KI_SIZE]; - uint8_t output[KI_SIZE]; - uint8_t i,s; + uint8_t k_mix[16]; + uint8_t rand_mix[16]; + uint8_t katyvasz[16]; + uint8_t output[16]; + uint8_t i; - if (!(version==2 || version==3)) - return 1; - - memset(k_mix,0,sizeof(k_mix)/sizeof(uint8_t)); - memset(rand_mix,0,sizeof(rand_mix)/sizeof(uint8_t)); - memset(katyvasz,0,sizeof(katyvasz)/sizeof(uint8_t)); - memset(output,0,sizeof(output)/sizeof(uint8_t)); + memset(k_mix, 0, sizeof(k_mix)); + memset(rand_mix, 0, sizeof(rand_mix)); + memset(katyvasz, 0, sizeof(katyvasz)); + memset(output, 0, sizeof(output)); for (i=0; i<8; i++) { k_mix[i] = ki[15 - i]; @@ -144,23 +137,21 @@ comp128v23(const uint8_t *ki, const uint8_t *rand, uint8_t version, uint8_t *sre output[i] = rand_mix[15-i]; } - if (version==2) { - output[15] = 0; - output[14] = 4*(output[14]>>2); - } - - s = 8; - i = 0; - while (i<4) { - output[s+i-4] = output[s+i]; - output[s+i] = output[s+i+4]; - i++; - } + memmove(output + 4, output + 8, 8); /* ignore bytes 4..7 */ /* the algorithm uses 16 bytes until this point, but only 12 bytes are effective * also 12 bytes coming out from the SIM card */ - memcpy(sres,output,SRES_SIZE*sizeof(uint8_t)); - memcpy(kc,&output[SRES_SIZE],KC_SIZE*sizeof(uint8_t)); + memcpy(sres, output, 4); + memcpy(kc, output + 4, 8); return 0; } + +int +comp128v2(const uint8_t *ki, const uint8_t *rand, uint8_t *sres, uint8_t *kc) +{ + int r = comp128v3(ki, rand, sres, kc); + kc[7] = 0; /* 10 last bits of Kc forced to 0 */ + kc[6] &= 0xfc; + return r; +} diff --git a/tests/Makefile.am b/tests/Makefile.am index 1bb26cef..98ede3b8 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -7,7 +7,7 @@ check_PROGRAMS = timer/timer_test sms/sms_test ussd/ussd_test \ gb/bssgp_fc_test gb/gprs_ns_test \ logging/logging_test fr/fr_test \ loggingrb/loggingrb_test strrb/strrb_test \ - vty/vty_test + vty/vty_test comp128/comp128_test if ENABLE_MSGFILE check_PROGRAMS += msgfile/msgfile_test @@ -16,6 +16,9 @@ endif a5_a5_test_SOURCES = a5/a5_test.c a5_a5_test_LDADD = $(top_builddir)/src/libosmocore.la $(top_builddir)/src/gsm/libosmogsm.la +comp128_comp128_test_SOURCES = comp128/comp128_test.c +comp128_comp128_test_LDADD = $(top_builddir)/src/libosmocore.la $(top_builddir)/src/gsm/libosmogsm.la + auth_milenage_test_SOURCES = auth/milenage_test.c auth_milenage_test_LDADD = $(top_builddir)/src/libosmocore.la $(top_builddir)/src/gsm/libosmogsm.la @@ -101,7 +104,7 @@ EXTRA_DIST = testsuite.at $(srcdir)/package.m4 $(TESTSUITE) \ logging/logging_test.ok logging/logging_test.err \ fr/fr_test.ok loggingrb/logging_test.ok \ loggingrb/logging_test.err strrb/strrb_test.ok \ - vty/vty_test.ok + vty/vty_test.ok comp128/comp128_test.ok DISTCLEANFILES = atconfig diff --git a/tests/comp128/comp128_test.c b/tests/comp128/comp128_test.c new file mode 100644 index 00000000..eb6fb12c --- /dev/null +++ b/tests/comp128/comp128_test.c @@ -0,0 +1,2123 @@ +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +static struct osmo_sub_auth_data test_aux2 = { + .type = OSMO_AUTH_TYPE_GSM, + .algo = OSMO_AUTH_ALG_COMP128v2, + .u.gsm = { + .ki = { 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, + 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA }, + } +}; + +static struct osmo_sub_auth_data test_aux3 = { + .type = OSMO_AUTH_TYPE_GSM, + .algo = OSMO_AUTH_ALG_COMP128v3, + .u.gsm = { + .ki = { 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, + 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA }, + } +}; + +void print_check(int rc, char *res, struct osmo_auth_vector *vec) +{ + uint8_t buf[12]; + osmo_hexparse(res, buf, 12); + if (0 != memcmp(buf, vec->sres, 4)) { + printf("%d FAIL SRES:\n", rc); + printf("OUT: %s\n", osmo_hexdump_nospc(vec->sres, 4)); + printf("EXP: %s\n", osmo_hexdump_nospc(buf, 4)); + } + if (0 != memcmp(buf+4, vec->kc, 8)) { + printf("%d FAIL Kc:\n", rc); + printf("OUT: %s\n", osmo_hexdump_nospc(vec->kc, 8)); + printf("EXP: %s\n", osmo_hexdump_nospc(buf+4, 8)); + } else + printf("%d OK\n", rc); +} + +void test_comp128v3(char *rand, char *res) +{ + struct osmo_auth_vector _vec; + struct osmo_auth_vector *vec = &_vec; + uint8_t _rand[16]; + osmo_hexparse(rand, _rand, 16); + int rc = osmo_auth_gen_vec(vec, &test_aux3, _rand); + print_check(rc, res, vec); +} + +void test_comp128v2(char *rand, char *res) +{ + struct osmo_auth_vector _vec; + struct osmo_auth_vector *vec = &_vec; + uint8_t _rand[16]; + osmo_hexparse(rand, _rand, 16); + int rc = osmo_auth_gen_vec(vec, &test_aux2, _rand); + print_check(rc, res, vec); +} + +int main(int argc, char **argv) +{ + printf("COMP128v2 support: %d\n", osmo_auth_alg_parse("COMP128v2")); + printf("COMP128v3 support: %d\n", osmo_auth_alg_parse("COMP128v3")); + +test_comp128v2("00000000000000000000000000000000", "34B4225BF16B96E118A85800"); +test_comp128v2("00102030405060708090A0B0C0D0E0F0", "A892A8EFD6D33E3650372C00"); +test_comp128v2("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", "F699F0BABA87114F0350BC00"); +test_comp128v2("000102030405060708090A0B0C0D0E0F", "A5B4C7CA0514C4E1B25CBC00"); +test_comp128v2("F918FB140A2D63E10B9B3354C93D5816", "C1AD6FE372383E0D6AAC7C00"); +test_comp128v2("CBFE7E4156F94F1E6ECA59C194A9BED4", "3DEF079216A74B97B4ADC800"); +test_comp128v2("B65CB9DDC667BBDA3F493FB4BA2CA2E9", "A846E7EA48C2E85F1C115800"); +test_comp128v2("23E0F6ED14ED2596A3B11453786E7C2C", "73280CD483E7DCDE26F94400"); +test_comp128v2("CB5CD183A1D26D1CF75D5987D20CAE75", "055DF715899926BD0D6A0400"); +test_comp128v2("1E99C6D07A0914E101FC2094406FB46F", "0A500680A860B1678C749400"); +test_comp128v2("F9213F7452CC291C6B64F990DFC219CE", "6273439D25CA01E321505C00"); +test_comp128v2("21C5CCC4CDDF8D016F82788BF2863718", "404F028B1F31A67A71734400"); +test_comp128v2("1561F279CC3FC8D7FDF7703C3755003B", "7081294CCCF3AF9D87CBBC00"); +test_comp128v2("360EBBC222F116936F55772663FE0131", "D30CD39641B7771E2CDA2800"); +test_comp128v2("D7FDC4BEFF3E172607BCAFD0FFB8414E", "656222C3E481A1AE7B42BC00"); +test_comp128v2("D832114007244CEB3B05AA50F60A1DC3", "EAE9BC2A4D1DD802E9ADF000"); +test_comp128v2("CCB8CAA7DC27AF527F75385BC9CC943A", "2A43B559362A6DDED82E4800"); +test_comp128v2("48BD98472929D5D66FDEF005FD1B67D5", "0EA9FCAF684D3416C187C800"); +test_comp128v2("97A67270ABC7807CF3F7D2D668D9EF2C", "510DA1D26FA933C86D0D2C00"); +test_comp128v2("5CF1FC3916B9631D04E763003CB0AFB1", "EE2E83CF08A00B0A1966C800"); +test_comp128v2("18F91C80B5CDC5A5A95A187EF66AB0C0", "0182E8AFDC4092FEE382F000"); +test_comp128v2("248B68303F09476AE2E72342636E6D9E", "D78DF0808D19FBF8B703D400"); +test_comp128v2("340D4544F8559C61EDF7F4216E70C576", "2480A75BF304AC7AC73F3800"); +test_comp128v2("CCFE030B6436D949082ACA45077C9193", "85A18AEA5B9BC2B7A376F400"); +test_comp128v2("3D0754700F6A1D2C704921EC67AF3ED2", "2D337465329B474F67975800"); +test_comp128v2("9165BF37C63326F8CE9CD03F9A1378BC", "DCAEA3C710D0D67DD5B3F400"); +test_comp128v2("9DCFA432DFC4F1FF19A441F32A5D8597", "F010B99B63B7E6F75DE6C400"); +test_comp128v2("1DE9D2AC71DF86E5A599017A692CB4B8", "EB93C952E8C616D6C2979400"); +test_comp128v2("261326154E44C794F5A91935182CFF40", "B27DE0650A1FC35AB045EC00"); +test_comp128v2("3F299BB3EE46BBB4ADB5493B4A2CBE5E", "67838DEDAA2242B6BB237800"); +test_comp128v2("CFD033BE76FE261250042457B40445A2", "863CA702CF08A47B3CBD5800"); +test_comp128v2("FCCF9EE60A80EC9F7BE413A50CE60869", "14D1B0D8254D474C999CC000"); +test_comp128v2("A966B4A739358CFD6EF22A9A660785DF", "6894BA1EF235BFA46A0E7000"); +test_comp128v2("C1F8AD801A7441908B0597E186EBF2C0", "C4E9F13F0C19A76F7EC9CC00"); +test_comp128v2("ACDF541A969C68703E5DE37ED0B7CA09", "832463CBF662B2A72D4BF400"); +test_comp128v2("274F7ECBD2AF639D9479FF4C73815E1E", "D1D5AA0F491ED442716D4C00"); +test_comp128v2("3E4FC9C886E4E5A8EE89AF61231857CB", "323C4D161E55610BCB0CCC00"); +test_comp128v2("E0F4130624669860131BD80D85A3F1F2", "07DAEF70D14DFB9988C5D800"); +test_comp128v2("DD8C39429A107F263B2A5F596A501905", "1417946345034965053FB000"); +test_comp128v2("A95D7E54A42604BAB557A0BDA4F50CC1", "D1683BA6DF50CAC2508CA400"); +test_comp128v2("140C6662233AD66D5AC825D80A9A8272", "A0FAA92970DC0E98AB406000"); +test_comp128v2("EEA61DDED13D0E0F2DCCB71ADD551B7B", "7240AF352D215FE4B4762C00"); +test_comp128v2("E4C84D1860B03C3DC2010FB6AB3E4C47", "30576C1054878023B505D800"); +test_comp128v2("747AF0FE3B3E903AEB6191EA01DC9F4E", "4CBAD22E8500464CFD7E4800"); +test_comp128v2("E607B88BE14E5CEE43594EF51A0725BB", "1D79DBF69D7E2350225D9C00"); +test_comp128v2("4002BDDC83EF54ABAE5442B0A8E976B9", "6CB6D7673428D2D2E84BC800"); +test_comp128v2("AB8B27FE3F278CFDAE085F236A0A28E5", "06407FCB02EBF61123C57000"); +test_comp128v2("6883B190F8EC18305BAAF6429E817BC4", "C17A6B9AB444C1A9DD448800"); +test_comp128v2("18DC6B25398F64FAA4A740C617E9D591", "F88F9FA28DE0500403AC6400"); +test_comp128v2("2735F287D3AEDDD35C204628322D3899", "00F5692A5F350599985AC400"); +test_comp128v2("5FD7E3F81F3671F547B94D9F6BE7A348", "FC9DCBBB4FD0580F9D196C00"); +test_comp128v2("4A316F08F912FC534D8E204129C78974", "855C814274800A5C45B3B000"); +test_comp128v2("960CB8BE1B5025F3EBBB55EB0D79890E", "E1CAF3B52DDA529D0B694000"); +test_comp128v2("282461C3FEF2ACC7F53E640AAA8279FA", "52F8D1327B2A1B5319025800"); +test_comp128v2("BA4DF10402E2E5956DE8DA1886CF14E3", "DB2D97F66B679B4D12661800"); +test_comp128v2("33B82F56356D44D6A790ADD4F4CE9FDC", "694EF7DB3E35F50726159800"); +test_comp128v2("01FDE145E42A4A0F7CC97B8CF4A216C1", "4391900FCA30173E63A39C00"); +test_comp128v2("61259899F937B7403B2EC70ED9D32384", "F51BAF50F8CE1A64DCD25000"); +test_comp128v2("0E6F0DC32693A7EF677C37BC44CE8600", "C110634B037031745F401800"); +test_comp128v2("1283E739566C46FC1041C2EDF46ACA63", "4C74EFAB8A6522A010F09C00"); +test_comp128v2("CE7B368B575950EE69D82D3CEEF59E7D", "FE9FF88A94F0A490335EFC00"); +test_comp128v2("DB0D3AE84486ED465CFD507F6B321E2F", "76D1679FAABBBF1FD3E79000"); +test_comp128v2("BBA5E23EED1E43EB3AFCE2ABC5FDF71F", "022E2C5CFE2B4C3EBDC41000"); +test_comp128v2("B0B9EDB4BB979E3CA9630F8CCC3FCAA2", "1775CD2F9C4A6DCE9503C400"); +test_comp128v2("4A68C3FBD3A74468D486308DD1412D31", "77249441DF2502778FF3E400"); +test_comp128v2("9AB0D6DCD8251E4BBB78BFACF5823C7A", "E7499452B5C45C1A7D15BC00"); +test_comp128v2("B62C6CD3A87425B29DA8E226B28C3617", "D4A1FC8107EFFD9ABDB01400"); +test_comp128v2("A094A045959D9A589F3BBD28D908CBAE", "A20ADDC80477942E1B390800"); +test_comp128v2("3C76356D4AB3CDEB6AF36AE27653676F", "F192C4B354CFDC97186CD400"); +test_comp128v2("04ADB833E08A91A26BA932A9BE9DC4FE", "A86826C01F6B291290F21C00"); +test_comp128v2("0CD25169C9CE123475F394ED818CDACC", "F0219A28F767E219F029D800"); +test_comp128v2("758F9B775D80F66C2F46F45C13D14EA6", "A20754DA43C43FC4C387D800"); +test_comp128v2("501418ED3CFC481399ABE1522CE9FB1E", "42764FF7641AB6D55C796000"); +test_comp128v2("2D7333EFC9B3DB86C43ED4A440BB02D3", "9AE0F630A52EE42058852C00"); +test_comp128v2("BEE9E64A0165F7EDEDED06BB7AC0D11C", "B436CC2DA8B4E083D0967400"); +test_comp128v2("A342BA3D24D7CE59E44C5F1E6F3F28AB", "47BC33CA9A6D94596C8B0C00"); +test_comp128v2("423580E3B8B42BE68E2FCF0805A369A7", "34A0F45FE614F578B9504400"); +test_comp128v2("C81DF1E755DCA874A97FE2C8A2030A45", "2B5D9AE2B659D2920CAF9800"); +test_comp128v2("00B065F6BBD7142C0D810D81348143E1", "0CB323266C1993A44D335000"); +test_comp128v2("D0DE9876CCA615D16BE541659FD8E0A8", "F313600462BC4C2BC056DC00"); +test_comp128v2("1C02F9836A1C0C334AC68873C1A95DE2", "E913C4B6BEDC8F011042CC00"); +test_comp128v2("CC2686858921BD2A970F3364C1BD8154", "CD6AB5F8BE1967E637F11C00"); +test_comp128v2("EC5A44CE58F654A751AD1F87C7468E22", "E5B372CDD142BA7523ADE800"); +test_comp128v2("F7B93A2ECA12B2F0A7AD2B550781A311", "AC1D56004C3DB4248A2B9800"); +test_comp128v2("95A26343BDAE219F9A77E2D68B8D9715", "B8E2274BA75A01A1B844FC00"); +test_comp128v2("D9EF207AF47750EBF69E81669A0D7168", "90BE7292A33AFF976AF50000"); +test_comp128v2("CB095420C757A88E23E845F90010CE60", "5D5267614E4868BC9019EC00"); +test_comp128v2("43DA2FBE69364674ABE7A67EA1079F7A", "11602A06755795316CC2D000"); +test_comp128v2("9F3145932F5712D7767278650BF038C3", "62F7DA68B860F0EAC85AF000"); +test_comp128v2("6AC7C8825DE45A64EE61E175A4212CA2", "1564273CFC0D44D3AA813000"); +test_comp128v2("A81B3F8E35F3B77A681E581E81992245", "DEE4D4C1C210AD3A88208400"); +test_comp128v2("DA6EDF93A83A4F3390C7A74448F3EA58", "DADEFCC4C903978B5D968000"); +test_comp128v2("FEABCD9A4566FAB5CCC225649A9B51E8", "990248308A158336AD8CB400"); +test_comp128v2("F5A9320721897F9C4010CC26806DCC6C", "4E9483834C11A3258B735400"); +test_comp128v2("6A3BD4D5FC62586DA382EEB13EC5B98B", "C0BC1F742AF062B2C57F6800"); +test_comp128v2("657502B51422A9DF5D02215A3211720D", "ACD94B7C1B42B827ABB4B000"); +test_comp128v2("E601807D685AC33884F10BEE2B0F7155", "8E555A2E5483666FF8E9EC00"); +test_comp128v2("D081597E0807CDCC345E64EE06A656EE", "252F83F942D3CBF225A5BC00"); +test_comp128v2("AE911B26A2AAAE1690541AD7C4AEC12C", "C09DFAD45B847939AA6F5C00"); +test_comp128v2("D32460B8EA2DE870AEEF9591E2B945E0", "415F30A507DFB65D21E92C00"); +test_comp128v2("3EF290EAC6ED5506430691F6652AD256", "BFDA7F8A4AA126AD5D832C00"); +test_comp128v2("96E50BC3013669B9453CECED3379BB9E", "3127EBB45E2170FF88B6B800"); +test_comp128v2("50CD8707C942E07374A604419F328627", "997A146971E7F9F173930000"); +test_comp128v2("F5D436A55F52CF178EC755D9B851C2A5", "526DA1545DB57E300BD2AC00"); +test_comp128v2("59D00634939E1296D628D762D098359B", "29CB71E3C1D6D8F598FCC800"); +test_comp128v2("A50B3BB3252C3C9E16C12396F3894607", "A1107E2B8910AAD9F4098400"); +test_comp128v2("89F8344B973576425ABDFE3466A7C99F", "3335275BFB59F6DD11903C00"); +test_comp128v2("17095FF0861CCDBBE7EC9DDD97CF9FD8", "1952EB05C39002CB2533F800"); +test_comp128v2("00319ECA71633B48AF1CF6050FF612EC", "8DD0BD48A4287D3987225800"); +test_comp128v2("FE2BC8ECEC5406BAD2992A903A516162", "4DF20DADD02875F1F6DB8C00"); +test_comp128v2("2719B57237F55AA6F967EFAFFAB491D3", "E9584869A08303981DDF3000"); +test_comp128v2("E9895484AC5350C6020D47BECFE5FB53", "183CE56373954D52E0BFF000"); +test_comp128v2("2E4CCA78B5FD8FEAE8F593DA046F7D39", "B2EAAA3360B2AABD8923C400"); +test_comp128v2("F3B1A9F9D5F83540037EA0EA78A8DE90", "12147C976D7BB13BFE9BCC00"); +test_comp128v2("DD32C4C62D3CE942B5FFBEB6D4A5F2F8", "45407DABB4B14DDFC8FA5800"); +test_comp128v2("B34F7F0BD6B2D777C0817F82E3052AC3", "FDC03BCD2DBD999561344800"); +test_comp128v2("83780E5C93048E6A2A060346ED2BC544", "6AF2A4F18731A281B75B5C00"); +test_comp128v2("B64A86EE50BB1C02134F11CB431C5069", "36AC5A0B2CB95F686E3F1000"); +test_comp128v2("FCFEB28D9732B937496FE96CD11B24B1", "E23CB44D586FE9FD19FCF000"); +test_comp128v2("61664DE891B324D7C1402E7B80C68B17", "EE3A9940C7A09853F8D9FC00"); +test_comp128v2("8B173E8CA34CF9DA56DBE336196941EA", "F703154C9730C5AA58FBD800"); +test_comp128v2("4D21217A48E9EFE24B4704EC10B85C6D", "D56C16F7F97B8CEC06BEF800"); +test_comp128v2("FFC69A387F0435BD58C13FCB913F60DB", "5F63F9197F0028ABC70F4000"); +test_comp128v2("AEDEB9AEF7408837DD4BE51498ECA4AC", "1216B27EBE081A8B58880000"); +test_comp128v2("14A053B1F95E86448F73D2FFEFC7FE3B", "2B9BD41CABF325CB93BD8C00"); +test_comp128v2("6881901AF0FE3333627FEE84795A70FA", "651BD7D5B6DB33C5D1B0EC00"); +test_comp128v2("196577B50A4C9BF7A208E4533219D468", "5E251C34B40822FCC476C800"); +test_comp128v2("2ED5196DC635F8603196BE9549BED8AF", "BA9B3440ABEF67B108421C00"); +test_comp128v2("FE09F4C92966BA06163AA644D6CE5D7D", "E07AA3D335E25B9303671000"); +test_comp128v2("18A117FDE347F64B3CA01F0F10659596", "4059BD729905578A62A29000"); +test_comp128v2("6877CF2C157251B5A97904F8EB337B8B", "2B1A0A31984ED54C1D3E4C00"); +test_comp128v2("4236F749801A93FE1FD95324A24CE1C8", "2092ADDFF5D50EE60E4ADC00"); +test_comp128v2("B9A4020F7EFDA03BCFB46FE31200708E", "80685309ED5215AD37C5C400"); +test_comp128v2("574B8C41C4594499D037D3BF5084F167", "218AF13232BA26852E95B800"); +test_comp128v2("5D7E99E0D35742E0D80A85F243606F28", "1B54FEDD20031F7C11533000"); +test_comp128v2("40EB7A728783CFB17363744C8960C966", "ABBD5EC9F78951FC73C11C00"); +test_comp128v2("6C7826A1F1B40323CF57C7909A83E2D2", "91C94F666B08EBA4EF7E0C00"); +test_comp128v2("61E2456FB48EFBDB946DF0A3F298BF41", "9E39FFDC1C8573E4DF224800"); +test_comp128v2("0B3BE969A08BF4CE4BE98D6CC0BC7309", "152512315F2CD6A3EC1D3400"); +test_comp128v2("A6C41AB03860DD83608098111AAEB4E9", "57A99A60C2B9DA9E26C85C00"); +test_comp128v2("6CD88694601229E809C13775C4E761E5", "18017C263C41817B9ED6A000"); +test_comp128v2("53F16F6A6B6D2513CBBD0D63CBCFF990", "115CC0B613458C1F17DA3400"); +test_comp128v2("4FAC9C89DEAD012D875350CCCD6DF9B0", "3CA402F00396AE4AE375F000"); +test_comp128v2("61C960DAE03E40FC1F56BC1C71D37E06", "4E5128E99E89BC59D51BE000"); +test_comp128v2("4DD845C43A81DF92E90B83504E159B85", "35C382EFF558E66A0822F400"); +test_comp128v2("2315D98737F65C690EE46743434DC239", "36A2E24DC3B5834D198F2400"); +test_comp128v2("A63680047A7750B42313F2D3B878662A", "C3D10EB4D222A75C63383800"); +test_comp128v2("3934F208F33EB583661F36869C73FBA8", "890536E7B8FEB54E97526400"); +test_comp128v2("4A9F494AE875A5314FC40DEEB9DB9985", "A14AE3B8501B7B5885947800"); +test_comp128v2("E6BC8770CA7ADC109185683CF4666D9F", "69748080DBE0959AACCDBC00"); +test_comp128v2("D2EBF8E248B694CFFD41BA7428668159", "1401C448FD719A421363C800"); +test_comp128v2("A7AF83C2D4448241547B3425A8CD34C0", "5A8B14DBC9E50CD5C3616000"); +test_comp128v2("D95594E46451C524B586913F80965237", "830C1CF57919CF7C3CDC2800"); +test_comp128v2("C00B2713CC2E4E2355DA502E1B521001", "FDDFA77D186A5B4BDBD12400"); +test_comp128v2("0B8D598E6F13F1236DACC84E456F0E01", "B471887B4A040637264DE800"); +test_comp128v2("C652FDF2912983742E177C0EA30F2E61", "C42F84FD9CD6E7FC37536400"); +test_comp128v2("6B655E5F7B56B51D7E254A9AE69E44C8", "48721AE298AF66D7CDCC9000"); +test_comp128v2("5A900B611A5B17D82D4A2EC8E6544090", "F4A51C7F4E896653E5140000"); +test_comp128v2("554C91377E43AD28215056E8AEA5DF4C", "B566C947F785B9B830080400"); +test_comp128v2("54725198690B36F0C6A4DE05B0E79E47", "BBBBDA64D8B739E6D5038C00"); +test_comp128v2("0BF03AF40DED5898A8D1C657846ECDE3", "4EE99919522D100349F9F000"); +test_comp128v2("971B0989CDE6313ACE7690BD2C2BEE09", "590684B1A33F255BB9D40400"); +test_comp128v2("32E1BE35019575931694A33B7B0AA049", "BAA62EC15FCD29F7BCC9A000"); +test_comp128v2("7B601512FB8D061C1B6F7FA423733F8C", "82C1C97CC83A920346C47800"); +test_comp128v2("F0A3B5BDC514E4F20060D83A61A9C711", "684138DD3D04B3B15E11CC00"); +test_comp128v2("4F2F20EEE54D82CBA6FA087B242CA6A8", "7F445E9AF2735B2C29E33000"); +test_comp128v2("8F357399AAD7B59AD790D55C55FBE3CC", "86DB5E7D9F1E83A870067000"); +test_comp128v2("511141F30BE586D039080ECD3822F2EA", "D358B8FFEBE9FF38F0EF6800"); +test_comp128v2("B62E2C043BDCC5A1741ECE60DDE598CC", "D5E1BBBA61272C8E9375E000"); +test_comp128v2("1F0F950D094BF35F9657D68E5018B9A8", "BD37BD448CF9A5DDD7E87000"); +test_comp128v2("DE30802335604EDE8F943169A72E6A68", "EC184C8434883302B00D1400"); +test_comp128v2("3DBB9938C7C4B14E1D5D07DD616B4E0E", "AC5A0D23DA694B6128547C00"); +test_comp128v2("D26257D4C9CE19B09774A9E0C86E335A", "4C8C3DA2D021243593C7EC00"); +test_comp128v2("B7CD31F340EE67C49D651E1C3042D2C1", "A20D985A6C900427C48CB000"); +test_comp128v2("D763E4A31FCD50F595E4666BD91B8EA1", "3BAD6E389FF168688284A000"); +test_comp128v2("41DEF6924472D84434CE2C7D96881F3A", "B0EE0C304599D3AC58018800"); +test_comp128v2("0CDEFB71C93D7B5EBBD6CFD85EDF9C12", "7C225B5EE5301B2F71E1B800"); +test_comp128v2("C2A41CBC63F2F8D34FF1E47FC9B7660C", "DF4D16A7EFB8B8BB68450000"); +test_comp128v2("7F490D52DF1330100CC6D4EEAF8253EF", "C501BF91F2BFF6B811393400"); +test_comp128v2("124A768E3593AF51297D2740AD0200A9", "4CE1215F737876BD5E89C800"); +test_comp128v2("39B8F95D2406756066A53C4E705F5190", "017D2D2F27C605B783B7E800"); +test_comp128v2("1F4511450C91823B333BF3372B1616CB", "7EDE3A2F55D86D2692B00800"); +test_comp128v2("0762815735FF7B22BB73A35F2B98BCF3", "C5F15A6612CE3312682BF400"); +test_comp128v2("3E3A81D6C95B5BE0866EA8E077241131", "0F8E225A21CEE88570BF8800"); +test_comp128v2("CDC633D112AB14B86799836799589EE0", "41D8946A92C3F5DD4D4F5400"); +test_comp128v2("E1655B3EADFAD31AD5A077A22DF28AFC", "16D609AEE5FC4A24CCDD4000"); +test_comp128v2("C73E501E952DD572189853B6BB173A4D", "A9E890D3DC0B1D4A0B295C00"); +test_comp128v2("A1D2F09DF9A48878D0124C469BD7F413", "35DF82BD4899DC7437B6D400"); +test_comp128v2("BE1CA7C52223B34080503DDD9F84FB7E", "8449AFF4E3C8F31BD76DFC00"); +test_comp128v2("44D343E09285E36C1ACC9494753A8584", "624DB556732775366D708C00"); +test_comp128v2("61D91B4E360F4F5C7EA25DFFDB081AA7", "8276AF99F7EF234573014400"); +test_comp128v2("FDC7AD732965351CEC95D5AF89254921", "7E1DB73398B30B957DF8CC00"); +test_comp128v2("1A944BAAFE83C95B9349782F5974B663", "5A51D44FBD0A2BAE38195400"); +test_comp128v2("2941043DC4CD9975CCD5B57B11055787", "5A506CD76E9E008F4141C000"); +test_comp128v2("E5547C0BE6192FDC79A0E77EC8E7D726", "6CCCCB1940F444EBD2FDCC00"); +test_comp128v2("A53F937180266161BEFF102A4AF616C5", "5287128B3152083765EA9C00"); +test_comp128v2("9A15EFCB21BF0E8002FEDADF8542D8B9", "4EFF43E5E4F8FEE77F8FFC00"); +test_comp128v2("99F84D1074D0E4A89AB99E79894D990E", "01A6BEC2FB1491F16AD90800"); +test_comp128v2("7C09FC1D74F44970D826CD75BD76E4C6", "4AB57C72DE6516B54FDFA000"); +test_comp128v2("34C365219A6CB004FFAC21098E9BF4F8", "E8DACB225DA9120AE8B7F800"); +test_comp128v2("64938FBDE2C7C8BD27DE7DE71D936F8F", "EE4AE4535176DB9BF2B7D400"); +test_comp128v2("D6F53EF3D8213BD92E370F9565119A36", "D3F4E0550CA140F329096000"); +test_comp128v2("A3728A2E35B9109737BF41A7CE3BA88E", "AD7857ACE57489FCE8475400"); +test_comp128v2("C5A46566E17F20CBB22ACBA0829B3A35", "53188D1D79B9AC71E12B7C00"); +test_comp128v2("49C327A37B243C502211059ADC2B928E", "92D49AE27BAF11CD61DF3400"); +test_comp128v2("4C013269FB730DD9B4B87867F285692E", "7F977070217337C997B27C00"); +test_comp128v2("C08BDB2794795CFA4AB1626D23AA49EB", "4248294453FCAC270C119400"); +test_comp128v2("6650F32A56DB39C02711D06D361AE5A2", "AC1869DD89ECFC26E19C9800"); +test_comp128v2("DD10CB3DEA808A7D0C1F666AA3FDBED7", "15CBA9F20FCA32D7F03C8400"); +test_comp128v2("C088FC4AABC5D08B3B842E90883EF20C", "B64B2FB41EB4CEA224AAD400"); +test_comp128v2("9C3658205884DDE93389FC595DA95F3F", "A9C1907D30E26D51BA496C00"); +test_comp128v2("D386F98BEC1386870DD353EF8BEFD0EC", "9F2DAB5417E2537C78DF1400"); +test_comp128v2("32D13296BD30E931C2EF187B9C07E676", "099E66F116225F2E5FCA5400"); +test_comp128v2("1B3F10C760DB7647994D6C1AB8B0E27C", "88B59F43AB9F746C3AC3D400"); +test_comp128v2("7F56EFEA97E53ADBD8A28E6784D4454C", "A3A64F72AD0A3D1414876800"); +test_comp128v2("DC15015AF77CA3472D9C722ED2C6765D", "202ECCA412CA0903D2E46C00"); +test_comp128v2("5DF5D4D07734814F50D24C28D4D133D6", "75445158435F68E6138F0800"); +test_comp128v2("0AA8ECCADE7C3DDE1E33CCCA904F87A4", "7C36F6063668D0871E35C400"); +test_comp128v2("D5DA6CFA0EA9C893E0C31EAB8F07C265", "A4B70423146ED051AB678C00"); +test_comp128v2("CA0DAB9743D4641EDA047DDCE7AECCA3", "43B666DCFFAF925608CA3000"); +test_comp128v2("C8B74AC8B6096E5884601F4E1DDBD174", "1E8E15E0F1743837DB3CC000"); +test_comp128v2("5F60A4B2AC4B3FE14259CFF7B9B9B9DA", "6EB7E1212271898211BB8C00"); +test_comp128v2("E3CD19D5573DFFD6E493C4DD7337758F", "13130B7A1E66FF00ADD89C00"); +test_comp128v2("9836A1AD51EE33A05C1AB926D13177F3", "803B815E3D4A015D69AE0800"); +test_comp128v2("2A96EE958A39E9F57FD81B873F32F0C6", "82825219B94D4148364CEC00"); +test_comp128v2("DEF7C00F0ED8BFA5E29FB0316BA10293", "C1599BCEA9E04812F33B3800"); +test_comp128v2("CF8A6B0BCC3285827DB9D471479A515A", "60236043F506676EE874A400"); +test_comp128v2("4332F66E5C8FE9B2A374A807ADD3489C", "E76B4BD39247441C69731800"); +test_comp128v2("B6B1A9D4F4B82AC72D820EF143F52BF1", "BFCE82DD74C8ABF9F4C3F800"); +test_comp128v2("41955313F015B3E391555E7EFD20D94A", "CFAE1992CBAFDC38113E1400"); +test_comp128v2("99F3AF88D90DA2AB226EEDA86816B73C", "385E9AABC4B633422F7F4000"); +test_comp128v2("E497BC27A587261123B53562665A0421", "EA6B9CAF5418DEE2B0C48C00"); +test_comp128v2("A881F3D91DFBBB74427980D76B6331B2", "E1258AFE12F8EFE020B58C00"); +test_comp128v2("8A5FB6205C5BBA89FE76DF2D32C9667D", "04608F77B0B37BC1645E1800"); +test_comp128v2("E282B8E50A4C89F996967FE3C97D4376", "A34FA42A7429F439A09F7C00"); +test_comp128v2("1BEA1A3C719CFF988D49FEB1E66BD4C5", "58095EA3DFF0E4F55C649400"); +test_comp128v2("D21207460046447600836E81933C2987", "5D3B6182D866461F597F5800"); +test_comp128v2("86DC003A1E7352404118C4A6BDF522D2", "522B03EB0142EB27B813C800"); +test_comp128v2("FFF92D1920F3AAAB2ECE380817DB739C", "8D193BADBFAB72BF8AB02800"); +test_comp128v2("6D169D93541BDE4543214B3905A573F9", "3026B85156E7E48078DD4800"); +test_comp128v2("5E8B626C2461A81224E29EE751E578E4", "DCEC75A33337B20D084DB000"); +test_comp128v2("E5DF990790E1F9D245F0840E90C845F9", "5D43D9C00D5DFEEDA9632400"); +test_comp128v2("4F1733D5BDDB0FC3BCFF3A095EA63FAD", "C3190679E66A34EF6A7FB800"); +test_comp128v2("47E6B7544D18B2FE7A6910368080CF69", "8AFAC9EA29F6FD5EF3CBF400"); +test_comp128v2("A015E3BC2CC8B20D1F9BD245BE00D935", "6F8DDCB4C9CECC28493E8000"); +test_comp128v2("850745B3A941130D04F76F07BB7DBD2D", "CE82AA1D16E2D020A1BE0000"); +test_comp128v2("F9EE213796256B136B6503C06FECB90E", "BCB277A4EF1AA561D1341000"); +test_comp128v2("326CD7C58707E7D934772FA1A14E16FA", "B8DE63537B49F9985ACFCC00"); +test_comp128v2("8D495E6E54EEDDDF0EEF870FE4952568", "CC5F16CD030F0E8CD1A58800"); +test_comp128v2("74E8879783B60C994471D29F7D06168B", "376BC13CA72BB41E5C3DDC00"); +test_comp128v2("9EC9382241ED63D96B4D1C32344E1AE0", "D83B4BECB683510AB6948400"); +test_comp128v2("F35E046CB410739F29DDBE66DD5F37D5", "1A5A5308BA48B041DB62D800"); +test_comp128v2("286C8D04A4E136AD2871F6173640D84A", "7A89F034584E9F8550028C00"); +test_comp128v2("A16B18F2C459C143EEFF761842BB578F", "484459E01603A7A52320AC00"); +test_comp128v2("A8188E3D3E1C1BB3193E45E3D300FDE2", "C1B8C534338CF19DE6EC4800"); +test_comp128v2("5C04D2F4663E98094BBF664207CA5AD8", "35187E89549EBFCC31894800"); +test_comp128v2("21637583D2915E0AC78C44BF8D6B8529", "73D4A069B4EBE3A7F9B3C800"); +test_comp128v2("7D30DF857DAED4EBC23AEFF59558B1B1", "1905B164D13A1493F43E7800"); +test_comp128v2("0761A9113C550E71D4A001D6F2651E62", "191662FEB0B15243BAB64000"); +test_comp128v2("1DF95FF090CAF75AC07F888E70F60BCD", "58EB8C5A5CECAAF234DDB800"); +test_comp128v2("2A4E9F6AAE94DE7A282FE59371E75034", "14B519C690ACA88942B1A800"); +test_comp128v2("50A4BA3A673775C82A273690ED2FE960", "92EB9C62BF57A3462A081400"); +test_comp128v2("89E484024EF1C40A108D261A39298AFD", "2F2903D5DC9FFC4AAA17DC00"); +test_comp128v2("10DCA6BDA94F80E7239120EDF9231AC7", "67B830467AA2C76B8A83B400"); +test_comp128v2("70A961DF5CCF1C45D26AF50541C3ECCB", "B19AC7232C7E7ACEDFF6F800"); +test_comp128v2("7B338E1357DBAF14CB0D1AB035928F71", "83EE66B91C1CFAFBE8C5A000"); +test_comp128v2("F68F8CB5C1EAD184564C0B518D2DF608", "35E056CBD8D692CB54555400"); +test_comp128v2("A0B4F049C406ED5FCC1AE8FC690BD520", "9556CEF79B478627D5D4E800"); +test_comp128v2("9E8F808AAC6301867025A4C7B247FBD8", "58950816A5768A4FCCCFFC00"); +test_comp128v2("AC5DAB1E100A506A6114696EDE6A064F", "94A4116760CE7D8897D08400"); +test_comp128v2("8601AA0166D16DBE7320C9158D0700EF", "F4E00766FA137211703F6000"); +test_comp128v2("7D0E95EBA4BD16E3C6B538FB723FAB93", "3D231451211EACBA3DD42800"); +test_comp128v2("EB41290ABEDE397978C898B02219908D", "5EB704A737FD1C97848CC400"); +test_comp128v2("230DAD3A95D90EC20EBC8EC573781B06", "CC0A164A00B54DBF2BA99400"); +test_comp128v2("0769460FA069E0DE021693AF2B923CB3", "4AD863E830BE2F6013FD8C00"); +test_comp128v2("DCF8186B27A4D60588375B514EE8217B", "6BA6F69D924AB5B806C22400"); +test_comp128v2("E17C33D2F1B42CC9CC4BB68C372B86AB", "A315B3B4BBF2AFACF82EB400"); +test_comp128v2("C74127FCD69A7DEDAF3EC080DD794C2B", "A288120EC5E5D774E60EE800"); +test_comp128v2("D148DEDDC094E552A75B362858807E76", "037A7E48A6E230437E1AE400"); +test_comp128v2("91F0824B24B3190318CB89B0758B6821", "D608EA0088C201318F3A4400"); +test_comp128v2("7F5D92535D449D7412E16856C9A9CC83", "8C126E8E0155CAF47607AC00"); +test_comp128v2("22D7AFB76E71CF4AA209B7B5B8711551", "7C7707A33EB1CAC94FE51C00"); +test_comp128v2("8848CEADDCF76EC13D5D5309594E7A58", "7E141BD3C032FAAADDF1C400"); +test_comp128v2("76D1736CF997CBD643A242F805917ADE", "4A422DED87839DE4F8639800"); +test_comp128v2("96B7E7197A05CBDDE68CD566E833F907", "62E205A674974554C7F5A000"); +test_comp128v2("928AFCA1A1DB27340BC5689F9ADCC3FD", "9A7A16C8AAA1A89D28CBAC00"); +test_comp128v2("566561B80926991BC84FF3D782C43533", "4C67249BE59008455BAD8400"); +test_comp128v2("AD7CCE408FE4D908234C4B9B7AD4586F", "54FF6E91AEFCACE32C6B0400"); +test_comp128v2("270BE9B26BFD8E8F399D63CE342C3AD6", "BD3B66DBED973FD195CA9800"); +test_comp128v2("6B09662F3C200C2079B15CCA03EE8550", "BAA793152333F7B78DE07400"); +test_comp128v2("52A0DE611C43E8A2AA08C73B79122EF0", "8B619DFBFDCA21ED3246A800"); +test_comp128v2("089249127245C7364E2DA1F4B12B4174", "1BB9BECD4723DAB665D9B000"); +test_comp128v2("78A4E8D674E7A9BAF1A2EEC2BCA52C83", "1F4A8220DC3B790194AB3000"); +test_comp128v2("D69D8E89A9DB9FDF5008A490DCA35932", "97F23433085310FEF92B0800"); +test_comp128v2("303EC59372B82FEEF9776A77B89AD1EF", "D62B685B0469F2DCB8431000"); +test_comp128v2("BF25B6FBA7D5B955F81A196F603DB6DD", "9EEF5B576A0D5904CFE16400"); +test_comp128v2("A034EDBF71F3789C7AD0B7DD3E2983B7", "F3955289B3B925D317E41C00"); +test_comp128v2("0F64D014BCA2B53B1FB6C5267C6AA869", "176AD9DFEF9FD87C1B26FC00"); +test_comp128v2("E8A8E6665D25A32DEFED1BBFE032178D", "635E89FD4FAAFAEE81A6E800"); +test_comp128v2("D61E52FB7BDDB6B08D79E5727701E327", "1A8FC1CFEAC2D83C73BEE800"); +test_comp128v2("F526D40E8A4791776F76B754BCB6002E", "42230C725900932FEEB32C00"); +test_comp128v2("33274BEAE8FCC71C0547FCD8370F53D1", "A647CFBD2B6015A5071F2800"); +test_comp128v2("71B260044E7818F625536196647D609D", "9F6CAE8F4BA7E18167D1F800"); +test_comp128v2("494D5B1DD29C4CE82825A0DE60D75B28", "747D3A2FD2456A63434BB400"); +test_comp128v2("D57BC3C7180DC541ABFE858D10462A05", "171FA63B591C6B7002CB9C00"); +test_comp128v2("75CDED92F2DA05D5F5A180371FE51F0C", "8D6064E886661C7493535400"); +test_comp128v2("0A188392250D0CDB92FD3E224332F7B0", "788924D7FA3700DBC29A5800"); +test_comp128v2("15D4AC837FC73BA6C4A0FE899D09718F", "7CCF880D84106A31F5F07400"); +test_comp128v2("AC453FA3FDB5BF207156144B24AD1E7B", "F9DEC85BC2B8D3996D094800"); +test_comp128v2("71F2AD4E06BB7F988C5004A0357F6970", "DF76F1CA8D1203DCFB8F5400"); +test_comp128v2("9ACF6CF19BB44FEB4D95541AFC4A14A0", "261B9A333A06FCCEA0D19000"); +test_comp128v2("3E26329310742282F2B9D1E3DC25033A", "15020ADE64D319AA40610000"); +test_comp128v2("A6DDCDBA584140D229FB839D398F78A7", "3073F2C778550F75EC707000"); +test_comp128v2("D3AD058E5268095511BEA6976BA94D02", "6C2CC3C6B0325705D3393800"); +test_comp128v2("E4F0FF1E5296A93BDC84A3B0E03CD043", "5DF3547DC840423AD633F800"); +test_comp128v2("DC5F59D24CD8961B0872CD4264F240E3", "4038666247DF1CBE432D0000"); +test_comp128v2("BC9CE92196AEFEDB4A9C93D9CA8A006C", "3EA4747DE9A8B930EC780C00"); +test_comp128v2("A7FDBBF43164D9C679C09F010ED57120", "A0D97A4D4B329DAC3C1D9400"); +test_comp128v2("885F62DAEC03DC5C7C3B6D2985F1989F", "8E8C3BB5767DEB1A84B8AC00"); +test_comp128v2("2BF7BCEA0DAEEFED5F1B9BF67C59C42F", "3E83E6A4BDA567C0C1C37C00"); +test_comp128v2("9A90204CA9EBEDDB0E8E270C232430F4", "FE65162A4E81EAD4C0FAF000"); +test_comp128v2("983A16E1E9F06C1E16CA66D0024295A8", "A31960B3BCA0409A77D76400"); +test_comp128v2("894A65F0863621F6F4B0F7D2DB52AF61", "EABDE0292515ACBA40C8E800"); +test_comp128v2("F12067DCF27C55BBEE33B0856124CD88", "82F1FFC3EB594F53CDF39400"); +test_comp128v2("81821C13A89580DAEFA775D37D75C58E", "6DE6DC3F4AA7EBCF3BF69400"); +test_comp128v2("296F16BACCB5B66E5316A21A82E603AC", "CC5D42E68A362BC4EB60E400"); +test_comp128v2("5AD7081575AB7E65BA8DF2DE3B6B7909", "CEC011CC38CA5ED64CB93000"); +test_comp128v2("84AB79B6A3A1F005563210592BE8604B", "63D53A5C888A72E5A18E0000"); +test_comp128v2("06DB39540FFAFC31D275F3E56EB15824", "88AEDFAFE13E7632EA7CC000"); +test_comp128v2("9E38292FDB67242052D0A445014910D0", "41BBF707586B1FCCCDE90400"); +test_comp128v2("A371E96FAD96E1545D8E8808A07E07E3", "6A58E0D91F95F6DBB18CCC00"); +test_comp128v2("BB10FDDCFD8C047EB0B51E96048CE459", "2DC85575F29CA4F11FC36C00"); +test_comp128v2("5B4307D70E43F25A9CFFFD56370BBC94", "9F3DD6CE52DAA89234550C00"); +test_comp128v2("42FA4C38D32C541EC2F1AD27DECA6C67", "13D083584650096DF3789C00"); +test_comp128v2("B8FDEDEDCB6E23CF14E6EEA25DC419F7", "09F8ED29BB3C6C40A9196800"); +test_comp128v2("2F83B170565F4977A89E3E09477CA1B3", "E1053E83AD4F056439AF0000"); +test_comp128v2("7C2EC5FEA03C78F65D7D711DE30D76A6", "CC39D08EBE81752FB84A6000"); +test_comp128v2("1EE80FBE225CD938D1800459985B61EA", "688E5F40E8C20BCD7E90AC00"); +test_comp128v2("0F3D06972170FCE7CE9C7511293846D9", "D90B439D68E4F9229AF30000"); +test_comp128v2("B15AAFD4778B30CBEBA6123A2DCF242D", "416073391C2A09D498896000"); +test_comp128v2("F39B05FDE23CD3513FC1F9426CFFF0C0", "C833CCF0BA49B3417F93C800"); +test_comp128v2("D778CA42BBA1BF18D77DFF99BBEC939B", "F3878F86134C23289EFE4C00"); +test_comp128v2("E54F1991A18C175859242DB288BC581D", "589458131E50C6D50B946400"); +test_comp128v2("3C5BEB096F9D117872C665B719EE1477", "C39175020428B806D442F400"); +test_comp128v2("9412AB06825CA3411BBE178480A7D1EB", "70B4716B4A43ADD6217EA400"); +test_comp128v2("06EBAED1B90E8A2D25C3AB1973905D5D", "ECB251D81D64096720ABA800"); +test_comp128v2("FD229FC2ABD4D5CB1E24FD63EA77AD66", "4E74DCC86725C9249311E000"); +test_comp128v2("D87E8FE1157A93AC00DD5D2948ECCAA3", "4EB7C5F4A40577BA424F0C00"); +test_comp128v2("30884DEB37B796F54A3C04F3A86F010D", "3A2F6B2DB3E7387C9B85F400"); +test_comp128v2("1BAC80F40908D0C03313C33CAE26F5DC", "9646ED009469732EC3EBCC00"); +test_comp128v2("CD302E7008E2683A7244AADB9417E501", "7839F2AE68BC906AFC06E800"); +test_comp128v2("1348D0CD2910306D9118E9796E303C1E", "FED0DE5F032BB902E4354C00"); +test_comp128v2("70C3FB8FB3CA6942BD7C1DF5EDB10180", "7E9B37DB18F1AFC4D28BB000"); +test_comp128v2("A4150041B47229B850660FDB84B65828", "D8A37D0FB9B2675AAFB9DC00"); +test_comp128v2("5D67CF90EB0C63FB4951C40B5F91259E", "7CFDC3D570F1E7C38BBE5000"); +test_comp128v2("88017172C4612F91C89EC43868C6FDF8", "4E838FF2E0008654C5CF0000"); +test_comp128v2("23B4A866497F2C4A67353B396936CFC1", "3FA08D495D5063E30EB6F400"); +test_comp128v2("ED2550ACBCC9821894FBDF3DBDC93297", "A45019C0B1E78F60BA837C00"); +test_comp128v2("43C6573D014B23C691BB0DFD2040E9C9", "2901DE457C41F792D77D2C00"); +test_comp128v2("AD204E6AF70B423ED521A4B3AEBF3358", "AF6620C0D42EC71B29135000"); +test_comp128v2("EBF14EDEEC94BE21F6E2521841B71B4F", "C32B0095A611EE1FCF8A0800"); +test_comp128v2("E4354B7F94D37F8974E8912FE63E65ED", "A8844009E0A67032FCB39C00"); +test_comp128v2("5F5F2AD08E071C324A2A0A6FFC77B441", "61BB6EBDFFEA61A3DA29E400"); +test_comp128v2("FAA048F624863639327522D41B31D392", "971B2475B2806A4741497400"); +test_comp128v2("E98C633FB91EE72FC4F0CB18119A67E1", "FBDAE08872C1CCEC77EA8800"); +test_comp128v2("6A8815193A45732FF6CC06AFD49F9316", "F26191BB253A328C7567B400"); +test_comp128v2("FC8FF54ABE8958DB01DBE87E8178A69C", "E691DDCFEF1AB2B6B069A000"); +test_comp128v2("027469E5A3803DC4C2876D95C1C678C6", "2438B8CBCA2A88A931EB9C00"); +test_comp128v2("5159283F05722548C74A737741CD6509", "D46ADFFFCB068AF092F12000"); +test_comp128v2("6AC3B272DD8CC8BB745A8D0B36C211A1", "DDFF97F3223A4B6BC232F800"); +test_comp128v2("8AA83372D1D5EC88F72ED111E27A448E", "2E229F0F997B25213222F000"); +test_comp128v2("3E7608319DCB2A0E65EC9AE2084EA982", "C8B76DFD9A01A240E1B5AC00"); +test_comp128v2("2841232946DE470D2FF755C70C19905E", "DDAA67B52DCB035E9A2CF400"); +test_comp128v2("A944542DF2373E12823C99DEA8DF170B", "0808D4ECBC4D77A0158FD800"); +test_comp128v2("A2138146A6A0E2E642053DFDAA9E16BC", "74EF1291ADB07C95E02E3400"); +test_comp128v2("0DDFDD1D9A82399E61C371CEA1F9CE38", "B58BFCFC24A6D75BCB169800"); +test_comp128v2("9FB3D625B946962B54E2C17B20C42D45", "D7D987D5BF9DEDA710CA8400"); +test_comp128v2("1B55779FB61B29B8BD86771D0BF16D63", "3686F4642D1F419AF0698C00"); +test_comp128v2("39E34A86EC6FFB7055E7FAC2E0C974C4", "D271890EA753A7883B0D3800"); +test_comp128v2("B4A93386400F4CA3FDCA51846BE80335", "457CB81CF3489FE6AE1BA400"); +test_comp128v2("A313371F69544947FCC573B943DD9183", "9F548C3892CFF8A485074C00"); +test_comp128v2("2012EFE25DC9AF67C46C0CBCF2EC7591", "4E80A17F41BD8EA8C55F1000"); +test_comp128v2("486BD31661FFCE74A65CE0D558850D9F", "B613B59771B8352D12C27C00"); +test_comp128v2("2186CAAECA47991101726EC2C6F6E67A", "BEDAEA0EA1943FE1FF221400"); +test_comp128v2("4D42D4D87D70821014D0CD86BC38DA4D", "A2D95578B1FA0E16B0C3B000"); +test_comp128v2("4DA30AC34F7EE91EFBBDC6DF5555B76D", "6937A53FF44D36E61351DC00"); +test_comp128v2("795C15464D421AF29BBA1907DD10F028", "629184CDABC11E3CA0C56400"); +test_comp128v2("B3CE0E7908B649E875005DE7E7FD1FD0", "24C51AEF24FF49A4A4747000"); +test_comp128v2("D957396D9E3C4AF53C89E45C54DC0A5B", "17161024C0F22E10A7430400"); +test_comp128v2("43B416FD921D9BA3CDA47EA123386302", "9810CA384A6F6647E51EEC00"); +test_comp128v2("0B03AE1B7D664FC5B96E2A914C633D89", "DC3FCC1CB0099F7414302C00"); +test_comp128v2("4A6BEE40BA96A40B7CE9E6844DFA73AC", "E9EA864579D55C68B4B9D000"); +test_comp128v2("70FDC71A73F676D9C4EA330754B901C7", "049ECEC4A332DF7B51D98800"); +test_comp128v2("7E61A21AF6B328C26E1D7325DFA25B36", "D7D91E06B4C43EDB795A8400"); +test_comp128v2("C666E78CA92F658FA60C350504BC09C6", "4445B12A7082935CBEF71C00"); +test_comp128v2("55020E9C0982E00235CE187B034B8591", "3B0A8F08523A46377BB9B000"); +test_comp128v2("ED046D0B7B672F496ABF1C835EAA3C84", "64C19D9FA085AE2270B45C00"); +test_comp128v2("175A73A9CA9507BC08465DFFA9B8A496", "59D1449FB47C046EEF89A000"); +test_comp128v2("07C70D392BD451EE506780DFBD5DC83F", "12B436EB13A2F5EE6F3B2400"); +test_comp128v2("F91C460017B34AA789A219167F5224B4", "D4557BAA009D10CF37E70400"); +test_comp128v2("1DA7C45EA6A64514FFA689538ED5ED53", "4C6C7DB8436151A89E15D000"); +test_comp128v2("E87DC47A13D472C5DB246BC2F8D2DB72", "F587FF0ADB6832FBD5257800"); +test_comp128v2("FC7EA44A9CE859DD79E3D01FCFEDE8DF", "7A8E075D75CEC76E2E79D400"); +test_comp128v2("6A03EA7604753B3C008D3DB463A7442B", "47CCC2AB07276A6A9BF0C400"); +test_comp128v2("0017953B084C3B7424D0687D9C02A837", "4A0117D0F840E0A91E2C6000"); +test_comp128v2("EEF338BCB48C15A37795C69AFC7C570E", "EB007C6F30EFF093E499D400"); +test_comp128v2("53A6A76FED38FF6D62777B449E5B548C", "F00CDCCCC10ECB062682A000"); +test_comp128v2("5C70D559D6F8B8DD99751D56C418FA35", "E3C5F362FF9ACACA40A3A400"); +test_comp128v2("9CA9F9FEFE37D57BF633754AF7B3634C", "2534834DE550FC11D9268000"); +test_comp128v2("0C23013C1C3C0954638F9414DF49E0B8", "A51D6BD87F72607CF707E800"); +test_comp128v2("76D341F1D8D1C65514A96277AA457C54", "8900B6FD332891AFE38D5400"); +test_comp128v2("647466BE40774C458ACE1760FB2CBFFC", "EB85994EA6C7F2A785620000"); +test_comp128v2("DB0CC7E41AC5D78A9A09184DF4F90553", "21A4C2684DA076CDC5F05C00"); +test_comp128v2("582C3F28F5E1380932C65D3544B7BDDA", "2006B84F9FD789AB7EF88000"); +test_comp128v2("5F823650EEE1F31CEC3AADEFC452E429", "80C0352D91A88126384F8400"); +test_comp128v2("7D0288577305FB4CF1979056E527E0B2", "F37749459DF1409694865C00"); +test_comp128v2("45566B3BCE18DA92823C95C1D28BC600", "63290D3ABC575FFE70B0E800"); +test_comp128v2("BC54B44285B1123AF6D3EDA43A5446A7", "0787BD187870B36B47403C00"); +test_comp128v2("AFF23EA0922CAA395D87CE8F71E686FF", "EA9A6507116E59F885954800"); +test_comp128v2("81406FA900C3787CEFA83332ECE83ADD", "B9A1B23CF74881FA72F13400"); +test_comp128v2("17ED1CA689D152C83DDE7C21298B1621", "B9DF2AD19F79E00D39BC7800"); +test_comp128v2("BD24FA43CF93AB8F615A2CB55205954E", "8FB777F02793A4A9E96BF800"); +test_comp128v2("6A60A9D4076A4668ABDC434CFF4F4BF1", "3874A5322A30FC61EE2EFC00"); +test_comp128v2("B4A18EC0063E6B403DE774801F83366A", "ED58E3518559614FF3CDC400"); +test_comp128v2("5B4F77B27473E3E9E9F37A270B85AF0C", "3BE0FBEDB313262BC0BFD800"); +test_comp128v2("AB88BAA258597D5459F9B1279809543E", "67E5E4AE690246C0D9E9A000"); +test_comp128v2("A2951495A11BADAC3A91F653349FDB05", "3E6FBD4969707A42327F8C00"); +test_comp128v2("AF7D610513988261234BFDCA9174D852", "7D1721E9A2057DBDFFC78000"); +test_comp128v2("ACC7B916F1D53C75BBB5EAC0C0C9155F", "5B50D39BE87E86DB3FF7C000"); +test_comp128v2("463C7145B20B01098C16142DCD76F3E8", "9D4B45528F381B44F58C8000"); +test_comp128v2("0E5E028DDFA0A3C0C879FA07C9FE0B11", "366B62B32BB6DBA922F9C800"); +test_comp128v2("131524709A0F2C72CF897E34BF7AD533", "8B444B299DE38B10C9931C00"); +test_comp128v2("B2BD87BFF31207E0584989577E010E25", "58798AFBADD4F313CD4E4C00"); +test_comp128v2("878C4B8B7047A04F24B85A039CF1CA08", "134AAC5663497B78E9ED6000"); +test_comp128v2("4372DFCE989ADEAF69B3CE5541F2D44B", "5A4EAC4D5B411199843EC800"); +test_comp128v2("F4FFEF059262212C6A9440F4BBA67303", "2147ADD96FADA5C3B0A82C00"); +test_comp128v2("ECAF923AE9D823A2B5AA234584FA1956", "A7345726E548029DE8C13800"); +test_comp128v2("BF988D41A1D5C109D0706B2068ADFE14", "C3CF7CD2693FFD82DCDF1C00"); +test_comp128v2("449990955002E4111D56E0C20946C6BC", "63437E1008262606709BAC00"); +test_comp128v2("2EE20958580CE4F8A8BFEFFCB1D28D0A", "C5F9DBA0853C4B619979B400"); +test_comp128v2("B6AB470BD27B24DFCE750B3EC08EE38F", "2E4FF932B76DC48617597C00"); +test_comp128v2("8AC1D7BB4F58B97A4973F3BE4AFDE91C", "5E1785F6777316F60EA67400"); +test_comp128v2("495AC23A71E47B790E70823F557301A7", "97A06E87B1351A61E82E4000"); +test_comp128v2("F62F24627A42462892EF3AEDFBD86BCE", "FAAB2671E38D5F25CC2DF000"); +test_comp128v2("60372B92D3EE37510355F7CA2FF1AD89", "248B52F48F946258FEBB3800"); +test_comp128v2("3A6CF14AE01A0CA1562D639A97AE49C7", "31F7D19EAB76B3A4015E7800"); +test_comp128v2("D0FCAFC71D9A145F839F11688295A8C8", "7772C8610A17D87744943400"); +test_comp128v2("842DD75BB5B1E7E201E248663A83CF62", "4C43DDCC9F35ECB2ECBAF800"); +test_comp128v2("45AC11764243D64DFCDF35443F498A11", "CA15ECFAD53D0E487DA51000"); +test_comp128v2("F0A05481CCC3E9759495DDF4D061F7FF", "5284304B591163CF2AA35400"); +test_comp128v2("FCAB0F4F0DC5DDB74F6F45C3DE45A890", "1430B0D94E51B3F0970B2800"); +test_comp128v2("96705A918F3F7DC4779EEE959DF56DDC", "11CD9894491DBACE093D5400"); +test_comp128v2("3324BCE404ABB6FFA1B815FCE3653504", "10B5BF4FAD33E64AA1446400"); +test_comp128v2("69C0EC0F65DB292E47D77861648220C1", "BF307A6E2EAAC31C03ACD000"); +test_comp128v2("2CD92262C563D16CDA7076A3916B025D", "C3DC96C3F8982607CB34F000"); +test_comp128v2("3874E5B8CA16D381A0B33E8846EF7678", "826BF9A7CE95C140A965CC00"); +test_comp128v2("3368842420F16B5476313F02B16B3CDF", "0C34B5F2BBD5B6D336B5A000"); +test_comp128v2("669E584D4DDB2E1EAE7E914C8541F311", "B9246D668912C36EBCD2D400"); +test_comp128v2("8D428F26986A1C746CCA262426C7C0B2", "7BDB274C86342B7068033C00"); +test_comp128v2("02B97CAD06351C5C3CF86D396020026D", "CB2BE5BC456ED73635071C00"); +test_comp128v2("B4696D369884E4941D0E087B32E09D2B", "2BB0A12257D862AAA55E0000"); +test_comp128v2("4EAB87DA796EC3488C342BDF311AEF22", "23A0BCDE4B0DCC2C8D89F800"); +test_comp128v2("DCEBEE5F1C4C7A4E8A83B6D4CB236AEA", "84C90910A45004A63EEA0C00"); +test_comp128v2("55855957EB252F0C59A6B1EC4506B9A3", "9C693CF049FE93DD6D755400"); +test_comp128v2("FDE4AE6CCA16EF7FBC9AFE8067FD4E16", "1E9A9CEDCA101D2193375000"); +test_comp128v2("3600B73545F54A51BFFF6ADF932AEBAE", "7CC316918A7AFFCA973BEC00"); +test_comp128v2("202D67833ED8B105BDF66722B7E64F7F", "540ECE8E6B38E99DF7FBB800"); +test_comp128v2("1868360A46FACED93D287EB937EED141", "EBDFE734375B0DAEE15E8000"); +test_comp128v2("F65A50219A711BA33E5227885C5BD27C", "E87D7741411E095602402400"); +test_comp128v2("FCD82A0A445AC9373D96BB9CE8AF6B61", "517805CE2B3DD5310B6DE000"); +test_comp128v2("AC6AC085B92AB68E52620E350E1BB3F0", "758E969F192A9B2B20B20C00"); +test_comp128v2("E5A32C2C398BE819497923869A8D3316", "97FC978698E4FF67A0F0DC00"); +test_comp128v2("C7BC59BE121995B4AEB0332CED5A1198", "B5CC69159E1C6047190D4400"); +test_comp128v2("827E9C6B80997F053AE704994119544A", "C073B256DE3FBBEB72696400"); +test_comp128v2("7702362250B6F5F6F323230C598F9051", "1BE3AB6CA52CB8A98041E000"); +test_comp128v2("00E5A0BD996A84C310238A05A5AE7495", "A31D2FDB0196FA415CD15000"); +test_comp128v2("8D9CC3F666512DF3DB2056CBE7F62684", "1026ED1657B49F41317A5C00"); +test_comp128v2("BDFA3EF9D36448BAE383A49FD6A977E1", "BB2F552110C1F5872EDD6800"); +test_comp128v2("18D87AA310A0CB9B3CC8EF54439FFCC4", "FC770426413A7100746FCC00"); +test_comp128v2("992813CB979D33BFBAC54D55CEB4B73C", "D0148FCED4882E99B5550C00"); +test_comp128v2("833856A2E8B0EE42A5EFDFE505A2A98E", "C21F2CA3950B24C3D5718000"); +test_comp128v2("D16805B6CFAC637A2A39924114036E5D", "322B554745D2B0DC386FAC00"); +test_comp128v2("2E627A1B378BDD2A3ACC7486963D69C1", "00B201FDFC3C4AB6C6633000"); +test_comp128v2("86F68E8A8FD9FE2457E9E1FE47D2523A", "E4FC49F68FFEF7ECBF3F2400"); +test_comp128v2("F72BF5374387A730D780174FFFCF41EF", "80396F47B01D853208C4E800"); +test_comp128v2("07A2299E7A5F5D56C0070412811B02BB", "EC7B17DB8911F53B2F97BC00"); +test_comp128v2("EE2F57A690134B89D2E4B1C219CD7E03", "F492970E081E648CD3366000"); +test_comp128v2("B2DB578B1D559A2778CBCB0216EE5144", "B3253ED8496B17C05D7B7C00"); +test_comp128v2("6C80254249001719EA40C51F2C4BCD4C", "36E4172968201F89069D3400"); +test_comp128v2("D1C28E94E15762073DBEB812F5F1BEE2", "DBED6738EA5E202530C78800"); +test_comp128v2("0F784B5CAF051C4FE137D2FE59A28C00", "D6008F9F45FB8CC50677F000"); +test_comp128v2("39B71CEAC0104DBA6743E2EC285BF7DE", "01FAF3FD3A79579778F7BC00"); +test_comp128v2("261756F9DB55FDFC1116091B8D6BD58D", "50FCAC1DD42FE079AF7BB000"); +test_comp128v2("57E47170F70AB261FA998017D838199F", "88EE9756212F1BDA4E12BC00"); +test_comp128v2("02DE5B5F4AC153124891E768B5E3A1B6", "B42185D92AAB6A18859F3400"); +test_comp128v2("224E9EEF82B29CF691BC9463D9FFC129", "DB92040E46BAB90675E89800"); +test_comp128v2("524B0B8ED727F299E59957FA271A50B5", "456AE3A856C6FF5A6BFDB000"); +test_comp128v2("242A954E612E1F0194CE8493A4CD1C18", "1F607A7E1DB1212B24A6E400"); +test_comp128v2("A61AA82441B24BDD06AA6BB2CE77CF27", "58FF4B1B3DFBB3E3726E6C00"); +test_comp128v2("E01B82CC43D3D72D8CCD60C92C62EE09", "C00041D883E5BAD0BF03AC00"); +test_comp128v2("3AE3E93F044396DFBB5A529A26DA2553", "DB62C24686FE8014B399EC00"); +test_comp128v2("653A180F0F7C98B94130A5C40BD11EBE", "9B9BCBC09E09E8D559ED1000"); +test_comp128v2("CB92A03B9A262683AA1A39CCF8866BA5", "BA1BDB72BF6C2A94D92E4000"); +test_comp128v2("C79C8FC1619F413BDEDA3F9F8FB7AB19", "2334AFE1C799B9815C7C4C00"); +test_comp128v2("71DC6F9B718457B72CBF948304DF4168", "13230113D8C0A23FD5BA9C00"); +test_comp128v2("A11D3C634DAC5379B5970D401EB6C512", "CF9956024F33B4A965371400"); +test_comp128v2("05B7355A6962EEB393814579339EBC53", "CA1CD0788A724158BC84D400"); +test_comp128v2("D494D03F59245A4FD88A87C4E842F8B3", "C8409116E5BA783DA8B89000"); +test_comp128v2("FA2235589D8182BF643DD68FBD3924B6", "447CC4020F9F87565B5B5800"); +test_comp128v2("3537CDFE59252A2054E7EC1BC16C5061", "9C8D45FB1480BE389112FC00"); +test_comp128v2("D81AC6DF80593B62E4CC6D51EBF682BE", "DF6CAEF62BC536826FCD7800"); +test_comp128v2("EF6FEDBC6F65EC72E71DD457D7F01E39", "545AC9FC051774F6ECD97800"); +test_comp128v2("A926134D19884E0C5DFDFED7E5D43926", "315E8EF19510592D48DE8C00"); +test_comp128v2("D40A68048F84E3C89159DCDC2F6CA432", "4E27DD965DCF6CEB40489000"); +test_comp128v2("E13A16536ABEDC92A087707F6962664B", "F54DF012133B0CC1D91B8400"); +test_comp128v2("443F8F2A487FE8CA0E4E36CB0394FA2F", "FE5A205335BA7EB4F9EB1C00"); +test_comp128v2("4CBDFF21AE06C34FBCF8BCE67A33ECE0", "1A80583C4CDFF82675F59400"); +test_comp128v2("CE08B54548CDE074E31630B0C5F2545E", "47904CB4205016ABEDD7FC00"); +test_comp128v2("16C810823D7C5BF3D5A7DF540BE927BE", "BA3C7853EE826A7FC1E8CC00"); +test_comp128v2("493E34068D98BE1CB0DC488E4215EB44", "A10DFDCC8CF7E13AA9F48000"); +test_comp128v2("2B16221E154B8E737705BFE4EF686EEA", "FBE1504BD0786AB3CE8D5800"); +test_comp128v2("40067BF44F7EBEEC97866D1D2B589C0E", "76C385ABD7A3198D4B2D0800"); +test_comp128v2("AEE48475101B133756C5260C974C3CDC", "B6B159E0B62A3E135CA3E400"); +test_comp128v2("7C337455E7D04CDABF9100A0DCB518C0", "7FEF52780DDF19198AEB3400"); +test_comp128v2("34509DDB0528245C753B34D0A470161E", "79608012018A272CFC4FBC00"); +test_comp128v2("B82EC07003C40E7F69415CFB29090181", "E31D8D19A1038B6F3D25BC00"); +test_comp128v2("101CE5DD0A72E07C3759B23BD07CB713", "13389C0B65706D05753F4C00"); +test_comp128v2("E3508CC1421B61CC1829F1AC5000A3E4", "F3A0E53D7E27598C99901400"); +test_comp128v2("BE906939FEB3D53EE5E3B3F09AF34392", "44F8E711171F64FE3B7A9400"); +test_comp128v2("58AE77015B346DC96112C7463CE44CF5", "217BCBDD9A7A15E4E3B9AC00"); +test_comp128v2("01EB1E42FA9BFECEA63771A8EC8FF608", "1282EA813670CDA82B028800"); +test_comp128v2("0287CC4F44011FFB7BFC45C753A7E764", "EDC47B4AD2F99E044B773000"); +test_comp128v2("FFAC099B033FA5CE08C1E10751436B0D", "774EB65C534D5C554A4E8800"); +test_comp128v2("AB57C444B024972E3CF20C2F885D7211", "8C6F76D58DB1181A94989400"); +test_comp128v2("66B10CEDC32FC796527D98A4B9052E0E", "48BDC529943EC0D5E66CF000"); +test_comp128v2("9D4FC614B4A5ECBF84C40E3F2B7B3B0D", "BAD7D26D697368A3931A5C00"); +test_comp128v2("7529E5C6269C75FCABA03362FFAF0BA8", "4428CA3F074553B7CD193C00"); +test_comp128v2("290F258C9AE1A88D5DB89D1C963ED8CB", "49A6A7D3EE75322C985B5800"); +test_comp128v2("4A635EEB118CF0401AA539B3E78D9BC2", "E75EB6229EBFCD7651869C00"); +test_comp128v2("A0A8CC5650A8C449C27358D13F5D149D", "33D344289813FD1762951400"); +test_comp128v2("00347953F59FEE734FA747B5BBB492EC", "163D84E824A58AEA21C45400"); +test_comp128v2("9C1DB2550ABDC1D83D3C6234C1F7216D", "DA743AF98691235ADBCB9400"); +test_comp128v2("566FFA71F19564E0334521F522D247A9", "E40AB25D08CEB2A2E2961000"); +test_comp128v2("2BE2558950270CE4EA4F041311B700B0", "9D3B8DC6DF02EE2215575000"); +test_comp128v2("2C7CF5A9C76A34069A0086D67162CAE8", "C7C27DFBC668647941BFB800"); +test_comp128v2("C6704C0DA2E47E546BF089365FBB7EEF", "3EB8772558CE07528DAFBC00"); +test_comp128v2("A4789958665D25892122D9B7838A7665", "E3AEA74A7E4487671C72B000"); +test_comp128v2("0359DF86F25D1EF335EDECE2F1300D89", "62C3FD4450596914203B4400"); +test_comp128v2("34BC3AAB3035AAAA631514F56C19D85C", "9C6C6F2C7BF109B71BC24000"); +test_comp128v2("2AE6301993E8679EE9783099EE4B74C4", "5827D1C48907242EC9693000"); +test_comp128v2("8E688E8C19E4842AC61D673A47502BD8", "E937B1C11E000FE617CD9400"); +test_comp128v2("635D70F76E8DD5A60C93E636555643A3", "1FC3F91D21ABDB110560D000"); +test_comp128v2("CFBD75A9EF7C590502CB305E255B32B7", "5AA46577C4A19E56222EAC00"); +test_comp128v2("52017B0F5A735EB4B4195B41C5ECDDAF", "141288BAA0C78E43A21F8800"); +test_comp128v2("9B7F9780EE1DB174EB3DE3E0DCB4430B", "67DFFA9CDC3456FD0ACB4400"); +test_comp128v2("CCB9CCC90211E81ED80A3663FE9520DD", "B296494F844BE19BD0BA5800"); +test_comp128v2("094C25D5E5F556578FEC3D09E1F18FBE", "2ACF6FC60CE2E75D0A26C800"); +test_comp128v2("8EC3B41444043CA925036ED10D358A08", "5026E7548AE49E190927A000"); +test_comp128v2("90E7DF0DE887D9A66C7481D56918E113", "4B84AF649EA0CD5F0840D000"); +test_comp128v2("968EE15F77994D3215AD0B3B830C8022", "353867C1CAEC7F26927B1800"); +test_comp128v2("1DB07381378EFF68414A6DF0B19CFA74", "2DA3CF74819513D2FA280C00"); +test_comp128v2("905553A290DD902F230AB5334EC3463A", "013A682A7041996B08865C00"); +test_comp128v2("6C61792C1391DCBEA18157DA3A5383F7", "61BE5406A149B4FF8B5E9400"); +test_comp128v2("8C1D6A7204459D8394710449B1D13BCE", "CEFE606815A3CE4E25379400"); +test_comp128v2("52A2764A059CED2CC46E04FACAE047AB", "B9ED555DE46B9F27FA452800"); +test_comp128v2("583303EC3575D11BF8340CC10F6FB42A", "DA213F2F44A4DF52BFE50C00"); +test_comp128v2("ABDB49A4B210381D9622AD5822150096", "F3672C97FEFC462BDB03BC00"); +test_comp128v2("711639E35CA2CA66EE65C4A45CDD6380", "536057FBB46AA0D25803FC00"); +test_comp128v2("0C8DB765506BFF298F89022E51C308B0", "89EA94F579D333C66670CC00"); +test_comp128v2("EE21F43BC9268966A546FDD100C3D841", "D4593228E6274177E5750000"); +test_comp128v2("EA1A2B1A515C72C4F4097AA555C93705", "E1DDDB18724B2B66A8D08400"); +test_comp128v2("0C9B8393D38BDF1065B162DF707D3009", "B878385FDB1AFC41854B6C00"); +test_comp128v2("EC0493D80DA33AF6FF5FC42D62870052", "4ADA9E7AF7F353A9D9EC5800"); +test_comp128v2("E41565124D918E28E7ED57AE770D7633", "C8C8CAEB0DF9667A2D34D400"); +test_comp128v2("6F4B3D805D5DCB5672FA617066A4B2BB", "346EA70E1588E99C88A47800"); +test_comp128v2("8A66D7FC4CF30B989EE579AA08872713", "4BE79F8A52FF99AE1C710000"); +test_comp128v2("8C901D0043F0660C0A9BC60171ABDAB8", "148A92FF28DBB5CB7012DC00"); +test_comp128v2("B80E227C8575C331DA9AE0F4050D218D", "4CE2F914C3EB439A03393C00"); +test_comp128v2("9ECF1E38C9B9103C6185B00F3C4D93BD", "CB38318E5B3CF543530D4C00"); +test_comp128v2("BAC15FB21C609560794F4C965685E290", "46B7D216BCBA27E2A4085000"); +test_comp128v2("C4AA0670C7B8A667728DA0D594069C99", "12D51B9D3C7909002613F000"); +test_comp128v2("D099EF68D7E3D1D47F23AD15AEE4B5F3", "93622C70D1D635CCF84E7800"); +test_comp128v2("B33945EE00E962EEEBDE6A8FF4742E4B", "509F4F51D9BEB63CF9B59000"); +test_comp128v2("0D473BB0B5BD4DEB25DEE36BB376C10E", "3FD579DB817D8A510BAF6400"); +test_comp128v2("A14218445FC5A8E72C96B1F27D73AB52", "A3BEF92801B0252DF5DB1C00"); +test_comp128v2("494C095A54E5CDB1A1F6095C42D760E4", "15A68280AEB04086C3638400"); +test_comp128v2("8F90256E47BE4678036609D34B89544E", "2396E34F472750F9D3524000"); +test_comp128v2("5C0927F8F0FD2307F2C6FECE9243F06A", "87AFF076277855F812670400"); +test_comp128v2("C636207195E46AE24C49F4F9D0B786F0", "86C6671A2A8BA28EC6918400"); +test_comp128v2("A7AD2E1B41F3761C59B29F0BFC5890F0", "10574CB3947EDCD7E9595400"); +test_comp128v2("C9FE56B04AC1EDDB9E04E352E8199A3A", "5C1ABFC9A21F5D95E1DA0C00"); +test_comp128v2("C3974645E95D98E4F9274CF62B0D885E", "ACCE97C26AA1DD1BB9340800"); +test_comp128v2("82D095C92DF409D3473ECA08A5A81B65", "30BA06CE2F1AD2A3EAE8D000"); +test_comp128v2("BFAA576B9A290496C47C3D498F8D4FE6", "B43D9C5448CC3F754EA0A800"); +test_comp128v2("040B228CF2C6002BE385DEFD7DB55725", "62D7DDCF277DDBBB84289400"); +test_comp128v2("F1E565C0B52EB2B1E24C17AA3848652A", "9F8A216B9C64DC5A03833400"); +test_comp128v2("2E8A846052A19AF00098BF1AE1FDA9EB", "2C5BF370EA47936AE4802C00"); +test_comp128v2("ACE3EC57D2DBFF11B9B8A81B4406FCB9", "6689168B45E7E9084283D000"); +test_comp128v2("7414C5D415AB5574A82668573BB04166", "AFA7009AE75A5B6E1C8AF000"); +test_comp128v2("A986D44920217FD956E7C4CBC3DE0527", "F9BF62C6B3C722659717AC00"); +test_comp128v2("A08A9B02F531CB9D580DF8176A3A994E", "D379914524C2ED1D1B693000"); +test_comp128v2("4C0F9E924F063A6243865DE1123CA045", "D7F6FEB5091DA38F0D1F9800"); +test_comp128v2("D55B8C7718CF349F906071C76555C986", "564E13F008AA9129A319E400"); +test_comp128v2("0613FF46EFDEB6A663D915B86A9D6C0B", "E75538CAD55D599EC6718C00"); +test_comp128v2("B00D4FA90CD2DA85E1E220AEEFE2C5EC", "ADE280F0C17C8BF566451C00"); +test_comp128v2("FD380C653CBF3A927A769324D9E00324", "3DD21D2EA170DDDFD5E16000"); +test_comp128v2("A9172812C62A2FB789825C71C23BE469", "765EA88CBA94AA15DD3BB800"); +test_comp128v2("59FA5C6FA03F2BD23E35CAFCAF58FD46", "546D5EE3655E43632DD94C00"); +test_comp128v2("F6A4D79BF1DA9F46E41241CD2CD723FF", "74ADD5456F2CD3059AAF3400"); +test_comp128v2("46077741E91463DCBB61F3BA88599848", "24D72BDB319C6EA927B37400"); +test_comp128v2("46E2AFDEF73C2242C2EDA4C690C91E1A", "23B988C1308602402A4FC000"); +test_comp128v2("C240BF323A1B10CF791397D47340B26B", "F13F3AD8A00FF908FC6BD800"); +test_comp128v2("87839B0D4AB1B531495D00751BDCB435", "ADAD6944C3392006CC85E800"); +test_comp128v2("635EFEF876F6318332BE61BE6B4B83E5", "4E763956FC5B9B2C37C09C00"); +test_comp128v2("4A4A4AAFB83EC7B93840A3DADA92F1E9", "7032880172E7BCFB8C72E000"); +test_comp128v2("915C8330D241274251BD71B7E6D37699", "E2003179F7CB405965011000"); +test_comp128v2("E20E7DC2DF7BAE037EC7D880B3C26E90", "992AADDC12E81003488C9800"); +test_comp128v2("EEB75A96C92304E40C2E0E806E918E9A", "BCA49B63865490E279409800"); +test_comp128v2("BB1806312EF173FB73897A3D0BE6A053", "F731BB08A833760754AE0800"); +test_comp128v2("64E576287B81C3442F95345C078D22DB", "B5DEBC603B1ECE7161C95000"); +test_comp128v2("DCB334F708467997480B458DB66356E3", "CFBD2049D829D9C42D26E800"); +test_comp128v2("39EC58A24300E932FF9258EBA374ED62", "A489F81E6E16D0F436977C00"); +test_comp128v2("52FE65AB5569A4DDC91DB5EB747AD872", "712CF42C24F212EE4B80B000"); +test_comp128v2("9401DD3CF0C494B91A3CB28A677A6F9F", "6958E170DB5879834C90AC00"); +test_comp128v2("A7A70C832ACD99447B4DA063BB40A249", "8C4337552EC9121D9C0CB000"); +test_comp128v2("F777485D595BCDAED8AA529E91A161F1", "97DE44F1E89882C3A91A5000"); +test_comp128v2("8D25D899D7458F37D0F26C7D5FD3C0C9", "1E9604A46215B01EE4C11400"); +test_comp128v2("2C75E9C40BBE9AC71B03E2B1A4FD8F77", "BA6F3343BB0A50DFC9F54800"); +test_comp128v2("5E2FBA59B74C51357D5944849B5D5B01", "D5312B4F4774EF49E9318400"); +test_comp128v2("B48D0294C24464CC796F7665C639A3A5", "DEF4ECF98FBCE2A4DF450000"); +test_comp128v2("E1EE10EFABD753F49C13D0B6FFE567F1", "C6CF830856A1AAB6750F1C00"); +test_comp128v2("328BE773AB9ACABE5EBDB67A72DAB593", "1246E6852A5B78EFC63F1400"); +test_comp128v2("C6FA835395102B135A0DF22ED100A30C", "F7EC6507B3D8882E9F86E800"); +test_comp128v2("42BA23DC01CE115FEE284E30D93C2EE1", "85061F767191A64FB6DF3800"); +test_comp128v2("590C81F77828CC50FAE2322F88F2FF72", "4428F98DAC165B709AF39000"); +test_comp128v2("DD5A394D5AF47943FFFCEED795E55131", "7BF03394EA112244A2E53000"); +test_comp128v2("E4B350364A61282E9C7E109C200BB59D", "22A39338B073F44ACC3A7400"); +test_comp128v2("2EC97054F229452094AB6E95713E2B73", "C7DC6BC4D8586FD0A278A400"); +test_comp128v2("9949BBF69464815BBADB53732B830972", "221299171F63C0DF3AEF7800"); +test_comp128v2("AE7021704039DB7C25139864145D2BD2", "1945B987B54CB70E5D718C00"); +test_comp128v2("31E7C45E5C16698DB87FDC4414521085", "68EE8B49C4E327CD7EFF1000"); +test_comp128v2("2C9301A7630A80058E6016DF1E61F67C", "22E69372E777618A21335800"); +test_comp128v2("8BA8B91866F892579CF8EB18BFBCD4E9", "F3E2B573F70A66FB55C23C00"); +test_comp128v2("312372D0F65B447765758D9CAF2434D9", "93609D380DFF429A870F0C00"); +test_comp128v2("CA787B420C4399138BE2317A0DC94249", "9D8372124BE92CCA0D06B000"); +test_comp128v2("27DAE7C8BAE72D001FC9002353E9B64E", "4E15629B933D694F68733C00"); +test_comp128v2("26BAA1215821CA9F90E4CD0690C10F2E", "58103A993006A0C200359000"); +test_comp128v2("A3D6F246FB435A7FF58E1E88B434AD71", "685673795E247655A1B4A800"); +test_comp128v2("FF468FF55671C17282B41DD246D2792D", "26BDB78D824FF8CDBA768800"); +test_comp128v2("600272165F44AF4C0E537AB5D8E66736", "3C79315DB6DAAEF9EA724400"); +test_comp128v2("508F035C9376D9FCC41AAA7D1CC764A8", "41FD7AF4639235E4A02C1800"); +test_comp128v2("F4D22B29DE342EEA7CD8E4E3F43A4943", "CD833E80A4BF33DF3CFA2000"); +test_comp128v2("58843C6F5856B56CA9198695EFE17CF0", "5676CE8A0AE61F33C3ABF400"); +test_comp128v2("6E3C73DB4F5CC678DCC7BFDEE568E826", "A247316EF8F882D42FCCBC00"); +test_comp128v2("D37AE74AD0489776723124F6CE81D42D", "78355AEA1296483A3CBE8800"); +test_comp128v2("F43BA41AD0DB41DA4F54FF5D6FEE4771", "DC1D9BAFDDD5EE83C1B8AC00"); +test_comp128v2("B65FB4E50DD0050E79BAF78FD2F4B9BF", "B0E291BAF797A8275AD71400"); +test_comp128v2("8DC778A2ADA661942266E0B86CD7DA91", "B9D294C0291018F04A09E400"); +test_comp128v2("B6E293ECCA4A56F1D93C8242D5E6756C", "25ED1EE23A3C11FCE7D57000"); +test_comp128v2("4B5B86CCE2090F22424EDA2C512197C8", "A365A6A867B02EE9343CD800"); +test_comp128v2("9F250AC936FDA89F1966C3D3812BFBF4", "3A4AB781109515A1139EE800"); +test_comp128v2("87CF86E273A7A8BE687D1802005D2A5E", "8ED03BDAA9E92833A6727000"); +test_comp128v2("98CA9A659D2C4DB1A235DD54BA36EB77", "0AECFC5BE2B7C1DC6D0BC400"); +test_comp128v2("53EA0452158CD2DF5F5AE2DCAAC86BFF", "29A163B42A2D557A70974400"); +test_comp128v2("74B58541693349756299EE79D408C415", "56D28DFB499FDB30B87CA400"); +test_comp128v2("16E25268D3F1498A42525626C2440505", "39FCE1A8505CD73BA1DAB400"); +test_comp128v2("737D32452FEC46C026B249E7D77B9A80", "9D515ADFCD93432FE73A8800"); +test_comp128v2("ADD0543912E4A632AC4C0814294751F9", "59D694C394485E65DADDBC00"); +test_comp128v2("0F30160AF9D726612C00476DA06F2FD1", "6EEBE451744257F9435F6400"); +test_comp128v2("0198B362FF964F890256674B225AE2EF", "DAB5FF67D8925B0DADD74C00"); +test_comp128v2("F99975FC4D5AD6FDA57655CF1DC35FB3", "8396623C8B44C2904815EC00"); +test_comp128v2("762CD396934B5E7916EB48D07E3D8383", "D597556F2C650DCDAB686800"); +test_comp128v2("ACFD433259569169FEE586564F056F31", "CE6C1FC52C2CC10E886B6400"); +test_comp128v2("C0C3AA12D8EFA599621B8219AEDDB39D", "F46A4FF31C0FB6ADA7FC3000"); +test_comp128v2("88964441874790C6B1AD12C6BB907060", "CC9729FDA25819796E90D000"); +test_comp128v2("BF65C58D03260691C1267E992128F675", "BC7F343F69A3B6C09C114000"); +test_comp128v2("B13CE2B597DA27FB9DE4B9ADFF717495", "87BE699F1748597BCFA46800"); +test_comp128v2("A2680E79DC76B80EE268FEE9C1EC945D", "18E19922978E90020F353800"); +test_comp128v2("0B31B79AB27925553119466A3C845C49", "041D5919C3CA2542AE91AC00"); +test_comp128v2("FFCA938AC5DDF97C526941838527CE9E", "FF7CAB0E892D9AD987AE2800"); +test_comp128v2("36D5B7252A7B57BE2D4E06879E6975C4", "427F72A3254D4BA24C1E6000"); +test_comp128v2("E4FEB6B8FB01025D6C479852FEA000C1", "825845CFF96383778D0ED800"); +test_comp128v2("E138E7CD58527B7022BD1553C4E493F4", "71AE9F089F8B970EA986F400"); +test_comp128v2("F0FD7F38EC52265FC33D60DC9553A5D7", "140CEF85332BCDDBC3B26400"); +test_comp128v2("4F0BDF1C4BE4A35C065EAAEFAE646A01", "96E64BBB007D4761869BF000"); +test_comp128v2("03706861BAEEF0DC1CEA996C3EA93D92", "C2CF16AE93CB94D5A85FB400"); +test_comp128v2("B1259AB7C681443C290E0C1BF5224DC1", "DAD36B50AA8455AD5D6F8C00"); +test_comp128v2("E225F155FA5CA852E151B7AD3BC40394", "9F480C67DF663A51B91C5000"); +test_comp128v2("30098EF69DBBDD25FB9C87315D3020F1", "51D39392BCF956FF0F34F000"); +test_comp128v2("749E0FD7B6ECD4B45E80C6E54A14BD0D", "44F77EF7111682F411EA7800"); +test_comp128v2("5A5444F0E7E7C61CFB031F86E62EAFF6", "2F65BCBA94C07D4346DF7C00"); +test_comp128v2("C9C7A48094A579C8A989B28848DED187", "CB88C47F30FAB985582B0800"); +test_comp128v2("50449C950CE2DB6E0DF22609E005E175", "64EB723CBF43873DD2320000"); +test_comp128v2("9DEEC383005D68C05C665CF484E371FE", "F941903FC1062E6FB20AFC00"); +test_comp128v2("FB3BB14E175FA9172A2741E04F139B5C", "4E9CD42E9C244AB3690E8000"); +test_comp128v2("24C01E