// File: /workspace/github_c_makefile_star2_O2/jonof[P]jftekwar/jfbuild/src/engine.c
// Function: drawalls
static void drawalls(int bunch)
{
	sectortype *sec, *nextsec;
	walltype *wal;
	int i, x, x1, x2, cz[5], fz[5];
	int z, wallnum, sectnum, nextsectnum;
	int startsmostwallcnt, startsmostcnt, gotswall;
	unsigned char andwstat1, andwstat2;

	z = bunchfirst[bunch];
	sectnum = thesector[z]; sec = &sector[sectnum];

	andwstat1 = 0xff; andwstat2 = 0xff;
	for(;z>=0;z=p2[z])  //uplc/dplc calculation
	{
		andwstat1 &= wallmost(uplc,z,sectnum,(char)0);
		andwstat2 &= wallmost(dplc,z,sectnum,(char)1);
	}

	if ((andwstat1&3) != 3)     //draw ceilings
	{
		if ((sec->ceilingstat&3) == 2)
			grouscan(xb1[bunchfirst[bunch]],xb2[bunchlast[bunch]],sectnum,0);
		else if ((sec->ceilingstat&1) == 0)
			ceilscan(xb1[bunchfirst[bunch]],xb2[bunchlast[bunch]],sectnum);
		else
			parascan(xb1[bunchfirst[bunch]],xb2[bunchlast[bunch]],sectnum,0,bunch);
	}
	if ((andwstat2&12) != 12)   //draw floors
	{
		if ((sec->floorstat&3) == 2)
			grouscan(xb1[bunchfirst[bunch]],xb2[bunchlast[bunch]],sectnum,1);
		else if ((sec->floorstat&1) == 0)
			florscan(xb1[bunchfirst[bunch]],xb2[bunchlast[bunch]],sectnum);
		else
			parascan(xb1[bunchfirst[bunch]],xb2[bunchlast[bunch]],sectnum,1,bunch);
	}

		//DRAW WALLS SECTION!
	for(z=bunchfirst[bunch];z>=0;z=p2[z])
	{
		x1 = xb1[z]; x2 = xb2[z];
		if (umost[x2] >= dmost[x2])
		{
			for(x=x1;x<x2;x++)
				if (umost[x] < dmost[x]) break;
			if (x >= x2)
			{
				smostwall[smostwallcnt] = z;
				smostwalltype[smostwallcnt] = 0;
				smostwallcnt++;
				continue;
			}
		}

		wallnum = thewall[z]; wal = &wall[wallnum];
		nextsectnum = wal->nextsector; nextsec = &sector[nextsectnum];

		gotswall = 0;

		startsmostwallcnt = smostwallcnt;
		startsmostcnt = smostcnt;

		if ((searchit == 2) && (searchx >= x1) && (searchx <= x2))
		{
			if (searchy <= uplc[searchx]) //ceiling
			{
				searchsector = sectnum; searchwall = wallnum;
				searchstat = 1; searchit = 1;
			}
			else if (searchy >= dplc[searchx]) //floor
			{
				searchsector = sectnum; searchwall = wallnum;
				searchstat = 2; searchit = 1;
			}
		}

		if (nextsectnum >= 0)
		{
			getzsofslope((short)sectnum,wal->x,wal->y,&cz[0],&fz[0]);
			getzsofslope((short)sectnum,wall[wal->point2].x,wall[wal->point2].y,&cz[1],&fz[1]);
			getzsofslope((short)nextsectnum,wal->x,wal->y,&cz[2],&fz[2]);
			getzsofslope((short)nextsectnum,wall[wal->point2].x,wall[wal->point2].y,&cz[3],&fz[3]);
			getzsofslope((short)nextsectnum,globalposx,globalposy,&cz[4],&fz[4]);

			if ((wal->cstat&48) == 16) maskwall[maskwallcnt++] = z;

			if (((sec->ceilingstat&1) == 0) || ((nextsec->ceilingstat&1) == 0))
			{
				if ((cz[2] <= cz[0]) && (cz[3] <= cz[1]))
				{
					if (globparaceilclip)
						for(x=x1;x<=x2;x++)
							if (uplc[x] > umost[x])
								if (umost[x] <= dmost[x])
								{
									umost[x] = uplc[x];
									if (umost[x] > dmost[x]) numhits--;
								}
				}
				else
				{
					wallmost(dwall,z,nextsectnum,(char)0);
					if ((cz[2] > fz[0]) || (cz[3] > fz[1]))
						for(i=x1;i<=x2;i++) if (dwall[i] > dplc[i]) dwall[i] = dplc[i];

					if ((searchit == 2) && (searchx >= x1) && (searchx <= x2))
						if (searchy <= dwall[searchx]) //wall
						{
							searchsector = sectnum; searchwall = wallnum;
							searchstat = 0; searchit = 1;
						}

					globalorientation = (int)wal->cstat;
					globalpicnum = wal->picnum;
					if ((unsigned)globalpicnum >= (unsigned)MAXTILES) globalpicnum = 0;
					globalxpanning = (int)wal->xpanning;
					globalypanning = (int)wal->ypanning;
					globalshiftval = (picsiz[globalpicnum]>>4);
					if (pow2long[globalshiftval] != tilesizy[globalpicnum]) globalshiftval++;
					globalshiftval = 32-globalshiftval;
					if (picanm[globalpicnum]&192) globalpicnum += animateoffs(globalpicnum,(short)wallnum+16384);
					globalshade = (int)wal->shade;
					globvis = globalvisibility;
					if (sec->visibility != 0) globvis = mulscale4(globvis,(int)((unsigned char)(sec->visibility+16)));
					globalpal = (int)wal->pal;
					if (palookup[globalpal] == 0) globalpal = 0;	// JBF: fixes crash
					globalyscale = (wal->yrepeat<<(globalshiftval-19));
					if ((globalorientation&4) == 0)
						globalzd = (((globalposz-nextsec->ceilingz)*globalyscale)<<8);
					else
						globalzd = (((globalposz-sec->ceilingz)*globalyscale)<<8);
					globalzd += (globalypanning<<24);
					if (globalorientation&256) globalyscale = -globalyscale, globalzd = -globalzd;

					if (gotswall == 0) { gotswall = 1; prepwall(z,wal); }
					wallscan(x1,x2,uplc,dwall,swall,lwall);

					if ((cz[2] >= cz[0]) && (cz[3] >= cz[1]))
					{
						for(x=x1;x<=x2;x++)
							if (dwall[x] > umost[x])
								if (umost[x] <= dmost[x])
								{
									umost[x] = dwall[x];
									if (umost[x] > dmost[x]) numhits--;
								}
					}
					else
					{
						for(x=x1;x<=x2;x++)
							if (umost[x] <= dmost[x])
							{
								i = max(uplc[x],dwall[x]);
								if (i > umost[x])
								{
									umost[x] = i;
									if (umost[x] > dmost[x]) numhits--;
								}
							}
					}
				}
				if ((cz[2] < cz[0]) || (cz[3] < cz[1]) || (globalposz < cz[4]))
				{
					i = x2-x1+1;
					if (smostcnt+i < MAXYSAVES)
					{
						smoststart[smostwallcnt] = smostcnt;
						smostwall[smostwallcnt] = z;
						smostwalltype[smostwallcnt] = 1;   //1 for umost
						smostwallcnt++;
						copybufbyte(&umost[x1],&smost[smostcnt],i*sizeof(smost[0]));
						smostcnt += i;
					}
				}
			}
			if (((sec->floorstat&1) == 0) || ((nextsec->floorstat&1) == 0))
			{
				if ((fz[2] >= fz[0]) && (fz[3] >= fz[1]))
				{
					if (globparaflorclip)
						for(x=x1;x<=x2;x++)
							if (dplc[x] < dmost[x])
								if (umost[x] <= dmost[x])
								{
									dmost[x] = dplc[x];
									if (umost[x] > dmost[x]) numhits--;
								}
				}
				else
				{
					wallmost(uwall,z,nextsectnum,(char)1);
					if ((fz[2] < cz[0]) || (fz[3] < cz[1]))
						for(i=x1;i<=x2;i++) if (uwall[i] < uplc[i]) uwall[i] = uplc[i];

					if ((searchit == 2) && (searchx >= x1) && (searchx <= x2))
						if (searchy >= uwall[searchx]) //wall
						{
							searchsector = sectnum; searchwall = wallnum;
							if ((wal->cstat&2) > 0) searchwall = wal->nextwall;
							searchstat = 0; searchit = 1;
						}

					if ((wal->cstat&2) > 0)
					{
						wallnum = wal->nextwall; wal = &wall[wallnum];
						globalorientation = (int)wal->cstat;
						globalpicnum = wal->picnum;
						if ((unsigned)globalpicnum >= (unsigned)MAXTILES) globalpicnum = 0;
						globalxpanning = (int)wal->xpanning;
						globalypanning = (int)wal->ypanning;
						if (picanm[globalpicnum]&192) globalpicnum += animateoffs(globalpicnum,(short)wallnum+16384);
						globalshade = (int)wal->shade;
						globalpal = (int)wal->pal;
						wallnum = thewall[z]; wal = &wall[wallnum];
					}
					else
					{
						globalorientation = (int)wal->cstat;
						globalpicnum = wal->picnum;
						if ((unsigned)globalpicnum >= (unsigned)MAXTILES) globalpicnum = 0;
						globalxpanning = (int)wal->xpanning;
						globalypanning = (int)wal->ypanning;
						if (picanm[globalpicnum]&192) globalpicnum += animateoffs(globalpicnum,(short)wallnum+16384);
						globalshade = (int)wal->shade;
						globalpal = (int)wal->pal;
					}
					if (palookup[globalpal] == 0) globalpal = 0;	// JBF: fixes crash
					globvis = globalvisibility;
					if (sec->visibility != 0) globvis = mulscale4(globvis,(int)((unsigned char)(sec->visibility+16)));
					globalshiftval = (picsiz[globalpicnum]>>4);
					if (pow2long[globalshiftval] != tilesizy[globalpicnum]) globalshiftval++;
					globalshiftval = 32-globalshiftval;
					globalyscale = (wal->yrepeat<<(globalshiftval-19));
					if ((globalorientation&4) == 0)
						globalzd = (((globalposz-nextsec->floorz)*globalyscale)<<8);
					else
						globalzd = (((globalposz-sec->ceilingz)*globalyscale)<<8);
					globalzd += (globalypanning<<24);
					if (globalorientation&256) globalyscale = -globalyscale, globalzd = -globalzd;

					if (gotswall == 0) { gotswall = 1; prepwall(z,wal); }
					wallscan(x1,x2,uwall,dplc,swall,lwall);

					if ((fz[2] <= fz[0]) && (fz[3] <= fz[1]))
					{
						for(x=x1;x<=x2;x++)
							if (uwall[x] < dmost[x])
								if (umost[x] <= dmost[x])
								{
									dmost[x] = uwall[x];
									if (umost[x] > dmost[x]) numhits--;
								}
					}
					else
					{
						for(x=x1;x<=x2;x++)
							if (umost[x] <= dmost[x])
							{
								i = min(dplc[x],uwall[x]);
								if (i < dmost[x])
								{
									dmost[x] = i;
									if (umost[x] > dmost[x]) numhits--;
								}
							}
					}
				}
				if ((fz[2] > fz[0]) || (fz[3] > fz[1]) || (globalposz > fz[4]))
				{
					i = x2-x1+1;
					if (smostcnt+i < MAXYSAVES)
					{
						smoststart[smostwallcnt] = smostcnt;
						smostwall[smostwallcnt] = z;
						smostwalltype[smostwallcnt] = 2;   //2 for dmost
						smostwallcnt++;
						copybufbyte(&dmost[x1],&smost[smostcnt],i*sizeof(smost[0]));
						smostcnt += i;
					}
				}
			}
			if (numhits < 0) return;
			if ((!(wal->cstat&32)) && ((gotsector[nextsectnum>>3]&pow2char[nextsectnum&7]) == 0))
			{
				if (umost[x2] < dmost[x2])
					scansector(nextsectnum);
				else
				{
					for(x=x1;x<x2;x++)
						if (umost[x] < dmost[x])
							{ scansector(nextsectnum); break; }

						//If can't see sector beyond, then cancel smost array and just
						//store wall!
					if (x == x2)
					{
						smostwallcnt = startsmostwallcnt;
						smostcnt = startsmostcnt;
						smostwall[smostwallcnt] = z;
						smostwalltype[smostwallcnt] = 0;
						smostwallcnt++;
					}
				}
			}
		}
		if ((nextsectnum < 0) || (wal->cstat&32))   //White/1-way wall
		{
			globalorientation = (int)wal->cstat;
			if (nextsectnum < 0) globalpicnum = wal->picnum;
								  else globalpicnum = wal->overpicnum;
			if ((unsigned)globalpicnum >= (unsigned)MAXTILES) globalpicnum = 0;
			globalxpanning = (int)wal->xpanning;
			globalypanning = (int)wal->ypanning;
			if (picanm[globalpicnum]&192) globalpicnum += animateoffs(globalpicnum,(short)wallnum+16384);
			globalshade = (int)wal->shade;
			globvis = globalvisibility;
			if (sec->visibility != 0) globvis = mulscale4(globvis,(int)((unsigned char)(sec->visibility+16)));
			globalpal = (int)wal->pal;
			if (palookup[globalpal] == 0) globalpal = 0;	// JBF: fixes crash
			globalshiftval = (picsiz[globalpicnum]>>4);
			if (pow2long[globalshiftval] != tilesizy[globalpicnum]) globalshiftval++;
			globalshiftval = 32-globalshiftval;
			globalyscale = (wal->yrepeat<<(globalshiftval-19));
			if (nextsectnum >= 0)
			{
				if ((globalorientation&4) == 0) globalzd = globalposz-nextsec->ceilingz;
													else globalzd = globalposz-sec->ceilingz;
			}
			else
			{
				if ((globalorientation&4) == 0) globalzd = globalposz-sec->ceilingz;
													else globalzd = globalposz-sec->floorz;
			}
			globalzd = ((globalzd*globalyscale)<<8) + (globalypanning<<24);
			if (globalorientation&256) globalyscale = -globalyscale, globalzd = -globalzd;

			if (gotswall == 0) { gotswall = 1; prepwall(z,wal); }
			wallscan(x1,x2,uplc,dplc,swall,lwall);

			for(x=x1;x<=x2;x++)
				if (umost[x] <= dmost[x])
					{ umost[x] = 1; dmost[x] = 0; numhits--; }
			smostwall[smostwallcnt] = z;
			smostwalltype[smostwallcnt] = 0;
			smostwallcnt++;

			if ((searchit == 2) && (searchx >= x1) && (searchx <= x2))
			{
				searchit = 1; searchsector = sectnum; searchwall = wallnum;
				if (nextsectnum < 0) searchstat = 0; else searchstat = 4;
			}
		}
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb8, %rsp
movl %edi, 0x38(%rsp)
movslq %edi, %rax
leaq 0x3ac828(%rip), %rcx    # 0x3d07c0
movq %rax, 0x20(%rsp)
leaq (%rcx,%rax,2), %rax
movq %rax, 0x40(%rsp)
movswq (%rax), %rax
leaq 0x422ebf(%rip), %rcx    # 0x446e70
movzwl (%rcx,%rax,2), %ecx
movw %cx, 0x2e(%rsp)
movswl %cx, %ecx
movl %ecx, 0x58(%rsp)
movswq %cx, %r15
movb $-0x1, %bpl
leaq 0x424ea1(%rip), %r13    # 0x448e70
movb $-0x1, %bl
movl 0x58(%rsp), %r12d
testw %ax, %ax
js 0x24017
movzwl %ax, %r14d
movq %r13, %rdi
movl %r14d, %esi
movl %r12d, %edx
xorl %ecx, %ecx
callq 0x2169d
andb %al, %bpl
leaq 0x426c77(%rip), %rdi    # 0x44ac70
movl %r14d, %esi
movl %r12d, %edx
pushq $0x1
popq %rcx
callq 0x2169d
andb %al, %bl
leaq 0x3b47c0(%rip), %rax    # 0x3d87d0
movzwl (%rax,%r14,2), %eax
jmp 0x23fd6
imulq $0x28, %r15, %rcx
leaq 0x218a3e(%rip), %rax    # 0x23ca60
addq %rax, %rcx
notb %bpl
testb $0x3, %bpl
movq %rcx, %rbp
movq %rcx, 0x48(%rsp)
je 0x2423d
movzwl 0xc(%rbp), %ecx
movl %ecx, %edx
andl $0x3, %edx
leaq 0x240a26(%rip), %rax    # 0x264a70
cmpl $0x2, %edx
jne 0x24089
movq 0x20(%rsp), %rdx
leaq 0x3ac765(%rip), %rcx    # 0x3d07c0
movswq (%rcx,%rdx,2), %rcx
movl (%rax,%rcx,4), %edi
leaq 0x3ae756(%rip), %rax    # 0x3d27c0
movswq (%rax,%rdx,2), %rax
leaq 0x244a0a(%rip), %rcx    # 0x268a80
movl (%rcx,%rax,4), %esi
movl 0x58(%rsp), %edx
xorl %ecx, %ecx
callq 0x39d01
jmp 0x2423d
testb $0x1, %cl
jne 0x24232
movq 0x20(%rsp), %rdx
leaq 0x3ac722(%rip), %rcx    # 0x3d07c0
movswq (%rcx,%rdx,2), %rcx
movslq (%rax,%rcx,4), %rax
movq %rax, 0x8(%rsp)
leaq 0x3ae70d(%rip), %rax    # 0x3d27c0
movswq (%rax,%rdx,2), %rax
leaq 0x2449c1(%rip), %rcx    # 0x268a80
movslq (%rcx,%rax,4), %r14
movzbl 0x15(%rbp), %ecx
leaq 0x36da12(%rip), %rax    # 0x391ae0
movq (%rax,%rcx,8), %rdi
cmpq 0x3e4f2f(%rip), %rdi    # 0x409008
je 0x240fe
movq %rdi, 0x3e4f26(%rip)    # 0x409008
testq %rdi, %rdi
jne 0x240f9
movslq 0x3e4f16(%rip), %rcx    # 0x409004
movq (%rax,%rcx,8), %rdi
movq %rdi, 0x3e4f0f(%rip)    # 0x409008
callq 0x641cb
movq %r14, 0x30(%rsp)
movl 0x4(%rbp), %eax
subl 0x240954(%rip), %eax    # 0x264a60
movl %eax, 0x4289da(%rip)    # 0x44caec
jg 0x2423d
movl 0x10(%rbp), %eax
xorl %ecx, %ecx
cmpw $0x2400, %ax            # imm = 0x2400
cmovbl %eax, %ecx
movw %cx, 0x3e4ee5(%rip)     # 0x409010
movswl %cx, %edi
callq 0x2cc16
movzwl 0x3e4ed5(%rip), %r14d   # 0x409010
movswq %r14w, %rax
leaq 0x3e4eda(%rip), %rcx    # 0x409020
cmpw $0x0, (%rcx,%rax,2)
jle 0x2423d
leaq 0x3d6688(%rip), %rcx    # 0x3fa7e0
cmpw $0x0, (%rcx,%rax,2)
jle 0x2423d
leaq 0x20f8f6(%rip), %rcx    # 0x233a60
testb $-0x40, (%rcx,%rax,4)
je 0x2418a
movswl %r14w, %edi
xorl %esi, %esi
callq 0x2163b
addl %eax, %r14d
movw %r14w, 0x3e4e8a(%rip)   # 0x409010
movswq %r14w, %rax
leaq 0x36e14f(%rip), %r15    # 0x3922e0
cmpq $0x0, (%r15,%rax,8)
jne 0x241a9
movswl %r14w, %edi
callq 0x2cc4a
movzwl 0x3e4e67(%rip), %r14d   # 0x409010
movswq %r14w, %r12
movq (%r15,%r12,8), %rax
movq %rax, 0x18(%rsp)
movq %rax, 0x3e9663(%rip)    # 0x40d820
movsbl 0x14(%rbp), %eax
movl %eax, 0x3e9665(%rip)    # 0x40d82c
movslq 0x3a3b7a(%rip), %rax    # 0x3c7d48
movl %eax, 0x3e965c(%rip)    # 0x40d830
movb 0x20(%rbp), %cl
testb %cl, %cl
je 0x241ef
addb $0x10, %cl
movzbl %cl, %ecx
imulq %rax, %rcx
shrq $0x4, %rcx
movl %ecx, 0x3e9641(%rip)    # 0x40d830
movswl 0xc(%rbp), %r15d
movl %r15d, 0x3e4e05(%rip)   # 0x409000
testb $0x40, %r15b
jne 0x254cb
movl 0x24486c(%rip), %r8d    # 0x268a78
movl 0x24485e(%rip), %edi    # 0x268a70
movl 0x20f837(%rip), %r9d    # 0x233a50
shll $0x14, %r9d
movl 0x20f831(%rip), %ecx    # 0x233a54
shll $0x14, %ecx
negl %ecx
movl %edi, %esi
movl %r8d, %eax
jmp 0x25649
xorl %edi, %edi
movl 0x38(%rsp), %esi
callq 0x3a7a2
notb %bl
testb $0xc, %bl
je 0x24449
movzwl 0xe(%rbp), %eax
movl %eax, %ecx
andl $0x3, %ecx
cmpl $0x2, %ecx
jne 0x24298
movq 0x20(%rsp), %rdx
leaq 0x3ac55e(%rip), %rax    # 0x3d07c0
movswq (%rax,%rdx,2), %rax
leaq 0x240802(%rip), %rcx    # 0x264a70
movl (%rcx,%rax,4), %edi
leaq 0x3ae548(%rip), %rax    # 0x3d27c0
movswq (%rax,%rdx,2), %rax
leaq 0x2447fc(%rip), %rcx    # 0x268a80
movl (%rcx,%rax,4), %esi
pushq $0x1
popq %rcx
movl 0x58(%rsp), %edx
callq 0x39d01
jmp 0x24449
testb $0x1, %al
jne 0x2443d
movq 0x20(%rsp), %rdx
leaq 0x3ac514(%rip), %rax    # 0x3d07c0
movswq (%rax,%rdx,2), %rax
leaq 0x2407b8(%rip), %rcx    # 0x264a70
movslq (%rcx,%rax,4), %r12
leaq 0x3ae4fd(%rip), %rax    # 0x3d27c0
movswq (%rax,%rdx,2), %rax
leaq 0x2447b1(%rip), %rcx    # 0x268a80
movslq (%rcx,%rax,4), %r15
movzbl 0x1d(%rbp), %ecx
leaq 0x36d802(%rip), %rax    # 0x391ae0
movq (%rax,%rcx,8), %rdi
cmpq 0x3e4d1f(%rip), %rdi    # 0x409008
je 0x2430e
movq %rdi, 0x3e4d16(%rip)    # 0x409008
testq %rdi, %rdi
jne 0x24309
movslq 0x3e4d06(%rip), %rcx    # 0x409004
movq (%rax,%rcx,8), %rdi
movq %rdi, 0x3e4cff(%rip)    # 0x409008
callq 0x641cb
movl 0x24074c(%rip), %eax    # 0x264a60
subl 0x8(%rbp), %eax
movl %eax, 0x4287cf(%rip)    # 0x44caec
jg 0x24449
movl 0x18(%rbp), %eax
xorl %ecx, %ecx
cmpw $0x2400, %ax            # imm = 0x2400
cmovbl %eax, %ecx
movw %cx, 0x3e4cda(%rip)     # 0x409010
movswl %cx, %edi
callq 0x2cc16
movzwl 0x3e4ccb(%rip), %ebx    # 0x409010
movswq %bx, %rax
leaq 0x3e4cd0(%rip), %rcx    # 0x409020
cmpw $0x0, (%rcx,%rax,2)
jle 0x24449
leaq 0x3d647e(%rip), %rcx    # 0x3fa7e0
cmpw $0x0, (%rcx,%rax,2)
jle 0x24449
leaq 0x20f6ec(%rip), %rcx    # 0x233a60
testb $-0x40, (%rcx,%rax,4)
je 0x24391
movswl %bx, %edi
xorl %esi, %esi
callq 0x2163b
addl %eax, %ebx
movw %bx, 0x3e4c83(%rip)     # 0x409010
movswq %bx, %rax
leaq 0x36df48(%rip), %r14    # 0x3922e0
cmpq $0x0, (%r14,%rax,8)
jne 0x243ae
movswl %bx, %edi
callq 0x2cc4a
movzwl 0x3e4c62(%rip), %ebx    # 0x409010
movq %r12, 0x8(%rsp)
movq %r15, 0x18(%rsp)
movswq %bx, %rbx
movq (%r14,%rbx,8), %r12
movq %r12, 0x3e9459(%rip)    # 0x40d820
movsbl 0x1c(%rbp), %eax
movl %eax, 0x3e945b(%rip)    # 0x40d82c
movslq 0x3a3970(%rip), %rax    # 0x3c7d48
movl %eax, 0x3e9452(%rip)    # 0x40d830
movb 0x20(%rbp), %cl
testb %cl, %cl
je 0x243f9
addb $0x10, %cl
movzbl %cl, %ecx
imulq %rax, %rcx
shrq $0x4, %rcx
movl %ecx, 0x3e9437(%rip)    # 0x40d830
movq %rbp, %rax
movswl 0xe(%rbp), %ebp
movl %ebp, 0x3e4bfa(%rip)    # 0x409000
testb $0x40, %bpl
jne 0x25528
movl 0x244661(%rip), %r8d    # 0x268a78
movl 0x244653(%rip), %edi    # 0x268a70
movl 0x20f62c(%rip), %r9d    # 0x233a50
shll $0x14, %r9d
movl 0x20f626(%rip), %ecx    # 0x233a54
shll $0x14, %ecx
negl %ecx
movl %edi, %esi
movl %r8d, %eax
jmp 0x25ad8
pushq $0x1
popq %rdi
movl 0x38(%rsp), %esi
callq 0x3a7a2
leaq 0x4(%rbp), %rax
movq %rax, 0x98(%rsp)
leaq 0x8(%rbp), %rax
movq %rax, 0xb0(%rsp)
leaq 0x3a8728(%rip), %rbp    # 0x3ccb90
leaq 0x3aa521(%rip), %r10    # 0x3ce990
movq 0x40(%rsp), %rax
movswl (%rax), %edi
testl %edi, %edi
js 0x254b9
movl %edi, %r12d
leaq 0x2405e7(%rip), %rax    # 0x264a70
movslq (%rax,%r12,4), %r11
leaq 0x2445ec(%rip), %rax    # 0x268a80
movslq (%rax,%r12,4), %rbx
movzwl (%rbp,%rbx,2), %eax
cmpw (%r10,%rbx,2), %ax
jl 0x244c9
leaq (%r11,%r11), %rax
movq %r11, %rcx
cmpq %rbx, %rcx
jge 0x249e1
movzwl (%rax,%rbp), %edx
incq %rcx
leaq 0x2(%rax), %rsi
cmpw (%rax,%r10), %dx
movq %rsi, %rax
jge 0x244ab
leaq 0x20d580(%rip), %rax    # 0x231a50
movswq (%rax,%r12,2), %r8
cmpw $0x2, 0x36d5f3(%rip)    # 0x391ad0
jne 0x24540
movslq 0x7975a(%rip), %rax     # 0x9dc40
cmpl %r11d, %eax
setl %cl
cmpl %ebx, %eax
setg %dl
orb %cl, %dl
jne 0x24540
movl 0x3ed96d(%rip), %edx    # 0x411e68
movswl (%r13,%rax,2), %esi
movw $0x1, %cx
cmpl %esi, %edx
jle 0x2451c
leaq 0x426760(%rip), %rcx    # 0x44ac70
movswl (%rcx,%rax,2), %eax
movw $0x2, %cx
cmpl %eax, %edx
jl 0x24540
movzwl 0x2e(%rsp), %eax
movw %ax, 0x42a9c8(%rip)     # 0x44eef0
movw %r8w, 0x42a9c2(%rip)    # 0x44eef2
movw %cx, 0x36d59b(%rip)     # 0x391ad2
movw $0x1, 0x36d590(%rip)    # 0x391ad0
movl %edi, 0x40(%rsp)
movq %r8, 0xa0(%rsp)
movq %r8, %rax
shlq $0x5, %rax
leaq 0x18d4f6(%rip), %r13    # 0x1b1a50
leaq (%rax,%r13), %rbp
movswq 0xc(%rax,%r13), %r9
imulq $0x28, %r9, %rcx
leaq 0x2184f1(%rip), %rax    # 0x23ca60
addq %rax, %rcx
movq %rcx, 0x18(%rsp)
testw %r9w, %r9w
movq %r11, 0x8(%rsp)
movq %r9, 0x38(%rsp)
movq %r12, 0x30(%rsp)
js 0x2475b
movslq 0x796bd(%rip), %rax     # 0x9dc54
movq %rax, 0xa8(%rsp)
movzwl 0x3ac1fa(%rip), %eax    # 0x3d07a0
movw %ax, 0x5e(%rsp)
movl (%rbp), %esi
movl %esi, 0x14(%rsp)
movl 0x4(%rbp), %edx
movl %edx, 0x20(%rsp)
movl 0x58(%rsp), %r14d
movl %r14d, %edi
leaq 0x80(%rsp), %rcx
leaq 0x60(%rsp), %r8
movq %r9, %r12
callq 0x2373c
movswq 0x8(%rbp), %rax
shlq $0x5, %rax
movl (%rax,%r13), %r15d
movl 0x4(%rax,%r13), %r13d
movl %r14d, %edi
movl %r15d, %esi
movl %r13d, %edx
leaq 0x84(%rsp), %rcx
leaq 0x64(%rsp), %r8
callq 0x2373c
movl %r12d, %edi
movl 0x14(%rsp), %esi
movl 0x20(%rsp), %edx
leaq 0x88(%rsp), %rcx
leaq 0x68(%rsp), %r8
callq 0x2373c
movl %r12d, %edi
movl %r15d, %esi
movl %r13d, %edx
leaq 0x8c(%rsp), %rcx
leaq 0x6c(%rsp), %r8
callq 0x2373c
movl 0x20f40f(%rip), %esi    # 0x233a50
movl 0x20f40d(%rip), %edx    # 0x233a54
movl %r12d, %edi
leaq 0x90(%rsp), %rcx
leaq 0x70(%rsp), %r8
callq 0x2373c
movq %rbp, 0x20(%rsp)
movzwl 0xe(%rbp), %eax
andl $0x30, %eax
cmpw $0x10, %ax
jne 0x2468f
movswq 0x3ac128(%rip), %rax    # 0x3d079e
leal 0x1(%rax), %ecx
movw %cx, 0x3ac11e(%rip)     # 0x3d079e
leaq 0x3da959(%rip), %rcx    # 0x3fefe0
movl 0x40(%rsp), %edx
movw %dx, (%rcx,%rax,2)
movq 0x48(%rsp), %r12
testb $0x1, 0xc(%r12)
leaq 0x4247cf(%rip), %r13    # 0x448e70
leaq 0x3a84e8(%rip), %rbp    # 0x3ccb90
leaq 0x3aa2e1(%rip), %r10    # 0x3ce990
leaq 0x47d85a(%rip), %r15    # 0x4a1f10
movq 0x8(%rsp), %r11
je 0x246cf
xorl %r9d, %r9d
movq 0x18(%rsp), %rax
testb $0x1, 0xc(%rax)
jne 0x24b76
movl 0x80(%rsp), %r14d
movl 0x88(%rsp), %eax
movl %eax, 0x14(%rsp)
cmpl %r14d, %eax
jg 0x246fb
movl 0x8c(%rsp), %eax
cmpl 0x84(%rsp), %eax
jle 0x24a0a
movq %r15, %rdi
movl 0x40(%rsp), %esi
movq 0x38(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2169d
movq 0x8(%rsp), %rdi
movl 0x14(%rsp), %eax
cmpl 0x60(%rsp), %eax
movq 0x20(%rsp), %rsi
jg 0x2472f
movl 0x8c(%rsp), %eax
cmpl 0x64(%rsp), %eax
jle 0x24773
leaq (%rdi,%rdi), %rax
movq %rdi, %rcx
cmpq %rbx, %rcx
jg 0x24773
leaq 0x42652e(%rip), %rdx    # 0x44ac70
movzwl (%rax,%rdx), %edx
cmpw %dx, (%rax,%r15)
jle 0x24752
movw %dx, (%rax,%r15)
incq %rcx
addq $0x2, %rax
jmp 0x24736
movswl 0xe(%rbp), %r15d
movl %r15d, 0x3e4899(%rip)   # 0x409000
leaq 0x10(%rbp), %rax
movb $0x1, %r14b
jmp 0x2522b
cmpw $0x2, 0x36d355(%rip)    # 0x391ad0
jne 0x247cb
movslq 0x794bc(%rip), %rax     # 0x9dc40
cmpl %edi, %eax
setl %cl
cmpl %ebx, %eax
setg %dl
orb %cl, %dl
jne 0x247cb
movswl (%r15,%rax,2), %eax
cmpl %eax, 0x3ed6cb(%rip)    # 0x411e68
jg 0x247cb
movzwl 0x2e(%rsp), %eax
movw %ax, 0x42a745(%rip)     # 0x44eef0
movq 0xa0(%rsp), %rax
movw %ax, 0x42a738(%rip)     # 0x44eef2
andw $0x0, 0x36d310(%rip)    # 0x391ad2
movw $0x1, 0x36d305(%rip)    # 0x391ad0
movswl 0xe(%rsi), %r13d
movl 0x10(%rsi), %r12d
cmpw $0x2400, %r12w          # imm = 0x2400
movl $0x0, %eax
cmovael %eax, %r12d
movl %r13d, 0x3e4816(%rip)   # 0x409000
movw %r12w, 0x3e481e(%rip)   # 0x409010
movzbl 0x18(%rsi), %eax
movl %eax, 0x4282e4(%rip)    # 0x44cae0
movzbl 0x19(%rsi), %r15d
movswq %r12w, %rax
leaq 0x3e9044(%rip), %rcx    # 0x40d850
movzbl (%rax,%rcx), %ecx
shrl $0x4, %ecx
leaq 0x3d5fc6(%rip), %rdx    # 0x3fa7e0
movswl (%rdx,%rax,2), %edx
xorl %r8d, %r8d
leaq 0x78f88(%rip), %rdi     # 0x9d7b0
cmpl %edx, (%rdi,%rcx,4)
movl %r15d, 0x4282b2(%rip)   # 0x44cae4
setne %r8b
addl %ecx, %r8d
pushq $0x20
popq %rbp
subl %r8d, %ebp
movw %bp, 0x4282a2(%rip)     # 0x44cae8
leaq 0x20f213(%rip), %rcx    # 0x233a60
testb $-0x40, (%rcx,%rax,4)
je 0x2486e
movswl %r12w, %edi
xorl %esi, %esi
callq 0x2163b
movq 0x20(%rsp), %rsi
addl %eax, %r12d
movw %r12w, 0x3e47a2(%rip)   # 0x409010
movsbl 0x14(%rsi), %eax
movl %eax, 0x3e8fb4(%rip)    # 0x40d82c
movslq 0x3a34c1(%rip), %rax    # 0x3c7d40
movl %eax, 0x3e8fab(%rip)    # 0x40d830
movq 0x48(%rsp), %r12
movb 0x20(%r12), %cl
testb %cl, %cl
je 0x248a7
addb $0x10, %cl
movzbl %cl, %ecx
imulq %rax, %rcx
shrq $0x4, %rcx
movl %ecx, 0x3e8f89(%rip)    # 0x40d830
movzbl 0x15(%rsi), %edx
leaq 0x36d22e(%rip), %rax    # 0x391ae0
cmpq $0x0, (%rax,%rdx,8)
movl $0x0, %eax
cmovel %eax, %edx
movzbl 0x17(%rsi), %eax
addb $-0x13, %bpl
movl %ebp, %ecx
shll %cl, %eax
movl %edx, 0x3e4733(%rip)    # 0x409004
movl %eax, 0x428219(%rip)    # 0x44caf0
movq 0x18(%rsp), %rcx
addq $0x4, %rcx
testb $0x4, %r13b
movl 0x240176(%rip), %edx    # 0x264a60
cmovneq 0x98(%rsp), %rcx
subl (%rcx), %edx
imull %eax, %edx
shll $0x8, %edx
shll $0x18, %r15d
addl %edx, %r15d
movl %r15d, 0x4281e3(%rip)   # 0x44caec
btl $0x8, %r13d
jae 0x24922
negl %eax
movl %eax, 0x4281d8(%rip)    # 0x44caf0
negl %r15d
movl %r15d, 0x4281ca(%rip)   # 0x44caec
movl 0x40(%rsp), %edi
callq 0x3ae5a
movq 0x8(%rsp), %rdi
movl %ebx, %esi
leaq 0x424537(%rip), %r13    # 0x448e70
movq %r13, %rdx
leaq 0x47d5cd(%rip), %r15    # 0x4a1f10
movq %r15, %rcx
leaq 0x47f3c3(%rip), %r8     # 0x4a3d10
leaq 0x482fbc(%rip), %r9     # 0x4a7910
callq 0x3b1ef
cmpl %r14d, 0x14(%rsp)
leaq 0x3a822b(%rip), %rbp    # 0x3ccb90
jl 0x2497b
movl 0x8c(%rsp), %eax
cmpl 0x84(%rsp), %eax
jge 0x24a66
movzwl 0x3abe16(%rip), %eax    # 0x3d0798
movq 0x8(%rsp), %r11
leaq (%r11,%r11), %rcx
movq %r11, %rdx
leaq 0x3a9ffb(%rip), %r10    # 0x3ce990
cmpq %rbx, %rdx
jg 0x24aba
movzwl (%rcx,%rbp), %edi
movzwl (%rcx,%r10), %esi
cmpw %si, %di
jg 0x249d8
movzwl (%rcx,%r13), %r9d
movzwl (%rcx,%r15), %r8d
cmpw %r8w, %r9w
cmovgl %r9d, %r8d
cmpw %di, %r8w
jle 0x249d8
movw %r8w, (%rcx,%rbp)
cmpw %si, %r8w
jle 0x249d8
decl %eax
movw %ax, 0x3abdc0(%rip)     # 0x3d0798
incq %rdx
addq $0x2, %rcx
jmp 0x24995
movslq 0x7926c(%rip), %rax     # 0x9dc54
leaq 0x478521(%rip), %rcx    # 0x49cf10
movl %edi, (%rcx,%rax,4)
leaq 0x47c517(%rip), %rcx    # 0x4a0f10
movb $0x0, (%rax,%rcx)
incl %eax
movl %eax, 0x7924f(%rip)     # 0x9dc54
jmp 0x254a9
xorl %r9d, %r9d
cmpb $0x0, 0x3abd94(%rip)    # 0x3d07a8
je 0x24abe
movzwl 0x3abd77(%rip), %eax    # 0x3d0798
leaq (%r11,%r11), %rcx
movq %r11, %rdx
cmpq %rbx, %rdx
jg 0x24abe
movzwl (%rcx,%r13), %esi
movzwl (%rcx,%rbp), %edi
cmpw %di, %si
jle 0x24a5d
movzwl (%rcx,%r10), %r8d
cmpw %r8w, %di
jg 0x24a5d
movw %si, (%rcx,%rbp)
cmpw %r8w, %si
jle 0x24a5d
decl %eax
movw %ax, 0x3abd3b(%rip)     # 0x3d0798
incq %rdx
addq $0x2, %rcx
jmp 0x24a28
movzwl 0x3abd2b(%rip), %eax    # 0x3d0798
movq 0x8(%rsp), %r11
leaq (%r11,%r11), %rcx
movq %r11, %rdx
leaq 0x3a9f10(%rip), %r10    # 0x3ce990
cmpq %rbx, %rdx
jg 0x24aba
movzwl (%rcx,%r15), %esi
movzwl (%rcx,%rbp), %edi
cmpw %di, %si
jle 0x24ab1
movzwl (%rcx,%r10), %r8d
cmpw %r8w, %di
jg 0x24ab1
movw %si, (%rcx,%rbp)
cmpw %r8w, %si
jle 0x24ab1
decl %eax
movw %ax, 0x3abce7(%rip)     # 0x3d0798
incq %rdx
addq $0x2, %rcx
jmp 0x24a80
pushq $0x1
popq %r9
cmpl %r14d, 0x14(%rsp)
jl 0x24ae8
movl 0x8c(%rsp), %eax
cmpl 0x84(%rsp), %eax
jl 0x24ae8
movl 0x23ff85(%rip), %eax    # 0x264a60
cmpl 0x90(%rsp), %eax
jge 0x24b76
movl %ebx, %r15d
subl %r11d, %r15d
movswl 0x3abcab(%rip), %eax    # 0x3d07a0
leal (%r15,%rax), %ecx
incl %ecx
cmpl $0x77fff, %ecx          # imm = 0x77FFF
jg 0x24b76
incl %r15d
movslq %eax, %rcx
movslq 0x79144(%rip), %rdx     # 0x9dc54
leaq 0x486a09(%rip), %rsi    # 0x4ab520
movw %ax, (%rsi,%rdx,2)
leaq 0x4783ee(%rip), %rax    # 0x49cf10
movl 0x40(%rsp), %esi
movl %esi, (%rax,%rdx,4)
leaq 0x47c3e0(%rip), %rax    # 0x4a0f10
movb $0x1, (%rdx,%rax)
leal 0x1(%rdx), %eax
movl %eax, 0x79117(%rip)     # 0x9dc54
leaq (%rbp,%r11,2), %rdi
leaq 0x4889d7(%rip), %rax    # 0x4ad520
leaq (%rax,%rcx,2), %rsi
leal (%r15,%r15), %edx
movq %r12, %r14
movl %r9d, %r12d
callq 0x44524
movl %r12d, %r9d
movq %r14, %r12
movq 0x8(%rsp), %r11
leaq 0x3a9e22(%rip), %r10    # 0x3ce990
addw %r15w, 0x3abc2a(%rip)   # 0x3d07a0
testb $0x1, 0xe(%r12)
je 0x24b8d
movq 0x18(%rsp), %rax
testb $0x1, 0xe(%rax)
jne 0x24f8f
movl 0x60(%rsp), %r14d
movl 0x68(%rsp), %eax
movl %eax, 0x14(%rsp)
cmpl %r14d, %eax
leaq 0x57897c(%rip), %r15    # 0x59d520
jl 0x24bb4
movl 0x6c(%rsp), %eax
cmpl 0x64(%rsp), %eax
jge 0x24f99
movl %r9d, 0x54(%rsp)
movq %r15, %rdi
movl 0x40(%rsp), %esi
movq 0x38(%rsp), %rdx
pushq $0x1
popq %rcx
callq 0x2169d
movq 0x8(%rsp), %rdi
movl 0x14(%rsp), %eax
cmpl 0x80(%rsp), %eax
movq 0x20(%rsp), %r8
jl 0x24bf1
movl 0x6c(%rsp), %eax
cmpl 0x84(%rsp), %eax
jge 0x24c17
leaq (%rdi,%rdi), %rax
movq %rdi, %rcx
cmpq %rbx, %rcx
jg 0x24c17
movzwl (%rax,%r13), %edx
cmpw %dx, (%rax,%r15)
jge 0x24c0e
movw %dx, (%rax,%r15)
incq %rcx
addq $0x2, %rax
jmp 0x24bf8
cmpw $0x2, 0x36ceb1(%rip)    # 0x391ad0
jne 0x24c82
movslq 0x79018(%rip), %rax     # 0x9dc40
cmpl %edi, %eax
setl %cl
cmpl %ebx, %eax
setg %dl
orb %cl, %dl
jne 0x24c82
movswl (%r15,%rax,2), %eax
cmpl %eax, 0x3ed227(%rip)    # 0x411e68
jl 0x24c82
movzwl 0x2e(%rsp), %eax
movw %ax, 0x42a2a1(%rip)     # 0x44eef0
movq 0xa0(%rsp), %rax
movw %ax, 0x42a294(%rip)     # 0x44eef2
testb $0x2, 0xe(%r8)
je 0x24c71
movzwl 0xa(%r8), %eax
movw %ax, 0x42a281(%rip)     # 0x44eef2
andw $0x0, 0x36ce59(%rip)    # 0x391ad2
movw $0x1, 0x36ce4e(%rip)    # 0x391ad0
movswl 0xe(%r8), %r13d
testb $0x2, %r13b
jne 0x24d1a
movl %r13d, 0x3e4368(%rip)   # 0x409000
movl 0x10(%r8), %r15d
cmpw $0x2400, %r15w          # imm = 0x2400
movl $0x0, %eax
cmovael %eax, %r15d
movw %r15w, 0x3e435d(%rip)   # 0x409010
movzbl 0x18(%r8), %eax
movl %eax, 0x427e22(%rip)    # 0x44cae0
movzbl 0x19(%r8), %ebp
movl %ebp, 0x427e1b(%rip)    # 0x44cae4
movswq %r15w, %rax
leaq 0x20ed8c(%rip), %rcx    # 0x233a60
testb $-0x40, (%rcx,%rax,4)
je 0x24cfa
movswl %r15w, %edi
xorl %esi, %esi
callq 0x2163b
movq 0x20(%rsp), %r8
movq 0x8(%rsp), %rdi
addl %eax, %r15d
movw %r15w, 0x3e4316(%rip)   # 0x409010
movl 0x54(%rsp), %r9d
movsbl 0x14(%r8), %eax
movl %eax, 0x3e8b22(%rip)    # 0x40d82c
movzbl 0x15(%r8), %eax
movl %eax, 0x3e42ef(%rip)    # 0x409004
jmp 0x24de6
movswq 0xa(%r8), %r12
shlq $0x5, %r12
leaq 0x18cd26(%rip), %rcx    # 0x1b1a50
movswl 0xe(%r12,%rcx), %r13d
movl %r13d, 0x3e42c9(%rip)   # 0x409000
movl 0x10(%r12,%rcx), %r15d
cmpw $0x2400, %r15w          # imm = 0x2400
movl $0x0, %eax
cmovael %eax, %r15d
movw %r15w, 0x3e42bd(%rip)   # 0x409010
movzbl 0x18(%r12,%rcx), %eax
movl %eax, 0x427d81(%rip)    # 0x44cae0
movzbl 0x19(%r12,%rcx), %ebp
movl %ebp, 0x427d79(%rip)    # 0x44cae4
movswq %r15w, %rax
leaq 0x20ecea(%rip), %rcx    # 0x233a60
testb $-0x40, (%rcx,%rax,4)
je 0x24d97
movswl %r15w, %edi
xorl %esi, %esi
callq 0x2163b
movq 0x8(%rsp), %rdi
addl %eax, %r15d
movw %r15w, 0x3e4279(%rip)   # 0x409010
movl 0x54(%rsp), %r9d
leaq 0x18ccad(%rip), %rdx    # 0x1b1a50
addq %rdx, %r12
movsbl 0x14(%r12), %eax
movl %eax, 0x3e8a7a(%rip)    # 0x40d82c
movzbl 0x15(%r12), %eax
movl %eax, 0x3e4246(%rip)    # 0x409004
leaq 0x20cc8b(%rip), %rcx    # 0x231a50
movq 0x30(%rsp), %rsi
movswq (%rcx,%rsi,2), %rsi
movq %rsi, 0xa0(%rsp)
movq %rsi, %r8
shlq $0x5, %r8
addq %rdx, %r8
movq 0x48(%rsp), %r12
movl %eax, %eax
leaq 0x36ccf1(%rip), %rcx    # 0x391ae0
cmpq $0x0, (%rcx,%rax,8)
jne 0x24dfd
andl $0x0, 0x3e4207(%rip)    # 0x409004
movslq 0x3a2f3c(%rip), %rax    # 0x3c7d40
movl %eax, 0x3e8a26(%rip)    # 0x40d830
movb 0x20(%r12), %cl
testb %cl, %cl
je 0x24e27
addb $0x10, %cl
movzbl %cl, %ecx
imulq %rax, %rcx
shrq $0x4, %rcx
movl %ecx, 0x3e8a09(%rip)    # 0x40d830
movswq %r15w, %rax
leaq 0x3e8a1e(%rip), %rcx    # 0x40d850
movzbl (%rax,%rcx), %ecx
shrl $0x4, %ecx
leaq 0x3d59a0(%rip), %rdx    # 0x3fa7e0
movswl (%rdx,%rax,2), %eax
xorl %edx, %edx
leaq 0x78963(%rip), %rsi     # 0x9d7b0
cmpl %eax, (%rsi,%rcx,4)
setne %dl
addl %ecx, %edx
pushq $0x20
popq %rcx
subl %edx, %ecx
movw %cx, 0x427c87(%rip)     # 0x44cae8
movzbl 0x17(%r8), %eax
addb $-0x13, %cl
shll %cl, %eax
movl %eax, 0x427c7f(%rip)    # 0x44caf0
movq 0x18(%rsp), %rcx
addq $0x8, %rcx
testb $0x4, %r13b
movl 0x23fbdc(%rip), %edx    # 0x264a60
cmovneq 0x98(%rsp), %rcx
subl (%rcx), %edx
imull %eax, %edx
shll $0x8, %edx
shll $0x18, %ebp
addl %edx, %ebp
movl %ebp, 0x427c4c(%rip)    # 0x44caec
btl $0x8, %r13d
movq 0x30(%rsp), %r12
jae 0x24ebc
negl %eax
movl %eax, 0x427c3c(%rip)    # 0x44caf0
negl %ebp
movl %ebp, 0x427c30(%rip)    # 0x44caec
movq %r8, 0x20(%rsp)
testl %r9d, %r9d
leaq 0x423fa5(%rip), %r13    # 0x448e70
leaq 0x57864e(%rip), %r15    # 0x59d520
jne 0x24ee7
movl 0x40(%rsp), %edi
movq 0x20(%rsp), %rsi
callq 0x3ae5a
movq 0x8(%rsp), %rdi
movl %ebx, %esi
movq %r15, %rdx
leaq 0x425d7d(%rip), %rcx    # 0x44ac70
leaq 0x47ee16(%rip), %r8     # 0x4a3d10
leaq 0x482a0f(%rip), %r9     # 0x4a7910
callq 0x3b1ef
cmpl %r14d, 0x14(%rsp)
leaq 0x3a7c7e(%rip), %rbp    # 0x3ccb90
jg 0x24f22
movl 0x6c(%rsp), %eax
cmpl 0x64(%rsp), %eax
jle 0x24fff
movzwl 0x3ab86f(%rip), %eax    # 0x3d0798
movq 0x8(%rsp), %r11
leaq (%r11,%r11), %rcx
movq %r11, %rdx
leaq 0x3a9a54(%rip), %r10    # 0x3ce990
cmpq %rbx, %rdx
jg 0x25055
movzwl (%rcx,%rbp), %esi
movzwl (%rcx,%r10), %edi
cmpw %di, %si
jg 0x24f86
leaq 0x425d16(%rip), %r8     # 0x44ac70
movzwl (%rcx,%r8), %r9d
movzwl (%rcx,%r15), %r8d
cmpw %r8w, %r9w
cmovll %r9d, %r8d
cmpw %di, %r8w
jge 0x24f86
movw %r8w, (%rcx,%r10)
cmpw %r8w, %si
jle 0x24f86
decl %eax
movw %ax, 0x3ab812(%rip)     # 0x3d0798
incq %rdx
addq $0x2, %rcx
jmp 0x24f3c
movq 0x30(%rsp), %r12
jmp 0x25101
cmpb $0x0, 0x3ab809(%rip)    # 0x3d07a9
je 0x25197
movzwl 0x3ab7eb(%rip), %eax    # 0x3d0798
leaq (%r11,%r11), %rcx
movq %r11, %rdx
movq 0x30(%rsp), %r12
cmpq %rbx, %rdx
jg 0x25059
leaq 0x425ca7(%rip), %rsi    # 0x44ac70
movzwl (%rcx,%rsi), %esi
movzwl (%rcx,%r10), %edi
cmpw %di, %si
jge 0x24ff6
movzwl (%rcx,%rbp), %r8d
cmpw %di, %r8w
jg 0x24ff6
movw %si, (%rcx,%r10)
cmpw %si, %r8w
jle 0x24ff6
decl %eax
movw %ax, 0x3ab7a2(%rip)     # 0x3d0798
incq %rdx
addq $0x2, %rcx
jmp 0x24fb9
movzwl 0x3ab792(%rip), %eax    # 0x3d0798
movq 0x8(%rsp), %r11
leaq (%r11,%r11), %rcx
movq %r11, %rdx
leaq 0x3a9977(%rip), %r10    # 0x3ce990
cmpq %rbx, %rdx
jg 0x25055
movzwl (%rcx,%r15), %esi
movzwl (%rcx,%r10), %edi
cmpw %di, %si
jge 0x2504c
movzwl (%rcx,%rbp), %r8d
cmpw %di, %r8w
jg 0x2504c
movw %si, (%rcx,%r10)
cmpw %si, %r8w
jle 0x2504c
decl %eax
movw %ax, 0x3ab74c(%rip)     # 0x3d0798
incq %rdx
addq $0x2, %rcx
jmp 0x25019
pushq $0x1
popq %r9
cmpl %r14d, 0x14(%rsp)
jg 0x2507a
movl 0x6c(%rsp), %eax
cmpl 0x64(%rsp), %eax
jg 0x2507a
movl 0x23f9f0(%rip), %eax    # 0x264a60
cmpl 0x70(%rsp), %eax
jle 0x25101
movl %ebx, %r15d
subl %r11d, %r15d
movswl 0x3ab719(%rip), %eax    # 0x3d07a0
leal (%r15,%rax), %ecx
incl %ecx
cmpl $0x77fff, %ecx          # imm = 0x77FFF
jg 0x25101
incl %r15d
movslq %eax, %rcx
movslq 0x78bb2(%rip), %rdx     # 0x9dc54
leaq 0x486477(%rip), %rsi    # 0x4ab520
movw %ax, (%rsi,%rdx,2)
leaq 0x477e5c(%rip), %rax    # 0x49cf10
movl 0x40(%rsp), %esi
movl %esi, (%rax,%rdx,4)
leaq 0x47be4e(%rip), %rax    # 0x4a0f10
movb $0x2, (%rdx,%rax)
leal 0x1(%rdx), %eax
movl %eax, 0x78b85(%rip)     # 0x9dc54
leaq (%r10,%r11,2), %rdi
leaq 0x488446(%rip), %rax    # 0x4ad520
leaq (%rax,%rcx,2), %rsi
leal (%r15,%r15), %edx
movl %r9d, %r14d
callq 0x44524
movl %r14d, %r9d
movq 0x8(%rsp), %r11
leaq 0x3a9897(%rip), %r10    # 0x3ce990
addw %r15w, 0x3ab69f(%rip)   # 0x3d07a0
cmpw $0x0, 0x3ab68f(%rip)    # 0x3d0798
js 0x254b9
movq 0x20(%rsp), %rax
testb $0x20, 0xe(%rax)
jne 0x251fd
movq 0x38(%rsp), %rcx
movl %ecx, %eax
shrl $0x3, %eax
andl $0x7, %ecx
leaq 0x7866e(%rip), %rdx     # 0x9d7a0
movb (%rcx,%rdx), %cl
leaq 0x3a3c24(%rip), %rdx    # 0x3c8d60
testb %cl, (%rax,%rdx)
jne 0x251fd
movzwl (%rbp,%rbx,2), %eax
cmpw (%r10,%rbx,2), %ax
jge 0x25172
movq 0x38(%rsp), %rdi
movl %r9d, %r14d
callq 0x23867
movl %r14d, %r9d
movq 0x8(%rsp), %r11
leaq 0x3a9823(%rip), %r10    # 0x3ce990
jmp 0x251fd
leaq (%r11,%r11), %rax
xorl %r15d, %r15d
leaq (%r11,%r15), %rcx
cmpq %rbx, %rcx
jge 0x251bd
leaq (%rax,%r15,2), %rcx
movzwl (%rbp,%rcx), %edx
cmpw (%r10,%rcx), %dx
jl 0x251a1
incq %r15
jmp 0x25179
movq 0x30(%rsp), %r12
jmp 0x25059
movq 0x38(%rsp), %rdi
movl %r9d, %r14d
callq 0x23867
movl %r14d, %r9d
movq 0x8(%rsp), %r11
leaq 0x3a97d3(%rip), %r10    # 0x3ce990
movl %ebx, %eax
subl %r11d, %eax
cmpl %r15d, %eax
movl 0x40(%rsp), %ecx
jne 0x251fd
movzwl 0x5e(%rsp), %eax
movw %ax, 0x3ab5c9(%rip)     # 0x3d07a0
leaq 0x477d32(%rip), %rax    # 0x49cf10
movq 0xa8(%rsp), %rdx
movl %ecx, (%rax,%rdx,4)
leaq 0x47bd20(%rip), %rax    # 0x4a0f10
movb $0x0, (%rdx,%rax)
leal 0x1(%rdx), %eax
movl %eax, 0x78a57(%rip)     # 0x9dc54
movq 0x20(%rsp), %rcx
movswl 0xe(%rcx), %r15d
testb $0x20, %r15b
je 0x254a9
movl %r15d, 0x3e3de8(%rip)   # 0x409000
leaq 0x12(%rcx), %rax
testl %r9d, %r9d
sete %r14b
movq 0x38(%rsp), %r9
movq %rcx, %rbp
movzwl (%rax), %r13d
cmpw $0x2400, %r13w          # imm = 0x2400
movl $0x0, %eax
cmovael %eax, %r13d
movw %r13w, 0x3e3dca(%rip)   # 0x409010
movzbl 0x18(%rbp), %eax
movl %eax, 0x427890(%rip)    # 0x44cae0
movzbl 0x19(%rbp), %r12d
movl %r12d, 0x427888(%rip)   # 0x44cae4
movswq %r13w, %rax
leaq 0x20e7f9(%rip), %rcx    # 0x233a60
testb $-0x40, (%rcx,%rax,4)
je 0x2528d
movswl %r13w, %edi
xorl %esi, %esi
callq 0x2163b
movq 0x38(%rsp), %r9
movq 0x8(%rsp), %r11
addl %eax, %r13d
movw %r13w, 0x3e3d83(%rip)   # 0x409010
movsbl 0x14(%rbp), %eax
movl %eax, 0x3e8595(%rip)    # 0x40d82c
movslq 0x3a2aa2(%rip), %rax    # 0x3c7d40
movl %eax, 0x3e858c(%rip)    # 0x40d830
movq 0x48(%rsp), %rcx
movb 0x20(%rcx), %cl
testb %cl, %cl
je 0x252c4
addb $0x10, %cl
movzbl %cl, %ecx
imulq %rax, %rcx
shrq $0x4, %rcx
movl %ecx, 0x3e856c(%rip)    # 0x40d830
movzbl 0x15(%rbp), %eax
leaq 0x36c811(%rip), %rcx    # 0x391ae0
cmpq $0x0, (%rcx,%rax,8)
movl $0x0, %ecx
cmovel %ecx, %eax
movswq %r13w, %rcx
leaq 0x3e8569(%rip), %rdx    # 0x40d850
movzbl (%rcx,%rdx), %edx
shrl $0x4, %edx
leaq 0x3d54eb(%rip), %rsi    # 0x3fa7e0
movswl (%rsi,%rcx,2), %ecx
xorl %esi, %esi
leaq 0x784ae(%rip), %rdi     # 0x9d7b0
cmpl %ecx, (%rdi,%rdx,4)
setne %sil
addl %edx, %esi
pushq $0x20
popq %rcx
subl %esi, %ecx
movw %cx, 0x4277d1(%rip)     # 0x44cae8
movzbl 0x17(%rbp), %edx
addb $-0x13, %cl
shll %cl, %edx
movq 0x18(%rsp), %rdi
addq $0x4, %rdi
testb $0x4, %r15b
movq 0xb0(%rsp), %rcx
movq 0x98(%rsp), %rsi
cmoveq %rsi, %rcx
cmovneq %rsi, %rdi
testw %r9w, %r9w
cmovsq %rcx, %rdi
movl 0x23f70d(%rip), %ecx    # 0x264a60
subl (%rdi), %ecx
movl %eax, 0x3e3ca9(%rip)    # 0x409004
imull %edx, %ecx
shll $0x8, %ecx
shll $0x18, %r12d
addl %ecx, %r12d
btl $0x8, %r15d
movl %edx, 0x42777d(%rip)    # 0x44caf0
movl %r12d, 0x427772(%rip)   # 0x44caec
jae 0x2538e
negl %edx
movl %edx, 0x42776c(%rip)    # 0x44caf0
negl %r12d
movl %r12d, 0x42775e(%rip)   # 0x44caec
testb %r14b, %r14b
leaq 0x423ad8(%rip), %r13    # 0x448e70
movl 0x40(%rsp), %r15d
je 0x253af
movl %r15d, %edi
movq %rbp, %rsi
callq 0x3ae5a
movq 0x8(%rsp), %r11
movl %r11d, %edi
movl %ebx, %esi
movq %r13, %rdx
leaq 0x4258b2(%rip), %rcx    # 0x44ac70
leaq 0x47e94b(%rip), %r8     # 0x4a3d10
leaq 0x482544(%rip), %r9     # 0x4a7910
callq 0x3b1ef
movq 0x8(%rsp), %rdi
movzwl 0x3ab3bb(%rip), %eax    # 0x3d0798
movq %rdi, %rcx
addq %rdi, %rcx
movq %rdi, %rdx
leaq 0x3a77a3(%rip), %rbp    # 0x3ccb90
leaq 0x3a959c(%rip), %r10    # 0x3ce990
movq 0x30(%rsp), %r12
cmpq %rbx, %rdx
jg 0x25427
movzwl (%rcx,%rbp), %esi
cmpw (%rcx,%r10), %si
jg 0x2541e
andw $0x0, (%rcx,%r10)
movw $0x1, (%rcx,%rbp)
decl %eax
movw %ax, 0x3ab37a(%rip)     # 0x3d0798
incq %rdx
addq $0x2, %rcx
jmp 0x253f9
movslq 0x78826(%rip), %rax     # 0x9dc54
leaq 0x477adb(%rip), %rcx    # 0x49cf10
movl %r15d, (%rcx,%rax,4)
leaq 0x47bad0(%rip), %rcx    # 0x4a0f10
movb $0x0, (%rax,%rcx)
incl %eax
movl %eax, 0x78808(%rip)     # 0x9dc54
cmpw $0x2, 0x36c67c(%rip)    # 0x391ad0
jne 0x254a9
movl 0x787e4(%rip), %eax     # 0x9dc40
cmpl %edi, %eax
setl %cl
cmpl %ebx, %eax
setg %al
orb %cl, %al
jne 0x254a9
movw $0x1, 0x36c65d(%rip)    # 0x391ad0
movzwl 0x2e(%rsp), %eax
movw %ax, 0x429a71(%rip)     # 0x44eef0
movq 0xa0(%rsp), %rax
movw %ax, 0x429a64(%rip)     # 0x44eef2
cmpw $0x0, 0x38(%rsp)
js 0x254a1
movw $0x4, 0x36c633(%rip)    # 0x391ad2
jmp 0x254a9
andw $0x0, 0x36c629(%rip)    # 0x391ad2
leaq 0x3b3320(%rip), %rax    # 0x3d87d0
leaq (%rax,%r12,2), %rax
jmp 0x24474
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl %r15d, 0x14(%rsp)
movswq (%rbp), %rax
shlq $0x5, %rax
leaq 0x18c570(%rip), %rcx    # 0x1b1a50
movswq 0x8(%rax,%rcx), %rdx
shlq $0x5, %rdx
movslq (%rdx,%rcx), %r14
movslq (%rax,%rcx), %r13
subq %r13, %r14
movslq 0x4(%rdx,%rcx), %rbp
movslq 0x4(%rax,%rcx), %r15
subq %r15, %rbp
movl %r14d, %eax
imull %r14d, %eax
movl %ebp, %edi
imull %ebp, %edi
addl %eax, %edi
callq 0x22169
testl %eax, %eax
je 0x2558b
movl %eax, %ecx
movl $0x100000, %eax         # imm = 0x100000
xorl %edx, %edx
idivl %ecx
cltq
jmp 0x25590
movq %rbx, 0x20(%rsp)
movswq (%rax), %rax
shlq $0x5, %rax
leaq 0x18c514(%rip), %rcx    # 0x1b1a50
movswq 0x8(%rax,%rcx), %rdx
shlq $0x5, %rdx
movslq (%rdx,%rcx), %rbx
movslq (%rax,%rcx), %r15
subq %r15, %rbx
movslq 0x4(%rdx,%rcx), %r13
movslq 0x4(%rax,%rcx), %r14
subq %r14, %r13
movl %ebx, %eax
imull %ebx, %eax
movl %r13d, %edi
imull %r13d, %edi
addl %eax, %edi
callq 0x22169
testl %eax, %eax
je 0x25a1a
movl %eax, %ecx
movl $0x100000, %eax         # imm = 0x100000
xorl %edx, %edx
idivl %ecx
cltq
jmp 0x25a1f
movl $0x400, %eax            # imm = 0x400
movslq 0x2434e1(%rip), %rdi    # 0x268a78
movq %rbp, %rsi
negq %rsi
movslq 0x2434cc(%rip), %rdx    # 0x268a70
movslq %ebp, %r9
imulq %rdi, %r9
movl 0x20e49f(%rip), %ecx    # 0x233a50
subl %ecx, %r13d
shll $0x6, %r13d
movl 0x20e496(%rip), %ecx    # 0x233a54
subl %ecx, %r15d
shll $0x6, %r15d
movslq %r13d, %r11
negl %r13d
movslq %r15d, %rcx
movq %rcx, %r15
movslq %r13d, %r10
imulq %rdi, %r10
imulq %rdi, %rcx
imulq %r14, %rdi
imulq %rdx, %rsi
addq %rdi, %rsi
shrq $0xa, %rsi
movslq %esi, %r8
imulq %rax, %r8
shrq $0xa, %r8
imulq %rdx, %r14
addq %r14, %r9
shrq $0xa, %r9
movslq %r9d, %rsi
imulq %rax, %rsi
shrq $0xa, %rsi
movl %r8d, %eax
negl %eax
movl %esi, %edi
negl %edi
imulq %rdx, %r15
addq %r15, %r10
shrq $0xe, %r10
imulq %rdx, %r11
addq %r11, %rcx
shrq $0xe, %rcx
movl %r10d, %r9d
imull %r8d, %r9d
movl %ecx, %edx
imull %esi, %edx
subl %edx, %r9d
imull %edi, %r10d
imull %eax, %ecx
addl %r10d, %ecx
movl 0x14(%rsp), %r15d
movslq 0x3a26e8(%rip), %rdx    # 0x3c7d38
movslq %eax, %r10
imulq %rdx, %r10
shrq $0x10, %r10
movslq %esi, %r11
imulq %rdx, %r11
shrq $0x10, %r11
leaq 0x3e81e3(%rip), %rax    # 0x40d850
movzbl (%r12,%rax), %esi
movl %esi, %ebp
andb $0xf, %bpl
movb $0x8, %al
movb $0x8, %dl
subb %bpl, %dl
movb %dl, 0x3ea5cb(%rip)     # 0x40fc50
movl %esi, %r14d
shrb $0x4, %r14b
subb %r14b, %al
movb %al, 0x3ea5bc(%rip)     # 0x40fc51
testb $0x8, %r15b
je 0x256b1
movb $0x9, %al
movb $0x9, %dl
subb %bpl, %dl
movb %dl, 0x3ea5a8(%rip)     # 0x40fc50
subb %r14b, %al
movb %al, 0x3ea5a0(%rip)     # 0x40fc51
movl %r15d, %r12d
testb $0x4, %r15b
jne 0x256c8
movl %ecx, %r15d
movl %edi, %r13d
movl %r9d, %ecx
movl %r8d, %edi
jmp 0x256dc
negl %r11d
movl %r10d, %ebp
negl %ebp
movl %r9d, %r15d
movl %r8d, %r13d
movl %r11d, %r10d
movl %ebp, %r11d
movl %edi, %ebp
negl %ebp
movl %r11d, %r8d
negl %r8d
movl %ecx, %r9d
negl %r9d
testb $0x10, %r12b
cmovel %ecx, %r9d
cmovnel %r11d, %r8d
cmovel %edi, %ebp
movl %r10d, %edi
negl %edi
movl %r13d, %r14d
negl %r14d
movl %r15d, %r11d
negl %r11d
testb $0x20, %r12b
cmovel %r15d, %r11d
cmovel %r13d, %r14d
cmovel %r10d, %edi
subl %ebp, %r8d
movl %edx, %ecx
shll %cl, %ebp
movl %ebp, 0x3e810f(%rip)    # 0x40d838
subl %r14d, %edi
movl %eax, %ecx
shll %cl, %r14d
movl %r14d, 0x3e810c(%rip)   # 0x40d844
movl %edx, %ecx
shll %cl, %r9d
movl %eax, %ecx
shll %cl, %r11d
movq 0x48(%rsp), %r12
movzbl 0x16(%r12), %ecx
shll $0x18, %ecx
addl %r9d, %ecx
movl %ecx, 0x427387(%rip)    # 0x44cae0
movzbl 0x17(%r12), %ecx
shll $0x18, %ecx
addl %r11d, %ecx
movl %ecx, 0x427379(%rip)    # 0x44cae4
movl %edx, %ecx
shll %cl, %r8d
movl 0x3ec6ee(%rip), %edx    # 0x411e64
imull %edx, %r8d
movl %r8d, 0x3e80bb(%rip)    # 0x40d83c
movl %eax, %ecx
shll %cl, %edi
imull %edx, %edi
movl %edi, 0x3e80b2(%rip)    # 0x40d840
movl %esi, %edi
andl $0xf, %edi
shrl $0x4, %esi
movq 0x18(%rsp), %rdx
callq 0x641b7
movslq 0x3e809d(%rip), %rax    # 0x40d844
movq 0x8(%rsp), %rbp
leaq -0x1(%rbp), %rcx
movq %rax, %rdx
imulq %rcx, %rdx
movslq 0x3e8082(%rip), %rsi    # 0x40d840
addq %rdx, %rsi
movslq 0x3e8070(%rip), %rdx    # 0x40d838
movslq %ecx, %rcx
imulq %rdx, %rcx
movslq 0x3e8066(%rip), %rdi    # 0x40d83c
addq %rcx, %rdi
movslq 0x42730c(%rip), %rcx    # 0x44caec
imulq %rcx, %rdx
shrq $0x10, %rdx
movl %edx, 0x3e804a(%rip)    # 0x40d838
imulq %rcx, %rsi
shrq $0x10, %rsi
movl %esi, 0x3e8044(%rip)    # 0x40d840
imulq %rcx, %rdi
shrq $0x10, %rdi
movl %edi, 0x3e8032(%rip)    # 0x40d83c
imulq %rcx, %rax
shrq $0x10, %rax
movl %eax, 0x3e802c(%rip)    # 0x40d844
movslq 0x3e8011(%rip), %rax    # 0x40d830
imulq %rcx, %rax
shrq $0xa, %rax
movl %eax, %ecx
negl %ecx
cmovsl %eax, %ecx
movl %ecx, 0x3e7ffc(%rip)    # 0x40d830
movl $0x180, %eax            # imm = 0x180
leaq 0x3a7350(%rip), %r15    # 0x3ccb90
andl 0x3e37ba(%rip), %eax    # 0x409000
je 0x25885
shrl $0x7, %eax
leaq 0x465de(%rip), %rcx     # 0x6be30
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
movq 0x30(%rsp), %r14
jmpq *%rax
movswq 0x3e37a8(%rip), %rax    # 0x409010
leaq 0x3e7fe1(%rip), %rcx    # 0x40d850
movzbl (%rax,%rcx), %esi
movl %esi, %edi
andl $0xf, %edi
shrl $0x4, %esi
callq 0x6448a
jmp 0x25ee6
movswl (%r15,%rbp,2), %r15d
movl %r15d, %r12d
leaq 0x4235dc(%rip), %r13    # 0x448e70
movq 0x30(%rsp), %r14
cmpq %r14, %rbp
jg 0x25a12
leaq 0x3a72e7(%rip), %rax    # 0x3ccb90
movswl (%rax,%rbp,2), %edx
movzwl (%r13,%rbp,2), %eax
leaq 0x3a90d6(%rip), %rcx    # 0x3ce990
movzwl (%rcx,%rbp,2), %ecx
cmpw %cx, %ax
cmovll %eax, %ecx
movq %rbp, 0x8(%rsp)
decl %ebp
movl %ecx, 0x14(%rsp)
cmpw %cx, %dx
jge 0x25900
movq %rdx, %rcx
leal -0x1(%rdx), %eax
movl %eax, 0x18(%rsp)
cmpl %ecx, %r12d
jge 0x2593d
leal -0x1(%r12), %r14d
cmpl %r14d, %r15d
jge 0x25994
incl %r15d
movl %ebp, %edi
movl %r15d, %esi
callq 0x3b4fe
jmp 0x258e8
decl %r12d
cmpl %r12d, %r15d
jge 0x25917
incl %r15d
movl %ebp, %edi
movl %r15d, %esi
callq 0x3b4fe
jmp 0x25903
movq 0x8(%rsp), %rbp
cmpq %r14, %rbp
je 0x26293
leaq 0x3a7264(%rip), %rax    # 0x3ccb90
movswl 0x2(%rax,%rbp,2), %r15d
incq %rbp
movl %r15d, %r12d
jmp 0x259f5
movq %rcx, 0x98(%rsp)
movslq %r15d, %rax
leaq 0x4273e1(%rip), %rcx    # 0x44cd30
leaq (%rcx,%rax,4), %r15
cmpl %eax, 0x18(%rsp)
jle 0x25972
movq %rax, %r14
incq %r14
leal 0x1(%rax), %esi
movl %ebp, %edi
callq 0x3b4fe
addq $0x4, %r15
movq %r14, %rax
jmp 0x25953
movslq 0x98(%rsp), %rcx
cmpq %rcx, %rax
jl 0x25990
decq %rax
movq 0x8(%rsp), %rdx
movl %edx, (%r15)
addq $-0x4, %r15
jmp 0x2597a
movl %eax, 0x18(%rsp)
movswl 0x14(%rsp), %r15d
movslq %r12d, %r12
leaq 0x42738c(%rip), %rax    # 0x44cd30
leaq (%rax,%r12,4), %r14
cmpl %r15d, %r12d
jle 0x259cf
movq %r12, %r13
decq %r13
leal -0x1(%r12), %esi
movl %ebp, %edi
callq 0x3b4fe
addq $-0x4, %r14
movq %r13, %r12
leaq 0x4234a3(%rip), %r13    # 0x448e70
jmp 0x259a8
movslq %r15d, %rax
movq 0x8(%rsp), %rbp
movl 0x18(%rsp), %r15d
cmpq %rax, %r12
jge 0x259ed
incq %r12
movl %ebp, (%r14)
addq $0x4, %r14
jmp 0x259dc
incq %rbp
movq 0x30(%rsp), %r14
movl 0x3e7e49(%rip), %eax    # 0x40d844
addl %eax, 0x3e7e3f(%rip)    # 0x40d840
movl 0x3e7e31(%rip), %eax    # 0x40d838
addl %eax, 0x3e7e2f(%rip)    # 0x40d83c
jmp 0x25899
decl %r12d
jmp 0x262bb
movl $0x400, %eax            # imm = 0x400
movslq 0x243052(%rip), %rdi    # 0x268a78
movq %r13, %rsi
negq %rsi
movslq 0x24303d(%rip), %rdx    # 0x268a70
movslq %r13d, %r9
imulq %rdi, %r9
movl 0x20e010(%rip), %ecx    # 0x233a50
subl %ecx, %r15d
shll $0x6, %r15d
movl 0x20e007(%rip), %ecx    # 0x233a54
subl %ecx, %r14d
shll $0x6, %r14d
movslq %r15d, %r11
negl %r15d
movslq %r14d, %rcx
movq %rcx, %r14
movslq %r15d, %r10
imulq %rdi, %r10
imulq %rdi, %rcx
imulq %rbx, %rdi
imulq %rdx, %rsi
addq %rdi, %rsi
shrq $0xa, %rsi
movslq %esi, %r8
imulq %rax, %r8
shrq $0xa, %r8
imulq %rdx, %rbx
addq %rbx, %r9
shrq $0xa, %r9
movslq %r9d, %rsi
imulq %rax, %rsi
shrq $0xa, %rsi
movl %r8d, %eax
negl %eax
movl %esi, %edi
negl %edi
imulq %rdx, %r14
addq %r14, %r10
shrq $0xe, %r10
imulq %rdx, %r11
addq %r11, %rcx
shrq $0xe, %rcx
movl %r10d, %r9d
imull %r8d, %r9d
movl %ecx, %edx
imull %esi, %edx
subl %edx, %r9d
imull %edi, %r10d
imull %eax, %ecx
addl %r10d, %ecx
movq 0x20(%rsp), %rbx
movslq 0x3a2259(%rip), %rdx    # 0x3c7d38
movslq %eax, %r10
imulq %rdx, %r10
shrq $0x10, %r10
movslq %esi, %r11
imulq %rdx, %r11
shrq $0x10, %r11
leaq 0x3e7d54(%rip), %rax    # 0x40d850
movzbl (%rbx,%rax), %esi
movl %esi, %ebx
andb $0xf, %bl
movb $0x8, %al
movb $0x8, %dl
subb %bl, %dl
movb %dl, 0x3ea13f(%rip)     # 0x40fc50
movl %esi, %r14d
shrb $0x4, %r14b
subb %r14b, %al
movb %al, 0x3ea130(%rip)     # 0x40fc51
testb $0x8, %bpl
je 0x25b3c
movb $0x9, %al
movb $0x9, %dl
subb %bl, %dl
movb %dl, 0x3ea11d(%rip)     # 0x40fc50
subb %r14b, %al
movb %al, 0x3ea115(%rip)     # 0x40fc51
testb $0x4, %bpl
jne 0x25b50
movl %ecx, %r15d
movl %edi, %r13d
movl %r9d, %ecx
movl %r8d, %edi
jmp 0x25b64
negl %r11d
movl %r10d, %ebx
negl %ebx
movl %r9d, %r15d
movl %r8d, %r13d
movl %r11d, %r10d
movl %ebx, %r11d
movl %edi, %ebx
negl %ebx
movl %r11d, %r8d
negl %r8d
movl %ecx, %r9d
negl %r9d
testb $0x10, %bpl
cmovel %ecx, %r9d
cmovnel %r11d, %r8d
cmovel %edi, %ebx
movl %r10d, %edi
negl %edi
movl %r13d, %r14d
negl %r14d
movl %r15d, %r11d
negl %r11d
testb $0x20, %bpl
cmovel %r15d, %r11d
cmovel %r13d, %r14d
cmovel %r10d, %edi
subl %ebx, %r8d
movl %edx, %ecx
shll %cl, %ebx
movl %ebx, 0x3e7c87(%rip)    # 0x40d838
subl %r14d, %edi
movl %eax, %ecx
shll %cl, %r14d
movl %r14d, 0x3e7c84(%rip)   # 0x40d844
movl %edx, %ecx
shll %cl, %r9d
movl %eax, %ecx
shll %cl, %r11d
movq 0x48(%rsp), %r10
movzbl 0x1e(%r10), %ecx
shll $0x18, %ecx
addl %r9d, %ecx
movl %ecx, 0x426f00(%rip)    # 0x44cae0
movzbl 0x1f(%r10), %ecx
shll $0x18, %ecx
addl %r11d, %ecx
movl %ecx, 0x426ef3(%rip)    # 0x44cae4
movl %edx, %ecx
shll %cl, %r8d
movl 0x3ec268(%rip), %edx    # 0x411e64
imull %edx, %r8d
movl %r8d, 0x3e7c35(%rip)    # 0x40d83c
movl %eax, %ecx
shll %cl, %edi
imull %edx, %edi
movl %edi, 0x3e7c2c(%rip)    # 0x40d840
movl %esi, %edi
andl $0xf, %edi
shrl $0x4, %esi
movq %r12, %rdx
callq 0x641b7
movslq 0x3e7c19(%rip), %rax    # 0x40d844
movq 0x8(%rsp), %rbp
leaq -0x1(%rbp), %rcx
movq %rax, %rdx
imulq %rcx, %rdx
movslq 0x3e7bfe(%rip), %rsi    # 0x40d840
addq %rdx, %rsi
movslq 0x3e7bec(%rip), %rdx    # 0x40d838
movslq %ecx, %rcx
imulq %rdx, %rcx
movslq 0x3e7be2(%rip), %rdi    # 0x40d83c
addq %rcx, %rdi
movslq 0x426e88(%rip), %rcx    # 0x44caec
imulq %rcx, %rdx
shrq $0x10, %rdx
movl %edx, 0x3e7bc6(%rip)    # 0x40d838
imulq %rcx, %rsi
shrq $0x10, %rsi
movl %esi, 0x3e7bc0(%rip)    # 0x40d840
imulq %rcx, %rdi
shrq $0x10, %rdi
movl %edi, 0x3e7bae(%rip)    # 0x40d83c
imulq %rcx, %rax
shrq $0x10, %rax
movl %eax, 0x3e7ba8(%rip)    # 0x40d844
movslq 0x3e7b8d(%rip), %rax    # 0x40d830
imulq %rcx, %rax
shrq $0xa, %rax
movl %eax, %ecx
negl %ecx
cmovsl %eax, %ecx
movl %ecx, 0x3e7b78(%rip)    # 0x40d830
movl $0x180, %eax            # imm = 0x180
andl 0x3e333d(%rip), %eax    # 0x409000
je 0x25d09
shrl $0x7, %eax
leaq 0x46171(%rip), %rcx     # 0x6be40
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
leaq 0x424f93(%rip), %rbx    # 0x44ac70
movq 0x18(%rsp), %r15
jmpq *%rax
movswq 0x3e3324(%rip), %rax    # 0x409010
leaq 0x3e7b5d(%rip), %rcx    # 0x40d850
movzbl (%rax,%rcx), %esi
movl %esi, %edi
andl $0xf, %edi
shrl $0x4, %esi
callq 0x6448a
jmp 0x260bc
leaq 0x424f60(%rip), %rax    # 0x44ac70
movzwl (%rax,%rbp,2), %eax
leaq 0x3a6e75(%rip), %r12    # 0x3ccb90
movzwl (%r12,%rbp,2), %ecx
cmpw %cx, %ax
cmovgl %eax, %ecx
movswl %cx, %r14d
movl %r14d, %r13d
movq 0x18(%rsp), %rbx
cmpq %rbx, %rbp
jg 0x25ea8
leaq 0x424f2e(%rip), %rax    # 0x44ac70
movzwl (%rax,%rbp,2), %ecx
movzwl (%r12,%rbp,2), %eax
cmpw %ax, %cx
cmovgl %ecx, %eax
leaq 0x3a8c38(%rip), %rcx    # 0x3ce990
movswl (%rcx,%rbp,2), %ebx
movq %rbp, 0x8(%rsp)
decl %ebp
cmpw %bx, %ax
jge 0x25d95
movswl %ax, %r15d
leal -0x1(%r15), %eax
movl %eax, 0x20(%rsp)
cmpl %r15d, %r13d
jge 0x25de7
leal -0x1(%r13), %r15d
cmpl %r15d, %r14d
jge 0x25e38
incl %r14d
movl %ebp, %edi
movl %r14d, %esi
callq 0x3b4fe
jmp 0x25d7d
decl %r13d
cmpl %r13d, %r14d
jge 0x25dac
incl %r14d
movl %ebp, %edi
movl %r14d, %esi
callq 0x3b4fe
jmp 0x25d98
movq 0x18(%rsp), %rbx
movq 0x8(%rsp), %rdx
cmpq %rbx, %rdx
je 0x262d6
leaq 0x424eaa(%rip), %rax    # 0x44ac70
movzwl 0x2(%rax,%rdx,2), %eax
movzwl 0x2(%r12,%rdx,2), %ecx
cmpw %cx, %ax
cmovgl %eax, %ecx
leaq 0x1(%rdx), %rbp
movswl %cx, %r14d
movl %r14d, %r13d
jmp 0x25e8b
movslq %r14d, %rax
leaq 0x426f3f(%rip), %rcx    # 0x44cd30
leaq (%rcx,%rax,4), %r14
cmpl %eax, 0x20(%rsp)
jle 0x25e14
movq %rax, %r12
incq %r12
leal 0x1(%rax), %esi
movl %ebp, %edi
callq 0x3b4fe
addq $0x4, %r14
movq %r12, %rax
jmp 0x25df5
movslq %r15d, %rcx
leaq 0x3a6d72(%rip), %r12    # 0x3ccb90
cmpq %rcx, %rax
jl 0x25e34
decq %rax
movq 0x8(%rsp), %rdx
movl %edx, (%r14)
addq $-0x4, %r14
jmp 0x25e1e
movl %eax, 0x20(%rsp)
movslq %r13d, %r13
leaq 0x426eee(%rip), %rax    # 0x44cd30
leaq (%rax,%r13,4), %r14
cmpl %ebx, %r13d
jle 0x25e65
movq %r13, %r15
decq %r15
leal -0x1(%r13), %esi
movl %ebp, %edi
callq 0x3b4fe
addq $-0x4, %r14
movq %r15, %r13
jmp 0x25e46
movslq %ebx, %rax
movq 0x18(%rsp), %rbx
movq 0x8(%rsp), %rbp
cmpq %rax, %r13
jge 0x25e83
incq %r13
movl %ebp, (%r14)
addq $0x4, %r14
jmp 0x25e72
incq %rbp
movl 0x20(%rsp), %r14d
movl 0x3e79b3(%rip), %eax    # 0x40d844
addl %eax, 0x3e79a9(%rip)    # 0x40d840
movl 0x3e799b(%rip), %eax    # 0x40d838
addl %eax, 0x3e7999(%rip)    # 0x40d83c
jmp 0x25d32
decl %r13d
jmp 0x262ee
callq 0x641a7
jmp 0x25ec6
callq 0x641a7
jmp 0x2609c
callq 0x641af
movswq 0x3e3142(%rip), %rax    # 0x409010
leaq 0x3e797b(%rip), %rcx    # 0x40d850
movzbl (%rax,%rcx), %esi
movl %esi, %edi
andl $0xf, %edi
shrl $0x4, %esi
callq 0x64526
movswl (%r15,%rbp,2), %r15d
movl %r15d, %r13d
cmpq %r14, %rbp
jg 0x26060
leaq 0x3a6c92(%rip), %rax    # 0x3ccb90
movswl (%rax,%rbp,2), %edx
leaq 0x422f67(%rip), %rax    # 0x448e70
movzwl (%rax,%rbp,2), %eax
leaq 0x3a8a7c(%rip), %rcx    # 0x3ce990
movzwl (%rcx,%rbp,2), %ecx
cmpw %cx, %ax
cmovll %eax, %ecx
movq %rbp, 0x8(%rsp)
decl %ebp
cmpw %cx, %dx
jge 0x25f54
movl %ecx, 0x14(%rsp)
leal -0x1(%rdx), %r12d
movq %rdx, 0x18(%rsp)
cmpl %edx, %r13d
jge 0x25f90
leal -0x1(%r13), %r14d
cmpl %r14d, %r15d
jge 0x25fbc
incl %r15d
movl %ebp, %edi
movl %r15d, %esi
callq 0x3b5c5
jmp 0x25f40
decl %r13d
cmpl %r13d, %r15d
jge 0x25f6b
incl %r15d
movl %ebp, %edi
movl %r15d, %esi
callq 0x3b5c5
jmp 0x25f57
movq 0x8(%rsp), %rbp
cmpq %r14, %rbp
je 0x26065
leaq 0x3a6c10(%rip), %rax    # 0x3ccb90
movswl 0x2(%rax,%rbp,2), %ecx
incq %rbp
movl %ecx, %r13d
jmp 0x26040
movslq %r15d, %rax
leaq 0x426d96(%rip), %rcx    # 0x44cd30
leaq (%rcx,%rax,4), %r15
cmpl %eax, %r12d
jle 0x25fc7
movq %rax, %r14
incq %r14
leal 0x1(%rax), %esi
movl %ebp, %edi
callq 0x3b5c5
addq $0x4, %r15
movq %r14, %rax
jmp 0x25f9e
movl %r12d, 0x18(%rsp)
movl 0x14(%rsp), %esi
jmp 0x25fea
movslq 0x18(%rsp), %rcx
movl 0x14(%rsp), %esi
cmpq %rcx, %rax
jl 0x25fe6
decq %rax
movq 0x8(%rsp), %rdx
movl %edx, (%r15)
addq $-0x4, %r15
jmp 0x25fd0
movl %eax, 0x18(%rsp)
movswl %si, %r14d
movslq %r13d, %r13
leaq 0x426d38(%rip), %rax    # 0x44cd30
leaq (%rax,%r13,4), %r15
cmpl %r14d, %r13d
jle 0x2601b
movq %r13, %r12
decq %r12
leal -0x1(%r13), %esi
movl %ebp, %edi
callq 0x3b5c5
addq $-0x4, %r15
movq %r12, %r13
jmp 0x25ffc
movslq %r14d, %rax
movq 0x30(%rsp), %r14
movq 0x8(%rsp), %rbp
movl 0x18(%rsp), %ecx
cmpq %rax, %r13
jge 0x2603d
incq %r13
movl %ebp, (%r15)
addq $0x4, %r15
jmp 0x2602c
incq %rbp
movl 0x3e77fe(%rip), %eax    # 0x40d844
addl %eax, 0x3e77f4(%rip)    # 0x40d840
movl 0x3e77e6(%rip), %eax    # 0x40d838
addl %eax, 0x3e77e4(%rip)    # 0x40d83c
movl %ecx, %r15d
jmp 0x25eee
decl %r13d
jmp 0x2608d
movl 0x3e77d9(%rip), %eax    # 0x40d844
addl %eax, 0x3e77cf(%rip)    # 0x40d840
movl 0x3e77c1(%rip), %eax    # 0x40d838
addl %eax, 0x3e77bf(%rip)    # 0x40d83c
jmp 0x2608d
incl %r15d
movl %r14d, %edi
movl %r15d, %esi
callq 0x3b5c5
cmpl %r13d, %r15d
jl 0x2607f
jmp 0x262c0
callq 0x641af
movswq 0x3e2f6c(%rip), %rax    # 0x409010
leaq 0x3e77a5(%rip), %rcx    # 0x40d850
movzbl (%rax,%rcx), %esi
movl %esi, %edi
andl $0xf, %edi
shrl $0x4, %esi
callq 0x64526
movzwl (%rbx,%rbp,2), %eax
leaq 0x3a6ac9(%rip), %rcx    # 0x3ccb90
movzwl (%rcx,%rbp,2), %ecx
cmpw %cx, %ax
cmovgl %eax, %ecx
movswl %cx, %r14d
movl %r14d, %r13d
cmpq %r15, %rbp
jg 0x26258
leaq 0x424b88(%rip), %rax    # 0x44ac70
movzwl (%rax,%rbp,2), %ecx
leaq 0x3a6a9d(%rip), %rax    # 0x3ccb90
movzwl (%rax,%rbp,2), %eax
cmpw %ax, %cx
cmovgl %ecx, %eax
leaq 0x3a888c(%rip), %rcx    # 0x3ce990
movswl (%rcx,%rbp,2), %r15d
movq %rbp, 0x8(%rsp)
decl %ebp
cmpw %r15w, %ax
jge 0x2613e
cwtl
leal -0x1(%rax), %edx
cmpl %eax, %r13d
movl %edx, %r12d
jge 0x26199
leal -0x1(%r13), %ebx
cmpl %ebx, %r14d
jge 0x261ea
incl %r14d
movl %ebp, %edi
movl %r14d, %esi
callq 0x3b5c5
jmp 0x26126
decl %r13d
cmpl %r13d, %r14d
jge 0x26155
incl %r14d
movl %ebp, %edi
movl %r14d, %esi
callq 0x3b5c5
jmp 0x26141
movq 0x18(%rsp), %r15
movq 0x8(%rsp), %r12
cmpq %r15, %r12
je 0x2625d
leaq 0x424b01(%rip), %rax    # 0x44ac70
movzwl 0x2(%rax,%r12,2), %eax
leaq 0x3a6a14(%rip), %rcx    # 0x3ccb90
movzwl 0x2(%rcx,%r12,2), %ecx
cmpw %cx, %ax
cmovgl %eax, %ecx
leaq 0x1(%r12), %rbp
movswl %cx, %r12d
movl %r12d, %r13d
jmp 0x26238
movq %rax, 0x20(%rsp)
movslq %r14d, %rax
leaq 0x426b88(%rip), %rcx    # 0x44cd30
leaq (%rcx,%rax,4), %r14
cmpl %eax, %edx
jle 0x261cc
movq %rax, %rbx
incq %rbx
leal 0x1(%rax), %esi
movl %ebp, %edi
callq 0x3b5c5
addq $0x4, %r14
movq %rbx, %rax
movl %r12d, %edx
jmp 0x261ac
movslq 0x20(%rsp), %rcx
cmpq %rcx, %rax
jl 0x261e7
decq %rax
movq 0x8(%rsp), %rdx
movl %edx, (%r14)
addq $-0x4, %r14
jmp 0x261d1
movl %eax, %r12d
movslq %r13d, %r13
leaq 0x426b3c(%rip), %rax    # 0x44cd30
leaq (%rax,%r13,4), %r14
cmpl %r15d, %r13d
jle 0x26217
movq %r13, %rbx
decq %rbx
leal -0x1(%r13), %esi
movl %ebp, %edi
callq 0x3b5c5
addq $-0x4, %r14
movq %rbx, %r13
jmp 0x261f8
movslq %r15d, %rax
movq 0x18(%rsp), %r15
movq 0x8(%rsp), %rbp
cmpq %rax, %r13
jge 0x26235
incq %r13
movl %ebp, (%r14)
addq $0x4, %r14
jmp 0x26224
incq %rbp
movl 0x3e7606(%rip), %eax    # 0x40d844
addl %eax, 0x3e75fc(%rip)    # 0x40d840
movl 0x3e75ee(%rip), %eax    # 0x40d838
addl %eax, 0x3e75ec(%rip)    # 0x40d83c
movl %r12d, %r14d
jmp 0x260d8
decl %r13d
jmp 0x26275
movl 0x3e75e1(%rip), %eax    # 0x40d844
addl %eax, 0x3e75d7(%rip)    # 0x40d840
movl 0x3e75c9(%rip), %eax    # 0x40d838
addl %eax, 0x3e75c7(%rip)    # 0x40d83c
movq 0x48(%rsp), %rbp
cmpl %r13d, %r14d
jge 0x26307
incl %r14d
movl %r15d, %edi
movl %r14d, %esi
callq 0x3b5c5
jmp 0x2627a
movl 0x3e75ab(%rip), %eax    # 0x40d844
addl %eax, 0x3e75a1(%rip)    # 0x40d840
movl 0x3e7593(%rip), %eax    # 0x40d838
addl %eax, 0x3e7591(%rip)    # 0x40d83c
jmp 0x262bb
incl %r15d
movl %r14d, %edi
movl %r15d, %esi
callq 0x3b4fe
cmpl %r12d, %r15d
jl 0x262ad
callq 0x9fd2
leaq 0x422ba4(%rip), %r13    # 0x448e70
movq 0x48(%rsp), %rbp
jmp 0x2423d
movl 0x3e7568(%rip), %eax    # 0x40d844
addl %eax, 0x3e755e(%rip)    # 0x40d840
movl 0x3e7550(%rip), %eax    # 0x40d838
addl %eax, 0x3e754e(%rip)    # 0x40d83c
movq 0x48(%rsp), %rbp
cmpl %r13d, %r14d
jge 0x26307
incl %r14d
movl %ebx, %edi
movl %r14d, %esi
callq 0x3b4fe
jmp 0x262f3
callq 0x9fd2
leaq 0x422b5d(%rip), %r13    # 0x448e70
jmp 0x24449