// File: lns[P]team-tactic-topic-model/./lda.cpp
// Function: LDA<unsigned int, unsigned int, unsigned char>::reassign(unsigned int, unsigned int, bool)
void reassign(uint32_t d, uint32_t i, bool first_run=false)
	{
		static vector<double> prob;
		static vector<double> qprob;
		// Remove statistics
		if(not first_run) {
			topic_t k = dat[d][i].z;
			word_t w = dat[d][i].w;
			player_t p = dat[d][i].p;
			float x = dat[d][i].x;
			float y = dat[d][i].y;

			topic[k].c[w]--;
			topic[k].c_sum--;
			topic[k].n[p]--;
			topic[k].x[p]-=x;
			topic[k].y[p]-=y;
			topic[k].xx[p]-=x*x;
			topic[k].xy[p]-=x*y;
			topic[k].yy[p]-=y*y;
			theta[k][d]--;
		}
		prob.resize(topic.size());
		qprob.resize(topic.size());
		// P(z_{d,i}=k | z_{-(d,i)})
		for(topic_t k=0;k<topic.size();k++)
			prob[k] = pct_log_a(theta[k][d]);
		// P(w_{d,i} | z_{d,i}=k)
		for(topic_t k=0;k<topic.size();k++)
			prob[k] += pct_log_b(topic[k].c[dat[d][i].w])-pct_log_Nb(topic[k].c_sum);
		// P(x_{d,i} | z_{d,i}=k)
		for(topic_t k=0;k<topic.size();k++)
			if(use_position) {
				player_t p=dat[d][i].p;
				uint32_t n = topic[k].n[p];
				double x = topic[k].x[p];
				double y = topic[k].y[p];
				double xx = topic[k].xx[p];
				double xy = topic[k].xy[p];
				double yy = topic[k].yy[p];
				double mu0_x = prior.mu0_x;
				double mu0_y = prior.mu0_y;
				double kappa0 = prior.kappa0;
				double nu0 = prior.nu0;
				double Lambda0_xx = prior.Lambda0_xx;
				double Lambda0_xy = prior.Lambda0_xy;
				double Lambda0_yy = prior.Lambda0_yy;

				double kappa_n = kappa0 + n;
				double mu_x = (kappa0*mu0_x + x)/kappa_n;
				double mu_y = (kappa0*mu0_y + y)/kappa_n;
				double nu_n = nu0 + n;
				double Lambda_xx = Lambda0_xx;
				double Lambda_xy = Lambda0_xy;
				double Lambda_yy = Lambda0_yy;
				if(n>0) {
					Lambda_xx += xx - x*x/n + kappa0*n/kappa_n*(x/n-mu0_x)*(x/n-mu0_x);
					Lambda_xy += xy - x*y/n + kappa0*n/kappa_n*(x/n-mu0_x)*(y/n-mu0_y);
					Lambda_yy += yy - y*y/n + kappa0*n/kappa_n*(y/n-mu0_y)*(y/n-mu0_y);
				}
				double Sigma_xx = Lambda_xx*(kappa_n+1)/kappa_n/(nu_n-2+1);
				double Sigma_xy = Lambda_xy*(kappa_n+1)/kappa_n/(nu_n-2+1);
				double Sigma_yy = Lambda_yy*(kappa_n+1)/kappa_n/(nu_n-2+1);
				double det_Sigma = Sigma_xx*Sigma_yy - Sigma_xy*Sigma_xy;
				double SigmaInv_xx = Sigma_yy/det_Sigma;
				double SigmaInv_xy = -Sigma_xy/det_Sigma;
				double SigmaInv_yy = Sigma_xx/det_Sigma;
				double nu = nu_n - 2 + 1;
				double pp = 0; // prob
				pp += lgamma((nu+2)/2);
				pp -= lgamma(nu/2);
				pp -= log(nu);
				//pp -= log(3.1416);
				pp -= 0.5*log(det_Sigma);
				double dx = (dat[d][i].x-mu_x);
				double dy = (dat[d][i].y-mu_y);
				double s_norm = SigmaInv_xx*dx*dx + SigmaInv_yy*dy*dy + 2*SigmaInv_xy*dx*dy;
				pp -= (nu+2)/2*log(1+s_norm/nu);
				prob[k] += pp;
			}
		// Calculate probability and draw rmultinorm
		prop_exp(&prob[0],topic.size());
		dat[d][i].z = rmultinorm(&prob[0],&qprob[0],topic.size());
		// Update statistics
		if(true) {
			topic_t k = dat[d][i].z;
			word_t w = dat[d][i].w;
			player_t p = dat[d][i].p;
			float x = dat[d][i].x;
			float y = dat[d][i].y;

			topic[k].c[w]++;
			topic[k].c_sum++;
			topic[k].n[p]++;
			topic[k].x[p]+=x;
			topic[k].y[p]+=y;
			topic[k].xx[p]+=x*x;
			topic[k].xy[p]+=x*y;
			topic[k].yy[p]+=y*y;
			theta[k][d]++;
		}
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x210, %rsp            # imm = 0x210
movb %cl, %al
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
andb $0x1, %al
movb %al, -0x11(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x148(%rbp)
cmpb $0x0, 0x83ca(%rip)      # 0xf158
jne 0x6dd3
leaq 0x83c1(%rip), %rdi      # 0xf158
callq 0x11d0
cmpl $0x0, %eax
je 0x6dd3
leaq 0x8398(%rip), %rdi      # 0xf140
callq 0x8210
leaq 0x147c(%rip), %rdi      # 0x8230
leaq 0x8385(%rip), %rsi      # 0xf140
leaq 0x833e(%rip), %rdx      # 0xf100
callq 0x10f0
leaq 0x838a(%rip), %rdi      # 0xf158
callq 0x10a0
cmpb $0x0, 0x839e(%rip)      # 0xf178
jne 0x6e1f
leaq 0x8395(%rip), %rdi      # 0xf178
callq 0x11d0
cmpl $0x0, %eax
je 0x6e1f
leaq 0x836c(%rip), %rdi      # 0xf160
callq 0x8210
leaq 0x1430(%rip), %rdi      # 0x8230
leaq 0x8359(%rip), %rsi      # 0xf160
leaq 0x82f2(%rip), %rdx      # 0xf100
callq 0x10f0
leaq 0x835e(%rip), %rdi      # 0xf178
callq 0x10a0
testb $0x1, -0x11(%rbp)
jne 0x7143
movq -0x148(%rbp), %rdi
addq $0x58, %rdi
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0x36d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
movl %eax, %esi
callq 0x8290
movq -0x148(%rbp), %rdi
movb 0x8(%rax), %al
movb %al, -0x12(%rbp)
addq $0x58, %rdi
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0x36d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
movl %eax, %esi
callq 0x8290
movq -0x148(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x18(%rbp)
addq $0x58, %rdi
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0x36d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
movl %eax, %esi
callq 0x8290
movq -0x148(%rbp), %rdi
movl 0x4(%rax), %eax
movl %eax, -0x1c(%rbp)
addq $0x58, %rdi
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0x36d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
movl %eax, %esi
callq 0x8290
movq -0x148(%rbp), %rdi
movss 0xc(%rax), %xmm0
movss %xmm0, -0x20(%rbp)
addq $0x58, %rdi
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0x36d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
movl %eax, %esi
callq 0x8290
movq -0x148(%rbp), %rdi
movss 0x10(%rax), %xmm0
movss %xmm0, -0x24(%rbp)
addq $0x70, %rdi
movzbl -0x12(%rbp), %eax
movl %eax, %esi
callq 0x4bd0
movq -0x148(%rbp), %rdi
movq 0x8(%rax), %rax
movl -0x18(%rbp), %ecx
movl (%rax,%rcx,4), %edx
addl $-0x1, %edx
movl %edx, (%rax,%rcx,4)
addq $0x70, %rdi
movzbl -0x12(%rbp), %eax
movl %eax, %esi
callq 0x4bd0
movq -0x148(%rbp), %rdi
movl (%rax), %ecx
addl $-0x1, %ecx
movl %ecx, (%rax)
addq $0x70, %rdi
movzbl -0x12(%rbp), %eax
movl %eax, %esi
callq 0x4bd0
movq -0x148(%rbp), %rdi
movq 0x10(%rax), %rax
movl -0x1c(%rbp), %ecx
movl (%rax,%rcx,4), %edx
addl $-0x1, %edx
movl %edx, (%rax,%rcx,4)
movss -0x20(%rbp), %xmm0
movss %xmm0, -0x168(%rbp)
addq $0x70, %rdi
movzbl -0x12(%rbp), %eax
movl %eax, %esi
callq 0x4bd0
movss -0x168(%rbp), %xmm1
movq -0x148(%rbp), %rdi
movq 0x18(%rax), %rax
movl -0x1c(%rbp), %ecx
movss (%rax,%rcx,4), %xmm0
subss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movss -0x24(%rbp), %xmm0
movss %xmm0, -0x164(%rbp)
addq $0x70, %rdi
movzbl -0x12(%rbp), %eax
movl %eax, %esi
callq 0x4bd0
movss -0x164(%rbp), %xmm1
movq -0x148(%rbp), %rdi
movq 0x20(%rax), %rax
movl -0x1c(%rbp), %ecx
movss (%rax,%rcx,4), %xmm0
subss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movss -0x20(%rbp), %xmm0
movss %xmm0, -0x160(%rbp)
movss -0x20(%rbp), %xmm0
movss %xmm0, -0x15c(%rbp)
addq $0x70, %rdi
movzbl -0x12(%rbp), %eax
movl %eax, %esi
callq 0x4bd0
movss -0x160(%rbp), %xmm0
movss -0x15c(%rbp), %xmm2
movq -0x148(%rbp), %rdi
movq 0x28(%rax), %rax
movl -0x1c(%rbp), %ecx
movss (%rax,%rcx,4), %xmm1
movd %xmm0, %edx
xorl $0x80000000, %edx       # imm = 0x80000000
movd %edx, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movss -0x20(%rbp), %xmm0
movss %xmm0, -0x158(%rbp)
movss -0x24(%rbp), %xmm0
movss %xmm0, -0x154(%rbp)
addq $0x70, %rdi
movzbl -0x12(%rbp), %eax
movl %eax, %esi
callq 0x4bd0
movss -0x158(%rbp), %xmm0
movss -0x154(%rbp), %xmm2
movq -0x148(%rbp), %rdi
movq 0x30(%rax), %rax
movl -0x1c(%rbp), %ecx
movss (%rax,%rcx,4), %xmm1
movd %xmm0, %edx
xorl $0x80000000, %edx       # imm = 0x80000000
movd %edx, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movss -0x24(%rbp), %xmm0
movss %xmm0, -0x150(%rbp)
movss -0x24(%rbp), %xmm0
movss %xmm0, -0x14c(%rbp)
addq $0x70, %rdi
movzbl -0x12(%rbp), %eax
movl %eax, %esi
callq 0x4bd0
movss -0x150(%rbp), %xmm0
movss -0x14c(%rbp), %xmm2
movq -0x148(%rbp), %rdi
movq 0x38(%rax), %rax
movl -0x1c(%rbp), %ecx
movss (%rax,%rcx,4), %xmm1
movd %xmm0, %edx
xorl $0x80000000, %edx       # imm = 0x80000000
movd %edx, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
addq $0x88, %rdi
movzbl -0x12(%rbp), %eax
movl %eax, %esi
callq 0x4b20
movq %rax, %rdi
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0x6d40
movl (%rax), %ecx
addl $-0x1, %ecx
movl %ecx, (%rax)
movq -0x148(%rbp), %rdi
addq $0x70, %rdi
callq 0x1e60
movq %rax, %rsi
leaq 0x7fe3(%rip), %rdi      # 0xf140
callq 0x82b0
movq -0x148(%rbp), %rdi
addq $0x70, %rdi
callq 0x1e60
movq %rax, %rsi
leaq 0x7fe4(%rip), %rdi      # 0xf160
callq 0x82b0
movb $0x0, -0x25(%rbp)
movq -0x148(%rbp), %rdi
movzbl -0x25(%rbp), %eax
movq %rax, -0x170(%rbp)
addq $0x70, %rdi
callq 0x1e60
movq %rax, %rcx
movq -0x170(%rbp), %rax
cmpq %rcx, %rax
jae 0x7226
movq -0x148(%rbp), %rdi
movq %rdi, %rax
addq $0xa0, %rax
movq %rax, -0x180(%rbp)
addq $0x88, %rdi
movzbl -0x25(%rbp), %eax
movl %eax, %esi
callq 0x4b20
movq %rax, %rdi
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0x6d40
movq -0x180(%rbp), %rdi
movl (%rax), %esi
callq 0x8340
movsd %xmm0, -0x178(%rbp)
movzbl -0x25(%rbp), %eax
movl %eax, %esi
leaq 0x7f38(%rip), %rdi      # 0xf140
callq 0x83a0
movsd -0x178(%rbp), %xmm0
movsd %xmm0, (%rax)
movb -0x25(%rbp), %al
addb $0x1, %al
movb %al, -0x25(%rbp)
jmp 0x7185
movb $0x0, -0x26(%rbp)
movq -0x148(%rbp), %rdi
movzbl -0x26(%rbp), %eax
movq %rax, -0x188(%rbp)
addq $0x70, %rdi
callq 0x1e60
movq %rax, %rcx
movq -0x188(%rbp), %rax
cmpq %rcx, %rax
jae 0x7348
movq -0x148(%rbp), %rdi
movq %rdi, %rax
addq $0xc0, %rax
movq %rax, -0x1b0(%rbp)
addq $0x70, %rdi
movzbl -0x26(%rbp), %eax
movl %eax, %esi
callq 0x4bd0
movq -0x148(%rbp), %rdi
movq 0x8(%rax), %rax
movq %rax, -0x1a8(%rbp)
addq $0x58, %rdi
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0x36d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
movl %eax, %esi
callq 0x8290
movq -0x1b0(%rbp), %rdi
movq %rax, %rcx
movq -0x1a8(%rbp), %rax
movl (%rcx), %ecx
movl (%rax,%rcx,4), %esi
callq 0x8340
movq -0x148(%rbp), %rdi
movsd %xmm0, -0x198(%rbp)
movq %rdi, %rax
addq $0xe0, %rax
movq %rax, -0x1a0(%rbp)
addq $0x70, %rdi
movzbl -0x26(%rbp), %eax
movl %eax, %esi
callq 0x4bd0
movq -0x1a0(%rbp), %rdi
movl (%rax), %esi
callq 0x8340
movaps %xmm0, %xmm1
movsd -0x198(%rbp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, -0x190(%rbp)
movzbl -0x26(%rbp), %eax
movl %eax, %esi
leaq 0x7e1a(%rip), %rdi      # 0xf140
callq 0x83a0
movsd -0x190(%rbp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, (%rax)
movb -0x26(%rbp), %al
addb $0x1, %al
movb %al, -0x26(%rbp)
jmp 0x722a
movb $0x0, -0x27(%rbp)
movq -0x148(%rbp), %rdi
movzbl -0x27(%rbp), %eax
movq %rax, -0x1b8(%rbp)
addq $0x70, %rdi
callq 0x1e60
movq %rax, %rcx
movq -0x1b8(%rbp), %rax
cmpq %rcx, %rax
jae 0x7b10
movq -0x148(%rbp), %rax
testb $0x1, (%rax)
je 0x7b01
movq -0x148(%rbp), %rdi
addq $0x58, %rdi
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0x36d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
movl %eax, %esi
callq 0x8290
movq -0x148(%rbp), %rdi
movl 0x4(%rax), %eax
movl %eax, -0x2c(%rbp)
addq $0x70, %rdi
movq %rdi, -0x1c0(%rbp)
movzbl -0x27(%rbp), %eax
movl %eax, %esi
callq 0x4bd0
movq -0x1c0(%rbp), %rdi
movq 0x10(%rax), %rax
movl -0x2c(%rbp), %ecx
movl (%rax,%rcx,4), %eax
movl %eax, -0x30(%rbp)
movzbl -0x27(%rbp), %eax
movl %eax, %esi
callq 0x4bd0
movq -0x1c0(%rbp), %rdi
movq 0x18(%rax), %rax
movl -0x2c(%rbp), %ecx
movss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x38(%rbp)
movzbl -0x27(%rbp), %eax
movl %eax, %esi
callq 0x4bd0
movq -0x1c0(%rbp), %rdi
movq 0x20(%rax), %rax
movl -0x2c(%rbp), %ecx
movss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x40(%rbp)
movzbl -0x27(%rbp), %eax
movl %eax, %esi
callq 0x4bd0
movq -0x1c0(%rbp), %rdi
movq 0x28(%rax), %rax
movl -0x2c(%rbp), %ecx
movss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x48(%rbp)
movzbl -0x27(%rbp), %eax
movl %eax, %esi
callq 0x4bd0
movq -0x1c0(%rbp), %rdi
movq 0x30(%rax), %rax
movl -0x2c(%rbp), %ecx
movss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x50(%rbp)
movzbl -0x27(%rbp), %eax
movl %eax, %esi
callq 0x4bd0
movq %rax, %rcx
movq -0x148(%rbp), %rax
movq 0x38(%rcx), %rcx
movl -0x2c(%rbp), %edx
movss (%rcx,%rdx,4), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x58(%rbp)
movsd 0x20(%rax), %xmm0
movsd %xmm0, -0x60(%rbp)
movsd 0x28(%rax), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd 0x30(%rax), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd 0x50(%rax), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x38(%rax), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x40(%rax), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x48(%rax), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd -0x70(%rbp), %xmm0
movl -0x30(%rbp), %eax
cvtsi2sd %rax, %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x98(%rbp)
movsd -0x70(%rbp), %xmm0
movsd -0x60(%rbp), %xmm2
movsd -0x38(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd -0x98(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0xa0(%rbp)
movsd -0x70(%rbp), %xmm0
movsd -0x68(%rbp), %xmm2
movsd -0x40(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd -0x98(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd -0x78(%rbp), %xmm0
movl -0x30(%rbp), %eax
cvtsi2sd %rax, %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0xb0(%rbp)
movsd -0x80(%rbp), %xmm0
movsd %xmm0, -0xb8(%rbp)
movsd -0x88(%rbp), %xmm0
movsd %xmm0, -0xc0(%rbp)
movsd -0x90(%rbp), %xmm0
movsd %xmm0, -0xc8(%rbp)
cmpl $0x0, -0x30(%rbp)
jbe 0x76f7
movsd -0x48(%rbp), %xmm0
movsd -0x38(%rbp), %xmm2
movaps %xmm2, %xmm1
mulsd %xmm1, %xmm1
movl -0x30(%rbp), %eax
cvtsi2sd %rax, %xmm3
divsd %xmm3, %xmm1
subsd %xmm1, %xmm0
movsd -0x70(%rbp), %xmm1
mulsd %xmm3, %xmm1
movsd -0x98(%rbp), %xmm4
divsd %xmm4, %xmm1
divsd %xmm3, %xmm2
movsd -0x60(%rbp), %xmm3
subsd %xmm3, %xmm2
mulsd %xmm2, %xmm1
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd -0xb8(%rbp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xb8(%rbp)
movsd -0x50(%rbp), %xmm0
movsd -0x38(%rbp), %xmm4
movsd -0x40(%rbp), %xmm2
movaps %xmm4, %xmm1
mulsd %xmm2, %xmm1
movl -0x30(%rbp), %eax
cvtsi2sd %rax, %xmm3
divsd %xmm3, %xmm1
subsd %xmm1, %xmm0
movsd -0x70(%rbp), %xmm1
mulsd %xmm3, %xmm1
movsd -0x98(%rbp), %xmm5
divsd %xmm5, %xmm1
divsd %xmm3, %xmm4
movsd -0x60(%rbp), %xmm5
subsd %xmm5, %xmm4
mulsd %xmm4, %xmm1
divsd %xmm3, %xmm2
movsd -0x68(%rbp), %xmm3
subsd %xmm3, %xmm2
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd -0xc0(%rbp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xc0(%rbp)
movsd -0x58(%rbp), %xmm1
movsd -0x40(%rbp), %xmm2
movaps %xmm2, %xmm0
mulsd %xmm0, %xmm0
movl -0x30(%rbp), %eax
cvtsi2sd %rax, %xmm3
divsd %xmm3, %xmm0
subsd %xmm0, %xmm1
movsd -0x70(%rbp), %xmm0
mulsd %xmm3, %xmm0
movsd -0x98(%rbp), %xmm4
divsd %xmm4, %xmm0
movaps %xmm2, %xmm4
divsd %xmm3, %xmm4
movsd -0x68(%rbp), %xmm5
subsd %xmm5, %xmm4
mulsd %xmm4, %xmm0
divsd %xmm3, %xmm2
subsd -0x68(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
addsd -0xc8(%rbp), %xmm0
movsd %xmm0, -0xc8(%rbp)
movsd -0xb8(%rbp), %xmm0
movsd 0x2901(%rip), %xmm1     # 0xa008
addsd -0x98(%rbp), %xmm1
mulsd %xmm1, %xmm0
divsd -0x98(%rbp), %xmm0
movsd -0xb0(%rbp), %xmm1
movsd 0x28e5(%rip), %xmm2     # 0xa010
subsd %xmm2, %xmm1
movsd 0x28d1(%rip), %xmm2     # 0xa008
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0xd0(%rbp)
movsd -0xc0(%rbp), %xmm0
movsd 0x28b1(%rip), %xmm1     # 0xa008
addsd -0x98(%rbp), %xmm1
mulsd %xmm1, %xmm0
divsd -0x98(%rbp), %xmm0
movsd -0xb0(%rbp), %xmm1
movsd 0x2895(%rip), %xmm2     # 0xa010
subsd %xmm2, %xmm1
movsd 0x2881(%rip), %xmm2     # 0xa008
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0xd8(%rbp)
movsd -0xc8(%rbp), %xmm0
movsd 0x2861(%rip), %xmm1     # 0xa008
addsd -0x98(%rbp), %xmm1
mulsd %xmm1, %xmm0
divsd -0x98(%rbp), %xmm0
movsd -0xb0(%rbp), %xmm1
movsd 0x2845(%rip), %xmm2     # 0xa010
subsd %xmm2, %xmm1
movsd 0x2831(%rip), %xmm2     # 0xa008
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0xe0(%rbp)
movsd -0xd0(%rbp), %xmm0
movsd -0xe0(%rbp), %xmm2
movsd -0xd8(%rbp), %xmm1
mulsd -0xd8(%rbp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xe8(%rbp)
movsd -0xe0(%rbp), %xmm0
divsd -0xe8(%rbp), %xmm0
movsd %xmm0, -0xf0(%rbp)
movsd -0xd8(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
divsd -0xe8(%rbp), %xmm0
movsd %xmm0, -0xf8(%rbp)
movsd -0xd0(%rbp), %xmm0
divsd -0xe8(%rbp), %xmm0
movsd %xmm0, -0x100(%rbp)
movsd -0xb0(%rbp), %xmm0
movsd 0x2773(%rip), %xmm1     # 0xa010
subsd %xmm1, %xmm0
movsd 0x275f(%rip), %xmm1     # 0xa008
addsd %xmm1, %xmm0
movsd %xmm0, -0x108(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x110(%rbp)
movsd 0x2748(%rip), %xmm0     # 0xa010
addsd -0x108(%rbp), %xmm0
movsd 0x2738(%rip), %xmm1     # 0xa010
divsd %xmm1, %xmm0
callq 0x10b0
addsd -0x110(%rbp), %xmm0
movsd %xmm0, -0x110(%rbp)
movsd -0x108(%rbp), %xmm0
movsd 0x270f(%rip), %xmm1     # 0xa010
divsd %xmm1, %xmm0
callq 0x10b0
movaps %xmm0, %xmm1
movsd -0x110(%rbp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, -0x110(%rbp)
movsd -0x108(%rbp), %xmm0
callq 0x11f8
movaps %xmm0, %xmm1
movsd -0x110(%rbp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, -0x110(%rbp)
movsd -0xe8(%rbp), %xmm0
callq 0x11f8
movq -0x148(%rbp), %rdi
movsd -0x110(%rbp), %xmm1
movsd 0x26af(%rip), %xmm2     # 0xa018
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x110(%rbp)
addq $0x58, %rdi
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0x36d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
movl %eax, %esi
callq 0x8290
movq -0x148(%rbp), %rdi
movss 0xc(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
subsd -0xa0(%rbp), %xmm0
movsd %xmm0, -0x118(%rbp)
addq $0x58, %rdi
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0x36d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
movl %eax, %esi
callq 0x8290
movss 0x10(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
subsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0x120(%rbp)
movsd -0xf0(%rbp), %xmm1
mulsd -0x118(%rbp), %xmm1
movsd -0x118(%rbp), %xmm2
movsd -0x100(%rbp), %xmm0
mulsd -0x120(%rbp), %xmm0
mulsd -0x120(%rbp), %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x25e8(%rip), %xmm0     # 0xa010
mulsd -0xf8(%rbp), %xmm0
mulsd -0x118(%rbp), %xmm0
movsd -0x120(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x128(%rbp)
movsd 0x25b8(%rip), %xmm0     # 0xa010
addsd -0x108(%rbp), %xmm0
movsd 0x25a8(%rip), %xmm1     # 0xa010
divsd %xmm1, %xmm0
movsd %xmm0, -0x1d0(%rbp)
movsd -0x128(%rbp), %xmm1
divsd -0x108(%rbp), %xmm1
movsd 0x257c(%rip), %xmm0     # 0xa008
addsd %xmm1, %xmm0
callq 0x11f8
movaps %xmm0, %xmm2
movsd -0x1d0(%rbp), %xmm0
movsd -0x110(%rbp), %xmm1
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x110(%rbp)
movsd -0x110(%rbp), %xmm0
movsd %xmm0, -0x1c8(%rbp)
movzbl -0x27(%rbp), %eax
movl %eax, %esi
leaq 0x7654(%rip), %rdi      # 0xf140
callq 0x83a0
movsd -0x1c8(%rbp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, (%rax)
jmp 0x7b03
movb -0x27(%rbp), %al
addb $0x1, %al
movb %al, -0x27(%rbp)
jmp 0x734c
leaq 0x7629(%rip), %rdi      # 0xf140
xorl %eax, %eax
movl %eax, %esi
callq 0x83a0
movq -0x148(%rbp), %rdi
movq %rax, -0x210(%rbp)
addq $0x70, %rdi
callq 0x1e60
movq -0x210(%rbp), %rdi
movl %eax, %esi
callq 0x83c0
leaq 0x75f4(%rip), %rdi      # 0xf140
xorl %eax, %eax
movl %eax, %esi
callq 0x83a0
movq %rax, -0x208(%rbp)
leaq 0x75fd(%rip), %rdi      # 0xf160
xorl %eax, %eax
movl %eax, %esi
callq 0x83a0
movq -0x148(%rbp), %rdi
movq %rax, -0x200(%rbp)
addq $0x70, %rdi
callq 0x1e60
movq -0x208(%rbp), %rdi
movq -0x200(%rbp), %rsi
movl %eax, %edx
movl $0x1, %ecx
callq 0x8480
movq -0x148(%rbp), %rdi
movb %al, -0x1f1(%rbp)
addq $0x58, %rdi
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0x36d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
movl %eax, %esi
callq 0x8290
movb -0x1f1(%rbp), %cl
movq -0x148(%rbp), %rdi
movb %cl, 0x8(%rax)
addq $0x58, %rdi
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0x36d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
movl %eax, %esi
callq 0x8290
movq -0x148(%rbp), %rdi
movb 0x8(%rax), %al
movb %al, -0x129(%rbp)
addq $0x58, %rdi
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0x36d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
movl %eax, %esi
callq 0x8290
movq -0x148(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x130(%rbp)
addq $0x58, %rdi
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0x36d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
movl %eax, %esi
callq 0x8290
movq -0x148(%rbp), %rdi
movl 0x4(%rax), %eax
movl %eax, -0x134(%rbp)
addq $0x58, %rdi
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0x36d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
movl %eax, %esi
callq 0x8290
movq -0x148(%rbp), %rdi
movss 0xc(%rax), %xmm0
movss %xmm0, -0x138(%rbp)
addq $0x58, %rdi
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0x36d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
movl %eax, %esi
callq 0x8290
movq -0x148(%rbp), %rdi
movss 0x10(%rax), %xmm0
movss %xmm0, -0x13c(%rbp)
addq $0x70, %rdi
movzbl -0x129(%rbp), %eax
movl %eax, %esi
callq 0x4bd0
movq -0x148(%rbp), %rdi
movq 0x8(%rax), %rax
movl -0x130(%rbp), %ecx
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
movl %edx, (%rax,%rcx,4)
addq $0x70, %rdi
movzbl -0x129(%rbp), %eax
movl %eax, %esi
callq 0x4bd0
movq -0x148(%rbp), %rdi
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
addq $0x70, %rdi
movzbl -0x129(%rbp), %eax
movl %eax, %esi
callq 0x4bd0
movq -0x148(%rbp), %rdi
movq 0x10(%rax), %rax
movl -0x134(%rbp), %ecx
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
movl %edx, (%rax,%rcx,4)
movss -0x138(%rbp), %xmm0
movss %xmm0, -0x1f0(%rbp)
addq $0x70, %rdi
movzbl -0x129(%rbp), %eax
movl %eax, %esi
callq 0x4bd0
movss -0x1f0(%rbp), %xmm0
movq -0x148(%rbp), %rdi
movq 0x18(%rax), %rax
movl -0x134(%rbp), %ecx
addss (%rax,%rcx,4), %xmm0
movss %xmm0, (%rax,%rcx,4)
movss -0x13c(%rbp), %xmm0
movss %xmm0, -0x1ec(%rbp)
addq $0x70, %rdi
movzbl -0x129(%rbp), %eax
movl %eax, %esi
callq 0x4bd0
movss -0x1ec(%rbp), %xmm0
movq -0x148(%rbp), %rdi
movq 0x20(%rax), %rax
movl -0x134(%rbp), %ecx
addss (%rax,%rcx,4), %xmm0
movss %xmm0, (%rax,%rcx,4)
movss -0x138(%rbp), %xmm0
movss %xmm0, -0x1e8(%rbp)
movss -0x138(%rbp), %xmm0
movss %xmm0, -0x1e4(%rbp)
addq $0x70, %rdi
movzbl -0x129(%rbp), %eax
movl %eax, %esi
callq 0x4bd0
movss -0x1e8(%rbp), %xmm0
movss -0x1e4(%rbp), %xmm2
movq -0x148(%rbp), %rdi
movq 0x28(%rax), %rax
movl -0x134(%rbp), %ecx
movss (%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movss -0x138(%rbp), %xmm0
movss %xmm0, -0x1e0(%rbp)
movss -0x13c(%rbp), %xmm0
movss %xmm0, -0x1dc(%rbp)
addq $0x70, %rdi
movzbl -0x129(%rbp), %eax
movl %eax, %esi
callq 0x4bd0
movss -0x1e0(%rbp), %xmm0
movss -0x1dc(%rbp), %xmm2
movq -0x148(%rbp), %rdi
movq 0x30(%rax), %rax
movl -0x134(%rbp), %ecx
movss (%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movss -0x13c(%rbp), %xmm0
movss %xmm0, -0x1d8(%rbp)
movss -0x13c(%rbp), %xmm0
movss %xmm0, -0x1d4(%rbp)
addq $0x70, %rdi
movzbl -0x129(%rbp), %eax
movl %eax, %esi
callq 0x4bd0
movss -0x1d8(%rbp), %xmm0
movss -0x1d4(%rbp), %xmm2
movq -0x148(%rbp), %rdi
movq 0x38(%rax), %rax
movl -0x134(%rbp), %ecx
movss (%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
addq $0x88, %rdi
movzbl -0x129(%rbp), %eax
movl %eax, %esi
callq 0x4b20
movq %rax, %rdi
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0x6d40
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
addq $0x210, %rsp            # imm = 0x210
popq %rbp
retq
nopw %cs:(%rax,%rax)