// File: /workspace/github_c_makefile_star2_O0/dapogon[P]cellcoal/src/cellcoal.c
// Function: MakeDoublets
void MakeDoublets (double *probs, double **ngsEij, double **ampEijmat, double **ampEijpat, long int *seed)
	{
	int		c1, c2;
	int 	j, k, l;
	int		debug_DL;
	int		MLmatAllele, MLpatAllele;
	double	maxLike;
	double	doubletRate;
	long double number1, number2;
	CellStr celldoublet;

	debug_DL = NO;
	if (debug_DL == YES)
		fprintf(stderr,"\n\n\n********Doublet read counts and likelihoods");

	/* choose whether a tumor cell will become a doublet */
	for (c1=0; c1<numCells;c1++)
		{
		doubletRate = RandomBetaMeanVar(meanDoubletRate, varDoubletRate, seed);
		if (RandomUniform(seed) < doubletRate)
			{
			cell[c1].hasDoublet = YES;
			
			/* select a cell genotype from the tumor sample */
			c2 = RandomUniformTo (numCells,seed);

			/* allocate temporal memory for this cell genotype */
			celldoublet.site  = (CellSiteStr*) calloc (numSites, sizeof(CellSiteStr));
			if (!celldoublet.site)
				{
				fprintf (stderr, "Could not allocate the celldoublet.site structure\n");
				exit (-1);
				}

			for (j=0; j<numSites; j++)
				{
				celldoublet.site[j].readCount = (int*) calloc (4, sizeof(int));
				if (!celldoublet.site[j].readCount)
					{
					fprintf (stderr, "Could not allocate the celldoublet.site[%d].readCount structure\n", j);
					exit (-1);
					}
			
				celldoublet.site[j].logGL = (double**) calloc (4, sizeof(double*));
				if (!celldoublet.site[j].logGL)
					{
					fprintf (stderr, "Could not allocate the celldoublet.site[%d].logGL structure\n", j);
					exit (-1);
					}
				for (k=0; k<4; k++)
					{
					celldoublet.site[j].logGL[k] = (double*) calloc (4, sizeof(double));
					if (!celldoublet.site[j].logGL[k] )
						{
						fprintf (stderr, "Could not allocate the celldoublet.site[%d].logGL[%d] structure\n", j,k);
						exit (-1);
						}
					}

				celldoublet.site[j].normLogGL = (double**) calloc (4, sizeof(double*));
				if (!celldoublet.site[j].normLogGL)
					{
					fprintf (stderr, "Could not allocate the celldoublet.site[%d].normLogGL structure\n", j);
					exit (-1);
					}
				for (k=0; k<4; k++)
					{
					celldoublet.site[j].normLogGL[k] = (double*) calloc (4, sizeof(double));
					if (!celldoublet.site[j].normLogGL[k] )
						{
						fprintf (stderr, "Could not allocate the celldoublet.site[%d].normLogGL[%d] structure\n", j,k);
						exit (-1);
						}
					}
				}
			
			/* get read counts and likelihoods for this cell genotype for all sites */
			for (j=0; j<numSites; j++) // produce doublet read counts for all sites
				{
				if (debug_DL == YES)
					fprintf (stderr,"\n\n-- New celldoublet reads and likelihoods");
				SiteReadCounts (&celldoublet.site[j], c2, j, probs, ngsEij, ampEijmat, ampEijpat, seed);
				GenotypeLikelihoods (&celldoublet.site[j], c2, j, probs, ngsEij, ampEijmat, ampEijpat, seed);

				if (debug_DL == YES)
					{
					fprintf (stderr,"\ncelltype %d site %d: %c%c", c2+1, j+1, WhichNuc(celldoublet.site[j].maternalAllele), WhichNuc(celldoublet.site[j].paternalAllele));
					fprintf (stderr,"|\treads: A:%d C:%d G:%d T:%d  | total:%d ",  celldoublet.site[j].readCount[A], celldoublet.site[j].readCount[C], celldoublet.site[j].readCount[G], celldoublet.site[j].readCount[T], celldoublet.site[j].numReads);
					fprintf (stderr,"\nmatAmpError = %f", celldoublet.site[j].maternalSiteAmplificationError);
					fprintf (stderr,"\npatAmpError = %f", celldoublet.site[j].paternalSiteAmplificationError);
					for (k=0; k<4; k++)
						for (l=0; l<4; l++)
							fprintf (stderr, "\nlog10 GL[%c][%c] = %lf", WhichNuc(k), WhichNuc(l), celldoublet.site[j].logGL[k][l]);
					fprintf (stderr, "\n");
					}
				
				/* add doublet information */
				cell[c1].site[j].numReadsDoublet = cell[c1].site[j].numReads + celldoublet.site[j].numReads;
				for (k=0; k<4; k++)
					cell[c1].site[j].readCountDoublet[k] = cell[c1].site[j].readCount[k] + celldoublet.site[j].readCount[k];

				cell[c1].site[j].maternalAlleleDoublet = celldoublet.site[j].maternalAllele;
				cell[c1].site[j].paternalAlleleDoublet = celldoublet.site[j].paternalAllele;

				//fprintf(stderr,"\nln cell\t\tcelltype\tdoublet");
				/* adding the genotype log likelihoods of two sets of reads (c1 + celldoublet) to get the total doublet likelihoods */
				for (k=0; k<4; k++)
					for (l=0; l<4; l++)
						{
						if (isinf(cell[c1].site[j].logGL[k][l]) || isinf(celldoublet.site[j].logGL[k][l]))
							cell[c1].site[j].logGLdoublet[k][l] = -INFINITY;
						else
							cell[c1].site[j].logGLdoublet[k][l] = cell[c1].site[j].logGL[k][l] + celldoublet.site[j].logGL[k][l];
						}
				
				if (debug_DL == YES)
					{
					fprintf (stderr,"\nCell %d site %d: %c%c", c1+1, j+1, WhichNuc(cell[c1].site[j].maternalAllele), WhichNuc(cell[c1].site[j].paternalAllele));
					fprintf (stderr,"|\treads: A:%d C:%d G:%d T:%d  | total:%d ",   cell[c1].site[j].readCount[A],  cell[c1].site[j].readCount[C],  cell[c1].site[j].readCount[G],  cell[c1].site[j].readCount[T],  cell[c1].site[j].numReads);
					fprintf (stderr,"\n|reads doublet: A:%d C:%d G:%d T:%d  | total:%d ",   cell[c1].site[j].readCountDoublet[A],  cell[c1].site[j].readCountDoublet[C],  cell[c1].site[j].readCountDoublet[G],  cell[c1].site[j].readCountDoublet[T],  cell[c1].site[j].numReadsDoublet);
					fprintf (stderr,"\nmatAmpError = %f",  cell[c1].site[j].maternalSiteAmplificationError);
					fprintf (stderr,"\npatAmpError = %f",  cell[c1].site[j].paternalSiteAmplificationError);
					for (k=0; k<4; k++)
						for (l=0; l<4; l++)
							fprintf (stderr, "\ndoublet log10 GL[%c][%c] = %lf", WhichNuc(k), WhichNuc(l),  cell[c1].site[j].logGLdoublet[k][l]);
					fprintf (stderr, "\n");
					}

				/* obtain unphased GLs by combining GLs from both phases -only heterozygotes */
				   for (k=0; k<4; k++)
					   for (l=k+1; l<4; l++)
						   if (cell[c1].site[j].logGLdoublet[k][l] != cell[c1].site[j].logGLdoublet[l][k])
							   {
							   number1 = 0.5 * pow(10.0,cell[c1].site[j].logGLdoublet[k][l]);
							   number2 = 0.5 * pow(10.0,cell[c1].site[j].logGLdoublet[l][k]);
							   cell[c1].site[j].logGLdoublet[k][l] = cell[c1].site[j].logGLdoublet[l][k] = log10(number1 + number2);
							   //fprintf (stderr, "\n1/2GL[%c][%c]=%Lf   1/2GL[%c][%c]=%Lf   logGL[%c][%c]=%f  logGL[%c][%c]=%f ", WhichNuc(a1), WhichNuc(a2), number1, WhichNuc(a2), WhichNuc(a1), number2, WhichNuc(a1), WhichNuc(a2), logGL[a1][a2], WhichNuc(a2), WhichNuc(a1), logGL[a2][a1] );
							   }

				/* find max log10 doublet likelihood  */
				maxLike = cell[c1].site[j].logGLdoublet[A][A];
				MLmatAllele = MLpatAllele = A;
				for (k=0; k<4; k++)
					for (l=k; l<4; l++)
						if (cell[c1].site[j].logGLdoublet[k][l] > maxLike)
							{
							maxLike = cell[c1].site[j].logGLdoublet[k][l];
							MLmatAllele = k;
							MLpatAllele = l;
							}
				
				/* normalize to likelihood ratios */
				for (k=0; k<4; k++)
					for (l=k; l<4; l++)
					{
					cell[c1].site[j].normLogGLdoublet[k][l] = cell[c1].site[j].logGLdoublet[k][l] - maxLike;
					cell[c1].site[j].normLogGLdoublet[l][k] = cell[c1].site[j].normLogGLdoublet[k][l];
					}

				//TODO: print GL=-999?
				/* substitute small numbers for printing */
				/*for (k=0; k<4; k++)
					for (l=k; l<4; l++)
						if (cell[c1].site[j].logGLdoublet[k][l] < 1e-6 )
							{
							cell[c1].site[j].logGLdoublet[l][k] = cell[c1].site[j].logGLdoublet[k][l] = smallNumber;
							cell[c1].site[j].normLogGLdoublet[l][k] = cell[c1].site[j].normLogGLdoublet[k][l] = smallNumber;
							}
				 */
				cell[c1].site[j].MLmatAlleleDoublet = MLmatAllele;
				cell[c1].site[j].MLpatAlleleDoublet = MLpatAllele;
			
				if (debug_DL == YES)
					{
					for (k=0; k<4; k++)
						for (l=0; l<4; l++)
							fprintf (stderr, "\nscaled doublet log10 GL[%c][%c] = %lf", WhichNuc(k), WhichNuc(l), cell[c1].site[j].normLogGLdoublet[k][l]);
					fprintf (stderr, "\n");
					}
				}
			
			//free celldoublet
			for (j=0; j<numSites; j++)
				{
				free(celldoublet.site[j].readCount);
				for (k=0; k<4; k++)
					{
					free(celldoublet.site[j].logGL[k]);
					free(celldoublet.site[j].normLogGL[k]);
					}
				free(celldoublet.site[j].logGL);
				free(celldoublet.site[j].normLogGL);
				}
			} // if we do doublet for c1
		} //c1
	
	/*
	if (debug_DL == YES)
		//exit(1);
	*/
	
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x130, %rsp            # imm = 0x130
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movl $0x0, -0x40(%rbp)
cmpl $0x1, -0x40(%rbp)
jne 0x20234
movq 0x2ddd5(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
leaq 0x21cf6(%rip), %rsi     # 0x41f23
movb $0x0, %al
callq 0x21b0
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
cmpl 0x2df90(%rip), %eax     # 0x4e1d4
jge 0x215c0
movsd 0x2e276(%rip), %xmm0    # 0x4e4c8
movsd 0x2e276(%rip), %xmm1    # 0x4e4d0
movq -0x28(%rbp), %rdi
callq 0x1d1e0
movsd %xmm0, -0x58(%rbp)
movq -0x28(%rbp), %rdi
callq 0xa500
movaps %xmm0, %xmm1
movsd -0x58(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x215b0
movq 0x2f58e(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movl $0x1, 0x8(%rax)
movl 0x2df32(%rip), %edi     # 0x4e1d4
movq -0x28(%rbp), %rsi
callq 0x1ba30
movl %eax, -0x30(%rbp)
movslq 0x2df27(%rip), %rdi     # 0x4e1dc
movl $0x80, %esi
callq 0x2190
movq %rax, -0x90(%rbp)
cmpq $0x0, -0x90(%rbp)
jne 0x202f2
movq 0x2dd21(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
leaq 0x21c71(%rip), %rsi     # 0x41f52
movb $0x0, %al
callq 0x21b0
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x2290
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
cmpl 0x2deda(%rip), %eax     # 0x4e1dc
jge 0x2057c
movl $0x4, %esi
movq %rsi, %rdi
callq 0x2190
movq %rax, %rcx
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rdx
shlq $0x7, %rdx
addq %rdx, %rax
movq %rcx, 0x8(%rax)
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
cmpq $0x0, 0x8(%rax)
jne 0x2036c
movq 0x2dcaa(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
movl -0x34(%rbp), %edx
leaq 0x21c2a(%rip), %rsi     # 0x41f85
movb $0x0, %al
callq 0x21b0
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x2290
movl $0x4, %edi
movl $0x8, %esi
callq 0x2190
movq %rax, %rcx
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rdx
shlq $0x7, %rdx
addq %rdx, %rax
movq %rcx, 0x38(%rax)
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
cmpq $0x0, 0x38(%rax)
jne 0x203d2
movq 0x2dc44(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
movl -0x34(%rbp), %edx
leaq 0x21c05(%rip), %rsi     # 0x41fc6
movb $0x0, %al
callq 0x21b0
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x2290
movl $0x0, -0x38(%rbp)
cmpl $0x4, -0x38(%rbp)
jge 0x2046c
movl $0x4, %edi
movl $0x8, %esi
callq 0x2190
movq %rax, %rdx
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x38(%rax), %rax
movslq -0x38(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x38(%rax), %rax
movslq -0x38(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
jne 0x2045c
movq 0x2dbbd(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
movl -0x34(%rbp), %edx
movl -0x38(%rbp), %ecx
leaq 0x21bb8(%rip), %rsi     # 0x42003
movb $0x0, %al
callq 0x21b0
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x2290
jmp 0x2045e
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x203d9
movl $0x4, %edi
movl $0x8, %esi
callq 0x2190
movq %rax, %rcx
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rdx
shlq $0x7, %rdx
addq %rdx, %rax
movq %rcx, 0x40(%rax)
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
cmpq $0x0, 0x40(%rax)
jne 0x204d2
movq 0x2db44(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
movl -0x34(%rbp), %edx
leaq 0x21b83(%rip), %rsi     # 0x42044
movb $0x0, %al
callq 0x21b0
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x2290
movl $0x0, -0x38(%rbp)
cmpl $0x4, -0x38(%rbp)
jge 0x2056c
movl $0x4, %edi
movl $0x8, %esi
callq 0x2190
movq %rax, %rdx
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x40(%rax), %rax
movslq -0x38(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x40(%rax), %rax
movslq -0x38(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
jne 0x2055c
movq 0x2dabd(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
movl -0x34(%rbp), %edx
movl -0x38(%rbp), %ecx
leaq 0x21b3a(%rip), %rsi     # 0x42085
movb $0x0, %al
callq 0x21b0
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x2290
jmp 0x2055e
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x204d9
jmp 0x2056e
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x202f9
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
cmpl 0x2dc50(%rip), %eax     # 0x4e1dc
jge 0x214db
cmpl $0x1, -0x40(%rbp)
jne 0x205b0
movq 0x2da59(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
leaq 0x21b21(%rip), %rsi     # 0x420ca
movb $0x0, %al
callq 0x21b0
movq -0x90(%rbp), %rdi
movslq -0x34(%rbp), %rax
shlq $0x7, %rax
addq %rax, %rdi
movl -0x30(%rbp), %esi
movl -0x34(%rbp), %edx
movq -0x8(%rbp), %rcx
movq -0x10(%rbp), %r8
movq -0x18(%rbp), %r9
movq -0x20(%rbp), %r10
movq -0x28(%rbp), %rax
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x1d2a0
movq -0x90(%rbp), %rdi
movslq -0x34(%rbp), %rax
shlq $0x7, %rax
addq %rax, %rdi
movl -0x30(%rbp), %esi
movl -0x34(%rbp), %edx
movq -0x8(%rbp), %rcx
movq -0x10(%rbp), %r8
movq -0x18(%rbp), %r9
movq -0x20(%rbp), %r10
movq -0x28(%rbp), %rax
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x1df00
cmpl $0x1, -0x40(%rbp)
jne 0x20872
movq 0x2d9c3(%rip), %rax     # 0x4dff8
movq (%rax), %rax
movq %rax, -0xc0(%rbp)
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb4(%rbp)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb0(%rbp)
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movl 0x18(%rax), %edi
callq 0x18d80
movsbl %al, %eax
movl %eax, -0xac(%rbp)
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movl 0x1c(%rax), %edi
callq 0x18d80
movq -0xc0(%rbp), %rdi
movl -0xb4(%rbp), %edx
movl -0xb0(%rbp), %ecx
movl -0xac(%rbp), %r8d
movsbl %al, %r9d
leaq 0x21a3c(%rip), %rsi     # 0x420f5
movb $0x0, %al
callq 0x21b0
movq 0x2d931(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movl (%rax), %edx
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movl 0x4(%rax), %ecx
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rsi
shlq $0x7, %rsi
addq %rsi, %rax
movq 0x8(%rax), %rax
movl 0x8(%rax), %r8d
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rsi
shlq $0x7, %rsi
addq %rsi, %rax
movq 0x8(%rax), %rax
movl 0xc(%rax), %r9d
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rsi
shlq $0x7, %rsi
addq %rsi, %rax
movl (%rax), %eax
leaq 0x2163f(%rip), %rsi     # 0x41d89
movl %eax, (%rsp)
movb $0x0, %al
callq 0x21b0
movq 0x2d89d(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movsd 0x28(%rax), %xmm0
leaq 0x2164e(%rip), %rsi     # 0x41dca
movb $0x1, %al
callq 0x21b0
movq 0x2d86e(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movsd 0x30(%rax), %xmm0
leaq 0x21631(%rip), %rsi     # 0x41ddc
movb $0x1, %al
callq 0x21b0
movl $0x0, -0x38(%rbp)
cmpl $0x4, -0x38(%rbp)
jge 0x2085a
movl $0x0, -0x3c(%rbp)
cmpl $0x4, -0x3c(%rbp)
jge 0x2084a
movq 0x2d821(%rip), %rax     # 0x4dff8
movq (%rax), %rax
movq %rax, -0xd0(%rbp)
movl -0x38(%rbp), %edi
callq 0x18d80
movsbl %al, %eax
movl %eax, -0xc4(%rbp)
movl -0x3c(%rbp), %edi
callq 0x18d80
movq -0xd0(%rbp), %rdi
movl -0xc4(%rbp), %edx
movsbl %al, %ecx
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rsi
shlq $0x7, %rsi
addq %rsi, %rax
movq 0x38(%rax), %rax
movslq -0x38(%rbp), %rsi
movq (%rax,%rsi,8), %rax
movslq -0x3c(%rbp), %rsi
movsd (%rax,%rsi,8), %xmm0
leaq 0x218d8(%rip), %rsi     # 0x42110
movb $0x1, %al
callq 0x21b0
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x207ca
jmp 0x2084c
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x207b9
movq 0x2d797(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
leaq 0x267ca(%rip), %rsi     # 0x47035
movb $0x0, %al
callq 0x21b0
movq 0x2ef9f(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movl (%rax), %ecx
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rdx
shlq $0x7, %rdx
addq %rdx, %rax
addl (%rax), %ecx
movq 0x2ef69(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rdx
shlq $0x7, %rdx
addq %rdx, %rax
movl %ecx, 0x50(%rax)
movl $0x0, -0x38(%rbp)
cmpl $0x4, -0x38(%rbp)
jge 0x2095d
movq 0x2ef35(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movslq -0x38(%rbp), %rcx
movl (%rax,%rcx,4), %edx
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movslq -0x38(%rbp), %rcx
addl (%rax,%rcx,4), %edx
movq 0x2eeed(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x58(%rax), %rax
movslq -0x38(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x208d2
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movl 0x18(%rax), %ecx
movq 0x2ee9f(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rdx
shlq $0x7, %rdx
addq %rdx, %rax
movl %ecx, 0x60(%rax)
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movl 0x1c(%rax), %ecx
movq 0x2ee67(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rdx
shlq $0x7, %rdx
addq %rdx, %rax
movl %ecx, 0x64(%rax)
movl $0x0, -0x38(%rbp)
cmpl $0x4, -0x38(%rbp)
jge 0x20bc6
movl $0x0, -0x3c(%rbp)
cmpl $0x4, -0x3c(%rbp)
jge 0x20bb6
movq 0x2ee22(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x38(%rax), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x3c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
movaps %xmm1, %xmm0
movaps 0x1e972(%rip), %xmm2    # 0x3f3a0
pand %xmm2, %xmm0
movq %xmm1, %rdx
movl $0x1, %ecx
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
cmpq $0x0, %rdx
cmovll %eax, %ecx
movsd 0x1e618(%rip), %xmm1    # 0x3f068
xorl %eax, %eax
ucomisd %xmm1, %xmm0
setnp %sil
sete %dl
testb %sil, %dl
cmovnel %ecx, %eax
cmpl $0x0, %eax
jne 0x20ad3
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x38(%rax), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x3c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
movaps %xmm1, %xmm0
movaps 0x1e907(%rip), %xmm2    # 0x3f3a0
pand %xmm2, %xmm0
movq %xmm1, %rdx
movl $0x1, %ecx
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
cmpq $0x0, %rdx
cmovll %eax, %ecx
movsd 0x1e5ad(%rip), %xmm1    # 0x3f068
xorl %eax, %eax
ucomisd %xmm1, %xmm0
setnp %sil
sete %dl
testb %sil, %dl
cmovnel %ecx, %eax
cmpl $0x0, %eax
je 0x20b15
movq 0x2ed3e(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x68(%rax), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x3c(%rbp), %rcx
movsd 0x1e5bd(%rip), %xmm0    # 0x3f0c8
movsd %xmm0, (%rax,%rcx,8)
jmp 0x20ba6
movq 0x2ecfc(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x38(%rax), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x3c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x38(%rax), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x3c(%rbp), %rcx
addsd (%rax,%rcx,8), %xmm0
movq 0x2eca0(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x68(%rax), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x3c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
jmp 0x20ba8
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x209e5
jmp 0x20bb8
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x209d4
cmpl $0x1, -0x40(%rbp)
jne 0x20f82
movq 0x2d421(%rip), %rax     # 0x4dff8
movq (%rax), %rax
movq %rax, -0xe8(%rbp)
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xdc(%rbp)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xd8(%rbp)
movq 0x2ec18(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movl 0x18(%rax), %edi
callq 0x18d80
movsbl %al, %eax
movl %eax, -0xd4(%rbp)
movq 0x2ebe7(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movl 0x1c(%rax), %edi
callq 0x18d80
movq -0xe8(%rbp), %rdi
movl -0xdc(%rbp), %edx
movl -0xd8(%rbp), %ecx
movl -0xd4(%rbp), %r8d
movsbl %al, %r9d
leaq 0x214b1(%rip), %rsi     # 0x42128
movb $0x0, %al
callq 0x21b0
movq 0x2d373(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
movq 0x2eb89(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movl (%rax), %edx
movq 0x2eb63(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movl 0x4(%rax), %ecx
movq 0x2eb3c(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rsi
shlq $0x4, %rsi
addq %rsi, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rsi
shlq $0x7, %rsi
addq %rsi, %rax
movq 0x8(%rax), %rax
movl 0x8(%rax), %r8d
movq 0x2eb14(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rsi
shlq $0x4, %rsi
addq %rsi, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rsi
shlq $0x7, %rsi
addq %rsi, %rax
movq 0x8(%rax), %rax
movl 0xc(%rax), %r9d
movq 0x2eaec(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rsi
shlq $0x4, %rsi
addq %rsi, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rsi
shlq $0x7, %rsi
addq %rsi, %rax
movl (%rax), %eax
leaq 0x2103b(%rip), %rsi     # 0x41d89
movl %eax, (%rsp)
movb $0x0, %al
callq 0x21b0
movq 0x2d299(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
movq 0x2eaaf(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x58(%rax), %rax
movl (%rax), %edx
movq 0x2ea89(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x58(%rax), %rax
movl 0x4(%rax), %ecx
movq 0x2ea62(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rsi
shlq $0x4, %rsi
addq %rsi, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rsi
shlq $0x7, %rsi
addq %rsi, %rax
movq 0x58(%rax), %rax
movl 0x8(%rax), %r8d
movq 0x2ea3a(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rsi
shlq $0x4, %rsi
addq %rsi, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rsi
shlq $0x7, %rsi
addq %rsi, %rax
movq 0x58(%rax), %rax
movl 0xc(%rax), %r9d
movq 0x2ea12(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rsi
shlq $0x4, %rsi
addq %rsi, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rsi
shlq $0x7, %rsi
addq %rsi, %rax
movl 0x50(%rax), %eax
leaq 0x21316(%rip), %rsi     # 0x4213f
movl %eax, (%rsp)
movb $0x0, %al
callq 0x21b0
movq 0x2d1be(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
movq 0x2e9d4(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movsd 0x28(%rax), %xmm0
leaq 0x20f61(%rip), %rsi     # 0x41dca
movb $0x1, %al
callq 0x21b0
movq 0x2d181(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
movq 0x2e997(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movsd 0x30(%rax), %xmm0
leaq 0x20f36(%rip), %rsi     # 0x41ddc
movb $0x1, %al
callq 0x21b0
movl $0x0, -0x38(%rbp)
cmpl $0x4, -0x38(%rbp)
jge 0x20f6a
movl $0x0, -0x3c(%rbp)
cmpl $0x4, -0x3c(%rbp)
jge 0x20f5a
movq 0x2d122(%rip), %rax     # 0x4dff8
movq (%rax), %rax
movq %rax, -0xf8(%rbp)
movl -0x38(%rbp), %edi
callq 0x18d80
movsbl %al, %eax
movl %eax, -0xec(%rbp)
movl -0x3c(%rbp), %edi
callq 0x18d80
movq -0xf8(%rbp), %rdi
movl -0xec(%rbp), %edx
movsbl %al, %ecx
movq 0x2e908(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rsi
shlq $0x4, %rsi
addq %rsi, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rsi
shlq $0x7, %rsi
addq %rsi, %rax
movq 0x68(%rax), %rax
movslq -0x38(%rbp), %rsi
movq (%rax,%rsi,8), %rax
movslq -0x3c(%rbp), %rsi
movsd (%rax,%rsi,8), %xmm0
leaq 0x2122c(%rip), %rsi     # 0x42171
movb $0x1, %al
callq 0x21b0
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x20ec5
jmp 0x20f5c
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x20eb4
movq 0x2d087(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
leaq 0x260ba(%rip), %rsi     # 0x47035
movb $0x0, %al
callq 0x21b0
movl $0x0, -0x38(%rbp)
cmpl $0x4, -0x38(%rbp)
jge 0x21187
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
cmpl $0x4, -0x3c(%rbp)
jge 0x21177
movq 0x2e86b(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x68(%rax), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x3c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x2e836(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x68(%rax), %rax
movslq -0x3c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x38(%rbp), %rcx
ucomisd (%rax,%rcx,8), %xmm0
jne 0x21019
jp 0x21019
jmp 0x21167
movq 0x2e7f8(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
movq (%rax,%rcx), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
movq 0x68(%rax,%rcx), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x3c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
movsd 0x1e01e(%rip), %xmm0    # 0x3f070
movsd %xmm0, -0x108(%rbp)
callq 0x20c0
movaps %xmm0, %xmm1
movsd -0x108(%rbp), %xmm0
movsd 0x1df9e(%rip), %xmm2    # 0x3f010
movsd %xmm2, -0x100(%rbp)
mulsd %xmm2, %xmm1
movsd %xmm1, -0x98(%rbp)
fldl -0x98(%rbp)
fstpt -0x70(%rbp)
movq 0x2e782(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
movq (%rax,%rcx), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
movq 0x68(%rax,%rcx), %rax
movslq -0x3c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x38(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
callq 0x20c0
movsd -0x100(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0xa0(%rbp)
fldl -0xa0(%rbp)
fstpt -0x80(%rbp)
fldt -0x70(%rbp)
fldt -0x80(%rbp)
faddp %st, %st(1)
fstpl -0xa8(%rbp)
movsd -0xa8(%rbp), %xmm0
callq 0x21a0
movq 0x2e714(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x68(%rax), %rax
movslq -0x3c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x38(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x2e6df(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x68(%rax), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x3c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
jmp 0x21169
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x20f9c
jmp 0x21179
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x20f89
movq 0x2e68a(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x68(%rax), %rax
movq (%rax), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x50(%rbp)
movl $0x0, -0x48(%rbp)
movl $0x0, -0x44(%rbp)
movl $0x0, -0x38(%rbp)
cmpl $0x4, -0x38(%rbp)
jge 0x21288
movl -0x38(%rbp), %eax
movl %eax, -0x3c(%rbp)
cmpl $0x4, -0x3c(%rbp)
jge 0x21278
movq 0x2e62b(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x68(%rax), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x3c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
ucomisd -0x50(%rbp), %xmm0
jbe 0x21268
movq 0x2e5ef(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x68(%rax), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x3c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x50(%rbp)
movl -0x38(%rbp), %eax
movl %eax, -0x44(%rbp)
movl -0x3c(%rbp), %eax
movl %eax, -0x48(%rbp)
jmp 0x2126a
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x211dc
jmp 0x2127a
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x211cc
movl $0x0, -0x38(%rbp)
cmpl $0x4, -0x38(%rbp)
jge 0x213a0
movl -0x38(%rbp), %eax
movl %eax, -0x3c(%rbp)
cmpl $0x4, -0x3c(%rbp)
jge 0x21390
movq 0x2e568(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x68(%rax), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x3c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
subsd -0x50(%rbp), %xmm0
movq 0x2e52e(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x70(%rax), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x3c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x2e4f9(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x70(%rax), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x3c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x2e4c4(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x70(%rax), %rax
movslq -0x3c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x38(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x2129f
jmp 0x21392
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x2128f
movl -0x44(%rbp), %ecx
movq 0x2e46e(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rdx
shlq $0x7, %rdx
addq %rdx, %rax
movl %ecx, 0x78(%rax)
movl -0x48(%rbp), %ecx
movq 0x2e448(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rdx
shlq $0x7, %rdx
addq %rdx, %rax
movl %ecx, 0x7c(%rax)
cmpl $0x1, -0x40(%rbp)
jne 0x214cb
movl $0x0, -0x38(%rbp)
cmpl $0x4, -0x38(%rbp)
jge 0x214b3
movl $0x0, -0x3c(%rbp)
cmpl $0x4, -0x3c(%rbp)
jge 0x214a3
movq 0x2cbd9(%rip), %rax     # 0x4dff8
movq (%rax), %rax
movq %rax, -0x118(%rbp)
movl -0x38(%rbp), %edi
callq 0x18d80
movsbl %al, %eax
movl %eax, -0x10c(%rbp)
movl -0x3c(%rbp), %edi
callq 0x18d80
movq -0x118(%rbp), %rdi
movl -0x10c(%rbp), %edx
movsbl %al, %ecx
movq 0x2e3bf(%rip), %rax     # 0x4f818
movslq -0x2c(%rbp), %rsi
shlq $0x4, %rsi
addq %rsi, %rax
movq (%rax), %rax
movslq -0x34(%rbp), %rsi
shlq $0x7, %rsi
addq %rsi, %rax
movq 0x70(%rax), %rax
movslq -0x38(%rbp), %rsi
movq (%rax,%rsi,8), %rax
movslq -0x3c(%rbp), %rsi
movsd (%rax,%rsi,8), %xmm0
leaq 0x20d03(%rip), %rsi     # 0x42191
movb $0x1, %al
callq 0x21b0
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x2140e
jmp 0x214a5
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x213fd
movq 0x2cb3e(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
leaq 0x25b71(%rip), %rsi     # 0x47035
movb $0x0, %al
callq 0x21b0
jmp 0x214cd
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x20583
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
cmpl 0x2ccf1(%rip), %eax     # 0x4e1dc
jge 0x215ae
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rdi
callq 0x2030
movl $0x0, -0x38(%rbp)
cmpl $0x4, -0x38(%rbp)
jge 0x2156a
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x38(%rax), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x2030
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x40(%rax), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x2030
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x21513
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x38(%rax), %rdi
callq 0x2030
movq -0x90(%rbp), %rax
movslq -0x34(%rbp), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x40(%rax), %rdi
callq 0x2030
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x214e2
jmp 0x215b0
jmp 0x215b2
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x2023b
addq $0x130, %rsp            # imm = 0x130
popq %rbp
retq
nopl (%rax)