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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x13c
mov eax, dword [0x44f4e8]
xor eax, esp
mov dword [esp + 0x138], eax
mov eax, dword [ebp + 8]
push ebx
mov ebx, ecx
xor ecx, ecx
cmp dword [ebx], ecx
push esi
mov dword [esp + 0x54], eax
mov eax, dword [ebp + 0x14]
push edi
mov dword [esp + 0x54], ebx
jne 0x4061a1
mov eax, 0x80004005
mov ecx, dword [esp + 0x144]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004327eb
mov esp, ebp
pop ebp
ret 0x10
cmp eax, ecx
mov dword [ebx + 4], edx
mov byte [esp + 0x12], 1
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], ecx
je 0x4062d1
mov byte [esp + 0x12], cl
lea ecx, [esp + 0x20]
push ecx
push 0x3b
mov ebx, eax
call fcn.0040e057
pop ecx
pop ecx
lea eax, [esp + 0x20]
xor edi, edi
call fcn.004011c7
test eax, eax
jbe 0x406221
push edi
lea esi, [esp + 0x24]
call fcn.00408efc
mov esi, eax
push 0x443ef0
push esi
mov ebx, 0x443e20
call fcn.0040c7e0
push 0x5c
push 0x2f
call fcn.0040c835
push 0x443ee4
push esi
call fcn.0040c8b0
add esp, 0x18
lea eax, [esp + 0x20]
inc edi
call fcn.004011c7
cmp edi, eax
jb 0x4061e0
mov ebx, dword [esp + 0x24]
cmp ebx, dword [esp + 0x28]
jbe 0x406230
call fcn.00432a02
lea eax, [esp + 0x20]
mov dword [esp + 0x30], eax
mov dword [esp + 0x38], eax
mov esi, dword [esp + 0x28]
cmp dword [esp + 0x24], esi
mov dword [esp + 0x34], ebx
jbe 0x40624f
call fcn.00432a02
mov dword [esp + 0x3c], esi
lea edi, [esp + 0x38]
lea esi, [esp + 0x30]
call fcn.00405088
test al, al
je 0x4062b2
call fcn.0040506b
cmp dword [eax + 0x14], 0
mov esi, dword [esp + 0x30]
jne 0x40629a
push ebx
push dword [esp + 0x2c]
lea eax, [ebx + 0x1c]
call fcn.004073b5
mov eax, dword [esp + 0x30]
pop ecx
pop ecx
push eax
add eax, 0xffffffe4
call fcn.00401788
sub dword [esp + 0x28], 0x1c
mov dword [esp + 0x30], esi
jmp 0x40623c
test esi, esi
jne 0x4062a3
call fcn.00432a02
cmp ebx, dword [esi + 8]
jb 0x4062ad
call fcn.00432a02
add ebx, 0x1c
jmp 0x40623c
lea eax, [esp + 0x20]
call fcn.004011c7
test eax, eax
jne 0x4062cd
lea esi, [esp + 0x20]
call fcn.00401539
jmp 0x406185
mov ebx, dword [esp + 0x54]
mov eax, dword [esp + 0x58]
lea esi, [esp + 0xc0]
call fcn.00401aa6
cmp dword [esp + 0xd4], 0
je 0x4062f7
mov eax, esi
push 0x10
push eax
call fcn.0040d09e
pop ecx
pop ecx
mov eax, dword [ebx]
test eax, eax
mov dword [esp + 0x18], eax
je 0x406306
call fcn.0040e182
lea eax, [ebx + 8]
call fcn.004193db
mov edi, eax
xor esi, esi
cmp edi, esi
mov dword [esp + 0x30], edi
jne 0x40634e
cmp dword [esp + 0x18], esi
je 0x406329
mov esi, dword [esp + 0x18]
call fcn.0040e18f
mov edi, 0x80004005
push 0
push 1
lea esi, [esp + 0xc8]
call fcn.00401452
lea esi, [esp + 0x20]
call fcn.00401539
mov eax, edi
jmp 0x40618a
lea ecx, [esp + 0x40]
mov dword [esp + 0x48], esi
mov dword [esp + 0x4c], esi
mov dword [esp + 0x50], esi
mov dword [esp + 0x40], esi
mov eax, dword [edi]
push ecx
mov ecx, edi
call dword [eax + 0x18]
cmp eax, esi
mov dword [esp + 0x1c], eax
je 0x40638e
lea esi, [esp + 0x44]
call fcn.0041e30b
mov esi, dword [esp + 0x18]
test esi, esi
je 0x406388
call fcn.0040e18f
mov edi, dword [esp + 0x1c]
jmp 0x40632e
cmp dword [esp + 0x40], esi
jne 0x4063ae
lea esi, [esp + 0x44]
call fcn.0041e30b
mov esi, dword [esp + 0x18]
test esi, esi
je 0x4063aa
call fcn.0040e18f
xor edi, edi
jmp 0x40632e
cmp dword [esp + 0x40], esi
mov dword [esp + 0x14], esi
jbe 0x4064d3
lea eax, [esp + 0x98]
mov byte [esp + 0x13], 0
call fcn.0040e1b1
mov eax, dword [edi]
lea ecx, [esp + 0x98]
push ecx
push 6
push dword [esp + 0x1c]
mov ecx, edi
call dword [eax + 0x1c]
cmp eax, esi
mov dword [esp + 0x1c], eax
jne 0x4065b4
lea eax, [esp + 0x98]
call fcn.004193db
cmp eax, 4
jne 0x406414
lea eax, [esp + 0x98]
call fcn.0040e1f8
test al, al
je 0x406414
mov byte [esp + 0x13], 1
lea eax, [esp + 0x98]
call fcn.0040e1db
mov eax, dword [edi]
lea ecx, [esp + 0x98]
push ecx
push 3
push dword [esp + 0x1c]
mov ecx, edi
call dword [eax + 0x1c]
cmp eax, esi
mov dword [esp + 0x1c], eax
jne 0x4065b4
lea eax, [esp + 0x98]
call fcn.0040e1ed
lea esi, [esp + 0xdc]
call fcn.00401aa6
cmp byte [esp + 0x12], 0
je 0x40650f
lea esi, [ebx + 0x30]
mov eax, dword [esi + 4]
mov dword [esp + 0x70], eax
lea eax, [esp + 0x5c]
push eax
lea ebx, [esp + 0x18]
mov dword [esp + 0x70], esi
call fcn.0040684c
lea edi, [esp + 0x6c]
mov esi, eax
call fcn.0040692d
test al, al
je 0x40649b
mov eax, ebx
push eax
lea eax, [esp + 0x48]
call fcn.0040689d
push 0
push 1
lea esi, [esp + 0xe4]
call fcn.00401452
lea eax, [esp + 0x98]
call fcn.0040e1ca
mov edi, dword [esp + 0x30]
mov ebx, dword [esp + 0x54]
inc dword [esp + 0x14]
mov eax, dword [esp + 0x14]
xor esi, esi
cmp eax, dword [esp + 0x40]
jb 0x4063bc
cmp dword [esp + 0x48], esi
je 0x406394
mov eax, dword [esp + 0x4c]
sub eax, dword [esp + 0x48]
sar eax, 2
je 0x406394
push 0x160
call fcn.0043286e
cmp eax, esi
pop ecx
je 0x4065c5
mov ebx, eax
call fcn.00411c9d
mov edi, eax
jmp 0x4065c7
cmp byte [esp + 0x13], 0
je 0x406534
push 0
push 1
lea esi, [esp + 0xe4]
call fcn.00401452
lea eax, [esp + 0x98]
call fcn.0040e1ca
jmp 0x4064bf
mov esi, dword [esp + 0x24]
cmp esi, dword [esp + 0x28]
jbe 0x406543
call fcn.00432a02
lea eax, [esp + 0x20]
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], esi
mov dword [esp + 0x74], eax
mov esi, dword [esp + 0x28]
cmp dword [esp + 0x24], esi
jbe 0x406562
call fcn.00432a02
mov dword [esp + 0x78], esi
lea edi, [esp + 0x74]
lea esi, [esp + 0x38]
call fcn.00405088
test al, al
je 0x40649b
call fcn.0040506b
lea ecx, [esp + 0xdc]
call fcn.0040c711
test al, al
je 0x40659e
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x48]
call fcn.0040689d
mov eax, dword [esp + 0x3c]
cmp eax, dword [esp + 0x28]
jb 0x4065ad
call fcn.00432a02
add dword [esp + 0x3c], 0x1c
jmp 0x406553
lea eax, [esp + 0x98]
call fcn.0040e1ca
jmp 0x406372
xor edi, edi
mov ecx, edi
neg ecx
lea eax, [edi + 8]
sbb ecx, ecx
and ecx, eax
lea esi, [esp + 0x14]
call fcn.004073a7
movzx eax, byte [ebp + 0x10]
push eax
movzx eax, byte [ebp + 0xc]
call fcn.004122ee
lea eax, [esp + 0xf8]
call fcn.0040d29c
mov ebx, dword [esp + 0x54]
push eax
lea esi, [ebx + 0x14]
push esi
call fcn.0040dae2
pop ecx
pop ecx
mov eax, 0x443e20
lea ecx, [esp + 0x7c]
call fcn.0040118b
xor eax, eax
push esi
lea ecx, [esp + 0xfc]
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], eax
call fcn.0040e1f1
push edx
push eax
mov eax, ecx
call fcn.0040d372
mov edx, dword [ebx + 0x10]
push eax
lea eax, [esp + 0x8c]
push eax
lea eax, [esp + 0x70]
push eax
push dword [esp + 0x70]
mov ecx, edi
push dword [esp + 0x4c]
call fcn.00412141
lea esi, [esp + 0x5c]
call fcn.00401539
push 0
push 1
lea esi, [esp + 0x84]
call fcn.00401452
cmp byte [esp + 0x12], 0
je 0x406686
cmp dword [ebx + 0x38], 0
jne 0x406686
lea eax, [esp + 0x44]
call fcn.004068f7
mov esi, dword [esp + 0x30]
mov edi, dword [esi]
lea eax, [esp + 0x14]
call fcn.004193db
push eax
push 0
lea eax, [esp + 0x4c]
push eax
mov ecx, esi
call dword [edi + 0x20]
test eax, eax
mov dword [esp + 0x1c], eax
jne 0x4066df
cmp byte [esp + 0x12], al
jne 0x4066df
xor esi, esi
cmp dword [esp + 0x48], 0
je 0x4066df
mov eax, dword [esp + 0x4c]
sub eax, dword [esp + 0x48]
sar eax, 2
cmp esi, eax
jae 0x4066df
mov eax, dword [esp + 0x48]
lea eax, [eax + esi*4]
push eax
lea eax, [ebx + 0x30]
lea edi, [esp + 0x60]
call fcn.004067a8
inc esi
jmp 0x4066b2
lea eax, [esp + 0xf8]
call fcn.0040d2ca
lea eax, [esp + 0x14]
call fcn.004322a6
jmp 0x406372