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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
sub esp, 0xf4
push 0x57bc38
push 0x57bc3c
push 0x57bc40
mov ebx, dword [ebp + 0x10]
push ebx
push 0x57bc44
push 0x57bc48
push 0x57bc4c
push 0x57bc50
push 0x57bc54
push 0x57bc58
call fcn.0042a3f0
mov eax, dword [0x58b8e0]
cmp eax, 0xe
je 0x4085e4
cmp eax, 0xd
jne 0x4085fc
xor eax, eax
push eax
push eax
push eax
push eax
push eax
push 0xa
push 0x55a004
call fcn.00416500
mov dword [0x57bc5c], eax
cmp dword [ebx], 0
jl 0x408ca5
movsd xmm0, qword [0x58b960]
pxor xmm1, xmm1
ucomisd xmm0, xmm1
mov eax, dword [0x587700]
mov dword [0x57bc60], 1
lea edi, [eax + eax]
jne 0x40862d
jp 0x40862d
mov edi, eax
test edi, edi
jle 0x408a86
mov edx, dword [0x57bc5c]
mov eax, 1
mov dword [esp + 0x44], edx
mov esi, dword [eax*4 + 0x587a5c]
test esi, esi
jle 0x408a78
mov edx, dword [0x587700]
cmp eax, edx
jle 0x40867d
push ebx
push 1
push 0x55a010
push 0x57bc64
push 0x559d18
sub eax, edx
mov dword [0x57bc64], eax
call fcn.0041bce0
jmp 0x408694
push ebx
push 1
push 0x55a014
push 0x57bc60
push 0x559d18
call fcn.0041bce0
cmp dword [ebx], 0
jl 0x408ca5
mov dword [0x57bc64], 1
mov dword [esp + 0x5c], esi
mov dword [esp + 0x14], edi
mov eax, dword [0x57bc60]
cmp eax, dword [0x587700]
jg 0x4087a2
mov dword [esp + 0x90], 0
lea ebx, [esp + 0x90]
mov dword [esp + 0xe0], 0x58b758
lea eax, [esp + 0xe0]
push 0x20
push eax
push 0x559d44
push 0x8384ff01
push 0x4d
push ebx
call fcn.004e7090
add esp, 0x18
test eax, eax
jne 0x408782
mov dword [esp + 0xd0], 0x58b754
lea eax, [esp + 0xd0]
push eax
push 0x559d4c
push ebx
call fcn.004e8930
add esp, 0xc
test eax, eax
jne 0x408782
mov eax, dword [0x58b754]
xor edx, edx
test eax, eax
cmovl eax, edx
mov edx, 1
mov esi, dword [0x5743d8]
shl esi, 2
mov edi, dword [0x5743b8]
sub edi, esi
lea ecx, [eax + 1]
mov dword [esp + 0x6c], eax
lea eax, [esp + 0x60]
add edi, 4
mov dword [esp + 0x60], edx
mov dword [esp + 0x64], edi
mov dword [esp + 0x68], edx
mov dword [esp + 0x70], 4
push eax
push 0x559d54
push ebx
mov dword [0x57bc8c], ecx
call fcn.004e8930
add esp, 0xc
test eax, eax
jle 0x408d39
mov ebx, dword [ebp + 0x10]
mov dword [ebx], 0xffffff96
add esp, 0xf4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0xc
mov dword [esp + 0xb0], 0
lea ebx, [esp + 0xb0]
mov dword [esp + 0xe8], 0x58b758
lea eax, [esp + 0xe8]
push 0x20
push eax
push 0x559d1c
push 0x8384ff01
push 0x4d
push ebx
call fcn.004e7090
add esp, 0x18
test eax, eax
jne 0x4088ce
mov dword [esp + 0xd8], 0x58b754
lea eax, [esp + 0xd8]
push eax
push 0x559d24
push ebx
call fcn.004e8930
add esp, 0xc
test eax, eax
jne 0x4088ce
mov eax, dword [0x58b754]
xor edx, edx
test eax, eax
cmovl eax, edx
mov edx, 1
mov esi, dword [0x5743d8]
shl esi, 2
mov edi, dword [0x5743b8]
sub edi, esi
lea ecx, [eax + 1]
mov dword [esp + 0x84], eax
lea eax, [esp + 0x78]
add edi, 4
mov dword [esp + 0x78], edx
mov dword [esp + 0x7c], edi
mov dword [esp + 0x80], edx
mov dword [esp + 0x88], 4
push eax
push 0x559d2c
push ebx
mov dword [0x57bc94], ecx
call fcn.004e8930
add esp, 0xc
test eax, eax
jne 0x4088ce
mov eax, dword [0x587650]
xor edx, edx
test eax, eax
cmovl eax, edx
mov edx, 1
mov esi, dword [0x574368]
shl esi, 3
mov edi, dword [0x574348]
sub edi, esi
lea ecx, [eax + 1]
mov dword [esp + 0x24], eax
lea eax, [esp + 0x18]
add edi, 8
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x20], edx
mov dword [esp + 0x28], 8
push eax
push 0x559d34
push ebx
mov dword [0x57bc94], ecx
call fcn.004e8930
add esp, 0xc
test eax, eax
jle 0x408cb4
mov eax, dword [ebp + 0x10]
mov dword [eax], 0xffffff96
mov ebx, dword [0x58b754]
lea esi, [esp + 0x2c]
mov eax, dword [0x574368]
shl eax, 3
neg eax
lea edx, [ebx + 1]
imul ebx, edx
add eax, dword [0x574348]
mov ecx, ebx
shr ecx, 0x1f
add ebx, ecx
movsd xmm0, qword [eax + 8]
mulsd xmm0, qword [0x58b960]
sar ebx, 1
mov dword [esp + 0x2c], ebx
push esi
push 0x57bc30
push dword [0x574370]
movsd qword [0x57bc30], xmm0
call fcn.00431470
mov eax, dword [ebp + 0x10]
mov eax, dword [eax]
test eax, eax
jl 0x408ca5
mov eax, dword [0x58b8e0]
cmp eax, 0xe
je 0x40894e
cmp eax, 0xd
jne 0x408976
mov eax, dword [0x5748f0]
mov edx, dword [esp + 0x44]
mov ecx, dword [0x574910]
shl ecx, 3
lea ebx, [eax + edx*8]
sub ebx, ecx
push ebx
push 0x58b754
push dword [0x5743b8]
call fcn.00421cf0
mov edx, dword [0x57bc44]
sub edx, dword [0x574910]
mov eax, dword [0x5748f0]
lea ecx, [eax + edx*8]
push ecx
push 0x58b754
push dword [0x5743b8]
call fcn.004205b0
mov ebx, dword [0x5748f0]
mov edi, dword [0x57bc58]
mov edx, dword [0x57bc54]
mov esi, dword [0x574910]
shl esi, 3
lea ecx, [ebx + edi*8]
mov edi, dword [0x57bc50]
lea eax, [ebx + edx*8]
mov edx, dword [0x57bc4c]
sub eax, esi
mov dword [esp + 0x8c], eax
sub ecx, esi
mov dword [esp + 0x74], ecx
lea ecx, [ebx + edi*8]
mov eax, dword [0x57bc48]
sub ecx, esi
mov edi, dword [0x57bc40]
mov dword [esp + 0xd4], ecx
lea ecx, [ebx + edx*8]
sub ecx, esi
mov dword [esp + 0xdc], ecx
lea ecx, [ebx + eax*8]
mov eax, dword [0x57bc3c]
lea edx, [ebx + edi*8]
mov edi, dword [0x57bc38]
sub edx, esi
sub ecx, esi
lea eax, [ebx + eax*8]
sub eax, esi
lea ebx, [ebx + edi*8]
sub ebx, esi
push ebx
push eax
push edx
push dword [ebp + 0x10]
push ecx
push dword [esp + 0xf0]
push dword [esp + 0xec]
push dword [esp + 0xa8]
push dword [esp + 0x94]
call fcn.004272f0
mov eax, dword [ebp + 0x10]
cmp dword [eax], 0
jl 0x408ca5
mov eax, dword [0x57bc64]
inc eax
mov dword [0x57bc64], eax
cmp eax, dword [esp + 0x5c]
jle 0x4086af
mov edi, dword [esp + 0x14]
push 0x559d18
mov ebx, dword [ebp + 0x10]
call fcn.0041b5e0
mov eax, dword [0x57bc60]
inc eax
mov dword [0x57bc60], eax
cmp eax, edi
jle 0x408644
xor eax, eax
push eax
push eax
push eax
push eax
push eax
push 0xa
push 0x55a018
call fcn.00416500
mov esi, eax
mov eax, dword [0x574910]
shl eax, 3
mov edx, dword [0x5748f0]
sub edx, eax
push 0x58b8e4
lea ecx, [edx + esi*8]
push ecx
call fcn.0041a790
mov ecx, dword [0x5748f0]
mov edi, dword [0x57bc50]
mov eax, dword [0x57bc48]
mov ebx, dword [0x574910]
shl ebx, 3
lea edx, [ecx + edi*8]
mov edi, dword [0x57bc54]
sub edx, ebx
mov dword [esp + 0x14], edx
lea edx, [ecx + eax*8]
push 0x559d10
push 0x58b900
push 0x5876c4
push 0x58b8e4
push 0x58b8f0
sub edx, ebx
lea eax, [ecx + edi*8]
mov edi, ecx
sub eax, ebx
sub edi, ebx
lea esi, [edi + esi*8]
mov edi, dword [0x57bc44]
lea ecx, [ecx + edi*8]
sub ecx, ebx
push ecx
push esi
push eax
push edx
push dword [esp + 0x38]
mov ebx, dword [ebp + 0x10]
call fcn.00420740
cmp dword [ebx], 0
jl 0x408ca5
push ebx
push 3
push dword [ebp + 8]
call fcn.00420c10
cmp dword [ebx], 0
jl 0x408ca5
movsd xmm0, qword [0x58b970]
pxor xmm1, xmm1
ucomisd xmm0, xmm1
jp 0x408b58
je 0x408ba8
mov ecx, dword [0x5748f0]
mov edi, dword [0x57bc50]
push 0x58b900
mov eax, dword [0x57bc48]
push 0x5876c4
push 0x58b8e4
mov esi, dword [0x574910]
lea edx, [ecx + edi*8]
mov edi, dword [0x57bc54]
lea eax, [ecx + eax*8]
shl esi, 3
push 0x58b8f0
push 0x58b970
sub eax, esi
lea ecx, [ecx + edi*8]
sub ecx, esi
sub edx, esi
push ecx
push eax
push edx
call fcn.00420950
movsd xmm0, qword [0x58b978]
pxor xmm1, xmm1
ucomisd xmm0, xmm1
jp 0x408bbc
je 0x408c0c
mov ecx, dword [0x5748f0]
mov edi, dword [0x57bc50]
push 0x58b900
mov eax, dword [0x57bc48]
push 0x5876c4
push 0x58b8e4
mov esi, dword [0x574910]
lea edx, [ecx + edi*8]
mov edi, dword [0x57bc54]
lea eax, [ecx + eax*8]
shl esi, 3
push 0x58b8f0
push 0x58b978
sub eax, esi
lea ecx, [ecx + edi*8]
sub ecx, esi
sub edx, esi
push ecx
push eax
push edx
call fcn.00420b30
movsd xmm0, qword [0x58b968]
pxor xmm1, xmm1
ucomisd xmm0, xmm1
jp 0x408c24
je 0x408ca5
push ebx
call fcn.0040bed0
cmp dword [ebx], 0
jl 0x408ca5
xor eax, eax
push eax
push eax
push eax
push eax
push eax
push 0xa
push 0x55a024
call fcn.00416500
mov esi, dword [0x5748f0]
mov edx, dword [0x57bc50]
mov ecx, dword [0x57bc48]
mov edi, dword [0x574910]
shl edi, 3
lea ebx, [esi + edx*8]
mov edx, dword [0x57bc54]
lea ecx, [esi + ecx*8]
push 0x58b900
push 0x5876c4
push 0x58b8e4
push 0x58b8f0
push 0x58b968
sub ecx, edi
lea edx, [esi + edx*8]
sub esi, edi
sub edx, edi
sub ebx, edi
lea eax, [esi + eax*8]
push eax
push edx
push ecx
push ebx
call fcn.00420a30
push 0xa
push 0x55a030
call fcn.004149a0
add esp, 0xf4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0xc
mov eax, dword [0x58b754]
xor edi, edi
mov dword [esp + 0xb0], edi
mov dword [esp + 0x58], 8
lea edx, [eax + 1]
imul eax, edx
mov ecx, eax
shr ecx, 0x1f
add eax, ecx
sar eax, 1
test eax, eax
mov edx, dword [0x574390]
cmovl eax, edi
shl edx, 3
mov ecx, dword [0x574370]
sub ecx, edx
add ecx, 8
lea esi, [eax + 1]
mov dword [0x57bc94], esi
mov esi, 1
mov dword [esp + 0x48], esi
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x50], esi
mov dword [esp + 0x54], eax
lea eax, [esp + 0x48]
push 0x20
push eax
push 0x559d3c
push 0x8384ff01
push 0x4d
push ebx
call fcn.004e7090
add esp, 0x18
test eax, eax
jg 0x4088d6
jmp 0x4088df
mov eax, dword [0x58b754]
xor edi, edi
mov dword [esp + 0x90], edi
mov dword [esp + 0x40], 8
lea edx, [eax + 1]
imul eax, edx
mov ecx, eax
shr ecx, 0x1f
add eax, ecx
sar eax, 1
test eax, eax
mov edx, dword [0x574390]
cmovl eax, edi
shl edx, 3
mov ecx, dword [0x574370]
sub ecx, edx
add ecx, 8
lea esi, [eax + 1]
mov dword [0x57bc8c], esi
mov esi, 1
mov dword [esp + 0x30], esi
mov dword [esp + 0x34], ecx
mov dword [esp + 0x38], esi
mov dword [esp + 0x3c], eax
lea eax, [esp + 0x30]
push 0x20
push eax
push 0x559d5c
push 0x8384ff01
push 0x4d
push ebx
call fcn.004e7090
add esp, 0x18
test eax, eax
jg 0x40878a
mov eax, dword [0x5876fc]
xor ecx, ecx
inc eax
imul eax, dword [0x58b754]
test eax, eax
mov esi, dword [0x574368]
cmovl eax, ecx
shl esi, 3
mov edi, dword [0x574348]
sub edi, esi
add edi, 8
lea edx, [eax + 1]
mov dword [0x57bc8c], edx
mov edx, 1
mov dword [esp + 0x90], ecx
mov dword [esp], edx
mov dword [esp + 4], edi
mov dword [esp + 8], edx
mov dword [esp + 0xc], eax
lea eax, [esp]
mov dword [esp + 0x10], 8
push 0x20
push eax
push 0x559d64
push 0x8384ff01
push 0x4d
push ebx
call fcn.004e7090
add esp, 0x18
test eax, eax
jg 0x40878a
jmp 0x408932