// File: /workspace/github_c_makefile_star2_O0/olcaytaner[P]Isell/svmsolve.c
// Function: solve
void solve(Solverptr s, int l, SVM_Q_MATRIX_TYPE qmatrixtype, double* b, signed char *y, double *alpha, double Cp, double Cn, Solutioninfoptr si, Svm_problem prob, Svm_parameter param, int nu)
{
 /*Last Changed 28.04.2005*/
	double *Q_i, *Q_j, alpha_i, C_i, C_j, old_alpha_i, old_alpha_j, delta, diff, sum, delta_alpha_i, delta_alpha_j, v;
	int i, j, iter, counter, ui, uj, k;
	s->l = l;
	s->qmatrixtype = qmatrixtype;
	switch (qmatrixtype)
	 {
	  case QC  :s->svcq = empty_svcq(prob, param, y);
				         break;
			case QR  :s->svrq = empty_svrq(prob, param);
				         break;
			case QONE:s->oneclassq = empty_oneclassq(prob, param);
				         break;
	 }
 s->b = safemalloc(s->l * sizeof(double), "solve", 14);
	memcpy(s->b, b, s->l * sizeof(double));
 s->y = safemalloc(s->l * sizeof(signed char), "solve", 16);
	memcpy(s->y, y, s->l * sizeof(signed char));
 s->alpha = safemalloc(s->l * sizeof(double), "solve", 18);
	memcpy(s->alpha, alpha, s->l * sizeof(double));
	s->Cp = Cp;
	s->Cn = Cn;
	s->eps = param.eps;
	s->unshrinked = 0;
	s->alpha_status = safemalloc(s->l * sizeof(char), "solve", 24);
	for (i = 0; i < s->l; i++)
			update_alpha_status(s, i);
	s->active_set = safemalloc(s->l * sizeof(int), "solve", 27);
	for (i = 0; i < s->l; i++)
			s->active_set[i] = i;
	s->active_size = s->l;
	s->G = safemalloc(s->l * sizeof(double), "solve", 31);
	s->G_bar = safemalloc(s->l * sizeof(double), "solve", 32);
	for (i = 0; i < s->l; i++)
	 {
			s->G[i] = b[i];
			s->G_bar[i] = 0;
		}
	for (i = 0; i < s->l; i++)
			if (!is_lower_bound(s, i))
			 {
				 Q_i = solver_get_Q(s, i, s->l);
				 alpha_i = s->alpha[i];
				 for (j = 0; j < s->l; j++)
					  s->G[j] += alpha_i * Q_i[j];
				 if (is_upper_bound(s, i))
					  for (j = 0; j < s->l; j++)
						   s->G_bar[j] += get_C(s, i) * Q_i[j];
			 }
	iter = 0;
	counter = imin(s->l, 1000) + 1;
	while (1)
	 {
		 if(--counter == 0)
			 {
			  counter = imin(s->l, 1000);
			  if (param.shrinking) 
						 do_shrinking(s);
			 }
		 if (select_working_set_general(s, &i, &j, nu) != 0)
			 {
			  reconstruct_gradient(s);
			  s->active_size = s->l;
			  if (select_working_set_general(s, &i, &j, nu) != 0)
				   break;
			  else
				   counter = 1;	
			 }		
		++iter;
		Q_i = solver_get_Q(s, i, s->active_size);
		Q_j = solver_get_Q(s, j, s->active_size);
		C_i = get_C(s, i);
		C_j = get_C(s, j);
		old_alpha_i = s->alpha[i];
		old_alpha_j = s->alpha[j];
		if (s->y[i] != s->y[j])
		 {
			 delta = (-s->G[i] - s->G[j]) / fmax(Q_i[i] + Q_j[j] + 2 * Q_i[j], 0.0);
			 diff = s->alpha[i] - s->alpha[j];
			 s->alpha[i] += delta;
			 s->alpha[j] += delta;			
			 if (diff > 0)
			  {
		  		if (s->alpha[j] < 0)
						 {
				   	s->alpha[j] = 0;
					   s->alpha[i] = diff;
						 }
				 }
			 else
				 {
				  if (s->alpha[i] < 0)
						 {
					   s->alpha[i] = 0;
					   s->alpha[j] = -diff;
						 }
				 }
			 if (diff > C_i - C_j)
				 {
			  	if (s->alpha[i] > C_i)
						 {
					   s->alpha[i] = C_i;
					   s->alpha[j] = C_i - diff;
						 }
				 }
			 else
			  {
				  if (s->alpha[j] > C_j)
						 {
					   s->alpha[j] = C_j;
					   s->alpha[i] = C_j + diff;
						 } 
				 }
		 }
		else
		 {
			 delta = (s->G[i] - s->G[j]) / fmax(Q_i[i] + Q_j[j] - 2 * Q_i[j], 0.0);
			 sum = s->alpha[i] + s->alpha[j];
			 s->alpha[i] -= delta;
			 s->alpha[j] += delta;
			 if (sum > C_i)
				 {
			  	if (s->alpha[i] > C_i)
						 {
					   s->alpha[i] = C_i;
					   s->alpha[j] = sum - C_i;
						 }
				 }
			 else
			  {
			  	if (alpha[j] < 0)
						 {
					   s->alpha[j] = 0;
					   s->alpha[i] = sum;
						 }
				 }
			 if (sum > C_j)
				 {
			  	if (s->alpha[j] > C_j)
						 {
					   s->alpha[j] = C_j;
					   s->alpha[i] = sum - C_j;
						 }
				 }
			 else
				 {
				  if (s->alpha[i] < 0)
						 {
					   s->alpha[i] = 0;
					   s->alpha[j] = sum;
						 }
				 }
		 }
		delta_alpha_i = s->alpha[i] - old_alpha_i;
		delta_alpha_j = s->alpha[j] - old_alpha_j;	
		for (k = 0; k < s->active_size; k++)
			 s->G[k] += Q_i[k] * delta_alpha_i + Q_j[k] * delta_alpha_j;
  ui = is_upper_bound(s, i);
		uj = is_upper_bound(s, j);
		update_alpha_status(s, i);
		update_alpha_status(s, j);
		if (ui != is_upper_bound(s, i))
		 {
				Q_i = solver_get_Q(s, i, s->l);
				if (ui)
					 for (k = 0; k < s->l; k++)
						  s->G_bar[k] -= C_i * Q_i[k];
				else
					 for (k = 0;k < s->l; k++)
						  s->G_bar[k] += C_i * Q_i[k];
		 }
		if (uj != is_upper_bound(s, j))
		 {
				Q_j = solver_get_Q(s, j, s->l);
				if (uj)
					 for (k = 0; k < s->l; k++)
						  s->G_bar[k] -= C_j * Q_j[k];
				else
					 for (k = 0; k < s->l; k++)
						  s->G_bar[k] += C_j * Q_j[k];
		 }
	 }
	si->rho = calculate_rho_general(s, si, nu);
	v = 0;
	for (i = 0; i < s->l; i++)
			v += s->alpha[i] * (s->G[i] + s->b[i]);
	si->obj = v / 2;
 for (i = 0; i < s->l; i++)
			alpha[s->active_set[i]] = s->alpha[i];
	si->upper_bound_p = Cp;
	si->upper_bound_n = Cn;
	safe_free(s->b);
	safe_free(s->y);
	safe_free(s->alpha);
	safe_free(s->alpha_status);
	safe_free(s->active_set);
	safe_free(s->G);
	safe_free(s->G_bar);
	switch (qmatrixtype)
	 {
	  case QC  :free_svcq(s->svcq);
				         break;
			case QR  :free_svrq(s->svrq);
				         break;
			case QONE:free_oneclassq(s->oneclassq);
				         break;
	 }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x170, %rsp            # imm = 0x170
movl 0x90(%rbp), %eax
leaq 0x38(%rbp), %rax
movq %rax, -0xd0(%rbp)
leaq 0x18(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq 0x10(%rbp), %rax
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movq %rcx, -0x18(%rbp)
movq %r8, -0x20(%rbp)
movq %r9, -0x28(%rbp)
movsd %xmm0, -0x30(%rbp)
movsd %xmm1, -0x38(%rbp)
movl -0xc(%rbp), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x78(%rax)
movl -0x10(%rbp), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x28(%rax)
movl -0x10(%rbp), %eax
movl %eax, -0xc0(%rbp)
testl %eax, %eax
je 0xcf4b3
jmp 0xcf48e
movl -0xc0(%rbp), %eax
subl $0x1, %eax
je 0xcf521
jmp 0xcf49f
movl -0xc0(%rbp), %eax
subl $0x2, %eax
je 0xcf588
jmp 0xcf5ed
movq -0xc8(%rbp), %rcx
movq -0xd0(%rbp), %rdx
movq -0x20(%rbp), %rdi
movq 0x50(%rdx), %rsi
movq %rsp, %rax
movq %rax, -0xd8(%rbp)
movq %rsi, 0x70(%rax)
movups 0x40(%rdx), %xmm0
movups %xmm0, 0x60(%rax)
movups (%rdx), %xmm0
movups 0x10(%rdx), %xmm1
movups 0x20(%rdx), %xmm2
movups 0x30(%rdx), %xmm3
movups %xmm3, 0x50(%rax)
movups %xmm2, 0x40(%rax)
movups %xmm1, 0x30(%rax)
movups %xmm0, 0x20(%rax)
movups (%rcx), %xmm0
movups 0x10(%rcx), %xmm1
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0xcb200
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x30(%rax)
jmp 0xcf5ed
movq -0xc8(%rbp), %rcx
movq -0xd0(%rbp), %rdx
movq 0x50(%rdx), %rsi
movq %rsp, %rax
movq %rax, -0xe0(%rbp)
movq %rsi, 0x70(%rax)
movups 0x40(%rdx), %xmm0
movups %xmm0, 0x60(%rax)
movups (%rdx), %xmm0
movups 0x10(%rdx), %xmm1
movups 0x20(%rdx), %xmm2
movups 0x30(%rdx), %xmm3
movups %xmm3, 0x50(%rax)
movups %xmm2, 0x40(%rax)
movups %xmm1, 0x30(%rax)
movups %xmm0, 0x20(%rax)
movups (%rcx), %xmm0
movups 0x10(%rcx), %xmm1
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0xcb6b0
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x38(%rax)
jmp 0xcf5ed
movq -0xc8(%rbp), %rcx
movq -0xd0(%rbp), %rdx
movq 0x50(%rdx), %rsi
movq %rsp, %rax
movq %rax, -0xe8(%rbp)
movq %rsi, 0x70(%rax)
movups 0x40(%rdx), %xmm0
movups %xmm0, 0x60(%rax)
movups (%rdx), %xmm0
movups 0x10(%rdx), %xmm1
movups 0x20(%rdx), %xmm2
movups 0x30(%rdx), %xmm3
movups %xmm3, 0x50(%rax)
movups %xmm2, 0x40(%rax)
movups %xmm1, 0x30(%rax)
movups %xmm0, 0x20(%rax)
movups (%rcx), %xmm0
movups 0x10(%rcx), %xmm1
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0xcb4e0
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x40(%rax)
movq -0x8(%rbp), %rax
movslq 0x78(%rax), %rdi
shlq $0x3, %rdi
leaq 0x1ec90(%rip), %rsi     # 0xee290
movl $0xe, %edx
callq 0x52d70
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x60(%rax)
movq -0x8(%rbp), %rax
movq 0x60(%rax), %rdi
movq -0x18(%rbp), %rsi
movq -0x8(%rbp), %rax
movslq 0x78(%rax), %rdx
shlq $0x3, %rdx
callq 0x42b0
movq -0x8(%rbp), %rax
movslq 0x78(%rax), %rdi
shlq $0x0, %rdi
leaq 0x1ec4b(%rip), %rsi     # 0xee290
movl $0x10, %edx
callq 0x52d70
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x20(%rbp), %rsi
movq -0x8(%rbp), %rax
movslq 0x78(%rax), %rdx
shlq $0x0, %rdx
callq 0x42b0
movq -0x8(%rbp), %rax
movslq 0x78(%rax), %rdi
shlq $0x3, %rdi
leaq 0x1ec06(%rip), %rsi     # 0xee290
movl $0x12, %edx
callq 0x52d70
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
movq -0x28(%rbp), %rsi
movq -0x8(%rbp), %rax
movslq 0x78(%rax), %rdx
shlq $0x3, %rdx
callq 0x42b0
movq -0xd0(%rbp), %rax
movsd -0x30(%rbp), %xmm0
movq -0x8(%rbp), %rcx
movsd %xmm0, 0x50(%rcx)
movsd -0x38(%rbp), %xmm0
movq -0x8(%rbp), %rcx
movsd %xmm0, 0x58(%rcx)
movsd 0x28(%rax), %xmm0
movq -0x8(%rbp), %rax
movsd %xmm0, 0x48(%rax)
movq -0x8(%rbp), %rax
movl $0x0, 0x7c(%rax)
movq -0x8(%rbp), %rax
movslq 0x78(%rax), %rdi
shlq $0x0, %rdi
leaq 0x1eb85(%rip), %rsi     # 0xee290
movl $0x18, %edx
callq 0x52d70
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x18(%rax)
movl $0x0, -0xa4(%rbp)
movl -0xa4(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x78(%rcx), %eax
jge 0xcf759
movq -0x8(%rbp), %rdi
movl -0xa4(%rbp), %esi
callq 0xcdb70
movl -0xa4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa4(%rbp)
jmp 0xcf72a
movq -0x8(%rbp), %rax
movslq 0x78(%rax), %rdi
shlq $0x2, %rdi
leaq 0x1eb24(%rip), %rsi     # 0xee290
movl $0x1b, %edx
callq 0x52d70
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x68(%rax)
movl $0x0, -0xa4(%rbp)
movl -0xa4(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x78(%rcx), %eax
jge 0xcf7c3
movl -0xa4(%rbp), %edx
movq -0x8(%rbp), %rax
movq 0x68(%rax), %rax
movslq -0xa4(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movl -0xa4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa4(%rbp)
jmp 0xcf78b
movq -0x8(%rbp), %rax
movl 0x78(%rax), %ecx
movq -0x8(%rbp), %rax
movl %ecx, (%rax)
movq -0x8(%rbp), %rax
movslq 0x78(%rax), %rdi
shlq $0x3, %rdi
leaq 0x1eaad(%rip), %rsi     # 0xee290
movl $0x1f, %edx
callq 0x52d70
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x8(%rbp), %rax
movslq 0x78(%rax), %rdi
shlq $0x3, %rdi
leaq 0x1ea85(%rip), %rsi     # 0xee290
movl $0x20, %edx
callq 0x52d70
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x70(%rax)
movl $0x0, -0xa4(%rbp)
movl -0xa4(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x78(%rcx), %eax
jge 0xcf885
movq -0x18(%rbp), %rax
movslq -0xa4(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0xa4(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq -0x8(%rbp), %rax
movq 0x70(%rax), %rax
movslq -0xa4(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0xa4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa4(%rbp)
jmp 0xcf82a
movl $0x0, -0xa4(%rbp)
movl -0xa4(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x78(%rcx), %eax
jge 0xcf9e5
movq -0x8(%rbp), %rdi
movl -0xa4(%rbp), %esi
callq 0xcdc50
cmpl $0x0, %eax
jne 0xcf9cf
movq -0x8(%rbp), %rdi
movl -0xa4(%rbp), %esi
movq -0x8(%rbp), %rax
movl 0x78(%rax), %edx
callq 0xcdcd0
movq %rax, -0x40(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa4(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x50(%rbp)
movl $0x0, -0xa8(%rbp)
movl -0xa8(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x78(%rcx), %eax
jge 0xcf94d
movsd -0x50(%rbp), %xmm0
movq -0x40(%rbp), %rax
movslq -0xa8(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0xa8(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0xa8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa8(%rbp)
jmp 0xcf8f7
movq -0x8(%rbp), %rdi
movl -0xa4(%rbp), %esi
callq 0xcdc10
cmpl $0x0, %eax
je 0xcf9cd
movl $0x0, -0xa8(%rbp)
movl -0xa8(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x78(%rcx), %eax
jge 0xcf9cb
movq -0x8(%rbp), %rdi
movl -0xa4(%rbp), %esi
callq 0xcdb20
movq -0x40(%rbp), %rax
movslq -0xa8(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq -0x8(%rbp), %rax
movq 0x70(%rax), %rax
movslq -0xa8(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0xa8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa8(%rbp)
jmp 0xcf96b
jmp 0xcf9cd
jmp 0xcf9cf
jmp 0xcf9d1
movl -0xa4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa4(%rbp)
jmp 0xcf88f
movl $0x0, -0xac(%rbp)
movq -0x8(%rbp), %rax
movl 0x78(%rax), %edi
movl $0x3e8, %esi            # imm = 0x3E8
callq 0x528e0
addl $0x1, %eax
movl %eax, -0xb0(%rbp)
movl -0xb0(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xb0(%rbp)
cmpl $0x0, %eax
jne 0xcfa4e
movq -0x8(%rbp), %rax
movl 0x78(%rax), %edi
movl $0x3e8, %esi            # imm = 0x3E8
callq 0x528e0
movl %eax, %ecx
movq -0xd0(%rbp), %rax
movl %ecx, -0xb0(%rbp)
cmpl $0x0, 0x50(%rax)
je 0xcfa4c
movq -0x8(%rbp), %rdi
callq 0xceb80
jmp 0xcfa4e
movq -0x8(%rbp), %rdi
movl 0x90(%rbp), %ecx
leaq -0xa4(%rbp), %rsi
leaq -0xa8(%rbp), %rdx
callq 0xce060
cmpl $0x0, %eax
je 0xcfab9
movq -0x8(%rbp), %rdi
callq 0xcdf30
movq -0x8(%rbp), %rax
movl 0x78(%rax), %ecx
movq -0x8(%rbp), %rax
movl %ecx, (%rax)
movq -0x8(%rbp), %rdi
movl 0x90(%rbp), %ecx
leaq -0xa4(%rbp), %rsi
leaq -0xa8(%rbp), %rdx
callq 0xce060
cmpl $0x0, %eax
je 0xcfaad
jmp 0xd0394
movl $0x1, -0xb0(%rbp)
jmp 0xcfab9
movl -0xac(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xac(%rbp)
movq -0x8(%rbp), %rdi
movl -0xa4(%rbp), %esi
movq -0x8(%rbp), %rax
movl (%rax), %edx
callq 0xcdcd0
movq %rax, -0x40(%rbp)
movq -0x8(%rbp), %rdi
movl -0xa8(%rbp), %esi
movq -0x8(%rbp), %rax
movl (%rax), %edx
callq 0xcdcd0
movq %rax, -0x48(%rbp)
movq -0x8(%rbp), %rdi
movl -0xa4(%rbp), %esi
callq 0xcdb20
movsd %xmm0, -0x58(%rbp)
movq -0x8(%rbp), %rdi
movl -0xa8(%rbp), %esi
callq 0xcdb20
movsd %xmm0, -0x60(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa4(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x68(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa8(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x70(%rbp)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movslq -0xa4(%rbp), %rcx
movsbl (%rax,%rcx), %eax
movq -0x8(%rbp), %rcx
movq 0x8(%rcx), %rcx
movslq -0xa8(%rbp), %rdx
movsbl (%rcx,%rdx), %ecx
cmpl %ecx, %eax
je 0xcfdef
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0xa4(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0xa8(%rbp), %rcx
subsd (%rax,%rcx,8), %xmm0
movq -0x40(%rbp), %rax
movslq -0xa4(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq -0x48(%rbp), %rax
movslq -0xa8(%rbp), %rcx
addsd (%rax,%rcx,8), %xmm2
movq -0x40(%rbp), %rax
movslq -0xa8(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
addsd %xmm1, %xmm1
addsd %xmm2, %xmm1
xorps %xmm2, %xmm2
maxsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x78(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa4(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa8(%rbp), %rcx
subsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd -0x78(%rbp), %xmm0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa4(%rbp), %rcx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
movsd -0x78(%rbp), %xmm0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa8(%rbp), %rcx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
movsd -0x80(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0xcfccb
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa8(%rbp), %rcx
xorps %xmm0, %xmm0
ucomisd (%rax,%rcx,8), %xmm0
jbe 0xcfcc9
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa8(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movsd -0x80(%rbp), %xmm0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa4(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
jmp 0xcfd2d
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa4(%rbp), %rcx
xorps %xmm0, %xmm0
ucomisd (%rax,%rcx,8), %xmm0
jbe 0xcfd2b
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa4(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movsd -0x80(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa8(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
jmp 0xcfd2d
movsd -0x80(%rbp), %xmm0
movsd -0x58(%rbp), %xmm1
subsd -0x60(%rbp), %xmm1
ucomisd %xmm1, %xmm0
jbe 0xcfd96
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa4(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
ucomisd -0x58(%rbp), %xmm0
jbe 0xcfd94
movsd -0x58(%rbp), %xmm0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa4(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd -0x58(%rbp), %xmm0
subsd -0x80(%rbp), %xmm0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa8(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
jmp 0xcfdea
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa8(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
ucomisd -0x60(%rbp), %xmm0
jbe 0xcfde8
movsd -0x60(%rbp), %xmm0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa8(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd -0x60(%rbp), %xmm0
addsd -0x80(%rbp), %xmm0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa4(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
jmp 0xcfdea
jmp 0xd0035
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0xa4(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0xa8(%rbp), %rcx
subsd (%rax,%rcx,8), %xmm0
movq -0x40(%rbp), %rax
movslq -0xa4(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
movq -0x48(%rbp), %rax
movslq -0xa8(%rbp), %rcx
addsd (%rax,%rcx,8), %xmm1
movq -0x40(%rbp), %rax
movslq -0xa8(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
addsd %xmm2, %xmm2
subsd %xmm2, %xmm1
xorps %xmm2, %xmm2
maxsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x78(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa4(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa8(%rbp), %rcx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd -0x78(%rbp), %xmm1
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa4(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movsd -0x78(%rbp), %xmm0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa8(%rbp), %rcx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
movsd -0x88(%rbp), %xmm0
ucomisd -0x58(%rbp), %xmm0
jbe 0xcff35
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa4(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
ucomisd -0x58(%rbp), %xmm0
jbe 0xcff33
movsd -0x58(%rbp), %xmm0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa4(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd -0x88(%rbp), %xmm0
subsd -0x58(%rbp), %xmm0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa8(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
jmp 0xcff7f
movq -0x28(%rbp), %rax
movslq -0xa8(%rbp), %rcx
xorps %xmm0, %xmm0
ucomisd (%rax,%rcx,8), %xmm0
jbe 0xcff7d
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa8(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movsd -0x88(%rbp), %xmm0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa4(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
jmp 0xcff7f
movsd -0x88(%rbp), %xmm0
ucomisd -0x60(%rbp), %xmm0
jbe 0xcffe5
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa8(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
ucomisd -0x60(%rbp), %xmm0
jbe 0xcffe3
movsd -0x60(%rbp), %xmm0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa8(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd -0x88(%rbp), %xmm0
subsd -0x60(%rbp), %xmm0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa4(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
jmp 0xd0033
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa4(%rbp), %rcx
xorps %xmm0, %xmm0
ucomisd (%rax,%rcx,8), %xmm0
jbe 0xd0031
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa4(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movsd -0x88(%rbp), %xmm0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa8(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
jmp 0xd0033
jmp 0xd0035
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa4(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
subsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa8(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
subsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movl $0x0, -0xbc(%rbp)
movl -0xbc(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl (%rcx), %eax
jge 0xd00f1
movq -0x40(%rbp), %rax
movslq -0xbc(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd -0x90(%rbp), %xmm2
movq -0x48(%rbp), %rax
movslq -0xbc(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd -0x98(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0xbc(%rbp), %rcx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0xbc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xbc(%rbp)
jmp 0xd0081
movq -0x8(%rbp), %rdi
movl -0xa4(%rbp), %esi
callq 0xcdc10
movl %eax, -0xb4(%rbp)
movq -0x8(%rbp), %rdi
movl -0xa8(%rbp), %esi
callq 0xcdc10
movl %eax, -0xb8(%rbp)
movq -0x8(%rbp), %rdi
movl -0xa4(%rbp), %esi
callq 0xcdb70
movq -0x8(%rbp), %rdi
movl -0xa8(%rbp), %esi
callq 0xcdb70
movl -0xb4(%rbp), %eax
movl %eax, -0xec(%rbp)
movq -0x8(%rbp), %rdi
movl -0xa4(%rbp), %esi
callq 0xcdc10
movl %eax, %ecx
movl -0xec(%rbp), %eax
cmpl %ecx, %eax
je 0xd0264
movq -0x8(%rbp), %rdi
movl -0xa4(%rbp), %esi
movq -0x8(%rbp), %rax
movl 0x78(%rax), %edx
callq 0xcdcd0
movq %rax, -0x40(%rbp)
cmpl $0x0, -0xb4(%rbp)
je 0xd0200
movl $0x0, -0xbc(%rbp)
movl -0xbc(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x78(%rcx), %eax
jge 0xd01fe
movsd -0x58(%rbp), %xmm0
movq -0x40(%rbp), %rax
movslq -0xbc(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq -0x8(%rbp), %rax
movq 0x70(%rax), %rax
movslq -0xbc(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
movq %xmm0, %rdx
movabsq $-0x8000000000000000, %rsi # imm = 0x8000000000000000
xorq %rsi, %rdx
movq %rdx, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0xbc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xbc(%rbp)
jmp 0xd0191
jmp 0xd0262
movl $0x0, -0xbc(%rbp)
movl -0xbc(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x78(%rcx), %eax
jge 0xd0260
movsd -0x58(%rbp), %xmm0
movq -0x40(%rbp), %rax
movslq -0xbc(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq -0x8(%rbp), %rax
movq 0x70(%rax), %rax
movslq -0xbc(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0xbc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xbc(%rbp)
jmp 0xd020a
jmp 0xd0262
jmp 0xd0264
movl -0xb8(%rbp), %eax
movl %eax, -0xf0(%rbp)
movq -0x8(%rbp), %rdi
movl -0xa8(%rbp), %esi
callq 0xcdc10
movl %eax, %ecx
movl -0xf0(%rbp), %eax
cmpl %ecx, %eax
je 0xd038f
movq -0x8(%rbp), %rdi
movl -0xa8(%rbp), %esi
movq -0x8(%rbp), %rax
movl 0x78(%rax), %edx
callq 0xcdcd0
movq %rax, -0x48(%rbp)
cmpl $0x0, -0xb8(%rbp)
je 0xd032b
movl $0x0, -0xbc(%rbp)
movl -0xbc(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x78(%rcx), %eax
jge 0xd0329
movsd -0x60(%rbp), %xmm0
movq -0x48(%rbp), %rax
movslq -0xbc(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq -0x8(%rbp), %rax
movq 0x70(%rax), %rax
movslq -0xbc(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
movq %xmm0, %rdx
movabsq $-0x8000000000000000, %rsi # imm = 0x8000000000000000
xorq %rsi, %rdx
movq %rdx, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0xbc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xbc(%rbp)
jmp 0xd02bc
jmp 0xd038d
movl $0x0, -0xbc(%rbp)
movl -0xbc(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x78(%rcx), %eax
jge 0xd038b
movsd -0x60(%rbp), %xmm0
movq -0x48(%rbp), %rax
movslq -0xbc(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq -0x8(%rbp), %rax
movq 0x70(%rax), %rax
movslq -0xbc(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0xbc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xbc(%rbp)
jmp 0xd0335
jmp 0xd038d
jmp 0xd038f
jmp 0xcfa09
movq -0x8(%rbp), %rdi
movq 0x10(%rbp), %rsi
movl 0x90(%rbp), %edx
callq 0xcef10
movq 0x10(%rbp), %rax
movsd %xmm0, 0x8(%rax)
xorps %xmm0, %xmm0
movsd %xmm0, -0xa0(%rbp)
movl $0x0, -0xa4(%rbp)
movl -0xa4(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x78(%rcx), %eax
jge 0xd0439
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa4(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0xa4(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq -0x8(%rbp), %rax
movq 0x60(%rax), %rax
movslq -0xa4(%rbp), %rcx
addsd (%rax,%rcx,8), %xmm2
movsd -0xa0(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xa0(%rbp)
movl -0xa4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa4(%rbp)
jmp 0xd03c5
movsd -0xa0(%rbp), %xmm0
movsd 0x12857(%rip), %xmm1    # 0xe2ca0
divsd %xmm1, %xmm0
movq 0x10(%rbp), %rax
movsd %xmm0, (%rax)
movl $0x0, -0xa4(%rbp)
movl -0xa4(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x78(%rcx), %eax
jge 0xd04af
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xa4(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x28(%rbp), %rax
movq -0x8(%rbp), %rcx
movq 0x68(%rcx), %rcx
movslq -0xa4(%rbp), %rdx
movslq (%rcx,%rdx,4), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl -0xa4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa4(%rbp)
jmp 0xd045f
movsd -0x30(%rbp), %xmm0
movq 0x10(%rbp), %rax
movsd %xmm0, 0x10(%rax)
movsd -0x38(%rbp), %xmm0
movq 0x10(%rbp), %rax
movsd %xmm0, 0x18(%rax)
movq -0x8(%rbp), %rax
movq 0x60(%rax), %rdi
callq 0x52e80
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x52e80
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x52e80
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x52e80
movq -0x8(%rbp), %rax
movq 0x68(%rax), %rdi
callq 0x52e80
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x52e80
movq -0x8(%rbp), %rax
movq 0x70(%rax), %rdi
callq 0x52e80
movl -0x10(%rbp), %eax
movl %eax, -0xf4(%rbp)
testl %eax, %eax
je 0xd054f
jmp 0xd0535
movl -0xf4(%rbp), %eax
subl $0x1, %eax
je 0xd055e
jmp 0xd0542
movl -0xf4(%rbp), %eax
subl $0x2, %eax
je 0xd056d
jmp 0xd057a
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0xcb2e0
jmp 0xd057a
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0xcb880
jmp 0xd057a
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0xcb580
addq $0x170, %rsp            # imm = 0x170
popq %rbp
retq
nopw %cs:(%rax,%rax)