; ************************************************ ; *** SNEFRU (v2) 128/256 bits with 4/8 rounds *** ; *** UFO-Pu55y//SnD [03-2008] *** ; ************************************************ ; ; Usage: ; ---------- ; invoke SNEFRU, addr Input, lenInput, 128, 4 ; or ; invoke SNEFRU, addr Input, lenInput, 128, 8 ; or ; invoke SNEFRU, addr Input, lenInput, 256, 4 ; or ; invoke SNEFRU, addr Input, lenInput, 256, 8 ; ; or each with customized init values like: ; invoke SNEFRUEx, addr Input, lenInput, 128, 4, 001234567h, 089ABCDEFh, 0FEDCBA98h, 076543210h, 0, 0, 0, 0 ; or ; invoke SNEFRUEx, addr Input, lenInput, 256, 4, 001234567h, 089ABCDEFh, 0FEDCBA98h, 076543210h, 001234567h, 089ABCDEFh, 0FEDCBA98h, 076543210h ; ! NOTE: Usual inits are 0, 0, 0, 0, 0, 0, 0, 0 ! ; ; ----------------------- ; RETURN VALUE: EAX = Pointer to digest (4 or 8 dwords) ; ----------------------- SNEFRU proto :dword, :UINT, :UINT, :UINT SNEFRUEx proto :dword, :UINT, :UINT, :UINT, :dword, :dword, :dword, :dword, :dword, :dword, :dword, :dword SnefruTransform proto :dword, :dword SnefruInit proto :dword, :dword SnefruPadding proto SnefruUpdate proto :dword, :dword SnefruFinal proto .const SIZE_SNEFRU128 equ 16 SIZE_SNEFRU256 equ 32 .data snefruSBox1 dd 064F9001Bh, 0FEDDCDF6h, 07C8FF1E2h, 011D71514h, 08B8C18D3h, 0DDDF881Eh, 06EAB5056h, 088CED8E1h dd 049148959h, 069C56FD5h, 0B7994F03h, 00FBCEE3Eh, 03C264940h, 021557E58h, 0E14B3FC2h, 02E5CF591h dd 0DCEFF8CEh, 0092A1648h, 0BE812936h, 0FF7B0C6Ah, 0D5251037h, 0AFA448F1h, 07DAFC95Ah, 01EA69C3Fh dd 0A417ABE7h, 05890E423h, 0B0CB70C0h, 0C85025F7h, 0244D97E3h, 01FF3595Fh, 0C4EC6396h, 059181E17h dd 0E635B477h, 0354E7DBFh, 0796F7753h, 066EB52CCh, 077C3F995h, 032E3A927h, 080CCAED6h, 04E2BE89Dh dd 0375BBD28h, 0AD1A3D05h, 02B1B42B3h, 016C44C71h, 04D54BFA8h, 0E57DDC7Ah, 0EC6D8144h, 05A71046Bh dd 0D8229650h, 087FC8F24h, 0CBC60E09h, 0B6390366h, 0D9F76092h, 0D393A70Bh, 01D31A08Ah, 09CD971C9h dd 05C1EF445h, 086FAB694h, 0FDB44165h, 08EAAFCBEh, 04BCAC6EBh, 0FB7A94E5h, 05789D04Eh, 0FA13CF35h dd 0236B8DA9h, 04133F000h, 06224261Ch, 0F412F23Bh, 0E75E56A4h, 030022116h, 0BAF17F1Fh, 0D09872F9h dd 0C1A3699Ch, 0F1E802AAh, 00DD145DCh, 04FDCE093h, 08D8412F0h, 06CD0F376h, 03DE6B73Dh, 084BA737Fh dd 0B43A30F2h, 044569F69h, 000E4EACAh, 0B58DE3B0h, 0959113C8h, 0D62EFEE9h, 090861F83h, 0CED69874h dd 02F793CEEh, 0E8571C30h, 0483665D1h, 0AB07B031h, 0914C844Fh, 015BF3BE8h, 02C3F2A9Ah, 09EB95FD4h dd 092E7472Dh, 02297CC5Bh, 0EE5F2782h, 05377B562h, 0DB8EBBCFh, 0F961DEDDh, 0C59B5C60h, 01BD3910Dh dd 026D206ADh, 0B28514D8h, 05ECF6B52h, 07FEA78BBh, 0504879ACh, 0ED34A884h, 036E51D3Ch, 01753741Dh dd 08C47CAEDh, 09D0A40EFh, 03145E221h, 0DA27EB70h, 0DF730BA3h, 0183C8789h, 0739AC0A6h, 09A58DFC6h dd 054B134C1h, 0AC3E242Eh, 0CC493902h, 07B2DDA99h, 08F15BC01h, 029FD38C7h, 027D5318Fh, 0604AAFF5h dd 0F29C6818h, 0C38AA2ECh, 01019D4C3h, 0A8FB936Eh, 020ED7B39h, 00B686119h, 089A0906Fh, 01CC7829Eh dd 09952EF4Bh, 0850E9E8Ch, 0CD063A90h, 067002F8Eh, 0CFAC8CB7h, 0EAA24B11h, 0988B4E6Ch, 046F066DFh dd 0CA7EEC08h, 0C7BBA664h, 0831D17BDh, 063F575E6h, 09764350Eh, 047870D42h, 0026CA4A2h, 08167D587h dd 061B6ADABh, 0AA6564D2h, 070DA237Bh, 025E1C74Ah, 0A1C901A0h, 00EB0A5DAh, 07670F741h, 051C05AEAh dd 0933DFA32h, 00759FF1Ah, 056010AB8h, 05FDECB78h, 03F32EDF8h, 0AEBEDBB9h, 039F8326Dh, 0D20858C5h dd 09B638BE4h, 0A572C80Ah, 028E0A19Fh, 0432099FCh, 03A37C3CDh, 0BF95C585h, 0B392C12Ah, 06AA707D7h dd 052F66A61h, 012D483B1h, 096435B5Eh, 03E75802Bh, 03BA52B33h, 0A99F51A5h, 0BDA1E157h, 078C2E70Ch dd 0FCAE7CE0h, 0D1602267h, 02AFFAC4Dh, 04A510947h, 00AB2B83Ah, 07A04E579h, 0340DFD80h, 0B916E922h dd 0E29D5E9Bh, 0F5624AF4h, 04CA9D9AFh, 06BBD2CFEh, 0E3B7F620h, 0C2746E07h, 05B42B9B6h, 0A06919BCh dd 0F0F2C40Fh, 072217AB5h, 014C19DF3h, 0F3802DAEh, 0E094BEB4h, 0A2101AFFh, 00529575Dh, 055CDB27Ch dd 0A33BDDB2h, 06528B37Dh, 0740C05DBh, 0E96A62C4h, 040782846h, 06D30D706h, 0BBF48E2Ch, 0BCE2D3DEh dd 0049E37FAh, 001B5E634h, 02D886D8Dh, 07E5A2E7Eh, 0D7412013h, 006E90F97h, 0E45D3EBAh, 0B8AD3386h dd 013051B25h, 00C035354h, 071C89B75h, 0C638FBD0h, 0197F11A1h, 0EF0F08FBh, 0F8448651h, 038409563h dd 0452F4443h, 05D464D55h, 003D8764Ch, 0B1B8D638h, 0A70BBA2Fh, 094B3D210h, 0EB6692A7h, 0D409C2D9h dd 068838526h, 0A6DB8A15h, 0751F6C98h, 0DE769A88h, 0C9EE4668h, 01A82A373h, 00896AA49h, 042233681h dd 0F62C55CBh, 09F1C5404h, 0F74FB15Ch, 0C06E4312h, 06FFE5D72h, 08AA8678Bh, 0337CD129h, 08211CEFDh snefruSBox_size equ $-snefruSBox1 snefruSBox2 dd 0074A1D09h, 052A10E5Ah, 09275A3F8h, 04B82506Ch, 037DF7E1Bh, 04C78B3C5h, 0CEFAB1DAh, 0F472267Eh dd 0B63045F6h, 0D66A1FC0h, 0400298E3h, 027E60C94h, 087D2F1B8h, 0DF9E56CCh, 045CD1803h, 01D35E098h dd 0CCE7C736h, 003483BF1h, 01F7307D7h, 0C6E8F948h, 0E613C111h, 03955C6FFh, 01170ED7Ch, 08E95DA41h dd 099C31BF4h, 0A4DA8021h, 07B5F94FBh, 0DD0DA51Fh, 06562AA77h, 0556BCB23h, 0DB1BACC6h, 0798040B9h dd 0BFE5378Fh, 0731D55E6h, 0DAA5BFEEh, 0389BBC60h, 01B33FBA4h, 09C567204h, 036C26C68h, 077EE9D69h dd 08AEB3E88h, 02D50B5CEh, 09579E790h, 042B13CFCh, 033FBD32Bh, 0EE0503A7h, 0B5862824h, 015E41EADh dd 0C8412EF7h, 09D441275h, 02FCEC582h, 05FF483B7h, 08F3931DFh, 02E5D2A7Bh, 049467BF9h, 00653DEA9h dd 02684CE35h, 07E655E5Ch, 0F12771D8h, 0BB15CC67h, 0AB097CA1h, 0983DCF52h, 010DDF026h, 021267F57h dd 02C58F6B4h, 031043265h, 00BAB8C01h, 0D5492099h, 0ACAAE619h, 0944CE54Ah, 0F2D13D39h, 0ADD3FC32h dd 0CDA08A40h, 0E2B0D451h, 09EFE08AEh, 0B9D50FD2h, 0EA5CD7FDh, 0C9A749DDh, 013EA2253h, 0832DEBAAh dd 024BE640Fh, 0E03E926Ah, 029E01CDEh, 08BF59F18h, 00F9D00B6h, 0E1238B46h, 01E7D8E34h, 093619ADBh dd 076B32F9Fh, 0BD972CECh, 0E31FA976h, 0A68FBB10h, 0FB3BA49Dh, 08587C41Dh, 0A5ADD1D0h, 0F3CF84BFh dd 0D4E11150h, 0D9FFA6BCh, 0C3F6018Ch, 0AEF10572h, 074A64B2Fh, 0E7DC9559h, 02AAE35D5h, 05B6F587Fh dd 0A9E353FEh, 0CA4FB674h, 004BA24A8h, 0E5C6875Fh, 0DCBC6266h, 06BC5C03Fh, 0661EEF02h, 0ED740BABh dd 0058E34E4h, 0B7E946CFh, 088698125h, 072EC48EDh, 0B11073A3h, 0A13485EBh, 0A2A2429Ch, 0FA407547h dd 050B76713h, 05418C37Dh, 096192DA5h, 0170BB04Bh, 0518A021Eh, 0B0AC13D1h, 00963FA2Ah, 04A6E10E1h dd 058472BDCh, 0F7F8D962h, 0979139EAh, 08D856538h, 0C0997042h, 048324D7Ah, 0447623CBh, 08CBBE364h dd 06E0C6B0Eh, 0D36D63B0h, 03F244C84h, 03542C971h, 02B228DC1h, 0CB0325BBh, 0F8C0D6E9h, 0DE11066Bh dd 0A8649327h, 0FC31F83Eh, 07DD80406h, 0F916DD61h, 0D89F79D3h, 0615144C2h, 0EBB45D31h, 028002958h dd 056890A37h, 0F05B3808h, 0123AE844h, 086839E16h, 0914B0D83h, 0C506B43Ch, 0CF3CBA5Eh, 07C60F5C9h dd 022DEB2A0h, 05D9C2715h, 0C77BA0EFh, 04F45360Bh, 0C1017D8Bh, 0E45ADC29h, 0A759909Bh, 0412CD293h dd 0D7D796B1h, 000C8FF30h, 023A34A80h, 04EC15C91h, 0714E78B5h, 047B9E42Eh, 078F3EA4Dh, 07F078F5Bh dd 0346C593Ah, 0A3A87A1Ah, 09BCBFE12h, 03D439963h, 0B2EF6D8Eh, 0B8D46028h, 06C2FD5CAh, 062675256h dd 001F2A2F3h, 0BC96AE0Ah, 0709A8920h, 0B4146E87h, 06308B9E2h, 064BDA7BAh, 0AFED6892h, 06037F2A2h dd 0F52969E0h, 00ADB43A6h, 082811400h, 090D0BDF0h, 019C9549Eh, 0203F6A73h, 01ACCAF4Fh, 089714E6Dh dd 0164D4705h, 067665F07h, 0EC206170h, 00C2182B2h, 0A02B9C81h, 053289722h, 0F6A97686h, 0140E4179h dd 09F778849h, 09A88E15Dh, 025CADB54h, 0D157F36Fh, 032A421C3h, 0B368E98Ah, 05A92CD0Dh, 0757AA8D4h dd 0C20AC278h, 008B551C7h, 0849491E8h, 04DC75AD6h, 0697C33BEh, 0BAF0CA33h, 046125B4Eh, 059D677B3h dd 030D9C8F2h, 0D0AF860Ch, 01C7FD0FAh, 0FE0FF72Ch, 05C8D6F43h, 057FDEC3Bh, 06AB6AD97h, 0D22ADF89h dd 018171785h, 002BFE22Dh, 06DB80917h, 080B216AFh, 0E85E4F9Ah, 07A1C306Eh, 06FC49BF5h, 03AF7A11Ch dd 081E215E7h, 068363FCDh, 03E9357C8h, 0EF52FD55h, 03B8BAB4Ch, 03C8CF495h, 0BEFCEEBDh, 0FD25B714h dd 0C498D83Dh, 00D2E1A8Dh, 0E9F966ACh, 00E387445h, 0435419E5h, 05E7EBEC4h, 0AA90B8D9h, 0FF1A3A96h snefruSBox3 dd 04A8FE4E3h, 0F27D99CDh, 0D04A40CAh, 0CB5FF194h, 03668275Ah, 0FF4816BEh, 0A78B394Ch, 04C6BE9DBh dd 04EEC38D2h, 04296EC80h, 0CDCE96F8h, 0888C2F38h, 0E75508F5h, 07B916414h, 0060AA14Ah, 0A214F327h dd 0BE608DAFh, 01EBBDEC2h, 061F98CE9h, 0E92156FEh, 04F22D7A3h, 03F76A8D9h, 0559A4B33h, 038AD2959h dd 0F3F17E9Eh, 085E1BA91h, 0E5EBA6FBh, 073DCD48Ch, 0F5C3FF78h, 0481B6058h, 08A3297F7h, 08F1F3BF4h dd 093785AB2h, 0477A4A5Bh, 06334EB5Dh, 06D251B2Eh, 074A9102Dh, 007E38FFAh, 0915C9C62h, 0CCC275EAh dd 06BE273ECh, 03EBDDD70h, 0D895796Ch, 0DC54A91Bh, 0C9AFDF81h, 023633F73h, 0275119B4h, 0B19F6B67h dd 050756E22h, 02BB152E2h, 076EA46A2h, 0A353E232h, 02F596AD6h, 00B1EDB0Bh, 002D3D9A4h, 078B47843h dd 064893E90h, 040F0CAADh, 0F68D3AD7h, 046FD1707h, 01C9C67EFh, 0B5E086DEh, 096EE6CA6h, 09AA34774h dd 01BA4F48Ah, 08D01ABFDh, 0183EE1F6h, 05FF8AA7Ah, 017E4FAAEh, 0303983B0h, 06C08668Bh, 0D4AC4382h dd 0E6C5849Fh, 092FEFB53h, 0C1CAC4CEh, 043501388h, 0441118CFh, 0EC4FB308h, 053A08E86h, 09E0FE0C5h dd 0F91C1525h, 0AC45BE05h, 0D7987CB5h, 049BA1487h, 057938940h, 0D5877648h, 0A958727Fh, 058DFE3C3h dd 0F436CF77h, 0399E4D11h, 0F0A5BFA9h, 0EF61A33Bh, 0A64CAC60h, 004A8D0BAh, 0030DD572h, 0B83D320Fh dd 0CAB23045h, 0E366F2F0h, 0815D008Dh, 0C897A43Ah, 01D352DF3h, 0B9CC571Dh, 08BF38744h, 072209092h dd 0EBA124EBh, 0FB99CE5Eh, 03BB94293h, 028DA549Ch, 0AAB8A228h, 0A4197785h, 033C70296h, 025F6259Bh dd 05C85DA21h, 0DF15BDEEh, 015B7C7E8h, 0E2ABEF75h, 0FCC19BC1h, 0417FF868h, 014884434h, 062825179h dd 0C6D5C11Ch, 00E4705DCh, 022700DE0h, 0D3D2AF18h, 09BE822A0h, 035B669F1h, 0C42BB55Ch, 00A801252h dd 0115BF0FCh, 03CD7D856h, 0B43F5F9Dh, 0C2306516h, 0A1231C47h, 0F149207Eh, 05209A795h, 034B3CCD8h dd 067AEFE54h, 02C83924Eh, 06662CBACh, 05EEDD161h, 084E681AAh, 05D57D26Bh, 0FA465CC4h, 07E3AC3A8h dd 0BF7C0CC6h, 0E18A9AA1h, 0C32F0A6Fh, 0B22CC00Dh, 03D280369h, 0994E554Fh, 068F480D3h, 0ADCFF5E6h dd 03A8EB265h, 083269831h, 0BD568A09h, 04BC8AE6Ah, 069F56D2Bh, 00F17EAC8h, 0772EB6C7h, 09F41343Ch dd 0AB1D0742h, 0826A6F50h, 0FEA2097Ch, 01912C283h, 0CE185899h, 0E4444839h, 02D8635D5h, 065D0B1FFh dd 0865A7F17h, 0326D9FB1h, 059E52820h, 00090ADE1h, 0753C7149h, 09DDD8B98h, 0A5A691DAh, 00D0382BBh dd 08904C930h, 0086CB000h, 06E69D3BDh, 024D4E7A7h, 005244FD0h, 0101A5E0Ch, 06A947DCBh, 0E840F77Bh dd 07D0C5003h, 07C370F1Fh, 0805245EDh, 0E05E3D3Fh, 07906880Eh, 0BABFCD35h, 01A7EC697h, 08C052324h dd 00C6EC8DFh, 0D129A589h, 0C7A75B02h, 012D81DE7h, 0D9BE2A66h, 01F4263ABh, 0DE73FDB6h, 02A00680Ah dd 056649E36h, 03133ED55h, 090FA0BF2h, 02910A02Ah, 0949D9D46h, 0A0D1DCDDh, 0CFC9B7D4h, 0D2677BE5h dd 095CB36B3h, 013CD9410h, 0DBF73313h, 0B7C6E8C0h, 0F781414Bh, 0510B016Dh, 0B0DE1157h, 0D6B0F62Ch dd 0BB074ECCh, 07F1395B7h, 0EE792CF9h, 0EA6FD63Eh, 05BD6938Eh, 0AF02FC64h, 0DAB57AB8h, 08EDB3784h dd 08716318Fh, 0164D1A01h, 026F26141h, 0B372E6B9h, 0F8FC2B06h, 07AC00E04h, 03727B89Ah, 097E9BCA5h dd 09C2A742Fh, 0BC3B1F7Dh, 07165B471h, 0609B4C29h, 020925351h, 05AE72112h, 0454BE5D1h, 0C0FFB95Fh dd 0DD0EF919h, 06F2D70C9h, 00974C5BFh, 098AA6263h, 001D91E4Dh, 02184BB6Eh, 070C43C1Eh, 04D435915h dd 0AE7B8523h, 0B6FB06BCh, 05431EE76h, 0FDBC5D26h, 0ED77493Dh, 0C5712EE4h, 0A8380437h, 02EEF261Ah snefruSBox4 dd 05A79392Bh, 0B8AF32C2h, 041F7720Ah, 0833A61ECh, 013DFEDACh, 0C4990BC4h, 0DC0F54BCh, 0FEDD5E88h dd 080DA1881h, 04DEA1AFDh, 0FD402CC6h, 0AE67CC7Ah, 0C5238525h, 08EA01254h, 0B56B9BD5h, 0862FBD6Dh dd 0AC8575D3h, 06FBA3714h, 0DA7EBF46h, 059CD5238h, 08AC9DBFEh, 0353729FCh, 0E497D7F2h, 0C3AB84E0h dd 0F05A114Bh, 07B887A75h, 0EDC603DDh, 05E6FE680h, 02C84B399h, 0884EB1DAh, 01CB8C8BFh, 0AA51098Ah dd 0C862231Ch, 08BAC2221h, 021B387E5h, 0208A430Dh, 02A3F0F8Bh, 0A5FF9CD2h, 06012A2EAh, 0147A9EE7h dd 0F62A501Dh, 0B4B2E51Ah, 03EF3484Ch, 0C0253C59h, 02B82B536h, 00AA9696Bh, 0BE0C109Bh, 0C70B7929h dd 0CE3E8A19h, 02F66950Eh, 0459F1C2Ch, 0E68FB93Dh, 0A3C3FF3Eh, 062B45C62h, 0300991CBh, 001914C57h dd 07F7BC06Ah, 0182831F5h, 0E7B74BCAh, 0FA50F6D0h, 0523CAA61h, 0E3A7CF05h, 0E9E41311h, 0280A21D1h dd 06A4297E1h, 0F24DC67Eh, 0FC3189E6h, 0B72BF34Fh, 04B1E67AFh, 0543402CEh, 079A59867h, 00648E02Ah dd 000A3AC17h, 0C6208D35h, 06E7F5F76h, 0A45BB4BEh, 0F168FA63h, 03F4125F3h, 0F311406Fh, 002706565h dd 0BFE58022h, 00CFCFDD9h, 00735A7F7h, 08F049092h, 0D98EDC27h, 0F5C5D55Ch, 0E0F201DBh, 00DCAFC9Ah dd 07727FB79h, 0AF43ABF4h, 026E938C1h, 0401B26A6h, 0900720FAh, 02752D97Bh, 0CFF1D1B3h, 0A9D9E424h dd 042DB99ABh, 06CF8BE5Fh, 0E82CEBE3h, 03AFB733Bh, 06B734EB6h, 01036414Ah, 0975F667Ch, 0049D6377h dd 0BA587C60h, 0B1D10483h, 0DE1AEFCCh, 01129D055h, 072051E91h, 06946D623h, 0F9E86EA7h, 048768C00h dd 0B0166C93h, 09956BBF0h, 01F1F6D84h, 0FB15E18Eh, 0033B495Dh, 056E3362Eh, 04F44C53Ch, 0747CBA51h dd 089D37872h, 05D9C331Bh, 0D2EF9FA8h, 0254917F8h, 01B106F47h, 037D75553h, 0B3F053B0h, 07DCCD8EFh dd 0D30EB802h, 05889F42Dh, 0610206D7h, 01A7D34A1h, 092D87DD8h, 0E5F4A315h, 0D1CF0E71h, 0B22DFE45h dd 0B901E8EBh, 00FC0CE5Eh, 02EFA60C9h, 02DE74290h, 036D0C906h, 0381C70E4h, 04C6DA5B5h, 03D81A682h dd 07E381F34h, 0396C4F52h, 095AD5901h, 01DB50C5Ah, 029982E9Eh, 01557689Fh, 03471EE42h, 0D7E2F7C0h dd 08795A1E2h, 0BC324D8Dh, 0E224C3C8h, 012837E39h, 0CDEE3D74h, 07AD2143Fh, 00E13D40Ch, 078BD4A68h dd 0A2EB194Dh, 0DB9451F9h, 0859B71DCh, 05C4F5B89h, 0CA14A8A4h, 0EF92F003h, 016741D98h, 033AA4444h dd 09E967FBBh, 0092E3020h, 0D86A35B8h, 08CC17B10h, 0E1BF08AEh, 055693FC5h, 07680AD13h, 01E6546E8h dd 023B6E7B9h, 0EE77A4B2h, 008ED0533h, 044FD2895h, 0B6393B69h, 005D6CACFh, 09819B209h, 0ECBBB72Fh dd 09A75779Ch, 0EAEC0749h, 094A65AEEh, 0BDF52DC3h, 0D6A25D04h, 082008E4Eh, 0A6DE160Fh, 09B036AFBh dd 0228B3A66h, 05FB10A70h, 0CC338B58h, 05378A9DFh, 0C908BCA9h, 04959E25Bh, 046909A97h, 066AE8F6Eh dd 0DD0683E9h, 065F994B4h, 06426CDA5h, 0C24B8840h, 032539DA0h, 063175650h, 0D0C815FFh, 050CBC41Eh dd 0F7C774A3h, 031B0C231h, 08D0D8116h, 024BEF16Ch, 0D555D256h, 0DF47EA8Ch, 06D21ECCDh, 0A887A012h dd 084542AEDh, 0A7B9C1BDh, 0914C1BB1h, 0A0D5B67Dh, 0438CE937h, 07030F873h, 071F6B0C7h, 0574576BAh dd 0F8BC4541h, 09C61D348h, 01960579Dh, 017C4DAADh, 096A4CB0Bh, 0C193F2F6h, 0756EAFA2h, 07C1D2F94h dd 0F4FE2B43h, 0CB86E33Ah, 0EBD4C728h, 09D18AE64h, 09FE13E30h, 03CE0F5DEh, 0ABA1F985h, 0ADDC2718h dd 068CE6278h, 0D45E241Fh, 0A15C82B7h, 03B2293D4h, 0739EDD32h, 0674A6BF1h, 05B5D587Fh, 04772DEAAh dd 04A63968Fh, 00BE68686h, 0513D6426h, 0939A4787h, 0BBA89296h, 04EC20007h, 0818D0D08h, 0FF64DFD6h snefruSBox5 dd 0CB2297CBh, 0DB48A144h, 0A16CBE4Bh, 0BBEA1D6Ch, 05AF6B6B7h, 08A8110B6h, 0F9236EF9h, 0C98F83E6h dd 00F9C65B8h, 0252D4A89h, 0A497F068h, 0A5D7ED2Dh, 094C22845h, 09DA1C8C4h, 0E27C2E2Eh, 06E8BA2B4h dd 0C3DD17FBh, 0498CD482h, 00DFE6A9Fh, 0B0705829h, 09A1E6DC1h, 0F829717Ch, 007BB8E3Ah, 0DA3C0B02h dd 01AF82FC7h, 073B70955h, 07A04379Ch, 05EE20A28h, 083712AE5h, 0F4C47C6Dh, 0DF72BA56h, 0D794858Dh dd 08C0CF709h, 018F0F390h, 0B6C69B35h, 0BF2F01DBh, 02FA74DCAh, 0D0CD9127h, 0BDE66CECh, 03DEEBD46h dd 057C88FC3h, 0CEE1406Fh, 00066385Ah, 0F3C3444Fh, 03A79D5D5h, 075751EB9h, 03E7F8185h, 0521C2605h dd 0E1AAAB6Eh, 038EBB80Fh, 0BEE7E904h, 061CB9647h, 0EA54904Eh, 005AE00E4h, 02D7AC65Fh, 0087751A1h dd 0DCD82915h, 00921EE16h, 0DD86D33Bh, 0D6BD491Ah, 040FBADF0h, 04232CBD2h, 033808D10h, 039098C42h dd 0193F3199h, 00BC1E47Ah, 04A82B149h, 002B65A8Ah, 0104CDC8Eh, 024A8F52Ch, 0685C6077h, 0C79F95C9h dd 01D11FE50h, 0C08DAFCDh, 07B1A9A03h, 01C1F11D8h, 084250E7Fh, 0979DB248h, 0EBDC0501h, 0B9553395h dd 0E3C05EA8h, 0B1E51C4Ch, 013B0E681h, 03B407766h, 036DB3087h, 0EE17C9FCh, 06C53ECF2h, 0ADCCC58Fh dd 0C427660Bh, 0EFD5867Dh, 09B6D54A5h, 06FF1AEFFh, 08E787952h, 09E2BFFE0h, 08761D034h, 0E00BDBADh dd 0AE99A8D3h, 0CC03F6E2h, 0FD0ED807h, 00E508AE3h, 0B74182ABh, 04349245Dh, 0D120A465h, 0B246A641h dd 0AF3B7AB0h, 02A6488BBh, 04B3A0D1Fh, 0E7C7E58Ch, 03FAFF2EBh, 090445FFDh, 0CF38C393h, 0995D07E7h dd 0F24F1B36h, 0356F6891h, 06D6EBCBEh, 08DA9E262h, 050FD520Eh, 05BCA9E1Eh, 037472CF3h, 069075057h dd 07EC5FDEDh, 00CAB892Ah, 0FB2412BAh, 01728DEBFh, 0A000A988h, 0D843CE79h, 0042E20DDh, 04FE8F853h dd 056659C3Ch, 02739D119h, 0A78A6120h, 080960375h, 070420611h, 085E09F78h, 0ABD17E96h, 01B513EAFh dd 01E01EB63h, 026AD2133h, 0A890C094h, 07613CF60h, 0817E781Bh, 0A39113D7h, 0E957FA58h, 04131B99Eh dd 028B1EFDAh, 066ACFBA7h, 0FF68944Ah, 077A44FD1h, 07F331522h, 059FFB3FAh, 0A6DF935Bh, 0FA12D9DFh dd 0C6BF6F3Fh, 089520CF6h, 0659EDD6Ah, 0544DA739h, 08B052538h, 07C30EA21h, 0C2345525h, 015927FB2h dd 0144A436Bh, 0BA107B8Bh, 01219AC97h, 006730432h, 031831AB3h, 0C55A5C24h, 0AA0FCD3Eh, 0E5606BE8h dd 05C88F19Bh, 04C0841EEh, 01FE37267h, 011F9C4F4h, 09F1B9DAEh, 0864E76D0h, 0E637C731h, 0D97D23A6h dd 032F53D5Ch, 0B8161980h, 093FA0F84h, 0CAEF0870h, 08874487Eh, 098F2CC73h, 0645FB5C6h, 0CD853659h dd 02062470Dh, 016EDE8E9h, 06B06DAB5h, 078B43900h, 0FC95B786h, 05D8E7DE1h, 0465B5954h, 0FE7BA014h dd 0F7D23F7Bh, 092BC8B18h, 003593592h, 055CEF4F7h, 074B27317h, 079DE1FC2h, 0C8A0BFBDh, 0229398CCh dd 062A602CEh, 0BCB94661h, 05336D206h, 0D2A375FEh, 06A6AB483h, 04702A5A4h, 0A2E9D73Dh, 023A2E0F1h dd 09189140Ah, 0581D18DCh, 0B39A922Bh, 082356212h, 0D5F432A9h, 0D356C2A3h, 05F765B4Dh, 0450AFCC8h dd 04415E137h, 0E8ECDFBCh, 0ED0DE3EAh, 060D42B13h, 0F13DF971h, 071FC5DA2h, 0C1455340h, 0F087742Fh dd 0F55E5751h, 067B3C1F8h, 0AC6B8774h, 07DCFAAACh, 095983BC0h, 0489BB0B1h, 02C184223h, 0964B6726h dd 02BD3271Ch, 072266472h, 0DED64530h, 00A2AA343h, 0D4F716A0h, 0B4DAD6D9h, 02184345Eh, 0512C990Ch dd 029D92D08h, 02EBE709Ah, 001144C69h, 034584B9Dh, 0E4634ED6h, 0ECC963CFh, 03C6984AAh, 04ED056EFh dd 09CA56976h, 08F3E80D4h, 0B5BAE7C5h, 030B5CAF5h, 063F33A64h, 0A9E4BBDEh, 0F6B82298h, 04D673C1Dh snefruSBox6 dd 04B4F1121h, 0BA183081h, 0C784F41Fh, 0D17D0BACh, 0083D2267h, 037B1361Eh, 03581AD05h, 0FDA2F6BCh dd 01E892CDDh, 0B56D3C3Ah, 032140E46h, 0138D8AABh, 0E14773D4h, 05B0E71DFh, 05D1FE055h, 03FB991D3h dd 0F1F46C71h, 0A325988Ch, 010F66E80h, 0B1006348h, 0726A9F60h, 03B67F8BAh, 04E114EF4h, 005C52115h dd 04C5CA11Ch, 099E1EFD8h, 0471B83B3h, 0CBF7E524h, 043AD82F5h, 0690CA93Bh, 0FAA61BB2h, 012A832B5h dd 0B734F943h, 0BD22AEA7h, 088FEC626h, 05E80C3E7h, 0BE3EAF5Eh, 044617652h, 0A5724475h, 0BB3B9695h dd 07F3FEE8Fh, 0964E7DEBh, 0518C052Dh, 02A0BBC2Bh, 0C2175F5Ch, 09A7B3889h, 0A70D8D0Ch, 0EACCDD29h dd 0CCCD6658h, 034BB25E6h, 0B8391090h, 0F651356Fh, 052987C9Eh, 00C16C1CDh, 08E372D3Ch, 02FC6EBBDh dd 06E5DA3E3h, 0B0E27239h, 05F685738h, 045411786h, 0067F65F8h, 061778B40h, 081AB2E65h, 014C8F0F9h dd 0A6B7B4CEh, 04036EAECh, 0BF62B00Ah, 0ECFD5E02h, 0045449A6h, 0B20AFD28h, 02166D273h, 00D13A863h dd 089508756h, 0D51A7530h, 02D653F7Ah, 03CDBDBC3h, 080C9DF4Fh, 03D5812D9h, 053FBB1F3h, 0C0F185C0h dd 07A3C3D7Eh, 068646410h, 0857607A0h, 01D12622Eh, 097F33466h, 0DB4C9917h, 06469607Ch, 0566E043Dh dd 079EF1EDBh, 02C05898Dh, 0C9578E25h, 0CD380101h, 046E04377h, 07D1CC7A9h, 06552B837h, 020192608h dd 0B97500C5h, 0ED296B44h, 0368648B4h, 062995CD5h, 082731400h, 0F9AEBD8Bh, 03844C0C7h, 07C2DE794h dd 033A1A770h, 08AE528C2h, 05A2BE812h, 01F8F4A07h, 02B5ED7CAh, 0937EB564h, 06FDA7E11h, 0E49B5D6Ch dd 0B4B3244Eh, 018AA53A4h, 03A061334h, 04D6067A3h, 083BA5868h, 09BDF4DFEh, 07449F261h, 0709F8450h dd 0CAD133CBh, 0DE941C3Fh, 0F52AE484h, 0781D77EDh, 07E4395F0h, 0AE103B59h, 0922331BBh, 042CE50C8h dd 0E6F08153h, 0E7D941D0h, 05028ED6Bh, 0B3D2C49Bh, 0AD4D9C3Eh, 0D201FB6Eh, 0A45BD5BEh, 0FFCB7F4Bh dd 0579D7806h, 0F821BB5Bh, 059D592ADh, 0D0BE0C31h, 0D4E3B676h, 00107165Ah, 00FE939D2h, 049BCAAFDh dd 055FFCFE5h, 02EC1F783h, 0F39A09A5h, 03EB42772h, 019B55A5Dh, 0024A0679h, 08C83B3F7h, 08642BA1Dh dd 0ACACD9EAh, 087D352C4h, 060931F45h, 0A05F97D7h, 01CECD42Ch, 0E2FCC87Bh, 0B60F94E2h, 067A34B0Bh dd 0FCDD40C9h, 00B150A27h, 0D3EE9E04h, 0582E29E9h, 04AC22B41h, 06AC4E1B8h, 0BCCAA51Ah, 0237AF30Eh dd 0EBC3B709h, 0C4A59D19h, 0284BC98Ah, 0E9D41A93h, 06BFA2018h, 073B2D651h, 011F9A2FAh, 0CE09BFF1h dd 041A470AAh, 025888F22h, 077E754E8h, 0F7330D8Eh, 0158EAB16h, 0C5D68842h, 0C685A6F6h, 0E5B82FDEh dd 009EA3A96h, 06DDE1536h, 04FA919DAh, 026C0BE9Fh, 09EED6F69h, 0F05555F2h, 0E06FC285h, 09CD76D23h dd 0AF452A92h, 0EFC74CB7h, 09D6B4732h, 08BE408EEh, 022401D0Dh, 0EE6C459Dh, 07587CB82h, 0E8746862h dd 05CBDDE87h, 098794278h, 031AFB94Dh, 0C11E0F2Fh, 030E8FC2Ah, 0CF3261EFh, 01A3023E1h, 0AA2F86CFh dd 0F202E24Ah, 08D08DCFFh, 0764837C6h, 0A26374CCh, 09F7C3E88h, 0949CC57Dh, 0DD26A07Fh, 0C39EFAB0h dd 0C8F879A1h, 0DCE67BB9h, 0F4B0A435h, 0912C9AE0h, 0D85603E4h, 0953A9BBFh, 0FB8290D6h, 00AEBCD5Fh dd 016206A9Ah, 06C787A14h, 0D9A0F16Ah, 029BF4F74h, 08F8BCE91h, 00E5A9354h, 0AB038CB1h, 01B8AD11Bh dd 0E327FF49h, 00053DA20h, 090CF51DCh, 0DA92FE6Dh, 00390CA47h, 0A8958097h, 0A9DC5BAFh, 03931E3C1h dd 0840446B6h, 063D069FBh, 0D7460299h, 07124ECD1h, 00791E613h, 0485918FCh, 0D635D04Ch, 0DF96AC33h dd 066F2D303h, 0247056AEh, 0A1A7B2A8h, 027D8CC9Ch, 017B6E998h, 07BF5590Fh, 0FE97F557h, 05471D8A2h snefruSBox7 dd 083A327A1h, 09F379F51h, 040A7D007h, 011307423h, 0224587C1h, 0AC27D63Bh, 03B7E64EAh, 02E1CBFA6h dd 009996000h, 003BC0E2Ch, 0D4C4478Ah, 04542E0ABh, 0FEDA26D4h, 0C1D10FCBh, 08252F596h, 04494EB5Ch dd 0A362F314h, 0F5BA81FDh, 075C3A376h, 04CA214CAh, 0E164DEDDh, 05088FA97h, 04B0930E0h, 02FCFB7E8h dd 033A6F4B2h, 0C7E94211h, 02D66C774h, 043BE8BAEh, 0C663D445h, 0908EB130h, 0F4E3BE15h, 063B9D566h dd 0529396B5h, 01E1BE743h, 04D5FF63Fh, 0985E4A83h, 071AB9DF7h, 0C516C6F5h, 085C19AB4h, 01F4DAEE4h dd 0F2973431h, 0B713DC5Eh, 03F2E159Ah, 0C824DA16h, 006BF376Ah, 0B2FE23ECh, 0E39B1C22h, 0F1EECB5Fh dd 008E82D52h, 0565686C2h, 0AB0AEA93h, 0FD47219Fh, 0EBDBABD7h, 02404A185h, 08C7312B9h, 0A8F2D828h dd 00C8902DAh, 065B42B63h, 0C0BBEF62h, 04E3E4CEFh, 0788F8018h, 0EE1EBAB7h, 093928F9Dh, 0683D2903h dd 0D3B60689h, 0AFCB0DDCh, 088A4C47Ah, 0F6DD9C3Dh, 07EA5FCA0h, 08A6D7244h, 0BE11F120h, 004FF91B8h dd 08D2DC8C0h, 027F97FDBh, 07F9E1F47h, 01734F0C7h, 026F3ED8Eh, 00DF8F2BFh, 0B0833D9Eh, 0E420A4E5h dd 0A423CAE6h, 095616772h, 09AE6C049h, 0075941F2h, 0D8E12812h, 0000F6F4Fh, 03C0D6B05h, 06CEF921Ch dd 0B82BC264h, 0396CB008h, 05D608A6Fh, 06D7782C8h, 0186550AAh, 06B6FEC09h, 028E70B13h, 057CE5688h dd 0ECD3AF84h, 023335A95h, 091F40CD2h, 07B6A3B26h, 0BD32B3B6h, 03754A6FBh, 08ED088F0h, 0F867E87Ch dd 020851746h, 06410F9C6h, 035380442h, 0C2CA10A7h, 01ADEA27Fh, 076BDDD79h, 092742CF4h, 00E98F7EEh dd 0164E931Dh, 0B9C835B3h, 069060A99h, 0B44C531Eh, 0FA7B66FEh, 0C98A5B53h, 07D95AAE9h, 0302F467Bh dd 074B811DEh, 0F3866ABDh, 0B5B3D32Dh, 0FC3157A4h, 0D251FE19h, 00B5D8EACh, 0DA71FFD5h, 047EA05A3h dd 005C6A9E1h, 0CA0EE958h, 09939034Dh, 025DC5EDFh, 079083CB1h, 086768450h, 0CF757D6Dh, 05972B6BCh dd 0A78D59C9h, 0C4AD8D41h, 02A362AD3h, 0D1179991h, 0601407FFh, 0DCF50917h, 0587069D0h, 0E0821ED6h dd 0DBB59427h, 073911A4Bh, 07C904FC3h, 0844AFB92h, 06F8C955Dh, 0E8C0C5BBh, 0B67AB987h, 0A529D96Ch dd 0F91F7181h, 0618B1B06h, 0E718BB0Ch, 08BD7615Bh, 0D5A93A59h, 054AEF81Bh, 0772136E3h, 0CE44FD9Ch dd 010CDA57Eh, 087D66E0Bh, 03D798967h, 01B2C1804h, 03EDFBD68h, 015F6E62Bh, 0EF68B854h, 03896DB35h dd 012B7B5E2h, 0CB489029h, 09E4F98A5h, 062EB77A8h, 0217C24A2h, 0964152F6h, 049B2080Ah, 053D23EE7h dd 048FB6D69h, 01903D190h, 09449E494h, 0BF6E7886h, 0FB356CFAh, 03A261365h, 0424BC1EBh, 0A1192570h dd 0019CA782h, 09D3F7E0Eh, 09C127575h, 0EDF02039h, 0AD57BCCEh, 05C153277h, 081A84540h, 0BCAA7356h dd 0CCD59B60h, 0A62A629Bh, 0A25CCD10h, 02B5B65CFh, 01C535832h, 055FD4E3Ah, 031D9790Dh, 0F06BC37Dh dd 04AFC1D71h, 0AEED5533h, 0BA461634h, 0BB694B78h, 05F3A5C73h, 06A3C764Ah, 08FB0CCA9h, 0F725684Ch dd 04FE5382Fh, 01D0163AFh, 05AA07A8Fh, 0E205A8EDh, 0C30BAD38h, 0FF22CF1Fh, 072432E2Eh, 032C2518Bh dd 03487CE4Eh, 07AE0AC02h, 0709FA098h, 00A3B395Ah, 05B4043F8h, 0A9E48C36h, 0149A8521h, 0D07DEE6Bh dd 046ACD2F3h, 08958DFFCh, 0B3A1223Ch, 0B11D31C4h, 0CD7F4D3Eh, 00F28E3ADh, 0E5B100BEh, 0AAC54824h dd 0E9C9D7BAh, 09BD47001h, 080F149B0h, 066022F0Fh, 0020C4048h, 06EFA192Ah, 067073F8Dh, 013EC7BF9h dd 03655011Ah, 0E6AFE157h, 0D9845F6Eh, 0DECC4425h, 0511AE2CCh, 0DF81B4D8h, 0D7809E55h, 0D6D883D9h dd 02CC7978Ch, 05E787CC5h, 0DD0033D1h, 0A050C937h, 097F75DCDh, 0299DE580h, 041E2B261h, 0EA5A54F1h snefruSBox8 dd 07E672590h, 0BEA513BBh, 02C906FE6h, 086029C2Bh, 055DC4F74h, 00553398Eh, 063E09647h, 0CAFD0BABh dd 0264C37DFh, 08272210Fh, 067AFA669h, 012D98A5Fh, 08CAB23C4h, 075C68BD1h, 0C3370470h, 033F37F4Eh dd 0283992FFh, 0E73A3A67h, 01032F283h, 0F5AD9FC2h, 0963F0C5Dh, 0664FBC45h, 0202BA41Ch, 0C7C02D80h dd 054731E84h, 08A1085F5h, 0601D80FBh, 02F968E55h, 035E96812h, 0E45A8F78h, 0BD7DE662h, 03B6E6EADh dd 08097C5EFh, 0070B6781h, 0B1E508F3h, 024E4FAE3h, 0B81A7805h, 0EC0FC918h, 043C8774Bh, 09B2512A9h dd 02B05AD04h, 032C2536Fh, 0EDF236E0h, 08BC4B0CFh, 0BACEB837h, 04535B289h, 00D0E94C3h, 0A5A371D0h dd 0AD695A58h, 039E3437Dh, 09186BFFCh, 021038C3Bh, 00AA9DFF9h, 05D1F06CEh, 062DEF8A4h, 0F740A2B4h dd 0A2575868h, 0682683C1h, 0DBB30FACh, 061FE1928h, 0468A6511h, 0C61CD5F4h, 0E54D9800h, 06B98D7F7h dd 08418B6A5h, 05F09A5D2h, 090B4E80Bh, 049B2C852h, 069F11C77h, 017412B7Eh, 07F6FC0EDh, 056838DCCh dd 06E9546A2h, 0D0758619h, 0087B9B9Ah, 0D231A01Dh, 0AF46D415h, 0097060FDh, 0D920F657h, 0882D3F9Fh dd 03AE7C3C9h, 0E8A00D9Bh, 04FE67EBEh, 02EF80EB2h, 0C1916B0Ch, 0F4DFFEA0h, 0B97EB3EBh, 0FDFF84DDh dd 0FF8B14F1h, 0E96B0572h, 0F64B508Ch, 0AE220A6Eh, 04423AE5Ah, 0C2BECE5Eh, 0DE27567Ch, 0FC935C63h dd 047075573h, 0E65B27F0h, 0E121FD22h, 0F2668753h, 02DEBF5D7h, 08347E08Dh, 0AC5EDA03h, 02A7CEBE9h dd 03FE8D92Eh, 023542FE4h, 01FA7BD50h, 0CF9B4102h, 09D0DBA39h, 09CB8902Ah, 0A7249D8Bh, 00F6D667Ah dd 05EBFA9ECh, 06A594DF2h, 079600938h, 0023B7591h, 0EA2C79C8h, 0C99D07EAh, 064CB5EE1h, 01A9CAB3Dh dd 076DB9527h, 0C08E012Fh, 03DFB481Ah, 0872F22E7h, 02948D15Ch, 0A4782C79h, 06F50D232h, 078F0728Ah dd 05A87AAB1h, 0C4E2C19Ch, 0EE767387h, 01B2A1864h, 07B8D10D3h, 0D1713161h, 00EEAC456h, 0D8799E06h dd 0B645B548h, 04043CB65h, 0A874FB29h, 04B12D030h, 07D687413h, 018EF9A1Fh, 0D7631D4Ch, 05829C7DAh dd 0CDFA30FAh, 0C5084BB0h, 092CD20E2h, 0D4C16940h, 003283EC0h, 0A917813Fh, 09A587D01h, 070041F8Fh dd 0DC6AB1DCh, 0DDAEE3D5h, 031829742h, 0198C022Dh, 01C9EAFCBh, 05BBC6C49h, 0D3D3293Ah, 016D50007h dd 004BB8820h, 03C5C2A41h, 037EE7AF8h, 08EB04025h, 09313ECBAh, 0BFFC4799h, 08955A744h, 0EF85D633h dd 0504499A7h, 0A6CA6A86h, 0BB3D3297h, 0B34A8236h, 06DCCBE4Fh, 006143394h, 0CE19FC7Bh, 0CCC3C6C6h dd 0E36254AEh, 077B7EDA1h, 0A133DD9Eh, 0EBF9356Ah, 0513CCF88h, 0E2A1B417h, 0972EE5BDh, 0853824CDh dd 05752F4EEh, 06C1142E8h, 03EA4F309h, 0B2B5934Ah, 0DFD628AAh, 059ACEA3Eh, 0A01EB92Ch, 0389964BCh dd 0DA305DD4h, 0019A59B7h, 011D2CA93h, 0FAA6D3B9h, 04E772ECAh, 072651776h, 0FB4E5B0Eh, 0A38F91A8h dd 01D0663B5h, 030F4F192h, 0B50051B6h, 0B716CCB3h, 04ABD1B59h, 0146C5F26h, 0F134E2DEh, 000F67C6Ch dd 0B0E1B795h, 098AA4EC7h, 00CC73B34h, 0654276A3h, 08D1BA871h, 0740A5216h, 0E0D01A23h, 09ED161D6h dd 09F36A324h, 0993EBB7Fh, 0FEB9491Bh, 0365DDCDBh, 0810CFFC5h, 071EC0382h, 02249E7BFh, 048817046h dd 0F3A24A5Bh, 04288E4D9h, 00BF5C243h, 0257FE151h, 095B64C0Dh, 04164F066h, 0AAF7DB08h, 073B1119Dh dd 08F9F7BB8h, 0D6844596h, 0F07A34A6h, 053943D0Ah, 0F9DD166Dh, 07A8957AFh, 0F8BA3CE5h, 027C9621Eh dd 05CDAE910h, 0C8518998h, 0941538FEh, 0136115D8h, 0ABA8443Ch, 04D01F931h, 034EDF760h, 0B45F266Bh dd 0D5D4DE14h, 052D8AC35h, 015CFD885h, 0CBC5CD21h, 04CD76D4Dh, 07C80EF54h, 0BC92EE75h, 01E56A1F6h snefruSBox9 dd 0BAA20B6Ch, 09FFBAD26h, 0E1F7D738h, 0794AEC8Dh, 0C9E9CF3Ch, 08A9A7846h, 0C57C4685h, 0B9A92FEDh dd 029CB141Fh, 052F9DDB7h, 0F68BA6BCh, 019CCC020h, 04F584AAAh, 03BF6A596h, 0003B7CF7h, 054F0CE9Ah dd 0A7EC4303h, 046CF0077h, 078D33AA1h, 0215247D9h, 074BCDF91h, 008381D30h, 0DAC43E40h, 064872531h dd 00BEFFE5Fh, 0B317F457h, 0AEBB12DAh, 0D5D0D67Bh, 07D75C6B4h, 042A6D241h, 01502D0A9h, 03FD97FFFh dd 0C6C3ED28h, 081868D0Ah, 092628BC5h, 086679544h, 0FD1867AFh, 05CA3EA61h, 0568D5578h, 04A2D71F4h dd 043C9D549h, 08D95DE2Bh, 06E5C74A0h, 09120FFC7h, 00D05D14Ah, 0A93049D3h, 0BFA80E17h, 0F4096810h dd 0043F5EF5h, 0A673B4F1h, 06D780298h, 0A4847783h, 05EE726FBh, 09934C281h, 0220A588Ch, 0384E240Fh dd 0933D5C69h, 039E5EF47h, 026E8B8F3h, 04C1C6212h, 08040F75Dh, 0074B7093h, 06625A8D7h, 036298945h dd 076285088h, 0651D37C3h, 024F5274Dh, 0DBCA3DABh, 0186B7EE1h, 0D80F8182h, 014210C89h, 0943A3075h dd 04E6E11C4h, 04D7E6BADh, 0F05064C8h, 0025DCD97h, 04BC10302h, 07CEDE572h, 08F90A970h, 0AB88EEBAh dd 0B5998029h, 05124D839h, 0B0EEB6A3h, 089DDABDCh, 0E8074D76h, 0A1465223h, 032518CF2h, 09D39D4EBh dd 0C0D84524h, 0E35E6EA8h, 07ABF3804h, 0113E2348h, 09AE6069Dh, 0B4DFDABBh, 0A8C5313Fh, 023EA3F79h dd 0530E36A2h, 0A5FD228Bh, 095D1D350h, 02B14CC09h, 040042956h, 0879D05CCh, 02064B9CAh, 0ACACA40Eh dd 0B29C846Eh, 09676C9E3h, 0752B7B8Ah, 07BE2BCC2h, 06BD58F5Eh, 0D48F4C32h, 0606835E4h, 09CD7C364h dd 02C269B7Ah, 03A0D079Ch, 073B683FEh, 045374F1Eh, 010AFA242h, 0577F8666h, 0DDAA10F6h, 0F34F561Ch dd 03D355D6Bh, 0E47048AEh, 0AA13C492h, 0050344FDh, 02AAB5151h, 0F5B26AE5h, 0ED919A59h, 05AC67900h dd 0F1CDE380h, 00C79A11Bh, 0351533FCh, 0CD4D8E36h, 01F856005h, 0690B9FDDh, 0E736DCCFh, 01D47BF6Ah dd 07F66C72Ah, 085F21B7Fh, 0983CBDB6h, 001EBBEBFh, 0035F3B99h, 0EB111F34h, 028CEFDC6h, 05BFC9ECDh dd 0F22EACB0h, 09E41CBB2h, 0E0F8327Ch, 082E3E26Fh, 0FC43FC86h, 0D0BA66DFh, 0489EF2A7h, 0D9E0C81Dh dd 068690D52h, 0CC451367h, 0C2232E16h, 0E95A7335h, 00FDAE19Bh, 0FF5B962Ch, 097596527h, 0C46DB333h dd 03ED4C562h, 0C14C9D9Eh, 05D6FAA21h, 0638E940Dh, 0F9316D58h, 047B3B0EAh, 030FFCAD2h, 0CE1BBA7Dh dd 01E6108E6h, 02E1EA33Dh, 0507BF05Bh, 0FAFEF94Bh, 0D17DE8E2h, 05598B214h, 01663F813h, 017D25A2Dh dd 0EEFA5FF9h, 0582F4E37h, 012128773h, 0FEF17AB8h, 006005322h, 0BB32BBC9h, 08C898508h, 0592C15F0h dd 0D38A4054h, 04957B7D6h, 0D2B891DBh, 037BD2D3Eh, 034AD20CBh, 0622288E9h, 02DC7345Ah, 0AFB416C0h dd 01CF459B1h, 0DC7739FAh, 00A711A25h, 013E18A0Ch, 05F72AF4Ch, 06AC8DB11h, 0BE53C18Eh, 01AA569B9h dd 0EF551EA4h, 0A02A429Fh, 0BD16E790h, 07EB9171Ah, 077D693D8h, 08E06993Ah, 09BDE7560h, 0E5801987h dd 0C37A09BEh, 0B8DB76ACh, 0E2087294h, 06C81616Dh, 0B7F30FE7h, 0BC9B82BDh, 0FBA4E4D4h, 0C7B1012Fh dd 0A20C043Bh, 0DE9FEBD0h, 02F9297CEh, 0E610AEF8h, 070B06F19h, 0C86AE00Bh, 00E01988Fh, 041192AE0h dd 0448C1CB5h, 0ADBE92EEh, 07293A007h, 01B54B5B3h, 0D61F63D1h, 0EAE40A74h, 061A72B55h, 0EC83A7D5h dd 088942806h, 090A07DA5h, 0D7424B95h, 067745B4Eh, 0A31A1853h, 0CA6021EFh, 0DFB56C4Fh, 0CBC2D915h dd 03C48E918h, 08BAE3C63h, 06F659C71h, 0F8B754C1h, 02782F3DEh, 0F796F168h, 071492C84h, 033C0F5A6h dd 03144F6ECh, 025DC412Eh, 0B16C5743h, 083A1FA7Eh, 00997B101h, 0B627E6E8h, 0CF33905Ch, 08456FB65h snefruSBox10 dd 0B29BEA74h, 0C35DA605h, 0305C1CA3h, 0D2E9F5BCh, 06FD5BFF4h, 0FF347703h, 0FC45B163h, 0F498E068h dd 0B71229FCh, 081ACC3FBh, 078538A8Bh, 0984ECF81h, 0A5DA47A4h, 08F259EEFh, 06475DC65h, 0081865B9h dd 049E14A3Ch, 019E66079h, 0D382E91Bh, 05B109794h, 03F9F81E1h, 04470A388h, 041601ABEh, 0AAF9F407h dd 08E175EF6h, 0ED842297h, 0893A4271h, 01790839Ah, 0D566A99Eh, 06B417DEEh, 075C90D23h, 0715EDB31h dd 0723553F7h, 09AFB50C9h, 0FBC5F600h, 0CD3B6A4Eh, 097ED0FBAh, 029689AECh, 063135C8Eh, 0F0E26C7Eh dd 00692AE7Fh, 0DBB208FFh, 02EDE3E9Bh, 06A65BEBDh, 0D40867E9h, 0C954AFC5h, 073B08201h, 07FFDF809h dd 01195C24Fh, 01CA5ADCAh, 074BD6D1Fh, 0B393C455h, 0CADFD3FAh, 099F13011h, 00EBCA813h, 060E791B8h dd 06597AC7Ah, 018A7E46Bh, 009CB49D3h, 00B27DF6Dh, 0CFE52F87h, 0CEF66837h, 0E6328035h, 0FA87C592h dd 037BAFF93h, 0D71FCC99h, 0DCAB205Ch, 04D7A5638h, 048012510h, 062797558h, 0B6CF1FE5h, 0BC311834h dd 09C2373ACh, 014EC6175h, 0A439CBDFh, 054AFB0EAh, 0D686960Bh, 0FDD0D47Bh, 07B063902h, 08B78BAC3h dd 026C6A4D5h, 05C0055B6h, 02376102Eh, 00411783Eh, 02AA3F1CDh, 051FC6EA8h, 0701CE243h, 09B2A0ABBh dd 00AD93733h, 06E80D03Dh, 0AF6295D1h, 0F629896Fh, 0A30B0648h, 0463D8DD4h, 0963F84CBh, 001FF94F8h dd 08D7FEFDCh, 0553611C0h, 0A97C1719h, 0B96AF759h, 0E0E3C95Eh, 00528335Bh, 021FE5925h, 0821A5245h dd 0807238B1h, 067F23DB5h, 0EA6B4EABh, 00DA6F985h, 0AB1BC85Ah, 0EF8C90E4h, 04526230Eh, 038EB8B1Ch dd 01B91CD91h, 09FCE5F0Ch, 0F72CC72Bh, 0C64F2617h, 0DAF7857Dh, 07D373CF1h, 028EAEDD7h, 0203887D0h dd 0C49A155Fh, 0A251B3B0h, 0F2D47AE3h, 03D9EF267h, 04A94AB2Fh, 07755A222h, 00205E329h, 0C28FA7A7h dd 0AEC1FE51h, 0270F164Ch, 08C6D01BFh, 053B5BC98h, 0C09D3FEBh, 0834986CCh, 04309A12Ch, 0578B2A96h dd 03BB74B86h, 069561B4Ah, 0037E32F3h, 0DE335B08h, 0C5156BE0h, 0E7EF09ADh, 093B834C7h, 0A7719352h dd 059302821h, 0E3529D26h, 0F961DA76h, 0CB142C44h, 0A0F3B98Dh, 076502457h, 0945A414Bh, 0078EEB12h dd 0DFF8DE69h, 0EB6C8C2Dh, 0BDA90C4Dh, 0E9C44D16h, 0168DFD66h, 0AD64763Bh, 0A65FD764h, 095A29C06h dd 032D7713Fh, 040F0B277h, 0224AF08Fh, 0004CB5E8h, 092574814h, 08877D827h, 03E5B2D04h, 068C2D5F2h dd 086966273h, 01D433ADAh, 08774988Ah, 03C0E0BFEh, 0DDAD581Dh, 02FD654EDh, 00F4769FDh, 0C181EE9Dh dd 05FD88F61h, 0341DBB3Ah, 0528543F9h, 0D92235CFh, 01EA82EB4h, 0B5CD790Fh, 091D24F1Eh, 0A869E6C2h dd 061F474D2h, 0CC205ADDh, 00C7BFBA9h, 0BF2B0489h, 0B02D72D8h, 02B46ECE6h, 0E4DCD90Ah, 0B8A11440h dd 0EE8A63B7h, 0854DD1A1h, 0D1E00583h, 042B40E24h, 09E8964DEh, 0B4B35D78h, 0BEC76F6Eh, 024B9C620h dd 0D8D399A6h, 05ADB2190h, 02DB12730h, 03A5866AFh, 058C8FADBh, 05D8844E7h, 08A4BF380h, 015A01D70h dd 079F5C028h, 066BE3B8Ch, 0F3E42B53h, 056990039h, 02C0C3182h, 05E16407Ch, 0ECC04515h, 06C440284h dd 04CB6701Ah, 013BFC142h, 09D039F6Ah, 04F6E92C8h, 0A1407C62h, 08483A095h, 0C70AE1C4h, 0E20213A2h dd 0BACAFC41h, 04ECC12B3h, 04BEE3646h, 01FE807AEh, 025217F9Ch, 035DDE5F5h, 07A7DD6CEh, 0F89CCE50h dd 0AC07B718h, 07E73D2C6h, 0E563E76Ch, 0123CA536h, 03948CA56h, 09019DD49h, 010AA88D9h, 0C82451E2h dd 0473EB6D6h, 0506FE854h, 0E8BB03A5h, 0332F4C32h, 0FE1E1E72h, 0B1AE572Ah, 07C0D7BC1h, 0E1C37EB2h dd 0F542AA60h, 0F1A48EA0h, 0D067B89Fh, 0BBFA195Dh, 01A049B0Dh, 0315946AAh, 036D1B447h, 06D2EBDF0h snefruSBox11 dd 00D188A6Dh, 012CEA0DBh, 07E63740Eh, 06A444821h, 0253D234Fh, 06FFC6597h, 094A6BDEFh, 033EE1B2Fh dd 00A6C00C0h, 03AA336B1h, 05AF55D17h, 0265FB3DCh, 00E89CF4Dh, 00786B008h, 0C80055B8h, 06B17C3CEh dd 072B05A74h, 0D21A8D78h, 0A6B70840h, 0FE8EAE77h, 0ED69565Ch, 055E1BCF4h, 0585C2F60h, 0E06F1A62h dd 0AD67C0CDh, 07712AF88h, 09CC26ACAh, 01888053Dh, 037EB853Eh, 09215ABD7h, 0DE30ADFCh, 01F1038E6h dd 070C51C8Ah, 08D586C26h, 0F72BDD90h, 04DC3CE15h, 068EAEEFAh, 0D0E9C8B9h, 0200F9C44h, 0DDD141BAh dd 0024BF1D3h, 00F64C9D4h, 0C421E9E9h, 09D11C14Ch, 09A0DD9E4h, 05F92EC19h, 01B980DF0h, 01DCC4542h dd 0B8FE8C56h, 00C9C9167h, 04E81EB49h, 0CA368F27h, 0E3603B37h, 0EA08ACCCh, 0AC516992h, 0C34F513Bh dd 0804D100Dh, 06EDCA4C4h, 0FC912939h, 029D219B0h, 0278AAA3Ch, 04868DA7Dh, 054E890B7h, 0B46D735Ah dd 0514589AAh, 0D6C630AFh, 04980DFE8h, 0BE3CCC55h, 059D41202h, 0650C078Bh, 0AF3A9E7Bh, 03ED9827Ah dd 09E79FC6Eh, 0AADBFBAEh, 0C5F7D803h, 03DAF7F50h, 067B4F465h, 073406E11h, 039313F8Ch, 08A6E6686h dd 0D8075F1Fh, 0D3CBFED1h, 069C7E49Ch, 0930581E0h, 0E4B1A5A8h, 0BBC45472h, 009DDBF58h, 0C91D687Eh dd 0BDBFFDA5h, 088C08735h, 0E9E36BF9h, 0DB5EA9B6h, 095559404h, 008F432FBh, 0E24EA281h, 064663579h dd 0000B8010h, 07914E7D5h, 032FD0473h, 0D1A7F0A4h, 0445AB98Eh, 0EC72993Fh, 0A29A4D32h, 0B77306D8h dd 0C7C97CF6h, 07B6AB645h, 0F5EF7ADFh, 0FB2E15F7h, 0E747F757h, 05E944354h, 0234A2669h, 047E46359h dd 09B9D11A9h, 040762CEDh, 056F1DE98h, 011334668h, 0890A9A70h, 01A296113h, 0B3BD4AF5h, 0163B7548h dd 0D51B4F84h, 0B99B2ABCh, 03CC1DC30h, 0A9F0B56Ch, 0812272B2h, 00B233A5Fh, 0B650DBF2h, 0F1A0771Bh dd 036562B76h, 0DC037B0Fh, 0104C97FFh, 0C2EC98D2h, 090596F22h, 028B6620Bh, 0DF42B212h, 0FDBC4243h dd 0F3FB175Eh, 04A2D8B00h, 0E8F3869Bh, 030D69BC3h, 0853714C8h, 0A7751D2Eh, 031E56DEAh, 0D4840B0Ch dd 09685D783h, 0068C9333h, 08FBA032Ch, 076D7BB47h, 06D0EE22Bh, 0B546794Bh, 0D971B894h, 08B09D253h dd 0A0AD5761h, 0EE77BA06h, 046359F31h, 0577CC7ECh, 052825EFDh, 0A4BEED95h, 09825C52Ah, 0EB48029Ah dd 0BAAE59F8h, 0CF490EE1h, 0BC990164h, 08CA49DFEh, 04F38A6E7h, 02BA98389h, 08228F538h, 0199F64ACh dd 001A1CAC5h, 0A8B51641h, 05CE72D01h, 08E5DF26Bh, 060F28E1Eh, 0CD5BE125h, 0E5B376BFh, 01C8D3116h dd 07132CBB3h, 0CB7AE320h, 0C0FA5366h, 0D7653E34h, 0971C88C2h, 0C62C7DD0h, 034D0A3DAh, 0868F6709h dd 07AE6FA8Fh, 022BBD523h, 066CD3D5Bh, 01EF9288Dh, 0F9CF58C1h, 05B784E80h, 07439A191h, 0AE134C36h dd 09116C463h, 02E9E1396h, 0F8611F3Ah, 02D2F3307h, 0247F37DDh, 0C1E2FF9Dh, 043C821E5h, 005ED5CABh dd 0EF74E80Ah, 04CCA6028h, 0F0AC3CBDh, 05D874B29h, 06C62F6A6h, 04B2A2EF3h, 0B1AA2087h, 062A5D0A3h dd 00327221Ch, 0B096B4C6h, 0417EC693h, 0ABA840D6h, 0789725EBh, 0F4B9E02Dh, 0E6E00975h, 0CC04961Ah dd 063F624BBh, 07FA21ECBh, 02C01EA7Fh, 0B2415005h, 02A8BBEB5h, 083B2B14Eh, 0A383D1A7h, 05352F96Ah dd 0043ECDADh, 0CE1918A1h, 0FA6BE6C9h, 050DEF36Fh, 0F6B80CE2h, 04543EF7Ch, 09953D651h, 0F257955Dh dd 087244914h, 0DA1E0A24h, 0FFDA4785h, 014D327A2h, 03B93C29Fh, 0840684B4h, 061AB71A0h, 09F7B784Ah dd 02FD570CFh, 015955BDEh, 038F8D471h, 03534A718h, 0133FB71Dh, 03FD80F52h, 04290A8BEh, 075FF44C7h dd 0A554E546h, 0E1023499h, 0BF2652E3h, 07D20399Eh, 0A1DF7E82h, 0177092EEh, 0217DD3F1h, 07C1FF8D9h snefruSBox12 dd 012113F2Eh, 0BFBD0785h, 0F11793FBh, 0A5BFF566h, 083C7B0E5h, 072FB316Bh, 075526A9Ah, 041E0E612h dd 07156BA09h, 053CE7DEEh, 00AA26881h, 0A43E0D7Dh, 03DA73CA3h, 0182761EDh, 0BD5077FFh, 056DB4AA0h dd 0E792711Ch, 0F0A4EB1Dh, 07F878237h, 0EC65C4E8h, 008DC8D43h, 00F8CE142h, 08258ABDAh, 0F4154E16h dd 049DEC2FDh, 0CD8D5705h, 06C2C3A0Fh, 05C12BB88h, 0EFF3CDB6h, 02C89ED8Ch, 07BEBA967h, 02A142157h dd 0C6D0836Fh, 0B4F97E96h, 06931E969h, 0514E6C7Ch, 0A7792600h, 00BBBF780h, 059671BBDh, 00707B676h dd 037482D93h, 080AF1479h, 03805A60Dh, 0E1F4CAC1h, 0580B3074h, 030B8D6CEh, 005A304BEh, 0D176626Dh dd 0EBCA97F3h, 0BB201F11h, 06A1AFE23h, 0FFAA86E4h, 062B4DA49h, 01B6629F5h, 0F5D9E092h, 0F37F3DD1h dd 0619BD45Bh, 0A6EC8E4Fh, 029C80939h, 00C7C0C34h, 09CFE6E48h, 0E65FD3ACh, 073613B65h, 0B3C669F9h dd 0BE2E8A9Eh, 0286F9678h, 05797FD13h, 099805D75h, 0CFB641C5h, 0A91074BAh, 06343AF47h, 06403CB46h dd 08894C8DBh, 02663034Ch, 03C40DC5Eh, 000995231h, 096789AA2h, 02EFDE4B9h, 07DC195E1h, 0547DADD5h dd 006A8EA04h, 0F2347A63h, 05E0DC6F7h, 08462DFC2h, 01E6B2C3Ch, 09BD275B3h, 091D419E2h, 0BCEFD17Eh dd 0B9003924h, 0D07E7320h, 0DEF0495Ch, 0C36AD00Eh, 01785B1ABh, 092E20BCFh, 0B139F0E9h, 0675BB9A1h dd 0AECFA4AFh, 0132376CBh, 0E84589D3h, 079A05456h, 0A2F860BCh, 01AE4F8B5h, 020DF4DB4h, 0A1E1428Bh dd 03BF60A1Ah, 027FF7BF1h, 0CB44C0E7h, 0F7F587C4h, 01F3B9B21h, 094368F01h, 0856E23A4h, 06F93DE3Fh dd 0773F5BBFh, 08B22056Eh, 0DF41F654h, 0B8246FF4h, 08D57BFF2h, 0D57167EAh, 0C5699F22h, 040734BA7h dd 05D5C2772h, 0033020A8h, 0E30A7C4Dh, 0ADC40FD6h, 076353441h, 05AA5229Bh, 081516590h, 0DA49F14Eh dd 04FA672A5h, 04D9FAC5Fh, 0154BE230h, 08A7A5CC0h, 0CE3D2F84h, 0CCA15514h, 05221360Ch, 0AF0FB81Eh dd 05BDD5873h, 0F6825F8Fh, 01113D228h, 070AD996Ch, 093320051h, 060471C53h, 0E9BA567Bh, 03A462AE3h dd 05F55E72Dh, 01D3C5AD7h, 0DCFC45ECh, 034D812EFh, 0FA96EE1Bh, 0369D1EF8h, 0C9B1A189h, 07C1D3555h dd 050845EDCh, 04BB31877h, 08764A060h, 08C9A9415h, 0230E1A3Ah, 0B05E9133h, 0242B9E03h, 0A3B99DB7h dd 0C2D7FB0Ah, 03333849Dh, 0D27278D4h, 0B5D3EFA6h, 078AC28ADh, 0C7B2C135h, 00926ECF0h, 0C1374C91h dd 074F16D98h, 02274084Ah, 03F6D9CFAh, 07AC0A383h, 0B73AFF1Fh, 03909A23Dh, 09F1653AEh, 04E2F3E71h dd 0CA5AB22Ah, 0E01E3858h, 090C5A7EBh, 03E4A17DFh, 0AA987FB0h, 0488BBD62h, 0B625062Bh, 02D776BB8h dd 043B5FC08h, 01490D532h, 0D6D12495h, 044E89845h, 02FE60118h, 09D9EF950h, 0AC38133Eh, 0D3864329h dd 0017B255Ah, 0FDC2DD26h, 0256851E6h, 0318E7086h, 02BFA4861h, 089EAC706h, 0EE5940C6h, 068C3BC2Fh dd 0E260334Bh, 098DA90BBh, 0F818F270h, 04706D897h, 0212D3799h, 04CF7E5D0h, 0D9C9649Fh, 0A85DB5CDh dd 035E90E82h, 06B881152h, 0AB1C02C7h, 046752B02h, 0664F598Eh, 045AB2E64h, 0C4CDB4B2h, 0BA42107Fh dd 0EA2A808Ah, 0971BF3DEh, 04A54A836h, 04253AECCh, 01029BE68h, 06DCC9225h, 0E4BCA56Ah, 0C0AE50B1h dd 07E011D94h, 0E59C162Ch, 0D8E5C340h, 0D470FA0Bh, 0B2BE79DDh, 0D783889Ch, 01CEDE8F6h, 08F4C817Ah dd 0DDB785C9h, 0860232D8h, 0198AAAD9h, 0A0814738h, 03219CFFCh, 0169546D2h, 0FC0CB759h, 055911510h dd 004D5CEC3h, 0ED08CC3Bh, 00D6CF427h, 0C8E38CCAh, 00EEEE3FEh, 09EE7D7C8h, 0F9F24FA9h, 0DB04B35Dh dd 09AB0C9E0h, 0651F4417h, 0028F8B07h, 06E28D9AAh, 0FBA96319h, 08ED66687h, 0FECBC58Dh, 0954DDB44h snefruSBox13 dd 07B0BDFFEh, 0865D16B1h, 049A058C0h, 097ABAA3Fh, 0CAACC75Dh, 0ABA6C17Dh, 0F8746F92h, 06F48AEEDh dd 08841D4B5h, 0F36A146Ah, 073C390ABh, 0E6FB558Fh, 087B1019Eh, 026970252h, 0246377B2h, 0CBF676AEh dd 0F923DB06h, 0F7389116h, 014C81A90h, 083114EB4h, 08B137559h, 095A86A7Ah, 0D5B8DA8Ch, 0C4DF780Eh dd 05A9CB3E2h, 0E44D4062h, 0E8DC8EF6h, 09D180845h, 0817AD18Bh, 0C286C85Bh, 0251F20DEh, 0EE6D5933h dd 0F6EDEF81h, 0D4D16C1Eh, 0C94A0C32h, 08437FD22h, 03271EE43h, 042572AEEh, 05F91962Ah, 01C522D98h dd 059B23F0Ch, 0D86B8804h, 008C63531h, 02C0D7A40h, 0B97C4729h, 004964DF9h, 013C74A17h, 05878362Fh dd 04C808CD6h, 0092CB1E0h, 06DF02885h, 0A0C2105Eh, 08ABA9E68h, 064E03057h, 0E5D61325h, 00E43A628h dd 016DBD62Bh, 02733D90Bh, 03AE57283h, 0C0C1052Ch, 04B6FB620h, 037513953h, 0FC898BB3h, 0471B179Fh dd 0DF6E66B8h, 0D32142F5h, 09B30FAFCh, 04ED92549h, 0105C6D99h, 04ACD69FFh, 02B1A27D3h, 06BFCC067h dd 06301A278h, 0AD36E6F2h, 0EF3FF64Eh, 056B3CADBh, 00184BB61h, 017BEB9FDh, 0FAEC6109h, 0A2E1FFA1h dd 02FD224F8h, 0238F5BE6h, 08F8570CFh, 0AEB5F25Ah, 04F1D3E64h, 04377EB24h, 01FA45346h, 0B2056386h dd 052095E76h, 0BB7B5ADCh, 03514E472h, 0DDE81E6Eh, 07ACEA9C4h, 0AC15CC48h, 071C97D93h, 0767F941Ch dd 0911052A2h, 0FFEA09BFh, 0FE3DDCF0h, 015EBF3AAh, 09235B8BCh, 075408615h, 09A723437h, 0E1A1BD38h dd 033541B7Eh, 01BDD6856h, 0B307E13Eh, 090814BB0h, 051D7217Bh, 00BB92219h, 0689F4500h, 0C568B01Fh dd 05DF3D2D7h, 03C0ECD0Dh, 02A0244C8h, 0852574E8h, 0E72F23A9h, 08E26ED02h, 02D92CBDDh, 0DABC0458h dd 0CDF5FEB6h, 09E4E8DCCh, 0F4F1E344h, 00D8C436Dh, 04427603Bh, 0BDD37FDAh, 080505F26h, 08C7D2B8Eh dd 0B73273C5h, 0397362EAh, 0618A3811h, 0608BFB88h, 006F7D714h, 0212E4677h, 028EFCEADh, 0076C0371h dd 036A3A4D9h, 05487B455h, 03429A365h, 065D467ACh, 078EE7EEBh, 099BF12B7h, 04D129896h, 0772A5601h dd 0CCE284C7h, 02ED85C21h, 0D099E8A4h, 0A179158Ah, 06AC0AB1Ah, 0299A4807h, 0BE67A58Dh, 0DC19544Ah dd 0B8949B54h, 08D315779h, 0B6F849C1h, 053C5AC34h, 066DE92A5h, 0F195DD13h, 0318D3A73h, 0301EC542h dd 00CC40DA6h, 0F253ADE4h, 0467EE566h, 0EA5585ECh, 03BAF19BBh, 07DE9F480h, 079006E7Ch, 0A9B7A197h dd 0A44BD8F1h, 0FB2BA739h, 0EC342FD4h, 0ED4FD32Dh, 03D1789BAh, 0400F5D7Fh, 0C798F594h, 04506A847h dd 0034C0A95h, 0E2162C9Dh, 055A9CFD0h, 0692D832Eh, 0CF9DB2CAh, 05E2287E9h, 0D2610EF3h, 01AE7ECC2h dd 048399CA0h, 0A7E4269Bh, 06EE3A0AFh, 07065BFE1h, 0A6FFE708h, 02256804Ch, 07476E21Bh, 041B0796Ch dd 07C243B05h, 0000A950Fh, 01858416Bh, 0F5A53C89h, 0E9FEF823h, 03F443275h, 0E0CBF091h, 00AF27B84h dd 03EBB0F27h, 01DE6F7F4h, 0C31C29F7h, 0B166DE3Dh, 012932EC3h, 09C0C0674h, 05CDA81B9h, 0D1BD9D12h dd 0AFFD7C82h, 08962BCA7h, 0A342C4A8h, 062457151h, 082089F03h, 0EB49C670h, 05B5F6530h, 07E28BAD2h dd 020880BA3h, 0F0FAAFCDh, 0CE82B56Fh, 00275335Ch, 0C18E8AFBh, 0DE601D69h, 0BA9B820Ah, 0C8A2BE4Fh dd 0D7CAC335h, 0D9A73741h, 0115E974Dh, 07F5AC21Dh, 0383BF9C6h, 0BCAEB75Fh, 0FD0350CEh, 0B5D06B87h dd 09820E03Ch, 072D5F163h, 0E3644FC9h, 0A5464C4Bh, 057048FCBh, 09690C9DFh, 0DBF9EAFAh, 0BFF4649Ah dd 0053C00E3h, 0B4B61136h, 067593DD1h, 0503EE960h, 09FB4993Ah, 019831810h, 0C670D518h, 0B05B51D8h dd 00F3A1CE5h, 06CAA1F9Ch, 0AACC31BEh, 0949ED050h, 01EAD07E7h, 0A8479ABDh, 0D6CFFCD5h, 0936993EFh snefruSBox14 dd 0472E91CBh, 05444B5B6h, 062BE5861h, 01BE102C7h, 063E4B31Eh, 0E81F71B7h, 09E2317C9h, 039A408AEh dd 0518024F4h, 01731C66Fh, 068CBC918h, 071FB0C9Eh, 0D03B7FDDh, 07D6222EBh, 09057EDA3h, 01A34A407h dd 08CC2253Dh, 0B6F6979Dh, 0835675DCh, 0F319BE9Fh, 0BE1CD743h, 04D32FEE4h, 077E7D887h, 037E9EBFDh dd 015F851E8h, 023DC3706h, 019D78385h, 0BD506933h, 0A13AD4A6h, 0913F1A0Eh, 0DDE560B9h, 09A5F0996h dd 0A65A0435h, 048D34C4Dh, 0E90839A7h, 08ABBA54Eh, 06FD13CE1h, 0C7EEBD3Ch, 00E297602h, 058B9BBB4h dd 0EF7901E6h, 064A28A62h, 0A509875Ah, 0F8834442h, 02702C709h, 007353F31h, 03B39F665h, 0F5B18B49h dd 04010AE37h, 0784DE00Bh, 07A1121E9h, 0DE918ED3h, 0C8529DCDh, 0816A5D05h, 002ED8298h, 004E3DD84h dd 0FD2BC3E2h, 0AF167089h, 096AF367Eh, 0A4DA6232h, 018FF7325h, 005F9A9F1h, 04FEFB9F9h, 0CD94EAA5h dd 0BFAA5069h, 0A0B8C077h, 060D86F57h, 0FE71C813h, 029EBD2C8h, 04CA86538h, 06BF1A030h, 0A237B88Ah dd 0AA8AF41Dh, 0E1F7B6ECh, 0E214D953h, 033057879h, 049CAA736h, 0FA45CFF3h, 0C063B411h, 0BA7E27D0h dd 031533819h, 02A004AC1h, 0210EFC3Fh, 02646885Eh, 066727DCFh, 09D7FBF54h, 0A8DD0EA8h, 03447CACEh dd 03F0C14DBh, 0B8382AACh, 04ACE3539h, 00A518D51h, 095178981h, 035AEE2CAh, 073F0F7E3h, 094281140h dd 059D0E523h, 0D292CB88h, 0565D1B27h, 07EC8FBAFh, 0069AF08Dh, 0C127FD24h, 00BC77B10h, 05F03E7EFh dd 0453E99BAh, 0EED9FF7Fh, 087B55215h, 07915AB4Ch, 0D389A358h, 05E75CE6Dh, 028D655C0h, 0DAD26C73h dd 02E2510FFh, 09FA7EECCh, 01D0629C3h, 0DC9C9C46h, 02D67ECD7h, 0E75E94BDh, 03D649E2Ah, 06C413A2Bh dd 0706F0D7Ch, 0DFB0127Bh, 04E366B55h, 02C825650h, 024205720h, 0B5C998F7h, 03E95462Ch, 0756E5C72h dd 03259488Fh, 011E8771Ah, 0A7C0A617h, 0577663E5h, 0089B6401h, 08EAB1941h, 0AE55EF8Ch, 03AAC5460h dd 0D4E6262Fh, 05D979A47h, 0B19823B0h, 07F8D6A0Ch, 0FFA08683h, 00170CD0Fh, 0858CD5D8h, 053961C90h dd 0C4C61556h, 041F2F226h, 0CFCD062Dh, 0F24C03B8h, 0EA81DF5Bh, 07BE2FA52h, 0B361F98Bh, 0C2901316h dd 055BA4BBCh, 093B234A9h, 00FBC6603h, 080A96822h, 06D60491Fh, 022BD00F8h, 0BCAD5AADh, 052F3F13Bh dd 042FD2B28h, 0B41DD01Ch, 0C52C93BFh, 0FC663094h, 08F58D100h, 043FECC08h, 0C6331E5Dh, 0E6480F66h dd 0CA847204h, 04BDF1DA0h, 030CC2EFBh, 013E02DEAh, 0FB49AC45h, 0F9D4434Fh, 0F47C5B9Ch, 0148879C2h dd 0039FC234h, 0A3DB9BFCh, 0D1A1DC5Ch, 0763D7CD4h, 0ED6D2F93h, 0AB13AF6Eh, 01E8E054Ah, 0D68F4F9Ah dd 0C30484B3h, 0D7D50AFAh, 06930855Fh, 0CC07DB95h, 0CE746DB1h, 0744E967Dh, 0F16CF575h, 08643E8B5h dd 0F0EAE38Eh, 0E52DE1D1h, 06587DAE0h, 00C4B8121h, 01C7AC567h, 0AC0DB20Ah, 036C3A812h, 05B1A4514h dd 0A9A3F868h, 0B9263BAAh, 0CB3CE9D2h, 0E44FB1A4h, 09221BC82h, 0B29390FEh, 06AB41863h, 0974A3E2Eh dd 089F531C5h, 0255CA13Eh, 08B65D348h, 0EC248F78h, 0D8FC16F0h, 050ECDEEEh, 009010792h, 03C7D1FB2h dd 0EBA5426Bh, 0847B417Ah, 0468B40D9h, 08DC4E680h, 07CC1F391h, 02F1EB086h, 06E5BAA6Ah, 0E0B395DAh dd 0E31B2CF6h, 0D9690B0Dh, 0729EC464h, 038403DDEh, 0610B80A2h, 05CF433ABh, 0B0785FC4h, 0D512E4C6h dd 0BBB7D699h, 05A86591Bh, 010CF5376h, 012BF9F4Bh, 0980FBAA1h, 0992A4E70h, 020FA7AE7h, 0F7996EBBh dd 0C918A2BEh, 082DE74F2h, 0AD54209Bh, 0F66B4D74h, 01FC5B771h, 0169D9229h, 0887761DFh, 000B667D5h dd 0DB425E59h, 0B72F2844h, 09B0AC1F5h, 09C737E3Ah, 02B85476Ch, 06722ADD6h, 044A63297h, 00D688CEDh snefruSBox15 dd 0ABC59484h, 04107778Ah, 08AD94C6Fh, 0FE83DF90h, 00F64053Fh, 0D1292E9Dh, 0C5744356h, 08DD1ABB4h dd 04C4E7667h, 0FB4A7FC1h, 074F402CBh, 070F06AFDh, 0A82286F2h, 0918DD076h, 07A97C5CEh, 048F7BDE3h dd 06A04D11Dh, 0AC243EF7h, 033AC10CAh, 02F7A341Eh, 05F75157Ah, 0F4773381h, 0591C870Eh, 078DF8CC8h dd 022F3ADB0h, 0251A5993h, 009FBEF66h, 0796942A8h, 097541D2Eh, 02373DAA9h, 01BD2F142h, 0B57E8EB2h dd 0E1A5BFDBh, 07D0EFA92h, 0B3442C94h, 0D2CB6447h, 0386AC97Eh, 066D61805h, 0BDADA15Eh, 011BC1AA7h dd 014E9F6EAh, 0E533A0C0h, 0F935EE0Ah, 08FEE8A04h, 0810D6D85h, 07C68B6D6h, 04EDC9AA2h, 0956E897Dh dd 0ED87581Ah, 0264BE9D7h, 0FF4DDB29h, 0823857C2h, 0E005A9A0h, 0F1CC2450h, 06F9951E1h, 0AADE2310h dd 0E70C75F5h, 083E1A31Fh, 04F7DDE8Eh, 0F723B563h, 0368E0928h, 086362B71h, 021E8982Dh, 0DFB3F92Bh dd 044676352h, 099EFBA31h, 02EAB4E1Ch, 0FC6CA5E7h, 00EBE5D4Eh, 0A0717D0Ch, 0B64F8199h, 0946B31A1h dd 05656CBC6h, 0CFFEC3EFh, 0622766C9h, 0FA211E35h, 052F98B89h, 06D01674Bh, 04978A802h, 0F651F701h dd 015B0D43Dh, 0D6FF4683h, 03463855Fh, 0672BA29Ch, 0BC128312h, 04626A70Dh, 0C8927A5Ah, 0B8481CF9h dd 01C962262h, 0A21196BAh, 0BABA5EE9h, 05BB162D0h, 069943BD1h, 00C47E35Ch, 08CC9619Ah, 0E284D948h dd 0271BF264h, 0C27FB398h, 04BC70897h, 060CF202Ch, 07F42D6AAh, 0A5A13506h, 05D3E8860h, 0CEA63D3Ch dd 063BF0A8Fh, 0F02E9EFAh, 0B17B0674h, 0B072B1D3h, 006E5723Bh, 03737E436h, 024AA49C7h, 00DED0D18h dd 0DB256B14h, 058B27877h, 0ECB49F54h, 06C40256Ah, 06EA92FFBh, 03906AA4Ch, 0C9866FD5h, 04549323Eh dd 0A7B85FABh, 01918CC27h, 07308D7B5h, 01E16C7ADh, 071850B37h, 03095FD78h, 0A63B70E6h, 0D880E2AEh dd 03E282769h, 0A39BA6BCh, 098700FA3h, 0F34C53E8h, 0288AF426h, 0B99D930Fh, 0F5B99DF1h, 0E9D0C8CFh dd 05AC8405Dh, 050E7217Bh, 0511FBBBEh, 02CA2E639h, 0C020301Bh, 0356DBC00h, 08E43DDB9h, 04D327B4Ah dd 0F20FF3EDh, 01DBB29BDh, 043D44779h, 0A1B68F70h, 06114455Bh, 0E63D280Bh, 06BF6FF65h, 010FC39E5h dd 03DAE126Eh, 0C1D7CF11h, 0CB60B795h, 01789D5B3h, 09BCA36B7h, 008306075h, 084615608h, 08B3A0186h dd 0E88FBECDh, 07BA47C4Dh, 02DE44DACh, 0653FE58Dh, 0CCA0B968h, 0D7FA0E72h, 093901780h, 01F2C26CCh dd 0AE595B6Bh, 0A9ECEA9Bh, 0E3DBF8C4h, 0319CC130h, 012981196h, 001A3A4DEh, 032C454B6h, 0755BD817h dd 03CD871E4h, 0A48BB8DAh, 002FDEC09h, 0FD2DC2E2h, 09E578088h, 09A9F916Dh, 04065FE6Ch, 01853999Eh dd 0C7793F23h, 0DC1016BBh, 0969355FFh, 07EF292F6h, 0CDCE4ADCh, 005E24416h, 085C16C46h, 0D441D37Fh dd 057BD6855h, 08746F54Fh, 09CA773DFh, 0770BAE22h, 054828413h, 0B75E4B19h, 004C35C03h, 0BF7CCA07h dd 02955C4DDh, 0721DB041h, 0B2394F33h, 003F51387h, 089B73C9Fh, 00B1737F3h, 007E69024h, 09231D245h dd 076193861h, 088159C15h, 0DEB552D9h, 0D9767E40h, 020C6C0C3h, 04281977Ch, 0F8AFE1E0h, 0D32A0751h dd 03FC27432h, 0DDF1DCC5h, 068581F34h, 03BCD5025h, 00091B2EEh, 04AEB6944h, 01602E743h, 0EA09EB58h dd 0EF0A2A8Bh, 0641E03A5h, 0EB50E021h, 05C8CCEF8h, 0802FF0B8h, 0D5E3EDFEh, 0C4DD1B49h, 05334CD2Ah dd 013F82D2Fh, 047450C20h, 055DAFBD2h, 0BEC0C6F4h, 0B45D7959h, 03AD36E8Ch, 00AA8AC57h, 01A3C8D73h dd 0E45AAFB1h, 09F664838h, 0C6880053h, 0D0039BBFh, 0EE5F19EBh, 0CA0041D8h, 0BBEA3AAFh, 0DA628291h dd 09D5C95D4h, 0ADD504A6h, 0C39AB482h, 05E9E14A4h, 02BE065F0h, 02A13FC3Ah, 09052E8ECh, 0AF6F5AFCh snefruSBox16 dd 0519AA8B5h, 0BB303DA9h, 0E00E2B10h, 0DFA6C1DBh, 02E6B952Eh, 0EE10DC23h, 037936D09h, 01FC42E92h dd 039B25A9Fh, 013FF89F4h, 0C8F53FEAh, 018500BC7h, 095A0379Dh, 098F751C2h, 02289C42Fh, 0A21E4098h dd 06F391F41h, 0F27E7E58h, 00D0DF887h, 04B79D540h, 08E8409AAh, 071FE46F8h, 0688A9B29h, 03F08B548h dd 084ABE03Ah, 05E91B6C1h, 0FDE4C2AEh, 0251D0E72h, 092D4FEE5h, 0F9371967h, 09175108Fh, 0E6E81835h dd 08C8CB8EEh, 0B55A67B3h, 0CEF138CCh, 08B256268h, 000D815F5h, 0E8810812h, 077826189h, 0EA73267Dh dd 019B90F8Dh, 045C33BB4h, 082477056h, 0E1770075h, 009467AA6h, 0A7C6F54Ah, 079768742h, 061B86BCAh dd 0D6644A44h, 0E33F0171h, 0C229FBCDh, 041B08FEBh, 0D1903E30h, 065EC9080h, 0563D6FBDh, 0F56DA488h dd 0EBF64CD8h, 04934426Bh, 07C8592FCh, 06ACA8CF2h, 01CEA111Bh, 03A57EE7Ah, 0ACE11C0Dh, 09942D85Eh dd 0C4613407h, 0FA8E643Bh, 0327FC701h, 04CA9BE82h, 03352526Dh, 02C047F63h, 0F3A8F7DDh, 01A4A98A8h dd 0762ED4D1h, 027C75008h, 0BDF497C0h, 07A7B84DFh, 0315C28ABh, 0801F93E3h, 0F19B0CA1h, 08F14E46Ah dd 0E48BA333h, 09605E625h, 0F03ECB60h, 060385F2Dh, 0902845BAh, 07F96D66Fh, 024BFF05Ch, 02820730Bh dd 0947133CBh, 0D444828Ah, 0B343F6F1h, 00BEF4705h, 08DA574F9h, 001E25D6Ch, 01732793Eh, 04F0F7B27h dd 0364B7117h, 0B2D1DA77h, 0A6C5F1E9h, 0574CA5B1h, 0386A3076h, 0AD6894D6h, 01156D7FAh, 0A48D1D9Ah dd 04794C0AFh, 0150C0AA0h, 026D348ACh, 029FDEABEh, 0A5DEDE53h, 081671E8Eh, 0594EE3BFh, 0A96C56E6h dd 03426A726h, 0C5976579h, 0BC22E5E4h, 0C1006319h, 0DAAFDD2Ah, 0A1A1AA83h, 03BADD0E7h, 0C3B14981h dd 0D770B155h, 0CCD7C693h, 042E944C5h, 003E0064Fh, 0CA95B4EFh, 03DEE81C3h, 0FBBCD98Ch, 01E07E15Bh dd 0667CE949h, 0E7D6773Fh, 021B6124Bh, 06B2A6EF7h, 0D3278A9Ch, 09A988304h, 075D2AE9Bh, 0FE49E2FFh dd 09BC24F46h, 074CC2CF6h, 0A3139F36h, 06C9EF35Ah, 09FC1DFFEh, 09E5FACDCh, 0AADC8BBBh, 05ABDBC5Fh dd 044B3B390h, 0F754EFA7h, 05FE3BDB7h, 04E59C886h, 006A4C984h, 0A0338878h, 0CD513CD7h, 063EBD27Eh dd 08ABA80ADh, 050DA144Eh, 05D9F4E97h, 0025B751Ch, 02D580200h, 0B6C05837h, 0580AA15Dh, 054022A6Eh dd 0B41A5415h, 04863FAB6h, 0B0B79957h, 046D0D159h, 0DC2B8650h, 020A7BB0Ch, 04A032974h, 0EC8636A2h dd 08548F24Ch, 0F6A2BF16h, 01088F4B0h, 00C2F3A94h, 0525DC396h, 014065785h, 02B4DCA52h, 008AEED39h dd 0ABEDFC99h, 0B1DBCF18h, 087F85BBCh, 0AE3AFF61h, 0433CCD70h, 05B23CC64h, 07B453213h, 05355C545h dd 09318EC0Ah, 078692D31h, 00A21693Dh, 0D5666814h, 005FB59D9h, 0C71985B2h, 02ABB8E0Eh, 0CF6E6C91h dd 0D9CFE7C6h, 0EFE7132Ch, 09711AB28h, 03CE52732h, 012D516D2h, 07209A0D0h, 0D278D306h, 070FA4B7Bh dd 01D407DD3h, 0DB0BEBA4h, 0BFD97621h, 0A8BE21E1h, 01B6F1B66h, 030650DDAh, 0BA7DDBB9h, 07DF953FBh dd 09D1C3902h, 0EDF0E8D5h, 0B8741AE0h, 00F240565h, 062CD438Bh, 0C616A924h, 0AF7A96A3h, 035365538h dd 0E583AF4Dh, 073415EB8h, 023176A47h, 0FC9CCEE8h, 07EFC9DE2h, 0695E03CFh, 0F8CE66D4h, 088B4781Dh dd 067DD9C03h, 03E8F9E73h, 0C0C95C51h, 0BE314D22h, 055AA0795h, 0CB1BB011h, 0E980FDC8h, 09C62B7CEh dd 0DE2D239Eh, 0042CADF3h, 0FFDF04DEh, 05CE6A60Fh, 0D8C831EDh, 0B7B5B9ECh, 0B9CBF962h, 0E253B254h dd 00735BA1Fh, 016AC917Fh, 0DD607C2Bh, 064A335C4h, 040159A7Ch, 0869222F0h, 06EF21769h, 0839D20A5h dd 0D03B24C9h, 0F412601Eh, 06D72A243h, 00E018DFDh, 089F3721Ah, 0C94F4134h, 02F992F20h, 04D87253Ch snefruShiftTable dd 16, 8, 16, 24 .data? snefruValue dd 8 dup (?) snefruBuffer dd 16 dup (?) snefruBuffer2 dd 16 dup (?) snefruTemp dd 12 dup (?) snefruResult dd 24 dup (?) snefruResultLen dd ? snefruBlockSize dd ? snefruLength dd ? snefruPasses dd ? snefruCount dd ? snefruDigest dd 8 dup (?) .code align dword SNEFRU128_RT proc uses esi edx ecx _Input:dword, _Output:dword, _len:dword call EnableKeyEdit movzx eax, byte ptr[sKeyIn] .if eax == 4 || eax == 8 || eax == '4' || eax == '8' .if eax > 8 sub eax, 30h .endif mov esi, offset HASHES_Current assume esi:ptr HASH_PARAMETERS invoke SNEFRUEx, _Input, _len, 128, eax, [esi].SNEFRUparameterA, [esi].SNEFRUparameterB, [esi].SNEFRUparameterC, \ [esi].SNEFRUparameterD, [esi].SNEFRUparameterE, [esi].SNEFRUparameterF, [esi].SNEFRUparameterG, [esi].SNEFRUparameterH assume esi:nothing ;invoke SNEFRU, _Input, _len, 128, eax mov edi, eax xor ebx, ebx @@: mov eax, dword ptr[edi+ebx*4] bswap eax invoke wsprintf, addr sTempBuf, addr hex32bitlc, eax invoke lstrcat, _Output, addr sTempBuf inc ebx cmp ebx, 4 jl @b invoke lstrlen, _Output HexLen .else invoke SetDlgItemText, hWindow, IDC_INFO, addr ErrorSNEFRURounds mov eax, -1 .endif ret SNEFRU128_RT endp align dword SNEFRU256_RT proc uses esi edx ecx _Input:dword, _Output:dword, _len:dword call EnableKeyEdit movzx eax, byte ptr[sKeyIn] .if eax == 4 || eax == 8 || eax == '4' || eax == '8' .if eax > 8 sub eax, 30h .endif mov esi, offset HASHES_Current assume esi:ptr HASH_PARAMETERS invoke SNEFRUEx, _Input, _len, 256, eax, [esi].SNEFRUparameterA, [esi].SNEFRUparameterB, [esi].SNEFRUparameterC, \ [esi].SNEFRUparameterD, [esi].SNEFRUparameterE, [esi].SNEFRUparameterF, [esi].SNEFRUparameterG, [esi].SNEFRUparameterH assume esi:nothing ;invoke SNEFRU, _Input, _len, 256, eax mov edi, eax xor ebx, ebx @@: mov eax, dword ptr[edi+ebx*4] bswap eax invoke wsprintf, addr sTempBuf, addr hex32bitlc, eax invoke lstrcat, _Output, addr sTempBuf inc ebx cmp ebx, 8 jl @b invoke lstrlen, _Output HexLen .else invoke SetDlgItemText, hWindow, IDC_INFO, addr ErrorSNEFRURounds mov eax, -1 .endif ret SNEFRU256_RT endp ;align dword ;SNEFRU proc pData:dword, dwDataLen:UINT, DigestSizeBits:UINT, Passes:UINT ; invoke SNEFRUEx, pData, dwDataLen, DigestSizeBits, Passes, 0, 0, 0, 0, 0, 0, 0, 0 ; ret ;SNEFRU endp align dword SNEFRUEx proc uses esi edi pData:dword, dwDataLen:UINT, DigestSizeBits:UINT, Passes:UINT, dwInit1:dword, dwInit2:dword, dwInit3:dword, dwInit4:dword, dwInit5:dword, dwInit6:dword, dwInit7:dword, dwInit8:dword invoke SnefruInit, DigestSizeBits, Passes xor ecx, ecx mov cl, 8 lea esi, dwInit1 mov edi, offset snefruValue rep movsd invoke SnefruUpdate, pData, dwDataLen invoke SnefruPadding invoke SnefruUpdate, offset snefruResult, snefruResultLen invoke SnefruFinal ret SNEFRUEx endp align dword SnefruTransform proc uses ebx esi edi lpBlock:dword, dwBlockLen:dword local i_:dword, j_:dword, k_:dword local TempLength:dword mov eax, dwBlockLen shr eax, 2 mov TempLength, eax mov ecx, TempLength mov esi, lpBlock mov edi, offset snefruTemp @@: lodsd bswap eax stosd loop @b mov ecx, snefruLength mov esi, offset snefruValue mov edi, offset snefruBuffer rep movsd mov ecx, TempLength mov esi, offset snefruTemp mov edi, offset snefruBuffer mov eax, snefruLength shl eax, 2 add edi, eax rep movsd xor ecx, ecx mov i_, ecx .while ecx < snefruPasses xor ecx, ecx mov j_, ecx .while ecx < 4 mov esi, offset snefruSBox1 mov eax, i_ shl eax, 1 xor edx, edx mov ecx, snefruSBox_size mul ecx add esi, eax mov eax, snefruBuffer[0*4] and eax, 0FFh shl eax, 2 add esi, eax mov eax, dword ptr [esi] xor snefruBuffer[15*4], eax xor snefruBuffer[1*4], eax mov esi, offset snefruSBox1 mov eax, i_ shl eax, 1 xor edx, edx mov ecx, snefruSBox_size mul ecx add esi, eax mov eax, snefruBuffer[1*4] and eax, 0FFh shl eax, 2 add esi, eax mov eax, dword ptr [esi] xor snefruBuffer[0*4], eax xor snefruBuffer[2*4], eax mov esi, offset snefruSBox1 mov eax, i_ shl eax, 1 inc eax xor edx, edx mov ecx, snefruSBox_size mul ecx add esi, eax mov eax, snefruBuffer[2*4] and eax, 0FFh shl eax, 2 add esi, eax mov eax, dword ptr [esi] xor snefruBuffer[1*4], eax xor snefruBuffer[3*4], eax mov esi, offset snefruSBox1 mov eax, i_ shl eax, 1 inc eax xor edx, edx mov ecx, snefruSBox_size mul ecx add esi, eax mov eax, snefruBuffer[3*4] and eax, 0FFh shl eax, 2 add esi, eax mov eax, dword ptr [esi] xor snefruBuffer[2*4], eax xor snefruBuffer[4*4], eax mov esi, offset snefruSBox1 mov eax, i_ shl eax, 1 xor edx, edx mov ecx, snefruSBox_size mul ecx add esi, eax mov eax, snefruBuffer[4*4] and eax, 0FFh shl eax, 2 add esi, eax mov eax, dword ptr [esi] xor snefruBuffer[3*4], eax xor snefruBuffer[5*4], eax mov esi, offset snefruSBox1 mov eax, i_ shl eax, 1 xor edx, edx mov ecx, snefruSBox_size mul ecx add esi, eax mov eax, snefruBuffer[5*4] and eax, 0FFh shl eax, 2 add esi, eax mov eax, dword ptr [esi] xor snefruBuffer[4*4], eax xor snefruBuffer[6*4], eax mov esi, offset snefruSBox1 mov eax, i_ shl eax, 1 inc eax xor edx, edx mov ecx, snefruSBox_size mul ecx add esi, eax mov eax, snefruBuffer[6*4] and eax, 0FFh shl eax, 2 add esi, eax mov eax, dword ptr [esi] xor snefruBuffer[5*4], eax xor snefruBuffer[7*4], eax mov esi, offset snefruSBox1 mov eax, i_ shl eax, 1 inc eax xor edx, edx mov ecx, snefruSBox_size mul ecx add esi, eax mov eax, snefruBuffer[7*4] and eax, 0FFh shl eax, 2 add esi, eax mov eax, dword ptr [esi] xor snefruBuffer[6*4], eax xor snefruBuffer[8*4], eax mov esi, offset snefruSBox1 mov eax, i_ shl eax, 1 xor edx, edx mov ecx, snefruSBox_size mul ecx add esi, eax mov eax, snefruBuffer[8*4] and eax, 0FFh shl eax, 2 add esi, eax mov eax, dword ptr [esi] xor snefruBuffer[7*4], eax xor snefruBuffer[9*4], eax mov esi, offset snefruSBox1 mov eax, i_ shl eax, 1 xor edx, edx mov ecx, snefruSBox_size mul ecx add esi, eax mov eax, snefruBuffer[9*4] and eax, 0FFh shl eax, 2 add esi, eax mov eax, dword ptr [esi] xor snefruBuffer[8*4], eax xor snefruBuffer[10*4], eax mov esi, offset snefruSBox1 mov eax, i_ shl eax, 1 inc eax xor edx, edx mov ecx, snefruSBox_size mul ecx add esi, eax mov eax, snefruBuffer[10*4] and eax, 0FFh shl eax, 2 add esi, eax mov eax, dword ptr [esi] xor snefruBuffer[9*4], eax xor snefruBuffer[11*4], eax mov esi, offset snefruSBox1 mov eax, i_ shl eax, 1 inc eax xor edx, edx mov ecx, snefruSBox_size mul ecx add esi, eax mov eax, snefruBuffer[11*4] and eax, 0FFh shl eax, 2 add esi, eax mov eax, dword ptr [esi] xor snefruBuffer[10*4], eax xor snefruBuffer[12*4], eax mov esi, offset snefruSBox1 mov eax, i_ shl eax, 1 xor edx, edx mov ecx, snefruSBox_size mul ecx add esi, eax mov eax, snefruBuffer[12*4] and eax, 0FFh shl eax, 2 add esi, eax mov eax, dword ptr [esi] xor snefruBuffer[11*4], eax xor snefruBuffer[13*4], eax mov esi, offset snefruSBox1 mov eax, i_ shl eax, 1 xor edx, edx mov ecx, snefruSBox_size mul ecx add esi, eax mov eax, snefruBuffer[13*4] and eax, 0FFh shl eax, 2 add esi, eax mov eax, dword ptr [esi] xor snefruBuffer[12*4], eax xor snefruBuffer[14*4], eax mov esi, offset snefruSBox1 mov eax, i_ shl eax, 1 inc eax xor edx, edx mov ecx, snefruSBox_size mul ecx add esi, eax mov eax, snefruBuffer[14*4] and eax, 0FFh shl eax, 2 add esi, eax mov eax, dword ptr [esi] xor snefruBuffer[13*4], eax xor snefruBuffer[15*4], eax mov esi, offset snefruSBox1 mov eax, i_ shl eax, 1 inc eax xor edx, edx mov ecx, snefruSBox_size mul ecx add esi, eax mov eax, snefruBuffer[15*4] and eax, 0FFh shl eax, 2 add esi, eax mov eax, dword ptr [esi] xor snefruBuffer[14*4], eax xor snefruBuffer[0*4], eax xor ebx, ebx mov k_, ebx mov ecx, j_ mov ecx, snefruShiftTable[ecx*4] mov ch, 32 sub ch, cl .while ebx < 16 mov edx, snefruBuffer[ebx*4] mov eax, edx shr edx, cl xchg ch, cl shl eax, cl xchg ch, cl or edx, eax mov snefruBuffer[ebx*4], edx inc k_ mov ebx, k_ .endw inc j_ mov ecx, j_ .endw inc i_ mov ecx, i_ .endw mov eax, snefruBuffer[15*4] xor snefruValue[0*4], eax mov eax, snefruBuffer[14*4] xor snefruValue[1*4], eax mov eax, snefruBuffer[13*4] xor snefruValue[2*4], eax mov eax, snefruBuffer[12*4] xor snefruValue[3*4], eax .if snefruLength==8 mov eax, snefruBuffer[11*4] xor snefruValue[4*4], eax mov eax, snefruBuffer[10*4] xor snefruValue[5*4], eax mov eax, snefruBuffer[9*4] xor snefruValue[6*4], eax mov eax, snefruBuffer[8*4] xor snefruValue[7*4], eax .endif ret SnefruTransform endp align dword SnefruInit proc uses edi DigestSizeBits:dword, Passes:dword mov eax, DigestSizeBits shr eax, 3 mov ecx, 64 sub ecx, eax mov snefruBlockSize, ecx shr eax, 2 mov snefruLength, eax push Passes pop snefruPasses mov snefruCount, 0 xor eax, eax mov ecx, eax mov cl, 76 mov edi, offset snefruValue rep stosd ret SnefruInit endp align dword SnefruPadding proc uses edi mov eax, snefruCount xor edx, edx div snefruBlockSize mov eax, snefruBlockSize sub eax, edx mov edx, snefruCount shl edx, 3 add eax, snefruBlockSize mov snefruResultLen, eax mov edi, offset snefruResult add edi, eax dec edi xor ecx, ecx mov cl, 8 @@: mov byte ptr [edi], dl dec edi sar edx, 8 loop @b ret SnefruPadding endp align dword SnefruUpdate proc uses esi edi lpBuffer:dword, dwBufLen:dword local i_:dword, partLen:dword, index:dword xor ecx, ecx mov index, ecx mov eax, snefruCount xor edx, edx div snefruBlockSize mov i_, edx mov eax, snefruBlockSize sub eax, i_ mov partLen, eax mov eax, dwBufLen add snefruCount, eax .if eax >= partLen mov ecx, partLen mov esi, lpBuffer mov edi, offset snefruBuffer2 add edi, i_ rep movsb invoke SnefruTransform, addr snefruBuffer2, snefruBlockSize push partLen pop index mov eax, index add eax, snefruBlockSize dec eax .while eax < dwBufLen mov ecx, snefruBlockSize mov esi, lpBuffer add esi, index mov edi, offset snefruBuffer2 rep movsb invoke SnefruTransform, addr snefruBuffer2, snefruBlockSize mov eax, snefruBlockSize add index, eax add eax, index dec eax .endw mov i_, 0 .endif mov eax, index .if eax < dwBufLen mov ecx, dwBufLen sub ecx, index mov esi, lpBuffer add esi, index mov edi, offset snefruBuffer2 add edi, i_ rep movsb .endif ret SnefruUpdate endp align dword SnefruFinal proc uses esi edi cld mov ecx, snefruLength mov esi, offset snefruValue mov edi, offset snefruDigest push edi @@: lodsd bswap eax stosd loop @b pop eax ret SnefruFinal endp