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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0x174
mov eax, dword [0x59ad00]
xor eax, esp
mov dword [esp + 0x170], eax
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 0x18]
push ebx
mov ebx, ecx
mov ecx, dword [ebp + 0x10]
push esi
mov esi, dword [ebp + 0x14]
mov dword [esp + 0x60], ecx
push edi
mov edi, dword [ebp + 8]
lea ecx, [esp + 0x158]
mov dword [esp + 0x54], eax
mov dword [esp + 0x3c], edx
mov dword [esp + 0x14], 0
call fcn.004811b0
xorps xmm0, xmm0
movsd qword [esp + 0xc8], xmm0
movsd qword [esp + 0xc0], xmm0
movsd qword [esp + 0x20], xmm0
movsd qword [esp + 0x18], xmm0
movsd qword [esp + 0x98], xmm0
movsd qword [esp + 0x90], xmm0
movsd qword [esp + 0x48], xmm0
movsd qword [esp + 0x40], xmm0
movsd qword [esp + 0x80], xmm0
movsd qword [esp + 0x78], xmm0
movsd qword [esp + 0xf8], xmm0
movsd qword [esp + 0xf0], xmm0
movsd qword [esp + 0xd8], xmm0
movsd qword [esp + 0xd0], xmm0
movsd qword [esp + 0xa8], xmm0
movsd qword [esp + 0xa0], xmm0
movsd qword [esp + 0xb8], xmm0
movsd qword [esp + 0xb0], xmm0
movsd xmm0, qword [ebp + 0x1c]
movsd qword [esp + 0x30], xmm0
movsd xmm0, qword [ebp + 0x24]
movsd qword [esp + 0x28], xmm0
movsd xmm0, qword [0x57e350]
movsd qword [edi], xmm0
movsd xmm1, qword [0x57e3a0]
movsd qword [esp + 0x88], xmm0
movsd xmm0, qword [ebx]
comisd xmm1, xmm0
movsd qword [esp + 0x68], xmm1
jbe 0x4c5aa0
movsd qword [esp + 0x68], xmm0
lea ecx, [ecx]
mov eax, dword [esi]
lea ecx, [esp + 0x30]
push ecx
lea edx, [esp + 0x94]
push edx
mov edx, dword [eax + 0x5c]
lea ecx, [esp + 0x20]
push ecx
mov ecx, esi
call edx
mov byte [esp + 0x13], al
test al, al
je 0x4c5ae1
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx]
mov eax, dword [eax + 0x5c]
lea edx, [esp + 0x28]
push edx
lea edx, [esp + 0x7c]
push edx
lea edx, [esp + 0x48]
push edx
call eax
mov byte [esp + 0x13], al
movsd xmm0, qword [esp + 0x18]
subsd xmm0, qword [esp + 0x40]
movsd qword [esp + 0x128], xmm0
movsd xmm0, qword [esp + 0x20]
subsd xmm0, qword [esp + 0x48]
lea eax, [ebx + 0x20]
push eax
lea ecx, [esp + 0x12c]
movsd qword [esp + 0x134], xmm0
call fcn.00472f10
fst qword [esp + 0xe0]
fld qword [esp + 0x68]
movsd xmm4, qword [esp + 0xe0]
fxch st(1)
fcompi st(1)
fstp st(0)
jbe 0x4c5ec8
cmp dword [esp + 0x14], 0
je 0x4c5c5a
movsd xmm0, qword [esp + 0x88]
movsd xmm1, qword [esp + 0x18]
movsd xmm2, qword [esp + 0x48]
movsd xmm3, qword [esp + 0x40]
comisd xmm0, xmm4
movsd xmm0, qword [esp + 0x20]
jbe 0x4c5bc8
movdqa xmm5, xmm1
movsd qword [esp + 0xa0], xmm5
movdqa xmm5, xmm0
movsd qword [esp + 0xa8], xmm5
movdqa xmm5, xmm3
movsd qword [esp + 0xb0], xmm5
movdqa xmm5, xmm2
movsd qword [esp + 0xb8], xmm5
movsd xmm5, qword [esp + 0x30]
movsd qword [esp + 0x100], xmm5
movsd xmm5, qword [esp + 0x28]
movsd qword [esp + 0xe8], xmm5
movsd qword [esp + 0x88], xmm4
subsd xmm3, qword [esp + 0xd0]
subsd xmm2, qword [esp + 0xd8]
subsd xmm1, qword [esp + 0xf0]
subsd xmm0, qword [esp + 0xf8]
lea ecx, [esp + 0x148]
movsd qword [esp + 0x138], xmm3
movsd qword [esp + 0x140], xmm2
movsd qword [esp + 0x148], xmm1
movsd qword [esp + 0x150], xmm0
call fcn.00472ec0
fstp qword [esp + 0x70]
lea ecx, [esp + 0x138]
call fcn.00472ec0
fst qword [esp + 0x58]
fld qword [esp + 0x70]
fcompi st(1)
fstp st(0)
jbe 0x4c5c42
movsd xmm0, qword [esp + 0x70]
jmp 0x4c5c48
movsd xmm0, qword [esp + 0x58]
movsd xmm1, qword [esp + 0x68]
comisd xmm1, xmm0
ja 0x4c5eef
jmp 0x4c5cbd
movq xmm0, qword [esp + 0x18]
movsd qword [esp + 0xa0], xmm0
movq xmm0, qword [esp + 0x20]
movsd qword [esp + 0xa8], xmm0
movq xmm0, qword [esp + 0x40]
movsd qword [esp + 0xb0], xmm0
movq xmm0, qword [esp + 0x48]
movsd qword [esp + 0xb8], xmm0
movsd xmm0, qword [esp + 0x30]
movsd qword [esp + 0x100], xmm0
movsd xmm0, qword [esp + 0x28]
movsd qword [esp + 0xe8], xmm0
movsd qword [esp + 0x88], xmm4
lea eax, [ebx + 0x20]
push eax
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x110]
push edx
lea ecx, [esp + 0x4c]
call fcn.004734b0
movsd xmm0, qword [esp + 0x18]
subsd xmm0, qword [esp + 0x108]
movsd qword [esp + 0x118], xmm0
movsd xmm0, qword [esp + 0x20]
subsd xmm0, qword [esp + 0x110]
lea ecx, [esp + 0x90]
movsd qword [esp + 0x120], xmm0
call fcn.004733c0
fst qword [esp + 0x70]
fld qword [esp + 0x68]
fcompi st(1)
fstp st(0)
ja 0x4c5eef
movsd xmm1, qword [esp + 0x78]
divsd xmm1, qword [esp + 0x70]
movsd xmm0, qword [esp + 0x80]
divsd xmm0, qword [esp + 0x70]
movsd xmm2, qword [esp + 0x120]
movsd xmm5, qword [esp + 0x118]
movsd xmm3, qword [esp + 0x98]
movsd xmm4, qword [esp + 0x90]
movapd xmm6, xmm2
mulsd xmm2, xmm0
movapd xmm7, xmm5
mulsd xmm6, xmm3
mulsd xmm5, xmm1
addsd xmm2, xmm5
movsd xmm5, qword [0x57ca20]
xorpd xmm2, xmm5
movsd qword [esp + 0xc8], xmm2
mulsd xmm7, xmm4
addsd xmm6, xmm7
movsd qword [esp + 0xc0], xmm6
movapd xmm2, xmm3
mulsd xmm2, xmm3
movapd xmm6, xmm4
mulsd xmm6, xmm4
addsd xmm2, xmm6
movsd qword [esp + 0x158], xmm2
movapd xmm2, xmm0
mulsd xmm2, xmm0
movsd qword [esp + 0x80], xmm0
movapd xmm6, xmm1
mulsd xmm6, xmm1
movsd qword [esp + 0x78], xmm1
mulsd xmm0, xmm3
mulsd xmm1, xmm4
addsd xmm0, xmm1
xorpd xmm0, xmm5
addsd xmm2, xmm6
lea ecx, [esp + 0x158]
movsd qword [esp + 0x170], xmm2
movsd qword [esp + 0x160], xmm0
movsd qword [esp + 0x168], xmm0
call fcn.00481300
fabs
fld qword [0x57e390]
fcompi st(1)
fstp st(0)
ja 0x4c5eef
lea eax, [esp + 0x158]
push eax
lea ecx, [esp + 0xc4]
call fcn.00473970
movsd xmm2, qword [esp + 0xc0]
divsd xmm2, qword [esp + 0x70]
movsd xmm0, qword [esp + 0x30]
movsd xmm1, qword [esp + 0x28]
inc dword [esp + 0x14]
movsd xmm4, qword [esp + 0xe0]
subsd xmm0, xmm2
movsd xmm2, qword [esp + 0xc8]
divsd xmm2, qword [esp + 0x70]
subsd xmm1, xmm2
movsd qword [esp + 0x28], xmm1
movq xmm1, qword [esp + 0x18]
movsd qword [esp + 0xf0], xmm1
movq xmm1, qword [esp + 0x20]
movsd qword [esp + 0xf8], xmm1
movq xmm1, qword [esp + 0x40]
movsd qword [esp + 0xd0], xmm1
movq xmm1, qword [esp + 0x48]
movsd qword [esp + 0x30], xmm0
movsd qword [esp + 0xd8], xmm1
jmp 0x4c5ece
movsd xmm0, qword [esp + 0x30]
cmp byte [esp + 0x13], 0
je 0x4c5eef
cmp dword [esp + 0x14], 0x14
jge 0x4c5eef
comisd xmm4, xmmword [esp + 0x68]
ja 0x4c5aa0
cmp dword [esp + 0x14], 0x14
jl 0x4c5f49
movq xmm0, qword [esp + 0xa0]
movsd xmm1, qword [esp + 0xe8]
movq qword [esp + 0x18], xmm0
movq xmm0, qword [esp + 0xa8]
movq qword [esp + 0x20], xmm0
movq xmm0, qword [esp + 0xb0]
movq qword [esp + 0x40], xmm0
movq xmm0, qword [esp + 0xb8]
movq qword [esp + 0x48], xmm0
movsd xmm0, qword [esp + 0x100]
movsd qword [esp + 0x30], xmm0
movsd qword [esp + 0x28], xmm1
mov edx, dword [esi]
mov edx, dword [edx + 0x50]
sub esp, 8
lea eax, [esp + 0x110]
movsd qword [esp], xmm0
push eax
mov ecx, esi
call edx
movq xmm0, qword [eax]
movq qword [esp + 0x90], xmm0
movq xmm0, qword [eax + 8]
lea ecx, [esp + 0x90]
movq qword [esp + 0x98], xmm0
call fcn.004733c0
fstp st(0)
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx]
movsd xmm0, qword [esp + 0x28]
mov eax, dword [eax + 0x50]
sub esp, 8
lea edx, [esp + 0x110]
movsd qword [esp], xmm0
push edx
call eax
movq xmm0, qword [eax]
movq qword [esp + 0x78], xmm0
movq xmm0, qword [eax + 8]
lea ecx, [esp + 0x78]
movq qword [esp + 0x80], xmm0
call fcn.004733c0
fstp st(0)
lea ecx, [esp + 0x78]
push ecx
lea ecx, [esp + 0x94]
call fcn.00472e60
fabs
fld qword [0x57b948]
fcompi st(1)
fstp st(0)
jbe 0x4c604b
mov edx, dword [esp + 0x3c]
movsd xmm0, qword [esp + 0x30]
movsd xmm1, qword [esp + 0x28]
mov ecx, dword [esp + 0x54]
sub esp, 0x10
mov eax, esp
push edx
movq qword [eax], xmm0
push esi
movq qword [eax + 8], xmm1
mov eax, dword [esp + 0x7c]
push eax
push ecx
push edi
mov ecx, ebx
call fcn.004c5050
test al, al
je 0x4c604b
fld qword [edi]
lea edx, [esp + 0x40]
push edx
fstp qword [esp + 0x5c]
lea eax, [esp + 0x1c]
push eax
mov ecx, ebx
call fcn.004c4ec0
fld qword [esp + 0x58]
fxch st(1)
fcompi st(1)
fstp st(0)
ja 0x4c6193
lea ecx, [esp + 0x40]
push ecx
lea edx, [esp + 0x1c]
push edx
mov ecx, ebx
call fcn.004c4ec0
fst qword [esp + 0x58]
fstp qword [edi]
mov eax, dword [esi + 0xc]
cmp eax, 0x31
je 0x4c608b
cmp eax, 0xf
je 0x4c6078
cmp eax, 0x13
jne 0x4c614d
cmp eax, 0x31
je 0x4c608b
cmp eax, 0xf
je 0x4c608b
cmp eax, 0x13
jne 0x4c614d
movsd xmm0, qword [ebx]
movsd xmm1, qword [esp + 0x58]
comisd xmm1, xmm0
jbe 0x4c614d
movsd xmm2, qword [0x57b718]
comisd xmm2, xmm1
jbe 0x4c614d
movsd xmm7, qword [esp + 0x88]
comisd xmm0, xmm7
jbe 0x4c614d
movsd xmm3, qword [esi + 0x18]
movsd xmm1, qword [esi + 0x10]
mov eax, dword [esp + 0x3c]
movsd xmm5, qword [eax + 0x18]
movsd xmm4, qword [eax + 0x10]
movsd xmm6, qword [esp + 0x30]
movapd xmm0, xmm3
subsd xmm0, xmm1
mulsd xmm0, qword [0x57cca8]
movapd xmm2, xmm5
addsd xmm1, xmm0
comisd xmm6, xmm1
subsd xmm2, xmm4
mulsd xmm2, qword [0x57cca8]
jbe 0x4c614d
subsd xmm3, xmm0
comisd xmm3, xmm6
jbe 0x4c614d
movsd xmm0, qword [esp + 0x28]
addsd xmm4, xmm2
comisd xmm0, xmm4
jbe 0x4c614d
subsd xmm5, xmm2
comisd xmm5, xmm0
jbe 0x4c614d
movsd qword [edi], xmm7
comisd xmm7, xmmword [ebx]
jbe 0x4c614d
lea eax, [esp + 0x40]
push eax
lea ecx, [esp + 0x1c]
push ecx
mov ecx, ebx
call fcn.004c4ec0
fstp qword [edi]
mov eax, dword [esp + 0x64]
movsd xmm0, qword [esp + 0x30]
movsd qword [eax], xmm0
movsd xmm0, qword [esp + 0x28]
movsd qword [eax + 8], xmm0
movsd xmm0, qword [ebx]
comisd xmm0, xmmword [edi]
mov eax, dword [esp + 0x54]
jbe 0x4c61ac
movsd xmm0, qword [esp + 0x18]
movsd xmm1, qword [esp + 0x20]
movq qword [eax], xmm0
movq qword [eax + 0x10], xmm0
movq qword [eax + 8], xmm1
movq qword [eax + 0x18], xmm1
mov al, 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x170]
xor ecx, esp
call fcn.00551a8e
mov esp, ebp
pop ebp
ret 0x24
movq xmm0, qword [esp + 0x18]
mov ecx, dword [esp + 0x17c]
movq qword [eax], xmm0
movq xmm0, qword [esp + 0x20]
pop edi
movq qword [eax + 8], xmm0
movq xmm0, qword [esp + 0x3c]
movq qword [eax + 0x10], xmm0
movq xmm0, qword [esp + 0x44]
pop esi
pop ebx
movq qword [eax + 0x18], xmm0
xor ecx, esp
xor al, al
call fcn.00551a8e
mov esp, ebp
pop ebp
ret 0x24