// File: /workspace/github_c_makefile_star2_O0/jonof[P]jftekwar/jfbuild/src/kplib.c
// Function: kpegrend
static int kpegrend (const char *kfilebuf, int kfilength,
	intptr_t daframeplace, int dabytesperline, int daxres, int dayres,
	int daglobxoffs, int daglobyoffs)
{
	int i, j, v, leng=0, xdim=0, ydim=0, index, prec, restartcnt, restartinterval;
	int x, y, z, xx, yy, zz, *dc=NULL, num, curbits, c, daval, dabits, *hqval, *hqbits, hqcnt, *quanptr;
	int passcnt = 0, ghsampmax=0, gvsampmax=0, glhsampmax=0, glvsampmax=0, glhstep, glvstep;
	int eobrun, Ss, Se, Ah, Al, Alut[2], dctx[12], dcty[12], ldctx[12], /*ldcty[12],*/ lshx[4], lshy[4];
	short *dctbuf = NULL, *dctptr[12], *ldctptr[12], *dcs=NULL;
	unsigned char ch, marker, dcflag;
	const unsigned char *kfileptr;

	if (!kpeginited) { kpeginited = 1; initkpeg(); }

	kfileptr = (unsigned char *)kfilebuf;

	if (*(unsigned short *)kfileptr == SSWAPIB(0xd8ff)) kfileptr += 2;
	else return(-1); //"%s is not a JPEG file\n",filename

	restartinterval = 0;
	for(i=0;i<4;i++) lastdc[i] = 0;
	for(i=0;i<8;i++) hufcnt[i] = 0;

	coltype = 0; bitdepth = 8; //For PNGOUT
	do
	{
		ch = *kfileptr++; if (ch != 255) continue;
		do { marker = *kfileptr++; } while (marker == 255);
		if (marker != 0xd9) //Don't read past end of buffer
		{
			leng = ((int)kfileptr[0]<<8)+(int)kfileptr[1]-2;
			kfileptr += 2;
		}
		//printf("fileoffs=%08x, marker=%02x,leng=%d",((int)kfileptr)-((int)kfilebuf)-2,marker,leng);
		switch(marker)
		{
			case 0xc0: case 0xc1: case 0xc2:
					//processit!
				kfileptr++; //numbits = *kfileptr++;

				ydim = SSWAPIL(*(unsigned short *)&kfileptr[0]);
				xdim = SSWAPIL(*(unsigned short *)&kfileptr[2]);
				//printf("%s: %ld / %ld = %ld\n",filename,xdim*ydim*3,kfilength,(xdim*ydim*3)/kfilength);

				frameplace = daframeplace;
				bytesperline = dabytesperline;
				xres = daxres;
				yres = dayres;
				globxoffs = daglobxoffs;
				globyoffs = daglobyoffs;

				gnumcomponents = kfileptr[4];
				kfileptr += 5;
				ghsampmax = gvsampmax = glhsampmax = glvsampmax = 0;
				for(z=0;z<gnumcomponents;z++)
				{
					gcompid[z] = kfileptr[0];
					gcomphsamp[z] = (kfileptr[1]>>4);
					gcompvsamp[z] = (kfileptr[1]&15);
					gcompquantab[z] = kfileptr[2];
					for(i=0;i<8;i++) if (gcomphsamp[z] == pow2long[i]) { gcomphsampshift[z] = i; break; }
					for(i=0;i<8;i++) if (gcompvsamp[z] == pow2long[i]) { gcompvsampshift[z] = i; break; }
					if (gcomphsamp[z] > ghsampmax) { ghsampmax = gcomphsamp[z]; glhsampmax = gcomphsampshift[z]; }
					if (gcompvsamp[z] > gvsampmax) { gvsampmax = gcompvsamp[z]; glvsampmax = gcompvsampshift[z]; }
					kfileptr += 3;
				}

				break;
			case 0xc4:  //Huffman table
				do
				{
					ch = *kfileptr++; leng--;
					if (ch >= 16) { index = ch-12; }
								else { index = ch; }
					memcpy((void *)&hufnumatbit[index][1],(void *)kfileptr,16); kfileptr += 16;
					leng -= 16;

					v = 0; hufcnt[index] = 0;
					hufquickcnt[index] = 0;
					for(i=1;i<=16;i++)
					{
						hufmaxatbit[index][i] = v+hufnumatbit[index][i];
						hufvalatbit[index][i] = hufcnt[index]-v;
						memcpy((void *)&huftable[index][hufcnt[index]],(void *)kfileptr,(int)hufnumatbit[index][i]);
						if (i <= 10)
							for(c=0;c<hufnumatbit[index][i];c++)
								for(j=(1<<(10-i));j>0;j--)
								{
									hufquickval[index][hufquickcnt[index]] = huftable[index][hufcnt[index]+c];
									hufquickbits[index][hufquickcnt[index]] = i;
									hufquickcnt[index]++;
								}
						kfileptr += hufnumatbit[index][i];
						leng -= hufnumatbit[index][i];
						hufcnt[index] += hufnumatbit[index][i];
						v = ((v+hufnumatbit[index][i])<<1);
					}

				} while (leng > 0);
				break;
			case 0xdb:
				do
				{
					ch = *kfileptr++; leng--;
					index = (ch&15);
					prec = (ch>>4);
					for(z=0;z<64;z++)
					{
						v = (int)(*kfileptr++);
						if (prec) v = (v<<8)+((int)(*kfileptr++));
						v <<= 19;
						if (unzig[z]&7 ) v = mulshr24(v,cosqr16[unzig[z]&7 ]);
						if (unzig[z]>>3) v = mulshr24(v,cosqr16[unzig[z]>>3]);
						if (index) v >>= 6;
						quantab[index][unzig[z]] = v;
					}
					leng -= 64;
					if (prec) leng -= 64;
				} while (leng > 0);
				break;
			case 0xdd:
				restartinterval = SSWAPIL(*(unsigned short *)&kfileptr[0]);
				kfileptr += leng;
				break;
			case 0xda:
				if ((xdim <= 0) || (ydim <= 0)) { if (dctbuf) free(dctbuf); return(-1); }

				lnumcomponents = (int)(*kfileptr++); if (!lnumcomponents) { if (dctbuf) free(dctbuf); return(-1); }
				if (lnumcomponents > 1) coltype = 2;
				for(z=0;z<lnumcomponents;z++)
				{
					lcompid[z] = kfileptr[0];
					lcompdc[z] = (kfileptr[1]>>4);
					lcompac[z] = (kfileptr[1]&15);
					kfileptr += 2;
				}

				Ss = kfileptr[0];
				Se = kfileptr[1];
				Ah = (kfileptr[2]>>4);
				Al = (kfileptr[2]&15);
				kfileptr += 3;
				//printf("passcnt=%d, Ss=%d, Se=%d, Ah=%d, Al=%d\n",passcnt,Ss,Se,Ah,Al);

				if ((!passcnt) && ((Ss) || (Se != 63) || (Ah) || (Al)))
				{
					for(z=zz=0;z<gnumcomponents;z++)
					{
						dctx[z] = ((xdim+(ghsampmax<<3)-1)>>(glhsampmax+3)) << gcomphsampshift[z];
						dcty[z] = ((ydim+(gvsampmax<<3)-1)>>(glvsampmax+3)) << gcompvsampshift[z];
						zz += dctx[z]*dcty[z];
					}
					z = zz*64*sizeof(short);
					dctbuf = (short *)malloc(z); if (!dctbuf) return(-1);
					memset(dctbuf,0,z);
					for(z=zz=0;z<gnumcomponents;z++) { dctptr[z] = &dctbuf[zz*64]; zz += dctx[z]*dcty[z]; }
				}

				glhstep = glvstep = 0x7fffffff;
				for(z=0;z<lnumcomponents;z++)
					for(zz=0;zz<gnumcomponents;zz++)
						if (lcompid[z] == gcompid[zz])
						{
							ldctptr[z] = dctptr[zz];
							ldctx[z] = dctx[zz];
							//ldcty[z] = dcty[zz];
							lcomphsamp[z] = gcomphsamp[zz];
							lcompvsamp[z] = gcompvsamp[zz];
							lcompquantab[z] = gcompquantab[zz];
							if (!z)
							{
								lcomphsampshift0 = gcomphsampshift[zz];
								lcompvsampshift0 = gcompvsampshift[zz];
							}
							lshx[z] = glhsampmax-gcomphsampshift[zz]+3;
							lshy[z] = glvsampmax-gcompvsampshift[zz]+3;
							if (gcomphsampshift[zz] < glhstep) glhstep = gcomphsampshift[zz];
							if (gcompvsampshift[zz] < glvstep) glvstep = gcompvsampshift[zz];
						}
				glhstep = (ghsampmax>>glhstep); lcomphsamp[0] = min(lcomphsamp[0],glhstep); glhstep <<= 3;
				glvstep = (gvsampmax>>glvstep); lcompvsamp[0] = min(lcompvsamp[0],glvstep); glvstep <<= 3;
				lcomphvsamp0 = lcomphsamp[0]*lcompvsamp[0];

				clipxdim = min(xdim+globxoffs,xres);
				clipydim = min(ydim+globyoffs,yres);

				if ((max(globxoffs,0) >= xres) || (min(globxoffs+xdim,xres) <= 0) ||
					 (max(globyoffs,0) >= yres) || (min(globyoffs+ydim,yres) <= 0))
					{ if (dctbuf) free(dctbuf); return(0); }

				Alut[0] = (1<<Al); Alut[1] = -Alut[0];

				restartcnt = restartinterval; eobrun = 0; marker = 0xd0;
				num = 0; curbits = 0;
				for(y=0;y<ydim;y+=glvstep)
					for(x=0;x<xdim;x+=glhstep)
					{
						if (kfileptr-4-(unsigned char *)kfilebuf >= kfilength) goto kpegrend_break2; //rest of file is missing!

						if (!dctbuf) dc = dct[0];
						for(c=0;c<lnumcomponents;c++)
						{
							hqval = &hufquickval[lcompac[c]+4][0];
							hqbits = &hufquickbits[lcompac[c]+4][0];
							hqcnt = hufquickcnt[lcompac[c]+4];
							if (!dctbuf) quanptr = &quantab[lcompquantab[c]][0];
							for(yy=0;yy<(lcompvsamp[c]<<3);yy+=8)
								for(xx=0;xx<(lcomphsamp[c]<<3);xx+=8)
								{  //NOTE: Might help to split this code into firstime vs. refinement (!Ah vs. Ah!=0)

									if (dctbuf) dcs = &ldctptr[c][(((y+yy)>>lshy[c])*ldctx[c] + ((x+xx)>>lshx[c]))<<6];

										//Get DC
									if (!Ss)
									{
										while (curbits < 24) //Getbits
										{
											ch = *kfileptr++; if (ch == 255) kfileptr++;
											num = (num<<8)+((int)ch); curbits += 8;
										}

										if (!Ah)
										{
											i = ((num>>(curbits-10))&1023);
											if (i < hufquickcnt[lcompdc[c]])
												  { daval = hufquickval[lcompdc[c]][i]; curbits -= hufquickbits[lcompdc[c]][i]; }
											else { huffgetval(lcompdc[c],curbits,num,&daval,&dabits); curbits -= dabits; }

											if (daval)
											{
												while (curbits < 24) //Getbits
												{
													ch = *kfileptr++; if (ch == 255) kfileptr++;
													num = (num<<8)+((int)ch); curbits += 8;
												}

												curbits -= daval; v = ((unsigned)num >> curbits) & pow2mask[daval];
												if (v <= pow2mask[daval-1]) v -= pow2mask[daval];
												lastdc[c] += v;
											}
											if (!dctbuf) dc[0] = lastdc[c]; else dcs[0] = (short)(lastdc[c]<<Al);
										}
										else if (num&(pow2long[--curbits])) dcs[0] |= ((short)Alut[0]);
									}

										//Get AC
									if (!dctbuf) memset((void *)&dc[1],0,63*4);
									z = max(Ss,1); dcflag = 1;
									if (eobrun <= 0)
									{
										for(;z<=Se;z++)
										{
											while (curbits < 24) //Getbits
											{
												ch = *kfileptr++; if (ch == 255) kfileptr++;
												num = (num<<8)+((int)ch); curbits += 8;
											}
											i = ((num>>(curbits-10))&1023);
											if (i < hqcnt)
												  { daval = hqval[i]; curbits -= hqbits[i]; }
											else { huffgetval(lcompac[c]+4,curbits,num,&daval,&dabits); curbits -= dabits; }

											zz = (daval>>4); daval &= 15;
											if (daval)
											{
												if (Ah)
												{
													//NOTE: Getbits not needed here - buffer should have enough bits
													if (num&(pow2long[--curbits])) daval = Alut[0]; else daval = Alut[1];
												}
											}
											else if (zz < 15)
											{
												eobrun = pow2long[zz];
												if (zz)
												{
													while (curbits < 24) //Getbits
													{
														ch = *kfileptr++; if (ch == 255) kfileptr++;
														num = (num<<8)+((int)ch); curbits += 8;
													}
													curbits -= zz; eobrun += ((unsigned)num >> curbits) & pow2mask[zz];
												}
												if (!Ah) eobrun--;
												break;
											}
											if (Ah)
											{
												do
												{
													if (dcs[z])
													{
														while (curbits < 24) //Getbits
														{
															ch = *kfileptr++; if (ch == 255) kfileptr++;
															num = (num<<8)+((int)ch); curbits += 8;
														}
														if (num&(pow2long[--curbits])) dcs[z] += ((short)Alut[dcs[z] < 0]);
												  } else if (--zz < 0) break;
												  z++;
												} while (z <= Se);
												if (daval) dcs[z] = daval;
											}
											else
											{
												z += zz; if (z > Se) break;

												while (curbits < 24) //Getbits
												{
													ch = *kfileptr++; if (ch == 255) kfileptr++;
													num = (num<<8)+((int)ch); curbits += 8;
												}
												curbits -= daval; v = ((unsigned)num >> curbits) & pow2mask[daval];
												if (v <= pow2mask[daval-1]) v -= pow2mask[daval];
												dcflag |= dcflagor[z];
												if (!dctbuf) dc[unzig[z]] = v; else dcs[z] = (short)(v<<Al);
											}
										}
									} else if (!Ah) eobrun--;
									if ((Ah) && (eobrun > 0))
									{
										eobrun--;
										for(;z<=Se;z++)
										{
											if (!dcs[z]) continue;
											while (curbits < 24) //Getbits
											{
												ch = *kfileptr++; if (ch == 255) kfileptr++;
												num = (num<<8)+((int)ch); curbits += 8;
											}
											if (num&(pow2long[--curbits])) dcs[z] += ((short)Alut[dcs[z] < 0]);
										}
									}

									if (!dctbuf)
									{
										for(z=64-1;z>=0;z--) dc[z] *= quanptr[z];
										invdct8x8(dc,dcflag); dc += 64;
									}
								}
							}

						if (!dctbuf) yrbrend(x,y);

						restartcnt--;
						if (!restartcnt)
						{
							kfileptr += 1-(curbits>>3); curbits = 0;
							if ((kfileptr[-2] != 255) || (kfileptr[-1] != marker)) kfileptr--;
							marker++; if (marker >= 0xd8) marker = 0xd0;
							restartcnt = restartinterval;
							for(i=0;i<4;i++) lastdc[i] = 0;
							eobrun = 0;
						}
					}
kpegrend_break2:;
				if (!dctbuf) return(0);
				passcnt++; kfileptr -= ((curbits>>3)+1); break;
			case 0xd9: break;
			default: kfileptr += leng; break;
		}
	} while (kfileptr-(unsigned char *)kfilebuf < kfilength);

	if (!dctbuf) return(0);

	lnumcomponents = gnumcomponents;
	for(i=0;i<gnumcomponents;i++)
	{
		lcomphsamp[i] = gcomphsamp[i]; gcomphsamp[i] <<= 3;
		lcompvsamp[i] = gcompvsamp[i]; gcompvsamp[i] <<= 3;
		lshx[i] = glhsampmax-gcomphsampshift[i]+3;
		lshy[i] = glvsampmax-gcompvsampshift[i]+3;
	}
	lcomphsampshift0 = gcomphsampshift[0];
	lcompvsampshift0 = gcompvsampshift[0];
	lcomphvsamp0 = (lcomphsamp[0]<<lcompvsampshift0);
	for(y=0;y<ydim;y+=gcompvsamp[0])
		for(x=0;x<xdim;x+=gcomphsamp[0])
		{
			dc = dct[0];
			for(c=0;c<gnumcomponents;c++)
				for(yy=0;yy<gcompvsamp[c];yy+=8)
					for(xx=0;xx<gcomphsamp[c];xx+=8,dc+=64)
					{
						dcs = &dctptr[c][(((y+yy)>>lshy[c])*dctx[c] + ((x+xx)>>lshx[c]))<<6];
						quanptr = &quantab[gcompquantab[c]][0];
						for(z=0;z<64;z++) dc[z] = ((int)dcs[zigit[z]])*quanptr[z];
						invdct8x8(dc,-1);
					}
			yrbrend(x,y);
		}

	free(dctbuf); return(0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2c0, %rsp            # imm = 0x2C0
movl 0x18(%rbp), %eax
movl 0x10(%rbp), %eax
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq %rdx, -0x20(%rbp)
movl %ecx, -0x24(%rbp)
movl %r8d, -0x28(%rbp)
movl %r9d, -0x2c(%rbp)
movl $0x0, -0x3c(%rbp)
movl $0x0, -0x40(%rbp)
movl $0x0, -0x44(%rbp)
movq $0x0, -0x78(%rbp)
movl $0x0, -0xb4(%rbp)
movl $0x0, -0xb8(%rbp)
movl $0x0, -0xbc(%rbp)
movl $0x0, -0xc0(%rbp)
movl $0x0, -0xc4(%rbp)
movq $0x0, -0x1a8(%rbp)
movq $0x0, -0x278(%rbp)
cmpl $0x0, 0x55f8f5(%rip)    # 0x5c2e28
jne 0x63544
movl $0x1, 0x55f8e9(%rip)    # 0x5c2e28
callq 0x6aed0
movq -0x10(%rbp), %rax
movq %rax, -0x288(%rbp)
movq -0x288(%rbp), %rax
movzwl (%rax), %eax
cmpl $0xd8ff, %eax           # imm = 0xD8FF
jne 0x63574
movq -0x288(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x288(%rbp)
jmp 0x63580
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x655bb
movl $0x0, -0x54(%rbp)
movl $0x0, -0x30(%rbp)
cmpl $0x4, -0x30(%rbp)
jge 0x635b1
movslq -0x30(%rbp), %rcx
leaq 0x55f891(%rip), %rax    # 0x5c2e30
movl $0x0, (%rax,%rcx,4)
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0x6358e
movl $0x0, -0x30(%rbp)
cmpl $0x8, -0x30(%rbp)
jge 0x635db
movslq -0x30(%rbp), %rcx
leaq 0x55f877(%rip), %rax    # 0x5c2e40
movl $0x0, (%rax,%rcx,4)
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0x635b8
movb $0x0, 0x55f79e(%rip)    # 0x5c2d80
movb $0x8, 0x55f798(%rip)    # 0x5c2d81
movq -0x288(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x288(%rbp)
movb (%rax), %al
movb %al, -0x279(%rbp)
movzbl -0x279(%rbp), %eax
cmpl $0xff, %eax
je 0x63619
jmp 0x65274
jmp 0x6361b
movq -0x288(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x288(%rbp)
movb (%rax), %al
movb %al, -0x27a(%rbp)
movzbl -0x27a(%rbp), %eax
cmpl $0xff, %eax
je 0x6361b
movzbl -0x27a(%rbp), %eax
cmpl $0xd9, %eax
je 0x63686
movq -0x288(%rbp), %rax
movzbl (%rax), %eax
shll $0x8, %eax
movq -0x288(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
addl %ecx, %eax
subl $0x2, %eax
movl %eax, -0x3c(%rbp)
movq -0x288(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x288(%rbp)
movzbl -0x27a(%rbp), %eax
addl $0xffffff40, %eax       # imm = 0xFFFFFF40
movl %eax, %ecx
movq %rcx, -0x290(%rbp)
subl $0x1d, %eax
ja 0x6525b
movq -0x290(%rbp), %rax
leaq 0x4ffda(%rip), %rcx     # 0xb368c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x288(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x288(%rbp)
movq -0x288(%rbp), %rax
movzwl (%rax), %edi
callq 0x62100
movzwl %ax, %eax
movl %eax, -0x44(%rbp)
movq -0x288(%rbp), %rax
movzwl 0x2(%rax), %edi
callq 0x62100
movzwl %ax, %eax
movl %eax, -0x40(%rbp)
movq -0x20(%rbp), %rax
movq %rax, 0x55f6a5(%rip)    # 0x5c2da8
movl -0x24(%rbp), %eax
movl %eax, 0x55f6a4(%rip)    # 0x5c2db0
movl -0x28(%rbp), %eax
movl %eax, 0x55f69f(%rip)    # 0x5c2db4
movl -0x2c(%rbp), %eax
movl %eax, 0x55f69a(%rip)    # 0x5c2db8
movl 0x10(%rbp), %eax
movl %eax, 0x55f695(%rip)    # 0x5c2dbc
movl 0x18(%rbp), %eax
movl %eax, 0x55f690(%rip)    # 0x5c2dc0
movq -0x288(%rbp), %rax
movb 0x4(%rax), %al
movb %al, 0x55f720(%rip)     # 0x5c2e60
movq -0x288(%rbp), %rax
addq $0x5, %rax
movq %rax, -0x288(%rbp)
movl $0x0, -0xc4(%rbp)
movl $0x0, -0xc0(%rbp)
movl $0x0, -0xbc(%rbp)
movl $0x0, -0xb8(%rbp)
movl $0x0, -0x60(%rbp)
movl -0x60(%rbp), %eax
movzbl 0x55f6d5(%rip), %ecx    # 0x5c2e60
cmpl %ecx, %eax
jge 0x6392e
movq -0x288(%rbp), %rax
movzbl (%rax), %edx
movslq -0x60(%rbp), %rcx
leaq 0x55f6c8(%rip), %rax    # 0x5c2e70
movl %edx, (%rax,%rcx,4)
movq -0x288(%rbp), %rax
movzbl 0x1(%rax), %edx
sarl $0x4, %edx
movslq -0x60(%rbp), %rcx
leaq 0x55f6bc(%rip), %rax    # 0x5c2e80
movl %edx, (%rax,%rcx,4)
movq -0x288(%rbp), %rax
movzbl 0x1(%rax), %edx
andl $0xf, %edx
movslq -0x60(%rbp), %rcx
leaq 0x55f6b0(%rip), %rax    # 0x5c2e90
movl %edx, (%rax,%rcx,4)
movq -0x288(%rbp), %rax
movzbl 0x2(%rax), %edx
movslq -0x60(%rbp), %rcx
leaq 0x55f6a7(%rip), %rax    # 0x5c2ea0
movl %edx, (%rax,%rcx,4)
movl $0x0, -0x30(%rbp)
cmpl $0x8, -0x30(%rbp)
jge 0x63847
movslq -0x60(%rbp), %rcx
leaq 0x55f66c(%rip), %rax    # 0x5c2e80
movl (%rax,%rcx,4), %eax
movslq -0x30(%rbp), %rdx
leaq 0x4ffbe(%rip), %rcx     # 0xb37e0
cmpl (%rcx,%rdx,4), %eax
jne 0x6383a
movl -0x30(%rbp), %edx
movslq -0x60(%rbp), %rcx
leaq 0x55f67b(%rip), %rax    # 0x5c2eb0
movl %edx, (%rax,%rcx,4)
jmp 0x63847
jmp 0x6383c
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0x63803
movl $0x0, -0x30(%rbp)
cmpl $0x8, -0x30(%rbp)
jge 0x63892
movslq -0x60(%rbp), %rcx
leaq 0x55f631(%rip), %rax    # 0x5c2e90
movl (%rax,%rcx,4), %eax
movslq -0x30(%rbp), %rdx
leaq 0x4ff73(%rip), %rcx     # 0xb37e0
cmpl (%rcx,%rdx,4), %eax
jne 0x63885
movl -0x30(%rbp), %edx
movslq -0x60(%rbp), %rcx
leaq 0x55f640(%rip), %rax    # 0x5c2ec0
movl %edx, (%rax,%rcx,4)
jmp 0x63892
jmp 0x63887
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0x6384e
movslq -0x60(%rbp), %rcx
leaq 0x55f5e3(%rip), %rax    # 0x5c2e80
movl (%rax,%rcx,4), %eax
cmpl -0xb8(%rbp), %eax
jle 0x638d0
movslq -0x60(%rbp), %rcx
leaq 0x55f5cd(%rip), %rax    # 0x5c2e80
movl (%rax,%rcx,4), %eax
movl %eax, -0xb8(%rbp)
movslq -0x60(%rbp), %rcx
leaq 0x55f5e9(%rip), %rax    # 0x5c2eb0
movl (%rax,%rcx,4), %eax
movl %eax, -0xc0(%rbp)
movslq -0x60(%rbp), %rcx
leaq 0x55f5b5(%rip), %rax    # 0x5c2e90
movl (%rax,%rcx,4), %eax
cmpl -0xbc(%rbp), %eax
jle 0x6390e
movslq -0x60(%rbp), %rcx
leaq 0x55f59f(%rip), %rax    # 0x5c2e90
movl (%rax,%rcx,4), %eax
movl %eax, -0xbc(%rbp)
movslq -0x60(%rbp), %rcx
leaq 0x55f5bb(%rip), %rax    # 0x5c2ec0
movl (%rax,%rcx,4), %eax
movl %eax, -0xc4(%rbp)
movq -0x288(%rbp), %rax
addq $0x3, %rax
movq %rax, -0x288(%rbp)
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x63781
jmp 0x65272
jmp 0x63935
movq -0x288(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x288(%rbp)
movb (%rax), %al
movb %al, -0x279(%rbp)
movl -0x3c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x3c(%rbp)
movzbl -0x279(%rbp), %eax
cmpl $0x10, %eax
jl 0x63976
movzbl -0x279(%rbp), %eax
subl $0xc, %eax
movl %eax, -0x48(%rbp)
jmp 0x63980
movzbl -0x279(%rbp), %eax
movl %eax, -0x48(%rbp)
movslq -0x48(%rbp), %rcx
leaq 0x55f545(%rip), %rax    # 0x5c2ed0
imulq $0x14, %rcx, %rcx
addq %rcx, %rax
movq -0x288(%rbp), %rcx
movq (%rcx), %rdx
movq %rdx, 0x1(%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x9(%rax)
movq -0x288(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x288(%rbp)
movl -0x3c(%rbp), %eax
subl $0x10, %eax
movl %eax, -0x3c(%rbp)
movl $0x0, -0x38(%rbp)
movslq -0x48(%rbp), %rcx
leaq 0x55f46b(%rip), %rax    # 0x5c2e40
movl $0x0, (%rax,%rcx,4)
movslq -0x48(%rbp), %rcx
leaq 0x55f589(%rip), %rax    # 0x5c2f70
movl $0x0, (%rax,%rcx,4)
movl $0x1, -0x30(%rbp)
cmpl $0x10, -0x30(%rbp)
jg 0x63c73
movl -0x38(%rbp), %edx
movslq -0x48(%rbp), %rcx
leaq 0x55f4c3(%rip), %rax    # 0x5c2ed0
imulq $0x14, %rcx, %rcx
addq %rcx, %rax
movslq -0x30(%rbp), %rcx
movzbl (%rax,%rcx), %eax
addl %eax, %edx
movslq -0x48(%rbp), %rcx
leaq 0x55f567(%rip), %rax    # 0x5c2f90
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movslq -0x30(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movslq -0x48(%rbp), %rcx
leaq 0x55f3fe(%rip), %rax    # 0x5c2e40
movl (%rax,%rcx,4), %edx
subl -0x38(%rbp), %edx
movslq -0x48(%rbp), %rcx
leaq 0x55f7bd(%rip), %rax    # 0x5c3210
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movslq -0x30(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movslq -0x48(%rbp), %rax
leaq 0x55fa24(%rip), %rdi    # 0x5c3490
shlq $0x8, %rax
addq %rax, %rdi
movslq -0x48(%rbp), %rcx
leaq 0x55f3c2(%rip), %rax    # 0x5c2e40
movslq (%rax,%rcx,4), %rax
addq %rax, %rdi
movq -0x288(%rbp), %rsi
movslq -0x48(%rbp), %rcx
leaq 0x55f439(%rip), %rax    # 0x5c2ed0
imulq $0x14, %rcx, %rcx
addq %rcx, %rax
movslq -0x30(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movslq %eax, %rdx
callq 0x60c0
cmpl $0xa, -0x30(%rbp)
jg 0x63bbf
movl $0x0, -0x84(%rbp)
movl -0x84(%rbp), %eax
movslq -0x48(%rbp), %rdx
leaq 0x55f3fd(%rip), %rcx    # 0x5c2ed0
imulq $0x14, %rdx, %rdx
addq %rdx, %rcx
movslq -0x30(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
cmpl %ecx, %eax
jge 0x63bbd
movl $0xa, %ecx
subl -0x30(%rbp), %ecx
movl $0x1, %eax
shll %cl, %eax
movl %eax, -0x34(%rbp)
cmpl $0x0, -0x34(%rbp)
jle 0x63ba7
movslq -0x48(%rbp), %rcx
leaq 0x55f97f(%rip), %rax    # 0x5c3490
shlq $0x8, %rcx
addq %rcx, %rax
movslq -0x48(%rbp), %rdx
leaq 0x55f31d(%rip), %rcx    # 0x5c2e40
movl (%rcx,%rdx,4), %ecx
addl -0x84(%rbp), %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %edx
movslq -0x48(%rbp), %rcx
leaq 0x560152(%rip), %rax    # 0x5c3c90
shlq $0xc, %rcx
addq %rcx, %rax
movslq -0x48(%rbp), %rsi
leaq 0x55f420(%rip), %rcx    # 0x5c2f70
movslq (%rcx,%rsi,4), %rcx
movl %edx, (%rax,%rcx,4)
movl -0x30(%rbp), %edx
movslq -0x48(%rbp), %rcx
leaq 0x56812b(%rip), %rax    # 0x5cbc90
shlq $0xc, %rcx
addq %rcx, %rax
movslq -0x48(%rbp), %rsi
leaq 0x55f3f9(%rip), %rcx    # 0x5c2f70
movslq (%rcx,%rsi,4), %rcx
movl %edx, (%rax,%rcx,4)
movslq -0x48(%rbp), %rcx
leaq 0x55f3e7(%rip), %rax    # 0x5c2f70
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
leaq 0x55f3da(%rip), %rax    # 0x5c2f70
movl %edx, (%rax,%rcx,4)
movl -0x34(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x63afc
jmp 0x63ba9
movl -0x84(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x84(%rbp)
jmp 0x63ac2
jmp 0x63bbf
movslq -0x48(%rbp), %rcx
leaq 0x55f306(%rip), %rax    # 0x5c2ed0
imulq $0x14, %rcx, %rcx
addq %rcx, %rax
movslq -0x30(%rbp), %rcx
movzbl (%rax,%rcx), %ecx
movq -0x288(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x288(%rbp)
movslq -0x48(%rbp), %rcx
leaq 0x55f2d8(%rip), %rax    # 0x5c2ed0
imulq $0x14, %rcx, %rcx
addq %rcx, %rax
movslq -0x30(%rbp), %rcx
movzbl (%rax,%rcx), %ecx
movl -0x3c(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x3c(%rbp)
movslq -0x48(%rbp), %rcx
leaq 0x55f2b6(%rip), %rax    # 0x5c2ed0
imulq $0x14, %rcx, %rcx
addq %rcx, %rax
movslq -0x30(%rbp), %rcx
movzbl (%rax,%rcx), %edx
movslq -0x48(%rbp), %rcx
leaq 0x55f20c(%rip), %rax    # 0x5c2e40
addl (%rax,%rcx,4), %edx
leaq 0x55f202(%rip), %rax    # 0x5c2e40
movl %edx, (%rax,%rcx,4)
movl -0x38(%rbp), %eax
movslq -0x48(%rbp), %rdx
leaq 0x55f281(%rip), %rcx    # 0x5c2ed0
imulq $0x14, %rdx, %rdx
addq %rdx, %rcx
movslq -0x30(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
addl %ecx, %eax
shll %eax
movl %eax, -0x38(%rbp)
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0x639f5
jmp 0x63c75
cmpl $0x0, -0x3c(%rbp)
jg 0x63935
jmp 0x65272
jmp 0x63c86
movq -0x288(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x288(%rbp)
movb (%rax), %al
movb %al, -0x279(%rbp)
movl -0x3c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x3c(%rbp)
movzbl -0x279(%rbp), %eax
andl $0xf, %eax
movl %eax, -0x48(%rbp)
movzbl -0x279(%rbp), %eax
sarl $0x4, %eax
movl %eax, -0x4c(%rbp)
movl $0x0, -0x60(%rbp)
cmpl $0x40, -0x60(%rbp)
jge 0x63de6
movq -0x288(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x288(%rbp)
movzbl (%rax), %eax
movl %eax, -0x38(%rbp)
cmpl $0x0, -0x4c(%rbp)
je 0x63d1b
movl -0x38(%rbp), %eax
shll $0x8, %eax
movq -0x288(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x288(%rbp)
movzbl (%rcx), %ecx
addl %ecx, %eax
movl %eax, -0x38(%rbp)
movl -0x38(%rbp), %eax
shll $0x13, %eax
movl %eax, -0x38(%rbp)
movslq -0x60(%rbp), %rcx
leaq 0x56ff61(%rip), %rax    # 0x5d3c90
movl (%rax,%rcx,4), %eax
andl $0x7, %eax
cmpl $0x0, %eax
je 0x63d63
movl -0x38(%rbp), %edi
movslq -0x60(%rbp), %rcx
leaq 0x56ff48(%rip), %rax    # 0x5d3c90
movl (%rax,%rcx,4), %eax
andl $0x7, %eax
movslq %eax, %rcx
leaq 0x7d538(%rip), %rax     # 0xe1290
movl (%rax,%rcx,4), %esi
callq 0x6b200
movl %eax, -0x38(%rbp)
movslq -0x60(%rbp), %rcx
leaq 0x56ff22(%rip), %rax    # 0x5d3c90
movl (%rax,%rcx,4), %eax
sarl $0x3, %eax
cmpl $0x0, %eax
je 0x63da2
movl -0x38(%rbp), %edi
movslq -0x60(%rbp), %rcx
leaq 0x56ff09(%rip), %rax    # 0x5d3c90
movl (%rax,%rcx,4), %eax
sarl $0x3, %eax
movslq %eax, %rcx
leaq 0x7d4f9(%rip), %rax     # 0xe1290
movl (%rax,%rcx,4), %esi
callq 0x6b200
movl %eax, -0x38(%rbp)
cmpl $0x0, -0x48(%rbp)
je 0x63db1
movl -0x38(%rbp), %eax
sarl $0x6, %eax
movl %eax, -0x38(%rbp)
movl -0x38(%rbp), %edx
movslq -0x48(%rbp), %rcx
leaq 0x56ffd1(%rip), %rax    # 0x5d3d90
shlq $0x8, %rcx
addq %rcx, %rax
movslq -0x60(%rbp), %rsi
leaq 0x56febf(%rip), %rcx    # 0x5d3c90
movslq (%rcx,%rsi,4), %rcx
movl %edx, (%rax,%rcx,4)
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x63ccd
movl -0x3c(%rbp), %eax
subl $0x40, %eax
movl %eax, -0x3c(%rbp)
cmpl $0x0, -0x4c(%rbp)
je 0x63dfe
movl -0x3c(%rbp), %eax
subl $0x40, %eax
movl %eax, -0x3c(%rbp)
jmp 0x63e00
cmpl $0x0, -0x3c(%rbp)
jg 0x63c86
jmp 0x65272
movq -0x288(%rbp), %rax
movzwl (%rax), %edi
callq 0x62100
movzwl %ax, %eax
movl %eax, -0x54(%rbp)
movl -0x3c(%rbp), %ecx
movq -0x288(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x288(%rbp)
jmp 0x65272
cmpl $0x0, -0x40(%rbp)
jle 0x63e4c
cmpl $0x0, -0x44(%rbp)
jg 0x63e6e
cmpq $0x0, -0x1a8(%rbp)
je 0x63e62
movq -0x1a8(%rbp), %rdi
callq 0x61c0
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x655bb
movq -0x288(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x288(%rbp)
movzbl (%rax), %eax
movl %eax, 0x570304(%rip)    # 0x5d4190
cmpl $0x0, 0x5702fd(%rip)    # 0x5d4190
jne 0x63eb7
cmpq $0x0, -0x1a8(%rbp)
je 0x63eab
movq -0x1a8(%rbp), %rdi
callq 0x61c0
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x655bb
cmpl $0x1, 0x5702d2(%rip)    # 0x5d4190
jle 0x63ec7
movb $0x2, 0x55eeb9(%rip)    # 0x5c2d80
movl $0x0, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl 0x5702b9(%rip), %eax    # 0x5d4190
jge 0x63f46
movq -0x288(%rbp), %rax
movzbl (%rax), %edx
movslq -0x60(%rbp), %rcx
leaq 0x5702b2(%rip), %rax    # 0x5d41a0
movl %edx, (%rax,%rcx,4)
movq -0x288(%rbp), %rax
movzbl 0x1(%rax), %edx
sarl $0x4, %edx
movslq -0x60(%rbp), %rcx
leaq 0x5702a6(%rip), %rax    # 0x5d41b0
movl %edx, (%rax,%rcx,4)
movq -0x288(%rbp), %rax
movzbl 0x1(%rax), %edx
andl $0xf, %edx
movslq -0x60(%rbp), %rcx
leaq 0x57029a(%rip), %rax    # 0x5d41c0
movl %edx, (%rax,%rcx,4)
movq -0x288(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x288(%rbp)
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x63ece
movq -0x288(%rbp), %rax
movzbl (%rax), %eax
movl %eax, -0xd4(%rbp)
movq -0x288(%rbp), %rax
movzbl 0x1(%rax), %eax
movl %eax, -0xd8(%rbp)
movq -0x288(%rbp), %rax
movzbl 0x2(%rax), %eax
sarl $0x4, %eax
movl %eax, -0xdc(%rbp)
movq -0x288(%rbp), %rax
movzbl 0x2(%rax), %eax
andl $0xf, %eax
movl %eax, -0xe0(%rbp)
movq -0x288(%rbp), %rax
addq $0x3, %rax
movq %rax, -0x288(%rbp)
cmpl $0x0, -0xb4(%rbp)
jne 0x64140
cmpl $0x0, -0xd4(%rbp)
jne 0x63fd6
cmpl $0x3f, -0xd8(%rbp)
jne 0x63fd6
cmpl $0x0, -0xdc(%rbp)
jne 0x63fd6
cmpl $0x0, -0xe0(%rbp)
je 0x64140
movl $0x0, -0x6c(%rbp)
movl $0x0, -0x60(%rbp)
movl -0x60(%rbp), %eax
movzbl 0x55ee72(%rip), %ecx    # 0x5c2e60
cmpl %ecx, %eax
jge 0x64093
movl -0x40(%rbp), %eax
movl -0xb8(%rbp), %ecx
shll $0x3, %ecx
addl %ecx, %eax
subl $0x1, %eax
movl -0xc0(%rbp), %ecx
addl $0x3, %ecx
sarl %cl, %eax
movslq -0x60(%rbp), %rdx
leaq 0x55ee93(%rip), %rcx    # 0x5c2eb0
movl (%rcx,%rdx,4), %ecx
shll %cl, %eax
movl %eax, %ecx
movslq -0x60(%rbp), %rax
movl %ecx, -0x120(%rbp,%rax,4)
movl -0x44(%rbp), %eax
movl -0xbc(%rbp), %ecx
shll $0x3, %ecx
addl %ecx, %eax
subl $0x1, %eax
movl -0xc4(%rbp), %ecx
addl $0x3, %ecx
sarl %cl, %eax
movslq -0x60(%rbp), %rdx
leaq 0x55ee6a(%rip), %rcx    # 0x5c2ec0
movl (%rcx,%rdx,4), %ecx
shll %cl, %eax
movl %eax, %ecx
movslq -0x60(%rbp), %rax
movl %ecx, -0x150(%rbp,%rax,4)
movslq -0x60(%rbp), %rax
movl -0x120(%rbp,%rax,4), %eax
movslq -0x60(%rbp), %rcx
imull -0x150(%rbp,%rcx,4), %eax
addl -0x6c(%rbp), %eax
movl %eax, -0x6c(%rbp)
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x63fe4
movl -0x6c(%rbp), %eax
shll $0x6, %eax
cltq
shlq %rax
movl %eax, -0x60(%rbp)
movslq -0x60(%rbp), %rdi
callq 0x68f0
movq %rax, -0x1a8(%rbp)
cmpq $0x0, -0x1a8(%rbp)
jne 0x640c7
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x655bb
movq -0x1a8(%rbp), %rdi
movslq -0x60(%rbp), %rdx
xorl %esi, %esi
callq 0x62d0
movl $0x0, -0x6c(%rbp)
movl $0x0, -0x60(%rbp)
movl -0x60(%rbp), %eax
movzbl 0x55ed6f(%rip), %ecx    # 0x5c2e60
cmpl %ecx, %eax
jge 0x6413e
movq -0x1a8(%rbp), %rcx
movl -0x6c(%rbp), %eax
shll $0x6, %eax
cltq
shlq %rax
addq %rax, %rcx
movslq -0x60(%rbp), %rax
movq %rcx, -0x210(%rbp,%rax,8)
movslq -0x60(%rbp), %rax
movl -0x120(%rbp,%rax,4), %eax
movslq -0x60(%rbp), %rcx
imull -0x150(%rbp,%rcx,4), %eax
addl -0x6c(%rbp), %eax
movl %eax, -0x6c(%rbp)
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x640e7
jmp 0x64140
movl $0x7fffffff, -0xcc(%rbp) # imm = 0x7FFFFFFF
movl $0x7fffffff, -0xc8(%rbp) # imm = 0x7FFFFFFF
movl $0x0, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl 0x57002c(%rip), %eax    # 0x5d4190
jge 0x6430f
movl $0x0, -0x6c(%rbp)
movl -0x6c(%rbp), %eax
movzbl 0x55ece5(%rip), %ecx    # 0x5c2e60
cmpl %ecx, %eax
jge 0x642ff
movslq -0x60(%rbp), %rcx
leaq 0x570012(%rip), %rax    # 0x5d41a0
movl (%rax,%rcx,4), %eax
movslq -0x6c(%rbp), %rdx
leaq 0x55ecd4(%rip), %rcx    # 0x5c2e70
cmpl (%rcx,%rdx,4), %eax
jne 0x642ef
movslq -0x6c(%rbp), %rax
movq -0x210(%rbp,%rax,8), %rcx
movslq -0x60(%rbp), %rax
movq %rcx, -0x270(%rbp,%rax,8)
movslq -0x6c(%rbp), %rax
movl -0x120(%rbp,%rax,4), %ecx
movslq -0x60(%rbp), %rax
movl %ecx, -0x180(%rbp,%rax,4)
movslq -0x6c(%rbp), %rcx
leaq 0x55eca2(%rip), %rax    # 0x5c2e80
movl (%rax,%rcx,4), %edx
movslq -0x60(%rbp), %rcx
leaq 0x56ffe4(%rip), %rax    # 0x5d41d0
movl %edx, (%rax,%rcx,4)
movslq -0x6c(%rbp), %rcx
leaq 0x55ec96(%rip), %rax    # 0x5c2e90
movl (%rax,%rcx,4), %edx
movslq -0x60(%rbp), %rcx
leaq 0x56ffd8(%rip), %rax    # 0x5d41e0
movl %edx, (%rax,%rcx,4)
movslq -0x6c(%rbp), %rcx
leaq 0x55ec8a(%rip), %rax    # 0x5c2ea0
movl (%rax,%rcx,4), %edx
movslq -0x60(%rbp), %rcx
leaq 0x56ffcc(%rip), %rax    # 0x5d41f0
movl %edx, (%rax,%rcx,4)
cmpl $0x0, -0x60(%rbp)
jne 0x64255
movslq -0x6c(%rbp), %rcx
leaq 0x55ec78(%rip), %rax    # 0x5c2eb0
movl (%rax,%rcx,4), %eax
movl %eax, 0x56ffbf(%rip)    # 0x5d4200
movslq -0x6c(%rbp), %rcx
leaq 0x55ec74(%rip), %rax    # 0x5c2ec0
movl (%rax,%rcx,4), %eax
movl %eax, 0x56ffaf(%rip)    # 0x5d4204
movl -0xc0(%rbp), %ecx
movslq -0x6c(%rbp), %rdx
leaq 0x55ec4a(%rip), %rax    # 0x5c2eb0
subl (%rax,%rdx,4), %ecx
addl $0x3, %ecx
movslq -0x60(%rbp), %rax
movl %ecx, -0x190(%rbp,%rax,4)
movl -0xc4(%rbp), %ecx
movslq -0x6c(%rbp), %rdx
leaq 0x55ec38(%rip), %rax    # 0x5c2ec0
subl (%rax,%rdx,4), %ecx
addl $0x3, %ecx
movslq -0x60(%rbp), %rax
movl %ecx, -0x1a0(%rbp,%rax,4)
movslq -0x6c(%rbp), %rcx
leaq 0x55ec0c(%rip), %rax    # 0x5c2eb0
movl (%rax,%rcx,4), %eax
cmpl -0xc8(%rbp), %eax
jge 0x642c3
movslq -0x6c(%rbp), %rcx
leaq 0x55ebf6(%rip), %rax    # 0x5c2eb0
movl (%rax,%rcx,4), %eax
movl %eax, -0xc8(%rbp)
movslq -0x6c(%rbp), %rcx
leaq 0x55ebf2(%rip), %rax    # 0x5c2ec0
movl (%rax,%rcx,4), %eax
cmpl -0xcc(%rbp), %eax
jge 0x642ed
movslq -0x6c(%rbp), %rcx
leaq 0x55ebdc(%rip), %rax    # 0x5c2ec0
movl (%rax,%rcx,4), %eax
movl %eax, -0xcc(%rbp)
jmp 0x642ef
jmp 0x642f1
movl -0x6c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6c(%rbp)
jmp 0x64171
jmp 0x64301
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x6415b
movl -0xb8(%rbp), %eax
movl -0xc8(%rbp), %ecx
sarl %cl, %eax
movl %eax, -0xc8(%rbp)
movl 0x56fea7(%rip), %eax    # 0x5d41d0
cmpl -0xc8(%rbp), %eax
jge 0x6433f
movl 0x56fe99(%rip), %eax    # 0x5d41d0
movl %eax, -0x294(%rbp)
jmp 0x6434b
movl -0xc8(%rbp), %eax
movl %eax, -0x294(%rbp)
movl -0x294(%rbp), %eax
movl %eax, 0x56fe79(%rip)    # 0x5d41d0
movl -0xc8(%rbp), %eax
shll $0x3, %eax
movl %eax, -0xc8(%rbp)
movl -0xbc(%rbp), %eax
movl -0xcc(%rbp), %ecx
sarl %cl, %eax
movl %eax, -0xcc(%rbp)
movl 0x56fe60(%rip), %eax    # 0x5d41e0
cmpl -0xcc(%rbp), %eax
jge 0x64396
movl 0x56fe52(%rip), %eax    # 0x5d41e0
movl %eax, -0x298(%rbp)
jmp 0x643a2
movl -0xcc(%rbp), %eax
movl %eax, -0x298(%rbp)
movl -0x298(%rbp), %eax
movl %eax, 0x56fe32(%rip)    # 0x5d41e0
movl -0xcc(%rbp), %eax
shll $0x3, %eax
movl %eax, -0xcc(%rbp)
movl 0x56fe0d(%rip), %eax    # 0x5d41d0
imull 0x56fe16(%rip), %eax    # 0x5d41e0
movl %eax, 0x56fe38(%rip)    # 0x5d4208
movl -0x40(%rbp), %eax
addl 0x55e9e3(%rip), %eax    # 0x5c2dbc
cmpl 0x55e9d5(%rip), %eax    # 0x5c2db4
jge 0x643f2
movl -0x40(%rbp), %eax
addl 0x55e9d2(%rip), %eax    # 0x5c2dbc
movl %eax, -0x29c(%rbp)
jmp 0x643fe
movl 0x55e9bc(%rip), %eax    # 0x5c2db4
movl %eax, -0x29c(%rbp)
movl -0x29c(%rbp), %eax
movl %eax, 0x56fe02(%rip)    # 0x5d420c
movl -0x44(%rbp), %eax
addl 0x55e9ad(%rip), %eax    # 0x5c2dc0
cmpl 0x55e99f(%rip), %eax    # 0x5c2db8
jge 0x6442c
movl -0x44(%rbp), %eax
addl 0x55e99c(%rip), %eax    # 0x5c2dc0
movl %eax, -0x2a0(%rbp)
jmp 0x64438
movl 0x55e986(%rip), %eax    # 0x5c2db8
movl %eax, -0x2a0(%rbp)
movl -0x2a0(%rbp), %eax
movl %eax, 0x56fdcc(%rip)    # 0x5d4210
cmpl $0x0, 0x55e971(%rip)    # 0x5c2dbc
jle 0x6445b
movl 0x55e969(%rip), %eax    # 0x5c2dbc
movl %eax, -0x2a4(%rbp)
jmp 0x64465
xorl %eax, %eax
movl %eax, -0x2a4(%rbp)
jmp 0x64465
movl -0x2a4(%rbp), %eax
cmpl 0x55e943(%rip), %eax    # 0x5c2db4
jge 0x64518
movl 0x55e93f(%rip), %eax    # 0x5c2dbc
addl -0x40(%rbp), %eax
cmpl 0x55e92e(%rip), %eax    # 0x5c2db4
jge 0x64499
movl 0x55e92e(%rip), %eax    # 0x5c2dbc
addl -0x40(%rbp), %eax
movl %eax, -0x2a8(%rbp)
jmp 0x644a5
movl 0x55e915(%rip), %eax    # 0x5c2db4
movl %eax, -0x2a8(%rbp)
movl -0x2a8(%rbp), %eax
cmpl $0x0, %eax
jle 0x64518
cmpl $0x0, 0x55e909(%rip)    # 0x5c2dc0
jle 0x644c7
movl 0x55e901(%rip), %eax    # 0x5c2dc0
movl %eax, -0x2ac(%rbp)
jmp 0x644d1
xorl %eax, %eax
movl %eax, -0x2ac(%rbp)
jmp 0x644d1
movl -0x2ac(%rbp), %eax
cmpl 0x55e8db(%rip), %eax    # 0x5c2db8
jge 0x64518
movl 0x55e8db(%rip), %eax    # 0x5c2dc0
addl -0x44(%rbp), %eax
cmpl 0x55e8ca(%rip), %eax    # 0x5c2db8
jge 0x64501
movl 0x55e8ca(%rip), %eax    # 0x5c2dc0
addl -0x44(%rbp), %eax
movl %eax, -0x2b0(%rbp)
jmp 0x6450d
movl 0x55e8b1(%rip), %eax    # 0x5c2db8
movl %eax, -0x2b0(%rbp)
movl -0x2b0(%rbp), %eax
cmpl $0x0, %eax
jg 0x6453a
cmpq $0x0, -0x1a8(%rbp)
je 0x6452e
movq -0x1a8(%rbp), %rdi
callq 0x61c0
movl $0x0, -0x4(%rbp)
jmp 0x655bb
movl -0xe0(%rbp), %ecx
movl $0x1, %eax
shll %cl, %eax
movl %eax, -0xe8(%rbp)
xorl %eax, %eax
subl -0xe8(%rbp), %eax
movl %eax, -0xe4(%rbp)
movl -0x54(%rbp), %eax
movl %eax, -0x50(%rbp)
movl $0x0, -0xd0(%rbp)
movb $-0x30, -0x27a(%rbp)
movl $0x0, -0x7c(%rbp)
movl $0x0, -0x80(%rbp)
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpl -0x44(%rbp), %eax
jge 0x6520e
movl $0x0, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl -0x40(%rbp), %eax
jge 0x651fb
movq -0x288(%rbp), %rax
addq $-0x4, %rax
movq -0x10(%rbp), %rcx
subq %rcx, %rax
movslq -0x14(%rbp), %rcx
cmpq %rcx, %rax
jl 0x645c6
jmp 0x65210
cmpq $0x0, -0x1a8(%rbp)
jne 0x645db
leaq 0x56fc49(%rip), %rax    # 0x5d4220
movq %rax, -0x78(%rbp)
movl $0x0, -0x84(%rbp)
movl -0x84(%rbp), %eax
cmpl 0x56fb9f(%rip), %eax    # 0x5d4190
jge 0x65101
movslq -0x84(%rbp), %rcx
leaq 0x56fbbb(%rip), %rax    # 0x5d41c0
movl (%rax,%rcx,4), %eax
addl $0x4, %eax
movslq %eax, %rcx
leaq 0x55f67b(%rip), %rax    # 0x5c3c90
shlq $0xc, %rcx
addq %rcx, %rax
movq %rax, -0x98(%rbp)
movslq -0x84(%rbp), %rcx
leaq 0x56fb8f(%rip), %rax    # 0x5d41c0
movl (%rax,%rcx,4), %eax
addl $0x4, %eax
movslq %eax, %rcx
leaq 0x56764f(%rip), %rax    # 0x5cbc90
shlq $0xc, %rcx
addq %rcx, %rax
movq %rax, -0xa0(%rbp)
movslq -0x84(%rbp), %rcx
leaq 0x56fb63(%rip), %rax    # 0x5d41c0
movl (%rax,%rcx,4), %eax
addl $0x4, %eax
movslq %eax, %rcx
leaq 0x55e903(%rip), %rax    # 0x5c2f70
movl (%rax,%rcx,4), %eax
movl %eax, -0xa4(%rbp)
cmpq $0x0, -0x1a8(%rbp)
jne 0x646a7
movslq -0x84(%rbp), %rcx
leaq 0x56fb62(%rip), %rax    # 0x5d41f0
movslq (%rax,%rcx,4), %rcx
leaq 0x56f6f7(%rip), %rax    # 0x5d3d90
shlq $0x8, %rcx
addq %rcx, %rax
movq %rax, -0xb0(%rbp)
movl $0x0, -0x68(%rbp)
movl -0x68(%rbp), %eax
movslq -0x84(%rbp), %rdx
leaq 0x56fb21(%rip), %rcx    # 0x5d41e0
movl (%rcx,%rdx,4), %ecx
shll $0x3, %ecx
cmpl %ecx, %eax
jge 0x650eb
movl $0x0, -0x64(%rbp)
movl -0x64(%rbp), %eax
movslq -0x84(%rbp), %rdx
leaq 0x56faeb(%rip), %rcx    # 0x5d41d0
movl (%rcx,%rdx,4), %ecx
shll $0x3, %ecx
cmpl %ecx, %eax
jge 0x650db
cmpq $0x0, -0x1a8(%rbp)
je 0x6476a
movslq -0x84(%rbp), %rax
movq -0x270(%rbp,%rax,8), %rax
movl -0x5c(%rbp), %edx
addl -0x68(%rbp), %edx
movslq -0x84(%rbp), %rcx
movl -0x1a0(%rbp,%rcx,4), %ecx
sarl %cl, %edx
movl %edx, %ecx
movslq -0x84(%rbp), %rdx
imull -0x180(%rbp,%rdx,4), %ecx
movl %ecx, -0x2b4(%rbp)
movl -0x58(%rbp), %edx
addl -0x64(%rbp), %edx
movslq -0x84(%rbp), %rcx
movl -0x190(%rbp,%rcx,4), %ecx
sarl %cl, %edx
movl -0x2b4(%rbp), %ecx
addl %edx, %ecx
shll $0x6, %ecx
movslq %ecx, %rcx
shlq %rcx
addq %rcx, %rax
movq %rax, -0x278(%rbp)
cmpl $0x0, -0xd4(%rbp)
jne 0x64a20
jmp 0x64779
cmpl $0x18, -0x80(%rbp)
jge 0x647d9
movq -0x288(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x288(%rbp)
movb (%rax), %al
movb %al, -0x279(%rbp)
movzbl -0x279(%rbp), %eax
cmpl $0xff, %eax
jne 0x647bc
movq -0x288(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x288(%rbp)
movl -0x7c(%rbp), %eax
shll $0x8, %eax
movzbl -0x279(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x7c(%rbp)
movl -0x80(%rbp), %eax
addl $0x8, %eax
movl %eax, -0x80(%rbp)
jmp 0x64779
cmpl $0x0, -0xdc(%rbp)
jne 0x649e6
movl -0x7c(%rbp), %eax
movl -0x80(%rbp), %ecx
subl $0xa, %ecx
sarl %cl, %eax
andl $0x3ff, %eax            # imm = 0x3FF
movl %eax, -0x30(%rbp)
movl -0x30(%rbp), %eax
movslq -0x84(%rbp), %rdx
leaq 0x56f9a6(%rip), %rcx    # 0x5d41b0
movslq (%rcx,%rdx,4), %rdx
leaq 0x55e75b(%rip), %rcx    # 0x5c2f70
cmpl (%rcx,%rdx,4), %eax
jge 0x64878
movslq -0x84(%rbp), %rcx
leaq 0x56f988(%rip), %rax    # 0x5d41b0
movslq (%rax,%rcx,4), %rcx
leaq 0x55f45d(%rip), %rax    # 0x5c3c90
shlq $0xc, %rcx
addq %rcx, %rax
movslq -0x30(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x88(%rbp)
movslq -0x84(%rbp), %rcx
leaq 0x56f95b(%rip), %rax    # 0x5d41b0
movslq (%rax,%rcx,4), %rcx
leaq 0x567430(%rip), %rax    # 0x5cbc90
shlq $0xc, %rcx
addq %rcx, %rax
movslq -0x30(%rbp), %rcx
movl (%rax,%rcx,4), %ecx
movl -0x80(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x80(%rbp)
jmp 0x648b0
movslq -0x84(%rbp), %rcx
leaq 0x56f92a(%rip), %rax    # 0x5d41b0
movl (%rax,%rcx,4), %edi
movl -0x80(%rbp), %esi
movl -0x7c(%rbp), %edx
leaq -0x88(%rbp), %rcx
leaq -0x8c(%rbp), %r8
callq 0x6b220
movl -0x8c(%rbp), %ecx
movl -0x80(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x80(%rbp)
cmpl $0x0, -0x88(%rbp)
je 0x6499b
jmp 0x648bf
cmpl $0x18, -0x80(%rbp)
jge 0x6491f
movq -0x288(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x288(%rbp)
movb (%rax), %al
movb %al, -0x279(%rbp)
movzbl -0x279(%rbp), %eax
cmpl $0xff, %eax
jne 0x64902
movq -0x288(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x288(%rbp)
movl -0x7c(%rbp), %eax
shll $0x8, %eax
movzbl -0x279(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x7c(%rbp)
movl -0x80(%rbp), %eax
addl $0x8, %eax
movl %eax, -0x80(%rbp)
jmp 0x648bf
movl -0x88(%rbp), %ecx
movl -0x80(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x80(%rbp)
movl -0x7c(%rbp), %eax
movl -0x80(%rbp), %ecx
shrl %cl, %eax
movslq -0x88(%rbp), %rdx
leaq 0x4ef1d(%rip), %rcx     # 0xb3860
andl (%rcx,%rdx,4), %eax
movl %eax, -0x38(%rbp)
movl -0x38(%rbp), %eax
movl -0x88(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rdx
leaq 0x4ef01(%rip), %rcx     # 0xb3860
cmpl (%rcx,%rdx,4), %eax
jg 0x6497d
movslq -0x88(%rbp), %rcx
leaq 0x4eeee(%rip), %rax     # 0xb3860
movl (%rax,%rcx,4), %ecx
movl -0x38(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x38(%rbp)
movl -0x38(%rbp), %edx
movslq -0x84(%rbp), %rcx
leaq 0x55e4a2(%rip), %rax    # 0x5c2e30
addl (%rax,%rcx,4), %edx
leaq 0x55e498(%rip), %rax    # 0x5c2e30
movl %edx, (%rax,%rcx,4)
cmpq $0x0, -0x1a8(%rbp)
jne 0x649be
movslq -0x84(%rbp), %rcx
leaq 0x55e47d(%rip), %rax    # 0x5c2e30
movl (%rax,%rcx,4), %ecx
movq -0x78(%rbp), %rax
movl %ecx, (%rax)
jmp 0x649e4
movslq -0x84(%rbp), %rcx
leaq 0x55e464(%rip), %rax    # 0x5c2e30
movl (%rax,%rcx,4), %eax
movl -0xe0(%rbp), %ecx
shll %cl, %eax
movw %ax, %cx
movq -0x278(%rbp), %rax
movw %cx, (%rax)
jmp 0x64a1e
movl -0x7c(%rbp), %eax
movl -0x80(%rbp), %ecx
addl $-0x1, %ecx
movl %ecx, -0x80(%rbp)
movslq %ecx, %rdx
leaq 0x4ede4(%rip), %rcx     # 0xb37e0
andl (%rcx,%rdx,4), %eax
cmpl $0x0, %eax
je 0x64a1c
movl -0xe8(%rbp), %eax
movswl %ax, %edx
movq -0x278(%rbp), %rax
movswl (%rax), %ecx
orl %edx, %ecx
movw %cx, (%rax)
jmp 0x64a1e
jmp 0x64a20
cmpq $0x0, -0x1a8(%rbp)
jne 0x64a3e
movq -0x78(%rbp), %rdi
addq $0x4, %rdi
xorl %esi, %esi
movl $0xfc, %edx
callq 0x62d0
cmpl $0x1, -0xd4(%rbp)
jle 0x64a55
movl -0xd4(%rbp), %eax
movl %eax, -0x2b8(%rbp)
jmp 0x64a62
movl $0x1, %eax
movl %eax, -0x2b8(%rbp)
jmp 0x64a62
movl -0x2b8(%rbp), %eax
movl %eax, -0x60(%rbp)
movb $0x1, -0x27b(%rbp)
cmpl $0x0, -0xd0(%rbp)
jg 0x64f38
jmp 0x64a81
movl -0x60(%rbp), %eax
cmpl -0xd8(%rbp), %eax
jg 0x64f36
jmp 0x64a92
cmpl $0x18, -0x80(%rbp)
jge 0x64af2
movq -0x288(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x288(%rbp)
movb (%rax), %al
movb %al, -0x279(%rbp)
movzbl -0x279(%rbp), %eax
cmpl $0xff, %eax
jne 0x64ad5
movq -0x288(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x288(%rbp)
movl -0x7c(%rbp), %eax
shll $0x8, %eax
movzbl -0x279(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x7c(%rbp)
movl -0x80(%rbp), %eax
addl $0x8, %eax
movl %eax, -0x80(%rbp)
jmp 0x64a92
movl -0x7c(%rbp), %eax
movl -0x80(%rbp), %ecx
subl $0xa, %ecx
sarl %cl, %eax
andl $0x3ff, %eax            # imm = 0x3FF
movl %eax, -0x30(%rbp)
movl -0x30(%rbp), %eax
cmpl -0xa4(%rbp), %eax
jge 0x64b3c
movq -0x98(%rbp), %rax
movslq -0x30(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x88(%rbp)
movq -0xa0(%rbp), %rax
movslq -0x30(%rbp), %rcx
movl (%rax,%rcx,4), %ecx
movl -0x80(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x80(%rbp)
jmp 0x64b77
movslq -0x84(%rbp), %rcx
leaq 0x56f676(%rip), %rax    # 0x5d41c0
movl (%rax,%rcx,4), %edi
addl $0x4, %edi
movl -0x80(%rbp), %esi
movl -0x7c(%rbp), %edx
leaq -0x88(%rbp), %rcx
leaq -0x8c(%rbp), %r8
callq 0x6b220
movl -0x8c(%rbp), %ecx
movl -0x80(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x80(%rbp)
movl -0x88(%rbp), %eax
sarl $0x4, %eax
movl %eax, -0x6c(%rbp)
movl -0x88(%rbp), %eax
andl $0xf, %eax
movl %eax, -0x88(%rbp)
cmpl $0x0, -0x88(%rbp)
je 0x64be3
cmpl $0x0, -0xdc(%rbp)
je 0x64bde
movl -0x7c(%rbp), %eax
movl -0x80(%rbp), %ecx
addl $-0x1, %ecx
movl %ecx, -0x80(%rbp)
movslq %ecx, %rdx
leaq 0x4ec26(%rip), %rcx     # 0xb37e0
andl (%rcx,%rdx,4), %eax
cmpl $0x0, %eax
je 0x64bd0
movl -0xe8(%rbp), %eax
movl %eax, -0x88(%rbp)
jmp 0x64bdc
movl -0xe4(%rbp), %eax
movl %eax, -0x88(%rbp)
jmp 0x64bde
jmp 0x64cb9
cmpl $0xf, -0x6c(%rbp)
jge 0x64cb7
movslq -0x6c(%rbp), %rcx
leaq 0x4ebe8(%rip), %rax     # 0xb37e0
movl (%rax,%rcx,4), %eax
movl %eax, -0xd0(%rbp)
cmpl $0x0, -0x6c(%rbp)
je 0x64c9a
jmp 0x64c0d
cmpl $0x18, -0x80(%rbp)
jge 0x64c6d
movq -0x288(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x288(%rbp)
movb (%rax), %al
movb %al, -0x279(%rbp)
movzbl -0x279(%rbp), %eax
cmpl $0xff, %eax
jne 0x64c50
movq -0x288(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x288(%rbp)
movl -0x7c(%rbp), %eax
shll $0x8, %eax
movzbl -0x279(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x7c(%rbp)
movl -0x80(%rbp), %eax
addl $0x8, %eax
movl %eax, -0x80(%rbp)
jmp 0x64c0d
movl -0x6c(%rbp), %ecx
movl -0x80(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x80(%rbp)
movl -0x7c(%rbp), %eax
movl -0x80(%rbp), %ecx
shrl %cl, %eax
movslq -0x6c(%rbp), %rdx
leaq 0x4ebd5(%rip), %rcx     # 0xb3860
andl (%rcx,%rdx,4), %eax
addl -0xd0(%rbp), %eax
movl %eax, -0xd0(%rbp)
cmpl $0x0, -0xdc(%rbp)
jne 0x64cb2
movl -0xd0(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xd0(%rbp)
jmp 0x64f36
jmp 0x64cb9
cmpl $0x0, -0xdc(%rbp)
je 0x64deb
jmp 0x64cc8
movq -0x278(%rbp), %rax
movslq -0x60(%rbp), %rcx
cmpw $0x0, (%rax,%rcx,2)
je 0x64d9b
jmp 0x64ce0
cmpl $0x18, -0x80(%rbp)
jge 0x64d40
movq -0x288(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x288(%rbp)
movb (%rax), %al
movb %al, -0x279(%rbp)
movzbl -0x279(%rbp), %eax
cmpl $0xff, %eax
jne 0x64d23
movq -0x288(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x288(%rbp)
movl -0x7c(%rbp), %eax
shll $0x8, %eax
movzbl -0x279(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x7c(%rbp)
movl -0x80(%rbp), %eax
addl $0x8, %eax
movl %eax, -0x80(%rbp)
jmp 0x64ce0
movl -0x7c(%rbp), %eax
movl -0x80(%rbp), %ecx
addl $-0x1, %ecx
movl %ecx, -0x80(%rbp)
movslq %ecx, %rdx
leaq 0x4ea8a(%rip), %rcx     # 0xb37e0
andl (%rcx,%rdx,4), %eax
cmpl $0x0, %eax
je 0x64d99
movq -0x278(%rbp), %rax
movslq -0x60(%rbp), %rcx
movswl (%rax,%rcx,2), %eax
cmpl $0x0, %eax
setl %al
andb $0x1, %al
movzbl %al, %eax
cltq
movl -0xe8(%rbp,%rax,4), %eax
movswl %ax, %esi
movq -0x278(%rbp), %rax
movslq -0x60(%rbp), %rcx
movswl (%rax,%rcx,2), %edx
addl %esi, %edx
movw %dx, (%rax,%rcx,2)
jmp 0x64dad
movl -0x6c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x6c(%rbp)
cmpl $0x0, %eax
jge 0x64dab
jmp 0x64dc5
jmp 0x64dad
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl -0xd8(%rbp), %eax
jle 0x64cc8
cmpl $0x0, -0x88(%rbp)
je 0x64de6
movl -0x88(%rbp), %eax
movw %ax, %dx
movq -0x278(%rbp), %rax
movslq -0x60(%rbp), %rcx
movw %dx, (%rax,%rcx,2)
jmp 0x64f26
movl -0x6c(%rbp), %eax
addl -0x60(%rbp), %eax
movl %eax, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl -0xd8(%rbp), %eax
jle 0x64e04
jmp 0x64f36
jmp 0x64e06
cmpl $0x18, -0x80(%rbp)
jge 0x64e66
movq -0x288(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x288(%rbp)
movb (%rax), %al
movb %al, -0x279(%rbp)
movzbl -0x279(%rbp), %eax
cmpl $0xff, %eax
jne 0x64e49
movq -0x288(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x288(%rbp)
movl -0x7c(%rbp), %eax
shll $0x8, %eax
movzbl -0x279(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x7c(%rbp)
movl -0x80(%rbp), %eax
addl $0x8, %eax
movl %eax, -0x80(%rbp)
jmp 0x64e06
movl -0x88(%rbp), %ecx
movl -0x80(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x80(%rbp)
movl -0x7c(%rbp), %eax
movl -0x80(%rbp), %ecx
shrl %cl, %eax
movslq -0x88(%rbp), %rdx
leaq 0x4e9d6(%rip), %rcx     # 0xb3860
andl (%rcx,%rdx,4), %eax
movl %eax, -0x38(%rbp)
movl -0x38(%rbp), %eax
movl -0x88(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rdx
leaq 0x4e9ba(%rip), %rcx     # 0xb3860
cmpl (%rcx,%rdx,4), %eax
jg 0x64ec4
movslq -0x88(%rbp), %rcx
leaq 0x4e9a7(%rip), %rax     # 0xb3860
movl (%rax,%rcx,4), %ecx
movl -0x38(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x38(%rbp)
movslq -0x60(%rbp), %rcx
leaq 0x56ff51(%rip), %rax    # 0x5d4e20
movzbl (%rax,%rcx), %ecx
movzbl -0x27b(%rbp), %eax
orl %ecx, %eax
movb %al, -0x27b(%rbp)
cmpq $0x0, -0x1a8(%rbp)
jne 0x64f07
movl -0x38(%rbp), %edx
movq -0x78(%rbp), %rax
movslq -0x60(%rbp), %rsi
leaq 0x56ed92(%rip), %rcx    # 0x5d3c90
movslq (%rcx,%rsi,4), %rcx
movl %edx, (%rax,%rcx,4)
jmp 0x64f24
movl -0x38(%rbp), %eax
movl -0xe0(%rbp), %ecx
shll %cl, %eax
movw %ax, %dx
movq -0x278(%rbp), %rax
movslq -0x60(%rbp), %rcx
movw %dx, (%rax,%rcx,2)
jmp 0x64f26
jmp 0x64f28
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x64a81
jmp 0x64f52
cmpl $0x0, -0xdc(%rbp)
jne 0x64f50
movl -0xd0(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xd0(%rbp)
jmp 0x64f52
cmpl $0x0, -0xdc(%rbp)
je 0x6506e
cmpl $0x0, -0xd0(%rbp)
jle 0x6506e
movl -0xd0(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xd0(%rbp)
movl -0x60(%rbp), %eax
cmpl -0xd8(%rbp), %eax
jg 0x6506c
movq -0x278(%rbp), %rax
movslq -0x60(%rbp), %rcx
cmpw $0x0, (%rax,%rcx,2)
jne 0x64fa1
jmp 0x6505e
jmp 0x64fa3
cmpl $0x18, -0x80(%rbp)
jge 0x65003
movq -0x288(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x288(%rbp)
movb (%rax), %al
movb %al, -0x279(%rbp)
movzbl -0x279(%rbp), %eax
cmpl $0xff, %eax
jne 0x64fe6
movq -0x288(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x288(%rbp)
movl -0x7c(%rbp), %eax
shll $0x8, %eax
movzbl -0x279(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x7c(%rbp)
movl -0x80(%rbp), %eax
addl $0x8, %eax
movl %eax, -0x80(%rbp)
jmp 0x64fa3
movl -0x7c(%rbp), %eax
movl -0x80(%rbp), %ecx
addl $-0x1, %ecx
movl %ecx, -0x80(%rbp)
movslq %ecx, %rdx
leaq 0x4e7c7(%rip), %rcx     # 0xb37e0
andl (%rcx,%rdx,4), %eax
cmpl $0x0, %eax
je 0x6505c
movq -0x278(%rbp), %rax
movslq -0x60(%rbp), %rcx
movswl (%rax,%rcx,2), %eax
cmpl $0x0, %eax
setl %al
andb $0x1, %al
movzbl %al, %eax
cltq
movl -0xe8(%rbp,%rax,4), %eax
movswl %ax, %esi
movq -0x278(%rbp), %rax
movslq -0x60(%rbp), %rcx
movswl (%rax,%rcx,2), %edx
addl %esi, %edx
movw %dx, (%rax,%rcx,2)
jmp 0x6505e
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x64f7b
jmp 0x6506e
cmpq $0x0, -0x1a8(%rbp)
jne 0x650cb
movl $0x3f, -0x60(%rbp)
cmpl $0x0, -0x60(%rbp)
jl 0x650ad
movq -0xb0(%rbp), %rax
movslq -0x60(%rbp), %rcx
movl (%rax,%rcx,4), %edx
movq -0x78(%rbp), %rax
movslq -0x60(%rbp), %rcx
imull (%rax,%rcx,4), %edx
movl %edx, (%rax,%rcx,4)
movl -0x60(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x6507f
movq -0x78(%rbp), %rdi
movzbl -0x27b(%rbp), %esi
callq 0x6b330
movq -0x78(%rbp), %rax
addq $0x100, %rax            # imm = 0x100
movq %rax, -0x78(%rbp)
jmp 0x650cd
movl -0x64(%rbp), %eax
addl $0x8, %eax
movl %eax, -0x64(%rbp)
jmp 0x646d4
jmp 0x650dd
movl -0x68(%rbp), %eax
addl $0x8, %eax
movl %eax, -0x68(%rbp)
jmp 0x646ae
jmp 0x650ed
movl -0x84(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x84(%rbp)
jmp 0x645e5
cmpq $0x0, -0x1a8(%rbp)
jne 0x65116
movl -0x58(%rbp), %edi
movl -0x5c(%rbp), %esi
callq 0x6b700
movl -0x50(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x50(%rbp)
cmpl $0x0, -0x50(%rbp)
jne 0x651e8
movl -0x80(%rbp), %eax
sarl $0x3, %eax
movl $0x1, %ecx
subl %eax, %ecx
movq -0x288(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x288(%rbp)
movl $0x0, -0x80(%rbp)
movq -0x288(%rbp), %rax
movzbl -0x2(%rax), %eax
cmpl $0xff, %eax
jne 0x65179
movq -0x288(%rbp), %rax
movzbl -0x1(%rax), %eax
movzbl -0x27a(%rbp), %ecx
cmpl %ecx, %eax
je 0x6518b
movq -0x288(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x288(%rbp)
movb -0x27a(%rbp), %al
addb $0x1, %al
movb %al, -0x27a(%rbp)
movzbl -0x27a(%rbp), %eax
cmpl $0xd8, %eax
jl 0x651ae
movb $-0x30, -0x27a(%rbp)
movl -0x54(%rbp), %eax
movl %eax, -0x50(%rbp)
movl $0x0, -0x30(%rbp)
cmpl $0x4, -0x30(%rbp)
jge 0x651de
movslq -0x30(%rbp), %rcx
leaq 0x55dc64(%rip), %rax    # 0x5c2e30
movl $0x0, (%rax,%rcx,4)
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0x651bb
movl $0x0, -0xd0(%rbp)
jmp 0x651ea
movl -0xc8(%rbp), %eax
addl -0x58(%rbp), %eax
movl %eax, -0x58(%rbp)
jmp 0x6459a
jmp 0x651fd
movl -0xcc(%rbp), %eax
addl -0x5c(%rbp), %eax
movl %eax, -0x5c(%rbp)
jmp 0x64587
jmp 0x65210
cmpq $0x0, -0x1a8(%rbp)
jne 0x65226
movl $0x0, -0x4(%rbp)
jmp 0x655bb
movl -0xb4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb4(%rbp)
movl -0x80(%rbp), %ecx
sarl $0x3, %ecx
addl $0x1, %ecx
movq -0x288(%rbp), %rax
movslq %ecx, %rdx
xorl %ecx, %ecx
subq %rdx, %rcx
addq %rcx, %rax
movq %rax, -0x288(%rbp)
jmp 0x65272
jmp 0x65272
movl -0x3c(%rbp), %ecx
movq -0x288(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x288(%rbp)
jmp 0x65274
movq -0x288(%rbp), %rax
movq -0x10(%rbp), %rcx
subq %rcx, %rax
movslq -0x14(%rbp), %rcx
cmpq %rcx, %rax
jl 0x635e9
cmpq $0x0, -0x1a8(%rbp)
jne 0x652a5
movl $0x0, -0x4(%rbp)
jmp 0x655bb
movzbl 0x55dbb4(%rip), %eax    # 0x5c2e60
movl %eax, 0x56eede(%rip)    # 0x5d4190
movl $0x0, -0x30(%rbp)
movl -0x30(%rbp), %eax
movzbl 0x55db9d(%rip), %ecx    # 0x5c2e60
cmpl %ecx, %eax
jge 0x6538b
movslq -0x30(%rbp), %rcx
leaq 0x55dbaa(%rip), %rax    # 0x5c2e80
movl (%rax,%rcx,4), %edx
movslq -0x30(%rbp), %rcx
leaq 0x56eeec(%rip), %rax    # 0x5d41d0
movl %edx, (%rax,%rcx,4)
movslq -0x30(%rbp), %rcx
leaq 0x55db8e(%rip), %rax    # 0x5c2e80
movl (%rax,%rcx,4), %edx
shll $0x3, %edx
leaq 0x55db81(%rip), %rax    # 0x5c2e80
movl %edx, (%rax,%rcx,4)
movslq -0x30(%rbp), %rcx
leaq 0x55db83(%rip), %rax    # 0x5c2e90
movl (%rax,%rcx,4), %edx
movslq -0x30(%rbp), %rcx
leaq 0x56eec5(%rip), %rax    # 0x5d41e0
movl %edx, (%rax,%rcx,4)
movslq -0x30(%rbp), %rcx
leaq 0x55db67(%rip), %rax    # 0x5c2e90
movl (%rax,%rcx,4), %edx
shll $0x3, %edx
leaq 0x55db5a(%rip), %rax    # 0x5c2e90
movl %edx, (%rax,%rcx,4)
movl -0xc0(%rbp), %ecx
movslq -0x30(%rbp), %rdx
leaq 0x55db66(%rip), %rax    # 0x5c2eb0
subl (%rax,%rdx,4), %ecx
addl $0x3, %ecx
movslq -0x30(%rbp), %rax
movl %ecx, -0x190(%rbp,%rax,4)
movl -0xc4(%rbp), %ecx
movslq -0x30(%rbp), %rdx
leaq 0x55db54(%rip), %rax    # 0x5c2ec0
subl (%rax,%rdx,4), %ecx
addl $0x3, %ecx
movslq -0x30(%rbp), %rax
movl %ecx, -0x1a0(%rbp,%rax,4)
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0x652b9
movl 0x55db1f(%rip), %eax    # 0x5c2eb0
movl %eax, 0x56ee69(%rip)    # 0x5d4200
movl 0x55db23(%rip), %eax    # 0x5c2ec0
movl %eax, 0x56ee61(%rip)    # 0x5d4204
movl 0x56ee27(%rip), %eax    # 0x5d41d0
movl 0x56ee55(%rip), %ecx    # 0x5d4204
shll %cl, %eax
movl %eax, 0x56ee51(%rip)    # 0x5d4208
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpl -0x44(%rbp), %eax
jge 0x655a8
movl $0x0, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl -0x40(%rbp), %eax
jge 0x65595
leaq 0x56ee3c(%rip), %rax    # 0x5d4220
movq %rax, -0x78(%rbp)
movl $0x0, -0x84(%rbp)
movl -0x84(%rbp), %eax
movzbl 0x55da61(%rip), %ecx    # 0x5c2e60
cmpl %ecx, %eax
jge 0x65579
movl $0x0, -0x68(%rbp)
movl -0x68(%rbp), %eax
movslq -0x84(%rbp), %rdx
leaq 0x55da71(%rip), %rcx    # 0x5c2e90
cmpl (%rcx,%rdx,4), %eax
jge 0x65563
movl $0x0, -0x64(%rbp)
movl -0x64(%rbp), %eax
movslq -0x84(%rbp), %rdx
leaq 0x55da40(%rip), %rcx    # 0x5c2e80
cmpl (%rcx,%rdx,4), %eax
jge 0x65553
movslq -0x84(%rbp), %rax
movq -0x210(%rbp,%rax,8), %rax
movl -0x5c(%rbp), %edx
addl -0x68(%rbp), %edx
movslq -0x84(%rbp), %rcx
movl -0x1a0(%rbp,%rcx,4), %ecx
sarl %cl, %edx
movl %edx, %ecx
movslq -0x84(%rbp), %rdx
imull -0x120(%rbp,%rdx,4), %ecx
movl %ecx, -0x2bc(%rbp)
movl -0x58(%rbp), %edx
addl -0x64(%rbp), %edx
movslq -0x84(%rbp), %rcx
movl -0x190(%rbp,%rcx,4), %ecx
sarl %cl, %edx
movl -0x2bc(%rbp), %ecx
addl %edx, %ecx
shll $0x6, %ecx
movslq %ecx, %rcx
shlq %rcx
addq %rcx, %rax
movq %rax, -0x278(%rbp)
movslq -0x84(%rbp), %rcx
leaq 0x55d9dc(%rip), %rax    # 0x5c2ea0
movslq (%rax,%rcx,4), %rcx
leaq 0x56e8c1(%rip), %rax    # 0x5d3d90
shlq $0x8, %rcx
addq %rcx, %rax
movq %rax, -0xb0(%rbp)
movl $0x0, -0x60(%rbp)
cmpl $0x40, -0x60(%rbp)
jge 0x65529
movq -0x278(%rbp), %rax
movslq -0x60(%rbp), %rdx
leaq 0x56f964(%rip), %rcx    # 0x5d4e60
movslq (%rcx,%rdx,4), %rcx
movswl (%rax,%rcx,2), %edx
movq -0xb0(%rbp), %rax
movslq -0x60(%rbp), %rcx
imull (%rax,%rcx,4), %edx
movq -0x78(%rbp), %rax
movslq -0x60(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x654e4
movq -0x78(%rbp), %rdi
movl $0xff, %esi
callq 0x6b330
movl -0x64(%rbp), %eax
addl $0x8, %eax
movl %eax, -0x64(%rbp)
movq -0x78(%rbp), %rax
addq $0x100, %rax            # imm = 0x100
movq %rax, -0x78(%rbp)
jmp 0x6542f
jmp 0x65555
movl -0x68(%rbp), %eax
addl $0x8, %eax
movl %eax, -0x68(%rbp)
jmp 0x6540e
jmp 0x65565
movl -0x84(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x84(%rbp)
jmp 0x653f2
movl -0x58(%rbp), %edi
movl -0x5c(%rbp), %esi
callq 0x6b700
movl 0x55d8f6(%rip), %eax    # 0x5c2e80
addl -0x58(%rbp), %eax
movl %eax, -0x58(%rbp)
jmp 0x653d1
jmp 0x65597
movl 0x55d8f3(%rip), %eax    # 0x5c2e90
addl -0x5c(%rbp), %eax
movl %eax, -0x5c(%rbp)
jmp 0x653be
movq -0x1a8(%rbp), %rdi
callq 0x61c0
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x2c0, %rsp            # imm = 0x2C0
popq %rbp
retq
nopw (%rax,%rax)