All pastes #291490 Raw Edit

Stuff

public text v1 · immutable
#291490 ·published 2006-12-25 07:46 UTC
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
}