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

Disassembly:
sub esp, 0x84
push esi
mov esi, dword [esp + 0x8c]
push 0xffffffffffffffff
push esi
call fcn.00588d30
add esp, 8
cmp dword [esi + 0x58], 2
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], edx
jge 0x5891b4
mov eax, 0xffffff7d
pop esi
add esp, 0x84
ret
cmp dword [esi + 4], 0
jne 0x5891c7
mov eax, 0xffffff76
pop esi
add esp, 0x84
ret
push ebx
mov ebx, dword [esp + 0x98]
test ebx, ebx
jl 0x58977b
mov ecx, dword [esp + 0x94]
jg 0x5891e8
test ecx, ecx
jb 0x58977b
cmp ebx, edx
jg 0x58977b
jl 0x5891fa
cmp ecx, eax
ja 0x58977b
push ebp
push edi
mov edi, dword [esi + 0x34]
sub edi, 1
mov dword [esp + 0x30], edi
js 0x589242
mov ebp, dword [esi + 0x44]
mov ecx, edi
shl ecx, 4
lea ecx, [ecx + ebp + 8]
mov ebp, dword [ecx]
sub eax, ebp
mov ebp, dword [ecx + 4]
sbb edx, ebp
cmp ebx, edx
jg 0x589236
jl 0x58922c
cmp dword [esp + 0x9c], eax
jae 0x589236
sub edi, 1
sub ecx, 0x10
test edi, edi
jge 0x589214
mov dword [esp + 0x30], edi
mov dword [esp + 0x2c], edx
mov dword [esp + 0x28], eax
mov edx, dword [esi + 0x38]
mov eax, dword [edx + edi*8 + 8]
mov ebp, dword [edx + edi*8 + 4]
lea ecx, [edx + edi*8]
mov edx, dword [ecx + 0xc]
shl edi, 4
mov dword [esp + 0x18], eax
mov eax, dword [esi + 0x44]
mov ebx, dword [edi + eax]
mov dword [esp + 0x1c], edx
mov edx, dword [ecx]
lea ecx, [edi + eax]
mov eax, dword [ecx + 4]
mov edi, dword [ecx + 8]
mov ecx, dword [ecx + 0xc]
add edi, ebx
adc ecx, eax
mov dword [esp + 0x60], ecx
mov ecx, ebx
sub ecx, dword [esp + 0x28]
mov dword [esp + 0x40], eax
sbb eax, dword [esp + 0x2c]
add ecx, dword [esp + 0x9c]
mov dword [esp + 0x20], edx
adc eax, dword [esp + 0xa0]
cmp ebp, dword [esp + 0x1c]
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x5c], edi
mov dword [esp + 0x34], ecx
mov dword [esp + 0x38], eax
mov dword [esp + 0x44], edx
mov dword [esp + 0x48], ebp
jg 0x589521
jl 0x5892d0
cmp edx, dword [esp + 0x18]
jae 0x589521
jmp 0x5892d0
mov ecx, dword [esp + 0x18]
sub ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
sbb eax, ebp
test eax, eax
jg 0x5892f4
jl 0x5892ec
cmp ecx, 0x2134
jae 0x5892f4
mov ebx, dword [esp + 0x20]
mov edi, ebp
jmp 0x589351
mov edx, dword [esp + 0x34]
mov edi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x38]
sub edx, edi
sbb ebx, dword [esp + 0x40]
push eax
push ecx
push ebx
push edx
call fcn.0055f390
mov ecx, dword [esp + 0x5c]
sub ecx, edi
mov edi, dword [esp + 0x60]
sbb edi, dword [esp + 0x40]
push edi
push ecx
push edx
push eax
call fcn.0055f2e0
mov ebx, eax
add ebx, dword [esp + 0x20]
mov edi, edx
adc edi, ebp
sub ebx, 0x2134
sbb edi, 0
cmp edi, ebp
jg 0x589351
jl 0x589345
cmp ebx, dword [esp + 0x20]
ja 0x589351
mov ebx, dword [esp + 0x20]
add ebx, 1
mov edi, ebp
adc edi, 0
push edi
push ebx
mov eax, esi
call fcn.00588060
add esp, 8
lea ecx, [ecx]
mov edx, dword [esp + 0x18]
sub edx, dword [esi + 8]
mov eax, dword [esp + 0x1c]
sbb eax, dword [esi + 0xc]
lea ecx, [esp + 0x64]
push eax
push edx
push ecx
call fcn.005880a0
add esp, 0xc
cmp eax, 0xffffff80
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
jne 0x589393
cmp edx, 0xffffffff
je 0x58975e
cmp dword [esp + 0x14], 0
jg 0x5893f1
jl 0x5893a3
cmp dword [esp + 0x10], 0
jae 0x5893f1
mov ecx, dword [esp + 0x20]
add ecx, 1
mov eax, ebp
adc eax, 0
cmp edi, eax
jl 0x589521
jg 0x5893c1
cmp ebx, ecx
jbe 0x589521
mov edx, ebx
or edx, edi
je 0x58975e
add ebx, 0xffffdecc
adc edi, 0xffffffff
cmp edi, ebp
jg 0x5894c8
jl 0x5893e8
cmp ebx, dword [esp + 0x20]
ja 0x5894c8
mov ebx, ecx
mov edi, eax
jmp 0x5894c8
lea eax, [esp + 0x64]
push eax
call fcn.005e76b0
mov ecx, eax
and ecx, edx
add esp, 4
cmp ecx, 0xffffffff
je 0x5894d4
cmp edx, dword [esp + 0x38]
jg 0x589461
jl 0x589419
cmp eax, dword [esp + 0x34]
jae 0x589461
mov ecx, dword [esp + 0x10]
mov ebx, dword [esi + 8]
mov ebp, dword [esi + 0xc]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x34]
sub ecx, eax
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x38]
sbb eax, edx
test eax, eax
mov dword [esp + 0x20], ebx
mov dword [esp + 0x40], edx
jg 0x589507
jl 0x58945d
cmp ecx, 0xac44
ja 0x589507
mov edi, ebp
jmp 0x5894d4
mov ecx, dword [esp + 0x20]
add ecx, 1
mov dword [esp + 0x4c], ecx
mov ecx, ebp
adc ecx, 0
cmp edi, ecx
mov dword [esp + 0x50], ecx
jl 0x589521
jg 0x589489
cmp ebx, dword [esp + 0x4c]
jbe 0x589521
mov ecx, dword [esp + 0x18]
cmp ecx, dword [esi + 8]
jne 0x5894ef
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [esi + 0xc]
jne 0x5894ef
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
add ebx, 0xffffdecc
adc edi, 0xffffffff
cmp edi, ebp
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], eax
jg 0x5894c8
jl 0x5894c0
cmp ebx, dword [esp + 0x20]
ja 0x5894c8
mov ebx, dword [esp + 0x4c]
mov edi, dword [esp + 0x50]
push edi
push ebx
mov eax, esi
call fcn.00588060
add esp, 8
cmp ebp, dword [esp + 0x1c]
jg 0x589521
jl 0x589360
mov ecx, dword [esp + 0x18]
cmp dword [esp + 0x20], ecx
jae 0x589521
jmp 0x589360
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], edx
cmp ebp, dword [esp + 0x1c]
jl 0x5892d0
jg 0x589521
mov edx, dword [esp + 0x18]
cmp dword [esp + 0x20], edx
jb 0x5892d0
mov ebp, dword [esp + 0x48]
mov ebx, dword [esp + 0x44]
push ebp
push ebx
mov eax, esi
call fcn.00588060
or eax, 0xffffffff
push eax
push eax
mov dword [esi + 0x50], eax
mov dword [esi + 0x54], eax
lea eax, [esp + 0x5c]
push eax
call fcn.005880a0
add esp, 0x14
test edx, edx
jg 0x589564
jl 0x589554
test eax, eax
jae 0x589564
pop edi
pop ebp
pop ebx
mov eax, 0xfffffffe
pop esi
add esp, 0x84
ret
mov edi, dword [esp + 0x30]
cmp edi, dword [esi + 0x60]
je 0x58958b
call fcn.00588930
lea ecx, [esp + 0x4c]
push ecx
mov dword [esi + 0x60], edi
call fcn.005e7740
mov dword [esi + 0x5c], eax
mov dword [esi + 0x58], 3
jmp 0x589597
lea edx, [esi + 0x1e0]
push edx
call fcn.005e9420
mov eax, dword [esi + 0x5c]
add esp, 4
push eax
lea edi, [esi + 0x78]
push edi
call fcn.005e7fd0
lea ecx, [esp + 0x54]
push ecx
push edi
call fcn.005e7cd0
lea edx, [esp + 0x84]
push edx
push edi
call fcn.005e8120
cdq
mov ecx, eax
add esp, 0x18
or ecx, edx
je 0x58961a
lea ebx, [ebx]
test edx, edx
jl 0x5896c0
jg 0x5895e2
test eax, eax
jb 0x5896c0
mov ecx, dword [esp + 0x84]
mov edx, dword [esp + 0x88]
mov eax, ecx
and eax, edx
cmp eax, 0xffffffff
jne 0x5896cd
push 0
push edi
call fcn.005e8100
lea ecx, [esp + 0x7c]
push ecx
push edi
call fcn.005e8120
cdq
mov ecx, eax
add esp, 0x10
or ecx, edx
jne 0x5895d0
push ebp
push ebx
mov eax, esi
call fcn.00588060
lea edx, [esp + 0x54]
push edx
mov eax, esi
call fcn.00588150
mov edi, edx
add esp, 0xc
test edi, edi
mov ebx, eax
mov dword [esp + 0x10], ebx
jl 0x58975e
jg 0x589650
test ebx, ebx
jb 0x58975e
lea esp, [esp]
lea eax, [esp + 0x4c]
push eax
call fcn.005e76b0
add esp, 4
cmp edx, 0xffffffff
jg 0x5896a6
jl 0x589669
cmp eax, 0xffffffff
ja 0x5896a6
lea ecx, [esp + 0x4c]
push ecx
call fcn.005e7680
add esp, 4
test eax, eax
je 0x5896a6
lea edx, [esp + 0x4c]
push edx
mov eax, esi
mov dword [esi + 8], ebx
mov dword [esi + 0xc], edi
call fcn.00588150
mov edi, edx
add esp, 4
test edi, edi
mov ebx, eax
jg 0x589650
jl 0x58969d
test ebx, ebx
jae 0x589650
mov dword [esp + 0x10], ebx
jmp 0x58975e
push edi
push ebx
push esi
mov dword [esp + 0x1c], ebx
call fcn.00588e20
add esp, 0xc
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x84
ret
mov dword [esp + 0x10], 0xffffff78
jmp 0x589756
mov eax, dword [esi + 0x60]
mov edi, dword [esi + 0x44]
shl eax, 4
sub ecx, dword [eax + edi]
sbb edx, dword [eax + edi + 4]
xor eax, eax
cmp edx, eax
mov dword [esi + 0x50], ecx
mov dword [esi + 0x54], edx
jg 0x5896f5
jl 0x5896ef
cmp ecx, eax
jae 0x5896f5
mov dword [esi + 0x50], eax
mov dword [esi + 0x54], eax
mov eax, dword [esp + 0x28]
add dword [esi + 0x50], eax
mov ecx, dword [esp + 0x2c]
mov edi, dword [esp + 0xa0]
adc dword [esi + 0x54], ecx
mov edx, dword [esi + 0x54]
cmp edx, edi
jg 0x58974e
jl 0x58971f
mov eax, dword [esi + 0x50]
cmp eax, dword [esp + 0x9c]
ja 0x58974e
push 0xffffffffffffffff
push esi
call fcn.00588d30
add esp, 8
cmp edi, edx
jg 0x58974e
jl 0x589739
cmp dword [esp + 0x9c], eax
ja 0x58974e
fldz
pop edi
pop ebp
fst qword [esi + 0x68]
pop ebx
fstp qword [esi + 0x70]
xor eax, eax
pop esi
add esp, 0x84
ret
mov dword [esp + 0x10], 0xffffff7f
mov dword [esp + 0x14], 0xffffffff
or eax, 0xffffffff
mov dword [esi + 0x50], eax
mov dword [esi + 0x54], eax
call fcn.00588930
mov eax, dword [esp + 0x10]
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x84
ret
pop ebx
mov eax, 0xffffff7d
pop esi
add esp, 0x84
ret