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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x13c
mov eax, dword [0x44b4e8]
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 0x4059a5
mov eax, 0x80004005
mov ecx, dword [esp + 0x144]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0042f583
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 0x405ad5
mov byte [esp + 0x12], cl
lea ecx, [esp + 0x20]
push ecx
push 0x3b
mov ebx, eax
call fcn.0040d521
pop ecx
pop ecx
lea eax, [esp + 0x20]
xor edi, edi
call fcn.004010a2
test eax, eax
jbe 0x405a25
push edi
lea esi, [esp + 0x24]
call fcn.00408622
mov esi, eax
push 0x43fed8
push esi
mov ebx, 0x43fdb0
call fcn.0040c28d
push 0x5c
push 0x2f
call fcn.0040c2e2
push 0x43fecc
push esi
call fcn.0040c35d
add esp, 0x18
lea eax, [esp + 0x20]
inc edi
call fcn.004010a2
cmp edi, eax
jb 0x4059e4
mov ebx, dword [esp + 0x24]
cmp ebx, dword [esp + 0x28]
jbe 0x405a34
call fcn.0042f470
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 0x405a53
call fcn.0042f470
mov dword [esp + 0x3c], esi
lea edi, [esp + 0x38]
lea esi, [esp + 0x30]
call fcn.00404993
test al, al
je 0x405ab6
call fcn.00404976
cmp dword [eax + 0x14], 0
mov esi, dword [esp + 0x30]
jne 0x405a9e
push ebx
push dword [esp + 0x2c]
lea eax, [ebx + 0x1c]
call fcn.004069b0
mov eax, dword [esp + 0x30]
pop ecx
pop ecx
push eax
add eax, 0xffffffe4
call fcn.00404b39
sub dword [esp + 0x28], 0x1c
mov dword [esp + 0x30], esi
jmp 0x405a40
test esi, esi
jne 0x405aa7
call fcn.0042f470
cmp ebx, dword [esi + 8]
jb 0x405ab1
call fcn.0042f470
add ebx, 0x1c
jmp 0x405a40
lea eax, [esp + 0x20]
call fcn.004010a2
test eax, eax
jne 0x405ad1
lea esi, [esp + 0x20]
call fcn.00404899
jmp 0x405989
mov ebx, dword [esp + 0x54]
mov eax, dword [esp + 0x58]
lea esi, [esp + 0xc0]
call fcn.00401083
cmp dword [esp + 0xd4], 0
je 0x405afb
mov eax, esi
push 0x10
push eax
call fcn.0040cb4b
pop ecx
pop ecx
mov eax, dword [ebx]
test eax, eax
mov dword [esp + 0x18], eax
je 0x405b0a
call fcn.0040d64c
lea eax, [ebx + 8]
call fcn.0041f84a
mov edi, eax
xor esi, esi
cmp edi, esi
mov dword [esp + 0x30], edi
jne 0x405b52
cmp dword [esp + 0x18], esi
je 0x405b2d
mov esi, dword [esp + 0x18]
call fcn.0040d659
mov edi, 0x80004005
push 0
push 1
lea esi, [esp + 0xc8]
call fcn.00401140
lea esi, [esp + 0x20]
call fcn.00404899
mov eax, edi
jmp 0x40598e
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 0x405b92
lea esi, [esp + 0x44]
call fcn.0041dee5
mov esi, dword [esp + 0x18]
test esi, esi
je 0x405b8c
call fcn.0040d659
mov edi, dword [esp + 0x1c]
jmp 0x405b32
cmp dword [esp + 0x40], esi
jne 0x405bb2
lea esi, [esp + 0x44]
call fcn.0041dee5
mov esi, dword [esp + 0x18]
test esi, esi
je 0x405bae
call fcn.0040d659
xor edi, edi
jmp 0x405b32
cmp dword [esp + 0x40], esi
mov dword [esp + 0x14], esi
jbe 0x405cd7
lea eax, [esp + 0x98]
mov byte [esp + 0x13], 0
call fcn.0040d9ab
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 0x405db8
lea eax, [esp + 0x98]
call fcn.0041f84a
cmp eax, 4
jne 0x405c18
lea eax, [esp + 0x98]
call fcn.0040d9eb
test al, al
je 0x405c18
mov byte [esp + 0x13], 1
lea eax, [esp + 0x98]
call fcn.0040d9d5
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 0x405db8
lea eax, [esp + 0x98]
call fcn.0040d9e7
lea esi, [esp + 0xdc]
call fcn.00401083
cmp byte [esp + 0x12], 0
je 0x405d13
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.00405fd4
lea edi, [esp + 0x6c]
mov esi, eax
call fcn.004060cc
test al, al
je 0x405c9f
mov eax, ebx
push eax
lea eax, [esp + 0x48]
call fcn.0040603c
push 0
push 1
lea esi, [esp + 0xe4]
call fcn.00401140
lea eax, [esp + 0x98]
call fcn.0040d9c4
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 0x405bc0
cmp dword [esp + 0x48], esi
je 0x405b98
mov eax, dword [esp + 0x4c]
sub eax, dword [esp + 0x48]
sar eax, 2
je 0x405b98
push 0x140
call fcn.0042f519
cmp eax, esi
pop ecx
je 0x405dc9
mov ebx, eax
call fcn.0040fd54
mov edi, eax
jmp 0x405dcb
cmp byte [esp + 0x13], 0
je 0x405d38
push 0
push 1
lea esi, [esp + 0xe4]
call fcn.00401140
lea eax, [esp + 0x98]
call fcn.0040d9c4
jmp 0x405cc3
mov esi, dword [esp + 0x24]
cmp esi, dword [esp + 0x28]
jbe 0x405d47
call fcn.0042f470
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 0x405d66
call fcn.0042f470
mov dword [esp + 0x78], esi
lea edi, [esp + 0x74]
lea esi, [esp + 0x38]
call fcn.00404993
test al, al
je 0x405c9f
call fcn.00404976
lea ecx, [esp + 0xdc]
call fcn.0040c1ce
test eax, eax
jne 0x405da2
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x48]
call fcn.0040603c
mov eax, dword [esp + 0x3c]
cmp eax, dword [esp + 0x28]
jb 0x405db1
call fcn.0042f470
add dword [esp + 0x3c], 0x1c
jmp 0x405d57
lea eax, [esp + 0x98]
call fcn.0040d9c4
jmp 0x405b76
xor edi, edi
mov ecx, edi
neg ecx
lea eax, [edi + 8]
sbb ecx, ecx
and ecx, eax
lea esi, [esp + 0x14]
call fcn.004069a2
movzx eax, byte [ebp + 0x10]
push eax
movzx eax, byte [ebp + 0xc]
call fcn.004102fd
lea eax, [esp + 0xf8]
call fcn.0040dc06
mov ebx, dword [esp + 0x54]
push eax
lea eax, [ebx + 0x10]
push eax
call fcn.0040dbd9
pop ecx
pop ecx
mov eax, 0x43fdb0
lea ecx, [esp + 0x7c]
call fcn.00401573
xor eax, eax
lea ecx, [esp + 0xf8]
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], eax
call fcn.0040dce0
push edx
push eax
mov eax, ecx
call fcn.0040dcdc
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.004101cd
lea esi, [esp + 0x5c]
call fcn.00404899
push 0
push 1
lea esi, [esp + 0x84]
call fcn.00401140
cmp byte [esp + 0x12], 0
je 0x405e88
cmp dword [ebx + 0x34], 0
jne 0x405e88
lea eax, [esp + 0x44]
call fcn.00406096
mov esi, dword [esp + 0x30]
mov edi, dword [esi]
lea eax, [esp + 0x14]
call fcn.0041f84a
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 0x405ee1
cmp byte [esp + 0x12], al
jne 0x405ee1
xor esi, esi
cmp dword [esp + 0x48], 0
je 0x405ee1
mov eax, dword [esp + 0x4c]
sub eax, dword [esp + 0x48]
sar eax, 2
cmp esi, eax
jae 0x405ee1
mov eax, dword [esp + 0x48]
lea eax, [eax + esi*4]
push eax
lea eax, [ebx + 0x2c]
lea edi, [esp + 0x60]
call fcn.00405f30
inc esi
jmp 0x405eb4
lea eax, [esp + 0xf8]
call fcn.0040dc34
lea eax, [esp + 0x14]
call fcn.0041393d
jmp 0x405b76