Pages:
Author

Topic: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin) (Read 132864 times)

hero member
Activity: 524
Merit: 500
interesting, I'll have a look asap, thanks for sharing.
but my kernel, which is a little faster on hawaii and little slower on tahiti, is just 1/4 lines of code.
Yes, it's overengineered, some failed optimization attempts still live in the code. OTOH, smelter still has no overclocking code, may be putting this kernel as-is into sgminer will bring some speed boost.
legendary
Activity: 2716
Merit: 1094
Black Belt Developer
interesting, I'll have a look asap, thanks for sharing.
but my kernel, which is a little faster on hawaii and little slower on tahiti, is just 1/4 lines of code.
hero member
Activity: 524
Merit: 500
Code:
#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics : enable



static const CONSTANT UINT64 arrPrecalc_post_l27[4*256] =

{

0x00C300C0C6C183C6ULL, 0x291C611919323578ULL, 0xF631FE3635C48FCBULL, 0x9F443F4747DE6B78ULL, 0x6439343C3E589D0AULL, 0x4DC6D5C5C08B6B15ULL, 0x4008200808481028ULL, 0x12790A7A786CF372ULL, 0x69B6C1B1B4DB6775ULL, 0xCD35153537FA8822ULL, 0xF6937E969065CDEEULL, 0xDFAF9FAFA877B837ULL, 0x7BCFCBCBCCB79407ULL, 0xFB7D0B7B7986F672ULL, 0xE48BF48C8B69FF7FULL, 0x5292AA9297C5203DULL, 0x3B04EB03023E07E9ULL, 0x4DE655E5E1AB2BB4ULL, 0x64DAB4DCD9B95E6DULL, 0x2470147474500C60ULL, 0x8D1DB51D1E92D8ABULL, 0x006180606360C1E3ULL, 0xFBDF8BDBDC27B457ULL, 0xA9AEA1A9AC03570DULL, 0x40EBA0E8EFA9D34FULL, 0x9F053F07059EEA3AULL, 0xB6BBDEBEB90D9D67ULL, 0xF6117E1614E4CF6AULL, 0x6975C171721AE4B3ULL, 0x12598A5A594CB3D3ULL, 0x1FF6FFF7F2EF090DULL, 0x12BA0ABABEAD70B4ULL, 0x40AAA0A8ADE9520DULL, 0xFBBE0BBBBF4775B4ULL, 0x29BEE1B9BC93775DULL, 0xDF2D9F2F2CF6BAB3ULL, 0x64FA34FCF8991ECCULL, 0x9F873F87811FE8BEULL, 0x5251AA525104A3FBULL, 0xF6D27ED6D2254CACULL, 0xD2C3EAC2C515812FULL, 0x36481E4E4E7C7E50ULL, 0xA94D21494BE2946AULL, 0x8051405052D0A112ULL, 0x0D8FF58D8A83FA7FULL, 0x4D05D505064AE8D3ULL, 0xFB5D8B5B58A6B6D3ULL, 0xE429742C2EC8BD5AULL, 0x0DEE75EDE9E33B9CULL, 0x92EB4AEAEC7DD1A6ULL, 0x0082008084810284ULL, 0x9FA7BFA7A03FA81FULL, 0xB6585E5E5EEC5E00ULL, 0x69F7C1F1F69BE637ULL, 0x4028A02829685089ULL, 0xFB3C0B3B3BC67730ULL, 0x9F25BF2724BEAA9BULL, 0x293CE139381275D9ULL, 0x9208CA0A0B9C12C1ULL, 0x6458B45C5D385CE9ULL, 0x8D3D353D3FB2980AULL, 0x7BEF4BEBED97D4A6ULL, 0xE4AB74ACAA49BFDEULL, 0x76C23EC6C2B56CFCULL, 0x5FDE5FDFDB875984ULL, 0x1F74FF77766E0B89ULL, 0x3BE76BE3E5DFC48EULL, 0xBB342B33338E6718ULL, 0x36EA9EEEEBDD3C75ULL, 0xC0BAE0B8BD79725DULL, 0x12380A3A3A2C7230ULL, 0x24F214F4F0D10EE4ULL, 0xF6507E5656A44E28ULL, 0xA96DA1696AC2D4CBULL, 0x8DFE35FDF9731BCCULL, 0xC038E03839F870D9ULL, 0x0D6C756D6D623918ULL, 0x52D3AAD2D585A17FULL, 0x6419B41C1F78DDABULL, 0x299E61999DB337FCULL, 0xFB1C8B1B1AE63791ULL, 0x8010401010902050ULL, 0xCD549555549A49C1ULL, 0x7B8ECB8B8EF71545ULL, 0x76403E4646346E78ULL, 0x40CB20C8CE8993EEULL, 0x9249CA4A49DC9383ULL, 0x36CA1ECECAFD7CD4ULL, 0x1F977F97918FC8EEULL, 0x5F1D5F1F1D46DA42ULL, 0x12DB8ADADDCDB157ULL, 0xA440D44445E06C91ULL, 0x24D294D4D1F14E45ULL, 0x6934C131305A65F1ULL, 0x6996419195FB27D4ULL, 0x4D87D58582CBEA57ULL, 0xDF4C1F4F4F967B50ULL, 0xC079E0787BB8F19BULL, 0x36AB9EAEA99DBD37ULL, 0xA401D40407A0EDD3ULL, 0xCDF615F5F13B0BE4ULL, 0x36689E6E6F5C3EF1ULL, 0xE9A681A1A44B4725ULL, 0xD241EA42419483ABULL, 0x5FFEDFFFFAA71925ULL, 0xBBD7ABD3D46FA47FULL, 0xA483D4848321EF57ULL, 0x12FB0AFAFCEDF1F6ULL, 0xE904010101EA0500ULL, 0x3B45EB43407E86ABULL, 0x80D340D0D651A396ULL, 0xCD74157575BA0960ULL, 0x4DA755A5A3EBAAF6ULL, 0xD2A26AA2A67540CCULL, 0x649BB49C9BF9DF2FULL, 0x69144111117A2550ULL, 0x3B246B23231E4748ULL, 0xDF8F1F8F8957F896ULL, 0xFB9E8B9B9E673515ULL, 0x80924090941122D4ULL, 0xD200EA0203D402E9ULL, 0x0041004042408142ULL, 0xB6195E1E1CACDF42ULL, 0x9F64BF6766FE2BD9ULL, 0xB6DA5EDEDA6D5C84ULL, 0x0D0DF50D0E02F8FBULL, 0xE468746C6C883C18ULL, 0xA9EFA1E9EE43D64FULL, 0x64BB34BCBAD99F8EULL, 0x0000000000000000ULL, 0xB678DE7E7FCC1EA1ULL, 0x295D61595B72B43AULL, 0xBBB62BB3B70F659CULL, 0x241194141730CD83ULL, 0xF6B3FEB6B1458D4FULL, 0xC0DB60D8DE19B3BEULL, 0x0DAF75ADABA3BADEULL, 0x8D7C357D7DF21948ULL, 0xBB55AB5350EEA6FBULL, 0xD282EA828755006DULL, 0x92284A2A2ABC5260ULL, 0x5F9F5F9F99C7D8C6ULL, 0xE9860181856B0784ULL, 0x5F7CDF7F7E261BA1ULL, 0x29FFE1F9FED3F61FULL, 0x92AA4AAAAE3D50E4ULL, 0xCD15951516DAC883ULL, 0x1F547F57574E4B28ULL, 0x7B2C4B2B2B565760ULL, 0xCDD695D5D01B4B45ULL, 0x297DE1797A52F49BULL, 0x76013E060474EF3AULL, 0xF6F2FEF6F3050C0DULL, 0x00E380E0E7E1C367ULL, 0xDFEE9FEFEA373975ULL, 0x92694A6A68FCD322ULL, 0x2493949493B1CF07ULL, 0x7BAE4BABAFD755E4ULL, 0x8030C03031B060F1ULL, 0x2450945455704CC1ULL, 0xCD979595925BCA07ULL, 0x1F35FF37342E8ACBULL, 0x8071C07073F0E1B3ULL, 0xC0FBE0F8FF39F31FULL, 0xBB14AB1312AE27B9ULL, 0x76A3BEA6A1D5AD1FULL, 0x4D44D545440A6991ULL, 0x24B314B4B2918FA6ULL, 0xDFCE1FCFCB1779D4ULL, 0x36299E2E2D1CBFB3ULL, 0xA92CA12928825589ULL, 0x92CBCACACD5D9107ULL, 0xA42154242680AD72ULL, 0xBB96AB93962F253DULL, 0xA9CF21C9CF6396EEULL, 0xD2616A6260B4C30AULL, 0x52F32AF2F4A5E1DEULL, 0x3BC7EBC3C4FF842FULL, 0xE9C701C1C72B86C6ULL, 0xA460546464C02C30ULL, 0x368B1E8E88BDFD96ULL, 0x0D2D752D2F22B85AULL, 0x1F157F17150ECA6AULL, 0x7B0CCB0B0A7617C1ULL, 0x8D9FB59D9A13DA2FULL, 0xA90C210909A21528ULL, 0xA4E254E4E0412EB4ULL, 0x80F3C0F0F771E337ULL, 0x12188A1A1B0C3291ULL, 0xB639DE3E3D8C9FE3ULL, 0x9FE6BFE7E27F295DULL, 0x00208020212040A1ULL, 0x928ACA8A8F1D1045ULL, 0xE4CAF4CCC9297E3DULL, 0x7B6D4B6B6916D622ULL, 0x4069A0686B28D1CBULL, 0x1FD67FD7D3CF49ACULL, 0xB6FADEFEFB4D1C25ULL, 0xBBF72BF3F54FE4DEULL, 0xE924812120CA45A1ULL, 0x29DF61D9DFF3B6BEULL, 0x8D5CB55D5CD259E9ULL, 0xF670FE7677840E89ULL, 0x408A20888CC912ACULL, 0x6478347C7C181C48ULL, 0x52712A727024E35AULL, 0x8DBF35BDBB339A8EULL, 0x5F5C5F5F5F065B00ULL, 0xE9E781E1E60BC667ULL, 0xE409F40C0FE8FDFBULL, 0xA4A354A4A201AFF6ULL, 0x5FBFDFBFB8E79867ULL, 0x0DCEF5CDC8C37B3DULL, 0xC09A60989C5932FCULL, 0xE9658161628AC4E3ULL, 0xB69B5E9E982DDDC6ULL, 0x5F3DDF3F3C669AE3ULL, 0xBB752B7371CEE65AULL, 0x7621BE262554AF9BULL, 0xC018601818D83078ULL, 0x52B22AB2B6E5609CULL, 0xD2206A2222F44248ULL, 0xFBFF0BFBFD07F4F6ULL, 0x0D4CF54D4C4279B9ULL, 0x69554151533AA412ULL, 0x8DDEB5DDD8535B6DULL, 0x36091E0E0C3CFF12ULL, 0x129A8A9A9F8D3015ULL, 0x76E2BEE6E3952C5DULL, 0xC05960585A98B13AULL, 0xE4EA74ECE8093E9CULL, 0x3B656B63615EC60AULL, 0xA98E21898D2317ACULL, 0x3BA66BA3A79F45CCULL, 0x1FB7FFB7B0AF884FULL, 0x52302A3232646218ULL, 0x4D645565652A2930ULL, 0xE448F44C4DA87CB9ULL, 0x00A280A0A5A14225ULL, 0xDF0D1F0F0DD6FA12ULL, 0x80B2C0B0B5316275ULL, 0x69D741D1D7BBA696ULL, 0x7B4DCB4B48369683ULL, 0x404920484A08916AULL, 0x3B86EB8386BF056DULL, 0xCDB715B5B37B8AA6ULL, 0x76833E8680F5EDBEULL, 0xDF6C9F6F6EB63BF1ULL, 0x7660BE6667142ED9ULL, 0x5210AA12134422B9ULL, 0xA4C2D4C4C1616E15ULL, 0x4D255525276AA872ULL, 0xE945014143AA8442ULL, 0xD2E36AE2E435C18EULL, 0x9FC63FC7C35F69FCULL, 0x2431143436108D22ULL,

};



static const CONSTANT UINT64 arrPrecalc_post_r3[4*256] =

{

0xC183C600C300C0C6ULL, 0x323578291C611919ULL, 0xC48FCBF631FE3635ULL, 0xDE6B789F443F4747ULL, 0x589D0A6439343C3EULL, 0x8B6B154DC6D5C5C0ULL, 0x4810284008200808ULL, 0x6CF37212790A7A78ULL, 0xDB677569B6C1B1B4ULL, 0xFA8822CD35153537ULL, 0x65CDEEF6937E9690ULL, 0x77B837DFAF9FAFA8ULL, 0xB794077BCFCBCBCCULL, 0x86F672FB7D0B7B79ULL, 0x69FF7FE48BF48C8BULL, 0xC5203D5292AA9297ULL, 0x3E07E93B04EB0302ULL, 0xAB2BB44DE655E5E1ULL, 0xB95E6D64DAB4DCD9ULL, 0x500C602470147474ULL, 0x92D8AB8D1DB51D1EULL, 0x60C1E30061806063ULL, 0x27B457FBDF8BDBDCULL, 0x03570DA9AEA1A9ACULL, 0xA9D34F40EBA0E8EFULL, 0x9EEA3A9F053F0705ULL, 0x0D9D67B6BBDEBEB9ULL, 0xE4CF6AF6117E1614ULL, 0x1AE4B36975C17172ULL, 0x4CB3D312598A5A59ULL, 0xEF090D1FF6FFF7F2ULL, 0xAD70B412BA0ABABEULL, 0xE9520D40AAA0A8ADULL, 0x4775B4FBBE0BBBBFULL, 0x93775D29BEE1B9BCULL, 0xF6BAB3DF2D9F2F2CULL, 0x991ECC64FA34FCF8ULL, 0x1FE8BE9F873F8781ULL, 0x04A3FB5251AA5251ULL, 0x254CACF6D27ED6D2ULL, 0x15812FD2C3EAC2C5ULL, 0x7C7E5036481E4E4EULL, 0xE2946AA94D21494BULL, 0xD0A1128051405052ULL, 0x83FA7F0D8FF58D8AULL, 0x4AE8D34D05D50506ULL, 0xA6B6D3FB5D8B5B58ULL, 0xC8BD5AE429742C2EULL, 0xE33B9C0DEE75EDE9ULL, 0x7DD1A692EB4AEAECULL, 0x8102840082008084ULL, 0x3FA81F9FA7BFA7A0ULL, 0xEC5E00B6585E5E5EULL, 0x9BE63769F7C1F1F6ULL, 0x6850894028A02829ULL, 0xC67730FB3C0B3B3BULL, 0xBEAA9B9F25BF2724ULL, 0x1275D9293CE13938ULL, 0x9C12C19208CA0A0BULL, 0x385CE96458B45C5DULL, 0xB2980A8D3D353D3FULL, 0x97D4A67BEF4BEBEDULL, 0x49BFDEE4AB74ACAAULL, 0xB56CFC76C23EC6C2ULL, 0x8759845FDE5FDFDBULL, 0x6E0B891F74FF7776ULL, 0xDFC48E3BE76BE3E5ULL, 0x8E6718BB342B3333ULL, 0xDD3C7536EA9EEEEBULL, 0x79725DC0BAE0B8BDULL, 0x2C723012380A3A3AULL, 0xD10EE424F214F4F0ULL, 0xA44E28F6507E5656ULL, 0xC2D4CBA96DA1696AULL, 0x731BCC8DFE35FDF9ULL, 0xF870D9C038E03839ULL, 0x6239180D6C756D6DULL, 0x85A17F52D3AAD2D5ULL, 0x78DDAB6419B41C1FULL, 0xB337FC299E61999DULL, 0xE63791FB1C8B1B1AULL, 0x9020508010401010ULL, 0x9A49C1CD54955554ULL, 0xF715457B8ECB8B8EULL, 0x346E7876403E4646ULL, 0x8993EE40CB20C8CEULL, 0xDC93839249CA4A49ULL, 0xFD7CD436CA1ECECAULL, 0x8FC8EE1F977F9791ULL, 0x46DA425F1D5F1F1DULL, 0xCDB15712DB8ADADDULL, 0xE06C91A440D44445ULL, 0xF14E4524D294D4D1ULL, 0x5A65F16934C13130ULL, 0xFB27D46996419195ULL, 0xCBEA574D87D58582ULL, 0x967B50DF4C1F4F4FULL, 0xB8F19BC079E0787BULL, 0x9DBD3736AB9EAEA9ULL, 0xA0EDD3A401D40407ULL, 0x3B0BE4CDF615F5F1ULL, 0x5C3EF136689E6E6FULL, 0x4B4725E9A681A1A4ULL, 0x9483ABD241EA4241ULL, 0xA719255FFEDFFFFAULL, 0x6FA47FBBD7ABD3D4ULL, 0x21EF57A483D48483ULL, 0xEDF1F612FB0AFAFCULL, 0xEA0500E904010101ULL, 0x7E86AB3B45EB4340ULL, 0x51A39680D340D0D6ULL, 0xBA0960CD74157575ULL, 0xEBAAF64DA755A5A3ULL, 0x7540CCD2A26AA2A6ULL, 0xF9DF2F649BB49C9BULL, 0x7A25506914411111ULL, 0x1E47483B246B2323ULL, 0x57F896DF8F1F8F89ULL, 0x673515FB9E8B9B9EULL, 0x1122D48092409094ULL, 0xD402E9D200EA0203ULL, 0x4081420041004042ULL, 0xACDF42B6195E1E1CULL, 0xFE2BD99F64BF6766ULL, 0x6D5C84B6DA5EDEDAULL, 0x02F8FB0D0DF50D0EULL, 0x883C18E468746C6CULL, 0x43D64FA9EFA1E9EEULL, 0xD99F8E64BB34BCBAULL, 0x0000000000000000ULL, 0xCC1EA1B678DE7E7FULL, 0x72B43A295D61595BULL, 0x0F659CBBB62BB3B7ULL, 0x30CD832411941417ULL, 0x458D4FF6B3FEB6B1ULL, 0x19B3BEC0DB60D8DEULL, 0xA3BADE0DAF75ADABULL, 0xF219488D7C357D7DULL, 0xEEA6FBBB55AB5350ULL, 0x55006DD282EA8287ULL, 0xBC526092284A2A2AULL, 0xC7D8C65F9F5F9F99ULL, 0x6B0784E986018185ULL, 0x261BA15F7CDF7F7EULL, 0xD3F61F29FFE1F9FEULL, 0x3D50E492AA4AAAAEULL, 0xDAC883CD15951516ULL, 0x4E4B281F547F5757ULL, 0x5657607B2C4B2B2BULL, 0x1B4B45CDD695D5D0ULL, 0x52F49B297DE1797AULL, 0x74EF3A76013E0604ULL, 0x050C0DF6F2FEF6F3ULL, 0xE1C36700E380E0E7ULL, 0x373975DFEE9FEFEAULL, 0xFCD32292694A6A68ULL, 0xB1CF072493949493ULL, 0xD755E47BAE4BABAFULL, 0xB060F18030C03031ULL, 0x704CC12450945455ULL, 0x5BCA07CD97959592ULL, 0x2E8ACB1F35FF3734ULL, 0xF0E1B38071C07073ULL, 0x39F31FC0FBE0F8FFULL, 0xAE27B9BB14AB1312ULL, 0xD5AD1F76A3BEA6A1ULL, 0x0A69914D44D54544ULL, 0x918FA624B314B4B2ULL, 0x1779D4DFCE1FCFCBULL, 0x1CBFB336299E2E2DULL, 0x825589A92CA12928ULL, 0x5D910792CBCACACDULL, 0x80AD72A421542426ULL, 0x2F253DBB96AB9396ULL, 0x6396EEA9CF21C9CFULL, 0xB4C30AD2616A6260ULL, 0xA5E1DE52F32AF2F4ULL, 0xFF842F3BC7EBC3C4ULL, 0x2B86C6E9C701C1C7ULL, 0xC02C30A460546464ULL, 0xBDFD96368B1E8E88ULL, 0x22B85A0D2D752D2FULL, 0x0ECA6A1F157F1715ULL, 0x7617C17B0CCB0B0AULL, 0x13DA2F8D9FB59D9AULL, 0xA21528A90C210909ULL, 0x412EB4A4E254E4E0ULL, 0x71E33780F3C0F0F7ULL, 0x0C329112188A1A1BULL, 0x8C9FE3B639DE3E3DULL, 0x7F295D9FE6BFE7E2ULL, 0x2040A10020802021ULL, 0x1D1045928ACA8A8FULL, 0x297E3DE4CAF4CCC9ULL, 0x16D6227B6D4B6B69ULL, 0x28D1CB4069A0686BULL, 0xCF49AC1FD67FD7D3ULL, 0x4D1C25B6FADEFEFBULL, 0x4FE4DEBBF72BF3F5ULL, 0xCA45A1E924812120ULL, 0xF3B6BE29DF61D9DFULL, 0xD259E98D5CB55D5CULL, 0x840E89F670FE7677ULL, 0xC912AC408A20888CULL, 0x181C486478347C7CULL, 0x24E35A52712A7270ULL, 0x339A8E8DBF35BDBBULL, 0x065B005F5C5F5F5FULL, 0x0BC667E9E781E1E6ULL, 0xE8FDFBE409F40C0FULL, 0x01AFF6A4A354A4A2ULL, 0xE798675FBFDFBFB8ULL, 0xC37B3D0DCEF5CDC8ULL, 0x5932FCC09A60989CULL, 0x8AC4E3E965816162ULL, 0x2DDDC6B69B5E9E98ULL, 0x669AE35F3DDF3F3CULL, 0xCEE65ABB752B7371ULL, 0x54AF9B7621BE2625ULL, 0xD83078C018601818ULL, 0xE5609C52B22AB2B6ULL, 0xF44248D2206A2222ULL, 0x07F4F6FBFF0BFBFDULL, 0x4279B90D4CF54D4CULL, 0x3AA4126955415153ULL, 0x535B6D8DDEB5DDD8ULL, 0x3CFF1236091E0E0CULL, 0x8D3015129A8A9A9FULL, 0x952C5D76E2BEE6E3ULL, 0x98B13AC05960585AULL, 0x093E9CE4EA74ECE8ULL, 0x5EC60A3B656B6361ULL, 0x2317ACA98E21898DULL, 0x9F45CC3BA66BA3A7ULL, 0xAF884F1FB7FFB7B0ULL, 0x64621852302A3232ULL, 0x2A29304D64556565ULL, 0xA87CB9E448F44C4DULL, 0xA1422500A280A0A5ULL, 0xD6FA12DF0D1F0F0DULL, 0x31627580B2C0B0B5ULL, 0xBBA69669D741D1D7ULL, 0x3696837B4DCB4B48ULL, 0x08916A404920484AULL, 0xBF056D3B86EB8386ULL, 0x7B8AA6CDB715B5B3ULL, 0xF5EDBE76833E8680ULL, 0xB63BF1DF6C9F6F6EULL, 0x142ED97660BE6667ULL, 0x4422B95210AA1213ULL, 0x616E15A4C2D4C4C1ULL, 0x6AA8724D25552527ULL, 0xAA8442E945014143ULL, 0x35C18ED2E36AE2E4ULL, 0x5F69FC9FC63FC7C3ULL, 0x108D222431143436ULL,

};









#ifdef __OPENCL_VERSION__

#define X64 uint2

#define ASX64(v) (as_uint2(v))

#else

#define X64 UINT64

#define ASX64(v) (v)

#endif



#define Toff8(off8) (*(const LOCAL UINT64*)&(((const LOCAL UINT8*)TAll_local)[off8]))

#define TCoff8(off8) (*(const CONSTANT UINT64*)&(((const CONSTANT UINT8*)arrPrecalc_post)[off8]))






#define Toff8_r3(off8) (*(const LOCAL UINT64*)&(((const LOCAL UINT8*)TAll_local_r3)[off8]))

#define TCoff8_r3(off8) (*(const CONSTANT UINT64*)&(((const CONSTANT UINT8*)arrPrecalc_post_r3)[off8]))

#define TCoff8_l27(off8) (*(const CONSTANT UINT64*)&(((const CONSTANT UINT8*)arrPrecalc_post_l27)[off8]))


#define TC0off8_l27(off8) (*(const CONSTANT UINT64*)&(((const CONSTANT UINT8*)0)[off8]))



#ifdef __OPENCL_VERSION__



#define LUT0_r3(v) ASX64(Toff8_r3(v.x & 0x7F8))

#define LUT1_r3(v) ASX64(ROL64(Toff8_r3((v.x >>  8) & 0x7F8U), 8))

#define LUT2_r3(v) ASX64(ROL64(Toff8_r3((v.x >> 16) & 0x7F8U), 16));

#define LUT3_r3(v) ASX64(TC0off8_l27(bitselect(baseL27, (UINT32)(as_ulong(v) >> 24), 0x7F8U)))

#define LUT4_r3(v) (ASX64(Toff8_r3((v.y) & 0x7F8U))).yx

#define LUT5_r3(v) (ASX64(ROL64(Toff8_r3((v.y >> 8) & 0x7F8U), 8))).yx

#define LUT6_r3(v) (ASX64(ROL64(Toff8_r3((v.y >> 16) & 0x7F8U), 16))).yx;

#define LUT7_r3(v) (ASX64(TC0off8_l27(bitselect(baseL27, amd_bitalign(v.x, v.y, 24), 0x7F8U)))).yx


#else




#define LUT0_r3(v) ASX64(Toff8_r3((v) & 0x7F8))

#define LUT1_r3(v) ASX64(ROL64(Toff8_r3((v >>  8) & 0x7F8U), 8))

#define LUT2_r3(v) ASX64(ROL64(Toff8_r3((v >> 16) & 0x7F8U), 16))

#define LUT3_r3(v) ASX64(ROL64(Toff8_r3((v >> 24) & 0x7F8U), 24))

#define LUT4_r3(v) ASX64(ROL64(Toff8_r3((v >> 32) & 0x7F8U), 32))

#define LUT5_r3(v) ASX64(ROL64(Toff8_r3((v >> 40) & 0x7F8U), 40))

#define LUT6_r3(v) ASX64(ROL64(Toff8_r3((v >> 48) & 0x7F8U), 48))

#define LUT7_r3(v) ASX64(ROL64(Toff8_r3(ROR64(v, 56) & 0x7F8U), 56))





#endif



KERNEL void vanilla0_post(

GLOBAL UINT32 *pOut32,

GLOBAL const UINT32 *pIn32

#ifdef __OPENCL_VERSION__

, UINT32 nMask

#else

, UINT32 GLOBALID

#endif

)

{



#ifdef __OPENCL_VERSION__

#else

UINT32 nMask = 0xFFFFFFFF;

#endif

GLOBAL const UINT64 *arrMidstate = (GLOBAL const UINT64 *)pIn32;


#define baseL27 ((UINT32)&arrPrecalc_post_l27[0])



LOCAL X64 TAll_local_r3[256*1];

{

UINT32 nLocalId = LOCALID;

for(unsigned i = 0; i < 256; i += WORKSIZE)

{


TAll_local_r3[i + nLocalId]

= ASX64(arrPrecalc_post_r3[i + nLocalId]);


}

}







GLOBAL const UINT64 *post_pStatesPre64_pr3 = arrMidstate;




X64 stateAX64_pr3[8];

X64 stateBX64_pr3[8];




for(unsigned i = 0; i < 8; ++i)

{

stateAX64_pr3[i] = ASX64(arrMidstate[64+i]);

}




X64 post_pre5_pr3 = ASX64(arrMidstate[64+8+0]);

X64 post_pre6_pr3 = ASX64(arrMidstate[64+8+1]);

X64 post_pre7_pr3 = ASX64(arrMidstate[64+8+2]);

X64 post_pre0_pr3 = ASX64(arrMidstate[64+8+3]);





#ifdef __OPENCL_VERSION__


X64 post_nonceXored_pr3 = ASX64(arrMidstate[64+8+4]);

post_nonceXored_pr3.x ^= GLOBALID >> 29;

post_nonceXored_pr3.y ^= GLOBALID << 3;



#else

X64 post_tmp_pr3 = ASX64(arrMidstate[64+8+4]);

UINT32 post_preHWA32_pr0 = ROR64(post_tmp_pr3, 3) & 0xFFFFFFFF;


X64 post_nonceXored_pr3 = post_tmp_pr3 ^ ROR64(((UINT64)GLOBALID), 29); // & 0x00FFFF00


#endif






post_pre5_pr3 ^= LUT4_r3(ASX64(post_nonceXored_pr3));

stateAX64_pr3[7&(5+0)] ^= LUT0_r3(post_pre5_pr3);

stateAX64_pr3[7&(5+1)] ^= LUT1_r3(post_pre5_pr3);

stateAX64_pr3[7&(5+2)] ^= LUT2_r3(post_pre5_pr3);


stateAX64_pr3[7&(5+3)] ^= LUT3_r3(post_pre5_pr3);


stateAX64_pr3[7&(5+4)] ^= LUT4_r3(post_pre5_pr3);

stateAX64_pr3[7&(5+5)] ^= LUT5_r3(post_pre5_pr3);

stateAX64_pr3[7&(5+6)] ^= LUT6_r3(post_pre5_pr3);


stateAX64_pr3[7&(5+7)] ^= LUT7_r3(post_pre5_pr3);




post_pre6_pr3 ^= LUT5_r3(ASX64(post_nonceXored_pr3));

stateAX64_pr3[7&(6+0)] ^= LUT0_r3(post_pre6_pr3);

stateAX64_pr3[7&(6+1)] ^= LUT1_r3(post_pre6_pr3);

stateAX64_pr3[7&(6+2)] ^= LUT2_r3(post_pre6_pr3);


stateAX64_pr3[7&(6+3)] ^= LUT3_r3(post_pre6_pr3);


stateAX64_pr3[7&(6+4)] ^= LUT4_r3(post_pre6_pr3);

stateAX64_pr3[7&(6+5)] ^= LUT5_r3(post_pre6_pr3);

stateAX64_pr3[7&(6+6)] ^= LUT6_r3(post_pre6_pr3);


stateAX64_pr3[7&(6+7)] ^= LUT7_r3(post_pre6_pr3);




post_pre7_pr3 ^= LUT6_r3(ASX64(post_nonceXored_pr3));

stateAX64_pr3[7&(7+0)] ^= LUT0_r3(post_pre7_pr3);

stateAX64_pr3[7&(7+1)] ^= LUT1_r3(post_pre7_pr3);

stateAX64_pr3[7&(7+2)] ^= LUT2_r3(post_pre7_pr3);


stateAX64_pr3[7&(7+3)] ^= LUT3_r3(post_pre7_pr3);


stateAX64_pr3[7&(7+4)] ^= LUT4_r3(post_pre7_pr3);

stateAX64_pr3[7&(7+5)] ^= LUT5_r3(post_pre7_pr3);

stateAX64_pr3[7&(7+6)] ^= LUT6_r3(post_pre7_pr3);


stateAX64_pr3[7&(7+7)] ^= LUT7_r3(post_pre7_pr3);




post_pre0_pr3 ^= LUT7_r3(ASX64(post_nonceXored_pr3));

stateAX64_pr3[7&(0+0)] ^= LUT0_r3(post_pre0_pr3);

stateAX64_pr3[7&(0+1)] ^= LUT1_r3(post_pre0_pr3);

stateAX64_pr3[7&(0+2)] ^= LUT2_r3(post_pre0_pr3);


stateAX64_pr3[7&(0+3)] ^= LUT3_r3(post_pre0_pr3);


stateAX64_pr3[7&(0+4)] ^= LUT4_r3(post_pre0_pr3);

stateAX64_pr3[7&(0+5)] ^= LUT5_r3(post_pre0_pr3);

stateAX64_pr3[7&(0+6)] ^= LUT6_r3(post_pre0_pr3);


stateAX64_pr3[7&(0+7)] ^= LUT7_r3(post_pre0_pr3);








{

for(unsigned round = 0; round < 3; round++)

{

for(unsigned j = 0; j < 8; j++)

{


stateBX64_pr3[j] = ASX64(post_pStatesPre64_pr3[round*16 + 0 +j]);

}




for(unsigned p = 0; p < 8; ++p)

{

stateBX64_pr3[7&(p+0)] ^= LUT0_r3(stateAX64_pr3[p]);

stateBX64_pr3[7&(p+1)] ^= LUT1_r3(stateAX64_pr3[p]);

stateBX64_pr3[7&(p+2)] ^= LUT2_r3(stateAX64_pr3[p]);


stateBX64_pr3[7&(p+3)] ^= LUT3_r3(stateAX64_pr3[p]);






stateBX64_pr3[7&(p+4)] ^= LUT4_r3(stateAX64_pr3[p]);

stateBX64_pr3[7&(p+5)] ^= LUT5_r3(stateAX64_pr3[p]);

stateBX64_pr3[7&(p+6)] ^= LUT6_r3(stateAX64_pr3[p]);


stateBX64_pr3[7&(p+7)] ^= LUT7_r3(stateAX64_pr3[p]);




}



for(unsigned j = 0; j < 8; j++)

{


stateAX64_pr3[j] = ASX64(post_pStatesPre64_pr3[round*16 + 8 +j]);

}



for(unsigned p = 0; p < 8; ++p)

{

stateAX64_pr3[7&(p+0)] ^= LUT0_r3(stateBX64_pr3[p]);

stateAX64_pr3[7&(p+1)] ^= LUT1_r3(stateBX64_pr3[p]);

stateAX64_pr3[7&(p+2)] ^= LUT2_r3(stateBX64_pr3[p]);


stateAX64_pr3[7&(p+3)] ^= LUT3_r3(stateBX64_pr3[p]);






stateAX64_pr3[7&(p+4)] ^= LUT4_r3(stateBX64_pr3[p]);

stateAX64_pr3[7&(p+5)] ^= LUT5_r3(stateBX64_pr3[p]);

stateAX64_pr3[7&(p+6)] ^= LUT6_r3(stateBX64_pr3[p]);


stateAX64_pr3[7&(p+7)] ^= LUT7_r3(stateBX64_pr3[p]);




}





}



for(unsigned j = 0; j < 8; j++)

{

stateBX64_pr3[j] = ASX64(post_pStatesPre64_pr3[6*8 + 0 +j]);

}



for(unsigned p = 0; p < 8; ++p)

{

stateBX64_pr3[7&(p+0)] ^= LUT0_r3(stateAX64_pr3[p]);

stateBX64_pr3[7&(p+1)] ^= LUT1_r3(stateAX64_pr3[p]);

stateBX64_pr3[7&(p+2)] ^= LUT2_r3(stateAX64_pr3[p]);


stateBX64_pr3[7&(p+3)] ^= LUT3_r3(stateAX64_pr3[p]);





stateBX64_pr3[7&(p+4)] ^= LUT4_r3(stateAX64_pr3[p]);

stateBX64_pr3[7&(p+5)] ^= LUT5_r3(stateAX64_pr3[p]);

stateBX64_pr3[7&(p+6)] ^= LUT6_r3(stateAX64_pr3[p]);


stateBX64_pr3[7&(p+7)] ^= LUT7_r3(stateAX64_pr3[p]);




}













// by result row; 3,5


X64 result64_pr3 = LUT0_r3(stateBX64_pr3[7&(8+3-0)]);

result64_pr3 ^= LUT1_r3(stateBX64_pr3[7&(8+3-1)]);

result64_pr3 ^= LUT2_r3(stateBX64_pr3[7&(8+3-2)]);

result64_pr3 ^= LUT3_r3(stateBX64_pr3[7&(8+3-3)]);






result64_pr3 ^= LUT4_r3(stateBX64_pr3[7&(8+3-4)]);

result64_pr3 ^= LUT5_r3(stateBX64_pr3[7&(8+3-5)]);

result64_pr3 ^= LUT6_r3(stateBX64_pr3[7&(8+3-6)]);

result64_pr3 ^= LUT7_r3(stateBX64_pr3[7&(8+3-7)]);






result64_pr3 ^= LUT0_r3(stateBX64_pr3[7&(8+5-0)]);

result64_pr3 ^= LUT1_r3(stateBX64_pr3[7&(8+5-1)]);

result64_pr3 ^= LUT2_r3(stateBX64_pr3[7&(8+5-2)]);

result64_pr3 ^= LUT3_r3(stateBX64_pr3[7&(8+5-3)]);




result64_pr3 ^= LUT4_r3(stateBX64_pr3[7&(8+5-4)]);

result64_pr3 ^= LUT5_r3(stateBX64_pr3[7&(8+5-5)]);

result64_pr3 ^= LUT6_r3(stateBX64_pr3[7&(8+5-6)]);

result64_pr3 ^= LUT7_r3(stateBX64_pr3[7&(8+5-7)]);












#ifdef __OPENCL_VERSION__




X64 post_tmp_pr3 = ASX64(arrMidstate[64+8+4]);


UINT32 post_preHWA32_pr0 = amd_bitalign(post_tmp_pr3.y, post_tmp_pr3.x, 3);




if(!(nMask & (post_preHWA32_pr0 ^ amd_bitalign(result64_pr3.x, result64_pr3.y, 3))))

{

pOut32[atom_inc(&pOut32[0]) + 1] = GLOBALID;

}





#else


post_preHWA32_pr0 ^= ROR64(result64_pr3, 32+3);



if(!(post_preHWA32_pr0 & nMask))

{


pOut32[++pOut32[0]] = GLOBALID;

}



#endif



}

}
hero member
Activity: 524
Merit: 500
Smelter is again abandoned and I'm again publishing kernel source - this time for Vanillacoin WhirlpoolX algorithm

Code:
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,

};



Code:

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

}

hero member
Activity: 524
Merit: 500
I'm very sorry, new version with bugfixes and better diagnostics was almost done when I was distracted by other, non-crypto things Sad

i have problems with a rig with 4 GPUs (working fine in sgminer).

This rig hashes the same as a 3 GPU rig.

what should i check?  Huh

(Win 7 64, catalyst 14.4, proper DLLs in smelter dir, Gigabytes 280x, -g 4 -w64.)

Probably one of GPUs overheated and does not work. Try to lower clock speed for all cards, then raise it back card-by-card. There is no speed settings in the released version, use external tool (Afterburner or something) for overclocking.

Warm algorithm, how to adjust settings fan?

I don't think its possible with this version  Undecided
Yes, not yet

why is that smelter last official miner only get me 5-6 mh on nicehash?
First of all wait a bit, pool calculates speed by accepted shares, give it some time (~ 5-10 min) to catch up. Look at miner window, may be there are some diagnostic messages about rejected shares and h/w errors, if yes, post it here. Lower GPU clocks with Afterburner and see if the speed raises to expected for your card.
If nothing will help - take my apologies, I'm very sorry for abandoning the project, and wait for new version Sad
newbie
Activity: 8
Merit: 0
why is that smelter last official miner only get me 5-6 mh on nicehash?
newbie
Activity: 19
Merit: 0
Warm algorithm, how to adjust settings fan?

You can download TRIXX app from Sapphire website. Should work on any AMD card.
legendary
Activity: 1274
Merit: 1006
Warm algorithm, how to adjust settings fan?

I don't think its possible with this version  Undecided
sr. member
Activity: 411
Merit: 250
Warm algorithm, how to adjust settings fan?
hero member
Activity: 968
Merit: 624
Still a manic miner
i have problems with a rig with 4 GPUs (working fine in sgminer).

This rig hashes the same as a 3 GPU rig.

what should i check?  Huh

(Win 7 64, catalyst 14.4, proper DLLs in smelter dir, Gigabytes 280x, -g 4 -w64.)
hero member
Activity: 524
Merit: 500
My miner supports three algos, full-custom stratum implementation. But it needs multiple pool support, getblocktemplate support, GPU ADL controls (fan/clocks/other shit). Also need a pool-specific mutex on the socket... I don't use cURL (because fucking ewww), but when mining at extreme low diff, stratum can die, probably cause of the socket being used by multiple threads.
At very low difficulties it's possible to accidentally submit too many stale shares and get banned, may be the problem is on the pool's end. For Stratum networking I switched from curl to boost::asio, curl is still here for getwork/getwork2/getblocktemplate.

Anyways, the ADL SDK is a pain in the ass, but initializing, cleaning up, and getting/setting fan speed works!
Is your CL<->ADL code done in cgminer way or in the right way? Smiley
member
Activity: 92
Merit: 10
Edit: Found a trick with Smelter at least on my R9 290x.  IT by default does GPU Clock Dynamic so it doesn't fully utilize the Overclock there.  What I did was open Sgminer so it would pin GPU Clock to max and instead of using q to quit just click x on the window so your GPU Clock stays locked into whatever OC it is.  Than open Smelter.  Mining at 700.59 MH/s.  Granted at this speed and OC 1100/1500 My card is pretty darn toasty so I wouldn't recommend it unless you have Liquid or really good Fans and Airflow for the GPU 90c with fans at 100% and 67f with fan blowing into PC.

Edit: I also just noticed that it seems the speed has way more to do with GPU Clock than Mem Clock.  Sweetspot on my GPU Clock seems to be 1125, 1150 gave artifacting, so it would be 1125/1350, speed seems to be around 715 MH/s I think, although it is still climbing slowly. Still runs very toasty though at 90c. 
Cool tricks, cool speeds!
Core/mem clock control is in the work but not ready yet Sad

Why not release new Versions, you can still use it to mine say WestHash/NiceHash Pools and whatever other pools offer WhirlPoolx Algo.

Pointing your miner at a pool won't do anything if the coins network won't accept the blocks.
Yes, no point in releasing miner that is fast but cannot be used. So I'm working on new kernel for another algorithm, if it will be slow enough, the release will be public Smiley

My miner supports three algos, full-custom stratum implementation. But it needs multiple pool support, getblocktemplate support, GPU ADL controls (fan/clocks/other shit). Also need a pool-specific mutex on the socket... I don't use cURL (because fucking ewww), but when mining at extreme low diff, stratum can die, probably cause of the socket being used by multiple threads.

Well, I look forward to seeing your Miner Wolf0.  I must say you do some good work, your Bin file for X11 Algo. for my R9 290x has me at darn near 9 MH/s.  Granted I am also using AMD Opencl files within SGMiner to help it a bit, I think it's 14.9 or maybe 14.6 RC2.  Either way with Just OpenCL it will run at around 6 MH/s.  So yea your bin def. helped.
member
Activity: 92
Merit: 10
Why not release new Versions, you can still use it to mine say WestHash/NiceHash Pools and whatever other pools offer WhirlPoolx Algo.

Pointing your miner at a pool won't do anything if the coins network won't accept the blocks.

Yea I just noticed that it does nothing on the Pools I was talking about Sad  Oh well, will have to wait until the block is back to PoW.
hero member
Activity: 524
Merit: 500
Edit: Found a trick with Smelter at least on my R9 290x.  IT by default does GPU Clock Dynamic so it doesn't fully utilize the Overclock there.  What I did was open Sgminer so it would pin GPU Clock to max and instead of using q to quit just click x on the window so your GPU Clock stays locked into whatever OC it is.  Than open Smelter.  Mining at 700.59 MH/s.  Granted at this speed and OC 1100/1500 My card is pretty darn toasty so I wouldn't recommend it unless you have Liquid or really good Fans and Airflow for the GPU 90c with fans at 100% and 67f with fan blowing into PC.

Edit: I also just noticed that it seems the speed has way more to do with GPU Clock than Mem Clock.  Sweetspot on my GPU Clock seems to be 1125, 1150 gave artifacting, so it would be 1125/1350, speed seems to be around 715 MH/s I think, although it is still climbing slowly. Still runs very toasty though at 90c. 
Cool tricks, cool speeds!
Core/mem clock control is in the work but not ready yet Sad

Why not release new Versions, you can still use it to mine say WestHash/NiceHash Pools and whatever other pools offer WhirlPoolx Algo.

Pointing your miner at a pool won't do anything if the coins network won't accept the blocks.
Yes, no point in releasing miner that is fast but cannot be used. So I'm working on new kernel for another algorithm, if it will be slow enough, the release will be public Smiley
legendary
Activity: 2088
Merit: 1015
Why not release new Versions, you can still use it to mine say WestHash/NiceHash Pools and whatever other pools offer WhirlPoolx Algo.

Pointing your miner at a pool won't do anything if the coins network won't accept the blocks.
member
Activity: 92
Merit: 10
Why not release new Versions, you can still use it to mine say WestHash/NiceHash Pools and whatever other pools offer WhirlPoolx Algo.

Edit: Found a trick with Smelter at least on my R9 290x.  IT by default does GPU Clock Dynamic so it doesn't fully utilize the Overclock there.  What I did was open Sgminer so it would pin GPU Clock to max and instead of using q to quit just click x on the window so your GPU Clock stays locked into whatever OC it is.  Than open Smelter.  Mining at 700.59 MH/s.  Granted at this speed and OC 1100/1500 My card is pretty darn toasty so I wouldn't recommend it unless you have Liquid or really good Fans and Airflow for the GPU 90c with fans at 100% and 67f with fan blowing into PC.

Edit: I also just noticed that it seems the speed has way more to do with GPU Clock than Mem Clock.  Sweetspot on my GPU Clock seems to be 1125, 1150 gave artifacting, so it would be 1125/1350, speed seems to be around 715 MH/s I think, although it is still climbing slowly. Still runs very toasty though at 90c. 
hero member
Activity: 524
Merit: 500
Heads up to any miners who may be watching this thread but not the official vanilla coin thread, PoW mining is going to be paused for 20,000 blocks starting at block 117,833
Thank you for warning. Not sure I will release new version before this pause Sad

Waiting for clocks and temp control within Smelter.
Yes, it's in work.

This software does desperately need control over Fan Speed.  Auto-Fan, Gpu Over Heat/Target Temp/Temp Cutoff.
Oops, sorry, not going to be implemented in the nearest releases. I cannot just copy control algorithm from cgminer and friends, getting it done from scratch will take time.

I have an old 6850 that I would like to get to work with this software.  Any possibilities of seeing that card added?
Yes, still possible while my code is OpenCL.
legendary
Activity: 2088
Merit: 1015
Heads up to any miners who may be watching this thread but not the official vanilla coin thread, PoW mining is going to be paused for 20,000 blocks starting at block 117,833

https://talk.vanillacoin.net/topic/143/temporary-proof-of-work-pause-at-block-117833/3

The pause is to allow testing of mobile staking and fpga development without only a few developers raping the coin.
member
Activity: 92
Merit: 10
So, not sure why people are getting low rates but my R9 290x is sitting comfortably at 600+ MH/s.  I did notice trying to use anything other than the most up to date driver for AMD does seem to drop the Hash rate down dramatically.  Also this is on Windows 8.1 at Stock speeds, no OC.  OC seems to heat the Card up way too much for my tastes.  This is a HIS R9 290x base speed is 1040/1350 for this card 87c is what the temp is at and the voltage draw looks to max out at 1080ish according to MSI Afterburner.

Edit:  Forgot to add, this is my settings in the .cmd file,
smelter -o stratum+tcp://stratum.westhash.com:3343 -u user.name -p password -g 4 -W 64
Going up in Worksize seems to bring the hash rate down just an FYI

This software does desperately need control over Fan Speed.  Auto-Fan, Gpu Over Heat/Target Temp/Temp Cutoff.

I have an old 6850 that I would like to get to work with this software.  Any possibilities of seeing that card added?
newbie
Activity: 17
Merit: 0
With worksize 256 and 4 threads  R9 270x on 1100/1400 gives 267Mh/s. Many thanx. Waiting for clocks and temp control within Smelter.
Pages:
Jump to: