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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0x170
push ebx
push ebp
push esi
mov esi, ecx
mov eax, dword [esi + 0x40]
mov ecx, dword [esi + eax*4 + 0x14]
movsd xmm0, qword [ecx + 0x48]
mov edx, dword [esi + 0x44]
mov eax, dword [esi + edx*4 + 0x14]
fld qword [eax + 0x18]
mov edx, dword [ecx]
mov edx, dword [edx + 0x4c]
fstp qword [esp + 0x3c]
fld qword [eax + 0x10]
movsd qword [esp + 0x44], xmm0
movsd xmm0, qword [ecx + 0x50]
movsd qword [esp + 0x104], xmm0
movsd xmm0, qword [ecx + 0x10]
movsd qword [esp + 0x124], xmm0
movsd xmm0, qword [ecx + 0x18]
push edi
movsd qword [esp + 0x98], xmm0
movsd xmm0, qword [eax + 0x48]
movsd qword [esp + 0xc8], xmm0
movsd xmm0, qword [eax + 0x50]
sub esp, 8
mov dword [esp + 0x34], eax
fstp qword [esp]
lea ebx, [eax + 0x78]
lea edi, [eax + 0x88]
lea eax, [esp + 0xc0]
push eax
mov dword [esp + 0x34], ecx
lea ebp, [ecx + 0x90]
movsd qword [esp + 0x64], xmm0
call edx
fld qword [esp + 0x40]
mov ecx, dword [esp + 0x28]
mov eax, dword [ecx]
mov eax, dword [eax + 0x4c]
sub esp, 8
lea edx, [esp + 0xe0]
fstp qword [esp]
push edx
call eax
xorps xmm0, xmm0
movsd qword [esp + 0x80], xmm0
movsd qword [esp + 0x78], xmm0
movsd qword [esp + 0x90], xmm0
movsd qword [esp + 0x88], xmm0
movsd xmm0, qword [esp + 0xb8]
subsd xmm0, qword [esp + 0xd8]
movsd qword [esp + 0x68], xmm0
movsd xmm0, qword [esp + 0xc0]
subsd xmm0, qword [esp + 0xe0]
lea ecx, [esp + 0x68]
movsd qword [esp + 0x70], xmm0
call fcn.004a7500
fld qword [esi]
fcompi st(1)
fstp st(0)
mov byte [esp + 0x26], 1
ja 0x559530
mov byte [esp + 0x26], 0
mov ecx, dword [esp + 0x2c]
call fcn.004d98d0
mov byte [esp + 0x27], al
test al, al
je 0x5595ae
mov ecx, dword [esp + 0x2c]
fld qword [esp + 0x128]
mov edx, dword [ecx]
mov edx, dword [edx + 0x4c]
sub esp, 8
lea eax, [esp + 0x70]
fstp qword [esp]
push eax
call edx
fld qword [esp + 0x98]
movq xmm0, qword [eax]
mov ecx, dword [esp + 0x2c]
movsd qword [esp + 0x78], xmm0
movq xmm0, qword [eax + 8]
mov eax, dword [ecx]
mov eax, dword [eax + 0x4c]
sub esp, 8
lea edx, [esp + 0x70]
fstp qword [esp]
push edx
movsd qword [esp + 0x8c], xmm0
call eax
movq xmm0, qword [eax]
movsd qword [esp + 0x88], xmm0
movq xmm0, qword [eax + 8]
movsd qword [esp + 0x90], xmm0
mov eax, dword [esp + 0x2c]
add eax, 0x98
push eax
push edi
lea ecx, [esp + 0x140]
call fcn.004ac3b0
lea ecx, [esp + 0x138]
call fcn.004ac340
lea ecx, [esp + 0xa8]
push ecx
mov ecx, ebx
call fcn.004a8100
mov ecx, dword [esp + 0x28]
mov edx, dword [ecx]
mov eax, dword [edx + 0x38]
call eax
mov ebx, eax
mov edx, dword [ebx]
mov edx, dword [edx + 0xc]
lea eax, [esp + 0xa8]
push eax
mov ecx, ebx
call edx
mov eax, dword [ebx]
mov edx, dword [eax + 0x14]
lea ecx, [esp + 0x138]
push ecx
mov ecx, ebx
call edx
fld qword [0x5ff770]
movsd xmm0, qword [ebx + 0x80]
sub esp, 8
fstp qword [esp]
movsd qword [esp + 0x120], xmm0
movsd xmm0, qword [ebx + 0x88]
push edi
mov ecx, ebp
movsd qword [esp + 0xa4], xmm0
call fcn.004a82c0
fst qword [esp + 0x30]
movsd xmm0, qword [esp + 0x48]
mulsd xmm0, xmm0
movsd qword [esp + 0x50], xmm0
movsd xmm0, qword [esp + 0x108]
mulsd xmm0, xmm0
movsd qword [esp + 0x68], xmm0
movsd xmm0, qword [esp + 0xc8]
mulsd xmm0, xmm0
movsd qword [esp + 0x40], xmm0
movsd xmm0, qword [esp + 0x58]
mulsd xmm0, xmm0
movsd qword [esp + 0x58], xmm0
call sub.MSVCR90.dll__CIcos
fstp qword [esp + 0xc8]
fld qword [esp + 0x30]
call sub.MSVCR90.dll__CIsin
fstp qword [esp + 0x30]
movsd xmm0, qword [esp + 0x58]
movsd xmm3, qword [esp + 0x50]
movsd xmm1, qword [esp + 0x40]
movsd xmm5, qword [esp + 0x68]
movsd xmm6, qword [0x5fc740]
movapd xmm7, xmm0
mulsd xmm7, xmm5
xorpd xmm7, xmm6
movapd xmm2, xmm1
mulsd xmm2, xmm3
subsd xmm7, xmm2
movsd qword [esp + 0x50], xmm2
movapd xmm4, xmm0
mulsd xmm4, xmm3
movsd xmm3, qword [esp + 0x30]
movapd xmm2, xmm1
mulsd xmm2, xmm5
addsd xmm2, xmm4
movsd qword [esp + 0x58], xmm4
movsd xmm4, qword [esp + 0xc8]
mulsd xmm7, xmm3
mulsd xmm2, xmm4
mulsd xmm7, xmm3
mulsd xmm2, xmm4
movsd xmm5, qword [esp + 0x108]
fld qword [0x5ff788]
addsd xmm7, xmm2
movapd xmm2, xmm5
mulsd xmm2, qword [esp + 0x48]
movsd qword [esp + 0x158], xmm7
mulsd xmm2, xmm4
mulsd xmm2, xmm3
movapd xmm7, xmm0
xorpd xmm7, xmm6
subsd xmm7, xmm1
mulsd xmm1, qword [esp + 0x118]
mulsd xmm2, xmm7
movsd qword [esp + 0x160], xmm2
movapd xmm6, xmm3
movapd xmm2, xmm0
mulsd xmm2, qword [esp + 0x98]
mulsd xmm0, qword [esp + 0x40]
mulsd xmm6, xmm2
movapd xmm7, xmm4
mulsd xmm7, xmm1
subsd xmm7, xmm6
movsd xmm6, qword [0x5fcc60]
mulsd xmm5, xmm6
mulsd xmm7, xmm5
movsd qword [esp + 0x168], xmm7
movapd xmm7, xmm3
mulsd xmm7, xmm1
xorpd xmm7, xmmword [0x5fc740]
mulsd xmm1, qword [esp + 0x118]
movapd xmm5, xmm4
mulsd xmm5, xmm2
mulsd xmm2, qword [esp + 0x98]
subsd xmm7, xmm5
movsd xmm5, qword [esp + 0x48]
mulsd xmm5, xmm6
mulsd xmm7, xmm5
movapd xmm5, xmm3
mulsd xmm5, qword [esp + 0x50]
mulsd xmm5, xmm3
movapd xmm3, xmm4
mulsd xmm3, qword [esp + 0x58]
sub esp, 8
mulsd xmm3, xmm4
fstp qword [esp]
subsd xmm5, xmm3
lea eax, [esp + 0x160]
addsd xmm5, xmm1
push eax
lea ecx, [esp + 0xf4]
subsd xmm5, xmm2
subsd xmm5, xmm0
push ecx
movsd qword [esp + 0x180], xmm7
movsd qword [esp + 0x188], xmm5
call fcn.005a1ca0
movsd xmm1, qword [0x616648]
movsd xmm2, qword [esp + 0x138]
mov edi, eax
add esp, 0x10
xor eax, eax
cmp edi, 4
mov dword [esp + 0x48], edi
jl 0x5598e7
lea ecx, [edi - 3]
lea esp, [esp]
movsd xmm0, qword [esp + eax*8 + 0xe8]
comisd xmm2, xmm0
jbe 0x55988c
addsd xmm0, xmm1
movsd qword [esp + eax*8 + 0xe8], xmm0
movsd xmm0, qword [esp + eax*8 + 0xf0]
comisd xmm2, xmm0
jbe 0x5598a8
addsd xmm0, xmm1
movsd qword [esp + eax*8 + 0xf0], xmm0
movsd xmm0, qword [esp + eax*8 + 0xf8]
comisd xmm2, xmm0
jbe 0x5598c4
addsd xmm0, xmm1
movsd qword [esp + eax*8 + 0xf8], xmm0
movsd xmm0, qword [esp + eax*8 + 0x100]
comisd xmm2, xmm0
jbe 0x5598e0
addsd xmm0, xmm1
movsd qword [esp + eax*8 + 0x100], xmm0
add eax, 4
cmp eax, ecx
jl 0x559870
cmp eax, edi
jge 0x559911
jmp 0x5598f0
movsd xmm0, qword [esp + eax*8 + 0xe8]
comisd xmm2, xmm0
jbe 0x55990c
addsd xmm0, xmm1
movsd qword [esp + eax*8 + 0xe8], xmm0
inc eax
cmp eax, edi
jl 0x5598f0
test edi, edi
jne 0x55992a
mov edx, dword [ebx]
mov eax, dword [edx]
push 1
mov ecx, ebx
call eax
lea eax, [edi + 3]
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
movsd xmm1, qword [esp + 0xa8]
movsd xmm0, qword [0x5fc740]
xorpd xmm1, xmm0
movsd qword [esp + 0xa8], xmm1
movsd xmm1, qword [esp + 0xb0]
xorpd xmm1, xmm0
lea ecx, [esp + 0x138]
movsd qword [esp + 0xb0], xmm1
call fcn.004ac340
xor ebp, ebp
test edi, edi
jle 0x559ea1
mov eax, dword [esi + 0x58]
mov edx, dword [esi + 0x4c]
lea ecx, [eax + eax*4]
mov dword [edx + ecx*8 + 0x20], 0
fld qword [esp + ebp*8 + 0xe8]
mov eax, dword [ebx]
mov edx, dword [eax + 0x4c]
sub esp, 8
lea ecx, [esp + 0x38]
fstp qword [esp]
push ecx
mov ecx, ebx
call edx
lea eax, [esp + 0x138]
push eax
lea ecx, [esp + 0x34]
call fcn.004a7750
lea ecx, [esp + 0xa8]
push ecx
lea ecx, [esp + 0x34]
call fcn.004a8540
mov eax, dword [esi + 0x58]
test eax, eax
jle 0x5599ec
lea edx, [eax + eax*4]
mov eax, dword [esi + 0x4c]
lea ecx, [esp + 0x30]
push ecx
lea eax, [eax + edx*8 - 0x28]
push eax
mov ecx, esi
call fcn.00551920
fld qword [esi]
fcompi st(1)
fstp st(0)
ja 0x559e98
mov edi, dword [esp + 0x2c]
mov edx, dword [edi]
mov edx, dword [edx + 0x48]
lea eax, [esp + 0x30]
push eax
mov ecx, edi
call edx
fst qword [esp + 0x40]
mov eax, dword [edi]
mov edx, dword [eax + 0x4c]
sub esp, 8
lea ecx, [esp + 0x130]
fstp qword [esp]
push ecx
mov ecx, edi
call edx
xorps xmm0, xmm0
movsd qword [esp + 0x60], xmm0
movsd qword [esp + 0x58], xmm0
movsd xmm0, qword [esp + 0x30]
subsd xmm0, qword [eax]
movsd qword [esp + 0x58], xmm0
movsd xmm0, qword [esp + 0x38]
subsd xmm0, qword [eax + 8]
lea ecx, [esp + 0x58]
movsd qword [esp + 0x60], xmm0
call fcn.004a7500
fld qword [0x5ff758]
fcompi st(1)
fstp st(0)
jbe 0x559e94
cmp byte [esp + 0x27], 0
je 0x559bdc
movsd xmm0, qword [esp + 0x78]
subsd xmm0, qword [esp + 0x30]
movsd qword [esp + 0xc8], xmm0
movsd xmm0, qword [esp + 0x80]
subsd xmm0, qword [esp + 0x38]
lea ecx, [esp + 0xc8]
movsd qword [esp + 0xd0], xmm0
call fcn.004a7500
fstp qword [esp + 0x68]
movsd xmm0, qword [esp + 0x88]
subsd xmm0, qword [esp + 0x30]
movsd qword [esp + 0x98], xmm0
movsd xmm0, qword [esp + 0x90]
subsd xmm0, qword [esp + 0x38]
lea ecx, [esp + 0x98]
movsd qword [esp + 0xa0], xmm0
call fcn.004a7500
fstp qword [esp + 0x50]
movsd xmm0, qword [esi]
comisd xmm0, xmmword [esp + 0x68]
jbe 0x559b42
mov eax, dword [esi + 0x58]
mov ecx, dword [esi + 0x4c]
movq xmm0, qword [esp + 0x78]
lea eax, [eax + eax*4]
movq qword [ecx + eax*8], xmm0
movq xmm0, qword [esp + 0x80]
lea eax, [ecx + eax*8]
movq qword [eax + 8], xmm0
fld qword [edi + 0x10]
mov eax, dword [esi + 0x58]
lea edx, [eax + eax*4]
mov eax, dword [esi + 0x4c]
fstp qword [eax + edx*8 + 0x18]
mov eax, dword [esi + 0x58]
mov edx, dword [esi + 0x4c]
lea ecx, [eax + eax*4]
or dword [edx + ecx*8 + 0x20], 4
lea eax, [edx + ecx*8 + 0x20]
jmp 0x559c24
comisd xmm0, xmmword [esp + 0x50]
jbe 0x559b99
mov eax, dword [esi + 0x58]
mov ecx, dword [esi + 0x4c]
movq xmm0, qword [esp + 0x88]
lea eax, [eax + eax*4]
movq qword [ecx + eax*8], xmm0
movq xmm0, qword [esp + 0x90]
lea eax, [ecx + eax*8]
movq qword [eax + 8], xmm0
fld qword [edi + 0x18]
mov eax, dword [esi + 0x58]
lea edx, [eax + eax*4]
mov eax, dword [esi + 0x4c]
fstp qword [eax + edx*8 + 0x18]
mov eax, dword [esi + 0x58]
mov edx, dword [esi + 0x4c]
lea ecx, [eax + eax*4]
or dword [edx + ecx*8 + 0x20], 8
lea eax, [edx + ecx*8 + 0x20]
jmp 0x559c24
movsd xmm1, qword [edi + 0x10]
movsd xmm0, qword [esp + 0x40]
comisd xmm1, xmm0
ja 0x559e94
comisd xmm0, xmmword [edi + 0x18]
ja 0x559e94
mov eax, dword [esi + 0x58]
mov ecx, dword [esi + 0x4c]
movq xmm1, qword [esp + 0x30]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*8]
movq qword [eax], xmm1
movq xmm1, qword [esp + 0x38]
movq qword [eax + 8], xmm1
jmp 0x559c03
mov eax, dword [esi + 0x58]
mov ecx, dword [esi + 0x4c]
movq xmm0, qword [esp + 0x30]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*8]
movq qword [eax], xmm0
movq xmm0, qword [esp + 0x38]
movq qword [eax + 8], xmm0
movsd xmm0, qword [esp + 0x40]
mov eax, dword [esi + 0x58]
lea edx, [eax + eax*4]
mov eax, dword [esi + 0x4c]
movsd qword [eax + edx*8 + 0x18], xmm0
mov eax, dword [esi + 0x58]
mov edx, dword [esi + 0x4c]
lea ecx, [eax + eax*4]
or dword [edx + ecx*8 + 0x20], 1
lea eax, [edx + ecx*8 + 0x20]
movsd xmm0, qword [esp + 0xb8]
subsd xmm0, qword [esp + 0x30]
movsd qword [esp + 0x118], xmm0
movsd xmm0, qword [esp + 0xc0]
subsd xmm0, qword [esp + 0x38]
lea ecx, [esp + 0x118]
movsd qword [esp + 0x120], xmm0
call fcn.004a7500
fstp qword [esp + 0x40]
cmp byte [esp + 0x26], 0
je 0x559c73
movsd xmm1, qword [esp + 0x40]
jmp 0x559cb9
movsd xmm0, qword [esp + 0xd8]
subsd xmm0, qword [esp + 0x30]
movsd qword [esp + 0x108], xmm0
movsd xmm0, qword [esp + 0xe0]
subsd xmm0, qword [esp + 0x38]
lea ecx, [esp + 0x108]
movsd qword [esp + 0x110], xmm0
call fcn.004a7500
fstp qword [esp + 0x68]
movsd xmm1, qword [esp + 0x68]
movsd xmm0, qword [esi]
comisd xmm0, xmmword [esp + 0x40]
jbe 0x559d17
mov eax, dword [esi + 0x58]
mov ecx, dword [esi + 0x4c]
lea eax, [eax + eax*4]
or dword [ecx + eax*8 + 0x20], 0x10
movq xmm0, qword [esp + 0xb8]
lea eax, [ecx + eax*8 + 0x20]
mov eax, dword [esi + 0x58]
lea edx, [eax + eax*4]
mov eax, dword [esi + 0x4c]
lea eax, [eax + edx*8]
movq qword [eax], xmm0
movq xmm0, qword [esp + 0xc0]
movq qword [eax + 8], xmm0
mov eax, dword [esi + 0x58]
mov edx, dword [esi + 0x4c]
lea ecx, [eax + eax*4]
mov eax, dword [esp + 0x28]
fld qword [eax + 0x10]
fstp qword [edx + ecx*8 + 0x10]
jmp 0x559db6
comisd xmm0, xmm1
jbe 0x559d6c
mov eax, dword [esi + 0x58]
mov edx, dword [esi + 0x4c]
lea ecx, [eax + eax*4]
or dword [edx + ecx*8 + 0x20], 0x20
movq xmm0, qword [esp + 0xd8]
lea eax, [edx + ecx*8 + 0x20]
mov eax, dword [esi + 0x58]
mov ecx, dword [esi + 0x4c]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*8]
mov ecx, dword [esp + 0x28]
movq qword [eax], xmm0
movq xmm0, qword [esp + 0xe0]
movq qword [eax + 8], xmm0
fld qword [ecx + 0x18]
mov eax, dword [esi + 0x58]
lea edx, [eax + eax*4]
mov eax, dword [esi + 0x4c]
fstp qword [eax + edx*8 + 0x10]
jmp 0x559db6
mov edx, dword [esp + 0x28]
movsd xmm0, qword [esp + ebp*8 + 0xe8]
movsd xmm1, qword [edx + 0x10]
comisd xmm1, xmm0
ja 0x559e94
mov eax, edx
comisd xmm0, xmmword [eax + 0x18]
ja 0x559e94
mov eax, dword [esi + 0x58]
mov edx, dword [esi + 0x4c]
lea ecx, [eax + eax*4]
movsd qword [edx + ecx*8 + 0x10], xmm0
mov eax, dword [esi + 0x58]
mov ecx, dword [esi + 0x4c]
lea eax, [eax + eax*4]
or dword [ecx + eax*8 + 0x20], 2
lea eax, [ecx + eax*8 + 0x20]
mov edx, 1
cmp dword [esi + 0x40], edx
jne 0x559e91
mov eax, dword [esi + 0x58]
mov ecx, dword [esi + 0x4c]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*8 + 0x20]
mov ecx, dword [eax]
mov dword [eax], 0
test cl, 4
je 0x559df2
mov eax, dword [esi + 0x58]
mov edi, dword [esi + 0x4c]
lea eax, [eax + eax*4]
or dword [edi + eax*8 + 0x20], 0x10
lea eax, [edi + eax*8 + 0x20]
jmp 0x559e21
test cl, 8
je 0x559e0b
mov eax, dword [esi + 0x58]
mov edi, dword [esi + 0x4c]
lea eax, [eax + eax*4]
or dword [edi + eax*8 + 0x20], 0x20
lea eax, [edi + eax*8 + 0x20]
jmp 0x559e21
test dl, cl
je 0x559e21
mov eax, dword [esi + 0x58]
mov edi, dword [esi + 0x4c]
lea eax, [eax + eax*4]
or dword [edi + eax*8 + 0x20], 2
lea eax, [edi + eax*8 + 0x20]
test cl, 0x10
je 0x559e3a
mov eax, dword [esi + 0x58]
lea ecx, [eax + eax*4]
mov eax, dword [esi + 0x4c]
or dword [eax + ecx*8 + 0x20], 4
lea eax, [eax + ecx*8 + 0x20]
jmp 0x559e69
test cl, 0x20
je 0x559e53
mov eax, dword [esi + 0x58]
lea ecx, [eax + eax*4]
mov eax, dword [esi + 0x4c]
or dword [eax + ecx*8 + 0x20], 8
lea eax, [eax + ecx*8 + 0x20]
jmp 0x559e69
test cl, 2
je 0x559e69
mov eax, dword [esi + 0x58]
lea ecx, [eax + eax*4]
mov eax, dword [esi + 0x4c]
or dword [eax + ecx*8 + 0x20], edx
lea eax, [eax + ecx*8 + 0x20]
mov eax, dword [esi + 0x58]
lea ecx, [eax + eax*4]
mov eax, dword [esi + 0x4c]
fld qword [eax + ecx*8 + 0x18]
movsd xmm0, qword [eax + ecx*8 + 0x10]
lea eax, [eax + ecx*8]
fstp qword [eax + 0x10]
mov eax, dword [esi + 0x58]
lea ecx, [eax + eax*4]
mov eax, dword [esi + 0x4c]
movsd qword [eax + ecx*8 + 0x18], xmm0
add dword [esi + 0x58], edx
mov edi, dword [esp + 0x48]
inc ebp
cmp ebp, edi
jl 0x559974
mov edx, dword [ebx]
mov eax, dword [edx]
push 1
mov ecx, ebx
call eax
pop edi
xor eax, eax
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret