Smelter is again abandoned and I'm again publishing kernel source - this time for Vanillacoin WhirlpoolX algorithm
static UINT64 arrPrecalc[8*256] =
{
0xD83078C018601818ULL, 0x2646AF05238C2323ULL, 0xB891F97EC63FC6C6ULL, 0xFBCD6F13E887E8E8ULL, 0xCB13A14C87268787ULL, 0x116D62A9B8DAB8B8ULL, 0x0902050801040101ULL, 0x0D9E6E424F214F4FULL, 0x9B6CEEAD36D83636ULL, 0xFF510459A6A2A6A6ULL, 0x0CB9BDDED26FD2D2ULL, 0x0EF706FBF5F3F5F5ULL, 0x96F280EF79F97979ULL, 0x30DECE5F6FA16F6FULL, 0x6D3FEFFC917E9191ULL, 0xF8A407AA52555252ULL, 0x47C0FD27609D6060ULL, 0x35657689BCCABCBCULL, 0x372BCDAC9B569B9BULL, 0x8A018C048E028E8EULL, 0xD25B1571A3B6A3A3ULL, 0x6C183C600C300C0CULL, 0x84F68AFF7BF17B7BULL, 0x806AE1B535D43535ULL, 0xF53A69E81D741D1DULL, 0xB3DD4753E0A7E0E0ULL, 0x21B3ACF6D77BD7D7ULL, 0x9C99ED5EC22FC2C2ULL, 0x435C966D2EB82E2EULL, 0x29967A624B314B4BULL, 0x5DE121A3FEDFFEFEULL, 0xD5AE168257415757ULL, 0xBD2A41A815541515ULL, 0xE8EEB69F77C17777ULL, 0x926EEBA537DC3737ULL, 0x9ED7567BE5B3E5E5ULL, 0x1323D98C9F469F9FULL, 0x23FD17D3F0E7F0F0ULL, 0x20947F6A4A354A4AULL, 0x44A9959EDA4FDADAULL, 0xA2B025FA587D5858ULL, 0xCF8FCA06C903C9C9ULL, 0x7C528D5529A42929ULL, 0x5A1422500A280A0AULL, 0x507F4FE1B1FEB1B1ULL, 0xC95D1A69A0BAA0A0ULL, 0x14D6DA7F6BB16B6BULL, 0xD917AB5C852E8585ULL, 0x3C677381BDCEBDBDULL, 0x8FBA34D25D695D5DULL, 0x9020508010401010ULL, 0x07F503F3F4F7F4F4ULL, 0xDD8BC016CB0BCBCBULL, 0xD37CC6ED3EF83E3EULL, 0x2D0A112805140505ULL, 0x78CEE61F67816767ULL, 0x97D55373E4B7E4E4ULL, 0x024EBB25279C2727ULL, 0x7382583241194141ULL, 0xA70B9D2C8B168B8BULL, 0xF6530151A7A6A7A7ULL, 0xB2FA94CF7DE97D7DULL, 0x4937FBDC956E9595ULL, 0x56AD9F8ED847D8D8ULL, 0x70EB308BFBCBFBFBULL, 0xCDC17123EE9FEEEEULL, 0xBBF891C77CED7C7CULL, 0x71CCE31766856666ULL, 0x7BA78EA6DD53DDDDULL, 0xAF2E4BB8175C1717ULL, 0x458E460247014747ULL, 0x1A21DC849E429E9EULL, 0xD489C51ECA0FCACAULL, 0x585A99752DB42D2DULL, 0x2E637991BFC6BFBFULL, 0x3F0E1B38071C0707ULL, 0xAC472301AD8EADADULL, 0xB0B42FEA5A755A5AULL, 0xEF1BB56C83368383ULL, 0xB666FF8533CC3333ULL, 0x5CC6F23F63916363ULL, 0x12040A1002080202ULL, 0x93493839AA92AAAAULL, 0xDEE2A8AF71D97171ULL, 0xC68DCF0EC807C8C8ULL, 0xD1327DC819641919ULL, 0x3B92707249394949ULL, 0x5FAF9A86D943D9D9ULL, 0x31F91DC3F2EFF2F2ULL, 0xA8DB484BE3ABE3E3ULL, 0xB9B62AE25B715B5BULL, 0xBC0D9234881A8888ULL, 0x3E29C8A49A529A9AULL, 0x0B4CBE2D26982626ULL, 0xBF64FA8D32C83232ULL, 0x597D4AE9B0FAB0B0ULL, 0xF2CF6A1BE983E9E9ULL, 0x771E33780F3C0F0FULL, 0x33B7A6E6D573D5D5ULL, 0xF41DBA74803A8080ULL, 0x27617C99BEC2BEBEULL, 0xEB87DE26CD13CDCDULL, 0x8968E4BD34D03434ULL, 0x3290757A483D4848ULL, 0x54E324ABFFDBFFFFULL, 0x8DF48FF77AF57A7AULL, 0x643DEAF4907A9090ULL, 0x9DBE3EC25F615F5FULL, 0x3D40A01D20802020ULL, 0x0FD0D56768BD6868ULL, 0xCA3472D01A681A1AULL, 0xB7412C19AE82AEAEULL, 0x7D755EC9B4EAB4B4ULL, 0xCEA8199A544D5454ULL, 0x7F3BE5EC93769393ULL, 0x2F44AA0D22882222ULL, 0x63C8E907648D6464ULL, 0x2AFF12DBF1E3F1F1ULL, 0xCCE6A2BF73D17373ULL, 0x82245A9012481212ULL, 0x7A805D3A401D4040ULL, 0x4810284008200808ULL, 0x959BE856C32BC3C3ULL, 0xDFC57B33EC97ECECULL, 0x4DAB9096DB4BDBDBULL, 0xC05F1F61A1BEA1A1ULL, 0x9107831C8D0E8D8DULL, 0xC87AC9F53DF43D3DULL, 0x5B33F1CC97669797ULL, 0x0000000000000000ULL, 0xF983D436CF1BCFCFULL, 0x6E5687452BAC2B2BULL, 0xE1ECB39776C57676ULL, 0xE619B06482328282ULL, 0x28B1A9FED67FD6D6ULL, 0xC33677D81B6C1B1BULL, 0x74775BC1B5EEB5B5ULL, 0xBE432911AF86AFAFULL, 0x1DD4DF776AB56A6AULL, 0xEAA00DBA505D5050ULL, 0x578A4C1245094545ULL, 0x38FB18CBF3EBF3F3ULL, 0xAD60F09D30C03030ULL, 0xC4C3742BEF9BEFEFULL, 0xDA7EC3E53FFC3F3FULL, 0xC7AA1C9255495555ULL, 0xDB591079A2B2A2A2ULL, 0xE9C96503EA8FEAEAULL, 0x6ACAEC0F65896565ULL, 0x036968B9BAD2BABAULL, 0x4A5E93652FBC2F2FULL, 0x8E9DE74EC027C0C0ULL, 0x60A181BEDE5FDEDEULL, 0xFC386CE01C701C1CULL, 0x46E72EBBFDD3FDFDULL, 0x1F9A64524D294D4DULL, 0x7639E0E492729292ULL, 0xFAEABC8F75C97575ULL, 0x360C1E3006180606ULL, 0xAE0998248A128A8AULL, 0x4B7940F9B2F2B2B2ULL, 0x85D15963E6BFE6E6ULL, 0x7E1C36700E380E0EULL, 0xE73E63F81F7C1F1FULL, 0x55C4F73762956262ULL, 0x3AB5A3EED477D4D4ULL, 0x814D3229A89AA8A8ULL, 0x5231F4C496629696ULL, 0x62EF3A9BF9C3F9F9ULL, 0xA397F666C533C5C5ULL, 0x104AB13525942525ULL, 0xABB220F259795959ULL, 0xD015AE54842A8484ULL, 0xC5E4A7B772D57272ULL, 0xEC72DDD539E43939ULL, 0x1698615A4C2D4C4CULL, 0x94BC3BCA5E655E5EULL, 0x9FF085E778FD7878ULL, 0xE570D8DD38E03838ULL, 0x980586148C0A8C8CULL, 0x17BFB2C6D163D1D1ULL, 0xE4570B41A5AEA5A5ULL, 0xA1D94D43E2AFE2E2ULL, 0x4EC2F82F61996161ULL, 0x427B45F1B3F6B3B3ULL, 0x3442A51521842121ULL, 0x0825D6949C4A9C9CULL, 0xEE3C66F01E781E1EULL, 0x6186522243114343ULL, 0xB193FC76C73BC7C7ULL, 0x4FE52BB3FCD7FCFCULL, 0x2408142004100404ULL, 0xE3A208B251595151ULL, 0x252FC7BC995E9999ULL, 0x22DAC44F6DA96D6DULL, 0x651A39680D340D0DULL, 0x79E93583FACFFAFAULL, 0x69A384B6DF5BDFDFULL, 0xA9FC9BD77EE57E7EULL, 0x1948B43D24902424ULL, 0xFE76D7C53BEC3B3BULL, 0x9A4B3D31AB96ABABULL, 0xF081D13ECE1FCECEULL, 0x9922558811441111ULL, 0x8303890C8F068F8FULL, 0x049C6B4A4E254E4EULL, 0x667351D1B7E6B7B7ULL, 0xE0CB600BEB8BEBEBULL, 0xC178CCFD3CF03C3CULL, 0xFD1FBF7C813E8181ULL, 0x4035FED4946A9494ULL, 0x1CF30CEBF7FBF7F7ULL, 0x186F67A1B9DEB9B9ULL, 0x8B265F98134C1313ULL, 0x51589C7D2CB02C2CULL, 0x05BBB8D6D36BD3D3ULL, 0x8CD35C6BE7BBE7E7ULL, 0x39DCCB576EA56E6EULL, 0xAA95F36EC437C4C4ULL, 0x1B060F18030C0303ULL, 0xDCAC138A56455656ULL, 0x5E88491A440D4444ULL, 0xA0FE9EDF7FE17F7FULL, 0x884F3721A99EA9A9ULL, 0x6754824D2AA82A2AULL, 0x0A6B6DB1BBD6BBBBULL, 0x879FE246C123C1C1ULL, 0xF1A602A253515353ULL, 0x72A58BAEDC57DCDCULL, 0x531627580B2C0B0BULL, 0x0127D39C9D4E9D9DULL, 0x2BD8C1476CAD6C6CULL, 0xA462F59531C43131ULL, 0xF3E8B98774CD7474ULL, 0x15F109E3F6FFF6F6ULL, 0x4C8C430A46054646ULL, 0xA5452609AC8AACACULL, 0xB50F973C891E8989ULL, 0xB42844A014501414ULL, 0xBADF425BE1A3E1E1ULL, 0xA62C4EB016581616ULL, 0xF774D2CD3AE83A3AULL, 0x06D2D06F69B96969ULL, 0x41122D4809240909ULL, 0xD7E0ADA770DD7070ULL, 0x6F7154D9B6E2B6B6ULL, 0x1EBDB7CED067D0D0ULL, 0xD6C77E3BED93EDEDULL, 0xE285DB2ECC17CCCCULL, 0x6884572A42154242ULL, 0x2C2DC2B4985A9898ULL, 0xED550E49A4AAA4A4ULL, 0x7550885D28A02828ULL, 0x86B831DA5C6D5C5CULL, 0x6BED3F93F8C7F8F8ULL, 0xC211A44486228686ULL,
0x3078C018601818D8ULL, 0x46AF05238C232326ULL, 0x91F97EC63FC6C6B8ULL, 0xCD6F13E887E8E8FBULL, 0x13A14C87268787CBULL, 0x6D62A9B8DAB8B811ULL, 0x0205080104010109ULL, 0x9E6E424F214F4F0DULL, 0x6CEEAD36D836369BULL, 0x510459A6A2A6A6FFULL, 0xB9BDDED26FD2D20CULL, 0xF706FBF5F3F5F50EULL, 0xF280EF79F9797996ULL, 0xDECE5F6FA16F6F30ULL, 0x3FEFFC917E91916DULL, 0xA407AA52555252F8ULL, 0xC0FD27609D606047ULL, 0x657689BCCABCBC35ULL, 0x2BCDAC9B569B9B37ULL, 0x018C048E028E8E8AULL, 0x5B1571A3B6A3A3D2ULL, 0x183C600C300C0C6CULL, 0xF68AFF7BF17B7B84ULL, 0x6AE1B535D4353580ULL, 0x3A69E81D741D1DF5ULL, 0xDD4753E0A7E0E0B3ULL, 0xB3ACF6D77BD7D721ULL, 0x99ED5EC22FC2C29CULL, 0x5C966D2EB82E2E43ULL, 0x967A624B314B4B29ULL, 0xE121A3FEDFFEFE5DULL, 0xAE168257415757D5ULL, 0x2A41A815541515BDULL, 0xEEB69F77C17777E8ULL, 0x6EEBA537DC373792ULL, 0xD7567BE5B3E5E59EULL, 0x23D98C9F469F9F13ULL, 0xFD17D3F0E7F0F023ULL, 0x947F6A4A354A4A20ULL, 0xA9959EDA4FDADA44ULL, 0xB025FA587D5858A2ULL, 0x8FCA06C903C9C9CFULL, 0x528D5529A429297CULL, 0x1422500A280A0A5AULL, 0x7F4FE1B1FEB1B150ULL, 0x5D1A69A0BAA0A0C9ULL, 0xD6DA7F6BB16B6B14ULL, 0x17AB5C852E8585D9ULL, 0x677381BDCEBDBD3CULL, 0xBA34D25D695D5D8FULL, 0x2050801040101090ULL, 0xF503F3F4F7F4F407ULL, 0x8BC016CB0BCBCBDDULL, 0x7CC6ED3EF83E3ED3ULL, 0x0A1128051405052DULL, 0xCEE61F6781676778ULL, 0xD55373E4B7E4E497ULL, 0x4EBB25279C272702ULL, 0x8258324119414173ULL, 0x0B9D2C8B168B8BA7ULL, 0x530151A7A6A7A7F6ULL, 0xFA94CF7DE97D7DB2ULL, 0x37FBDC956E959549ULL, 0xAD9F8ED847D8D856ULL, 0xEB308BFBCBFBFB70ULL, 0xC17123EE9FEEEECDULL, 0xF891C77CED7C7CBBULL, 0xCCE3176685666671ULL, 0xA78EA6DD53DDDD7BULL, 0x2E4BB8175C1717AFULL, 0x8E46024701474745ULL, 0x21DC849E429E9E1AULL, 0x89C51ECA0FCACAD4ULL, 0x5A99752DB42D2D58ULL, 0x637991BFC6BFBF2EULL, 0x0E1B38071C07073FULL, 0x472301AD8EADADACULL, 0xB42FEA5A755A5AB0ULL, 0x1BB56C83368383EFULL, 0x66FF8533CC3333B6ULL, 0xC6F23F639163635CULL, 0x040A100208020212ULL, 0x493839AA92AAAA93ULL, 0xE2A8AF71D97171DEULL, 0x8DCF0EC807C8C8C6ULL, 0x327DC819641919D1ULL, 0x927072493949493BULL, 0xAF9A86D943D9D95FULL, 0xF91DC3F2EFF2F231ULL, 0xDB484BE3ABE3E3A8ULL, 0xB62AE25B715B5BB9ULL, 0x0D9234881A8888BCULL, 0x29C8A49A529A9A3EULL, 0x4CBE2D269826260BULL, 0x64FA8D32C83232BFULL, 0x7D4AE9B0FAB0B059ULL, 0xCF6A1BE983E9E9F2ULL, 0x1E33780F3C0F0F77ULL, 0xB7A6E6D573D5D533ULL, 0x1DBA74803A8080F4ULL, 0x617C99BEC2BEBE27ULL, 0x87DE26CD13CDCDEBULL, 0x68E4BD34D0343489ULL, 0x90757A483D484832ULL, 0xE324ABFFDBFFFF54ULL, 0xF48FF77AF57A7A8DULL, 0x3DEAF4907A909064ULL, 0xBE3EC25F615F5F9DULL, 0x40A01D208020203DULL, 0xD0D56768BD68680FULL, 0x3472D01A681A1ACAULL, 0x412C19AE82AEAEB7ULL, 0x755EC9B4EAB4B47DULL, 0xA8199A544D5454CEULL, 0x3BE5EC937693937FULL, 0x44AA0D228822222FULL, 0xC8E907648D646463ULL, 0xFF12DBF1E3F1F12AULL, 0xE6A2BF73D17373CCULL, 0x245A901248121282ULL, 0x805D3A401D40407AULL, 0x1028400820080848ULL, 0x9BE856C32BC3C395ULL, 0xC57B33EC97ECECDFULL, 0xAB9096DB4BDBDB4DULL, 0x5F1F61A1BEA1A1C0ULL, 0x07831C8D0E8D8D91ULL, 0x7AC9F53DF43D3DC8ULL, 0x33F1CC976697975BULL, 0x0000000000000000ULL, 0x83D436CF1BCFCFF9ULL, 0x5687452BAC2B2B6EULL, 0xECB39776C57676E1ULL, 0x19B06482328282E6ULL, 0xB1A9FED67FD6D628ULL, 0x3677D81B6C1B1BC3ULL, 0x775BC1B5EEB5B574ULL, 0x432911AF86AFAFBEULL, 0xD4DF776AB56A6A1DULL, 0xA00DBA505D5050EAULL, 0x8A4C124509454557ULL, 0xFB18CBF3EBF3F338ULL, 0x60F09D30C03030ADULL, 0xC3742BEF9BEFEFC4ULL, 0x7EC3E53FFC3F3FDAULL, 0xAA1C9255495555C7ULL, 0x591079A2B2A2A2DBULL, 0xC96503EA8FEAEAE9ULL, 0xCAEC0F658965656AULL, 0x6968B9BAD2BABA03ULL, 0x5E93652FBC2F2F4AULL, 0x9DE74EC027C0C08EULL, 0xA181BEDE5FDEDE60ULL, 0x386CE01C701C1CFCULL, 0xE72EBBFDD3FDFD46ULL, 0x9A64524D294D4D1FULL, 0x39E0E49272929276ULL, 0xEABC8F75C97575FAULL, 0x0C1E300618060636ULL, 0x0998248A128A8AAEULL, 0x7940F9B2F2B2B24BULL, 0xD15963E6BFE6E685ULL, 0x1C36700E380E0E7EULL, 0x3E63F81F7C1F1FE7ULL, 0xC4F7376295626255ULL, 0xB5A3EED477D4D43AULL, 0x4D3229A89AA8A881ULL, 0x31F4C49662969652ULL, 0xEF3A9BF9C3F9F962ULL, 0x97F666C533C5C5A3ULL, 0x4AB1352594252510ULL, 0xB220F259795959ABULL, 0x15AE54842A8484D0ULL, 0xE4A7B772D57272C5ULL, 0x72DDD539E43939ECULL, 0x98615A4C2D4C4C16ULL, 0xBC3BCA5E655E5E94ULL, 0xF085E778FD78789FULL, 0x70D8DD38E03838E5ULL, 0x0586148C0A8C8C98ULL, 0xBFB2C6D163D1D117ULL, 0x570B41A5AEA5A5E4ULL, 0xD94D43E2AFE2E2A1ULL, 0xC2F82F619961614EULL, 0x7B45F1B3F6B3B342ULL, 0x42A5152184212134ULL, 0x25D6949C4A9C9C08ULL, 0x3C66F01E781E1EEEULL, 0x8652224311434361ULL, 0x93FC76C73BC7C7B1ULL, 0xE52BB3FCD7FCFC4FULL, 0x0814200410040424ULL, 0xA208B251595151E3ULL, 0x2FC7BC995E999925ULL, 0xDAC44F6DA96D6D22ULL, 0x1A39680D340D0D65ULL, 0xE93583FACFFAFA79ULL, 0xA384B6DF5BDFDF69ULL, 0xFC9BD77EE57E7EA9ULL, 0x48B43D2490242419ULL, 0x76D7C53BEC3B3BFEULL, 0x4B3D31AB96ABAB9AULL, 0x81D13ECE1FCECEF0ULL, 0x2255881144111199ULL, 0x03890C8F068F8F83ULL, 0x9C6B4A4E254E4E04ULL, 0x7351D1B7E6B7B766ULL, 0xCB600BEB8BEBEBE0ULL, 0x78CCFD3CF03C3CC1ULL, 0x1FBF7C813E8181FDULL, 0x35FED4946A949440ULL, 0xF30CEBF7FBF7F71CULL, 0x6F67A1B9DEB9B918ULL, 0x265F98134C13138BULL, 0x589C7D2CB02C2C51ULL, 0xBBB8D6D36BD3D305ULL, 0xD35C6BE7BBE7E78CULL, 0xDCCB576EA56E6E39ULL, 0x95F36EC437C4C4AAULL, 0x060F18030C03031BULL, 0xAC138A56455656DCULL, 0x88491A440D44445EULL, 0xFE9EDF7FE17F7FA0ULL, 0x4F3721A99EA9A988ULL, 0x54824D2AA82A2A67ULL, 0x6B6DB1BBD6BBBB0AULL, 0x9FE246C123C1C187ULL, 0xA602A253515353F1ULL, 0xA58BAEDC57DCDC72ULL, 0x1627580B2C0B0B53ULL, 0x27D39C9D4E9D9D01ULL, 0xD8C1476CAD6C6C2BULL, 0x62F59531C43131A4ULL, 0xE8B98774CD7474F3ULL, 0xF109E3F6FFF6F615ULL, 0x8C430A460546464CULL, 0x452609AC8AACACA5ULL, 0x0F973C891E8989B5ULL, 0x2844A014501414B4ULL, 0xDF425BE1A3E1E1BAULL, 0x2C4EB016581616A6ULL, 0x74D2CD3AE83A3AF7ULL, 0xD2D06F69B9696906ULL, 0x122D480924090941ULL, 0xE0ADA770DD7070D7ULL, 0x7154D9B6E2B6B66FULL, 0xBDB7CED067D0D01EULL, 0xC77E3BED93EDEDD6ULL, 0x85DB2ECC17CCCCE2ULL, 0x84572A4215424268ULL, 0x2DC2B4985A98982CULL, 0x550E49A4AAA4A4EDULL, 0x50885D28A0282875ULL, 0xB831DA5C6D5C5C86ULL, 0xED3F93F8C7F8F86BULL, 0x11A44486228686C2ULL,
0x78C018601818D830ULL, 0xAF05238C23232646ULL, 0xF97EC63FC6C6B891ULL, 0x6F13E887E8E8FBCDULL, 0xA14C87268787CB13ULL, 0x62A9B8DAB8B8116DULL, 0x0508010401010902ULL, 0x6E424F214F4F0D9EULL, 0xEEAD36D836369B6CULL, 0x0459A6A2A6A6FF51ULL, 0xBDDED26FD2D20CB9ULL, 0x06FBF5F3F5F50EF7ULL, 0x80EF79F9797996F2ULL, 0xCE5F6FA16F6F30DEULL, 0xEFFC917E91916D3FULL, 0x07AA52555252F8A4ULL, 0xFD27609D606047C0ULL, 0x7689BCCABCBC3565ULL, 0xCDAC9B569B9B372BULL, 0x8C048E028E8E8A01ULL, 0x1571A3B6A3A3D25BULL, 0x3C600C300C0C6C18ULL, 0x8AFF7BF17B7B84F6ULL, 0xE1B535D43535806AULL, 0x69E81D741D1DF53AULL, 0x4753E0A7E0E0B3DDULL, 0xACF6D77BD7D721B3ULL, 0xED5EC22FC2C29C99ULL, 0x966D2EB82E2E435CULL, 0x7A624B314B4B2996ULL, 0x21A3FEDFFEFE5DE1ULL, 0x168257415757D5AEULL, 0x41A815541515BD2AULL, 0xB69F77C17777E8EEULL, 0xEBA537DC3737926EULL, 0x567BE5B3E5E59ED7ULL, 0xD98C9F469F9F1323ULL, 0x17D3F0E7F0F023FDULL, 0x7F6A4A354A4A2094ULL, 0x959EDA4FDADA44A9ULL, 0x25FA587D5858A2B0ULL, 0xCA06C903C9C9CF8FULL, 0x8D5529A429297C52ULL, 0x22500A280A0A5A14ULL, 0x4FE1B1FEB1B1507FULL, 0x1A69A0BAA0A0C95DULL, 0xDA7F6BB16B6B14D6ULL, 0xAB5C852E8585D917ULL, 0x7381BDCEBDBD3C67ULL, 0x34D25D695D5D8FBAULL, 0x5080104010109020ULL, 0x03F3F4F7F4F407F5ULL, 0xC016CB0BCBCBDD8BULL, 0xC6ED3EF83E3ED37CULL, 0x1128051405052D0AULL, 0xE61F6781676778CEULL, 0x5373E4B7E4E497D5ULL, 0xBB25279C2727024EULL, 0x5832411941417382ULL, 0x9D2C8B168B8BA70BULL, 0x0151A7A6A7A7F653ULL, 0x94CF7DE97D7DB2FAULL, 0xFBDC956E95954937ULL, 0x9F8ED847D8D856ADULL, 0x308BFBCBFBFB70EBULL, 0x7123EE9FEEEECDC1ULL, 0x91C77CED7C7CBBF8ULL, 0xE3176685666671CCULL, 0x8EA6DD53DDDD7BA7ULL, 0x4BB8175C1717AF2EULL, 0x460247014747458EULL, 0xDC849E429E9E1A21ULL, 0xC51ECA0FCACAD489ULL, 0x99752DB42D2D585AULL, 0x7991BFC6BFBF2E63ULL, 0x1B38071C07073F0EULL, 0x2301AD8EADADAC47ULL, 0x2FEA5A755A5AB0B4ULL, 0xB56C83368383EF1BULL, 0xFF8533CC3333B666ULL, 0xF23F639163635CC6ULL, 0x0A10020802021204ULL, 0x3839AA92AAAA9349ULL, 0xA8AF71D97171DEE2ULL, 0xCF0EC807C8C8C68DULL, 0x7DC819641919D132ULL, 0x7072493949493B92ULL, 0x9A86D943D9D95FAFULL, 0x1DC3F2EFF2F231F9ULL, 0x484BE3ABE3E3A8DBULL, 0x2AE25B715B5BB9B6ULL, 0x9234881A8888BC0DULL, 0xC8A49A529A9A3E29ULL, 0xBE2D269826260B4CULL, 0xFA8D32C83232BF64ULL, 0x4AE9B0FAB0B0597DULL, 0x6A1BE983E9E9F2CFULL, 0x33780F3C0F0F771EULL, 0xA6E6D573D5D533B7ULL, 0xBA74803A8080F41DULL, 0x7C99BEC2BEBE2761ULL, 0xDE26CD13CDCDEB87ULL, 0xE4BD34D034348968ULL, 0x757A483D48483290ULL, 0x24ABFFDBFFFF54E3ULL, 0x8FF77AF57A7A8DF4ULL, 0xEAF4907A9090643DULL, 0x3EC25F615F5F9DBEULL, 0xA01D208020203D40ULL, 0xD56768BD68680FD0ULL, 0x72D01A681A1ACA34ULL, 0x2C19AE82AEAEB741ULL, 0x5EC9B4EAB4B47D75ULL, 0x199A544D5454CEA8ULL, 0xE5EC937693937F3BULL, 0xAA0D228822222F44ULL, 0xE907648D646463C8ULL, 0x12DBF1E3F1F12AFFULL, 0xA2BF73D17373CCE6ULL, 0x5A90124812128224ULL, 0x5D3A401D40407A80ULL, 0x2840082008084810ULL, 0xE856C32BC3C3959BULL, 0x7B33EC97ECECDFC5ULL, 0x9096DB4BDBDB4DABULL, 0x1F61A1BEA1A1C05FULL, 0x831C8D0E8D8D9107ULL, 0xC9F53DF43D3DC87AULL, 0xF1CC976697975B33ULL, 0x0000000000000000ULL, 0xD436CF1BCFCFF983ULL, 0x87452BAC2B2B6E56ULL, 0xB39776C57676E1ECULL, 0xB06482328282E619ULL, 0xA9FED67FD6D628B1ULL, 0x77D81B6C1B1BC336ULL, 0x5BC1B5EEB5B57477ULL, 0x2911AF86AFAFBE43ULL, 0xDF776AB56A6A1DD4ULL, 0x0DBA505D5050EAA0ULL, 0x4C1245094545578AULL, 0x18CBF3EBF3F338FBULL, 0xF09D30C03030AD60ULL, 0x742BEF9BEFEFC4C3ULL, 0xC3E53FFC3F3FDA7EULL, 0x1C9255495555C7AAULL, 0x1079A2B2A2A2DB59ULL, 0x6503EA8FEAEAE9C9ULL, 0xEC0F658965656ACAULL, 0x68B9BAD2BABA0369ULL, 0x93652FBC2F2F4A5EULL, 0xE74EC027C0C08E9DULL, 0x81BEDE5FDEDE60A1ULL, 0x6CE01C701C1CFC38ULL, 0x2EBBFDD3FDFD46E7ULL, 0x64524D294D4D1F9AULL, 0xE0E4927292927639ULL, 0xBC8F75C97575FAEAULL, 0x1E3006180606360CULL, 0x98248A128A8AAE09ULL, 0x40F9B2F2B2B24B79ULL, 0x5963E6BFE6E685D1ULL, 0x36700E380E0E7E1CULL, 0x63F81F7C1F1FE73EULL, 0xF7376295626255C4ULL, 0xA3EED477D4D43AB5ULL, 0x3229A89AA8A8814DULL, 0xF4C4966296965231ULL, 0x3A9BF9C3F9F962EFULL, 0xF666C533C5C5A397ULL, 0xB13525942525104AULL, 0x20F259795959ABB2ULL, 0xAE54842A8484D015ULL, 0xA7B772D57272C5E4ULL, 0xDDD539E43939EC72ULL, 0x615A4C2D4C4C1698ULL, 0x3BCA5E655E5E94BCULL, 0x85E778FD78789FF0ULL, 0xD8DD38E03838E570ULL, 0x86148C0A8C8C9805ULL, 0xB2C6D163D1D117BFULL, 0x0B41A5AEA5A5E457ULL, 0x4D43E2AFE2E2A1D9ULL, 0xF82F619961614EC2ULL, 0x45F1B3F6B3B3427BULL, 0xA515218421213442ULL, 0xD6949C4A9C9C0825ULL, 0x66F01E781E1EEE3CULL, 0x5222431143436186ULL, 0xFC76C73BC7C7B193ULL, 0x2BB3FCD7FCFC4FE5ULL, 0x1420041004042408ULL, 0x08B251595151E3A2ULL, 0xC7BC995E9999252FULL, 0xC44F6DA96D6D22DAULL, 0x39680D340D0D651AULL, 0x3583FACFFAFA79E9ULL, 0x84B6DF5BDFDF69A3ULL, 0x9BD77EE57E7EA9FCULL, 0xB43D249024241948ULL, 0xD7C53BEC3B3BFE76ULL, 0x3D31AB96ABAB9A4BULL, 0xD13ECE1FCECEF081ULL, 0x5588114411119922ULL, 0x890C8F068F8F8303ULL, 0x6B4A4E254E4E049CULL, 0x51D1B7E6B7B76673ULL, 0x600BEB8BEBEBE0CBULL, 0xCCFD3CF03C3CC178ULL, 0xBF7C813E8181FD1FULL, 0xFED4946A94944035ULL, 0x0CEBF7FBF7F71CF3ULL, 0x67A1B9DEB9B9186FULL, 0x5F98134C13138B26ULL, 0x9C7D2CB02C2C5158ULL, 0xB8D6D36BD3D305BBULL, 0x5C6BE7BBE7E78CD3ULL, 0xCB576EA56E6E39DCULL, 0xF36EC437C4C4AA95ULL, 0x0F18030C03031B06ULL, 0x138A56455656DCACULL, 0x491A440D44445E88ULL, 0x9EDF7FE17F7FA0FEULL, 0x3721A99EA9A9884FULL, 0x824D2AA82A2A6754ULL, 0x6DB1BBD6BBBB0A6BULL, 0xE246C123C1C1879FULL, 0x02A253515353F1A6ULL, 0x8BAEDC57DCDC72A5ULL, 0x27580B2C0B0B5316ULL, 0xD39C9D4E9D9D0127ULL, 0xC1476CAD6C6C2BD8ULL, 0xF59531C43131A462ULL, 0xB98774CD7474F3E8ULL, 0x09E3F6FFF6F615F1ULL, 0x430A460546464C8CULL, 0x2609AC8AACACA545ULL, 0x973C891E8989B50FULL, 0x44A014501414B428ULL, 0x425BE1A3E1E1BADFULL, 0x4EB016581616A62CULL, 0xD2CD3AE83A3AF774ULL, 0xD06F69B9696906D2ULL, 0x2D48092409094112ULL, 0xADA770DD7070D7E0ULL, 0x54D9B6E2B6B66F71ULL, 0xB7CED067D0D01EBDULL, 0x7E3BED93EDEDD6C7ULL, 0xDB2ECC17CCCCE285ULL, 0x572A421542426884ULL, 0xC2B4985A98982C2DULL, 0x0E49A4AAA4A4ED55ULL, 0x885D28A028287550ULL, 0x31DA5C6D5C5C86B8ULL, 0x3F93F8C7F8F86BEDULL, 0xA44486228686C211ULL,
0xC018601818D83078ULL, 0x05238C23232646AFULL, 0x7EC63FC6C6B891F9ULL, 0x13E887E8E8FBCD6FULL, 0x4C87268787CB13A1ULL, 0xA9B8DAB8B8116D62ULL, 0x0801040101090205ULL, 0x424F214F4F0D9E6EULL, 0xAD36D836369B6CEEULL, 0x59A6A2A6A6FF5104ULL, 0xDED26FD2D20CB9BDULL, 0xFBF5F3F5F50EF706ULL, 0xEF79F9797996F280ULL, 0x5F6FA16F6F30DECEULL, 0xFC917E91916D3FEFULL, 0xAA52555252F8A407ULL, 0x27609D606047C0FDULL, 0x89BCCABCBC356576ULL, 0xAC9B569B9B372BCDULL, 0x048E028E8E8A018CULL, 0x71A3B6A3A3D25B15ULL, 0x600C300C0C6C183CULL, 0xFF7BF17B7B84F68AULL, 0xB535D43535806AE1ULL, 0xE81D741D1DF53A69ULL, 0x53E0A7E0E0B3DD47ULL, 0xF6D77BD7D721B3ACULL, 0x5EC22FC2C29C99EDULL, 0x6D2EB82E2E435C96ULL, 0x624B314B4B29967AULL, 0xA3FEDFFEFE5DE121ULL, 0x8257415757D5AE16ULL, 0xA815541515BD2A41ULL, 0x9F77C17777E8EEB6ULL, 0xA537DC3737926EEBULL, 0x7BE5B3E5E59ED756ULL, 0x8C9F469F9F1323D9ULL, 0xD3F0E7F0F023FD17ULL, 0x6A4A354A4A20947FULL, 0x9EDA4FDADA44A995ULL, 0xFA587D5858A2B025ULL, 0x06C903C9C9CF8FCAULL, 0x5529A429297C528DULL, 0x500A280A0A5A1422ULL, 0xE1B1FEB1B1507F4FULL, 0x69A0BAA0A0C95D1AULL, 0x7F6BB16B6B14D6DAULL, 0x5C852E8585D917ABULL, 0x81BDCEBDBD3C6773ULL, 0xD25D695D5D8FBA34ULL, 0x8010401010902050ULL, 0xF3F4F7F4F407F503ULL, 0x16CB0BCBCBDD8BC0ULL, 0xED3EF83E3ED37CC6ULL, 0x28051405052D0A11ULL, 0x1F6781676778CEE6ULL, 0x73E4B7E4E497D553ULL, 0x25279C2727024EBBULL, 0x3241194141738258ULL, 0x2C8B168B8BA70B9DULL, 0x51A7A6A7A7F65301ULL, 0xCF7DE97D7DB2FA94ULL, 0xDC956E95954937FBULL, 0x8ED847D8D856AD9FULL, 0x8BFBCBFBFB70EB30ULL, 0x23EE9FEEEECDC171ULL, 0xC77CED7C7CBBF891ULL, 0x176685666671CCE3ULL, 0xA6DD53DDDD7BA78EULL, 0xB8175C1717AF2E4BULL, 0x0247014747458E46ULL, 0x849E429E9E1A21DCULL, 0x1ECA0FCACAD489C5ULL, 0x752DB42D2D585A99ULL, 0x91BFC6BFBF2E6379ULL, 0x38071C07073F0E1BULL, 0x01AD8EADADAC4723ULL, 0xEA5A755A5AB0B42FULL, 0x6C83368383EF1BB5ULL, 0x8533CC3333B666FFULL, 0x3F639163635CC6F2ULL, 0x100208020212040AULL, 0x39AA92AAAA934938ULL, 0xAF71D97171DEE2A8ULL, 0x0EC807C8C8C68DCFULL, 0xC819641919D1327DULL, 0x72493949493B9270ULL, 0x86D943D9D95FAF9AULL, 0xC3F2EFF2F231F91DULL, 0x4BE3ABE3E3A8DB48ULL, 0xE25B715B5BB9B62AULL, 0x34881A8888BC0D92ULL, 0xA49A529A9A3E29C8ULL, 0x2D269826260B4CBEULL, 0x8D32C83232BF64FAULL, 0xE9B0FAB0B0597D4AULL, 0x1BE983E9E9F2CF6AULL, 0x780F3C0F0F771E33ULL, 0xE6D573D5D533B7A6ULL, 0x74803A8080F41DBAULL, 0x99BEC2BEBE27617CULL, 0x26CD13CDCDEB87DEULL, 0xBD34D034348968E4ULL, 0x7A483D4848329075ULL, 0xABFFDBFFFF54E324ULL, 0xF77AF57A7A8DF48FULL, 0xF4907A9090643DEAULL, 0xC25F615F5F9DBE3EULL, 0x1D208020203D40A0ULL, 0x6768BD68680FD0D5ULL, 0xD01A681A1ACA3472ULL, 0x19AE82AEAEB7412CULL, 0xC9B4EAB4B47D755EULL, 0x9A544D5454CEA819ULL, 0xEC937693937F3BE5ULL, 0x0D228822222F44AAULL, 0x07648D646463C8E9ULL, 0xDBF1E3F1F12AFF12ULL, 0xBF73D17373CCE6A2ULL, 0x901248121282245AULL, 0x3A401D40407A805DULL, 0x4008200808481028ULL, 0x56C32BC3C3959BE8ULL, 0x33EC97ECECDFC57BULL, 0x96DB4BDBDB4DAB90ULL, 0x61A1BEA1A1C05F1FULL, 0x1C8D0E8D8D910783ULL, 0xF53DF43D3DC87AC9ULL, 0xCC976697975B33F1ULL, 0x0000000000000000ULL, 0x36CF1BCFCFF983D4ULL, 0x452BAC2B2B6E5687ULL, 0x9776C57676E1ECB3ULL, 0x6482328282E619B0ULL, 0xFED67FD6D628B1A9ULL, 0xD81B6C1B1BC33677ULL, 0xC1B5EEB5B574775BULL, 0x11AF86AFAFBE4329ULL, 0x776AB56A6A1DD4DFULL, 0xBA505D5050EAA00DULL, 0x1245094545578A4CULL, 0xCBF3EBF3F338FB18ULL, 0x9D30C03030AD60F0ULL, 0x2BEF9BEFEFC4C374ULL, 0xE53FFC3F3FDA7EC3ULL, 0x9255495555C7AA1CULL, 0x79A2B2A2A2DB5910ULL, 0x03EA8FEAEAE9C965ULL, 0x0F658965656ACAECULL, 0xB9BAD2BABA036968ULL, 0x652FBC2F2F4A5E93ULL, 0x4EC027C0C08E9DE7ULL, 0xBEDE5FDEDE60A181ULL, 0xE01C701C1CFC386CULL, 0xBBFDD3FDFD46E72EULL, 0x524D294D4D1F9A64ULL, 0xE4927292927639E0ULL, 0x8F75C97575FAEABCULL, 0x3006180606360C1EULL, 0x248A128A8AAE0998ULL, 0xF9B2F2B2B24B7940ULL, 0x63E6BFE6E685D159ULL, 0x700E380E0E7E1C36ULL, 0xF81F7C1F1FE73E63ULL, 0x376295626255C4F7ULL, 0xEED477D4D43AB5A3ULL, 0x29A89AA8A8814D32ULL, 0xC4966296965231F4ULL, 0x9BF9C3F9F962EF3AULL, 0x66C533C5C5A397F6ULL, 0x3525942525104AB1ULL, 0xF259795959ABB220ULL, 0x54842A8484D015AEULL, 0xB772D57272C5E4A7ULL, 0xD539E43939EC72DDULL, 0x5A4C2D4C4C169861ULL, 0xCA5E655E5E94BC3BULL, 0xE778FD78789FF085ULL, 0xDD38E03838E570D8ULL, 0x148C0A8C8C980586ULL, 0xC6D163D1D117BFB2ULL, 0x41A5AEA5A5E4570BULL, 0x43E2AFE2E2A1D94DULL, 0x2F619961614EC2F8ULL, 0xF1B3F6B3B3427B45ULL, 0x15218421213442A5ULL, 0x949C4A9C9C0825D6ULL, 0xF01E781E1EEE3C66ULL, 0x2243114343618652ULL, 0x76C73BC7C7B193FCULL, 0xB3FCD7FCFC4FE52BULL, 0x2004100404240814ULL, 0xB251595151E3A208ULL, 0xBC995E9999252FC7ULL, 0x4F6DA96D6D22DAC4ULL, 0x680D340D0D651A39ULL, 0x83FACFFAFA79E935ULL, 0xB6DF5BDFDF69A384ULL, 0xD77EE57E7EA9FC9BULL, 0x3D249024241948B4ULL, 0xC53BEC3B3BFE76D7ULL, 0x31AB96ABAB9A4B3DULL, 0x3ECE1FCECEF081D1ULL, 0x8811441111992255ULL, 0x0C8F068F8F830389ULL, 0x4A4E254E4E049C6BULL, 0xD1B7E6B7B7667351ULL, 0x0BEB8BEBEBE0CB60ULL, 0xFD3CF03C3CC178CCULL, 0x7C813E8181FD1FBFULL, 0xD4946A94944035FEULL, 0xEBF7FBF7F71CF30CULL, 0xA1B9DEB9B9186F67ULL, 0x98134C13138B265FULL, 0x7D2CB02C2C51589CULL, 0xD6D36BD3D305BBB8ULL, 0x6BE7BBE7E78CD35CULL, 0x576EA56E6E39DCCBULL, 0x6EC437C4C4AA95F3ULL, 0x18030C03031B060FULL, 0x8A56455656DCAC13ULL, 0x1A440D44445E8849ULL, 0xDF7FE17F7FA0FE9EULL, 0x21A99EA9A9884F37ULL, 0x4D2AA82A2A675482ULL, 0xB1BBD6BBBB0A6B6DULL, 0x46C123C1C1879FE2ULL, 0xA253515353F1A602ULL, 0xAEDC57DCDC72A58BULL, 0x580B2C0B0B531627ULL, 0x9C9D4E9D9D0127D3ULL, 0x476CAD6C6C2BD8C1ULL, 0x9531C43131A462F5ULL, 0x8774CD7474F3E8B9ULL, 0xE3F6FFF6F615F109ULL, 0x0A460546464C8C43ULL, 0x09AC8AACACA54526ULL, 0x3C891E8989B50F97ULL, 0xA014501414B42844ULL, 0x5BE1A3E1E1BADF42ULL, 0xB016581616A62C4EULL, 0xCD3AE83A3AF774D2ULL, 0x6F69B9696906D2D0ULL, 0x480924090941122DULL, 0xA770DD7070D7E0ADULL, 0xD9B6E2B6B66F7154ULL, 0xCED067D0D01EBDB7ULL, 0x3BED93EDEDD6C77EULL, 0x2ECC17CCCCE285DBULL, 0x2A42154242688457ULL, 0xB4985A98982C2DC2ULL, 0x49A4AAA4A4ED550EULL, 0x5D28A02828755088ULL, 0xDA5C6D5C5C86B831ULL, 0x93F8C7F8F86BED3FULL, 0x4486228686C211A4ULL,
0x18601818D83078C0ULL, 0x238C23232646AF05ULL, 0xC63FC6C6B891F97EULL, 0xE887E8E8FBCD6F13ULL, 0x87268787CB13A14CULL, 0xB8DAB8B8116D62A9ULL, 0x0104010109020508ULL, 0x4F214F4F0D9E6E42ULL, 0x36D836369B6CEEADULL, 0xA6A2A6A6FF510459ULL, 0xD26FD2D20CB9BDDEULL, 0xF5F3F5F50EF706FBULL, 0x79F9797996F280EFULL, 0x6FA16F6F30DECE5FULL, 0x917E91916D3FEFFCULL, 0x52555252F8A407AAULL, 0x609D606047C0FD27ULL, 0xBCCABCBC35657689ULL, 0x9B569B9B372BCDACULL, 0x8E028E8E8A018C04ULL, 0xA3B6A3A3D25B1571ULL, 0x0C300C0C6C183C60ULL, 0x7BF17B7B84F68AFFULL, 0x35D43535806AE1B5ULL, 0x1D741D1DF53A69E8ULL, 0xE0A7E0E0B3DD4753ULL, 0xD77BD7D721B3ACF6ULL, 0xC22FC2C29C99ED5EULL, 0x2EB82E2E435C966DULL, 0x4B314B4B29967A62ULL, 0xFEDFFEFE5DE121A3ULL, 0x57415757D5AE1682ULL, 0x15541515BD2A41A8ULL, 0x77C17777E8EEB69FULL, 0x37DC3737926EEBA5ULL, 0xE5B3E5E59ED7567BULL, 0x9F469F9F1323D98CULL, 0xF0E7F0F023FD17D3ULL, 0x4A354A4A20947F6AULL, 0xDA4FDADA44A9959EULL, 0x587D5858A2B025FAULL, 0xC903C9C9CF8FCA06ULL, 0x29A429297C528D55ULL, 0x0A280A0A5A142250ULL, 0xB1FEB1B1507F4FE1ULL, 0xA0BAA0A0C95D1A69ULL, 0x6BB16B6B14D6DA7FULL, 0x852E8585D917AB5CULL, 0xBDCEBDBD3C677381ULL, 0x5D695D5D8FBA34D2ULL, 0x1040101090205080ULL, 0xF4F7F4F407F503F3ULL, 0xCB0BCBCBDD8BC016ULL, 0x3EF83E3ED37CC6EDULL, 0x051405052D0A1128ULL, 0x6781676778CEE61FULL, 0xE4B7E4E497D55373ULL, 0x279C2727024EBB25ULL, 0x4119414173825832ULL, 0x8B168B8BA70B9D2CULL, 0xA7A6A7A7F6530151ULL, 0x7DE97D7DB2FA94CFULL, 0x956E95954937FBDCULL, 0xD847D8D856AD9F8EULL, 0xFBCBFBFB70EB308BULL, 0xEE9FEEEECDC17123ULL, 0x7CED7C7CBBF891C7ULL, 0x6685666671CCE317ULL, 0xDD53DDDD7BA78EA6ULL, 0x175C1717AF2E4BB8ULL, 0x47014747458E4602ULL, 0x9E429E9E1A21DC84ULL, 0xCA0FCACAD489C51EULL, 0x2DB42D2D585A9975ULL, 0xBFC6BFBF2E637991ULL, 0x071C07073F0E1B38ULL, 0xAD8EADADAC472301ULL, 0x5A755A5AB0B42FEAULL, 0x83368383EF1BB56CULL, 0x33CC3333B666FF85ULL, 0x639163635CC6F23FULL, 0x0208020212040A10ULL, 0xAA92AAAA93493839ULL, 0x71D97171DEE2A8AFULL, 0xC807C8C8C68DCF0EULL, 0x19641919D1327DC8ULL, 0x493949493B927072ULL, 0xD943D9D95FAF9A86ULL, 0xF2EFF2F231F91DC3ULL, 0xE3ABE3E3A8DB484BULL, 0x5B715B5BB9B62AE2ULL, 0x881A8888BC0D9234ULL, 0x9A529A9A3E29C8A4ULL, 0x269826260B4CBE2DULL, 0x32C83232BF64FA8DULL, 0xB0FAB0B0597D4AE9ULL, 0xE983E9E9F2CF6A1BULL, 0x0F3C0F0F771E3378ULL, 0xD573D5D533B7A6E6ULL, 0x803A8080F41DBA74ULL, 0xBEC2BEBE27617C99ULL, 0xCD13CDCDEB87DE26ULL, 0x34D034348968E4BDULL, 0x483D48483290757AULL, 0xFFDBFFFF54E324ABULL, 0x7AF57A7A8DF48FF7ULL, 0x907A9090643DEAF4ULL, 0x5F615F5F9DBE3EC2ULL, 0x208020203D40A01DULL, 0x68BD68680FD0D567ULL, 0x1A681A1ACA3472D0ULL, 0xAE82AEAEB7412C19ULL, 0xB4EAB4B47D755EC9ULL, 0x544D5454CEA8199AULL, 0x937693937F3BE5ECULL, 0x228822222F44AA0DULL, 0x648D646463C8E907ULL, 0xF1E3F1F12AFF12DBULL, 0x73D17373CCE6A2BFULL, 0x1248121282245A90ULL, 0x401D40407A805D3AULL, 0x0820080848102840ULL, 0xC32BC3C3959BE856ULL, 0xEC97ECECDFC57B33ULL, 0xDB4BDBDB4DAB9096ULL, 0xA1BEA1A1C05F1F61ULL, 0x8D0E8D8D9107831CULL, 0x3DF43D3DC87AC9F5ULL, 0x976697975B33F1CCULL, 0x0000000000000000ULL, 0xCF1BCFCFF983D436ULL, 0x2BAC2B2B6E568745ULL, 0x76C57676E1ECB397ULL, 0x82328282E619B064ULL, 0xD67FD6D628B1A9FEULL, 0x1B6C1B1BC33677D8ULL, 0xB5EEB5B574775BC1ULL, 0xAF86AFAFBE432911ULL, 0x6AB56A6A1DD4DF77ULL, 0x505D5050EAA00DBAULL, 0x45094545578A4C12ULL, 0xF3EBF3F338FB18CBULL, 0x30C03030AD60F09DULL, 0xEF9BEFEFC4C3742BULL, 0x3FFC3F3FDA7EC3E5ULL, 0x55495555C7AA1C92ULL, 0xA2B2A2A2DB591079ULL, 0xEA8FEAEAE9C96503ULL, 0x658965656ACAEC0FULL, 0xBAD2BABA036968B9ULL, 0x2FBC2F2F4A5E9365ULL, 0xC027C0C08E9DE74EULL, 0xDE5FDEDE60A181BEULL, 0x1C701C1CFC386CE0ULL, 0xFDD3FDFD46E72EBBULL, 0x4D294D4D1F9A6452ULL, 0x927292927639E0E4ULL, 0x75C97575FAEABC8FULL, 0x06180606360C1E30ULL, 0x8A128A8AAE099824ULL, 0xB2F2B2B24B7940F9ULL, 0xE6BFE6E685D15963ULL, 0x0E380E0E7E1C3670ULL, 0x1F7C1F1FE73E63F8ULL, 0x6295626255C4F737ULL, 0xD477D4D43AB5A3EEULL, 0xA89AA8A8814D3229ULL, 0x966296965231F4C4ULL, 0xF9C3F9F962EF3A9BULL, 0xC533C5C5A397F666ULL, 0x25942525104AB135ULL, 0x59795959ABB220F2ULL, 0x842A8484D015AE54ULL, 0x72D57272C5E4A7B7ULL, 0x39E43939EC72DDD5ULL, 0x4C2D4C4C1698615AULL, 0x5E655E5E94BC3BCAULL, 0x78FD78789FF085E7ULL, 0x38E03838E570D8DDULL, 0x8C0A8C8C98058614ULL, 0xD163D1D117BFB2C6ULL, 0xA5AEA5A5E4570B41ULL, 0xE2AFE2E2A1D94D43ULL, 0x619961614EC2F82FULL, 0xB3F6B3B3427B45F1ULL, 0x218421213442A515ULL, 0x9C4A9C9C0825D694ULL, 0x1E781E1EEE3C66F0ULL, 0x4311434361865222ULL, 0xC73BC7C7B193FC76ULL, 0xFCD7FCFC4FE52BB3ULL, 0x0410040424081420ULL, 0x51595151E3A208B2ULL, 0x995E9999252FC7BCULL, 0x6DA96D6D22DAC44FULL, 0x0D340D0D651A3968ULL, 0xFACFFAFA79E93583ULL, 0xDF5BDFDF69A384B6ULL, 0x7EE57E7EA9FC9BD7ULL, 0x249024241948B43DULL, 0x3BEC3B3BFE76D7C5ULL, 0xAB96ABAB9A4B3D31ULL, 0xCE1FCECEF081D13EULL, 0x1144111199225588ULL, 0x8F068F8F8303890CULL, 0x4E254E4E049C6B4AULL, 0xB7E6B7B7667351D1ULL, 0xEB8BEBEBE0CB600BULL, 0x3CF03C3CC178CCFDULL, 0x813E8181FD1FBF7CULL, 0x946A94944035FED4ULL, 0xF7FBF7F71CF30CEBULL, 0xB9DEB9B9186F67A1ULL, 0x134C13138B265F98ULL, 0x2CB02C2C51589C7DULL, 0xD36BD3D305BBB8D6ULL, 0xE7BBE7E78CD35C6BULL, 0x6EA56E6E39DCCB57ULL, 0xC437C4C4AA95F36EULL, 0x030C03031B060F18ULL, 0x56455656DCAC138AULL, 0x440D44445E88491AULL, 0x7FE17F7FA0FE9EDFULL, 0xA99EA9A9884F3721ULL, 0x2AA82A2A6754824DULL, 0xBBD6BBBB0A6B6DB1ULL, 0xC123C1C1879FE246ULL, 0x53515353F1A602A2ULL, 0xDC57DCDC72A58BAEULL, 0x0B2C0B0B53162758ULL, 0x9D4E9D9D0127D39CULL, 0x6CAD6C6C2BD8C147ULL, 0x31C43131A462F595ULL, 0x74CD7474F3E8B987ULL, 0xF6FFF6F615F109E3ULL, 0x460546464C8C430AULL, 0xAC8AACACA5452609ULL, 0x891E8989B50F973CULL, 0x14501414B42844A0ULL, 0xE1A3E1E1BADF425BULL, 0x16581616A62C4EB0ULL, 0x3AE83A3AF774D2CDULL, 0x69B9696906D2D06FULL, 0x0924090941122D48ULL, 0x70DD7070D7E0ADA7ULL, 0xB6E2B6B66F7154D9ULL, 0xD067D0D01EBDB7CEULL, 0xED93EDEDD6C77E3BULL, 0xCC17CCCCE285DB2EULL, 0x421542426884572AULL, 0x985A98982C2DC2B4ULL, 0xA4AAA4A4ED550E49ULL, 0x28A028287550885DULL, 0x5C6D5C5C86B831DAULL, 0xF8C7F8F86BED3F93ULL, 0x86228686C211A444ULL,
0x601818D83078C018ULL, 0x8C23232646AF0523ULL, 0x3FC6C6B891F97EC6ULL, 0x87E8E8FBCD6F13E8ULL, 0x268787CB13A14C87ULL, 0xDAB8B8116D62A9B8ULL, 0x0401010902050801ULL, 0x214F4F0D9E6E424FULL, 0xD836369B6CEEAD36ULL, 0xA2A6A6FF510459A6ULL, 0x6FD2D20CB9BDDED2ULL, 0xF3F5F50EF706FBF5ULL, 0xF9797996F280EF79ULL, 0xA16F6F30DECE5F6FULL, 0x7E91916D3FEFFC91ULL, 0x555252F8A407AA52ULL, 0x9D606047C0FD2760ULL, 0xCABCBC35657689BCULL, 0x569B9B372BCDAC9BULL, 0x028E8E8A018C048EULL, 0xB6A3A3D25B1571A3ULL, 0x300C0C6C183C600CULL, 0xF17B7B84F68AFF7BULL, 0xD43535806AE1B535ULL, 0x741D1DF53A69E81DULL, 0xA7E0E0B3DD4753E0ULL, 0x7BD7D721B3ACF6D7ULL, 0x2FC2C29C99ED5EC2ULL, 0xB82E2E435C966D2EULL, 0x314B4B29967A624BULL, 0xDFFEFE5DE121A3FEULL, 0x415757D5AE168257ULL, 0x541515BD2A41A815ULL, 0xC17777E8EEB69F77ULL, 0xDC3737926EEBA537ULL, 0xB3E5E59ED7567BE5ULL, 0x469F9F1323D98C9FULL, 0xE7F0F023FD17D3F0ULL, 0x354A4A20947F6A4AULL, 0x4FDADA44A9959EDAULL, 0x7D5858A2B025FA58ULL, 0x03C9C9CF8FCA06C9ULL, 0xA429297C528D5529ULL, 0x280A0A5A1422500AULL, 0xFEB1B1507F4FE1B1ULL, 0xBAA0A0C95D1A69A0ULL, 0xB16B6B14D6DA7F6BULL, 0x2E8585D917AB5C85ULL, 0xCEBDBD3C677381BDULL, 0x695D5D8FBA34D25DULL, 0x4010109020508010ULL, 0xF7F4F407F503F3F4ULL, 0x0BCBCBDD8BC016CBULL, 0xF83E3ED37CC6ED3EULL, 0x1405052D0A112805ULL, 0x81676778CEE61F67ULL, 0xB7E4E497D55373E4ULL, 0x9C2727024EBB2527ULL, 0x1941417382583241ULL, 0x168B8BA70B9D2C8BULL, 0xA6A7A7F6530151A7ULL, 0xE97D7DB2FA94CF7DULL, 0x6E95954937FBDC95ULL, 0x47D8D856AD9F8ED8ULL, 0xCBFBFB70EB308BFBULL, 0x9FEEEECDC17123EEULL, 0xED7C7CBBF891C77CULL, 0x85666671CCE31766ULL, 0x53DDDD7BA78EA6DDULL, 0x5C1717AF2E4BB817ULL, 0x014747458E460247ULL, 0x429E9E1A21DC849EULL, 0x0FCACAD489C51ECAULL, 0xB42D2D585A99752DULL, 0xC6BFBF2E637991BFULL, 0x1C07073F0E1B3807ULL, 0x8EADADAC472301ADULL, 0x755A5AB0B42FEA5AULL, 0x368383EF1BB56C83ULL, 0xCC3333B666FF8533ULL, 0x9163635CC6F23F63ULL, 0x08020212040A1002ULL, 0x92AAAA93493839AAULL, 0xD97171DEE2A8AF71ULL, 0x07C8C8C68DCF0EC8ULL, 0x641919D1327DC819ULL, 0x3949493B92707249ULL, 0x43D9D95FAF9A86D9ULL, 0xEFF2F231F91DC3F2ULL, 0xABE3E3A8DB484BE3ULL, 0x715B5BB9B62AE25BULL, 0x1A8888BC0D923488ULL, 0x529A9A3E29C8A49AULL, 0x9826260B4CBE2D26ULL, 0xC83232BF64FA8D32ULL, 0xFAB0B0597D4AE9B0ULL, 0x83E9E9F2CF6A1BE9ULL, 0x3C0F0F771E33780FULL, 0x73D5D533B7A6E6D5ULL, 0x3A8080F41DBA7480ULL, 0xC2BEBE27617C99BEULL, 0x13CDCDEB87DE26CDULL, 0xD034348968E4BD34ULL, 0x3D48483290757A48ULL, 0xDBFFFF54E324ABFFULL, 0xF57A7A8DF48FF77AULL, 0x7A9090643DEAF490ULL, 0x615F5F9DBE3EC25FULL, 0x8020203D40A01D20ULL, 0xBD68680FD0D56768ULL, 0x681A1ACA3472D01AULL, 0x82AEAEB7412C19AEULL, 0xEAB4B47D755EC9B4ULL, 0x4D5454CEA8199A54ULL, 0x7693937F3BE5EC93ULL, 0x8822222F44AA0D22ULL, 0x8D646463C8E90764ULL, 0xE3F1F12AFF12DBF1ULL, 0xD17373CCE6A2BF73ULL, 0x48121282245A9012ULL, 0x1D40407A805D3A40ULL, 0x2008084810284008ULL, 0x2BC3C3959BE856C3ULL, 0x97ECECDFC57B33ECULL, 0x4BDBDB4DAB9096DBULL, 0xBEA1A1C05F1F61A1ULL, 0x0E8D8D9107831C8DULL, 0xF43D3DC87AC9F53DULL, 0x6697975B33F1CC97ULL, 0x0000000000000000ULL, 0x1BCFCFF983D436CFULL, 0xAC2B2B6E5687452BULL, 0xC57676E1ECB39776ULL, 0x328282E619B06482ULL, 0x7FD6D628B1A9FED6ULL, 0x6C1B1BC33677D81BULL, 0xEEB5B574775BC1B5ULL, 0x86AFAFBE432911AFULL, 0xB56A6A1DD4DF776AULL, 0x5D5050EAA00DBA50ULL, 0x094545578A4C1245ULL, 0xEBF3F338FB18CBF3ULL, 0xC03030AD60F09D30ULL, 0x9BEFEFC4C3742BEFULL, 0xFC3F3FDA7EC3E53FULL, 0x495555C7AA1C9255ULL, 0xB2A2A2DB591079A2ULL, 0x8FEAEAE9C96503EAULL, 0x8965656ACAEC0F65ULL, 0xD2BABA036968B9BAULL, 0xBC2F2F4A5E93652FULL, 0x27C0C08E9DE74EC0ULL, 0x5FDEDE60A181BEDEULL, 0x701C1CFC386CE01CULL, 0xD3FDFD46E72EBBFDULL, 0x294D4D1F9A64524DULL, 0x7292927639E0E492ULL, 0xC97575FAEABC8F75ULL, 0x180606360C1E3006ULL, 0x128A8AAE0998248AULL, 0xF2B2B24B7940F9B2ULL, 0xBFE6E685D15963E6ULL, 0x380E0E7E1C36700EULL, 0x7C1F1FE73E63F81FULL, 0x95626255C4F73762ULL, 0x77D4D43AB5A3EED4ULL, 0x9AA8A8814D3229A8ULL, 0x6296965231F4C496ULL, 0xC3F9F962EF3A9BF9ULL, 0x33C5C5A397F666C5ULL, 0x942525104AB13525ULL, 0x795959ABB220F259ULL, 0x2A8484D015AE5484ULL, 0xD57272C5E4A7B772ULL, 0xE43939EC72DDD539ULL, 0x2D4C4C1698615A4CULL, 0x655E5E94BC3BCA5EULL, 0xFD78789FF085E778ULL, 0xE03838E570D8DD38ULL, 0x0A8C8C980586148CULL, 0x63D1D117BFB2C6D1ULL, 0xAEA5A5E4570B41A5ULL, 0xAFE2E2A1D94D43E2ULL, 0x9961614EC2F82F61ULL, 0xF6B3B3427B45F1B3ULL, 0x8421213442A51521ULL, 0x4A9C9C0825D6949CULL, 0x781E1EEE3C66F01EULL, 0x1143436186522243ULL, 0x3BC7C7B193FC76C7ULL, 0xD7FCFC4FE52BB3FCULL, 0x1004042408142004ULL, 0x595151E3A208B251ULL, 0x5E9999252FC7BC99ULL, 0xA96D6D22DAC44F6DULL, 0x340D0D651A39680DULL, 0xCFFAFA79E93583FAULL, 0x5BDFDF69A384B6DFULL, 0xE57E7EA9FC9BD77EULL, 0x9024241948B43D24ULL, 0xEC3B3BFE76D7C53BULL, 0x96ABAB9A4B3D31ABULL, 0x1FCECEF081D13ECEULL, 0x4411119922558811ULL, 0x068F8F8303890C8FULL, 0x254E4E049C6B4A4EULL, 0xE6B7B7667351D1B7ULL, 0x8BEBEBE0CB600BEBULL, 0xF03C3CC178CCFD3CULL, 0x3E8181FD1FBF7C81ULL, 0x6A94944035FED494ULL, 0xFBF7F71CF30CEBF7ULL, 0xDEB9B9186F67A1B9ULL, 0x4C13138B265F9813ULL, 0xB02C2C51589C7D2CULL, 0x6BD3D305BBB8D6D3ULL, 0xBBE7E78CD35C6BE7ULL, 0xA56E6E39DCCB576EULL, 0x37C4C4AA95F36EC4ULL, 0x0C03031B060F1803ULL, 0x455656DCAC138A56ULL, 0x0D44445E88491A44ULL, 0xE17F7FA0FE9EDF7FULL, 0x9EA9A9884F3721A9ULL, 0xA82A2A6754824D2AULL, 0xD6BBBB0A6B6DB1BBULL, 0x23C1C1879FE246C1ULL, 0x515353F1A602A253ULL, 0x57DCDC72A58BAEDCULL, 0x2C0B0B531627580BULL, 0x4E9D9D0127D39C9DULL, 0xAD6C6C2BD8C1476CULL, 0xC43131A462F59531ULL, 0xCD7474F3E8B98774ULL, 0xFFF6F615F109E3F6ULL, 0x0546464C8C430A46ULL, 0x8AACACA5452609ACULL, 0x1E8989B50F973C89ULL, 0x501414B42844A014ULL, 0xA3E1E1BADF425BE1ULL, 0x581616A62C4EB016ULL, 0xE83A3AF774D2CD3AULL, 0xB9696906D2D06F69ULL, 0x24090941122D4809ULL, 0xDD7070D7E0ADA770ULL, 0xE2B6B66F7154D9B6ULL, 0x67D0D01EBDB7CED0ULL, 0x93EDEDD6C77E3BEDULL, 0x17CCCCE285DB2ECCULL, 0x1542426884572A42ULL, 0x5A98982C2DC2B498ULL, 0xAAA4A4ED550E49A4ULL, 0xA028287550885D28ULL, 0x6D5C5C86B831DA5CULL, 0xC7F8F86BED3F93F8ULL, 0x228686C211A44486ULL,
0x1818D83078C01860ULL, 0x23232646AF05238CULL, 0xC6C6B891F97EC63FULL, 0xE8E8FBCD6F13E887ULL, 0x8787CB13A14C8726ULL, 0xB8B8116D62A9B8DAULL, 0x0101090205080104ULL, 0x4F4F0D9E6E424F21ULL, 0x36369B6CEEAD36D8ULL, 0xA6A6FF510459A6A2ULL, 0xD2D20CB9BDDED26FULL, 0xF5F50EF706FBF5F3ULL, 0x797996F280EF79F9ULL, 0x6F6F30DECE5F6FA1ULL, 0x91916D3FEFFC917EULL, 0x5252F8A407AA5255ULL, 0x606047C0FD27609DULL, 0xBCBC35657689BCCAULL, 0x9B9B372BCDAC9B56ULL, 0x8E8E8A018C048E02ULL, 0xA3A3D25B1571A3B6ULL, 0x0C0C6C183C600C30ULL, 0x7B7B84F68AFF7BF1ULL, 0x3535806AE1B535D4ULL, 0x1D1DF53A69E81D74ULL, 0xE0E0B3DD4753E0A7ULL, 0xD7D721B3ACF6D77BULL, 0xC2C29C99ED5EC22FULL, 0x2E2E435C966D2EB8ULL, 0x4B4B29967A624B31ULL, 0xFEFE5DE121A3FEDFULL, 0x5757D5AE16825741ULL, 0x1515BD2A41A81554ULL, 0x7777E8EEB69F77C1ULL, 0x3737926EEBA537DCULL, 0xE5E59ED7567BE5B3ULL, 0x9F9F1323D98C9F46ULL, 0xF0F023FD17D3F0E7ULL, 0x4A4A20947F6A4A35ULL, 0xDADA44A9959EDA4FULL, 0x5858A2B025FA587DULL, 0xC9C9CF8FCA06C903ULL, 0x29297C528D5529A4ULL, 0x0A0A5A1422500A28ULL, 0xB1B1507F4FE1B1FEULL, 0xA0A0C95D1A69A0BAULL, 0x6B6B14D6DA7F6BB1ULL, 0x8585D917AB5C852EULL, 0xBDBD3C677381BDCEULL, 0x5D5D8FBA34D25D69ULL, 0x1010902050801040ULL, 0xF4F407F503F3F4F7ULL, 0xCBCBDD8BC016CB0BULL, 0x3E3ED37CC6ED3EF8ULL, 0x05052D0A11280514ULL, 0x676778CEE61F6781ULL, 0xE4E497D55373E4B7ULL, 0x2727024EBB25279CULL, 0x4141738258324119ULL, 0x8B8BA70B9D2C8B16ULL, 0xA7A7F6530151A7A6ULL, 0x7D7DB2FA94CF7DE9ULL, 0x95954937FBDC956EULL, 0xD8D856AD9F8ED847ULL, 0xFBFB70EB308BFBCBULL, 0xEEEECDC17123EE9FULL, 0x7C7CBBF891C77CEDULL, 0x666671CCE3176685ULL, 0xDDDD7BA78EA6DD53ULL, 0x1717AF2E4BB8175CULL, 0x4747458E46024701ULL, 0x9E9E1A21DC849E42ULL, 0xCACAD489C51ECA0FULL, 0x2D2D585A99752DB4ULL, 0xBFBF2E637991BFC6ULL, 0x07073F0E1B38071CULL, 0xADADAC472301AD8EULL, 0x5A5AB0B42FEA5A75ULL, 0x8383EF1BB56C8336ULL, 0x3333B666FF8533CCULL, 0x63635CC6F23F6391ULL, 0x020212040A100208ULL, 0xAAAA93493839AA92ULL, 0x7171DEE2A8AF71D9ULL, 0xC8C8C68DCF0EC807ULL, 0x1919D1327DC81964ULL, 0x49493B9270724939ULL, 0xD9D95FAF9A86D943ULL, 0xF2F231F91DC3F2EFULL, 0xE3E3A8DB484BE3ABULL, 0x5B5BB9B62AE25B71ULL, 0x8888BC0D9234881AULL, 0x9A9A3E29C8A49A52ULL, 0x26260B4CBE2D2698ULL, 0x3232BF64FA8D32C8ULL, 0xB0B0597D4AE9B0FAULL, 0xE9E9F2CF6A1BE983ULL, 0x0F0F771E33780F3CULL, 0xD5D533B7A6E6D573ULL, 0x8080F41DBA74803AULL, 0xBEBE27617C99BEC2ULL, 0xCDCDEB87DE26CD13ULL, 0x34348968E4BD34D0ULL, 0x48483290757A483DULL, 0xFFFF54E324ABFFDBULL, 0x7A7A8DF48FF77AF5ULL, 0x9090643DEAF4907AULL, 0x5F5F9DBE3EC25F61ULL, 0x20203D40A01D2080ULL, 0x68680FD0D56768BDULL, 0x1A1ACA3472D01A68ULL, 0xAEAEB7412C19AE82ULL, 0xB4B47D755EC9B4EAULL, 0x5454CEA8199A544DULL, 0x93937F3BE5EC9376ULL, 0x22222F44AA0D2288ULL, 0x646463C8E907648DULL, 0xF1F12AFF12DBF1E3ULL, 0x7373CCE6A2BF73D1ULL, 0x121282245A901248ULL, 0x40407A805D3A401DULL, 0x0808481028400820ULL, 0xC3C3959BE856C32BULL, 0xECECDFC57B33EC97ULL, 0xDBDB4DAB9096DB4BULL, 0xA1A1C05F1F61A1BEULL, 0x8D8D9107831C8D0EULL, 0x3D3DC87AC9F53DF4ULL, 0x97975B33F1CC9766ULL, 0x0000000000000000ULL, 0xCFCFF983D436CF1BULL, 0x2B2B6E5687452BACULL, 0x7676E1ECB39776C5ULL, 0x8282E619B0648232ULL, 0xD6D628B1A9FED67FULL, 0x1B1BC33677D81B6CULL, 0xB5B574775BC1B5EEULL, 0xAFAFBE432911AF86ULL, 0x6A6A1DD4DF776AB5ULL, 0x5050EAA00DBA505DULL, 0x4545578A4C124509ULL, 0xF3F338FB18CBF3EBULL, 0x3030AD60F09D30C0ULL, 0xEFEFC4C3742BEF9BULL, 0x3F3FDA7EC3E53FFCULL, 0x5555C7AA1C925549ULL, 0xA2A2DB591079A2B2ULL, 0xEAEAE9C96503EA8FULL, 0x65656ACAEC0F6589ULL, 0xBABA036968B9BAD2ULL, 0x2F2F4A5E93652FBCULL, 0xC0C08E9DE74EC027ULL, 0xDEDE60A181BEDE5FULL, 0x1C1CFC386CE01C70ULL, 0xFDFD46E72EBBFDD3ULL, 0x4D4D1F9A64524D29ULL, 0x92927639E0E49272ULL, 0x7575FAEABC8F75C9ULL, 0x0606360C1E300618ULL, 0x8A8AAE0998248A12ULL, 0xB2B24B7940F9B2F2ULL, 0xE6E685D15963E6BFULL, 0x0E0E7E1C36700E38ULL, 0x1F1FE73E63F81F7CULL, 0x626255C4F7376295ULL, 0xD4D43AB5A3EED477ULL, 0xA8A8814D3229A89AULL, 0x96965231F4C49662ULL, 0xF9F962EF3A9BF9C3ULL, 0xC5C5A397F666C533ULL, 0x2525104AB1352594ULL, 0x5959ABB220F25979ULL, 0x8484D015AE54842AULL, 0x7272C5E4A7B772D5ULL, 0x3939EC72DDD539E4ULL, 0x4C4C1698615A4C2DULL, 0x5E5E94BC3BCA5E65ULL, 0x78789FF085E778FDULL, 0x3838E570D8DD38E0ULL, 0x8C8C980586148C0AULL, 0xD1D117BFB2C6D163ULL, 0xA5A5E4570B41A5AEULL, 0xE2E2A1D94D43E2AFULL, 0x61614EC2F82F6199ULL, 0xB3B3427B45F1B3F6ULL, 0x21213442A5152184ULL, 0x9C9C0825D6949C4AULL, 0x1E1EEE3C66F01E78ULL, 0x4343618652224311ULL, 0xC7C7B193FC76C73BULL, 0xFCFC4FE52BB3FCD7ULL, 0x0404240814200410ULL, 0x5151E3A208B25159ULL, 0x9999252FC7BC995EULL, 0x6D6D22DAC44F6DA9ULL, 0x0D0D651A39680D34ULL, 0xFAFA79E93583FACFULL, 0xDFDF69A384B6DF5BULL, 0x7E7EA9FC9BD77EE5ULL, 0x24241948B43D2490ULL, 0x3B3BFE76D7C53BECULL, 0xABAB9A4B3D31AB96ULL, 0xCECEF081D13ECE1FULL, 0x1111992255881144ULL, 0x8F8F8303890C8F06ULL, 0x4E4E049C6B4A4E25ULL, 0xB7B7667351D1B7E6ULL, 0xEBEBE0CB600BEB8BULL, 0x3C3CC178CCFD3CF0ULL, 0x8181FD1FBF7C813EULL, 0x94944035FED4946AULL, 0xF7F71CF30CEBF7FBULL, 0xB9B9186F67A1B9DEULL, 0x13138B265F98134CULL, 0x2C2C51589C7D2CB0ULL, 0xD3D305BBB8D6D36BULL, 0xE7E78CD35C6BE7BBULL, 0x6E6E39DCCB576EA5ULL, 0xC4C4AA95F36EC437ULL, 0x03031B060F18030CULL, 0x5656DCAC138A5645ULL, 0x44445E88491A440DULL, 0x7F7FA0FE9EDF7FE1ULL, 0xA9A9884F3721A99EULL, 0x2A2A6754824D2AA8ULL, 0xBBBB0A6B6DB1BBD6ULL, 0xC1C1879FE246C123ULL, 0x5353F1A602A25351ULL, 0xDCDC72A58BAEDC57ULL, 0x0B0B531627580B2CULL, 0x9D9D0127D39C9D4EULL, 0x6C6C2BD8C1476CADULL, 0x3131A462F59531C4ULL, 0x7474F3E8B98774CDULL, 0xF6F615F109E3F6FFULL, 0x46464C8C430A4605ULL, 0xACACA5452609AC8AULL, 0x8989B50F973C891EULL, 0x1414B42844A01450ULL, 0xE1E1BADF425BE1A3ULL, 0x1616A62C4EB01658ULL, 0x3A3AF774D2CD3AE8ULL, 0x696906D2D06F69B9ULL, 0x090941122D480924ULL, 0x7070D7E0ADA770DDULL, 0xB6B66F7154D9B6E2ULL, 0xD0D01EBDB7CED067ULL, 0xEDEDD6C77E3BED93ULL, 0xCCCCE285DB2ECC17ULL, 0x42426884572A4215ULL, 0x98982C2DC2B4985AULL, 0xA4A4ED550E49A4AAULL, 0x28287550885D28A0ULL, 0x5C5C86B831DA5C6DULL, 0xF8F86BED3F93F8C7ULL, 0x8686C211A4448622ULL,
0x18D83078C0186018ULL, 0x232646AF05238C23ULL, 0xC6B891F97EC63FC6ULL, 0xE8FBCD6F13E887E8ULL, 0x87CB13A14C872687ULL, 0xB8116D62A9B8DAB8ULL, 0x0109020508010401ULL, 0x4F0D9E6E424F214FULL, 0x369B6CEEAD36D836ULL, 0xA6FF510459A6A2A6ULL, 0xD20CB9BDDED26FD2ULL, 0xF50EF706FBF5F3F5ULL, 0x7996F280EF79F979ULL, 0x6F30DECE5F6FA16FULL, 0x916D3FEFFC917E91ULL, 0x52F8A407AA525552ULL, 0x6047C0FD27609D60ULL, 0xBC35657689BCCABCULL, 0x9B372BCDAC9B569BULL, 0x8E8A018C048E028EULL, 0xA3D25B1571A3B6A3ULL, 0x0C6C183C600C300CULL, 0x7B84F68AFF7BF17BULL, 0x35806AE1B535D435ULL, 0x1DF53A69E81D741DULL, 0xE0B3DD4753E0A7E0ULL, 0xD721B3ACF6D77BD7ULL, 0xC29C99ED5EC22FC2ULL, 0x2E435C966D2EB82EULL, 0x4B29967A624B314BULL, 0xFE5DE121A3FEDFFEULL, 0x57D5AE1682574157ULL, 0x15BD2A41A8155415ULL, 0x77E8EEB69F77C177ULL, 0x37926EEBA537DC37ULL, 0xE59ED7567BE5B3E5ULL, 0x9F1323D98C9F469FULL, 0xF023FD17D3F0E7F0ULL, 0x4A20947F6A4A354AULL, 0xDA44A9959EDA4FDAULL, 0x58A2B025FA587D58ULL, 0xC9CF8FCA06C903C9ULL, 0x297C528D5529A429ULL, 0x0A5A1422500A280AULL, 0xB1507F4FE1B1FEB1ULL, 0xA0C95D1A69A0BAA0ULL, 0x6B14D6DA7F6BB16BULL, 0x85D917AB5C852E85ULL, 0xBD3C677381BDCEBDULL, 0x5D8FBA34D25D695DULL, 0x1090205080104010ULL, 0xF407F503F3F4F7F4ULL, 0xCBDD8BC016CB0BCBULL, 0x3ED37CC6ED3EF83EULL, 0x052D0A1128051405ULL, 0x6778CEE61F678167ULL, 0xE497D55373E4B7E4ULL, 0x27024EBB25279C27ULL, 0x4173825832411941ULL, 0x8BA70B9D2C8B168BULL, 0xA7F6530151A7A6A7ULL, 0x7DB2FA94CF7DE97DULL, 0x954937FBDC956E95ULL, 0xD856AD9F8ED847D8ULL, 0xFB70EB308BFBCBFBULL, 0xEECDC17123EE9FEEULL, 0x7CBBF891C77CED7CULL, 0x6671CCE317668566ULL, 0xDD7BA78EA6DD53DDULL, 0x17AF2E4BB8175C17ULL, 0x47458E4602470147ULL, 0x9E1A21DC849E429EULL, 0xCAD489C51ECA0FCAULL, 0x2D585A99752DB42DULL, 0xBF2E637991BFC6BFULL, 0x073F0E1B38071C07ULL, 0xADAC472301AD8EADULL, 0x5AB0B42FEA5A755AULL, 0x83EF1BB56C833683ULL, 0x33B666FF8533CC33ULL, 0x635CC6F23F639163ULL, 0x0212040A10020802ULL, 0xAA93493839AA92AAULL, 0x71DEE2A8AF71D971ULL, 0xC8C68DCF0EC807C8ULL, 0x19D1327DC8196419ULL, 0x493B927072493949ULL, 0xD95FAF9A86D943D9ULL, 0xF231F91DC3F2EFF2ULL, 0xE3A8DB484BE3ABE3ULL, 0x5BB9B62AE25B715BULL, 0x88BC0D9234881A88ULL, 0x9A3E29C8A49A529AULL, 0x260B4CBE2D269826ULL, 0x32BF64FA8D32C832ULL, 0xB0597D4AE9B0FAB0ULL, 0xE9F2CF6A1BE983E9ULL, 0x0F771E33780F3C0FULL, 0xD533B7A6E6D573D5ULL, 0x80F41DBA74803A80ULL, 0xBE27617C99BEC2BEULL, 0xCDEB87DE26CD13CDULL, 0x348968E4BD34D034ULL, 0x483290757A483D48ULL, 0xFF54E324ABFFDBFFULL, 0x7A8DF48FF77AF57AULL, 0x90643DEAF4907A90ULL, 0x5F9DBE3EC25F615FULL, 0x203D40A01D208020ULL, 0x680FD0D56768BD68ULL, 0x1ACA3472D01A681AULL, 0xAEB7412C19AE82AEULL, 0xB47D755EC9B4EAB4ULL, 0x54CEA8199A544D54ULL, 0x937F3BE5EC937693ULL, 0x222F44AA0D228822ULL, 0x6463C8E907648D64ULL, 0xF12AFF12DBF1E3F1ULL, 0x73CCE6A2BF73D173ULL, 0x1282245A90124812ULL, 0x407A805D3A401D40ULL, 0x0848102840082008ULL, 0xC3959BE856C32BC3ULL, 0xECDFC57B33EC97ECULL, 0xDB4DAB9096DB4BDBULL, 0xA1C05F1F61A1BEA1ULL, 0x8D9107831C8D0E8DULL, 0x3DC87AC9F53DF43DULL, 0x975B33F1CC976697ULL, 0x0000000000000000ULL, 0xCFF983D436CF1BCFULL, 0x2B6E5687452BAC2BULL, 0x76E1ECB39776C576ULL, 0x82E619B064823282ULL, 0xD628B1A9FED67FD6ULL, 0x1BC33677D81B6C1BULL, 0xB574775BC1B5EEB5ULL, 0xAFBE432911AF86AFULL, 0x6A1DD4DF776AB56AULL, 0x50EAA00DBA505D50ULL, 0x45578A4C12450945ULL, 0xF338FB18CBF3EBF3ULL, 0x30AD60F09D30C030ULL, 0xEFC4C3742BEF9BEFULL, 0x3FDA7EC3E53FFC3FULL, 0x55C7AA1C92554955ULL, 0xA2DB591079A2B2A2ULL, 0xEAE9C96503EA8FEAULL, 0x656ACAEC0F658965ULL, 0xBA036968B9BAD2BAULL, 0x2F4A5E93652FBC2FULL, 0xC08E9DE74EC027C0ULL, 0xDE60A181BEDE5FDEULL, 0x1CFC386CE01C701CULL, 0xFD46E72EBBFDD3FDULL, 0x4D1F9A64524D294DULL, 0x927639E0E4927292ULL, 0x75FAEABC8F75C975ULL, 0x06360C1E30061806ULL, 0x8AAE0998248A128AULL, 0xB24B7940F9B2F2B2ULL, 0xE685D15963E6BFE6ULL, 0x0E7E1C36700E380EULL, 0x1FE73E63F81F7C1FULL, 0x6255C4F737629562ULL, 0xD43AB5A3EED477D4ULL, 0xA8814D3229A89AA8ULL, 0x965231F4C4966296ULL, 0xF962EF3A9BF9C3F9ULL, 0xC5A397F666C533C5ULL, 0x25104AB135259425ULL, 0x59ABB220F2597959ULL, 0x84D015AE54842A84ULL, 0x72C5E4A7B772D572ULL, 0x39EC72DDD539E439ULL, 0x4C1698615A4C2D4CULL, 0x5E94BC3BCA5E655EULL, 0x789FF085E778FD78ULL, 0x38E570D8DD38E038ULL, 0x8C980586148C0A8CULL, 0xD117BFB2C6D163D1ULL, 0xA5E4570B41A5AEA5ULL, 0xE2A1D94D43E2AFE2ULL, 0x614EC2F82F619961ULL, 0xB3427B45F1B3F6B3ULL, 0x213442A515218421ULL, 0x9C0825D6949C4A9CULL, 0x1EEE3C66F01E781EULL, 0x4361865222431143ULL, 0xC7B193FC76C73BC7ULL, 0xFC4FE52BB3FCD7FCULL, 0x0424081420041004ULL, 0x51E3A208B2515951ULL, 0x99252FC7BC995E99ULL, 0x6D22DAC44F6DA96DULL, 0x0D651A39680D340DULL, 0xFA79E93583FACFFAULL, 0xDF69A384B6DF5BDFULL, 0x7EA9FC9BD77EE57EULL, 0x241948B43D249024ULL, 0x3BFE76D7C53BEC3BULL, 0xAB9A4B3D31AB96ABULL, 0xCEF081D13ECE1FCEULL, 0x1199225588114411ULL, 0x8F8303890C8F068FULL, 0x4E049C6B4A4E254EULL, 0xB7667351D1B7E6B7ULL, 0xEBE0CB600BEB8BEBULL, 0x3CC178CCFD3CF03CULL, 0x81FD1FBF7C813E81ULL, 0x944035FED4946A94ULL, 0xF71CF30CEBF7FBF7ULL, 0xB9186F67A1B9DEB9ULL, 0x138B265F98134C13ULL, 0x2C51589C7D2CB02CULL, 0xD305BBB8D6D36BD3ULL, 0xE78CD35C6BE7BBE7ULL, 0x6E39DCCB576EA56EULL, 0xC4AA95F36EC437C4ULL, 0x031B060F18030C03ULL, 0x56DCAC138A564556ULL, 0x445E88491A440D44ULL, 0x7FA0FE9EDF7FE17FULL, 0xA9884F3721A99EA9ULL, 0x2A6754824D2AA82AULL, 0xBB0A6B6DB1BBD6BBULL, 0xC1879FE246C123C1ULL, 0x53F1A602A2535153ULL, 0xDC72A58BAEDC57DCULL, 0x0B531627580B2C0BULL, 0x9D0127D39C9D4E9DULL, 0x6C2BD8C1476CAD6CULL, 0x31A462F59531C431ULL, 0x74F3E8B98774CD74ULL, 0xF615F109E3F6FFF6ULL, 0x464C8C430A460546ULL, 0xACA5452609AC8AACULL, 0x89B50F973C891E89ULL, 0x14B42844A0145014ULL, 0xE1BADF425BE1A3E1ULL, 0x16A62C4EB0165816ULL, 0x3AF774D2CD3AE83AULL, 0x6906D2D06F69B969ULL, 0x0941122D48092409ULL, 0x70D7E0ADA770DD70ULL, 0xB66F7154D9B6E2B6ULL, 0xD01EBDB7CED067D0ULL, 0xEDD6C77E3BED93EDULL, 0xCCE285DB2ECC17CCULL, 0x426884572A421542ULL, 0x982C2DC2B4985A98ULL, 0xA4ED550E49A4AAA4ULL, 0x287550885D28A028ULL, 0x5C86B831DA5C6D5CULL, 0xF86BED3F93F8C7F8ULL, 0x86C211A444862286ULL,
};
static UINT8 SBox[256] =
{
0x18, 0x23, 0xC6, 0xE8, 0x87, 0xB8, 0x01, 0x4F, 0x36, 0xA6, 0xD2, 0xF5, 0x79, 0x6F, 0x91, 0x52,
0x60, 0xBC, 0x9B, 0x8E, 0xA3, 0x0C, 0x7B, 0x35, 0x1D, 0xE0, 0xD7, 0xC2, 0x2E, 0x4B, 0xFE, 0x57,
0x15, 0x77, 0x37, 0xE5, 0x9F, 0xF0, 0x4A, 0xDA, 0x58, 0xC9, 0x29, 0x0A, 0xB1, 0xA0, 0x6B, 0x85,
0xBD, 0x5D, 0x10, 0xF4, 0xCB, 0x3E, 0x05, 0x67, 0xE4, 0x27, 0x41, 0x8B, 0xA7, 0x7D, 0x95, 0xD8,
0xFB, 0xEE, 0x7C, 0x66, 0xDD, 0x17, 0x47, 0x9E, 0xCA, 0x2D, 0xBF, 0x07, 0xAD, 0x5A, 0x83, 0x33,
0x63, 0x02, 0xAA, 0x71, 0xC8, 0x19, 0x49, 0xD9, 0xF2, 0xE3, 0x5B, 0x88, 0x9A, 0x26, 0x32, 0xB0,
0xE9, 0x0F, 0xD5, 0x80, 0xBE, 0xCD, 0x34, 0x48, 0xFF, 0x7A, 0x90, 0x5F, 0x20, 0x68, 0x1A, 0xAE,
0xB4, 0x54, 0x93, 0x22, 0x64, 0xF1, 0x73, 0x12, 0x40, 0x08, 0xC3, 0xEC, 0xDB, 0xA1, 0x8D, 0x3D,
0x97, 0x00, 0xCF, 0x2B, 0x76, 0x82, 0xD6, 0x1B, 0xB5, 0xAF, 0x6A, 0x50, 0x45, 0xF3, 0x30, 0xEF,
0x3F, 0x55, 0xA2, 0xEA, 0x65, 0xBA, 0x2F, 0xC0, 0xDE, 0x1C, 0xFD, 0x4D, 0x92, 0x75, 0x06, 0x8A,
0xB2, 0xE6, 0x0E, 0x1F, 0x62, 0xD4, 0xA8, 0x96, 0xF9, 0xC5, 0x25, 0x59, 0x84, 0x72, 0x39, 0x4C,
0x5E, 0x78, 0x38, 0x8C, 0xD1, 0xA5, 0xE2, 0x61, 0xB3, 0x21, 0x9C, 0x1E, 0x43, 0xC7, 0xFC, 0x04,
0x51, 0x99, 0x6D, 0x0D, 0xFA, 0xDF, 0x7E, 0x24, 0x3B, 0xAB, 0xCE, 0x11, 0x8F, 0x4E, 0xB7, 0xEB,
0x3C, 0x81, 0x94, 0xF7, 0xB9, 0x13, 0x2C, 0xD3, 0xE7, 0x6E, 0xC4, 0x03, 0x56, 0x44, 0x7F, 0xA9,
0x2A, 0xBB, 0xC1, 0x53, 0xDC, 0x0B, 0x9D, 0x6C, 0x31, 0x74, 0xF6, 0x46, 0xAC, 0x89, 0x14, 0xE1,
0x16, 0x3A, 0x69, 0x09, 0x70, 0xB6, 0xD0, 0xED, 0xCC, 0x42, 0x98, 0xA4, 0x28, 0x5C, 0xF8, 0x86,
};
static const UINT64 arrRoundConstants[10] =
{
0x4F01B887E8C62318ULL,
0x52916F79F5D2A636ULL,
0x357B0CA38E9BBC60ULL,
0x57FE4B2EC2D7E01DULL,
0xDA4AF09FE5377715ULL,
0x856BA0B10A29C958ULL,
0x67053ECBF4105DBDULL,
0xD8957DA78B4127E4ULL,
0x9E4717DD667CEEFBULL,
0x33835AAD07BF2DCAULL,
};
static UINT8 SBoxCalc(UINT8 u)
{
return SBox[u];
}
static void WhirlpoolRound_Table(void *pInOut)
{
const UINT8 *pIn8 = (const UINT8 *)pInOut;
UINT64 blockResult64[8] = {0};
// by source row
for(unsigned i = 0; i < 8; i++)
{
for(unsigned k = 0; k < 8; k++)
{
UINT8 bv = pIn8[(i<<3) ^ k];
blockResult64[7&(i+k)] ^= arrPrecalc[k*256 + bv];
}
}
memcpy(pInOut, blockResult64, 64);
}
static void WhirlpoolIteration_Table(UINT8 state[64], const UINT8 block[64])
{
UINT8 tempState[64];
UINT8 tempBlock[64];
memcpy(tempState, state, 64);
memcpy(tempBlock, block, 64);
for(unsigned i = 0; i < 64; i++)
{
state[i] = tempBlock[i] = tempBlock[i] ^ tempState[i];
}
for(unsigned i = 0; i < 10; i++)
{
WhirlpoolRound_Table(tempState);
WhirlpoolRound_Table(tempBlock);
for(unsigned j = 0; j < 8; j++)
tempState[j] ^= SBoxCalc((i << 3) | j);
for(unsigned j = 0; j < 64; j++)
tempBlock[j] ^= tempState[j];
}
for(unsigned i = 0; i < 64; i++)
state[i] ^= tempBlock[i];
}
void vanilla0_Precompute(
unsigned char *pDst, unsigned sizeDst,
const unsigned char *pSrc, unsigned sizeSrc)
{
const UINT32 *pIn32 = (const UINT32 *)pSrc;
UINT8 hashA[64];
memset(hashA, 0, 64);
UINT32 blockA32[16];
UINT8 blockt[64];
memcpy(blockt, pIn32, 64);
WhirlpoolIteration_Table(hashA, blockt);
blockA32[ 0] = pIn32[16 + 0];
blockA32[ 1] = pIn32[16 + 1];
blockA32[ 2] = pIn32[16 + 2];
blockA32[ 3] = 0; // nonceA
blockA32[ 4] = 0x00000080;
blockA32[ 5] = 0;
blockA32[ 6] = 0;
blockA32[ 7] = 0;
blockA32[ 8] = 0;
blockA32[ 9] = 0;
blockA32[10] = 0;
blockA32[11] = 0;
blockA32[12] = 0;
blockA32[13] = 0;
blockA32[14] = 0;
blockA32[15] = 0x80020000;
//blockA32[ 3] = nonceA;
UINT64 tempBlock64[8];
memcpy(tempBlock64, blockA32, 64);
UINT64 tempStatesPre64[10][8];
memcpy(&tempStatesPre64[0][0], hashA, 64);
// drop hashA
for(unsigned i = 0; i < 8; i++)
{
tempBlock64[i] ^= tempStatesPre64[0][i];
}
for(unsigned i = 0; i < 10; i++)
{
WhirlpoolRound_Table(&tempStatesPre64[i][0]);
*(UINT64*)&tempStatesPre64[i][0] ^= arrRoundConstants[i];
if(i < 9)
memcpy(&tempStatesPre64[i+1][0], &tempStatesPre64[i][0], 64);
}
UINT32 preHWA32 = 0;
preHWA32 ^= *(UINT32*) &(((UINT8*)&tempBlock64[0])[3*8 + 4]);
preHWA32 ^= *(UINT32*) &(((UINT8*)&tempBlock64[0])[5*8 + 4]);
preHWA32 ^= *(UINT32*) &(((UINT8*)&tempStatesPre64[9][0])[3*8 + 4]);
preHWA32 ^= *(UINT32*) &(((UINT8*)&tempStatesPre64[9][0])[5*8 + 4]);
// drop tempStatesPre64[9]
UINT32 nonceXor = tempBlock64[1] >> 32; // XXXXXX00
tempBlock64[1] &= 0x00000000FFFFFFFFULL;
tempBlock64[1] ^= 0x8181818100000000ULL;
WhirlpoolRound_Table(tempBlock64);
for(unsigned j = 0; j < 8; j++)
{
tempBlock64[j] ^= tempStatesPre64[0][j];
}
UINT64 pre5 = tempBlock64[5];
UINT64 pre6 = tempBlock64[6];
UINT64 pre7 = tempBlock64[7];
UINT64 pre0 = tempBlock64[0];
tempBlock64[5] = 0x8181818181818181ULL;
tempBlock64[6] = 0x8181818181818181ULL;
tempBlock64[7] = 0x8181818181818181ULL;
tempBlock64[0] = 0x8181818181818181ULL;
WhirlpoolRound_Table(tempBlock64);
for(unsigned j = 0; j < 8; j++)
{
tempBlock64[j] ^= tempStatesPre64[1][j];
}
#if 1
ASSERT(616 == sizeDst);
GLOBAL UINT64 *arrMidstate = (UINT64 *)pDst;
for(unsigned i = 0; i < 8; ++i)
{
for(unsigned j = 0; j < 8; ++j)
arrMidstate[i*8+j] = tempStatesPre64[i+2][j];
}
memcpy(&arrMidstate[64], tempBlock64, 64);
arrMidstate[64+8+0] = pre5;
arrMidstate[64+8+1] = pre6;
arrMidstate[64+8+2] = pre7;
arrMidstate[64+8+3] = pre0;
arrMidstate[64+8+4] = preHWA32 ^ ((UINT64)nonceXor << 32);
#endif
#if 1
// ROL 3
for(unsigned i = 0; i < 77; ++i)
{
arrMidstate[i] = ROL64(arrMidstate[i], 3);
}
#endif
}