Function at 0x406180
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 0x4061cf
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 0x4062ff
mov byte [esp + 0x12], cl
lea ecx, [esp + 0x20]
push ecx
push 0x3b
mov ebx, eax
call fcn.0040e05d
pop ecx
pop ecx
lea eax, [esp + 0x20]
xor edi, edi
call fcn.004011a7
test eax, eax
jbe 0x40624f
push edi
lea esi, [esp + 0x24]
call fcn.00408f13
mov esi, eax
push 0x443ef0
push esi
mov ebx, 0x443e20
call fcn.0040c7f7
push 0x5c
push 0x2f
call fcn.0040c84c
push 0x443ee4
push esi
call fcn.0040c8c7
add esp, 0x18
lea eax, [esp + 0x20]
inc edi
call fcn.004011a7
cmp edi, eax
jb 0x40620e
mov ebx, dword [esp + 0x24]
cmp ebx, dword [esp + 0x28]
jbe 0x40625e
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 0x40627d
call fcn.00432a02
mov dword [esp + 0x3c], esi
lea edi, [esp + 0x38]
lea esi, [esp + 0x30]
call fcn.004050d3
test al, al
je 0x4062e0
call fcn.004050b6
cmp dword [eax + 0x14], 0
mov esi, dword [esp + 0x30]
jne 0x4062c8
push ebx
push dword [esp + 0x2c]
lea eax, [ebx + 0x1c]
call fcn.004073cc
mov eax, dword [esp + 0x30]
pop ecx
pop ecx
push eax
add eax, 0xffffffe4
call fcn.00401768
sub dword [esp + 0x28], 0x1c
mov dword [esp + 0x30], esi
jmp 0x40626a
test esi, esi
jne 0x4062d1
call fcn.00432a02
cmp ebx, dword [esi + 8]
jb 0x4062db
call fcn.00432a02
add ebx, 0x1c
jmp 0x40626a
lea eax, [esp + 0x20]
call fcn.004011a7
test eax, eax
jne 0x4062fb
lea esi, [esp + 0x20]
call fcn.00401519
jmp 0x4061b3
mov ebx, dword [esp + 0x54]
mov eax, dword [esp + 0x58]
lea esi, [esp + 0xc0]
call fcn.00401ad1
cmp dword [esp + 0xd4], 0
je 0x406325
mov eax, esi
push 0x10
push eax
call fcn.0040d0b5
pop ecx
pop ecx
mov eax, dword [ebx]
test eax, eax
mov dword [esp + 0x18], eax
je 0x406334
call fcn.0040e188
lea eax, [ebx + 8]
call fcn.0041d2f4
mov edi, eax
xor esi, esi
cmp edi, esi
mov dword [esp + 0x30], edi
jne 0x40637c
cmp dword [esp + 0x18], esi
je 0x406357
mov esi, dword [esp + 0x18]
call fcn.0040e195
mov edi, 0x80004005
push 0
push 1
lea esi, [esp + 0xc8]
call fcn.00401432
lea esi, [esp + 0x20]
call fcn.00401519
mov eax, edi
jmp 0x4061b8
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 0x4063bc
lea esi, [esp + 0x44]
call fcn.00428a79
mov esi, dword [esp + 0x18]
test esi, esi
je 0x4063b6
call fcn.0040e195
mov edi, dword [esp + 0x1c]
jmp 0x40635c
cmp dword [esp + 0x40], esi
jne 0x4063dc
lea esi, [esp + 0x44]
call fcn.00428a79
mov esi, dword [esp + 0x18]
test esi, esi
je 0x4063d8
call fcn.0040e195
xor edi, edi
jmp 0x40635c
cmp dword [esp + 0x40], esi
mov dword [esp + 0x14], esi
jbe 0x406501
lea eax, [esp + 0x98]
mov byte [esp + 0x13], 0
call fcn.0040e1b7
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 0x4065e2
lea eax, [esp + 0x98]
call fcn.0041d2f4
cmp eax, 4
jne 0x406442
lea eax, [esp + 0x98]
call fcn.0040e1f7
test al, al
je 0x406442
mov byte [esp + 0x13], 1
lea eax, [esp + 0x98]
call fcn.0040e1e1
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 0x4065e2
lea eax, [esp + 0x98]
call fcn.0040e1f3
lea esi, [esp + 0xdc]
call fcn.00401ad1
cmp byte [esp + 0x12], 0
je 0x40653d
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.0040687a
lea edi, [esp + 0x6c]
mov esi, eax
call fcn.00414f82
test al, al
je 0x4064c9
mov eax, ebx
push eax
lea eax, [esp + 0x48]
call fcn.004068f5
push 0
push 1
lea esi, [esp + 0xe4]
call fcn.00401432
lea eax, [esp + 0x98]
call fcn.0040e1d0
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 0x4063ea
cmp dword [esp + 0x48], esi
je 0x4063c2
mov eax, dword [esp + 0x4c]
sub eax, dword [esp + 0x48]
sar eax, 2
je 0x4063c2
push 0x160
call fcn.0043286e
cmp eax, esi
pop ecx
je 0x4065f3
mov ebx, eax
call fcn.00411ca5
mov edi, eax
jmp 0x4065f5
cmp byte [esp + 0x13], 0
je 0x406562
push 0
push 1
lea esi, [esp + 0xe4]
call fcn.00401432
lea eax, [esp + 0x98]
call fcn.0040e1d0
jmp 0x4064ed
mov esi, dword [esp + 0x24]
cmp esi, dword [esp + 0x28]
jbe 0x406571
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 0x406590
call fcn.00432a02
mov dword [esp + 0x78], esi
lea edi, [esp + 0x74]
lea esi, [esp + 0x38]
call fcn.004050d3
test al, al
je 0x4064c9
call fcn.004050b6
lea ecx, [esp + 0xdc]
call fcn.0040c728
test al, al
je 0x4065cc
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x48]
call fcn.004068f5
mov eax, dword [esp + 0x3c]
cmp eax, dword [esp + 0x28]
jb 0x4065db
call fcn.00432a02
add dword [esp + 0x3c], 0x1c
jmp 0x406581
lea eax, [esp + 0x98]
call fcn.0040e1d0
jmp 0x4063a0
xor edi, edi
mov ecx, edi
neg ecx
lea eax, [edi + 8]
sbb ecx, ecx
and ecx, eax
lea esi, [esp + 0x14]
call fcn.004073be
movzx eax, byte [ebp + 0x10]
push eax
movzx eax, byte [ebp + 0xc]
call fcn.004122f6
lea eax, [esp + 0xf8]
call fcn.0040d2b3
mov ebx, dword [esp + 0x54]
push eax
lea esi, [ebx + 0x14]
push esi
call fcn.0040dae8
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.0040d38d
push edx
push eax
mov eax, ecx
call fcn.0040d389
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.00412149
lea esi, [esp + 0x5c]
call fcn.00401519
push 0
push 1
lea esi, [esp + 0x84]
call fcn.00401432
cmp byte [esp + 0x12], 0
je 0x4066b4
cmp dword [ebx + 0x38], 0
jne 0x4066b4
lea eax, [esp + 0x44]
call fcn.0040694f
mov esi, dword [esp + 0x30]
mov edi, dword [esi]
lea eax, [esp + 0x14]
call fcn.0041d2f4
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 0x40670d
cmp byte [esp + 0x12], al
jne 0x40670d
xor esi, esi
cmp dword [esp + 0x48], 0
je 0x40670d
mov eax, dword [esp + 0x4c]
sub eax, dword [esp + 0x48]
sar eax, 2
cmp esi, eax
jae 0x40670d
mov eax, dword [esp + 0x48]
lea eax, [eax + esi*4]
push eax
lea eax, [ebx + 0x30]
lea edi, [esp + 0x60]
call fcn.004067d6
inc esi
jmp 0x4066e0
lea eax, [esp + 0xf8]
call fcn.0040d2e1
lea eax, [esp + 0x14]
call fcn.004073b2
jmp 0x4063a0