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

Disassembly:
sub esp, 0x84
push esi
mov esi, dword [esp + 0x8c]
push 0xffffffffffffffff
push esi
call fcn.00589b80
add esp, 8
cmp dword [esi + 0x58], 2
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], edx
jge 0x58a004
mov eax, 0xffffff7d
pop esi
add esp, 0x84
ret
cmp dword [esi + 4], 0
jne 0x58a017
mov eax, 0xffffff76
pop esi
add esp, 0x84
ret
push ebx
mov ebx, dword [esp + 0x98]
test ebx, ebx
jl 0x58a5cb
mov ecx, dword [esp + 0x94]
jg 0x58a038
test ecx, ecx
jb 0x58a5cb
cmp ebx, edx
jg 0x58a5cb
jl 0x58a04a
cmp ecx, eax
ja 0x58a5cb
push ebp
push edi
mov edi, dword [esi + 0x34]
sub edi, 1
mov dword [esp + 0x30], edi
js 0x58a092
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 0x58a086
jl 0x58a07c
cmp dword [esp + 0x9c], eax
jae 0x58a086
sub edi, 1
sub ecx, 0x10
test edi, edi
jge 0x58a064
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 0x58a371
jl 0x58a120
cmp edx, dword [esp + 0x18]
jae 0x58a371
jmp 0x58a120
mov ecx, dword [esp + 0x18]
sub ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
sbb eax, ebp
test eax, eax
jg 0x58a144
jl 0x58a13c
cmp ecx, 0x2134
jae 0x58a144
mov ebx, dword [esp + 0x20]
mov edi, ebp
jmp 0x58a1a1
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.005601d0
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.00560120
mov ebx, eax
add ebx, dword [esp + 0x20]
mov edi, edx
adc edi, ebp
sub ebx, 0x2134
sbb edi, 0
cmp edi, ebp
jg 0x58a1a1
jl 0x58a195
cmp ebx, dword [esp + 0x20]
ja 0x58a1a1
mov ebx, dword [esp + 0x20]
add ebx, 1
mov edi, ebp
adc edi, 0
push edi
push ebx
mov eax, esi
call fcn.00588eb0
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.00588ef0
add esp, 0xc
cmp eax, 0xffffff80
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
jne 0x58a1e3
cmp edx, 0xffffffff
je 0x58a5ae
cmp dword [esp + 0x14], 0
jg 0x58a241
jl 0x58a1f3
cmp dword [esp + 0x10], 0
jae 0x58a241
mov ecx, dword [esp + 0x20]
add ecx, 1
mov eax, ebp
adc eax, 0
cmp edi, eax
jl 0x58a371
jg 0x58a211
cmp ebx, ecx
jbe 0x58a371
mov edx, ebx
or edx, edi
je 0x58a5ae
add ebx, 0xffffdecc
adc edi, 0xffffffff
cmp edi, ebp
jg 0x58a318
jl 0x58a238
cmp ebx, dword [esp + 0x20]
ja 0x58a318
mov ebx, ecx
mov edi, eax
jmp 0x58a318
lea eax, [esp + 0x64]
push eax
call fcn.005e8360
mov ecx, eax
and ecx, edx
add esp, 4
cmp ecx, 0xffffffff
je 0x58a324
cmp edx, dword [esp + 0x38]
jg 0x58a2b1
jl 0x58a269
cmp eax, dword [esp + 0x34]
jae 0x58a2b1
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 0x58a357
jl 0x58a2ad
cmp ecx, 0xac44
ja 0x58a357
mov edi, ebp
jmp 0x58a324
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 0x58a371
jg 0x58a2d9
cmp ebx, dword [esp + 0x4c]
jbe 0x58a371
mov ecx, dword [esp + 0x18]
cmp ecx, dword [esi + 8]
jne 0x58a33f
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [esi + 0xc]
jne 0x58a33f
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 0x58a318
jl 0x58a310
cmp ebx, dword [esp + 0x20]
ja 0x58a318
mov ebx, dword [esp + 0x4c]
mov edi, dword [esp + 0x50]
push edi
push ebx
mov eax, esi
call fcn.00588eb0
add esp, 8
cmp ebp, dword [esp + 0x1c]
jg 0x58a371
jl 0x58a1b0
mov ecx, dword [esp + 0x18]
cmp dword [esp + 0x20], ecx
jae 0x58a371
jmp 0x58a1b0
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 0x58a120
jg 0x58a371
mov edx, dword [esp + 0x18]
cmp dword [esp + 0x20], edx
jb 0x58a120
mov ebp, dword [esp + 0x48]
mov ebx, dword [esp + 0x44]
push ebp
push ebx
mov eax, esi
call fcn.00588eb0
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.00588ef0
add esp, 0x14
test edx, edx
jg 0x58a3b4
jl 0x58a3a4
test eax, eax
jae 0x58a3b4
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 0x58a3db
call fcn.00589780
lea ecx, [esp + 0x4c]
push ecx
mov dword [esi + 0x60], edi
call fcn.005e83f0
mov dword [esi + 0x5c], eax
mov dword [esi + 0x58], 3
jmp 0x58a3e7
lea edx, [esi + 0x1e0]
push edx
call fcn.005ea0d0
mov eax, dword [esi + 0x5c]
add esp, 4
push eax
lea edi, [esi + 0x78]
push edi
call fcn.005e8c80
lea ecx, [esp + 0x54]
push ecx
push edi
call fcn.005e8980
lea edx, [esp + 0x84]
push edx
push edi
call fcn.005e8dd0
cdq
mov ecx, eax
add esp, 0x18
or ecx, edx
je 0x58a46a
lea ebx, [ebx]
test edx, edx
jl 0x58a510
jg 0x58a432
test eax, eax
jb 0x58a510
mov ecx, dword [esp + 0x84]
mov edx, dword [esp + 0x88]
mov eax, ecx
and eax, edx
cmp eax, 0xffffffff
jne 0x58a51d
push 0
push edi
call fcn.005e8db0
lea ecx, [esp + 0x7c]
push ecx
push edi
call fcn.005e8dd0
cdq
mov ecx, eax
add esp, 0x10
or ecx, edx
jne 0x58a420
push ebp
push ebx
mov eax, esi
call fcn.00588eb0
lea edx, [esp + 0x54]
push edx
mov eax, esi
call fcn.00588fa0
mov edi, edx
add esp, 0xc
test edi, edi
mov ebx, eax
mov dword [esp + 0x10], ebx
jl 0x58a5ae
jg 0x58a4a0
test ebx, ebx
jb 0x58a5ae
lea esp, [esp]
lea eax, [esp + 0x4c]
push eax
call fcn.005e8360
add esp, 4
cmp edx, 0xffffffff
jg 0x58a4f6
jl 0x58a4b9
cmp eax, 0xffffffff
ja 0x58a4f6
lea ecx, [esp + 0x4c]
push ecx
call fcn.005e8330
add esp, 4
test eax, eax
je 0x58a4f6
lea edx, [esp + 0x4c]
push edx
mov eax, esi
mov dword [esi + 8], ebx
mov dword [esi + 0xc], edi
call fcn.00588fa0
mov edi, edx
add esp, 4
test edi, edi
mov ebx, eax
jg 0x58a4a0
jl 0x58a4ed
test ebx, ebx
jae 0x58a4a0
mov dword [esp + 0x10], ebx
jmp 0x58a5ae
push edi
push ebx
push esi
mov dword [esp + 0x1c], ebx
call fcn.00589c70
add esp, 0xc
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x84
ret
mov dword [esp + 0x10], 0xffffff78
jmp 0x58a5a6
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 0x58a545
jl 0x58a53f
cmp ecx, eax
jae 0x58a545
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 0x58a59e
jl 0x58a56f
mov eax, dword [esi + 0x50]
cmp eax, dword [esp + 0x9c]
ja 0x58a59e
push 0xffffffffffffffff
push esi
call fcn.00589b80
add esp, 8
cmp edi, edx
jg 0x58a59e
jl 0x58a589
cmp dword [esp + 0x9c], eax
ja 0x58a59e
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.00589780
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