// File: richardposner[P]BioNetFit2/src/code/Swarm.cpp
// Function: Swarm::runASA()
void Swarm::runASA() {
	if (options.verbosity >= 3) {
		cout << "Running an asynchronous PSADE fit" << endl;
	}

	if (!checkIfFileExists(options.jobOutputDir + "1")) {
		string createDirCmd = "mkdir " + options.jobOutputDir + "1";
		if (runCommand(createDirCmd) != 0) {
			outputError("Error: Couldn't create first generation output directory with command: " + createDirCmd + ". Quitting.");
		}
	}

	// Initialize and/or fill our parameter vectors
	vector<unsigned int> isLocal = vector<unsigned int>(options.swarmSize + 1);
	vector<double> particleTemps = vector<double>(options.swarmSize + 1, 0);
	vector<double> particleRadii = vector<double>(options.swarmSize + 1, 0);
	vector<float> particleFs = generateParticleFs();
	vector<float> particleCRs = generateParticleCRs();
	vector<float> cpuToParticle = vector<float>(options.swarmSize + 1, 0);
	vector<vector<float> > trialParams = vector<vector<float> >(options.swarmSize + 1, vector<float>(2, 0));
	map<unsigned int, unsigned int> particleToController;

	// Launch the initialization population and map
	// CPUs to particles
	for (int p = 1; p <= options.swarmSize; ++p) {
		launchParticle(p);
		cpuToParticle[p] = p;
		particleToController[p] = p;
	}

	unordered_map<unsigned int, vector<double> > finishedParticles;
	unordered_map<unsigned int, vector<double> > initFinishedParticles;
	int numFinishedParticles = 0;

	// Wait for initialization population to finish simulations
	while (numFinishedParticles < options.swarmSize) {
		initFinishedParticles = checkMasterMessagesDE();
		// Save finished particles in another map, we still need to process them in the main loop later on
		if (initFinishedParticles.size()) {
			finishedParticles.insert(initFinishedParticles.begin(), initFinishedParticles.end());
			numFinishedParticles += initFinishedParticles.size();
		}

		// Process each finished particle
		for (auto particle = initFinishedParticles.begin(); particle != initFinishedParticles.end(); ++particle) {
			//++flightCounter_;
			cout << "particle " << cpuToParticle[particle->first] << " on cpu " << particle->first << " finished" << endl;
			string paramString = toString(flightCounter_) + " ";

			// Update parameter values
			unsigned int i = 0;
			for (auto param = particle->second.begin() + 1; param != particle->second.end(); ++param) {
				particleCurrParamSets_[cpuToParticle[particle->first]][i++] = *param;
				cout << "updating particle " << cpuToParticle[particle->first] << " to " << *param << " at " << i << endl;
				paramString += toString(*param) + " ";
			}

			// Update fit calcs
			particleBestFits_[cpuToParticle[particle->first]] = particle->second[0];
			insertKeyByValue(particleBestFitsByFit_, particle->second[0], cpuToParticle[particle->first]);
			//allGenFits.insert(pair<double, string>(particle->second[0], paramString));
			cout << "updating particle " << cpuToParticle[particle->first] << " calc to " << particle->second[0] << endl;
			//cout << "count: " << particleBestFitsByFit_.count(particle->second[0]) << endl;

			// Update F and CR
			trialParams[cpuToParticle[particle->first]][0] = particleFs[cpuToParticle[particle->first]];
			trialParams[cpuToParticle[particle->first]][1] = particleCRs[cpuToParticle[particle->first]];
		}
	}

	// Generate our initial temps and radii
	particleTemps = generateParticleTemps();
	particleRadii = generateParticleRadii();

	// Main loop
	cout << "entering main loop" << endl;
	while (!checkStopCriteria()) {

		// Check to make sure we aren't processing init swarm before checking for new
		if (!finishedParticles.size()) {
			finishedParticles = checkMasterMessagesDE();
		}

		// Process any finished particles
		for (auto particle = finishedParticles.begin(); particle != finishedParticles.end(); ++particle) {
			cout << "particle " << cpuToParticle[particle->first] << " on cpu " << particle->first << " finished" << endl;

			string paramString = toString(flightCounter_ + 1) + " ";

			// If the particle finished their local search
			if (isLocal[particle->first]) {
				cout << "particle just finished local search" << endl;

				cout << "greedy acceptance of fit of " << particle->second[0] << endl;
				// Greedy acceptance
				particleBestFits_[cpuToParticle[particle->first]] = particle->second[0];
				insertKeyByValue(particleBestFitsByFit_, particle->second[0], cpuToParticle[particle->first]);

				unsigned int i = 0;
				for (auto param = particle->second.begin() + 1; param != particle->second.end(); ++param) {
					particleCurrParamSets_[cpuToParticle[particle->first]][i++] = *param;
					cout << "updating particle " << cpuToParticle[particle->first] << " to " << *param << " at " << i << endl;
					paramString += toString(*param) + " ";
				}

				particleFs[cpuToParticle[particle->first]] = trialParams[cpuToParticle[particle->first]][0];
				particleCRs[cpuToParticle[particle->first]] = trialParams[cpuToParticle[particle->first]][1];

				allGenFits.insert(pair<double, string>(particle->second[0], paramString));

				isLocal[particle->first] = 0;
			}
			else {
				// If we pass metropolis selection, store the params for assignment to receiver
				if (particle->second[0] < particleBestFits_.at(particleToController[cpuToParticle[particle->first]]) || metropolisSelection(particleToController[cpuToParticle[particle->first]], particle->second[0], particleTemps[particleToController[cpuToParticle[particle->first]]])) {

					cout << "particle was accepted through metropolis selection" << endl;

					unsigned int i = 0;
					for (auto param = particle->second.begin() + 1; param != particle->second.end(); ++param) {
						particleCurrParamSets_[cpuToParticle[particle->first]][i++] = *param;
						cout << "updating particle " << cpuToParticle[particle->first] << " to " << *param << " at " << i << endl;
						paramString += toString(*param) + " ";
					}

					// Update fitness
					particleBestFits_[cpuToParticle[particle->first]] = particle->second[0];
					insertKeyByValue(particleBestFitsByFit_, particle->second[0], cpuToParticle[particle->first]);
					cout << "accepting params and fit of " << particle->second[0] << endl;

					// Update CR and F
					cout << "updating F to " << trialParams[cpuToParticle[particle->first]][0] << " and CR to " << trialParams[cpuToParticle[particle->first]][1] << endl;
					particleFs[cpuToParticle[particle->first]] = trialParams[cpuToParticle[particle->first]][0];
					particleCRs[cpuToParticle[particle->first]] = trialParams[cpuToParticle[particle->first]][1];
				}
				else {
					for (auto param = particle->second.begin() + 1; param != particle->second.end(); ++param) {
						paramString += toString(*param) + " ";
					}
				}

				// Save params for output no matter what
				allGenFits.insert(pair<double, string>(particle->second[0], paramString));
				cout << "inserting " << paramString << endl;
				// Do a local search at some probability
				// Or if particle is best in swarm
				if (particle->second[0] < particleBestFits_.at(particleToController[cpuToParticle[particle->first]]) || options.localSearchProbability >= ((float)rand() / (float)RAND_MAX)) {
					cout << "going to do a local search" << endl;
					// This receiver will go on to do a local search
					isLocal[particle->first] = cpuToParticle[particle->first];
				}
			}

			if ((options.outputEvery != 0) && (++flightCounter_ && flightCounter_ % options.outputEvery == 0)) {
				string outputPath = options.jobOutputDir + toString(flightCounter_) + "_summary.txt";
				outputRunSummary(outputPath);
				//cout << "fc is " << flightCounter_ << ", outputting" << endl;
			}

			unsigned int it = rand() % options.swarmSize + 1;
			cout << "chose receiver of " << it << endl;
			vector<double> newParams;

			// Swap temps and radii
			swapTR(particleRadii, particleTemps);

			// If we aren't going to do a local search, generate a new trial point
			if (!isLocal[particle->first]) {
				// Pick the controller
				unsigned int controller = pickWeightedSA();
				cout << "not doing local search. chose controller of " << controller << endl;
				// Generate a new trial vector
				particleToController[cpuToParticle[particle->first]] = controller;
				newParams = generateTrialPointSA(controller, it, particleRadii, particleCRs, particleFs, trialParams);
				cout << "generated new trial points" << endl;

				// Make sure we know this CPU will be running this Receiver
				cpuToParticle[particle->first] = it;
				cout << "setting cpu " << particle->first << " as receiver " << it << endl;

				// Save new params for sending to particle
				vector<string> newParamsStr;
				for (auto param = newParams.begin(); param != newParams.end(); ++param) {
					newParamsStr.push_back(toString(*param));
				}

				cout << "running " << cpuToParticle[particle->first] << " with new params on cpu " << particle->first << endl;

				// Send the params to the CPU
				swarmComm->sendToSwarm(0, particle->first, SEND_FINAL_PARAMS_TO_PARTICLE, false, newParamsStr);
				launchParticle(particle->first);
			}
			else {
				cout << "running local search on cpu " << particle->first << endl;
				// Do local search using PREVIOUS receiver
				runNelderMead(isLocal[particle->first], particle->first);
			}
		}
		finishedParticles.clear();
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc80, %rsp            # imm = 0xC80
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x768(%rbp)
cmpl $0x3, 0x1614(%rax)
jb 0xf5dc5
movq 0x1df1a6(%rip), %rdi    # 0x2d4f50
leaq 0xed9e1(%rip), %rsi     # 0x1e3792
callq 0x2ff50
movq %rax, %rdi
movq 0x1df208(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
movq -0x768(%rbp), %rsi
addq $0x1520, %rsi           # imm = 0x1520
leaq 0xef0a4(%rip), %rdx     # 0x1e4e7e
leaq -0x28(%rbp), %rdi
movq %rdi, -0x778(%rbp)
callq 0x447b0
movq -0x778(%rbp), %rdi
callq 0x17d410
movl %eax, -0x76c(%rbp)
jmp 0xf5dfe
movl -0x76c(%rbp), %eax
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
movb %al, -0x779(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x311e8
movb -0x779(%rbp), %al
testb $0x1, %al
jne 0xf5e2a
jmp 0xf5fc2
movq -0x768(%rbp), %rdx
addq $0x1520, %rdx           # imm = 0x1520
leaq 0xe4958(%rip), %rsi     # 0x1da797
leaq -0x78(%rbp), %rdi
movq %rdi, -0x788(%rbp)
callq 0x44240
movq -0x788(%rbp), %rsi
leaq 0xef021(%rip), %rdx     # 0x1e4e7e
leaq -0x58(%rbp), %rdi
callq 0x441f0
jmp 0xf5e68
leaq -0x78(%rbp), %rdi
callq 0x311e8
leaq -0x98(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x2f300
jmp 0xf5e83
leaq -0x98(%rbp), %rdi
callq 0x17e3f0
movl %eax, -0x78c(%rbp)
jmp 0xf5e97
leaq -0x98(%rbp), %rdi
callq 0x311e8
movl -0x78c(%rbp), %eax
cmpl $0x0, %eax
je 0xf5fa9
leaq 0xed454(%rip), %rsi     # 0x1e330d
leaq -0xd8(%rbp), %rdi
leaq -0x58(%rbp), %rdx
callq 0x44240
jmp 0xf5ecb
leaq 0xee792(%rip), %rdx     # 0x1e4664
leaq -0xb8(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x441f0
jmp 0xf5ee7
movq -0x768(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0xeada0
jmp 0xf5efc
leaq -0xb8(%rbp), %rdi
callq 0x311e8
leaq -0xd8(%rbp), %rdi
callq 0x311e8
jmp 0xf5fa9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x311e8
jmp 0xf8c8a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x311e8
jmp 0xf8c8a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0xf5fb4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x311e8
jmp 0xf5fb4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0xf5f9b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x311e8
leaq -0xd8(%rbp), %rdi
callq 0x311e8
jmp 0xf5fb4
leaq -0x58(%rbp), %rdi
callq 0x311e8
jmp 0xf5fc2
leaq -0x58(%rbp), %rdi
callq 0x311e8
jmp 0xf8c8a
movq -0x768(%rbp), %rax
movl 0x1620(%rax), %eax
incl %eax
cltq
movq %rax, -0x7a0(%rbp)
leaq -0xf1(%rbp), %rdi
movq %rdi, -0x798(%rbp)
callq 0xb4e90
movq -0x7a0(%rbp), %rsi
movq -0x798(%rbp), %rdx
leaq -0xf0(%rbp), %rdi
callq 0x122c30
jmp 0xf6009
leaq -0xf1(%rbp), %rdi
callq 0xb8c40
movq -0x768(%rbp), %rax
movl 0x1620(%rax), %eax
incl %eax
cltq
movq %rax, -0x7b0(%rbp)
movq $0x0, -0x118(%rbp)
leaq -0x119(%rbp), %rdi
movq %rdi, -0x7a8(%rbp)
callq 0xb5b80
movq -0x7b0(%rbp), %rsi
movq -0x7a8(%rbp), %rcx
leaq -0x110(%rbp), %rdi
leaq -0x118(%rbp), %rdx
callq 0x1246b0
jmp 0xf606e
leaq -0x119(%rbp), %rdi
callq 0xbefe0
movq -0x768(%rbp), %rax
movl 0x1620(%rax), %eax
incl %eax
cltq
movq %rax, -0x7c0(%rbp)
movq $0x0, -0x140(%rbp)
leaq -0x141(%rbp), %rdi
movq %rdi, -0x7b8(%rbp)
callq 0xb5b80
movq -0x7c0(%rbp), %rsi
movq -0x7b8(%rbp), %rcx
leaq -0x138(%rbp), %rdi
leaq -0x140(%rbp), %rdx
callq 0x1246b0
jmp 0xf60d3
leaq -0x141(%rbp), %rdi
callq 0xbefe0
movq -0x768(%rbp), %rsi
leaq -0x160(%rbp), %rdi
callq 0x1161c0
jmp 0xf60f4
movq -0x768(%rbp), %rsi
leaq -0x178(%rbp), %rdi
callq 0x1162f0
jmp 0xf6109
movq -0x768(%rbp), %rax
movl 0x1620(%rax), %eax
incl %eax
cltq
movq %rax, -0x7d0(%rbp)
movl $0x0, -0x194(%rbp)
leaq -0x195(%rbp), %rdi
movq %rdi, -0x7c8(%rbp)
callq 0x124730
movq -0x7d0(%rbp), %rsi
movq -0x7c8(%rbp), %rcx
leaq -0x190(%rbp), %rdi
leaq -0x194(%rbp), %rdx
callq 0x124750
jmp 0xf6161
leaq -0x195(%rbp), %rdi
callq 0x1247d0
movq -0x768(%rbp), %rax
movl 0x1620(%rax), %eax
incl %eax
cltq
movq %rax, -0x7e0(%rbp)
movl $0x0, -0x1cc(%rbp)
leaq -0x1cd(%rbp), %rdi
movq %rdi, -0x7d8(%rbp)
callq 0x124730
movq -0x7d8(%rbp), %rcx
leaq -0x1c8(%rbp), %rdi
movl $0x2, %esi
leaq -0x1cc(%rbp), %rdx
callq 0x124750
jmp 0xf61c3
leaq -0x1ce(%rbp), %rdi
movq %rdi, -0x7e8(%rbp)
callq 0x1247f0
movq -0x7e0(%rbp), %rsi
movq -0x7e8(%rbp), %rcx
leaq -0x1b0(%rbp), %rdi
leaq -0x1c8(%rbp), %rdx
callq 0x124810
jmp 0xf61f9
leaq -0x1ce(%rbp), %rdi
callq 0x124890
leaq -0x1c8(%rbp), %rdi
callq 0x1248b0
leaq -0x1cd(%rbp), %rdi
callq 0x1247d0
leaq -0x200(%rbp), %rdi
callq 0x121590
movl $0x1, -0x204(%rbp)
movq -0x768(%rbp), %rcx
movl -0x204(%rbp), %eax
cmpl 0x1620(%rcx), %eax
jg 0xf63ca
movq -0x768(%rbp), %rdi
movl -0x204(%rbp), %esi
xorl %edx, %edx
callq 0xfff80
jmp 0xf6262
movslq -0x204(%rbp), %rsi
movl %esi, %eax
cvtsi2ss %eax, %xmm0
movss %xmm0, -0x7f8(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x124910
movss -0x7f8(%rbp), %xmm0
movss %xmm0, (%rax)
movl -0x204(%rbp), %eax
movl %eax, -0x7f4(%rbp)
movl %eax, -0x208(%rbp)
leaq -0x200(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x122180
movq %rax, -0x7f0(%rbp)
jmp 0xf62bd
movq -0x7f0(%rbp), %rax
movl -0x7f4(%rbp), %ecx
movl %ecx, (%rax)
movl -0x204(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x204(%rbp)
jmp 0xf6233
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0xf1(%rbp), %rdi
callq 0xb8c40
jmp 0xf8c8a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x119(%rbp), %rdi
callq 0xbefe0
jmp 0xf8c7e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x141(%rbp), %rdi
callq 0xbefe0
jmp 0xf8c72
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0xf8c66
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0xf8c5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x195(%rbp), %rdi
callq 0x1247d0
jmp 0xf8c4e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0xf63a8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x1ce(%rbp), %rdi
callq 0x124890
leaq -0x1c8(%rbp), %rdi
callq 0x1248b0
leaq -0x1cd(%rbp), %rdi
callq 0x1247d0
jmp 0xf8c42
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0xf8c2a
leaq -0x240(%rbp), %rdi
callq 0x123840
leaq -0x278(%rbp), %rdi
callq 0x123840
movl $0x0, -0x27c(%rbp)
movq -0x768(%rbp), %rcx
movl -0x27c(%rbp), %eax
cmpl 0x1620(%rcx), %eax
jge 0xf6c8f
movq -0x768(%rbp), %rsi
leaq -0x2b8(%rbp), %rdi
callq 0x10a8b0
jmp 0xf641a
leaq -0x278(%rbp), %rdi
leaq -0x2b8(%rbp), %rsi
callq 0x124930
leaq -0x2b8(%rbp), %rdi
callq 0x123920
leaq -0x278(%rbp), %rdi
callq 0x1243f0
cmpq $0x0, %rax
je 0xf64c6
leaq -0x278(%rbp), %rdi
movq %rdi, -0x800(%rbp)
callq 0x124450
movq -0x800(%rbp), %rdi
movq %rax, -0x2c0(%rbp)
callq 0x124480
movq %rax, -0x2c8(%rbp)
movq -0x2c0(%rbp), %rsi
movq -0x2c8(%rbp), %rdx
leaq -0x240(%rbp), %rdi
callq 0x124410
jmp 0xf6494
leaq -0x278(%rbp), %rdi
callq 0x1243f0
movq %rax, %rcx
movslq -0x27c(%rbp), %rax
addq %rcx, %rax
movl %eax, -0x27c(%rbp)
jmp 0xf64c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0xf8c12
leaq -0x278(%rbp), %rdi
callq 0x124450
movq %rax, -0x2d0(%rbp)
leaq -0x278(%rbp), %rdi
callq 0x124480
movq %rax, -0x2d8(%rbp)
leaq -0x2d0(%rbp), %rdi
leaq -0x2d8(%rbp), %rsi
callq 0x1244b0
testb $0x1, %al
jne 0xf6508
jmp 0xf6c8a
movq 0x1dea41(%rip), %rdi    # 0x2d4f50
leaq 0xec56f(%rip), %rsi     # 0x1e2a85
callq 0x2ff50
movq %rax, -0x808(%rbp)
jmp 0xf6524
leaq -0x2d0(%rbp), %rdi
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
callq 0x124910
movq -0x808(%rbp), %rdi
movss (%rax), %xmm0
callq 0x30ce0
movq %rax, -0x810(%rbp)
jmp 0xf6559
movq -0x810(%rbp), %rdi
leaq 0xed400(%rip), %rsi     # 0x1e3967
callq 0x2ff50
movq %rax, -0x818(%rbp)
jmp 0xf6575
leaq -0x2d0(%rbp), %rdi
callq 0x1244e0
movq -0x818(%rbp), %rdi
movl (%rax), %esi
callq 0x30640
movq %rax, -0x820(%rbp)
jmp 0xf6598
movq -0x820(%rbp), %rdi
leaq 0xe5ad6(%rip), %rsi     # 0x1dc07c
callq 0x2ff50
movq %rax, -0x828(%rbp)
jmp 0xf65b4
movq -0x828(%rbp), %rdi
movq 0x1dea06(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xf65c9
movq -0x768(%rbp), %rax
movl 0x1d84(%rax), %esi
leaq -0x318(%rbp), %rdi
callq 0x17e460
jmp 0xf65e4
leaq 0xedae4(%rip), %rdx     # 0x1e40cf
leaq -0x2f8(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0x441f0
jmp 0xf6600
leaq -0x318(%rbp), %rdi
callq 0x311e8
movl $0x0, -0x31c(%rbp)
leaq -0x2d0(%rbp), %rdi
callq 0x1244e0
movq %rax, %rdi
addq $0x8, %rdi
callq 0xb2ea0
movq %rax, -0x330(%rbp)
leaq -0x330(%rbp), %rdi
movl $0x1, %esi
callq 0x124960
movq %rax, -0x328(%rbp)
leaq -0x2d0(%rbp), %rdi
callq 0x1244e0
movq %rax, %rdi
addq $0x8, %rdi
callq 0xbdfd0
movq %rax, -0x338(%rbp)
leaq -0x328(%rbp), %rdi
leaq -0x338(%rbp), %rsi
callq 0x122510
testb $0x1, %al
jne 0xf6688
jmp 0xf68df
leaq -0x328(%rbp), %rdi
callq 0xb2ed0
movq %rax, %rcx
movq -0x768(%rbp), %rax
movsd (%rcx), %xmm0
movsd %xmm0, -0x840(%rbp)
addq $0x1400, %rax           # imm = 0x1400
movq %rax, -0x838(%rbp)
leaq -0x2d0(%rbp), %rdi
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
callq 0x124910
movq -0x838(%rbp), %rdi
cvttss2si (%rax), %rax
movl %eax, -0x33c(%rbp)
leaq -0x33c(%rbp), %rsi
callq 0xd0e30
movq %rax, -0x830(%rbp)
jmp 0xf66fa
movq -0x830(%rbp), %rdi
movl -0x31c(%rbp), %eax
movl %eax, %esi
movl %esi, %eax
incl %eax
movl %eax, -0x31c(%rbp)
callq 0xb2610
movsd -0x840(%rbp), %xmm0
movsd %xmm0, (%rax)
movq 0x1de825(%rip), %rdi    # 0x2d4f50
leaq 0xed082(%rip), %rsi     # 0x1e37b4
callq 0x2ff50
movq %rax, -0x848(%rbp)
jmp 0xf6740
leaq -0x2d0(%rbp), %rdi
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
callq 0x124910
movq -0x848(%rbp), %rdi
movss (%rax), %xmm0
callq 0x30ce0
movq %rax, -0x850(%rbp)
jmp 0xf6775
movq -0x850(%rbp), %rdi
leaq 0xed101(%rip), %rsi     # 0x1e3884
callq 0x2ff50
movq %rax, -0x858(%rbp)
jmp 0xf6791
leaq -0x328(%rbp), %rdi
callq 0xb2ed0
movq -0x858(%rbp), %rdi
movsd (%rax), %xmm0
callq 0x30710
movq %rax, -0x860(%rbp)
jmp 0xf67b6
movq -0x860(%rbp), %rdi
leaq 0xed003(%rip), %rsi     # 0x1e37c7
callq 0x2ff50
movq %rax, -0x868(%rbp)
jmp 0xf67d2
movq -0x868(%rbp), %rdi
movl -0x31c(%rbp), %esi
callq 0x30640
movq %rax, -0x870(%rbp)
jmp 0xf67ed
movq -0x870(%rbp), %rdi
movq 0x1de7cd(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xf6802
leaq -0x328(%rbp), %rdi
callq 0xb2ed0
movsd (%rax), %xmm0
leaq -0x380(%rbp), %rdi
callq 0x17e490
jmp 0xf6820
leaq 0xed8a8(%rip), %rdx     # 0x1e40cf
leaq -0x360(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0x441f0
jmp 0xf683c
leaq -0x2f8(%rbp), %rdi
leaq -0x360(%rbp), %rsi
callq 0x2f1e0
jmp 0xf6851
leaq -0x360(%rbp), %rdi
callq 0x311e8
leaq -0x380(%rbp), %rdi
callq 0x311e8
leaq -0x328(%rbp), %rdi
callq 0xb2ef0
jmp 0xf664d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x318(%rbp), %rdi
callq 0x311e8
jmp 0xf8c12
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0xf6c79
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0xf68ce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x360(%rbp), %rdi
callq 0x311e8
leaq -0x380(%rbp), %rdi
callq 0x311e8
jmp 0xf6c79
leaq -0x2d0(%rbp), %rdi
movq %rdi, -0x890(%rbp)
callq 0x1244e0
movq %rax, %rdi
addq $0x8, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xb2610
movq -0x890(%rbp), %rdi
movq %rax, %rcx
movq -0x768(%rbp), %rax
movsd (%rcx), %xmm0
movsd %xmm0, -0x888(%rbp)
addq $0x1a20, %rax           # imm = 0x1A20
movq %rax, -0x880(%rbp)
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
callq 0x124910
movq -0x880(%rbp), %rdi
cvttss2si (%rax), %rax
movl %eax, -0x384(%rbp)
leaq -0x384(%rbp), %rsi
callq 0x121fc0
movq %rax, -0x878(%rbp)
jmp 0xf6968
movq -0x768(%rbp), %rax
movq -0x878(%rbp), %rcx
movsd -0x888(%rbp), %xmm0
movsd %xmm0, (%rcx)
addq $0x1ab0, %rax           # imm = 0x1AB0
movq %rax, -0x8a0(%rbp)
leaq -0x2d0(%rbp), %rdi
movq %rdi, -0x8a8(%rbp)
callq 0x1244e0
movq %rax, %rdi
addq $0x8, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xb2610
movq -0x8a8(%rbp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, -0x898(%rbp)
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
callq 0x124910
movq -0x768(%rbp), %rdi
movq -0x8a0(%rbp), %rsi
movsd -0x898(%rbp), %xmm0
cvttss2si (%rax), %rax
movl %eax, %edx
callq 0x10f030
jmp 0xf69fe
movq 0x1de54b(%rip), %rdi    # 0x2d4f50
leaq 0xecda8(%rip), %rsi     # 0x1e37b4
callq 0x2ff50
movq %rax, -0x8b0(%rbp)
jmp 0xf6a1a
leaq -0x2d0(%rbp), %rdi
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
callq 0x124910
movq -0x8b0(%rbp), %rdi
movss (%rax), %xmm0
callq 0x30ce0
movq %rax, -0x8b8(%rbp)
jmp 0xf6a4f
movq -0x8b8(%rbp), %rdi
leaq 0xecd6f(%rip), %rsi     # 0x1e37cc
callq 0x2ff50
movq %rax, -0x8c0(%rbp)
jmp 0xf6a6b
leaq -0x2d0(%rbp), %rdi
callq 0x1244e0
movq %rax, %rdi
addq $0x8, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xb2610
movq -0x8c0(%rbp), %rdi
movsd (%rax), %xmm0
callq 0x30710
movq %rax, -0x8c8(%rbp)
jmp 0xf6aa0
movq -0x8c8(%rbp), %rdi
movq 0x1de51a(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xf6ab5
leaq -0x2d0(%rbp), %rdi
movq %rdi, -0x8e0(%rbp)
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
movq %rdi, -0x8d8(%rbp)
callq 0x124910
movss (%rax), %xmm0
movaps %xmm0, %xmm1
cvttss2si %xmm1, %rsi
movq %rsi, %rcx
sarq $0x3f, %rcx
movss 0xe404e(%rip), %xmm1    # 0x1dab48
movss %xmm1, -0x8d0(%rbp)
subss %xmm1, %xmm0
cvttss2si %xmm0, %rax
andq %rcx, %rax
orq %rax, %rsi
leaq -0x160(%rbp), %rdi
callq 0x124910
movq -0x8e0(%rbp), %rdi
movss (%rax), %xmm0
movss %xmm0, -0x8e4(%rbp)
callq 0x1244e0
movq -0x8d8(%rbp), %rdi
movl (%rax), %eax
movl %eax, %esi
callq 0x124910
movss -0x8d0(%rbp), %xmm1
movss (%rax), %xmm0
movaps %xmm0, %xmm2
cvttss2si %xmm2, %rsi
movq %rsi, %rcx
sarq $0x3f, %rcx
subss %xmm1, %xmm0
cvttss2si %xmm0, %rax
andq %rcx, %rax
orq %rax, %rsi
leaq -0x1b0(%rbp), %rdi
callq 0x1249a0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x124910
movss -0x8e4(%rbp), %xmm0
movq -0x8e0(%rbp), %rdi
movss %xmm0, (%rax)
callq 0x1244e0
movq -0x8d8(%rbp), %rdi
movl (%rax), %eax
movl %eax, %esi
callq 0x124910
movss -0x8d0(%rbp), %xmm1
movss (%rax), %xmm0
movaps %xmm0, %xmm2
cvttss2si %xmm2, %rsi
movq %rsi, %rcx
sarq $0x3f, %rcx
subss %xmm1, %xmm0
cvttss2si %xmm0, %rax
andq %rcx, %rax
orq %rax, %rsi
leaq -0x178(%rbp), %rdi
callq 0x124910
movq -0x8e0(%rbp), %rdi
movss (%rax), %xmm0
movss %xmm0, -0x8cc(%rbp)
callq 0x1244e0
movq -0x8d8(%rbp), %rdi
movl (%rax), %eax
movl %eax, %esi
callq 0x124910
movss -0x8d0(%rbp), %xmm1
movss (%rax), %xmm0
movaps %xmm0, %xmm2
cvttss2si %xmm2, %rsi
movq %rsi, %rcx
sarq $0x3f, %rcx
subss %xmm1, %xmm0
cvttss2si %xmm0, %rax
andq %rcx, %rax
orq %rax, %rsi
leaq -0x1b0(%rbp), %rdi
callq 0x1249a0
movq %rax, %rdi
movl $0x1, %esi
callq 0x124910
movss -0x8cc(%rbp), %xmm0
movss %xmm0, (%rax)
leaq -0x2f8(%rbp), %rdi
callq 0x311e8
leaq -0x2d0(%rbp), %rdi
callq 0x124510
jmp 0xf64d9
leaq -0x2f8(%rbp), %rdi
callq 0x311e8
jmp 0xf8c12
jmp 0xf63ec
movq -0x768(%rbp), %rsi
leaq -0x3a0(%rbp), %rdi
callq 0x116420
jmp 0xf6ca4
leaq -0x110(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
movq %rsi, -0x8f0(%rbp)
callq 0x122d70
movq -0x8f0(%rbp), %rdi
callq 0xb2660
movq -0x768(%rbp), %rsi
leaq -0x3b8(%rbp), %rdi
callq 0x116600
jmp 0xf6cdf
leaq -0x138(%rbp), %rdi
leaq -0x3b8(%rbp), %rsi
movq %rsi, -0x900(%rbp)
callq 0x122d70
movq -0x900(%rbp), %rdi
callq 0xb2660
movq 0x1de244(%rip), %rdi    # 0x2d4f50
leaq 0xecac3(%rip), %rsi     # 0x1e37d6
callq 0x2ff50
movq %rax, -0x8f8(%rbp)
jmp 0xf6d21
movq -0x8f8(%rbp), %rdi
movq 0x1de299(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xf6d36
jmp 0xf6d38
movq -0x768(%rbp), %rdi
callq 0xf99b0
movb %al, -0x901(%rbp)
jmp 0xf6d4c
movb -0x901(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0xf6d5d
jmp 0xf8b91
leaq -0x240(%rbp), %rdi
callq 0x1243f0
cmpq $0x0, %rax
jne 0xf6da3
movq -0x768(%rbp), %rsi
leaq -0x3f0(%rbp), %rdi
callq 0x10a8b0
jmp 0xf6d84
leaq -0x240(%rbp), %rdi
leaq -0x3f0(%rbp), %rsi
callq 0x124930
leaq -0x3f0(%rbp), %rdi
callq 0x123920
leaq -0x240(%rbp), %rdi
callq 0x124450
movq %rax, -0x3f8(%rbp)
leaq -0x240(%rbp), %rdi
callq 0x124480
movq %rax, -0x400(%rbp)
leaq -0x3f8(%rbp), %rdi
leaq -0x400(%rbp), %rsi
callq 0x1244b0
testb $0x1, %al
jne 0xf6de5
jmp 0xf8b80
movq 0x1de164(%rip), %rdi    # 0x2d4f50
leaq 0xebc92(%rip), %rsi     # 0x1e2a85
callq 0x2ff50
movq %rax, -0x910(%rbp)
jmp 0xf6e01
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
callq 0x124910
movq -0x910(%rbp), %rdi
movss (%rax), %xmm0
callq 0x30ce0
movq %rax, -0x918(%rbp)
jmp 0xf6e36
movq -0x918(%rbp), %rdi
leaq 0xecb23(%rip), %rsi     # 0x1e3967
callq 0x2ff50
movq %rax, -0x920(%rbp)
jmp 0xf6e52
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movq -0x920(%rbp), %rdi
movl (%rax), %esi
callq 0x30640
movq %rax, -0x928(%rbp)
jmp 0xf6e75
movq -0x928(%rbp), %rdi
leaq 0xe51f9(%rip), %rsi     # 0x1dc07c
callq 0x2ff50
movq %rax, -0x930(%rbp)
jmp 0xf6e91
movq -0x930(%rbp), %rdi
movq 0x1de129(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xf6ea6
movq -0x768(%rbp), %rax
movl 0x1d84(%rax), %esi
incl %esi
leaq -0x440(%rbp), %rdi
callq 0x17e460
jmp 0xf6ec3
leaq 0xed205(%rip), %rdx     # 0x1e40cf
leaq -0x420(%rbp), %rdi
leaq -0x440(%rbp), %rsi
callq 0x441f0
jmp 0xf6edf
leaq -0x440(%rbp), %rdi
callq 0x311e8
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0xf0(%rbp), %rdi
callq 0xccc10
cmpl $0x0, (%rax)
je 0xf7614
movq 0x1de039(%rip), %rdi    # 0x2d4f50
leaq 0xec8cb(%rip), %rsi     # 0x1e37e9
callq 0x2ff50
movq %rax, -0x938(%rbp)
jmp 0xf6f2c
movq -0x938(%rbp), %rdi
movq 0x1de08e(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xf6f41
movq 0x1de008(%rip), %rdi    # 0x2d4f50
leaq 0xec8be(%rip), %rsi     # 0x1e380d
callq 0x2ff50
movq %rax, -0x940(%rbp)
jmp 0xf6f5d
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movq %rax, %rdi
addq $0x8, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xb2610
movq -0x940(%rbp), %rdi
movsd (%rax), %xmm0
callq 0x30710
movq %rax, -0x948(%rbp)
jmp 0xf6f92
movq -0x948(%rbp), %rdi
movq 0x1de028(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xf6fa7
leaq -0x3f8(%rbp), %rdi
movq %rdi, -0x968(%rbp)
callq 0x1244e0
movq %rax, %rdi
addq $0x8, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xb2610
movq -0x968(%rbp), %rdi
movq %rax, %rcx
movq -0x768(%rbp), %rax
movsd (%rcx), %xmm0
movsd %xmm0, -0x960(%rbp)
addq $0x1a20, %rax           # imm = 0x1A20
movq %rax, -0x958(%rbp)
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
callq 0x124910
movq -0x958(%rbp), %rdi
cvttss2si (%rax), %rax
movl %eax, -0x444(%rbp)
leaq -0x444(%rbp), %rsi
callq 0x121fc0
movq %rax, -0x950(%rbp)
jmp 0xf7030
movq -0x768(%rbp), %rax
movq -0x950(%rbp), %rcx
movsd -0x960(%rbp), %xmm0
movsd %xmm0, (%rcx)
addq $0x1ab0, %rax           # imm = 0x1AB0
movq %rax, -0x978(%rbp)
leaq -0x3f8(%rbp), %rdi
movq %rdi, -0x980(%rbp)
callq 0x1244e0
movq %rax, %rdi
addq $0x8, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xb2610
movq -0x980(%rbp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, -0x970(%rbp)
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
callq 0x124910
movq -0x768(%rbp), %rdi
movq -0x978(%rbp), %rsi
movsd -0x970(%rbp), %xmm0
cvttss2si (%rax), %rax
movl %eax, %edx
callq 0x10f030
jmp 0xf70c6
movl $0x0, -0x448(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movq %rax, %rdi
addq $0x8, %rdi
callq 0xb2ea0
movq %rax, -0x458(%rbp)
leaq -0x458(%rbp), %rdi
movl $0x1, %esi
callq 0x124960
movq %rax, -0x450(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movq %rax, %rdi
addq $0x8, %rdi
callq 0xbdfd0
movq %rax, -0x460(%rbp)
leaq -0x450(%rbp), %rdi
leaq -0x460(%rbp), %rsi
callq 0x122510
testb $0x1, %al
jne 0xf7142
jmp 0xf7399
leaq -0x450(%rbp), %rdi
callq 0xb2ed0
movq %rax, %rcx
movq -0x768(%rbp), %rax
movsd (%rcx), %xmm0
movsd %xmm0, -0x998(%rbp)
addq $0x1400, %rax           # imm = 0x1400
movq %rax, -0x990(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
callq 0x124910
movq -0x990(%rbp), %rdi
cvttss2si (%rax), %rax
movl %eax, -0x464(%rbp)
leaq -0x464(%rbp), %rsi
callq 0xd0e30
movq %rax, -0x988(%rbp)
jmp 0xf71b4
movq -0x988(%rbp), %rdi
movl -0x448(%rbp), %eax
movl %eax, %esi
movl %esi, %eax
incl %eax
movl %eax, -0x448(%rbp)
callq 0xb2610
movsd -0x998(%rbp), %xmm0
movsd %xmm0, (%rax)
movq 0x1ddd6b(%rip), %rdi    # 0x2d4f50
leaq 0xec5c8(%rip), %rsi     # 0x1e37b4
callq 0x2ff50
movq %rax, -0x9a0(%rbp)
jmp 0xf71fa
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
callq 0x124910
movq -0x9a0(%rbp), %rdi
movss (%rax), %xmm0
callq 0x30ce0
movq %rax, -0x9a8(%rbp)
jmp 0xf722f
movq -0x9a8(%rbp), %rdi
leaq 0xec647(%rip), %rsi     # 0x1e3884
callq 0x2ff50
movq %rax, -0x9b0(%rbp)
jmp 0xf724b
leaq -0x450(%rbp), %rdi
callq 0xb2ed0
movq -0x9b0(%rbp), %rdi
movsd (%rax), %xmm0
callq 0x30710
movq %rax, -0x9b8(%rbp)
jmp 0xf7270
movq -0x9b8(%rbp), %rdi
leaq 0xec549(%rip), %rsi     # 0x1e37c7
callq 0x2ff50
movq %rax, -0x9c0(%rbp)
jmp 0xf728c
movq -0x9c0(%rbp), %rdi
movl -0x448(%rbp), %esi
callq 0x30640
movq %rax, -0x9c8(%rbp)
jmp 0xf72a7
movq -0x9c8(%rbp), %rdi
movq 0x1ddd13(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xf72bc
leaq -0x450(%rbp), %rdi
callq 0xb2ed0
movsd (%rax), %xmm0
leaq -0x4a8(%rbp), %rdi
callq 0x17e490
jmp 0xf72da
leaq 0xecdee(%rip), %rdx     # 0x1e40cf
leaq -0x488(%rbp), %rdi
leaq -0x4a8(%rbp), %rsi
callq 0x441f0
jmp 0xf72f6
leaq -0x420(%rbp), %rdi
leaq -0x488(%rbp), %rsi
callq 0x2f1e0
jmp 0xf730b
leaq -0x488(%rbp), %rdi
callq 0x311e8
leaq -0x4a8(%rbp), %rdi
callq 0x311e8
leaq -0x450(%rbp), %rdi
callq 0xb2ef0
jmp 0xf7107
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x440(%rbp), %rdi
callq 0x311e8
jmp 0xf8c12
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0xf8b6f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0xf7388
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x488(%rbp), %rdi
callq 0x311e8
leaq -0x4a8(%rbp), %rdi
callq 0x311e8
jmp 0xf8b6f
leaq -0x3f8(%rbp), %rdi
movq %rdi, -0x9e0(%rbp)
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
movq %rdi, -0x9f0(%rbp)
callq 0x124910
movss (%rax), %xmm0
movaps %xmm0, %xmm1
cvttss2si %xmm1, %rsi
movq %rsi, %rcx
sarq $0x3f, %rcx
movss 0xe376a(%rip), %xmm1    # 0x1dab48
movss %xmm1, -0x9e8(%rbp)
subss %xmm1, %xmm0
cvttss2si %xmm0, %rax
andq %rcx, %rax
orq %rax, %rsi
leaq -0x1b0(%rbp), %rdi
movq %rdi, -0x9f8(%rbp)
callq 0x1249a0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
movq %rsi, -0x9d0(%rbp)
callq 0x124910
movq -0x9e0(%rbp), %rdi
movss (%rax), %xmm0
movss %xmm0, -0x9fc(%rbp)
callq 0x1244e0
movq -0x9f0(%rbp), %rdi
movl (%rax), %eax
movl %eax, %esi
callq 0x124910
movss -0x9e8(%rbp), %xmm1
movss (%rax), %xmm0
movaps %xmm0, %xmm2
cvttss2si %xmm2, %rsi
movq %rsi, %rcx
sarq $0x3f, %rcx
subss %xmm1, %xmm0
cvttss2si %xmm0, %rax
andq %rcx, %rax
orq %rax, %rsi
leaq -0x160(%rbp), %rdi
callq 0x124910
movss -0x9fc(%rbp), %xmm0
movq -0x9e0(%rbp), %rdi
movss %xmm0, (%rax)
callq 0x1244e0
movq -0x9f0(%rbp), %rdi
movl (%rax), %eax
movl %eax, %esi
callq 0x124910
movq -0x9f8(%rbp), %rdi
movss -0x9e8(%rbp), %xmm1
movss (%rax), %xmm0
movaps %xmm0, %xmm2
cvttss2si %xmm2, %rsi
movq %rsi, %rcx
sarq $0x3f, %rcx
subss %xmm1, %xmm0
cvttss2si %xmm0, %rax
andq %rcx, %rax
orq %rax, %rsi
callq 0x1249a0
movq %rax, %rdi
movl $0x1, %esi
callq 0x124910
movq -0x9e0(%rbp), %rdi
movss (%rax), %xmm0
movss %xmm0, -0x9e4(%rbp)
callq 0x1244e0
movq -0x9f0(%rbp), %rdi
movl (%rax), %eax
movl %eax, %esi
callq 0x124910
movss -0x9e8(%rbp), %xmm1
movss (%rax), %xmm0
movaps %xmm0, %xmm2
cvttss2si %xmm2, %rsi
movq %rsi, %rcx
sarq $0x3f, %rcx
subss %xmm1, %xmm0
cvttss2si %xmm0, %rax
andq %rcx, %rax
orq %rax, %rsi
leaq -0x178(%rbp), %rdi
callq 0x124910
movss -0x9e4(%rbp), %xmm0
movq -0x9e0(%rbp), %rdi
movq %rax, %rcx
movq -0x768(%rbp), %rax
movss %xmm0, (%rcx)
addq $0x8, %rax
movq %rax, -0x9d8(%rbp)
callq 0x1244e0
movq -0x9d0(%rbp), %rsi
movq %rax, %rdi
addq $0x8, %rdi
callq 0xb2610
movq %rax, %rsi
leaq -0x4d0(%rbp), %rdi
leaq -0x420(%rbp), %rdx
callq 0x1249c0
jmp 0xf759a
movq -0x9d8(%rbp), %rdi
leaq -0x4d0(%rbp), %rsi
callq 0x123760
movq %rax, -0xa08(%rbp)
jmp 0xf75b6
movq -0xa08(%rbp), %rax
movq %rax, -0x4d8(%rbp)
leaq -0x4d0(%rbp), %rdi
callq 0x1237d0
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0xf0(%rbp), %rdi
callq 0xccc10
movl $0x0, (%rax)
jmp 0xf82e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x4d0(%rbp), %rdi
callq 0x1237d0
jmp 0xf8b6f
leaq -0x3f8(%rbp), %rdi
movq %rdi, -0xa28(%rbp)
callq 0x1244e0
movq %rax, %rdi
addq $0x8, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xb2610
movq -0xa28(%rbp), %rdi
movq %rax, %rcx
movq -0x768(%rbp), %rax
movsd (%rcx), %xmm0
movsd %xmm0, -0xa20(%rbp)
addq $0x1a20, %rax           # imm = 0x1A20
movq %rax, -0xa18(%rbp)
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
callq 0x124910
cvttss2si (%rax), %rax
movl %eax, -0x4dc(%rbp)
leaq -0x200(%rbp), %rdi
leaq -0x4dc(%rbp), %rsi
callq 0x122180
movq %rax, -0xa10(%rbp)
jmp 0xf769d
movq -0xa10(%rbp), %rsi
movq -0xa18(%rbp), %rdi
callq 0x1226a0
movq %rax, -0xa30(%rbp)
jmp 0xf76b9
movsd -0xa20(%rbp), %xmm1
movq -0xa30(%rbp), %rax
movsd (%rax), %xmm0
movb $0x1, %al
ucomisd %xmm1, %xmm0
movb %al, -0xa31(%rbp)
ja 0xf77f1
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
callq 0x124910
cvttss2si (%rax), %rax
movl %eax, -0x4e0(%rbp)
leaq -0x200(%rbp), %rdi
leaq -0x4e0(%rbp), %rsi
callq 0x122180
movq %rax, -0xa40(%rbp)
jmp 0xf7721
movq -0xa40(%rbp), %rax
movl (%rax), %eax
movl %eax, -0xa5c(%rbp)
leaq -0x3f8(%rbp), %rdi
movq %rdi, -0xa58(%rbp)
callq 0x1244e0
movq %rax, %rdi
addq $0x8, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xb2610
movq -0xa58(%rbp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, -0xa50(%rbp)
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
callq 0x124910
cvttss2si (%rax), %rax
movl %eax, -0x4e4(%rbp)
leaq -0x200(%rbp), %rdi
leaq -0x4e4(%rbp), %rsi
callq 0x122180
movq %rax, -0xa48(%rbp)
jmp 0xf77a2
movq -0xa48(%rbp), %rax
movl (%rax), %eax
movl %eax, %esi
leaq -0x110(%rbp), %rdi
callq 0xb2610
movq -0x768(%rbp), %rdi
movl -0xa5c(%rbp), %esi
movsd -0xa50(%rbp), %xmm0
movsd (%rax), %xmm1
cvtsd2ss %xmm1, %xmm1
callq 0x116790
movb %al, -0xa5d(%rbp)
jmp 0xf77e3
movb -0xa5d(%rbp), %al
movb %al, -0xa31(%rbp)
jmp 0xf77f1
movb -0xa31(%rbp), %al
testb $0x1, %al
jne 0xf7800
jmp 0xf7f4a
movq 0x1dd749(%rip), %rdi    # 0x2d4f50
leaq 0xec01c(%rip), %rsi     # 0x1e382a
callq 0x2ff50
movq %rax, -0xa68(%rbp)
jmp 0xf781c
movq -0xa68(%rbp), %rdi
movq 0x1dd79e(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xf7831
movl $0x0, -0x4e8(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movq %rax, %rdi
addq $0x8, %rdi
callq 0xb2ea0
movq %rax, -0x4f8(%rbp)
leaq -0x4f8(%rbp), %rdi
movl $0x1, %esi
callq 0x124960
movq %rax, -0x4f0(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movq %rax, %rdi
addq $0x8, %rdi
callq 0xbdfd0
movq %rax, -0x500(%rbp)
leaq -0x4f0(%rbp), %rdi
leaq -0x500(%rbp), %rsi
callq 0x122510
testb $0x1, %al
jne 0xf78ad
jmp 0xf7ad6
leaq -0x4f0(%rbp), %rdi
callq 0xb2ed0
movq %rax, %rcx
movq -0x768(%rbp), %rax
movsd (%rcx), %xmm0
movsd %xmm0, -0xa80(%rbp)
addq $0x1400, %rax           # imm = 0x1400
movq %rax, -0xa78(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
callq 0x124910
movq -0xa78(%rbp), %rdi
cvttss2si (%rax), %rax
movl %eax, -0x504(%rbp)
leaq -0x504(%rbp), %rsi
callq 0xd0e30
movq %rax, -0xa70(%rbp)
jmp 0xf791f
movq -0xa70(%rbp), %rdi
movl -0x4e8(%rbp), %eax
movl %eax, %esi
movl %esi, %eax
incl %eax
movl %eax, -0x4e8(%rbp)
callq 0xb2610
movsd -0xa80(%rbp), %xmm0
movsd %xmm0, (%rax)
movq 0x1dd600(%rip), %rdi    # 0x2d4f50
leaq 0xebe5d(%rip), %rsi     # 0x1e37b4
callq 0x2ff50
movq %rax, -0xa88(%rbp)
jmp 0xf7965
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
callq 0x124910
movq -0xa88(%rbp), %rdi
movss (%rax), %xmm0
callq 0x30ce0
movq %rax, -0xa90(%rbp)
jmp 0xf799a
movq -0xa90(%rbp), %rdi
leaq 0xebedc(%rip), %rsi     # 0x1e3884
callq 0x2ff50
movq %rax, -0xa98(%rbp)
jmp 0xf79b6
leaq -0x4f0(%rbp), %rdi
callq 0xb2ed0
movq -0xa98(%rbp), %rdi
movsd (%rax), %xmm0
callq 0x30710
movq %rax, -0xaa0(%rbp)
jmp 0xf79db
movq -0xaa0(%rbp), %rdi
leaq 0xebdde(%rip), %rsi     # 0x1e37c7
callq 0x2ff50
movq %rax, -0xaa8(%rbp)
jmp 0xf79f7
movq -0xaa8(%rbp), %rdi
movl -0x4e8(%rbp), %esi
callq 0x30640
movq %rax, -0xab0(%rbp)
jmp 0xf7a12
movq -0xab0(%rbp), %rdi
movq 0x1dd5a8(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xf7a27
leaq -0x4f0(%rbp), %rdi
callq 0xb2ed0
movsd (%rax), %xmm0
leaq -0x548(%rbp), %rdi
callq 0x17e490
jmp 0xf7a45
leaq 0xec683(%rip), %rdx     # 0x1e40cf
leaq -0x528(%rbp), %rdi
leaq -0x548(%rbp), %rsi
callq 0x441f0
jmp 0xf7a61
leaq -0x420(%rbp), %rdi
leaq -0x528(%rbp), %rsi
callq 0x2f1e0
jmp 0xf7a76
leaq -0x528(%rbp), %rdi
callq 0x311e8
leaq -0x548(%rbp), %rdi
callq 0x311e8
leaq -0x4f0(%rbp), %rdi
callq 0xb2ef0
jmp 0xf7872
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0xf7ac5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x528(%rbp), %rdi
callq 0x311e8
leaq -0x548(%rbp), %rdi
callq 0x311e8
jmp 0xf8b6f
leaq -0x3f8(%rbp), %rdi
movq %rdi, -0xad0(%rbp)
callq 0x1244e0
movq %rax, %rdi
addq $0x8, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xb2610
movq -0xad0(%rbp), %rdi
movq %rax, %rcx
movq -0x768(%rbp), %rax
movsd (%rcx), %xmm0
movsd %xmm0, -0xac8(%rbp)
addq $0x1a20, %rax           # imm = 0x1A20
movq %rax, -0xac0(%rbp)
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
callq 0x124910
movq -0xac0(%rbp), %rdi
cvttss2si (%rax), %rax
movl %eax, -0x54c(%rbp)
leaq -0x54c(%rbp), %rsi
callq 0x121fc0
movq %rax, -0xab8(%rbp)
jmp 0xf7b5f
movq -0x768(%rbp), %rax
movq -0xab8(%rbp), %rcx
movsd -0xac8(%rbp), %xmm0
movsd %xmm0, (%rcx)
addq $0x1ab0, %rax           # imm = 0x1AB0
movq %rax, -0xae0(%rbp)
leaq -0x3f8(%rbp), %rdi
movq %rdi, -0xae8(%rbp)
callq 0x1244e0
movq %rax, %rdi
addq $0x8, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xb2610
movq -0xae8(%rbp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, -0xad8(%rbp)
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
callq 0x124910
movq -0x768(%rbp), %rdi
movq -0xae0(%rbp), %rsi
movsd -0xad8(%rbp), %xmm0
cvttss2si (%rax), %rax
movl %eax, %edx
callq 0x10f030
jmp 0xf7bf5
movq 0x1dd354(%rip), %rdi    # 0x2d4f50
leaq 0xebc5a(%rip), %rsi     # 0x1e385d
callq 0x2ff50
movq %rax, -0xaf0(%rbp)
jmp 0xf7c11
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movq %rax, %rdi
addq $0x8, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xb2610
movq -0xaf0(%rbp), %rdi
movsd (%rax), %xmm0
callq 0x30710
movq %rax, -0xaf8(%rbp)
jmp 0xf7c46
movq -0xaf8(%rbp), %rdi
movq 0x1dd374(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xf7c5b
movq 0x1dd2ee(%rip), %rdi    # 0x2d4f50
leaq 0xebc11(%rip), %rsi     # 0x1e387a
callq 0x2ff50
movq %rax, -0xb00(%rbp)
jmp 0xf7c77
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
callq 0x124910
movss (%rax), %xmm0
movaps %xmm0, %xmm1
cvttss2si %xmm1, %rsi
movq %rsi, %rcx
sarq $0x3f, %rcx
movss 0xe2e9a(%rip), %xmm1    # 0x1dab48
subss %xmm1, %xmm0
cvttss2si %xmm0, %rax
andq %rcx, %rax
orq %rax, %rsi
leaq -0x1b0(%rbp), %rdi
callq 0x1249a0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x124910
movq -0xb00(%rbp), %rdi
movss (%rax), %xmm0
callq 0x30ce0
movq %rax, -0xb08(%rbp)
jmp 0xf7cee
movq -0xb08(%rbp), %rdi
leaq 0xebb8d(%rip), %rsi     # 0x1e3889
callq 0x2ff50
movq %rax, -0xb10(%rbp)
jmp 0xf7d0a
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
callq 0x124910
movss (%rax), %xmm0
movaps %xmm0, %xmm1
cvttss2si %xmm1, %rsi
movq %rsi, %rcx
sarq $0x3f, %rcx
movss 0xe2e07(%rip), %xmm1    # 0x1dab48
subss %xmm1, %xmm0
cvttss2si %xmm0, %rax
andq %rcx, %rax
orq %rax, %rsi
leaq -0x1b0(%rbp), %rdi
callq 0x1249a0
movq %rax, %rdi
movl $0x1, %esi
callq 0x124910
movq -0xb10(%rbp), %rdi
movss (%rax), %xmm0
callq 0x30ce0
movq %rax, -0xb18(%rbp)
jmp 0xf7d82
movq -0xb18(%rbp), %rdi
movq 0x1dd238(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xf7d97
leaq -0x3f8(%rbp), %rdi
movq %rdi, -0xb30(%rbp)
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
movq %rdi, -0xb28(%rbp)
callq 0x124910
movss (%rax), %xmm0
movaps %xmm0, %xmm1
cvttss2si %xmm1, %rsi
movq %rsi, %rcx
sarq $0x3f, %rcx
movss 0xe2d6c(%rip), %xmm1    # 0x1dab48
movss %xmm1, -0xb20(%rbp)
subss %xmm1, %xmm0
cvttss2si %xmm0, %rax
andq %rcx, %rax
orq %rax, %rsi
leaq -0x1b0(%rbp), %rdi
movq %rdi, -0xb38(%rbp)
callq 0x1249a0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x124910
movq -0xb30(%rbp), %rdi
movss (%rax), %xmm0
movss %xmm0, -0xb3c(%rbp)
callq 0x1244e0
movq -0xb28(%rbp), %rdi
movl (%rax), %eax
movl %eax, %esi
callq 0x124910
movss -0xb20(%rbp), %xmm1
movss (%rax), %xmm0
movaps %xmm0, %xmm2
cvttss2si %xmm2, %rsi
movq %rsi, %rcx
sarq $0x3f, %rcx
subss %xmm1, %xmm0
cvttss2si %xmm0, %rax
andq %rcx, %rax
orq %rax, %rsi
leaq -0x160(%rbp), %rdi
callq 0x124910
movss -0xb3c(%rbp), %xmm0
movq -0xb30(%rbp), %rdi
movss %xmm0, (%rax)
callq 0x1244e0
movq -0xb28(%rbp), %rdi
movl (%rax), %eax
movl %eax, %esi
callq 0x124910
movq -0xb38(%rbp), %rdi
movss -0xb20(%rbp), %xmm1
movss (%rax), %xmm0
movaps %xmm0, %xmm2
cvttss2si %xmm2, %rsi
movq %rsi, %rcx
sarq $0x3f, %rcx
subss %xmm1, %xmm0
cvttss2si %xmm0, %rax
andq %rcx, %rax
orq %rax, %rsi
callq 0x1249a0
movq %rax, %rdi
movl $0x1, %esi
callq 0x124910
movq -0xb30(%rbp), %rdi
movss (%rax), %xmm0
movss %xmm0, -0xb1c(%rbp)
callq 0x1244e0
movq -0xb28(%rbp), %rdi
movl (%rax), %eax
movl %eax, %esi
callq 0x124910
movss -0xb20(%rbp), %xmm1
movss (%rax), %xmm0
movaps %xmm0, %xmm2
cvttss2si %xmm2, %rsi
movq %rsi, %rcx
sarq $0x3f, %rcx
subss %xmm1, %xmm0
cvttss2si %xmm0, %rax
andq %rcx, %rax
orq %rax, %rsi
leaq -0x178(%rbp), %rdi
callq 0x124910
movss -0xb1c(%rbp), %xmm0
movss %xmm0, (%rax)
jmp 0xf806d
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movq %rax, %rdi
addq $0x8, %rdi
callq 0xb2ea0
movq %rax, -0x560(%rbp)
leaq -0x560(%rbp), %rdi
movl $0x1, %esi
callq 0x124960
movq %rax, -0x558(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movq %rax, %rdi
addq $0x8, %rdi
callq 0xbdfd0
movq %rax, -0x568(%rbp)
leaq -0x558(%rbp), %rdi
leaq -0x568(%rbp), %rsi
callq 0x122510
testb $0x1, %al
jne 0xf7fbc
jmp 0xf806b
leaq -0x558(%rbp), %rdi
callq 0xb2ed0
movsd (%rax), %xmm0
leaq -0x5a8(%rbp), %rdi
callq 0x17e490
jmp 0xf7fda
leaq 0xec0ee(%rip), %rdx     # 0x1e40cf
leaq -0x588(%rbp), %rdi
leaq -0x5a8(%rbp), %rsi
callq 0x441f0
jmp 0xf7ff6
leaq -0x420(%rbp), %rdi
leaq -0x588(%rbp), %rsi
callq 0x2f1e0
jmp 0xf800b
leaq -0x588(%rbp), %rdi
callq 0x311e8
leaq -0x5a8(%rbp), %rdi
callq 0x311e8
leaq -0x558(%rbp), %rdi
callq 0xb2ef0
jmp 0xf7f81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0xf805a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x588(%rbp), %rdi
callq 0x311e8
leaq -0x5a8(%rbp), %rdi
callq 0x311e8
jmp 0xf8b6f
jmp 0xf806d
movq -0x768(%rbp), %rax
addq $0x8, %rax
movq %rax, -0xb48(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movq %rax, %rdi
addq $0x8, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xb2610
movq %rax, %rsi
leaq -0x5d0(%rbp), %rdi
leaq -0x420(%rbp), %rdx
callq 0x1249c0
jmp 0xf80b3
movq -0xb48(%rbp), %rdi
leaq -0x5d0(%rbp), %rsi
callq 0x123760
movq %rax, -0xb50(%rbp)
jmp 0xf80cf
movq -0xb50(%rbp), %rax
movq %rax, -0x5d8(%rbp)
leaq -0x5d0(%rbp), %rdi
callq 0x1237d0
movq 0x1dce60(%rip), %rdi    # 0x2d4f50
leaq 0xeb79e(%rip), %rsi     # 0x1e3895
callq 0x2ff50
movq %rax, -0xb58(%rbp)
jmp 0xf8105
movq -0xb58(%rbp), %rdi
leaq -0x420(%rbp), %rsi
callq 0x2f780
movq %rax, -0xb60(%rbp)
jmp 0xf8121
movq -0xb60(%rbp), %rdi
movq 0x1dce99(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xf8136
leaq -0x3f8(%rbp), %rdi
movq %rdi, -0xb80(%rbp)
callq 0x1244e0
movq %rax, %rdi
addq $0x8, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xb2610
movq -0xb80(%rbp), %rdi
movq %rax, %rcx
movq -0x768(%rbp), %rax
movsd (%rcx), %xmm0
movsd %xmm0, -0xb78(%rbp)
addq $0x1a20, %rax           # imm = 0x1A20
movq %rax, -0xb70(%rbp)
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
callq 0x124910
cvttss2si (%rax), %rax
movl %eax, -0x5dc(%rbp)
leaq -0x200(%rbp), %rdi
leaq -0x5dc(%rbp), %rsi
callq 0x122180
movq %rax, -0xb68(%rbp)
jmp 0xf81bf
movq -0xb68(%rbp), %rsi
movq -0xb70(%rbp), %rdi
callq 0x1226a0
movq %rax, -0xb88(%rbp)
jmp 0xf81db
movsd -0xb78(%rbp), %xmm1
movq -0xb88(%rbp), %rax
movsd (%rax), %xmm0
movb $0x1, %al
ucomisd %xmm1, %xmm0
movb %al, -0xb89(%rbp)
ja 0xf823c
movq -0x768(%rbp), %rax
movss 0x1720(%rax), %xmm0
movss %xmm0, -0xb90(%rbp)
callq 0x30b00
movss -0xb90(%rbp), %xmm0
cvtsi2ss %eax, %xmm1
movss 0xe892c(%rip), %xmm2    # 0x1e0b58
divss %xmm2, %xmm1
ucomiss %xmm1, %xmm0
setae %al
movb %al, -0xb89(%rbp)
movb -0xb89(%rbp), %al
testb $0x1, %al
jne 0xf824b
jmp 0xf82e6
movq 0x1dccfe(%rip), %rdi    # 0x2d4f50
leaq 0xeb647(%rip), %rsi     # 0x1e38a0
callq 0x2ff50
movq %rax, -0xb98(%rbp)
jmp 0xf8267
movq -0xb98(%rbp), %rdi
movq 0x1dcd53(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xf827c
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
callq 0x124910
cvttss2si (%rax), %rax
movl %eax, -0xb9c(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0xf0(%rbp), %rdi
callq 0xccc10
movl -0xb9c(%rbp), %ecx
movl %ecx, (%rax)
jmp 0xf82e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x5d0(%rbp), %rdi
callq 0x1237d0
jmp 0xf8b6f
jmp 0xf82e8
movq -0x768(%rbp), %rax
cmpl $0x0, 0x1728(%rax)
je 0xf8467
movq -0x768(%rbp), %rcx
movl 0x1d84(%rcx), %eax
addl $0x1, %eax
movl %eax, 0x1d84(%rcx)
cmpl $0x0, %eax
je 0xf8467
movq -0x768(%rbp), %rcx
movl 0x1d84(%rcx), %eax
xorl %edx, %edx
divl 0x1728(%rcx)
cmpl $0x0, %edx
jne 0xf8467
movq -0x768(%rbp), %rax
movq %rax, %rcx
addq $0x1520, %rcx           # imm = 0x1520
movq %rcx, -0xba8(%rbp)
movl 0x1d84(%rax), %esi
leaq -0x640(%rbp), %rdi
callq 0x17e460
jmp 0xf8365
movq -0xba8(%rbp), %rsi
leaq -0x620(%rbp), %rdi
leaq -0x640(%rbp), %rdx
callq 0xb3380
jmp 0xf8381
leaq 0xeafcd(%rip), %rdx     # 0x1e3355
leaq -0x600(%rbp), %rdi
leaq -0x620(%rbp), %rsi
callq 0x441f0
jmp 0xf839d
leaq -0x620(%rbp), %rdi
callq 0x311e8
leaq -0x640(%rbp), %rdi
callq 0x311e8
leaq -0x660(%rbp), %rdi
leaq -0x600(%rbp), %rsi
callq 0x2f300
jmp 0xf83ca
movq -0x768(%rbp), %rdi
leaq -0x660(%rbp), %rsi
callq 0x105530
jmp 0xf83df
leaq -0x660(%rbp), %rdi
callq 0x311e8
leaq -0x600(%rbp), %rdi
callq 0x311e8
jmp 0xf8467
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0xf841f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x620(%rbp), %rdi
callq 0x311e8
leaq -0x640(%rbp), %rdi
callq 0x311e8
jmp 0xf8b6f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0xf8456
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x660(%rbp), %rdi
callq 0x311e8
leaq -0x600(%rbp), %rdi
callq 0x311e8
jmp 0xf8b6f
callq 0x30b00
movq -0x768(%rbp), %rcx
movl 0x1620(%rcx), %ecx
cltd
idivl %ecx
incl %edx
movl %edx, -0x664(%rbp)
movq 0x1dcac5(%rip), %rdi    # 0x2d4f50
leaq 0xeb429(%rip), %rsi     # 0x1e38bb
callq 0x2ff50
movq %rax, -0xbb0(%rbp)
jmp 0xf84a0
movq -0xbb0(%rbp), %rdi
movl -0x664(%rbp), %esi
callq 0x30640
movq %rax, -0xbb8(%rbp)
jmp 0xf84bb
movq -0xbb8(%rbp), %rdi
movq 0x1dcaff(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xf84d0
leaq -0x680(%rbp), %rdi
callq 0xb2580
leaq -0x698(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xb2bc0
jmp 0xf84f1
leaq -0x6b0(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0xb2bc0
jmp 0xf8506
movq -0x768(%rbp), %rdi
leaq -0x698(%rbp), %rsi
leaq -0x6b0(%rbp), %rdx
callq 0x116860
jmp 0xf8522
leaq -0x6b0(%rbp), %rdi
callq 0xb2660
leaq -0x698(%rbp), %rdi
callq 0xb2660
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0xf0(%rbp), %rdi
callq 0xccc10
cmpl $0x0, (%rax)
jne 0xf8a97
movq -0x768(%rbp), %rdi
callq 0x116ab0
movl %eax, -0xbbc(%rbp)
jmp 0xf8573
movl -0xbbc(%rbp), %eax
movl %eax, -0x6b4(%rbp)
movq 0x1dc9ca(%rip), %rdi    # 0x2d4f50
leaq 0xeb341(%rip), %rsi     # 0x1e38ce
callq 0x2ff50
movq %rax, -0xbc8(%rbp)
jmp 0xf859b
movq -0xbc8(%rbp), %rdi
movl -0x6b4(%rbp), %esi
callq 0x30640
movq %rax, -0xbd0(%rbp)
jmp 0xf85b6
movq -0xbd0(%rbp), %rdi
movq 0x1dca04(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xf85cb
movl -0x6b4(%rbp), %eax
movl %eax, -0xbdc(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
callq 0x124910
cvttss2si (%rax), %rax
movl %eax, -0x6b8(%rbp)
leaq -0x200(%rbp), %rdi
leaq -0x6b8(%rbp), %rsi
callq 0x122180
movq %rax, -0xbd8(%rbp)
jmp 0xf861a
movq -0xbd8(%rbp), %rax
movl -0xbdc(%rbp), %ecx
movl %ecx, (%rax)
movl -0x6b4(%rbp), %eax
movl %eax, -0xbe4(%rbp)
movl -0x664(%rbp), %eax
movl %eax, -0xbe0(%rbp)
leaq -0x6e8(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xb2bc0
jmp 0xf8656
leaq -0x700(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0x124a00
jmp 0xf866b
leaq -0x718(%rbp), %rdi
leaq -0x160(%rbp), %rsi
callq 0x124a00
jmp 0xf8680
movl -0xbe0(%rbp), %ecx
movl -0xbe4(%rbp), %edx
movq -0x768(%rbp), %rsi
movq %rsp, %rax
leaq -0x1b0(%rbp), %rdi
movq %rdi, 0x8(%rax)
leaq -0x718(%rbp), %rdi
movq %rdi, (%rax)
leaq -0x6d0(%rbp), %rdi
leaq -0x6e8(%rbp), %r8
leaq -0x700(%rbp), %r9
callq 0x116df0
jmp 0xf86c7
leaq -0x680(%rbp), %rdi
leaq -0x6d0(%rbp), %rsi
movq %rsi, -0xbf8(%rbp)
callq 0x122d70
movq -0xbf8(%rbp), %rdi
callq 0xb2660
leaq -0x718(%rbp), %rdi
callq 0x1248b0
leaq -0x700(%rbp), %rdi
callq 0x1248b0
leaq -0x6e8(%rbp), %rdi
callq 0xb2660
movq 0x1dc838(%rip), %rdi    # 0x2d4f50
leaq 0xeb1dc(%rip), %rsi     # 0x1e38fb
callq 0x2ff50
movq %rax, -0xbf0(%rbp)
jmp 0xf872d
movq -0xbf0(%rbp), %rdi
movq 0x1dc88d(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xf8742
movl -0x664(%rbp), %eax
cvtsi2ss %rax, %xmm0
movss %xmm0, -0xc04(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
callq 0x124910
movss -0xc04(%rbp), %xmm0
movss %xmm0, (%rax)
movq 0x1dc7cc(%rip), %rdi    # 0x2d4f50
leaq 0xeb18b(%rip), %rsi     # 0x1e3916
callq 0x2ff50
movq %rax, -0xc00(%rbp)
jmp 0xf8799
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movq -0xc00(%rbp), %rdi
movl (%rax), %esi
callq 0x30640
movq %rax, -0xc10(%rbp)
jmp 0xf87bc
movq -0xc10(%rbp), %rdi
leaq 0xeb159(%rip), %rsi     # 0x1e3923
callq 0x2ff50
movq %rax, -0xc18(%rbp)
jmp 0xf87d8
movq -0xc18(%rbp), %rdi
movl -0x664(%rbp), %esi
callq 0x30640
movq %rax, -0xc20(%rbp)
jmp 0xf87f3
movq -0xc20(%rbp), %rdi
movq 0x1dc7c7(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xf8808
leaq -0x730(%rbp), %rdi
callq 0x448b0
leaq -0x680(%rbp), %rdi
callq 0xb2ea0
movq %rax, -0x738(%rbp)
leaq -0x680(%rbp), %rdi
callq 0xbdfd0
movq %rax, -0x740(%rbp)
leaq -0x738(%rbp), %rdi
leaq -0x740(%rbp), %rsi
callq 0x122510
testb $0x1, %al
jne 0xf8856
jmp 0xf896a
leaq -0x738(%rbp), %rdi
callq 0xb2ed0
movsd (%rax), %xmm0
leaq -0x760(%rbp), %rdi
callq 0x17e490
jmp 0xf8874
leaq -0x730(%rbp), %rdi
leaq -0x760(%rbp), %rsi
callq 0xb39c0
jmp 0xf8889
leaq -0x760(%rbp), %rdi
callq 0x311e8
leaq -0x738(%rbp), %rdi
callq 0xb2ef0
jmp 0xf8827
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0xf8b63
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0xf88da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x6b0(%rbp), %rdi
callq 0xb2660
leaq -0x698(%rbp), %rdi
callq 0xb2660
jmp 0xf8b63
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0xf892b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0xf891f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x718(%rbp), %rdi
callq 0x1248b0
leaq -0x700(%rbp), %rdi
callq 0x1248b0
leaq -0x6e8(%rbp), %rdi
callq 0xb2660
jmp 0xf8b63
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0xf8a86
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x760(%rbp), %rdi
callq 0x311e8
jmp 0xf8a86
movq 0x1dc5df(%rip), %rdi    # 0x2d4f50
leaq 0xeafb9(%rip), %rsi     # 0x1e3931
callq 0x2ff50
movq %rax, -0xc28(%rbp)
jmp 0xf8986
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
callq 0x124910
movq -0xc28(%rbp), %rdi
movss (%rax), %xmm0
callq 0x30ce0
movq %rax, -0xc30(%rbp)
jmp 0xf89bb
movq -0xc30(%rbp), %rdi
leaq 0xeaf71(%rip), %rsi     # 0x1e393a
callq 0x2ff50
movq %rax, -0xc38(%rbp)
jmp 0xf89d7
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movq -0xc38(%rbp), %rdi
movl (%rax), %esi
callq 0x30640
movq %rax, -0xc40(%rbp)
jmp 0xf89fa
movq -0xc40(%rbp), %rdi
movq 0x1dc5c0(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xf8a0f
movq -0x768(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xc48(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movq -0xc48(%rbp), %rdi
movl (%rax), %edx
movq %rsp, %rax
movl $0xffffffff, (%rax)     # imm = 0xFFFFFFFF
movl $0x15, %ecx
xorl %r8d, %r8d
leaq -0x730(%rbp), %r9
movl %r8d, %esi
callq 0xcd520
jmp 0xf8a57
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movq -0x768(%rbp), %rdi
movl (%rax), %esi
xorl %edx, %edx
callq 0xfff80
jmp 0xf8a75
leaq -0x730(%rbp), %rdi
callq 0x448d0
jmp 0xf8b3a
leaq -0x730(%rbp), %rdi
callq 0x448d0
jmp 0xf8b63
movq 0x1dc4b2(%rip), %rdi    # 0x2d4f50
leaq 0xeaeae(%rip), %rsi     # 0x1e3953
callq 0x2ff50
movq %rax, -0xc50(%rbp)
jmp 0xf8ab3
leaq -0x3f8(%rbp), %rdi
callq 0x1244e0
movq -0xc50(%rbp), %rdi
movl (%rax), %esi
callq 0x30640
movq %rax, -0xc58(%rbp)
jmp 0xf8ad6
movq -0xc58(%rbp), %rdi
movq 0x1dc4e4(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xf8aeb
leaq -0x3f8(%rbp), %rdi
movq %rdi, -0xc68(%rbp)
callq 0x1244e0
movl (%rax), %eax
movl %eax, %esi
leaq -0xf0(%rbp), %rdi
callq 0xccc10
movq -0xc68(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0xc5c(%rbp)
callq 0x1244e0
movq -0x768(%rbp), %rdi
movl -0xc5c(%rbp), %esi
movl (%rax), %edx
callq 0x117570
jmp 0xf8b38
jmp 0xf8b3a
leaq -0x680(%rbp), %rdi
callq 0xb2660
leaq -0x420(%rbp), %rdi
callq 0x311e8
leaq -0x3f8(%rbp), %rdi
callq 0x124510
jmp 0xf6db6
leaq -0x680(%rbp), %rdi
callq 0xb2660
leaq -0x420(%rbp), %rdi
callq 0x311e8
jmp 0xf8c12
leaq -0x240(%rbp), %rdi
callq 0x124540
jmp 0xf6d38
leaq -0x278(%rbp), %rdi
callq 0x123920
leaq -0x240(%rbp), %rdi
callq 0x123920
leaq -0x200(%rbp), %rdi
callq 0x1216d0
leaq -0x1b0(%rbp), %rdi
callq 0x124af0
leaq -0x190(%rbp), %rdi
callq 0x1248b0
leaq -0x178(%rbp), %rdi
callq 0x1248b0
leaq -0x160(%rbp), %rdi
callq 0x1248b0
leaq -0x138(%rbp), %rdi
callq 0xb2660
leaq -0x110(%rbp), %rdi
callq 0xb2660
leaq -0xf0(%rbp), %rdi
callq 0xb2400
addq $0xc80, %rsp            # imm = 0xC80
popq %rbp
retq
leaq -0x278(%rbp), %rdi
callq 0x123920
leaq -0x240(%rbp), %rdi
callq 0x123920
leaq -0x200(%rbp), %rdi
callq 0x1216d0
leaq -0x1b0(%rbp), %rdi
callq 0x124af0
leaq -0x190(%rbp), %rdi
callq 0x1248b0
leaq -0x178(%rbp), %rdi
callq 0x1248b0
leaq -0x160(%rbp), %rdi
callq 0x1248b0
leaq -0x138(%rbp), %rdi
callq 0xb2660
leaq -0x110(%rbp), %rdi
callq 0xb2660
leaq -0xf0(%rbp), %rdi
callq 0xb2400
movq -0x30(%rbp), %rdi
callq 0x30170
nopw %cs:(%rax,%rax)