// File: richardposner[P]BioNetFit2/src/code/Swarm.cpp
// Function: Swarm::mutateParticleSA(unsigned int, float)
vector<double> Swarm::mutateParticleSA(unsigned int particle, float mutateFactor) {

	if (options.verbosity >= 3) {
		cout << "Mutating particle " << particle << endl;
	}

	vector<double> mutatedParams;

	// f between 0.1 and 0.9
	//float f = 0.1 + static_cast <float> (rand()) /( static_cast <float> (RAND_MAX/(0.9-0.1)));
	float f;
	if (mutateFactor) {
		f = mutateFactor;
	}
	else {
		f = 0.9;
	}

	boost::random::uniform_int_distribution<int> unif(1, options.swarmSize);

	if (options.mutateType == 1) {
		int bestParticle = 0;
		for (auto fitVal = particleBestFitsByFit_.begin(); fitVal != particleBestFitsByFit_.end(); ++fitVal) {
			if (fitVal->first > 0 ) {
				bestParticle = fitVal->second;
				//cout << "setting particle " << fitVal->second << " as best with fit of " << fitVal -> first << endl;
				break;
			}
		}
		vector<double> bestParamSet = normalizeParams(particleCurrParamSets_.at(bestParticle));
		unsigned int pi = 0;
		for (auto param = this->getFreeParams_().begin(); param != this->getFreeParams_().end(); ++param) {//for (auto param = options.model->getFreeParams_().begin(); param != options.model->getFreeParams_().end(); ++param) {
			int p1 = 0;
			int p2 = 0;

			while (p1 == p2) {
				p1 = unif(generalRand);
				p2 = unif(generalRand);
			}

			//cout << "p1: " << p1 << " p2: " << p2 << " pi: " << pi << endl;
			double p1Param = normalizeParam(particleCurrParamSets_.at(p1)[pi], param->second->getGenMin(), param->second->getGenMax(), param->second->getIsLog());
			double p2Param = normalizeParam(particleCurrParamSets_.at(p2)[pi], param->second->getGenMin(), param->second->getGenMax(), param->second->getIsLog());
			mutatedParams.push_back(bestParamSet[pi] + f * (p1Param - p2Param));
			++pi;
		}
	}
	else if (options.mutateType == 2) {
		unsigned int pi = 0;
		int bestParticle = 0;
		for (auto fitVal = particleBestFitsByFit_.begin(); fitVal != particleBestFitsByFit_.end(); ++fitVal) {
			if (fitVal->first > 0) {
				bestParticle = fitVal->second;
			}
		}
		vector<double> bestParamSet = normalizeParams(particleCurrParamSets_.at(bestParticle));
		for (auto param = this->getFreeParams_().begin(); param != this->getFreeParams_().end(); ++param) { //for (auto param = options.model->getFreeParams_().begin(); param != options.model->getFreeParams_().end(); ++param) {
			int p1 = 0;
			int p2 = 0;
			int p3 = 0;
			int p4 = 0;
			while (p1 == p2 || p1 == p3 || p1 == p4 || p2 == p3 || p2 == p4 || p3 == p4) {
				p1 = unif(generalRand);
				p2 = unif(generalRand);
				p3 = unif(generalRand);
				p4 = unif(generalRand);
			}

			double p1Param = normalizeParam(particleCurrParamSets_.at(p1)[pi], param->second->getGenMin(), param->second->getGenMax(), param->second->getIsLog());
			double p2Param = normalizeParam(particleCurrParamSets_.at(p2)[pi], param->second->getGenMin(), param->second->getGenMax(), param->second->getIsLog());
			double p3Param = normalizeParam(particleCurrParamSets_.at(p3)[pi], param->second->getGenMin(), param->second->getGenMax(), param->second->getIsLog());
			double p4Param = normalizeParam(particleCurrParamSets_.at(p4)[pi], param->second->getGenMin(), param->second->getGenMax(), param->second->getIsLog());

			mutatedParams.push_back(bestParamSet[pi] + f * (p1Param - p2Param) + f * (p3Param - p4Param));
			++pi;
		}
	}
	else if (options.mutateType == 3) {
		unsigned int pi = 0;
		int bestParticle = 0;
		for (auto fitVal = particleBestFitsByFit_.begin(); fitVal != particleBestFitsByFit_.end(); ++fitVal) {
			if (fitVal->first > 0) {
				bestParticle = fitVal->second;
			}
		}
		vector<double> bestParamSet = normalizeParams(particleCurrParamSets_.at(bestParticle));
		for (auto param = this->getFreeParams_().begin(); param != this->getFreeParams_().end(); ++param) { //for (auto param = options.model->getFreeParams_().begin(); param != options.model->getFreeParams_().end(); ++param) {
			int p1 = 0;
			int p2 = 0;
			int p3 = 0;
			while (p1 == p2 || p1 == p3 || p2 == p3) {
				p1 = unif(generalRand);
				p2 = unif(generalRand);
				p3 = unif(generalRand);
			}

			double p1Param = normalizeParam(particleCurrParamSets_.at(p1)[pi], param->second->getGenMin(), param->second->getGenMax(), param->second->getIsLog());
			double p2Param = normalizeParam(particleCurrParamSets_.at(p2)[pi], param->second->getGenMin(), param->second->getGenMax(), param->second->getIsLog());
			double p3Param = normalizeParam(particleCurrParamSets_.at(p3)[pi], param->second->getGenMin(), param->second->getGenMax(), param->second->getIsLog());

			mutatedParams.push_back(p1Param + f * (p2Param - p3Param));
			++pi;
		}
	}
	else if (options.mutateType == 4) {
		unsigned int pi = 0;
		int bestParticle = 0;
		for (auto fitVal = particleBestFitsByFit_.begin(); fitVal != particleBestFitsByFit_.end(); ++fitVal) {
			if (fitVal->first > 0) {
				bestParticle = fitVal->second;
			}
		}
		vector<double> bestParamSet = normalizeParams(particleCurrParamSets_.at(bestParticle));
		for (auto param = this->getFreeParams_().begin(); param != this->getFreeParams_().end(); ++param) {  //for (auto param = options.model->getFreeParams_().begin(); param != options.model->getFreeParams_().end(); ++param) {
			int p1 = 0;
			int p2 = 0;
			int p3 = 0;
			int p4 = 0;
			int p5 = 0;
			// This (and above instances) should be optimized
			while (p1 == p2 || p1 == p3 || p1 == p4 || p2 == p3 || p2 == p4 || p3 == p4 || p1 == p5 || p2 == p5 || p3 == p5 || p4 == p5) {
				p1 = unif(generalRand);
				p2 = unif(generalRand);
				p3 = unif(generalRand);
				p4 = unif(generalRand);
				p5 = unif(generalRand);
			}

			double p1Param = normalizeParam(particleCurrParamSets_.at(p1)[pi], param->second->getGenMin(), param->second->getGenMax(), param->second->getIsLog());
			double p2Param = normalizeParam(particleCurrParamSets_.at(p2)[pi], param->second->getGenMin(), param->second->getGenMax(), param->second->getIsLog());
			double p3Param = normalizeParam(particleCurrParamSets_.at(p3)[pi], param->second->getGenMin(), param->second->getGenMax(), param->second->getIsLog());
			double p4Param = normalizeParam(particleCurrParamSets_.at(p4)[pi], param->second->getGenMin(), param->second->getGenMax(), param->second->getIsLog());
			double p5Param = normalizeParam(particleCurrParamSets_.at(p5)[pi], param->second->getGenMin(), param->second->getGenMax(), param->second->getIsLog());

			mutatedParams.push_back(p1Param + f * (p2Param - p3Param) + f * (p4Param - p5Param));
			++pi;
		}
	}

	return mutatedParams;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x6c0, %rsp            # imm = 0x6C0
movq %rdi, -0x308(%rbp)
movq %rdi, %rax
movq %rax, -0x300(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movss %xmm0, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x2f8(%rbp)
cmpl $0x3, 0x1614(%rax)
jb 0x117ffd
movq 0x1bcf79(%rip), %rdi    # 0x2d4f50
leaq 0xcc45a(%rip), %rsi     # 0x1e4438
callq 0x2ff50
movq %rax, %rdi
movl -0x14(%rbp), %esi
callq 0x30640
movq %rax, %rdi
movq 0x1bcfd0(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
movq -0x308(%rbp), %rdi
movb $0x0, -0x19(%rbp)
callq 0xb2580
movss -0x18(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x11801e
jp 0x11801e
jmp 0x11802a
movss -0x18(%rbp), %xmm0
movss %xmm0, -0x20(%rbp)
jmp 0x118037
movss 0xc8b32(%rip), %xmm0    # 0x1e0b64
movss %xmm0, -0x20(%rbp)
movq -0x2f8(%rbp), %rax
movl 0x1620(%rax), %edx
leaq -0x28(%rbp), %rdi
movl $0x1, %esi
callq 0x123cd0
jmp 0x118054
movq -0x2f8(%rbp), %rax
cmpl $0x1, 0x1700(%rax)
jne 0x1184f5
movq -0x2f8(%rbp), %rdi
movl $0x0, -0x38(%rbp)
addq $0x1ab0, %rdi           # imm = 0x1AB0
callq 0x122630
movq %rax, -0x40(%rbp)
movq -0x2f8(%rbp), %rdi
addq $0x1ab0, %rdi           # imm = 0x1AB0
callq 0x1231a0
movq %rax, -0x48(%rbp)
leaq -0x40(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x1231d0
testb $0x1, %al
jne 0x1180b0
jmp 0x1180f5
leaq -0x40(%rbp), %rdi
callq 0x122660
movsd (%rax), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x1180e8
leaq -0x40(%rbp), %rdi
callq 0x122660
movl 0x8(%rax), %eax
movl %eax, -0x38(%rbp)
jmp 0x1180f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x119ce5
jmp 0x1180ea
leaq -0x40(%rbp), %rdi
callq 0xcbd20
jmp 0x118086
movq -0x2f8(%rbp), %rdi
addq $0x1400, %rdi           # imm = 0x1400
movl -0x38(%rbp), %eax
movl %eax, -0x7c(%rbp)
leaq -0x7c(%rbp), %rsi
callq 0x122470
movq %rax, -0x310(%rbp)
jmp 0x11811b
movq -0x310(%rbp), %rsi
leaq -0x78(%rbp), %rdi
callq 0xb2bc0
jmp 0x11812d
movq -0x2f8(%rbp), %rsi
leaq -0x60(%rbp), %rdi
leaq -0x78(%rbp), %rdx
callq 0x117e60
jmp 0x118143
leaq -0x78(%rbp), %rdi
callq 0xb2660
movq -0x2f8(%rbp), %rdi
movl $0x0, -0x80(%rbp)
callq 0x125110
movq %rax, -0x318(%rbp)
jmp 0x118168
movq -0x318(%rbp), %rdi
callq 0xb3200
movq %rax, -0x88(%rbp)
movq -0x2f8(%rbp), %rdi
callq 0x125110
movq %rax, -0x320(%rbp)
jmp 0x118190
movq -0x320(%rbp), %rdi
callq 0xb3310
movq %rax, -0x90(%rbp)
leaq -0x88(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0xb32e0
testb $0x1, %al
jne 0x1181bf
jmp 0x1184e7
movl $0x0, -0x94(%rbp)
movl $0x0, -0x98(%rbp)
movl -0x94(%rbp), %eax
cmpl -0x98(%rbp), %eax
jne 0x11826b
movq -0x2f8(%rbp), %rsi
addq $0x58, %rsi
leaq -0x28(%rbp), %rdi
callq 0x123e00
movl %eax, -0x324(%rbp)
jmp 0x118201
movq -0x2f8(%rbp), %rsi
movl -0x324(%rbp), %eax
movl %eax, -0x94(%rbp)
addq $0x58, %rsi
leaq -0x28(%rbp), %rdi
callq 0x123e00
movl %eax, -0x328(%rbp)
jmp 0x118229
movl -0x328(%rbp), %eax
movl %eax, -0x98(%rbp)
jmp 0x1181d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x78(%rbp), %rdi
callq 0xb2660
jmp 0x119ce5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x60(%rbp), %rdi
callq 0xb2660
jmp 0x119ce5
movq -0x2f8(%rbp), %rdi
addq $0x1400, %rdi           # imm = 0x1400
movl -0x94(%rbp), %eax
movl %eax, -0xa4(%rbp)
leaq -0xa4(%rbp), %rsi
callq 0x122470
movq %rax, -0x330(%rbp)
jmp 0x11829a
movq -0x330(%rbp), %rdi
movl -0x80(%rbp), %eax
movl %eax, %esi
callq 0xb2610
movsd (%rax), %xmm0
movsd %xmm0, -0x340(%rbp)
leaq -0x88(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb26f0
movss %xmm0, -0x334(%rbp)
jmp 0x1182d6
movss -0x334(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x350(%rbp)
leaq -0x88(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb2710
movss %xmm0, -0x344(%rbp)
jmp 0x118309
movss -0x344(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x360(%rbp)
leaq -0x88(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0x125bb0
movb %al, -0x351(%rbp)
jmp 0x11833a
movq -0x2f8(%rbp), %rdi
movsd -0x360(%rbp), %xmm2
movsd -0x350(%rbp), %xmm1
movsd -0x340(%rbp), %xmm0
movb -0x351(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
callq 0xe9940
movq -0x2f8(%rbp), %rdi
movsd %xmm0, -0xa0(%rbp)
addq $0x1400, %rdi           # imm = 0x1400
movl -0x98(%rbp), %eax
movl %eax, -0xb4(%rbp)
leaq -0xb4(%rbp), %rsi
callq 0x122470
movq %rax, -0x368(%rbp)
jmp 0x1183a1
movq -0x368(%rbp), %rdi
movl -0x80(%rbp), %eax
movl %eax, %esi
callq 0xb2610
movsd (%rax), %xmm0
movsd %xmm0, -0x378(%rbp)
leaq -0x88(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb26f0
movss %xmm0, -0x36c(%rbp)
jmp 0x1183dd
movss -0x36c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x388(%rbp)
leaq -0x88(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb2710
movss %xmm0, -0x37c(%rbp)
jmp 0x118410
movss -0x37c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x398(%rbp)
leaq -0x88(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0x125bb0
movb %al, -0x389(%rbp)
jmp 0x118441
movsd -0x398(%rbp), %xmm2
movsd -0x388(%rbp), %xmm1
movsd -0x378(%rbp), %xmm0
movq -0x2f8(%rbp), %rdi
movb -0x389(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
callq 0xe9940
movsd %xmm0, -0xb0(%rbp)
movl -0x80(%rbp), %eax
movl %eax, %esi
leaq -0x60(%rbp), %rdi
callq 0xb2610
movq -0x308(%rbp), %rdi
movsd (%rax), %xmm1
movss -0x20(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd -0xa0(%rbp), %xmm2
movsd -0xb0(%rbp), %xmm3
subsd %xmm3, %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xc0(%rbp)
leaq -0xc0(%rbp), %rsi
callq 0xb2630
jmp 0x1184cd
movl -0x80(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x80(%rbp)
leaq -0x88(%rbp), %rdi
callq 0xb3260
jmp 0x11817b
leaq -0x60(%rbp), %rdi
callq 0xb2660
jmp 0x119cbf
movq -0x2f8(%rbp), %rax
cmpl $0x2, 0x1700(%rax)
jne 0x118ceb
movq -0x2f8(%rbp), %rdi
movl $0x0, -0xc4(%rbp)
movl $0x0, -0xc8(%rbp)
addq $0x1ab0, %rdi           # imm = 0x1AB0
callq 0x122630
movq %rax, -0xd0(%rbp)
movq -0x2f8(%rbp), %rdi
addq $0x1ab0, %rdi           # imm = 0x1AB0
callq 0x1231a0
movq %rax, -0xd8(%rbp)
leaq -0xd0(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x1231d0
testb $0x1, %al
jne 0x11856a
jmp 0x1185a8
leaq -0xd0(%rbp), %rdi
callq 0x122660
movsd (%rax), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x118598
leaq -0xd0(%rbp), %rdi
callq 0x122660
movl 0x8(%rax), %eax
movl %eax, -0xc8(%rbp)
jmp 0x11859a
leaq -0xd0(%rbp), %rdi
callq 0xcbd20
jmp 0x118537
movq -0x2f8(%rbp), %rdi
addq $0x1400, %rdi           # imm = 0x1400
movl -0xc8(%rbp), %eax
movl %eax, -0x10c(%rbp)
leaq -0x10c(%rbp), %rsi
callq 0x122470
movq %rax, -0x3a0(%rbp)
jmp 0x1185d7
movq -0x3a0(%rbp), %rsi
leaq -0x108(%rbp), %rdi
callq 0xb2bc0
jmp 0x1185ec
movq -0x2f8(%rbp), %rsi
leaq -0xf0(%rbp), %rdi
leaq -0x108(%rbp), %rdx
callq 0x117e60
jmp 0x118608
leaq -0x108(%rbp), %rdi
callq 0xb2660
movq -0x2f8(%rbp), %rdi
callq 0x125110
movq %rax, -0x3a8(%rbp)
jmp 0x118629
movq -0x3a8(%rbp), %rdi
callq 0xb3200
movq %rax, -0x118(%rbp)
movq -0x2f8(%rbp), %rdi
callq 0x125110
movq %rax, -0x3b0(%rbp)
jmp 0x118651
movq -0x3b0(%rbp), %rdi
callq 0xb3310
movq %rax, -0x120(%rbp)
leaq -0x118(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0xb32e0
testb $0x1, %al
jne 0x118680
jmp 0x118cda
movl $0x0, -0x124(%rbp)
movl $0x0, -0x128(%rbp)
movl $0x0, -0x12c(%rbp)
movl $0x0, -0x130(%rbp)
movl -0x124(%rbp), %ecx
movb $0x1, %al
cmpl -0x128(%rbp), %ecx
movb %al, -0x3b1(%rbp)
je 0x11872b
movl -0x124(%rbp), %ecx
movb $0x1, %al
cmpl -0x12c(%rbp), %ecx
movb %al, -0x3b1(%rbp)
je 0x11872b
movl -0x124(%rbp), %ecx
movb $0x1, %al
cmpl -0x130(%rbp), %ecx
movb %al, -0x3b1(%rbp)
je 0x11872b
movl -0x128(%rbp), %ecx
movb $0x1, %al
cmpl -0x12c(%rbp), %ecx
movb %al, -0x3b1(%rbp)
je 0x11872b
movl -0x128(%rbp), %ecx
movb $0x1, %al
cmpl -0x130(%rbp), %ecx
movb %al, -0x3b1(%rbp)
je 0x11872b
movl -0x12c(%rbp), %eax
cmpl -0x130(%rbp), %eax
sete %al
movb %al, -0x3b1(%rbp)
movb -0x3b1(%rbp), %al
testb $0x1, %al
jne 0x11873a
jmp 0x118819
movq -0x2f8(%rbp), %rsi
addq $0x58, %rsi
leaq -0x28(%rbp), %rdi
callq 0x123e00
movl %eax, -0x3b8(%rbp)
jmp 0x118756
movq -0x2f8(%rbp), %rsi
movl -0x3b8(%rbp), %eax
movl %eax, -0x124(%rbp)
addq $0x58, %rsi
leaq -0x28(%rbp), %rdi
callq 0x123e00
movl %eax, -0x3bc(%rbp)
jmp 0x11877e
movq -0x2f8(%rbp), %rsi
movl -0x3bc(%rbp), %eax
movl %eax, -0x128(%rbp)
addq $0x58, %rsi
leaq -0x28(%rbp), %rdi
callq 0x123e00
movl %eax, -0x3c0(%rbp)
jmp 0x1187a6
movq -0x2f8(%rbp), %rsi
movl -0x3c0(%rbp), %eax
movl %eax, -0x12c(%rbp)
addq $0x58, %rsi
leaq -0x28(%rbp), %rdi
callq 0x123e00
movl %eax, -0x3c4(%rbp)
jmp 0x1187ce
movl -0x3c4(%rbp), %eax
movl %eax, -0x130(%rbp)
jmp 0x1186a8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x108(%rbp), %rdi
callq 0xb2660
jmp 0x119ce5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0xb2660
jmp 0x119ce5
movq -0x2f8(%rbp), %rdi
addq $0x1400, %rdi           # imm = 0x1400
movl -0x124(%rbp), %eax
movl %eax, -0x13c(%rbp)
leaq -0x13c(%rbp), %rsi
callq 0x122470
movq %rax, -0x3d0(%rbp)
jmp 0x118848
movq -0x3d0(%rbp), %rdi
movl -0xc4(%rbp), %eax
movl %eax, %esi
callq 0xb2610
movsd (%rax), %xmm0
movsd %xmm0, -0x3e0(%rbp)
leaq -0x118(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb26f0
movss %xmm0, -0x3d4(%rbp)
jmp 0x118887
movss -0x3d4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x3f0(%rbp)
leaq -0x118(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb2710
movss %xmm0, -0x3e4(%rbp)
jmp 0x1188ba
movss -0x3e4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x400(%rbp)
leaq -0x118(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0x125bb0
movb %al, -0x3f1(%rbp)
jmp 0x1188eb
movq -0x2f8(%rbp), %rdi
movsd -0x400(%rbp), %xmm2
movsd -0x3f0(%rbp), %xmm1
movsd -0x3e0(%rbp), %xmm0
movb -0x3f1(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
callq 0xe9940
movq -0x2f8(%rbp), %rdi
movsd %xmm0, -0x138(%rbp)
addq $0x1400, %rdi           # imm = 0x1400
movl -0x128(%rbp), %eax
movl %eax, -0x14c(%rbp)
leaq -0x14c(%rbp), %rsi
callq 0x122470
movq %rax, -0x408(%rbp)
jmp 0x118952
movq -0x408(%rbp), %rdi
movl -0xc4(%rbp), %eax
movl %eax, %esi
callq 0xb2610
movsd (%rax), %xmm0
movsd %xmm0, -0x418(%rbp)
leaq -0x118(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb26f0
movss %xmm0, -0x40c(%rbp)
jmp 0x118991
movss -0x40c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x428(%rbp)
leaq -0x118(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb2710
movss %xmm0, -0x41c(%rbp)
jmp 0x1189c4
movss -0x41c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x438(%rbp)
leaq -0x118(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0x125bb0
movb %al, -0x429(%rbp)
jmp 0x1189f5
movq -0x2f8(%rbp), %rdi
movsd -0x438(%rbp), %xmm2
movsd -0x428(%rbp), %xmm1
movsd -0x418(%rbp), %xmm0
movb -0x429(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
callq 0xe9940
movq -0x2f8(%rbp), %rdi
movsd %xmm0, -0x148(%rbp)
addq $0x1400, %rdi           # imm = 0x1400
movl -0x12c(%rbp), %eax
movl %eax, -0x15c(%rbp)
leaq -0x15c(%rbp), %rsi
callq 0x122470
movq %rax, -0x440(%rbp)
jmp 0x118a5c
movq -0x440(%rbp), %rdi
movl -0xc4(%rbp), %eax
movl %eax, %esi
callq 0xb2610
movsd (%rax), %xmm0
movsd %xmm0, -0x450(%rbp)
leaq -0x118(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb26f0
movss %xmm0, -0x444(%rbp)
jmp 0x118a9b
movss -0x444(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x460(%rbp)
leaq -0x118(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb2710
movss %xmm0, -0x454(%rbp)
jmp 0x118ace
movss -0x454(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x470(%rbp)
leaq -0x118(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0x125bb0
movb %al, -0x461(%rbp)
jmp 0x118aff
movq -0x2f8(%rbp), %rdi
movsd -0x470(%rbp), %xmm2
movsd -0x460(%rbp), %xmm1
movsd -0x450(%rbp), %xmm0
movb -0x461(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
callq 0xe9940
movq -0x2f8(%rbp), %rdi
movsd %xmm0, -0x158(%rbp)
addq $0x1400, %rdi           # imm = 0x1400
movl -0x130(%rbp), %eax
movl %eax, -0x16c(%rbp)
leaq -0x16c(%rbp), %rsi
callq 0x122470
movq %rax, -0x478(%rbp)
jmp 0x118b66
movq -0x478(%rbp), %rdi
movl -0xc4(%rbp), %eax
movl %eax, %esi
callq 0xb2610
movsd (%rax), %xmm0
movsd %xmm0, -0x488(%rbp)
leaq -0x118(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb26f0
movss %xmm0, -0x47c(%rbp)
jmp 0x118ba5
movss -0x47c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x498(%rbp)
leaq -0x118(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb2710
movss %xmm0, -0x48c(%rbp)
jmp 0x118bd8
movss -0x48c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x4a8(%rbp)
leaq -0x118(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0x125bb0
movb %al, -0x499(%rbp)
jmp 0x118c09
movsd -0x4a8(%rbp), %xmm2
movsd -0x498(%rbp), %xmm1
movsd -0x488(%rbp), %xmm0
movq -0x2f8(%rbp), %rdi
movb -0x499(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
callq 0xe9940
movsd %xmm0, -0x168(%rbp)
movl -0xc4(%rbp), %eax
movl %eax, %esi
leaq -0xf0(%rbp), %rdi
callq 0xb2610
movq -0x308(%rbp), %rdi
movsd (%rax), %xmm2
movss -0x20(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd -0x138(%rbp), %xmm3
movsd -0x148(%rbp), %xmm1
subsd %xmm1, %xmm3
movaps %xmm0, %xmm1
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
movsd -0x158(%rbp), %xmm2
movsd -0x168(%rbp), %xmm3
subsd %xmm3, %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x178(%rbp)
leaq -0x178(%rbp), %rsi
callq 0xb2630
jmp 0x118cba
movl -0xc4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc4(%rbp)
leaq -0x118(%rbp), %rdi
callq 0xb3260
jmp 0x11863c
leaq -0xf0(%rbp), %rdi
callq 0xb2660
jmp 0x119cbd
movq -0x2f8(%rbp), %rax
cmpl $0x3, 0x1700(%rax)
jne 0x119334
movq -0x2f8(%rbp), %rdi
movl $0x0, -0x17c(%rbp)
movl $0x0, -0x180(%rbp)
addq $0x1ab0, %rdi           # imm = 0x1AB0
callq 0x122630
movq %rax, -0x188(%rbp)
movq -0x2f8(%rbp), %rdi
addq $0x1ab0, %rdi           # imm = 0x1AB0
callq 0x1231a0
movq %rax, -0x190(%rbp)
leaq -0x188(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0x1231d0
testb $0x1, %al
jne 0x118d60
jmp 0x118d9e
leaq -0x188(%rbp), %rdi
callq 0x122660
movsd (%rax), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x118d8e
leaq -0x188(%rbp), %rdi
callq 0x122660
movl 0x8(%rax), %eax
movl %eax, -0x180(%rbp)
jmp 0x118d90
leaq -0x188(%rbp), %rdi
callq 0xcbd20
jmp 0x118d2d
movq -0x2f8(%rbp), %rdi
addq $0x1400, %rdi           # imm = 0x1400
movl -0x180(%rbp), %eax
movl %eax, -0x1c4(%rbp)
leaq -0x1c4(%rbp), %rsi
callq 0x122470
movq %rax, -0x4b0(%rbp)
jmp 0x118dcd
movq -0x4b0(%rbp), %rsi
leaq -0x1c0(%rbp), %rdi
callq 0xb2bc0
jmp 0x118de2
movq -0x2f8(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
leaq -0x1c0(%rbp), %rdx
callq 0x117e60
jmp 0x118dfe
leaq -0x1c0(%rbp), %rdi
callq 0xb2660
movq -0x2f8(%rbp), %rdi
callq 0x125110
movq %rax, -0x4b8(%rbp)
jmp 0x118e1f
movq -0x4b8(%rbp), %rdi
callq 0xb3200
movq %rax, -0x1d0(%rbp)
movq -0x2f8(%rbp), %rdi
callq 0x125110
movq %rax, -0x4c0(%rbp)
jmp 0x118e47
movq -0x4c0(%rbp), %rdi
callq 0xb3310
movq %rax, -0x1d8(%rbp)
leaq -0x1d0(%rbp), %rdi
leaq -0x1d8(%rbp), %rsi
callq 0xb32e0
testb $0x1, %al
jne 0x118e76
jmp 0x119323
movl $0x0, -0x1dc(%rbp)
movl $0x0, -0x1e0(%rbp)
movl $0x0, -0x1e4(%rbp)
movl -0x1dc(%rbp), %ecx
movb $0x1, %al
cmpl -0x1e0(%rbp), %ecx
movb %al, -0x4c1(%rbp)
je 0x118ed5
movl -0x1dc(%rbp), %ecx
movb $0x1, %al
cmpl -0x1e4(%rbp), %ecx
movb %al, -0x4c1(%rbp)
je 0x118ed5
movl -0x1e0(%rbp), %eax
cmpl -0x1e4(%rbp), %eax
sete %al
movb %al, -0x4c1(%rbp)
movb -0x4c1(%rbp), %al
testb $0x1, %al
jne 0x118ee4
jmp 0x118f9b
movq -0x2f8(%rbp), %rsi
addq $0x58, %rsi
leaq -0x28(%rbp), %rdi
callq 0x123e00
movl %eax, -0x4c8(%rbp)
jmp 0x118f00
movq -0x2f8(%rbp), %rsi
movl -0x4c8(%rbp), %eax
movl %eax, -0x1dc(%rbp)
addq $0x58, %rsi
leaq -0x28(%rbp), %rdi
callq 0x123e00
movl %eax, -0x4cc(%rbp)
jmp 0x118f28
movq -0x2f8(%rbp), %rsi
movl -0x4cc(%rbp), %eax
movl %eax, -0x1e0(%rbp)
addq $0x58, %rsi
leaq -0x28(%rbp), %rdi
callq 0x123e00
movl %eax, -0x4d0(%rbp)
jmp 0x118f50
movl -0x4d0(%rbp), %eax
movl %eax, -0x1e4(%rbp)
jmp 0x118e94
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0xb2660
jmp 0x119ce5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xb2660
jmp 0x119ce5
movq -0x2f8(%rbp), %rdi
addq $0x1400, %rdi           # imm = 0x1400
movl -0x1dc(%rbp), %eax
movl %eax, -0x1f4(%rbp)
leaq -0x1f4(%rbp), %rsi
callq 0x122470
movq %rax, -0x4d8(%rbp)
jmp 0x118fca
movq -0x4d8(%rbp), %rdi
movl -0x17c(%rbp), %eax
movl %eax, %esi
callq 0xb2610
movsd (%rax), %xmm0
movsd %xmm0, -0x4e8(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb26f0
movss %xmm0, -0x4dc(%rbp)
jmp 0x119009
movss -0x4dc(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x4f8(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb2710
movss %xmm0, -0x4ec(%rbp)
jmp 0x11903c
movss -0x4ec(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x508(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0x125bb0
movb %al, -0x4f9(%rbp)
jmp 0x11906d
movq -0x2f8(%rbp), %rdi
movsd -0x508(%rbp), %xmm2
movsd -0x4f8(%rbp), %xmm1
movsd -0x4e8(%rbp), %xmm0
movb -0x4f9(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
callq 0xe9940
movq -0x2f8(%rbp), %rdi
movsd %xmm0, -0x1f0(%rbp)
addq $0x1400, %rdi           # imm = 0x1400
movl -0x1e0(%rbp), %eax
movl %eax, -0x204(%rbp)
leaq -0x204(%rbp), %rsi
callq 0x122470
movq %rax, -0x510(%rbp)
jmp 0x1190d4
movq -0x510(%rbp), %rdi
movl -0x17c(%rbp), %eax
movl %eax, %esi
callq 0xb2610
movsd (%rax), %xmm0
movsd %xmm0, -0x520(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb26f0
movss %xmm0, -0x514(%rbp)
jmp 0x119113
movss -0x514(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x530(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb2710
movss %xmm0, -0x524(%rbp)
jmp 0x119146
movss -0x524(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x540(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0x125bb0
movb %al, -0x531(%rbp)
jmp 0x119177
movq -0x2f8(%rbp), %rdi
movsd -0x540(%rbp), %xmm2
movsd -0x530(%rbp), %xmm1
movsd -0x520(%rbp), %xmm0
movb -0x531(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
callq 0xe9940
movq -0x2f8(%rbp), %rdi
movsd %xmm0, -0x200(%rbp)
addq $0x1400, %rdi           # imm = 0x1400
movl -0x1e4(%rbp), %eax
movl %eax, -0x214(%rbp)
leaq -0x214(%rbp), %rsi
callq 0x122470
movq %rax, -0x548(%rbp)
jmp 0x1191de
movq -0x548(%rbp), %rdi
movl -0x17c(%rbp), %eax
movl %eax, %esi
callq 0xb2610
movsd (%rax), %xmm0
movsd %xmm0, -0x558(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb26f0
movss %xmm0, -0x54c(%rbp)
jmp 0x11921d
movss -0x54c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x568(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb2710
movss %xmm0, -0x55c(%rbp)
jmp 0x119250
movss -0x55c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x578(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0x125bb0
movb %al, -0x569(%rbp)
jmp 0x119281
movsd -0x578(%rbp), %xmm2
movsd -0x568(%rbp), %xmm1
movsd -0x558(%rbp), %xmm0
movq -0x2f8(%rbp), %rdi
movb -0x569(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
callq 0xe9940
movq -0x308(%rbp), %rdi
movsd %xmm0, -0x210(%rbp)
movsd -0x1f0(%rbp), %xmm1
movss -0x20(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd -0x200(%rbp), %xmm2
movsd -0x210(%rbp), %xmm3
subsd %xmm3, %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x220(%rbp)
leaq -0x220(%rbp), %rsi
callq 0xb2630
jmp 0x119303
movl -0x17c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x17c(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0xb3260
jmp 0x118e32
leaq -0x1a8(%rbp), %rdi
callq 0xb2660
jmp 0x119cbb
movq -0x2f8(%rbp), %rax
cmpl $0x4, 0x1700(%rax)
jne 0x119cb9
movq -0x2f8(%rbp), %rdi
movl $0x0, -0x224(%rbp)
movl $0x0, -0x228(%rbp)
addq $0x1ab0, %rdi           # imm = 0x1AB0
callq 0x122630
movq %rax, -0x230(%rbp)
movq -0x2f8(%rbp), %rdi
addq $0x1ab0, %rdi           # imm = 0x1AB0
callq 0x1231a0
movq %rax, -0x238(%rbp)
leaq -0x230(%rbp), %rdi
leaq -0x238(%rbp), %rsi
callq 0x1231d0
testb $0x1, %al
jne 0x1193a9
jmp 0x1193e7
leaq -0x230(%rbp), %rdi
callq 0x122660
movsd (%rax), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x1193d7
leaq -0x230(%rbp), %rdi
callq 0x122660
movl 0x8(%rax), %eax
movl %eax, -0x228(%rbp)
jmp 0x1193d9
leaq -0x230(%rbp), %rdi
callq 0xcbd20
jmp 0x119376
movq -0x2f8(%rbp), %rdi
addq $0x1400, %rdi           # imm = 0x1400
movl -0x228(%rbp), %eax
movl %eax, -0x26c(%rbp)
leaq -0x26c(%rbp), %rsi
callq 0x122470
movq %rax, -0x580(%rbp)
jmp 0x119416
movq -0x580(%rbp), %rsi
leaq -0x268(%rbp), %rdi
callq 0xb2bc0
jmp 0x11942b
movq -0x2f8(%rbp), %rsi
leaq -0x250(%rbp), %rdi
leaq -0x268(%rbp), %rdx
callq 0x117e60
jmp 0x119447
leaq -0x268(%rbp), %rdi
callq 0xb2660
movq -0x2f8(%rbp), %rdi
callq 0x125110
movq %rax, -0x588(%rbp)
jmp 0x119468
movq -0x588(%rbp), %rdi
callq 0xb3200
movq %rax, -0x278(%rbp)
movq -0x2f8(%rbp), %rdi
callq 0x125110
movq %rax, -0x590(%rbp)
jmp 0x119490
movq -0x590(%rbp), %rdi
callq 0xb3310
movq %rax, -0x280(%rbp)
leaq -0x278(%rbp), %rdi
leaq -0x280(%rbp), %rsi
callq 0xb32e0
testb $0x1, %al
jne 0x1194bf
jmp 0x119cad
movl $0x0, -0x284(%rbp)
movl $0x0, -0x288(%rbp)
movl $0x0, -0x28c(%rbp)
movl $0x0, -0x290(%rbp)
movl $0x0, -0x294(%rbp)
movl -0x284(%rbp), %ecx
movb $0x1, %al
cmpl -0x288(%rbp), %ecx
movb %al, -0x591(%rbp)
je 0x1195dc
movl -0x284(%rbp), %ecx
movb $0x1, %al
cmpl -0x28c(%rbp), %ecx
movb %al, -0x591(%rbp)
je 0x1195dc
movl -0x284(%rbp), %ecx
movb $0x1, %al
cmpl -0x290(%rbp), %ecx
movb %al, -0x591(%rbp)
je 0x1195dc
movl -0x288(%rbp), %ecx
movb $0x1, %al
cmpl -0x28c(%rbp), %ecx
movb %al, -0x591(%rbp)
je 0x1195dc
movl -0x288(%rbp), %ecx
movb $0x1, %al
cmpl -0x290(%rbp), %ecx
movb %al, -0x591(%rbp)
je 0x1195dc
movl -0x28c(%rbp), %ecx
movb $0x1, %al
cmpl -0x290(%rbp), %ecx
movb %al, -0x591(%rbp)
je 0x1195dc
movl -0x284(%rbp), %ecx
movb $0x1, %al
cmpl -0x294(%rbp), %ecx
movb %al, -0x591(%rbp)
je 0x1195dc
movl -0x288(%rbp), %ecx
movb $0x1, %al
cmpl -0x294(%rbp), %ecx
movb %al, -0x591(%rbp)
je 0x1195dc
movl -0x28c(%rbp), %ecx
movb $0x1, %al
cmpl -0x294(%rbp), %ecx
movb %al, -0x591(%rbp)
je 0x1195dc
movl -0x290(%rbp), %eax
cmpl -0x294(%rbp), %eax
sete %al
movb %al, -0x591(%rbp)
movb -0x591(%rbp), %al
testb $0x1, %al
jne 0x1195eb
jmp 0x1196f2
movq -0x2f8(%rbp), %rsi
addq $0x58, %rsi
leaq -0x28(%rbp), %rdi
callq 0x123e00
movl %eax, -0x598(%rbp)
jmp 0x119607
movq -0x2f8(%rbp), %rsi
movl -0x598(%rbp), %eax
movl %eax, -0x284(%rbp)
addq $0x58, %rsi
leaq -0x28(%rbp), %rdi
callq 0x123e00
movl %eax, -0x59c(%rbp)
jmp 0x11962f
movq -0x2f8(%rbp), %rsi
movl -0x59c(%rbp), %eax
movl %eax, -0x288(%rbp)
addq $0x58, %rsi
leaq -0x28(%rbp), %rdi
callq 0x123e00
movl %eax, -0x5a0(%rbp)
jmp 0x119657
movq -0x2f8(%rbp), %rsi
movl -0x5a0(%rbp), %eax
movl %eax, -0x28c(%rbp)
addq $0x58, %rsi
leaq -0x28(%rbp), %rdi
callq 0x123e00
movl %eax, -0x5a4(%rbp)
jmp 0x11967f
movq -0x2f8(%rbp), %rsi
movl -0x5a4(%rbp), %eax
movl %eax, -0x290(%rbp)
addq $0x58, %rsi
leaq -0x28(%rbp), %rdi
callq 0x123e00
movl %eax, -0x5a8(%rbp)
jmp 0x1196a7
movl -0x5a8(%rbp), %eax
movl %eax, -0x294(%rbp)
jmp 0x1194f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x268(%rbp), %rdi
callq 0xb2660
jmp 0x119ce5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x250(%rbp), %rdi
callq 0xb2660
jmp 0x119ce5
movq -0x2f8(%rbp), %rdi
addq $0x1400, %rdi           # imm = 0x1400
movl -0x284(%rbp), %eax
movl %eax, -0x2a4(%rbp)
leaq -0x2a4(%rbp), %rsi
callq 0x122470
movq %rax, -0x5b0(%rbp)
jmp 0x119721
movq -0x5b0(%rbp), %rdi
movl -0x224(%rbp), %eax
movl %eax, %esi
callq 0xb2610
movsd (%rax), %xmm0
movsd %xmm0, -0x5c0(%rbp)
leaq -0x278(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb26f0
movss %xmm0, -0x5b4(%rbp)
jmp 0x119760
movss -0x5b4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x5d0(%rbp)
leaq -0x278(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb2710
movss %xmm0, -0x5c4(%rbp)
jmp 0x119793
movss -0x5c4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x5e0(%rbp)
leaq -0x278(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0x125bb0
movb %al, -0x5d1(%rbp)
jmp 0x1197c4
movq -0x2f8(%rbp), %rdi
movsd -0x5e0(%rbp), %xmm2
movsd -0x5d0(%rbp), %xmm1
movsd -0x5c0(%rbp), %xmm0
movb -0x5d1(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
callq 0xe9940
movq -0x2f8(%rbp), %rdi
movsd %xmm0, -0x2a0(%rbp)
addq $0x1400, %rdi           # imm = 0x1400
movl -0x288(%rbp), %eax
movl %eax, -0x2b4(%rbp)
leaq -0x2b4(%rbp), %rsi
callq 0x122470
movq %rax, -0x5e8(%rbp)
jmp 0x11982b
movq -0x5e8(%rbp), %rdi
movl -0x224(%rbp), %eax
movl %eax, %esi
callq 0xb2610
movsd (%rax), %xmm0
movsd %xmm0, -0x5f8(%rbp)
leaq -0x278(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb26f0
movss %xmm0, -0x5ec(%rbp)
jmp 0x11986a
movss -0x5ec(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x608(%rbp)
leaq -0x278(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb2710
movss %xmm0, -0x5fc(%rbp)
jmp 0x11989d
movss -0x5fc(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x618(%rbp)
leaq -0x278(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0x125bb0
movb %al, -0x609(%rbp)
jmp 0x1198ce
movq -0x2f8(%rbp), %rdi
movsd -0x618(%rbp), %xmm2
movsd -0x608(%rbp), %xmm1
movsd -0x5f8(%rbp), %xmm0
movb -0x609(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
callq 0xe9940
movq -0x2f8(%rbp), %rdi
movsd %xmm0, -0x2b0(%rbp)
addq $0x1400, %rdi           # imm = 0x1400
movl -0x28c(%rbp), %eax
movl %eax, -0x2c4(%rbp)
leaq -0x2c4(%rbp), %rsi
callq 0x122470
movq %rax, -0x620(%rbp)
jmp 0x119935
movq -0x620(%rbp), %rdi
movl -0x224(%rbp), %eax
movl %eax, %esi
callq 0xb2610
movsd (%rax), %xmm0
movsd %xmm0, -0x630(%rbp)
leaq -0x278(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb26f0
movss %xmm0, -0x624(%rbp)
jmp 0x119974
movss -0x624(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x640(%rbp)
leaq -0x278(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb2710
movss %xmm0, -0x634(%rbp)
jmp 0x1199a7
movss -0x634(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x650(%rbp)
leaq -0x278(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0x125bb0
movb %al, -0x641(%rbp)
jmp 0x1199d8
movq -0x2f8(%rbp), %rdi
movsd -0x650(%rbp), %xmm2
movsd -0x640(%rbp), %xmm1
movsd -0x630(%rbp), %xmm0
movb -0x641(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
callq 0xe9940
movq -0x2f8(%rbp), %rdi
movsd %xmm0, -0x2c0(%rbp)
addq $0x1400, %rdi           # imm = 0x1400
movl -0x290(%rbp), %eax
movl %eax, -0x2d4(%rbp)
leaq -0x2d4(%rbp), %rsi
callq 0x122470
movq %rax, -0x658(%rbp)
jmp 0x119a3f
movq -0x658(%rbp), %rdi
movl -0x224(%rbp), %eax
movl %eax, %esi
callq 0xb2610
movsd (%rax), %xmm0
movsd %xmm0, -0x668(%rbp)
leaq -0x278(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb26f0
movss %xmm0, -0x65c(%rbp)
jmp 0x119a7e
movss -0x65c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x678(%rbp)
leaq -0x278(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb2710
movss %xmm0, -0x66c(%rbp)
jmp 0x119ab1
movss -0x66c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x688(%rbp)
leaq -0x278(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0x125bb0
movb %al, -0x679(%rbp)
jmp 0x119ae2
movq -0x2f8(%rbp), %rdi
movsd -0x688(%rbp), %xmm2
movsd -0x678(%rbp), %xmm1
movsd -0x668(%rbp), %xmm0
movb -0x679(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
callq 0xe9940
movq -0x2f8(%rbp), %rdi
movsd %xmm0, -0x2d0(%rbp)
addq $0x1400, %rdi           # imm = 0x1400
movl -0x294(%rbp), %eax
movl %eax, -0x2e4(%rbp)
leaq -0x2e4(%rbp), %rsi
callq 0x122470
movq %rax, -0x690(%rbp)
jmp 0x119b49
movq -0x690(%rbp), %rdi
movl -0x224(%rbp), %eax
movl %eax, %esi
callq 0xb2610
movsd (%rax), %xmm0
movsd %xmm0, -0x6a0(%rbp)
leaq -0x278(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb26f0
movss %xmm0, -0x694(%rbp)
jmp 0x119b88
movss -0x694(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x6b0(%rbp)
leaq -0x278(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0xb2710
movss %xmm0, -0x6a4(%rbp)
jmp 0x119bbb
movss -0x6a4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x6c0(%rbp)
leaq -0x278(%rbp), %rdi
callq 0xb3230
movq 0x20(%rax), %rdi
callq 0x125bb0
movb %al, -0x6b1(%rbp)
jmp 0x119bec
movsd -0x6c0(%rbp), %xmm2
movsd -0x6b0(%rbp), %xmm1
movsd -0x6a0(%rbp), %xmm0
movq -0x2f8(%rbp), %rdi
movb -0x6b1(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
callq 0xe9940
movq -0x308(%rbp), %rdi
movsd %xmm0, -0x2e0(%rbp)
movsd -0x2a0(%rbp), %xmm2
movss -0x20(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd -0x2b0(%rbp), %xmm3
movsd -0x2c0(%rbp), %xmm1
subsd %xmm1, %xmm3
movaps %xmm0, %xmm1
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
movsd -0x2d0(%rbp), %xmm2
movsd -0x2e0(%rbp), %xmm3
subsd %xmm3, %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x2f0(%rbp)
leaq -0x2f0(%rbp), %rsi
callq 0xb2630
jmp 0x119c8d
movl -0x224(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x224(%rbp)
leaq -0x278(%rbp), %rdi
callq 0xb3260
jmp 0x11947b
leaq -0x250(%rbp), %rdi
callq 0xb2660
jmp 0x119cbb
jmp 0x119cbd
jmp 0x119cbf
movb $0x1, -0x19(%rbp)
testb $0x1, -0x19(%rbp)
jne 0x119cd5
movq -0x308(%rbp), %rdi
callq 0xb2660
movq -0x300(%rbp), %rax
addq $0x6c0, %rsp            # imm = 0x6C0
popq %rbp
retq
movq -0x308(%rbp), %rdi
callq 0xb2660
movq -0x30(%rbp), %rdi
callq 0x30170
nopw (%rax,%rax)