// File: /workspace/github_cpp_makefile_star2_O3/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 $0xd8, %rsp
movq %rcx, %rbx
movq %rdx, %r8
movslq %esi, %rcx
imulq $0x2c, %rcx, %rsi
movq 0x70(%rdi), %r12
movq %rdi, 0x98(%rsp)
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, %rbp
addl $0x2, %ecx
movl %ecx, %eax
cltd
idivl %edi
movslq %edx, %r14
cmpl $0x3, (%r12,%rsi)
jne 0x1280c
cmpl $0x4, (%r12,%rbp)
je 0x12838
leaq 0x28083(%rip), %rdi     # 0x3a896
xorl %eax, %eax
movq %r12, %r15
movq %r13, %r12
movq %rbx, %r13
movq %rbp, %rbx
movq %r8, %rbp
callq 0x9f34
movq %rbp, %r8
movq %rbx, %rbp
movq %r13, %rbx
movq %r12, %r13
movq %r15, %r12
imulq $0x2c, %r14, %rax
addq %r12, %rbp
movq 0x98(%rsp), %r14
movsd 0x48(%r14), %xmm1
movaps %xmm1, %xmm10
movss 0x44(%r14), %xmm5
movss 0x14(%r13), %xmm3
movsd 0x18(%r13), %xmm4
movaps %xmm3, %xmm2
shufps $0xd4, %xmm4, %xmm2     # xmm2 = xmm2[0,1],xmm4[1,3]
shufps $0x52, %xmm4, %xmm2     # xmm2 = xmm2[2,0],xmm4[1,1]
mulps %xmm1, %xmm2
movaps %xmm5, %xmm7
shufps $0xd4, %xmm1, %xmm7     # xmm7 = xmm7[0,1],xmm1[1,3]
movaps %xmm7, %xmm0
shufps $0x52, %xmm1, %xmm0     # xmm0 = xmm0[2,0],xmm1[1,1]
movaps %xmm5, 0x10(%rsp)
mulss %xmm4, %xmm5
mulps %xmm0, %xmm4
subps %xmm2, %xmm4
mulss %xmm1, %xmm3
subss %xmm5, %xmm3
movaps %xmm4, %xmm2
mulps %xmm4, %xmm2
shufps $0x55, %xmm2, %xmm2     # xmm2 = xmm2[1,1,1,1]
movaps %xmm4, %xmm5
mulss %xmm4, %xmm5
addss %xmm2, %xmm5
movaps %xmm3, %xmm2
mulss %xmm3, %xmm2
addss %xmm5, %xmm2
cvtss2sd %xmm2, %xmm2
xorps %xmm5, %xmm5
sqrtsd %xmm2, %xmm5
xorpd %xmm2, %xmm2
xorps %xmm8, %xmm8
movsd 0x24846(%rip), %xmm15   # 0x37118
ucomisd %xmm5, %xmm15
xorps %xmm9, %xmm9
xorpd %xmm14, %xmm14
ja 0x12907
cvtps2pd %xmm4, %xmm4
movapd %xmm5, %xmm6
unpcklpd %xmm5, %xmm6            # xmm6 = xmm6[0],xmm5[0]
divpd %xmm6, %xmm4
cvtpd2ps %xmm4, %xmm14
cvtss2sd %xmm3, %xmm3
divsd %xmm5, %xmm3
xorps %xmm9, %xmm9
cvtsd2ss %xmm3, %xmm9
addq %rax, %r12
movss 0x20(%rbp), %xmm3
movsd 0x24(%rbp), %xmm4
movaps %xmm3, %xmm5
shufps $0xd4, %xmm4, %xmm5     # xmm5 = xmm5[0,1],xmm4[1,3]
shufps $0x52, %xmm4, %xmm5     # xmm5 = xmm5[2,0],xmm4[1,1]
mulps %xmm1, %xmm5
mulps %xmm4, %xmm0
subps %xmm5, %xmm0
mulss 0x10(%rsp), %xmm4
movaps %xmm10, 0x30(%rsp)
mulss %xmm10, %xmm3
subss %xmm4, %xmm3
movaps %xmm0, %xmm4
mulps %xmm0, %xmm4
shufps $0x55, %xmm4, %xmm4     # xmm4 = xmm4[1,1,1,1]
movaps %xmm0, %xmm5
mulss %xmm0, %xmm5
addss %xmm4, %xmm5
movaps %xmm3, %xmm4
mulss %xmm3, %xmm4
addss %xmm5, %xmm4
cvtss2sd %xmm4, %xmm4
sqrtsd %xmm4, %xmm4
ucomisd %xmm4, %xmm15
ja 0x12993
cvtps2pd %xmm0, %xmm0
movapd %xmm4, %xmm2
unpcklpd %xmm4, %xmm2            # xmm2 = xmm2[0],xmm4[0]
divpd %xmm2, %xmm0
cvtpd2ps %xmm0, %xmm2
xorps %xmm0, %xmm0
cvtss2sd %xmm3, %xmm0
divsd %xmm4, %xmm0
xorps %xmm8, %xmm8
cvtsd2ss %xmm0, %xmm8
movss 0x8(%r8), %xmm13
movsd (%r8), %xmm5
movaps %xmm5, %xmm11
shufps $0x55, %xmm5, %xmm11    # xmm11 = xmm11[1,1],xmm5[1,1]
movapd %xmm14, %xmm3
shufps $0x55, %xmm14, %xmm3    # xmm3 = xmm3[1,1],xmm14[1,1]
movaps %xmm3, %xmm0
mulss %xmm11, %xmm0
movaps %xmm14, %xmm4
movaps %xmm5, 0x20(%rsp)
mulss %xmm5, %xmm4
addss %xmm0, %xmm4
movss %xmm13, 0x40(%rsp)
mulss %xmm9, %xmm13
addss %xmm4, %xmm13
movapd %xmm2, %xmm12
shufps $0x55, %xmm2, %xmm12    # xmm12 = xmm12[1,1],xmm2[1,1]
movsd 0x8(%r12), %xmm4
movaps %xmm4, %xmm10
shufps $0x55, %xmm4, %xmm10    # xmm10 = xmm10[1,1],xmm4[1,1]
movaps %xmm10, %xmm0
mulss %xmm12, %xmm0
movaps %xmm4, 0x70(%rsp)
mulss %xmm2, %xmm4
addss %xmm0, %xmm4
movss 0x10(%r12), %xmm6
movss %xmm6, 0xc(%rsp)
mulss %xmm8, %xmm6
addss %xmm4, %xmm6
xorps %xmm5, %xmm5
cvtss2sd %xmm13, %xmm5
xorps %xmm4, %xmm4
ucomisd %xmm5, %xmm15
xorps %xmm5, %xmm5
movapd %xmm15, %xmm0
jae 0x12aa5
movaps %xmm12, %xmm5
mulss %xmm11, %xmm5
movaps 0x20(%rsp), %xmm15
mulss %xmm2, %xmm15
addss %xmm5, %xmm15
movss 0x40(%rsp), %xmm5
mulss %xmm8, %xmm5
addss %xmm15, %xmm5
subss %xmm6, %xmm5
xorps %xmm15, %xmm15
cvtss2sd %xmm5, %xmm15
ucomisd %xmm15, %xmm0
jae 0x12a95
addss %xmm13, %xmm5
divss %xmm5, %xmm13
minss 0x24619(%rip), %xmm13   # 0x370a4
xorps %xmm5, %xmm5
maxss %xmm13, %xmm5
jmp 0x12a9d
movss 0x24607(%rip), %xmm5    # 0x370a4
movsd 0x24673(%rip), %xmm0    # 0x37118
movaps %xmm3, %xmm13
mulss %xmm10, %xmm13
movaps 0x70(%rsp), %xmm15
mulss %xmm14, %xmm15
addss %xmm13, %xmm15
movss 0xc(%rsp), %xmm10
mulss %xmm9, %xmm10
addss %xmm15, %xmm10
xorps %xmm13, %xmm13
cvtss2sd %xmm10, %xmm13
movss 0x245c3(%rip), %xmm15   # 0x370a4
ucomisd %xmm13, %xmm0
movaps %xmm15, 0x60(%rsp)
jae 0x12b2b
subss %xmm6, %xmm4
xorps %xmm13, %xmm13
cvtss2sd %xmm4, %xmm13
xorps %xmm15, %xmm15
ucomisd %xmm13, %xmm0
jae 0x12b2b
mulss %xmm5, %xmm4
movss 0x24591(%rip), %xmm13   # 0x370a4
subss %xmm5, %xmm13
mulss %xmm10, %xmm13
addss %xmm4, %xmm13
divss %xmm13, %xmm4
movaps %xmm4, %xmm15
movaps %xmm15, 0xb0(%rsp)
movss 0x10(%rbp), %xmm10
movsd 0x8(%rbp), %xmm4
movaps %xmm4, %xmm13
shufps $0x55, %xmm4, %xmm13    # xmm13 = xmm13[1,1],xmm4[1,1]
mulss %xmm13, %xmm3
mulss %xmm4, %xmm14
addss %xmm3, %xmm14
mulss %xmm10, %xmm9
addss %xmm14, %xmm9
movsd 0x8(%r13), %xmm3
movaps %xmm3, %xmm15
shufps $0x55, %xmm3, %xmm15    # xmm15 = xmm15[1,1],xmm3[1,1]
movss 0x10(%r13), %xmm14
movss %xmm14, 0x8(%rsp)
xorps %xmm14, %xmm14
cvtss2sd %xmm9, %xmm14
ucomisd %xmm14, %xmm0
movss 0x24510(%rip), %xmm14   # 0x370a4
movaps %xmm14, 0x50(%rsp)
jae 0x12bf7
mulss %xmm15, %xmm12
mulss %xmm3, %xmm2
addss %xmm12, %xmm2
mulss 0x8(%rsp), %xmm8
addss %xmm2, %xmm8
subss %xmm6, %xmm8
xorps %xmm2, %xmm2
cvtss2sd %xmm8, %xmm2
xorps %xmm6, %xmm6
movaps %xmm6, 0x50(%rsp)
ucomisd %xmm2, %xmm0
jae 0x12bf7
mulss %xmm5, %xmm8
movss 0x244c6(%rip), %xmm2    # 0x370a4
subss %xmm5, %xmm2
mulss %xmm9, %xmm2
addss %xmm8, %xmm2
divss %xmm2, %xmm8
movaps %xmm8, 0x50(%rsp)
shufps $0xe2, %xmm1, %xmm7     # xmm7 = xmm7[2,0],xmm1[2,3]
movss 0x14(%r12), %xmm2
movsd 0x18(%r12), %xmm8
mulps %xmm8, %xmm7
movaps %xmm2, %xmm9
shufps $0xd4, %xmm8, %xmm9     # xmm9 = xmm9[0,1],xmm8[1,3]
shufps $0x52, %xmm8, %xmm9     # xmm9 = xmm9[2,0],xmm8[1,1]
mulps %xmm1, %xmm9
subps %xmm7, %xmm9
mulss 0x30(%rsp), %xmm2
mulss 0x10(%rsp), %xmm8
subss %xmm2, %xmm8
movaps %xmm9, %xmm2
mulps %xmm9, %xmm2
shufps $0x55, %xmm2, %xmm2     # xmm2 = xmm2[1,1,1,1]
movaps %xmm9, %xmm5
mulss %xmm9, %xmm5
addss %xmm2, %xmm5
movaps %xmm8, %xmm2
mulss %xmm8, %xmm2
addss %xmm5, %xmm2
cvtss2sd %xmm2, %xmm2
xorps %xmm12, %xmm12
sqrtsd %xmm2, %xmm12
xorpd %xmm2, %xmm2
xorps %xmm5, %xmm5
movaps %xmm5, 0x80(%rsp)
ucomisd %xmm12, %xmm0
ja 0x12ca5
cvtps2pd %xmm9, %xmm2
movapd %xmm12, %xmm5
unpcklpd %xmm12, %xmm5           # xmm5 = xmm5[0],xmm12[0]
divpd %xmm5, %xmm2
cvtpd2ps %xmm2, %xmm2
xorps %xmm5, %xmm5
cvtss2sd %xmm8, %xmm5
divsd %xmm12, %xmm5
cvtsd2ss %xmm5, %xmm5
movaps 0x60(%rsp), %xmm0
subss 0x50(%rsp), %xmm0
movaps %xmm0, 0x60(%rsp)
movapd %xmm2, %xmm7
shufps $0x55, %xmm2, %xmm7     # xmm7 = xmm7[1,1],xmm2[1,1]
mulss %xmm7, %xmm11
movaps 0x20(%rsp), %xmm14
mulss %xmm2, %xmm14
addss %xmm11, %xmm14
movss 0x40(%rsp), %xmm6
mulss %xmm5, %xmm6
addss %xmm14, %xmm6
xorps %xmm11, %xmm11
cvtss2sd %xmm6, %xmm11
movsd 0x24426(%rip), %xmm0    # 0x37118
ucomisd %xmm11, %xmm0
jae 0x12d73
mulss %xmm7, %xmm15
movaps %xmm3, %xmm14
mulss %xmm2, %xmm14
addss %xmm15, %xmm14
movss 0x8(%rsp), %xmm11
mulss %xmm5, %xmm11
addss %xmm14, %xmm11
mulss %xmm7, %xmm13
mulss %xmm4, %xmm2
addss %xmm13, %xmm2
mulss %xmm10, %xmm5
addss %xmm2, %xmm5
mulss 0x50(%rsp), %xmm5
mulss 0x60(%rsp), %xmm11
addss %xmm5, %xmm11
ucomiss %xmm11, %xmm6
jae 0x12d63
divss %xmm11, %xmm6
minss 0x2434b(%rip), %xmm6    # 0x370a4
xorpd %xmm0, %xmm0
maxss %xmm6, %xmm0
jmp 0x12d6b
movss 0x24339(%rip), %xmm0    # 0x370a4
movaps %xmm0, 0x80(%rsp)
movss 0x24328(%rip), %xmm14   # 0x370a4
movaps 0x80(%rsp), %xmm13
subss %xmm13, %xmm14
leaq 0x54e6cb0(%rip), %rax   # 0x54f9a41
movaps 0x10(%rsp), %xmm0
movss %xmm0, %xmm1            # xmm1 = xmm0[0],xmm1[1,2,3]
cmpb $0x1, (%rax)
movaps %xmm14, 0xc0(%rsp)
jne 0x12f2c
movaps 0x60(%rsp), %xmm0
movaps %xmm0, %xmm5
shufps $0x0, %xmm0, %xmm5      # xmm5 = xmm5[0,0],xmm0[0,0]
movaps 0x50(%rsp), %xmm11
movaps %xmm11, %xmm2
shufps $0x0, %xmm11, %xmm2     # xmm2 = xmm2[0,0],xmm11[0,0]
movaps 0xb0(%rsp), %xmm7
movaps %xmm7, %xmm6
shufps $0x0, %xmm7, %xmm6      # xmm6 = xmm6[0,0],xmm7[0,0]
mulps %xmm5, %xmm3
movss 0x8(%rsp), %xmm5
mulss %xmm0, %xmm5
mulps %xmm4, %xmm2
addps %xmm3, %xmm2
mulss %xmm11, %xmm10
addss %xmm5, %xmm10
movaps 0x70(%rsp), %xmm3
mulps %xmm6, %xmm3
movss 0xc(%rsp), %xmm0
mulss %xmm7, %xmm0
mulss %xmm14, %xmm0
mulss %xmm13, %xmm10
addss %xmm0, %xmm10
subss 0x40(%rsp), %xmm10
movaps %xmm14, %xmm0
shufps $0x0, %xmm14, %xmm0     # xmm0 = xmm0[0,0],xmm14[0,0]
mulps %xmm3, %xmm0
movaps %xmm13, %xmm3
shufps $0x0, %xmm13, %xmm3     # xmm3 = xmm3[0,0],xmm13[0,0]
mulps %xmm2, %xmm3
addps %xmm0, %xmm3
subps 0x20(%rsp), %xmm3
mulps %xmm3, %xmm3
cvtps2pd %xmm3, %xmm0
movapd %xmm0, %xmm2
unpckhpd %xmm0, %xmm2            # xmm2 = xmm2[1],xmm0[1]
addsd %xmm0, %xmm2
mulss %xmm10, %xmm10
xorps %xmm0, %xmm0
cvtss2sd %xmm10, %xmm0
addsd %xmm2, %xmm0
sqrtsd %xmm0, %xmm0
ucomisd 0x2780e(%rip), %xmm0    # 0x3a678
movaps 0x30(%rsp), %xmm6
movsd 0x242a0(%rip), %xmm15   # 0x37118
jbe 0x12f3a
leaq 0x27a47(%rip), %rsi     # 0x3a8cc
movl $0x5, %edi
xorl %eax, %eax
movq %r8, %r15
callq 0xa446
leaq 0x54e6ba6(%rip), %rax   # 0x54f9a41
movq %r15, %r8
movsd 0x24271(%rip), %xmm15   # 0x37118
movss 0x14(%r12), %xmm1
movss 0x44(%r14), %xmm0
movsd 0x48(%r14), %xmm6
movsd 0x18(%r12), %xmm8
movaps %xmm0, %xmm2
shufps $0xd4, %xmm6, %xmm2     # xmm2 = xmm2[0,1],xmm6[1,3]
shufps $0x52, %xmm6, %xmm2     # xmm2 = xmm2[2,0],xmm6[1,1]
mulps %xmm8, %xmm2
movaps %xmm1, %xmm9
shufps $0xd4, %xmm8, %xmm9     # xmm9 = xmm9[0,1],xmm8[1,3]
shufps $0x52, %xmm8, %xmm9     # xmm9 = xmm9[2,0],xmm8[1,1]
mulps %xmm6, %xmm9
subps %xmm2, %xmm9
mulss %xmm6, %xmm1
mulss %xmm0, %xmm8
subss %xmm1, %xmm8
movaps %xmm9, %xmm1
mulps %xmm9, %xmm1
shufps $0x55, %xmm1, %xmm1     # xmm1 = xmm1[1,1,1,1]
movaps %xmm9, %xmm2
mulss %xmm9, %xmm2
addss %xmm1, %xmm2
movaps %xmm8, %xmm1
mulss %xmm8, %xmm1
addss %xmm2, %xmm1
cvtss2sd %xmm1, %xmm1
sqrtsd %xmm1, %xmm12
movaps %xmm6, %xmm1
movss %xmm0, %xmm1            # xmm1 = xmm0[0],xmm1[1,2,3]
jmp 0x12f3a
movaps 0x30(%rsp), %xmm6
movsd 0x241de(%rip), %xmm15   # 0x37118
xorps %xmm3, %xmm3
xorps %xmm7, %xmm7
ucomisd %xmm12, %xmm15
xorps %xmm10, %xmm10
xorps %xmm13, %xmm13
ja 0x12f7c
cvtps2pd %xmm9, %xmm0
movapd %xmm12, %xmm2
unpcklpd %xmm12, %xmm2           # xmm2 = xmm2[0],xmm12[0]
divpd %xmm2, %xmm0
cvtpd2ps %xmm0, %xmm13
xorps %xmm0, %xmm0
cvtss2sd %xmm8, %xmm0
divsd %xmm12, %xmm0
xorps %xmm10, %xmm10
cvtsd2ss %xmm0, %xmm10
movss 0x20(%r13), %xmm0
movsd 0x24(%r13), %xmm4
movaps %xmm4, %xmm2
shufps $0xe1, %xmm4, %xmm2     # xmm2 = xmm2[1,0],xmm4[2,3]
movaps %xmm1, %xmm5
mulss %xmm4, %xmm5
movss %xmm0, %xmm4            # xmm4 = xmm0[0],xmm4[1,2,3]
movaps %xmm6, %xmm8
shufps $0xd4, %xmm1, %xmm8     # xmm8 = xmm8[0,1],xmm1[1,3]
shufps $0x52, %xmm1, %xmm8     # xmm8 = xmm8[2,0],xmm1[1,1]
mulps %xmm8, %xmm4
mulps %xmm1, %xmm2
subps %xmm4, %xmm2
movaps %xmm2, %xmm4
shufps $0x55, %xmm2, %xmm4     # xmm4 = xmm4[1,1],xmm2[1,1]
movaps %xmm6, 0x30(%rsp)
mulss %xmm6, %xmm0
subss %xmm5, %xmm0
movaps %xmm2, %xmm5
mulss %xmm2, %xmm5
mulss %xmm4, %xmm4
addss %xmm5, %xmm4
movaps %xmm0, %xmm5
mulss %xmm0, %xmm5
addss %xmm4, %xmm5
xorps %xmm4, %xmm4
cvtss2sd %xmm5, %xmm4
sqrtsd %xmm4, %xmm4
ucomisd %xmm4, %xmm15
ja 0x13014
cvtps2pd %xmm2, %xmm2
movapd %xmm4, %xmm3
unpcklpd %xmm4, %xmm3            # xmm3 = xmm3[0],xmm4[0]
divpd %xmm3, %xmm2
cvtpd2ps %xmm2, %xmm3
cvtss2sd %xmm0, %xmm0
divsd %xmm4, %xmm0
xorps %xmm7, %xmm7
cvtsd2ss %xmm0, %xmm7
movss 0x8(%r8), %xmm14
movsd (%r8), %xmm5
movaps %xmm5, %xmm9
shufps $0x55, %xmm5, %xmm9     # xmm9 = xmm9[1,1],xmm5[1,1]
movaps %xmm13, %xmm2
shufps $0x55, %xmm13, %xmm2    # xmm2 = xmm2[1,1],xmm13[1,1]
movaps %xmm2, %xmm0
mulss %xmm9, %xmm0
movaps %xmm13, %xmm4
movaps %xmm5, 0x10(%rsp)
mulss %xmm5, %xmm4
addss %xmm0, %xmm4
movss %xmm14, 0x20(%rsp)
mulss %xmm10, %xmm14
addss %xmm4, %xmm14
movaps %xmm3, %xmm11
shufps $0x55, %xmm3, %xmm11    # xmm11 = xmm11[1,1],xmm3[1,1]
movsd 0x8(%r13), %xmm4
movaps %xmm4, %xmm12
shufps $0x55, %xmm4, %xmm12    # xmm12 = xmm12[1,1],xmm4[1,1]
movaps %xmm12, %xmm0
mulss %xmm3, %xmm0
movaps %xmm4, 0x70(%rsp)
mulss %xmm11, %xmm4
addss %xmm0, %xmm4
movss 0x10(%r13), %xmm0
movss %xmm0, 0xc(%rsp)
mulss %xmm7, %xmm0
addss %xmm4, %xmm0
xorps %xmm4, %xmm4
cvtss2sd %xmm14, %xmm4
xorps %xmm6, %xmm6
ucomisd %xmm4, %xmm15
xorps %xmm4, %xmm4
movapd %xmm15, %xmm5
jae 0x1311f
movaps %xmm3, %xmm4
mulss %xmm9, %xmm4
movaps 0x10(%rsp), %xmm15
mulss %xmm11, %xmm15
addss %xmm4, %xmm15
movss 0x20(%rsp), %xmm4
mulss %xmm7, %xmm4
addss %xmm15, %xmm4
subss %xmm0, %xmm4
xorps %xmm15, %xmm15
cvtss2sd %xmm4, %xmm15
ucomisd %xmm15, %xmm5
jae 0x1310f
addss %xmm14, %xmm4
divss %xmm4, %xmm14
minss 0x23f9f(%rip), %xmm14   # 0x370a4
xorps %xmm4, %xmm4
maxss %xmm14, %xmm4
jmp 0x13117
movss 0x23f8d(%rip), %xmm4    # 0x370a4
movsd 0x23ff9(%rip), %xmm5    # 0x37118
movaps %xmm2, %xmm14
mulss %xmm12, %xmm14
movaps 0x70(%rsp), %xmm15
mulss %xmm13, %xmm15
addss %xmm14, %xmm15
movss 0xc(%rsp), %xmm12
mulss %xmm10, %xmm12
addss %xmm15, %xmm12
xorps %xmm14, %xmm14
cvtss2sd %xmm12, %xmm14
ucomisd %xmm14, %xmm5
movss 0x23f44(%rip), %xmm15   # 0x370a4
jae 0x1319f
subss %xmm0, %xmm6
xorps %xmm14, %xmm14
cvtss2sd %xmm6, %xmm14
xorps %xmm15, %xmm15
ucomisd %xmm14, %xmm5
jae 0x1319f
mulss %xmm4, %xmm6
movss 0x23f1d(%rip), %xmm14   # 0x370a4
subss %xmm4, %xmm14
mulss %xmm12, %xmm14
addss %xmm6, %xmm14
divss %xmm14, %xmm6
movaps %xmm6, %xmm15
movaps %xmm15, 0xa0(%rsp)
movss 0x10(%rbp), %xmm6
movsd 0x8(%rbp), %xmm12
movaps %xmm12, %xmm15
shufps $0x55, %xmm12, %xmm15   # xmm15 = xmm15[1,1],xmm12[1,1]
mulss %xmm15, %xmm2
mulss %xmm12, %xmm13
addss %xmm2, %xmm13
mulss %xmm6, %xmm10
addss %xmm13, %xmm10
movsd 0x8(%r12), %xmm2
movaps %xmm2, %xmm14
shufps $0x55, %xmm2, %xmm14    # xmm14 = xmm14[1,1],xmm2[1,1]
movss 0x10(%r12), %xmm13
movss %xmm13, 0x8(%rsp)
xorps %xmm13, %xmm13
cvtss2sd %xmm10, %xmm13
ucomisd %xmm13, %xmm5
movss 0x23e9a(%rip), %xmm13   # 0x370a4
movaps %xmm13, 0x40(%rsp)
jae 0x13267
mulss %xmm14, %xmm3
mulss %xmm2, %xmm11
addss %xmm3, %xmm11
mulss 0x8(%rsp), %xmm7
addss %xmm11, %xmm7
subss %xmm0, %xmm7
xorps %xmm0, %xmm0
cvtss2sd %xmm7, %xmm0
xorps %xmm3, %xmm3
movaps %xmm3, 0x40(%rsp)
ucomisd %xmm0, %xmm5
jae 0x13267
mulss %xmm4, %xmm7
movss 0x23e53(%rip), %xmm0    # 0x370a4
subss %xmm4, %xmm0
mulss %xmm10, %xmm0
addss %xmm7, %xmm0
divss %xmm0, %xmm7
movaps %xmm7, 0x40(%rsp)
movss 0x14(%r13), %xmm0
movsd 0x18(%r13), %xmm4
movaps %xmm4, %xmm3
shufps $0xe1, %xmm4, %xmm3     # xmm3 = xmm3[1,0],xmm4[2,3]
movaps %xmm1, %xmm7
mulss %xmm4, %xmm7
movss %xmm0, %xmm4            # xmm4 = xmm0[0],xmm4[1,2,3]
mulps %xmm4, %xmm8
mulps %xmm1, %xmm3
subps %xmm8, %xmm3
movaps %xmm3, %xmm1
shufps $0x55, %xmm3, %xmm1     # xmm1 = xmm1[1,1],xmm3[1,1]
movaps 0x30(%rsp), %xmm8
mulss %xmm0, %xmm8
subss %xmm7, %xmm8
movaps %xmm3, %xmm0
mulss %xmm3, %xmm0
mulss %xmm1, %xmm1
addss %xmm0, %xmm1
movaps %xmm8, %xmm0
mulss %xmm8, %xmm0
addss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
xorps %xmm4, %xmm4
sqrtsd %xmm0, %xmm4
xorps %xmm1, %xmm1
xorps %xmm11, %xmm11
ucomisd %xmm4, %xmm5
xorps %xmm0, %xmm0
ja 0x13301
cvtps2pd %xmm3, %xmm0
movapd %xmm4, %xmm1
unpcklpd %xmm4, %xmm1            # xmm1 = xmm1[0],xmm4[0]
divpd %xmm1, %xmm0
cvtpd2ps %xmm0, %xmm1
xorps %xmm0, %xmm0
cvtss2sd %xmm8, %xmm0
divsd %xmm4, %xmm0
cvtsd2ss %xmm0, %xmm0
movaps 0x40(%rsp), %xmm10
subss %xmm10, %xmm13
mulss %xmm1, %xmm9
movaps %xmm1, %xmm4
shufps $0x55, %xmm1, %xmm4     # xmm4 = xmm4[1,1],xmm1[1,1]
movaps 0x10(%rsp), %xmm7
mulss %xmm4, %xmm7
addss %xmm9, %xmm7
movss 0x20(%rsp), %xmm3
mulss %xmm0, %xmm3
addss %xmm7, %xmm3
xorps %xmm7, %xmm7
cvtss2sd %xmm3, %xmm7
movsd 0x23dd5(%rip), %xmm5    # 0x37118
ucomisd %xmm7, %xmm5
jae 0x133b1
mulss %xmm1, %xmm14
movaps %xmm2, %xmm8
mulss %xmm4, %xmm8
addss %xmm14, %xmm8
movss 0x8(%rsp), %xmm7
mulss %xmm0, %xmm7
addss %xmm8, %xmm7
mulss %xmm1, %xmm15
mulss %xmm12, %xmm4
addss %xmm15, %xmm4
mulss %xmm6, %xmm0
addss %xmm4, %xmm0
mulss %xmm10, %xmm0
mulss %xmm13, %xmm7
addss %xmm0, %xmm7
ucomiss %xmm7, %xmm3
jae 0x133a8
divss %xmm7, %xmm3
minss 0x23d03(%rip), %xmm3    # 0x370a4
maxss %xmm3, %xmm11
jmp 0x133b1
movss 0x23cf3(%rip), %xmm11   # 0x370a4
movss 0x23cea(%rip), %xmm9    # 0x370a4
movaps %xmm9, %xmm14
subss %xmm11, %xmm14
cmpb $0x1, (%rax)
movaps 0xa0(%rsp), %xmm8
jne 0x134d3
movaps %xmm13, %xmm1
shufps $0x0, %xmm13, %xmm1     # xmm1 = xmm1[0,0],xmm13[0,0]
movaps %xmm10, %xmm0
shufps $0x0, %xmm10, %xmm0     # xmm0 = xmm0[0,0],xmm10[0,0]
movaps %xmm8, %xmm3
shufps $0x0, %xmm8, %xmm3      # xmm3 = xmm3[0,0],xmm8[0,0]
mulps %xmm1, %xmm2
movss 0x8(%rsp), %xmm1
mulss %xmm13, %xmm1
mulps %xmm12, %xmm0
addps %xmm2, %xmm0
mulss %xmm10, %xmm6
addss %xmm1, %xmm6
movaps 0x70(%rsp), %xmm2
mulps %xmm3, %xmm2
movss 0xc(%rsp), %xmm1
mulss %xmm8, %xmm1
mulss %xmm14, %xmm1
mulss %xmm11, %xmm6
addss %xmm1, %xmm6
subss 0x20(%rsp), %xmm6
movaps %xmm14, %xmm1
shufps $0x0, %xmm14, %xmm1     # xmm1 = xmm1[0,0],xmm14[0,0]
mulps %xmm2, %xmm1
movaps %xmm11, %xmm2
shufps $0x0, %xmm11, %xmm2     # xmm2 = xmm2[0,0],xmm11[0,0]
mulps %xmm0, %xmm2
addps %xmm1, %xmm2
subps 0x10(%rsp), %xmm2
mulps %xmm2, %xmm2
cvtps2pd %xmm2, %xmm0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
mulss %xmm6, %xmm6
xorps %xmm0, %xmm0
cvtss2sd %xmm6, %xmm0
addsd %xmm1, %xmm0
sqrtsd %xmm0, %xmm0
ucomisd 0x271f6(%rip), %xmm0    # 0x3a678
jbe 0x134d3
leaq 0x2746b(%rip), %rsi     # 0x3a8f6
movl $0x5, %edi
xorl %eax, %eax
movaps %xmm13, 0x30(%rsp)
movaps %xmm11, 0x10(%rsp)
movaps %xmm14, 0x20(%rsp)
callq 0xa446
movaps 0x20(%rsp), %xmm14
movss 0x23bec(%rip), %xmm9    # 0x370a4
movaps 0x10(%rsp), %xmm11
movaps 0x40(%rsp), %xmm10
movaps 0xa0(%rsp), %xmm8
movaps 0x30(%rsp), %xmm13
xorps %xmm2, %xmm2
cvtss2sd 0x80(%rsp), %xmm2
movsd 0x26e19(%rip), %xmm0    # 0x3a300
mulsd %xmm0, %xmm2
xorps %xmm1, %xmm1
cvtss2sd 0x50(%rsp), %xmm1
mulsd %xmm2, %xmm1
xorps %xmm3, %xmm3
addsd %xmm3, %xmm1
cvtsd2ss %xmm1, %xmm1
xorps %xmm4, %xmm4
cvtss2sd 0x60(%rsp), %xmm4
mulsd %xmm2, %xmm4
addsd %xmm3, %xmm4
xorps %xmm2, %xmm2
cvtsd2ss %xmm4, %xmm2
xorps %xmm4, %xmm4
cvtss2sd 0xc0(%rsp), %xmm4
mulsd %xmm0, %xmm4
movaps 0xb0(%rsp), %xmm7
xorps %xmm5, %xmm5
cvtss2sd %xmm7, %xmm5
mulsd %xmm4, %xmm5
addsd %xmm3, %xmm5
cvtsd2ss %xmm5, %xmm5
movaps %xmm9, %xmm6
subss %xmm7, %xmm6
cvtss2sd %xmm6, %xmm6
mulsd %xmm4, %xmm6
addsd %xmm3, %xmm6
xorps %xmm3, %xmm3
cvtsd2ss %xmm6, %xmm3
xorps %xmm4, %xmm4
cvtss2sd %xmm14, %xmm4
mulsd %xmm0, %xmm4
subss %xmm8, %xmm9
xorps %xmm6, %xmm6
cvtss2sd %xmm9, %xmm6
cvtss2sd %xmm3, %xmm3
mulsd %xmm4, %xmm6
addsd %xmm3, %xmm6
xorps %xmm3, %xmm3
cvtsd2ss %xmm6, %xmm3
movss %xmm3, 0x30(%rsp)
xorps %xmm3, %xmm3
cvtss2sd %xmm8, %xmm3
cvtss2sd %xmm2, %xmm2
mulsd %xmm4, %xmm3
addsd %xmm2, %xmm3
xorps %xmm2, %xmm2
cvtsd2ss %xmm3, %xmm2
movss %xmm2, 0x60(%rsp)
xorps %xmm2, %xmm2
cvtss2sd %xmm11, %xmm2
mulsd %xmm0, %xmm2
xorps %xmm0, %xmm0
cvtss2sd %xmm13, %xmm0
xorps %xmm3, %xmm3
cvtss2sd %xmm5, %xmm3
mulsd %xmm2, %xmm0
addsd %xmm3, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x50(%rsp)
xorps %xmm0, %xmm0
cvtss2sd %xmm10, %xmm0
cvtss2sd %xmm1, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x10(%rsp)
movb $0x0, (%rbx)
movl $0x3f800000, 0x4(%rbx)  # imm = 0x3F800000
leaq 0x8(%rbx), %rdi
movl $0x4, %esi
callq 0x1398e
movl 0x50(%r14), %eax
movq 0x8(%rbx), %rcx
movl %eax, (%rcx)
movq 0x8(%rbx), %rax
movss 0x30(%rsp), %xmm0
movss %xmm0, 0x4(%rax)
movl 0x4(%r13), %eax
movq 0x8(%rbx), %rcx
movl %eax, 0x8(%rcx)
movq 0x8(%rbx), %rax
movss 0x60(%rsp), %xmm0
movss %xmm0, 0xc(%rax)
movl 0x4(%rbp), %eax
movq 0x8(%rbx), %rcx
movl %eax, 0x10(%rcx)
movq 0x8(%rbx), %rax
movss 0x10(%rsp), %xmm0
movss %xmm0, 0x14(%rax)
movl 0x4(%r12), %eax
movq 0x8(%rbx), %rcx
movl %eax, 0x18(%rcx)
movq 0x8(%rbx), %rax
movss 0x50(%rsp), %xmm0
movss %xmm0, 0x1c(%rax)
addq $0xd8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq