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

Disassembly:
sub esp, 0xa0
mov dword [esp + 0xc], esi
mov esi, eax
mov dword [esp + 4], ebx
mov dword [esp + 8], ebp
mov dword [esp + 0x10], edi
cmp byte [eax + 4], 0
je 0x40bae2
lea edi, [esi + 0x1c]
mov ecx, dword [esp + 0xa4]
mov edx, dword [edi + 4]
mov edx, dword [edx + ecx*4]
shr edx, 0x18
cmp edx, 0x94
jne 0x40bfe2
mov esi, dword [esp + 0xa4]
mov edx, dword [edi + 4]
lea edx, [edx + esi*4]
lea ebx, [edx + 4]
lea eax, [esi + 1]
push ebx
mov ebx, dword [edi]
sub ebx, eax
push ebx
mov ebx, dword [edi]
lea eax, [ebx - 1]
push edx
sub eax, ecx
push eax
call fcn.0046c708
mov eax, dword [edi]
dec eax
push edi
call fcn.004230a4
jmp 0x40bfe2
mov ecx, dword [esi]
cmp ecx, 0x3f
je 0x40bb19
ja 0x40bafa
cmp ecx, 0x2a
je 0x40bb04
cmp ecx, 0x2b
je 0x40bb2e
jmp 0x40bf97
cmp ecx, 0x7b
je 0x40bb43
jmp 0x40bf97
mov dword [esp + 0x98], 0
mov ebp, 0xffffffff
jmp 0x40bffb
mov dword [esp + 0x98], 0
mov ebp, 1
jmp 0x40bffb
mov dword [esp + 0x98], 1
mov ebp, 0xffffffff
jmp 0x40bffb
cmp dword [esi + 8], 0
jne 0x40bb4f
mov byte [esi + 4], 1
jmp 0x40bba4
mov edx, dword [esi + 0xc]
mov ebx, dword [esi + 8]
mov dword [esp + 0x20], edx
mov edi, dword [esp + 0x20]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x80], 0
cmp byte [edi], 0x80
jae 0x40bb87
mov edx, dword [esp + 0x80]
inc edx
mov dword [esp + 0x80], edx
dec edx
movzx ecx, byte [edi + edx]
jmp 0x40bb9a
lea ebx, [esp + 0x1c]
push ebx
lea eax, [esp + 0x84]
call fcn.00409328
mov ecx, eax
lea eax, [esi + 8]
mov dword [esi], ecx
call fcn.004092b0
test dword [esi + 0x18], 4
je 0x40bc35
movsx edx, byte [esi + 4]
xor dl, 1
je 0x40bc35
mov edi, dword [esi]
mov eax, edi
call fcn.0046b370
test al, al
je 0x40bc35
lea ebx, [esi + 8]
cmp dword [ebx], 0
jne 0x40bbd5
mov byte [esi + 4], 1
jmp 0x40bc1f
mov edx, dword [esi + 0xc]
mov eax, dword [esi + 8]
xor ecx, ecx
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x30]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x7c], ecx
cmp byte [edx + ecx], 0x80
jae 0x40bc03
mov ecx, dword [esp + 0x7c]
inc ecx
mov dword [esp + 0x7c], ecx
dec ecx
movzx ecx, byte [edx + ecx]
jmp 0x40bc16
lea ecx, [esp + 0x2c]
push ecx
lea eax, [esp + 0x80]
call fcn.00409328
mov ecx, eax
mov eax, ebx
mov dword [esi], ecx
call fcn.004092b0
movsx edx, byte [esi + 4]
xor dl, 1
je 0x40bc35
mov edi, dword [esi]
mov eax, edi
call fcn.0046b370
test al, al
jne 0x40bbca
movsx ebx, byte [esi + 4]
xor bl, 1
mov ecx, 0x40c248
mov edi, 0x4cbec0
mov eax, 0x320
push ebx
push ecx
push esi
push edi
push 0x46
call fcn.00462cc8
mov edx, dword [esi]
add edx, 0xffffffd0
cmp edx, 9
setbe bl
mov ecx, 0x40c254
push ebx
mov eax, 0x321
push ecx
push esi
push edi
push 0x46
call fcn.00462cc8
mov eax, esi
call fcn.00409ccc
mov edx, dword [esi]
cmp edx, 0x7d
mov dword [esp + 0x98], eax
jne 0x40bc97
mov ebp, dword [esp + 0x98]
jmp 0x40bf71
cmp edx, 0x2c
jne 0x40bef1
cmp dword [esi + 8], 0
jne 0x40bcac
mov byte [esi + 4], 1
jmp 0x40bcf4
mov edx, dword [esi + 0xc]
mov eax, dword [esi + 8]
xor ebx, ebx
mov dword [esp + 0x40], edx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x70], ebx
cmp byte [ecx + ebx], 0x80
jae 0x40bcda
mov eax, dword [esp + 0x70]
inc eax
mov dword [esp + 0x70], eax
dec eax
movzx edi, byte [ecx + eax]
jmp 0x40bcea
lea edx, [esp + 0x3c]
push edx
lea eax, [esp + 0x74]
call fcn.00409328
mov edi, eax
lea eax, [esi + 8]
mov dword [esi], edi
call fcn.004092b0
test dword [esi + 0x18], 4
je 0x40bd92
movsx ecx, byte [esi + 4]
xor cl, 1
je 0x40bd92
mov edi, dword [esi]
mov eax, edi
call fcn.0046b370
test al, al
je 0x40bd92
lea ebx, [esi + 8]
cmp dword [ebx], 0
jne 0x40bd29
mov byte [esi + 4], 1
jmp 0x40bd7c
mov edx, dword [esi + 0xc]
mov eax, dword [esi + 8]
xor ecx, ecx
mov dword [esp + 0x50], edx
mov edx, dword [esp + 0x50]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x88], ecx
cmp byte [edx + ecx], 0x80
jae 0x40bd60
mov ecx, dword [esp + 0x88]
inc ecx
mov dword [esp + 0x88], ecx
dec ecx
movzx ecx, byte [edx + ecx]
jmp 0x40bd73
lea ecx, [esp + 0x4c]
push ecx
lea eax, [esp + 0x8c]
call fcn.00409328
mov ecx, eax
mov eax, ebx
mov dword [esi], ecx
call fcn.004092b0
movsx edx, byte [esi + 4]
xor dl, 1
je 0x40bd92
mov edi, dword [esi]
mov eax, edi
call fcn.0046b370
test al, al
jne 0x40bd1e
mov ebx, dword [esi]
lea ecx, [ebx - 0x30]
cmp ecx, 9
ja 0x40bdaa
mov eax, esi
call fcn.00409ccc
mov ebp, eax
jmp 0x40be3b
cmp ebx, 0x7d
jne 0x40bdb9
mov ebp, 0xffffffff
jmp 0x40be3b
mov dword [esp + 0x68], 0x4cc090
xor edx, edx
mov dword [esp + 0x64], 0x22
mov dword [esp + 0x74], edx
push edx
push edx
lea eax, [esp + 0x7c]
call fcn.00408f24
lea ecx, [esp + 0x74]
mov edx, 0x4cbf30
push ecx
push edx
mov edx, dword [esi + 0x10]
push 0x2a
push dword [esp + 0x74]
push dword [esp + 0x74]
push dword [esi + 0x14]
sub edx, dword [esi + 8]
push edx
push dword [esi + 0xc]
push dword [esi + 8]
call fcn.0040f29c
mov dword [esp], 0x4d9770
call fcn.00462d20
mov ebx, eax
lea eax, [esp + 0x74]
call fcn.00408fbc
mov ecx, 0x4cbec0
push edx
push eax
mov eax, ebx
push ecx
push 0x46
push 0x3fa
push 0
call fcn.0046b344
mov dword [esp], eax
call fcn.00463074
movsx edx, byte [esi + 4]
xor dl, 1
je 0x40becc
mov edi, dword [esi]
mov eax, edi
call fcn.0046b370
test al, al
je 0x40becc
lea ebx, [esi + 8]
cmp dword [ebx], 0
jne 0x40be63
mov byte [esi + 4], 1
jmp 0x40beb6
mov edx, dword [esi + 0xc]
mov eax, dword [esi + 8]
xor ecx, ecx
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x48]
mov dword [esp + 0x44], eax
mov dword [esp + 0x90], ecx
cmp byte [edx + ecx], 0x80
jae 0x40be9a
mov ecx, dword [esp + 0x90]
inc ecx
mov dword [esp + 0x90], ecx
dec ecx
movzx ecx, byte [edx + ecx]
jmp 0x40bead
lea ecx, [esp + 0x44]
push ecx
lea eax, [esp + 0x94]
call fcn.00409328
mov ecx, eax
mov eax, ebx
mov dword [esi], ecx
call fcn.004092b0
movsx edx, byte [esi + 4]
xor dl, 1
je 0x40becc
mov edi, dword [esi]
mov eax, edi
call fcn.0046b370
test al, al
jne 0x40be58
cmp dword [esi], 0x7d
sete bl
mov ecx, 0x40c260
push ebx
mov edi, 0x4cbec0
mov eax, 0x32f
push ecx
push esi
push edi
push 0x46
call fcn.00462cc8
jmp 0x40bf71
mov dword [esp + 0x60], 0x4cc090
xor ecx, ecx
mov dword [esp + 0x5c], 0x22
mov dword [esp + 0x78], ecx
push ecx
push ecx
lea eax, [esp + 0x80]
call fcn.00408f24
lea edx, [esp + 0x78]
mov ecx, 0x4cbf30
push edx
push ecx
mov ecx, dword [esi + 0x10]
push 0x2a
push dword [esp + 0x6c]
push dword [esp + 0x6c]
push dword [esi + 0x14]
sub ecx, dword [esi + 8]
push ecx
push dword [esi + 0xc]
push dword [esi + 8]
call fcn.0040f29c
mov dword [esp], 0x4d9770
call fcn.00462d20
mov ebx, eax
lea eax, [esp + 0x78]
call fcn.00408fbc
push edx
push eax
mov eax, ebx
push edi
push 0x46
push 0x3fa
push 0
call fcn.0046b344
mov dword [esp], eax
call fcn.00463074
cmp ebp, dword [esp + 0x98]
setae dl
mov ebx, 0x40c26c
push edx
mov ecx, 0x4cbec0
mov eax, 0x333
push ebx
push esi
push ecx
push 0x46
call fcn.00462cc8
jmp 0x40bffb
lea edi, [esi + 0x1c]
mov ecx, dword [esp + 0xa4]
mov edx, dword [edi + 4]
mov edx, dword [edx + ecx*4]
shr edx, 0x18
cmp edx, 0x94
jne 0x40bfe2
mov esi, dword [esp + 0xa4]
mov edx, dword [edi + 4]
lea edx, [edx + esi*4]
lea ebx, [edx + 4]
lea eax, [esi + 1]
push ebx
mov ebx, dword [edi]
sub ebx, eax
push ebx
mov ebx, dword [edi]
lea eax, [ebx - 1]
push edx
sub eax, ecx
push eax
call fcn.0046c708
mov eax, dword [edi]
dec eax
push edi
call fcn.004230a4
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 8]
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 0x10]
add esp, 0xa0
ret 4
cmp dword [esi + 8], 0
mov edx, 1
mov byte [esp + 0x9c], dl
jne 0x40c012
mov byte [esi + 4], dl
jmp 0x40c066
mov edx, dword [esi + 0xc]
mov eax, dword [esi + 8]
xor ebx, ebx
mov dword [esp + 0x28], edx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x24], eax
mov dword [esp + 0x84], ebx
cmp byte [ecx + ebx], 0x80
jae 0x40c049
mov eax, dword [esp + 0x84]
inc eax
mov dword [esp + 0x84], eax
dec eax
movzx edi, byte [ecx + eax]
jmp 0x40c05c
lea edx, [esp + 0x24]
push edx
lea eax, [esp + 0x88]
call fcn.00409328
mov edi, eax
lea eax, [esi + 8]
mov dword [esi], edi
call fcn.004092b0
test dword [esi + 0x18], 4
je 0x40c104
movsx ecx, byte [esi + 4]
xor cl, 1
je 0x40c104
mov edi, dword [esi]
mov eax, edi
call fcn.0046b370
test al, al
je 0x40c104
lea ebx, [esi + 8]
cmp dword [ebx], 0
jne 0x40c09b
mov byte [esi + 4], 1
jmp 0x40c0ee
mov edx, dword [esi + 0xc]
mov eax, dword [esi + 8]
xor ecx, ecx
mov dword [esp + 0x58], edx
mov edx, dword [esp + 0x58]
mov dword [esp + 0x54], eax
mov dword [esp + 0x8c], ecx
cmp byte [edx + ecx], 0x80
jae 0x40c0d2
mov ecx, dword [esp + 0x8c]
inc ecx
mov dword [esp + 0x8c], ecx
dec ecx
movzx ecx, byte [edx + ecx]
jmp 0x40c0e5
lea ecx, [esp + 0x54]
push ecx
lea eax, [esp + 0x90]
call fcn.00409328
mov ecx, eax
mov eax, ebx
mov dword [esi], ecx
call fcn.004092b0
movsx edx, byte [esi + 4]
xor dl, 1
je 0x40c104
mov edi, dword [esi]
mov eax, edi
call fcn.0046b370
test al, al
jne 0x40c090
movsx ebx, byte [esi + 4]
xor bl, 1
je 0x40c210
cmp dword [esi], 0x3f
jne 0x40c210
mov byte [esp + 0x9c], 0
cmp dword [esi + 8], 0
jne 0x40c12e
mov byte [esi + 4], 1
jmp 0x40c182
mov edx, dword [esi + 0xc]
mov eax, dword [esi + 8]
xor ecx, ecx
mov dword [esp + 0x18], edx
mov edi, dword [esp + 0x18]
mov dword [esp + 0x14], eax
mov dword [esp + 0x94], ecx
cmp byte [edi + ecx], 0x80
jae 0x40c165
mov eax, dword [esp + 0x94]
inc eax
mov dword [esp + 0x94], eax
dec eax
movzx ebx, byte [edi + eax]
jmp 0x40c178
lea edx, [esp + 0x14]
push edx
lea eax, [esp + 0x98]
call fcn.00409328
mov ebx, eax
lea eax, [esi + 8]
mov dword [esi], ebx
call fcn.004092b0
test dword [esi + 0x18], 4
je 0x40c210
movsx ecx, byte [esi + 4]
xor cl, 1
je 0x40c210
mov edi, dword [esi]
mov eax, edi
call fcn.0046b370
test al, al
je 0x40c210
lea ebx, [esi + 8]
cmp dword [ebx], 0
jne 0x40c1b3
mov byte [esi + 4], 1
jmp 0x40c1fa
mov edx, dword [esi + 0xc]
mov eax, dword [esi + 8]
xor ecx, ecx
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x38]
mov dword [esp + 0x34], eax
mov dword [esp + 0x6c], ecx
cmp byte [edx + ecx], 0x80
jae 0x40c1e1
mov ecx, dword [esp + 0x6c]
inc ecx
mov dword [esp + 0x6c], ecx
dec ecx
movzx ecx, byte [edx + ecx]
jmp 0x40c1f1
lea ecx, [esp + 0x34]
push ecx
lea eax, [esp + 0x70]
call fcn.00409328
mov ecx, eax
mov eax, ebx
mov dword [esi], ecx
call fcn.004092b0
movsx edx, byte [esi + 4]
xor dl, 1
je 0x40c210
mov edi, dword [esi]
mov eax, edi
call fcn.0046b370
test al, al
jne 0x40c1a8
push dword [esp + 0xa4]
lea eax, [esi + 0x1c]
push dword [esp + 0x9c]
push ebp
push dword [esp + 0xa8]
call fcn.0046bc90
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 8]
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 0x10]
add esp, 0xa0
ret 4