// File: /workspace/github_cpp_makefile_star2_O3/richardposner[P]BioNetFit2/src/code/Swarm.cpp
// Function: Swarm::runSDE()
void Swarm::runSDE() {
	if (options.verbosity >= 3) {
		cout << "Running a synchronous DE fit" << endl;
	}

	// Create an output directory for each island
	if (!checkIfFileExists(options.jobOutputDir + toString(1))) {
		string createDirCmd = "mkdir " + options.jobOutputDir + toString(1);
		runCommand(createDirCmd);
	}

	if (options.verbosity >= 3) {
		cout << "Generating island topology" << endl;
	}
	vector<vector<unsigned int> > islandTopology;
	if (!resumingSavedSwarm) {
		// Generate all particles that will be present in the swarm
		islandTopology = generateTopology(options.numIslands);
		// Map all particles and islands
		unsigned int particlesPerIsland = options.swarmSize / options.numIslands;
		unsigned int currParticle = 1;
		for (unsigned int i = 1; i <= options.numIslands; ++i) {
			for (unsigned int p = 0; p < particlesPerIsland; ++p) {
				particleToIsland_[currParticle] = i;
				islandToParticle_[i][p] = currParticle;
				if (options.verbosity >= 4) {
					cout << i << " " << p << " " << islandToParticle_[i][p] << endl;
				}
				if(options.verbosity >= 3){
					cout << "Particle to island " << particleToIsland_[currParticle] << endl;
					cout << "currPar " << currParticle << endl;
				}
				++currParticle;
			}
		}
	}

	saveSwarmState();

	//if (options.verbosity >= 3) {
	//	cout << "Launching first generation" << endl;
	//}

	unordered_map<unsigned int, vector<double> > finishedParticles;
	bool stopCriteria = false;
	vector<unsigned int> islandFinishedParticles(options.numIslands + 1, 0);

	map<unsigned int, vector<vector<double> > > migrationSets;

	bool trialLoop = false;




	//saveSwarmState();
	string path; //Raquel added
	//vector<unsigned int> finishedParticles;
	//vector<unsigned int> particlestoProcess;


	//int numFinishedParticles = 0;

	//unsigned int p = 1;
	//int mid; //Raquel added
	int sp = 0; //Raquel added
	//int nModels = options.models.size(); //Raquel added




	while(!stopCriteria) {


		//numFinishedParticles = options.swarmSize;
		string currentDirectory = options.jobOutputDir + toString(currentGeneration);
		if (options.deleteOldFiles) {
			//cout << "RAQUEL: starting cleanupFiles" << endl;

			cleanupFiles(currentDirectory.c_str());
			//cout << "RAQUEL: finished cleanupFiles" << endl;

		}


		//cout << "RAQUEL: starting runGeneration" << endl;
		runGeneration();
		//usleep(250000);

		// Create the output directory for the next generation
		if (!checkIfFileExists(options.jobOutputDir + toString(currentGeneration))) {
			string createDirCmd = "mkdir " + options.jobOutputDir + toString(currentGeneration);
			int retryCounter = 0;
			while (runCommand(createDirCmd) != 0 && !checkIfFileExists(options.jobOutputDir + toString(currentGeneration))) {
				if(++retryCounter >= 100) {
					outputError("Error: Couldn't create " + options.jobOutputDir + toString(currentGeneration) + " to hold next generation's output.");
				}
				//sleep(1);
				if(options.verbosity>=3){

					cout << "Trying again to create dir" << endl;
				}
			}
		}

		saveSwarmState();
		//cout << "RAQUEL: finished saveSwarmState" << endl;

		string outputPath = options.jobOutputDir + toString(currentGeneration - 1 ) + "_summary.txt";

		cout << "Generation: " << toString(currentGeneration - 1 ) << endl;

		outputRunSummary(outputPath);

		unordered_map<unsigned int, vector<double> > finished;


		for (int i = 1; i <= options.swarmSize; i++){
			//for (int mid=0; mid < options.models.size(); mid++){
				finished.insert(make_pair(i, subparticleCurrParamSets_[i][0]));


			//}

		}

		if(options.verbosity >= 4){
			cout << "RAQUEL FINISHED SIZE " << finished.size() << endl;
			cout << "vector size " << islandFinishedParticles.size() << endl;
		}
		if (finished.size()) {
			finishedParticles.insert(finished.begin(), finished.end());
			//numFinishedParticles = finished.size();
		}
		int counter = 0;


//		for(auto index = particleToIsland_.begin(); index != particleToIsland_.end(); )

		for (auto particle = finishedParticles.begin(); particle != finishedParticles.end(); ++particle) {
			// Increment the counter that tracks the number of particles finished
			// for a given island
			counter++;
			if(options.verbosity >= 4){
				cout << "counter" << counter << endl;
				cout << "Particle first " << particle->first  << endl;
				cout << "Particle to island " << particleToIsland_[particle->first] << endl;
				cout << "Particle to isalnd size " << particleToIsland_.size() << endl;
			}
			islandFinishedParticles[particleToIsland_[particle->first]] += 1;
		}

		finishedParticles.clear();
		//numFinishedParticles = 0;

		// Done processing params. Now we need to...
		// Check each island to see if it has completed its generation
		for (unsigned int island = 1; island <= options.numIslands; ++island) {
			// If the number finished in this island is equal to the total size of the island
			if (islandFinishedParticles.at(island) == (options.swarmSize / options.numIslands)) {
				if(options.verbosity >= 3){
					cout << "Island " << island << " finished" << endl;
				}
				// Loop through the particles in the island
				for (auto particle = islandToParticle_.at(island).begin(); particle != islandToParticle_.at(island).end(); ++particle) {

					// Will hold mutated and crossed over parameter sets
					vector<double> newParamSet;
					// If we're not in a trial loop, we should mutate and crossover
					if (trialLoop == false) {
						// Create a mutation set for the particle
						newParamSet = mutateParticleDE(*particle);

						// Run crossover for the particle
						newParamSet = crossoverParticleDE(*particle, newParamSet);
					}
					// If we're in a main loop, we just send the current parameter
					// set back to the particle
					else {
						newParamSet = particleCurrParamSets_.at(*particle);
					}

					// Convert our param set to string for sending
					vector<string> paramVecStr;
					for (auto param = newParamSet.begin(); param != newParamSet.end(); ++param) {
						paramVecStr.push_back(toString(*param));
					}

					// Send new param sets to particles for next generation
//					swarmComm->sendToSwarm(0, *particle, SEND_FINAL_PARAMS_TO_PARTICLE, false, paramVecStr);

					//Raquel updated the interprocess communication, added the loop bellow
					for(unsigned int mid = 0; mid < options.models.size(); mid++){
						sp = fcalcsubParID(*particle, mid, options.models.size());
						swarmComm->sendToSwarm(0, sp, SEND_FINAL_PARAMS_TO_PARTICLE, false, paramVecStr);
					}


					// Empty our finished particle counter for the next loop
					islandFinishedParticles[island] = 0;
				}
			}
		}


			// Check for stop criteria
			stopCriteria = checkStopCriteria();
			if(options.verbosity >= 3){
				cout << "Stop Criteria value: " << stopCriteria << endl;
			}
			if (!stopCriteria) {
				// Send/receive migration sets
				if ((options.migrationFrequency != 0) && (currentGeneration % options.migrationFrequency == 0)) {

					for (unsigned int island = 1; island <= options.numIslands; ++island) {
						sendMigrationSetDE(island, islandTopology, migrationSets);
					}

					for (unsigned int island = 1; island <= options.numIslands; ++island) {
						recvMigrationSetDE(island, migrationSets);
					}
				}

//				string outputPath = options.jobOutputDir + toString(currentGeneration) + "_summary.txt";
	//			outputRunSummary(outputPath);
				//++currentGeneration;
				//cout << "Switching to main loop" << endl;
				//trialLoop = false;

			}
		//}
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2e8, %rsp            # imm = 0x2E8
movq %rdi, %rbx
cmpl $0x3, 0x1614(%rdi)
jb 0x7eaa7
movq 0xf753c(%rip), %r14     # 0x175fa8
leaq 0x81d95(%rip), %rsi     # 0x100808
movl $0x1c, %edx
movq %r14, %rdi
callq 0x22ab0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r14, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
leaq 0xe0(%rsp), %r14
movq %r14, %rdi
movl $0x1, %esi
callq 0xbe584
movq 0x1520(%rbx), %rcx
movq 0x1528(%rbx), %r8
movq %r14, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x22a80
leaq 0x250(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x7eb06
movq %rdx, 0x240(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x250(%rsp)
jmp 0x7eb0d
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
leaq 0x240(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
callq 0xbe9a8
movl %eax, %ebp
movq 0x240(%rsp), %rdi
cmpq %r14, %rdi
je 0x7eb50
movq 0x250(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0xf0(%rsp), %r14
movq -0x10(%r14), %rdi
cmpq %r14, %rdi
je 0x7eb71
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x1520(%rbx), %rax
movq %rax, 0xb8(%rsp)
testl %ebp, %ebp
jne 0x7ed1f
leaq 0x793b8(%rip), %rsi     # 0xf7f47
leaq 0x50(%rsp), %rdi
movq 0xb8(%rsp), %rdx
callq 0x31944
leaq 0x1b0(%rsp), %rdi
movl $0x1, %esi
callq 0xbe584
leaq 0x60(%rsp), %r15
movq -0x10(%r15), %rcx
movq -0x8(%r15), %r8
movq 0x1b8(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %edi
cmpq %r15, %rcx
je 0x7ebdb
movq 0x60(%rsp), %rdi
movq 0x1b0(%rsp), %rsi
cmpq %rdi, %rax
jbe 0x7ec07
leaq 0x1c0(%rsp), %r9
movl $0xf, %edi
cmpq %r9, %rsi
je 0x7ec02
movq 0x1c0(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x7ec13
leaq 0x50(%rsp), %rdi
callq 0x222b0
jmp 0x7ec24
leaq 0x1b0(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x22a80
movq %r14, 0xe0(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x7ec4d
movq %rdx, 0xe0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xf0(%rsp)
jmp 0x7ec54
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0xe8(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x1c0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7ec95
movq 0x1c0(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x50(%rsp), %rdi
cmpq %r15, %rdi
je 0x7ecac
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x270(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0xe0(%rsp), %rsi
movq 0xe8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x260(%rsp), %rdi
callq 0x3213c
leaq 0x260(%rsp), %rdi
callq 0xbfa1f
movq 0x260(%rsp), %rdi
cmpq %r15, %rdi
je 0x7ed02
movq 0x270(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0xe0(%rsp), %rdi
cmpq %r14, %rdi
je 0x7ed1f
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x229c0
cmpl $0x3, 0x1614(%rbx)
jb 0x7ed6a
movq 0xf7279(%rip), %r14     # 0x175fa8
leaq 0x81aef(%rip), %rsi     # 0x100825
movl $0x1a, %edx
movq %r14, %rdi
callq 0x22ab0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r14, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
xorps %xmm0, %xmm0
movaps %xmm0, 0x150(%rsp)
movq $0x0, 0x160(%rsp)
cmpb $0x0, 0x13f0(%rbx)
jne 0x7f00d
movl 0x16fc(%rbx), %edx
leaq 0x50(%rsp), %rdi
movq %rbx, %rsi
callq 0x87756
movq 0x160(%rsp), %rax
leaq 0x50(%rsp), %r14
movaps (%r14), %xmm0
movq 0x10(%r14), %rcx
movq %rcx, 0x160(%rsp)
movaps 0x150(%rsp), %xmm1
movaps %xmm0, 0x150(%rsp)
leaq 0xe0(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r14)
movq $0x0, 0x10(%r14)
callq 0xa7156
movq %r14, %rdi
callq 0xa7156
movl 0x1620(%rbx), %ecx
movl 0x16fc(%rbx), %esi
movl %ecx, %eax
xorl %edx, %edx
divl %esi
movq %rax, 0xc8(%rsp)
movl $0x1, %edx
movl %esi, %eax
movl $0x1, %r14d
movl %ecx, 0xd8(%rsp)
movl %esi, 0xd4(%rsp)
cmpl %ecx, %esi
ja 0x7f001
movl %r14d, %eax
movl %edx, 0xdc(%rsp)
movl %edx, %ecx
movq %rcx, 0xb0(%rsp)
movq %rax, 0xc0(%rsp)
leaq (%rax,%rax,2), %r15
xorl %ebp, %ebp
movq 0xb0(%rsp), %rax
leal (%rax,%rbp), %r12d
movq 0x1d20(%rbx), %rax
movl %r14d, (%rax,%r12,4)
movq 0x1d38(%rbx), %rax
movq (%rax,%r15,8), %rax
movl %r12d, (%rax,%rbp,4)
movl 0x1614(%rbx), %eax
cmpl $0x4, %eax
jb 0x7ef20
movq 0xf7114(%rip), %rdi     # 0x175fa8
movq 0xc0(%rsp), %rsi
callq 0x22650
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0x82571(%rip), %rsi     # 0x101424
callq 0x22ab0
movq %r13, %rdi
movq %rbp, %rsi
callq 0x22650
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0x8254f(%rip), %rsi     # 0x101424
callq 0x22ab0
movq 0x1d38(%rbx), %rax
movq (%rax,%r15,8), %rax
movl (%rax,%rbp,4), %esi
movq %r13, %rdi
callq 0x22650
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r13, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movl 0x1614(%rbx), %eax
cmpl $0x3, %eax
jb 0x7efd3
movl $0x13, %edx
movq 0xf7073(%rip), %rdi     # 0x175fa8
leaq 0x81904(%rip), %rsi     # 0x100840
callq 0x22ab0
movq 0x1d20(%rbx), %rax
movl (%rax,%r12,4), %esi
movq 0xf7055(%rip), %rdi     # 0x175fa8
callq 0x22650
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r13, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movl $0x8, %edx
movq 0xf701a(%rip), %rdi     # 0x175fa8
leaq 0x818bf(%rip), %rsi     # 0x100854
callq 0x22ab0
movq 0xf7007(%rip), %rdi     # 0x175fa8
movq %r12, %rsi
callq 0x22650
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r12, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
incq %rbp
cmpq 0xc8(%rsp), %rbp
jb 0x7ee58
movl 0x16fc(%rbx), %eax
movl 0xdc(%rsp), %edx
addl %ebp, %edx
movl 0xd8(%rsp), %ecx
movl 0xd4(%rsp), %esi
incl %r14d
cmpl %eax, %r14d
jbe 0x7ee2e
movq %rbx, %rdi
callq 0x9be92
leaq 0x110(%rsp), %rax
movq %rax, -0x30(%rax)
movq $0x1, -0x28(%rax)
xorps %xmm0, %xmm0
movups %xmm0, -0x20(%rax)
movl $0x3f800000, -0x10(%rax) # imm = 0x3F800000
movups %xmm0, -0x8(%rax)
movl 0x16fc(%rbx), %esi
incl %esi
leaq 0x50(%rsp), %rdx
movl $0x0, (%rdx)
leaq 0x138(%rsp), %rdi
leaq 0x1b0(%rsp), %rcx
callq 0xa7866
leaq 0x1b8(%rsp), %rax
movl $0x0, (%rax)
xorl %ecx, %ecx
movq %rcx, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rcx, 0x20(%rax)
leaq 0x230(%rsp), %rax
movq %rax, -0x10(%rax)
movq %rcx, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x1460(%rbx), %rax
movq %rax, 0xc0(%rsp)
leaq 0x50(%rsp), %rbp
leaq 0x10(%rsp), %r14
leaq 0x280(%rsp), %r12
movl 0x13e8(%rbx), %esi
movq %rbp, %rdi
callq 0xbfa49
movq 0x1520(%rbx), %rcx
movq 0x1528(%rbx), %r8
movq %rbp, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x22a80
leaq 0x128(%rsp), %rsi
movq %rsi, 0x118(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x7f113
movq %rdx, 0x118(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x128(%rsp)
jmp 0x7f119
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x120(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x7f150
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x229c0
cmpb $0x1, 0x1646(%rbx)
jne 0x7f166
movq 0x118(%rsp), %rsi
callq 0x9163a
movq %rbx, %rdi
callq 0x8cd7e
movl 0x13e8(%rbx), %esi
movq %rbp, %rdi
callq 0xbfa49
movq 0x1520(%rbx), %rcx
movq 0x1528(%rbx), %r8
movq %rbp, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x22a80
leaq 0x1a0(%rsp), %rsi
movq %rsi, 0x190(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x7f1ca
movq %rdx, 0x190(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1a0(%rsp)
jmp 0x7f1d0
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x198(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x190(%rsp), %rdi
callq 0xbe9a8
movl %eax, %r15d
movq 0x190(%rsp), %rdi
leaq 0x1a0(%rsp), %rax
cmpq %rax, %rdi
je 0x7f220
movq 0x1a0(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x7f23c
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x229c0
testl %r15d, %r15d
jne 0x7f519
leaq 0x30(%rsp), %rdi
leaq 0x78cf6(%rip), %rsi     # 0xf7f47
movq 0xb8(%rsp), %rdx
callq 0x31944
movl 0x13e8(%rbx), %esi
movq %r14, %rdi
callq 0xbfa49
movq 0x30(%rsp), %rcx
movl $0xf, %edi
leaq 0x40(%rsp), %rax
cmpq %rax, %rcx
je 0x7f285
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %r8
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x7f2b6
movl $0xf, %edi
leaq 0x20(%rsp), %r9
cmpq %r9, %rsi
je 0x7f2b1
movq 0x20(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x7f2c2
leaq 0x30(%rsp), %rdi
callq 0x222b0
jmp 0x7f2ce
movq %r14, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x22a80
leaq 0x60(%rsp), %rsi
movq %rsi, 0x50(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x7f2f3
movq %rdx, 0x50(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x60(%rsp)
jmp 0x7f2f9
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x58(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x7f332
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x7f34e
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x229c0
movl $0x63, %ebp
leaq 0x210(%rsp), %rax
movq %rax, 0x200(%rsp)
movq 0x50(%rsp), %rsi
movq 0x58(%rsp), %rdx
addq %rsi, %rdx
leaq 0x200(%rsp), %rdi
callq 0x3213c
leaq 0x200(%rsp), %rdi
callq 0xbfa1f
testl %eax, %eax
je 0x7f3ef
movl 0x13e8(%rbx), %esi
leaq 0x30(%rsp), %r15
movq %r15, %rdi
callq 0xbfa49
movq 0x1520(%rbx), %rcx
movq 0x1528(%rbx), %r8
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x22a80
leaq 0x180(%rsp), %rsi
movq %rsi, 0x170(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x7f3f4
movq %rdx, 0x170(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x180(%rsp)
jmp 0x7f3fa
xorl %r15d, %r15d
jmp 0x7f469
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x178(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x170(%rsp), %rdi
callq 0xbe9a8
testl %eax, %eax
sete %r15b
movq 0x170(%rsp), %rdi
leaq 0x180(%rsp), %rax
cmpq %rax, %rdi
je 0x7f44d
movq 0x180(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x7f469
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x200(%rsp), %rdi
leaq 0x210(%rsp), %rax
cmpq %rax, %rdi
je 0x7f48e
movq 0x210(%rsp), %rsi
incq %rsi
callq 0x229c0
testb %r15b, %r15b
je 0x7f4f8
subl $0x1, %ebp
jb 0x8003b
cmpl $0x3, 0x1614(%rbx)
jb 0x7f353
movl $0x1a, %edx
movq 0xf6af3(%rip), %rdi     # 0x175fa8
leaq 0x7fa45(%rip), %rsi     # 0xfef01
callq 0x22ab0
movq 0xf6ae0(%rip), %rcx     # 0x175fa8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0xf6ac2(%rip), %rdi     # 0x175fa8
callq 0x22050
movq %rax, %rdi
callq 0x22660
jmp 0x7f353
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x7f514
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x50(%rsp), %rbp
movq %rbx, %rdi
callq 0x9be92
movl 0x13e8(%rbx), %esi
decl %esi
movq %r14, %rdi
callq 0xbfa49
movq 0x1520(%rbx), %rcx
movq 0x1528(%rbx), %r8
movq %r14, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x22a80
leaq 0x60(%rsp), %rsi
movq %rsi, 0x50(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x7f573
movq %rdx, 0x50(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x60(%rsp)
jmp 0x7f579
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x58(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %rbp, %rdi
leaq 0x811c2(%rip), %rsi     # 0x10075d
callq 0x233b0
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x7f5c8
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x7f5ce
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x7f602
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x7f61e
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x229c0
movl $0xc, %edx
movq 0xf697e(%rip), %rdi     # 0x175fa8
leaq 0x7fd31(%rip), %rsi     # 0xff362
callq 0x22ab0
movl 0x13e8(%rbx), %esi
decl %esi
movq %rbp, %rdi
callq 0xbfa49
movq 0x50(%rsp), %rsi
movq 0x58(%rsp), %rdx
movq 0xf6951(%rip), %rdi     # 0x175fa8
callq 0x22ab0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r15, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x7f6a2
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x1f0(%rsp), %rax
movq %rax, 0x1e0(%rsp)
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1e0(%rsp), %rdi
callq 0x3213c
movq %rbx, %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x91ae2
movq 0x1e0(%rsp), %rdi
leaq 0x1f0(%rsp), %rax
cmpq %rax, %rdi
je 0x7f701
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x80(%rsp), %rax
movq %rax, 0x50(%rsp)
movq $0x1, 0x58(%rsp)
leaq 0x60(%rsp), %rax
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movl $0x3f800000, 0x70(%rsp) # imm = 0x3F800000
movups %xmm0, 0x18(%rax)
cmpl $0x0, 0x1620(%rbx)
jle 0x7f7aa
xorl %ebp, %ebp
incl %ebp
movl %ebp, 0x90(%rsp)
movq 0xc0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x6ec24
movl $0x0, 0x280(%rsp)
movq %rax, %rdi
movq %r12, %rsi
callq 0x6ec8a
movl %ebp, 0x10(%rsp)
leaq 0x18(%rsp), %rdi
movq %rax, %rsi
callq 0x65d5c
leaq 0x50(%rsp), %rdi
movq %r14, %rsi
callq 0xbc2aa
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x7f7a2
movq 0x28(%rsp), %rsi
subq %rdi, %rsi
callq 0x229c0
cmpl 0x1620(%rbx), %ebp
jl 0x7f739
cmpl $0x3, 0x1614(%rbx)
jbe 0x7f86c
movl $0x15, %edx
movq 0xf67e5(%rip), %rdi     # 0x175fa8
leaq 0x81093(%rip), %rsi     # 0x10085d
callq 0x22ab0
movq 0x68(%rsp), %rsi
movq 0xf67cd(%rip), %rdi     # 0x175fa8
callq 0x22650
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r15, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movl $0xc, %edx
movq 0xf6792(%rip), %rdi     # 0x175fa8
leaq 0x81056(%rip), %rsi     # 0x100873
callq 0x22ab0
movq 0x140(%rsp), %rsi
subq 0x138(%rsp), %rsi
sarq $0x2, %rsi
movq 0xf676b(%rip), %rdi     # 0x175fa8
callq 0x22650
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r15, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
cmpq $0x0, 0x68(%rsp)
je 0x7f8a4
movq 0x60(%rsp), %r15
leaq 0xe0(%rsp), %rax
movq %rax, 0x10(%rsp)
testq %r15, %r15
je 0x7f8a4
leaq 0x8(%r15), %rsi
leaq 0xe0(%rsp), %rdi
movq %r14, %rdx
callq 0xbc388
movq (%r15), %r15
jmp 0x7f886
movq 0xf0(%rsp), %rbp
testq %rbp, %rbp
je 0x7fa4d
movl $0x1, %r13d
cmpl $0x4, 0x1614(%rbx)
jb 0x7fa25
movl $0x7, %edx
movq 0xf66d4(%rip), %rdi     # 0x175fa8
leaq 0x7f3ca(%rip), %rsi     # 0xfeca5
callq 0x22ab0
movq 0xf66c1(%rip), %rdi     # 0x175fa8
movl %r13d, %esi
callq 0x231e0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r15, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movl $0xf, %edx
movq 0xf6683(%rip), %rdi     # 0x175fa8
leaq 0x80f54(%rip), %rsi     # 0x100880
callq 0x22ab0
movl 0x8(%rbp), %esi
movq 0xf666d(%rip), %rdi     # 0x175fa8
callq 0x22650
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r15, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movl $0x13, %edx
movq 0xf6632(%rip), %rdi     # 0x175fa8
leaq 0x80ec3(%rip), %rsi     # 0x100840
callq 0x22ab0
movl 0x8(%rbp), %eax
movq 0x1d20(%rbx), %rcx
movl (%rcx,%rax,4), %esi
movq 0xf6612(%rip), %rdi     # 0x175fa8
callq 0x22650
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r15, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movl $0x18, %edx
movq 0xf65d7(%rip), %rdi     # 0x175fa8
leaq 0x80eb8(%rip), %rsi     # 0x100890
callq 0x22ab0
movq 0x1d28(%rbx), %rsi
subq 0x1d20(%rbx), %rsi
sarq $0x2, %rsi
movq 0xf65b2(%rip), %rdi     # 0x175fa8
callq 0x22650
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r15, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movl 0x8(%rbp), %eax
movq 0x1d20(%rbx), %rcx
movl (%rcx,%rax,4), %eax
movq 0x138(%rsp), %rcx
incl (%rcx,%rax,4)
movq (%rbp), %rbp
incl %r13d
testq %rbp, %rbp
jne 0x7f8bb
leaq 0xe0(%rsp), %rdi
callq 0xacfbc
movl 0x16fc(%rbx), %ecx
testl %ecx, %ecx
leaq 0x50(%rsp), %rbp
je 0x7fdfa
movl $0x1, %r15d
movl %r15d, %r15d
movq 0x138(%rsp), %rax
movq 0x140(%rsp), %rdx
subq %rax, %rdx
sarq $0x2, %rdx
cmpq %r15, %rdx
jbe 0x8002a
movl (%rax,%r15,4), %esi
movl 0x1620(%rbx), %eax
xorl %edx, %edx
divl %ecx
cmpl %eax, %esi
jne 0x7fdee
movq %r15, 0xb0(%rsp)
cmpl $0x3, 0x1614(%rbx)
jb 0x7fb27
movl $0x7, %edx
movq 0xf64df(%rip), %rdi     # 0x175fa8
leaq 0x80dd9(%rip), %rsi     # 0x1008a9
callq 0x22ab0
movq 0xf64cc(%rip), %rdi     # 0x175fa8
movq 0xb0(%rsp), %rsi
callq 0x22650
movq %rax, %r15
movl $0x9, %edx
movq %rax, %rdi
leaq 0x79d06(%rip), %rsi     # 0xf9801
callq 0x22ab0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r15, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0x1d38(%rbx), %rax
movq 0x1d40(%rbx), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rcx, %rdx
movq 0xb0(%rsp), %r15
cmpq %r15, %rdx
jbe 0x800c5
leaq (%r15,%r15,2), %rcx
movq %rcx, 0xc8(%rsp)
movq (%rax,%rcx,8), %rbp
movq 0xc8(%rsp), %rcx
cmpq 0x8(%rax,%rcx,8), %rbp
je 0x7fde3
xorps %xmm0, %xmm0
movaps %xmm0, 0x90(%rsp)
movq $0x0, 0xa0(%rsp)
movl (%rbp), %edx
xorps %xmm0, %xmm0
movq %r14, %rdi
movq %rbx, %rsi
callq 0xa0306
movq 0x90(%rsp), %rdi
movq 0xa0(%rsp), %rsi
movaps 0x10(%rsp), %xmm0
movaps %xmm0, 0x90(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0xa0(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x7fc05
subq %rdi, %rsi
callq 0x229c0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x7fc05
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x229c0
movl (%rbp), %r15d
leaq 0x298(%rsp), %r13
movq %r13, %rdi
leaq 0x90(%rsp), %rsi
callq 0x65d5c
xorps %xmm0, %xmm0
movq %r14, %rdi
movq %rbx, %rsi
movl %r15d, %edx
movq %r13, %rcx
xorl %r8d, %r8d
callq 0xa144a
movq 0x90(%rsp), %rdi
movq 0xa0(%rsp), %rsi
movaps 0x10(%rsp), %xmm0
movaps %xmm0, 0x90(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0xa0(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x7fc97
subq %rdi, %rsi
callq 0x229c0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x7fc97
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x229c0
movq 0x298(%rsp), %rdi
testq %rdi, %rdi
je 0x7fcb4
movq 0x2a8(%rsp), %rsi
subq %rdi, %rsi
callq 0x229c0
xorps %xmm0, %xmm0
movaps %xmm0, 0x280(%rsp)
movq $0x0, 0x290(%rsp)
movq 0x90(%rsp), %r15
cmpq 0x98(%rsp), %r15
je 0x7fd17
movsd (%r15), %xmm0
movq %r14, %rdi
callq 0xbfad7
movq %r12, %rdi
movq %r14, %rsi
callq 0x6a2a2
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x7fd11
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x229c0
addq $0x8, %r15
jmp 0x7fcd3
movq 0x15c8(%rbx), %rdx
subq 0x15c0(%rbx), %rdx
je 0x7fd71
sarq $0x3, %rdx
xorl %r15d, %r15d
movl (%rbp), %edi
movl %r15d, %esi
callq 0xbe989
movq (%rbx), %rdi
movl $0xffffffff, (%rsp)     # imm = 0xFFFFFFFF
xorl %esi, %esi
movl %eax, %edx
movl $0x15, %ecx
xorl %r8d, %r8d
movq %r12, %r9
callq 0x6bac2
incl %r15d
movq 0x15c8(%rbx), %rdx
subq 0x15c0(%rbx), %rdx
sarq $0x3, %rdx
cmpq %r15, %rdx
ja 0x7fd2e
movq 0x138(%rsp), %rax
movq 0xb0(%rsp), %r15
movl $0x0, (%rax,%r15,4)
movq %r12, %rdi
callq 0x31a0a
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x7fdae
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x229c0
addq $0x4, %rbp
movq 0x1d38(%rbx), %rax
movq 0x1d40(%rbx), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rcx, %rdx
cmpq %r15, %rdx
ja 0x7fb6b
jmp 0x80019
movl 0x16fc(%rbx), %ecx
leaq 0x50(%rsp), %rbp
incl %r15d
cmpl %ecx, %r15d
jbe 0x7fa73
movq %rbx, %rdi
callq 0x86f12
movl %eax, %r13d
cmpl $0x3, 0x1614(%rbx)
jb 0x7fe60
movl $0x15, %edx
movq 0xf618e(%rip), %rdi     # 0x175fa8
leaq 0x809d1(%rip), %rsi     # 0x1007f2
callq 0x22ab0
movzbl %r13b, %esi
movq 0xf6177(%rip), %rdi     # 0x175fa8
callq 0x230e0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r15, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
testb %r13b, %r13b
jne 0x7ff53
movl 0x1708(%rbx), %ecx
testl %ecx, %ecx
je 0x7ff01
movl 0x13e8(%rbx), %eax
xorl %edx, %edx
divl %ecx
testl %edx, %edx
jne 0x7ff01
cmpl $0x0, 0x16fc(%rbx)
je 0x7ff01
movl $0x1, %r15d
leaq 0x2d0(%rsp), %r13
movq %r13, %rdi
leaq 0x150(%rsp), %rsi
callq 0xa815a
movq %rbx, %rdi
movl %r15d, %esi
movq %r13, %rdx
leaq 0x1b0(%rsp), %rcx
callq 0x9c1be
movq %r13, %rdi
callq 0xa7156
incl %r15d
movl 0x16fc(%rbx), %eax
cmpl %eax, %r15d
jbe 0x7fe9c
testl %eax, %eax
je 0x7ff01
movl $0x1, %r15d
movq %rbx, %rdi
movl %r15d, %esi
leaq 0x1b0(%rsp), %rdx
callq 0x9c63a
incl %r15d
cmpl 0x16fc(%rbx), %r15d
jbe 0x7fee2
movq %rbp, %rdi
callq 0xacf96
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x7ff25
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x7f0b7
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x7f0b7
leaq 0x50(%rsp), %rdi
callq 0xacf96
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x7ff79
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x7ff9e
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
cmpq %rax, %rdi
je 0x7ffc3
movq 0x230(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x1b0(%rsp), %rdi
callq 0xad426
movq 0x138(%rsp), %rdi
testq %rdi, %rdi
je 0x7ffed
movq 0x148(%rsp), %rsi
subq %rdi, %rsi
callq 0x229c0
leaq 0xe0(%rsp), %rdi
callq 0xacf96
leaq 0x150(%rsp), %rdi
callq 0xa7156
addq $0x2e8, %rsp            # imm = 0x2E8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x73659(%rip), %rdi     # 0xf3679
movq %r15, %rsi
xorl %eax, %eax
callq 0x22f40
leaq 0x73648(%rip), %rdi     # 0xf3679
movq %r15, %rsi
xorl %eax, %eax
callq 0x22f40
leaq 0x7ee84(%rip), %rsi     # 0xfeec6
leaq 0x10(%rsp), %rdi
movq 0xb8(%rsp), %rdx
callq 0x31944
movl 0x13e8(%rbx), %esi
leaq 0x90(%rsp), %rdi
callq 0xbfa49
movq 0x10(%rsp), %rcx
movq 0x18(%rsp), %r8
movq 0x98(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %edi
leaq 0x20(%rsp), %rsi
cmpq %rsi, %rcx
je 0x80091
movq 0x20(%rsp), %rdi
leaq 0xa0(%rsp), %r14
movq -0x10(%r14), %rsi
cmpq %rdi, %rax
jbe 0x800b9
movl $0xf, %edi
cmpq %r14, %rsi
je 0x800b4
movq 0xa0(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x800d6
leaq 0x10(%rsp), %rdi
callq 0x222b0
jmp 0x800e7
leaq 0x735ad(%rip), %rdi     # 0xf3679
movq %r15, %rsi
xorl %eax, %eax
callq 0x22f40
leaq 0x90(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x22a80
leaq 0x40(%rsp), %rcx
movq %rcx, 0x30(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
jne 0x8010a
movups (%rcx), %xmm0
leaq 0x40(%rsp), %rdx
movups %xmm0, (%rdx)
jmp 0x80117
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x7eda3(%rip), %rsi     # 0xfeede
leaq 0x30(%rsp), %rdi
callq 0x233b0
leaq 0x2c0(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x80169
movups (%rcx), %xmm0
movups %xmm0, (%r15)
jmp 0x8017c
movq %rdx, 0x2b0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x2c0(%rsp)
movq 0x8(%rax), %rdx
leaq 0x2b0(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %rbx, %rdi
callq 0x784c2
movq %rax, %rbx
movq 0x260(%rsp), %rdi
cmpq %r15, %rdi
je 0x801c8
movq 0x270(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x801c8
movq %rax, %rbx
movq 0xe0(%rsp), %rdi
cmpq %r14, %rdi
jne 0x8026c
jmp 0x80663
movq %rax, %rbx
leaq 0x1c0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x80207
movq 0x1c0(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x80207
movq %rax, %rbx
leaq 0x60(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x80663
movq 0x60(%rsp), %rsi
jmp 0x80274
jmp 0x80527
movq %rax, %rbx
jmp 0x80649
jmp 0x80527
movq %rax, %rbx
movq 0x240(%rsp), %rdi
cmpq %r14, %rdi
je 0x80257
movq 0x250(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x80257
movq %rax, %rbx
leaq 0xf0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x80663
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x80663
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x805b9
movq 0x20(%rsp), %rsi
jmp 0x80433
jmp 0x803e3
jmp 0x803eb
movq %rax, %rbx
movq 0x2b0(%rsp), %rdi
cmpq %r15, %rdi
je 0x802d0
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x802d0
movq %rax, %rbx
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x803c4
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x803c4
jmp 0x803eb
jmp 0x803e3
movq %rax, %rbx
jmp 0x8034c
movq %rax, %rbx
movq 0x1e0(%rsp), %rdi
leaq 0x1f0(%rsp), %rax
cmpq %rax, %rdi
je 0x805b9
movq 0x1f0(%rsp), %rsi
jmp 0x80433
movq %rax, %rbx
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x8034c
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x805d5
movq 0x20(%rsp), %rsi
jmp 0x805cd
movq %rax, %rbx
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x805fa
movq 0x60(%rsp), %rsi
jmp 0x805f2
movq %rax, %rbx
movq 0x190(%rsp), %rdi
leaq 0x1a0(%rsp), %rax
cmpq %rax, %rdi
je 0x80508
movq 0x1a0(%rsp), %rsi
jmp 0x804d8
jmp 0x803eb
movq %rax, %rbx
jmp 0x805fa
jmp 0x80505
movq %rax, %rbx
movq 0x90(%rsp), %rdi
cmpq %r14, %rdi
je 0x803f6
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x803f6
movq %rax, %rbx
jmp 0x805b9
movq %rax, %rbx
jmp 0x805d5
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x80508
movq 0x20(%rsp), %rsi
jmp 0x804d8
jmp 0x80531
movq %rax, %rbx
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x805b9
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x805b9
jmp 0x80531
jmp 0x80505
jmp 0x80531
movq %rax, %rbx
movq 0x170(%rsp), %rdi
leaq 0x180(%rsp), %rax
cmpq %rax, %rdi
je 0x8047e
movq 0x180(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x8047e
jmp 0x804b8
movq %rax, %rbx
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x804bb
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x804bb
jmp 0x80531
movq %rax, %rbx
leaq 0x2d0(%rsp), %rdi
callq 0xa7156
jmp 0x805af
jmp 0x80531
movq %rax, %rbx
movq 0x200(%rsp), %rdi
leaq 0x210(%rsp), %rax
cmpq %rax, %rdi
je 0x80508
movq 0x210(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x80508
jmp 0x80531
jmp 0x80531
jmp 0x80531
movq %rax, %rbx
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x805af
movq 0x28(%rsp), %rsi
jmp 0x805a7
jmp 0x80531
movq %rax, %rbx
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x805d5
movq 0x60(%rsp), %rsi
jmp 0x805cd
jmp 0x80531
movq %rax, %rbx
jmp 0x80656
jmp 0x80531
movq %rax, %rbx
jmp 0x805af
movq %rax, %rbx
movq 0x298(%rsp), %rdi
testq %rdi, %rdi
je 0x80592
movq 0x2a8(%rsp), %rsi
subq %rdi, %rsi
callq 0x229c0
jmp 0x80592
jmp 0x8055a
movq %rax, %rbx
jmp 0x80592
jmp 0x80582
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x80585
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x80585
movq %rax, %rbx
leaq 0x280(%rsp), %rdi
callq 0x31a0a
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x805af
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x229c0
leaq 0x50(%rsp), %rdi
callq 0xacf96
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x805d5
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x805fa
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x230(%rsp), %rax
movq 0x220(%rsp), %rdi
cmpq %rax, %rdi
je 0x8061f
movq 0x230(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x1b0(%rsp), %rdi
callq 0xad426
movq 0x138(%rsp), %rdi
testq %rdi, %rdi
je 0x80649
movq 0x148(%rsp), %rsi
subq %rdi, %rsi
callq 0x229c0
leaq 0xe0(%rsp), %rdi
callq 0xacf96
leaq 0x150(%rsp), %rdi
callq 0xa7156
movq %rbx, %rdi
callq 0x23240
nop