Function at 0x58e280
Capabilities:
Encrypt data using rc4 ksa
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x548
push ebx
push ebp
mov ebp, dword [esp + 0x554]
push esi
push edi
cmp dword [ebp + 0x10], 6
jb 0x58fadf
mov cx, word [ebp + 0x14]
xor ebx, ebx
cmp cx, 0x96
mov dword [esp + 0x18], ebx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x30], ebx
jae 0x58e2ff
mov si, word [ebp + 0x18]
cmp si, 0x96
jae 0x58e2ff
and ecx, 0xffff
mov eax, 0x66666667
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ecx
mov dword [esp + 0x2c], edx
mov ecx, 0xa
cdq
idiv ecx
and esi, 0xffff
mov eax, esi
mov dword [esp + 0x30], edx
lea edx, [eax + eax*8]
mov bx, word [eax + edx*8 + 0xcfb436]
mov dword [esp + 0x18], ebx
push ebx
mov ecx, 0xced988
call fcn.0053bf30
test eax, eax
je 0x58fadf
xor eax, eax
mov ax, word [ebp + 0x16]
cmp eax, 9
ja case.default.0x58e321
jmp dword [eax*4 + 0x5906b4]
push 0x729
push 0x6d67a8
call fcn.0041b4a0
push 0x729
call fcn.004e84d0
mov ax, word [ebp + 0x18]
add esp, 0xc
cmp ax, 0xc8
jb 0x58e3c6
cmp ax, 0xcf
jae 0x58e3c6
and eax, 0xffff
mov edi, dword [0x6d68b8]
sub eax, 0xc8
mov esi, dword [0x6d68bc]
lea ecx, [eax*8]
sub ecx, eax
lea edx, [eax + ecx*4]
movsx ecx, word [edx*4 + 0xcf2a51]
lea eax, [edx*4 + 0xcf2a30]
sub edi, ecx
mov dword [0x6d68b8], edi
movsx edx, word [eax + 0x23]
sub esi, edx
mov edx, dword [0x6d68c0]
mov dword [0x6d68bc], esi
movsx ecx, word [eax + 0x25]
sub edx, ecx
mov dword [0x6d68c0], edx
cmp word [ebp + 0x18], 0
je 0x58e3bc
movsx edx, word [eax + 0x29]
sub dword [0x6d68c8], edx
movsx eax, word [eax + 0x27]
sub dword [0x6d68c4], eax
xor ecx, ecx
push 1
mov cx, word [ebp + 0x18]
push ecx
mov ecx, 0xced988
call fcn.0053cd60
xor edx, edx
push 1
mov dx, word [ebp + 0x14]
mov ecx, 0xced988
push edx
call fcn.0053cd60
push 1
mov ecx, 0xd11140
call fcn.0057fec0
push 2
mov ecx, 0xd11140
call fcn.0057fec0
mov ecx, 0xced988
call fcn.0052cfe0
xor eax, eax
mov ecx, 0x4c
mov dword [esp + 0x10a], eax
lea esi, [esp + 0x90]
mov dword [esp + 0x10e], eax
lea edi, [esp + 0x1c4]
mov dword [esp + 0x112], eax
mov dword [esp + 0x1c0], ebx
mov byte [esp + 0x116], al
lea edx, [esp + 0x34]
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x1c0]
push ecx
push edx
mov ecx, 0xced988
call fcn.00474ae0
mov ecx, eax
mov eax, dword [ecx]
add eax, 0x10
mov edx, dword [ecx + 4]
push eax
mov dword [esp + 0x2c], edx
push 0x67433c
jmp 0x590462
xor ecx, ecx
push 1
mov cx, word [ebp + 0x14]
push ecx
mov ecx, 0xced988
call fcn.0053cd60
mov ax, word [ebp + 0x18]
cmp ax, 0x96
jae 0x58e721
xor edx, edx
mov ecx, 0x4c
mov dword [esp + 0x10a], edx
lea esi, [esp + 0x90]
mov dword [esp + 0x10e], edx
lea edi, [esp + 0x1c4]
mov dword [esp + 0x112], edx
mov dword [esp + 0x1c0], ebx
mov byte [esp + 0x116], dl
lea eax, [esp + 0x1c0]
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x34]
push eax
push ecx
mov ecx, 0xced988
mov dword [esp + 0x1c], 0
call fcn.00474ae0
mov edx, eax
mov eax, dword [edx]
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
mov ecx, dword [eax + 0x78]
test ecx, ecx
jle 0x58e6e9
mov eax, dword [esp + 0x2c]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x30]
lea eax, [eax + edx*2]
mov ecx, eax
shl ecx, 4
add ecx, eax
lea edx, [ecx*8 + 0xcedac3]
mov dword [esp + 0x1c], edx
xor eax, eax
mov ecx, 0x4c
mov dword [esp + 0x36e], eax
lea esi, [esp + 0x2f4]
mov dword [esp + 0x372], eax
lea edi, [esp + 0x428]
mov dword [esp + 0x376], eax
mov dword [esp + 0x424], ebx
mov byte [esp + 0x37a], al
lea edx, [esp + 0x44]
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x424]
mov dword [esp + 0x20], 0
push ecx
push edx
mov ecx, 0xced988
call fcn.00474ae0
mov ecx, eax
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, dword [eax + 0x74]
test ecx, ecx
mov dword [esp + 0x28], edx
jle 0x58e667
mov ebx, dword [esp + 0x1c]
and word [ebx], 0xff
mov ax, word [ebx]
xor ecx, ecx
lea esi, [esp + 0x2f4]
mov ch, byte [ebp + 0x28]
lea edi, [esp + 0x428]
or ecx, eax
mov word [ebx], cx
mov dx, word [ebp + 0x1a]
mov word [ebx - 0x12], dx
mov ax, word [ebp + 0x20]
mov word [ebx - 0xc], ax
mov cx, word [ebp + 0x1c]
mov word [ebx - 0x10], cx
mov dx, word [ebp + 0x26]
mov word [ebx - 4], dx
mov ax, word [ebp + 0x1e]
mov word [ebx - 0xe], ax
mov cx, word [ebp + 0x22]
mov word [ebx - 0xa], cx
mov ecx, dword [esp + 0x20]
mov dx, word [ebp + 0x24]
xor eax, eax
inc ecx
mov dword [esp + 0x36e], eax
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x372], eax
mov dword [esp + 0x424], ecx
mov dword [esp + 0x376], eax
mov word [ebx - 6], dx
mov ecx, 0x4c
mov byte [esp + 0x37a], al
lea edx, [esp + 0x424]
lea eax, [esp + 0x44]
rep movsd dword es:[edi], dword [esi]
push edx
push eax
mov ecx, 0xced988
add ebx, 0x88
call fcn.00474ae0
mov ecx, eax
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x28], edx
mov edx, dword [eax + 0x74]
cmp ecx, edx
jl 0x58e59b
mov ebx, dword [esp + 0x18]
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
xor edx, edx
add edi, 0x550
mov dword [esp + 0x10a], edx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x10e], edx
inc eax
mov dword [esp + 0x112], edx
mov ecx, 0x4c
lea esi, [esp + 0x90]
lea edi, [esp + 0x1c4]
mov byte [esp + 0x116], dl
mov dword [esp + 0x1c0], ebx
mov dword [esp + 0x14], eax
lea eax, [esp + 0x1c0]
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x34]
push eax
push ecx
mov ecx, 0xced988
call fcn.00474ae0
mov edx, eax
mov eax, dword [edx]
mov ecx, dword [edx + 4]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x28], ecx
mov ecx, dword [eax + 0x78]
cmp edx, ecx
jl 0x58e528
push 2
mov ecx, 0xd11140
call fcn.0057fec0
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2]
mov ecx, 0xd11140
mov edx, eax
shl edx, 4
add edx, eax
lea eax, [edx*8 + 0xceda90]
push eax
call fcn.0057fa90
jmp 0x58e949
cmp ax, 0xc8
jb 0x58e949
cmp ax, 0xcf
jae 0x58e949
and eax, 0xffff
sub eax, 0xc8
lea ecx, [eax*8]
sub ecx, eax
lea eax, [eax + ecx*4]
xor ecx, ecx
and word [eax*4 + 0xcf2a63], 0xff
xor eax, eax
mov ax, word [ebp + 0x18]
mov ch, byte [ebp + 0x28]
sub eax, 0xc8
lea edx, [eax*8]
sub edx, eax
lea eax, [eax + edx*4]
or word [eax*4 + 0xcf2a63], cx
xor eax, eax
mov ax, word [ebp + 0x18]
sub eax, 0xc8
lea edx, [eax*8]
sub edx, eax
lea eax, [eax + edx*4]
mov dx, word [ebp + 0x1a]
mov ecx, edx
movsx esi, word [eax*4 + 0xcf2a51]
mov word [eax*4 + 0xcf2a51], dx
xor eax, eax
mov ax, word [ebp + 0x18]
and ecx, 0xffff
sub eax, 0xc8
sub ecx, esi
mov si, word [ebp + 0x20]
lea edx, [eax*8]
sub edx, eax
lea eax, [eax + edx*4]
mov edx, esi
and edx, 0xffff
movsx edi, word [eax*4 + 0xcf2a57]
mov word [eax*4 + 0xcf2a57], si
xor eax, eax
mov ax, word [ebp + 0x18]
sub edx, edi
sub eax, 0xc8
mov dword [esp + 0x14], edx
mov si, word [ebp + 0x1c]
lea edx, [eax*8]
sub edx, eax
lea eax, [eax + edx*4]
mov edx, esi
and edx, 0xffff
movsx edi, word [eax*4 + 0xcf2a53]
mov word [eax*4 + 0xcf2a53], si
xor eax, eax
mov ax, word [ebp + 0x18]
sub edx, edi
sub eax, 0xc8
lea esi, [eax*8]
sub esi, eax
lea eax, [eax + esi*4]
mov si, word [ebp + 0x26]
mov word [eax*4 + 0xcf2a5f], si
xor eax, eax
mov ax, word [ebp + 0x18]
mov di, word [ebp + 0x1e]
sub eax, 0xc8
lea esi, [eax*8]
sub esi, eax
lea eax, [eax + esi*4]
mov esi, edi
and esi, 0xffff
movsx ebx, word [eax*4 + 0xcf2a55]
mov word [eax*4 + 0xcf2a55], di
xor eax, eax
mov ax, word [ebp + 0x18]
sub esi, ebx
sub eax, 0xc8
lea edi, [eax*8]
sub edi, eax
lea eax, [eax + edi*4]
mov di, word [ebp + 0x22]
and edi, 0xffff
movsx ebx, word [eax*4 + 0xcf2a59]
sub edi, ebx
mov bx, word [ebp + 0x22]
mov word [eax*4 + 0xcf2a59], bx
xor eax, eax
mov ax, word [ebp + 0x18]
sub eax, 0xc8
lea ebx, [eax*8]
sub ebx, eax
lea eax, [eax + ebx*4]
mov bx, word [ebp + 0x24]
mov word [eax*4 + 0xcf2a5d], bx
mov eax, dword [0x6d68b8]
add eax, ecx
mov ecx, 0x270f
cmp eax, ecx
mov dword [0x6d68b8], eax
jle 0x58e8e9
mov dword [0x6d68b8], ecx
mov eax, dword [0x6d68bc]
add eax, edx
cmp eax, ecx
mov dword [0x6d68bc], eax
jle 0x58e8ff
mov dword [0x6d68bc], ecx
mov eax, dword [0x6d68c0]
add eax, esi
cmp eax, ecx
mov dword [0x6d68c0], eax
jle 0x58e915
mov dword [0x6d68c0], ecx
mov eax, dword [0x6d68c8]
add eax, edi
cmp eax, ecx
mov dword [0x6d68c8], eax
jle 0x58e92b
mov dword [0x6d68c8], ecx
mov eax, dword [0x6d68c4]
mov esi, dword [esp + 0x14]
add eax, esi
cmp eax, ecx
mov dword [0x6d68c4], eax
jle 0x58e945
mov dword [0x6d68c4], ecx
mov ebx, dword [esp + 0x18]
push 0x85b
push 0x6d67a8
call fcn.0041b4a0
push 0x85b
call fcn.004e84d0
xor ecx, ecx
add esp, 0xc
mov dword [esp + 0x10a], ecx
lea esi, [esp + 0x90]
mov dword [esp + 0x10e], ecx
lea edi, [esp + 0x1c4]
mov dword [esp + 0x112], ecx
mov dword [esp + 0x1c0], ebx
mov byte [esp + 0x116], cl
mov ecx, 0x4c
lea edx, [esp + 0x1c0]
lea eax, [esp + 0x34]
rep movsd dword es:[edi], dword [esi]
push edx
push eax
mov ecx, 0xced988
mov byte [esp + 0x18], 0
call fcn.00474ae0
mov ecx, eax
push 0
mov eax, dword [ecx]
add eax, 0x10
mov edx, dword [ecx + 4]
mov ecx, dword [eax]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x14], ecx
mov edx, dword [eax + 4]
mov dword [esp + 0x18], edx
mov ecx, dword [eax + 8]
mov dword [esp + 0x1c], ecx
mov dl, byte [eax + 0xc]
lea eax, [esp + 0x14]
push eax
mov byte [esp + 0x24], dl
call fcn.00586da0
lea ecx, [esp + 0x18]
push ecx
push 0x674320
jmp 0x58fa8c
xor ecx, ecx
push 1
mov cx, word [ebp + 0x14]
push ecx
mov ecx, 0xced988
call fcn.0053cd60
mov ax, word [ebp + 0x18]
cmp ax, 0x96
jae 0x58eca7
xor edx, edx
mov ecx, 0x4c
mov dword [esp + 0x36e], edx
lea esi, [esp + 0x2f4]
mov dword [esp + 0x372], edx
lea edi, [esp + 0x428]
mov dword [esp + 0x376], edx
mov dword [esp + 0x424], ebx
mov byte [esp + 0x37a], dl
lea eax, [esp + 0x424]
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x44]
push eax
push ecx
mov ecx, 0xced988
mov dword [esp + 0x28], 0
call fcn.00474ae0
mov edx, eax
mov eax, dword [edx]
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
mov ecx, dword [eax + 0x78]
test ecx, ecx
jle 0x58ec6f
mov eax, dword [esp + 0x2c]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x30]
lea eax, [eax + edx*2]
mov ecx, eax
shl ecx, 4
add ecx, eax
lea edx, [ecx*8 + 0xcedac3]
mov dword [esp + 0x1c], edx
xor eax, eax
mov ecx, 0x4c
mov dword [esp + 0x10a], eax
lea esi, [esp + 0x90]
mov dword [esp + 0x10e], eax
lea edi, [esp + 0x1c4]
mov dword [esp + 0x112], eax
mov dword [esp + 0x1c0], ebx
mov byte [esp + 0x116], al
lea edx, [esp + 0x34]
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x1c0]
mov dword [esp + 0x14], 0
push ecx
push edx
mov ecx, 0xced988
call fcn.00474ae0
mov ecx, eax
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, dword [eax + 0x74]
test ecx, ecx
mov dword [esp + 0x28], edx
jle 0x58ebea
mov ebx, dword [esp + 0x1c]
and word [ebx], 0xff
mov ax, word [ebx]
xor ecx, ecx
lea esi, [esp + 0x90]
mov ch, byte [ebp + 0x28]
lea edi, [esp + 0x1c4]
or ecx, eax
mov word [ebx], cx
mov dx, word [ebp + 0x1a]
mov word [ebx - 0x12], dx
mov ax, word [ebp + 0x20]
mov word [ebx - 0xc], ax
mov cx, word [ebp + 0x1c]
mov word [ebx - 0x10], cx
mov dx, word [ebp + 0x26]
mov word [ebx - 4], dx
mov ax, word [ebp + 0x1e]
mov word [ebx - 0xe], ax
mov cx, word [ebp + 0x22]
mov word [ebx - 0xa], cx
mov ecx, dword [esp + 0x14]
mov dx, word [ebp + 0x24]
xor eax, eax
inc ecx
mov dword [esp + 0x10a], eax
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x10e], eax
mov dword [esp + 0x1c0], ecx
mov dword [esp + 0x112], eax
mov word [ebx - 6], dx
mov ecx, 0x4c
mov byte [esp + 0x116], al
lea edx, [esp + 0x1c0]
lea eax, [esp + 0x34]
rep movsd dword es:[edi], dword [esi]
push edx
push eax
mov ecx, 0xced988
add ebx, 0x88
call fcn.00474ae0
mov ecx, eax
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x28], edx
mov edx, dword [eax + 0x74]
cmp ecx, edx
jl 0x58eb22
mov eax, dword [esp + 0x1c]
xor edx, edx
mov dword [esp + 0x36e], edx
mov ebx, dword [esp + 0x20]
add eax, 0x550
mov dword [esp + 0x372], edx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x376], edx
mov ecx, 0x4c
lea esi, [esp + 0x2f4]
lea edi, [esp + 0x428]
mov byte [esp + 0x37a], dl
mov dword [esp + 0x424], eax
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x424]
lea edx, [esp + 0x44]
inc ebx
push ecx
push edx
mov ecx, 0xced988
mov dword [esp + 0x28], ebx
call fcn.00474ae0
mov ecx, eax
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, dword [eax + 0x78]
cmp ebx, ecx
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x28], edx
jl 0x58eaaf
push 2
mov ecx, 0xd11140
call fcn.0057fec0
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2]
mov ecx, 0xd11140
mov edx, eax
shl edx, 4
add edx, eax
lea eax, [edx*8 + 0xceda90]
push eax
call fcn.0057fa90
jmp 0x58eecf
cmp ax, 0xc8
jb 0x58eecf
cmp ax, 0xcf
jae 0x58eecf
and eax, 0xffff
sub eax, 0xc8
lea ecx, [eax*8]
sub ecx, eax
lea eax, [eax + ecx*4]
xor ecx, ecx
and word [eax*4 + 0xcf2a63], 0xff
xor eax, eax
mov ax, word [ebp + 0x18]
mov ch, byte [ebp + 0x28]
sub eax, 0xc8
lea edx, [eax*8]
sub edx, eax
lea eax, [eax + edx*4]
or word [eax*4 + 0xcf2a63], cx
xor eax, eax
mov ax, word [ebp + 0x18]
sub eax, 0xc8
lea edx, [eax*8]
sub edx, eax
lea eax, [eax + edx*4]
mov dx, word [ebp + 0x1a]
mov ecx, edx
movsx esi, word [eax*4 + 0xcf2a51]
mov word [eax*4 + 0xcf2a51], dx
xor eax, eax
mov ax, word [ebp + 0x18]
and ecx, 0xffff
sub eax, 0xc8
sub ecx, esi
mov si, word [ebp + 0x20]
lea edx, [eax*8]
sub edx, eax
lea eax, [eax + edx*4]
mov edx, esi
and edx, 0xffff
movsx edi, word [eax*4 + 0xcf2a57]
mov word [eax*4 + 0xcf2a57], si
xor eax, eax
mov ax, word [ebp + 0x18]
sub edx, edi
sub eax, 0xc8
mov dword [esp + 0x14], edx
mov si, word [ebp + 0x1c]
lea edx, [eax*8]
sub edx, eax
lea eax, [eax + edx*4]
mov edx, esi
and edx, 0xffff
movsx edi, word [eax*4 + 0xcf2a53]
mov word [eax*4 + 0xcf2a53], si
xor eax, eax
mov ax, word [ebp + 0x18]
sub edx, edi
sub eax, 0xc8
lea esi, [eax*8]
sub esi, eax
lea eax, [eax + esi*4]
mov si, word [ebp + 0x26]
mov word [eax*4 + 0xcf2a5f], si
xor eax, eax
mov ax, word [ebp + 0x18]
mov di, word [ebp + 0x1e]
sub eax, 0xc8
lea esi, [eax*8]
sub esi, eax
lea eax, [eax + esi*4]
mov esi, edi
and esi, 0xffff
movsx ebx, word [eax*4 + 0xcf2a55]
mov word [eax*4 + 0xcf2a55], di
xor eax, eax
mov ax, word [ebp + 0x18]
sub esi, ebx
sub eax, 0xc8
lea edi, [eax*8]
sub edi, eax
lea eax, [eax + edi*4]
mov di, word [ebp + 0x22]
and edi, 0xffff
movsx ebx, word [eax*4 + 0xcf2a59]
sub edi, ebx
mov bx, word [ebp + 0x22]
mov word [eax*4 + 0xcf2a59], bx
xor eax, eax
mov ax, word [ebp + 0x18]
sub eax, 0xc8
lea ebx, [eax*8]
sub ebx, eax
lea eax, [eax + ebx*4]
mov bx, word [ebp + 0x24]
mov word [eax*4 + 0xcf2a5d], bx
mov eax, dword [0x6d68b8]
add eax, ecx
mov ecx, 0x270f
cmp eax, ecx
mov dword [0x6d68b8], eax
jle 0x58ee6f
mov dword [0x6d68b8], ecx
mov eax, dword [0x6d68bc]
add eax, edx
cmp eax, ecx
mov dword [0x6d68bc], eax
jle 0x58ee85
mov dword [0x6d68bc], ecx
mov eax, dword [0x6d68c0]
add eax, esi
cmp eax, ecx
mov dword [0x6d68c0], eax
jle 0x58ee9b
mov dword [0x6d68c0], ecx
mov eax, dword [0x6d68c8]
add eax, edi
cmp eax, ecx
mov dword [0x6d68c8], eax
jle 0x58eeb1
mov dword [0x6d68c8], ecx
mov eax, dword [0x6d68c4]
mov esi, dword [esp + 0x14]
add eax, esi
cmp eax, ecx
mov dword [0x6d68c4], eax
jle 0x58eecb
mov dword [0x6d68c4], ecx
mov ebx, dword [esp + 0x18]
push 0x879
push 0x6d67a8
call fcn.0041b4a0
push 0x879
call fcn.004e84d0
xor ecx, ecx
add esp, 0xc
mov dword [esp + 0x10a], ecx
lea esi, [esp + 0x90]
mov dword [esp + 0x10e], ecx
lea edi, [esp + 0x1c4]
mov dword [esp + 0x112], ecx
mov dword [esp + 0x1c0], ebx
mov byte [esp + 0x116], cl
mov ecx, 0x4c
lea edx, [esp + 0x1c0]
lea eax, [esp + 0x34]
rep movsd dword es:[edi], dword [esi]
push edx
push eax
mov ecx, 0xced988
mov byte [esp + 0x18], 0
call fcn.00474ae0
mov ecx, eax
push 0
mov eax, dword [ecx]
add eax, 0x10
mov edx, dword [ecx + 4]
mov ecx, dword [eax]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x14], ecx
mov edx, dword [eax + 4]
mov dword [esp + 0x18], edx
mov ecx, dword [eax + 8]
mov dword [esp + 0x1c], ecx
mov dl, byte [eax + 0xc]
lea eax, [esp + 0x14]
push eax
mov byte [esp + 0x24], dl
call fcn.00586da0
lea ecx, [esp + 0x18]
push ecx
push 0x674304
jmp 0x58fa8c
xor ecx, ecx
push 1
mov cx, word [ebp + 0x14]
push ecx
mov ecx, 0xced988
call fcn.0053cd60
mov ax, word [ebp + 0x18]
cmp ax, 0x96
jae 0x58f22d
xor edx, edx
mov ecx, 0x4c
mov dword [esp + 0x36e], edx
lea esi, [esp + 0x2f4]
mov dword [esp + 0x372], edx
lea edi, [esp + 0x428]
mov dword [esp + 0x376], edx
mov dword [esp + 0x424], ebx
mov byte [esp + 0x37a], dl
lea eax, [esp + 0x424]
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x44]
push eax
push ecx
mov ecx, 0xced988
mov dword [esp + 0x28], 0
call fcn.00474ae0
mov edx, eax
mov eax, dword [edx]
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
mov ecx, dword [eax + 0x78]
test ecx, ecx
jle 0x58f1f5
mov eax, dword [esp + 0x2c]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x30]
lea eax, [eax + edx*2]
mov ecx, eax
shl ecx, 4
add ecx, eax
lea edx, [ecx*8 + 0xcedac3]
mov dword [esp + 0x1c], edx
mov ecx, dword [esp + 0x18]
xor eax, eax
mov dword [esp + 0x10a], eax
mov dword [esp + 0x1c0], ecx
mov dword [esp + 0x10e], eax
mov ecx, 0x4c
mov dword [esp + 0x112], eax
lea esi, [esp + 0x90]
lea edi, [esp + 0x1c4]
mov byte [esp + 0x116], al
lea edx, [esp + 0x1c0]
lea eax, [esp + 0x34]
rep movsd dword es:[edi], dword [esi]
push edx
push eax
mov ecx, 0xced988
mov dword [esp + 0x1c], 0
call fcn.00474ae0
mov ecx, eax
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, dword [eax + 0x74]
test ecx, ecx
mov dword [esp + 0x28], edx
jle 0x58f174
mov ebx, dword [esp + 0x1c]
and word [ebx], 0xff
mov ax, word [ebx]
xor ecx, ecx
lea esi, [esp + 0x90]
mov ch, byte [ebp + 0x28]
lea edi, [esp + 0x1c4]
or ecx, eax
mov word [ebx], cx
mov dx, word [ebp + 0x1a]
mov word [ebx - 0x12], dx
mov ax, word [ebp + 0x20]
mov word [ebx - 0xc], ax
mov cx, word [ebp + 0x1c]
mov word [ebx - 0x10], cx
mov dx, word [ebp + 0x26]
mov word [ebx - 4], dx
mov ax, word [ebp + 0x1e]
mov word [ebx - 0xe], ax
mov cx, word [ebp + 0x22]
mov word [ebx - 0xa], cx
mov ecx, dword [esp + 0x14]
mov dx, word [ebp + 0x24]
xor eax, eax
inc ecx
mov dword [esp + 0x10a], eax
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x10e], eax
mov dword [esp + 0x1c0], ecx
mov dword [esp + 0x112], eax
mov word [ebx - 6], dx
mov ecx, 0x4c
mov byte [esp + 0x116], al
lea edx, [esp + 0x1c0]
lea eax, [esp + 0x34]
rep movsd dword es:[edi], dword [esi]
push edx
push eax
mov ecx, 0xced988
add ebx, 0x88
call fcn.00474ae0
mov ecx, eax
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x28], edx
mov edx, dword [eax + 0x74]
cmp ecx, edx
jl 0x58f0ac
mov eax, dword [esp + 0x1c]
xor edx, edx
mov dword [esp + 0x36e], edx
mov ebx, dword [esp + 0x20]
add eax, 0x550
mov dword [esp + 0x372], edx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x376], edx
mov ecx, 0x4c
lea esi, [esp + 0x2f4]
lea edi, [esp + 0x428]
mov byte [esp + 0x37a], dl
mov dword [esp + 0x424], eax
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x424]
lea edx, [esp + 0x44]
inc ebx
push ecx
push edx
mov ecx, 0xced988
mov dword [esp + 0x28], ebx
call fcn.00474ae0
mov ecx, eax
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, dword [eax + 0x78]
cmp ebx, ecx
mov dword [esp + 0x28], edx
jl 0x58f035
push 2
mov ecx, 0xd11140
call fcn.0057fec0
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2]
mov ecx, 0xd11140
mov edx, eax
shl edx, 4
add edx, eax
lea eax, [edx*8 + 0xceda90]
push eax
call fcn.0057fa90
jmp 0x58f451
cmp ax, 0xc8
jb 0x58f455
cmp ax, 0xcf
jae 0x58f455
and eax, 0xffff
sub eax, 0xc8
lea ecx, [eax*8]
sub ecx, eax
lea eax, [eax + ecx*4]
xor ecx, ecx
and word [eax*4 + 0xcf2a63], 0xff
xor eax, eax
mov ax, word [ebp + 0x18]
mov ch, byte [ebp + 0x28]
sub eax, 0xc8
lea edx, [eax*8]
sub edx, eax
lea eax, [eax + edx*4]
or word [eax*4 + 0xcf2a63], cx
xor eax, eax
mov ax, word [ebp + 0x18]
sub eax, 0xc8
lea edx, [eax*8]
sub edx, eax
lea eax, [eax + edx*4]
mov dx, word [ebp + 0x1a]
mov ecx, edx
movsx esi, word [eax*4 + 0xcf2a51]
mov word [eax*4 + 0xcf2a51], dx
xor eax, eax
mov ax, word [ebp + 0x18]
and ecx, 0xffff
sub eax, 0xc8
sub ecx, esi
mov si, word [ebp + 0x20]
lea edx, [eax*8]
sub edx, eax
lea eax, [eax + edx*4]
mov edx, esi
and edx, 0xffff
movsx edi, word [eax*4 + 0xcf2a57]
mov word [eax*4 + 0xcf2a57], si
xor eax, eax
mov ax, word [ebp + 0x18]
sub edx, edi
sub eax, 0xc8
mov dword [esp + 0x14], edx
mov si, word [ebp + 0x1c]
lea edx, [eax*8]
sub edx, eax
lea eax, [eax + edx*4]
mov edx, esi
and edx, 0xffff
movsx edi, word [eax*4 + 0xcf2a53]
mov word [eax*4 + 0xcf2a53], si
xor eax, eax
mov ax, word [ebp + 0x18]
sub edx, edi
sub eax, 0xc8
lea esi, [eax*8]
sub esi, eax
lea eax, [eax + esi*4]
mov si, word [ebp + 0x26]
mov word [eax*4 + 0xcf2a5f], si
xor eax, eax
mov ax, word [ebp + 0x18]
mov di, word [ebp + 0x1e]
sub eax, 0xc8
lea esi, [eax*8]
sub esi, eax
lea eax, [eax + esi*4]
mov esi, edi
and esi, 0xffff
movsx ebx, word [eax*4 + 0xcf2a55]
mov word [eax*4 + 0xcf2a55], di
xor eax, eax
mov ax, word [ebp + 0x18]
sub esi, ebx
sub eax, 0xc8
lea edi, [eax*8]
sub edi, eax
lea eax, [eax + edi*4]
mov di, word [ebp + 0x22]
and edi, 0xffff
movsx ebx, word [eax*4 + 0xcf2a59]
sub edi, ebx
mov bx, word [ebp + 0x22]
mov word [eax*4 + 0xcf2a59], bx
xor eax, eax
mov ax, word [ebp + 0x18]
sub eax, 0xc8
lea ebx, [eax*8]
sub ebx, eax
lea eax, [eax + ebx*4]
mov bx, word [ebp + 0x24]
mov word [eax*4 + 0xcf2a5d], bx
mov eax, dword [0x6d68b8]
add eax, ecx
mov ecx, 0x270f
cmp eax, ecx
mov dword [0x6d68b8], eax
jle 0x58f3f5
mov dword [0x6d68b8], ecx
mov eax, dword [0x6d68bc]
add eax, edx
cmp eax, ecx
mov dword [0x6d68bc], eax
jle 0x58f40b
mov dword [0x6d68bc], ecx
mov eax, dword [0x6d68c0]
add eax, esi
cmp eax, ecx
mov dword [0x6d68c0], eax
jle 0x58f421
mov dword [0x6d68c0], ecx
mov eax, dword [0x6d68c8]
add eax, edi
cmp eax, ecx
mov dword [0x6d68c8], eax
jle 0x58f437
mov dword [0x6d68c8], ecx
mov eax, dword [0x6d68c4]
mov esi, dword [esp + 0x14]
add eax, esi
cmp eax, ecx
mov dword [0x6d68c4], eax
jle 0x58f451
mov dword [0x6d68c4], ecx
mov ebx, dword [esp + 0x18]
push 0x70e
push 0x6d67a8
call fcn.0041b4a0
push 0x70e
call fcn.004e84d0
xor ecx, ecx
add esp, 0xc
mov dword [esp + 0x10a], ecx
lea esi, [esp + 0x90]
mov dword [esp + 0x10e], ecx
lea edi, [esp + 0x1c4]
mov dword [esp + 0x112], ecx
mov dword [esp + 0x1c0], ebx
mov byte [esp + 0x116], cl
mov ecx, 0x4c
lea edx, [esp + 0x1c0]
lea eax, [esp + 0x34]
rep movsd dword es:[edi], dword [esi]
push edx
push eax
mov ecx, 0xced988
mov byte [esp + 0x18], 0
call fcn.00474ae0
mov ecx, eax
push 0
mov eax, dword [ecx]
add eax, 0x10
mov edx, dword [ecx + 4]
mov ecx, dword [eax]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x14], ecx
mov edx, dword [eax + 4]
mov dword [esp + 0x18], edx
mov ecx, dword [eax + 8]
mov dword [esp + 0x1c], ecx
mov dl, byte [eax + 0xc]
lea eax, [esp + 0x14]
push eax
mov byte [esp + 0x24], dl
call fcn.00586da0
lea ecx, [esp + 0x18]
push ecx
push 0x6742d0
jmp 0x58fa8c
xor ecx, ecx
push 1
mov cx, word [ebp + 0x14]
push ecx
mov ecx, 0xced988
call fcn.0053cd60
mov ax, word [ebp + 0x18]
cmp ax, 0x96
jae 0x58f7b3
xor edx, edx
mov ecx, 0x4c
mov dword [esp + 0x36e], edx
lea esi, [esp + 0x2f4]
mov dword [esp + 0x372], edx
lea edi, [esp + 0x428]
mov dword [esp + 0x376], edx
mov dword [esp + 0x424], ebx
mov byte [esp + 0x37a], dl
lea eax, [esp + 0x424]
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x44]
push eax
push ecx
mov ecx, 0xced988
mov dword [esp + 0x28], 0
call fcn.00474ae0
mov edx, eax
mov eax, dword [edx]
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
mov ecx, dword [eax + 0x78]
test ecx, ecx
jle 0x58f77b
mov eax, dword [esp + 0x2c]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x30]
lea eax, [eax + edx*2]
mov ecx, eax
shl ecx, 4
add ecx, eax
lea edx, [ecx*8 + 0xcedac3]
mov dword [esp + 0x1c], edx
mov ecx, dword [esp + 0x18]
xor eax, eax
mov dword [esp + 0x10a], eax
mov dword [esp + 0x1c0], ecx
mov dword [esp + 0x10e], eax
mov ecx, 0x4c
mov dword [esp + 0x112], eax
lea esi, [esp + 0x90]
lea edi, [esp + 0x1c4]
mov byte [esp + 0x116], al
lea edx, [esp + 0x1c0]
lea eax, [esp + 0x34]
rep movsd dword es:[edi], dword [esi]
push edx
push eax
mov ecx, 0xced988
mov dword [esp + 0x1c], 0
call fcn.00474ae0
mov ecx, eax
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, dword [eax + 0x74]
test ecx, ecx
mov dword [esp + 0x28], edx
jle 0x58f6fa
mov ebx, dword [esp + 0x1c]
and word [ebx], 0xff
mov ax, word [ebx]
xor ecx, ecx
lea esi, [esp + 0x90]
mov ch, byte [ebp + 0x28]
lea edi, [esp + 0x1c4]
or ecx, eax
mov word [ebx], cx
mov dx, word [ebp + 0x1a]
mov word [ebx - 0x12], dx
mov ax, word [ebp + 0x20]
mov word [ebx - 0xc], ax
mov cx, word [ebp + 0x1c]
mov word [ebx - 0x10], cx
mov dx, word [ebp + 0x26]
mov word [ebx - 4], dx
mov ax, word [ebp + 0x1e]
mov word [ebx - 0xe], ax
mov cx, word [ebp + 0x22]
mov word [ebx - 0xa], cx
mov ecx, dword [esp + 0x14]
mov dx, word [ebp + 0x24]
xor eax, eax
inc ecx
mov dword [esp + 0x10a], eax
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x10e], eax
mov dword [esp + 0x1c0], ecx
mov dword [esp + 0x112], eax
mov word [ebx - 6], dx
mov ecx, 0x4c
mov byte [esp + 0x116], al
lea edx, [esp + 0x1c0]
lea eax, [esp + 0x34]
rep movsd dword es:[edi], dword [esi]
push edx
push eax
mov ecx, 0xced988
add ebx, 0x88
call fcn.00474ae0
mov ecx, eax
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x28], edx
mov edx, dword [eax + 0x74]
cmp ecx, edx
jl 0x58f632
mov eax, dword [esp + 0x1c]
xor edx, edx
mov dword [esp + 0x36e], edx
mov ebx, dword [esp + 0x20]
add eax, 0x550
mov dword [esp + 0x372], edx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x376], edx
mov ecx, 0x4c
lea esi, [esp + 0x2f4]
lea edi, [esp + 0x428]
mov byte [esp + 0x37a], dl
mov dword [esp + 0x424], eax
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x424]
lea edx, [esp + 0x44]
inc ebx
push ecx
push edx
mov ecx, 0xced988
mov dword [esp + 0x28], ebx
call fcn.00474ae0
mov ecx, eax
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, dword [eax + 0x78]
cmp ebx, ecx
mov dword [esp + 0x28], edx
jl 0x58f5bb
push 2
mov ecx, 0xd11140
call fcn.0057fec0
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2]
mov ecx, 0xd11140
mov edx, eax
shl edx, 4
add edx, eax
lea eax, [edx*8 + 0xceda90]
push eax
call fcn.0057fa90
jmp 0x58f9d7
cmp ax, 0xc8
jb 0x58f9db
cmp ax, 0xcf
jae 0x58f9db
and eax, 0xffff
sub eax, 0xc8
lea ecx, [eax*8]
sub ecx, eax
lea eax, [eax + ecx*4]
xor ecx, ecx
and word [eax*4 + 0xcf2a63], 0xff
xor eax, eax
mov ax, word [ebp + 0x18]
mov ch, byte [ebp + 0x28]
sub eax, 0xc8
lea edx, [eax*8]
sub edx, eax
lea eax, [eax + edx*4]
or word [eax*4 + 0xcf2a63], cx
xor eax, eax
mov ax, word [ebp + 0x18]
sub eax, 0xc8
lea edx, [eax*8]
sub edx, eax
lea eax, [eax + edx*4]
mov dx, word [ebp + 0x1a]
mov ecx, edx
movsx esi, word [eax*4 + 0xcf2a51]
mov word [eax*4 + 0xcf2a51], dx
xor eax, eax
mov ax, word [ebp + 0x18]
and ecx, 0xffff
sub eax, 0xc8
sub ecx, esi
mov si, word [ebp + 0x20]
lea edx, [eax*8]
sub edx, eax
lea eax, [eax + edx*4]
mov edx, esi
and edx, 0xffff
movsx edi, word [eax*4 + 0xcf2a57]
mov word [eax*4 + 0xcf2a57], si
xor eax, eax
mov ax, word [ebp + 0x18]
sub edx, edi
sub eax, 0xc8
mov dword [esp + 0x14], edx
mov si, word [ebp + 0x1c]
lea edx, [eax*8]
sub edx, eax
lea eax, [eax + edx*4]
mov edx, esi
and edx, 0xffff
movsx edi, word [eax*4 + 0xcf2a53]
mov word [eax*4 + 0xcf2a53], si
xor eax, eax
mov ax, word [ebp + 0x18]
sub edx, edi
sub eax, 0xc8
lea esi, [eax*8]
sub esi, eax
lea eax, [eax + esi*4]
mov si, word [ebp + 0x26]
mov word [eax*4 + 0xcf2a5f], si
xor eax, eax
mov ax, word [ebp + 0x18]
mov di, word [ebp + 0x1e]
sub eax, 0xc8
lea esi, [eax*8]
sub esi, eax
lea eax, [eax + esi*4]
mov esi, edi
and esi, 0xffff
movsx ebx, word [eax*4 + 0xcf2a55]
mov word [eax*4 + 0xcf2a55], di
xor eax, eax
mov ax, word [ebp + 0x18]
sub esi, ebx
sub eax, 0xc8
lea edi, [eax*8]
sub edi, eax
lea eax, [eax + edi*4]
mov di, word [ebp + 0x22]
and edi, 0xffff
movsx ebx, word [eax*4 + 0xcf2a59]
sub edi, ebx
mov bx, word [ebp + 0x22]
mov word [eax*4 + 0xcf2a59], bx
xor eax, eax
mov ax, word [ebp + 0x18]
sub eax, 0xc8
lea ebx, [eax*8]
sub ebx, eax
lea eax, [eax + ebx*4]
mov bx, word [ebp + 0x24]
mov word [eax*4 + 0xcf2a5d], bx
mov eax, dword [0x6d68b8]
add eax, ecx
mov ecx, 0x270f
cmp eax, ecx
mov dword [0x6d68b8], eax
jle 0x58f97b
mov dword [0x6d68b8], ecx
mov eax, dword [0x6d68bc]
add eax, edx
cmp eax, ecx
mov dword [0x6d68bc], eax
jle 0x58f991
mov dword [0x6d68bc], ecx
mov eax, dword [0x6d68c0]
add eax, esi
cmp eax, ecx
mov dword [0x6d68c0], eax
jle 0x58f9a7
mov dword [0x6d68c0], ecx
mov eax, dword [0x6d68c8]
add eax, edi
cmp eax, ecx
mov dword [0x6d68c8], eax
jle 0x58f9bd
mov dword [0x6d68c8], ecx
mov eax, dword [0x6d68c4]
mov esi, dword [esp + 0x14]
add eax, esi
cmp eax, ecx
mov dword [0x6d68c4], eax
jle 0x58f9d7
mov dword [0x6d68c4], ecx
mov ebx, dword [esp + 0x18]
push 0x70e
push 0x6d67a8
call fcn.0041b4a0
push 0x70e
call fcn.004e84d0
xor ecx, ecx
add esp, 0xc
mov dword [esp + 0x10a], ecx
lea esi, [esp + 0x90]
mov dword [esp + 0x10e], ecx
lea edi, [esp + 0x1c4]
mov dword [esp + 0x112], ecx
mov dword [esp + 0x1c0], ebx
mov byte [esp + 0x116], cl
mov ecx, 0x4c
lea edx, [esp + 0x1c0]
lea eax, [esp + 0x34]
rep movsd dword es:[edi], dword [esi]
push edx
push eax
mov ecx, 0xced988
mov byte [esp + 0x18], 0
call fcn.00474ae0
mov ecx, eax
push 0
mov eax, dword [ecx]
add eax, 0x10
mov edx, dword [ecx + 4]
mov ecx, dword [eax]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x14], ecx
mov edx, dword [eax + 4]
mov dword [esp + 0x18], edx
mov ecx, dword [eax + 8]
mov dword [esp + 0x1c], ecx
mov dl, byte [eax + 0xc]
lea eax, [esp + 0x14]
push eax
mov byte [esp + 0x24], dl
call fcn.00586da0
lea ecx, [esp + 0x18]
push ecx
push 0x67429c
lea edx, [esp + 0x60]
push edx
call fcn.006133d6
lea eax, [esp + 0x64]
push 0
push eax
call fcn.00586e90
add esp, 0x1c
mov eax, dword [0xa4f274]
test eax, eax
jne 0x58fabd
lea eax, [esp + 0x50]
push 0
push eax
call fcn.00586da0
add esp, 8
lea edi, [esp + 0x50]
or ecx, 0xffffffff
xor eax, eax
push 0
repne scasb al, byte es:[edi]
not ecx
push 0
dec ecx
push 0
push ecx
lea ecx, [esp + 0x60]
push ecx
call fcn.004cbc90
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x548
ret
xor ecx, ecx
push 1
mov cx, word [ebp + 0x14]
push ecx
mov ecx, 0xced988
call fcn.0053cd60
mov ax, word [ebp + 0x18]
cmp ax, 0x96
jae 0x58fd92
xor edx, edx
mov ecx, 0x4c
mov dword [esp + 0x36e], edx
lea esi, [esp + 0x2f4]
mov dword [esp + 0x372], edx
lea edi, [esp + 0x428]
mov dword [esp + 0x376], edx
mov dword [esp + 0x424], ebx
mov byte [esp + 0x37a], dl
lea eax, [esp + 0x424]
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x44]
push eax
push ecx
mov ecx, 0xced988
mov dword [esp + 0x28], 0
call fcn.00474ae0
mov edx, eax
mov eax, dword [edx]
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
mov ecx, dword [eax + 0x78]
test ecx, ecx
jle 0x58fd5a
mov eax, dword [esp + 0x2c]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x30]
lea eax, [eax + edx*2]
mov ecx, eax
shl ecx, 4
add ecx, eax
lea edx, [ecx*8 + 0xcedac3]
mov dword [esp + 0x1c], edx
mov ecx, dword [esp + 0x18]
xor eax, eax
mov dword [esp + 0x10a], eax
mov dword [esp + 0x1c0], ecx
mov dword [esp + 0x10e], eax
mov ecx, 0x4c
mov dword [esp + 0x112], eax
lea esi, [esp + 0x90]
lea edi, [esp + 0x1c4]
mov byte [esp + 0x116], al
lea edx, [esp + 0x1c0]
lea eax, [esp + 0x34]
rep movsd dword es:[edi], dword [esi]
push edx
push eax
mov ecx, 0xced988
mov dword [esp + 0x1c], 0
call fcn.00474ae0
mov ecx, eax
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, dword [eax + 0x74]
test ecx, ecx
mov dword [esp + 0x28], edx
jle 0x58fcd9
mov ebx, dword [esp + 0x1c]
and word [ebx], 0xff
mov ax, word [ebx]
xor ecx, ecx
lea esi, [esp + 0x90]
mov ch, byte [ebp + 0x28]
lea edi, [esp + 0x1c4]
or ecx, eax
mov word [ebx], cx
mov dx, word [ebp + 0x1a]
mov word [ebx - 0x12], dx
mov ax, word [ebp + 0x20]
mov word [ebx - 0xc], ax
mov cx, word [ebp + 0x1c]
mov word [ebx - 0x10], cx
mov dx, word [ebp + 0x26]
mov word [ebx - 4], dx
mov ax, word [ebp + 0x1e]
mov word [ebx - 0xe], ax
mov cx, word [ebp + 0x22]
mov word [ebx - 0xa], cx
mov ecx, dword [esp + 0x14]
mov dx, word [ebp + 0x24]
xor eax, eax
inc ecx
mov dword [esp + 0x10a], eax
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x10e], eax
mov dword [esp + 0x1c0], ecx
mov dword [esp + 0x112], eax
mov word [ebx - 6], dx
mov ecx, 0x4c
mov byte [esp + 0x116], al
lea edx, [esp + 0x1c0]
lea eax, [esp + 0x34]
rep movsd dword es:[edi], dword [esi]
push edx
push eax
mov ecx, 0xced988
add ebx, 0x88
call fcn.00474ae0
mov ecx, eax
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x28], edx
mov edx, dword [eax + 0x74]
cmp ecx, edx
jl 0x58fc11
mov eax, dword [esp + 0x1c]
xor edx, edx
mov dword [esp + 0x36e], edx
mov ebx, dword [esp + 0x20]
add eax, 0x550
mov dword [esp + 0x372], edx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x376], edx
mov ecx, 0x4c
lea esi, [esp + 0x2f4]
lea edi, [esp + 0x428]
mov byte [esp + 0x37a], dl
mov dword [esp + 0x424], eax
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x424]
lea edx, [esp + 0x44]
inc ebx
push ecx
push edx
mov ecx, 0xced988
mov dword [esp + 0x28], ebx
call fcn.00474ae0
mov ecx, eax
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, dword [eax + 0x78]
cmp ebx, ecx
mov dword [esp + 0x28], edx
jl 0x58fb9a
push 2
mov ecx, 0xd11140
call fcn.0057fec0
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2]
mov ecx, 0xd11140
mov edx, eax
shl edx, 4
add edx, eax
lea eax, [edx*8 + 0xceda90]
push eax
call fcn.0057fa90
jmp 0x58ffb6
cmp ax, 0xc8
jb 0x58ffba
cmp ax, 0xcf
jae 0x58ffba
and eax, 0xffff
sub eax, 0xc8
lea ecx, [eax*8]
sub ecx, eax
lea eax, [eax + ecx*4]
xor ecx, ecx
and word [eax*4 + 0xcf2a63], 0xff
xor eax, eax
mov ax, word [ebp + 0x18]
mov ch, byte [ebp + 0x28]
sub eax, 0xc8
lea edx, [eax*8]
sub edx, eax
lea eax, [eax + edx*4]
or word [eax*4 + 0xcf2a63], cx
xor eax, eax
mov ax, word [ebp + 0x18]
sub eax, 0xc8
lea edx, [eax*8]
sub edx, eax
lea eax, [eax + edx*4]
mov dx, word [ebp + 0x1a]
mov ecx, edx
movsx esi, word [eax*4 + 0xcf2a51]
mov word [eax*4 + 0xcf2a51], dx
xor eax, eax
mov ax, word [ebp + 0x18]
and ecx, 0xffff
sub eax, 0xc8
sub ecx, esi
mov si, word [ebp + 0x20]
lea edx, [eax*8]
sub edx, eax
lea eax, [eax + edx*4]
mov edx, esi
and edx, 0xffff
movsx edi, word [eax*4 + 0xcf2a57]
mov word [eax*4 + 0xcf2a57], si
xor eax, eax
mov ax, word [ebp + 0x18]
sub edx, edi
sub eax, 0xc8
mov dword [esp + 0x14], edx
mov si, word [ebp + 0x1c]
lea edx, [eax*8]
sub edx, eax
lea eax, [eax + edx*4]
mov edx, esi
and edx, 0xffff
movsx edi, word [eax*4 + 0xcf2a53]
mov word [eax*4 + 0xcf2a53], si
xor eax, eax
mov ax, word [ebp + 0x18]
sub edx, edi
sub eax, 0xc8
lea esi, [eax*8]
sub esi, eax
lea eax, [eax + esi*4]
mov si, word [ebp + 0x26]
mov word [eax*4 + 0xcf2a5f], si
xor eax, eax
mov ax, word [ebp + 0x18]
mov di, word [ebp + 0x1e]
sub eax, 0xc8
lea esi, [eax*8]
sub esi, eax
lea eax, [eax + esi*4]
mov esi, edi
and esi, 0xffff
movsx ebx, word [eax*4 + 0xcf2a55]
mov word [eax*4 + 0xcf2a55], di
xor eax, eax
mov ax, word [ebp + 0x18]
sub esi, ebx
sub eax, 0xc8
lea edi, [eax*8]
sub edi, eax
lea eax, [eax + edi*4]
mov di, word [ebp + 0x22]
and edi, 0xffff
movsx ebx, word [eax*4 + 0xcf2a59]
sub edi, ebx
mov bx, word [ebp + 0x22]
mov word [eax*4 + 0xcf2a59], bx
xor eax, eax
mov ax, word [ebp + 0x18]
sub eax, 0xc8
lea ebx, [eax*8]
sub ebx, eax
lea eax, [eax + ebx*4]
mov bx, word [ebp + 0x24]
mov word [eax*4 + 0xcf2a5d], bx
mov eax, dword [0x6d68b8]
add eax, ecx
mov ecx, 0x270f
cmp eax, ecx
mov dword [0x6d68b8], eax
jle 0x58ff5a
mov dword [0x6d68b8], ecx
mov eax, dword [0x6d68bc]
add eax, edx
cmp eax, ecx
mov dword [0x6d68bc], eax
jle 0x58ff70
mov dword [0x6d68bc], ecx
mov eax, dword [0x6d68c0]
add eax, esi
cmp eax, ecx
mov dword [0x6d68c0], eax
jle 0x58ff86
mov dword [0x6d68c0], ecx
mov eax, dword [0x6d68c8]
add eax, edi
cmp eax, ecx
mov dword [0x6d68c8], eax
jle 0x58ff9c
mov dword [0x6d68c8], ecx
mov eax, dword [0x6d68c4]
mov esi, dword [esp + 0x14]
add eax, esi
cmp eax, ecx
mov dword [0x6d68c4], eax
jle 0x58ffb6
mov dword [0x6d68c4], ecx
mov ebx, dword [esp + 0x18]
push 0x897
push 0x6d67a8
call fcn.0041b4a0
push 0x897
call fcn.004e84d0
xor ecx, ecx
add esp, 0xc
mov dword [esp + 0x10a], ecx
lea esi, [esp + 0x90]
mov dword [esp + 0x10e], ecx
lea edi, [esp + 0x1c4]
mov dword [esp + 0x112], ecx
mov dword [esp + 0x1c0], ebx
mov byte [esp + 0x116], cl
mov ecx, 0x4c
lea edx, [esp + 0x1c0]
lea eax, [esp + 0x34]
rep movsd dword es:[edi], dword [esi]
push edx
push eax
mov ecx, 0xced988
mov byte [esp + 0x18], 0
call fcn.00474ae0
mov ecx, eax
push 0
mov eax, dword [ecx]
add eax, 0x10
mov edx, dword [ecx + 4]
mov ecx, dword [eax]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x14], ecx
mov edx, dword [eax + 4]
mov dword [esp + 0x18], edx
mov ecx, dword [eax + 8]
mov dword [esp + 0x1c], ecx
mov dl, byte [eax + 0xc]
lea eax, [esp + 0x14]
push eax
mov byte [esp + 0x24], dl
call fcn.00586da0
xor ecx, ecx
lea edx, [esp + 0x18]
mov cx, word [ebp + 0x28]
lea eax, [esp + 0x58]
push ecx
push edx
push 0x674264
push eax
call fcn.006133d6
lea ecx, [esp + 0x68]
push 0
push ecx
call fcn.00586e90
add esp, 0x20
jmp case.default.0x58e321
xor edx, edx
push 1
mov dx, word [ebp + 0x14]
mov ecx, 0xced988
push edx
call fcn.0053cd60
push 0x8d4
push 0x6d67a8
call fcn.0041b4a0
push 0x8d4
call fcn.004e84d0
mov ax, word [ebp + 0x18]
add esp, 0xc
cmp ax, 0x96
jae 0x5901ce
and eax, 0xffff
push 2
lea ecx, [eax + eax*8]
and word [eax + ecx*8 + 0xcfb467], 0xff
lea eax, [eax + ecx*8 + 0xcfb467]
xor eax, eax
xor ecx, ecx
mov ax, word [ebp + 0x18]
mov ch, byte [ebp + 0x28]
lea edx, [eax + eax*8]
or word [eax + edx*8 + 0xcfb467], cx
lea eax, [eax + edx*8 + 0xcfb467]
mov cx, word [ebp + 0x1a]
xor eax, eax
mov ax, word [ebp + 0x18]
lea edx, [eax + eax*8]
mov word [eax + edx*8 + 0xcfb455], cx
mov cx, word [ebp + 0x20]
xor eax, eax
mov ax, word [ebp + 0x18]
lea edx, [eax + eax*8]
mov word [eax + edx*8 + 0xcfb45b], cx
mov cx, word [ebp + 0x1c]
xor eax, eax
mov ax, word [ebp + 0x18]
lea edx, [eax + eax*8]
mov word [eax + edx*8 + 0xcfb457], cx
mov cx, word [ebp + 0x26]
xor eax, eax
mov ax, word [ebp + 0x18]
lea edx, [eax + eax*8]
mov word [eax + edx*8 + 0xcfb463], cx
mov cx, word [ebp + 0x1e]
xor eax, eax
mov ax, word [ebp + 0x18]
lea edx, [eax + eax*8]
mov word [eax + edx*8 + 0xcfb459], cx
mov cx, word [ebp + 0x22]
xor eax, eax
mov ax, word [ebp + 0x18]
lea edx, [eax + eax*8]
mov word [eax + edx*8 + 0xcfb45d], cx
mov cx, word [ebp + 0x24]
xor eax, eax
mov ax, word [ebp + 0x18]
lea edx, [eax + eax*8]
mov word [eax + edx*8 + 0xcfb461], cx
mov ecx, 0xd11140
call fcn.0057fec0
mov eax, dword [esp + 0x2c]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x30]
lea eax, [eax + edx*2]
mov ecx, eax
shl ecx, 4
add ecx, eax
lea edx, [ecx*8 + 0xceda90]
mov ecx, 0xd11140
push edx
call fcn.0057fa90
jmp 0x5903f6
cmp ax, 0xc8
jb 0x5903f6
cmp ax, 0xcf
jae 0x5903f6
and eax, 0xffff
sub eax, 0xc8
lea ecx, [eax*8]
sub ecx, eax
lea eax, [eax + ecx*4]
xor ecx, ecx
and word [eax*4 + 0xcf2a63], 0xff
xor eax, eax
mov ax, word [ebp + 0x18]
mov ch, byte [ebp + 0x28]
sub eax, 0xc8
lea edx, [eax*8]
sub edx, eax
lea eax, [eax + edx*4]
or word [eax*4 + 0xcf2a63], cx
xor eax, eax
mov ax, word [ebp + 0x18]
sub eax, 0xc8
lea edx, [eax*8]
sub edx, eax
lea eax, [eax + edx*4]
mov dx, word [ebp + 0x1a]
mov ecx, edx
movsx esi, word [eax*4 + 0xcf2a51]
mov word [eax*4 + 0xcf2a51], dx
xor eax, eax
mov ax, word [ebp + 0x18]
and ecx, 0xffff
sub eax, 0xc8
sub ecx, esi
mov si, word [ebp + 0x20]
lea edx, [eax*8]
sub edx, eax
lea eax, [eax + edx*4]
mov edx, esi
and edx, 0xffff
movsx edi, word [eax*4 + 0xcf2a57]
mov word [eax*4 + 0xcf2a57], si
xor eax, eax
mov ax, word [ebp + 0x18]
sub edx, edi
sub eax, 0xc8
mov dword [esp + 0x14], edx
mov si, word [ebp + 0x1c]
lea edx, [eax*8]
sub edx, eax
lea eax, [eax + edx*4]
mov edx, esi
and edx, 0xffff
movsx edi, word [eax*4 + 0xcf2a53]
mov word [eax*4 + 0xcf2a53], si
xor eax, eax
mov ax, word [ebp + 0x18]
sub edx, edi
sub eax, 0xc8
lea esi, [eax*8]
sub esi, eax
lea eax, [eax + esi*4]
mov si, word [ebp + 0x26]
mov word [eax*4 + 0xcf2a5f], si
xor eax, eax
mov ax, word [ebp + 0x18]
mov di, word [ebp + 0x1e]
sub eax, 0xc8
lea esi, [eax*8]
sub esi, eax
lea eax, [eax + esi*4]
mov esi, edi
and esi, 0xffff
movsx ebx, word [eax*4 + 0xcf2a55]
mov word [eax*4 + 0xcf2a55], di
xor eax, eax
mov ax, word [ebp + 0x18]
sub esi, ebx
sub eax, 0xc8
lea edi, [eax*8]
sub edi, eax
lea eax, [eax + edi*4]
mov di, word [ebp + 0x22]
and edi, 0xffff
movsx ebx, word [eax*4 + 0xcf2a59]
sub edi, ebx
mov bx, word [ebp + 0x22]
mov word [eax*4 + 0xcf2a59], bx
xor eax, eax
mov ax, word [ebp + 0x18]
sub eax, 0xc8
lea ebx, [eax*8]
sub ebx, eax
lea eax, [eax + ebx*4]
mov bx, word [ebp + 0x24]
mov word [eax*4 + 0xcf2a5d], bx
mov eax, dword [0x6d68b8]
add eax, ecx
mov ecx, 0x270f
cmp eax, ecx
mov dword [0x6d68b8], eax
jle 0x590396
mov dword [0x6d68b8], ecx
mov eax, dword [0x6d68bc]
add eax, edx
cmp eax, ecx
mov dword [0x6d68bc], eax
jle 0x5903ac
mov dword [0x6d68bc], ecx
mov eax, dword [0x6d68c0]
add eax, esi
cmp eax, ecx
mov dword [0x6d68c0], eax
jle 0x5903c2
mov dword [0x6d68c0], ecx
mov eax, dword [0x6d68c8]
add eax, edi
cmp eax, ecx
mov dword [0x6d68c8], eax
jle 0x5903d8
mov dword [0x6d68c8], ecx
mov eax, dword [0x6d68c4]
mov esi, dword [esp + 0x14]
add eax, esi
cmp eax, ecx
mov dword [0x6d68c4], eax
jle 0x5903f2
mov dword [0x6d68c4], ecx
mov ebx, dword [esp + 0x18]
cmp word [ebp + 0x28], 0
jne 0x590474
xor ecx, ecx
lea esi, [esp + 0x90]
mov dword [esp + 0x10a], ecx
lea edi, [esp + 0x1c4]
mov dword [esp + 0x10e], ecx
mov dword [esp + 0x1c0], ebx
mov dword [esp + 0x112], ecx
lea edx, [esp + 0x1c0]
mov byte [esp + 0x116], cl
mov ecx, 0x4c
rep movsd dword es:[edi], dword [esi]
lea eax, [esp + 0x34]
push edx
push eax
mov ecx, 0xced988
call fcn.00474ae0
mov ecx, eax
mov eax, dword [ecx]
add eax, 0x10
mov edx, dword [ecx + 4]
push eax
mov dword [esp + 0x2c], edx
push 0x67424c
lea eax, [esp + 0x58]
push eax
call fcn.006133d6
add esp, 0xc
jmp case.default.0x58e321
xor ecx, ecx
lea esi, [esp + 0x90]
mov dword [esp + 0x10a], ecx
lea edi, [esp + 0x1c4]
mov dword [esp + 0x10e], ecx
mov dword [esp + 0x1c0], ebx
mov dword [esp + 0x112], ecx
lea edx, [esp + 0x1c0]
mov byte [esp + 0x116], cl
mov ecx, 0x4c
rep movsd dword es:[edi], dword [esi]
lea eax, [esp + 0x34]
push edx
push eax
mov ecx, 0xced988
call fcn.00474ae0
mov ecx, eax
mov eax, dword [ecx]
add eax, 0x10
mov edx, dword [ecx + 4]
xor ecx, ecx
mov cx, word [ebp + 0x28]
mov dword [esp + 0x28], edx
push ecx
push eax
lea edx, [esp + 0x58]
push 0x67422c
push edx
call fcn.006133d6
add esp, 0x10
jmp case.default.0x58e321
xor eax, eax
mov ecx, 0x4c
mov dword [esp + 0x10a], eax
lea esi, [esp + 0x90]
mov dword [esp + 0x10e], eax
lea edi, [esp + 0x1c4]
mov dword [esp + 0x112], eax
mov dword [esp + 0x1c0], ebx
mov byte [esp + 0x116], al
lea edx, [esp + 0x34]
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x1c0]
push ecx
push edx
mov ecx, 0xced988
call fcn.00474ae0
mov ecx, eax
mov eax, dword [ecx]
add eax, 0x10
mov edx, dword [ecx + 4]
push eax
mov dword [esp + 0x2c], edx
push 0x674210
jmp 0x590462
mov edi, 0x6741f0
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x50]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp case.default.0x58e321
mov si, word [ebp + 0x1a]
xor ecx, ecx
mov cx, word [ebp + 0x14]
push 1
push ecx
mov ecx, 0xced988
call fcn.0053cd60
xor edx, edx
push 1
mov dx, word [ebp + 0x18]
mov ecx, 0xced988
push edx
call fcn.0053cd60
push 2
mov ecx, 0xd11140
call fcn.0057fec0
lea eax, [esp + 0x4c]
and esi, 0xffff
push eax
mov ecx, 0xced988
mov dword [esp + 0x50], esi
call fcn.00487810
mov ecx, dword [0xced98c]
mov dword [esp + 0x14], eax
cmp eax, ecx
je 0x5905f5
mov edx, dword [esp + 0x4c]
mov esi, dword [eax + 0xc]
cmp edx, esi
jl 0x5905f5
lea eax, [esp + 0x14]
jmp 0x5905fd
mov dword [esp + 0x1c], ecx
lea eax, [esp + 0x1c]
mov eax, dword [eax]
cmp eax, ecx
je 0x59066b
add eax, 0x10
mov ecx, dword [eax]
mov dword [esp + 0x34], ecx
mov edx, dword [eax + 4]
mov dword [esp + 0x38], edx
mov ecx, dword [eax + 8]
mov dword [esp + 0x3c], ecx
mov dl, byte [eax + 0xc]
mov eax, dword [0xa4f274]
mov byte [esp + 0x40], dl
mov byte [esp + 0x40], 0
test eax, eax
je 0x590648
lea eax, [esp + 0x34]
lea ecx, [esp + 0x50]
push eax
push 0x6741c4
push ecx
call fcn.006133d6
add esp, 0xc
jmp 0x59066b
lea edx, [esp + 0x34]
push 0
push edx
call fcn.00586da0
lea eax, [esp + 0x3c]
lea ecx, [esp + 0x58]
push eax
push 0x674198
push ecx
call fcn.006133d6
add esp, 0x14
push 0x95b
push 0x6d67a8
call fcn.0041b470
push 0x95b
call fcn.004e84d0
lea edi, [esp + 0x5c]
or ecx, 0xffffffff
xor eax, eax
push 0
repne scasb al, byte es:[edi]
not ecx
push 0
dec ecx
push 0
lea edx, [esp + 0x68]
push ecx
push edx
call fcn.004cbc90
add esp, 0x20
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x548
ret