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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xdc
push ebx
push esi
mov ebx, eax
push edi
mov edi, dword [ebp + 0x18]
mov esi, ebx
shl esi, 2
lea eax, [edi + 0x30]
mov dword [esp + 0x14], esi
call fcn.0040bbc2
mov esi, dword [eax + esi]
lea eax, [edi + 8]
call fcn.0040bbc2
lea eax, [eax + esi*8]
mov dword [esp + 0x20], eax
lea eax, [esp + 0x78]
call fcn.0040b8d3
lea esi, [esp + 0x78]
mov eax, edi
call fcn.0040aa36
mov eax, esi
call fcn.0040a9ae
test al, al
jne 0x40b008
call fcn.0040b8df
mov eax, 0x80004001
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x30
lea eax, [esp + 0x98]
call fcn.0040adfb
lea eax, [esp + 0x98]
lea ecx, [esp + 0x78]
call fcn.0040ab1c
lea eax, [esp + 0x98]
call fcn.0040fcb0
test al, al
jne 0x40b052
mov edi, 0x80004001
lea eax, [esp + 0x98]
call fcn.0040ae0f
lea esi, [esp + 0x78]
call fcn.0040b8df
mov eax, edi
jmp 0x40afff
call fcn.0040aa52
mov ecx, dword [ebp + 0x1c]
mov byte [esp + 0x1c], 1
test ecx, ecx
je 0x40b08b
mov esi, dword [ecx]
mov ecx, dword [ecx + 4]
cmp ecx, edx
jb 0x40b079
ja 0x40b072
cmp esi, eax
jbe 0x40b07b
mov edi, 0x80004005
jmp 0x40b039
cmp esi, eax
jne 0x40b086
mov byte [esp + 0x1c], 1
cmp ecx, edx
je 0x40b08b
mov byte [esp + 0x1c], 0
mov esi, dword [ebp + 8]
cmp byte [esi], 0
je 0x40b0ac
lea eax, [esi + 4]
push eax
lea eax, [esp + 0x9c]
call fcn.0040ac6a
pop ecx
test al, al
jne 0x40b1c1
mov ebx, esi
lea esi, [ebx + 0x5c]
call fcn.00412cd1
push 0x84
call fcn.0041bcfe
pop ecx
test eax, eax
je 0x40b0ce
mov esi, eax
call fcn.0040a90d
jmp 0x40b0d0
xor eax, eax
mov edi, eax
lea esi, [ebx + 0x5c]
mov dword [ebx + 0x54], eax
call fcn.004015b0
mov eax, dword [ebx + 0x54]
test eax, eax
je 0x40b0e9
lea ecx, [eax + 4]
jmp 0x40b0eb
xor ecx, ecx
lea edx, [esp + 0x98]
mov dword [ebx + 0x58], ecx
mov eax, dword [ecx]
push edx
call dword [eax]
test eax, eax
je 0x40b105
mov edi, eax
jmp 0x40b039
and dword [esp + 0x10], 0
lea eax, [esp + 0x78]
call fcn.0040b9c5
mov dword [esp + 0x2c], eax
test eax, eax
je 0x40b1ac
lea eax, [esp + 0x78]
call fcn.0040bbc2
mov edi, eax
lea esi, [esp + 0x68]
call fcn.0040b8e4
push dword [edi + 4]
mov ebx, esi
push dword [edi]
call fcn.00410af1
mov ebx, eax
pop ecx
pop ecx
test ebx, ebx
jne 0x40b229
mov ecx, edi
call fcn.0040a98a
test al, al
je 0x40b161
mov ecx, esi
call fcn.00411d4f
test al, al
jmp 0x40b179
lea ecx, [esp + 0x6c]
call fcn.00411d4f
test al, al
jne 0x40b239
mov eax, dword [esp + 0x74]
cmp eax, dword [edi + 0x10]
jne 0x40b239
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x58]
mov eax, dword [ecx]
lea edx, [esp + 0x68]
push edx
call dword [eax + 4]
lea esi, [esp + 0x68]
call fcn.0040b8f6
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
add edi, 0x18
cmp eax, dword [esp + 0x2c]
jb 0x40b12a
mov ebx, dword [ebp + 8]
lea ecx, [ebx + 4]
lea eax, [esp + 0x98]
call fcn.0040b905
mov esi, dword [ebp + 8]
mov byte [ebx], 1
mov ecx, dword [esi + 0x58]
mov eax, dword [ecx]
call dword [eax + 0x10]
mov eax, dword [ebp + 0x18]
and dword [esp + 0x24], 0
add eax, 0x2c
call fcn.0040bbc2
mov ecx, dword [esp + 0x14]
mov edi, dword [eax + ecx]
and dword [esp + 0x30], 0
lea eax, [esp + 0x78]
mov dword [esp + 0x3c], edi
call fcn.0040b9c5
mov dword [esp + 0x2c], eax
test eax, eax
je 0x40b582
lea eax, [esp + 0x34]
call fcn.00411d4e
mov dword [esp + 0x94], eax
mov eax, edi
shl eax, 3
mov dword [esp + 0x54], eax
lea eax, [esp + 0x78]
call fcn.0040bbc2
lea edi, [eax + 8]
mov dword [esp + 0x10], edi
jmp 0x40b24b
lea esi, [esp + 0x68]
call fcn.0040b8f6
mov edi, ebx
jmp 0x40b039
lea esi, [esp + 0x68]
call fcn.0040b8f6
jmp 0x40b034
mov edi, dword [esp + 0x10]
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x58]
push dword [esp + 0x30]
mov eax, dword [ecx]
call dword [eax + 8]
mov esi, eax
call fcn.0040a71e
mov ebx, eax
lea eax, [esp + 0x34]
mov dword [esp + 0x44], ebx
call fcn.0040b9c9
push dword [esp + 0x94]
mov eax, dword [ebx]
push 0x428330
push ebx
call dword [eax]
lea eax, [esp + 0x34]
call fcn.0040bbc2
test eax, eax
je 0x40b2d6
mov eax, edi
call fcn.0040b9c5
mov dword [esp + 0x58], eax
cmp eax, 0xffffffff
lea eax, [esp + 0x34]
ja 0x40b5c1
call fcn.0040bbc2
push dword [esp + 0x58]
mov esi, eax
mov eax, edi
call fcn.0040bbc2
push eax
mov eax, dword [esi]
push esi
call dword [eax + 0xc]
mov edi, eax
cmp edi, 0x80070057
jne 0x40b2ce
mov edi, 0x80004001
test edi, edi
jne 0x40b5cb
lea eax, [esp + 0x34]
call fcn.004015da
lea eax, [esp + 0x28]
call fcn.0040b9c9
mov esi, dword [ebx]
lea eax, [esp + 0x28]
call fcn.00411d4e
push eax
push 0x4283e0
push ebx
call dword [esi]
lea eax, [esp + 0x28]
call fcn.0040bbc2
test eax, eax
je 0x40b3eb
mov esi, dword [ebp + 0x28]
mov eax, dword [ebp + 0x2c]
mov byte [eax], 1
test esi, esi
je 0x40b5d9
lea eax, [esp + 0x38]
call fcn.0040b9c9
mov edi, dword [esi]
lea eax, [esp + 0x38]
call fcn.00411d4e
push eax
push esi
call dword [edi + 0xc]
mov edi, eax
test edi, edi
jne 0x40b5e7
mov eax, dword [ebp + 0x30]
mov esi, dword [ebp + 0x34]
mov byte [eax], 1
mov eax, esi
call fcn.00402649
lea eax, [esp + 0x38]
xor ebx, ebx
call fcn.0040bbc2
test eax, eax
je 0x40b36f
push eax
call fcn.004125de
mov eax, esi
call fcn.0040b9c5
mov ebx, eax
lea edi, [ebx + ebx]
lea esi, [esp + 0x48]
call fcn.0040b99c
xor edi, edi
test ebx, ebx
je 0x40b3a6
mov eax, esi
call fcn.0040bbc2
mov esi, eax
lea eax, [esp + 0x38]
call fcn.0040bbc2
movzx eax, word [eax + edi*2]
mov byte [esi + edi*2], al
shr eax, 8
mov byte [esi + edi*2 + 1], al
inc edi
cmp edi, ebx
jb 0x40b38a
lea eax, [esp + 0x28]
call fcn.0040bbc2
mov esi, eax
mov edi, dword [esi]
lea eax, [esp + 0x48]
call fcn.0040b9c5
push eax
lea eax, [esp + 0x4c]
call fcn.0040bbc2
push eax
push esi
call dword [edi + 0xc]
mov edi, eax
lea eax, [esp + 0x48]
call fcn.00401d42
test edi, edi
jne 0x40b5e7
lea eax, [esp + 0x38]
call fcn.0040bcf7
mov ebx, dword [esp + 0x44]
lea eax, [esp + 0x28]
call fcn.004015da
lea eax, [esp + 0x40]
call fcn.0040b9c9
mov esi, dword [ebx]
lea eax, [esp + 0x40]
call fcn.00411d4e
push eax
push 0x428350
push ebx
call dword [esi]
lea eax, [esp + 0x40]
call fcn.0040bbc2
test eax, eax
je 0x40b444
lea eax, [esp + 0x40]
call fcn.0040bbc2
push dword [esp + 0x1c]
mov esi, eax
mov edi, dword [esi]
call fcn.0040bcea
pop ecx
push eax
push esi
call dword [edi + 0xc]
mov edi, eax
test edi, edi
jne 0x40b5fe
lea eax, [esp + 0x40]
call fcn.004015da
mov eax, dword [esp + 0x10]
mov edi, dword [eax + 8]
mov eax, edi
lea esi, [esp + 0x14]
mov dword [esp + 0x44], edi
call fcn.0040bbcd
mov eax, edi
lea esi, [esp + 0x18]
call fcn.0040bbee
xor ebx, ebx
test edi, edi
je 0x40b510
push dword [esp + 0x24]
lea eax, [esp + 0x7c]
call fcn.0040a9f9
mov esi, eax
test esi, esi
js 0x40b4bd
mov eax, dword [ebp + 0x18]
add eax, 0x28
call fcn.0040bbc2
mov edi, eax
lea eax, [esp + 0x80]
call fcn.0040bbc2
mov eax, dword [eax + esi*8 + 4]
add eax, dword [esp + 0x3c]
lea esi, [edi + eax*8]
lea eax, [esp + 0x18]
call fcn.0040bbc2
mov dword [eax + ebx*4], esi
jmp 0x40b501
push dword [esp + 0x24]
lea eax, [esp + 0x7c]
call fcn.0040a9bc
test eax, eax
js 0x40b60c
mov ecx, dword [esp + 0x20]
lea esi, [ecx + eax*8]
lea eax, [esp + 0x14]
call fcn.0040bbc2
mov ecx, dword [esi + 0xc]
lea edi, [eax + ebx*8]
mov eax, dword [esi + 8]
sub eax, dword [esi]
sbb ecx, dword [esi + 4]
mov dword [edi], eax
lea eax, [esp + 0x18]
mov dword [edi + 4], ecx
call fcn.0040bbc2
mov dword [eax + ebx*4], edi
inc ebx
inc dword [esp + 0x24]
cmp ebx, dword [esp + 0x44]
jb 0x40b478
mov edi, dword [ebp + 0x1c]
test edi, edi
je 0x40b524
mov eax, dword [esp + 0x30]
cmp eax, dword [esp + 0xbc]
je 0x40b535
mov eax, dword [ebp + 0x18]
add eax, 0x28
call fcn.0040bbc2
mov edi, eax
add edi, dword [esp + 0x54]
mov eax, dword [ebp + 8]
mov esi, dword [eax + 0x58]
mov ebx, dword [esi]
lea eax, [esp + 0x18]
call fcn.0040bbc2
push eax
push edi
push dword [esp + 0x38]
mov ecx, esi
call dword [ebx + 0x14]
lea eax, [esp + 0x18]
call fcn.00401d42
lea eax, [esp + 0x14]
call fcn.00401d42
inc dword [esp + 0x30]
mov eax, dword [esp + 0x30]
add dword [esp + 0x54], 8
add dword [esp + 0x10], 0x18
cmp eax, dword [esp + 0x2c]
jb 0x40b247
mov esi, dword [ebp + 8]
cmp dword [ebp + 0x20], 0
je 0x40b59c
cmp byte [esp + 0x1c], 0
mov ecx, dword [esi + 0x58]
mov eax, dword [ecx]
sete dl
movzx edx, dl
push edx
call dword [eax + 0xc]
lea eax, [esp + 0x5c]
push eax
call fcn.0040fd69
push 0x30
call fcn.0041bcfe
pop ecx
test eax, eax
je 0x40b623
mov esi, eax
call fcn.0040b923
mov ebx, eax
mov dword [esp + 0x14], ebx
jmp 0x40b62c
call fcn.004015da
jmp 0x40b034
lea eax, [esp + 0x34]
call fcn.004015da
jmp 0x40b039
lea eax, [esp + 0x28]
call fcn.004015da
jmp 0x40b034
lea eax, [esp + 0x38]
call fcn.0040bcf7
lea eax, [esp + 0x28]
call fcn.004015da
jmp 0x40b039
lea eax, [esp + 0x40]
call fcn.004015da
jmp 0x40b039
lea eax, [esp + 0x18]
call fcn.00401d42
lea eax, [esp + 0x14]
call fcn.00401d42
jmp 0x40b034
and dword [esp + 0x14], 0
mov ebx, dword [esp + 0x14]
mov eax, ebx
lea esi, [esp + 0x24]
call fcn.004015cb
lea eax, [esp + 0x88]
call fcn.0040b9c5
mov dword [esp + 0x2c], eax
cmp eax, 1
jbe 0x40b694
mov edi, dword [ebp + 0xc]
mov ecx, dword [edi]
lea eax, [ebx + 0x10]
push eax
mov eax, dword [esp + 0x24]
mov edx, dword [eax]
add edx, dword [ebp + 0x10]
mov eax, dword [eax + 4]
adc eax, dword [ebp + 0x14]
push 0
push eax
push edx
push edi
call dword [ecx + 0x10]
mov esi, eax
test esi, esi
je 0x40b68c
lea eax, [esp + 0x24]
call fcn.004015da
lea eax, [esp + 0x5c]
push eax
call fcn.0040bae3
mov edi, esi
jmp 0x40b039
lea esi, [ebx + 8]
call fcn.004015b0
and dword [esp + 0x10], 0
cmp dword [esp + 0x2c], 0
jbe 0x40b7bc
lea ecx, [esp + 0x18]
call fcn.0040b9b2
mov ebx, dword [esp + 0x10]
shl ebx, 3
mov dword [esp + 0x44], ebx
add ebx, dword [esp + 0x20]
mov eax, dword [ebx]
add eax, dword [ebp + 0x10]
mov ecx, dword [ebx + 4]
adc ecx, dword [ebp + 0x14]
cmp dword [esp + 0x2c], 1
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], ecx
jne 0x40b701
mov edx, dword [ebp + 0xc]
mov esi, dword [edx]
push 0
push 0
push ecx
push eax
push edx
call dword [esi + 0x10]
mov edi, eax
test edi, edi
jne 0x40b83d
mov edi, dword [ebp + 0xc]
lea esi, [esp + 0x18]
call fcn.004015b0
jmp 0x40b73a
push 0x20
call fcn.0041bcfe
pop ecx
test eax, eax
je 0x40b718
mov esi, eax
call fcn.0040b945
mov edi, eax
jmp 0x40b71a
xor edi, edi
lea esi, [esp + 0x18]
call fcn.004015b0
push dword [esp + 0x4c]
mov eax, dword [esp + 0x18]
push dword [esp + 0x4c]
mov ebx, edi
call fcn.0040ae93
mov ebx, dword [esp + 0x3c]
push 0x28
call fcn.0041bcfe
pop ecx
test eax, eax
je 0x40b753
mov esi, eax
call fcn.0040b965
mov dword [esp + 0x1c], eax
jmp 0x40b758
and dword [esp + 0x1c], 0
lea eax, [esp + 0x5c]
push eax
call fcn.0040bab6
mov edi, dword [esp + 0x1c]
mov esi, eax
call fcn.004015b0
lea eax, [esp + 0x18]
call fcn.0040bbc2
mov edi, eax
mov eax, dword [esp + 0x1c]
call fcn.0040a619
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x44]
mov edx, dword [eax + ecx + 8]
sub edx, dword [ebx]
mov eax, dword [eax + ecx + 0xc]
sbb eax, dword [ebx + 4]
push eax
mov eax, dword [esp + 0x20]
push edx
call fcn.0040a624
lea ecx, [esp + 0x18]
call fcn.0040b9b8
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, dword [esp + 0x2c]
jb 0x40b6a4
lea eax, [esp + 0x5c]
call fcn.00410813
lea esi, [esp + 0x20]
mov edi, eax
call fcn.0040bbee
xor esi, esi
test edi, edi
je 0x40b7f9
lea eax, [esp + 0x20]
call fcn.0040bbc2
mov ebx, eax
mov ecx, esi
lea eax, [esp + 0x5c]
call fcn.00414fbb
call fcn.0040bbc2
mov dword [ebx + esi*4], eax
inc esi
cmp esi, edi
jb 0x40b7e1
mov ebx, dword [ebp + 0x20]
test ebx, ebx
je 0x40b8b2
lea eax, [esp + 0x14]
call fcn.0040b9c9
cmp dword [ebp + 0x24], 0
je 0x40b86b
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x58]
push dword [ecx + 0x60]
call fcn.0040fe8c
test al, al
jne 0x40b86b
push 0xc
call fcn.0041bcfe
pop ecx
test eax, eax
je 0x40b85e
push dword [ebp + 0x24]
mov edi, eax
call fcn.0040aa97
jmp 0x40b860
lea ecx, [esp + 0x18]
call fcn.0040b9b8
lea eax, [esp + 0x24]
call fcn.004015da
lea eax, [esp + 0x5c]
push eax
call fcn.0040bae3
jmp 0x40b039
xor eax, eax
mov edi, eax
lea esi, [esp + 0x14]
call fcn.004015b0
lea eax, [esp + 0x14]
mov dword [esp + 0x3c], ebx
call fcn.0040bbc2
test eax, eax
jne 0x40b87f
mov eax, dword [ebp + 0x24]
mov ecx, dword [ebp + 8]
mov esi, dword [ecx + 0x58]
mov edi, dword [esi]
push eax
lea eax, [esp + 0x40]
push eax
lea eax, [esp + 0x28]
call fcn.0040bbc2
push eax
mov ecx, esi
call dword [edi + 0x18]
mov edi, eax
lea eax, [esp + 0x14]
call fcn.004015da
lea eax, [esp + 0x20]
call fcn.00401d42
jmp 0x40b846
lea eax, [esp + 0x20]
call fcn.00401d42
lea eax, [esp + 0x24]
call fcn.004015da
lea eax, [esp + 0x5c]
push eax
call fcn.0040bae3
jmp 0x40b072