rodecomp/Source/Utility/Cipher/Tiger.cpp
ragnarok-clanker ac999c3d59 Decompile fn_18416 (TigerCompress)
Batch #6288 by eAthena: 0 byte-identical, 1 confirmed by peer review.

- fn_18416 TigerCompress: logic confirmed by peer review

Peer-reviewed-by: ragnarok-clanker, gordaoprogramas, superintelligence, System4z
Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes).
Adds to the build: Source/Utility/Cipher/Tiger.cpp
2026-10-30 21:38:39 +00:00

341 lines
26 KiB
C++

#include <cstdint>
// GLOBAL: gl_25073
std::uint64_t g_tigerTable[4 * 256] = {
0xFC74C963E1A833ADULL, 0xDA20412297F47AE2ULL, 0x5E22924ABF32463CULL, 0x20E43242D10B3E43ULL,
0x97FCAAB354D7B96FULL, 0x4DB37205D23D4038ULL, 0xA8C112B0D1976B25ULL, 0x31AE125CBA7BA2CFULL,
0x8FB1D95015527C7EULL, 0x0C94F13679C452EAULL, 0x3EBDF0843039DD6BULL, 0x9EA53EA3F0396399ULL,
0xB4D4554A222B8CEBULL, 0x08C1DCB35EA8C2DAULL, 0x12F61A94FC389BFEULL, 0x59F9B856833371BFULL,
0x46332E718D41FA94ULL, 0x614CF48D80E98E27ULL, 0x429B91F2F574A7CEULL, 0x51AA8F57639ADC22ULL,
0x25FF440534B3A49BULL, 0x181369A41E6788B0ULL, 0xC07E56BC5B1D00FBULL, 0xB698A295914F84E2ULL,
0x4208B7E64873ABFEULL, 0x1B282B29EA32EEA7ULL, 0x9AAE77B4FEF3A675ULL, 0x58D303300B3089FFULL,
0xCB5F77159A8F0F9FULL, 0x6B994AEA035982DBULL, 0xC22BD508FD26A84CULL, 0x467BC128D28EEB59ULL,
0x9102849038E9A18CULL, 0x0958A6F878CE826BULL, 0x37F491BA4AB7F860ULL, 0x9250DB5CF62A8A01ULL,
0xA4F2ED6824909FC6ULL, 0xF3635F544B90D039ULL, 0xF81B99A8D48495C0ULL, 0x2B8233EE67127605ULL,
0x144F948D6C93EA6EULL, 0x3ACC560C5BAF6A64ULL, 0x078FFFF4CBBE8F8EULL, 0x1111D8CD2647BF56ULL,
0xD1D998FFF2E47242ULL, 0xCF71B901B80B52DBULL, 0x624F918DFF25C599ULL, 0x44EDD9E921DA45F4ULL,
0xDBC1E9BED4816874ULL, 0xA063595371B486A0ULL, 0x2B5D906280F959F1ULL, 0xD306286189B928EFULL,
0x320587CA047C9AF2ULL, 0xDEB3460378BA18B2ULL, 0x20B8DDA55E0A2A96ULL, 0xA08CC3273ED55827ULL,
0xE686721380B319DDULL, 0x5A5F80FFCC1CF620ULL, 0x7360762489785898ULL, 0xCA4FAC4A305FD5BCULL,
0xD764BAC95948F5F6ULL, 0x224927387CBC12DCULL, 0x13645D01F123D2E7ULL, 0x415FE2BA8025AF9FULL,
0x25804FCC702A1F6BULL, 0x378F0BCF6AA99AE5ULL, 0x0FB6902AC63BAA83ULL, 0x05CB74671C38D6CEULL,
0xC008201CE358852EULL, 0xAA133CA2A5E3503AULL, 0x49651091D880CF6CULL, 0x2675447005A94A4AULL,
0xA8CD5FB9A4D4584DULL, 0x69E3BBD23C7A72EDULL, 0xEF50FE64472331A2ULL, 0x837C71D74B660B13ULL,
0xEDEFDBA3B1AC68A9ULL, 0x7511865F216EE2DDULL, 0xC39918750322FF35ULL, 0x4ED0FA7BDE701939ULL,
0x7F5EA4EA1CC2C653ULL, 0xDE9BBE3A539E9E29ULL, 0xF32F9FE20C6EFB14ULL, 0x4671C17CBEC874ACULL,
0x4E0BCA7EC3258069ULL, 0x85632351D11CA8B3ULL, 0x7102549D62075441ULL, 0x9B6FD4CADC7C2C6DULL,
0x7B143D5FC7E487BDULL, 0x8887E5C5BDE70EAAULL, 0x4B31759405ED0ABBULL, 0x4DBA4554567D217AULL,
0xF46AFD7D19F1DB5DULL, 0xD8F9F487D60FA2DDULL, 0x63BED4F905200C82ULL, 0x3B42034C2DBC73D4ULL,
0xBA1D0AF8B75A8D4AULL, 0x76A760954B84A26EULL, 0xE8888F9A41A05CA6ULL, 0x87271D814157128BULL,
0xDD1E63C0A3017B95ULL, 0x60B319F00E46E03CULL, 0xA9AF9799EB8DF917ULL, 0x10596503B2401E8FULL,
0x4D5B1AE5FB05C62CULL, 0xA71B10A82E558A66ULL, 0xB812EDD5C2A7E3C5ULL, 0x06E81AE1618557D0ULL,
0xFAF51E5781555E01ULL, 0x3CC163BE8BB072DEULL, 0x13D39F6D062E19D0ULL, 0x39B41B0D7C07ED7FULL,
0x04DC6F1663F33432ULL, 0x1DC313003469A6A2ULL, 0xCCE18E5397E2AD38ULL, 0xB9DD6A86D4E7C06AULL,
0x6B100D2293ED76C1ULL, 0x3B1200AF4B7F38C4ULL, 0xC15BDB8565F48EEDULL, 0x9553F55C8913F0A2ULL,
0x0F92F88B1F25F59CULL, 0xB7AF4A9C9FC20723ULL, 0x240364159062BCDFULL, 0xBF16EE6F8B8C7D37ULL,
0x00703031E8BAC1B4ULL, 0x8F98D1D53F6232EEULL, 0xC4085BE1081D362DULL, 0x362624DECB534719ULL,
0x5EABC5240F9BFB2AULL, 0xA4DFC56B3D5FBBE7ULL, 0xB05A8E0BDD250EC9ULL, 0xFA93B69B67766E48ULL,
0xE913A67472CA61FCULL, 0x1762F64E7898704DULL, 0xFAF81E81EF7A23B2ULL, 0x0B4D869550D6D2C4ULL,
0xD1E9D5113345240CULL, 0xD643758F0F3F93EFULL, 0x80E4EC455E2C95F8ULL, 0x7844B3FC9694A39EULL,
0x16FB510B401E4468ULL, 0xE270400CE413F2EFULL, 0x742D16550A1B437BULL, 0x23A83CAF29AEB1B4ULL,
0x986A2A42AB34A221ULL, 0x4CEB68D62644BF2CULL, 0xA4B28DC313675F5BULL, 0x3B49F390F9051C27ULL,
0x781640D652A66C28ULL, 0xF2B2EDFEA4C2C8C5ULL, 0x2295527D69F0B888ULL, 0x803716EE27AAC4E7ULL,
0xA42FB3B85666637BULL, 0xF5D7AF62709D1FACULL, 0xFCC563851CE66E02ULL, 0x32828789A1ABC9F4ULL,
0x1D8673E6A872B71CULL, 0x4548BE23A9C5C2E0ULL, 0x1442D2D91C1A60C9ULL, 0x201A456178F91B5EULL,
0xE329806146DC6919ULL, 0xE3071A311F39C360ULL, 0x891B8D7B589AB0EDULL, 0x6CFF4FA59C85BA06ULL,
0x0629EA3932835753ULL, 0xDD02D4ADD1FB004EULL, 0x5A32957AF2775D5DULL, 0x0531A727FD7DA60AULL,
0x7666904E7A8692EBULL, 0x046BDA55F10AAB69ULL, 0x69B6EBB5D991371BULL, 0xEBB05C06BCB2EF5BULL,
0x230194B000C73ACFULL, 0x99102D5A5E7682E0ULL, 0xC4769D5E1D187D16ULL, 0x2E8C5D32C73585F9ULL,
0x3DF8E57FE2641001ULL, 0x7A13CDAD072FC7A5ULL, 0x7D848C339EDC017EULL, 0xAEB59CAB2F1468E4ULL,
0x942C838B125F428FULL, 0xA862CA4C0E2558C7ULL, 0x72EFD9667CFDE223ULL, 0x8A2B3770D440982CULL,
0x38BD7EE49E97D15AULL, 0x240E043862772725ULL, 0xC59762F5975B1025ULL, 0xA4EE2093C6CA15B2ULL,
0x398BB69A772BAD73ULL, 0xFCE89B71021752E1ULL, 0x759B59C21F169A64ULL, 0x1B0E66F31680EF94ULL,
0x87B74B9D9E0DD7F8ULL, 0x112E7F18F014CBEAULL, 0x61ED8CFBD41E6200ULL, 0xEF6BE8B0B2A306C3ULL,
0x122F2DED013B4DBBULL, 0x84B2B1FB4B5E904FULL, 0xAB8C1C62F67477F9ULL, 0xF015C8C9AB147A4FULL,
0x0AF45B8AC2B700CAULL, 0x43923F2BD2E5B3E2ULL, 0x3178EA256516E93FULL, 0x6D2BF510D1C13B28ULL,
0x4F16D764DF802036ULL, 0x5FC00AA9B7C912E2ULL, 0x15B014461105A7C2ULL, 0x187F7EC464DC494EULL,
0xC175A0AB3AA58EE0ULL, 0xB94A2273F9FADF2EULL, 0x45468BA32A51B391ULL, 0x201035C54533B4B1ULL,
0xA132C63FE11838E6ULL, 0x6F02A79A7787D8C8ULL, 0xD329506E70EA1CCEULL, 0x751E580372E76C72ULL,
0xDD3B3910E6D74F3AULL, 0x6226690E43523FAFULL, 0xAE68616523D0C248ULL, 0x1759C9ADFCD9618FULL,
0x4691F94E37E493EAULL, 0xA29878D06C7AE2E2ULL, 0xC5E5D0BA1303C41FULL, 0x16E17785B327B3E9ULL,
0x1C4406C9D54E35D8ULL, 0x4056D4EEE2EFD363ULL, 0x3ABF8B6C60930423ULL, 0x51D681CAD7C25290ULL,
0x3F356091C1F43312ULL, 0x3A628E49A4A12041ULL, 0xFBD6935AF960A194ULL, 0xFA08E95C48AB4E94ULL,
0x9F8216B609F87EA9ULL, 0x71CA94F1B4C0CB7BULL, 0x1A49E9A6E09A9B52ULL, 0xD0879E2A07E087E5ULL,
0x5C1C1A289F48169EULL, 0x0660E7F7212BA2E3ULL, 0x750A9B3E2401D16DULL, 0x13638F5612721D84ULL,
0x66036BD771E6FCCFULL, 0xE7628749DAD4E7B8ULL, 0x2E188A14A5D665B5ULL, 0x938CDEDF6A42F07FULL,
0xBD3709E3A1D02E4EULL, 0x15B274E8D1DA68C9ULL, 0x2372C75683E7466AULL, 0x6FF279951F7E30B7ULL,
0x61C9F44C2D18BD19ULL, 0x915ECEE5352D4738ULL, 0x762A60D6AE45746CULL, 0x99C562B811F7BD4CULL,
0x62A73CF2F6AD8941ULL, 0x6948552ED5DD72E4ULL, 0x162F47A22600FEBAULL, 0x00D5982761CE872EULL,
0xA0C2C1F51D8EA3B7ULL, 0x8E8E39B4C3CAEBFCULL, 0x12718ADCEB08B656ULL, 0xD4322AD40DD1AE5DULL,
0x4B4AA34580BD2979ULL, 0xF1016B970E04B042ULL, 0x5C1F0A420D6DDB3FULL, 0xE5FC0AEEE64112DAULL,
0x3300D1E24128EC99ULL, 0xB0E2F9C8A59AC3F5ULL, 0xE20BE8166C0F4D75ULL, 0x42F337452C0FD3A3ULL,
0x68225DDC6EF1FCF5ULL, 0xCC1FC4458A7E32E4ULL, 0xC6540226280E0B08ULL, 0x0D47A0E9BF09E1C9ULL,
0xFB812614C9176AAEULL, 0x169AEC1FBCBFFF31ULL, 0xF6EA8984214A17E8ULL, 0x05F877E990604C3CULL,
0xDA4D4CA8708914A5ULL, 0xCC6151474B3DF8CAULL, 0x74CC4E4E87E37005ULL, 0x6AE69A27CD15F4FCULL,
0xF656BF7975491B08ULL, 0xCF8623BB16085FB1ULL, 0x5FFC6F463ACA268FULL, 0x0C210BC237160909ULL,
0x7FAD6FA7C6557FA9ULL, 0x10E7327C3F20F2E5ULL, 0x7679CEAB2A0D1856ULL, 0x0BC9B9BA0E545B63ULL,
0x45507C2264BF1196ULL, 0xBDA69E8AB594F375ULL, 0xEB42894C778D687AULL, 0x46AEC3EE22F0FA1BULL,
0x5840D6FA50661FD0ULL, 0xA7B148E677664043ULL, 0xAC69813B005A05DBULL, 0xDFD02B7093E8E61FULL,
0xC89D8C1F98695A78ULL, 0xEE1A4E9E8775DB7EULL, 0xBBDDE786F784FF98ULL, 0xC56FC05F521D2F60ULL,
0x853880812EBAE25CULL, 0x73CFA193E4D1C2E5ULL, 0x169E891F2BFB35A3ULL, 0xF83BC17B5DA0B50EULL,
0x8F1FD1400057D88EULL, 0x54C241F6AD8A07BAULL, 0xDFAB8904BCCFC90BULL, 0x885410F4B58F98F9ULL,
0xE6537F5C30420A1CULL, 0x82013E95A48088CCULL, 0xD506C5378AD0AAB0ULL, 0x54DABCC96AABC831ULL,
0x9AD46AB5BC8A89E8ULL, 0x0EAE7881F8E3673AULL, 0x27BE6EB6B54EC8A2ULL, 0x8E9D94DC6C2545C7ULL,
0x8BB2A25B861E6600ULL, 0xD6971FCAA88282E6ULL, 0xC7C245932DF943F1ULL, 0xF5ADDA4CBCFB2FA9ULL,
0xD9DE375EACF08F75ULL, 0xFBDEF351967F0BFFULL, 0xB31488BCF2011A9DULL, 0xB91A6C09481F46D8ULL,
0x745619AE1F2EF548ULL, 0x5E612534D1B9D044ULL, 0x0DB3083314573F86ULL, 0xDAC44C03317FBA54ULL,
0x5C2B474BD0AAC857ULL, 0x1D41A3647850E3F7ULL, 0x93AFE6F67309A1BCULL, 0x38CB6969773C7B2DULL,
0x913DC335ED73D9B4ULL, 0x296F8EF25D3452E7ULL, 0x77E700073FF8604FULL, 0xF22FE20D0A478943ULL,
0x24AD9C7C4898466DULL, 0x83E9A6CC8F650F33ULL, 0xA77D887438447B2FULL, 0xFACFB90EEB9EE4B7ULL,
0xF359B200FF0BF073ULL, 0x39B11BE30EE218CDULL, 0x25504C2F9EDDC45BULL, 0x5FBDDD5C08429C77ULL,
0x2F6225E1F4CAF7C7ULL, 0x3CD5DD57E9BD7FB4ULL, 0xF08F6D2731B37AC5ULL, 0xF1083DE682449184ULL,
0xA8B8E51F45D75C67ULL, 0x8D47FC1902E512F7ULL, 0x270CCC8B31F67D9CULL, 0xE090FBDE5992E3EEULL,
0x7E6BF28AF321FD55ULL, 0x2AF55827785A1378ULL, 0x9CD6872D7E76CCB0ULL, 0x3B7505137D2D9295ULL,
0x816C5C52EFD7EBAFULL, 0x140102824A1C5056ULL, 0x5DFD8F2B18536921ULL, 0xC4B76D95EF168E99ULL,
0xF1A9027727DB3636ULL, 0x5B69083B5A2BFB70ULL, 0x6C60E5670E7D53DFULL, 0xBA3602749D5BC7EBULL,
0xBE4306E9BD2BCF1BULL, 0xE01F5B40B787E2F8ULL, 0xC72187FF32F59AEAULL, 0xED0203AFA8DD5D89ULL,
0xB82A57A89FC9A45CULL, 0xC1110B92704F17BDULL, 0x704F87E5C3B91D42ULL, 0x6D3B521800BD3074ULL,
0x1F6FF5B4CFB4E6DBULL, 0xFF61F8317745A8DEULL, 0x86AAC31791DAFEF7ULL, 0x49A1EEEEB5E960BCULL,
0xC3F0E01D4BFB65A6ULL, 0x7BFD322ECB98873DULL, 0xD8516CA7CC382CF9ULL, 0x6364D601B752ED41ULL,
0xB4CE28C3158042CEULL, 0x33E7C9676B38A2F9ULL, 0x7856437334F3A738ULL, 0xEA841C60F729B723ULL,
0x02F9BDC63B616B44ULL, 0x582DBDFD69252BF1ULL, 0x64A8869D09FB7ED3ULL, 0xAEE1AE2D934CDE52ULL,
0xAD619F06AE90D106ULL, 0xCBB1EFD1A47FE057ULL, 0xAE4606131B4093CCULL, 0xCF9B7E278CBC52DFULL,
0x8537CDA46F1CA416ULL, 0x8A916D113C0503FAULL, 0x3432D4D78AF20502ULL, 0x2DA2AB8EC26A13A8ULL,
0xCB49499E7CE4B572ULL, 0x96CE389E20E972F9ULL, 0x287B0EF736E1C485ULL, 0xD7F62432557421CEULL,
0x5DB812D5D70A123BULL, 0xF0396068521A2F36ULL, 0x580176554F3DCF65ULL, 0xEF97FB2226DB8C31ULL,
0x2C7438698E7CDC32ULL, 0xA600D580D19838D0ULL, 0xD6E34A00A5C62892ULL, 0x34950F70537034F1ULL,
0x587EAB4A833CD385ULL, 0xA92597F4BC738FB6ULL, 0xA1135B1748BDDE1CULL, 0xE6D07F1BDD71390EULL,
0xD1D46B78D4492826ULL, 0xFA96A6B5D59B32FAULL, 0xC890CA6C48E0D1D3ULL, 0xD5683DF3A4CF8B69ULL,
0x977778F373A2D923ULL, 0x975513C44B00337BULL, 0x4D79751D857020F7ULL, 0x205D4738C86B2A10ULL,
0xBA77D2CB6E59C76EULL, 0x8160CC3F0DC17058ULL, 0x0E908D0C2F4DCD68ULL, 0xB98F9FC92A431614ULL,
0x2AC489E0A65C02F5ULL, 0xC9B9C2E72DD01B73ULL, 0x1D04D3470577B726ULL, 0x9F0E4498E8896F65ULL,
0xD75F8C423CADABE9ULL, 0x5D6E15EC8A4CF2FAULL, 0x78C585E049EEEE30ULL, 0xD2EA45C4F31BF513ULL,
0xE146DD012E4A801BULL, 0x2E61C53F33F537BFULL, 0x21D275C5CAA27188ULL, 0x5203944D5BEAD80EULL,
0x487A7B1D5E35C299ULL, 0x5CB0B2DE4AFBC8D1ULL, 0x273DC108A8C3523DULL, 0x3E79200200170847ULL,
0xEC0B6676DA6D4165ULL, 0xD85DFCCA9E4E973FULL, 0x89E55A87D321803FULL, 0x584C1825F29085DCULL,
0xEDDAAE2CA4F11E9DULL, 0xA04683033EEDC2FBULL, 0x29E941544BEC0B8EULL, 0xDF5C5E8542565FBEULL,
0x3B05332FCAD34702ULL, 0xC57D68AA2CEA4BF4ULL, 0x153B748D10E5D21AULL, 0x93B9D042EE7A76EDULL,
0xC68D157F3D01BDC5ULL, 0x3800A98D77240059ULL, 0x5FDA04F4224AF703ULL, 0xA473B05CD7EAEA69ULL,
0xBE42441CFE8D70D4ULL, 0xF7E127BD0FBB230CULL, 0xE5C6D2B791EC5949ULL, 0x127AEDA21DA7AB32ULL,
0xF464CF060B569141ULL, 0x031EF23BE39F82FCULL, 0xC90E0CD84DEB18DCULL, 0xCCCE665690A2C958ULL,
0x76C4983D667BFEFAULL, 0x6D981A0525C04F48ULL, 0x0A947436562723ACULL, 0xD47F2D57710924CCULL,
0x5580BEC11DEEA8F0ULL, 0x13609F2CA45E58D2ULL, 0x878748F0ACC08CD9ULL, 0x296D4195AEBDDC8CULL,
0x818921A212ADBF44ULL, 0x167451907F28AFC9ULL, 0x52B759F85FA63252ULL, 0xDBA7B13F28AFD199ULL,
0xFAEFE1D063BA04F4ULL, 0x67E66062A84052FCULL, 0x7933C84C4FD93529ULL, 0xCA4F7F27FFFD23F3ULL,
0xC092FE5B0214B5E2ULL, 0x04A4CD701EB5438DULL, 0xEE0D73FE9C69844DULL, 0x0524795C0398C2AAULL,
0xE3835823FDCAA32CULL, 0xEEB086DBD087905BULL, 0xAF248BEC363611AEULL, 0xAE56D1EE7571BEAEULL,
0x43D00F4835CEEEC3ULL, 0x26188C84E0963B85ULL, 0xCE97D1381D600B6CULL, 0x84E586CD33B6F7F0ULL,
0x006A02BACB1E87A8ULL, 0xBACEDF895DF212FDULL, 0x295883C050D84277ULL, 0xC7B187E84E488D9EULL,
0x1A515379ADBC6CD9ULL, 0x9BB07FDB06AA57C2ULL, 0xD26673A6D1ACD5DFULL, 0x47DAC661A6287089ULL,
0x6196F175DDA79E58ULL, 0xC9007C7A0DA0D8D3ULL, 0xD8C1CFE8BFBDB674ULL, 0x144062274B44A0C1ULL,
0x1517ECDE59EE2D33ULL, 0x45ACB6776103B742ULL, 0x2A785868DA2BE476ULL, 0x4D135A4A4ECD2D56ULL,
0x16F524842373FA5CULL, 0x1D964DB001A3E2FEULL, 0xDA7D4F4452D66FC5ULL, 0xB42380BA9D94F738ULL,
0x5410B988495413C1ULL, 0x32DC2246FF905B06ULL, 0xC6CF726E17EE2661ULL, 0x8880126639A71E68ULL,
0xFF989BD8CC839983ULL, 0xA560532A4ADA205CULL, 0x007D02D439334B49ULL, 0x994AF270221782E4ULL,
0xE85ECA758D0F5CA3ULL, 0x6430E15AD261430FULL, 0x9669D0A898D5BD8FULL, 0x07412FD758D543BDULL,
0x1D70456F9AD77D0FULL, 0x706EBCD7B654A2FEULL, 0x7AA20AB954D47C12ULL, 0xB195987BEBEF51D3ULL,
0xAFEF1EA6F5EDDAB9ULL, 0xDAE8D4A1E8856F4BULL, 0xAB3872266D1087F2ULL, 0xB9466F7BCC37BC46ULL,
0x8E9B343AAC5F84BFULL, 0x80BF49D9770368D5ULL, 0x381A46D1B3BAE01FULL, 0x1E3483C9F9EB7406ULL,
0xBAA5A71BA11F9B12ULL, 0x73D41B4D42DECFCBULL, 0x034A57D866909699ULL, 0xB07FF35473EC7913ULL,
0x23FB6739F22CE0B3ULL, 0xC4452A0E6BF672FFULL, 0x2AC7B63D56D39960ULL, 0xBF17A14C3A2BCB7EULL,
0xF9AE74B4918581A0ULL, 0x61F4871DE17B6380ULL, 0x9F9171DEA353D884ULL, 0xFAFCBC815EC66A25ULL,
0x1C9EDE8C8C3C8FFBULL, 0x5B0F3078A33CB05DULL, 0x50B77ADD3D3075F5ULL, 0x932E1302C0BE5629ULL,
0x7CEB85A1C43FCA82ULL, 0x93684620B34B4B88ULL, 0x6F2BDF18245A6FA3ULL, 0x79BDC8E18EE49F7AULL,
0x398688135A805366ULL, 0x271D992520A732F0ULL, 0xDBEC71A157D1A6BDULL, 0xAC89B90D99762518ULL,
0x436DD9D23C2E4898ULL, 0x08103988D95077C4ULL, 0x83F97196E8953915ULL, 0x3CA20886E1550803ULL,
0x9AA177EE6C187A26ULL, 0x375F2627D066F8D6ULL, 0x8954BDC9C6A61ACAULL, 0x0928A45C9682384CULL,
0x4E226247E850F9F2ULL, 0xB2FC701324B9D745ULL, 0xDB1C5648E11448BCULL, 0x32EB9C6E99FBC5D1ULL,
0x4F01AAFDB2E4D61AULL, 0x8AE5075DD559F200ULL, 0x7B113D2569C0B30BULL, 0xA9FBC2DEE8C19FB3ULL,
0x8D3C2FE0D8C6FF8FULL, 0xAF2CECE3C2457B09ULL, 0x6762704E2ED88AA7ULL, 0x7D68559B84E5B6E2ULL,
0x28A401304CF57552ULL, 0x12BF1DC60D8F406FULL, 0xB101F1C5402DAF90ULL, 0x8E1234956D452A6EULL,
0x117930DD0C703861ULL, 0xD1909BF6A5265301ULL, 0x47FDDE89AFDF11C6ULL, 0xEC1951FBA302EB37ULL,
0x468BBBC7194949CEULL, 0xDDBD7684890AC201ULL, 0x2B35F8996BCED059ULL, 0xA67DDAAF371DF95EULL,
0xD8FB840E746EB687ULL, 0x37389E5EBB3B8F4DULL, 0x5CCB7007641AEB39ULL, 0xAE1EA190177454C1ULL,
0xB7A7AA923BD1608DULL, 0xED0F03754AB988E7ULL, 0xD9AE34B1CAA34466ULL, 0x030CC5EE44180C81ULL,
0xD3B01D73309167D1ULL, 0xE023C5EA1583EFCEULL, 0xB4DE55C96D99EAEFULL, 0xA5572579BE1A019EULL,
0x5C16DDA181ADCC71ULL, 0x3195E4AB3EBB8201ULL, 0xDB5AB41D6DCCEDA6ULL, 0xA4EFE360856863F8ULL,
0x22BAEA2C20076D7FULL, 0xDE5341B9A4208382ULL, 0x40247FBFBA4C3CCAULL, 0xE0C4FEA5A9F302AFULL,
0x35BA44E41BBD5BB9ULL, 0xC85FFA1476E2D060ULL, 0x014B78BD4429D93BULL, 0x780555271BECFEA3ULL,
0xA5F7FB0953B1A641ULL, 0x00B7F0DD86F16B8AULL, 0x10CEDDF93B44C3F9ULL, 0x6E84FA06D92137F5ULL,
0x6291FE7BE9F13F25ULL, 0x946D53D2E35D5202ULL, 0x7C8F7F916FCB0AF4ULL, 0x9150FB31D4A3CD93ULL,
0x6C884F3ACB9F2466ULL, 0x756FF324AC1687C7ULL, 0x349D7F77FF8F9D5CULL, 0x21894AAA3C83A08EULL,
0xC3BDED46FB8A56E5ULL, 0xA4BFE0C4A31B18E8ULL, 0x3AF8BBA9CDA06E01ULL, 0xFEFFE670E1BFD0C6ULL,
0x774ED8A077C1D5B0ULL, 0x2F5B2AB0F76EF747ULL, 0x8CAF5439F80E9C03ULL, 0x17B2CE93E4385D5BULL,
0x681C10564156B2D9ULL, 0xF735C1F9A80E1203ULL, 0x2CA43B0560C91742ULL, 0x9ED204F333FF273DULL,
0xB647A5596737DB5EULL, 0x0D7BA68F950B9B0BULL, 0x18F67E3F35C1EEEEULL, 0x523F97BFCF125E6DULL,
0x52B087A9DB664110ULL, 0x7F0FD773D0455061ULL, 0x5295FFA6472603D6ULL, 0x73E976C9B883C2E9ULL,
0x3A85B6469BE21420ULL, 0x3EEF55A368DC7304ULL, 0xF880DC69B6C8751CULL, 0xD1F09310FE3083B2ULL,
0x7FA73120A8BA259CULL, 0x4A1D30205CBFE203ULL, 0xDCC9F68A72B734AFULL, 0x9B441CC4824A91D8ULL,
0x01060A6703D08246ULL, 0xA49758FB8EE09F40ULL, 0x0D5F7EE77B043F7FULL, 0x93E5E3B562A2FC5BULL,
0xD0C220FBBA424C4CULL, 0x5A5FCD120D7EA8EAULL, 0x8A3132A2D19D98ACULL, 0xE8E3F7028F56A41BULL,
0x0CCC93DCBF02439FULL, 0x5D738F86E8490FC0ULL, 0x556153A974834E26ULL, 0x9A2E67AD0947A929ULL,
0x8522530A001FA840ULL, 0xAEE49E470161A204ULL, 0x7CFEB2FE74B641FDULL, 0x89B62585D096FB83ULL,
0x4BC56085AF78493DULL, 0x4BA30B6677D6A385ULL, 0xF1C87DAFB1469001ULL, 0xD5AB30CAF4319A3AULL,
0x6EC5CA5D9A2F3778ULL, 0x35BEB4C14998E062ULL, 0xB2EE769E5B133D72ULL, 0x6DDD875B6619963EULL,
0xDE137172E322820FULL, 0x7D17BA7959B68B8DULL, 0xC152DBD9324D2730ULL, 0x535C3C2A145FDF8FULL,
0x8BAD75E478731BF3ULL, 0x01BC0D7EB6127205ULL, 0x2D137D7276B46E4BULL, 0x86383D562FE1652DULL,
0x9594C5935A11F025ULL, 0xE2BFBDC160CBA7D9ULL, 0xD5206D570688E192ULL, 0x06518CDF87B04818ULL,
0xFCC863AF8A0B32A3ULL, 0x010EAA6076C138EBULL, 0xEB8BB99AD499C247ULL, 0xE3C718953CED7851ULL,
0x90595E080643B17FULL, 0x8CABE45CCA14075AULL, 0x3D3342190FF7F049ULL, 0x0C9A00B73F66F5E6ULL,
0x913896BED0D78EA7ULL, 0x54947CA66BC43205ULL, 0xDD3839E677B37B98ULL, 0x83AA46277E3CCFC8ULL,
0xEF532BB1F6B9B71DULL, 0x7ADB603C68B0BB1EULL, 0xC9896C104CBB4234ULL, 0x4707D9D41A40E6F7ULL,
0x7BDB0D016AD82DDFULL, 0xEC5E911FA3FA7064ULL, 0x0328FD865E10671DULL, 0x68C1A8EE03B05A73ULL,
0x63903CAE2A53F0FEULL, 0xAB3F1F4F3B819316ULL, 0x9A14CA5ACDB2D953ULL, 0xC6C8D534497D2B4CULL,
0xA8B3B898372C015BULL, 0xB76CEACD2F65F206ULL, 0x8D6DF46A79B188E6ULL, 0x711C5EE8DD783963ULL,
0x3A1280DF92416E04ULL, 0x11E7129751A6BF53ULL, 0xBEF26CC882FD93C6ULL, 0x88CD25E9ADDF94D6ULL,
0x09DEA65349B4280BULL, 0xC7BE87BED024C8ECULL, 0x3BD53082D896FCE3ULL, 0xDDBB3927DA834C96ULL,
0x35E719344E742F6EULL, 0xCAD34933ABFE1FD3ULL, 0x0605418A8B7CA26DULL, 0x8FF6A9C2547541A3ULL,
0xBE3DD9629F80740EULL, 0x1B3459F4D416C207ULL, 0x2D81B0EE8BBFA533ULL, 0x7E9E67B92BC3930DULL,
0x74E1E6ED3EEA25FCULL, 0xB8F2B5024A8BC397ULL, 0x925B6B80C83FF457ULL, 0xBA7362EE406E32B4ULL,
0x97D140B529901336ULL, 0xA20E7E6D0C5D0065ULL, 0x6372747E620D91B8ULL, 0x52A5C970A1572EB9ULL,
0x072EF7DA62945EDEULL, 0xDA6674162C6CAB9FULL, 0x72E6C9CA49377B76ULL, 0x38347E5F6F8C670AULL,
0xB4B8FB4CF7E5F7B2ULL, 0x6E1CC71B89C88207ULL, 0xDEA67B528DAEB281ULL, 0x7B0F7F7B7A1F0DA8ULL,
0xCEA04B0CD982DCE3ULL, 0x4F1E676D3371C7DCULL, 0x86B46B480E7245E9ULL, 0xFB28BEF3D2FEE093ULL,
0x25E4E918097D0E62ULL, 0x7E5E641D497658EDULL, 0x8C1FB77AEB83268EULL, 0xD8AE5AC9871A10DBULL,
0xC965D47195B49D4DULL, 0xF9FAAE099DD9275CULL, 0xDEC640FA06F15480ULL, 0xF16142DC7A949D60ULL,
0xCA431C176F496A66ULL, 0xC1E436423E795208ULL, 0x8ECB37D78EACDFDFULL, 0x6871884CC96A6742ULL,
0x196EA11A852B93DBULL, 0xE72A1AD82B66CB10ULL, 0x7A2D6AF053B4A67BULL, 0x3CEE0BF8658D8E72ULL,
0xA4E7836AF95909ADULL, 0x59BE5BBC76A09066ULL, 0xB4CCFB776509BB64ULL, 0x4D98EA025EEEF2FEULL,
0x9CBCB207B9D5CCBDULL, 0x188ED9EC0E37B319ULL, 0x4BB7C83AD4BB2D99ULL, 0xBB9F176994ABB3C7ULL,
0xD1CE3EF1C6ADED19ULL, 0x25BCA469E22A1208ULL, 0x2EF0F24B80AAEC2CULL, 0x66F3900D18B5C1EDULL,
0x533D063821C34AC3ULL, 0x8E36CC44245BDF55ULL, 0x6F866AB899E7F70CULL, 0x7D94570EF80D3C50ULL,
0x32E92CCCD835F4D9ULL, 0x340E416BA3D9D8EFULL, 0xEC683E63EF805039ULL, 0xC2827B5B25B1E410ULL,
0x6EF39FADDDF50B2DULL, 0x372203DF7EA43FD5ULL, 0xB7984F6A926606A3ULL, 0x64DDEBE6AFB2E92EULL,
0xD7495FDB2EF250CDULL, 0x8894139097DCE209ULL, 0xDE15BECF82A9097AULL, 0x6365A9DE76F13B88ULL,
0xADFC6C46CD5BF1BAULL, 0x15427FAF1D41D39AULL, 0x43EF6960DF29589EULL, 0xAF4AA4138B9CDA3FULL,
0xC0FCC61EB802FF05ULL, 0x0F5D280AD0032077ULL, 0x0505726F6906E50FULL, 0x478C0B94FC84C633ULL,
0x203A7D33F1053A9CULL, 0x47B63EB2EF11CB92ULL, 0x2379C7AA5020DFBDULL, 0x2D0BB073BACA0F84ULL,
0xEDD471A58656D371ULL, 0xDB6B81C85C7DA21AULL, 0x8F3A793394A716C8ULL, 0x60D7A2AFC54C9522ULL,
0xF7BBC16468F4B8A2ULL, 0xBC6E211A0636E7DEULL, 0x37586928156BAA20ULL, 0xE000F0182D2B781EULL,
0x4EFF6F7098EEEA30ULL, 0xEBBD1EB90C3C68F0ULL, 0x3DB2B55BF28C8AD4ULL, 0xBD769CEEC258B856ULL,
0xF2805AD914267A0CULL, 0x664A68A5608F475FULL, 0x8F6A4FEA1DEBB8D6ULL, 0xE63984F0C5C135EBULL,
0xF35F928FEEBA4624ULL, 0x3E33F0EF012F721AULL, 0x2F6F25B795963315ULL, 0x5D59BA6014970FCDULL,
0x328A2782049C6FAAULL, 0x547AD475FE1BEB13ULL, 0x2BB068D15AAEFBB1ULL, 0x21B64D2DB0BB26FCULL,
0xDDF209C278CBE56CULL, 0xC60D05583965B079ULL, 0x655FE9577CF31FAAULL, 0x32602C27A92B9A78ULL,
0xC5C7386F3846A97BULL, 0x85EE9399D1FCC31BULL, 0xFC4BC61BDBA581E0ULL, 0xA077598EDFD85B41ULL,
0xFADAB459561FB9D8ULL, 0x921B6E16B5D0321BULL, 0xDF84E03B97944063ULL, 0x5BCBC33163E36968ULL,
0x8C498C90B0342691ULL, 0xFB8686E0E701FF58ULL, 0x0019689990E05C43ULL, 0x526C9922434AC4DBULL,
0x6B05A22467A7D098ULL, 0x915DFB07768FF8F1ULL, 0x8DFC2C43F679B470ULL, 0xB76ABD7070EF7C9BULL,
0x870E15056C67E8EBULL, 0x9472CD7C416A5FD8ULL, 0x682C4E5BA96F6AFAULL, 0x59A52D1BFAE081A8ULL,
0x0064D533BD733C8BULL, 0xE5E3DD3D6A81F21CULL, 0x8FA8ACAF99925DB1ULL, 0x583DDBF2B13ED302ULL,
0xD608E2BE5CDDDD89ULL, 0x82A2394BE0F6F39CULL, 0xF4726751E622ADD4ULL, 0x9422E637D6CA72B9ULL,
0xE9083C864783DBC3ULL, 0x7CBDE2B7A3B8407AULL, 0xB6A9604F70F04945ULL, 0x2C544DC947B26EBEULL,
0x5945E39C8087175BULL, 0xB405F86FB2C7DB95ULL, 0xC41DC58B671A3303ULL, 0x12D3E29805F7A70FULL,
0x16EFE70E15D8AF4FULL, 0x48BB4B641F33C21CULL, 0x20DD67239B917A1EULL, 0x45BFE4C4008A3DADULL,
0x10D737CDF7759470ULL, 0x29BDEBB6D9EC07D1ULL, 0xE8EB67092C550E66ULL, 0xD5D8323C685910A8ULL,
0x770BD5D92750C6FFULL, 0x580DD856DFE188F3ULL, 0xEE46A33BFA76EE1BULL, 0xA24DDE021E8540E0ULL,
0x2B9CC032A39746CAULL, 0xD3A9124223346751ULL, 0x30FD4DCB24D40C1DULL, 0xDC10B625100FCD75ULL,
0x1D6A08E87D2C22F3ULL, 0xAB93BA8BD4D4821DULL, 0xD0F22398AC9F876CULL, 0x4220FC856FC5A758ULL,
0x6B959DEB930E4B68ULL, 0xC1C99E21C1D10B15ULL, 0xCC4466C161975FF8ULL, 0x068D8F42FBE8CE87ULL,
0x061E7F3B073CB12BULL, 0x335DCF050C1BD07BULL, 0x16E3E73883FC73E1ULL, 0x27476E5BE4593203ULL,
0xFED3AED8C7B8853AULL, 0xE23D4D35A4A2E31EULL, 0xADDEC4FBE29EE527ULL, 0x854E8BA22A16F3DCULL,
0x23F52AC2D58095A6ULL, 0xFF6B28B28886521DULL, 0x8017EE1CAE9EA4B9ULL, 0x40920556BE1001F2ULL,
0xB554F2F93FA60250ULL, 0x58E5408DBAB60F6AULL, 0xB1AD6679A7DAB089ULL, 0x4733DB579E786C65ULL,
0x9411188DE619BC56ULL, 0x0EBDB5A4394418F4ULL, 0x3E902A340D6308B6ULL, 0xAC31FF94BB2C1425ULL,
0xB01A8B6EEBD8B4AAULL, 0x02C17718151F7FEAULL, 0x09CF4C3BA059BE30ULL, 0x4E7C5F3F351D1933ULL,
0x39704B9C4CE5185AULL, 0x523397E93D37121EULL, 0x304CAA80A08CB107ULL, 0x3D041D270C6C6B9DULL,
0x0F235817EB4EB947ULL, 0xFFF1F3F8A3AC13AFULL, 0xA5166531ED1C011BULL, 0x89F9285C21071A44ULL,
0x1213B2EFD6F5A782ULL, 0xE90DAC53766E507CULL, 0x673C6E2087E9AD8CULL, 0x112B8FEE92EF0648ULL,
0x826169041FF9F329ULL, 0x2165A20B858CFBA7ULL, 0x75A0C37B7E13974AULL, 0x07AA24BC40254F99ULL,
0x4FFB6D76A4498B0EULL, 0xB51A0501E2E8E21FULL, 0xD1616504A28ADE55ULL, 0x3A8626E85BB7D537ULL,
0x49E2BE3587E7603FULL, 0x960DA553AC9117E3ULL, 0x897F65E9335E62BDULL, 0xCAAF7461B396B823ULL,
0xA0265B31B6D1A2BDULL, 0xC55C92F2A297A8F5ULL, 0x9FD9A12C01603252ULL, 0x9715002769B3E86BULL,
0x54A8469A32192299ULL, 0x40F9DDFEF6FA8764ULL, 0xE1814BAC3BDE6053ULL, 0xB1E8F8496B3C65F0ULL,
0x46868E400CAE0EB1ULL, 0x08E26438979AA21FULL, 0x81862188A389EBA2ULL, 0x37F83EB9AA023FD2ULL,
0x94A11343228F2727ULL, 0x2E2958CE94872B28ULL, 0x7ED764A27881B34EULL, 0xFB55C16646165601ULL,
0x3F29F59396BE9DE9ULL, 0x90AC89A1DFC0E07EULL, 0xB776E5188AE6D727ULL, 0x1C1F90703F86DA8DULL,
0x17EE243056396108ULL, 0x5F8D07D267570320ULL, 0x4E72C2ECF988496DULL, 0x7A16CDD776449B57ULL,
0x5C01A02A64027165ULL, 0x6CBAD25F5B4B7210ULL, 0x31BBECFCA58708F0ULL, 0x256A477A095EA97DULL,
0xEE707961CE17DE1EULL, 0xC5350A298D7C2F6DULL, 0x6240546ABEC304D0ULL, 0x3C1B1D7BD9A504E0ULL,
0xBD2C9EF5758A9815ULL, 0x7B0C7F500CFA38F6ULL, 0xEF232814146C6CFDULL, 0x810921C9065ABCA0ULL,
0xE93501C67A4A9078ULL, 0x7F2132C5E8C58FEDULL, 0xBA533A1CB7421277ULL, 0x33449154805BB1BDULL,
0x628CC1F4CB56E419ULL, 0xCF82418600EC3211ULL, 0xD1D0A870B785154EULL, 0x22EC5F4C57990317ULL,
0x283FDE706AB09506ULL, 0x6C41BD94766133A1ULL, 0x56A95312F4066561ULL, 0x7EC16A707C35A2CEULL,
0x4B2F384855668350ULL, 0x565C66F03923707FULL, 0x18C06C009EE301D2ULL, 0x07F3B102DD2D9EC3ULL,
0xBB7CEF6D9E6ADFE8ULL, 0x9EB56CA858321BAAULL, 0x2634B15C750DFB80ULL, 0xEC8266E19B52E714ULL,
0x6816E3DF23BB67CCULL, 0x226ABFADB59E0211ULL, 0x82F463E4B984229BULL, 0x2F5E680DA6E57DB2ULL,
0x72FE349E16584CFEULL, 0xF36C6F0F6F4737E6ULL, 0x3A0253DA3A48B6F3ULL, 0xAF77B6850EC450ADULL,
0xD932D1AA45438E8CULL, 0x22AC5CAF755DC8F8ULL, 0x306DAF0D185996A8ULL, 0x8CFD425BB4F080E5ULL,
0x7EB3CC03C18A0E57ULL, 0xAD48979BC9AF9766ULL, 0x9225398C43C7C49AULL, 0xA6B03A6EA66A0D7AULL,
0x7F9104B99B1FDA70ULL, 0x75322ED46A4FC212ULL, 0x32292F69BA724FE9ULL, 0x2CCF70DEF530D75DULL,
};
// INLINED
inline void TigerRound(std::uint64_t& a, std::uint64_t& b, std::uint64_t& c, std::uint64_t x, int pass) {
c ^= x;
a -= g_tigerTable[static_cast<std::uint8_t>(c)] ^ g_tigerTable[256 + static_cast<std::uint8_t>(c >> 16)]
^ g_tigerTable[256 * 2 + static_cast<std::uint8_t>(c >> 32)] ^ g_tigerTable[256 * 3 + static_cast<std::uint8_t>(c >> 48)];
b += g_tigerTable[256 * 3 + static_cast<std::uint8_t>(c >> 8)] ^ g_tigerTable[256 * 2 + static_cast<std::uint8_t>(c >> 24)]
^ g_tigerTable[256 + static_cast<std::uint8_t>(c >> 40)] ^ g_tigerTable[static_cast<std::uint8_t>(c >> 56)];
if (pass == 0) {
b *= 5;
} else if (pass == 1) {
b *= 7;
} else {
b *= 9;
}
}
// OFFSET: 0x00B13CC0
// FUNCTION: fn_18416
void TigerCompress(const std::uint64_t* block, std::uint64_t* state) {
std::uint64_t a = state[0];
std::uint64_t b = state[1];
std::uint64_t c = state[2];
std::uint64_t x0 = block[0];
std::uint64_t x1 = block[1];
std::uint64_t x2 = block[2];
std::uint64_t x3 = block[3];
std::uint64_t x4 = block[4];
std::uint64_t x5 = block[5];
std::uint64_t x6 = block[6];
std::uint64_t x7 = block[7];
const std::uint64_t aa = a;
const std::uint64_t bb = b;
const std::uint64_t cc = c;
for (int pass = 0; pass < 3; ++pass) {
if (pass != 0) {
x0 -= x7 ^ 0xA5A5A5A5A5A5A5A5ULL;
x1 ^= x0;
x2 += x1;
x3 -= x2 ^ (~x1 << 19);
x4 ^= x3;
x5 += x4;
x6 -= x5 ^ (~x4 >> 23);
x7 ^= x6;
x0 += x7;
x1 -= x0 ^ (~x7 << 19);
x2 ^= x1;
x3 += x2;
x4 -= x3 ^ (~x2 >> 23);
x5 ^= x4;
x6 += x5;
x7 -= x6 ^ 0x0123456789ABCDEFULL;
}
TigerRound(a, b, c, x0, pass);
TigerRound(b, c, a, x1, pass);
TigerRound(c, a, b, x2, pass);
TigerRound(a, b, c, x3, pass);
TigerRound(b, c, a, x4, pass);
TigerRound(c, a, b, x5, pass);
TigerRound(a, b, c, x6, pass);
TigerRound(b, c, a, x7, pass);
const std::uint64_t temp = a;
a = c;
c = b;
b = temp;
}
a ^= aa;
b -= bb;
c += cc;
state[0] = a;
state[1] = b;
state[2] = c;
}