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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x13c
mov eax, dword [0x44c4e8]
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 0x4065d0
mov eax, 0x80004005
mov ecx, dword [esp + 0x144]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004301f3
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 0x406700
mov byte [esp + 0x12], cl
lea ecx, [esp + 0x20]
push ecx
push 0x3b
mov ebx, eax
call fcn.0040e148
pop ecx
pop ecx
lea eax, [esp + 0x20]
xor edi, edi
call fcn.00401ca2
test eax, eax
jbe 0x406650
push edi
lea esi, [esp + 0x24]
call fcn.00409249
mov esi, eax
push 0x440ed8
push esi
mov ebx, 0x440db0
call fcn.0040ceb4
push 0x5c
push 0x2f
call fcn.0040cf09
push 0x440ecc
push esi
call fcn.0040cf84
add esp, 0x18
lea eax, [esp + 0x20]
inc edi
call fcn.00401ca2
cmp edi, eax
jb 0x40660f
mov ebx, dword [esp + 0x24]
cmp ebx, dword [esp + 0x28]
jbe 0x40665f
call fcn.004300e0
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 0x40667e
call fcn.004300e0
mov dword [esp + 0x3c], esi
lea edi, [esp + 0x38]
lea esi, [esp + 0x30]
call fcn.00405564
test al, al
je 0x4066e1
call fcn.00405547
cmp dword [eax + 0x14], 0
mov esi, dword [esp + 0x30]
jne 0x4066c9
push ebx
push dword [esp + 0x2c]
lea eax, [ebx + 0x1c]
call fcn.004075b7
mov eax, dword [esp + 0x30]
pop ecx
pop ecx
push eax
add eax, 0xffffffe4
call fcn.0040570a
sub dword [esp + 0x28], 0x1c
mov dword [esp + 0x30], esi
jmp 0x40666b
test esi, esi
jne 0x4066d2
call fcn.004300e0
cmp ebx, dword [esi + 8]
jb 0x4066dc
call fcn.004300e0
add ebx, 0x1c
jmp 0x40666b
lea eax, [esp + 0x20]
call fcn.00401ca2
test eax, eax
jne 0x4066fc
lea esi, [esp + 0x20]
call fcn.00405470
jmp 0x4065b4
mov ebx, dword [esp + 0x54]
mov eax, dword [esp + 0x58]
lea esi, [esp + 0xc0]
call fcn.00401c83
cmp dword [esp + 0xd4], 0
je 0x406726
mov eax, esi
push 0x10
push eax
call fcn.0040d772
pop ecx
pop ecx
mov eax, dword [ebx]
test eax, eax
mov dword [esp + 0x18], eax
je 0x406735
call fcn.0040e273
lea eax, [ebx + 8]
call fcn.00411663
mov edi, eax
xor esi, esi
cmp edi, esi
mov dword [esp + 0x30], edi
jne 0x40677d
cmp dword [esp + 0x18], esi
je 0x406758
mov esi, dword [esp + 0x18]
call fcn.0040e280
mov edi, 0x80004005
push 0
push 1
lea esi, [esp + 0xc8]
call fcn.00401d40
lea esi, [esp + 0x20]
call fcn.00405470
mov eax, edi
jmp 0x4065b9
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 0x4067bd
lea esi, [esp + 0x44]
call fcn.00426326
mov esi, dword [esp + 0x18]
test esi, esi
je 0x4067b7
call fcn.0040e280
mov edi, dword [esp + 0x1c]
jmp 0x40675d
cmp dword [esp + 0x40], esi
jne 0x4067dd
lea esi, [esp + 0x44]
call fcn.00426326
mov esi, dword [esp + 0x18]
test esi, esi
je 0x4067d9
call fcn.0040e280
xor edi, edi
jmp 0x40675d
cmp dword [esp + 0x40], esi
mov dword [esp + 0x14], esi
jbe 0x406902
lea eax, [esp + 0x98]
mov byte [esp + 0x13], 0
call fcn.0040e875
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 0x4069e3
lea eax, [esp + 0x98]
call fcn.00411663
cmp eax, 4
jne 0x406843
lea eax, [esp + 0x98]
call fcn.0040e8b5
test al, al
je 0x406843
mov byte [esp + 0x13], 1
lea eax, [esp + 0x98]
call fcn.0040e89f
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 0x4069e3
lea eax, [esp + 0x98]
call fcn.0040e8b1
lea esi, [esp + 0xdc]
call fcn.00401c83
cmp byte [esp + 0x12], 0
je 0x40693e
lea esi, [ebx + 0x2c]
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.00406bff
lea edi, [esp + 0x6c]
mov esi, eax
call fcn.00410d90
test al, al
je 0x4068ca
mov eax, ebx
push eax
lea eax, [esp + 0x48]
call fcn.00406c67
push 0
push 1
lea esi, [esp + 0xe4]
call fcn.00401d40
lea eax, [esp + 0x98]
call fcn.0040e88e
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 0x4067eb
cmp dword [esp + 0x48], esi
je 0x4067c3
mov eax, dword [esp + 0x4c]
sub eax, dword [esp + 0x48]
sar eax, 2
je 0x4067c3
push 0x140
call fcn.00430189
cmp eax, esi
pop ecx
je 0x4069f4
mov ebx, eax
call fcn.0041201d
mov edi, eax
jmp 0x4069f6
cmp byte [esp + 0x13], 0
je 0x406963
push 0
push 1
lea esi, [esp + 0xe4]
call fcn.00401d40
lea eax, [esp + 0x98]
call fcn.0040e88e
jmp 0x4068ee
mov esi, dword [esp + 0x24]
cmp esi, dword [esp + 0x28]
jbe 0x406972
call fcn.004300e0
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 0x406991
call fcn.004300e0
mov dword [esp + 0x78], esi
lea edi, [esp + 0x74]
lea esi, [esp + 0x38]
call fcn.00405564
test al, al
je 0x4068ca
call fcn.00405547
lea ecx, [esp + 0xdc]
call fcn.0040cdf5
test eax, eax
jne 0x4069cd
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x48]
call fcn.00406c67
mov eax, dword [esp + 0x3c]
cmp eax, dword [esp + 0x28]
jb 0x4069dc
call fcn.004300e0
add dword [esp + 0x3c], 0x1c
jmp 0x406982
lea eax, [esp + 0x98]
call fcn.0040e88e
jmp 0x4067a1
xor edi, edi
mov ecx, edi
neg ecx
lea eax, [edi + 8]
sbb ecx, ecx
and ecx, eax
lea esi, [esp + 0x14]
call fcn.00415c06
movzx eax, byte [ebp + 0x10]
push eax
movzx eax, byte [ebp + 0xc]
call fcn.004125c6
lea eax, [esp + 0xf8]
call fcn.0040e453
mov ebx, dword [esp + 0x54]
push eax
lea eax, [ebx + 0x10]
push eax
call fcn.0040e426
pop ecx
pop ecx
mov eax, 0x440db0
lea ecx, [esp + 0x7c]
call fcn.00402173
xor eax, eax
lea ecx, [esp + 0xf8]
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], eax
call fcn.0040e529
push edx
push eax
mov eax, ecx
call fcn.00411d33
push eax
lea eax, [esp + 0x88]
push eax
lea eax, [esp + 0x6c]
push eax
push dword [esp + 0x6c]
mov eax, dword [ebx + 0xc]
push dword [esp + 0x48]
push edi
call fcn.00412496
lea esi, [esp + 0x5c]
call fcn.00405470
push 0
push 1
lea esi, [esp + 0x84]
call fcn.00401d40
cmp byte [esp + 0x12], 0
je 0x406ab3
cmp dword [ebx + 0x34], 0
jne 0x406ab3
lea eax, [esp + 0x44]
call fcn.00406cc1
mov esi, dword [esp + 0x30]
mov edi, dword [esi]
lea eax, [esp + 0x14]
call fcn.00411663
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 0x406b0c
cmp byte [esp + 0x12], al
jne 0x406b0c
xor esi, esi
cmp dword [esp + 0x48], 0
je 0x406b0c
mov eax, dword [esp + 0x4c]
sub eax, dword [esp + 0x48]
sar eax, 2
cmp esi, eax
jae 0x406b0c
mov eax, dword [esp + 0x48]
lea eax, [eax + esi*4]
push eax
lea eax, [ebx + 0x2c]
lea edi, [esp + 0x60]
call fcn.00406b5b
inc esi
jmp 0x406adf
lea eax, [esp + 0xf8]
call fcn.0040e481
lea eax, [esp + 0x14]
call fcn.00426a1d
jmp 0x4067a1