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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
push 0xffffffffffffffff
push 0x78e2ad
mov eax, dword fs:[0]
push eax
sub esp, 0x264
push ebx
push ebp
push esi
push edi
mov eax, dword [0x867e6c]
xor eax, esp
push eax
lea eax, [esp + 0x278]
mov dword fs:[0], eax
mov esi, ecx
mov dword [esp + 0x6c], esi
mov eax, dword [esi + 0x14]
cmp byte [eax + 0x88], 0
je 0x587455
lea edi, [esi + 0x38]
call fcn.0058b150
mov eax, dword [esi + 0x14]
xor edx, edx
mov dword [esi + 4], edx
mov dword [esi + 8], edx
mov dword [esi + 0xc], edx
mov dword [esi + 0x10], edx
mov ecx, dword [eax + 0xcc]
mov edi, dword [eax + 0xb8]
mov ebx, dword [ecx]
add eax, 0xb8
mov dword [esp + 0x78], edi
mov byte [esp + 0x57], 1
mov eax, dword [esi + 0x14]
mov ebp, dword [eax + 0xcc]
add eax, 0xb8
mov eax, dword [eax]
mov dword [esp + 0x7c], ebx
cmp edi, edx
je 0x5868ba
cmp edi, eax
je 0x5868bf
call fcn.006441b7
cmp ebx, ebp
je 0x587455
test edi, edi
jne 0x586ace
call fcn.006441b7
xor eax, eax
cmp ebx, dword [eax + 0x14]
jne 0x5868e0
call fcn.006441b7
mov eax, dword [esi + 0x18]
cmp eax, dword [ebx + 0x120]
lea ebp, [ebx + 8]
jl 0x587433
mov ecx, dword [ebp + 0x11c]
cmp eax, ecx
jle 0x586905
cmp ecx, 0xffffffff
jne 0x587433
mov ecx, dword [ebp + 0x50]
sub ecx, dword [ebp + 0x4c]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov bl, 1
mov byte [esp + 0x3f], bl
mov dword [esp + 0x48], 0
je 0x586a1d
mov dword [esp + 0x40], 0
lea ebx, [ebx]
mov eax, dword [esi + 0x2c]
mov dword [esp + 0x60], eax
cmp dword [esi + 0x28], eax
jbe 0x586951
call fcn.006441b7
mov ecx, dword [ebp + 0x50]
sub ecx, dword [ebp + 0x4c]
mov edx, dword [esi + 0x1c]
mov dword [esp + 0xb4], edx
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x48], eax
jb 0x58697f
call fcn.006441b7
mov edi, dword [ebp + 0x4c]
mov ebx, dword [esi + 0x2c]
add edi, dword [esp + 0x40]
cmp dword [esi + 0x28], ebx
jbe 0x586993
call fcn.006441b7
mov eax, dword [esi + 0x28]
mov dword [esp + 0x50], eax
cmp eax, dword [esi + 0x2c]
jbe 0x5869a4
call fcn.006441b7
mov ecx, dword [esi + 0x1c]
mov eax, dword [esp + 0x50]
mov dword [esp + 0x94], ecx
mov dword [esp + 0x98], eax
call fcn.0058da30
cmp dword [esp + 0x94], 0
mov edi, eax
je 0x5869da
mov edx, dword [esp + 0xb4]
cmp dword [esp + 0x94], edx
je 0x5869df
call fcn.006441b7
cmp edi, dword [esp + 0x60]
jne 0x5869ea
mov byte [esp + 0x3f], 0
mov ecx, dword [ebp + 0x50]
sub ecx, dword [ebp + 0x4c]
mov edi, dword [esp + 0x48]
add dword [esp + 0x40], 0x1c
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
inc edi
add eax, edx
mov dword [esp + 0x48], edi
cmp edi, eax
jb 0x586940
mov bl, byte [esp + 0x3f]
mov ecx, dword [esi + 0x2c]
sub ecx, dword [esi + 0x28]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov ecx, edx
xor edi, edi
shr ecx, 0x1f
add ecx, edx
mov dword [esp + 0x48], edi
je 0x586b4b
mov dword [esp + 0x40], edi
mov eax, dword [ebp + 0x68]
mov dword [esp + 0x50], eax
cmp dword [ebp + 0x64], eax
jbe 0x586a57
call fcn.006441b7
mov ecx, dword [esi + 0x2c]
sub ecx, dword [esi + 0x28]
mov edx, dword [ebp + 0x58]
mov dword [esp + 0xa4], edx
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jb 0x586a83
call fcn.006441b7
mov ebx, dword [esi + 0x28]
mov eax, dword [ebp + 0x68]
add ebx, dword [esp + 0x40]
mov dword [esp + 0x4c], eax
cmp dword [ebp + 0x64], eax
jbe 0x586a9b
call fcn.006441b7
mov edi, dword [ebp + 0x64]
cmp edi, dword [ebp + 0x68]
jbe 0x586aa8
call fcn.006441b7
mov eax, dword [ebp + 0x58]
mov dword [esp + 0xac], eax
cmp edi, dword [esp + 0x4c]
je 0x586afb
jmp 0x586ac0
cmp dword [ebx + 0x18], 0x10
mov ecx, dword [ebx + 0x14]
jb 0x586ad5
mov eax, dword [ebx + 4]
jmp 0x586ad8
mov eax, dword [edi]
jmp 0x5868d6
lea eax, [ebx + 4]
push ecx
mov ecx, dword [edi + 0x14]
push eax
push ecx
push 0
mov ecx, edi
call fcn.00402330
test eax, eax
je 0x586af4
add edi, 0x1c
cmp edi, dword [esp + 0x4c]
jne 0x586ac0
mov eax, dword [esp + 0xac]
test eax, eax
je 0x586b08
cmp eax, dword [esp + 0xa4]
je 0x586b0d
call fcn.006441b7
cmp edi, dword [esp + 0x50]
je 0x586b18
mov byte [esp + 0x3f], 0
mov ecx, dword [esi + 0x2c]
sub ecx, dword [esi + 0x28]
mov edi, dword [esp + 0x48]
add dword [esp + 0x40], 0x1c
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
inc edi
add eax, edx
mov dword [esp + 0x48], edi
cmp edi, eax
jb 0x586a46
mov bl, byte [esp + 0x3f]
or bl, byte [esi + 0x34]
je 0x587426
lea ecx, [esp + 0xe4]
push ecx
call fcn.00585a40
mov dword [esp + 0x280], 0
mov edi, dword [esi + 0x4c]
mov edx, dword [edi + 4]
lea ebx, [esi + 0x38]
push eax
push edx
push edi
call fcn.0058c8b0
mov ecx, ebx
mov dword [esp + 0x50], eax
call fcn.0058c950
mov eax, dword [esp + 0x50]
mov dword [edi + 4], eax
mov ecx, dword [eax + 4]
mov dword [ecx], eax
lea ecx, [esp + 0xe4]
mov dword [esp + 0x280], 0xffffffff
call fcn.00585bb0
mov edi, dword [ebx + 0x14]
mov ebx, dword [ebx]
test ebx, ebx
jne 0x586bb9
call fcn.006441b7
mov edi, dword [edi + 4]
mov dword [esp + 0x74], edi
test ebx, ebx
je 0x586bc8
mov eax, dword [ebx]
jmp 0x586bca
xor eax, eax
cmp edi, dword [eax + 0x14]
jne 0x586bd4
call fcn.006441b7
test ebx, ebx
jne 0x586d33
call fcn.006441b7
cmp edi, dword [ebx + 0x14]
jne 0x586beb
call fcn.006441b7
mov dword [edi + 0xc], ebp
mov al, byte [ebp + 0xe8]
and al, byte [esi + 0x61]
mov byte [edi + 0x70], al
fld qword [0x7a8008]
fst qword [esp + 0x9c]
fld qword [esi + 0x58]
fstp qword [esp + 0x64]
fcomp qword [esi + 0x58]
fnstsw ax
test ah, 0x44
jp 0x586d41
mov eax, dword [ebp + 0x120]
test eax, eax
je 0x586c2f
cmp dword [esi + 0x18], eax
jne 0x586d41
lea ebx, [edi + 0x64]
lea edi, [ebp + 0xdc]
mov eax, ebx
call fcn.00466400
mov eax, dword [esi + 0x64]
test eax, eax
je 0x586c4e
push eax
mov eax, ebx
call fcn.00466440
mov ecx, dword [ebp + 0x9c]
sub ecx, dword [ebp + 0x98]
mov edi, dword [ebp + 0x98]
mov eax, 0x66666667
imul ecx
sar edx, 4
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
cmp edi, dword [ebp + 0x9c]
jbe 0x586c7e
call fcn.006441b7
mov eax, dword [ebp + 0x8c]
test eax, eax
jne 0x586d3a
call fcn.006441b7
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x586c9d
call fcn.006441b7
test ebx, ebx
jle 0x587336
mov ecx, dword [esp + 0x74]
add ecx, 0x74
mov dword [esp + 0x4c], ecx
add edi, 4
mov dword [esp + 0x44], ebx
mov edx, dword [ebp + 0xb4]
sub edx, dword [ebp + 0xb0]
mov ebx, dword [edi + 0x20]
sar edx, 3
cmp ebx, edx
jb 0x586cd2
call fcn.006441b7
mov eax, dword [ebp + 0xb0]
mov cx, word [eax + ebx*8]
mov eax, dword [edi]
mov edx, dword [edi - 4]
mov ebx, dword [esp + 0x4c]
mov word [esp + 0x80], cx
mov ecx, dword [edi + 4]
mov dword [esp + 0x88], eax
lea eax, [esp + 0x80]
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x84], edx
mov edx, dword [edi + 8]
push eax
lea ecx, [esp + 0xdc]
push ecx
mov dword [esp + 0x98], edx
call fcn.0058af20
add edi, 0x28
sub dword [esp + 0x44], 1
jne 0x586cb7
jmp 0x587336
mov ebx, dword [ebx]
jmp 0x586be1
mov eax, dword [eax]
jmp 0x586c93
mov eax, dword [ebp + 0x120]
mov dword [esp + 0x50], eax
test eax, eax
je 0x586d64
fild dword [esp + 0x50]
fstp qword [esp + 0x9c]
fild dword [esi + 0x18]
fmul qword [esi + 0x58]
fstp qword [esp + 0x64]
push 0xa0
call fcn.006442a0
add esp, 4
mov dword [esp + 0x58], eax
xor edi, edi
mov dword [esp + 0x280], 1
cmp eax, edi
je 0x586d9c
mov edx, dword [esi + 0x14]
mov ecx, dword [edx + 0x90]
push ecx
push eax
call fcn.00551420
mov dword [esp + 0x50], eax
jmp 0x586da0
mov dword [esp + 0x50], edi
mov dword [esp + 0x280], 0xffffffff
mov ecx, dword [ebp + 0x9c]
sub ecx, dword [ebp + 0x98]
mov eax, 0x66666667
imul ecx
sar edx, 4
mov ebx, edx
shr ebx, 0x1f
mov dword [esp + 0x48], edi
mov dword [esp + 0x40], edi
mov dword [esp + 0x44], edi
mov edi, dword [ebp + 0x98]
add ebx, edx
mov byte [esp + 0x3f], 1
cmp edi, dword [ebp + 0x9c]
jbe 0x586dec
call fcn.006441b7
mov eax, dword [ebp + 0x8c]
test eax, eax
jne 0x586ea6
call fcn.006441b7
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x586e0b
call fcn.006441b7
test ebx, ebx
jle 0x587016
lea ecx, [edi + 0xc]
mov edi, dword [esp + 0x40]
mov dword [esp + 0x4c], ebx
mov ebx, dword [esp + 0x44]
mov edx, dword [ecx + 8]
mov eax, dword [ecx]
add eax, edx
cmp edx, edi
jge 0x586e2f
mov edi, edx
cmp eax, ebx
jle 0x586e35
mov ebx, eax
cmp edi, edx
jne 0x586e3d
cmp ebx, eax
je 0x586e42
mov byte [esp + 0x3f], 0
mov edx, dword [ecx - 4]
mov eax, dword [esp + 0x48]
lea edx, [eax + edx + 2]
add ecx, 0x28
sub dword [esp + 0x4c], 1
mov dword [esp + 0x48], edx
jne 0x586e22
cmp byte [esp + 0x3f], 0
mov dword [esp + 0x44], ebx
mov dword [esp + 0x40], edi
jne 0x587016
push 0xa0
call fcn.006442a0
add esp, 4
mov dword [esp + 0x58], eax
mov dword [esp + 0x280], 2
test eax, eax
je 0x586ead
mov ecx, dword [esi + 0x14]
mov edx, dword [ecx + 0x90]
push edx
push eax
call fcn.00551420
mov ebx, eax
mov dword [esp + 0x4c], ebx
jmp 0x586eb9
mov eax, dword [eax]
jmp 0x586e01
mov dword [esp + 0x4c], 0
mov ebx, dword [esp + 0x4c]
mov eax, dword [esp + 0x44]
sub eax, dword [esp + 0x40]
mov dword [esp + 0x280], 0xffffffff
mov edx, dword [ebx]
mov edx, dword [edx + 0x3c]
push eax
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x4c]
push eax
mov ecx, ebx
call edx
mov eax, dword [ebx]
mov edx, dword [eax + 0x44]
push 1
push 1
mov ecx, ebx
call edx
lea eax, [esp + 0xe4]
push eax
mov ecx, ebx
call fcn.00430680
mov dword [esp + 0x280], 3
mov ecx, dword [ebp + 0x9c]
sub ecx, dword [ebp + 0x98]
mov eax, 0x66666667
imul ecx
mov eax, dword [ebp + 0x98]
sar edx, 4
mov esi, edx
shr esi, 0x1f
xor edi, edi
add esi, edx
mov dword [esp + 0x44], eax
cmp eax, dword [ebp + 0x9c]
jbe 0x586f3c
call fcn.006441b7
mov eax, dword [ebp + 0x8c]
test eax, eax
jne 0x58736a
call fcn.006441b7
xor eax, eax
mov ecx, dword [esp + 0x44]
cmp ecx, dword [eax + 0x10]
jb 0x586f5f
call fcn.006441b7
test esi, esi
jle 0x586fec
mov ebx, dword [esp + 0x44]
mov dword [esp + 0xc0], 0
add ebx, 0x10
mov dword [esp + 0x44], esi
lea ecx, [ecx]
lea ecx, [ebp + 0xdc]
call fcn.00466460
test eax, eax
je 0x586fb5
mov eax, dword [ebx + 4]
sub eax, dword [esp + 0x40]
lea ecx, [ebp + 0xdc]
push eax
push edi
lea edx, [ebx - 0x10]
call fcn.00466460
push eax
mov eax, edx
lea esi, [esp + 0xf0]
call fcn.00431840
mov eax, dword [ebx - 8]
mov edx, dword [esp + 0xc0]
mov ecx, dword [esp + 0x40]
dec dword [ebx]
mov dword [ebx - 0x10], edi
add eax, 2
mov dword [ebx - 0xc], edx
mov dword [ebx - 8], eax
mov eax, dword [esp + 0x60]
mov dword [ebx - 4], eax
add edi, dword [ebx - 8]
mov dword [ebx + 4], ecx
add ebx, 0x28
sub dword [esp + 0x44], 1
jne 0x586f80
mov ebx, dword [esp + 0x4c]
push ebx
lea eax, [ebp + 0xdc]
call fcn.00466440
lea ecx, [esp + 0xe4]
mov byte [ebp + 0xe4], 1
mov dword [esp + 0x280], 0xffffffff
call fcn.00430870
mov ecx, dword [ebp + 0x9c]
sub ecx, dword [ebp + 0x98]
mov esi, dword [ebp + 0x98]
xor eax, eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x44], eax
mov eax, 0x66666667
imul ecx
sar edx, 4
mov edi, edx
shr edi, 0x1f
add edi, edx
cmp esi, dword [ebp + 0x9c]
jbe 0x587050
call fcn.006441b7
mov eax, dword [ebp + 0x8c]
test eax, eax
jne 0x587371
call fcn.006441b7
xor eax, eax
cmp esi, dword [eax + 0x10]
jb 0x58706f
call fcn.006441b7
test edi, edi
jle 0x5871d2
mov ecx, dword [esp + 0x74]
fld qword [esp + 0x9c]
add ecx, 0x74
fstp dword [esp + 0x40]
mov dword [esp + 0x4c], ecx
add esi, 0x10
mov dword [esp + 0x60], edi
mov edi, dword [esi]
mov dword [esp + 0x5c], edi
fild dword [esp + 0x5c]
sub esp, 8
fmul qword [esp + 0x6c]
fdiv dword [esp + 0x48]
fstp qword [esp]
call fcn.0076fcb0
call fcn.0076f850
mov edx, dword [esi - 8]
add edx, edi
mov dword [esp + 0x64], edx
fild dword [esp + 0x64]
mov ebx, eax
fmul qword [esp + 0x6c]
fdiv dword [esp + 0x48]
fstp qword [esp]
call fcn.00645c10
call fcn.0076f850
sub eax, ebx
mov ebx, dword [esi + 4]
mov dword [esp + 0x64], ebx
fild dword [esp + 0x64]
dec eax
xor ecx, ecx
test eax, eax
fmul qword [esp + 0x6c]
setl cl
fdiv dword [esp + 0x48]
dec ecx
and ecx, eax
mov edi, ecx
fstp qword [esp]
call fcn.0076fcb0
call fcn.0076f850
mov edx, dword [esi - 4]
add edx, ebx
mov dword [esp + 0x64], edx
fild dword [esp + 0x64]
mov dword [esp + 0x60], eax
fmul qword [esp + 0x6c]
fdiv dword [esp + 0x48]
fstp qword [esp]
call fcn.00645c10
add esp, 8
call fcn.0076f850
sub eax, dword [esp + 0x58]
xor ebx, ebx
dec eax
test eax, eax
setl bl
dec ebx
and ebx, eax
cmp ebx, dword [esp + 0x44]
jle 0x58714b
mov dword [esp + 0x44], ebx
mov ecx, dword [ebp + 0xb4]
sub ecx, dword [ebp + 0xb0]
mov eax, dword [esi + 0x14]
sar ecx, 3
mov dword [esp + 0x58], eax
cmp eax, ecx
jb 0x58716a
call fcn.006441b7
mov edx, dword [ebp + 0xb0]
mov eax, dword [esp + 0x58]
mov cx, word [edx + eax*8]
lea eax, [edx + eax*8]
mov edx, dword [esp + 0x48]
lea eax, [esp + 0x80]
mov word [esp + 0x80], cx
push eax
lea ecx, [esp + 0xd0]
mov dword [esp + 0x94], ebx
mov ebx, dword [esp + 0x50]
push ecx
mov dword [esp + 0x8c], edx
mov dword [esp + 0x90], 0
mov dword [esp + 0x94], edi
call fcn.0058af20
add dword [esp + 0x48], edi
add esi, 0x28
sub dword [esp + 0x60], 1
jne 0x587094
mov esi, dword [esp + 0x50]
mov edi, dword [esp + 0x74]
push esi
lea eax, [edi + 0x64]
call fcn.00466440
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x48]
mov byte [edi + 0x6c], 1
mov edx, dword [esi]
mov edx, dword [edx + 0x3c]
push eax
push ecx
mov ecx, esi
call edx
lea eax, [esp + 0x194]
push eax
mov ecx, esi
call fcn.00430680
mov dword [esp + 0x280], 4
mov ecx, dword [ebp + 0x9c]
sub ecx, dword [ebp + 0x98]
mov ebx, dword [ebp + 0x98]
mov eax, 0x66666667
imul ecx
sar edx, 4
mov edi, edx
shr edi, 0x1f
add edi, edx
cmp ebx, dword [ebp + 0x9c]
jbe 0x587244
call fcn.006441b7
mov eax, dword [ebp + 0x8c]
test eax, eax
jne 0x587378
call fcn.006441b7
xor eax, eax
cmp ebx, dword [eax + 0x10]
jb 0x587263
call fcn.006441b7
test edi, edi
jle 0x5872e6
mov dword [esp + 0x50], edi
nop
lea ecx, [ebp + 0xdc]
call fcn.00466460
test eax, eax
je 0x5872dc
mov ecx, dword [ebp + 0xb4]
sub ecx, dword [ebp + 0xb0]
mov edi, dword [ebx + 0x24]
sar ecx, 3
cmp edi, ecx
jb 0x58729a
call fcn.006441b7
mov edx, dword [ebp + 0xb0]
lea eax, [edx + edi*8]
movzx eax, word [eax]
push ebx
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x78]
push ecx
lea ecx, [esp + 0x60]
push ecx
add eax, 0x74
call fcn.0058ad70
add esp, 4
lea ecx, [ebp + 0xdc]
mov edx, eax
call fcn.00466460
push eax
mov eax, edx
lea ecx, [esp + 0x19c]
call fcn.00431d10
add ebx, 0x28
sub dword [esp + 0x50], 1
jne 0x587270
mov eax, dword [esp + 0x6c]
cmp byte [eax + 0x60], 0
je 0x587312
mov edx, dword [esi]
mov edi, dword [esi + 0x30]
mov eax, dword [edx + 0x40]
imul edi, dword [esi + 0x2c]
mov ecx, esi
call eax
test edi, edi
jle 0x587312
or dword [eax], 0xffffff
add eax, 4
sub edi, 1
jne 0x587304
mov edx, dword [esi]
mov eax, dword [edx + 0x4c]
mov ecx, esi
call eax
lea ecx, [esp + 0x194]
mov dword [esp + 0x280], 0xffffffff
call fcn.00430870
mov esi, dword [esp + 0x6c]
fld qword [esp + 0x9c]
fstp dword [esp + 0x40]
fild dword [ebp + 0x124]
fld qword [esp + 0x64]
fmul st(1), st(0)
fld dword [esp + 0x40]
fld st(0)
fdivp st(3)
fldz
fcom st(3)
fnstsw ax
fld qword [0x82e238]
test ah, 0x41
jp 0x58737f
fadd st(4), st(0)
jmp 0x587381
mov eax, dword [eax]
jmp 0x586f51
mov eax, dword [eax]
jmp 0x587065
mov eax, dword [eax]
jmp 0x587259
fsub st(4), st(0)
fxch st(4)
call fcn.0076f850
cmp eax, dword [esi + 4]
jle 0x587390
mov dword [esi + 4], eax
mov eax, dword [ebp + 0x12c]
mov dword [esp + 0x58], eax
test eax, eax
je 0x5873b3
fild dword [esp + 0x58]
fmul st(3)
fdiv st(2)
fcom st(1)
fnstsw ax
test ah, 1
jne 0x5873bb
fadd st(4)
jmp 0x5873bd
fild dword [ebp + 0x130]
jmp 0x5873a2
fsub st(4)
call fcn.0076f850
cmp eax, dword [esi + 0xc]
jle 0x5873ca
mov dword [esi + 0xc], eax
fild dword [ebp + 0x128]
fmul st(3)
fdiv st(2)
fcom st(1)
fnstsw ax
test ah, 1
jne 0x5873e1
fadd st(4)
jmp 0x5873e3
fsub st(4)
call fcn.0076f850
mov bl, byte [esp + 0x57]
test bl, bl
jne 0x5873f5
cmp eax, dword [esi + 8]
jge 0x5873f8
mov dword [esi + 8], eax
fild dword [ebp + 0x134]
fmulp st(3)
fxch st(2)
fdivrp st(1)
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 1
jne 0x587413
faddp st(1)
jmp 0x587415
fsubrp st(1)
call fcn.0076f850
test bl, bl
jne 0x587423
cmp eax, dword [esi + 0x10]
jle 0x587426
mov dword [esi + 0x10], eax
mov ebx, dword [esp + 0x7c]
mov edi, dword [esp + 0x78]
mov byte [esp + 0x57], 0
test edi, edi
jne 0x587451
call fcn.006441b7
xor eax, eax
cmp ebx, dword [eax + 0x14]
jne 0x587448
call fcn.006441b7
mov ebx, dword [ebx]
xor edx, edx
jmp 0x58689e
mov eax, dword [edi]
jmp 0x58743e
mov ecx, dword [esp + 0x278]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret