Function at 0x664010
Capabilities:
Resolve function by parsing pe exports

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
lea eax, [esp - 0x498]
cmp eax, dword [ecx + 8]
jbe 0x665374
sub esp, 0x518
lea edi, [esp + 0x434]
xor eax, eax
call fcn.00459c3e
mov ecx, dword [esp + 0x51c]
mov dword [esp + 0x46c], ecx
mov edx, dword [esp + 0x520]
mov dword [esp + 0x470], edx
lea edi, [esp + 0x114]
call fcn.00459c49
lea edi, [esp + 0x4c4]
call fcn.00459c3b
lea ecx, [esp + 0x4c4]
mov dword [esp + 0x120], ecx
call fcn.00447c10
mov ecx, dword [esp]
mov dword [esp + 0x11c], ecx
mov dword [esp + 0xf4], 0
mov dword [esp + 0xf8], 0
mov dword [esp + 0xfc], 0
lea edi, [esp + 0x100]
xor eax, eax
call fcn.00459c4b
lea ecx, [esp + 8]
mov dword [esp + 0xe0], ecx
mov edx, 1
mov ebx, 1
lea ebp, [esp + 0x434]
xor esi, esi
lea edi, [esp + 0x3c]
xor edx, edx
mov dword [esp + 0xac], edx
mov edx, 1
jmp 0x6641d3
mov esi, eax
mov eax, dword [esp + 0xd0]
add eax, 0x48
mov ebp, ecx
mov ecx, eax
mov edi, edx
mov edx, ebx
mov ebx, esi
mov esi, edi
mov dword [esp + 0xd0], ecx
mov dword [esp + 0x98], edx
mov dword [esp + 0x54], ebx
mov dword [esp + 0x94], ebp
mov dword [esp + 0xdc], esi
lea edi, [esp + 0x3ec]
mov esi, ecx
call fcn.0045a0ac
lea edi, [esp + 0x2cc]
lea esi, [esp + 0x3ec]
call fcn.0045a0ac
lea ecx, [0x72ac20]
mov dword [esp], ecx
lea ecx, [esp + 0x114]
mov dword [esp + 4], ecx
lea ecx, [esp + 0x304]
mov dword [esp + 8], ecx
call fcn.0040bad0
mov eax, dword [esp + 0xc]
movzx eax, byte [eax]
test al, al
je 0x664222
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0xdc]
mov ebx, dword [esp + 0x98]
inc ebx
mov ebp, dword [esp + 0x50]
cmp ebx, ebp
jl 0x6640f6
mov ebx, ecx
mov ebp, edx
mov esi, dword [esp + 0x9c]
mov edi, dword [esp + 0xd8]
mov ecx, dword [esp + 0xd4]
mov dword [esp + 0xac], ecx
mov ecx, dword [esp + 0xe0]
mov edx, eax
xor eax, eax
test ebx, ebx
jle 0x664c9e
mov dword [esp + 0x54], esi
mov dword [esp + 0x9c], edx
mov dword [esp + 0xdc], edi
mov dword [esp + 0x50], ebx
mov dword [esp + 0xd8], ebp
call fcn.0040b6d0
mov eax, dword [esp]
mov dword [esp + 0xd4], eax
mov ecx, dword [esp + 0xd8]
xor edx, edx
mov ebx, dword [esp + 0x54]
xor ebp, ebp
mov esi, dword [esp + 0xdc]
jmp 0x66410e
lea eax, [0x72ac20]
mov dword [esp], eax
lea ecx, [esp + 0x114]
mov dword [esp + 4], ecx
lea edx, [esp + 0x304]
mov dword [esp + 8], edx
call fcn.0040c0b0
mov eax, dword [esp + 0xc]
mov byte [eax], 1
xor eax, eax
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x94]
mov ebx, dword [esp + 0xdc]
jmp 0x664270
mov ebp, dword [esp + 0x6c]
inc ebp
mov ebx, edx
mov edx, ecx
mov ecx, eax
mov eax, ebp
mov dword [esp + 0x6c], eax
mov dword [esp + 0x54], ecx
mov dword [esp + 0x94], edx
mov dword [esp + 0xdc], ebx
mov ebp, dword [esp + 0x304]
mov esi, dword [esp + 0x308]
mov ebp, dword [ebp + 0x64]
mov dword [esp], esi
call ebp
mov eax, dword [esp + 0x6c]
cmp dword [esp + 4], eax
jle 0x664c87
mov ecx, dword [esp + 0x304]
mov edx, dword [esp + 0x308]
mov ecx, dword [ecx + 0x2c]
mov dword [esp], edx
mov dword [esp + 4], eax
call ecx
lea edi, [esp + 0x130]
mov esi, dword [esp + 0xe0]
call fcn.0045a0de
mov eax, dword [esp + 0x13c]
movzx ecx, byte [esp + 0x160]
test eax, eax
test cl, cl
jne 0x664be9
test eax, eax
je 0x66430b
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0xdc]
jmp 0x664263
mov eax, dword [esp + 0x14c]
mov ecx, dword [esp + 0x148]
mov dword [esp], ecx
mov dword [esp + 4], eax
lea eax, [0x77a831]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 4
call fcn.0047c880
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
cmp eax, 1
jne 0x664360
cmp byte [ecx], 0x2d
jne 0x664360
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0xdc]
jmp 0x664263
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.0066a840
mov eax, dword [esp + 0x10]
mov dword [esp + 0xa8], eax
mov ecx, dword [esp + 8]
mov dword [esp + 0xbc], ecx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x4c], edx
mov ebx, dword [esp + 0xc]
mov dword [esp + 0x5c], ebx
mov dword [esp], ecx
mov dword [esp + 4], ebx
call fcn.00663000
movzx eax, byte [esp + 8]
test al, al
je 0x664be0
mov eax, dword [esp + 0xbc]
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0xbc], eax
mov dword [esp + 0x5c], ecx
mov edx, dword [esp + 0x2fc]
lea ebx, [0x726000]
mov dword [esp], ebx
inc edx
mov dword [esp + 0x60], edx
mov dword [esp + 4], edx
mov dword [esp + 8], edx
call fcn.004436c0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x2f8]
mov edx, dword [esp + 0x2fc]
mov ebx, dword [esp + 0x60]
cmp ebx, edx
jle 0x664bd9
mov dword [esp + 0xcc], eax
cmp eax, ecx
je 0x66441f
mov dword [esp], eax
mov dword [esp + 4], ecx
shl edx, 2
mov dword [esp + 8], edx
call fcn.0045a350
mov eax, dword [esp + 0x2fc]
mov ecx, dword [esp + 0x60]
cmp eax, ecx
jae 0x66536e
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0xcc]
mov dword [edx + eax*4], ecx
mov eax, dword [esp + 0x140]
mov dword [esp + 0x74], eax
mov ebx, dword [esp + 0x144]
mov dword [esp + 0xc0], ebx
mov ebp, dword [eax + 0x60]
mov dword [esp], ebx
call ebp
mov eax, dword [esp + 8]
test eax, eax
je 0x664bb9
xor eax, eax
test al, al
jne 0x664b99
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0x74], eax
mov dword [esp + 0xc0], ecx
mov edx, dword [esp + 0xa8]
mov dword [esp], edx
mov ebx, dword [esp + 0x4c]
mov dword [esp + 4], ebx
lea ebp, [0x77ae50]
mov dword [esp + 8], ebp
mov dword [esp + 0xc], 6
call fcn.0066a900
movzx eax, byte [esp + 0x10]
test al, al
jne 0x664b64
xor eax, eax
mov byte [esp + 0x3e], al
mov ecx, dword [esp + 0x5c]
test ecx, ecx
je 0x664b25
mov edx, 1
test dl, dl
je 0x66492f
test ecx, ecx
jne 0x664921
mov edx, dword [esp + 0x134]
mov ebx, dword [esp + 0x130]
mov dword [esp + 0xbc], ebx
mov dword [esp + 0x90], edx
mov eax, dword [esp + 0xa8]
mov dword [esp], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 4], eax
lea eax, [0x77bb67]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 9
call fcn.0066a900
movzx eax, byte [esp + 0x10]
lea edi, [esp + 0x23c]
lea esi, [0x8052e0]
call fcn.0045a0ac
mov ecx, dword [esp + 0xbc]
mov dword [esp + 0x23c], ecx
mov ecx, dword [esp + 0x90]
mov dword [esp + 0x240], ecx
mov ecx, dword [esp + 0x5c]
test ecx, ecx
setne cl
mov byte [esp + 0x264], cl
mov ecx, dword [esp + 0xcc]
mov dword [esp + 0x268], ecx
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x26c], ecx
mov dword [esp + 0x270], ecx
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x274], ecx
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0x278], ecx
mov byte [esp + 0x27c], al
movzx eax, byte [esp + 0x3e]
mov byte [esp + 0x27d], al
mov dword [esp], 0
mov eax, dword [esp + 0x240]
mov ecx, dword [esp + 0x23c]
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.00446e20
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
mov dword [esp + 0x244], edx
mov dword [esp + 0x248], ecx
mov dword [esp + 0x24c], eax
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.00665560
mov eax, dword [esp + 0xc]
mov dword [esp + 0x250], eax
nop
mov dword [esp + 0x104], 0
mov dword [esp + 0x10c], 0
mov byte [esp + 0x110], 0
lea eax, [esp + 0x100]
mov dword [esp], eax
lea ecx, [0x77a318]
mov dword [esp + 4], ecx
mov dword [esp + 8], 1
call fcn.004df600
lea eax, [esp + 0x100]
mov dword [esp], eax
mov ecx, dword [esp + 0x24c]
mov edx, dword [esp + 0x248]
mov ebx, dword [esp + 0x244]
mov dword [esp + 4], ebx
mov dword [esp + 8], edx
mov dword [esp + 0xc], ecx
call fcn.0065ed40
lea eax, [esp + 0x100]
mov dword [esp], eax
lea ecx, [0x77a3ca]
mov dword [esp + 4], ecx
mov dword [esp + 8], 2
call fcn.004df600
mov eax, dword [esp + 0x108]
mov ecx, dword [esp + 0x104]
mov edx, dword [esp + 0x100]
mov ebx, dword [esp + 0x10c]
cmp ebx, ecx
ja 0x665367
mov dword [esp], 0
sub eax, ebx
mov ebp, eax
neg eax
sar eax, 0x1f
and eax, ebx
add eax, edx
mov dword [esp + 4], eax
sub ecx, ebx
mov dword [esp + 8], ecx
mov dword [esp + 0xc], ebp
call fcn.00446cd0
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x25c], ecx
mov dword [esp + 0x260], eax
mov dword [esp], 0
lea eax, [0x77a318]
mov dword [esp + 4], eax
mov dword [esp + 8], 1
mov ecx, dword [esp + 0x23c]
mov edx, dword [esp + 0x240]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], edx
lea ecx, [0x77a3ca]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], 2
call fcn.00446bb0
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x254], ecx
mov dword [esp + 0x258], eax
mov eax, dword [esp + 0xf8]
lea ecx, [eax + 1]
mov edx, dword [esp + 0xfc]
mov ebx, dword [esp + 0xf4]
cmp ecx, edx
ja 0x6648e4
lea ecx, [eax + 1]
mov dword [esp + 0xf8], ecx
mov ecx, dword [0xc98a20]
lea eax, [eax + eax*8]
lea edi, [ebx + eax*8]
test ecx, ecx
jne 0x6648c2
lea esi, [esp + 0x23c]
call fcn.0045a0ac
lea eax, [0x72ac60]
mov dword [esp], eax
mov ecx, dword [esp + 0xac]
mov dword [esp + 4], ecx
lea edx, [esp + 0x304]
mov dword [esp + 8], edx
call fcn.0040bad0
mov eax, dword [esp + 0xc]
cmp dword [eax], 1
jle 0x66484f
mov ecx, dword [esp + 0xf8]
mov edx, dword [esp + 0xf4]
lea eax, [ecx - 1]
cmp eax, ecx
jae 0x665362
lea eax, [ecx + ecx*8]
lea esi, [edx + eax*8 - 0x48]
lea edi, [esp + 0x3a4]
call fcn.0045a0ac
mov eax, dword [esp + 0xf4]
mov ecx, dword [esp + 0xfc]
mov edx, dword [esp + 0xf8]
lea ebx, [edx + 1]
cmp ebx, ecx
ja 0x664885
lea ecx, [edx + 1]
mov dword [esp + 0xf8], ecx
lea ecx, [edx + edx*8]
lea edi, [eax + ecx*8]
mov eax, dword [0xc98a20]
test eax, eax
jne 0x664866
lea esi, [esp + 0x3a4]
call fcn.0045a0ac
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0xdc]
jmp 0x664263
lea eax, [0x764fe0]
mov dword [esp], eax
mov dword [esp + 4], edi
lea eax, [esp + 0x3a4]
mov dword [esp + 8], eax
call fcn.00410ad0
jmp 0x66484f
lea ebp, [0x764fe0]
mov dword [esp], ebp
mov dword [esp + 4], eax
mov dword [esp + 8], edx
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], ebx
call fcn.00443780
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0xfc], ecx
mov dword [esp + 0xf4], eax
jmp 0x664829
lea eax, [0x764fe0]
mov dword [esp], eax
mov dword [esp + 4], edi
lea eax, [esp + 0x23c]
mov dword [esp + 8], eax
call fcn.00410ad0
jmp 0x6647b4
lea ebp, [0x764fe0]
mov dword [esp], ebp
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], ecx
call fcn.00443780
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0xfc], ecx
mov dword [esp + 0xf4], ebx
jmp 0x66478a
mov ebx, dword [esp + 0xbc]
mov edx, ecx
jmp 0x6644f8
mov eax, dword [esp + 0x74]
mov dword [esp + 0xec], eax
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0xf0], ecx
lea edx, [0x72ac60]
mov dword [esp], edx
mov ebx, dword [esp + 0xd4]
mov dword [esp + 4], ebx
lea ebp, [esp + 0xec]
mov dword [esp + 8], ebp
call fcn.0040c0b0
mov eax, dword [esp + 0xc]
inc dword [eax]
mov eax, dword [esp + 0x74]
mov dword [esp + 0xec], eax
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0xf0], ecx
lea edx, [0x72ac60]
mov dword [esp], edx
mov ebx, dword [esp + 0xd4]
mov dword [esp + 4], ebx
lea ebp, [esp + 0xec]
mov dword [esp + 8], ebp
call fcn.0040bad0
mov eax, dword [esp + 0xc]
cmp dword [eax], 1
je 0x6649d7
mov eax, dword [esp + 0x94]
mov ecx, dword [esp + 0xdc]
mov edx, dword [esp + 0x54]
mov ebx, eax
mov eax, edx
mov edx, ecx
mov ecx, ebx
jmp 0x664263
mov eax, dword [esp + 0x74]
mov ecx, dword [eax + 0x60]
mov edx, dword [esp + 0xc0]
mov dword [esp], edx
call ecx
mov eax, dword [esp + 8]
mov ecx, dword [esp + 4]
mov dword [esp + 0xc8], ecx
lea edi, [esp + 0x35c]
mov edx, eax
xor eax, eax
call fcn.00459c3e
mov ecx, dword [esp + 0xc8]
mov dword [esp + 0x35c], ecx
mov dword [esp + 0x360], edx
mov ecx, dword [esp + 0xcc]
mov dword [esp + 0x388], ecx
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x38c], ecx
mov dword [esp + 0x390], ecx
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x394], ecx
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0x398], ecx
mov ecx, dword [esp + 0x94]
lea edx, [ecx + 1]
mov ebx, dword [esp + 0x54]
cmp edx, ebx
ja 0x664ae3
mov ebp, dword [esp + 0xdc]
lea ecx, [ecx + ecx*8]
lea edi, [ebp + ecx*8]
mov ecx, dword [0xc98a20]
test ecx, ecx
jne 0x664a98
lea esi, [esp + 0x35c]
call fcn.0045a0ac
mov eax, edx
mov ecx, ebp
mov edx, ebx
jmp 0x6649ca
mov dword [esp + 0xb0], ebp
mov dword [esp + 0x8c], edx
mov dword [esp + 0x88], ebx
lea eax, [0x764fe0]
mov dword [esp], eax
mov dword [esp + 4], edi
lea eax, [esp + 0x35c]
mov dword [esp + 8], eax
call fcn.00410ad0
xor eax, eax
mov edx, dword [esp + 0x8c]
mov ebx, dword [esp + 0x88]
mov ebp, dword [esp + 0xb0]
jmp 0x664a8d
lea eax, [0x764fe0]
mov dword [esp], eax
mov ebp, dword [esp + 0xdc]
mov dword [esp + 4], ebp
mov dword [esp + 8], ecx
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], edx
call fcn.00443780
mov ebp, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
lea edx, [eax + 1]
xor eax, eax
mov ecx, dword [esp + 0x94]
jmp 0x664a70
movzx edx, byte [esp + 0x160]
test dl, dl
jne 0x664b3b
mov edx, 1
jmp 0x6644da
mov eax, dword [esp + 0x74]
mov ecx, dword [eax + 0x50]
mov edx, dword [esp + 0xc0]
mov dword [esp], edx
call ecx
cmp dword [esp + 4], 0x19
setne dl
movzx eax, byte [esp + 0x3e]
mov ecx, dword [esp + 0x5c]
jmp 0x6644da
mov eax, dword [esp + 0x74]
mov ecx, dword [eax + 0x50]
mov edx, dword [esp + 0xc0]
mov dword [esp], edx
call ecx
mov eax, dword [esp + 4]
lea ecx, [eax - 1]
cmp ecx, 0xd
ja 0x664b8d
mov eax, 1
jmp 0x6644c5
cmp eax, 0x18
je 0x664b83
xor eax, eax
jmp 0x6644c5
mov eax, dword [esp + 0x74]
mov eax, dword [eax + 0x28]
mov ecx, dword [esp + 0xc0]
mov dword [esp], ecx
call eax
mov ecx, dword [esp + 8]
mov eax, dword [esp + 4]
jmp 0x664482
mov eax, dword [esp + 0x74]
mov ecx, dword [eax + 0x50]
mov edx, dword [esp + 0xc0]
mov dword [esp], edx
call ecx
cmp dword [esp + 4], 0x16
sete al
jmp 0x66446f
mov edx, ebx
jmp 0x664401
xor eax, eax
xor ecx, ecx
jmp 0x6643b6
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x140]
mov dword [esp + 0x40], eax
mov ecx, dword [esp + 0x144]
mov dword [esp + 0xa0], ecx
mov edx, dword [eax + 0x50]
mov dword [esp], ecx
call edx
cmp dword [esp + 4], 0x16
je 0x664c61
mov eax, dword [esp + 0x90]
test eax, eax
mov eax, dword [esp + 0xa0]
mov ecx, dword [esp + 0x40]
jne 0x664c4f
xor eax, eax
test al, al
je 0x66430b
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0xdc]
jmp 0x664263
mov ecx, dword [ecx + 0x50]
mov dword [esp], eax
call ecx
cmp dword [esp + 4], 0x19
setne al
jmp 0x664c30
mov eax, dword [esp + 0x40]
mov eax, dword [eax + 0x28]
mov ecx, dword [esp + 0xa0]
mov dword [esp], ecx
call eax
mov eax, dword [esp + 8]
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0x90]
test edx, edx
jmp 0x664c2c
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0xdc]
jmp 0x664194
mov eax, dword [esp + 0xfc]
mov ecx, dword [esp + 0xf8]
mov edx, dword [esp + 0xf4]
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.00408480
mov eax, dword [esp + 0xc]
mov dword [esp + 0xe4], 0
mov dword [esp + 0xe8], 0
lea ecx, [0x66abd0]
mov dword [esp + 0xe4], ecx
lea ecx, [esp + 0xf4]
mov dword [esp + 0xe8], ecx
lea ecx, [0x70f0a0]
mov dword [esp], ecx
mov dword [esp + 4], eax
lea eax, [esp + 0xe4]
mov dword [esp + 8], eax
call fcn.00491230
mov eax, dword [esp + 0xfc]
mov ecx, dword [esp + 0xf4]
xor edx, edx
xor ebx, ebx
jmp 0x664e45
mov eax, dword [esp + 0x78]
lea esi, [eax + 1]
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0xb8]
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x64]
mov ebx, dword [esp + 0xb8]
mov ebp, dword [esp + 0x98]
mov dword [esp + 0x78], esi
lea ebp, [esi + edx]
mov dword [esp + 0x94], ebp
mov ebx, dword [esp + 0xf8]
mov dword [esp + 0x90], ebx
mov ebx, dword [esp + 0xf4]
mov dword [esp + 0xd0], ebx
mov ebx, dword [esp + 0x90]
cmp ebp, ebx
jge 0x664dee
jae 0x665350
lea ebx, [ebp + ebp*8]
mov ebp, dword [esp + 0xd0]
lea ebx, [ebp + ebx*8]
lea edi, [esp + 0x1ac]
mov esi, ebx
call fcn.0045a0ac
mov ecx, dword [esp + 0x1b0]
mov ebx, dword [esp + 0x1ac]
mov ebp, dword [esp + 0x58]
cmp ecx, ebp
jne 0x664dee
mov dword [esp], ebx
mov eax, dword [esp + 0xb8]
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
call fcn.00402420
movzx eax, byte [esp + 0xc]
test al, al
jne 0x664d2c
mov ebx, dword [esp + 0x78]
cmp ebx, 1
jne 0x664f3d
mov ecx, dword [esp + 0x9c]
lea ebx, [ecx + 1]
mov ebp, dword [esp + 0x48]
cmp ebx, ebp
ja 0x664efd
mov eax, dword [esp + 0xdc]
lea ecx, [ecx + ecx*8]
lea edi, [eax + ecx*8]
mov ecx, dword [0xc98a20]
test ecx, ecx
jne 0x664eb7
lea esi, [esp + 0x284]
call fcn.0045a0ac
mov ecx, dword [esp + 0x94]
mov edx, ecx
mov ecx, eax
mov eax, ebp
mov ebp, dword [esp + 0xf8]
mov esi, ebx
mov ebx, dword [esp + 0xf4]
cmp edx, ebp
jge 0x6650ed
jae 0x665359
mov dword [esp + 0x48], eax
mov dword [esp + 0x9c], esi
mov dword [esp + 0x64], edx
mov dword [esp + 0xdc], ecx
lea ebp, [edx + edx*8]
mov dword [esp + 0x98], ebp
lea ebx, [ebx + ebp*8]
lea edi, [esp + 0x284]
mov esi, ebx
call fcn.0045a0ac
mov ecx, dword [esp + 0x288]
mov dword [esp + 0x58], ecx
mov ebx, dword [esp + 0x284]
mov dword [esp + 0xb8], ebx
mov esi, 1
jmp 0x664d5c
mov dword [esp + 0xa4], eax
mov dword [esp + 0x44], ebx
mov dword [esp + 0x84], ebp
lea eax, [0x764fe0]
mov dword [esp], eax
mov dword [esp + 4], edi
lea eax, [esp + 0x284]
mov dword [esp + 8], eax
call fcn.00410ad0
mov eax, dword [esp + 0xa4]
mov ebx, dword [esp + 0x44]
mov ebp, dword [esp + 0x84]
jmp 0x664e38
lea eax, [0x764fe0]
mov dword [esp], eax
mov edx, dword [esp + 0xdc]
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], ebx
call fcn.00443780
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
lea ebx, [ecx + 1]
mov ecx, dword [esp + 0x9c]
jmp 0x664e18
mov ebp, dword [esp + 0xf4]
mov edx, dword [esp + 0xfc]
mov ecx, dword [esp + 0x94]
cmp ecx, edx
ja 0x66534b
mov eax, dword [esp + 0x64]
cmp eax, ecx
ja 0x665346
lea edi, [esp + 0x164]
mov esi, eax
xor eax, eax
call fcn.00459c3e
mov ecx, dword [esp + 0x98]
shl ecx, 3
sub edx, esi
neg edx
sar edx, 0x1f
and ecx, edx
lea esi, [ebp + ecx]
cmp ebx, 1
jle 0x6650e9
mov edx, ebx
mov ebx, dword [ebp + ecx + 0x78]
cmp dword [esi + 0x30], ebx
jne 0x6650cb
movzx ebx, byte [ebp + ecx + 0x28]
movzx ebp, byte [ebp + ecx + 0x70]
xchg ebp, eax
cmp bl, al
xchg ebp, eax
jne 0x6650cb
lea edi, [esp + 0x164]
lea esi, [0x805340]
call fcn.0045a0ac
xor ecx, ecx
mov byte [esp + 0x3f], cl
lea edi, [esp + 0x314]
lea esi, [esp + 0x164]
call fcn.0045a0ac
movzx ecx, byte [esp + 0x3f]
test cl, cl
je 0x6650b4
mov ecx, dword [esp + 0x9c]
lea ebx, [ecx + 1]
mov ebp, dword [esp + 0x48]
cmp ebx, ebp
ja 0x665072
mov edx, dword [esp + 0xdc]
lea ecx, [ecx + ecx*8]
lea edi, [edx + ecx*8]
mov ecx, dword [0xc98a20]
test ecx, ecx
jne 0x66502d
lea esi, [esp + 0x314]
call fcn.0045a0ac
mov eax, edx
jmp 0x664e38
mov dword [esp + 0xc4], edx
mov dword [esp + 0x80], ebx
mov dword [esp + 0x7c], ebp
lea eax, [0x764fe0]
mov dword [esp], eax
mov dword [esp + 4], edi
lea eax, [esp + 0x314]
mov dword [esp + 8], eax
call fcn.00410ad0
xor eax, eax
mov edx, dword [esp + 0xc4]
mov ebx, dword [esp + 0x80]
mov ebp, dword [esp + 0x7c]
jmp 0x665026
lea eax, [0x764fe0]
mov dword [esp], eax
mov edx, dword [esp + 0xdc]
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], ebx
call fcn.00443780
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
lea ebx, [eax + 1]
xor eax, eax
mov ecx, dword [esp + 0x9c]
jmp 0x66500a
mov edx, dword [esp + 0xdc]
mov ebp, dword [esp + 0x48]
mov ebx, dword [esp + 0x9c]
jmp 0x665026
test edx, edx
jbe 0x66533d
lea edi, [esp + 0x164]
call fcn.0045a0ac
mov ecx, 1
jmp 0x664fcd
mov edx, ebx
jmp 0x6650cb
mov dword [esp + 0xf4], ecx
mov dword [esp + 0xf8], esi
mov dword [esp + 0xfc], eax
mov dword [esp], ecx
mov dword [esp + 4], esi
mov dword [esp + 8], eax
call fcn.00408480
mov eax, dword [esp + 0xc]
lea ecx, [0x8028b0]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00491d90
mov eax, dword [esp + 0xf8]
mov dword [esp + 0x9c], eax
mov ecx, dword [esp + 0x51c]
mov edx, dword [esp + 0x520]
xor ebx, ebx
jmp 0x66516a
mov ebp, dword [esp + 0x70]
lea ebx, [ebp + 1]
mov ebp, dword [esp + 0x9c]
mov esi, dword [esp + 0x51c]
mov edi, dword [esp + 0x520]
mov eax, ebp
mov ecx, esi
mov edx, edi
cmp ebx, eax
jge 0x665229
mov ebp, dword [esp + 0xf8]
mov esi, dword [esp + 0xf4]
cmp ebx, ebp
jae 0x665334
mov dword [esp + 0x70], ebx
mov dword [esp + 0xd0], esi
lea eax, [ebx + ebx*8]
mov dword [esp + 0x98], eax
shl eax, 3
mov dword [esp + 0x94], eax
mov edi, dword [esi + eax + 0x34]
mov ebx, dword [esi + eax + 0x30]
mov eax, dword [esi + eax + 0x2c]
mov dword [esp], ecx
mov dword [esp + 4], edx
mov dword [esp + 8], eax
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], edi
call fcn.00663140
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0xec], ecx
mov dword [esp + 0xf0], eax
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.0065f8e0
mov eax, dword [esp + 0x98]
mov ecx, dword [esp + 0xd0]
lea edi, [ecx + eax*8 + 0x44]
mov eax, dword [0xc98a20]
mov edx, dword [esp + 8]
test eax, eax
jne 0x66521d
mov ebx, dword [esp + 0x94]
mov dword [ecx + ebx + 0x44], edx
jmp 0x665148
mov eax, edx
call fcn.004599b0
jmp 0x665148
mov eax, dword [esp + 0xf8]
lea ecx, [0x72b4a0]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 0
call fcn.0040b750
mov eax, dword [esp + 0xc]
mov dword [esp + 0xb4], eax
mov ecx, dword [esp + 0xf8]
mov edx, dword [esp + 0xf4]
test ecx, ecx
jle 0x6652f5
mov dword [esp + 0x9c], ecx
xor ebx, ebx
jmp 0x665289
mov ebp, dword [esp + 0xd0]
lea edx, [ebp + 0x48]
mov ebx, eax
mov eax, dword [esp + 0xb4]
mov dword [esp + 0xd0], edx
mov dword [esp + 0x68], ebx
lea edi, [esp + 0x47c]
mov esi, edx
call fcn.0045a0ac
lea edi, [esp + 0x1f4]
lea esi, [esp + 0x47c]
call fcn.0045a0ac
lea ecx, [0x72b4a0]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov ebp, dword [esp + 0x1f8]
mov eax, dword [esp + 0x1f4]
mov dword [esp + 8], eax
mov dword [esp + 0xc], ebp
call fcn.00410020
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x68]
mov dword [eax], ecx
lea eax, [ecx + 1]
mov ecx, dword [esp + 0x9c]
cmp eax, ecx
jl 0x665276
mov eax, dword [esp + 0xf4]
mov ecx, dword [esp + 0xfc]
mov edx, dword [esp + 0xf8]
mov dword [esp + 0x524], eax
mov dword [esp + 0x528], edx
mov dword [esp + 0x52c], ecx
mov eax, dword [esp + 0xb4]
mov dword [esp + 0x530], eax
add esp, 0x518
ret
mov eax, ebx
mov ecx, ebp
call fcn.00459a30
xor eax, eax
mov ecx, edx
call fcn.00459a30
call fcn.00459a90
call fcn.00459a70
mov eax, ebp
mov ecx, ebx
call fcn.00459a30
mov eax, edx
mov ecx, ebp
call fcn.00459a30
call fcn.00459a30
mov eax, ebx
call fcn.00459a90
call fcn.00459a30
nop
call fcn.00458170
jmp fcn.00664010