// File: FreeSlave[P]vhlt/hlvis/flow.cpp
// Function: WindingDist(winding_t const**)
vec_t WindingDist (const winding_t *w[2])
{
	vec_t minsqrdist = 99999999.0 * 99999999.0;
	vec_t sqrdist;
	int a, b;
	// point to point
	for (a = 0; a < w[0]->numpoints; a++)
	{
		for (b = 0; b < w[1]->numpoints; b++)
		{
			vec3_t v;
			VectorSubtract (w[0]->points[a], w[1]->points[b], v);
			sqrdist = DotProduct (v, v);
			if (sqrdist < minsqrdist)
			{
				minsqrdist = sqrdist;
			}
		}
	}
	// point to edge
	for (int side = 0; side < 2; side++)
	{
		for (a = 0; a < w[side]->numpoints; a++)
		{
			for (b = 0; b < w[!side]->numpoints; b++)
			{
				const vec3_t &p = w[side]->points[a];
				const vec3_t &p1 = w[!side]->points[b];
				const vec3_t &p2 = w[!side]->points[(b + 1) % w[!side]->numpoints];
				vec3_t delta;
				vec_t frac;
				vec3_t v;
				VectorSubtract (p2, p1, delta);
				if (VectorNormalize (delta) <= ON_EPSILON)
				{
					continue;
				}
				frac = DotProduct (p, delta) - DotProduct (p1, delta);
				if (frac <= ON_EPSILON || frac >= (DotProduct (p2, delta) - DotProduct (p1, delta)) - ON_EPSILON)
				{
					// p1 or p2 is closest to p
					continue;
				}
				VectorMA (p1, frac, delta, v);
				VectorSubtract (p, v, v);
				sqrdist = DotProduct (v, v);
				if (sqrdist < minsqrdist)
				{
					minsqrdist = sqrdist;
				}
			}
		}
	}
	// edge to edge
	for (a = 0; a < w[0]->numpoints; a++)
	{
		for (b = 0; b < w[1]->numpoints; b++)
		{
			const vec3_t &p1 = w[0]->points[a];
			const vec3_t &p2 = w[0]->points[(a + 1) % w[0]->numpoints];
			const vec3_t &p3 = w[1]->points[b];
			const vec3_t &p4 = w[1]->points[(b + 1) % w[1]->numpoints];
			vec3_t delta1;
			vec3_t delta2;
			vec3_t normal;
			vec3_t normal1;
			vec3_t normal2;
			VectorSubtract (p2, p1, delta1);
			VectorSubtract (p4, p3, delta2);
			CrossProduct (delta1, delta2, normal);
			if (!VectorNormalize (normal))
			{
				continue;
			}
			CrossProduct (normal, delta1, normal1); // same direction as delta2
			CrossProduct (delta2, normal, normal2); // same direction as delta1
			if (VectorNormalize (normal1) <= ON_EPSILON || VectorNormalize (normal2) <= ON_EPSILON)
			{
				continue;
			}
			if (DotProduct (p3, normal1) >= DotProduct (p1, normal1) - ON_EPSILON ||
				DotProduct (p4, normal1) <= DotProduct (p1, normal1) + ON_EPSILON ||
				DotProduct (p1, normal2) >= DotProduct (p3, normal2) - ON_EPSILON ||
				DotProduct (p2, normal2) <= DotProduct (p3, normal2) + ON_EPSILON )
			{
				// the edges are not crossing when viewed along normal
				continue;
			}
			sqrdist = DotProduct (p3, normal) - DotProduct (p1, normal);
			sqrdist = sqrdist * sqrdist;
			if (sqrdist < minsqrdist)
			{
				minsqrdist = sqrdist;
			}
		}
	}
	// point to face and edge to face
	for (int side = 0; side < 2; side++)
	{
		vec3_t planenormal;
		vec_t planedist;
		vec3_t *boundnormals;
		vec_t *bounddists;
		if (!BestNormalFromWinding (w[!side]->points, w[!side]->numpoints, planenormal))
		{
			continue;
		}
		planedist = DotProduct (planenormal, w[!side]->points[0]);
		hlassume (boundnormals = (vec3_t *)malloc (w[!side]->numpoints * sizeof (vec3_t)), assume_NoMemory);
		hlassume (bounddists = (vec_t *)malloc (w[!side]->numpoints * sizeof (vec_t)), assume_NoMemory);
		// build boundaries
		for (b = 0; b < w[!side]->numpoints; b++)
		{
			vec3_t v;
			const vec3_t &p1 = w[!side]->points[b];
			const vec3_t &p2 = w[!side]->points[(b + 1) % w[!side]->numpoints];
			VectorSubtract (p2, p1, v);
			CrossProduct (v, planenormal, boundnormals[b]);
			if (!VectorNormalize (boundnormals[b]))
			{
				bounddists[b] = 1.0;
			}
			else
			{
				bounddists[b] = DotProduct (p1, boundnormals[b]);
			}
		}
		for (a = 0; a < w[side]->numpoints; a++)
		{
			const vec3_t &p = w[side]->points[a];
			for (b = 0; b < w[!side]->numpoints; b++)
			{
				if (DotProduct (p, boundnormals[b]) - bounddists[b] >= -ON_EPSILON)
				{
					break;
				}
			}
			if (b < w[!side]->numpoints)
			{
				continue;
			}
			sqrdist = DotProduct (p, planenormal) - planedist;
			sqrdist = sqrdist * sqrdist;
			if (sqrdist < minsqrdist)
			{
				minsqrdist = sqrdist;
			}
		}
		for (a = 0; a < w[side]->numpoints; a++)
		{
			const vec3_t &p1 = w[side]->points[a];
			const vec3_t &p2 = w[side]->points[(a + 1) % w[side]->numpoints];
			vec_t dist1 = DotProduct (p1, planenormal) - planedist;
			vec_t dist2 = DotProduct (p2, planenormal) - planedist;
			vec3_t delta;
			vec_t frac;
			vec3_t v;
			if (dist1 > ON_EPSILON && dist2 < -ON_EPSILON || dist1 < -ON_EPSILON && dist2 > ON_EPSILON)
			{
				frac = dist1 / (dist1 - dist2);
				VectorSubtract (p2, p1, delta);
				VectorMA (p1, frac, delta, v);
				for (b = 0; b < w[!side]->numpoints; b++)
				{
					if (DotProduct (v, boundnormals[b]) - bounddists[b] >= -ON_EPSILON)
					{
						break;
					}
				}
				if (b < w[!side]->numpoints)
				{
					continue;
				}
				minsqrdist = 0;
			}
		}
		free (boundnormals);
		free (bounddists);
	}
	return (sqrt (minsqrdist));
}

// Assembly:
subq $0x168, %rsp            # imm = 0x168
movq %rdi, 0x160(%rsp)
movss 0xa951(%rip), %xmm0     # 0x1c658
movss %xmm0, 0x15c(%rsp)
movl $0x0, 0x154(%rsp)
movl 0x154(%rsp), %eax
movq 0x160(%rsp), %rcx
movq (%rcx), %rcx
cmpl 0x4(%rcx), %eax
jge 0x11ef3
movl $0x0, 0x150(%rsp)
movl 0x150(%rsp), %eax
movq 0x160(%rsp), %rcx
movq 0x8(%rcx), %rcx
cmpl 0x4(%rcx), %eax
jge 0x11edb
movq 0x160(%rsp), %rax
movq (%rax), %rax
addq $0x8, %rax
movslq 0x154(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movss (%rax), %xmm0
movq 0x160(%rsp), %rax
movq 0x8(%rax), %rax
addq $0x8, %rax
movslq 0x150(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
subss (%rax), %xmm0
movss %xmm0, 0x144(%rsp)
movq 0x160(%rsp), %rax
movq (%rax), %rax
addq $0x8, %rax
movslq 0x154(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movss 0x4(%rax), %xmm0
movq 0x160(%rsp), %rax
movq 0x8(%rax), %rax
addq $0x8, %rax
movslq 0x150(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
subss 0x4(%rax), %xmm0
movss %xmm0, 0x148(%rsp)
movq 0x160(%rsp), %rax
movq (%rax), %rax
addq $0x8, %rax
movslq 0x154(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movss 0x8(%rax), %xmm0
movq 0x160(%rsp), %rax
movq 0x8(%rax), %rax
addq $0x8, %rax
movslq 0x150(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
subss 0x8(%rax), %xmm0
movss %xmm0, 0x14c(%rsp)
movss 0x144(%rsp), %xmm1
movss 0x144(%rsp), %xmm2
movss 0x148(%rsp), %xmm0
mulss 0x148(%rsp), %xmm0
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x14c(%rsp), %xmm0
movss 0x14c(%rsp), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0x158(%rsp)
movss 0x158(%rsp), %xmm1
movss 0x15c(%rsp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0x11ec3
movss 0x158(%rsp), %xmm0
movss %xmm0, 0x15c(%rsp)
jmp 0x11ec5
movl 0x150(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x150(%rsp)
jmp 0x11d41
jmp 0x11edd
movl 0x154(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x154(%rsp)
jmp 0x11d1b
movl $0x0, 0x140(%rsp)
cmpl $0x2, 0x140(%rsp)
jge 0x12420
movl $0x0, 0x154(%rsp)
movl 0x154(%rsp), %eax
movq 0x160(%rsp), %rcx
movslq 0x140(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpl 0x4(%rcx), %eax
jge 0x12408
movl $0x0, 0x150(%rsp)
movl 0x150(%rsp), %eax
movq 0x160(%rsp), %rcx
cmpl $0x0, 0x140(%rsp)
setne %dl
xorb $-0x1, %dl
andb $0x1, %dl
movzbl %dl, %edx
movq (%rcx,%rdx,8), %rcx
cmpl 0x4(%rcx), %eax
jge 0x123f0
movq 0x160(%rsp), %rax
movslq 0x140(%rsp), %rcx
movq (%rax,%rcx,8), %rax
addq $0x8, %rax
movslq 0x154(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movq %rax, 0x138(%rsp)
movq 0x160(%rsp), %rax
cmpl $0x0, 0x140(%rsp)
setne %cl
xorb $-0x1, %cl
andb $0x1, %cl
movzbl %cl, %ecx
movq (%rax,%rcx,8), %rax
addq $0x8, %rax
movslq 0x150(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movq %rax, 0x130(%rsp)
movq 0x160(%rsp), %rax
cmpl $0x0, 0x140(%rsp)
setne %cl
xorb $-0x1, %cl
andb $0x1, %cl
movzbl %cl, %ecx
movq (%rax,%rcx,8), %rax
addq $0x8, %rax
movq %rax, 0x20(%rsp)
movl 0x150(%rsp), %eax
addl $0x1, %eax
movq 0x160(%rsp), %rcx
cmpl $0x0, 0x140(%rsp)
setne %dl
xorb $-0x1, %dl
andb $0x1, %dl
movzbl %dl, %edx
movq (%rcx,%rdx,8), %rcx
cltd
idivl 0x4(%rcx)
movq 0x20(%rsp), %rax
movslq %edx, %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movq %rax, 0x128(%rsp)
movq 0x128(%rsp), %rax
movss (%rax), %xmm0
movq 0x130(%rsp), %rax
subss (%rax), %xmm0
movss %xmm0, 0x11c(%rsp)
movq 0x128(%rsp), %rax
movss 0x4(%rax), %xmm0
movq 0x130(%rsp), %rax
subss 0x4(%rax), %xmm0
movss %xmm0, 0x120(%rsp)
movq 0x128(%rsp), %rax
movss 0x8(%rax), %xmm0
movq 0x130(%rsp), %rax
subss 0x8(%rax), %xmm0
movss %xmm0, 0x124(%rsp)
leaq 0x11c(%rsp), %rdi
callq 0x10780
cvtss2sd %xmm0, %xmm1
movsd 0xa562(%rip), %xmm0     # 0x1c630
ucomisd %xmm1, %xmm0
jb 0x120d9
jmp 0x123da
movq 0x138(%rsp), %rax
movss (%rax), %xmm1
movss 0x11c(%rsp), %xmm2
movq 0x138(%rsp), %rax
movss 0x4(%rax), %xmm0
mulss 0x120(%rsp), %xmm0
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq 0x138(%rsp), %rax
movss 0x8(%rax), %xmm0
movss 0x124(%rsp), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq 0x130(%rsp), %rax
movss (%rax), %xmm2
movss 0x11c(%rsp), %xmm3
movq 0x130(%rsp), %rax
movss 0x4(%rax), %xmm1
mulss 0x120(%rsp), %xmm1
mulss %xmm3, %xmm2
addss %xmm1, %xmm2
movq 0x130(%rsp), %rax
movss 0x8(%rax), %xmm1
movss 0x124(%rsp), %xmm3
mulss %xmm3, %xmm1
addss %xmm2, %xmm1
subss %xmm1, %xmm0
movss %xmm0, 0x118(%rsp)
movss 0x118(%rsp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xa493(%rip), %xmm0     # 0x1c630
ucomisd %xmm1, %xmm0
jae 0x12270
movss 0x118(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movq 0x128(%rsp), %rax
movss (%rax), %xmm2
movss 0x11c(%rsp), %xmm3
movq 0x128(%rsp), %rax
movss 0x4(%rax), %xmm1
mulss 0x120(%rsp), %xmm1
mulss %xmm3, %xmm2
addss %xmm1, %xmm2
movq 0x128(%rsp), %rax
movss 0x8(%rax), %xmm1
movss 0x124(%rsp), %xmm3
mulss %xmm3, %xmm1
addss %xmm2, %xmm1
movq 0x130(%rsp), %rax
movss (%rax), %xmm3
movss 0x11c(%rsp), %xmm4
movq 0x130(%rsp), %rax
movss 0x4(%rax), %xmm2
mulss 0x120(%rsp), %xmm2
mulss %xmm4, %xmm3
addss %xmm2, %xmm3
movq 0x130(%rsp), %rax
movss 0x8(%rax), %xmm2
movss 0x124(%rsp), %xmm4
mulss %xmm4, %xmm2
addss %xmm3, %xmm2
subss %xmm2, %xmm1
cvtss2sd %xmm1, %xmm1
movsd 0xa3ca(%rip), %xmm2     # 0x1c630
subsd %xmm2, %xmm1
ucomisd %xmm1, %xmm0
jb 0x12275
jmp 0x123da
movq 0x130(%rsp), %rax
movss (%rax), %xmm1
movss 0x118(%rsp), %xmm0
movss 0x11c(%rsp), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0x10c(%rsp)
movq 0x130(%rsp), %rax
movss 0x4(%rax), %xmm1
movss 0x118(%rsp), %xmm0
movss 0x120(%rsp), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0x110(%rsp)
movq 0x130(%rsp), %rax
movss 0x8(%rax), %xmm1
movss 0x118(%rsp), %xmm0
movss 0x124(%rsp), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0x114(%rsp)
movq 0x138(%rsp), %rax
movss (%rax), %xmm0
subss 0x10c(%rsp), %xmm0
movss %xmm0, 0x10c(%rsp)
movq 0x138(%rsp), %rax
movss 0x4(%rax), %xmm0
subss 0x110(%rsp), %xmm0
movss %xmm0, 0x110(%rsp)
movq 0x138(%rsp), %rax
movss 0x8(%rax), %xmm0
subss 0x114(%rsp), %xmm0
movss %xmm0, 0x114(%rsp)
movss 0x10c(%rsp), %xmm1
movss 0x10c(%rsp), %xmm2
movss 0x110(%rsp), %xmm0
mulss 0x110(%rsp), %xmm0
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x114(%rsp), %xmm0
movss 0x114(%rsp), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0x158(%rsp)
movss 0x158(%rsp), %xmm1
movss 0x15c(%rsp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0x123d8
movss 0x158(%rsp), %xmm0
movss %xmm0, 0x15c(%rsp)
jmp 0x123da
movl 0x150(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x150(%rsp)
jmp 0x11f46
jmp 0x123f2
movl 0x154(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x154(%rsp)
jmp 0x11f17
jmp 0x1240a
movl 0x140(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x140(%rsp)
jmp 0x11efe
movl $0x0, 0x154(%rsp)
movl 0x154(%rsp), %eax
movq 0x160(%rsp), %rcx
movq (%rcx), %rcx
cmpl 0x4(%rcx), %eax
jge 0x12ce7
movl $0x0, 0x150(%rsp)
movl 0x150(%rsp), %eax
movq 0x160(%rsp), %rcx
movq 0x8(%rcx), %rcx
cmpl 0x4(%rcx), %eax
jge 0x12ccf
movq 0x160(%rsp), %rax
movq (%rax), %rax
addq $0x8, %rax
movslq 0x154(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movq %rax, 0x100(%rsp)
movq 0x160(%rsp), %rax
movq (%rax), %rax
addq $0x8, %rax
movq %rax, 0x10(%rsp)
movl 0x154(%rsp), %eax
addl $0x1, %eax
movq 0x160(%rsp), %rcx
movq (%rcx), %rcx
cltd
idivl 0x4(%rcx)
movq 0x10(%rsp), %rax
movslq %edx, %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movq %rax, 0xf8(%rsp)
movq 0x160(%rsp), %rax
movq 0x8(%rax), %rax
addq $0x8, %rax
movslq 0x150(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movq %rax, 0xf0(%rsp)
movq 0x160(%rsp), %rax
movq 0x8(%rax), %rax
addq $0x8, %rax
movq %rax, 0x18(%rsp)
movl 0x150(%rsp), %eax
addl $0x1, %eax
movq 0x160(%rsp), %rcx
movq 0x8(%rcx), %rcx
cltd
idivl 0x4(%rcx)
movq 0x18(%rsp), %rax
movslq %edx, %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movq %rax, 0xe8(%rsp)
movq 0xf8(%rsp), %rax
movss (%rax), %xmm0
movq 0x100(%rsp), %rax
subss (%rax), %xmm0
movss %xmm0, 0xdc(%rsp)
movq 0xf8(%rsp), %rax
movss 0x4(%rax), %xmm0
movq 0x100(%rsp), %rax
subss 0x4(%rax), %xmm0
movss %xmm0, 0xe0(%rsp)
movq 0xf8(%rsp), %rax
movss 0x8(%rax), %xmm0
movq 0x100(%rsp), %rax
subss 0x8(%rax), %xmm0
movss %xmm0, 0xe4(%rsp)
movq 0xe8(%rsp), %rax
movss (%rax), %xmm0
movq 0xf0(%rsp), %rax
subss (%rax), %xmm0
movss %xmm0, 0xd0(%rsp)
movq 0xe8(%rsp), %rax
movss 0x4(%rax), %xmm0
movq 0xf0(%rsp), %rax
subss 0x4(%rax), %xmm0
movss %xmm0, 0xd4(%rsp)
movq 0xe8(%rsp), %rax
movss 0x8(%rax), %xmm0
movq 0xf0(%rsp), %rax
subss 0x8(%rax), %xmm0
movss %xmm0, 0xd8(%rsp)
movss 0xe0(%rsp), %xmm0
movss 0xd8(%rsp), %xmm2
movss 0xe4(%rsp), %xmm1
mulss 0xd4(%rsp), %xmm1
movd %xmm1, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0xc4(%rsp)
movss 0xe4(%rsp), %xmm0
movss 0xd0(%rsp), %xmm2
movss 0xdc(%rsp), %xmm1
mulss 0xd8(%rsp), %xmm1
movd %xmm1, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0xc8(%rsp)
movss 0xdc(%rsp), %xmm0
movss 0xd4(%rsp), %xmm2
movss 0xe0(%rsp), %xmm1
mulss 0xd0(%rsp), %xmm1
movd %xmm1, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0xcc(%rsp)
leaq 0xc4(%rsp), %rdi
callq 0x10780
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x126f4
jp 0x126f4
jmp 0x12cb9
movss 0xc8(%rsp), %xmm0
movss 0xe4(%rsp), %xmm2
movss 0xcc(%rsp), %xmm1
mulss 0xe0(%rsp), %xmm1
movd %xmm1, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0xb8(%rsp)
movss 0xcc(%rsp), %xmm0
movss 0xdc(%rsp), %xmm2
movss 0xc4(%rsp), %xmm1
mulss 0xe4(%rsp), %xmm1
movd %xmm1, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0xbc(%rsp)
movss 0xc4(%rsp), %xmm0
movss 0xe0(%rsp), %xmm2
movss 0xc8(%rsp), %xmm1
mulss 0xdc(%rsp), %xmm1
movd %xmm1, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0xc0(%rsp)
movss 0xd4(%rsp), %xmm0
movss 0xcc(%rsp), %xmm2
movss 0xd8(%rsp), %xmm1
mulss 0xc8(%rsp), %xmm1
movd %xmm1, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0xac(%rsp)
movss 0xd8(%rsp), %xmm0
movss 0xc4(%rsp), %xmm2
movss 0xd0(%rsp), %xmm1
mulss 0xcc(%rsp), %xmm1
movd %xmm1, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0xb0(%rsp)
movss 0xd0(%rsp), %xmm0
movss 0xc8(%rsp), %xmm2
movss 0xd4(%rsp), %xmm1
mulss 0xc4(%rsp), %xmm1
movd %xmm1, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0xb4(%rsp)
leaq 0xb8(%rsp), %rdi
callq 0x10780
cvtss2sd %xmm0, %xmm1
movsd 0x9d97(%rip), %xmm0     # 0x1c630
ucomisd %xmm1, %xmm0
jae 0x128be
leaq 0xac(%rsp), %rdi
callq 0x10780
cvtss2sd %xmm0, %xmm1
movsd 0x9d78(%rip), %xmm0     # 0x1c630
ucomisd %xmm1, %xmm0
jb 0x128c3
jmp 0x12cb9
movq 0xf0(%rsp), %rax
movss (%rax), %xmm1
movss 0xb8(%rsp), %xmm2
movq 0xf0(%rsp), %rax
movss 0x4(%rax), %xmm0
mulss 0xbc(%rsp), %xmm0
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq 0xf0(%rsp), %rax
movss 0x8(%rax), %xmm0
movss 0xc0(%rsp), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
movq 0x100(%rsp), %rax
movss (%rax), %xmm2
movss 0xb8(%rsp), %xmm3
movq 0x100(%rsp), %rax
movss 0x4(%rax), %xmm1
mulss 0xbc(%rsp), %xmm1
mulss %xmm3, %xmm2
addss %xmm1, %xmm2
movq 0x100(%rsp), %rax
movss 0x8(%rax), %xmm1
movss 0xc0(%rsp), %xmm3
mulss %xmm3, %xmm1
addss %xmm2, %xmm1
cvtss2sd %xmm1, %xmm1
movsd 0x9cbb(%rip), %xmm2     # 0x1c630
subsd %xmm2, %xmm1
ucomisd %xmm1, %xmm0
jae 0x12bbf
movq 0xe8(%rsp), %rax
movss (%rax), %xmm1
movss 0xb8(%rsp), %xmm2
movq 0xe8(%rsp), %rax
movss 0x4(%rax), %xmm0
mulss 0xbc(%rsp), %xmm0
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq 0xe8(%rsp), %rax
movss 0x8(%rax), %xmm0
movss 0xc0(%rsp), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm1
movq 0x100(%rsp), %rax
movss (%rax), %xmm2
movss 0xb8(%rsp), %xmm3
movq 0x100(%rsp), %rax
movss 0x4(%rax), %xmm0
mulss 0xbc(%rsp), %xmm0
mulss %xmm3, %xmm2
addss %xmm0, %xmm2
movq 0x100(%rsp), %rax
movss 0x8(%rax), %xmm0
movss 0xc0(%rsp), %xmm3
mulss %xmm3, %xmm0
addss %xmm2, %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x9bfb(%rip), %xmm2     # 0x1c630
addsd %xmm2, %xmm0
ucomisd %xmm1, %xmm0
jae 0x12bbf
movq 0x100(%rsp), %rax
movss (%rax), %xmm1
movss 0xac(%rsp), %xmm2
movq 0x100(%rsp), %rax
movss 0x4(%rax), %xmm0
mulss 0xb0(%rsp), %xmm0
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq 0x100(%rsp), %rax
movss 0x8(%rax), %xmm0
movss 0xb4(%rsp), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
movq 0xf0(%rsp), %rax
movss (%rax), %xmm2
movss 0xac(%rsp), %xmm3
movq 0xf0(%rsp), %rax
movss 0x4(%rax), %xmm1
mulss 0xb0(%rsp), %xmm1
mulss %xmm3, %xmm2
addss %xmm1, %xmm2
movq 0xf0(%rsp), %rax
movss 0x8(%rax), %xmm1
movss 0xb4(%rsp), %xmm3
mulss %xmm3, %xmm1
addss %xmm2, %xmm1
cvtss2sd %xmm1, %xmm1
movsd 0x9b3b(%rip), %xmm2     # 0x1c630
subsd %xmm2, %xmm1
ucomisd %xmm1, %xmm0
jae 0x12bbf
movq 0xf8(%rsp), %rax
movss (%rax), %xmm1
movss 0xac(%rsp), %xmm2
movq 0xf8(%rsp), %rax
movss 0x4(%rax), %xmm0
mulss 0xb0(%rsp), %xmm0
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq 0xf8(%rsp), %rax
movss 0x8(%rax), %xmm0
movss 0xb4(%rsp), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm1
movq 0xf0(%rsp), %rax
movss (%rax), %xmm2
movss 0xac(%rsp), %xmm3
movq 0xf0(%rsp), %rax
movss 0x4(%rax), %xmm0
mulss 0xb0(%rsp), %xmm0
mulss %xmm3, %xmm2
addss %xmm0, %xmm2
movq 0xf0(%rsp), %rax
movss 0x8(%rax), %xmm0
movss 0xb4(%rsp), %xmm3
mulss %xmm3, %xmm0
addss %xmm2, %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x9a7b(%rip), %xmm2     # 0x1c630
addsd %xmm2, %xmm0
ucomisd %xmm1, %xmm0
jb 0x12bc4
jmp 0x12cb9
movq 0xf0(%rsp), %rax
movss (%rax), %xmm1
movss 0xc4(%rsp), %xmm2
movq 0xf0(%rsp), %rax
movss 0x4(%rax), %xmm0
mulss 0xc8(%rsp), %xmm0
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq 0xf0(%rsp), %rax
movss 0x8(%rax), %xmm0
movss 0xcc(%rsp), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq 0x100(%rsp), %rax
movss (%rax), %xmm2
movss 0xc4(%rsp), %xmm3
movq 0x100(%rsp), %rax
movss 0x4(%rax), %xmm1
mulss 0xc8(%rsp), %xmm1
mulss %xmm3, %xmm2
addss %xmm1, %xmm2
movq 0x100(%rsp), %rax
movss 0x8(%rax), %xmm1
movss 0xcc(%rsp), %xmm3
mulss %xmm3, %xmm1
addss %xmm2, %xmm1
subss %xmm1, %xmm0
movss %xmm0, 0x158(%rsp)
movss 0x158(%rsp), %xmm0
mulss 0x158(%rsp), %xmm0
movss %xmm0, 0x158(%rsp)
movss 0x158(%rsp), %xmm1
movss 0x15c(%rsp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0x12cb7
movss 0x158(%rsp), %xmm0
movss %xmm0, 0x15c(%rsp)
jmp 0x12cb9
movl 0x150(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x150(%rsp)
jmp 0x12451
jmp 0x12cd1
movl 0x154(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x154(%rsp)
jmp 0x1242b
movl $0x0, 0xa8(%rsp)
cmpl $0x2, 0xa8(%rsp)
jge 0x137fb
movq 0x160(%rsp), %rax
cmpl $0x0, 0xa8(%rsp)
setne %cl
xorb $-0x1, %cl
andb $0x1, %cl
movzbl %cl, %ecx
movq (%rax,%rcx,8), %rdi
addq $0x8, %rdi
movq 0x160(%rsp), %rax
cmpl $0x0, 0xa8(%rsp)
setne %cl
xorb $-0x1, %cl
andb $0x1, %cl
movzbl %cl, %ecx
movq (%rax,%rcx,8), %rax
movl 0x4(%rax), %esi
leaq 0x9c(%rsp), %rdx
callq 0x117b0
testb $0x1, %al
jne 0x12d5d
jmp 0x137e5
movss 0x9c(%rsp), %xmm1
movq 0x160(%rsp), %rax
cmpl $0x0, 0xa8(%rsp)
setne %cl
xorb $-0x1, %cl
andb $0x1, %cl
movzbl %cl, %ecx
movq (%rax,%rcx,8), %rax
movss 0x8(%rax), %xmm2
movss 0xa0(%rsp), %xmm0
movq 0x160(%rsp), %rax
cmpl $0x0, 0xa8(%rsp)
setne %cl
xorb $-0x1, %cl
andb $0x1, %cl
movzbl %cl, %ecx
movq (%rax,%rcx,8), %rax
mulss 0xc(%rax), %xmm0
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0xa4(%rsp), %xmm0
movq 0x160(%rsp), %rax
cmpl $0x0, 0xa8(%rsp)
setne %cl
xorb $-0x1, %cl
andb $0x1, %cl
movzbl %cl, %ecx
movq (%rax,%rcx,8), %rax
movss 0x10(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0x98(%rsp)
movq 0x160(%rsp), %rax
cmpl $0x0, 0xa8(%rsp)
setne %cl
xorb $-0x1, %cl
andb $0x1, %cl
movzbl %cl, %ecx
movq (%rax,%rcx,8), %rax
movslq 0x4(%rax), %rax
imulq $0xc, %rax, %rdi
callq 0x3310
movq %rax, 0x90(%rsp)
cmpq $0x0, %rax
setne %al
movzbl %al, %edi
andl $0x1, %edi
movl $0x1, %esi
callq 0xad00
movq 0x160(%rsp), %rax
cmpl $0x0, 0xa8(%rsp)
setne %cl
xorb $-0x1, %cl
andb $0x1, %cl
movzbl %cl, %ecx
movq (%rax,%rcx,8), %rax
movslq 0x4(%rax), %rdi
shlq $0x2, %rdi
callq 0x3310
movq %rax, 0x88(%rsp)
cmpq $0x0, %rax
setne %al
movzbl %al, %edi
andl $0x1, %edi
movl $0x1, %esi
callq 0xad00
movl $0x0, 0x150(%rsp)
movl 0x150(%rsp), %eax
movq 0x160(%rsp), %rcx
cmpl $0x0, 0xa8(%rsp)
setne %dl
xorb $-0x1, %dl
andb $0x1, %dl
movzbl %dl, %edx
movq (%rcx,%rdx,8), %rcx
cmpl 0x4(%rcx), %eax
jge 0x131b5
movq 0x160(%rsp), %rax
cmpl $0x0, 0xa8(%rsp)
setne %cl
xorb $-0x1, %cl
andb $0x1, %cl
movzbl %cl, %ecx
movq (%rax,%rcx,8), %rax
addq $0x8, %rax
movslq 0x150(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movq %rax, 0x70(%rsp)
movq 0x160(%rsp), %rax
cmpl $0x0, 0xa8(%rsp)
setne %cl
xorb $-0x1, %cl
andb $0x1, %cl
movzbl %cl, %ecx
movq (%rax,%rcx,8), %rax
addq $0x8, %rax
movq %rax, 0x8(%rsp)
movl 0x150(%rsp), %eax
addl $0x1, %eax
movq 0x160(%rsp), %rcx
cmpl $0x0, 0xa8(%rsp)
setne %dl
xorb $-0x1, %dl
andb $0x1, %dl
movzbl %dl, %edx
movq (%rcx,%rdx,8), %rcx
cltd
idivl 0x4(%rcx)
movq 0x8(%rsp), %rax
movslq %edx, %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rax
movss (%rax), %xmm0
movq 0x70(%rsp), %rax
subss (%rax), %xmm0
movss %xmm0, 0x7c(%rsp)
movq 0x68(%rsp), %rax
movss 0x4(%rax), %xmm0
movq 0x70(%rsp), %rax
subss 0x4(%rax), %xmm0
movss %xmm0, 0x80(%rsp)
movq 0x68(%rsp), %rax
movss 0x8(%rax), %xmm0
movq 0x70(%rsp), %rax
subss 0x8(%rax), %xmm0
movss %xmm0, 0x84(%rsp)
movss 0x80(%rsp), %xmm0
movss 0xa4(%rsp), %xmm2
movss 0x84(%rsp), %xmm1
mulss 0xa0(%rsp), %xmm1
movd %xmm1, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq 0x90(%rsp), %rax
movslq 0x150(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movss %xmm0, (%rax)
movss 0x84(%rsp), %xmm0
movss 0x9c(%rsp), %xmm2
movss 0x7c(%rsp), %xmm1
mulss 0xa4(%rsp), %xmm1
movd %xmm1, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq 0x90(%rsp), %rax
movslq 0x150(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movss %xmm0, 0x4(%rax)
movss 0x7c(%rsp), %xmm0
movss 0xa0(%rsp), %xmm2
movss 0x80(%rsp), %xmm1
mulss 0x9c(%rsp), %xmm1
movd %xmm1, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq 0x90(%rsp), %rax
movslq 0x150(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movss %xmm0, 0x8(%rax)
movq 0x90(%rsp), %rdi
movslq 0x150(%rsp), %rax
imulq $0xc, %rax, %rax
addq %rax, %rdi
callq 0x10780
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x13108
jp 0x13108
movq 0x88(%rsp), %rax
movslq 0x150(%rsp), %rcx
movss 0x5f4e(%rip), %xmm0     # 0x1904c
movss %xmm0, (%rax,%rcx,4)
jmp 0x1319d
movq 0x70(%rsp), %rax
movss (%rax), %xmm1
movq 0x90(%rsp), %rax
movslq 0x150(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movss (%rax), %xmm2
movq 0x70(%rsp), %rax
movss 0x4(%rax), %xmm0
movq 0x90(%rsp), %rax
movslq 0x150(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
mulss 0x4(%rax), %xmm0
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq 0x70(%rsp), %rax
movss 0x8(%rax), %xmm0
movq 0x90(%rsp), %rax
movslq 0x150(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movss 0x8(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq 0x88(%rsp), %rax
movslq 0x150(%rsp), %rcx
movss %xmm0, (%rax,%rcx,4)
jmp 0x1319f
movl 0x150(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x150(%rsp)
jmp 0x12ea3
movl $0x0, 0x154(%rsp)
movl 0x154(%rsp), %eax
movq 0x160(%rsp), %rcx
movslq 0xa8(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpl 0x4(%rcx), %eax
jge 0x133f3
movq 0x160(%rsp), %rax
movslq 0xa8(%rsp), %rcx
movq (%rax,%rcx,8), %rax
addq $0x8, %rax
movslq 0x154(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movq %rax, 0x60(%rsp)
movl $0x0, 0x150(%rsp)
movl 0x150(%rsp), %eax
movq 0x160(%rsp), %rcx
cmpl $0x0, 0xa8(%rsp)
setne %dl
xorb $-0x1, %dl
andb $0x1, %dl
movzbl %dl, %edx
movq (%rcx,%rdx,8), %rcx
cmpl 0x4(%rcx), %eax
jge 0x1330c
movq 0x60(%rsp), %rax
movss (%rax), %xmm1
movq 0x90(%rsp), %rax
movslq 0x150(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movss (%rax), %xmm2
movq 0x60(%rsp), %rax
movss 0x4(%rax), %xmm0
movq 0x90(%rsp), %rax
movslq 0x150(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
mulss 0x4(%rax), %xmm0
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq 0x60(%rsp), %rax
movss 0x8(%rax), %xmm0
movq 0x90(%rsp), %rax
movslq 0x150(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movss 0x8(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq 0x88(%rsp), %rax
movslq 0x150(%rsp), %rcx
subss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x934c(%rip), %xmm1     # 0x1c638
ucomisd %xmm1, %xmm0
jb 0x132f4
jmp 0x1330c
jmp 0x132f6
movl 0x150(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x150(%rsp)
jmp 0x1321b
movl 0x150(%rsp), %eax
movq 0x160(%rsp), %rcx
cmpl $0x0, 0xa8(%rsp)
setne %dl
xorb $-0x1, %dl
andb $0x1, %dl
movzbl %dl, %edx
movq (%rcx,%rdx,8), %rcx
cmpl 0x4(%rcx), %eax
jge 0x1333d
jmp 0x133dd
movq 0x60(%rsp), %rax
movss (%rax), %xmm1
movss 0x9c(%rsp), %xmm2
movq 0x60(%rsp), %rax
movss 0x4(%rax), %xmm0
mulss 0xa0(%rsp), %xmm0
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq 0x60(%rsp), %rax
movss 0x8(%rax), %xmm0
movss 0xa4(%rsp), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
subss 0x98(%rsp), %xmm0
movss %xmm0, 0x158(%rsp)
movss 0x158(%rsp), %xmm0
mulss 0x158(%rsp), %xmm0
movss %xmm0, 0x158(%rsp)
movss 0x158(%rsp), %xmm1
movss 0x15c(%rsp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0x133db
movss 0x158(%rsp), %xmm0
movss %xmm0, 0x15c(%rsp)
jmp 0x133dd
movl 0x154(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x154(%rsp)
jmp 0x131c0
movl $0x0, 0x154(%rsp)
movl 0x154(%rsp), %eax
movq 0x160(%rsp), %rcx
movslq 0xa8(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpl 0x4(%rcx), %eax
jge 0x137cb
movq 0x160(%rsp), %rax
movslq 0xa8(%rsp), %rcx
movq (%rax,%rcx,8), %rax
addq $0x8, %rax
movslq 0x154(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movq %rax, 0x58(%rsp)
movq 0x160(%rsp), %rax
movslq 0xa8(%rsp), %rcx
movq (%rax,%rcx,8), %rax
addq $0x8, %rax
movq %rax, (%rsp)
movl 0x154(%rsp), %eax
addl $0x1, %eax
movq 0x160(%rsp), %rcx
movslq 0xa8(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
cltd
idivl 0x4(%rcx)
movq (%rsp), %rax
movslq %edx, %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movq %rax, 0x50(%rsp)
movq 0x58(%rsp), %rax
movss (%rax), %xmm1
movss 0x9c(%rsp), %xmm2
movq 0x58(%rsp), %rax
movss 0x4(%rax), %xmm0
mulss 0xa0(%rsp), %xmm0
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq 0x58(%rsp), %rax
movss 0x8(%rax), %xmm0
movss 0xa4(%rsp), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
subss 0x98(%rsp), %xmm0
movss %xmm0, 0x4c(%rsp)
movq 0x50(%rsp), %rax
movss (%rax), %xmm1
movss 0x9c(%rsp), %xmm2
movq 0x50(%rsp), %rax
movss 0x4(%rax), %xmm0
mulss 0xa0(%rsp), %xmm0
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq 0x50(%rsp), %rax
movss 0x8(%rax), %xmm0
movss 0xa4(%rsp), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
subss 0x98(%rsp), %xmm0
movss %xmm0, 0x48(%rsp)
movss 0x4c(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x90d1(%rip), %xmm1     # 0x1c630
ucomisd %xmm1, %xmm0
jbe 0x1357d
movss 0x48(%rsp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x90c1(%rip), %xmm0     # 0x1c638
ucomisd %xmm1, %xmm0
ja 0x135b5
movss 0x4c(%rsp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x90a9(%rip), %xmm0     # 0x1c638
ucomisd %xmm1, %xmm0
jbe 0x137b3
movss 0x48(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x9085(%rip), %xmm1     # 0x1c630
ucomisd %xmm1, %xmm0
jbe 0x137b3
movss 0x4c(%rsp), %xmm0
movss 0x4c(%rsp), %xmm1
subss 0x48(%rsp), %xmm1
divss %xmm1, %xmm0
movss %xmm0, 0x38(%rsp)
movq 0x50(%rsp), %rax
movss (%rax), %xmm0
movq 0x58(%rsp), %rax
subss (%rax), %xmm0
movss %xmm0, 0x3c(%rsp)
movq 0x50(%rsp), %rax
movss 0x4(%rax), %xmm0
movq 0x58(%rsp), %rax
subss 0x4(%rax), %xmm0
movss %xmm0, 0x40(%rsp)
movq 0x50(%rsp), %rax
movss 0x8(%rax), %xmm0
movq 0x58(%rsp), %rax
subss 0x8(%rax), %xmm0
movss %xmm0, 0x44(%rsp)
movq 0x58(%rsp), %rax
movss (%rax), %xmm1
movss 0x38(%rsp), %xmm0
movss 0x3c(%rsp), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0x2c(%rsp)
movq 0x58(%rsp), %rax
movss 0x4(%rax), %xmm1
movss 0x38(%rsp), %xmm0
movss 0x40(%rsp), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0x30(%rsp)
movq 0x58(%rsp), %rax
movss 0x8(%rax), %xmm1
movss 0x38(%rsp), %xmm0
movss 0x44(%rsp), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0x34(%rsp)
movl $0x0, 0x150(%rsp)
movl 0x150(%rsp), %eax
movq 0x160(%rsp), %rcx
cmpl $0x0, 0xa8(%rsp)
setne %dl
xorb $-0x1, %dl
andb $0x1, %dl
movzbl %dl, %edx
movq (%rcx,%rdx,8), %rcx
cmpl 0x4(%rcx), %eax
jge 0x13779
movss 0x2c(%rsp), %xmm1
movq 0x90(%rsp), %rax
movslq 0x150(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movss (%rax), %xmm2
movss 0x30(%rsp), %xmm0
movq 0x90(%rsp), %rax
movslq 0x150(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
mulss 0x4(%rax), %xmm0
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x34(%rsp), %xmm0
movq 0x90(%rsp), %rax
movslq 0x150(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movss 0x8(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq 0x88(%rsp), %rax
movslq 0x150(%rsp), %rcx
subss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x8edf(%rip), %xmm1     # 0x1c638
ucomisd %xmm1, %xmm0
jb 0x13761
jmp 0x13779
jmp 0x13763
movl 0x150(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x150(%rsp)
jmp 0x13693
movl 0x150(%rsp), %eax
movq 0x160(%rsp), %rcx
cmpl $0x0, 0xa8(%rsp)
setne %dl
xorb $-0x1, %dl
andb $0x1, %dl
movzbl %dl, %edx
movq (%rcx,%rdx,8), %rcx
cmpl 0x4(%rcx), %eax
jge 0x137a7
jmp 0x137b5
xorps %xmm0, %xmm0
movss %xmm0, 0x15c(%rsp)
jmp 0x137b5
movl 0x154(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x154(%rsp)
jmp 0x133fe
movq 0x90(%rsp), %rdi
callq 0x32b0
movq 0x88(%rsp), %rdi
callq 0x32b0
movl 0xa8(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xa8(%rsp)
jmp 0x12cf2
movss 0x15c(%rsp), %xmm0
callq 0x7c40
addq $0x168, %rsp            # imm = 0x168
retq
nopw %cs:(%rax,%rax)