// File: /workspace/github_cpp_makefile_star2_O1/FreeSlave[P]vhlt/hlrad/lerp.cpp
// Function: CalcInterpolation_Square(localtriangulation_t const*, int, float const*, interpolation_t*)
static void CalcInterpolation_Square (const localtriangulation_t *lt, int i, const vec3_t spot, interpolation_t *interp)
{
	const localtriangulation_t::Wedge *w1;
	const localtriangulation_t::Wedge *w2;
	const localtriangulation_t::Wedge *w3;
	vec_t weights[4];
	vec_t dot1;
	vec_t dot2;
	vec_t dot;
	vec3_t normal1;
	vec3_t normal2;
	vec3_t normal;
	vec_t frac;
	vec_t frac_near;
	vec_t frac_far;
	vec_t ratio;
	vec3_t mid_far;
	vec3_t mid_near;
	vec3_t test;
	
	w1 = &lt->sortedwedges[i];
	w2 = &lt->sortedwedges[(i + 1) % (int)lt->sortedwedges.size ()];
	w3 = &lt->sortedwedges[(i + 2) % (int)lt->sortedwedges.size ()];
	if (w1->shape != localtriangulation_t::Wedge::eSquareLeft || w2->shape != localtriangulation_t::Wedge::eSquareRight)
	{
		Error ("CalcInterpolation_Square: internal error: not square.");
	}

	weights[0] = 0.0;
	weights[1] = 0.0;
	weights[2] = 0.0;
	weights[3] = 0.0;

	// find mid_near on (o,p3), mid_far on (p1,p2), spot on (mid_near,mid_far)
	CrossProduct (w1->leftdirection, lt->normal, normal1);
	VectorNormalize (normal1);
	CrossProduct (w2->wedgenormal, lt->normal, normal2);
	VectorNormalize (normal2);
	dot1 = DotProduct (spot, normal1) - 0;
	dot2 = DotProduct (spot, normal2) - DotProduct (w3->leftspot, normal2);
	if (dot1 <= NORMAL_EPSILON)
	{
		frac = 0.0;
	}
	else if (dot2 <= NORMAL_EPSILON)
	{
		frac = 1.0;
	}
	else
	{
		frac = dot1 / (dot1 + dot2);
		frac = qmax (0, qmin (frac, 1));
	}

	dot1 = DotProduct (w3->leftspot, normal1) - 0;
	dot2 = 0 - DotProduct (w3->leftspot, normal2);
	if (dot1 <= NORMAL_EPSILON)
	{
		frac_near = 1.0;
	}
	else if (dot2 <= NORMAL_EPSILON)
	{
		frac_near = 0.0;
	}
	else
	{
		frac_near = (frac * dot2) / ((1 - frac) * dot1 + frac * dot2);
	}
	VectorScale (w3->leftspot, frac_near, mid_near);

	dot1 = DotProduct (w2->leftspot, normal1) - 0;
	dot2 = DotProduct (w1->leftspot, normal2) - DotProduct (w3->leftspot, normal2);
	if (dot1 <= NORMAL_EPSILON)
	{
		frac_far = 1.0;
	}
	else if (dot2 <= NORMAL_EPSILON)
	{
		frac_far = 0.0;
	}
	else
	{
		frac_far = (frac * dot2) / ((1 - frac) * dot1 + frac * dot2);
	}
	VectorScale (w1->leftspot, 1 - frac_far, mid_far);
	VectorMA (mid_far, frac_far, w2->leftspot, mid_far);

	CrossProduct (lt->normal, w3->leftdirection, normal);
	VectorNormalize (normal);
	dot = DotProduct (spot, normal) - 0;
	dot1 = (1 - frac_far) * DotProduct (w1->leftspot, normal) + frac_far * DotProduct (w2->leftspot, normal) - 0;
	if (dot <= NORMAL_EPSILON)
	{
		ratio = 0.0;
	}
	else if (dot >= dot1)
	{
		ratio = 1.0;
	}
	else
	{
		ratio = dot / dot1;
		ratio = qmax (0, qmin (ratio, 1));
	}

	VectorScale (mid_near, 1 - ratio, test);
	VectorMA (test, ratio, mid_far, test);
	VectorSubtract (test, spot, test);
	if (g_drawlerp && VectorLength (test) > 4 * ON_EPSILON)
	{
		Developer (DEVELOPER_LEVEL_SPAM, "Debug: triangulation: internal error 12.\n");
	}

	weights[0] += 0.5 * (1 - ratio) * (1 - frac_near);
	weights[3] += 0.5 * (1 - ratio) * frac_near;
	weights[1] += 0.5 * ratio * (1 - frac_far);
	weights[2] += 0.5 * ratio * frac_far;
	
	// find mid_near on (o,p1), mid_far on (p2,p3), spot on (mid_near,mid_far)
	CrossProduct (lt->normal, w3->leftdirection, normal1);
	VectorNormalize (normal1);
	CrossProduct (w1->wedgenormal, lt->normal, normal2);
	VectorNormalize (normal2);
	dot1 = DotProduct (spot, normal1) - 0;
	dot2 = DotProduct (spot, normal2) - DotProduct (w1->leftspot, normal2);
	if (dot1 <= NORMAL_EPSILON)
	{
		frac = 0.0;
	}
	else if (dot2 <= NORMAL_EPSILON)
	{
		frac = 1.0;
	}
	else
	{
		frac = dot1 / (dot1 + dot2);
		frac = qmax (0, qmin (frac, 1));
	}

	dot1 = DotProduct (w1->leftspot, normal1) - 0;
	dot2 = 0 - DotProduct (w1->leftspot, normal2);
	if (dot1 <= NORMAL_EPSILON)
	{
		frac_near = 1.0;
	}
	else if (dot2 <= NORMAL_EPSILON)
	{
		frac_near = 0.0;
	}
	else
	{
		frac_near = (frac * dot2) / ((1 - frac) * dot1 + frac * dot2);
	}
	VectorScale (w1->leftspot, frac_near, mid_near);

	dot1 = DotProduct (w2->leftspot, normal1) - 0;
	dot2 = DotProduct (w3->leftspot, normal2) - DotProduct (w1->leftspot, normal2);
	if (dot1 <= NORMAL_EPSILON)
	{
		frac_far = 1.0;
	}
	else if (dot2 <= NORMAL_EPSILON)
	{
		frac_far = 0.0;
	}
	else
	{
		frac_far = (frac * dot2) / ((1 - frac) * dot1 + frac * dot2);
	}
	VectorScale (w3->leftspot, 1 - frac_far, mid_far);
	VectorMA (mid_far, frac_far, w2->leftspot, mid_far);

	CrossProduct (w1->leftdirection, lt->normal, normal);
	VectorNormalize (normal);
	dot = DotProduct (spot, normal) - 0;
	dot1 = (1 - frac_far) * DotProduct (w3->leftspot, normal) + frac_far * DotProduct (w2->leftspot, normal) - 0;
	if (dot <= NORMAL_EPSILON)
	{
		ratio = 0.0;
	}
	else if (dot >= dot1)
	{
		ratio = 1.0;
	}
	else
	{
		ratio = dot / dot1;
		ratio = qmax (0, qmin (ratio, 1));
	}

	VectorScale (mid_near, 1 - ratio, test);
	VectorMA (test, ratio, mid_far, test);
	VectorSubtract (test, spot, test);
	if (g_drawlerp && VectorLength (test) > 4 * ON_EPSILON)
	{
		Developer (DEVELOPER_LEVEL_SPAM, "Debug: triangulation: internal error 13.\n");
	}

	weights[0] += 0.5 * (1 - ratio) * (1 - frac_near);
	weights[1] += 0.5 * (1 - ratio) * frac_near;
	weights[3] += 0.5 * ratio * (1 - frac_far);
	weights[2] += 0.5 * ratio * frac_far;

	interp->isbiased = false;
	interp->totalweight = 1.0;
	interp->points.resize (4);
	interp->points[0].patchnum = lt->patchnum;
	interp->points[0].weight = weights[0];
	interp->points[1].patchnum = w1->leftpatchnum;
	interp->points[1].weight = weights[1];
	interp->points[2].patchnum = w2->leftpatchnum;
	interp->points[2].weight = weights[2];
	interp->points[3].patchnum = w3->leftpatchnum;
	interp->points[3].weight = weights[3];
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x108, %rsp            # imm = 0x108
movq %rcx, 0xd8(%rsp)
movq %rdx, %r15
movq %rdi, %r14
movslq %esi, %rcx
imulq $0x2c, %rcx, %rsi
movq 0x70(%rdi), %r12
movq 0x78(%rdi), %rdx
leaq (%r12,%rsi), %r13
leal 0x1(%rcx), %eax
subq %r12, %rdx
shrq $0x2, %rdx
imull $0xba2e8ba3, %edx, %edi # imm = 0xBA2E8BA3
cltd
idivl %edi
movslq %edx, %rax
imulq $0x2c, %rax, %rbx
addl $0x2, %ecx
movl %ecx, %eax
cltd
idivl %edi
movl %edx, %ebp
cmpl $0x3, (%r12,%rsi)
jne 0x12e83
cmpl $0x4, (%r12,%rbx)
je 0x12e91
leaq 0x28a5c(%rip), %rdi     # 0x3b8e6
xorl %eax, %eax
callq 0xa01c
movss 0x44(%r14), %xmm0
movss 0x14(%r13), %xmm4
movsd 0x18(%r13), %xmm1
movsd 0x48(%r14), %xmm2
movaps %xmm4, %xmm3
shufps $0xd4, %xmm1, %xmm3     # xmm3 = xmm3[0,1],xmm1[1,3]
shufps $0x52, %xmm1, %xmm3     # xmm3 = xmm3[2,0],xmm1[1,1]
mulps %xmm2, %xmm3
movaps %xmm0, %xmm5
shufps $0xd4, %xmm2, %xmm5     # xmm5 = xmm5[0,1],xmm2[1,3]
shufps $0x52, %xmm2, %xmm5     # xmm5 = xmm5[2,0],xmm2[1,1]
mulps %xmm1, %xmm5
subps %xmm3, %xmm5
mulss %xmm1, %xmm0
mulss %xmm2, %xmm4
subss %xmm0, %xmm4
movaps %xmm5, %xmm0
mulps %xmm5, %xmm0
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
movaps %xmm5, %xmm1
mulss %xmm5, %xmm1
addss %xmm0, %xmm1
movaps %xmm4, %xmm0
mulss %xmm4, %xmm0
addss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x12f07
sqrtsd %xmm0, %xmm0
jmp 0x12f20
movaps %xmm4, 0x10(%rsp)
movaps %xmm5, 0x30(%rsp)
callq 0x4240
movaps 0x30(%rsp), %xmm5
movaps 0x10(%rsp), %xmm4
movslq %ebp, %rax
addq %r12, %rbx
movsd 0x251e1(%rip), %xmm12   # 0x38110
ucomisd %xmm0, %xmm12
jbe 0x12f40
xorpd %xmm6, %xmm6
xorps %xmm15, %xmm15
jmp 0x12f63
cvtps2pd %xmm5, %xmm1
movapd %xmm0, %xmm2
unpcklpd %xmm0, %xmm2            # xmm2 = xmm2[0],xmm0[0]
divpd %xmm2, %xmm1
cvtpd2ps %xmm1, %xmm6
xorps %xmm1, %xmm1
cvtss2sd %xmm4, %xmm1
divsd %xmm0, %xmm1
cvtsd2ss %xmm1, %xmm15
imulq $0x2c, %rax, %rbp
movss 0x44(%r14), %xmm0
movss 0x20(%rbx), %xmm4
movsd 0x24(%rbx), %xmm1
movsd 0x48(%r14), %xmm2
movaps %xmm4, %xmm3
shufps $0xd4, %xmm1, %xmm3     # xmm3 = xmm3[0,1],xmm1[1,3]
shufps $0x52, %xmm1, %xmm3     # xmm3 = xmm3[2,0],xmm1[1,1]
mulps %xmm2, %xmm3
movaps %xmm0, %xmm5
shufps $0xd4, %xmm2, %xmm5     # xmm5 = xmm5[0,1],xmm2[1,3]
shufps $0x52, %xmm2, %xmm5     # xmm5 = xmm5[2,0],xmm2[1,1]
mulps %xmm1, %xmm5
subps %xmm3, %xmm5
mulss %xmm1, %xmm0
mulss %xmm2, %xmm4
subss %xmm0, %xmm4
movaps %xmm5, %xmm0
mulps %xmm5, %xmm0
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
movaps %xmm5, %xmm1
mulss %xmm5, %xmm1
addss %xmm0, %xmm1
movaps %xmm4, %xmm0
mulss %xmm4, %xmm0
addss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x12fdb
sqrtsd %xmm0, %xmm0
jmp 0x13015
movss %xmm15, 0x10(%rsp)
movapd %xmm6, 0x30(%rsp)
movaps %xmm4, (%rsp)
movaps %xmm5, 0x20(%rsp)
callq 0x4240
movaps 0x20(%rsp), %xmm5
movaps (%rsp), %xmm4
movapd 0x30(%rsp), %xmm6
movss 0x10(%rsp), %xmm15
movsd 0x250fb(%rip), %xmm12   # 0x38110
addq %rbp, %r12
xorps %xmm2, %xmm2
xorps %xmm3, %xmm3
ucomisd %xmm0, %xmm12
xorps %xmm1, %xmm1
ja 0x1304a
cvtps2pd %xmm5, %xmm1
movapd %xmm0, %xmm2
unpcklpd %xmm0, %xmm2            # xmm2 = xmm2[0],xmm0[0]
divpd %xmm2, %xmm1
cvtpd2ps %xmm1, %xmm2
xorps %xmm1, %xmm1
cvtss2sd %xmm4, %xmm1
divsd %xmm0, %xmm1
cvtsd2ss %xmm1, %xmm1
movss (%r15), %xmm7
movss 0x4(%r15), %xmm9
movapd %xmm6, %xmm4
shufps $0x55, %xmm6, %xmm4     # xmm4 = xmm4[1,1],xmm6[1,1]
movaps %xmm4, %xmm0
mulss %xmm9, %xmm0
movaps %xmm7, %xmm5
movaps %xmm6, %xmm13
mulss %xmm6, %xmm5
addss %xmm0, %xmm5
movss 0x8(%r15), %xmm8
movaps %xmm8, %xmm6
mulss %xmm15, %xmm6
addss %xmm5, %xmm6
movaps %xmm2, %xmm10
shufps $0x55, %xmm2, %xmm10    # xmm10 = xmm10[1,1],xmm2[1,1]
movsd 0x8(%r12), %xmm11
movaps %xmm11, %xmm5
shufps $0x55, %xmm11, %xmm5    # xmm5 = xmm5[1,1],xmm11[1,1]
movaps %xmm5, %xmm0
mulss %xmm10, %xmm0
movaps %xmm11, (%rsp)
mulss %xmm2, %xmm11
addss %xmm0, %xmm11
movss 0x10(%r12), %xmm14
movaps %xmm14, %xmm0
mulss %xmm1, %xmm0
addss %xmm11, %xmm0
xorps %xmm11, %xmm11
cvtss2sd %xmm6, %xmm11
ucomisd %xmm11, %xmm12
jae 0x1312a
mulss %xmm9, %xmm10
mulss %xmm2, %xmm7
addss %xmm10, %xmm7
mulss %xmm1, %xmm8
addss %xmm7, %xmm8
subss %xmm0, %xmm8
xorps %xmm3, %xmm3
cvtss2sd %xmm8, %xmm3
ucomisd %xmm3, %xmm12
jae 0x13122
addss %xmm6, %xmm8
divss %xmm8, %xmm6
minss 0x2501f(%rip), %xmm6    # 0x38138
xorps %xmm3, %xmm3
maxss %xmm6, %xmm3
jmp 0x1312a
movss 0x2500e(%rip), %xmm3    # 0x38138
mulss %xmm5, %xmm4
movaps (%rsp), %xmm5
mulss %xmm13, %xmm5
addss %xmm4, %xmm5
movaps %xmm14, %xmm4
mulss %xmm15, %xmm4
addss %xmm5, %xmm4
xorps %xmm5, %xmm5
cvtss2sd %xmm4, %xmm5
movss 0x24fe0(%rip), %xmm8    # 0x38138
ucomisd %xmm5, %xmm12
movaps %xmm8, 0x30(%rsp)
jae 0x131a0
xorps %xmm5, %xmm5
movaps %xmm5, 0x30(%rsp)
subss %xmm0, %xmm5
xorps %xmm6, %xmm6
cvtss2sd %xmm5, %xmm6
ucomisd %xmm6, %xmm12
jae 0x131a0
mulss %xmm3, %xmm5
movss 0x24fad(%rip), %xmm6    # 0x38138
subss %xmm3, %xmm6
mulss %xmm4, %xmm6
addss %xmm5, %xmm6
divss %xmm6, %xmm5
movaps %xmm5, 0x30(%rsp)
movss 0x10(%rbx), %xmm9
movsd 0x8(%rbx), %xmm10
movaps %xmm13, %xmm4
mulps %xmm10, %xmm4
shufps $0x55, %xmm4, %xmm4     # xmm4 = xmm4[1,1,1,1]
mulss %xmm10, %xmm13
addss %xmm4, %xmm13
mulss %xmm9, %xmm15
addss %xmm13, %xmm15
movsd 0x8(%r13), %xmm13
movss 0x10(%r13), %xmm11
xorps %xmm4, %xmm4
cvtss2sd %xmm15, %xmm4
ucomisd %xmm4, %xmm12
movaps %xmm8, 0x10(%rsp)
jae 0x13246
movaps %xmm2, %xmm4
mulps %xmm13, %xmm4
shufps $0x55, %xmm4, %xmm4     # xmm4 = xmm4[1,1,1,1]
mulss %xmm13, %xmm2
addss %xmm4, %xmm2
mulss %xmm11, %xmm1
addss %xmm2, %xmm1
subss %xmm0, %xmm1
xorps %xmm0, %xmm0
cvtss2sd %xmm1, %xmm0
xorps %xmm2, %xmm2
movaps %xmm2, 0x10(%rsp)
ucomisd %xmm0, %xmm12
jae 0x13246
mulss %xmm3, %xmm1
movss 0x24f08(%rip), %xmm0    # 0x38138
subss %xmm3, %xmm0
mulss %xmm15, %xmm0
addss %xmm1, %xmm0
divss %xmm0, %xmm1
movaps %xmm1, 0x10(%rsp)
movss 0x14(%r12), %xmm0
movss 0x44(%r14), %xmm4
movsd 0x48(%r14), %xmm1
movsd 0x18(%r12), %xmm2
movaps %xmm4, %xmm3
shufps $0xd4, %xmm1, %xmm3     # xmm3 = xmm3[0,1],xmm1[1,3]
shufps $0x52, %xmm1, %xmm3     # xmm3 = xmm3[2,0],xmm1[1,1]
mulps %xmm2, %xmm3
movaps %xmm0, %xmm5
shufps $0xd4, %xmm2, %xmm5     # xmm5 = xmm5[0,1],xmm2[1,3]
shufps $0x52, %xmm2, %xmm5     # xmm5 = xmm5[2,0],xmm2[1,1]
mulps %xmm1, %xmm5
subps %xmm3, %xmm5
mulss %xmm1, %xmm0
mulss %xmm2, %xmm4
subss %xmm0, %xmm4
movaps %xmm5, %xmm0
mulps %xmm5, %xmm0
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
movaps %xmm5, %xmm1
mulss %xmm5, %xmm1
addss %xmm0, %xmm1
movaps %xmm4, %xmm0
mulss %xmm4, %xmm0
addss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x132be
sqrtsd %xmm0, %xmm0
jmp 0x1333d
movss %xmm14, 0x20(%rsp)
movss %xmm9, 0xa0(%rsp)
movaps %xmm10, 0xc0(%rsp)
movss %xmm11, 0x40(%rsp)
movaps %xmm13, 0x60(%rsp)
movaps %xmm4, 0x50(%rsp)
movaps %xmm5, 0xb0(%rsp)
callq 0x4240
movaps 0xb0(%rsp), %xmm5
movaps 0x50(%rsp), %xmm4
movaps 0x60(%rsp), %xmm13
movss 0x40(%rsp), %xmm11
movaps 0xc0(%rsp), %xmm10
movss 0xa0(%rsp), %xmm9
movss 0x20(%rsp), %xmm14
movss 0x24e04(%rip), %xmm8    # 0x38138
movsd 0x24dd3(%rip), %xmm12   # 0x38110
xorps %xmm2, %xmm2
xorps %xmm7, %xmm7
ucomisd %xmm0, %xmm12
xorps %xmm3, %xmm3
ja 0x13372
cvtps2pd %xmm5, %xmm1
movapd %xmm0, %xmm2
unpcklpd %xmm0, %xmm2            # xmm2 = xmm2[0],xmm0[0]
divpd %xmm2, %xmm1
cvtpd2ps %xmm1, %xmm2
xorps %xmm1, %xmm1
cvtss2sd %xmm4, %xmm1
divsd %xmm0, %xmm1
xorps %xmm3, %xmm3
cvtsd2ss %xmm1, %xmm3
subss 0x10(%rsp), %xmm8
movsd (%r15), %xmm0
movaps %xmm2, %xmm1
mulps %xmm0, %xmm1
shufps $0x55, %xmm1, %xmm1     # xmm1 = xmm1[1,1,1,1]
movaps %xmm0, %xmm5
mulss %xmm2, %xmm5
addss %xmm1, %xmm5
movss 0x8(%r15), %xmm1
movaps %xmm1, %xmm4
mulss %xmm3, %xmm4
addss %xmm5, %xmm4
xorps %xmm5, %xmm5
cvtss2sd %xmm4, %xmm5
ucomisd %xmm5, %xmm12
jae 0x13427
movaps %xmm2, %xmm6
shufps $0x55, %xmm2, %xmm6     # xmm6 = xmm6[1,1],xmm2[1,1]
movss 0xc(%r13), %xmm5
mulss %xmm6, %xmm5
movss 0x8(%r13), %xmm7
mulss %xmm2, %xmm7
addss %xmm5, %xmm7
movss 0x10(%r13), %xmm5
mulss %xmm3, %xmm5
mulss 0xc(%rbx), %xmm6
addss %xmm7, %xmm5
mulss 0x8(%rbx), %xmm2
addss %xmm6, %xmm2
mulss 0x10(%rbx), %xmm3
addss %xmm2, %xmm3
mulss 0x10(%rsp), %xmm3
mulss %xmm8, %xmm5
addss %xmm3, %xmm5
ucomiss %xmm5, %xmm4
jae 0x1341f
divss %xmm5, %xmm4
minss 0x24d22(%rip), %xmm4    # 0x38138
xorps %xmm7, %xmm7
maxss %xmm4, %xmm7
jmp 0x13427
movss 0x24d11(%rip), %xmm7    # 0x38138
movss 0x24d09(%rip), %xmm2    # 0x38138
subss %xmm7, %xmm2
movaps %xmm2, 0xa0(%rsp)
leaq 0x54e75ff(%rip), %rbp   # 0x54faa41
cmpb $0x1, (%rbp)
movaps %xmm8, 0x20(%rsp)
movaps %xmm7, 0xc0(%rsp)
jne 0x1353f
movaps %xmm8, %xmm3
shufps $0x0, %xmm8, %xmm3      # xmm3 = xmm3[0,0],xmm8[0,0]
movaps 0x10(%rsp), %xmm6
movaps %xmm6, %xmm2
shufps $0x0, %xmm6, %xmm2      # xmm2 = xmm2[0,0],xmm6[0,0]
movaps 0x30(%rsp), %xmm5
movaps %xmm5, %xmm4
shufps $0x0, %xmm5, %xmm4      # xmm4 = xmm4[0,0],xmm5[0,0]
mulps %xmm3, %xmm13
mulss %xmm8, %xmm11
mulps %xmm10, %xmm2
addps %xmm13, %xmm2
mulss %xmm6, %xmm9
addss %xmm11, %xmm9
movaps (%rsp), %xmm6
mulps %xmm4, %xmm6
mulss %xmm5, %xmm14
movaps 0xa0(%rsp), %xmm3
mulss %xmm3, %xmm14
mulss %xmm7, %xmm9
addss %xmm14, %xmm9
subss %xmm1, %xmm9
movaps %xmm3, %xmm1
shufps $0x0, %xmm3, %xmm1      # xmm1 = xmm1[0,0],xmm3[0,0]
mulps %xmm6, %xmm1
movaps %xmm7, %xmm3
shufps $0x0, %xmm7, %xmm3      # xmm3 = xmm3[0,0],xmm7[0,0]
mulps %xmm2, %xmm3
addps %xmm1, %xmm3
subps %xmm0, %xmm3
mulps %xmm3, %xmm3
cvtps2pd %xmm3, %xmm0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
mulss %xmm9, %xmm9
xorps %xmm0, %xmm0
cvtss2sd %xmm9, %xmm0
addsd %xmm1, %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x1350b
sqrtsd %xmm0, %xmm0
jmp 0x13519
callq 0x4240
movsd 0x24bf7(%rip), %xmm12   # 0x38110
ucomisd 0x2819f(%rip), %xmm0    # 0x3b6c0
jbe 0x1353f
leaq 0x283f2(%rip), %rsi     # 0x3b91c
movl $0x5, %edi
xorl %eax, %eax
callq 0xa52e
movsd 0x24bd1(%rip), %xmm12   # 0x38110
movss 0x14(%r12), %xmm0
movss 0x44(%r14), %xmm4
movsd 0x48(%r14), %xmm1
movsd 0x18(%r12), %xmm2
movaps %xmm4, %xmm3
shufps $0xd4, %xmm1, %xmm3     # xmm3 = xmm3[0,1],xmm1[1,3]
shufps $0x52, %xmm1, %xmm3     # xmm3 = xmm3[2,0],xmm1[1,1]
mulps %xmm2, %xmm3
movaps %xmm0, %xmm5
shufps $0xd4, %xmm2, %xmm5     # xmm5 = xmm5[0,1],xmm2[1,3]
shufps $0x52, %xmm2, %xmm5     # xmm5 = xmm5[2,0],xmm2[1,1]
mulps %xmm1, %xmm5
subps %xmm3, %xmm5
mulss %xmm1, %xmm0
mulss %xmm2, %xmm4
subss %xmm0, %xmm4
movaps %xmm5, %xmm0
mulps %xmm5, %xmm0
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
movaps %xmm5, %xmm1
mulss %xmm5, %xmm1
addss %xmm0, %xmm1
movaps %xmm4, %xmm0
mulss %xmm4, %xmm0
addss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x135b7
sqrtsd %xmm0, %xmm0
jmp 0x135d7
movaps %xmm4, (%rsp)
movaps %xmm5, 0x40(%rsp)
callq 0x4240
movaps 0x40(%rsp), %xmm5
movaps (%rsp), %xmm4
movsd 0x24b39(%rip), %xmm12   # 0x38110
ucomisd %xmm0, %xmm12
jbe 0x135e6
xorps %xmm6, %xmm6
xorps %xmm4, %xmm4
jmp 0x1360b
cvtps2pd %xmm5, %xmm1
movapd %xmm0, %xmm2
unpcklpd %xmm0, %xmm2            # xmm2 = xmm2[0],xmm0[0]
divpd %xmm2, %xmm1
cvtpd2ps %xmm1, %xmm6
xorps %xmm1, %xmm1
cvtss2sd %xmm4, %xmm1
divsd %xmm0, %xmm1
xorps %xmm4, %xmm4
cvtsd2ss %xmm1, %xmm4
movss 0x44(%r14), %xmm0
movss 0x20(%r13), %xmm5
movsd 0x24(%r13), %xmm1
movsd 0x48(%r14), %xmm2
movaps %xmm5, %xmm3
shufps $0xd4, %xmm1, %xmm3     # xmm3 = xmm3[0,1],xmm1[1,3]
shufps $0x52, %xmm1, %xmm3     # xmm3 = xmm3[2,0],xmm1[1,1]
mulps %xmm2, %xmm3
movaps %xmm0, %xmm7
shufps $0xd4, %xmm2, %xmm7     # xmm7 = xmm7[0,1],xmm2[1,3]
shufps $0x52, %xmm2, %xmm7     # xmm7 = xmm7[2,0],xmm2[1,1]
mulps %xmm1, %xmm7
subps %xmm3, %xmm7
mulss %xmm1, %xmm0
mulss %xmm2, %xmm5
subss %xmm0, %xmm5
movaps %xmm7, %xmm0
mulps %xmm7, %xmm0
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
movaps %xmm7, %xmm1
mulss %xmm7, %xmm1
addss %xmm0, %xmm1
movaps %xmm5, %xmm0
mulss %xmm5, %xmm0
addss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
movss %xmm4, (%rsp)
jb 0x13686
sqrtsd %xmm0, %xmm0
jmp 0x136b4
movapd %xmm6, 0x40(%rsp)
movaps %xmm5, 0x60(%rsp)
movaps %xmm7, 0x50(%rsp)
callq 0x4240
movaps 0x50(%rsp), %xmm7
movaps 0x60(%rsp), %xmm5
movapd 0x40(%rsp), %xmm6
movsd 0x24a5c(%rip), %xmm12   # 0x38110
xorps %xmm2, %xmm2
xorps %xmm3, %xmm3
ucomisd %xmm0, %xmm12
xorps %xmm1, %xmm1
ja 0x136e6
cvtps2pd %xmm7, %xmm1
movapd %xmm0, %xmm2
unpcklpd %xmm0, %xmm2            # xmm2 = xmm2[0],xmm0[0]
divpd %xmm2, %xmm1
cvtpd2ps %xmm1, %xmm2
xorps %xmm1, %xmm1
cvtss2sd %xmm5, %xmm1
divsd %xmm0, %xmm1
cvtsd2ss %xmm1, %xmm1
movss (%r15), %xmm7
movss 0x4(%r15), %xmm9
movapd %xmm6, %xmm4
shufps $0x55, %xmm6, %xmm4     # xmm4 = xmm4[1,1],xmm6[1,1]
movaps %xmm4, %xmm0
mulss %xmm9, %xmm0
movaps %xmm7, %xmm5
movaps %xmm6, %xmm15
mulss %xmm6, %xmm5
addss %xmm0, %xmm5
movss 0x8(%r15), %xmm8
movaps %xmm8, %xmm6
mulss (%rsp), %xmm6
addss %xmm5, %xmm6
movaps %xmm2, %xmm10
shufps $0x55, %xmm2, %xmm10    # xmm10 = xmm10[1,1],xmm2[1,1]
movsd 0x8(%r13), %xmm13
movaps %xmm13, %xmm5
shufps $0x55, %xmm13, %xmm5    # xmm5 = xmm5[1,1],xmm13[1,1]
movaps %xmm5, %xmm0
mulss %xmm10, %xmm0
movaps %xmm13, %xmm11
mulss %xmm2, %xmm11
addss %xmm0, %xmm11
movss 0x10(%r13), %xmm14
movaps %xmm14, %xmm0
mulss %xmm1, %xmm0
addss %xmm11, %xmm0
xorps %xmm11, %xmm11
cvtss2sd %xmm6, %xmm11
ucomisd %xmm11, %xmm12
jae 0x137c3
mulss %xmm9, %xmm10
mulss %xmm2, %xmm7
addss %xmm10, %xmm7
mulss %xmm1, %xmm8
addss %xmm7, %xmm8
subss %xmm0, %xmm8
xorps %xmm3, %xmm3
cvtss2sd %xmm8, %xmm3
ucomisd %xmm3, %xmm12
jae 0x137bb
addss %xmm6, %xmm8
divss %xmm8, %xmm6
minss 0x24986(%rip), %xmm6    # 0x38138
xorps %xmm3, %xmm3
maxss %xmm6, %xmm3
jmp 0x137c3
movss 0x24975(%rip), %xmm3    # 0x38138
mulss %xmm5, %xmm4
movaps %xmm13, %xmm5
movaps %xmm15, %xmm8
mulss %xmm15, %xmm5
addss %xmm4, %xmm5
movaps %xmm14, %xmm4
movss (%rsp), %xmm7
mulss %xmm7, %xmm4
addss %xmm5, %xmm4
xorps %xmm5, %xmm5
cvtss2sd %xmm4, %xmm5
ucomisd %xmm5, %xmm12
movss 0x2493a(%rip), %xmm9    # 0x38138
movaps %xmm9, %xmm10
jae 0x1383d
xorps %xmm10, %xmm10
xorps %xmm5, %xmm5
subss %xmm0, %xmm5
xorps %xmm6, %xmm6
cvtss2sd %xmm5, %xmm6
ucomisd %xmm6, %xmm12
jae 0x1383d
mulss %xmm3, %xmm5
movss 0x2490f(%rip), %xmm6    # 0x38138
subss %xmm3, %xmm6
mulss %xmm4, %xmm6
addss %xmm5, %xmm6
divss %xmm6, %xmm5
movaps %xmm5, %xmm10
movss 0x10(%rbx), %xmm15
movsd 0x8(%rbx), %xmm5
movaps %xmm8, %xmm4
mulps %xmm5, %xmm4
shufps $0x55, %xmm4, %xmm4     # xmm4 = xmm4[1,1,1,1]
movaps %xmm5, 0x60(%rsp)
mulss %xmm5, %xmm8
addss %xmm4, %xmm8
mulss %xmm15, %xmm7
addss %xmm8, %xmm7
movsd 0x8(%r12), %xmm6
movss 0x10(%r12), %xmm5
xorps %xmm4, %xmm4
cvtss2sd %xmm7, %xmm4
ucomisd %xmm4, %xmm12
movaps %xmm9, %xmm11
jae 0x138dc
movaps %xmm2, %xmm4
mulps %xmm6, %xmm4
shufps $0x55, %xmm4, %xmm4     # xmm4 = xmm4[1,1,1,1]
mulss %xmm6, %xmm2
addss %xmm4, %xmm2
mulss %xmm5, %xmm1
addss %xmm2, %xmm1
subss %xmm0, %xmm1
xorps %xmm0, %xmm0
cvtss2sd %xmm1, %xmm0
xorps %xmm11, %xmm11
ucomisd %xmm0, %xmm12
jae 0x138dc
mulss %xmm3, %xmm1
movss 0x24870(%rip), %xmm0    # 0x38138
subss %xmm3, %xmm0
mulss %xmm7, %xmm0
addss %xmm1, %xmm0
divss %xmm0, %xmm1
movaps %xmm1, %xmm11
movaps %xmm6, 0xb0(%rsp)
movss 0x44(%r14), %xmm0
movss 0x14(%r13), %xmm4
movsd 0x18(%r13), %xmm1
movsd 0x48(%r14), %xmm2
movaps %xmm4, %xmm3
shufps $0xd4, %xmm1, %xmm3     # xmm3 = xmm3[0,1],xmm1[1,3]
shufps $0x52, %xmm1, %xmm3     # xmm3 = xmm3[2,0],xmm1[1,1]
mulps %xmm2, %xmm3
movaps %xmm0, %xmm7
shufps $0xd4, %xmm2, %xmm7     # xmm7 = xmm7[0,1],xmm2[1,3]
shufps $0x52, %xmm2, %xmm7     # xmm7 = xmm7[2,0],xmm2[1,1]
mulps %xmm1, %xmm7
subps %xmm3, %xmm7
mulss %xmm1, %xmm0
mulss %xmm2, %xmm4
subss %xmm0, %xmm4
movaps %xmm7, %xmm0
mulps %xmm7, %xmm0
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
movaps %xmm7, %xmm1
mulss %xmm7, %xmm1
addss %xmm0, %xmm1
movaps %xmm4, %xmm0
mulss %xmm4, %xmm0
addss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
movaps %xmm10, 0x40(%rsp)
movaps %xmm11, (%rsp)
movss %xmm5, 0x50(%rsp)
jb 0x1396b
sqrtsd %xmm0, %xmm0
jmp 0x139e1
movaps %xmm13, 0x90(%rsp)
movss %xmm14, 0x80(%rsp)
movss %xmm15, 0x70(%rsp)
movaps %xmm4, 0xf0(%rsp)
movaps %xmm7, 0xe0(%rsp)
callq 0x4240
movaps 0xe0(%rsp), %xmm7
movaps 0xf0(%rsp), %xmm4
movss 0x70(%rsp), %xmm15
movaps (%rsp), %xmm11
movss 0x80(%rsp), %xmm14
movaps 0x90(%rsp), %xmm13
movaps 0x40(%rsp), %xmm10
movss 0x24760(%rip), %xmm9    # 0x38138
movsd 0x2472f(%rip), %xmm12   # 0x38110
movaps 0x20(%rsp), %xmm8
xorps %xmm2, %xmm2
xorps %xmm6, %xmm6
ucomisd %xmm0, %xmm12
xorps %xmm3, %xmm3
ja 0x13a1c
cvtps2pd %xmm7, %xmm1
movapd %xmm0, %xmm2
unpcklpd %xmm0, %xmm2            # xmm2 = xmm2[0],xmm0[0]
divpd %xmm2, %xmm1
cvtpd2ps %xmm1, %xmm2
xorps %xmm1, %xmm1
cvtss2sd %xmm4, %xmm1
divsd %xmm0, %xmm1
xorps %xmm3, %xmm3
cvtsd2ss %xmm1, %xmm3
subss %xmm11, %xmm9
movsd (%r15), %xmm0
movapd %xmm2, %xmm1
mulps %xmm0, %xmm1
shufps $0x55, %xmm1, %xmm1     # xmm1 = xmm1[1,1,1,1]
movaps %xmm0, %xmm5
mulss %xmm2, %xmm5
addss %xmm1, %xmm5
movss 0x8(%r15), %xmm1
movaps %xmm1, %xmm4
mulss %xmm3, %xmm4
addss %xmm5, %xmm4
xorps %xmm5, %xmm5
cvtss2sd %xmm4, %xmm5
ucomisd %xmm5, %xmm12
jae 0x13ad2
movaps %xmm2, %xmm6
shufps $0x55, %xmm2, %xmm6     # xmm6 = xmm6[1,1],xmm2[1,1]
movss 0xc(%r12), %xmm5
mulss %xmm6, %xmm5
movss 0x8(%r12), %xmm7
mulss %xmm2, %xmm7
addss %xmm5, %xmm7
movss 0x10(%r12), %xmm5
mulss %xmm3, %xmm5
mulss 0xc(%rbx), %xmm6
addss %xmm7, %xmm5
mulss 0x8(%rbx), %xmm2
addss %xmm6, %xmm2
mulss 0x10(%rbx), %xmm3
addss %xmm2, %xmm3
mulss %xmm11, %xmm3
mulss %xmm9, %xmm5
addss %xmm3, %xmm5
ucomiss %xmm5, %xmm4
jae 0x13aca
divss %xmm5, %xmm4
minss 0x24677(%rip), %xmm4    # 0x38138
xorps %xmm6, %xmm6
maxss %xmm4, %xmm6
jmp 0x13ad2
movss 0x24666(%rip), %xmm6    # 0x38138
movss 0x2465d(%rip), %xmm12   # 0x38138
movaps %xmm12, %xmm7
subss %xmm6, %xmm7
cmpb $0x1, (%rbp)
jne 0x13c33
movaps %xmm9, %xmm3
shufps $0x0, %xmm9, %xmm3      # xmm3 = xmm3[0,0],xmm9[0,0]
movaps %xmm11, %xmm2
shufps $0x0, %xmm11, %xmm2     # xmm2 = xmm2[0,0],xmm11[0,0]
movaps %xmm10, %xmm4
shufps $0x0, %xmm10, %xmm4     # xmm4 = xmm4[0,0],xmm10[0,0]
movaps 0xb0(%rsp), %xmm5
mulps %xmm3, %xmm5
movss 0x50(%rsp), %xmm3
mulss %xmm9, %xmm3
mulps 0x60(%rsp), %xmm2
addps %xmm5, %xmm2
mulss %xmm11, %xmm15
addss %xmm3, %xmm15
mulps %xmm4, %xmm13
mulss %xmm10, %xmm14
mulss %xmm7, %xmm14
mulss %xmm6, %xmm15
addss %xmm14, %xmm15
subss %xmm1, %xmm15
movaps %xmm7, %xmm1
shufps $0x0, %xmm7, %xmm1      # xmm1 = xmm1[0,0],xmm7[0,0]
mulps %xmm13, %xmm1
movaps %xmm6, %xmm3
shufps $0x0, %xmm6, %xmm3      # xmm3 = xmm3[0,0],xmm6[0,0]
mulps %xmm2, %xmm3
addps %xmm1, %xmm3
subps %xmm0, %xmm3
mulps %xmm3, %xmm3
cvtps2pd %xmm3, %xmm0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
mulss %xmm15, %xmm15
xorps %xmm0, %xmm0
cvtss2sd %xmm15, %xmm0
addsd %xmm1, %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
movaps %xmm9, 0x80(%rsp)
movaps %xmm6, 0x70(%rsp)
movaps %xmm7, 0x90(%rsp)
jb 0x13bb1
sqrtsd %xmm0, %xmm0
jmp 0x13bde
callq 0x4240
movss 0x24579(%rip), %xmm12   # 0x38138
movaps 0x70(%rsp), %xmm6
movaps (%rsp), %xmm11
movaps 0x40(%rsp), %xmm10
movaps 0x80(%rsp), %xmm9
movaps 0x20(%rsp), %xmm8
ucomisd 0x27ada(%rip), %xmm0    # 0x3b6c0
movaps 0x90(%rsp), %xmm7
jbe 0x13c33
leaq 0x27d4f(%rip), %rsi     # 0x3b946
movl $0x5, %edi
xorl %eax, %eax
callq 0xa52e
movaps 0x90(%rsp), %xmm7
movss 0x24524(%rip), %xmm12   # 0x38138
movaps 0x70(%rsp), %xmm6
movaps (%rsp), %xmm11
movaps 0x40(%rsp), %xmm10
movaps 0x80(%rsp), %xmm9
movaps 0x20(%rsp), %xmm8
xorps %xmm2, %xmm2
cvtss2sd 0xc0(%rsp), %xmm2
movsd 0x276b9(%rip), %xmm0    # 0x3b300
mulsd %xmm0, %xmm2
xorps %xmm1, %xmm1
cvtss2sd 0x10(%rsp), %xmm1
mulsd %xmm2, %xmm1
xorps %xmm3, %xmm3
addsd %xmm3, %xmm1
cvtsd2ss %xmm1, %xmm1
xorps %xmm4, %xmm4
cvtss2sd %xmm8, %xmm4
mulsd %xmm2, %xmm4
addsd %xmm3, %xmm4
xorps %xmm2, %xmm2
cvtsd2ss %xmm4, %xmm2
xorps %xmm4, %xmm4
cvtss2sd 0xa0(%rsp), %xmm4
mulsd %xmm0, %xmm4
movaps %xmm7, %xmm13
movaps 0x30(%rsp), %xmm7
xorps %xmm5, %xmm5
cvtss2sd %xmm7, %xmm5
mulsd %xmm4, %xmm5
addsd %xmm3, %xmm5
cvtsd2ss %xmm5, %xmm5
movaps %xmm6, %xmm8
movaps %xmm12, %xmm6
subss %xmm7, %xmm6
cvtss2sd %xmm6, %xmm6
mulsd %xmm4, %xmm6
addsd %xmm3, %xmm6
xorps %xmm3, %xmm3
cvtsd2ss %xmm6, %xmm3
xorps %xmm4, %xmm4
cvtss2sd %xmm13, %xmm4
mulsd %xmm0, %xmm4
subss %xmm10, %xmm12
xorps %xmm6, %xmm6
cvtss2sd %xmm12, %xmm6
cvtss2sd %xmm3, %xmm3
mulsd %xmm4, %xmm6
addsd %xmm3, %xmm6
xorps %xmm3, %xmm3
cvtsd2ss %xmm6, %xmm3
movss %xmm3, 0x10(%rsp)
xorps %xmm3, %xmm3
cvtss2sd %xmm10, %xmm3
cvtss2sd %xmm2, %xmm2
mulsd %xmm4, %xmm3
addsd %xmm2, %xmm3
xorps %xmm2, %xmm2
cvtsd2ss %xmm3, %xmm2
movss %xmm2, 0x30(%rsp)
xorps %xmm2, %xmm2
cvtss2sd %xmm8, %xmm2
mulsd %xmm0, %xmm2
xorps %xmm0, %xmm0
cvtss2sd %xmm9, %xmm0
xorps %xmm3, %xmm3
cvtss2sd %xmm5, %xmm3
mulsd %xmm2, %xmm0
addsd %xmm3, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x20(%rsp)
xorps %xmm0, %xmm0
cvtss2sd %xmm11, %xmm0
cvtss2sd %xmm1, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, (%rsp)
movq 0xd8(%rsp), %r15
movb $0x0, (%r15)
movl $0x3f800000, 0x4(%r15)  # imm = 0x3F800000
leaq 0x8(%r15), %rdi
movl $0x4, %esi
callq 0x140ea
movl 0x50(%r14), %eax
movq 0x8(%r15), %rcx
movl %eax, (%rcx)
movq 0x8(%r15), %rax
movss 0x10(%rsp), %xmm0
movss %xmm0, 0x4(%rax)
movl 0x4(%r13), %eax
movq 0x8(%r15), %rcx
movl %eax, 0x8(%rcx)
movq 0x8(%r15), %rax
movss 0x30(%rsp), %xmm0
movss %xmm0, 0xc(%rax)
movl 0x4(%rbx), %eax
movq 0x8(%r15), %rcx
movl %eax, 0x10(%rcx)
movq 0x8(%r15), %rax
movss (%rsp), %xmm0
movss %xmm0, 0x14(%rax)
movl 0x4(%r12), %eax
movq 0x8(%r15), %rcx
movl %eax, 0x18(%rcx)
movq 0x8(%r15), %rax
movss 0x20(%rsp), %xmm0
movss %xmm0, 0x1c(%rax)
addq $0x108, %rsp            # imm = 0x108
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq