#include #include DWORD table_701838[] = {0xF25350C6, 0x7F9D42A8, 0x261D0977, 0x7C885342}; DWORD table_751878[] = {0x13, 0x52, 0x2A, 0x5B, 8, 2, 0x10, 0x60, 6, 2, 0x43, 0x0F, 0x0B4, 0x4B, 0x35, 5, 0x1B, 0x0A, 0x5F, 9, 0x0F, 0x50, 0x0C, 0x1B, 0x33, 0x55, 1, 9, 0x52, 0x0DE, 0x0C7, 0x1E}; DWORD table_7518F8[] = {0x0A4773FEC, 0x0BF71D045, 0x0FC2098B7, 0x0E1B3E94B, 0x0CF7225C, 0x0BD811B44, 0x0C3D48D63, 0x0E01910F2, 0x666EA1FB, 0x0CED6AEEA, 0x0EB4E1806, 0x0BADB9578, 0x2A7A42B6, 0x67540B83, 0x0E765E86D, 0x0AAF3072F, 0x0B0857B27, 0x0A98BFD26, 0x0D7A8BEFA, 0x0DA92CCCB, 0x2D6093F9, 0x9BA2D2DD, 0x21825F39, 0x31F8694C, 0x0AD8EEE87, 0x0B5BC6A8C, 0x0F113596B, 0x5AF60004, 0x8F487935, 0x5797CD15, 0x0FF373E12, 0x0F5514F9D, 0x14BB70A3, 0x72B8C275, 0x687DEDC0, 0x620D2EC9, 0x4D111746, 0x537EC46C, 0x0C1, 0x25, 0x0C7, 0x9A, 0x2C58881C, 0x6402DC89, 0x385D0140, 0x55AFE2A5, 0x7C1AEFD5, 0x6FA65BA7, 0x0E6739F86, 0x992BDE0A, 0x0DF9C474A, 0x309E7609, 0x94B2E40E, 0x1D343BA0, 0x0E3360F28, 0x0D803B423, 0x0FE3CC890, 0x5024325E, 0x8A433A1F, 0x0AC744196, 0x0D9F03352, 0x16B18029, 0x0B991ABD3, 0x1E617F84, 0x56D1C5CF, 0x5F4CA3D, 0x4908E5C6}; DWORD table_756D30[] = {0x0A4773FEC, 0x0BF71D045, 0x0FC2098B7, 0x0E1B3E94B, 0x0CF7225C, 0x0BD811B44, 0x0C3D48D63, 0x0E01910F2, 0x666EA1FB, 0x0CED6AEEA, 0x0EB4E1806, 0x0BADB9578, 0x2A7A42B6, 0x67540B83, 0x0E765E86D, 0x0AAF3072F, 0x0B0857B27, 0x0A98BFD26, 0x0D7A8BEFA, 0x0DA92CCCB, 0x2D6093F9, 0x9BA2D2DD, 0x21825F39, 0x31F8694C, 0x0AD8EEE87, 0x0B5BC6A8C, 0x0F113596B, 0x5AF60004, 0x8F487935, 0x5797CD15, 0x0FF373E12, 0x0F5514F9D, 0x14BB70A3, 0x72B8C275, 0x687DEDC0, 0x620D2EC9, 0x4D111746, 0x537EC46C, 0x9AC725C1, 0x2C58881C, 0x6402DC89, 0x385D0140, 0x55AFE2A5, 0x7C1AEFD5, 0x6FA65BA7, 0x0E6739F86, 0x992BDE0A, 0x0DF9C474A, 0x309E7609, 0x94B2E40E, 0x1D343BA0, 0x0E3360F28, 0x0D803B423, 0x0FE3CC890, 0x5024325E, 0x8A433A1F, 0x0AC744196, 0x0D9F03352, 0x16B18029, 0x0B991ABD3, 0x1E617F84, 0x56D1C5CF, 0x5F4CA3D, 0x4908E5C6}; BYTE b761C50 = 0; BYTE table_75D828[0x400]; BYTE table_75DC28[0x400]; BYTE table_75E028[0x400]; BYTE table_75E428[0x400]; BYTE table_75E828[0x400]; BYTE table_75EC28[0x400]; BYTE table_75F028[0x400]; BYTE table_75F428[0x400]; BYTE table_75F828[0x400]; BYTE table_75FC28[0x400]; BYTE table_760028[0x400]; BYTE table_760428[0x400]; BYTE table_760828[0x400]; BYTE table_760C28[0x400]; BYTE table_761028[0x400]; BYTE table_761428[0x400]; BYTE table_761828[0x28]; BYTE table_761850[0x100]; BYTE table_761950[0x100]; BYTE table_761A50[0x100]; BYTE table_761B50[0x100]; void TripleDesDecrypt(); void TripleDesEncrypt(); void ArrangeBuffer(); void FillBuffer(); void FillBuffer2(); void MixSeed(); void MixSeed2(); void fourteenpg(); void FinallyEncrypt(); void FinallyDecrypt(); void rotl(); void rotr(); void __declspec(naked) CreateTable() // ;41CBBA { __asm { push ecx and byte ptr [offset table_761B50+7], 0 push ebx push ebp push esi push edi push 1 xor ecx, ecx pop eax loc_41CBCB: mov edx, eax and dl, 0x80 neg dl sbb dl, dl mov bl, al shl bl, 1 mov byte ptr [ecx+table_761A50], al mov byte ptr [eax+table_761B50], cl movzx esi, bl and edx, 0x1B movzx edx, dl xor edx, esi movzx eax, al xor eax, edx inc ecx cmp ecx, 0x100 jb loc_41CBCB and byte ptr [offset table_761B50+1], 0 push 1 pop eax lea ecx, table_761828 loc_41CC0C: mov edx, eax and dl, 0x80 neg dl sbb dl, dl mov dword ptr [ecx], eax shl al, 1 movzx eax, al add ecx, 4 and edx, 0x1B movzx edx, dl xor eax, edx cmp ecx, offset table_761828+0x28 jb loc_41CC0C xor ebx, ebx loc_41CC31: test ebx, ebx je loc_41CC48 movzx eax, byte ptr [ebx+table_761B50] mov ecx, offset table_761B50-1 sub ecx, eax movzx eax, byte ptr [ecx] jmp loc_41CC4A loc_41CC48: xor eax, eax loc_41CC4A: xor edx, edx mov dl, al mov cl, dl shl cl, 1 movzx ecx, cl mov eax, edx shr eax, 7 movzx eax, al or eax, ecx xor edx, eax mov ecx, eax shr ecx, 7 shl al, 1 movzx ecx, cl movzx eax, al or ecx, eax xor edx, ecx mov eax, ecx shl cl, 1 shr eax, 7 movzx ecx, cl movzx eax, al or eax, ecx xor edx, eax mov ecx, eax shr ecx, 7 shl al, 1 movzx ecx, cl movzx eax, al or ecx, eax xor ecx, edx xor ecx, 0x63 mov byte ptr [ebx+table_761950], cl mov byte ptr [ecx+table_761850], bl inc ebx cmp ebx, 0x100 jb loc_41CC31 xor ebx, ebx loc_41CCAE: movzx edi, byte ptr [ebx+table_761950] mov esi, ebx push 8 shl esi, 2 push edi mov dword ptr [esi+table_75E828], edi call rotl push 0x10 push edi mov dword ptr [esi+table_75EC28], eax call rotl push 0x18 push edi mov dword ptr [esi+table_75F028], eax call rotl add esp, 0x18 test edi, edi mov dword ptr [esi+table_75F428], eax je loc_41CD12 movzx ecx, byte ptr [offset table_761B50+2] movzx eax, byte ptr [edi+table_761B50] add eax, ecx cdq mov ecx, 0x0FF idiv ecx movzx ecx, byte ptr [edx+table_761A50] jmp loc_41CD14 loc_41CD12: xor ecx, ecx loc_41CD14: test edi, edi je loc_41CD39 movzx edx, byte ptr [offset table_761B50+3] movzx eax, byte ptr [edi+table_761B50] add eax, edx cdq mov ebp, 0x0FF idiv ebp movzx eax, byte ptr [edx+table_761A50] jmp loc_41CD3B loc_41CD39: xor eax, eax loc_41CD3B: shl eax, 8 or eax, edi shl eax, 8 or eax, edi shl eax, 8 or eax, ecx mov edi, eax push 8 push edi mov dword ptr [esi+table_760828], edi call rotl push 0x10 push edi mov dword ptr [esi+table_760C28], eax call rotl push 0x18 push edi mov dword ptr [esi+table_761028], eax call rotl movzx edi, byte ptr [ebx+table_761850] push 8 push edi mov dword ptr [esi+table_761428], eax mov dword ptr [esi+table_75D828], edi call rotl push 0x10 push edi mov dword ptr [esi+table_75DC28], eax call rotl push 0x18 push edi mov dword ptr [esi+table_75E028], eax call rotl xor ebp, ebp add esp, 0x30 cmp edi, ebp mov dword ptr [esi+table_75E428], eax je loc_41CDE1 movzx ecx, byte ptr [offset table_761B50+0x0E] movzx eax, byte ptr [edi+table_761B50] add eax, ecx cdq mov ecx, 0x0FF idiv ecx movzx eax, byte ptr [edx+table_761A50] mov dword ptr [esp+0x10], eax jmp loc_41CDE5 loc_41CDE1: mov dword ptr [esp+0x10], ebp loc_41CDE5: cmp edi, ebp je loc_41CE08 movzx ecx, byte ptr [offset table_761B50+9] movzx eax, byte ptr [edi+table_761B50] add eax, ecx cdq mov ecx, 0x0FF idiv ecx movzx ebp, byte ptr [edx+table_761A50] loc_41CE08: test edi, edi je loc_41CE2D movzx ecx, byte ptr [offset table_761B50+0x0D] movzx eax, byte ptr [edi+table_761B50] add eax, ecx cdq mov ecx, 0x0FF idiv ecx movzx ecx, byte ptr [edx+table_761A50] jmp loc_41CE2F loc_41CE2D: xor ecx, ecx loc_41CE2F: test edi, edi je loc_41CE54 movzx eax, byte ptr [edi+table_761B50] movzx edx, byte ptr [offset table_761B50+0x0B] add eax, edx cdq mov edi, 0x0FF idiv edi movzx eax, byte ptr [edx+table_761A50] jmp loc_41CE56 loc_41CE54: xor eax, eax loc_41CE56: shl eax, 8 or eax, ecx shl eax, 8 or eax, ebp shl eax, 8 or eax, dword ptr [esp+0x10] push 8 mov edi, eax push edi mov dword ptr [esi+table_75F828], edi call rotl push 0x10 push edi mov dword ptr [esi+table_75FC28], eax call rotl push 0x18 push edi mov dword ptr [esi+table_760028], eax call rotl add esp, 0x18 inc ebx cmp ebx, 0x100 mov dword ptr [esi+table_760428], eax jb loc_41CCAE pop edi pop esi pop ebp mov byte ptr [b761C50], 1 pop ebx pop ecx retn } } void __declspec(naked) Initialize() // ;41D223 { __asm { push ebp mov ebp, esp cmp byte ptr [b761C50], 0 jnz loc_41D234 call CreateTable loc_41D234: mov eax, dword ptr [ebp+8] mov edx, dword ptr [eax] mov ecx, dword ptr [ebp+0x0C] mov dword ptr [ecx], edx mov edx, dword ptr [eax+0x10] push ebx mov dword ptr [ecx+4], edx mov edx, dword ptr [eax+0x20] push esi lea esi, [ecx+4] mov dword ptr [ecx+8], edx mov edx, dword ptr [eax+0x30] mov dword ptr [ecx+0x0C], edx mov edx, dword ptr [eax+0x40] mov dword ptr [ecx+0x10], edx mov edx, dword ptr [eax+0x50] mov dword ptr [ecx+0x14], edx mov edx, dword ptr [eax+0x60] mov dword ptr [ecx+0x18], edx mov eax, dword ptr [eax+0x70] push edi mov dword ptr [ecx+0x1C], eax mov edi, eax mov dword ptr [ebp+8], offset table_761828 loc_41D277: push 8 push edi call rotr mov ebx, eax push 8 push edi shr ebx, 0x18 call rotr mov ebx, dword ptr [ebx*4+table_75F428] shr eax, 0x10 movzx eax, al xor ebx, dword ptr [eax*4+table_75F028] push 8 push edi call rotr shr eax, 8 movzx eax, al xor ebx, dword ptr [eax*4+table_75EC28] push 8 push edi call rotr movzx eax, al xor ebx, dword ptr [eax*4+table_75E828] mov eax, dword ptr [ebp+8] xor ebx, dword ptr [eax] lea eax, [esi+0x20] xor ebx, dword ptr [esi-4] add dword ptr [ebp+8], 4 mov dword ptr [esi+0x1C], ebx xor ebx, dword ptr [esi] add esp, 0x20 mov dword ptr [eax], ebx xor ebx, dword ptr [esi+4] mov dword ptr [esi+0x24], ebx xor ebx, dword ptr [esi+8] mov dword ptr [esi+0x28], ebx mov ecx, ebx shr ecx, 0x18 mov edi, dword ptr [ecx*4+table_75F428] mov edx, ebx shr edx, 0x10 mov ecx, ebx shr ecx, 8 movzx edx, dl xor edi, dword ptr [edx*4+table_75F028] movzx ecx, cl xor edi, dword ptr [ecx*4+table_75EC28] xor ecx, ecx mov cl, bl xor edi, dword ptr [ecx*4+table_75E828] xor edi, dword ptr [esi+0x0C] mov dword ptr [esi+0x2C], edi xor edi, dword ptr [esi+0x10] mov dword ptr [esi+0x30], edi xor edi, dword ptr [esi+0x14] mov dword ptr [esi+0x34], edi xor edi, dword ptr [esi+0x18] cmp dword ptr [ebp+8], offset table_761828+28 mov dword ptr [esi+0x38], edi mov esi, eax jb loc_41D277 pop edi pop esi pop ebx pop ebp retn } } void __declspec(naked) InitWrapper() //;41CF5a { __asm { mov eax, dword ptr [esp+8] mov dword ptr [eax+0x24], 8 add eax, 0x28 push eax push dword ptr [esp+8] call Initialize pop ecx pop ecx retn } } void __declspec(naked) TripleDesDecrypt() //;41CB44 { __asm { push ebp mov ebp, esp sub esp, 0x138 and dword ptr [ebp-4], 0 push esi lea eax, [ebp-0x138] push eax push table_751878 call InitWrapper push dword ptr [ebp+0x10] lea eax, [ebp-0x138] push dword ptr [ebp+0x0C] push dword ptr [ebp+0x14] push eax call FillBuffer mov esi, dword ptr [ebp+8] add esp, 0x18 cmp dword ptr [ebp+0x10], 0 je loc_41CB9E lea eax, [ebp-4] push eax push esi push dword ptr [ebp+0x10] lea eax, [ebp-0x138] push dword ptr [ebp+0x0C] push eax call MixSeed add esp, 0x14 loc_41CB9E: lea eax, [ebp-4] push eax mov eax, [ebp-4] add eax, esi push eax lea eax, [ebp-0x138] push eax call FinallyDecrypt add esp, 0x0C pop esi leave retn } } void __declspec(naked) FillBuffer() //;41CF08 { __asm { mov eax, dword ptr [esp+4] push esi xor esi, esi cmp dword ptr [esp+0x0C], esi mov dword ptr [eax+0x20], esi je loc_41CF48 push edi mov edi, eax loc_41CF1B: xor eax, eax mov al, byte ptr [esi+table_7518F8] push eax push dword ptr [esp+0x14] call ArrangeBuffer push 4 push dword ptr [esp+0x1C] push edi call memcpy add esp, 0x14 inc esi add edi, 4 cmp esi, 4 jl loc_41CF1B pop edi pop esi retn loc_41CF48: push 0x10 push table_701838 push eax call memcpy add esp, 0x0C pop esi retn } } void __declspec(naked) ArrangeBuffer() //;41F209 { __asm { mov eax, dword ptr [esp+4] mov cl, byte ptr [eax+1] xor edx, edx mov dl, cl push esi movzx esi, byte ptr [esp+0x0C] mov dl, byte ptr [edx+table_7518F8] sub dl, byte ptr [esp+0x0C] add byte ptr [eax], dl mov dl, byte ptr [eax+2] xor dl, byte ptr [esi+table_7518F8] sub cl, dl mov byte ptr [eax+1], cl mov cl, byte ptr [eax+3] xor edx, edx mov dl, cl sub cl, byte ptr [eax] mov dl, byte ptr [edx+table_7518F8] add dl, byte ptr [esp+0x0C] xor dl, byte ptr [eax+2] mov byte ptr [eax+2], dl add cl, byte ptr [esi+table_7518F8] pop esi mov byte ptr [eax+3], cl mov ecx, dword ptr [eax] mov edx, ecx shr edx, 0x1D shl ecx, 3 or edx, ecx mov dword ptr [eax], edx retn } } void __declspec(naked) MixSeed() // ;41F075 { __asm { push ebp mov ebp, esp push ecx mov ecx, dword ptr [ebp+0x18] push ebx push esi mov esi, dword ptr [ebp+8] mov ebx, dword ptr [esi+0x20] and byte ptr [ebp+0x0B], 0 push edi mov edi, dword ptr [ebp+0x10] lea eax, [ebx+edi] cmp eax, 0x10 mov dword ptr [ecx], eax ja loc_41F0B5 push edi push dword ptr [ebp+0x0C] lea eax, [ebx+esi+0x10] push eax call memcpy mov eax, dword ptr [ebp+0x18] add dword ptr [esi+0x20], edi add esp, 0x0C and dword ptr [eax], 0 jmp loc_41F1C4 loc_41F0B5: mov edi, dword ptr [ebp+0x14] cmp dword ptr [ebp+0x0C], edi jnz loc_41F0E1 push dword ptr [ebp+0x10] call malloc push dword ptr [ebp+0x10] mov dword ptr [ebp-4], eax push dword ptr [ebp+0x0C] push eax call memcpy mov eax, dword ptr [ebp-4] add esp, 0x10 mov dword ptr [ebp+0x0C], eax mov byte ptr [ebp+0x0B], 1 loc_41F0E1: mov eax, dword ptr [ebp+0x10] mov ecx, dword ptr [ebp+0x18] mov dword ptr [ebp+0x14], 0x10 sub dword ptr [ebp+0x14], ebx push dword ptr [ebp+0x14] add eax, ebx push dword ptr [ebp+0x0C] mov dword ptr [ecx], eax lea eax, [ebx+esi+0x10] push eax call memcpy mov eax, dword ptr [ebp+0x14] add dword ptr [ebp+0x0C], eax mov eax, dword ptr [ebp+0x10] lea ebx, [eax+ebx-0x10] lea eax, [esi+0x24] push esi push eax call fourteenpg mov eax, dword ptr [esi+0x10] xor eax, dword ptr [esi] add esp, 0x14 mov dword ptr [edi], eax mov eax, dword ptr [esi+0x14] xor eax, dword ptr [esi+4] add edi, 0x10 mov dword ptr [edi-0x0C], eax mov eax, dword ptr [esi+0x18] xor eax, dword ptr [esi+8] mov dword ptr [edi-8], eax mov eax, dword ptr [esi+0x1C] xor eax, dword ptr [esi+0x0C] cmp ebx, 0x10 mov dword ptr [edi-4], eax jbe loc_41F193 lea eax, [ebx-1] shr eax, 4 mov dword ptr [ebp+0x10], eax loc_41F152: lea eax, [esi+0x24] push esi push eax call fourteenpg mov eax, dword ptr [ebp+0x0C] pop ecx pop ecx mov ecx, dword ptr [esi] xor ecx, dword ptr [eax] add eax, 0x10 mov dword ptr [edi], ecx mov ecx, dword ptr [eax-0x0C] xor ecx, dword ptr [esi+4] add edi, 0x10 mov dword ptr [edi-0x0C], ecx mov ecx, dword ptr [eax-8] xor ecx, dword ptr [esi+8] sub ebx, 0x10 mov dword ptr [edi-8], ecx mov ecx, dword ptr [eax-4] xor ecx, dword ptr [esi+0x0C] dec dword ptr [ebp+0x10] mov dword ptr [edi-4], ecx mov dword ptr [ebp+0x0C], eax jnz loc_41F152 loc_41F193: push ebx push dword ptr [ebp+0x0C] lea eax, [esi+0x10] push eax call memcpy mov eax, dword ptr [esi+0x20] and eax, 0x0F0000000 add eax, ebx mov dword ptr [esi+0x20], eax mov eax, dword ptr [ebp+0x18] sub dword ptr [eax], ebx add esp, 0x0C loc_41F1C4: pop edi pop esi mov al, 1 pop ebx leave retn } } void __declspec(naked) fourteenpg() //;41D34D { __asm { push ebp mov ebp, esp sub esp, 0x20 mov eax, [ebp+8] mov ecx, [ebp+0x0C] mov edx, [ecx] xor edx, [eax+4] push ebx mov ebx, [ecx+4] xor ebx, [eax+8] push esi mov esi, [ecx+8] xor esi, [eax+0x0C] mov [ebp-0x0C], ebx mov ebx, esi shr ebx, 0x10 push edi mov edi, [ecx+0x0C] xor edi, [eax+0x10] movzx ebx, bl mov [ebp+8], ebx mov ecx, edi shr ecx, 0x18 mov ebx, [offset table_761428+ecx*4] mov ecx, dword ptr [ebp+8] xor ebx, [offset table_761028+ecx*4] mov ecx, [ebp-0x0C] shr ecx, 8 movzx ecx, cl xor ebx, [offset table_760C28+ecx*4] xor ecx, ecx mov cl, dl mov [ebp-8], esi mov [ebp-0x10], edx add eax, 0x14 mov [ebp-4], edi xor ebx, [offset table_760828+ecx*4] mov ecx, edi shr ecx, 0x10 movzx ecx, cl mov [ebp+8], ecx mov ecx, esi mov esi, [ebp+8] mov esi, [offset table_761028+esi*4] shr ecx, 8 movzx ecx, cl xor esi, [offset table_760C28+ecx*4] mov ecx, edx shr ecx, 0x18 xor esi, [offset table_761428+ecx*4] movzx ecx, byte ptr [ebp-0x0C] xor esi, [offset table_760828+ecx*4] shr edx, 0x10 xor esi, [eax+4] mov ecx, edi shr ecx, 8 mov [ebp-0x1C], esi mov esi, [ebp-0x0C] movzx ecx, cl mov ecx, [offset table_760C28+ecx*4] movzx edx, dl shr esi, 0x18 xor ecx, [offset table_761428+esi*4] xor ebx, [eax] xor ecx, [offset table_761028+edx*4] mov edx, [ebp-8] movzx esi, dl xor ecx, [offset table_760828+esi*4] shr edx, 0x18 xor ecx, [eax+8] mov [ebp+8], edx mov edx, [ebp-0x0C] mov esi, [ebp+8] mov esi, [offset table_761428+esi*4] shr edx, 0x10 movzx edx, dl xor esi, [offset table_761028+edx*4] mov edx, [ebp-0x10] shr edx, 8 movzx edx, dl xor esi, [offset table_760C28+edx*4] movzx edx, byte ptr [ebp-4] xor esi, [offset table_760828+edx*4] mov [ebp-0x20], ebx xor esi, [eax+0x0C] mov edx, ecx shr edx, 0x10 movzx edx, dl mov edi, esi shr edi, 0x18 mov edi, [offset table_761428+edi*4] xor edi, [offset table_761028+edx*4] mov edx, [ebp-0x1C] shr edx, 8 movzx edx, dl xor edi, [offset table_760C28+edx*4] xor edx, edx mov dl, bl add eax, 0x10 mov [ebp-0x14], esi xor edi, [offset table_760828+edx*4] mov edx, esi xor edi, [eax] shr edx, 0x10 mov [ebp-0x10], edi movzx edi, dl mov edi, [offset table_761028+edi*4] mov edx, ecx shr edx, 8 movzx edx, dl xor edi, [offset table_760C28+edx*4] mov edx, ebx shr edx, 0x18 xor edi, [offset table_761428+edx*4] movzx edx, byte ptr [ebp-0x1C] xor edi, [offset table_760828+edx*4] mov edx, esi mov esi, [ebp-0x1C] xor edi, [eax+4] shr edx, 8 movzx edx, dl mov edx, [offset table_760C28+edx*4] shr esi, 0x18 xor edx, [offset table_761428+esi*4] shr ebx, 0x10 movzx esi, bl xor edx, [offset table_761028+esi*4] mov ebx, [ebp-0x1C] movzx esi, cl xor edx, [offset table_760828+esi*4] shr ecx, 0x18 mov esi, [offset table_761428+ecx*4] mov ecx, [ebp-0x20] xor edx, [eax+8] shr ecx, 8 mov [ebp-0x0C], edi shr ebx, 0x10 movzx ecx, cl movzx edi, bl xor esi, [offset table_761028+edi*4] mov ebx, edx xor esi, [offset table_760C28+ecx*4] movzx ecx, byte ptr [ebp-0x14] xor esi, [offset table_760828+ecx*4] shr ebx, 0x10 xor esi, [eax+0x0C] movzx ebx, bl mov ecx, esi shr ecx, 0x18 mov edi, [offset table_761428+ecx*4] mov ecx, [ebp-0x0C] xor edi, [offset table_761028+ebx*4] shr ecx, 8 movzx ecx, cl xor edi, [offset table_760C28+ecx*4] movzx ecx, byte ptr [ebp-0x10] xor edi, [offset table_760828+ecx*4] add eax, 0x10 xor edi, [eax] mov ecx, esi shr ecx, 0x10 mov [ebp-4], esi mov [ebp-0x20], edi movzx ecx, cl mov ebx, edx mov edi, [offset table_761028+ecx*4] mov ecx, [ebp-0x10] shr ecx, 0x18 shr ebx, 8 movzx ebx, bl xor edi, [offset table_760C28+ebx*4] add eax, 0x10 xor edi, [offset table_761428+ecx*4] movzx ecx, byte ptr [ebp-0x0C] xor edi, [offset table_760828+ecx*4] mov ecx, esi shr ecx, 8 movzx ecx, cl mov ebx, [offset table_760C28+ecx*4] mov ecx, [ebp-0x10] mov esi, [ebp-0x0C] shr ecx, 0x10 movzx ecx, cl shr esi, 0x18 xor ebx, [offset table_761428+esi*4] xor edi, [eax-0x0C] xor ebx, [offset table_761028+ecx*4] xor ecx, ecx mov cl, dl shr edx, 0x18 mov esi, [offset table_761428+edx*4] mov [ebp-0x1C], edi xor ebx, [offset table_760828+ecx*4] mov ecx, [ebp-0x0C] shr ecx, 0x10 movzx ecx, cl xor esi, [offset table_761028+ecx*4] mov ecx, [ebp-0x10] xor ebx, [eax-8] shr ecx, 8 movzx ecx, cl xor esi, [offset table_760C28+ecx*4] movzx ecx, byte ptr [ebp-4] xor esi, [offset table_760828+ecx*4] mov edx, ebx xor esi, [eax-4] shr edx, 0x10 movzx edx, dl mov ecx, esi shr ecx, 0x18 mov edi, [offset table_761428+ecx*4] xor edi, [offset table_761028+edx*4] mov ecx, [ebp-0x1C] shr ecx, 8 movzx ecx, cl xor edi, [offset table_760C28+ecx*4] movzx ecx, byte ptr [ebp-0x20] xor edi, [offset table_760828+ecx*4] mov ecx, esi xor edi, [eax] shr ecx, 0x10 movzx ecx, cl mov edx, ebx shr edx, 8 movzx edx, dl mov [ebp-0x10], edi mov edi, [offset table_761028+ecx*4] xor edi, [offset table_760C28+edx*4] mov ecx, [ebp-0x20] mov edx, [ebp-0x1C] shr ecx, 0x18 xor edi, [offset table_761428+ecx*4] movzx ecx, byte ptr [ebp-0x1C] xor edi, [offset table_760828+ecx*4] mov ecx, esi xor edi, [eax+4] shr ecx, 8 movzx ecx, cl mov ecx, [offset table_760C28+ecx*4] shr edx, 0x18 xor ecx, [offset table_761428+edx*4] mov edx, [ebp-0x20] shr edx, 0x10 mov [ebp-0x14], esi mov [ebp-0x0C], edi movzx edx, dl xor ecx, [offset table_761028+edx*4] xor edx, edx mov dl, bl shr ebx, 0x18 mov esi, [offset table_761428+ebx*4] add eax, 0x10 xor ecx, [offset table_760828+edx*4] mov edx, [ebp-0x1C] shr edx, 0x10 movzx edx, dl xor esi, [offset table_761028+edx*4] mov edx, [ebp-0x20] xor ecx, [eax-8] shr edx, 8 movzx edx, dl xor esi, [offset table_760C28+edx*4] movzx edx, byte ptr [ebp-0x14] xor esi, [offset table_760828+edx*4] mov ebx, ecx xor esi, [eax-4] shr ebx, 0x10 mov edx, esi shr edx, 0x18 mov edi, [offset table_761428+edx*4] mov edx, [ebp-0x0C] shr edx, 8 movzx edx, dl movzx ebx, bl xor edi, [offset table_761028+ebx*4] mov ebx, ecx xor edi, [offset table_760C28+edx*4] movzx edx, byte ptr [ebp-0x10] xor edi, [offset table_760828+edx*4] mov edx, esi xor edi, [eax] shr edx, 0x10 movzx edx, dl shr ebx, 8 mov [ebp-0x20], edi mov edi, [offset table_761028+edx*4] mov edx, [ebp-0x10] shr edx, 0x18 movzx ebx, bl xor edi, [offset table_760C28+ebx*4] mov ebx, [ebp-0x10] xor edi, [offset table_761428+edx*4] movzx edx, byte ptr [ebp-0x0C] xor edi, [offset table_760828+edx*4] mov edx, esi xor edi, [eax+4] mov [ebp-4], esi mov esi, [ebp-0x0C] shr edx, 8 movzx edx, dl mov edx, [offset table_760C28+edx*4] shr esi, 0x18 xor edx, [offset table_761428+esi*4] shr ebx, 0x10 movzx esi, bl xor edx, [offset table_761028+esi*4] mov ebx, [ebp-0x0C] movzx esi, cl xor edx, [offset table_760828+esi*4] shr ecx, 0x18 mov esi, [offset table_761428+ecx*4] mov ecx, [ebp-0x10] xor edx, [eax+8] shr ebx, 0x10 shr ecx, 8 mov [ebp-0x1C], edi movzx edi, bl xor esi, [offset table_761028+edi*4] movzx ecx, cl xor esi, [offset table_760C28+ecx*4] movzx ecx, byte ptr [ebp-4] xor esi, [offset table_760828+ecx*4] add eax, 0x10 xor esi, [eax-4] mov ecx, esi mov [ebp-0x14], esi shr ecx, 0x18 mov edi, [offset table_761428+ecx*4] mov ecx, [ebp-0x1C] shr ecx, 8 movzx ecx, cl mov ebx, edx shr ebx, 0x10 movzx ebx, bl xor edi, [offset table_761028+ebx*4] mov ebx, edx xor edi, [offset table_760C28+ecx*4] movzx ecx, byte ptr [ebp-0x20] xor edi, [offset table_760828+ecx*4] mov ecx, esi xor edi, [eax] shr ecx, 0x10 movzx ecx, cl mov [ebp-0x10], edi mov edi, [offset table_761028+ecx*4] mov ecx, [ebp-0x20] shr ecx, 0x18 shr ebx, 8 movzx ebx, bl xor edi, [offset table_760C28+ebx*4] add eax, 0x10 xor edi, [offset table_761428+ecx*4] movzx ecx, byte ptr [ebp-0x1C] xor edi, [offset table_760828+ecx*4] mov ecx, esi mov esi, [ebp-0x1C] shr ecx, 8 movzx ecx, cl mov ebx, [offset table_760C28+ecx*4] mov ecx, [ebp-0x20] shr ecx, 0x10 movzx ecx, cl shr esi, 0x18 xor ebx, [offset table_761428+esi*4] xor edi, [eax-0x0C] xor ebx, [offset table_761028+ecx*4] xor ecx, ecx mov cl, dl shr edx, 0x18 mov esi, [offset table_761428+edx*4] mov [ebp-0x0C], edi xor ebx, [offset table_760828+ecx*4] mov ecx, [ebp-0x1C] shr ecx, 0x10 movzx ecx, cl xor esi, [offset table_761028+ecx*4] mov ecx, [ebp-0x20] xor ebx, [eax-8] shr ecx, 8 movzx ecx, cl xor esi, dword ptr [offset table_760C28+ecx*4] movzx ecx, byte ptr [ebp-0x14] xor esi, [offset table_760828+ecx*4] mov edx, ebx xor esi, [eax-4] shr edx, 0x10 mov ecx, esi shr ecx, 0x18 mov edi, [offset table_761428+ecx*4] mov ecx, [ebp-0x0C] shr ecx, 8 movzx edx, dl xor edi, [offset table_761028+edx*4] movzx ecx, cl xor edi, [offset table_760C28+ecx*4] movzx ecx, byte ptr [ebp-0x10] xor edi, [offset table_760828+ecx*4] mov ecx, esi xor edi, [eax] shr ecx, 0x10 mov edx, ebx shr edx, 8 movzx ecx, cl mov [ebp-0x20], edi mov edi, [offset table_761028+ecx*4] movzx edx, dl xor edi, [offset table_760C28+edx*4] mov [ebp-4], esi mov ecx, [ebp-0x10] mov edx, [ebp-0x0C] shr edx, 0x18 shr ecx, 0x18 xor edi, [offset table_761428+ecx*4] movzx ecx, byte ptr [ebp-0x0C] xor edi, [offset table_760828+ecx*4] mov ecx, esi shr ecx, 8 movzx ecx, cl mov ecx, [offset table_760C28+ecx*4] xor ecx, [offset table_761428+edx*4] mov edx, [ebp-0x10] shr edx, 0x10 movzx edx, dl xor ecx, [offset table_761028+edx*4] xor edx, edx mov dl, bl xor edi, [eax+4] shr ebx, 0x18 mov esi, [offset table_761428+ebx*4] mov [ebp-0x1C], edi add eax, 0x10 xor ecx, [offset table_760828+edx*4] mov edx, [ebp-0x0C] shr edx, 0x10 movzx edx, dl xor esi, [offset table_761028+edx*4] mov edx, [ebp-0x10] shr edx, 8 xor ecx, [eax-8] movzx edx, dl xor esi, [offset table_760C28+edx*4] movzx edx, byte ptr [ebp-4] xor esi, [offset table_760828+edx*4] mov ebx, ecx xor esi, [eax-4] shr ebx, 0x10 mov edx, esi shr edx, 0x18 mov edi, [offset table_761428+edx*4] mov edx, [ebp-0x1C] shr edx, 8 movzx edx, dl movzx ebx, bl xor edi, [offset table_761028+ebx*4] mov ebx, ecx xor edi, [offset table_760C28+edx*4] movzx edx, byte ptr [ebp-0x20] xor edi, [offset table_760828+edx*4] mov edx, esi xor edi, [eax] shr edx, 0x10 movzx edx, dl shr ebx, 8 mov [ebp-0x10], edi mov edi, [offset table_761028+edx*4] mov edx, [ebp-0x20] shr edx, 0x18 movzx ebx, bl xor edi, [offset table_760C28+ebx*4] mov ebx, [ebp-0x20] xor edi, [offset table_761428+edx*4] movzx edx, byte ptr [ebp-0x1C] xor edi, [offset table_760828+edx*4] mov edx, esi xor edi, [eax+4] shr edx, 8 movzx edx, dl mov edx, [offset table_760C28+edx*4] mov [ebp-0x14], esi mov esi, [ebp-0x1C] shr esi, 0x18 xor edx, [offset table_761428+esi*4] shr ebx, 0x10 movzx esi, bl xor edx, [offset table_761028+esi*4] movzx esi, cl xor edx, [offset table_760828+esi*4] mov [ebp-0x0C], edi xor edx, [eax+8] shr ecx, 0x18 mov esi, [offset table_761428+ecx*4] mov ebx, [ebp-0x1C] mov ecx, [ebp-0x20] shr ecx, 8 movzx ecx, cl shr ebx, 0x10 movzx edi, bl xor esi, [offset table_761028+edi*4] mov ebx, edx xor esi, [offset table_760C28+ecx*4] movzx ecx, byte ptr [ebp-0x14] xor esi, [offset table_760828+ecx*4] shr ebx, 0x10 xor esi, [eax+0x0C] movzx ebx, bl mov ecx, esi shr ecx, 0x18 mov edi, [offset table_761428+ecx*4] xor edi, [offset table_761028+ebx*4] mov ecx, [ebp-0x0C] shr ecx, 8 movzx ecx, cl xor edi, [offset table_760C28+ecx*4] movzx ecx, byte ptr [ebp-0x10] xor edi, [offset table_760828+ecx*4] mov ecx, esi xor edi, [eax+0x10] shr ecx, 0x10 movzx ecx, cl add eax, 0x10 mov ebx, edx shr ebx, 8 movzx ebx, bl mov [ebp-0x20], edi mov edi, [offset table_761028+ecx*4] xor edi, [offset table_760C28+ebx*4] mov ecx, [ebp-0x10] shr ecx, 0x18 xor edi, [offset table_761428+ecx*4] movzx ecx, byte ptr [ebp-0x0C] xor edi, [offset table_760828+ecx*4] mov ecx, esi shr ecx, 8 movzx ecx, cl mov ebx, [offset table_760C28+ecx*4] mov ecx, [ebp-0x10] shr ecx, 0x10 mov [ebp-4], esi mov esi, [ebp-0x0C] movzx ecx, cl shr esi, 0x18 xor ebx, [offset table_761428+esi*4] xor edi, [eax+4] xor ebx, [offset table_761028+ecx*4] xor ecx, ecx mov cl, dl shr edx, 0x18 mov esi, [offset table_761428+edx*4] add eax, 0x10 mov [ebp-0x1C], edi xor ebx, [offset table_760828+ecx*4] mov ecx, [ebp-0x0C] xor ebx, [eax-8] shr ecx, 0x10 movzx ecx, cl xor esi, [offset table_761028+ecx*4] mov ecx, [ebp-0x10] shr ecx, 8 movzx ecx, cl xor esi, [offset table_760C28+ecx*4] movzx ecx, byte ptr [ebp-4] xor esi, [offset table_760828+ecx*4] mov edx, ebx xor esi, [eax-4] mov ecx, esi shr ecx, 0x18 mov edi, [offset table_761428+ecx*4] shr edx, 0x10 mov [ebp-0x14], esi movzx edx, dl xor edi, [offset table_761028+edx*4] mov ecx, [ebp-0x1C] shr ecx, 8 movzx ecx, cl xor edi, [offset table_760C28+ecx*4] movzx ecx, byte ptr [ebp-0x20] xor edi, [offset table_760828+ecx*4] mov ecx, esi xor edi, [eax] shr ecx, 0x10 mov [ebp-0x10], edi movzx ecx, cl mov edi, [offset table_761028+ecx*4] mov ecx, [ebp-0x20] mov edx, ebx shr edx, 8 movzx edx, dl xor edi, [offset table_760C28+edx*4] mov edx, [ebp-0x1C] shr ecx, 0x18 xor edi, [offset table_761428+ecx*4] movzx ecx, byte ptr [ebp-0x1C] xor edi, [offset table_760828+ecx*4] shr edx, 0x18 mov ecx, esi shr ecx, 8 movzx ecx, cl mov ecx, [offset table_760C28+ecx*4] xor ecx, [offset table_761428+edx*4] mov edx, [ebp-0x20] shr edx, 0x10 movzx edx, dl xor ecx, [offset table_761028+edx*4] xor edx, edx mov dl, bl xor edi, [eax+4] shr ebx, 0x18 mov esi, [offset table_761428+ebx*4] mov [ebp-0x0C], edi add eax, 0x10 xor ecx, [offset table_760828+edx*4] mov edx, [ebp-0x1C] shr edx, 0x10 movzx edx, dl xor esi, [offset table_761028+edx*4] mov edx, [ebp-0x20] xor ecx, [eax-8] shr edx, 8 movzx edx, dl xor esi, [offset table_760C28+edx*4] movzx edx, byte ptr [ebp-0x14] xor esi, [offset table_760828+edx*4] mov ebx, ecx xor esi, [eax-4] shr ebx, 0x10 mov edx, esi shr edx, 0x18 mov edi, [offset table_761428+edx*4] mov edx, [ebp-0x0C] shr edx, 8 movzx edx, dl movzx ebx, bl xor edi, [offset table_761028+ebx*4] mov ebx, ecx xor edi, [offset table_760C28+edx*4] movzx edx, byte ptr [ebp-0x10] xor edi, [offset table_760828+edx*4] mov edx, esi xor edi, [eax] shr edx, 0x10 movzx edx, dl shr ebx, 8 mov [ebp-0x20], edi mov edi, [offset table_761028+edx*4] mov edx, [ebp-0x10] movzx ebx, bl xor edi, [offset table_760C28+ebx*4] shr edx, 0x18 xor edi, [offset table_761428+edx*4] movzx edx, byte ptr [ebp-0x0C] mov [ebp-4], esi xor edi, [offset table_760828+edx*4] mov ebx, [ebp-0x10] xor edi, [eax+4] mov edx, esi mov esi, [ebp-0x0C] shr edx, 8 shr ebx, 0x10 shr esi, 0x18 movzx edx, dl mov edx, [offset table_760C28+edx*4] xor edx, [offset table_761428+esi*4] movzx esi, bl xor edx, [offset table_761028+esi*4] mov ebx, [ebp-0x0C] movzx esi, cl xor edx, [offset table_760828+esi*4] shr ecx, 0x18 mov esi, [offset table_761428+ecx*4] mov ecx, [ebp-0x10] shr ecx, 8 movzx ecx, cl xor edx, [eax+8] mov [ebp-0x1C], edi shr ebx, 0x10 movzx edi, bl xor esi, [offset table_761028+edi*4] mov ebx, edx xor esi, [offset table_760C28+ecx*4] movzx ecx, byte ptr [ebp-4] xor esi, [offset table_760828+ecx*4] shr ebx, 0x10 xor esi, [eax+0x0C] movzx ebx, bl mov ecx, esi shr ecx, 0x18 mov edi, [offset table_761428+ecx*4] xor edi, [offset table_761028+ebx*4] mov ecx, [ebp-0x1C] shr ecx, 8 movzx ecx, cl xor edi, [offset table_760C28+ecx*4] movzx ecx, byte ptr [ebp-0x20] xor edi, [offset table_760828+ecx*4] mov ecx, esi xor edi, [eax+0x10] shr ecx, 0x10 movzx ecx, cl add eax, 0x10 mov ebx, edx shr ebx, 8 movzx ebx, bl mov [ebp-0x10], edi mov edi, [offset table_761028+ecx*4] xor edi, [offset table_760C28+ebx*4] mov ecx, [ebp-0x20] shr ecx, 0x18 xor edi, [offset table_761428+ecx*4] movzx ecx, byte ptr [ebp-0x1C] xor edi, [offset table_760828+ecx*4] mov ecx, esi shr ecx, 8 movzx ecx, cl mov ebx, [offset table_760C28+ecx*4] mov ecx, [ebp-0x20] xor edi, [eax+4] shr ecx, 0x10 mov [ebp-0x14], esi mov esi, [ebp-0x1C] movzx ecx, cl shr esi, 0x18 xor ebx, [offset table_761428+esi*4] mov [ebp-0x0C], edi xor ebx, [offset table_761028+ecx*4] xor ecx, ecx mov cl, dl shr edx, 0x18 xor ebx, [offset table_760828+ecx*4] mov ecx, [ebp-0x1C] xor ebx, [eax+8] shr ecx, 0x10 movzx ecx, cl mov esi, [offset table_761428+edx*4] xor esi, [offset table_761028+ecx*4] mov ecx, [ebp-0x20] shr ecx, 8 movzx ecx, cl xor esi, [offset table_760C28+ecx*4] movzx ecx, byte ptr [ebp-0x14] xor esi, [offset table_760828+ecx*4] mov edx, ebx xor esi, [eax+0x0C] shr edx, 0x10 movzx edx, dl mov ecx, esi shr ecx, 0x18 mov edi, [offset table_761428+ecx*4] xor edi, [offset table_761028+edx*4] mov ecx, [ebp-0x0C] shr ecx, 8 movzx ecx, cl xor edi, [offset table_760C28+ecx*4] movzx ecx, byte ptr [ebp-0x10] xor edi, [offset table_760828+ecx*4] mov ecx, esi xor edi, [eax+0x10] shr ecx, 0x10 movzx ecx, cl mov edx, ebx shr edx, 8 movzx edx, dl add eax, 0x10 mov [ebp-0x20], edi mov edi, [offset table_761028+ecx*4] xor edi, [offset table_760C28+edx*4] mov ecx, [ebp-0x10] mov edx, [ebp-0x0C] shr ecx, 0x18 xor edi, [offset table_761428+ecx*4] movzx ecx, byte ptr [ebp-0x0C] xor edi, [offset table_760828+ecx*4] shr edx, 0x18 mov ecx, esi shr ecx, 8 movzx ecx, cl mov ecx, [offset table_760C28+ecx*4] xor ecx, [offset table_761428+edx*4] mov edx, [ebp-0x10] shr edx, 0x10 movzx edx, dl xor ecx, [offset table_761028+edx*4] xor edx, edx mov dl, bl xor edi, [eax+4] shr ebx, 0x18 mov ebx, [offset table_761428+ebx*4] mov [ebp-4], esi add eax, 0x10 mov [ebp-0x1C], edi xor ecx, [offset table_760828+edx*4] mov edx, [ebp-0x0C] xor ecx, [eax-8] shr edx, 0x10 movzx edx, dl xor ebx, [offset table_761028+edx*4] mov edx, [ebp-0x10] shr edx, 8 movzx edx, dl xor ebx, [offset table_760C28+edx*4] movzx edx, byte ptr [ebp-4] xor ebx, [offset table_760828+edx*4] mov edx, ecx xor ebx, [eax-4] shr edx, 0x10 movzx edx, dl mov esi, ebx shr esi, 0x18 mov esi, [offset table_75F428+esi*4] xor esi, [offset table_75F028+edx*4] mov edx, edi shr edx, 8 movzx edx, dl xor esi, [offset table_75EC28+edx*4] movzx edx, byte ptr [ebp-0x20] xor esi, [offset table_75E828+edx*4] mov edx, ebx shr edx, 0x10 movzx edi, dl mov edi, [offset table_75F028+edi*4] mov edx, ecx shr edx, 8 movzx edx, dl xor edi, [offset table_75EC28+edx*4] mov edx, [ebp-0x20] shr edx, 0x18 xor edi, [offset table_75F428+edx*4] movzx edx, byte ptr [ebp-0x1C] xor edi, [offset table_75E828+edx*4] mov edx, ebx xor edi, [eax+4] shr edx, 8 mov [ebp-0x0C], edi movzx edi, dl mov edi, [offset table_75EC28+edi*4] mov edx, [ebp-0x1C] shr edx, 0x18 xor edi, [offset table_75F428+edx*4] mov edx, [ebp-0x20] shr edx, 0x10 movzx edx, dl xor edi, [offset table_75F028+edx*4] xor edx, edx mov dl, cl xor esi, [eax] shr ecx, 0x18 mov ecx, [offset table_75F428+ecx*4] xor edi, [offset table_75E828+edx*4] mov edx, [ebp-0x1C] xor edi, [eax+8] shr edx, 0x10 movzx edx, dl xor ecx, [offset table_75F028+edx*4] mov edx, [ebp-0x20] shr edx, 8 movzx edx, dl xor ecx, [offset table_75EC28+edx*4] xor edx, edx mov dl, bl xor ecx, [offset table_75E828+edx*4] mov edx, [ebp-0x0C] xor ecx, [eax+0x0C] mov eax, [ebp+0x0C] mov [eax+8], edi pop edi mov [eax], esi pop esi mov [eax+4], edx mov [eax+0x0C], ecx pop ebx leave retn } } void __declspec(naked) FinallyDecrypt() //;41F1CB { __asm { push ebx mov ebx, dword ptr [esp+0x10] push esi mov esi, dword ptr [esp+0x0C] push edi mov edi, dword ptr [esi+0x20] lea eax, [esi+0x24] push esi push eax mov dword ptr [ebx], edi call fourteenpg test edi, edi pop ecx pop ecx jbe loc_41F201 mov ecx, dword ptr [esp+0x14] mov eax, esi sub ecx, esi mov esi, edi loc_41F1F5: mov dl, byte ptr [eax+0x10] xor dl, byte ptr [eax] mov byte ptr [ecx+eax], dl inc eax dec esi jnz loc_41F1F5 loc_41F201: mov dword ptr [ebx], edi pop edi pop esi mov al, 1 pop ebx retn } } void __declspec(naked) rotl() { __asm { push ebp mov ebp, esp push edx mov ecx, [ebp+0x0C] mov eax, [ebp+8] rol eax, cl pop edx pop ebp retn } } void __declspec(naked) rotr() { __asm { push ebp mov ebp, esp push edx mov ecx, [ebp+0x0C] mov eax, [ebp+8] ror eax, cl pop edx pop ebp retn } } void __declspec(naked) Maple_Decrypt() { __asm { push ebp mov ebp, esp push ecx push ecx push ebx push esi push edi mov ebx, dword ptr [ebp+0x0C] mov eax, 0x5B0 cmp ebx, eax mov [ebp-4], ebx jb label99 mov [ebp-4], eax label99: mov esi, [ebp+8] add esi, 4 label98: lea eax, [ebp+0x10] push eax push dword ptr [ebp-4] push esi push esi call TripleDesDecrypt add esi, dword ptr [ebp-4] add esp, 0x10 sub ebx, dword ptr [ebp-4] je label97 mov eax, 0x5B4 cmp ebx, eax mov [ebp-4], ebx jb label98 mov [ebp-4], eax jmp label98 label97: mov eax, [ebp+8] add eax, 4 mov [ebp-8], eax mov eax, [ebp+0x0C] mov [ebp-4], eax mov ecx, 3 label3: push ecx mov ecx, [ebp-4] mov esi, [ebp-8] add esi, ecx xor eax, eax xor ebx, ebx label1: dec esi mov dl, byte ptr [esi] rol dl, 3 xor dl, 0x13 mov al, dl xor dl, bl sub dl, cl ror dl, 4 mov bl, al mov byte ptr [esi], dl dec ecx cmp ecx, 0 jnz label1 mov ecx, [ebp-4] xor eax, eax xor ebx, ebx label2: mov dl, byte ptr [esi] sub dl, 0x48 not dl rol dl, cl mov al, dl xor dl, bl sub dl, cl ror dl, 3 mov bl, al mov byte ptr [esi], dl inc esi dec ecx cmp ecx, 0 jnz label2 pop ecx dec ecx cmp ecx, 0 jnz label3 pop edi pop esi pop ebx leave retn 0x0C } } void __declspec(naked) Maple_UpdateSeed() { __asm { push ebp mov ebp, esp push ecx push esi push edi mov edi, [ebp+0x10] xor esi, esi cmp edi, esi mov dword ptr [ebp-4], 0x0C65053F2 jnz short loc_6A4BB4 lea edi, [ebp-4] loc_6A4BB4: cmp [ebp+0x0C], esi jle short loc_6A4BD0 loc_6A4BB9: xor eax, eax mov eax, [ebp+8] mov al, [esi+eax] push eax push edi call loc_6A4BD6 inc esi cmp esi, [ebp+0x0C] pop ecx pop ecx jl short loc_6A4BB9 loc_6A4BD0: mov eax, [edi] pop edi pop esi leave retn loc_6A4BD6: mov eax, [esp+4] mov cl, [eax+1] xor edx, edx mov dl, cl push esi movzx esi, byte ptr [esp+0x0C] mov dl, byte ptr [offset table_756D30+edx] sub dl, [esp+0x0C] add [eax], dl mov dl, [eax+2] xor dl, byte ptr [offset table_756D30+esi] sub cl, dl mov [eax+1], cl mov cl, [eax+3] xor edx, edx mov dl, cl sub cl, [eax] mov dl, byte ptr [offset table_756D30+edx] add dl, [esp+0x0C] xor dl, [eax+2] mov [eax+2], dl add cl, byte ptr [offset table_756D30+esi] pop esi mov [eax+3], cl mov ecx, [eax] mov edx, ecx shr edx, 0x1D shl ecx, 3 or edx, ecx mov [eax], edx retn } } void __declspec(naked) Maple_Encrypt() { __asm { push ebp mov ebp, esp sub esp, 0x28 push ebx mov ebx, ecx mov eax, [ebp+0x0C] lea ecx, [eax+4] mov [ebp-0x18], ecx mov ecx, [ebp+8] push esi push edi mov [ebp-0x14], ecx mov [ebp-0x1C], eax mov ecx, 3 label3: push ecx mov ecx, [ebp-0x1C] mov esi, [ebp-0x14] xor eax, eax label1: mov dl, byte ptr [esi] rol dl, 3 add dl, cl xor dl, al mov al, dl ror dl, cl not dl add dl, 0x48 mov byte ptr [esi], dl inc esi dec ecx cmp ecx, 0 jnz label1 mov ecx, [ebp-0x1C] xor eax, eax label2: dec esi mov dl, byte ptr [esi] rol dl, 4 add dl, cl xor dl, al mov al, dl xor dl, 0x13 ror dl, 3 mov byte ptr [esi], dl dec ecx cmp ecx, 0 jnz label2 pop ecx dec ecx cmp ecx, 0 jnz label3 mov edi, [ebp-0x18] push edi call malloc test eax, eax pop ecx mov [ebp-0x20], eax and dword ptr [ebp-4], 0 mov ecx, [ebp+0x10] lea esi, [eax+edi] mov ecx, [ecx] shr ecx, 0x10 xor ecx, 0x20 mov [eax], cx inc eax inc eax movzx ecx, cx xor ecx, [ebp+0x0C] mov [eax], cx inc eax inc eax mov ebx, eax mov ecx, [ebp+0x10] push ecx sub esi, eax push esi push dword ptr [ebp-0x14] push ebx call TripleDesEncrypt add esp, 0x10 add [ebp-0x14], esi add ebx, esi loc_53BCBA: sub [ebp-0x18], edi jz loc_53BD37 mov edi, 0x5B4 cmp [ebp-0x18], edi jnb short loc_53BCCC mov edi, [ebp-0x18] loc_53BCCC: lea esi, [eax+edi] mov ecx, [ebp+0x10] push ecx sub esi, eax push esi push dword ptr [ebp-0x14] push eax call TripleDesEncrypt add esp, 0x10 add [ebp-0x14], esi add ebx, esi jmp short loc_53BCBA loc_53BD37: mov esi, [ebp-0x20] mov edi, [ebp+0x14] mov ecx, [ebp+0x0C] add ecx, 4 rep movsb push dword ptr [ebp-0x20] call [free] add esp, 4 or dword ptr [ebp-4], 0x0FFFFFFFF mov ecx, [ebp-0x0C] pop edi pop esi pop ebx leave retn 0x10 } } void __declspec(naked) TripleDesEncrypt() //41CACE { __asm { push ebp mov ebp, esp sub esp, 0x138 and dword ptr [ebp-4], 0 push esi lea eax, [ebp-0x138] push eax push table_751878 call InitWrapper push dword ptr [ebp+0x10] lea eax, [ebp-0x138] push dword ptr [ebp+0x0C] push dword ptr [ebp+0x14] push eax call FillBuffer2 mov esi, [ebp+8] add esp, 0x18 cmp dword ptr [ebp+0x10], 0 jz short loc_41CB28 lea eax, [ebp-4] push eax push esi push dword ptr [ebp+0x10] lea eax, [ebp-0x138] push dword ptr [ebp+0x0C] push eax call MixSeed2 add esp, 0x14 loc_41CB28: lea eax, [ebp-4] push eax mov eax, [ebp-4] add eax, esi push eax lea eax, [ebp-0x138] push eax call FinallyEncrypt add esp, 0x0C pop esi leave retn } } void __declspec(naked) FillBuffer2() { __asm { mov eax, [esp+4] push esi xor esi, esi cmp [esp+0x0C], esi mov [eax+0x20], esi jz short loc_41CEF6 push edi mov edi, eax loc_41CEC9: xor eax, eax mov al, byte ptr [offset table_7518F8+esi] push eax push dword ptr [esp+0x14] call ArrangeBuffer push 4 push dword ptr [esp+0x1C] push edi call memcpy add esp, 0x14 inc esi add edi, 4 cmp esi, 4 jl short loc_41CEC9 pop edi pop esi retn loc_41CEF6: push 0x10 push table_701838 push eax call memcpy add esp, 0x0C pop esi retn } } void __declspec(naked) MixSeed2() { __asm { push ebp mov ebp, esp push ecx mov ecx, [ebp+0x18] push ebx push esi mov esi, [ebp+8] mov ebx, [esi+0x20] and byte ptr [ebp+0x0B], 0 push edi mov edi, [ebp+0x10] lea eax, [ebx+edi] cmp eax, 0x10 mov [ecx], eax jnb short loc_41EF28 push edi push dword ptr [ebp+0x0C] lea eax, [ebx+esi+0x10] push eax call memcpy mov eax, [ebp+0x18] add [esi+0x20], edi add esp, 0x0C and dword ptr [eax], 0 jmp loc_41F02C loc_41EF28: mov edi, [ebp+0x14] cmp [ebp+0x0C], edi jnz short loc_41EF54 push dword ptr [ebp+0x10] call malloc push dword ptr [ebp+0x10] mov [ebp-4], eax push dword ptr [ebp+0x0C] push eax call memcpy mov eax, [ebp-4] add esp, 0x10 mov [ebp+0x0C], eax mov byte ptr [ebp+0x0B], 1 loc_41EF54: mov dword ptr [ebp+0x14], 0x10 sub [ebp+0x14], ebx push dword ptr [ebp+0x14] lea eax, [ebx+esi+0x10] push dword ptr [ebp+0x0C] push eax call memcpy mov eax, [ebp+0x14] add [ebp+0x0C], eax mov eax, [ebp+0x10] lea ebx, [eax+ebx-0x10] lea eax, [esi+0x24] push esi push eax call fourteenpg mov eax, [esi] xor eax, [esi+0x10] add esp, 0x14 mov [edi], eax mov eax, [esi+0x14] xor eax, [esi+4] add edi, 0x10 mov [edi-0x0C], eax mov eax, [esi+0x18] xor eax, [esi+8] mov [edi-8], eax mov eax, [esi+0x1C] xor eax, [esi+0x0C] cmp ebx, 0x10 mov [edi-4], eax jb short loc_41EFFB mov eax, ebx shr eax, 4 mov [ebp+0x10], eax loc_41EFBA: lea eax, [esi+0x24] push esi push eax call fourteenpg mov eax, [ebp+0x0C] pop ecx pop ecx mov ecx, [esi] xor ecx, [eax] add eax, 0x10 mov [edi], ecx mov ecx, [eax-0x0C] xor ecx, [esi+4] add edi, 0x10 mov [edi-0x0C], ecx mov ecx, [eax-8] xor ecx, [esi+8] sub ebx, 0x10 mov [edi-8], ecx mov ecx, [eax-4] xor ecx, [esi+0x0C] dec dword ptr [ebp+0x10] mov [edi-4], ecx mov [ebp+0x0C], eax jnz short loc_41EFBA loc_41EFFB: push ebx push dword ptr [ebp+0x0C] lea eax, [esi+0x10] push eax call memcpy mov eax, [esi+0x20] and eax, 0x0F0000000 add eax, ebx mov [esi+0x20], eax mov eax, [ebp+0x18] sub [eax], ebx add esp, 0x0C loc_41F02C: pop edi pop esi mov al, 1 pop ebx leave retn } } void __declspec(naked) FinallyEncrypt() { __asm { push ebx mov ebx, [esp+0x10] push esi mov esi, [esp+0x0C] push edi mov edi, [esi+0x20] lea eax, [esi+0x24] push esi push eax mov dword ptr [ebx], 0x10 call fourteenpg test edi, edi pop ecx pop ecx jbe short loc_41F06D mov ecx, [esp+0x14] mov eax, esi sub ecx, esi mov esi, edi loc_41F061: mov dl, [eax+0x10] xor dl, [eax] mov [ecx+eax], dl inc eax dec esi jnz short loc_41F061 loc_41F06D: mov [ebx], edi pop edi pop esi mov al, 1 pop ebx retn } } void __declspec(naked) Maple_Free() { __asm jmp free }