// File: /workspace/github_c_makefile_star2_O1/jonof[P]jftekwar/jfbuild/src/polymost.c
// Function: polymost_drawsprite
void polymost_drawsprite (int snum)
{
	double px[6], py[6];
	float f, c, s, fx, fy, sx0, sy0, sx1, xp0, yp0, xp1, yp1, oxp0, oyp0, ryp0, ryp1, ft[4];
	float x0, y0, x1, y1, sc0, sf0, sc1, sf1, px2[6], py2[6], xv, yv, t0, t1;
	int i, j, spritenum, xoff=0, yoff=0, method, npoints;
	spritetype *tspr;

#ifdef DEBUGGINGAIDS
	polymostcallcounts.drawsprite++;
#endif

	tspr = tspriteptr[snum];
	if (tspr->owner < 0 || tspr->picnum < 0) return;

	globalpicnum      = tspr->picnum;
	globalshade       = tspr->shade;
	globalpal         = tspr->pal;
	globalorientation = tspr->cstat;
	spritenum         = tspr->owner;

	if ((globalorientation&48) != 48) {	// only non-voxel sprites should do this
		if (picanm[globalpicnum]&192) globalpicnum += animateoffs(globalpicnum,spritenum+32768);

		xoff = (int)((signed char)((picanm[globalpicnum]>>8)&255))+((int)tspr->xoffset);
		yoff = (int)((signed char)((picanm[globalpicnum]>>16)&255))+((int)tspr->yoffset);
	}

	method = METH_MASKED;
	if (tspr->cstat&2) { if (!(tspr->cstat&512)) method = METH_TRANS; else method = METH_INTRANS; }
	method |= METH_CLAMPED | METH_LAYERS;

#if USE_OPENGL
	gfogpalnum = sector[tspr->sectnum].floorpal;
	gfogdensity = gvisibility*((float)((unsigned char)(sector[tspr->sectnum].visibility+16)) / 255.f);

	while (rendmode == 3 && !(spriteext[tspr->owner].flags&SPREXT_NOTMD)) {
		if (usemodels && tile2model[tspr->picnum].modelid >= 0 && tile2model[tspr->picnum].framenum >= 0) {
			if (mddraw(tspr, 0)) {
				if (automapping == 1) show2dsprite[spritenum>>3] |= pow2char[spritenum&7];
				return;
			}
			break;	// else, render as flat sprite
		}
		if (usevoxels && (tspr->cstat&48)!=48 && tiletovox[tspr->picnum] >= 0 && voxmodels[ tiletovox[tspr->picnum] ]) {
			if (voxdraw(voxmodels[ tiletovox[tspr->picnum] ], tspr, 0)) {
				if (automapping == 1) show2dsprite[spritenum>>3] |= pow2char[spritenum&7];
				return;
			}
			break;	// else, render as flat sprite
		}
		if ((tspr->cstat&48)==48 && voxmodels[ tspr->picnum ]) {
			voxdraw(voxmodels[ tspr->picnum ], tspr, 0);
			if (automapping == 1) show2dsprite[spritenum>>3] |= pow2char[spritenum&7];
			return;
		}
		break;
	}
#endif

	switch((globalorientation>>4)&3)
	{
		case 0: //Face sprite

				//Project 3D to 2D
			sx0 = (float)(tspr->x-globalposx);
			sy0 = (float)(tspr->y-globalposy);
			xp0 = sy0*gcosang  - sx0*gsinang;
			yp0 = sx0*gcosang2 + sy0*gsinang2;
			if (yp0 <= SCISDIST) return;
			ryp0 = 1/yp0;
			sx0 = ghalfx*xp0*ryp0 + ghalfx;
			sy0 = ((float)(tspr->z-globalposz))*gyxscale*ryp0 + ghoriz;

			f = ryp0*(float)xdimen/160.0;
			fx = ((float)tspr->xrepeat)*f;
			fy = ((float)tspr->yrepeat)*f*((float)yxaspect/65536.0);
			sx0 -= fx*(float)xoff; if (tilesizx[globalpicnum]&1) sx0 += fx*.5;
			sy0 -= fy*(float)yoff;
			fx *= ((float)tilesizx[globalpicnum]);
			fy *= ((float)tilesizy[globalpicnum]);

			px[0] = px[3] = sx0-fx*.5; px[1] = px[2] = sx0+fx*.5;
			if (!(globalorientation&128)) { py[0] = py[1] = sy0-fy; py[2] = py[3] = sy0; }
											 else { py[0] = py[1] = sy0-fy*.5; py[2] = py[3] = sy0+fy*.5; }

			gdx = gdy = guy = gvx = 0; gdo = ryp0*gviewxrange;
			if (!(globalorientation&4))
				  { gux = (float)tilesizx[globalpicnum]*gdo/(px[1]-px[0]+.002); guo = -gux*(px[0]-.001); }
			else { gux = (float)tilesizx[globalpicnum]*gdo/(px[0]-px[1]-.002); guo = -gux*(px[1]+.001); }
			if (!(globalorientation&8))
				  { gvy = (float)tilesizy[globalpicnum]*gdo/(py[3]-py[0]+.002); gvo = -gvy*(py[0]-.001); }
			else { gvy = (float)tilesizy[globalpicnum]*gdo/(py[0]-py[3]-.002); gvo = -gvy*(py[3]+.001); }

			//Clip sprites to ceilings/floors when no parallaxing and not sloped
			if (!(sector[tspr->sectnum].ceilingstat&3))
			{
				sy0 = ((float)(sector[tspr->sectnum].ceilingz-globalposz))*gyxscale*ryp0 + ghoriz;
				if (py[0] < sy0) py[0] = py[1] = sy0;
			}
			if (!(sector[tspr->sectnum].floorstat&3))
			{
				sy0 = ((float)(sector[tspr->sectnum].floorz-globalposz))*gyxscale*ryp0 + ghoriz;
				if (py[2] > sy0) py[2] = py[3] = sy0;
			}

			drawpoly(px,py,4,method);
			break;
		case 1: //Wall sprite

				//Project 3D to 2D
			if (globalorientation&4) xoff = -xoff;
			if (globalorientation&8) yoff = -yoff;

			xv = (float)tspr->xrepeat * (float)sintable[(tspr->ang     )&2047] / 65536.0;
			yv = (float)tspr->xrepeat * (float)sintable[(tspr->ang+1536)&2047] / 65536.0;
			f = (float)(tilesizx[globalpicnum]>>1) + (float)xoff;
			x0 = (float)(tspr->x-globalposx) - xv*f; x1 = xv*(float)tilesizx[globalpicnum] + x0;
			y0 = (float)(tspr->y-globalposy) - yv*f; y1 = yv*(float)tilesizx[globalpicnum] + y0;

			yp0 = x0*gcosang2 + y0*gsinang2;
			yp1 = x1*gcosang2 + y1*gsinang2;
			if ((yp0 <= SCISDIST) && (yp1 <= SCISDIST)) return;
			xp0 = y0*gcosang - x0*gsinang;
			xp1 = y1*gcosang - x1*gsinang;

				//Clip to close parallel-screen plane
			oxp0 = xp0; oyp0 = yp0;
			if (yp0 < SCISDIST) { t0 = (SCISDIST-yp0)/(yp1-yp0); xp0 = (xp1-xp0)*t0+xp0; yp0 = SCISDIST; }
								else { t0 = 0.f; }
			if (yp1 < SCISDIST) { t1 = (SCISDIST-oyp0)/(yp1-oyp0); xp1 = (xp1-oxp0)*t1+oxp0; yp1 = SCISDIST; }
								else { t1 = 1.f; }

			f = ((float)tspr->yrepeat) * (float)tilesizy[globalpicnum] * 4;

			ryp0 = 1.0/yp0;
			ryp1 = 1.0/yp1;
			sx0 = ghalfx*xp0*ryp0 + ghalfx;
			sx1 = ghalfx*xp1*ryp1 + ghalfx;
			ryp0 *= gyxscale;
			ryp1 *= gyxscale;

			tspr->z -= ((yoff*tspr->yrepeat)<<2);
			if (globalorientation&128)
			{
				tspr->z += ((tilesizy[globalpicnum]*tspr->yrepeat)<<1);
				if (tilesizy[globalpicnum]&1) tspr->z += (tspr->yrepeat<<1); //Odd yspans
			}

			sc0 = ((float)(tspr->z-globalposz-f))*ryp0 + ghoriz;
			sc1 = ((float)(tspr->z-globalposz-f))*ryp1 + ghoriz;
			sf0 = ((float)(tspr->z-globalposz))*ryp0 + ghoriz;
			sf1 = ((float)(tspr->z-globalposz))*ryp1 + ghoriz;

			gdx = (ryp0-ryp1)*gxyaspect / (sx0-sx1);
			gdy = 0;
			gdo = ryp0*gxyaspect - gdx*sx0;

				//Original equations:
				//(gux*sx0 + guo)/(gdx*sx1 + gdo) = tilesizx[globalpicnum]*t0
				//(gux*sx1 + guo)/(gdx*sx1 + gdo) = tilesizx[globalpicnum]*t1
				//
				// gvx*sx0 + gvy*sc0 + gvo = 0
				// gvy*sx1 + gvy*sc1 + gvo = 0
				//(gvx*sx0 + gvy*sf0 + gvo)/(gdx*sx0 + gdo) = tilesizy[globalpicnum]
				//(gvx*sx1 + gvy*sf1 + gvo)/(gdx*sx1 + gdo) = tilesizy[globalpicnum]

				//gux*sx0 + guo = t0*tilesizx[globalpicnum]*yp0
				//gux*sx1 + guo = t1*tilesizx[globalpicnum]*yp1
			if (globalorientation&4) { t0 = 1.f-t0; t1 = 1.f-t1; }
			gux = (t0*ryp0 - t1*ryp1)*gxyaspect*(float)tilesizx[globalpicnum] / (sx0-sx1);
			guy = 0;
			guo = t0*ryp0*gxyaspect*(float)tilesizx[globalpicnum] - gux*sx0;

				//gvx*sx0 + gvy*sc0 + gvo = 0
				//gvx*sx1 + gvy*sc1 + gvo = 0
				//gvx*sx0 + gvy*sf0 + gvo = tilesizy[globalpicnum]*(gdx*sx0 + gdo)
			f = ((float)tilesizy[globalpicnum])*(gdx*sx0 + gdo) / ((sx0-sx1)*(sc0-sf0));
			if (!(globalorientation&8))
			{
				gvx = (sc0-sc1)*f;
				gvy = (sx1-sx0)*f;
				gvo = -gvx*sx0 - gvy*sc0;
			}
			else
			{
				gvx = (sf1-sf0)*f;
				gvy = (sx0-sx1)*f;
				gvo = -gvx*sx0 - gvy*sf0;
			}

			//Clip sprites to ceilings/floors when no parallaxing
			if (!(sector[tspr->sectnum].ceilingstat&1))
			{
				f = ((float)tspr->yrepeat) * (float)tilesizy[globalpicnum] * 4;
				if (sector[tspr->sectnum].ceilingz > tspr->z-f)
				{
					sc0 = ((float)(sector[tspr->sectnum].ceilingz-globalposz))*ryp0 + ghoriz;
					sc1 = ((float)(sector[tspr->sectnum].ceilingz-globalposz))*ryp1 + ghoriz;
				}
			}
			if (!(sector[tspr->sectnum].floorstat&1))
			{
				if (sector[tspr->sectnum].floorz < tspr->z)
				{
					sf0 = ((float)(sector[tspr->sectnum].floorz-globalposz))*ryp0 + ghoriz;
					sf1 = ((float)(sector[tspr->sectnum].floorz-globalposz))*ryp1 + ghoriz;
				}
			}

			if (sx0 > sx1)
			{
				if (globalorientation&64) return; //1-sided sprite
				f = sx0; sx0 = sx1; sx1 = f;
				f = sc0; sc0 = sc1; sc1 = f;
				f = sf0; sf0 = sf1; sf1 = f;
			}

			px[0] = sx0; py[0] = sc0;
			px[1] = sx1; py[1] = sc1;
			px[2] = sx1; py[2] = sf1;
			px[3] = sx0; py[3] = sf0;
			drawpoly(px,py,4,method);
			break;
		case 2: //Floor sprite

			if ((globalorientation&64) != 0)
				if ((globalposz > tspr->z) == (!(globalorientation&8)))
					return;
			if ((globalorientation&4) > 0) xoff = -xoff;
			if ((globalorientation&8) > 0) yoff = -yoff;

			i = (tspr->ang&2047);
			c = sintable[(i+512)&2047]/65536.0;
			s = sintable[i]/65536.0;
			x0 = ((tilesizx[globalpicnum]>>1)-xoff)*tspr->xrepeat;
			y0 = ((tilesizy[globalpicnum]>>1)-yoff)*tspr->yrepeat;
			x1 = ((tilesizx[globalpicnum]>>1)+xoff)*tspr->xrepeat;
			y1 = ((tilesizy[globalpicnum]>>1)+yoff)*tspr->yrepeat;

				//Project 3D to 2D
			for(j=0;j<4;j++)
			{
				sx0 = (float)(tspr->x-globalposx);
				sy0 = (float)(tspr->y-globalposy);
				if ((j+0)&2) { sy0 -= s*y0; sx0 -= c*y0; } else { sy0 += s*y1; sx0 += c*y1; }
				if ((j+1)&2) { sx0 -= s*x0; sy0 += c*x0; } else { sx0 += s*x1; sy0 -= c*x1; }
				px[j] = sy0*gcosang  - sx0*gsinang;
				py[j] = sx0*gcosang2 + sy0*gsinang2;
			}

			if (tspr->z < globalposz) //if floor sprite is above you, reverse order of points
			{
				f = px[0]; px[0] = px[1]; px[1] = f;
				f = py[0]; py[0] = py[1]; py[1] = f;
				f = px[2]; px[2] = px[3]; px[3] = f;
				f = py[2]; py[2] = py[3]; py[3] = f;
			}

				//Clip to SCISDIST plane
			npoints = 0;
			for(i=0;i<4;i++)
			{
				j = ((i+1)&3);
				if (py[i] >= SCISDIST) { px2[npoints] = px[i]; py2[npoints] = py[i]; npoints++; }
				if ((py[i] >= SCISDIST) != (py[j] >= SCISDIST))
				{
					f = (SCISDIST-py[i])/(py[j]-py[i]);
					px2[npoints] = (px[j]-px[i])*f + px[i];
					py2[npoints] = (py[j]-py[i])*f + py[i]; npoints++;
				}
			}
			if (npoints < 3) return;

				//Project rotated 3D points to screen
			f = ((float)(tspr->z-globalposz))*gyxscale;
			for(j=0;j<npoints;j++)
			{
				ryp0 = 1/py2[j];
				px[j] = ghalfx*px2[j]*ryp0 + ghalfx;
				py[j] = f*ryp0 + ghoriz;
			}

				//gd? Copied from floor rendering code
			gdx = 0;
			gdy = gxyaspect / (double)(tspr->z-globalposz);
			gdo = -ghoriz*gdy;
				//copied&modified from relative alignment
			xv = (float)tspr->x + s*x1 + c*y1; fx = (double)-(x0+x1)*s;
			yv = (float)tspr->y + s*y1 - c*x1; fy = (double)+(x0+x1)*c;
			f = 1.0/sqrt(fx*fx+fy*fy); fx *= f; fy *= f;
			ft[2] = singlobalang*fy + cosglobalang*fx;
			ft[3] = singlobalang*fx - cosglobalang*fy;
			ft[0] = ((double)(globalposy-yv))*fy + ((double)(globalposx-xv))*fx;
			ft[1] = ((double)(globalposx-xv))*fy - ((double)(globalposy-yv))*fx;
			gux = (double)ft[3]*((double)viewingrange)/(-65536.0*262144.0);
			gvx = (double)ft[2]*((double)viewingrange)/(-65536.0*262144.0);
			guy = (double)ft[0]*gdy; gvy = (double)ft[1]*gdy;
			guo = (double)ft[0]*gdo; gvo = (double)ft[1]*gdo;
			guo += (double)(ft[2]/262144.0-gux)*ghalfx;
			gvo -= (double)(ft[3]/262144.0+gvx)*ghalfx;
			f = 4.0/(float)tspr->xrepeat; gux *= f; guy *= f; guo *= f;
			f =-4.0/(float)tspr->yrepeat; gvx *= f; gvy *= f; gvo *= f;
			if (globalorientation&4)
			{
				gux = ((float)tilesizx[globalpicnum])*gdx - gux;
				guy = ((float)tilesizx[globalpicnum])*gdy - guy;
				guo = ((float)tilesizx[globalpicnum])*gdo - guo;
			}

			drawpoly(px,py,npoints,method);
			break;

		case 3: //Voxel sprite
		    break;
	}
	if (automapping == 1) show2dsprite[spritenum>>3] |= pow2char[spritenum&7];
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xd8, %rsp
movslq %edi, %rax
leaq 0x39e4d8(%rip), %rcx    # 0x3f67d0
movq (%rcx,%rax,8), %r14
movswl 0x1e(%r14), %ebp
testl %ebp, %ebp
js 0x597d0
movswq 0xe(%r14), %rax
testq %rax, %rax
js 0x597d0
leaq 0x3b6cf2(%rip), %r10    # 0x40f010
movw %ax, (%r10)
movsbl 0x10(%r14), %ecx
leaq 0x3bb4fe(%rip), %rdx    # 0x41382c
movl %ecx, (%rdx)
movzbl 0x11(%r14), %ecx
leaq 0x3b6cc8(%rip), %rdx    # 0x40f004
movl %ecx, (%rdx)
movswl 0xc(%r14), %ecx
leaq 0x3b6cb6(%rip), %r8     # 0x40f000
movl %ecx, (%r8)
notl %ecx
xorl %r13d, %r13d
movl $0x0, %r12d
movl $0x0, %r15d
testb $0x30, %cl
je 0x583b8
leaq 0x1e16f6(%rip), %rbx    # 0x239a60
testb $-0x40, (%rbx,%rax,4)
je 0x58393
movl %ebp, %ecx
orl $0x8000, %ecx           # imm = 0x8000
movswl %ax, %edi
movswl %cx, %esi
movq %r10, %r15
movq %r8, %r12
callq 0x23d49
movq %r12, %r8
movq %r15, %r10
addw %ax, (%r15)
movswq (%r10), %rax
movl (%rbx,%rax,4), %eax
movl %eax, %ecx
shrl $0x8, %ecx
movsbl %cl, %ecx
movsbl 0x16(%r14), %r12d
addl %ecx, %r12d
shrl $0x10, %eax
movsbl %al, %eax
movsbl 0x17(%r14), %r15d
addl %eax, %r15d
movzwl 0xc(%r14), %eax
btl $0x9, %eax
adcl $0xe, %r13d
testb $0x2, %al
movl $0xd, %ebx
cmovnel %r13d, %ebx
movswq 0x18(%r14), %rcx
leaq (%rcx,%rcx,4), %rcx
leaq 0x1ea680(%rip), %r11    # 0x242a60
movb 0x20(%r11,%rcx,8), %dl
addb $0x10, %dl
movzbl %dl, %edx
cvtsi2ss %edx, %xmm0
movzbl 0x1d(%r11,%rcx,8), %ecx
divss 0x20eb7(%rip), %xmm0    # 0x792b4
cvtss2sd %xmm0, %xmm0
mulsd 0x5a57c7(%rip), %xmm0   # 0x5fdbd0
cvtsd2ss %xmm0, %xmm0
movl %ecx, 0x5a1565(%rip)    # 0x5f9978
movss %xmm0, 0x5a1561(%rip)   # 0x5f997c
cmpl $0x3, 0x5a152e(%rip)    # 0x5f9950
jne 0x58517
movswq 0x1e(%r14), %rcx
leaq (%rcx,%rcx,2), %rcx
leaq 0x2d3878(%rip), %rdx    # 0x32bcb0
testb $0x1, 0x8(%rdx,%rcx,4)
jne 0x58517
cmpl $0x0, 0x4c0c6(%rip)     # 0xa4510
je 0x58482
movswq 0xe(%r14), %rcx
leaq (%rcx,%rcx,2), %rcx
leaq 0x5efbf4(%rip), %rdx    # 0x648050
cmpl $0x0, (%rdx,%rcx,4)
js 0x58482
leaq (%rdx,%rcx,4), %rcx
cmpl $0x0, 0x8(%rcx)
js 0x58482
movq %r14, %rdi
xorl %esi, %esi
movq %r10, %r13
movl %ebp, 0x40(%rsp)
movq %r8, %rbp
callq 0x61a37
jmp 0x584d2
leaq 0x4b2f7(%rip), %rcx     # 0xa3780
cmpl $0x0, (%rcx)
je 0x584ed
movl %eax, %ecx
andl $0x30, %ecx
cmpw $0x30, %cx
je 0x584ed
movswq 0xe(%r14), %rcx
leaq 0x33262b(%rip), %rdx    # 0x38aad0
movslq (%rdx,%rcx,4), %rcx
testq %rcx, %rcx
js 0x584ed
leaq 0x60abbb(%rip), %rdx    # 0x663070
movq (%rdx,%rcx,8), %rdi
testq %rdi, %rdi
je 0x584ed
movq %r14, %rsi
xorl %edx, %edx
movq %r10, %r13
movl %ebp, 0x40(%rsp)
movq %r8, %rbp
callq 0x60c90
movq %rbp, %r8
movl 0x40(%rsp), %ebp
leaq 0x1ea580(%rip), %r11    # 0x242a60
movq %r13, %r10
testl %eax, %eax
jne 0x597a5
jmp 0x58517
notl %eax
testb $0x30, %al
jne 0x58517
movswq 0xe(%r14), %rax
leaq 0x60ab71(%rip), %rcx    # 0x663070
movq (%rcx,%rax,8), %rdi
testq %rdi, %rdi
je 0x58517
movq %r14, %rsi
xorl %edx, %edx
callq 0x60c90
jmp 0x597a5
movl (%r8), %eax
movl %eax, %ecx
shrl $0x4, %ecx
andl $0x3, %ecx
leaq 0x20fd7(%rip), %rdx     # 0x79500
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
leaq 0x1e1517(%rip), %rcx    # 0x239a50
movl (%r14), %edx
subl (%rcx), %edx
cvtsi2ss %edx, %xmm1
movl 0x4(%r14), %ecx
leaq 0x1e1507(%rip), %rdx    # 0x239a54
subl (%rdx), %ecx
xorps %xmm0, %xmm0
cvtsi2ss %ecx, %xmm0
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm1, %xmm1
movsd 0x5a1452(%rip), %xmm2   # 0x5f99b8
mulsd %xmm0, %xmm2
movsd 0x5a1436(%rip), %xmm3   # 0x5f99a8
mulsd %xmm1, %xmm3
addsd %xmm2, %xmm3
xorps %xmm2, %xmm2
cvtsd2ss %xmm3, %xmm2
movss 0x1da0b(%rip), %xmm5    # 0x75f94
ucomiss %xmm2, %xmm5
jae 0x597d0
mulsd 0x5a1426(%rip), %xmm1   # 0x5f99c0
mulsd 0x5a140e(%rip), %xmm0   # 0x5f99b0
subsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
divss %xmm2, %xmm5
movsd 0x5a157a(%rip), %xmm1   # 0x5f9b30
xorps %xmm2, %xmm2
cvtss2sd %xmm0, %xmm2
mulsd %xmm1, %xmm2
xorps %xmm0, %xmm0
cvtss2sd %xmm5, %xmm0
mulsd %xmm0, %xmm2
addsd %xmm1, %xmm2
cvtsd2ss %xmm2, %xmm4
movl 0x8(%r14), %edx
leaq 0x212481(%rip), %rcx    # 0x26aa60
movl (%rcx), %ecx
subl %ecx, %edx
xorps %xmm1, %xmm1
cvtsi2ss %edx, %xmm1
xorps %xmm3, %xmm3
cvtss2sd %xmm1, %xmm3
movsd 0x5a55bf(%rip), %xmm1   # 0x5fdbb8
mulsd %xmm1, %xmm3
movsd 0x5a1533(%rip), %xmm2   # 0x5f9b38
mulsd %xmm0, %xmm3
addsd %xmm2, %xmm3
cvtsd2ss %xmm3, %xmm3
leaq 0x4b218(%rip), %rdx     # 0xa3830
cvtsi2ssl (%rdx), %xmm6
mulss %xmm5, %xmm6
movzbl 0x14(%r14), %edx
xorps %xmm5, %xmm5
cvtsi2ss %edx, %xmm5
divss 0x20cac(%rip), %xmm6    # 0x792e0
mulss %xmm6, %xmm5
movzbl 0x15(%r14), %edx
cvtsi2ss %edx, %xmm7
mulss %xmm6, %xmm7
leaq 0x3ae99c(%rip), %rdx    # 0x406fe8
xorps %xmm6, %xmm6
cvtsi2ssl (%rdx), %xmm6
cvtss2sd %xmm7, %xmm7
cvtss2sd %xmm6, %xmm6
mulsd 0x1b935(%rip), %xmm6    # 0x73f98
mulsd %xmm7, %xmm6
xorps %xmm7, %xmm7
cvtsi2ss %r12d, %xmm7
cvtsd2ss %xmm6, %xmm6
mulss %xmm5, %xmm7
subss %xmm7, %xmm4
movswq (%r10), %rdx
leaq 0x3b699a(%rip), %rsi    # 0x40f020
movzwl (%rsi,%rdx,2), %esi
testb $0x1, %sil
je 0x586ae
xorps %xmm7, %xmm7
cvtss2sd %xmm5, %xmm7
mulsd 0x20c59(%rip), %xmm7    # 0x792f8
cvtss2sd %xmm4, %xmm4
addsd %xmm4, %xmm7
xorps %xmm4, %xmm4
cvtsd2ss %xmm7, %xmm4
xorps %xmm7, %xmm7
cvtsi2ss %r15d, %xmm7
mulss %xmm6, %xmm7
movswl %si, %esi
cvtsi2ss %esi, %xmm8
subss %xmm7, %xmm3
mulss %xmm8, %xmm5
leaq 0x3a810e(%rip), %rdi    # 0x4007e0
movswl (%rdi,%rdx,2), %edx
xorps %xmm7, %xmm7
cvtsi2ss %edx, %xmm7
mulss %xmm6, %xmm7
xorps %xmm6, %xmm6
cvtss2sd %xmm4, %xmm6
cvtss2sd %xmm5, %xmm5
mulsd 0x20c04(%rip), %xmm5    # 0x792f8
movaps %xmm6, %xmm4
subsd %xmm5, %xmm4
movsd %xmm4, 0x68(%rsp)
movsd %xmm4, 0x50(%rsp)
addsd %xmm6, %xmm5
movsd %xmm5, 0x60(%rsp)
movsd %xmm5, 0x58(%rsp)
testb %al, %al
js 0x592cc
xorps %xmm6, %xmm6
cvtss2sd %xmm3, %xmm6
subss %xmm7, %xmm3
cvtss2sd %xmm3, %xmm3
movsd %xmm3, 0x18(%rsp)
movsd %xmm3, 0x10(%rsp)
jmp 0x592f6
movl %r12d, %edi
negl %edi
testb $0x4, %al
cmovel %r12d, %edi
movl %r15d, %esi
negl %esi
testb $0x8, %al
cmovnel %r15d, %esi
movzbl 0x14(%r14), %ecx
cvtsi2ss %ecx, %xmm1
movzwl 0x1c(%r14), %ecx
movl $0x7ff, %edx            # imm = 0x7FF
movl %ecx, %r8d
andl %edx, %r8d
leaq 0x3755db(%rip), %r9     # 0x3cdd50
movswl (%r9,%r8,2), %r8d
xorps %xmm0, %xmm0
cvtsi2ss %r8d, %xmm0
mulss %xmm1, %xmm0
addl $0x600, %ecx            # imm = 0x600
andl %edx, %ecx
movswl (%r9,%rcx,2), %ecx
cvtsi2ss %ecx, %xmm2
movss 0x20b35(%rip), %xmm3    # 0x792d4
movswq (%r10), %rcx
leaq 0x3b6876(%rip), %rdx    # 0x40f020
movswl (%rdx,%rcx,2), %r8d
cvtsi2ss %r8d, %xmm4
sarl %r8d
cvtsi2ss %r8d, %xmm5
mulss %xmm3, %xmm0
cvtsi2ss %edi, %xmm6
mulss %xmm1, %xmm2
mulss %xmm3, %xmm2
addss %xmm5, %xmm6
leaq 0x1e1279(%rip), %rdi    # 0x239a50
movl (%r14), %r8d
movl 0x4(%r14), %r9d
subl (%rdi), %r8d
xorps %xmm1, %xmm1
cvtsi2ss %r8d, %xmm1
movaps %xmm0, %xmm3
mulss %xmm6, %xmm3
leaq 0x1e125d(%rip), %rdi    # 0x239a54
subl (%rdi), %r9d
subss %xmm3, %xmm1
xorps %xmm3, %xmm3
cvtsi2ss %r9d, %xmm3
mulss %xmm4, %xmm0
addss %xmm1, %xmm0
mulss %xmm2, %xmm6
subss %xmm6, %xmm3
mulss %xmm4, %xmm2
xorps %xmm5, %xmm5
cvtss2sd %xmm1, %xmm5
movsd 0x5a117f(%rip), %xmm4   # 0x5f99a8
xorps %xmm6, %xmm6
cvtss2sd %xmm3, %xmm6
movsd 0x5a1180(%rip), %xmm7   # 0x5f99b8
movapd %xmm7, %xmm1
mulsd %xmm6, %xmm1
movaps %xmm5, %xmm8
mulsd %xmm4, %xmm8
addsd %xmm1, %xmm8
xorps %xmm1, %xmm1
cvtsd2ss %xmm8, %xmm1
addss %xmm3, %xmm2
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm2, %xmm2
mulsd %xmm2, %xmm7
mulsd %xmm0, %xmm4
addsd %xmm7, %xmm4
xorps %xmm3, %xmm3
cvtsd2ss %xmm4, %xmm3
movss 0x1d717(%rip), %xmm4    # 0x75f94
ucomiss %xmm1, %xmm4
jb 0x5888b
ucomiss %xmm3, %xmm4
jae 0x597d0
xorps %xmm8, %xmm8
cvtss2sd %xmm1, %xmm8
movsd 0x5a1114(%rip), %xmm7   # 0x5f99b0
movsd 0x5a111b(%rip), %xmm9   # 0x5f99c0
mulsd %xmm9, %xmm5
mulsd %xmm7, %xmm6
subsd %xmm5, %xmm6
cvtsd2ss %xmm6, %xmm6
mulsd %xmm9, %xmm0
mulsd %xmm7, %xmm2
subsd %xmm0, %xmm2
xorps %xmm0, %xmm0
cvtsd2ss %xmm2, %xmm0
xorpd %xmm5, %xmm5
ucomiss %xmm1, %xmm4
movaps %xmm8, %xmm2
movaps %xmm6, %xmm7
jbe 0x5890d
movsd 0x1c1f6(%rip), %xmm2    # 0x74ad8
movapd %xmm2, %xmm5
subsd %xmm8, %xmm5
movaps %xmm3, %xmm7
subss %xmm1, %xmm7
cvtss2sd %xmm7, %xmm7
divsd %xmm7, %xmm5
cvtsd2ss %xmm5, %xmm5
movaps %xmm0, %xmm7
subss %xmm6, %xmm7
mulss %xmm5, %xmm7
addss %xmm6, %xmm7
ucomiss %xmm3, %xmm4
jbe 0x58e6f
movsd 0x1c1b9(%rip), %xmm9    # 0x74ad8
movapd %xmm9, %xmm4
subsd %xmm8, %xmm4
subss %xmm1, %xmm3
xorps %xmm1, %xmm1
cvtss2sd %xmm3, %xmm1
divsd %xmm1, %xmm4
cvtsd2ss %xmm4, %xmm4
subss %xmm6, %xmm0
mulss %xmm4, %xmm0
addss %xmm6, %xmm0
jmp 0x58e78
testb $0x40, %al
je 0x5896e
leaq 0x212108(%rip), %rcx    # 0x26aa60
movl (%rcx), %ecx
cmpl 0x8(%r14), %ecx
setg %cl
testb $0x8, %al
sete %dl
cmpb %cl, %dl
je 0x597d0
movl %r12d, %ecx
negl %ecx
testb $0x4, %al
cmovel %r12d, %ecx
movl %r15d, %edx
negl %edx
testb $0x8, %al
cmovel %r15d, %edx
movzwl 0x1c(%r14), %eax
movl $0x7ff, %esi            # imm = 0x7FF
movl %eax, %edi
addl $0x200, %eax            # imm = 0x200
andl %esi, %eax
leaq 0x3753b2(%rip), %r8     # 0x3cdd50
movswl (%r8,%rax,2), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movsd 0x1b5e6(%rip), %xmm1    # 0x73f98
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm13
andl %esi, %edi
movswl (%r8,%rdi,2), %eax
cvtsi2sd %eax, %xmm2
movswq (%r10), %rax
leaq 0x3b664f(%rip), %r13    # 0x40f020
movswl (%r13,%rax,2), %esi
sarl %esi
movl %esi, %edi
subl %ecx, %edi
movzbl 0x14(%r14), %r8d
imull %r8d, %edi
cvtsi2ss %edi, %xmm8
mulsd %xmm1, %xmm2
leaq 0x3a7dea(%rip), %rdi    # 0x4007e0
movswl (%rdi,%rax,2), %eax
sarl %eax
movl %eax, %edi
subl %edx, %edi
movzbl 0x15(%r14), %r9d
imull %r9d, %edi
cvtsi2ss %edi, %xmm12
cvtsd2ss %xmm2, %xmm2
addl %ecx, %esi
imull %r8d, %esi
cvtsi2ss %esi, %xmm14
addl %edx, %eax
imull %r9d, %eax
xorps %xmm1, %xmm1
cvtsi2ss %eax, %xmm1
leaq 0x1e101f(%rip), %r8     # 0x239a50
movl (%r14), %eax
subl (%r8), %eax
cvtsi2ss %eax, %xmm3
movl 0x4(%r14), %eax
leaq 0x1e100e(%rip), %r9     # 0x239a54
subl (%r9), %eax
cvtsi2ss %eax, %xmm4
movsd 0x5a0f5b(%rip), %xmm5   # 0x5f99b0
movsd 0x5a0f63(%rip), %xmm6   # 0x5f99c0
xorpd 0x1e2db(%rip), %xmm6    # 0x76d40
movsd 0x5a0f3b(%rip), %xmm7   # 0x5f99a8
movsd 0x5a0f43(%rip), %xmm0   # 0x5f99b8
movaps 0x1f9f3(%rip), %xmm9    # 0x78470
movaps %xmm2, %xmm11
mulss %xmm12, %xmm11
mulss %xmm13, %xmm12
movaps %xmm2, %xmm10
mulss %xmm1, %xmm10
movaps %xmm10, 0x90(%rsp)
addss %xmm4, %xmm10
subss %xmm11, %xmm4
mulss %xmm13, %xmm1
movss %xmm1, 0xc(%rsp)
movaps %xmm1, %xmm11
addss %xmm3, %xmm11
subss %xmm12, %xmm3
movaps %xmm2, 0x80(%rsp)
movaps %xmm2, %xmm12
xorps %xmm9, %xmm12
movaps %xmm13, 0x40(%rsp)
xorps %xmm13, %xmm9
xorl %eax, %eax
movaps %xmm14, %xmm2
mulss %xmm14, %xmm9
movaps %xmm8, %xmm1
mulss %xmm8, %xmm12
movaps %xmm10, %xmm14
movaps %xmm11, %xmm13
cmpq $0x2, %rax
jb 0x58b04
movaps %xmm4, %xmm14
movaps %xmm3, %xmm13
leaq 0x1(%rax), %rcx
testb $0x2, %cl
jne 0x58b2b
movaps 0x80(%rsp), %xmm15
mulss %xmm2, %xmm15
addss %xmm15, %xmm13
addss %xmm9, %xmm14
movaps %xmm14, %xmm15
jmp 0x58b40
addss %xmm12, %xmm13
movaps 0x40(%rsp), %xmm15
mulss %xmm1, %xmm15
addss %xmm14, %xmm15
xorps %xmm14, %xmm14
cvtss2sd %xmm15, %xmm14
cvtss2sd %xmm13, %xmm13
movaps %xmm13, %xmm15
mulsd %xmm6, %xmm15
movapd %xmm0, %xmm8
mulsd %xmm14, %xmm8
mulsd %xmm5, %xmm14
addsd %xmm15, %xmm14
movsd %xmm14, 0x50(%rsp,%rax,8)
mulsd %xmm7, %xmm13
addsd %xmm8, %xmm13
movsd %xmm13, 0x10(%rsp,%rax,8)
movq %rcx, %rax
cmpq $0x4, %rcx
jne 0x58aee
movl 0x8(%r14), %eax
leaq 0x211ec5(%rip), %rcx    # 0x26aa60
subl (%rcx), %eax
jge 0x58c1e
xorps %xmm0, %xmm0
cvtsd2ss 0x50(%rsp), %xmm0
movsd 0x58(%rsp), %xmm3
movsd 0x68(%rsp), %xmm4
movsd %xmm3, 0x50(%rsp)
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x58(%rsp)
xorps %xmm0, %xmm0
cvtsd2ss 0x10(%rsp), %xmm0
movsd 0x18(%rsp), %xmm3
movsd 0x28(%rsp), %xmm5
movsd %xmm3, 0x10(%rsp)
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x18(%rsp)
xorps %xmm0, %xmm0
cvtsd2ss 0x60(%rsp), %xmm0
movsd %xmm4, 0x60(%rsp)
cvtss2sd %xmm0, %xmm0
xorps %xmm3, %xmm3
cvtsd2ss 0x20(%rsp), %xmm3
movsd %xmm0, 0x68(%rsp)
movsd %xmm5, 0x20(%rsp)
xorps %xmm0, %xmm0
cvtss2sd %xmm3, %xmm0
movsd %xmm0, 0x28(%rsp)
xorl %r15d, %r15d
movl $0x1, %ecx
movsd 0x1bea9(%rip), %xmm9    # 0x74ad8
movsd 0x1bea1(%rip), %xmm3    # 0x74ad8
leaq 0x3b63c2(%rip), %rdi    # 0x40f000
movsd 0x8(%rsp,%rcx,8), %xmm4
ucomisd %xmm9, %xmm4
jb 0x58c75
xorps %xmm0, %xmm0
cvtsd2ss 0x48(%rsp,%rcx,8), %xmm0
movslq %r15d, %r15
movss %xmm0, 0xc0(%rsp,%r15,4)
xorps %xmm0, %xmm0
cvtsd2ss %xmm4, %xmm0
movss %xmm0, 0xa0(%rsp,%r15,4)
incl %r15d
movl %ecx, %edx
andl $0x3, %edx
movsd 0x10(%rsp,%rdx,8), %xmm5
movapd %xmm3, %xmm0
cmplepd %xmm4, %xmm0
movapd %xmm3, %xmm6
cmpnlepd %xmm5, %xmm6
xorpd %xmm0, %xmm6
movd %xmm6, %esi
testb $0x1, %sil
jne 0x58cfe
movapd %xmm9, %xmm0
subsd %xmm4, %xmm0
subsd %xmm4, %xmm5
divsd %xmm5, %xmm0
cvtsd2ss %xmm0, %xmm0
movsd 0x50(%rsp,%rdx,8), %xmm6
movsd 0x48(%rsp,%rcx,8), %xmm7
subsd %xmm7, %xmm6
cvtss2sd %xmm0, %xmm0
mulsd %xmm0, %xmm6
addsd %xmm7, %xmm6
cvtsd2ss %xmm6, %xmm6
movslq %r15d, %r15
movss %xmm6, 0xc0(%rsp,%r15,4)
mulsd %xmm0, %xmm5
addsd %xmm4, %xmm5
xorps %xmm0, %xmm0
cvtsd2ss %xmm5, %xmm0
movss %xmm0, 0xa0(%rsp,%r15,4)
incl %r15d
incq %rcx
cmpq $0x5, %rcx
jne 0x58c3e
cmpl $0x3, %r15d
jl 0x597d0
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
cvtss2sd %xmm0, %xmm0
mulsd 0x5a4e90(%rip), %xmm0   # 0x5fdbb8
xorps %xmm3, %xmm3
cvtsd2ss %xmm0, %xmm3
movsd 0x5a0df9(%rip), %xmm4   # 0x5f9b30
movsd 0x5a0df9(%rip), %xmm5   # 0x5f9b38
movl %r15d, %ecx
xorl %edx, %edx
movss 0x1d248(%rip), %xmm6    # 0x75f94
movaps %xmm6, %xmm0
divss 0xa0(%rsp,%rdx,4), %xmm0
xorps %xmm7, %xmm7
cvtss2sd 0xc0(%rsp,%rdx,4), %xmm7
mulsd %xmm4, %xmm7
xorps %xmm8, %xmm8
cvtss2sd %xmm0, %xmm8
mulsd %xmm7, %xmm8
addsd %xmm4, %xmm8
movsd %xmm8, 0x50(%rsp,%rdx,8)
mulss %xmm3, %xmm0
cvtss2sd %xmm0, %xmm0
addsd %xmm5, %xmm0
movsd %xmm0, 0x10(%rsp,%rdx,8)
incq %rdx
cmpq %rdx, %rcx
jne 0x58d4c
movq $0x0, 0x5a0da9(%rip) # 0x5f9b50
movsd 0x5a4e11(%rip), %xmm0   # 0x5fdbc0
xorps %xmm3, %xmm3
cvtsi2sd %eax, %xmm3
divsd %xmm3, %xmm0
movsd %xmm0, 0x5a0d96(%rip)   # 0x5f9b58
movsd 0x5a0d6e(%rip), %xmm3   # 0x5f9b38
xorpd 0x1df6e(%rip), %xmm3    # 0x76d40
mulsd %xmm0, %xmm3
movsd %xmm3, 0x5a0d82(%rip)   # 0x5f9b60
xorps %xmm0, %xmm0
cvtsi2ssl (%r14), %xmm0
movaps 0x80(%rsp), %xmm4
movaps %xmm4, %xmm3
mulss %xmm2, %xmm3
addss %xmm0, %xmm3
movss 0xc(%rsp), %xmm5
addss %xmm3, %xmm5
addss %xmm2, %xmm1
movaps 0x1f662(%rip), %xmm7    # 0x78470
xorps %xmm1, %xmm7
mulss %xmm4, %xmm7
xorps %xmm0, %xmm0
cvtsi2ssl 0x4(%r14), %xmm0
movaps 0x90(%rsp), %xmm6
addss %xmm0, %xmm6
movaps 0x40(%rsp), %xmm0
mulss %xmm0, %xmm2
subss %xmm2, %xmm6
mulss %xmm0, %xmm1
movaps %xmm1, 0x40(%rsp)
movaps %xmm1, %xmm0
mulss %xmm1, %xmm0
movaps %xmm7, %xmm1
mulss %xmm7, %xmm1
addss %xmm0, %xmm1
xorps %xmm0, %xmm0
cvtss2sd %xmm1, %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x594d1
sqrtsd %xmm0, %xmm0
jmp 0x59526
xorps %xmm9, %xmm9
cvtss2sd %xmm3, %xmm9
movzbl 0x15(%r14), %r8d
xorps %xmm1, %xmm1
cvtsi2ss %r8d, %xmm1
leaq 0x3a7954(%rip), %rdi    # 0x4007e0
movswl (%rdi,%rcx,2), %r9d
xorps %xmm6, %xmm6
cvtsi2ss %r9d, %xmm6
movsd 0x1bc37(%rip), %xmm3    # 0x74ad8
movapd %xmm3, %xmm8
divsd %xmm2, %xmm8
xorps %xmm2, %xmm2
cvtsd2ss %xmm8, %xmm2
mulss %xmm1, %xmm6
divsd %xmm9, %xmm3
cvtsd2ss %xmm3, %xmm3
movsd 0x5a0c67(%rip), %xmm8   # 0x5f9b30
xorps %xmm1, %xmm1
cvtss2sd %xmm7, %xmm1
mulsd %xmm8, %xmm1
cvtss2sd %xmm2, %xmm2
mulsd %xmm2, %xmm1
addsd %xmm8, %xmm1
cvtss2sd %xmm0, %xmm0
mulsd %xmm8, %xmm0
cvtss2sd %xmm3, %xmm3
mulsd %xmm3, %xmm0
addsd %xmm8, %xmm0
movsd 0x5a4cb8(%rip), %xmm7   # 0x5fdbb8
mulsd %xmm7, %xmm2
mulsd %xmm3, %xmm7
imull %r8d, %esi
shll $0x2, %esi
addl 0x8(%r14), %esi
movl %esi, 0x8(%r14)
testb %al, %al
jns 0x58f3a
movswl (%rdi,%rcx,2), %r9d
imull %r8d, %r9d
leal (%rsi,%r9,2), %esi
movl %esi, 0x8(%r14)
testb $0x1, (%rdi,%rcx,2)
je 0x58f3a
leal (%rsi,%r8,2), %esi
movl %esi, 0x8(%r14)
mulss 0x20396(%rip), %xmm6    # 0x792d8
cvtsd2ss %xmm1, %xmm1
cvtsd2ss %xmm0, %xmm0
xorps %xmm3, %xmm3
cvtsd2ss %xmm2, %xmm3
xorps %xmm2, %xmm2
cvtsd2ss %xmm7, %xmm2
movl 0x8(%r14), %r8d
leaq 0x211afd(%rip), %rsi    # 0x26aa60
movl (%rsi), %esi
subl %esi, %r8d
testb $0x4, %al
je 0x58f88
movss 0x1d020(%rip), %xmm7    # 0x75f94
movaps %xmm7, %xmm8
subss %xmm5, %xmm8
subss %xmm4, %xmm7
movaps %xmm8, %xmm5
movaps %xmm7, %xmm4
xorps %xmm8, %xmm8
cvtsi2ss %r8d, %xmm8
movaps %xmm8, %xmm7
subss %xmm6, %xmm7
movaps %xmm3, %xmm6
subss %xmm2, %xmm6
cvtss2sd %xmm6, %xmm11
movsd 0x5a4c13(%rip), %xmm6   # 0x5fdbc0
mulsd %xmm6, %xmm11
movaps %xmm1, %xmm9
subss %xmm0, %xmm9
cvtss2sd %xmm9, %xmm10
divsd %xmm10, %xmm11
mulss %xmm2, %xmm4
mulss %xmm3, %xmm5
cvtss2sd %xmm5, %xmm13
subss %xmm4, %xmm5
xorps %xmm4, %xmm4
cvtss2sd %xmm5, %xmm4
mulsd %xmm6, %xmm4
movswl (%rdx,%rcx,2), %edx
xorps %xmm5, %xmm5
cvtsi2sd %edx, %xmm5
mulsd %xmm5, %xmm4
divsd %xmm10, %xmm4
cvtss2sd %xmm3, %xmm12
mulsd %xmm6, %xmm12
mulsd %xmm6, %xmm13
movaps %xmm7, %xmm6
mulss %xmm3, %xmm6
cvtss2sd %xmm6, %xmm14
mulsd %xmm5, %xmm13
xorps %xmm10, %xmm10
cvtss2sd %xmm1, %xmm10
movsd %xmm4, 0x5a0b42(%rip)   # 0x5f9b68
mulsd %xmm10, %xmm4
subsd %xmm4, %xmm13
movsd 0x5a0b00(%rip), %xmm6   # 0x5f9b38
addsd %xmm6, %xmm14
xorps %xmm4, %xmm4
cvtsd2ss %xmm14, %xmm4
movsd %xmm13, 0x5a0b2a(%rip)  # 0x5f9b78
movaps %xmm3, %xmm5
mulss %xmm8, %xmm5
cvtss2sd %xmm5, %xmm5
addsd %xmm6, %xmm5
cvtsd2ss %xmm5, %xmm5
movsd %xmm11, 0x5a0ae5(%rip)  # 0x5f9b50
mulsd %xmm10, %xmm11
subsd %xmm11, %xmm12
movsd %xmm12, 0x5a0ae2(%rip)  # 0x5f9b60
movswl (%rdi,%rcx,2), %ecx
addsd %xmm11, %xmm12
xorps %xmm11, %xmm11
cvtsi2sd %ecx, %xmm11
mulsd %xmm11, %xmm12
movaps %xmm4, %xmm11
subss %xmm5, %xmm11
mulss %xmm9, %xmm11
cvtss2sd %xmm11, %xmm11
divsd %xmm11, %xmm12
xorl %edx, %edx
mulss %xmm2, %xmm7
cvtss2sd %xmm7, %xmm7
addsd %xmm6, %xmm7
cvtsd2ss %xmm7, %xmm7
mulss %xmm2, %xmm8
cvtss2sd %xmm8, %xmm8
addsd %xmm6, %xmm8
cvtsd2ss %xmm8, %xmm8
movq %rdx, 0x5a0a7e(%rip)    # 0x5f9b58
movq %rdx, 0x5a0a8f(%rip)    # 0x5f9b70
xorps %xmm11, %xmm11
cvtsd2ss %xmm12, %xmm11
testb $0x8, %al
jne 0x5911d
movaps %xmm4, %xmm9
subss %xmm7, %xmm9
mulss %xmm11, %xmm9
xorps %xmm12, %xmm12
cvtss2sd %xmm9, %xmm12
movsd %xmm12, 0x5a0a72(%rip)  # 0x5f9b80
movaps %xmm0, %xmm9
subss %xmm1, %xmm9
movaps %xmm4, %xmm13
jmp 0x5913d
movaps %xmm8, %xmm12
subss %xmm5, %xmm12
mulss %xmm11, %xmm12
cvtss2sd %xmm12, %xmm12
movsd %xmm12, 0x5a0a47(%rip)  # 0x5f9b80
movaps %xmm5, %xmm13
mulss %xmm11, %xmm9
cvtss2sd %xmm9, %xmm9
movsd %xmm9, 0x5a0a38(%rip)   # 0x5f9b88
xorps 0x1dbe8(%rip), %xmm12   # 0x76d40
xorps %xmm11, %xmm11
cvtss2sd %xmm13, %xmm11
mulsd %xmm9, %xmm11
mulsd %xmm10, %xmm12
subsd %xmm11, %xmm12
movsd %xmm12, 0x5a0a17(%rip)  # 0x5f9b90
movswq 0x18(%r14), %rdx
leaq (%rdx,%rdx,4), %rdx
leaq (%r11,%rdx,8), %rdx
testb $0x1, 0xc(%rdx)
jne 0x59201
movzbl 0x15(%r14), %edi
xorps %xmm9, %xmm9
cvtsi2ss %edi, %xmm9
movswl %cx, %ecx
xorps %xmm10, %xmm10
cvtsi2ss %ecx, %xmm10
mulss %xmm9, %xmm10
mulss 0x20128(%rip), %xmm10   # 0x792dc
movl 0x4(%rdx), %ecx
xorps %xmm9, %xmm9
cvtsi2ss %ecx, %xmm9
xorps %xmm11, %xmm11
cvtsi2ssl 0x8(%r14), %xmm11
addss %xmm10, %xmm11
ucomiss %xmm11, %xmm9
jbe 0x59201
subl %esi, %ecx
xorps %xmm7, %xmm7
cvtsi2ss %ecx, %xmm7
movaps %xmm3, %xmm4
mulss %xmm7, %xmm4
cvtss2sd %xmm4, %xmm4
addsd %xmm6, %xmm4
cvtsd2ss %xmm4, %xmm4
mulss %xmm2, %xmm7
cvtss2sd %xmm7, %xmm7
addsd %xmm6, %xmm7
cvtsd2ss %xmm7, %xmm7
testb $0x1, 0xe(%rdx)
jne 0x59245
movl 0x8(%rdx), %ecx
cmpl 0x8(%r14), %ecx
jge 0x59245
subl %esi, %ecx
xorps %xmm8, %xmm8
cvtsi2ss %ecx, %xmm8
mulss %xmm8, %xmm3
cvtss2sd %xmm3, %xmm3
addsd %xmm6, %xmm3
xorps %xmm5, %xmm5
cvtsd2ss %xmm3, %xmm5
mulss %xmm8, %xmm2
cvtss2sd %xmm2, %xmm2
addsd %xmm6, %xmm2
xorps %xmm8, %xmm8
cvtsd2ss %xmm2, %xmm8
ucomiss %xmm0, %xmm1
jbe 0x5925d
movaps %xmm1, %xmm2
movaps %xmm7, %xmm3
movaps %xmm8, %xmm1
testb $0x40, %al
je 0x59270
jmp 0x597d0
movaps %xmm0, %xmm2
movaps %xmm1, %xmm0
movaps %xmm4, %xmm3
movaps %xmm5, %xmm1
movaps %xmm7, %xmm4
movaps %xmm8, %xmm5
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x50(%rsp)
cvtss2sd %xmm3, %xmm3
movsd %xmm3, 0x10(%rsp)
cvtss2sd %xmm2, %xmm2
movsd %xmm2, 0x58(%rsp)
xorps %xmm3, %xmm3
cvtss2sd %xmm4, %xmm3
movsd %xmm3, 0x18(%rsp)
movsd %xmm2, 0x60(%rsp)
xorps %xmm2, %xmm2
cvtss2sd %xmm5, %xmm2
movsd %xmm2, 0x20(%rsp)
movsd %xmm0, 0x68(%rsp)
xorps %xmm0, %xmm0
cvtss2sd %xmm1, %xmm0
movsd %xmm0, 0x28(%rsp)
movl $0x4, %r15d
jmp 0x59791
cvtss2sd %xmm3, %xmm3
xorps %xmm6, %xmm6
cvtss2sd %xmm7, %xmm6
mulsd 0x20019(%rip), %xmm6    # 0x792f8
movaps %xmm3, %xmm7
subsd %xmm6, %xmm7
movsd %xmm7, 0x18(%rsp)
movsd %xmm7, 0x10(%rsp)
addsd %xmm3, %xmm6
movsd %xmm6, 0x28(%rsp)
movsd %xmm6, 0x20(%rsp)
xorl %edi, %edi
movq %rdi, 0x5a0875(%rip)    # 0x5f9b80
movq %rdi, 0x5a085e(%rip)    # 0x5f9b70
movq %rdi, 0x5a083f(%rip)    # 0x5f9b58
movq %rdi, 0x5a0830(%rip)    # 0x5f9b50
movsd 0x5a48a0(%rip), %xmm3   # 0x5fdbc8
mulsd %xmm0, %xmm3
movsd %xmm3, 0x5a082c(%rip)   # 0x5f9b60
xorps %xmm6, %xmm6
cvtsi2sd %esi, %xmm6
mulsd %xmm3, %xmm6
testb $0x4, %al
jne 0x59371
subsd %xmm4, %xmm5
addsd 0x200c9(%rip), %xmm5    # 0x79418
divsd %xmm5, %xmm6
movsd %xmm6, 0x5a080d(%rip)   # 0x5f9b68
xorpd 0x1d9dd(%rip), %xmm6    # 0x76d40
addsd 0x200b5(%rip), %xmm4    # 0x79420
mulsd %xmm6, %xmm4
jmp 0x593a1
subsd %xmm5, %xmm4
addsd 0x20093(%rip), %xmm4    # 0x79410
divsd %xmm4, %xmm6
movsd %xmm6, 0x5a07df(%rip)   # 0x5f9b68
xorpd 0x1d9af(%rip), %xmm6    # 0x76d40
addsd 0x1ffa7(%rip), %xmm5    # 0x79340
mulsd %xmm6, %xmm5
movapd %xmm5, %xmm4
movsd %xmm4, 0x5a07cf(%rip)   # 0x5f9b78
movswl %dx, %edx
xorps %xmm4, %xmm4
cvtsi2sd %edx, %xmm4
mulsd %xmm4, %xmm3
testb $0x8, %al
jne 0x593f1
movsd 0x10(%rsp), %xmm4
movsd 0x28(%rsp), %xmm5
subsd %xmm4, %xmm5
addsd 0x20045(%rip), %xmm5    # 0x79418
divsd %xmm5, %xmm3
movsd %xmm3, 0x5a07a9(%rip)   # 0x5f9b88
xorpd 0x1d959(%rip), %xmm3    # 0x76d40
addsd 0x20031(%rip), %xmm4    # 0x79420
jmp 0x59425
movsd 0x10(%rsp), %xmm5
movsd 0x28(%rsp), %xmm4
subsd %xmm4, %xmm5
addsd 0x20007(%rip), %xmm5    # 0x79410
divsd %xmm5, %xmm3
movsd %xmm3, 0x5a0773(%rip)   # 0x5f9b88
xorpd 0x1d923(%rip), %xmm3    # 0x76d40
addsd 0x1ff1b(%rip), %xmm4    # 0x79340
mulsd %xmm3, %xmm4
movsd %xmm4, 0x5a075f(%rip)   # 0x5f9b90
movswq 0x18(%r14), %rax
leaq (%rax,%rax,4), %rax
leaq (%r11,%rax,8), %rax
testb $0x3, 0xc(%rax)
jne 0x5947c
movl 0x4(%rax), %edx
subl %ecx, %edx
xorps %xmm3, %xmm3
cvtsi2ss %edx, %xmm3
cvtss2sd %xmm3, %xmm3
mulsd %xmm1, %xmm3
mulsd %xmm0, %xmm3
addsd %xmm2, %xmm3
cvtsd2ss %xmm3, %xmm3
cvtss2sd %xmm3, %xmm3
ucomisd 0x10(%rsp), %xmm3
jbe 0x5947c
movsd %xmm3, 0x18(%rsp)
movsd %xmm3, 0x10(%rsp)
movl $0x4, %r15d
testb $0x3, 0xe(%rax)
jne 0x59791
movl 0x8(%rax), %eax
subl %ecx, %eax
xorps %xmm3, %xmm3
cvtsi2ss %eax, %xmm3
cvtss2sd %xmm3, %xmm3
mulsd %xmm3, %xmm1
mulsd %xmm0, %xmm1
addsd %xmm2, %xmm1
cvtsd2ss %xmm1, %xmm0
movsd 0x20(%rsp), %xmm1
cvtss2sd %xmm0, %xmm0
ucomisd %xmm0, %xmm1
jbe 0x59791
movsd %xmm0, 0x28(%rsp)
movsd %xmm0, 0x20(%rsp)
jmp 0x59791
movq %r10, %r12
movss %xmm5, 0xc(%rsp)
movaps %xmm6, 0x90(%rsp)
movaps %xmm7, 0x80(%rsp)
callq 0x64c0
movaps 0x80(%rsp), %xmm7
movsd 0x1b5d8(%rip), %xmm9    # 0x74ad8
movaps 0x90(%rsp), %xmm6
leaq 0x1e0545(%rip), %r9     # 0x239a54
leaq 0x1e053a(%rip), %r8     # 0x239a50
movss 0xc(%rsp), %xmm5
leaq 0x3b5add(%rip), %rdi    # 0x40f000
movq %r12, %r10
divsd %xmm0, %xmm9
xorps %xmm0, %xmm0
cvtsd2ss %xmm9, %xmm0
mulss %xmm0, %xmm7
leaq 0x21553a(%rip), %rax    # 0x26ea78
xorps %xmm1, %xmm1
cvtsi2ssl (%rax), %xmm1
leaq 0x215524(%rip), %rax    # 0x26ea70
xorps %xmm2, %xmm2
cvtsi2ssl (%rax), %xmm2
movaps 0x40(%rsp), %xmm4
mulss %xmm0, %xmm4
movaps %xmm7, %xmm3
mulss %xmm2, %xmm3
movaps %xmm1, %xmm0
mulss %xmm4, %xmm0
addss %xmm3, %xmm0
mulss %xmm4, %xmm2
mulss %xmm7, %xmm1
subss %xmm2, %xmm1
xorps %xmm2, %xmm2
cvtsi2ssl (%r9), %xmm2
subss %xmm6, %xmm2
xorps %xmm3, %xmm3
cvtsi2ssl (%r8), %xmm3
cvtss2sd %xmm2, %xmm2
cvtss2sd %xmm4, %xmm4
subss %xmm5, %xmm3
cvtss2sd %xmm3, %xmm3
xorps %xmm5, %xmm5
cvtss2sd %xmm7, %xmm5
movaps %xmm5, %xmm6
mulsd %xmm3, %xmm6
mulsd %xmm2, %xmm5
mulsd %xmm4, %xmm2
addsd %xmm6, %xmm2
cvtsd2ss %xmm2, %xmm2
mulsd %xmm4, %xmm3
subsd %xmm5, %xmm3
xorps %xmm4, %xmm4
cvtsd2ss %xmm3, %xmm4
cvtss2sd %xmm1, %xmm8
leaq 0x375779(%rip), %rax    # 0x3ced50
xorps %xmm5, %xmm5
cvtsi2sdl (%rax), %xmm5
movaps %xmm8, %xmm1
mulsd %xmm5, %xmm1
movsd 0x1fe0a(%rip), %xmm3    # 0x793f8
mulsd %xmm3, %xmm1
movsd %xmm1, 0x5a056e(%rip)   # 0x5f9b68
cvtss2sd %xmm0, %xmm0
mulsd %xmm0, %xmm5
mulsd %xmm3, %xmm5
movsd %xmm5, 0x5a0572(%rip)   # 0x5f9b80
xorps %xmm9, %xmm9
cvtss2sd %xmm2, %xmm9
movsd 0x5a0539(%rip), %xmm2   # 0x5f9b58
movapd %xmm2, %xmm3
mulsd %xmm9, %xmm3
movsd %xmm3, 0x5a0540(%rip)   # 0x5f9b70
xorps %xmm6, %xmm6
cvtss2sd %xmm4, %xmm6
movapd %xmm2, %xmm7
mulsd %xmm6, %xmm7
movsd %xmm7, 0x5a0541(%rip)   # 0x5f9b88
movsd 0x5a0511(%rip), %xmm4   # 0x5f9b60
mulsd %xmm4, %xmm9
mulsd %xmm4, %xmm6
movsd 0x1fccf(%rip), %xmm10   # 0x79330
mulsd %xmm10, %xmm0
subsd %xmm1, %xmm0
movsd 0x5a04bd(%rip), %xmm11  # 0x5f9b30
mulsd %xmm11, %xmm0
addsd %xmm9, %xmm0
movsd %xmm0, 0x5a04f3(%rip)   # 0x5f9b78
mulsd %xmm10, %xmm8
addsd %xmm5, %xmm8
mulsd %xmm11, %xmm8
subsd %xmm8, %xmm6
movsd %xmm6, 0x5a04ef(%rip)   # 0x5f9b90
movzbl 0x14(%r14), %eax
xorps %xmm8, %xmm8
cvtsi2sd %eax, %xmm8
movsd 0x1fd48(%rip), %xmm9    # 0x79400
divsd %xmm8, %xmm9
xorps %xmm8, %xmm8
cvtsd2ss %xmm9, %xmm8
cvtss2sd %xmm8, %xmm8
mulsd %xmm8, %xmm1
movsd %xmm1, 0x5a0490(%rip)   # 0x5f9b68
mulsd %xmm8, %xmm3
movsd %xmm3, 0x5a048b(%rip)   # 0x5f9b70
mulsd %xmm8, %xmm0
movsd %xmm0, 0x5a0486(%rip)   # 0x5f9b78
movzbl 0x15(%r14), %eax
xorps %xmm8, %xmm8
cvtsi2sd %eax, %xmm8
movsd 0x1fcff(%rip), %xmm9    # 0x79408
divsd %xmm8, %xmm9
xorps %xmm8, %xmm8
cvtsd2ss %xmm9, %xmm8
cvtss2sd %xmm8, %xmm8
mulsd %xmm8, %xmm5
movsd %xmm5, 0x5a0457(%rip)   # 0x5f9b80
mulsd %xmm8, %xmm7
movsd %xmm7, 0x5a0452(%rip)   # 0x5f9b88
mulsd %xmm8, %xmm6
movsd %xmm6, 0x5a044d(%rip)   # 0x5f9b90
testb $0x4, (%rdi)
je 0x59791
movswq (%r10), %rax
movswl (%r13,%rax,2), %eax
xorps %xmm5, %xmm5
cvtsi2sd %eax, %xmm5
movsd 0x5a03ef(%rip), %xmm6   # 0x5f9b50
mulsd %xmm5, %xmm6
subsd %xmm1, %xmm6
movsd %xmm6, 0x5a03f7(%rip)   # 0x5f9b68
mulsd %xmm5, %xmm2
subsd %xmm3, %xmm2
movsd %xmm2, 0x5a03ef(%rip)   # 0x5f9b70
mulsd %xmm5, %xmm4
subsd %xmm0, %xmm4
movsd %xmm4, 0x5a03e7(%rip)   # 0x5f9b78
leaq 0x50(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl %r15d, %edx
movl %ebx, %ecx
callq 0x4e9e3
leaq 0x351d34(%rip), %rax    # 0x3ab4e0
cmpb $0x1, (%rax)
jne 0x597d0
movzwl %bp, %eax
movl %eax, %ecx
andl $0x7, %ecx
leaq 0x49fe0(%rip), %rdx     # 0xa37a0
movb (%rdx,%rcx), %cl
shrl $0x3, %eax
leaq 0x350d13(%rip), %rdx    # 0x3aa4e0
orb %cl, (%rdx,%rax)
addq $0xd8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq