// File: /workspace/github_c_makefile_star2_O0/jonof[P]jftekwar/jfbuild/src/polymost.c
// Function: polymost_dorotatesprite
void polymost_dorotatesprite (int sx, int sy, int z, short a, short picnum,
	signed char dashade, unsigned char dapalnum, unsigned char dastat, int cx1, int cy1, int cx2, int cy2, int uniqid)
{
	int n, nn, x, zz, xoff, yoff, xsiz, ysiz, method;
	int ogpicnum, ogshade, ogpal, oxdimen, oydimen;
	intptr_t ofoffset;
	double ogchang, ogshang, ogctang, ogstang, oghalfx, oghoriz, fx, fy, x1, y1, x2, y2;
	double ogrhalfxdown10, ogrhalfxdown10x;
	double d, cosang, sinang, cosang2, sinang2, px[8], py[8], px2[8], py2[8];

#if USE_OPENGL
	double z1;
	double ogxyaspect, ogfogdensity;
	int oldviewingrange;
	static int onumframes = 0;

	if (rendmode == 3 && usemodels && hudmem[(dastat&4)>>2][picnum].angadd)
	{
		if ((tile2model[picnum].modelid >= 0) && (tile2model[picnum].framenum >= 0))
		{
			spritetype tspr;
			memset(&tspr,0,sizeof(spritetype));

			if (hudmem[(dastat&4)>>2][picnum].flags&1) return; //"HIDE" is specified in DEF

			ogchang = gchang; gchang = 1.0;
			ogshang = gshang; gshang = 0.0; d = (double)z/(65536.0*16384.0);
			ogctang = gctang; gctang = (double)sintable[(a+512)&2047]*d;
			ogstang = gstang; gstang = (double)sintable[a&2047]*d;
			ogshade  = globalshade;  globalshade  = dashade;
			ogpal    = globalpal;    globalpal    = (int)((unsigned char)dapalnum);
			ogxyaspect = gxyaspect; gxyaspect = 1.0;
			ogfogdensity = gfogdensity; gfogdensity = 0.0;
			oldviewingrange = viewingrange; viewingrange = 65536;

			x1 = hudmem[(dastat&4)>>2][picnum].xadd;
			y1 = hudmem[(dastat&4)>>2][picnum].yadd;
			z1 = hudmem[(dastat&4)>>2][picnum].zadd;
			if (!(hudmem[(dastat&4)>>2][picnum].flags&2)) //"NOBOB" is specified in DEF
			{
				fx = ((double)sx)*(1.0/65536.0);
				fy = ((double)sy)*(1.0/65536.0);

				if (dastat&16)
				{
					xsiz = tilesizx[picnum]; ysiz = tilesizy[picnum];
					xoff = (int)((signed char)((picanm[picnum]>>8)&255))+(xsiz>>1);
					yoff = (int)((signed char)((picanm[picnum]>>16)&255))+(ysiz>>1);

					d = (double)z/(65536.0*16384.0);
					cosang2 = cosang = (double)sintable[(a+512)&2047]*d;
					sinang2 = sinang = (double)sintable[a&2047]*d;
					if ((dastat&2) || (!(dastat&8))) //Don't aspect unscaled perms
						{ d = (double)xyaspect/65536.0; cosang2 *= d; sinang2 *= d; }
					fx += -(double)xoff*cosang2+ (double)yoff*sinang2;
					fy += -(double)xoff*sinang - (double)yoff*cosang;
			}

				if (!(dastat&2))
			{
					x1 += fx/((double)(xdim<<15))-1.0; //-1: left of screen, +1: right of screen
					y1 += fy/((double)(ydim<<15))-1.0; //-1: top of screen, +1: bottom of screen
			}
			else
			{
					x1 += fx/160.0-1.0; //-1: left of screen, +1: right of screen
					y1 += fy/100.0-1.0; //-1: top of screen, +1: bottom of screen
			}
			}
			tspr.ang = hudmem[(dastat&4)>>2][picnum].angadd+globalang;
			tspr.xrepeat = tspr.yrepeat = 32;

			if (dastat&4) { x1 = -x1; y1 = -y1; }
			tspr.x = (int)(((double)gcosang*z1 - (double)gsinang*x1)*16384.0 + globalposx);
			tspr.y = (int)(((double)gsinang*z1 + (double)gcosang*x1)*16384.0 + globalposy);
			tspr.z = (int)(globalposz + y1*16384.0*0.8);
			tspr.picnum = picnum;
			tspr.shade = dashade;
			tspr.pal = dapalnum;
			tspr.owner = uniqid+MAXSPRITES;
			globalorientation = (dastat&1)+((dastat&32)<<4)+((dastat&4)<<1);

			if ((dastat&10) == 2) glfunc.glViewport(windowx1,yres-(windowy2+1),windowx2-windowx1+1,windowy2-windowy1+1);
			else { glfunc.glViewport(0,0,xdim,ydim); glox1 = -1; } //Force fullscreen (glox1=-1 forces it to restore)

			if (hudmem[(dastat&4)>>2][picnum].flags&8) //NODEPTH flag
				glfunc.glDisable(GL_DEPTH_TEST);
			else
			{
				glfunc.glEnable(GL_DEPTH_TEST);
				if (onumframes != numframes)
				{
					onumframes = numframes;
					glfunc.glClear(GL_DEPTH_BUFFER_BIT);
				}
			}

			mddraw(&tspr, !!((dastat&10) != 2));

			viewingrange = oldviewingrange;
			gfogdensity = ogfogdensity;
			gxyaspect = ogxyaspect;
			globalshade  = ogshade;
			globalpal    = ogpal;
			gchang = ogchang;
			gshang = ogshang;
			gctang = ogctang;
			gstang = ogstang;
			return;
		}
	}
#endif

	ogpicnum = globalpicnum; globalpicnum = picnum;
	ogshade  = globalshade;  globalshade  = dashade;
	ogpal    = globalpal;    globalpal    = (int)((unsigned char)dapalnum);
	oghalfx  = ghalfx;       ghalfx       = (double)(xdim>>1);
	ogrhalfxdown10 = grhalfxdown10;    grhalfxdown10 = 1.0/(((double)ghalfx)*1024);
	ogrhalfxdown10x = grhalfxdown10x;  grhalfxdown10x = grhalfxdown10;
	oghoriz  = ghoriz;       ghoriz       = (double)(ydim>>1);
	ofoffset = frameoffset;  frameoffset  = frameplace;
	oxdimen  = xdimen;       xdimen       = xdim;
	oydimen  = ydimen;       ydimen       = ydim;
	ogchang = gchang; gchang = 1.0;
	ogshang = gshang; gshang = 0.0;
	ogctang = gctang; gctang = 1.0;
	ogstang = gstang; gstang = 0.0;

#if USE_OPENGL
	if (rendmode == 3)
	{
		glfunc.glViewport(0,0,xdim,ydim); glox1 = -1; //Force fullscreen (glox1=-1 forces it to restore)
		glfunc.glDisable(GL_DEPTH_TEST);
	}
#endif

	method = METH_SOLID;
	if (!(dastat&64))
	{
		 method = METH_MASKED;
		 if (dastat&1) { if (!(dastat&32)) method = METH_TRANS; else method = METH_INTRANS; }
	}
	method |= METH_CLAMPED; //Use OpenGL clamping - dorotatesprite never repeats
	method |= METH_ROTATESPRITE;	//Use rotatesprite projection

	xsiz = tilesizx[globalpicnum]; ysiz = tilesizy[globalpicnum];
	if (dastat&16) { xoff = 0; yoff = 0; }
	else
	{
		xoff = (int)((signed char)((picanm[globalpicnum]>>8)&255))+(xsiz>>1);
		yoff = (int)((signed char)((picanm[globalpicnum]>>16)&255))+(ysiz>>1);
	}
	if (dastat&4) yoff = ysiz-yoff;

	if (dastat&2)  //Auto window size scaling
	{
		if (!(dastat&8))
		{
			if (widescreen) {
				x = ydimenscale;   //= scale(xdimen,yxaspect,320);
				sx = ((cx1+cx2+2)<<15)+scale(sx-(320<<15),oydimen<<16,200*pixelaspect);
			} else {
				x = xdimenscale;   //= scale(xdimen,yxaspect,320);
				sx = ((cx1+cx2+2)<<15)+scale(sx-(320<<15),oxdimen,320);
			}
			sy = ((cy1+cy2+2)<<15)+mulscale16(sy-(200<<15),x);
		}
		else
		{
				//If not clipping to startmosts, & auto-scaling on, as a
				//hard-coded bonus, scale to full screen instead
			if (widescreen) {
				x = scale(ydim<<16,yxaspect,200*pixelaspect);
				sx = (xdim<<15)+32768+scale(sx-(320<<15),ydim<<16,200*pixelaspect);
			} else {
				x = scale(xdim,yxaspect,320);
				sx = (xdim<<15)+32768+scale(sx-(320<<15),xdim,320);
			}
			sy = (ydim<<15)+32768+mulscale16(sy-(200<<15),x);
		}
		z = mulscale16(z,x);
	}

	d = (double)z/(65536.0*16384.0);
	cosang2 = cosang = (double)sintable[(a+512)&2047]*d;
	sinang2 = sinang = (double)sintable[a&2047]*d;
	if ((dastat&2) || (!(dastat&8))) //Don't aspect unscaled perms
		{ d = (double)xyaspect/65536.0; cosang2 *= d; sinang2 *= d; }
	px[0] = (double)sx/65536.0 - (double)xoff*cosang2+ (double)yoff*sinang2;
	py[0] = (double)sy/65536.0 - (double)xoff*sinang - (double)yoff*cosang;
	px[1] = px[0] + (double)xsiz*cosang2;
	py[1] = py[0] + (double)xsiz*sinang;
	px[3] = px[0] - (double)ysiz*sinang2;
	py[3] = py[0] + (double)ysiz*cosang;
	px[2] = px[1]+px[3]-px[0];
	py[2] = py[1]+py[3]-py[0];
	n = 4;

	gdx = 0; gdy = 0; gdo = 1.0;
		//px[0]*gux + py[0]*guy + guo = 0
		//px[1]*gux + py[1]*guy + guo = xsiz-.0001
		//px[3]*gux + py[3]*guy + guo = 0
	d = 1.0/(px[0]*(py[1]-py[3]) + px[1]*(py[3]-py[0]) + px[3]*(py[0]-py[1]));
	gux = (py[3]-py[0])*((double)xsiz-.0001)*d;
	guy = (px[0]-px[3])*((double)xsiz-.0001)*d;
	guo = 0 - px[0]*gux - py[0]*guy;

	if (!(dastat&4))
	{     //px[0]*gvx + py[0]*gvy + gvo = 0
			//px[1]*gvx + py[1]*gvy + gvo = 0
			//px[3]*gvx + py[3]*gvy + gvo = ysiz-.0001
		gvx = (py[0]-py[1])*((double)ysiz-.0001)*d;
		gvy = (px[1]-px[0])*((double)ysiz-.0001)*d;
		gvo = 0 - px[0]*gvx - py[0]*gvy;
	}
	else
	{     //px[0]*gvx + py[0]*gvy + gvo = ysiz-.0001
			//px[1]*gvx + py[1]*gvy + gvo = ysiz-.0001
			//px[3]*gvx + py[3]*gvy + gvo = 0
		gvx = (py[1]-py[0])*((double)ysiz-.0001)*d;
		gvy = (px[0]-px[1])*((double)ysiz-.0001)*d;
		gvo = (double)ysiz-.0001 - px[0]*gvx - py[0]*gvy;
	}

	cx2++; cy2++;
		//Clippoly4 (converted from int to double)
	nn = z = 0;
	do
	{
		zz = z+1; if (zz == n) zz = 0;
		x1 = px[z]; x2 = px[zz]-x1; if ((cx1 <= x1) && (x1 <= cx2)) { px2[nn] = x1; py2[nn] = py[z]; nn++; }
		if (x2 <= 0) fx = cx2; else fx = cx1;  d = fx-x1;
		if ((d < x2) != (d < 0)) { px2[nn] = fx; py2[nn] = (py[zz]-py[z])*d/x2 + py[z]; nn++; }
		if (x2 <= 0) fx = cx1; else fx = cx2;  d = fx-x1;
		if ((d < x2) != (d < 0)) { px2[nn] = fx; py2[nn] = (py[zz]-py[z])*d/x2 + py[z]; nn++; }
		z = zz;
	} while (z);
	if (nn >= 3)
	{
		n = z = 0;
		do
		{
			zz = z+1; if (zz == nn) zz = 0;
			y1 = py2[z]; y2 = py2[zz]-y1; if ((cy1 <= y1) && (y1 <= cy2)) { py[n] = y1; px[n] = px2[z]; n++; }
			if (y2 <= 0) fy = cy2; else fy = cy1;  d = fy-y1;
			if ((d < y2) != (d < 0)) { py[n] = fy; px[n] = (px2[zz]-px2[z])*d/y2 + px2[z]; n++; }
			if (y2 <= 0) fy = cy1; else fy = cy2;  d = fy-y1;
			if ((d < y2) != (d < 0)) { py[n] = fy; px[n] = (px2[zz]-px2[z])*d/y2 + px2[z]; n++; }
			z = zz;
		} while (z);
		drawpoly(px,py,n,method);
	}

	globalpicnum = ogpicnum;
	globalshade  = ogshade;
	globalpal    = ogpal;
	ghalfx       = oghalfx;
	grhalfxdown10 = ogrhalfxdown10;
	grhalfxdown10x = ogrhalfxdown10x;
	ghoriz       = oghoriz;
	frameoffset  = ofoffset;
	xdimen       = oxdimen;
	ydimen       = oydimen;
	gchang = ogchang;
	gshang = ogshang;
	gctang = ogctang;
	gstang = ogstang;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x260, %rsp            # imm = 0x260
movl %r8d, -0x248(%rbp)
movl %ecx, %eax
movl -0x248(%rbp), %ecx
movl %eax, -0x244(%rbp)
movl %edx, %eax
movl -0x244(%rbp), %edx
movl %eax, -0x240(%rbp)
movl %esi, %eax
movl -0x240(%rbp), %esi
movl %eax, -0x23c(%rbp)
movl %edi, %r8d
movl -0x23c(%rbp), %edi
movb %r9b, %al
movl 0x40(%rbp), %r9d
movl 0x38(%rbp), %r9d
movl 0x30(%rbp), %r9d
movl 0x28(%rbp), %r9d
movl 0x20(%rbp), %r9d
movb 0x18(%rbp), %r9b
movb 0x10(%rbp), %r9b
movl %r8d, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movw %dx, -0xe(%rbp)
movw %cx, -0x10(%rbp)
movb %al, -0x11(%rbp)
cmpl $0x3, 0x566a80(%rip)    # 0x5ed920
jne 0x8785b
cmpl $0x0, 0x5aca3(%rip)     # 0xe1b50
je 0x8785b
movzbl 0x18(%rbp), %eax
andl $0x4, %eax
sarl $0x2, %eax
movslq %eax, %rcx
leaq 0x5d8179(%rip), %rax    # 0x65f040
imulq $0x24000, %rcx, %rcx    # imm = 0x24000
addq %rcx, %rax
movswq -0x10(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movswl 0xc(%rax), %eax
cmpl $0x0, %eax
je 0x8785b
movswq -0x10(%rbp), %rcx
leaq 0x5b512a(%rip), %rax    # 0x63c020
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
cmpl $0x0, (%rax)
jl 0x87859
movswq -0x10(%rbp), %rcx
leaq 0x5b510e(%rip), %rax    # 0x63c020
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
cmpl $0x0, 0x8(%rax)
jl 0x87859
leaq -0x238(%rbp), %rdi
xorl %esi, %esi
movl $0x2c, %edx
callq 0x62d0
movzbl 0x18(%rbp), %eax
andl $0x4, %eax
sarl $0x2, %eax
movslq %eax, %rcx
leaq 0x5d80f6(%rip), %rax    # 0x65f040
imulq $0x24000, %rcx, %rcx    # imm = 0x24000
addq %rcx, %rax
movswq -0x10(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movswl 0xe(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x86f71
jmp 0x88931
movsd 0x566b77(%rip), %xmm0   # 0x5edaf0
movsd %xmm0, -0x60(%rbp)
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0x566b61(%rip)    # 0x5edaf0
movsd 0x566b79(%rip), %xmm0   # 0x5edb10
movsd %xmm0, -0x68(%rbp)
movq $0x0, 0x566b69(%rip) # 0x5edb10
cvtsi2sdl -0xc(%rbp), %xmm0
movsd 0x2f5dc(%rip), %xmm1    # 0xb6590
mulsd %xmm1, %xmm0
movsd %xmm0, -0xd0(%rbp)
movsd 0x566b30(%rip), %xmm0   # 0x5edaf8
movsd %xmm0, -0x70(%rbp)
movzwl -0xe(%rbp), %eax
addl $0x200, %eax            # imm = 0x200
andl $0x7ff, %eax            # imm = 0x7FF
movl %eax, %ecx
leaq 0x3848cc(%rip), %rax    # 0x40b8b0
movswl (%rax,%rcx,2), %ecx
cvtsi2sd %ecx, %xmm0
movsd -0xd0(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, 0x566af8(%rip)   # 0x5edaf8
movsd 0x566b10(%rip), %xmm0   # 0x5edb18
movsd %xmm0, -0x78(%rbp)
movzwl -0xe(%rbp), %ecx
andl $0x7ff, %ecx            # imm = 0x7FF
movswl (%rax,%rcx,2), %eax
cvtsi2sd %eax, %xmm0
mulsd -0xd0(%rbp), %xmm0
movsd %xmm0, 0x566ae9(%rip)   # 0x5edb18
leaq 0x3c8556(%rip), %rax    # 0x44f58c
movl (%rax), %eax
movl %eax, -0x40(%rbp)
movsbl -0x11(%rbp), %ecx
leaq 0x3c8546(%rip), %rax    # 0x44f58c
movl %ecx, (%rax)
leaq 0x3c3d15(%rip), %rax    # 0x44ad64
movl (%rax), %eax
movl %eax, -0x44(%rbp)
movzbl 0x10(%rbp), %ecx
leaq 0x3c3d05(%rip), %rax    # 0x44ad64
movl %ecx, (%rax)
movsd 0x56ab27(%rip), %xmm0   # 0x5f1b90
movsd %xmm0, -0x200(%rbp)
movsd 0x2a957(%rip), %xmm0    # 0xb19d0
movsd %xmm0, 0x56ab0f(%rip)   # 0x5f1b90
movss 0x5668c3(%rip), %xmm0   # 0x5ed94c
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x208(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, 0x5668ac(%rip)   # 0x5ed94c
leaq 0x385809(%rip), %rax    # 0x40c8b0
movl (%rax), %eax
movl %eax, -0x20c(%rbp)
leaq 0x3857fa(%rip), %rax    # 0x40c8b0
movl $0x10000, (%rax)        # imm = 0x10000
movzbl 0x18(%rbp), %eax
andl $0x4, %eax
sarl $0x2, %eax
movslq %eax, %rcx
leaq 0x5d7f70(%rip), %rax    # 0x65f040
imulq $0x24000, %rcx, %rcx    # imm = 0x24000
addq %rcx, %rax
movswq -0x10(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0xa0(%rbp)
movzbl 0x18(%rbp), %eax
andl $0x4, %eax
sarl $0x2, %eax
movslq %eax, %rcx
leaq 0x5d7f36(%rip), %rax    # 0x65f040
imulq $0x24000, %rcx, %rcx    # imm = 0x24000
addq %rcx, %rax
movswq -0x10(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movss 0x4(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0xa8(%rbp)
movzbl 0x18(%rbp), %eax
andl $0x4, %eax
sarl $0x2, %eax
movslq %eax, %rcx
leaq 0x5d7efb(%rip), %rax    # 0x65f040
imulq $0x24000, %rcx, %rcx    # imm = 0x24000
addq %rcx, %rax
movswq -0x10(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movss 0x8(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x1f8(%rbp)
movzbl 0x18(%rbp), %eax
andl $0x4, %eax
sarl $0x2, %eax
movslq %eax, %rcx
leaq 0x5d7ec0(%rip), %rax    # 0x65f040
imulq $0x24000, %rcx, %rcx    # imm = 0x24000
addq %rcx, %rax
movswq -0x10(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movswl 0xe(%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
jne 0x874ab
cvtsi2sdl -0x4(%rbp), %xmm0
movsd 0x2f3cd(%rip), %xmm1    # 0xb6580
mulsd %xmm1, %xmm0
movsd %xmm0, -0x90(%rbp)
cvtsi2sdl -0x8(%rbp), %xmm0
movsd 0x2f3b4(%rip), %xmm1    # 0xb6580
mulsd %xmm1, %xmm0
movsd %xmm0, -0x98(%rbp)
movzbl 0x18(%rbp), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0x873cb
movswq -0x10(%rbp), %rcx
leaq 0x3c3b8c(%rip), %rax    # 0x44ad80
movswl (%rax,%rcx,2), %eax
movl %eax, -0x30(%rbp)
movswq -0x10(%rbp), %rcx
leaq 0x3b5339(%rip), %rax    # 0x43c540
movswl (%rax,%rcx,2), %eax
movl %eax, -0x34(%rbp)
movswq -0x10(%rbp), %rcx
leaq 0x1f03a6(%rip), %rax    # 0x2775c0
movsbl 0x1(%rax,%rcx,4), %ecx
movl -0x30(%rbp), %edx
sarl %edx
addl %edx, %ecx
movl %ecx, -0x28(%rbp)
movswq -0x10(%rbp), %rcx
movsbl 0x2(%rax,%rcx,4), %eax
movl -0x34(%rbp), %ecx
sarl %ecx
addl %ecx, %eax
movl %eax, -0x2c(%rbp)
cvtsi2sdl -0xc(%rbp), %xmm0
movsd 0x2f346(%rip), %xmm1    # 0xb6590
mulsd %xmm1, %xmm0
movsd %xmm0, -0xd0(%rbp)
movzwl -0xe(%rbp), %eax
addl $0x200, %eax            # imm = 0x200
andl $0x7ff, %eax            # imm = 0x7FF
movl %eax, %ecx
leaq 0x384643(%rip), %rax    # 0x40b8b0
movswl (%rax,%rcx,2), %ecx
cvtsi2sd %ecx, %xmm0
movsd -0xd0(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0xd8(%rbp)
movsd %xmm0, -0xe8(%rbp)
movzwl -0xe(%rbp), %ecx
andl $0x7ff, %ecx            # imm = 0x7FF
movswl (%rax,%rcx,2), %eax
cvtsi2sd %eax, %xmm0
mulsd -0xd0(%rbp), %xmm0
movsd %xmm0, -0xe0(%rbp)
movsd %xmm0, -0xf0(%rbp)
movzbl 0x18(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
jne 0x872d3
movzbl 0x18(%rbp), %eax
andl $0x8, %eax
cmpl $0x0, %eax
jne 0x87322
leaq 0x31313e(%rip), %rax    # 0x39a418
cvtsi2sdl (%rax), %xmm0
movsd 0x29baa(%rip), %xmm1    # 0xb0e90
divsd %xmm1, %xmm0
movsd %xmm0, -0xd0(%rbp)
movsd -0xd0(%rbp), %xmm0
mulsd -0xe8(%rbp), %xmm0
movsd %xmm0, -0xe8(%rbp)
movsd -0xd0(%rbp), %xmm0
mulsd -0xf0(%rbp), %xmm0
movsd %xmm0, -0xf0(%rbp)
cvtsi2sdl -0x28(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd -0xe8(%rbp), %xmm2
cvtsi2sdl -0x2c(%rbp), %xmm1
mulsd -0xf0(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
addsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
cvtsi2sdl -0x28(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd -0xe0(%rbp), %xmm2
cvtsi2sdl -0x2c(%rbp), %xmm1
mulsd -0xd8(%rbp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
addsd -0x98(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movzbl 0x18(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
jne 0x87449
movsd -0x90(%rbp), %xmm0
leaq 0x3bb966(%rip), %rax    # 0x442d4c
movl (%rax), %eax
shll $0xf, %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
movsd 0x2a5d5(%rip), %xmm1    # 0xb19d0
subsd %xmm1, %xmm0
addsd -0xa0(%rbp), %xmm0
movsd %xmm0, -0xa0(%rbp)
movsd -0x98(%rbp), %xmm0
leaq 0x3bb932(%rip), %rax    # 0x442d50
movl (%rax), %eax
shll $0xf, %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
movsd 0x2a59d(%rip), %xmm1    # 0xb19d0
subsd %xmm1, %xmm0
addsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0xa8(%rbp)
jmp 0x874a9
movsd -0x90(%rbp), %xmm0
movsd 0x2b88f(%rip), %xmm1    # 0xb2ce8
divsd %xmm1, %xmm0
movsd 0x2a56b(%rip), %xmm1    # 0xb19d0
subsd %xmm1, %xmm0
addsd -0xa0(%rbp), %xmm0
movsd %xmm0, -0xa0(%rbp)
movsd -0x98(%rbp), %xmm0
movsd 0x2f117(%rip), %xmm1    # 0xb65a0
divsd %xmm1, %xmm0
movsd 0x2a53b(%rip), %xmm1    # 0xb19d0
subsd %xmm1, %xmm0
addsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0xa8(%rbp)
jmp 0x874ab
movzbl 0x18(%rbp), %eax
andl $0x4, %eax
sarl $0x2, %eax
movslq %eax, %rcx
leaq 0x5d7b81(%rip), %rax    # 0x65f040
imulq $0x24000, %rcx, %rcx    # imm = 0x24000
addq %rcx, %rax
movswq -0x10(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movswl 0xc(%rax), %eax
leaq 0x3843b0(%rip), %rcx    # 0x40b890
movswl (%rcx), %ecx
addl %ecx, %eax
movw %ax, -0x21c(%rbp)
movb $0x20, -0x223(%rbp)
movb $0x20, -0x224(%rbp)
movzbl 0x18(%rbp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x87554
movsd -0xa0(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd %xmm0, -0xa0(%rbp)
movsd -0xa8(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd 0x566424(%rip), %xmm0   # 0x5ed980
movsd -0x1f8(%rbp), %xmm2
movsd 0x566424(%rip), %xmm1   # 0x5ed990
mulsd -0xa0(%rbp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
leaq 0x1f0016(%rip), %rax    # 0x2775b0
cvtsi2sdl (%rax), %xmm1
movsd 0x2b76a(%rip), %xmm2    # 0xb2d10
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movl %eax, -0x238(%rbp)
movsd 0x5663d0(%rip), %xmm0   # 0x5ed990
movsd -0x1f8(%rbp), %xmm2
movsd 0x5663b0(%rip), %xmm1   # 0x5ed980
mulsd -0xa0(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
leaq 0x1effcd(%rip), %rax    # 0x2775b4
cvtsi2sdl (%rax), %xmm1
movsd 0x2b71d(%rip), %xmm2    # 0xb2d10
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movl %eax, -0x234(%rbp)
leaq 0x220fb4(%rip), %rax    # 0x2a85c0
cvtsi2sdl (%rax), %xmm1
movsd 0x2b6f8(%rip), %xmm0    # 0xb2d10
mulsd -0xa8(%rbp), %xmm0
movsd 0x2ef80(%rip), %xmm2    # 0xb65a8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movl %eax, -0x230(%rbp)
movw -0x10(%rbp), %ax
movw %ax, -0x22a(%rbp)
movb -0x11(%rbp), %al
movb %al, -0x228(%rbp)
movb 0x10(%rbp), %al
movb %al, -0x227(%rbp)
movl 0x40(%rbp), %eax
addl $0x4000, %eax           # imm = 0x4000
movw %ax, -0x21a(%rbp)
movzbl 0x18(%rbp), %ecx
andl $0x1, %ecx
movzbl 0x18(%rbp), %eax
andl $0x20, %eax
shll $0x4, %eax
addl %eax, %ecx
movzbl 0x18(%rbp), %eax
andl $0x4, %eax
shll %eax
addl %eax, %ecx
leaq 0x3c36d5(%rip), %rax    # 0x44ad60
movl %ecx, (%rax)
movzbl 0x18(%rbp), %eax
andl $0xa, %eax
cmpl $0x2, %eax
jne 0x876f6
leaq 0x566070(%rip), %rax    # 0x5ed710
movq 0x80(%rax), %rax
leaq 0x386aa2(%rip), %rcx    # 0x40e150
movl (%rcx), %edi
leaq 0x58d41(%rip), %rcx     # 0xe03f8
movl (%rcx), %esi
leaq 0x3bb684(%rip), %rcx    # 0x442d44
movl (%rcx), %ecx
addl $0x1, %ecx
subl %ecx, %esi
leaq 0x3bb672(%rip), %rcx    # 0x442d40
movl (%rcx), %edx
leaq 0x386a79(%rip), %rcx    # 0x40e150
subl (%rcx), %edx
addl $0x1, %edx
leaq 0x3bb661(%rip), %rcx    # 0x442d44
movl (%rcx), %ecx
leaq 0x3880f4(%rip), %r8     # 0x40f7e0
subl (%r8), %ecx
addl $0x1, %ecx
callq *%rax
jmp 0x8772c
leaq 0x566013(%rip), %rax    # 0x5ed710
movq 0x80(%rax), %rax
leaq 0x3bb641(%rip), %rcx    # 0x442d4c
movl (%rcx), %edx
leaq 0x3bb63c(%rip), %rcx    # 0x442d50
movl (%rcx), %ecx
xorl %esi, %esi
movl %esi, %edi
callq *%rax
movss 0x2a9d4(%rip), %xmm0    # 0xb20f8
movss %xmm0, 0x56626c(%rip)   # 0x5ed998
movzbl 0x18(%rbp), %eax
andl $0x4, %eax
sarl $0x2, %eax
movslq %eax, %rcx
leaq 0x5d7900(%rip), %rax    # 0x65f040
imulq $0x24000, %rcx, %rcx    # imm = 0x24000
addq %rcx, %rax
movswq -0x10(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movswl 0xe(%rax), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x87773
movl $0xb71, %edi            # imm = 0xB71
leaq 0x565fa2(%rip), %rax    # 0x5ed710
callq *0x48(%rax)
jmp 0x877b3
movl $0xb71, %edi            # imm = 0xB71
leaq 0x565f91(%rip), %rax    # 0x5ed710
callq *0x40(%rax)
movl 0x56a420(%rip), %eax    # 0x5f1ba8
leaq 0x3d5f3d(%rip), %rcx    # 0x45d6cc
cmpl (%rcx), %eax
je 0x877b1
leaq 0x3d5f32(%rip), %rax    # 0x45d6cc
movl (%rax), %eax
movl %eax, 0x56a406(%rip)    # 0x5f1ba8
movl $0x100, %edi            # imm = 0x100
leaq 0x565f62(%rip), %rax    # 0x5ed710
callq *0x8(%rax)
jmp 0x877b3
movzbl 0x18(%rbp), %eax
andl $0xa, %eax
cmpl $0x2, %eax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %esi
leaq -0x238(%rbp), %rdi
callq 0x94540
movl -0x20c(%rbp), %ecx
leaq 0x3850ce(%rip), %rax    # 0x40c8b0
movl %ecx, (%rax)
movsd -0x208(%rbp), %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x566154(%rip)   # 0x5ed94c
movsd -0x200(%rbp), %xmm0
movsd %xmm0, 0x56a388(%rip)   # 0x5f1b90
movl -0x40(%rbp), %ecx
leaq 0x3c7d7a(%rip), %rax    # 0x44f58c
movl %ecx, (%rax)
movl -0x44(%rbp), %ecx
leaq 0x3c3546(%rip), %rax    # 0x44ad64
movl %ecx, (%rax)
movsd -0x60(%rbp), %xmm0
movsd %xmm0, 0x5662c3(%rip)   # 0x5edaf0
movsd -0x68(%rbp), %xmm0
movsd %xmm0, 0x5662d6(%rip)   # 0x5edb10
movsd -0x70(%rbp), %xmm0
movsd %xmm0, 0x5662b1(%rip)   # 0x5edaf8
movsd -0x78(%rbp), %xmm0
movsd %xmm0, 0x5662c4(%rip)   # 0x5edb18
jmp 0x88931
jmp 0x8785b
leaq 0x3c350e(%rip), %rax    # 0x44ad70
movswl (%rax), %eax
movl %eax, -0x3c(%rbp)
movw -0x10(%rbp), %cx
leaq 0x3c34fd(%rip), %rax    # 0x44ad70
movw %cx, (%rax)
leaq 0x3c7d0f(%rip), %rax    # 0x44f58c
movl (%rax), %eax
movl %eax, -0x40(%rbp)
movsbl -0x11(%rbp), %ecx
leaq 0x3c7cff(%rip), %rax    # 0x44f58c
movl %ecx, (%rax)
leaq 0x3c34ce(%rip), %rax    # 0x44ad64
movl (%rax), %eax
movl %eax, -0x44(%rbp)
movzbl 0x10(%rbp), %ecx
leaq 0x3c34be(%rip), %rax    # 0x44ad64
movl %ecx, (%rax)
movsd 0x566250(%rip), %xmm0   # 0x5edb00
movsd %xmm0, -0x80(%rbp)
leaq 0x3bb490(%rip), %rax    # 0x442d4c
movl (%rax), %eax
sarl %eax
cvtsi2sd %eax, %xmm0
movsd %xmm0, 0x566234(%rip)   # 0x5edb00
movsd 0x5662a4(%rip), %xmm0   # 0x5edb78
movsd %xmm0, -0xc0(%rbp)
movsd 0x2b414(%rip), %xmm1    # 0xb2cf8
mulsd 0x566214(%rip), %xmm1   # 0x5edb00
movsd 0x2a0dc(%rip), %xmm0    # 0xb19d0
divsd %xmm1, %xmm0
movsd %xmm0, 0x566278(%rip)   # 0x5edb78
movsd 0x566268(%rip), %xmm0   # 0x5edb70
movsd %xmm0, -0xc8(%rbp)
movsd 0x566260(%rip), %xmm0   # 0x5edb78
movsd %xmm0, 0x566250(%rip)   # 0x5edb70
movsd 0x5661e0(%rip), %xmm0   # 0x5edb08
movsd %xmm0, -0x88(%rbp)
leaq 0x3bb419(%rip), %rax    # 0x442d50
movl (%rax), %eax
sarl %eax
cvtsi2sd %eax, %xmm0
movsd %xmm0, 0x5661c1(%rip)   # 0x5edb08
leaq 0x38aba2(%rip), %rax    # 0x4124f0
movq (%rax), %rax
movq %rax, -0x58(%rbp)
leaq 0x1332b4(%rip), %rax    # 0x1bac10
movq (%rax), %rcx
leaq 0x38ab8a(%rip), %rax    # 0x4124f0
movq %rcx, (%rax)
leaq 0x593b0(%rip), %rax     # 0xe0d20
movl (%rax), %eax
movl %eax, -0x48(%rbp)
leaq 0x3bb3d0(%rip), %rax    # 0x442d4c
movl (%rax), %ecx
leaq 0x5939b(%rip), %rax     # 0xe0d20
movl %ecx, (%rax)
leaq 0x230c66(%rip), %rax    # 0x2b85f4
movl (%rax), %eax
movl %eax, -0x4c(%rbp)
leaq 0x3bb3b6(%rip), %rax    # 0x442d50
movl (%rax), %ecx
leaq 0x230c51(%rip), %rax    # 0x2b85f4
movl %ecx, (%rax)
movsd 0x566143(%rip), %xmm0   # 0x5edaf0
movsd %xmm0, -0x60(%rbp)
movsd 0x2a016(%rip), %xmm0    # 0xb19d0
movsd %xmm0, 0x56612e(%rip)   # 0x5edaf0
movsd 0x566146(%rip), %xmm0   # 0x5edb10
movsd %xmm0, -0x68(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x566136(%rip)   # 0x5edb10
movsd 0x566116(%rip), %xmm0   # 0x5edaf8
movsd %xmm0, -0x70(%rbp)
movsd 0x29fe1(%rip), %xmm0    # 0xb19d0
movsd %xmm0, 0x566101(%rip)   # 0x5edaf8
movsd 0x566119(%rip), %xmm0   # 0x5edb18
movsd %xmm0, -0x78(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x566109(%rip)   # 0x5edb18
cmpl $0x3, 0x565f0a(%rip)    # 0x5ed920
jne 0x87a5d
leaq 0x565cf1(%rip), %rax    # 0x5ed710
movq 0x80(%rax), %rax
leaq 0x3bb31f(%rip), %rcx    # 0x442d4c
movl (%rcx), %edx
leaq 0x3bb31a(%rip), %rcx    # 0x442d50
movl (%rcx), %ecx
xorl %esi, %esi
movl %esi, %edi
callq *%rax
movss 0x2a6b2(%rip), %xmm0    # 0xb20f8
movss %xmm0, 0x565f4a(%rip)   # 0x5ed998
movl $0xb71, %edi            # imm = 0xB71
leaq 0x565cb6(%rip), %rax    # 0x5ed710
callq *0x48(%rax)
movl $0x0, -0x38(%rbp)
movzbl 0x18(%rbp), %eax
andl $0x40, %eax
cmpl $0x0, %eax
jne 0x87aa3
movl $0x1, -0x38(%rbp)
movzbl 0x18(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x87aa1
movzbl 0x18(%rbp), %eax
andl $0x20, %eax
cmpl $0x0, %eax
jne 0x87a98
movl $0x2, -0x38(%rbp)
jmp 0x87a9f
movl $0x3, -0x38(%rbp)
jmp 0x87aa1
jmp 0x87aa3
movl -0x38(%rbp), %eax
orl $0x4, %eax
movl %eax, -0x38(%rbp)
movl -0x38(%rbp), %eax
orl $0x20, %eax
movl %eax, -0x38(%rbp)
leaq 0x3c32b4(%rip), %rax    # 0x44ad70
movswq (%rax), %rcx
leaq 0x3c32b9(%rip), %rax    # 0x44ad80
movswl (%rax,%rcx,2), %eax
movl %eax, -0x30(%rbp)
leaq 0x3c329b(%rip), %rax    # 0x44ad70
movswq (%rax), %rcx
leaq 0x3b4a60(%rip), %rax    # 0x43c540
movswl (%rax,%rcx,2), %eax
movl %eax, -0x34(%rbp)
movzbl 0x18(%rbp), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0x87b03
movl $0x0, -0x28(%rbp)
movl $0x0, -0x2c(%rbp)
jmp 0x87b57
leaq 0x3c3266(%rip), %rax    # 0x44ad70
movswq (%rax), %rcx
leaq 0x1efaab(%rip), %rax    # 0x2775c0
movl (%rax,%rcx,4), %eax
sarl $0x8, %eax
andl $0xff, %eax
movsbl %al, %eax
movl -0x30(%rbp), %ecx
sarl %ecx
addl %ecx, %eax
movl %eax, -0x28(%rbp)
leaq 0x3c323c(%rip), %rax    # 0x44ad70
movswq (%rax), %rcx
leaq 0x1efa81(%rip), %rax    # 0x2775c0
movl (%rax,%rcx,4), %eax
sarl $0x10, %eax
andl $0xff, %eax
movsbl %al, %eax
movl -0x34(%rbp), %ecx
sarl %ecx
addl %ecx, %eax
movl %eax, -0x2c(%rbp)
movzbl 0x18(%rbp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x87b6c
movl -0x34(%rbp), %eax
subl -0x2c(%rbp), %eax
movl %eax, -0x2c(%rbp)
movzbl 0x18(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x87d81
movzbl 0x18(%rbp), %eax
andl $0x8, %eax
cmpl $0x0, %eax
jne 0x87c5c
leaq 0x3c9ebd(%rip), %rax    # 0x451a50
cmpl $0x0, (%rax)
je 0x87be6
leaq 0x3e9251(%rip), %rax    # 0x470df0
movl (%rax), %eax
movl %eax, -0x20(%rbp)
movl 0x20(%rbp), %eax
addl 0x30(%rbp), %eax
addl $0x2, %eax
shll $0xf, %eax
movl %eax, -0x24c(%rbp)
movl -0x4(%rbp), %edi
subl $0xa00000, %edi         # imm = 0xA00000
movl -0x4c(%rbp), %esi
shll $0x10, %esi
leaq 0x3c9e8c(%rip), %rax    # 0x451a58
imull $0xc8, (%rax), %edx
callq 0x88940
movl %eax, %ecx
movl -0x24c(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x4(%rbp)
jmp 0x87c27
leaq 0x230a0b(%rip), %rax    # 0x2b85f8
movl (%rax), %eax
movl %eax, -0x20(%rbp)
movl 0x20(%rbp), %eax
addl 0x30(%rbp), %eax
addl $0x2, %eax
shll $0xf, %eax
movl %eax, -0x250(%rbp)
movl -0x4(%rbp), %edi
subl $0xa00000, %edi         # imm = 0xA00000
movl -0x48(%rbp), %esi
movl $0x140, %edx            # imm = 0x140
callq 0x88940
movl %eax, %ecx
movl -0x250(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x4(%rbp)
movl 0x28(%rbp), %eax
addl 0x38(%rbp), %eax
addl $0x2, %eax
shll $0xf, %eax
movl %eax, -0x254(%rbp)
movl -0x8(%rbp), %edi
subl $0x640000, %edi         # imm = 0x640000
movl -0x20(%rbp), %esi
callq 0x88970
movl %eax, %ecx
movl -0x254(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x8(%rbp)
jmp 0x87d73
leaq 0x3c9ded(%rip), %rax    # 0x451a50
cmpl $0x0, (%rax)
je 0x87cdf
leaq 0x3bb0e1(%rip), %rax    # 0x442d50
movl (%rax), %edi
shll $0x10, %edi
leaq 0x3bb0cd(%rip), %rax    # 0x442d48
movl (%rax), %esi
leaq 0x3c9dd4(%rip), %rax    # 0x451a58
imull $0xc8, (%rax), %edx
callq 0x88940
movl %eax, -0x20(%rbp)
leaq 0x3bb0b3(%rip), %rax    # 0x442d4c
movl (%rax), %eax
shll $0xf, %eax
addl $0x8000, %eax           # imm = 0x8000
movl %eax, -0x258(%rbp)
movl -0x4(%rbp), %edi
subl $0xa00000, %edi         # imm = 0xA00000
leaq 0x3bb097(%rip), %rax    # 0x442d50
movl (%rax), %esi
shll $0x10, %esi
leaq 0x3c9d93(%rip), %rax    # 0x451a58
imull $0xc8, (%rax), %edx
callq 0x88940
movl %eax, %ecx
movl -0x258(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x4(%rbp)
jmp 0x87d3e
leaq 0x3bb066(%rip), %rax    # 0x442d4c
movl (%rax), %edi
leaq 0x3bb059(%rip), %rax    # 0x442d48
movl (%rax), %esi
movl $0x140, %edx            # imm = 0x140
callq 0x88940
movl %eax, -0x20(%rbp)
leaq 0x3bb047(%rip), %rax    # 0x442d4c
movl (%rax), %eax
shll $0xf, %eax
addl $0x8000, %eax           # imm = 0x8000
movl %eax, -0x25c(%rbp)
movl -0x4(%rbp), %edi
subl $0xa00000, %edi         # imm = 0xA00000
leaq 0x3bb027(%rip), %rax    # 0x442d4c
movl (%rax), %esi
movl $0x140, %edx            # imm = 0x140
callq 0x88940
movl %eax, %ecx
movl -0x25c(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x4(%rbp)
leaq 0x3bb00b(%rip), %rax    # 0x442d50
movl (%rax), %eax
shll $0xf, %eax
addl $0x8000, %eax           # imm = 0x8000
movl %eax, -0x260(%rbp)
movl -0x8(%rbp), %edi
subl $0x640000, %edi         # imm = 0x640000
movl -0x20(%rbp), %esi
callq 0x88970
movl %eax, %ecx
movl -0x260(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x8(%rbp)
movl -0xc(%rbp), %edi
movl -0x20(%rbp), %esi
callq 0x88970
movl %eax, -0xc(%rbp)
cvtsi2sdl -0xc(%rbp), %xmm0
movsd 0x2e802(%rip), %xmm1    # 0xb6590
mulsd %xmm1, %xmm0
movsd %xmm0, -0xd0(%rbp)
movzwl -0xe(%rbp), %eax
addl $0x200, %eax            # imm = 0x200
andl $0x7ff, %eax            # imm = 0x7FF
movl %eax, %ecx
leaq 0x383aff(%rip), %rax    # 0x40b8b0
movswl (%rax,%rcx,2), %ecx
cvtsi2sd %ecx, %xmm0
movsd -0xd0(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0xd8(%rbp)
movsd %xmm0, -0xe8(%rbp)
movzwl -0xe(%rbp), %ecx
andl $0x7ff, %ecx            # imm = 0x7FF
movswl (%rax,%rcx,2), %eax
cvtsi2sd %eax, %xmm0
mulsd -0xd0(%rbp), %xmm0
movsd %xmm0, -0xe0(%rbp)
movsd %xmm0, -0xf0(%rbp)
movzbl 0x18(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
jne 0x87e17
movzbl 0x18(%rbp), %eax
andl $0x8, %eax
cmpl $0x0, %eax
jne 0x87e66
leaq 0x3125fa(%rip), %rax    # 0x39a418
cvtsi2sdl (%rax), %xmm0
movsd 0x29066(%rip), %xmm1    # 0xb0e90
divsd %xmm1, %xmm0
movsd %xmm0, -0xd0(%rbp)
movsd -0xd0(%rbp), %xmm0
mulsd -0xe8(%rbp), %xmm0
movsd %xmm0, -0xe8(%rbp)
movsd -0xd0(%rbp), %xmm0
mulsd -0xf0(%rbp), %xmm0
movsd %xmm0, -0xf0(%rbp)
cvtsi2sdl -0x4(%rbp), %xmm0
movsd 0x2901d(%rip), %xmm1    # 0xb0e90
divsd %xmm1, %xmm0
cvtsi2sdl -0x28(%rbp), %xmm1
movsd -0xe8(%rbp), %xmm2
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
cvtsi2sdl -0x2c(%rbp), %xmm0
movsd -0xf0(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x130(%rbp)
cvtsi2sdl -0x8(%rbp), %xmm0
movsd 0x28fc3(%rip), %xmm1    # 0xb0e90
divsd %xmm1, %xmm0
cvtsi2sdl -0x28(%rbp), %xmm1
movsd -0xe0(%rbp), %xmm2
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
cvtsi2sdl -0x2c(%rbp), %xmm0
movsd -0xd8(%rbp), %xmm2
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x170(%rbp)
movsd -0x130(%rbp), %xmm1
cvtsi2sdl -0x30(%rbp), %xmm0
movsd -0xe8(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x128(%rbp)
movsd -0x170(%rbp), %xmm1
cvtsi2sdl -0x30(%rbp), %xmm0
movsd -0xe0(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x168(%rbp)
movsd -0x130(%rbp), %xmm1
cvtsi2sdl -0x34(%rbp), %xmm0
movsd -0xf0(%rbp), %xmm2
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x118(%rbp)
movsd -0x170(%rbp), %xmm1
cvtsi2sdl -0x34(%rbp), %xmm0
movsd -0xd8(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x158(%rbp)
movsd -0x128(%rbp), %xmm0
addsd -0x118(%rbp), %xmm0
subsd -0x130(%rbp), %xmm0
movsd %xmm0, -0x120(%rbp)
movsd -0x168(%rbp), %xmm0
addsd -0x158(%rbp), %xmm0
subsd -0x170(%rbp), %xmm0
movsd %xmm0, -0x160(%rbp)
movl $0x4, -0x18(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x565af2(%rip)   # 0x5edb20
xorps %xmm0, %xmm0
movsd %xmm0, 0x565aef(%rip)   # 0x5edb28
movsd 0x2998f(%rip), %xmm0    # 0xb19d0
movsd %xmm0, 0x565ae7(%rip)   # 0x5edb30
movsd -0x130(%rbp), %xmm0
movsd -0x168(%rbp), %xmm2
subsd -0x158(%rbp), %xmm2
movsd -0x128(%rbp), %xmm1
movsd -0x158(%rbp), %xmm3
subsd -0x170(%rbp), %xmm3
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd -0x118(%rbp), %xmm1
movsd -0x170(%rbp), %xmm2
subsd -0x168(%rbp), %xmm2
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x29923(%rip), %xmm0    # 0xb19d0
divsd %xmm1, %xmm0
movsd %xmm0, -0xd0(%rbp)
movsd -0x158(%rbp), %xmm0
subsd -0x170(%rbp), %xmm0
cvtsi2sdl -0x30(%rbp), %xmm1
movsd 0x2e4c2(%rip), %xmm2    # 0xb6598
subsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
mulsd -0xd0(%rbp), %xmm0
movsd %xmm0, 0x565a4a(%rip)   # 0x5edb38
movsd -0x130(%rbp), %xmm0
subsd -0x118(%rbp), %xmm0
cvtsi2sdl -0x30(%rbp), %xmm1
movsd 0x2e48d(%rip), %xmm2    # 0xb6598
subsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
mulsd -0xd0(%rbp), %xmm0
movsd %xmm0, 0x565a1d(%rip)   # 0x5edb40
movsd -0x130(%rbp), %xmm1
movsd 0x565a05(%rip), %xmm0   # 0x5edb38
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm0, %xmm1
xorps %xmm0, %xmm0
addsd %xmm0, %xmm1
movsd -0x170(%rbp), %xmm0
movsd 0x5659db(%rip), %xmm2   # 0x5edb40
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x5659bc(%rip)   # 0x5edb48
movzbl 0x18(%rbp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
jne 0x88274
movsd -0x170(%rbp), %xmm0
subsd -0x168(%rbp), %xmm0
cvtsi2sdl -0x34(%rbp), %xmm1
movsd 0x2e3df(%rip), %xmm2    # 0xb6598
subsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
mulsd -0xd0(%rbp), %xmm0
movsd %xmm0, 0x56597f(%rip)   # 0x5edb50
movsd -0x128(%rbp), %xmm0
subsd -0x130(%rbp), %xmm0
cvtsi2sdl -0x34(%rbp), %xmm1
movsd 0x2e3aa(%rip), %xmm2    # 0xb6598
subsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
mulsd -0xd0(%rbp), %xmm0
movsd %xmm0, 0x565952(%rip)   # 0x5edb58
movsd -0x130(%rbp), %xmm1
movsd 0x56593a(%rip), %xmm0   # 0x5edb50
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm0, %xmm1
xorps %xmm0, %xmm0
addsd %xmm0, %xmm1
movsd -0x170(%rbp), %xmm0
movsd 0x565910(%rip), %xmm2   # 0x5edb58
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x5658f1(%rip)   # 0x5edb60
jmp 0x88355
movsd -0x168(%rbp), %xmm0
subsd -0x170(%rbp), %xmm0
cvtsi2sdl -0x34(%rbp), %xmm1
movsd 0x2e307(%rip), %xmm2    # 0xb6598
subsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
mulsd -0xd0(%rbp), %xmm0
movsd %xmm0, 0x5658a7(%rip)   # 0x5edb50
movsd -0x130(%rbp), %xmm0
subsd -0x128(%rbp), %xmm0
cvtsi2sdl -0x34(%rbp), %xmm1
movsd 0x2e2d2(%rip), %xmm2    # 0xb6598
subsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
mulsd -0xd0(%rbp), %xmm0
movsd %xmm0, 0x56587a(%rip)   # 0x5edb58
cvtsi2sdl -0x34(%rbp), %xmm0
movsd 0x2e2ad(%rip), %xmm1    # 0xb6598
subsd %xmm1, %xmm0
movsd -0x130(%rbp), %xmm1
movsd 0x565851(%rip), %xmm2   # 0x5edb50
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd -0x170(%rbp), %xmm0
movsd 0x56582a(%rip), %xmm2   # 0x5edb58
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x56580b(%rip)   # 0x5edb60
movl 0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, 0x30(%rbp)
movl 0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, 0x38(%rbp)
movl $0x0, -0xc(%rbp)
movl $0x0, -0x1c(%rbp)
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
movl -0x24(%rbp), %eax
cmpl -0x18(%rbp), %eax
jne 0x8838d
movl $0x0, -0x24(%rbp)
movslq -0xc(%rbp), %rax
movsd -0x130(%rbp,%rax,8), %xmm0
movsd %xmm0, -0xa0(%rbp)
movslq -0x24(%rbp), %rax
movsd -0x130(%rbp,%rax,8), %xmm0
subsd -0xa0(%rbp), %xmm0
movsd %xmm0, -0xb0(%rbp)
cvtsi2sdl 0x20(%rbp), %xmm1
movsd -0xa0(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jb 0x8841d
movsd -0xa0(%rbp), %xmm1
cvtsi2sdl 0x30(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jb 0x8841d
movsd -0xa0(%rbp), %xmm0
movslq -0x1c(%rbp), %rax
movsd %xmm0, -0x1b0(%rbp,%rax,8)
movslq -0xc(%rbp), %rax
movsd -0x170(%rbp,%rax,8), %xmm0
movslq -0x1c(%rbp), %rax
movsd %xmm0, -0x1f0(%rbp,%rax,8)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
xorps %xmm0, %xmm0
ucomisd -0xb0(%rbp), %xmm0
jb 0x88439
cvtsi2sdl 0x30(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
jmp 0x88446
cvtsi2sdl 0x20(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd -0x90(%rbp), %xmm0
subsd -0xa0(%rbp), %xmm0
movsd %xmm0, -0xd0(%rbp)
movsd -0xd0(%rbp), %xmm1
movsd -0xb0(%rbp), %xmm0
ucomisd %xmm1, %xmm0
seta %al
andb $0x1, %al
movzbl %al, %eax
xorps %xmm0, %xmm0
ucomisd -0xd0(%rbp), %xmm0
seta %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
je 0x884f4
movsd -0x90(%rbp), %xmm0
movslq -0x1c(%rbp), %rax
movsd %xmm0, -0x1b0(%rbp,%rax,8)
movslq -0x24(%rbp), %rax
movsd -0x170(%rbp,%rax,8), %xmm0
movslq -0xc(%rbp), %rax
subsd -0x170(%rbp,%rax,8), %xmm0
mulsd -0xd0(%rbp), %xmm0
divsd -0xb0(%rbp), %xmm0
movslq -0xc(%rbp), %rax
addsd -0x170(%rbp,%rax,8), %xmm0
movslq -0x1c(%rbp), %rax
movsd %xmm0, -0x1f0(%rbp,%rax,8)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
xorps %xmm0, %xmm0
ucomisd -0xb0(%rbp), %xmm0
jb 0x88510
cvtsi2sdl 0x20(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
jmp 0x8851d
cvtsi2sdl 0x30(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd -0x90(%rbp), %xmm0
subsd -0xa0(%rbp), %xmm0
movsd %xmm0, -0xd0(%rbp)
movsd -0xd0(%rbp), %xmm1
movsd -0xb0(%rbp), %xmm0
ucomisd %xmm1, %xmm0
seta %al
andb $0x1, %al
movzbl %al, %eax
xorps %xmm0, %xmm0
ucomisd -0xd0(%rbp), %xmm0
seta %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
je 0x885cb
movsd -0x90(%rbp), %xmm0
movslq -0x1c(%rbp), %rax
movsd %xmm0, -0x1b0(%rbp,%rax,8)
movslq -0x24(%rbp), %rax
movsd -0x170(%rbp,%rax,8), %xmm0
movslq -0xc(%rbp), %rax
subsd -0x170(%rbp,%rax,8), %xmm0
mulsd -0xd0(%rbp), %xmm0
divsd -0xb0(%rbp), %xmm0
movslq -0xc(%rbp), %rax
addsd -0x170(%rbp,%rax,8), %xmm0
movslq -0x1c(%rbp), %rax
movsd %xmm0, -0x1f0(%rbp,%rax,8)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
movl -0x24(%rbp), %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
jne 0x88375
cmpl $0x3, -0x1c(%rbp)
jl 0x88872
movl $0x0, -0xc(%rbp)
movl $0x0, -0x18(%rbp)
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
movl -0x24(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jne 0x8860b
movl $0x0, -0x24(%rbp)
movslq -0xc(%rbp), %rax
movsd -0x1f0(%rbp,%rax,8), %xmm0
movsd %xmm0, -0xa8(%rbp)
movslq -0x24(%rbp), %rax
movsd -0x1f0(%rbp,%rax,8), %xmm0
subsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0xb8(%rbp)
cvtsi2sdl 0x28(%rbp), %xmm1
movsd -0xa8(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jb 0x8869b
movsd -0xa8(%rbp), %xmm1
cvtsi2sdl 0x38(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jb 0x8869b
movsd -0xa8(%rbp), %xmm0
movslq -0x18(%rbp), %rax
movsd %xmm0, -0x170(%rbp,%rax,8)
movslq -0xc(%rbp), %rax
movsd -0x1b0(%rbp,%rax,8), %xmm0
movslq -0x18(%rbp), %rax
movsd %xmm0, -0x130(%rbp,%rax,8)
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
xorps %xmm0, %xmm0
ucomisd -0xb8(%rbp), %xmm0
jb 0x886b7
cvtsi2sdl 0x38(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
jmp 0x886c4
cvtsi2sdl 0x28(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movsd -0x98(%rbp), %xmm0
subsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0xd0(%rbp)
movsd -0xd0(%rbp), %xmm1
movsd -0xb8(%rbp), %xmm0
ucomisd %xmm1, %xmm0
seta %al
andb $0x1, %al
movzbl %al, %eax
xorps %xmm0, %xmm0
ucomisd -0xd0(%rbp), %xmm0
seta %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
je 0x88772
movsd -0x98(%rbp), %xmm0
movslq -0x18(%rbp), %rax
movsd %xmm0, -0x170(%rbp,%rax,8)
movslq -0x24(%rbp), %rax
movsd -0x1b0(%rbp,%rax,8), %xmm0
movslq -0xc(%rbp), %rax
subsd -0x1b0(%rbp,%rax,8), %xmm0
mulsd -0xd0(%rbp), %xmm0
divsd -0xb8(%rbp), %xmm0
movslq -0xc(%rbp), %rax
addsd -0x1b0(%rbp,%rax,8), %xmm0
movslq -0x18(%rbp), %rax
movsd %xmm0, -0x130(%rbp,%rax,8)
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
xorps %xmm0, %xmm0
ucomisd -0xb8(%rbp), %xmm0
jb 0x8878e
cvtsi2sdl 0x28(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
jmp 0x8879b
cvtsi2sdl 0x38(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movsd -0x98(%rbp), %xmm0
subsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0xd0(%rbp)
movsd -0xd0(%rbp), %xmm1
movsd -0xb8(%rbp), %xmm0
ucomisd %xmm1, %xmm0
seta %al
andb $0x1, %al
movzbl %al, %eax
xorps %xmm0, %xmm0
ucomisd -0xd0(%rbp), %xmm0
seta %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
je 0x88849
movsd -0x98(%rbp), %xmm0
movslq -0x18(%rbp), %rax
movsd %xmm0, -0x170(%rbp,%rax,8)
movslq -0x24(%rbp), %rax
movsd -0x1b0(%rbp,%rax,8), %xmm0
movslq -0xc(%rbp), %rax
subsd -0x1b0(%rbp,%rax,8), %xmm0
mulsd -0xd0(%rbp), %xmm0
divsd -0xb8(%rbp), %xmm0
movslq -0xc(%rbp), %rax
addsd -0x1b0(%rbp,%rax,8), %xmm0
movslq -0x18(%rbp), %rax
movsd %xmm0, -0x130(%rbp,%rax,8)
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
movl -0x24(%rbp), %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
jne 0x885f3
leaq -0x130(%rbp), %rdi
leaq -0x170(%rbp), %rsi
movl -0x18(%rbp), %edx
movl -0x38(%rbp), %ecx
callq 0x73b90
movl -0x3c(%rbp), %eax
movw %ax, %cx
leaq 0x3c24f1(%rip), %rax    # 0x44ad70
movw %cx, (%rax)
movl -0x40(%rbp), %ecx
leaq 0x3c6d00(%rip), %rax    # 0x44f58c
movl %ecx, (%rax)
movl -0x44(%rbp), %ecx
leaq 0x3c24cc(%rip), %rax    # 0x44ad64
movl %ecx, (%rax)
movsd -0x80(%rbp), %xmm0
movsd %xmm0, 0x565259(%rip)   # 0x5edb00
movsd -0xc0(%rbp), %xmm0
movsd %xmm0, 0x5652c1(%rip)   # 0x5edb78
movsd -0xc8(%rbp), %xmm0
movsd %xmm0, 0x5652a9(%rip)   # 0x5edb70
movsd -0x88(%rbp), %xmm0
movsd %xmm0, 0x565231(%rip)   # 0x5edb08
movq -0x58(%rbp), %rcx
leaq 0x389c0e(%rip), %rax    # 0x4124f0
movq %rcx, (%rax)
movl -0x48(%rbp), %ecx
leaq 0x58431(%rip), %rax     # 0xe0d20
movl %ecx, (%rax)
movl -0x4c(%rbp), %ecx
leaq 0x22fcf9(%rip), %rax    # 0x2b85f4
movl %ecx, (%rax)
movsd -0x60(%rbp), %xmm0
movsd %xmm0, 0x5651e6(%rip)   # 0x5edaf0
movsd -0x68(%rbp), %xmm0
movsd %xmm0, 0x5651f9(%rip)   # 0x5edb10
movsd -0x70(%rbp), %xmm0
movsd %xmm0, 0x5651d4(%rip)   # 0x5edaf8
movsd -0x78(%rbp), %xmm0
movsd %xmm0, 0x5651e7(%rip)   # 0x5edb18
addq $0x260, %rsp            # imm = 0x260
popq %rbp
retq
nopw (%rax,%rax)