// File: /workspace/github_c_makefile_star2_O0/jonof[P]jftekwar/jfbuild/src/engine.c
// Function: clipmove
int clipmove (int *x, int *y, int *z, short *sectnum,
		 int xvect, int yvect,
		 int walldist, int ceildist, int flordist, unsigned int cliptype)
{
	walltype *wal, *wal2;
	spritetype *spr;
	sectortype *sec, *sec2;
	int i, j, templong1, templong2;
	int oxvect, oyvect, goalx, goaly, intx, inty, lx, ly, retval;
	int k, l, clipsectcnt, startwall, endwall, cstat, dasect;
	int x1, y1, x2, y2, cx, cy, rad, xmin, ymin, xmax, ymax, daz, daz2;
	int bsz, dax, day, xoff, yoff, xspan, yspan, cosang, sinang, tilenum;
	int xrepeat, yrepeat, gx, gy, dx, dy, dasprclipmask, dawalclipmask;
	int hitwall, cnt, clipyou;

	if (((xvect|yvect) == 0) || (*sectnum < 0)) return(0);
	retval = 0;

	oxvect = xvect;
	oyvect = yvect;

	goalx = (*x) + (xvect>>14);
	goaly = (*y) + (yvect>>14);


	clipnum = 0;

	cx = (((*x)+goalx)>>1);
	cy = (((*y)+goaly)>>1);
		//Extra walldist for sprites on sector lines
	gx = goalx-(*x); gy = goaly-(*y);
	rad = nsqrtasm(gx*gx + gy*gy) + MAXCLIPDIST+walldist + 8;
	xmin = cx-rad; ymin = cy-rad;
	xmax = cx+rad; ymax = cy+rad;

	dawalclipmask = (cliptype&65535);        //CLIPMASK0 = 0x00010001
	dasprclipmask = (cliptype>>16);          //CLIPMASK1 = 0x01000040

	clipsectorlist[0] = (*sectnum);
	clipsectcnt = 0; clipsectnum = 1;
	do
	{
		dasect = clipsectorlist[clipsectcnt++];
		sec = &sector[dasect];
		startwall = sec->wallptr; endwall = startwall + sec->wallnum;
		for(j=startwall,wal=&wall[startwall];j<endwall;j++,wal++)
		{
			wal2 = &wall[wal->point2];
			if ((wal->x < xmin) && (wal2->x < xmin)) continue;
			if ((wal->x > xmax) && (wal2->x > xmax)) continue;
			if ((wal->y < ymin) && (wal2->y < ymin)) continue;
			if ((wal->y > ymax) && (wal2->y > ymax)) continue;

			x1 = wal->x; y1 = wal->y; x2 = wal2->x; y2 = wal2->y;

			dx = x2-x1; dy = y2-y1;
			if (dx*((*y)-y1) < ((*x)-x1)*dy) continue;  //If wall's not facing you

			if (dx > 0) dax = dx*(ymin-y1); else dax = dx*(ymax-y1);
			if (dy > 0) day = dy*(xmax-x1); else day = dy*(xmin-x1);
			if (dax >= day) continue;

			clipyou = 0;
			if ((wal->nextsector < 0) || (wal->cstat&dawalclipmask)) clipyou = 1;
			else if (editstatus == 0)
			{
				if (rintersect(*x,*y,0,gx,gy,0,x1,y1,x2,y2,&dax,&day,&daz) == 0)
					dax = *x, day = *y;
				daz = getflorzofslope((short)dasect,dax,day);
				daz2 = getflorzofslope(wal->nextsector,dax,day);

				sec2 = &sector[wal->nextsector];
				if (daz2 < daz-(1<<8))
					if ((sec2->floorstat&1) == 0)
						if ((*z) >= daz2-(flordist-1)) clipyou = 1;
				if (clipyou == 0)
				{
					daz = getceilzofslope((short)dasect,dax,day);
					daz2 = getceilzofslope(wal->nextsector,dax,day);
					if (daz2 > daz+(1<<8))
						if ((sec2->ceilingstat&1) == 0)
							if ((*z) <= daz2+(ceildist-1)) clipyou = 1;
				}
			}

			if (clipyou)
			{
					//Add 2 boxes at endpoints
				bsz = walldist; if (gx < 0) bsz = -bsz;
				addclipline(x1-bsz,y1-bsz,x1-bsz,y1+bsz,(short)j+32768);
				addclipline(x2-bsz,y2-bsz,x2-bsz,y2+bsz,(short)j+32768);
				bsz = walldist; if (gy < 0) bsz = -bsz;
				addclipline(x1+bsz,y1-bsz,x1-bsz,y1-bsz,(short)j+32768);
				addclipline(x2+bsz,y2-bsz,x2-bsz,y2-bsz,(short)j+32768);

				dax = walldist; if (dy > 0) dax = -dax;
				day = walldist; if (dx < 0) day = -day;
				addclipline(x1+dax,y1+day,x2+dax,y2+day,(short)j+32768);
			}
			else
			{
				for(i=clipsectnum-1;i>=0;i--)
					if (wal->nextsector == clipsectorlist[i]) break;
				if (i < 0) clipsectorlist[clipsectnum++] = wal->nextsector;
			}
		}

		for(j=headspritesect[dasect];j>=0;j=nextspritesect[j])
		{
			spr = &sprite[j];
			cstat = spr->cstat;
			if ((cstat&dasprclipmask) == 0) continue;
			x1 = spr->x; y1 = spr->y;
			switch(cstat&48)
			{
				case 0:
					if ((x1 >= xmin) && (x1 <= xmax) && (y1 >= ymin) && (y1 <= ymax))
					{
						k = ((tilesizy[spr->picnum]*spr->yrepeat)<<2);
						if (cstat&128) daz = spr->z+(k>>1); else daz = spr->z;
						if (picanm[spr->picnum]&0x00ff0000) daz -= ((int)((signed char)((picanm[spr->picnum]>>16)&255))*spr->yrepeat<<2);
						if (((*z) < daz+ceildist) && ((*z) > daz-k-flordist))
						{
							bsz = (spr->clipdist<<2)+walldist; if (gx < 0) bsz = -bsz;
							addclipline(x1-bsz,y1-bsz,x1-bsz,y1+bsz,(short)j+49152);
							bsz = (spr->clipdist<<2)+walldist; if (gy < 0) bsz = -bsz;
							addclipline(x1+bsz,y1-bsz,x1-bsz,y1-bsz,(short)j+49152);
						}
					}
					break;
				case 16:
					k = ((tilesizy[spr->picnum]*spr->yrepeat)<<2);
					if (cstat&128) daz = spr->z+(k>>1); else daz = spr->z;
					if (picanm[spr->picnum]&0x00ff0000) daz -= ((int)((signed char)((picanm[spr->picnum]>>16)&255))*spr->yrepeat<<2);
					daz2 = daz-k;
					daz += ceildist; daz2 -= flordist;
					if (((*z) < daz) && ((*z) > daz2))
					{
							//These lines get the 2 points of the rotated sprite
							//Given: (x1, y1) starts out as the center point
						tilenum = spr->picnum;
						xoff = (int)((signed char)((picanm[tilenum]>>8)&255))+((int)spr->xoffset);
						if ((cstat&4) > 0) xoff = -xoff;
						k = spr->ang; l = spr->xrepeat;
						dax = sintable[k&2047]*l; day = sintable[(k+1536)&2047]*l;
						l = tilesizx[tilenum]; k = (l>>1)+xoff;
						x1 -= mulscale16(dax,k); x2 = x1+mulscale16(dax,l);
						y1 -= mulscale16(day,k); y2 = y1+mulscale16(day,l);
						if (clipinsideboxline(cx,cy,x1,y1,x2,y2,rad) != 0)
						{
							dax = mulscale14(sintable[(spr->ang+256+512)&2047],walldist);
							day = mulscale14(sintable[(spr->ang+256)&2047],walldist);

							if ((x1-(*x))*(y2-(*y)) >= (x2-(*x))*(y1-(*y)))   //Front
							{
								addclipline(x1+dax,y1+day,x2+day,y2-dax,(short)j+49152);
							}
							else
							{
								if ((cstat&64) != 0) continue;
								addclipline(x2-dax,y2-day,x1-day,y1+dax,(short)j+49152);
							}

								//Side blocker
							if ((x2-x1)*((*x)-x1) + (y2-y1)*((*y)-y1) < 0)
								{ addclipline(x1-day,y1+dax,x1+dax,y1+day,(short)j+49152); }
							else if ((x1-x2)*((*x)-x2) + (y1-y2)*((*y)-y2) < 0)
								{ addclipline(x2+day,y2-dax,x2-dax,y2-day,(short)j+49152); }
						}
					}
					break;
				case 32:
					daz = spr->z+ceildist;
					daz2 = spr->z-flordist;
					if (((*z) < daz) && ((*z) > daz2))
					{
						if ((cstat&64) != 0)
							if (((*z) > spr->z) == ((cstat&8)==0)) continue;

						tilenum = spr->picnum;
						xoff = (int)((signed char)((picanm[tilenum]>>8)&255))+((int)spr->xoffset);
						yoff = (int)((signed char)((picanm[tilenum]>>16)&255))+((int)spr->yoffset);
						if ((cstat&4) > 0) xoff = -xoff;
						if ((cstat&8) > 0) yoff = -yoff;

						k = spr->ang;
						cosang = sintable[(k+512)&2047]; sinang = sintable[k];
						xspan = tilesizx[tilenum]; xrepeat = spr->xrepeat;
						yspan = tilesizy[tilenum]; yrepeat = spr->yrepeat;

						dax = ((xspan>>1)+xoff)*xrepeat; day = ((yspan>>1)+yoff)*yrepeat;
						rxi[0] = x1 + dmulscale16(sinang,dax,cosang,day);
						ryi[0] = y1 + dmulscale16(sinang,day,-cosang,dax);
						l = xspan*xrepeat;
						rxi[1] = rxi[0] - mulscale16(sinang,l);
						ryi[1] = ryi[0] + mulscale16(cosang,l);
						l = yspan*yrepeat;
						k = -mulscale16(cosang,l); rxi[2] = rxi[1]+k; rxi[3] = rxi[0]+k;
						k = -mulscale16(sinang,l); ryi[2] = ryi[1]+k; ryi[3] = ryi[0]+k;

						dax = mulscale14(sintable[(spr->ang-256+512)&2047],walldist);
						day = mulscale14(sintable[(spr->ang-256)&2047],walldist);

						if ((rxi[0]-(*x))*(ryi[1]-(*y)) < (rxi[1]-(*x))*(ryi[0]-(*y)))
						{
							if (clipinsideboxline(cx,cy,rxi[1],ryi[1],rxi[0],ryi[0],rad) != 0)
								addclipline(rxi[1]-day,ryi[1]+dax,rxi[0]+dax,ryi[0]+day,(short)j+49152);
						}
						else if ((rxi[2]-(*x))*(ryi[3]-(*y)) < (rxi[3]-(*x))*(ryi[2]-(*y)))
						{
							if (clipinsideboxline(cx,cy,rxi[3],ryi[3],rxi[2],ryi[2],rad) != 0)
								addclipline(rxi[3]+day,ryi[3]-dax,rxi[2]-dax,ryi[2]-day,(short)j+49152);
						}

						if ((rxi[1]-(*x))*(ryi[2]-(*y)) < (rxi[2]-(*x))*(ryi[1]-(*y)))
						{
							if (clipinsideboxline(cx,cy,rxi[2],ryi[2],rxi[1],ryi[1],rad) != 0)
								addclipline(rxi[2]-dax,ryi[2]-day,rxi[1]-day,ryi[1]+dax,(short)j+49152);
						}
						else if ((rxi[3]-(*x))*(ryi[0]-(*y)) < (rxi[0]-(*x))*(ryi[3]-(*y)))
						{
							if (clipinsideboxline(cx,cy,rxi[0],ryi[0],rxi[3],ryi[3],rad) != 0)
								addclipline(rxi[0]+dax,ryi[0]+day,rxi[3]+day,ryi[3]-dax,(short)j+49152);
						}
					}
					break;
			}
		}
	} while (clipsectcnt < clipsectnum);


	hitwall = 0;
	cnt = clipmoveboxtracenum;
	do
	{
		intx = goalx; inty = goaly;
		if ((hitwall = raytrace(*x, *y, &intx, &inty)) >= 0)
		{
			lx = clipit[hitwall].x2-clipit[hitwall].x1;
			ly = clipit[hitwall].y2-clipit[hitwall].y1;
			templong2 = lx*lx + ly*ly;
			if (templong2 > 0)
			{
				templong1 = (goalx-intx)*lx + (goaly-inty)*ly;

				if ((klabs(templong1)>>11) < templong2)
					i = divscale20(templong1,templong2);
				else
					i = 0;
				goalx = mulscale20(lx,i)+intx;
				goaly = mulscale20(ly,i)+inty;
			}

			templong1 = dmulscale6(lx,oxvect,ly,oyvect);
			for(i=cnt+1;i<=clipmoveboxtracenum;i++)
			{
				j = hitwalls[i];
				templong2 = dmulscale6(clipit[j].x2-clipit[j].x1,oxvect,clipit[j].y2-clipit[j].y1,oyvect);
				if ((templong1^templong2) < 0)
				{
					updatesector(*x,*y,sectnum);
					return(retval);
				}
			}

			keepaway(&goalx, &goaly, hitwall);
			xvect = ((goalx-intx)<<14);
			yvect = ((goaly-inty)<<14);

			if (cnt == clipmoveboxtracenum) retval = clipobjectval[hitwall];
			hitwalls[cnt] = hitwall;
		}
		cnt--;

		*x = intx;
		*y = inty;
	} while (((xvect|yvect) != 0) && (hitwall >= 0) && (cnt > 0));

	for(j=0;j<clipsectnum;j++)
		if (inside(*x,*y,clipsectorlist[j]) == 1)
		{
			*sectnum = clipsectorlist[j];
			return(retval);
		}

	*sectnum = -1; templong1 = 0x7fffffff;
	for(j=numsectors-1;j>=0;j--)
		if (inside(*x,*y,j) == 1)
		{
			if (sector[j].ceilingstat&2)
				templong2 = (getceilzofslope((short)j,*x,*y)-(*z));
			else
				templong2 = (sector[j].ceilingz-(*z));

			if (templong2 > 0)
			{
				if (templong2 < templong1)
					{ *sectnum = j; templong1 = templong2; }
			}
			else
			{
				if (sector[j].floorstat&2)
					templong2 = ((*z)-getflorzofslope((short)j,*x,*y));
				else
					templong2 = ((*z)-sector[j].floorz);

				if (templong2 <= 0)
				{
					*sectnum = j;
					return(retval);
				}
				if (templong2 < templong1)
					{ *sectnum = j; templong1 = templong2; }
			}
		}

	return(retval);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x190, %rsp            # imm = 0x190
movl 0x28(%rbp), %eax
movl 0x20(%rbp), %eax
movl 0x18(%rbp), %eax
movl 0x10(%rbp), %eax
movq %rdi, -0x30(%rbp)
movq %rsi, -0x38(%rbp)
movq %rdx, -0x40(%rbp)
movq %rcx, -0x48(%rbp)
movl %r8d, -0x4c(%rbp)
movl %r9d, -0x50(%rbp)
movl -0x4c(%rbp), %eax
orl -0x50(%rbp), %eax
cmpl $0x0, %eax
je 0x52add
movq -0x48(%rbp), %rax
movswl (%rax), %eax
cmpl $0x0, %eax
jge 0x52ae9
movl $0x0, -0x24(%rbp)
jmp 0x55046
movl $0x0, -0xac(%rbp)
movl -0x4c(%rbp), %eax
movl %eax, -0x8c(%rbp)
movl -0x50(%rbp), %eax
movl %eax, -0x90(%rbp)
movq -0x30(%rbp), %rax
movl (%rax), %eax
movl -0x4c(%rbp), %ecx
sarl $0xe, %ecx
addl %ecx, %eax
movl %eax, -0x94(%rbp)
movq -0x38(%rbp), %rax
movl (%rax), %eax
movl -0x50(%rbp), %ecx
sarl $0xe, %ecx
addl %ecx, %eax
movl %eax, -0x98(%rbp)
movw $0x0, 0x419a4a(%rip)    # 0x46c580
movq -0x30(%rbp), %rax
movl (%rax), %eax
addl -0x94(%rbp), %eax
sarl %eax
movl %eax, -0xdc(%rbp)
movq -0x38(%rbp), %rax
movl (%rax), %eax
addl -0x98(%rbp), %eax
sarl %eax
movl %eax, -0xe0(%rbp)
movl -0x94(%rbp), %eax
movq -0x30(%rbp), %rcx
subl (%rcx), %eax
movl %eax, -0x130(%rbp)
movl -0x98(%rbp), %eax
movq -0x38(%rbp), %rcx
subl (%rcx), %eax
movl %eax, -0x134(%rbp)
movl -0x130(%rbp), %edi
imull -0x130(%rbp), %edi
movl -0x134(%rbp), %eax
imull -0x134(%rbp), %eax
addl %eax, %edi
callq 0x37570
addl $0x400, %eax            # imm = 0x400
addl 0x10(%rbp), %eax
addl $0x8, %eax
movl %eax, -0xe4(%rbp)
movl -0xdc(%rbp), %eax
subl -0xe4(%rbp), %eax
movl %eax, -0xe8(%rbp)
movl -0xe0(%rbp), %eax
subl -0xe4(%rbp), %eax
movl %eax, -0xec(%rbp)
movl -0xdc(%rbp), %eax
addl -0xe4(%rbp), %eax
movl %eax, -0xf0(%rbp)
movl -0xe0(%rbp), %eax
addl -0xe4(%rbp), %eax
movl %eax, -0xf4(%rbp)
movl 0x28(%rbp), %eax
andl $0xffff, %eax           # imm = 0xFFFF
movl %eax, -0x144(%rbp)
movl 0x28(%rbp), %eax
shrl $0x10, %eax
movl %eax, -0x140(%rbp)
movq -0x48(%rbp), %rax
movw (%rax), %ax
movw %ax, 0x41915c(%rip)     # 0x46bd80
movl $0x0, -0xb8(%rbp)
movw $0x1, 0x41994b(%rip)    # 0x46c582
movl -0xb8(%rbp), %eax
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, -0xb8(%rbp)
movslq %eax, %rcx
leaq 0x41912e(%rip), %rax    # 0x46bd80
movswl (%rax,%rcx,2), %eax
movl %eax, -0xc8(%rbp)
movslq -0xc8(%rbp), %rcx
leaq 0x22d956(%rip), %rax    # 0x2805c0
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rax
movswl (%rax), %eax
movl %eax, -0xbc(%rbp)
movl -0xbc(%rbp), %eax
movq -0x70(%rbp), %rcx
movswl 0x2(%rcx), %ecx
addl %ecx, %eax
movl %eax, -0xc0(%rbp)
movl -0xbc(%rbp), %eax
movl %eax, -0x80(%rbp)
movslq -0xbc(%rbp), %rcx
leaq 0x1a2901(%rip), %rax    # 0x1f55b0
shlq $0x5, %rcx
addq %rcx, %rax
movq %rax, -0x58(%rbp)
movl -0x80(%rbp), %eax
cmpl -0xc0(%rbp), %eax
jge 0x535f7
movq -0x58(%rbp), %rax
movswq 0x8(%rax), %rcx
leaq 0x1a28d7(%rip), %rax    # 0x1f55b0
shlq $0x5, %rcx
addq %rcx, %rax
movq %rax, -0x60(%rbp)
movq -0x58(%rbp), %rax
movl (%rax), %eax
cmpl -0xe8(%rbp), %eax
jge 0x52d05
movq -0x60(%rbp), %rax
movl (%rax), %eax
cmpl -0xe8(%rbp), %eax
jge 0x52d05
jmp 0x535dd
movq -0x58(%rbp), %rax
movl (%rax), %eax
cmpl -0xf0(%rbp), %eax
jle 0x52d26
movq -0x60(%rbp), %rax
movl (%rax), %eax
cmpl -0xf0(%rbp), %eax
jle 0x52d26
jmp 0x535dd
movq -0x58(%rbp), %rax
movl 0x4(%rax), %eax
cmpl -0xec(%rbp), %eax
jge 0x52d49
movq -0x60(%rbp), %rax
movl 0x4(%rax), %eax
cmpl -0xec(%rbp), %eax
jge 0x52d49
jmp 0x535dd
movq -0x58(%rbp), %rax
movl 0x4(%rax), %eax
cmpl -0xf4(%rbp), %eax
jle 0x52d6c
movq -0x60(%rbp), %rax
movl 0x4(%rax), %eax
cmpl -0xf4(%rbp), %eax
jle 0x52d6c
jmp 0x535dd
movq -0x58(%rbp), %rax
movl (%rax), %eax
movl %eax, -0xcc(%rbp)
movq -0x58(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, -0xd0(%rbp)
movq -0x60(%rbp), %rax
movl (%rax), %eax
movl %eax, -0xd4(%rbp)
movq -0x60(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, -0xd8(%rbp)
movl -0xd4(%rbp), %eax
subl -0xcc(%rbp), %eax
movl %eax, -0x138(%rbp)
movl -0xd8(%rbp), %eax
subl -0xd0(%rbp), %eax
movl %eax, -0x13c(%rbp)
movl -0x138(%rbp), %eax
movq -0x38(%rbp), %rcx
movl (%rcx), %ecx
subl -0xd0(%rbp), %ecx
imull %ecx, %eax
movq -0x30(%rbp), %rcx
movl (%rcx), %ecx
subl -0xcc(%rbp), %ecx
imull -0x13c(%rbp), %ecx
cmpl %ecx, %eax
jge 0x52df3
jmp 0x535dd
cmpl $0x0, -0x138(%rbp)
jle 0x52e19
movl -0x138(%rbp), %eax
movl -0xec(%rbp), %ecx
subl -0xd0(%rbp), %ecx
imull %ecx, %eax
movl %eax, -0x104(%rbp)
jmp 0x52e34
movl -0x138(%rbp), %eax
movl -0xf4(%rbp), %ecx
subl -0xd0(%rbp), %ecx
imull %ecx, %eax
movl %eax, -0x104(%rbp)
cmpl $0x0, -0x13c(%rbp)
jle 0x52e5a
movl -0x13c(%rbp), %eax
movl -0xf0(%rbp), %ecx
subl -0xcc(%rbp), %ecx
imull %ecx, %eax
movl %eax, -0x108(%rbp)
jmp 0x52e75
movl -0x13c(%rbp), %eax
movl -0xe8(%rbp), %ecx
subl -0xcc(%rbp), %ecx
imull %ecx, %eax
movl %eax, -0x108(%rbp)
movl -0x104(%rbp), %eax
cmpl -0x108(%rbp), %eax
jl 0x52e88
jmp 0x535dd
movl $0x0, -0x150(%rbp)
movq -0x58(%rbp), %rax
movswl 0xc(%rax), %eax
cmpl $0x0, %eax
jl 0x52eb2
movq -0x58(%rbp), %rax
movswl 0xe(%rax), %eax
andl -0x144(%rbp), %eax
cmpl $0x0, %eax
je 0x52ec1
movl $0x1, -0x150(%rbp)
jmp 0x530ad
movswl 0x1a26d4(%rip), %eax    # 0x1f559c
cmpl $0x0, %eax
jne 0x530ab
movq -0x30(%rbp), %rax
movl (%rax), %edi
movq -0x38(%rbp), %rax
movl (%rax), %esi
movl -0x130(%rbp), %ecx
movl -0x134(%rbp), %r8d
movl -0xcc(%rbp), %r12d
movl -0xd0(%rbp), %r15d
movl -0xd4(%rbp), %r14d
movl -0xd8(%rbp), %ebx
xorl %r9d, %r9d
leaq -0x104(%rbp), %r11
leaq -0x108(%rbp), %r10
leaq -0xf8(%rbp), %rax
movl %r9d, %edx
movl %r12d, (%rsp)
movl %r15d, 0x8(%rsp)
movl %r14d, 0x10(%rsp)
movl %ebx, 0x18(%rsp)
movq %r11, 0x20(%rsp)
movq %r10, 0x28(%rsp)
movq %rax, 0x30(%rsp)
callq 0x51b50
cmpl $0x0, %eax
jne 0x52f63
movq -0x30(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x104(%rbp)
movq -0x38(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x108(%rbp)
movl -0xc8(%rbp), %eax
movl -0x104(%rbp), %esi
movl -0x108(%rbp), %edx
movswl %ax, %edi
callq 0x55060
movl %eax, -0xf8(%rbp)
movq -0x58(%rbp), %rax
movw 0xc(%rax), %ax
movl -0x104(%rbp), %esi
movl -0x108(%rbp), %edx
movswl %ax, %edi
callq 0x55060
movl %eax, -0xfc(%rbp)
movq -0x58(%rbp), %rax
movswq 0xc(%rax), %rcx
leaq 0x22d60b(%rip), %rax    # 0x2805c0
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x78(%rbp)
movl -0xfc(%rbp), %eax
movl -0xf8(%rbp), %ecx
subl $0x100, %ecx            # imm = 0x100
cmpl %ecx, %eax
jge 0x5300c
movq -0x78(%rbp), %rax
movswl 0xe(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0x5300a
movq -0x40(%rbp), %rax
movl (%rax), %eax
movl -0xfc(%rbp), %ecx
movl 0x20(%rbp), %edx
subl $0x1, %edx
subl %edx, %ecx
cmpl %ecx, %eax
jl 0x53008
movl $0x1, -0x150(%rbp)
jmp 0x5300a
jmp 0x5300c
cmpl $0x0, -0x150(%rbp)
jne 0x530a9
movl -0xc8(%rbp), %eax
movl -0x104(%rbp), %esi
movl -0x108(%rbp), %edx
movswl %ax, %edi
callq 0x551d0
movl %eax, -0xf8(%rbp)
movq -0x58(%rbp), %rax
movw 0xc(%rax), %ax
movl -0x104(%rbp), %esi
movl -0x108(%rbp), %edx
movswl %ax, %edi
callq 0x551d0
movl %eax, -0xfc(%rbp)
movl -0xfc(%rbp), %eax
movl -0xf8(%rbp), %ecx
addl $0x100, %ecx            # imm = 0x100
cmpl %ecx, %eax
jle 0x530a7
movq -0x78(%rbp), %rax
movswl 0xc(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0x530a5
movq -0x40(%rbp), %rax
movl (%rax), %eax
movl -0xfc(%rbp), %ecx
movl 0x18(%rbp), %edx
subl $0x1, %edx
addl %edx, %ecx
cmpl %ecx, %eax
jg 0x530a3
movl $0x1, -0x150(%rbp)
jmp 0x530a5
jmp 0x530a7
jmp 0x530a9
jmp 0x530ab
jmp 0x530ad
cmpl $0x0, -0x150(%rbp)
je 0x5356a
movl 0x10(%rbp), %eax
movl %eax, -0x100(%rbp)
cmpl $0x0, -0x130(%rbp)
jge 0x530da
xorl %eax, %eax
subl -0x100(%rbp), %eax
movl %eax, -0x100(%rbp)
movswl 0x41949f(%rip), %eax    # 0x46c580
cmpl $0x400, %eax            # imm = 0x400
jge 0x531b0
movl -0xcc(%rbp), %ecx
subl -0x100(%rbp), %ecx
movswq 0x419480(%rip), %rdx    # 0x46c580
leaq 0x419489(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
movl -0xd0(%rbp), %ecx
subl -0x100(%rbp), %ecx
movswq 0x41945c(%rip), %rdx    # 0x46c580
leaq 0x419465(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movl -0xcc(%rbp), %ecx
subl -0x100(%rbp), %ecx
movswq 0x419437(%rip), %rdx    # 0x46c580
leaq 0x419440(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x8(%rax)
movl -0xd0(%rbp), %ecx
addl -0x100(%rbp), %ecx
movswq 0x419412(%rip), %rdx    # 0x46c580
leaq 0x41941b(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0xc(%rax)
movl -0x80(%rbp), %eax
cwtl
addl $0x8000, %eax           # imm = 0x8000
movw %ax, %dx
movswq 0x4193ed(%rip), %rcx    # 0x46c580
leaq 0x41d3f6(%rip), %rax    # 0x470590
movw %dx, (%rax,%rcx,2)
movw 0x4193db(%rip), %ax     # 0x46c580
addw $0x1, %ax
movw %ax, 0x4193d0(%rip)     # 0x46c580
movswl 0x4193c9(%rip), %eax    # 0x46c580
cmpl $0x400, %eax            # imm = 0x400
jge 0x53286
movl -0xd4(%rbp), %ecx
subl -0x100(%rbp), %ecx
movswq 0x4193aa(%rip), %rdx    # 0x46c580
leaq 0x4193b3(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
movl -0xd8(%rbp), %ecx
subl -0x100(%rbp), %ecx
movswq 0x419386(%rip), %rdx    # 0x46c580
leaq 0x41938f(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movl -0xd4(%rbp), %ecx
subl -0x100(%rbp), %ecx
movswq 0x419361(%rip), %rdx    # 0x46c580
leaq 0x41936a(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x8(%rax)
movl -0xd8(%rbp), %ecx
addl -0x100(%rbp), %ecx
movswq 0x41933c(%rip), %rdx    # 0x46c580
leaq 0x419345(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0xc(%rax)
movl -0x80(%rbp), %eax
cwtl
addl $0x8000, %eax           # imm = 0x8000
movw %ax, %dx
movswq 0x419317(%rip), %rcx    # 0x46c580
leaq 0x41d320(%rip), %rax    # 0x470590
movw %dx, (%rax,%rcx,2)
movw 0x419305(%rip), %ax     # 0x46c580
addw $0x1, %ax
movw %ax, 0x4192fa(%rip)     # 0x46c580
movl 0x10(%rbp), %eax
movl %eax, -0x100(%rbp)
cmpl $0x0, -0x134(%rbp)
jge 0x532a6
xorl %eax, %eax
subl -0x100(%rbp), %eax
movl %eax, -0x100(%rbp)
movswl 0x4192d3(%rip), %eax    # 0x46c580
cmpl $0x400, %eax            # imm = 0x400
jge 0x5337c
movl -0xcc(%rbp), %ecx
addl -0x100(%rbp), %ecx
movswq 0x4192b4(%rip), %rdx    # 0x46c580
leaq 0x4192bd(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
movl -0xd0(%rbp), %ecx
subl -0x100(%rbp), %ecx
movswq 0x419290(%rip), %rdx    # 0x46c580
leaq 0x419299(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movl -0xcc(%rbp), %ecx
subl -0x100(%rbp), %ecx
movswq 0x41926b(%rip), %rdx    # 0x46c580
leaq 0x419274(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x8(%rax)
movl -0xd0(%rbp), %ecx
subl -0x100(%rbp), %ecx
movswq 0x419246(%rip), %rdx    # 0x46c580
leaq 0x41924f(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0xc(%rax)
movl -0x80(%rbp), %eax
cwtl
addl $0x8000, %eax           # imm = 0x8000
movw %ax, %dx
movswq 0x419221(%rip), %rcx    # 0x46c580
leaq 0x41d22a(%rip), %rax    # 0x470590
movw %dx, (%rax,%rcx,2)
movw 0x41920f(%rip), %ax     # 0x46c580
addw $0x1, %ax
movw %ax, 0x419204(%rip)     # 0x46c580
movswl 0x4191fd(%rip), %eax    # 0x46c580
cmpl $0x400, %eax            # imm = 0x400
jge 0x53452
movl -0xd4(%rbp), %ecx
addl -0x100(%rbp), %ecx
movswq 0x4191de(%rip), %rdx    # 0x46c580
leaq 0x4191e7(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
movl -0xd8(%rbp), %ecx
subl -0x100(%rbp), %ecx
movswq 0x4191ba(%rip), %rdx    # 0x46c580
leaq 0x4191c3(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movl -0xd4(%rbp), %ecx
subl -0x100(%rbp), %ecx
movswq 0x419195(%rip), %rdx    # 0x46c580
leaq 0x41919e(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x8(%rax)
movl -0xd8(%rbp), %ecx
subl -0x100(%rbp), %ecx
movswq 0x419170(%rip), %rdx    # 0x46c580
leaq 0x419179(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0xc(%rax)
movl -0x80(%rbp), %eax
cwtl
addl $0x8000, %eax           # imm = 0x8000
movw %ax, %dx
movswq 0x41914b(%rip), %rcx    # 0x46c580
leaq 0x41d154(%rip), %rax    # 0x470590
movw %dx, (%rax,%rcx,2)
movw 0x419139(%rip), %ax     # 0x46c580
addw $0x1, %ax
movw %ax, 0x41912e(%rip)     # 0x46c580
movl 0x10(%rbp), %eax
movl %eax, -0x104(%rbp)
cmpl $0x0, -0x13c(%rbp)
jle 0x53472
xorl %eax, %eax
subl -0x104(%rbp), %eax
movl %eax, -0x104(%rbp)
movl 0x10(%rbp), %eax
movl %eax, -0x108(%rbp)
cmpl $0x0, -0x138(%rbp)
jge 0x53492
xorl %eax, %eax
subl -0x108(%rbp), %eax
movl %eax, -0x108(%rbp)
movswl 0x4190e7(%rip), %eax    # 0x46c580
cmpl $0x400, %eax            # imm = 0x400
jge 0x53568
movl -0xcc(%rbp), %ecx
addl -0x104(%rbp), %ecx
movswq 0x4190c8(%rip), %rdx    # 0x46c580
leaq 0x4190d1(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
movl -0xd0(%rbp), %ecx
addl -0x108(%rbp), %ecx
movswq 0x4190a4(%rip), %rdx    # 0x46c580
leaq 0x4190ad(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movl -0xd4(%rbp), %ecx
addl -0x104(%rbp), %ecx
movswq 0x41907f(%rip), %rdx    # 0x46c580
leaq 0x419088(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x8(%rax)
movl -0xd8(%rbp), %ecx
addl -0x108(%rbp), %ecx
movswq 0x41905a(%rip), %rdx    # 0x46c580
leaq 0x419063(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0xc(%rax)
movl -0x80(%rbp), %eax
cwtl
addl $0x8000, %eax           # imm = 0x8000
movw %ax, %dx
movswq 0x419035(%rip), %rcx    # 0x46c580
leaq 0x41d03e(%rip), %rax    # 0x470590
movw %dx, (%rax,%rcx,2)
movw 0x419023(%rip), %ax     # 0x46c580
addw $0x1, %ax
movw %ax, 0x419018(%rip)     # 0x46c580
jmp 0x535db
movswl 0x419011(%rip), %eax    # 0x46c582
subl $0x1, %eax
movl %eax, -0x7c(%rbp)
cmpl $0x0, -0x7c(%rbp)
jl 0x535a7
movq -0x58(%rbp), %rax
movswl 0xc(%rax), %eax
movslq -0x7c(%rbp), %rdx
leaq 0x4187f0(%rip), %rcx    # 0x46bd80
movswl (%rcx,%rdx,2), %ecx
cmpl %ecx, %eax
jne 0x5359a
jmp 0x535a7
jmp 0x5359c
movl -0x7c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x7c(%rbp)
jmp 0x53577
cmpl $0x0, -0x7c(%rbp)
jge 0x535d9
movq -0x58(%rbp), %rax
movw 0xc(%rax), %dx
movw 0x418fc6(%rip), %ax     # 0x46c582
movw %ax, %cx
addw $0x1, %cx
movw %cx, 0x418fb8(%rip)     # 0x46c582
movswq %ax, %rcx
leaq 0x4187ab(%rip), %rax    # 0x46bd80
movw %dx, (%rax,%rcx,2)
jmp 0x535db
jmp 0x535dd
movl -0x80(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x80(%rbp)
movq -0x58(%rbp), %rax
addq $0x20, %rax
movq %rax, -0x58(%rbp)
jmp 0x52cba
movslq -0xc8(%rbp), %rcx
leaq 0x395a6b(%rip), %rax    # 0x3e9070
movswl (%rax,%rcx,2), %eax
movl %eax, -0x80(%rbp)
cmpl $0x0, -0x80(%rbp)
jl 0x54a98
movslq -0x80(%rbp), %rcx
leaq 0x2661ef(%rip), %rax    # 0x2b9810
imulq $0x2c, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
movswl 0xc(%rax), %eax
movl %eax, -0xc4(%rbp)
movl -0xc4(%rbp), %eax
andl -0x140(%rbp), %eax
cmpl $0x0, %eax
jne 0x53650
jmp 0x54a81
movq -0x68(%rbp), %rax
movl (%rax), %eax
movl %eax, -0xcc(%rbp)
movq -0x68(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, -0xd0(%rbp)
movl -0xc4(%rbp), %eax
andl $0x30, %eax
movl %eax, -0x154(%rbp)
je 0x536a1
jmp 0x5367c
movl -0x154(%rbp), %eax
subl $0x10, %eax
je 0x539dd
jmp 0x5368d
movl -0x154(%rbp), %eax
subl $0x20, %eax
je 0x54155
jmp 0x54a7f
movl -0xcc(%rbp), %eax
cmpl -0xe8(%rbp), %eax
jl 0x539d8
movl -0xcc(%rbp), %eax
cmpl -0xf0(%rbp), %eax
jg 0x539d8
movl -0xd0(%rbp), %eax
cmpl -0xec(%rbp), %eax
jl 0x539d8
movl -0xd0(%rbp), %eax
cmpl -0xf4(%rbp), %eax
jg 0x539d8
movq -0x68(%rbp), %rax
movswq 0xe(%rax), %rcx
leaq 0x3e8e47(%rip), %rax    # 0x43c540
movswl (%rax,%rcx,2), %eax
movq -0x68(%rbp), %rcx
movzbl 0x15(%rcx), %ecx
imull %ecx, %eax
shll $0x2, %eax
movl %eax, -0xb0(%rbp)
movl -0xc4(%rbp), %eax
andl $0x80, %eax
cmpl $0x0, %eax
je 0x5373a
movq -0x68(%rbp), %rax
movl 0x8(%rax), %eax
movl -0xb0(%rbp), %ecx
sarl %ecx
addl %ecx, %eax
movl %eax, -0xf8(%rbp)
jmp 0x53747
movq -0x68(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0xf8(%rbp)
movq -0x68(%rbp), %rax
movswq 0xe(%rax), %rcx
leaq 0x223e69(%rip), %rax    # 0x2775c0
movl (%rax,%rcx,4), %eax
andl $0xff0000, %eax         # imm = 0xFF0000
cmpl $0x0, %eax
je 0x5379e
movq -0x68(%rbp), %rax
movswq 0xe(%rax), %rcx
leaq 0x223e4c(%rip), %rax    # 0x2775c0
movl (%rax,%rcx,4), %eax
sarl $0x10, %eax
andl $0xff, %eax
movsbl %al, %ecx
movq -0x68(%rbp), %rax
movzbl 0x15(%rax), %eax
imull %eax, %ecx
shll $0x2, %ecx
movl -0xf8(%rbp), %eax
subl %ecx, %eax
movl %eax, -0xf8(%rbp)
movq -0x40(%rbp), %rax
movl (%rax), %eax
movl -0xf8(%rbp), %ecx
addl 0x18(%rbp), %ecx
cmpl %ecx, %eax
jge 0x539d6
movq -0x40(%rbp), %rax
movl (%rax), %eax
movl -0xf8(%rbp), %ecx
subl -0xb0(%rbp), %ecx
subl 0x20(%rbp), %ecx
cmpl %ecx, %eax
jle 0x539d6
movq -0x68(%rbp), %rax
movzbl 0x12(%rax), %eax
shll $0x2, %eax
addl 0x10(%rbp), %eax
movl %eax, -0x100(%rbp)
cmpl $0x0, -0x130(%rbp)
jge 0x537fd
xorl %eax, %eax
subl -0x100(%rbp), %eax
movl %eax, -0x100(%rbp)
movswl 0x418d7c(%rip), %eax    # 0x46c580
cmpl $0x400, %eax            # imm = 0x400
jge 0x538d3
movl -0xcc(%rbp), %ecx
subl -0x100(%rbp), %ecx
movswq 0x418d5d(%rip), %rdx    # 0x46c580
leaq 0x418d66(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
movl -0xd0(%rbp), %ecx
subl -0x100(%rbp), %ecx
movswq 0x418d39(%rip), %rdx    # 0x46c580
leaq 0x418d42(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movl -0xcc(%rbp), %ecx
subl -0x100(%rbp), %ecx
movswq 0x418d14(%rip), %rdx    # 0x46c580
leaq 0x418d1d(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x8(%rax)
movl -0xd0(%rbp), %ecx
addl -0x100(%rbp), %ecx
movswq 0x418cef(%rip), %rdx    # 0x46c580
leaq 0x418cf8(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0xc(%rax)
movl -0x80(%rbp), %eax
cwtl
addl $0xc000, %eax           # imm = 0xC000
movw %ax, %dx
movswq 0x418cca(%rip), %rcx    # 0x46c580
leaq 0x41ccd3(%rip), %rax    # 0x470590
movw %dx, (%rax,%rcx,2)
movw 0x418cb8(%rip), %ax     # 0x46c580
addw $0x1, %ax
movw %ax, 0x418cad(%rip)     # 0x46c580
movq -0x68(%rbp), %rax
movzbl 0x12(%rax), %eax
shll $0x2, %eax
addl 0x10(%rbp), %eax
movl %eax, -0x100(%rbp)
cmpl $0x0, -0x134(%rbp)
jge 0x538fe
xorl %eax, %eax
subl -0x100(%rbp), %eax
movl %eax, -0x100(%rbp)
movswl 0x418c7b(%rip), %eax    # 0x46c580
cmpl $0x400, %eax            # imm = 0x400
jge 0x539d4
movl -0xcc(%rbp), %ecx
addl -0x100(%rbp), %ecx
movswq 0x418c5c(%rip), %rdx    # 0x46c580
leaq 0x418c65(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
movl -0xd0(%rbp), %ecx
subl -0x100(%rbp), %ecx
movswq 0x418c38(%rip), %rdx    # 0x46c580
leaq 0x418c41(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movl -0xcc(%rbp), %ecx
subl -0x100(%rbp), %ecx
movswq 0x418c13(%rip), %rdx    # 0x46c580
leaq 0x418c1c(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x8(%rax)
movl -0xd0(%rbp), %ecx
subl -0x100(%rbp), %ecx
movswq 0x418bee(%rip), %rdx    # 0x46c580
leaq 0x418bf7(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0xc(%rax)
movl -0x80(%rbp), %eax
cwtl
addl $0xc000, %eax           # imm = 0xC000
movw %ax, %dx
movswq 0x418bc9(%rip), %rcx    # 0x46c580
leaq 0x41cbd2(%rip), %rax    # 0x470590
movw %dx, (%rax,%rcx,2)
movw 0x418bb7(%rip), %ax     # 0x46c580
addw $0x1, %ax
movw %ax, 0x418bac(%rip)     # 0x46c580
jmp 0x539d6
jmp 0x539d8
jmp 0x54a7f
movq -0x68(%rbp), %rax
movswq 0xe(%rax), %rcx
leaq 0x3e8b53(%rip), %rax    # 0x43c540
movswl (%rax,%rcx,2), %eax
movq -0x68(%rbp), %rcx
movzbl 0x15(%rcx), %ecx
imull %ecx, %eax
shll $0x2, %eax
movl %eax, -0xb0(%rbp)
movl -0xc4(%rbp), %eax
andl $0x80, %eax
cmpl $0x0, %eax
je 0x53a2e
movq -0x68(%rbp), %rax
movl 0x8(%rax), %eax
movl -0xb0(%rbp), %ecx
sarl %ecx
addl %ecx, %eax
movl %eax, -0xf8(%rbp)
jmp 0x53a3b
movq -0x68(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0xf8(%rbp)
movq -0x68(%rbp), %rax
movswq 0xe(%rax), %rcx
leaq 0x223b75(%rip), %rax    # 0x2775c0
movl (%rax,%rcx,4), %eax
andl $0xff0000, %eax         # imm = 0xFF0000
cmpl $0x0, %eax
je 0x53a92
movq -0x68(%rbp), %rax
movswq 0xe(%rax), %rcx
leaq 0x223b58(%rip), %rax    # 0x2775c0
movl (%rax,%rcx,4), %eax
sarl $0x10, %eax
andl $0xff, %eax
movsbl %al, %ecx
movq -0x68(%rbp), %rax
movzbl 0x15(%rax), %eax
imull %eax, %ecx
shll $0x2, %ecx
movl -0xf8(%rbp), %eax
subl %ecx, %eax
movl %eax, -0xf8(%rbp)
movl -0xf8(%rbp), %eax
subl -0xb0(%rbp), %eax
movl %eax, -0xfc(%rbp)
movl 0x18(%rbp), %eax
addl -0xf8(%rbp), %eax
movl %eax, -0xf8(%rbp)
movl 0x20(%rbp), %ecx
movl -0xfc(%rbp), %eax
subl %ecx, %eax
movl %eax, -0xfc(%rbp)
movq -0x40(%rbp), %rax
movl (%rax), %eax
cmpl -0xf8(%rbp), %eax
jge 0x54150
movq -0x40(%rbp), %rax
movl (%rax), %eax
cmpl -0xfc(%rbp), %eax
jle 0x54150
movq -0x68(%rbp), %rax
movswl 0xe(%rax), %eax
movl %eax, -0x124(%rbp)
movslq -0x124(%rbp), %rcx
leaq 0x223abc(%rip), %rax    # 0x2775c0
movl (%rax,%rcx,4), %eax
sarl $0x8, %eax
andl $0xff, %eax
movsbl %al, %eax
movq -0x68(%rbp), %rcx
movsbl 0x16(%rcx), %ecx
addl %ecx, %eax
movl %eax, -0x10c(%rbp)
movl -0xc4(%rbp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
jle 0x53b3e
xorl %eax, %eax
subl -0x10c(%rbp), %eax
movl %eax, -0x10c(%rbp)
movq -0x68(%rbp), %rax
movswl 0x1c(%rax), %eax
movl %eax, -0xb0(%rbp)
movq -0x68(%rbp), %rax
movzbl 0x14(%rax), %eax
movl %eax, -0xb4(%rbp)
movl -0xb0(%rbp), %eax
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %rcx
leaq 0x3b7d41(%rip), %rax    # 0x40b8b0
movswl (%rax,%rcx,2), %eax
imull -0xb4(%rbp), %eax
movl %eax, -0x104(%rbp)
movl -0xb0(%rbp), %eax
addl $0x600, %eax            # imm = 0x600
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %rcx
leaq 0x3b7d16(%rip), %rax    # 0x40b8b0
movswl (%rax,%rcx,2), %eax
imull -0xb4(%rbp), %eax
movl %eax, -0x108(%rbp)
movslq -0x124(%rbp), %rcx
leaq 0x3f71c7(%rip), %rax    # 0x44ad80
movswl (%rax,%rcx,2), %eax
movl %eax, -0xb4(%rbp)
movl -0xb4(%rbp), %eax
sarl %eax
addl -0x10c(%rbp), %eax
movl %eax, -0xb0(%rbp)
movl -0x104(%rbp), %edi
movl -0xb0(%rbp), %esi
callq 0x39010
movl %eax, %ecx
movl -0xcc(%rbp), %eax
subl %ecx, %eax
movl %eax, -0xcc(%rbp)
movl -0xcc(%rbp), %eax
movl %eax, -0x15c(%rbp)
movl -0x104(%rbp), %edi
movl -0xb4(%rbp), %esi
callq 0x39010
movl %eax, %ecx
movl -0x15c(%rbp), %eax
addl %ecx, %eax
movl %eax, -0xd4(%rbp)
movl -0x108(%rbp), %edi
movl -0xb0(%rbp), %esi
callq 0x39010
movl %eax, %ecx
movl -0xd0(%rbp), %eax
subl %ecx, %eax
movl %eax, -0xd0(%rbp)
movl -0xd0(%rbp), %eax
movl %eax, -0x158(%rbp)
movl -0x108(%rbp), %edi
movl -0xb4(%rbp), %esi
callq 0x39010
movl %eax, %ecx
movl -0x158(%rbp), %eax
addl %ecx, %eax
movl %eax, -0xd8(%rbp)
movl -0xdc(%rbp), %edi
movl -0xe0(%rbp), %esi
movl -0xcc(%rbp), %edx
movl -0xd0(%rbp), %ecx
movl -0xd4(%rbp), %r8d
movl -0xd8(%rbp), %r9d
movl -0xe4(%rbp), %eax
movl %eax, (%rsp)
callq 0x4ecd0
cmpl $0x0, %eax
je 0x5414e
movq -0x68(%rbp), %rax
movswl 0x1c(%rax), %eax
addl $0x100, %eax            # imm = 0x100
addl $0x200, %eax            # imm = 0x200
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %rcx
leaq 0x3b7bdf(%rip), %rax    # 0x40b8b0
movswl (%rax,%rcx,2), %edi
movl 0x10(%rbp), %esi
callq 0x52680
movl %eax, -0x104(%rbp)
movq -0x68(%rbp), %rax
movswl 0x1c(%rax), %eax
addl $0x100, %eax            # imm = 0x100
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %rcx
leaq 0x3b7bb1(%rip), %rax    # 0x40b8b0
movswl (%rax,%rcx,2), %edi
movl 0x10(%rbp), %esi
callq 0x52680
movl %eax, -0x108(%rbp)
movl -0xcc(%rbp), %eax
movq -0x30(%rbp), %rcx
subl (%rcx), %eax
movl -0xd8(%rbp), %ecx
movq -0x38(%rbp), %rdx
subl (%rdx), %ecx
imull %ecx, %eax
movl -0xd4(%rbp), %ecx
movq -0x30(%rbp), %rdx
subl (%rdx), %ecx
movl -0xd0(%rbp), %edx
movq -0x38(%rbp), %rsi
subl (%rsi), %edx
imull %edx, %ecx
cmpl %ecx, %eax
jl 0x53e2a
movswl 0x41882a(%rip), %eax    # 0x46c580
cmpl $0x400, %eax            # imm = 0x400
jge 0x53e25
movl -0xcc(%rbp), %ecx
addl -0x104(%rbp), %ecx
movswq 0x41880b(%rip), %rdx    # 0x46c580
leaq 0x418814(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
movl -0xd0(%rbp), %ecx
addl -0x108(%rbp), %ecx
movswq 0x4187e7(%rip), %rdx    # 0x46c580
leaq 0x4187f0(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movl -0xd4(%rbp), %ecx
addl -0x108(%rbp), %ecx
movswq 0x4187c2(%rip), %rdx    # 0x46c580
leaq 0x4187cb(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x8(%rax)
movl -0xd8(%rbp), %ecx
subl -0x104(%rbp), %ecx
movswq 0x41879d(%rip), %rdx    # 0x46c580
leaq 0x4187a6(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0xc(%rax)
movl -0x80(%rbp), %eax
cwtl
addl $0xc000, %eax           # imm = 0xC000
movw %ax, %dx
movswq 0x418778(%rip), %rcx    # 0x46c580
leaq 0x41c781(%rip), %rax    # 0x470590
movw %dx, (%rax,%rcx,2)
movw 0x418766(%rip), %ax     # 0x46c580
addw $0x1, %ax
movw %ax, 0x41875b(%rip)     # 0x46c580
jmp 0x53f15
movl -0xc4(%rbp), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x53e3d
jmp 0x54a81
movswl 0x41873c(%rip), %eax    # 0x46c580
cmpl $0x400, %eax            # imm = 0x400
jge 0x53f13
movl -0xd4(%rbp), %ecx
subl -0x104(%rbp), %ecx
movswq 0x41871d(%rip), %rdx    # 0x46c580
leaq 0x418726(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
movl -0xd8(%rbp), %ecx
subl -0x108(%rbp), %ecx
movswq 0x4186f9(%rip), %rdx    # 0x46c580
leaq 0x418702(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movl -0xcc(%rbp), %ecx
subl -0x108(%rbp), %ecx
movswq 0x4186d4(%rip), %rdx    # 0x46c580
leaq 0x4186dd(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x8(%rax)
movl -0xd0(%rbp), %ecx
addl -0x104(%rbp), %ecx
movswq 0x4186af(%rip), %rdx    # 0x46c580
leaq 0x4186b8(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0xc(%rax)
movl -0x80(%rbp), %eax
cwtl
addl $0xc000, %eax           # imm = 0xC000
movw %ax, %dx
movswq 0x41868a(%rip), %rcx    # 0x46c580
leaq 0x41c693(%rip), %rax    # 0x470590
movw %dx, (%rax,%rcx,2)
movw 0x418678(%rip), %ax     # 0x46c580
addw $0x1, %ax
movw %ax, 0x41866d(%rip)     # 0x46c580
jmp 0x53f15
movl -0xd4(%rbp), %eax
subl -0xcc(%rbp), %eax
movq -0x30(%rbp), %rcx
movl (%rcx), %ecx
subl -0xcc(%rbp), %ecx
imull %ecx, %eax
movl -0xd8(%rbp), %ecx
subl -0xd0(%rbp), %ecx
movq -0x38(%rbp), %rdx
movl (%rdx), %edx
subl -0xd0(%rbp), %edx
imull %edx, %ecx
addl %ecx, %eax
cmpl $0x0, %eax
jge 0x54031
movswl 0x418623(%rip), %eax    # 0x46c580
cmpl $0x400, %eax            # imm = 0x400
jge 0x5402c
movl -0xcc(%rbp), %ecx
subl -0x108(%rbp), %ecx
movswq 0x418604(%rip), %rdx    # 0x46c580
leaq 0x41860d(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
movl -0xd0(%rbp), %ecx
addl -0x104(%rbp), %ecx
movswq 0x4185e0(%rip), %rdx    # 0x46c580
leaq 0x4185e9(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movl -0xcc(%rbp), %ecx
addl -0x104(%rbp), %ecx
movswq 0x4185bb(%rip), %rdx    # 0x46c580
leaq 0x4185c4(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x8(%rax)
movl -0xd0(%rbp), %ecx
addl -0x108(%rbp), %ecx
movswq 0x418596(%rip), %rdx    # 0x46c580
leaq 0x41859f(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0xc(%rax)
movl -0x80(%rbp), %eax
cwtl
addl $0xc000, %eax           # imm = 0xC000
movw %ax, %dx
movswq 0x418571(%rip), %rcx    # 0x46c580
leaq 0x41c57a(%rip), %rax    # 0x470590
movw %dx, (%rax,%rcx,2)
movw 0x41855f(%rip), %ax     # 0x46c580
addw $0x1, %ax
movw %ax, 0x418554(%rip)     # 0x46c580
jmp 0x5414c
movl -0xcc(%rbp), %eax
subl -0xd4(%rbp), %eax
movq -0x30(%rbp), %rcx
movl (%rcx), %ecx
subl -0xd4(%rbp), %ecx
imull %ecx, %eax
movl -0xd0(%rbp), %ecx
subl -0xd8(%rbp), %ecx
movq -0x38(%rbp), %rdx
movl (%rdx), %edx
subl -0xd8(%rbp), %edx
imull %edx, %ecx
addl %ecx, %eax
cmpl $0x0, %eax
jge 0x5414a
movswl 0x418507(%rip), %eax    # 0x46c580
cmpl $0x400, %eax            # imm = 0x400
jge 0x54148
movl -0xd4(%rbp), %ecx
addl -0x108(%rbp), %ecx
movswq 0x4184e8(%rip), %rdx    # 0x46c580
leaq 0x4184f1(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
movl -0xd8(%rbp), %ecx
subl -0x104(%rbp), %ecx
movswq 0x4184c4(%rip), %rdx    # 0x46c580
leaq 0x4184cd(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movl -0xd4(%rbp), %ecx
subl -0x104(%rbp), %ecx
movswq 0x41849f(%rip), %rdx    # 0x46c580
leaq 0x4184a8(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x8(%rax)
movl -0xd8(%rbp), %ecx
subl -0x108(%rbp), %ecx
movswq 0x41847a(%rip), %rdx    # 0x46c580
leaq 0x418483(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0xc(%rax)
movl -0x80(%rbp), %eax
cwtl
addl $0xc000, %eax           # imm = 0xC000
movw %ax, %dx
movswq 0x418455(%rip), %rcx    # 0x46c580
leaq 0x41c45e(%rip), %rax    # 0x470590
movw %dx, (%rax,%rcx,2)
movw 0x418443(%rip), %ax     # 0x46c580
addw $0x1, %ax
movw %ax, 0x418438(%rip)     # 0x46c580
jmp 0x5414a
jmp 0x5414c
jmp 0x5414e
jmp 0x54150
jmp 0x54a7f
movq -0x68(%rbp), %rax
movl 0x8(%rax), %eax
addl 0x18(%rbp), %eax
movl %eax, -0xf8(%rbp)
movq -0x68(%rbp), %rax
movl 0x8(%rax), %eax
subl 0x20(%rbp), %eax
movl %eax, -0xfc(%rbp)
movq -0x40(%rbp), %rax
movl (%rax), %eax
cmpl -0xf8(%rbp), %eax
jge 0x54a7d
movq -0x40(%rbp), %rax
movl (%rax), %eax
cmpl -0xfc(%rbp), %eax
jle 0x54a7d
movl -0xc4(%rbp), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x541dc
movq -0x40(%rbp), %rax
movl (%rax), %eax
movq -0x68(%rbp), %rcx
cmpl 0x8(%rcx), %eax
setg %al
andb $0x1, %al
movzbl %al, %eax
movl -0xc4(%rbp), %ecx
andl $0x8, %ecx
cmpl $0x0, %ecx
sete %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jne 0x541da
jmp 0x54a81
jmp 0x541dc
movq -0x68(%rbp), %rax
movswl 0xe(%rax), %eax
movl %eax, -0x124(%rbp)
movslq -0x124(%rbp), %rcx
leaq 0x2233c8(%rip), %rax    # 0x2775c0
movl (%rax,%rcx,4), %eax
sarl $0x8, %eax
andl $0xff, %eax
movsbl %al, %eax
movq -0x68(%rbp), %rcx
movsbl 0x16(%rcx), %ecx
addl %ecx, %eax
movl %eax, -0x10c(%rbp)
movslq -0x124(%rbp), %rcx
leaq 0x22339c(%rip), %rax    # 0x2775c0
movl (%rax,%rcx,4), %eax
sarl $0x10, %eax
andl $0xff, %eax
movsbl %al, %eax
movq -0x68(%rbp), %rcx
movsbl 0x17(%rcx), %ecx
addl %ecx, %eax
movl %eax, -0x110(%rbp)
movl -0xc4(%rbp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
jle 0x5425e
xorl %eax, %eax
subl -0x10c(%rbp), %eax
movl %eax, -0x10c(%rbp)
movl -0xc4(%rbp), %eax
andl $0x8, %eax
cmpl $0x0, %eax
jle 0x5427a
xorl %eax, %eax
subl -0x110(%rbp), %eax
movl %eax, -0x110(%rbp)
movq -0x68(%rbp), %rax
movswl 0x1c(%rax), %eax
movl %eax, -0xb0(%rbp)
movl -0xb0(%rbp), %eax
addl $0x200, %eax            # imm = 0x200
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %rcx
leaq 0x3b760e(%rip), %rax    # 0x40b8b0
movswl (%rax,%rcx,2), %eax
movl %eax, -0x11c(%rbp)
movslq -0xb0(%rbp), %rcx
leaq 0x3b75f6(%rip), %rax    # 0x40b8b0
movswl (%rax,%rcx,2), %eax
movl %eax, -0x120(%rbp)
movslq -0x124(%rbp), %rcx
leaq 0x3f6aae(%rip), %rax    # 0x44ad80
movswl (%rax,%rcx,2), %eax
movl %eax, -0x114(%rbp)
movq -0x68(%rbp), %rax
movzbl 0x14(%rax), %eax
movl %eax, -0x128(%rbp)
movslq -0x124(%rbp), %rcx
leaq 0x3e8248(%rip), %rax    # 0x43c540
movswl (%rax,%rcx,2), %eax
movl %eax, -0x118(%rbp)
movq -0x68(%rbp), %rax
movzbl 0x15(%rax), %eax
movl %eax, -0x12c(%rbp)
movl -0x114(%rbp), %eax
sarl %eax
addl -0x10c(%rbp), %eax
imull -0x128(%rbp), %eax
movl %eax, -0x104(%rbp)
movl -0x118(%rbp), %eax
sarl %eax
addl -0x110(%rbp), %eax
imull -0x12c(%rbp), %eax
movl %eax, -0x108(%rbp)
movl -0xcc(%rbp), %eax
movl %eax, -0x16c(%rbp)
movl -0x120(%rbp), %edi
movl -0x104(%rbp), %esi
movl -0x11c(%rbp), %edx
movl -0x108(%rbp), %ecx
callq 0x43950
movl %eax, %ecx
movl -0x16c(%rbp), %eax
addl %ecx, %eax
movl %eax, 0x41ca11(%rip)    # 0x470d90
movl -0xd0(%rbp), %eax
movl %eax, -0x168(%rbp)
movl -0x120(%rbp), %edi
movl -0x108(%rbp), %esi
xorl %edx, %edx
subl -0x11c(%rbp), %edx
movl -0x104(%rbp), %ecx
callq 0x43950
movl %eax, %ecx
movl -0x168(%rbp), %eax
addl %ecx, %eax
movl %eax, 0x41c9f6(%rip)    # 0x470db0
movl -0x114(%rbp), %eax
imull -0x128(%rbp), %eax
movl %eax, -0xb4(%rbp)
movl 0x41c9bd(%rip), %eax    # 0x470d90
movl %eax, -0x164(%rbp)
movl -0x120(%rbp), %edi
movl -0xb4(%rbp), %esi
callq 0x39010
movl %eax, %ecx
movl -0x164(%rbp), %eax
subl %ecx, %eax
movl %eax, 0x41c99a(%rip)    # 0x470d94
movl 0x41c9b0(%rip), %eax    # 0x470db0
movl %eax, -0x160(%rbp)
movl -0x11c(%rbp), %edi
movl -0xb4(%rbp), %esi
callq 0x39010
movl %eax, %ecx
movl -0x160(%rbp), %eax
addl %ecx, %eax
movl %eax, 0x41c98d(%rip)    # 0x470db4
movl -0x118(%rbp), %eax
imull -0x12c(%rbp), %eax
movl %eax, -0xb4(%rbp)
movl -0x11c(%rbp), %edi
movl -0xb4(%rbp), %esi
callq 0x39010
movl %eax, %ecx
xorl %eax, %eax
subl %ecx, %eax
movl %eax, -0xb0(%rbp)
movl 0x41c937(%rip), %eax    # 0x470d94
addl -0xb0(%rbp), %eax
movl %eax, 0x41c92f(%rip)    # 0x470d98
movl 0x41c921(%rip), %eax    # 0x470d90
addl -0xb0(%rbp), %eax
movl %eax, 0x41c921(%rip)    # 0x470d9c
movl -0x120(%rbp), %edi
movl -0xb4(%rbp), %esi
callq 0x39010
movl %eax, %ecx
xorl %eax, %eax
subl %ecx, %eax
movl %eax, -0xb0(%rbp)
movl 0x41c916(%rip), %eax    # 0x470db4
addl -0xb0(%rbp), %eax
movl %eax, 0x41c90e(%rip)    # 0x470db8
movl 0x41c900(%rip), %eax    # 0x470db0
addl -0xb0(%rbp), %eax
movl %eax, 0x41c900(%rip)    # 0x470dbc
movq -0x68(%rbp), %rax
movswl 0x1c(%rax), %eax
subl $0x100, %eax            # imm = 0x100
addl $0x200, %eax            # imm = 0x200
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %rcx
leaq 0x3b73d3(%rip), %rax    # 0x40b8b0
movswl (%rax,%rcx,2), %edi
movl 0x10(%rbp), %esi
callq 0x52680
movl %eax, -0x104(%rbp)
movq -0x68(%rbp), %rax
movswl 0x1c(%rax), %eax
subl $0x100, %eax            # imm = 0x100
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %rcx
leaq 0x3b73a5(%rip), %rax    # 0x40b8b0
movswl (%rax,%rcx,2), %edi
movl 0x10(%rbp), %esi
callq 0x52680
movl %eax, -0x108(%rbp)
movl 0x41c86d(%rip), %eax    # 0x470d90
movq -0x30(%rbp), %rcx
subl (%rcx), %eax
movl 0x41c885(%rip), %ecx    # 0x470db4
movq -0x38(%rbp), %rdx
subl (%rdx), %ecx
imull %ecx, %eax
movl 0x41c856(%rip), %ecx    # 0x470d94
movq -0x30(%rbp), %rdx
subl (%rdx), %ecx
movl 0x41c866(%rip), %edx    # 0x470db0
movq -0x38(%rbp), %rsi
subl (%rsi), %edx
imull %edx, %ecx
cmpl %ecx, %eax
jge 0x54675
movl -0xdc(%rbp), %edi
movl -0xe0(%rbp), %esi
movl 0x41c827(%rip), %edx    # 0x470d94
movl 0x41c841(%rip), %ecx    # 0x470db4
movl 0x41c816(%rip), %r8d    # 0x470d90
movl 0x41c82f(%rip), %r9d    # 0x470db0
movl -0xe4(%rbp), %eax
movl %eax, (%rsp)
callq 0x4ecd0
cmpl $0x0, %eax
je 0x54670
movswl 0x417fe1(%rip), %eax    # 0x46c580
cmpl $0x400, %eax            # imm = 0x400
jge 0x5466e
movl 0x41c7e4(%rip), %ecx    # 0x470d94
subl -0x108(%rbp), %ecx
movswq 0x417fc2(%rip), %rdx    # 0x46c580
leaq 0x417fcb(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
movl 0x41c7e0(%rip), %ecx    # 0x470db4
addl -0x104(%rbp), %ecx
movswq 0x417f9e(%rip), %rdx    # 0x46c580
leaq 0x417fa7(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movl 0x41c797(%rip), %ecx    # 0x470d90
addl -0x104(%rbp), %ecx
movswq 0x417f79(%rip), %rdx    # 0x46c580
leaq 0x417f82(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x8(%rax)
movl 0x41c792(%rip), %ecx    # 0x470db0
addl -0x108(%rbp), %ecx
movswq 0x417f54(%rip), %rdx    # 0x46c580
leaq 0x417f5d(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0xc(%rax)
movl -0x80(%rbp), %eax
cwtl
addl $0xc000, %eax           # imm = 0xC000
movw %ax, %dx
movswq 0x417f2f(%rip), %rcx    # 0x46c580
leaq 0x41bf38(%rip), %rax    # 0x470590
movw %dx, (%rax,%rcx,2)
movw 0x417f1d(%rip), %ax     # 0x46c580
addw $0x1, %ax
movw %ax, 0x417f12(%rip)     # 0x46c580
jmp 0x54670
jmp 0x547cc
movl 0x41c71d(%rip), %eax    # 0x470d98
movq -0x30(%rbp), %rcx
subl (%rcx), %eax
movl 0x41c735(%rip), %ecx    # 0x470dbc
movq -0x38(%rbp), %rdx
subl (%rdx), %ecx
imull %ecx, %eax
movl 0x41c706(%rip), %ecx    # 0x470d9c
movq -0x30(%rbp), %rdx
subl (%rdx), %ecx
movl 0x41c716(%rip), %edx    # 0x470db8
movq -0x38(%rbp), %rsi
subl (%rsi), %edx
imull %edx, %ecx
cmpl %ecx, %eax
jge 0x547ca
movl -0xdc(%rbp), %edi
movl -0xe0(%rbp), %esi
movl 0x41c6d7(%rip), %edx    # 0x470d9c
movl 0x41c6f1(%rip), %ecx    # 0x470dbc
movl 0x41c6c6(%rip), %r8d    # 0x470d98
movl 0x41c6df(%rip), %r9d    # 0x470db8
movl -0xe4(%rbp), %eax
movl %eax, (%rsp)
callq 0x4ecd0
cmpl $0x0, %eax
je 0x547c8
movswl 0x417e89(%rip), %eax    # 0x46c580
cmpl $0x400, %eax            # imm = 0x400
jge 0x547c6
movl 0x41c694(%rip), %ecx    # 0x470d9c
addl -0x108(%rbp), %ecx
movswq 0x417e6a(%rip), %rdx    # 0x46c580
leaq 0x417e73(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
movl 0x41c690(%rip), %ecx    # 0x470dbc
subl -0x104(%rbp), %ecx
movswq 0x417e46(%rip), %rdx    # 0x46c580
leaq 0x417e4f(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movl 0x41c647(%rip), %ecx    # 0x470d98
subl -0x104(%rbp), %ecx
movswq 0x417e21(%rip), %rdx    # 0x46c580
leaq 0x417e2a(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x8(%rax)
movl 0x41c642(%rip), %ecx    # 0x470db8
subl -0x108(%rbp), %ecx
movswq 0x417dfc(%rip), %rdx    # 0x46c580
leaq 0x417e05(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0xc(%rax)
movl -0x80(%rbp), %eax
cwtl
addl $0xc000, %eax           # imm = 0xC000
movw %ax, %dx
movswq 0x417dd7(%rip), %rcx    # 0x46c580
leaq 0x41bde0(%rip), %rax    # 0x470590
movw %dx, (%rax,%rcx,2)
movw 0x417dc5(%rip), %ax     # 0x46c580
addw $0x1, %ax
movw %ax, 0x417dba(%rip)     # 0x46c580
jmp 0x547c8
jmp 0x547ca
jmp 0x547cc
movl 0x41c5c2(%rip), %eax    # 0x470d94
movq -0x30(%rbp), %rcx
subl (%rcx), %eax
movl 0x41c5da(%rip), %ecx    # 0x470db8
movq -0x38(%rbp), %rdx
subl (%rdx), %ecx
imull %ecx, %eax
movl 0x41c5ab(%rip), %ecx    # 0x470d98
movq -0x30(%rbp), %rdx
subl (%rdx), %ecx
movl 0x41c5bb(%rip), %edx    # 0x470db4
movq -0x38(%rbp), %rsi
subl (%rsi), %edx
imull %edx, %ecx
cmpl %ecx, %eax
jge 0x54924
movl -0xdc(%rbp), %edi
movl -0xe0(%rbp), %esi
movl 0x41c57c(%rip), %edx    # 0x470d98
movl 0x41c596(%rip), %ecx    # 0x470db8
movl 0x41c56b(%rip), %r8d    # 0x470d94
movl 0x41c584(%rip), %r9d    # 0x470db4
movl -0xe4(%rbp), %eax
movl %eax, (%rsp)
callq 0x4ecd0
cmpl $0x0, %eax
je 0x5491f
movswl 0x417d32(%rip), %eax    # 0x46c580
cmpl $0x400, %eax            # imm = 0x400
jge 0x5491d
movl 0x41c539(%rip), %ecx    # 0x470d98
subl -0x104(%rbp), %ecx
movswq 0x417d13(%rip), %rdx    # 0x46c580
leaq 0x417d1c(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
movl 0x41c535(%rip), %ecx    # 0x470db8
subl -0x108(%rbp), %ecx
movswq 0x417cef(%rip), %rdx    # 0x46c580
leaq 0x417cf8(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movl 0x41c4ec(%rip), %ecx    # 0x470d94
subl -0x108(%rbp), %ecx
movswq 0x417cca(%rip), %rdx    # 0x46c580
leaq 0x417cd3(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x8(%rax)
movl 0x41c4e7(%rip), %ecx    # 0x470db4
addl -0x104(%rbp), %ecx
movswq 0x417ca5(%rip), %rdx    # 0x46c580
leaq 0x417cae(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0xc(%rax)
movl -0x80(%rbp), %eax
cwtl
addl $0xc000, %eax           # imm = 0xC000
movw %ax, %dx
movswq 0x417c80(%rip), %rcx    # 0x46c580
leaq 0x41bc89(%rip), %rax    # 0x470590
movw %dx, (%rax,%rcx,2)
movw 0x417c6e(%rip), %ax     # 0x46c580
addw $0x1, %ax
movw %ax, 0x417c63(%rip)     # 0x46c580
jmp 0x5491f
jmp 0x54a7b
movl 0x41c472(%rip), %eax    # 0x470d9c
movq -0x30(%rbp), %rcx
subl (%rcx), %eax
movl 0x41c47a(%rip), %ecx    # 0x470db0
movq -0x38(%rbp), %rdx
subl (%rdx), %ecx
imull %ecx, %eax
movl 0x41c44b(%rip), %ecx    # 0x470d90
movq -0x30(%rbp), %rdx
subl (%rdx), %ecx
movl 0x41c46b(%rip), %edx    # 0x470dbc
movq -0x38(%rbp), %rsi
subl (%rsi), %edx
imull %edx, %ecx
cmpl %ecx, %eax
jge 0x54a79
movl -0xdc(%rbp), %edi
movl -0xe0(%rbp), %esi
movl 0x41c41c(%rip), %edx    # 0x470d90
movl 0x41c436(%rip), %ecx    # 0x470db0
movl 0x41c41b(%rip), %r8d    # 0x470d9c
movl 0x41c434(%rip), %r9d    # 0x470dbc
movl -0xe4(%rbp), %eax
movl %eax, (%rsp)
callq 0x4ecd0
cmpl $0x0, %eax
je 0x54a77
movswl 0x417bda(%rip), %eax    # 0x46c580
cmpl $0x400, %eax            # imm = 0x400
jge 0x54a75
movl 0x41c3d9(%rip), %ecx    # 0x470d90
addl -0x104(%rbp), %ecx
movswq 0x417bbb(%rip), %rdx    # 0x46c580
leaq 0x417bc4(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
movl 0x41c3d5(%rip), %ecx    # 0x470db0
addl -0x108(%rbp), %ecx
movswq 0x417b97(%rip), %rdx    # 0x46c580
leaq 0x417ba0(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movl 0x41c39c(%rip), %ecx    # 0x470d9c
addl -0x108(%rbp), %ecx
movswq 0x417b72(%rip), %rdx    # 0x46c580
leaq 0x417b7b(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x8(%rax)
movl 0x41c397(%rip), %ecx    # 0x470dbc
subl -0x104(%rbp), %ecx
movswq 0x417b4d(%rip), %rdx    # 0x46c580
leaq 0x417b56(%rip), %rax    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0xc(%rax)
movl -0x80(%rbp), %eax
cwtl
addl $0xc000, %eax           # imm = 0xC000
movw %ax, %dx
movswq 0x417b28(%rip), %rcx    # 0x46c580
leaq 0x41bb31(%rip), %rax    # 0x470590
movw %dx, (%rax,%rcx,2)
movw 0x417b16(%rip), %ax     # 0x46c580
addw $0x1, %ax
movw %ax, 0x417b0b(%rip)     # 0x46c580
jmp 0x54a77
jmp 0x54a79
jmp 0x54a7b
jmp 0x54a7d
jmp 0x54a7f
jmp 0x54a81
movslq -0x80(%rbp), %rcx
leaq 0x39e5f4(%rip), %rax    # 0x3f3080
movswl (%rax,%rcx,2), %eax
movl %eax, -0x80(%rbp)
jmp 0x5360c
jmp 0x54a9a
movl -0xb8(%rbp), %eax
movswl 0x417adb(%rip), %ecx    # 0x46c582
cmpl %ecx, %eax
jl 0x52c37
movl $0x0, -0x148(%rbp)
movl 0x8c731(%rip), %eax     # 0xe11f0
movl %eax, -0x14c(%rbp)
movl -0x94(%rbp), %eax
movl %eax, -0x9c(%rbp)
movl -0x98(%rbp), %eax
movl %eax, -0xa0(%rbp)
movq -0x30(%rbp), %rax
movl (%rax), %edi
movq -0x38(%rbp), %rax
movl (%rax), %esi
leaq -0x9c(%rbp), %rdx
leaq -0xa0(%rbp), %rcx
callq 0x55340
movl %eax, -0x148(%rbp)
cmpl $0x0, %eax
jl 0x54db6
movslq -0x148(%rbp), %rcx
leaq 0x417a77(%rip), %rax    # 0x46c590
shlq $0x4, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movslq -0x148(%rbp), %rdx
leaq 0x417a5f(%rip), %rcx    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rcx
subl (%rcx), %eax
movl %eax, -0xa4(%rbp)
movslq -0x148(%rbp), %rcx
leaq 0x417a42(%rip), %rax    # 0x46c590
shlq $0x4, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
movslq -0x148(%rbp), %rdx
leaq 0x417a2a(%rip), %rcx    # 0x46c590
shlq $0x4, %rdx
addq %rdx, %rcx
subl 0x4(%rcx), %eax
movl %eax, -0xa8(%rbp)
movl -0xa4(%rbp), %eax
imull -0xa4(%rbp), %eax
movl -0xa8(%rbp), %ecx
imull -0xa8(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x88(%rbp)
cmpl $0x0, -0x88(%rbp)
jle 0x54c3a
movl -0x94(%rbp), %eax
subl -0x9c(%rbp), %eax
imull -0xa4(%rbp), %eax
movl -0x98(%rbp), %ecx
subl -0xa0(%rbp), %ecx
imull -0xa8(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x84(%rbp)
movl -0x84(%rbp), %edi
callq 0x37610
sarl $0xb, %eax
cmpl -0x88(%rbp), %eax
jge 0x54bff
movl -0x84(%rbp), %edi
movl -0x88(%rbp), %esi
callq 0x555d0
movl %eax, -0x7c(%rbp)
jmp 0x54c06
movl $0x0, -0x7c(%rbp)
movl -0xa4(%rbp), %edi
movl -0x7c(%rbp), %esi
callq 0x376c0
addl -0x9c(%rbp), %eax
movl %eax, -0x94(%rbp)
movl -0xa8(%rbp), %edi
movl -0x7c(%rbp), %esi
callq 0x376c0
addl -0xa0(%rbp), %eax
movl %eax, -0x98(%rbp)
movl -0xa4(%rbp), %edi
movl -0x8c(%rbp), %esi
movl -0xa8(%rbp), %edx
movl -0x90(%rbp), %ecx
callq 0x3c870
movl %eax, -0x84(%rbp)
movl -0x14c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c(%rbp)
movl -0x7c(%rbp), %eax
cmpl 0x8c57e(%rip), %eax     # 0xe11f0
jg 0x54d38
movslq -0x7c(%rbp), %rcx
leaq 0x41c14d(%rip), %rax    # 0x470dd0
movswl (%rax,%rcx,2), %eax
movl %eax, -0x80(%rbp)
movslq -0x80(%rbp), %rcx
leaq 0x4178fb(%rip), %rax    # 0x46c590
shlq $0x4, %rcx
addq %rcx, %rax
movl 0x8(%rax), %edi
movslq -0x80(%rbp), %rcx
leaq 0x4178e6(%rip), %rax    # 0x46c590
shlq $0x4, %rcx
addq %rcx, %rax
subl (%rax), %edi
movl -0x8c(%rbp), %esi
movslq -0x80(%rbp), %rcx
leaq 0x4178cc(%rip), %rax    # 0x46c590
shlq $0x4, %rcx
addq %rcx, %rax
movl 0xc(%rax), %edx
movslq -0x80(%rbp), %rcx
leaq 0x4178b7(%rip), %rax    # 0x46c590
shlq $0x4, %rcx
addq %rcx, %rax
subl 0x4(%rax), %edx
movl -0x90(%rbp), %ecx
callq 0x3c870
movl %eax, -0x88(%rbp)
movl -0x84(%rbp), %eax
xorl -0x88(%rbp), %eax
cmpl $0x0, %eax
jge 0x54d28
movq -0x30(%rbp), %rax
movl (%rax), %edi
movq -0x38(%rbp), %rax
movl (%rax), %esi
movq -0x48(%rbp), %rdx
callq 0x392a0
movl -0xac(%rbp), %eax
movl %eax, -0x24(%rbp)
jmp 0x55046
jmp 0x54d2a
movl -0x7c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c(%rbp)
jmp 0x54c69
movl -0x148(%rbp), %edx
leaq -0x94(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0x555f0
movl -0x94(%rbp), %eax
subl -0x9c(%rbp), %eax
shll $0xe, %eax
movl %eax, -0x4c(%rbp)
movl -0x98(%rbp), %eax
subl -0xa0(%rbp), %eax
shll $0xe, %eax
movl %eax, -0x50(%rbp)
movl -0x14c(%rbp), %eax
cmpl 0x8c46f(%rip), %eax     # 0xe11f0
jne 0x54d9b
movslq -0x148(%rbp), %rcx
leaq 0x41b7ff(%rip), %rax    # 0x470590
movswl (%rax,%rcx,2), %eax
movl %eax, -0xac(%rbp)
movl -0x148(%rbp), %eax
movw %ax, %dx
movslq -0x14c(%rbp), %rcx
leaq 0x41c01e(%rip), %rax    # 0x470dd0
movw %dx, (%rax,%rcx,2)
movl -0x14c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x14c(%rbp)
movl -0x9c(%rbp), %ecx
movq -0x30(%rbp), %rax
movl %ecx, (%rax)
movl -0xa0(%rbp), %ecx
movq -0x38(%rbp), %rax
movl %ecx, (%rax)
movl -0x4c(%rbp), %ecx
orl -0x50(%rbp), %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x16d(%rbp)
je 0x54e11
xorl %eax, %eax
cmpl $0x0, -0x148(%rbp)
movb %al, -0x16d(%rbp)
jl 0x54e11
cmpl $0x0, -0x14c(%rbp)
setg %al
movb %al, -0x16d(%rbp)
movb -0x16d(%rbp), %al
testb $0x1, %al
jne 0x54ac5
movl $0x0, -0x80(%rbp)
movl -0x80(%rbp), %eax
movswl 0x417752(%rip), %ecx    # 0x46c582
cmpl %ecx, %eax
jge 0x54e8a
movq -0x30(%rbp), %rax
movl (%rax), %edi
movq -0x38(%rbp), %rax
movl (%rax), %esi
movslq -0x80(%rbp), %rcx
leaq 0x416f35(%rip), %rax    # 0x46bd80
movswl (%rax,%rcx,2), %edx
callq 0x4ee70
cmpl $0x1, %eax
jne 0x54e7d
movslq -0x80(%rbp), %rcx
leaq 0x416f1c(%rip), %rax    # 0x46bd80
movw (%rax,%rcx,2), %cx
movq -0x48(%rbp), %rax
movw %cx, (%rax)
movl -0xac(%rbp), %eax
movl %eax, -0x24(%rbp)
jmp 0x55046
jmp 0x54e7f
movl -0x80(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x80(%rbp)
jmp 0x54e26
movq -0x48(%rbp), %rax
movw $0xffff, (%rax)         # imm = 0xFFFF
movl $0x7fffffff, -0x84(%rbp) # imm = 0x7FFFFFFF
movswl 0x3b7c1c(%rip), %eax    # 0x40cac0
subl $0x1, %eax
movl %eax, -0x80(%rbp)
cmpl $0x0, -0x80(%rbp)
jl 0x5503d
movq -0x30(%rbp), %rax
movl (%rax), %edi
movq -0x38(%rbp), %rax
movl (%rax), %esi
movl -0x80(%rbp), %eax
movswl %ax, %edx
callq 0x4ee70
cmpl $0x1, %eax
jne 0x5502d
movslq -0x80(%rbp), %rcx
leaq 0x22b6e1(%rip), %rax    # 0x2805c0
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movswl 0xc(%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x54f17
movl -0x80(%rbp), %eax
movq -0x30(%rbp), %rcx
movl (%rcx), %esi
movq -0x38(%rbp), %rcx
movl (%rcx), %edx
movswl %ax, %edi
callq 0x551d0
movq -0x40(%rbp), %rcx
subl (%rcx), %eax
movl %eax, -0x88(%rbp)
jmp 0x54f38
movslq -0x80(%rbp), %rcx
leaq 0x22b69e(%rip), %rax    # 0x2805c0
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl 0x4(%rax), %eax
movq -0x40(%rbp), %rcx
subl (%rcx), %eax
movl %eax, -0x88(%rbp)
cmpl $0x0, -0x88(%rbp)
jle 0x54f6d
movl -0x88(%rbp), %eax
cmpl -0x84(%rbp), %eax
jge 0x54f68
movl -0x80(%rbp), %eax
movw %ax, %cx
movq -0x48(%rbp), %rax
movw %cx, (%rax)
movl -0x88(%rbp), %eax
movl %eax, -0x84(%rbp)
jmp 0x5502b
movslq -0x80(%rbp), %rcx
leaq 0x22b648(%rip), %rax    # 0x2805c0
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movswl 0xe(%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x54fc0
movq -0x40(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x174(%rbp)
movl -0x80(%rbp), %eax
movq -0x30(%rbp), %rcx
movl (%rcx), %esi
movq -0x38(%rbp), %rcx
movl (%rcx), %edx
movswl %ax, %edi
callq 0x55060
movl %eax, %ecx
movl -0x174(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x88(%rbp)
jmp 0x54fe1
movq -0x40(%rbp), %rax
movl (%rax), %eax
movslq -0x80(%rbp), %rdx
leaq 0x22b5ef(%rip), %rcx    # 0x2805c0
imulq $0x28, %rdx, %rdx
addq %rdx, %rcx
subl 0x8(%rcx), %eax
movl %eax, -0x88(%rbp)
cmpl $0x0, -0x88(%rbp)
jg 0x55002
movl -0x80(%rbp), %eax
movw %ax, %cx
movq -0x48(%rbp), %rax
movw %cx, (%rax)
movl -0xac(%rbp), %eax
movl %eax, -0x24(%rbp)
jmp 0x55046
movl -0x88(%rbp), %eax
cmpl -0x84(%rbp), %eax
jge 0x55029
movl -0x80(%rbp), %eax
movw %ax, %cx
movq -0x48(%rbp), %rax
movw %cx, (%rax)
movl -0x88(%rbp), %eax
movl %eax, -0x84(%rbp)
jmp 0x5502b
jmp 0x5502d
jmp 0x5502f
movl -0x80(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x80(%rbp)
jmp 0x54eaa
movl -0xac(%rbp), %eax
movl %eax, -0x24(%rbp)
movl -0x24(%rbp), %eax
addq $0x190, %rsp            # imm = 0x190
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax)