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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
lea eax, [esp - 0x60]
cmp eax, dword [ecx + 8]
jbe 0x640db6
sub esp, 0xe0
mov eax, 0
mov dword [esp + 0xdc], eax
mov byte [esp + 0x37], 0
mov byte [esp + 0xec], 0
mov eax, dword [esp + 0xe4]
movzx ecx, byte [eax + 0x68]
test cl, cl
jne 0x64087c
mov dword [esp], eax
call fcn.00469e60
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], 0
lea eax, [0x640e00]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0xe4]
mov dword [esp + 0x58], eax
lea ecx, [esp + 0x54]
mov dword [esp + 0xdc], ecx
mov byte [esp + 0x37], 1
mov byte [eax + 8], 0
mov ecx, dword [esp + 0xe8]
test ecx, ecx
je 0x64085d
lea edi, [esp + 0x70]
mov edx, eax
xor eax, eax
call fcn.0046331b
mov ecx, dword [edx + 0x78]
test ecx, ecx
seta cl
mov ebx, dword [edx + 0x7c]
test ebx, ebx
setg bl
xchg ebp, ebx
sete bl
xchg ebp, ebx
and ecx, ebp
or ebx, ecx
test bl, bl
je 0x640810
call fcn.004b1750
lea edi, [esp + 0x98]
lea esi, [esp]
call fcn.004637fe
mov eax, dword [esp + 0xe4]
mov ecx, dword [eax + 0x78]
mov dword [esp + 0x44], ecx
xor edx, edx
sub edx, ecx
mov ebx, dword [eax + 0x7c]
lea edi, [esp]
lea esi, [esp + 0x98]
call fcn.004637fe
xor ecx, ecx
mov ebp, dword [esp + 0x44]
sub ecx, ebp
mov ecx, 0
sbb ecx, ebx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], edx
call fcn.004b0b30
lea edi, [esp + 0x70]
lea esi, [esp + 0x1c]
call fcn.004637fe
mov edx, dword [esp + 0xe4]
mov eax, dword [edx + 0xc]
lea ecx, [0x68fc60]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 0xe8]
lea ebx, [eax + 0x18]
mov dword [esp + 0x50], ebx
mov dword [esp + 8], ebx
call fcn.0040c880
mov eax, dword [esp + 0xc]
mov ecx, dword [eax]
movzx edx, byte [esp + 0x10]
mov ebx, dword [eax + 4]
mov eax, dword [eax + 8]
test dl, dl
je 0x64088b
mov dword [esp + 0x3c], eax
mov dword [esp + 0x4c], ecx
xor edx, edx
xor ebp, ebp
jmp 0x640a18
mov byte [esp + 0xec], 0
mov byte [esp + 0x37], 0
mov edx, dword [esp + 0xdc]
mov eax, dword [edx]
call eax
add esp, 0xe0
ret
mov byte [esp + 0xec], 0
add esp, 0xe0
ret
mov eax, dword [esp + 0xe4]
mov ecx, dword [eax + 0x10]
test ecx, ecx
jne 0x6408ca
call fcn.0040c2e0
mov eax, dword [0x8e84e0]
mov ecx, dword [esp]
test eax, eax
jne 0x6408b7
mov eax, dword [esp + 0xe4]
mov dword [eax + 0x10], ecx
jmp 0x6408ca
mov edx, dword [esp + 0xe4]
lea edi, [edx + 0x10]
mov eax, ecx
call fcn.00463080
mov eax, edx
mov ecx, dword [eax + 0x10]
lea edx, [0x68fce0]
mov dword [esp], edx
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 8], ecx
call fcn.0040c6b0
mov esi, dword [esp + 0xc]
lea edi, [esp + 0xc0]
call fcn.004637ea
lea eax, [esp + 0xc0]
mov dword [esp], eax
call fcn.00641900
nop
mov eax, dword [esp + 0xd4]
lea ecx, [eax + 1]
mov edx, dword [esp + 0xd0]
mov ebx, dword [esp + 0xd8]
cmp ebx, ecx
jae 0x64095b
lea ebp, [0x6a4480]
mov dword [esp], ebp
mov dword [esp + 4], edx
mov dword [esp + 8], eax
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], ecx
call fcn.0044b870
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0xd8], ecx
mov dword [esp + 0xd0], edx
lea ecx, [eax + 1]
mov dword [esp + 0xd4], ecx
mov ecx, dword [0x8e84e0]
lea edi, [edx + eax*4]
test ecx, ecx
jne 0x64097e
mov ecx, dword [esp + 0xe8]
mov dword [edx + eax*4], ecx
jmp 0x64098a
mov eax, dword [esp + 0xe8]
call fcn.00463080
mov eax, dword [esp + 0xe4]
mov eax, dword [eax + 0x10]
lea ecx, [0x68fce0]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 8], eax
call fcn.0040cc00
mov edi, dword [esp + 0xc]
test byte [edi], al
mov eax, dword [0x8e84e0]
test eax, eax
jne 0x6409cc
lea esi, [esp + 0xc0]
call fcn.004637ea
jmp 0x6409e9
lea eax, [0x6a6400]
mov dword [esp], eax
mov dword [esp + 4], edi
lea eax, [esp + 0xc0]
mov dword [esp + 8], eax
call fcn.00410e50
mov byte [esp + 0xec], 0
mov byte [esp + 0x37], 0
mov edx, dword [esp + 0xdc]
mov eax, dword [edx]
call eax
add esp, 0xe0
ret
mov ebx, dword [esp + 0x4c]
mov ebx, ecx
mov ebp, eax
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x4c]
xchg ebp, eax
mov byte [esp + 0x35], al
xchg ebp, eax
mov byte [esp + 0x34], dl
test ebx, ebx
je 0x640d56
mov dword [esp + 0x38], ebx
test dl, dl
jne 0x640cff
mov eax, dword [ecx + ebx*4 - 4]
lea edi, [esp + 0x5c]
lea esi, [esp + 0x70]
call fcn.004637fe
mov ecx, dword [esp + 0x5c]
mov esi, edx
mov edx, dword [esp + 0x60]
test edx, 0x80000000
je 0x640a92
shl edx, 1
mov edi, ecx
shr ecx, 0x1f
or edx, ecx
mov dword [esp + 0x44], edx
mov ecx, edi
shl edi, 1
shl edx, 1
shr edi, 0x1f
or edi, edx
mov edx, edi
add edi, 0xd7b17f80
mov ebp, dword [esp + 0x44]
shr ebp, 0x1f
add edx, 0xd7b17f80
adc ebp, 0xd
mov edx, ebp
movzx ebp, byte [esp + 0x35]
jmp 0x640a9a
mov edi, dword [esp + 0x64]
mov edx, dword [esp + 0x68]
mov dword [esp + 0x48], eax
test edx, edx
sete dl
test edi, edi
mov edi, ebp
xchg ebp, ebx
sete bl
xchg ebp, ebx
and edx, ebp
test dl, dl
je 0x640ac0
test ecx, 0x3fffffff
jne 0x640ac0
xor ecx, ecx
jmp 0x640b3f
test byte [eax], al
lea esi, [eax + 0x64]
lea edi, [esp + 0x84]
call fcn.004637fe
lea edi, [esp]
lea esi, [esp + 0x84]
call fcn.004637fe
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
call fcn.004b2f20
lea edi, [esp + 0xac]
lea esi, [esp + 0x1c]
call fcn.004637fe
lea edi, [esp]
lea esi, [esp + 0xac]
call fcn.004637fe
lea edi, [esp + 0x14]
lea esi, [esp + 0x70]
call fcn.004637fe
call fcn.004af7f0
movzx eax, byte [esp + 0x28]
mov ebx, dword [esp + 0x38]
movzx esi, byte [esp + 0x34]
movzx edi, byte [esp + 0x35]
mov ecx, eax
mov eax, dword [esp + 0x48]
mov byte [esp + 0x33], cl
test cl, cl
je 0x640b90
lea eax, [0x697140]
mov dword [esp], eax
call fcn.0040b800
mov eax, dword [esp + 4]
lea ecx, [0x640dc0]
mov dword [eax], ecx
mov edx, dword [0x8e84e0]
test edx, edx
jne 0x640b74
mov edx, dword [esp + 0x48]
mov dword [eax + 4], edx
jmp 0x640b84
lea edi, [eax + 4]
mov edx, eax
mov eax, dword [esp + 0x48]
call fcn.00463080
mov eax, edx
mov dword [esp], eax
call fcn.004424f0
mov eax, dword [esp + 0x48]
mov dword [esp], eax
call fcn.00645dd0
mov eax, dword [esp + 0x38]
lea ecx, [eax - 1]
movzx edx, byte [esp + 4]
test dl, dl
jne 0x640bb1
movzx edx, byte [esp + 0x33]
test dl, dl
je 0x640bc0
movzx edx, byte [esp + 0x34]
movzx eax, byte [esp + 0x35]
jmp 0x640a08
mov dword [esp + 0x40], ecx
mov eax, dword [esp + 0xe8]
mov dword [esp], eax
mov ecx, dword [esp + 0x48]
mov dword [esp + 4], ecx
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
call fcn.006416a0
movzx eax, byte [esp + 0x10]
test al, al
je 0x640cf1
mov ecx, dword [esp + 0x48]
mov edx, dword [ecx]
test edx, edx
je 0x640c0b
mov ecx, dword [esp + 0x38]
jmp 0x640cf5
mov byte [esp + 0x36], al
nop
mov eax, dword [esp + 0xe4]
mov edx, dword [eax + 0x18]
lea ebp, [0x68f7e0]
mov dword [esp], ebp
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
call fcn.0040e400
mov eax, dword [esp + 0xc]
mov eax, dword [eax]
movzx ecx, byte [esp + 0x10]
test cl, cl
je 0x640ce6
mov ecx, dword [esp + 0xe4]
mov edx, dword [ecx + 0x14]
cmp dword [eax + 8], edx
jne 0x640cc9
mov edi, dword [eax + 4]
test byte [edi], al
nop
mov ebx, dword [0x8e84e0]
mov ebp, dword [eax]
test ebx, ebx
jne 0x640c68
mov dword [edi], ebp
jmp 0x640c73
mov ebx, eax
mov eax, ebp
call fcn.00463080
mov eax, ebx
mov ebx, dword [eax]
test byte [ebx], al
mov ebp, dword [0x8e84e0]
mov esi, dword [eax + 4]
test ebp, ebp
jne 0x640c9d
mov dword [ebx + 4], esi
mov dword [eax], 0
mov dword [eax + 4], 0
mov dword [eax + 8], 0
jmp 0x640cc6
lea edi, [ebx + 4]
mov ebx, eax
mov eax, esi
call fcn.00463080
mov edi, ebx
xor eax, eax
call fcn.00463080
lea ebp, [ebx + 4]
mov edi, ebp
call fcn.00463080
lea edi, [ebx + 8]
xor eax, eax
call fcn.00463080
dec dword [edx + 0x14]
mov eax, dword [esp + 0x48]
mov edx, dword [ecx + 0x18]
lea ebx, [0x68f7e0]
mov dword [esp], ebx
mov dword [esp + 4], edx
mov dword [esp + 8], eax
call fcn.0040eb50
movzx eax, byte [esp + 0x36]
mov ecx, dword [esp + 0x40]
jmp 0x640cf5
mov ecx, dword [esp + 0x38]
mov edx, 1
jmp 0x640a08
test ebx, ebx
je 0x640d56
mov eax, dword [esp + 0xe4]
mov ecx, dword [eax + 0xc]
lea edx, [0x68fc60]
mov dword [esp], edx
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 8], ecx
call fcn.0040cc00
mov edi, dword [esp + 0xc]
mov eax, dword [esp + 0x38]
mov dword [edi + 4], eax
mov eax, dword [esp + 0x3c]
mov dword [edi + 8], eax
mov eax, dword [0x8e84e0]
test eax, eax
jne 0x640d4b
mov eax, dword [esp + 0x4c]
mov dword [edi], eax
jmp 0x640d7a
mov eax, dword [esp + 0x4c]
call fcn.00463080
jmp 0x640d7a
mov eax, dword [esp + 0xe4]
mov ecx, dword [eax + 0xc]
lea edx, [0x68fc60]
mov dword [esp], edx
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 8], ecx
call fcn.0040d0f0
movzx eax, byte [esp + 0x34]
test al, al
je 0x64088b
movzx eax, byte [esp + 0x35]
mov byte [esp + 0xec], al
mov byte [esp + 0x37], 0
mov edx, dword [esp + 0xdc]
mov eax, dword [edx]
call eax
add esp, 0xe0
ret
call fcn.00461c70
jmp fcn.006406e0