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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x647678
sub esp, 0x7c
mov eax, dword [esp + 0x88]
mov dword [esp], eax
mov ecx, dword [esp + 0x8c]
mov dword [esp + 4], ecx
mov edx, dword [esp + 0x90]
mov dword [esp + 8], edx
call fcn.00645e40
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0xc]
test eax, eax
je 0x6472c5
mov ebx, dword [esp + 0x80]
test ebx, ebx
je 0x646bcc
mov edx, dword [esp + 0x90]
cmp edx, eax
jb 0x647670
mov dword [esp + 0x44], ecx
mov dword [esp + 0x38], eax
lea eax, [0x695e20]
mov dword [esp], eax
call fcn.0040be50
mov eax, dword [esp + 4]
mov dword [esp + 0x78], eax
mov ecx, dword [esp + 0x44]
mov dword [esp], ecx
call fcn.00409720
mov eax, dword [esp + 4]
lea ecx, [0x69be00]
mov edx, dword [esp + 0x78]
mov dword [edx], ecx
mov ebx, dword [0x1eaa9f0]
test ebx, ebx
jne 0x646b65
mov dword [edx + 4], eax
jmp 0x646b6d
lea edi, [edx + 4]
call fcn.00465d80
mov eax, dword [esp + 0x80]
mov ecx, dword [eax]
mov ebx, dword [esp + 0x88]
mov dword [esp], ebx
mov ebp, dword [esp + 0x38]
mov dword [esp + 4], ebp
mov esi, dword [esp + 0x90]
mov dword [esp + 8], esi
lea edi, [0x6f98ee]
mov dword [esp + 0xc], edi
mov dword [esp + 0x10], 0x1a
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], 1
mov dword [esp + 0x1c], 1
mov edx, eax
call ecx
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x44]
mov ebx, dword [esp + 0x80]
mov edx, dword [esp + 0x8c]
cmp edx, eax
jb 0x647669
sub edx, eax
mov dword [esp + 0x60], edx
mov ebx, edx
sar edx, 0x1f
mov ebp, ebx
sub ebx, ecx
mov dword [esp + 0x48], ebx
sbb edx, 0
mov dword [esp + 0x4c], edx
mov ecx, dword [esp + 0x90]
sub ecx, eax
mov dword [esp + 0x5c], ecx
mov esi, ecx
neg ecx
sar ecx, 0x1f
and ecx, eax
mov eax, dword [esp + 0x88]
add eax, ecx
mov dword [esp + 0x74], eax
mov dword [esp], eax
mov dword [esp + 4], ebp
mov dword [esp + 8], esi
call fcn.00645e40
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0xc]
test eax, eax
je 0x647286
cmp ecx, 2
jae 0x647247
mov ebx, dword [esp + 0x80]
test ebx, ebx
je 0x646d4f
mov edx, dword [esp + 0x5c]
cmp eax, edx
ja 0x647662
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x38], eax
lea eax, [0x696560]
mov dword [esp], eax
call fcn.0040be50
mov eax, dword [esp + 4]
mov dword [esp + 0x70], eax
mov ecx, dword [esp + 0x3c]
mov dword [esp], ecx
call fcn.00409720
mov eax, dword [esp + 4]
lea ecx, [0x69be00]
mov edx, dword [esp + 0x70]
mov dword [edx], ecx
mov ecx, dword [0x1eaa9f0]
test ecx, ecx
jne 0x646ca5
mov dword [edx + 4], eax
jmp 0x646cad
lea edi, [edx + 4]
call fcn.00465d80
mov eax, dword [esp + 0x3c]
lea ecx, [0x1e71800]
lea edx, [ecx + eax*8 + 4]
mov edx, dword [edx]
lea ecx, [ecx + eax*8]
mov ecx, dword [ecx]
mov dword [esp], ecx
mov dword [esp + 4], edx
call fcn.00409830
mov eax, dword [esp + 8]
lea ecx, [0x69bcc0]
mov edx, dword [esp + 0x70]
mov dword [edx + 8], ecx
mov ecx, dword [0x1eaa9f0]
test ecx, ecx
jne 0x646cee
mov dword [edx + 0xc], eax
jmp 0x646cf6
lea edi, [edx + 0xc]
call fcn.00465d80
mov eax, dword [esp + 0x80]
mov ecx, dword [eax]
mov ebx, dword [esp + 0x74]
mov dword [esp], ebx
mov ebp, dword [esp + 0x38]
mov dword [esp + 4], ebp
mov esi, dword [esp + 0x5c]
mov dword [esp + 8], esi
lea edi, [0x6fb17a]
mov dword [esp + 0xc], edi
mov dword [esp + 0x10], 0x1d
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], 2
mov dword [esp + 0x1c], 2
mov edx, eax
call ecx
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x3c]
mov ebx, dword [esp + 0x80]
mov ebp, dword [esp + 0x60]
cmp eax, ebp
ja 0x64765b
sub ebp, eax
mov esi, dword [esp + 0x5c]
sub esi, eax
mov edi, esi
xchg esi, ebx
neg ebx
xchg esi, ebx
sar esi, 0x1f
and esi, eax
mov eax, dword [esp + 0x74]
mov edx, edi
lea edi, [eax + esi]
test ecx, ecx
je 0x646f1a
test ebp, ebp
je 0x646edb
movzx eax, byte [eax + esi]
mov ecx, eax
shr al, 6
test al, al
jne 0x646d9e
lea esi, [0x733520]
jmp 0x646dbe
cmp al, 1
jne 0x646dab
lea esi, [0x733524]
jmp 0x646dbe
cmp al, 2
jne 0x646db8
lea esi, [0x733528]
jmp 0x646dbe
lea esi, [0x733530]
mov dword [esp + 0x64], esi
and ecx, 0x3f
inc ecx
mov dword [esp + 0x40], ecx
test ebx, ebx
je 0x646ec4
mov dword [esp + 0x60], ebp
mov dword [esp + 0x5c], edx
mov dword [esp + 0x74], edi
mov byte [esp + 0x33], al
lea eax, [0x696560]
mov dword [esp], eax
call fcn.0040be50
mov eax, dword [esp + 4]
mov dword [esp + 0x6c], eax
mov ecx, dword [esp + 0x40]
mov dword [esp], ecx
call fcn.00409720
mov eax, dword [esp + 4]
lea ecx, [0x69b600]
mov edx, dword [esp + 0x6c]
mov dword [edx], ecx
mov ecx, dword [0x1eaa9f0]
test ecx, ecx
jne 0x646e23
mov dword [edx + 4], eax
jmp 0x646e2b
lea edi, [edx + 4]
call fcn.00465d80
lea ecx, [0x69be80]
mov dword [edx + 8], ecx
mov ebx, dword [0x1eaa9f0]
movzx ebp, byte [esp + 0x33]
inc ebp
xchg ebp, eax
movzx eax, al
xchg ebp, eax
lea esi, [0x934160]
lea eax, [esi + ebp*8]
test ebx, ebx
jne 0x646e57
mov dword [edx + 0xc], eax
jmp 0x646e5f
lea edi, [edx + 0xc]
call fcn.00465d80
mov eax, dword [esp + 0x80]
mov ecx, dword [eax]
mov ebx, dword [esp + 0x74]
mov dword [esp], ebx
mov dword [esp + 4], 1
mov ebp, dword [esp + 0x5c]
mov dword [esp + 8], ebp
lea esi, [0x6ffd2f]
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], 0x2a
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], 2
mov dword [esp + 0x1c], 2
mov edx, eax
call ecx
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x5c]
mov ebx, dword [esp + 0x80]
mov ebp, dword [esp + 0x60]
mov esi, dword [esp + 0x64]
mov edi, dword [esp + 0x74]
lea eax, [edx - 1]
mov edx, eax
neg eax
sar eax, 0x1f
and eax, 1
add eax, edi
dec ebp
xor edi, edi
jmp 0x6473a6
mov eax, dword [0x1e84a20]
mov ecx, dword [0x1e84a24]
mov dword [esp + 0x98], 0
mov dword [esp + 0x9c], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa8], ecx
add esp, 0x7c
ret
mov dword [esp], ebx
mov dword [esp + 4], edi
mov dword [esp + 8], ebp
mov dword [esp + 0xc], edx
lea eax, [0x733534]
mov dword [esp + 0x10], eax
call fcn.0064a560
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 0x24]
mov esi, dword [esp + 0x84]
mov dword [esi], eax
test ebp, ebp
jne 0x647208
mov eax, dword [esp + 0x80]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
mov dword [esp + 0xc], ebx
lea ecx, [0x733534]
mov dword [esp + 0x10], ecx
call fcn.0064a560
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 0x24]
mov esi, dword [esp + 0x84]
mov dword [esi + 4], eax
test ebp, ebp
jne 0x6471c9
mov eax, dword [esp + 0x80]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
mov dword [esp + 0xc], ebx
lea ecx, [0x733534]
mov dword [esp + 0x10], ecx
call fcn.0064a560
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 0x24]
mov esi, dword [esp + 0x84]
mov dword [esi + 8], eax
test ebp, ebp
jne 0x64718a
mov eax, dword [esp + 0x80]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
mov dword [esp + 0xc], ebx
lea eax, [0x733534]
mov dword [esp + 0x10], eax
call fcn.0064a560
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x20]
mov esi, dword [esp + 0x84]
mov dword [esi + 0xc], eax
test ecx, ecx
jne 0x64714b
mov dword [esp + 0x60], ebp
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x74], edx
mov eax, dword [esi]
mov ecx, dword [esi + 8]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.0044e590
movzx eax, byte [esp + 8]
test al, al
je 0x647072
mov eax, dword [esp + 0x84]
mov ecx, 1
jmp 0x6470ba
mov eax, dword [esp + 0x84]
mov ecx, dword [eax + 4]
mov edx, dword [eax + 0xc]
mov dword [esp], ecx
mov dword [esp + 4], edx
call fcn.0044e590
movzx eax, byte [esp + 8]
test al, al
je 0x6470a2
mov eax, dword [esp + 0x84]
mov ecx, 1
jmp 0x6470ba
mov eax, dword [esp + 0x84]
mov ecx, dword [eax]
and ecx, 0x7f800000
cmp ecx, 0x7f800000
sete cl
test cl, cl
jne 0x6470cf
mov ecx, dword [eax + 4]
and ecx, 0x7f800000
cmp ecx, 0x7f800000
jne 0x6470d6
mov ecx, 1
jmp 0x6470e8
mov ecx, dword [eax + 8]
and ecx, 0x7f800000
cmp ecx, 0x7f800000
sete cl
test cl, cl
jne 0x6470fb
mov eax, dword [eax + 0xc]
and eax, 0x7f800000
cmp eax, 0x7f800000
jne 0x64713a
mov eax, dword [0x1e84a28]
mov ecx, dword [0x1e84a2c]
mov dword [esp + 0x98], 0
mov dword [esp + 0x9c], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa8], ecx
add esp, 0x7c
ret
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x74]
jmp 0x647304
mov eax, dword [0x1e84a28]
mov ecx, dword [0x1e84a2c]
mov dword [esp + 0x98], 0
mov dword [esp + 0x9c], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa8], ecx
add esp, 0x7c
ret
mov eax, dword [0x1e84a28]
mov ecx, dword [0x1e84a2c]
mov dword [esp + 0x98], 0
mov dword [esp + 0x9c], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa8], ecx
add esp, 0x7c
ret
mov eax, dword [0x1e84a28]
mov ecx, dword [0x1e84a2c]
mov dword [esp + 0x98], 0
mov dword [esp + 0x9c], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa8], ecx
add esp, 0x7c
ret
mov eax, dword [0x1e84a28]
mov ecx, dword [0x1e84a2c]
mov dword [esp + 0x98], 0
mov dword [esp + 0x9c], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa8], ecx
add esp, 0x7c
ret
mov eax, dword [0x1e84a48]
mov ecx, dword [0x1e84a4c]
mov dword [esp + 0x98], 0
mov dword [esp + 0x9c], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa8], ecx
add esp, 0x7c
ret
mov eax, dword [0x1e84a00]
mov ecx, dword [0x1e84a04]
mov dword [esp + 0x98], 0
mov dword [esp + 0x9c], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa8], ecx
add esp, 0x7c
ret
mov eax, dword [0x1e849f8]
mov ecx, dword [0x1e849fc]
mov dword [esp + 0x98], 0
mov dword [esp + 0x9c], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa8], ecx
add esp, 0x7c
ret
mov ebx, dword [esp + 0x48]
cmp ebx, eax
setne bl
mov ebp, eax
sar eax, 0x1f
mov esi, dword [esp + 0x4c]
cmp eax, esi
setne al
or eax, ebx
test al, al
je 0x647360
mov eax, dword [0x1e849d8]
mov ecx, dword [0x1e849dc]
mov dword [esp + 0x98], 0
mov dword [esp + 0x9c], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa8], ecx
add esp, 0x7c
ret
mov dword [esp + 0x98], edx
mov dword [esp + 0x9c], ebp
mov dword [esp + 0xa0], ecx
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa8], 0
add esp, 0x7c
ret
inc edi
mov ecx, dword [esp + 0x40]
mov ebx, edx
mov esi, dword [esp + 0x64]
mov edx, dword [esp + 0x60]
mov ebp, dword [esp + 0x5c]
mov eax, dword [esp + 0x74]
cmp edi, ecx
jge 0x647636
mov dword [esp + 0x58], edx
mov dword [esp + 0x54], ebp
mov dword [esp + 0x68], eax
mov dword [esp + 0x50], edi
mov ecx, dword [esi]
mov dword [esp], eax
mov dword [esp + 4], ebp
mov dword [esp + 8], edx
mov edx, esi
call ecx
mov eax, dword [esp + 0x14]
movzx ecx, byte [esp + 0xc]
movzx ebx, byte [esp + 0x10]
movzx ebp, byte [esp + 0xd]
movzx esi, byte [esp + 0xe]
movzx edi, byte [esp + 0xf]
test eax, eax
je 0x6475f7
test cl, cl
je 0x647403
mov ebx, dword [esp + 0x80]
test ebx, ebx
jmp 0x647448
xchg ebp, eax
cmp bl, al
xchg ebp, eax
jb 0x64743f
xchg esi, eax
cmp bl, al
xchg esi, eax
jb 0x647434
xchg edi, eax
cmp al, bl
xchg edi, eax
ja 0x647429
mov ecx, dword [esp + 0x80]
test ecx, ecx
mov ecx, ebx
mov ebx, dword [esp + 0x80]
jmp 0x64745c
mov ebx, dword [esp + 0x80]
test ebx, ebx
jmp 0x647448
mov ebx, dword [esp + 0x80]
test ebx, ebx
jmp 0x647448
mov ebx, dword [esp + 0x80]
test ebx, ebx
mov ecx, 0xffffffff
mov edi, 0
mov ebp, 0
mov esi, 0
xchg edi, eax
mov byte [esp + 0x31], al
xchg edi, eax
je 0x64755a
mov edx, dword [esp + 0x58]
cmp edx, eax
jb 0x647654
mov dword [esp + 0x34], eax
mov byte [esp + 0x32], cl
xchg ebp, eax
mov byte [esp + 0x2f], al
xchg ebp, eax
xchg esi, eax
mov byte [esp + 0x30], al
xchg esi, eax
lea eax, [0x696da0]
mov dword [esp], eax
call fcn.0040be50
mov eax, dword [esp + 4]
lea ecx, [0x69be80]
mov dword [eax], ecx
movzx edx, byte [esp + 0x2f]
movzx ebx, dl
lea ebp, [0x934160]
lea ebx, [ebp + ebx*8]
mov dword [eax + 4], ebx
mov dword [eax + 8], ecx
movzx ebx, byte [esp + 0x30]
movzx esi, bl
lea esi, [ebp + esi*8]
mov dword [eax + 0xc], esi
mov dword [eax + 0x10], ecx
movzx esi, byte [esp + 0x31]
xchg esi, eax
movzx edi, al
xchg esi, eax
lea edi, [ebp + edi*8]
mov dword [eax + 0x14], edi
mov dword [eax + 0x18], ecx
movzx edi, byte [esp + 0x32]
xchg edi, eax
movzx ecx, al
xchg edi, eax
lea ecx, [ebp + ecx*8]
mov dword [eax + 0x1c], ecx
mov ecx, dword [esp + 0x80]
mov ebp, dword [ecx]
mov edi, dword [esp + 0x68]
mov dword [esp], edi
mov esi, dword [esp + 0x34]
mov dword [esp + 4], esi
mov ebx, dword [esp + 0x58]
mov dword [esp + 8], ebx
lea edx, [0x6f96e6]
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], 0x1a
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 4
mov dword [esp + 0x1c], 4
mov edx, ecx
call ebp
mov eax, dword [esp + 0x34]
movzx ecx, byte [esp + 0x32]
mov ebx, dword [esp + 0x80]
movzx ebp, byte [esp + 0x2f]
movzx esi, byte [esp + 0x30]
movzx edi, byte [esp + 0x31]
mov edx, ebx
mov ebx, dword [esp + 0x54]
cmp ebx, eax
jb 0x64764d
mov edi, dword [esp + 0x58]
sub edi, eax
mov dword [esp + 0x60], edi
sub ebx, eax
mov dword [esp + 0x5c], ebx
xchg edi, ebx
neg ebx
xchg edi, ebx
sar edi, 0x1f
and eax, edi
mov edi, dword [esp + 0x68]
add edi, eax
mov dword [esp + 0x74], edi
mov eax, ebx
mov ebx, dword [esp + 0x94]
test ebx, ebx
je 0x6475b7
mov ebx, dword [ebx]
test ebx, ebx
je 0x6475b0
mov ebx, dword [esp + 0x84]
mov edi, dword [esp + 0x50]
jmp 0x64738f
mov ebx, dword [esp + 0x94]
mov ebx, dword [esp + 0x84]
test byte [ebx], al
mov edi, dword [esp + 0x50]
cmp edi, 0x40
jae 0x647641
lea eax, [ebx + edi*4 + 0x10]
xchg ebp, ebx
mov byte [eax], bl
xchg ebp, ebx
lea eax, [ebx + edi*4 + 0x11]
xchg esi, ebx
mov byte [eax], bl
xchg esi, ebx
lea eax, [ebx + edi*4 + 0x12]
movzx ebp, byte [esp + 0x31]
xchg ebp, ebx
mov byte [eax], bl
xchg ebp, ebx
lea eax, [ebx + edi*4 + 0x13]
mov byte [eax], cl
jmp 0x64738f
mov eax, dword [0x1e84a20]
mov ecx, dword [0x1e84a24]
mov dword [esp + 0x98], 0
mov dword [esp + 0x9c], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa8], ecx
add esp, 0x7c
ret
mov ecx, edx
mov edx, eax
mov eax, ebp
jmp 0x647304
mov eax, edi
mov ecx, 0x40
call fcn.00465e00
mov ecx, ebx
call fcn.00465e60
mov ecx, eax
call fcn.00465e40
mov ecx, ebp
call fcn.00465e60
mov ecx, eax
call fcn.00465e40
mov ecx, edx
call fcn.00465e60
mov ecx, eax
call fcn.00465e40
nop
call fcn.004649b0
jmp fcn.00646ab0