// File: /workspace/github_c_makefile_star2_O0/genevalab[P]msmove/streec.c
// Function: segtre_mig
struct segl *segtre_mig(struct c_params *cp, int *pnsegs, int *migflag) 
{
	int i, j, k, dec, pop, pop2, c1, c2, ind, rchrom;
	int migrant, source_pop, *config, flagint;
	int eflag, cpop, ic, nsam, npop, nsites, *inconfig;
	double sum, x, ttemp, rft, clefta, tmin, p;
	double prec, cin, prect, mig, ran, coal_prob, rdum, arg;
	double r, f, rf, track_len, **migm;
	double *size, *alphag, *tlast;
	char ev;
	struct devent *nextevent;
	
	nsam = cp->nsam;
	npop = cp->npop;
	nsites = cp->nsites;
	inconfig = cp->config;
	r = cp->r;
	f = cp->f;
	track_len = cp->track_len;
	migm = (double**)malloc((size_t)npop*sizeof(double*));
	for (i=0; i < npop; i++)
	{
		migm[i] = (double*)malloc((size_t)npop*sizeof(double));
		for (j=0; j < npop; j++)
			migm[i][j] = (cp->mig_mat)[i][j];
	}
	nextevent = cp->deventlist;
	
	if (chrom == NULL)
	{
		maxchr = nsam+20;
		chrom = (struct chromo*)malloc((size_t)maxchr*sizeof(struct chromo));
		if (chrom == NULL)
			perror("malloc error. segtre");
	}
	if (nnodes == NULL)
	{
		nnodes = (int*)malloc((size_t)seglimit*sizeof(int));
		if (nnodes == NULL)
			perror("malloc error. segtre_mig");
	}
	if (seglst == NULL)
	{
		seglst = (struct segl*)malloc((size_t)seglimit*sizeof(struct segl));
		if (seglst == NULL)
			perror("malloc error. segtre_mig.c 2");
	}
	config = (int*)malloc((size_t)(npop+1)*sizeof(int));
	if (config == NULL)
		perror("malloc error. segtre.");
	size = (double*)malloc((size_t)npop*sizeof(double));
	if (size == NULL)
		perror("malloc error. segtre.");
	alphag = (double*)malloc((size_t)npop*sizeof(double));
	if (alphag == NULL)
		perror("malloc error. segtre.");
	tlast = (double*)malloc((size_t)npop*sizeof(double));
	if (tlast == NULL)
		perror("malloc error. segtre.");
	for (pop=0; pop < npop; pop++)
	{
		config[pop] = inconfig[pop];
		size[pop] = (cp->size)[pop];
		alphag[pop] = (cp->alphag)[pop];
		tlast[pop] = 0;
	}
	for (pop=ind=0; pop < npop; pop++)
		for (j=0; j < inconfig[pop]; j++, ind++)
		{
			chrom[ind].nseg = 1;
			if (!(chrom[ind].pseg = (struct seg*)malloc(sizeof(struct seg))))
				perror("calloc error. se1");
			(chrom[ind].pseg)->beg = 0;
			(chrom[ind].pseg)->end = nsites-1;
			(chrom[ind].pseg)->desc = ind;
			chrom[ind].pop = pop;
		}
	seglst[0].beg = 0;
	if (!(seglst[0].ptree = (struct node*)calloc((size_t)(2*nsam), sizeof(struct node))))
		perror("calloc error. se2");
	nnodes[0] = nsam-1;
	nchrom = nsam;
	nlinks = (long int)(nsam*(nsites-1));
	nsegs = 1;
	t = 0;
	r /= nsites-1;
	if (f > 0)
		pc = (track_len-1.0)/track_len;
	else
		pc = 1.0;
	lnpc = log(pc);
	cleft = nsam * (1.0-pow(pc, (double)(nsites-1)));
	if (r > 0)
		rf = r*f;
	else
		rf = f/(nsites-1);
	rft = rf*track_len;
	flagint = 0;

	while (nchrom > 1)
	{
		prec = nlinks*r;
		cin = nlinks*rf;
		clefta = cleft*rft;
		prect = prec+cin+clefta;
		mig = 0;
		for (i=0; i < npop; i++)
			mig += config[i]*migm[i][i];
		if ((npop > 1) && (mig == 0) && (nextevent == 0))
		{
			i = 0;
			for (j=0; j < npop; j++) 
				if (config[j] > 0)
					i++;
			if (i > 1)
			{
				fprintf(stderr, " Infinite coalescent time. No migration.\n");
				exit(EXIT_FAILURE);
		   }
		}
		eflag = 0;
		if (prect > 0)
		{
			while ((rdum = genrand_real3()) == 0);
			ttemp = -1.0*log(rdum)/prect;
			if ((eflag == 0) || (ttemp < tmin))
			{
				tmin = ttemp;
				ev = 'r';
				eflag = 1;
			}
		}
		if (mig > 0)
		{
			while ((rdum = genrand_real3()) == 0);
			ttemp = -1.0*log(rdum)/mig;
			if ((eflag == 0) || (ttemp < tmin))
			{
				tmin = ttemp;
				ev = 'm';
				eflag = 1;
			}
		}
		for (pop=0; pop < npop; pop++)
		{
			coal_prob = (double)config[pop]*(config[pop]-1);
			if (coal_prob > 0)
			{
				while ((rdum = genrand_real3()) == 0);
				if (alphag[pop] == 0)
				{
					ttemp = -1.0*log(rdum)*size[pop]/coal_prob;
					if ((eflag == 0) || (ttemp < tmin))
					{
						tmin = ttemp;
						ev = 'c';
						eflag = 1;
						cpop = pop;
					}
				}
				else
				{
					arg = 1.0-alphag[pop]*size[pop]*exp(-1.0*alphag[pop]*(t-tlast[pop]))*log(rdum)/coal_prob;
					if (arg > 0)
					{
						ttemp = log(arg)/alphag[pop];
						if ((eflag == 0) || (ttemp < tmin))
						{
							tmin = ttemp;
							ev = 'c';
							eflag = 1;
							cpop = pop;
						}
					}
				}
			}
		}
		if ((eflag == 0) && (nextevent == 0))
		{
			fprintf(stderr, " Infinite time to next event. Negative growth rate in last time interval or non-communicating subpops.\n");
			exit(EXIT_FAILURE);
		}
		if (((eflag == 0) && (nextevent != 0)) || ((nextevent != 0) && ((t+tmin) >= nextevent->time)))
		{
			t = nextevent->time;
			switch (nextevent->detype)
			{
				case 'N' :
					for (pop=0; pop < npop; pop++)
					{
						size[pop]= nextevent->paramv;
						alphag[pop] = 0;
					}
					nextevent = nextevent->nextde;
					break;
				case 'n' :
					size[nextevent->popi] = nextevent->paramv;
					alphag[nextevent->popi] = 0;
					nextevent = nextevent->nextde;
					break;
				case 'G' :
					for (pop=0; pop < npop; pop++)
					{
						size[pop] = size[pop]*exp(-1.0*alphag[pop]*(t-tlast[pop]));
						alphag[pop]= nextevent->paramv;
						tlast[pop] = t;
					}
					nextevent = nextevent->nextde;
					break;
				case 'g' :
					pop = nextevent->popi;
					size[pop] = size[pop]*exp(-1.0*alphag[pop]*(t-tlast[pop]));
					alphag[pop]= nextevent->paramv;
					tlast[pop] = t;
					nextevent = nextevent->nextde;
					break;
				case 'M' :
					for (pop=0; pop < npop; pop++)
						for (pop2=0; pop2 < npop; pop2++)
							migm[pop][pop2] = (nextevent->paramv)/(npop-1.0);
					for (pop = 0; pop < npop; pop++)
						migm[pop][pop] = nextevent->paramv;
					nextevent = nextevent->nextde;
					break;
				case 'a' :
					for (pop=0; pop < npop; pop++)
						for (pop2=0; pop2 < npop; pop2++)
							migm[pop][pop2] = (nextevent->mat)[pop][pop2];
					nextevent = nextevent->nextde;
					break;
				case 'm' :
					i = nextevent->popi;
					j = nextevent->popj;
					migm[i][i] += nextevent->paramv - migm[i][j];
					migm[i][j]= nextevent->paramv;
					nextevent = nextevent->nextde;
					break;
				case 'j' :
					i = nextevent->popi;
					j = nextevent->popj;
					config[j] += config[i];
					config[i] = 0;
					for (ic=0; ic < nchrom; ic++)
						if (chrom[ic].pop == i)
							chrom[ic].pop = j;
					for (k=0; k < npop; k++)
					{
						if (k != i)
						{
							migm[k][k] -= migm[k][i];
							migm[k][i] = 0;
						}
					}
					nextevent = nextevent->nextde;
					break;
				case 'v' :
					i = nextevent->popi;
					j = nextevent->popj;
					/* start new code here-- old code below */
					config[i] = 0;
					for (ic=0; ic < nchrom; ic++)
					{
						if (chrom[ic].pop == i)
						{
							if (genrand_real3() > nextevent->pmove)
								config[i]++;
							else
							{
								chrom[ic].pop = j;
								config[j]++;
								*migflag = 1;
							}
						}
					}
					nextevent = nextevent->nextde;
					break;
				case 's' :
					i = nextevent->popi;
					p = nextevent->paramv;
					npop++;
					config = (int*)realloc(config, (size_t)npop*sizeof(int));
					size = (double*)realloc(size, (size_t)npop*sizeof(double));
					alphag = (double*)realloc(alphag, (size_t)npop*sizeof(double));
					tlast = (double*)realloc(tlast, (size_t)npop*sizeof(double));
					tlast[npop-1] = t;
					size[npop-1] = 1.0;
					alphag[npop-1] = 0;
					migm = (double**)realloc(migm, (size_t)npop*sizeof(double*));
					for (j=0; j < npop-1; j++)
						migm[j] = (double*)realloc(migm[j], (size_t)npop*sizeof(double));
					migm[npop-1] = (double*)malloc((size_t)npop * sizeof(double));
					for (j=0; j < npop; j++)
						migm[npop-1][j] = migm[j][npop-1] = 0;
					config[npop-1] = 0;
					config[i] = 0;
					for (ic=0; ic < nchrom; ic++)
					{
						if (chrom[ic].pop == i)
						{
							if (genrand_real3() < p)
								config[i]++;
							else
							{
								chrom[ic].pop = npop-1;
								config[npop-1]++;
							}
						}
					}
					nextevent = nextevent->nextde;
					break;
			}
		}
		else
		{
			t += tmin;
			if (ev == 'r')
			{
				if ((ran = genrand_real3()) < prec/prect)
				{
					rchrom = re(nsam);
					config[chrom[rchrom].pop] += 1;
				}
				else if (ran < (prec+clefta)/prect)
				{
					rchrom = cleftr(nsam);
					config[chrom[rchrom].pop] += 1;
				}
				else
				{
					rchrom = cinr(nsam, nsites);
					if (rchrom >= 0)
						config[chrom[rchrom].pop] += 1;
				}
			}
			else if (ev == 'm')
			{
				x = mig*genrand_real3();
				sum = 0;
				for (i=0; i < nchrom; i++)
				{
					sum += migm[chrom[i].pop][chrom[i].pop];
					if (x < sum)
						break;
				}
				migrant = i;
				x = genrand_real3()*migm[chrom[i].pop][chrom[i].pop];
				sum = 0;
				for (i=0; i < npop; i++)
				{
					if (i != chrom[migrant].pop)
					{
						sum += migm[chrom[migrant].pop][i];
						if (x < sum)
							break;
					}
				}
				source_pop = i;
				config[chrom[migrant].pop] -= 1;
				config[source_pop] += 1;
				chrom[migrant].pop = source_pop;
			}
			else
			{
				pick2_chrom(cpop, config, &c1, &c2);
				dec = ca(nsam, nsites, c1, c2);
				config[cpop] -= dec;
			}
		}
	}  
	*pnsegs = nsegs;
	free(config); 
	free(size);
	free(alphag);
	free(tlast);
	for (i=0; i < npop; i++)
		free(migm[i]);
	free(migm);
	return seglst;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x180, %rsp            # imm = 0x180
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, -0x64(%rbp)
movq -0x8(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x68(%rbp)
movq -0x8(%rbp), %rax
movl 0x20(%rax), %eax
movl %eax, -0x6c(%rbp)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x78(%rbp)
movq -0x8(%rbp), %rax
movsd 0x18(%rax), %xmm0
movsd %xmm0, -0xf8(%rbp)
movq -0x8(%rbp), %rax
movsd 0x28(%rax), %xmm0
movsd %xmm0, -0x100(%rbp)
movq -0x8(%rbp), %rax
movsd 0x30(%rax), %xmm0
movsd %xmm0, -0x110(%rbp)
movslq -0x68(%rbp), %rdi
shlq $0x3, %rdi
callq 0x10f0
movq %rax, -0x118(%rbp)
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
cmpl -0x68(%rbp), %eax
jge 0x50cd
movslq -0x68(%rbp), %rdi
shlq $0x3, %rdi
callq 0x10f0
movq %rax, %rdx
movq -0x118(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movl $0x0, -0x20(%rbp)
movl -0x20(%rbp), %eax
cmpl -0x68(%rbp), %eax
jge 0x50c0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x20(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x118(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x20(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x507c
jmp 0x50c2
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x504e
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
movq %rax, -0x140(%rbp)
cmpq $0x0, 0x744c(%rip)      # 0xc530
jne 0x5122
movl -0x64(%rbp), %eax
addl $0x14, %eax
movl %eax, 0x7446(%rip)      # 0xc538
movl 0x7440(%rip), %eax      # 0xc538
movl %eax, %edi
shlq $0x4, %rdi
callq 0x10f0
movq %rax, 0x7426(%rip)      # 0xc530
cmpq $0x0, 0x741e(%rip)      # 0xc530
jne 0x5120
leaq 0x3d75(%rip), %rdi      # 0x8e90
callq 0x1070
jmp 0x5122
cmpq $0x0, 0x7416(%rip)      # 0xc540
jne 0x515c
movl 0x5fce(%rip), %eax      # 0xb100
movl %eax, %edi
shlq $0x2, %rdi
callq 0x10f0
movq %rax, 0x73fc(%rip)      # 0xc540
cmpq $0x0, 0x73f4(%rip)      # 0xc540
jne 0x515a
leaq 0x3d50(%rip), %rdi      # 0x8ea5
callq 0x1070
jmp 0x515c
cmpq $0x0, 0x73e4(%rip)      # 0xc548
jne 0x5194
movl 0x5f94(%rip), %eax      # 0xb100
imulq $0x18, %rax, %rdi
callq 0x10f0
movq %rax, 0x73cc(%rip)      # 0xc548
cmpq $0x0, 0x73c4(%rip)      # 0xc548
jne 0x5192
leaq 0x3d31(%rip), %rdi      # 0x8ebe
callq 0x1070
jmp 0x5194
movl -0x68(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdi
shlq $0x2, %rdi
callq 0x10f0
movq %rax, -0x50(%rbp)
cmpq $0x0, -0x50(%rbp)
jne 0x51bd
leaq 0x3d23(%rip), %rdi      # 0x8edb
callq 0x1070
movslq -0x68(%rbp), %rdi
shlq $0x3, %rdi
callq 0x10f0
movq %rax, -0x120(%rbp)
cmpq $0x0, -0x120(%rbp)
jne 0x51e7
leaq 0x3cf9(%rip), %rdi      # 0x8edb
callq 0x1070
movslq -0x68(%rbp), %rdi
shlq $0x3, %rdi
callq 0x10f0
movq %rax, -0x128(%rbp)
cmpq $0x0, -0x128(%rbp)
jne 0x5211
leaq 0x3ccf(%rip), %rdi      # 0x8edb
callq 0x1070
movslq -0x68(%rbp), %rdi
shlq $0x3, %rdi
callq 0x10f0
movq %rax, -0x130(%rbp)
cmpq $0x0, -0x130(%rbp)
jne 0x523b
leaq 0x3ca5(%rip), %rdi      # 0x8edb
callq 0x1070
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x68(%rbp), %eax
jge 0x52c0
movq -0x78(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movl (%rax,%rcx,4), %edx
movq -0x50(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movslq -0x2c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x120(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rax
movslq -0x2c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x128(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq -0x130(%rbp), %rax
movslq -0x2c(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x5242
movl $0x0, -0x3c(%rbp)
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x68(%rbp), %eax
jge 0x53d5
movl $0x0, -0x20(%rbp)
movl -0x20(%rbp), %eax
movq -0x78(%rbp), %rcx
movslq -0x2c(%rbp), %rdx
cmpl (%rcx,%rdx,4), %eax
jge 0x53c5
movq 0x7234(%rip), %rax      # 0xc530
movslq -0x3c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movl $0x1, (%rax)
movl $0xc, %edi
callq 0x10f0
movq 0x7212(%rip), %rcx      # 0xc530
movslq -0x3c(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq %rax, 0x8(%rcx)
cmpq $0x0, %rax
jne 0x533f
leaq 0x3bb7(%rip), %rdi      # 0x8ef1
callq 0x1070
movq 0x71ea(%rip), %rax      # 0xc530
movslq -0x3c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movl $0x0, (%rax)
movl -0x6c(%rbp), %ecx
subl $0x1, %ecx
movq 0x71c8(%rip), %rax      # 0xc530
movslq -0x3c(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movq 0x8(%rax), %rax
movl %ecx, 0x4(%rax)
movl -0x3c(%rbp), %ecx
movq 0x71ac(%rip), %rax      # 0xc530
movslq -0x3c(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movq 0x8(%rax), %rax
movl %ecx, 0x8(%rax)
movl -0x2c(%rbp), %ecx
movq 0x7190(%rip), %rax      # 0xc530
movslq -0x3c(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x52e1
jmp 0x53c7
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x52ce
movq 0x716c(%rip), %rax      # 0xc548
movl $0x0, (%rax)
movl -0x64(%rbp), %eax
shll %eax
movslq %eax, %rdi
movl $0x10, %esi
callq 0x1040
movq 0x714d(%rip), %rcx      # 0xc548
movq %rax, 0x8(%rcx)
cmpq $0x0, %rax
jne 0x5411
leaq 0x3af7(%rip), %rdi      # 0x8f03
callq 0x1070
movl -0x64(%rbp), %ecx
subl $0x1, %ecx
movq 0x7122(%rip), %rax      # 0xc540
movl %ecx, (%rax)
movl -0x64(%rbp), %eax
movl %eax, 0x7127(%rip)      # 0xc550
movl -0x64(%rbp), %eax
movl -0x6c(%rbp), %ecx
subl $0x1, %ecx
imull %ecx, %eax
cltq
movq %rax, 0x711a(%rip)      # 0xc558
movl $0x1, 0x7118(%rip)      # 0xc560
xorps %xmm0, %xmm0
movsd %xmm0, 0x7115(%rip)     # 0xc568
movl -0x6c(%rbp), %eax
subl $0x1, %eax
cvtsi2sd %eax, %xmm1
movsd -0xf8(%rbp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0xf8(%rbp)
movsd -0x100(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x54a8
movsd -0x110(%rbp), %xmm0
movsd 0x2b76(%rip), %xmm1     # 0x8008
subsd %xmm1, %xmm0
divsd -0x110(%rbp), %xmm0
movsd %xmm0, 0x70ca(%rip)     # 0xc570
jmp 0x54b8
movsd 0x2b58(%rip), %xmm0     # 0x8008
movsd %xmm0, 0x70b8(%rip)     # 0xc570
movsd 0x70b0(%rip), %xmm0     # 0xc570
callq 0x1060
movsd %xmm0, 0x70ab(%rip)     # 0xc578
cvtsi2sdl -0x64(%rbp), %xmm0
movsd %xmm0, -0x148(%rbp)
movsd 0x708e(%rip), %xmm0     # 0xc570
movl -0x6c(%rbp), %eax
subl $0x1, %eax
cvtsi2sd %eax, %xmm1
callq 0x1150
movaps %xmm0, %xmm2
movsd -0x148(%rbp), %xmm0
movsd 0x2b04(%rip), %xmm1     # 0x8008
subsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, 0x706c(%rip)     # 0xc580
movsd -0xf8(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x553f
movsd -0xf8(%rbp), %xmm0
mulsd -0x100(%rbp), %xmm0
movsd %xmm0, -0x108(%rbp)
jmp 0x555d
movsd -0x100(%rbp), %xmm0
movl -0x6c(%rbp), %eax
subl $0x1, %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x108(%rbp)
movsd -0x108(%rbp), %xmm0
mulsd -0x110(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movl $0x0, -0x54(%rbp)
cmpl $0x1, 0x6fcd(%rip)      # 0xc550
jle 0x6733
cvtsi2sdq 0x6fc6(%rip), %xmm0 # 0xc558
mulsd -0xf8(%rbp), %xmm0
movsd %xmm0, -0xb8(%rbp)
cvtsi2sdq 0x6fad(%rip), %xmm0 # 0xc558
mulsd -0x108(%rbp), %xmm0
movsd %xmm0, -0xc0(%rbp)
movsd 0x6fbd(%rip), %xmm0     # 0xc580
mulsd -0x98(%rbp), %xmm0
movsd %xmm0, -0xa0(%rbp)
movsd -0xb8(%rbp), %xmm0
addsd -0xc0(%rbp), %xmm0
addsd -0xa0(%rbp), %xmm0
movsd %xmm0, -0xc8(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0xd0(%rbp)
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
cmpl -0x68(%rbp), %eax
jge 0x5655
movq -0x50(%rbp), %rax
movslq -0x1c(%rbp), %rcx
cvtsi2sdl (%rax,%rcx,4), %xmm0
movq -0x118(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x1c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movsd -0xd0(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xd0(%rbp)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x5605
cmpl $0x1, -0x68(%rbp)
jle 0x56e0
movsd -0xd0(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x56e0
jp 0x56e0
cmpq $0x0, -0x140(%rbp)
jne 0x56e0
movl $0x0, -0x1c(%rbp)
movl $0x0, -0x20(%rbp)
movl -0x20(%rbp), %eax
cmpl -0x68(%rbp), %eax
jge 0x56b6
movq -0x50(%rbp), %rax
movslq -0x20(%rbp), %rcx
cmpl $0x0, (%rax,%rcx,4)
jle 0x56a9
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x56ab
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x568a
cmpl $0x1, -0x1c(%rbp)
jle 0x56de
movq 0x591d(%rip), %rax      # 0xafe0
movq (%rax), %rdi
leaq 0x3848(%rip), %rsi      # 0x8f15
movb $0x0, %al
callq 0x1110
movl $0x1, %edi
callq 0x10d0
jmp 0x56e0
movl $0x0, -0x58(%rbp)
movsd -0xc8(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x5780
jmp 0x56fe
callq 0x4ee0
movsd %xmm0, -0xe8(%rbp)
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x5718
jp 0x5718
jmp 0x56fe
movsd -0xe8(%rbp), %xmm0
callq 0x1060
movaps %xmm0, %xmm1
movsd 0x28e0(%rip), %xmm0     # 0x8010
mulsd %xmm1, %xmm0
divsd -0xc8(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
cmpl $0x0, -0x58(%rbp)
je 0x5760
movsd -0x90(%rbp), %xmm1
movsd -0xa8(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x577e
movsd -0x90(%rbp), %xmm0
movsd %xmm0, -0xa8(%rbp)
movb $0x72, -0x131(%rbp)
movl $0x1, -0x58(%rbp)
jmp 0x5780
movsd -0xd0(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x5819
jmp 0x5797
callq 0x4ee0
movsd %xmm0, -0xe8(%rbp)
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x57b1
jp 0x57b1
jmp 0x5797
movsd -0xe8(%rbp), %xmm0
callq 0x1060
movaps %xmm0, %xmm1
movsd 0x2847(%rip), %xmm0     # 0x8010
mulsd %xmm1, %xmm0
divsd -0xd0(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
cmpl $0x0, -0x58(%rbp)
je 0x57f9
movsd -0x90(%rbp), %xmm1
movsd -0xa8(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x5817
movsd -0x90(%rbp), %xmm0
movsd %xmm0, -0xa8(%rbp)
movb $0x6d, -0x131(%rbp)
movl $0x1, -0x58(%rbp)
jmp 0x5819
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x68(%rbp), %eax
jge 0x5a65
movq -0x50(%rbp), %rax
movslq -0x2c(%rbp), %rcx
cvtsi2sdl (%rax,%rcx,4), %xmm0
movq -0x50(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movl (%rax,%rcx,4), %eax
subl $0x1, %eax
cvtsi2sd %eax, %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0xe0(%rbp)
movsd -0xe0(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x5a55
jmp 0x586e
callq 0x4ee0
movsd %xmm0, -0xe8(%rbp)
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x5888
jp 0x5888
jmp 0x586e
movq -0x128(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x592c
jp 0x592c
movsd -0xe8(%rbp), %xmm0
callq 0x1060
movaps %xmm0, %xmm1
movsd 0x274d(%rip), %xmm0     # 0x8010
mulsd %xmm1, %xmm0
movq -0x120(%rbp), %rax
movslq -0x2c(%rbp), %rcx
mulsd (%rax,%rcx,8), %xmm0
divsd -0xe0(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
cmpl $0x0, -0x58(%rbp)
je 0x5903
movsd -0x90(%rbp), %xmm1
movsd -0xa8(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x5927
movsd -0x90(%rbp), %xmm0
movsd %xmm0, -0xa8(%rbp)
movb $0x63, -0x131(%rbp)
movl $0x1, -0x58(%rbp)
movl -0x2c(%rbp), %eax
movl %eax, -0x5c(%rbp)
jmp 0x5a53
movq -0x128(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x120(%rbp), %rax
movslq -0x2c(%rbp), %rcx
mulsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x158(%rbp)
movq -0x128(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movsd 0x26a9(%rip), %xmm0     # 0x8010
mulsd (%rax,%rcx,8), %xmm0
movsd 0x6bf4(%rip), %xmm1     # 0xc568
movq -0x130(%rbp), %rax
movslq -0x2c(%rbp), %rcx
subsd (%rax,%rcx,8), %xmm1
mulsd %xmm1, %xmm0
callq 0x1160
movaps %xmm0, %xmm1
movsd -0x158(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x150(%rbp)
movsd -0xe8(%rbp), %xmm0
callq 0x1060
movsd -0x150(%rbp), %xmm1
mulsd %xmm0, %xmm1
divsd -0xe0(%rbp), %xmm1
movsd 0x263b(%rip), %xmm0     # 0x8008
subsd %xmm1, %xmm0
movsd %xmm0, -0xf0(%rbp)
movsd -0xf0(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x5a51
movsd -0xf0(%rbp), %xmm0
callq 0x1060
movq -0x128(%rbp), %rax
movslq -0x2c(%rbp), %rcx
divsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x90(%rbp)
cmpl $0x0, -0x58(%rbp)
je 0x5a2b
movsd -0x90(%rbp), %xmm1
movsd -0xa8(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x5a4f
movsd -0x90(%rbp), %xmm0
movsd %xmm0, -0xa8(%rbp)
movb $0x63, -0x131(%rbp)
movl $0x1, -0x58(%rbp)
movl -0x2c(%rbp), %eax
movl %eax, -0x5c(%rbp)
jmp 0x5a51
jmp 0x5a53
jmp 0x5a55
jmp 0x5a57
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x5820
cmpl $0x0, -0x58(%rbp)
jne 0x5a97
cmpq $0x0, -0x140(%rbp)
jne 0x5a97
movq 0x5564(%rip), %rax      # 0xafe0
movq (%rax), %rdi
leaq 0x34b9(%rip), %rsi      # 0x8f3f
movb $0x0, %al
callq 0x1110
movl $0x1, %edi
callq 0x10d0
cmpl $0x0, -0x58(%rbp)
jne 0x5aa7
cmpq $0x0, -0x140(%rbp)
jne 0x5ad6
cmpq $0x0, -0x140(%rbp)
je 0x63ee
movsd 0x6aab(%rip), %xmm0     # 0xc568
addsd -0xa8(%rbp), %xmm0
movq -0x140(%rbp), %rax
ucomisd (%rax), %xmm0
jb 0x63ee
movq -0x140(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, 0x6a7f(%rip)     # 0xc568
movq -0x140(%rbp), %rax
movsbl 0x28(%rax), %eax
addl $-0x47, %eax
movl %eax, %ecx
movq %rcx, -0x160(%rbp)
subl $0x2f, %eax
ja 0x63e9
movq -0x160(%rbp), %rax
leaq 0x32b9(%rip), %rcx      # 0x8dd0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x68(%rbp), %eax
jge 0x5b69
movq -0x140(%rbp), %rax
movsd 0x18(%rax), %xmm0
movq -0x120(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq -0x128(%rbp), %rax
movslq -0x2c(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x5b27
movq -0x140(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x140(%rbp)
jmp 0x63e9
movq -0x140(%rbp), %rax
movsd 0x18(%rax), %xmm0
movq -0x120(%rbp), %rax
movq -0x140(%rbp), %rcx
movslq 0x8(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq -0x128(%rbp), %rax
movq -0x140(%rbp), %rcx
movslq 0x8(%rcx), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movq -0x140(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x140(%rbp)
jmp 0x63e9
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x68(%rbp), %eax
jge 0x5c99
movq -0x120(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x168(%rbp)
movq -0x128(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movsd 0x23fe(%rip), %xmm0     # 0x8010
mulsd (%rax,%rcx,8), %xmm0
movsd 0x6949(%rip), %xmm1     # 0xc568
movq -0x130(%rbp), %rax
movslq -0x2c(%rbp), %rcx
subsd (%rax,%rcx,8), %xmm1
mulsd %xmm1, %xmm0
callq 0x1160
movaps %xmm0, %xmm1
movsd -0x168(%rbp), %xmm0
mulsd %xmm1, %xmm0
movq -0x120(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq -0x140(%rbp), %rax
movsd 0x18(%rax), %xmm0
movq -0x128(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd 0x68ed(%rip), %xmm0     # 0xc568
movq -0x130(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x5bdb
movq -0x140(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x140(%rbp)
jmp 0x63e9
movq -0x140(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x2c(%rbp)
movq -0x120(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x170(%rbp)
movq -0x128(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movsd 0x2328(%rip), %xmm0     # 0x8010
mulsd (%rax,%rcx,8), %xmm0
movsd 0x6873(%rip), %xmm1     # 0xc568
movq -0x130(%rbp), %rax
movslq -0x2c(%rbp), %rcx
subsd (%rax,%rcx,8), %xmm1
mulsd %xmm1, %xmm0
callq 0x1160
movaps %xmm0, %xmm1
movsd -0x170(%rbp), %xmm0
mulsd %xmm1, %xmm0
movq -0x120(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq -0x140(%rbp), %rax
movsd 0x18(%rax), %xmm0
movq -0x128(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd 0x6817(%rip), %xmm0     # 0xc568
movq -0x130(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq -0x140(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x140(%rbp)
jmp 0x63e9
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x68(%rbp), %eax
jge 0x5de7
movl $0x0, -0x30(%rbp)
movl -0x30(%rbp), %eax
cmpl -0x68(%rbp), %eax
jge 0x5dda
movq -0x140(%rbp), %rax
movsd 0x18(%rax), %xmm0
cvtsi2sdl -0x68(%rbp), %xmm1
movsd 0x2259(%rip), %xmm2     # 0x8008
subsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movq -0x118(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x30(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0x5d8e
jmp 0x5ddc
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x5d7f
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x68(%rbp), %eax
jge 0x5e25
movq -0x140(%rbp), %rax
movsd 0x18(%rax), %xmm0
movq -0x118(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x2c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x5dee
movq -0x140(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x140(%rbp)
jmp 0x63e9
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x68(%rbp), %eax
jge 0x5ea6
movl $0x0, -0x30(%rbp)
movl -0x30(%rbp), %eax
cmpl -0x68(%rbp), %eax
jge 0x5e99
movq -0x140(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0x2c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x30(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x118(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x30(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0x5e52
jmp 0x5e9b
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x5e43
movq -0x140(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x140(%rbp)
jmp 0x63e9
movq -0x140(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x1c(%rbp)
movq -0x140(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, -0x20(%rbp)
movq -0x140(%rbp), %rax
movsd 0x18(%rax), %xmm0
movq -0x118(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x20(%rbp), %rcx
subsd (%rax,%rcx,8), %xmm0
movq -0x118(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x1c(%rbp), %rcx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
movq -0x140(%rbp), %rax
movsd 0x18(%rax), %xmm0
movq -0x118(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x20(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq -0x140(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x140(%rbp)
jmp 0x63e9
movq -0x140(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x1c(%rbp)
movq -0x140(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, -0x20(%rbp)
movq -0x50(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movl (%rax,%rcx,4), %edx
movq -0x50(%rbp), %rax
movslq -0x20(%rbp), %rcx
addl (%rax,%rcx,4), %edx
movl %edx, (%rax,%rcx,4)
movq -0x50(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movl $0x0, (%rax,%rcx,4)
movl $0x0, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl 0x65ab(%rip), %eax      # 0xc550
jge 0x5fe6
movq 0x6582(%rip), %rax      # 0xc530
movslq -0x60(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movl 0x4(%rax), %eax
cmpl -0x1c(%rbp), %eax
jne 0x5fd9
movl -0x20(%rbp), %ecx
movq 0x6565(%rip), %rax      # 0xc530
movslq -0x60(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
jmp 0x5fdb
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x5f9c
movl $0x0, -0x24(%rbp)
movl -0x24(%rbp), %eax
cmpl -0x68(%rbp), %eax
jge 0x605e
movl -0x24(%rbp), %eax
cmpl -0x1c(%rbp), %eax
je 0x6051
movq -0x118(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x1c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
movq -0x118(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x24(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movq -0x118(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x1c(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
jmp 0x6053
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x5fed
movq -0x140(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x140(%rbp)
jmp 0x63e9
movq -0x140(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x1c(%rbp)
movq -0x140(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, -0x20(%rbp)
movq -0x50(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movl $0x0, (%rax,%rcx,4)
movl $0x0, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl 0x64a2(%rip), %eax      # 0xc550
jge 0x6139
movq 0x6475(%rip), %rax      # 0xc530
movslq -0x60(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movl 0x4(%rax), %eax
cmpl -0x1c(%rbp), %eax
jne 0x6129
callq 0x4ee0
movq -0x140(%rbp), %rax
ucomisd 0x10(%rax), %xmm0
jbe 0x60f4
movq -0x50(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
movl %edx, (%rax,%rcx,4)
jmp 0x6127
movl -0x20(%rbp), %ecx
movq 0x6432(%rip), %rax      # 0xc530
movslq -0x60(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movq -0x50(%rbp), %rax
movslq -0x20(%rbp), %rcx
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
movl %edx, (%rax,%rcx,4)
movq -0x18(%rbp), %rax
movl $0x1, (%rax)
jmp 0x6129
jmp 0x612b
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x60a5
movq -0x140(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x140(%rbp)
jmp 0x63e9
movq -0x140(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x1c(%rbp)
movq -0x140(%rbp), %rax
movsd 0x18(%rax), %xmm0
movsd %xmm0, -0xb0(%rbp)
movl -0x68(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x68(%rbp)
movq -0x50(%rbp), %rdi
movslq -0x68(%rbp), %rsi
shlq $0x2, %rsi
callq 0x1130
movq %rax, -0x50(%rbp)
movq -0x120(%rbp), %rdi
movslq -0x68(%rbp), %rsi
shlq $0x3, %rsi
callq 0x1130
movq %rax, -0x120(%rbp)
movq -0x128(%rbp), %rdi
movslq -0x68(%rbp), %rsi
shlq $0x3, %rsi
callq 0x1130
movq %rax, -0x128(%rbp)
movq -0x130(%rbp), %rdi
movslq -0x68(%rbp), %rsi
shlq $0x3, %rsi
callq 0x1130
movq %rax, -0x130(%rbp)
movsd 0x6380(%rip), %xmm0     # 0xc568
movq -0x130(%rbp), %rax
movl -0x68(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsd %xmm0, (%rax,%rcx,8)
movq -0x120(%rbp), %rax
movl -0x68(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsd 0x1df3(%rip), %xmm0     # 0x8008
movsd %xmm0, (%rax,%rcx,8)
movq -0x128(%rbp), %rax
movl -0x68(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movq -0x118(%rbp), %rdi
movslq -0x68(%rbp), %rsi
shlq $0x3, %rsi
callq 0x1130
movq %rax, -0x118(%rbp)
movl $0x0, -0x20(%rbp)
movl -0x20(%rbp), %eax
movl -0x68(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x629a
movq -0x118(%rbp), %rax
movslq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movslq -0x68(%rbp), %rsi
shlq $0x3, %rsi
callq 0x1130
movq %rax, %rdx
movq -0x118(%rbp), %rax
movslq -0x20(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x6254
movslq -0x68(%rbp), %rdi
shlq $0x3, %rdi
callq 0x10f0
movq %rax, %rdx
movq -0x118(%rbp), %rax
movl -0x68(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq %rdx, (%rax,%rcx,8)
movl $0x0, -0x20(%rbp)
movl -0x20(%rbp), %eax
cmpl -0x68(%rbp), %eax
jge 0x6318
movq -0x118(%rbp), %rax
movslq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movl -0x68(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movq -0x118(%rbp), %rax
movl -0x68(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movslq -0x20(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x62c5
movq -0x50(%rbp), %rax
movl -0x68(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movl $0x0, (%rax,%rcx,4)
movq -0x50(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movl $0x0, (%rax,%rcx,4)
movl $0x0, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl 0x6205(%rip), %eax      # 0xc550
jge 0x63d7
movq 0x61d8(%rip), %rax      # 0xc530
movslq -0x60(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movl 0x4(%rax), %eax
cmpl -0x1c(%rbp), %eax
jne 0x63c7
callq 0x4ee0
movaps %xmm0, %xmm1
movsd -0xb0(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x6394
movq -0x50(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
movl %edx, (%rax,%rcx,4)
jmp 0x63c5
movl -0x68(%rbp), %ecx
subl $0x1, %ecx
movq 0x618f(%rip), %rax      # 0xc530
movslq -0x60(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movq -0x50(%rbp), %rax
movl -0x68(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
movl %edx, (%rax,%rcx,4)
jmp 0x63c7
jmp 0x63c9
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x6342
movq -0x140(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x140(%rbp)
jmp 0x672e
movsd -0xa8(%rbp), %xmm0
addsd 0x616a(%rip), %xmm0     # 0xc568
movsd %xmm0, 0x6162(%rip)     # 0xc568
movsbl -0x131(%rbp), %eax
cmpl $0x72, %eax
jne 0x6505
callq 0x4ee0
movaps %xmm0, %xmm1
movsd %xmm1, -0xd8(%rbp)
movsd -0xb8(%rbp), %xmm0
divsd -0xc8(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x646f
movl -0x64(%rbp), %edi
callq 0x67c0
movl %eax, -0x40(%rbp)
movq -0x50(%rbp), %rax
movq 0x60de(%rip), %rcx      # 0xc530
movslq -0x40(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movslq 0x4(%rcx), %rcx
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
movl %edx, (%rax,%rcx,4)
jmp 0x6500
movsd -0xd8(%rbp), %xmm1
movsd -0xb8(%rbp), %xmm0
addsd -0xa0(%rbp), %xmm0
divsd -0xc8(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x64c5
movl -0x64(%rbp), %edi
callq 0x68b0
movl %eax, -0x40(%rbp)
movq -0x50(%rbp), %rax
movq 0x6085(%rip), %rcx      # 0xc530
movslq -0x40(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movslq 0x4(%rcx), %rcx
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
movl %edx, (%rax,%rcx,4)
jmp 0x64fe
movl -0x64(%rbp), %edi
movl -0x6c(%rbp), %esi
callq 0x6a40
movl %eax, -0x40(%rbp)
cmpl $0x0, -0x40(%rbp)
jl 0x64fc
movq -0x50(%rbp), %rax
movq 0x604c(%rip), %rcx      # 0xc530
movslq -0x40(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movslq 0x4(%rcx), %rcx
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
movl %edx, (%rax,%rcx,4)
jmp 0x64fe
jmp 0x6500
jmp 0x672c
movsbl -0x131(%rbp), %eax
cmpl $0x6d, %eax
jne 0x66ef
movsd -0xd0(%rbp), %xmm0
movsd %xmm0, -0x178(%rbp)
callq 0x4ee0
movaps %xmm0, %xmm1
movsd -0x178(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x88(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x80(%rbp)
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
cmpl 0x5ff7(%rip), %eax      # 0xc550
jge 0x65c3
movq -0x118(%rbp), %rax
movq 0x5fc7(%rip), %rcx      # 0xc530
movslq -0x1c(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movslq 0x4(%rcx), %rcx
movq (%rax,%rcx,8), %rax
movq 0x5fad(%rip), %rcx      # 0xc530
movslq -0x1c(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movslq 0x4(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd -0x88(%rbp), %xmm1
movsd -0x80(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x65b6
jmp 0x65c3
jmp 0x65b8
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x6550
movl -0x1c(%rbp), %eax
movl %eax, -0x44(%rbp)
callq 0x4ee0
movq -0x118(%rbp), %rax
movq 0x5f54(%rip), %rcx      # 0xc530
movslq -0x1c(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movslq 0x4(%rcx), %rcx
movq (%rax,%rcx,8), %rax
movq 0x5f3a(%rip), %rcx      # 0xc530
movslq -0x1c(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movslq 0x4(%rcx), %rcx
mulsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x88(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x80(%rbp)
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
cmpl -0x68(%rbp), %eax
jge 0x669b
movl -0x1c(%rbp), %eax
movq 0x5efd(%rip), %rcx      # 0xc530
movslq -0x44(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
cmpl 0x4(%rcx), %eax
je 0x668e
movq -0x118(%rbp), %rax
movq 0x5edf(%rip), %rcx      # 0xc530
movslq -0x44(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movslq 0x4(%rcx), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x1c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd -0x88(%rbp), %xmm1
movsd -0x80(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x668c
jmp 0x669b
jmp 0x668e
jmp 0x6690
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x6621
movl -0x1c(%rbp), %eax
movl %eax, -0x48(%rbp)
movq -0x50(%rbp), %rax
movq 0x5e84(%rip), %rcx      # 0xc530
movslq -0x44(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movslq 0x4(%rcx), %rcx
movl (%rax,%rcx,4), %edx
subl $0x1, %edx
movl %edx, (%rax,%rcx,4)
movq -0x50(%rbp), %rax
movslq -0x48(%rbp), %rcx
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
movl %edx, (%rax,%rcx,4)
movl -0x48(%rbp), %ecx
movq 0x5e51(%rip), %rax      # 0xc530
movslq -0x44(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
jmp 0x672a
movl -0x5c(%rbp), %edi
movq -0x50(%rbp), %rsi
leaq -0x34(%rbp), %rdx
leaq -0x38(%rbp), %rcx
callq 0x6c00
movl -0x64(%rbp), %edi
movl -0x6c(%rbp), %esi
movl -0x34(%rbp), %edx
movl -0x38(%rbp), %ecx
callq 0x6d30
movl %eax, -0x28(%rbp)
movl -0x28(%rbp), %esi
movq -0x50(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movl (%rax,%rcx,4), %edx
subl %esi, %edx
movl %edx, (%rax,%rcx,4)
jmp 0x672c
jmp 0x672e
jmp 0x557c
movl 0x5e27(%rip), %ecx      # 0xc560
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
movq -0x50(%rbp), %rdi
callq 0x10c0
movq -0x120(%rbp), %rdi
callq 0x10c0
movq -0x128(%rbp), %rdi
callq 0x10c0
movq -0x130(%rbp), %rdi
callq 0x10c0
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
cmpl -0x68(%rbp), %eax
jge 0x679a
movq -0x118(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x10c0
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x6773
movq -0x118(%rbp), %rdi
callq 0x10c0
movq 0x5d9b(%rip), %rax      # 0xc548
addq $0x180, %rsp            # imm = 0x180
popq %rbp
retq
nopw %cs:(%rax,%rax)