rendered paste body#include <windows.h>
#include <stdlib.h>
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
}