// File: /workspace/github_cpp_makefile_star2_O1/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 $0x308, %rsp            # imm = 0x308
movq %rdi, %rbx
cmpl $0x3, 0x1614(%rdi)
jb 0x7f1a5
movq 0xf6e26(%rip), %r14     # 0x175f90
leaq 0x816b0(%rip), %rsi     # 0x100821
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 0xbee9e
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 0x7f204
movq %rdx, 0x240(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x250(%rsp)
jmp 0x7f20b
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 0xbf2c2
movl %eax, %ebp
movq 0x240(%rsp), %rdi
cmpq %r14, %rdi
je 0x7f24e
movq 0x250(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0xf0(%rsp), %r14
movq -0x10(%r14), %rdi
cmpq %r14, %rdi
je 0x7f26f
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x1520(%rbx), %rax
movq %rax, 0xb8(%rsp)
testl %ebp, %ebp
jne 0x7f41e
leaq 0x78d0a(%rip), %rsi     # 0xf7f97
leaq 0x58(%rsp), %rdi
movq 0xb8(%rsp), %rdx
callq 0x319d8
leaq 0x1b0(%rsp), %rdi
movl $0x1, %esi
callq 0xbee9e
leaq 0x68(%rsp), %r15
movq -0x10(%r15), %rcx
movq -0x8(%r15), %r8
movq 0x1b8(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %esi
cmpq %r15, %rcx
je 0x7f2d9
movq 0x68(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x7f2fe
leaq 0x1c0(%rsp), %rdi
movl $0xf, %esi
cmpq %rdi, -0x10(%rdi)
je 0x7f2f9
movq 0x1c0(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x7f312
movq 0x1b0(%rsp), %rsi
leaq 0x58(%rsp), %rdi
callq 0x222b0
jmp 0x7f323
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 0x7f34c
movq %rdx, 0xe0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xf0(%rsp)
jmp 0x7f353
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 0x7f394
movq 0x1c0(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x58(%rsp), %rdi
cmpq %r15, %rdi
je 0x7f3ab
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x290(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0xe0(%rsp), %rsi
movq 0xe8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x280(%rsp), %rdi
callq 0x32180
leaq 0x280(%rsp), %rdi
callq 0xc038e
movq 0x280(%rsp), %rdi
cmpq %r15, %rdi
je 0x7f401
movq 0x290(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0xe0(%rsp), %rdi
cmpq %r14, %rdi
je 0x7f41e
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x229c0
cmpl $0x3, 0x1614(%rbx)
jb 0x7f469
movq 0xf6b62(%rip), %r14     # 0x175f90
leaq 0x81409(%rip), %rsi     # 0x10083e
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 0x7f70a
movl 0x16fc(%rbx), %edx
leaq 0x58(%rsp), %rdi
movq %rbx, %rsi
callq 0x881a0
xorps %xmm0, %xmm0
leaq 0xe0(%rsp), %rdi
movaps %xmm0, (%rdi)
movaps 0x150(%rsp), %xmm0
movq 0x160(%rsp), %rax
leaq 0x58(%rsp), %r14
movups (%r14), %xmm1
movaps %xmm1, 0x150(%rsp)
movq 0x10(%r14), %rcx
movq %rcx, 0x160(%rsp)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
movups %xmm1, (%r14)
movq $0x0, 0x10(%r14)
callq 0xa7bb4
movq %r14, %rdi
callq 0xa7bb4
movl 0x1620(%rbx), %ecx
movl 0x16fc(%rbx), %esi
movl %ecx, %eax
xorl %edx, %edx
divl %esi
movq %rax, 0xc8(%rsp)
movl $0x1, %eax
movl $0x1, %r14d
movl %ecx, 0xd8(%rsp)
movl %esi, 0xd4(%rsp)
cmpl %ecx, %esi
ja 0x7f6fa
movl %r14d, %ecx
movl %eax, 0xdc(%rsp)
movl %eax, %eax
movq %rax, 0xb0(%rsp)
movq %rcx, 0xc0(%rsp)
leaq (%rcx,%rcx,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)
cmpl $0x4, 0x1614(%rbx)
jb 0x7f61b
movq 0xf69fb(%rip), %rdi     # 0x175f90
movq 0xc0(%rsp), %rsi
callq 0x22650
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0x81e89(%rip), %rsi     # 0x10143d
callq 0x22ab0
movq %r13, %rdi
movq %rbp, %rsi
callq 0x22650
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0x81e67(%rip), %rsi     # 0x10143d
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
cmpl $0x3, 0x1614(%rbx)
jb 0x7f6d2
movl $0x13, %edx
movq 0xf695c(%rip), %rdi     # 0x175f90
leaq 0x8121e(%rip), %rsi     # 0x100859
callq 0x22ab0
movq 0x1d20(%rbx), %rax
movl (%rax,%r12,4), %esi
movq 0xf693e(%rip), %rdi     # 0x175f90
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 0xf6903(%rip), %rdi     # 0x175f90
leaq 0x811d9(%rip), %rsi     # 0x10086d
callq 0x22ab0
movq 0xf68f0(%rip), %rdi     # 0x175f90
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 0x7f55b
movl 0xdc(%rsp), %eax
addl %ebp, %eax
movl 0xd8(%rsp), %ecx
movl 0xd4(%rsp), %esi
incl %r14d
cmpl 0x16fc(%rbx), %r14d
jbe 0x7f531
movq %rbx, %rdi
callq 0x9c93c
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 0x58(%rsp), %rdx
movl $0x0, (%rdx)
leaq 0x138(%rsp), %rdi
leaq 0x1b0(%rsp), %rcx
callq 0xa829a
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 0x68(%rsp), %r14
leaq 0x1460(%rbx), %rax
movq %rax, 0xc0(%rsp)
leaq 0x10(%rsp), %r15
leaq 0x2a0(%rsp), %r12
movl 0x13e8(%rbx), %esi
leaq 0x58(%rsp), %r13
movq %r13, %rdi
callq 0xc03b8
movq 0x1520(%rbx), %rcx
movq 0x1528(%rbx), %r8
movq %r13, %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 0x7f815
movq %rdx, 0x118(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x128(%rsp)
jmp 0x7f81b
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 0x58(%rsp), %rdi
cmpq %r14, %rdi
je 0x7f84d
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x229c0
cmpb $0x1, 0x1646(%rbx)
jne 0x7f863
movq 0x118(%rsp), %rsi
callq 0x91f58
movq %rbx, %rdi
callq 0x8d672
movl 0x13e8(%rbx), %esi
leaq 0x58(%rsp), %r13
movq %r13, %rdi
callq 0xc03b8
movq 0x1520(%rbx), %rcx
movq 0x1528(%rbx), %r8
movq %r13, %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 0x7f8cc
movq %rdx, 0x190(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1a0(%rsp)
jmp 0x7f8d2
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 0xbf2c2
movl %eax, %ebp
movq 0x190(%rsp), %rdi
leaq 0x1a0(%rsp), %rax
cmpq %rax, %rdi
je 0x7f921
movq 0x1a0(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x58(%rsp), %rdi
cmpq %r14, %rdi
je 0x7f938
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x229c0
testl %ebp, %ebp
jne 0x7fc26
leaq 0x38(%rsp), %rdi
leaq 0x7864b(%rip), %rsi     # 0xf7f97
movq 0xb8(%rsp), %rdx
callq 0x319d8
movl 0x13e8(%rbx), %esi
movq %r15, %rdi
callq 0xc03b8
movq 0x38(%rsp), %rcx
movl $0xf, %esi
leaq 0x48(%rsp), %rax
cmpq %rax, %rcx
je 0x7f980
movq 0x48(%rsp), %rsi
movq 0x40(%rsp), %r8
movq 0x18(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
jbe 0x7f9ae
movl $0xf, %esi
leaq 0x20(%rsp), %rdi
cmpq %rdi, 0x10(%rsp)
je 0x7f9a9
movq 0x20(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x7f9bf
movq 0x10(%rsp), %rsi
leaq 0x38(%rsp), %rdi
callq 0x222b0
jmp 0x7f9cb
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x22a80
movq %r14, 0x58(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x7f9eb
movq %rdx, 0x58(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x68(%rsp)
jmp 0x7f9f2
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x60(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x7fa2b
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x7fa47
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x229c0
movl $0x63, %ebp
leaq 0x210(%rsp), %rax
movq %rax, 0x200(%rsp)
movq 0x58(%rsp), %rsi
movq 0x60(%rsp), %rdx
addq %rsi, %rdx
leaq 0x200(%rsp), %rdi
callq 0x32180
leaq 0x200(%rsp), %rdi
callq 0xc038e
movl %eax, %r13d
testl %eax, %eax
je 0x7faee
movl 0x13e8(%rbx), %esi
leaq 0x260(%rsp), %r14
movq %r14, %rdi
callq 0xc03b8
movq 0x1520(%rbx), %rcx
movq 0x1528(%rbx), %r8
movq %r14, %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 0x7faf3
movq %rdx, 0x170(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x180(%rsp)
jmp 0x7faf9
xorl %r14d, %r14d
jmp 0x7fb27
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 0xbf2c2
testl %eax, %eax
sete %r14b
testl %r13d, %r13d
je 0x7fb76
movq 0x170(%rsp), %rdi
leaq 0x180(%rsp), %rax
cmpq %rax, %rdi
je 0x7fb51
movq 0x180(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x260(%rsp), %rdi
leaq 0x270(%rsp), %rax
cmpq %rax, %rdi
je 0x7fb76
movq 0x270(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x200(%rsp), %rdi
leaq 0x210(%rsp), %rax
cmpq %rax, %rdi
je 0x7fb9b
movq 0x210(%rsp), %rsi
incq %rsi
callq 0x229c0
testb %r14b, %r14b
je 0x7fc0a
subl $0x1, %ebp
leaq 0x68(%rsp), %r14
jb 0x8075b
cmpl $0x3, 0x1614(%rbx)
jb 0x7fa4c
movl $0x1a, %edx
movq 0xf63c9(%rip), %rdi     # 0x175f90
leaq 0x7f2c3(%rip), %rsi     # 0xfee91
callq 0x22ab0
movq 0xf63b6(%rip), %rcx     # 0x175f90
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0xf6398(%rip), %rdi     # 0x175f90
callq 0x22050
movq %rax, %rdi
callq 0x22660
jmp 0x7fa4c
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %r14
cmpq %r14, %rdi
je 0x7fc26
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x229c0
movq %rbx, %rdi
callq 0x9c93c
movl 0x13e8(%rbx), %esi
decl %esi
movq %r15, %rdi
callq 0xc03b8
movq 0x1520(%rbx), %rcx
movq 0x1528(%rbx), %r8
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x22a80
movq %r14, 0x58(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x7fc7b
movq %rdx, 0x58(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x68(%rsp)
jmp 0x7fc82
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x60(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x58(%rsp), %rdi
leaq 0x80ad0(%rip), %rsi     # 0x100776
callq 0x233b0
leaq 0x48(%rsp), %rsi
movq %rsi, 0x38(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x7fcd3
movq %rdx, 0x38(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x48(%rsp)
jmp 0x7fcd9
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x40(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x58(%rsp), %rdi
cmpq %r14, %rdi
je 0x7fd08
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x7fd24
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x229c0
movl $0xc, %edx
movq 0xf6260(%rip), %rdi     # 0x175f90
leaq 0x7f5bb(%rip), %rsi     # 0xff2f2
callq 0x22ab0
movl 0x13e8(%rbx), %esi
decl %esi
leaq 0x58(%rsp), %rdi
callq 0xc03b8
movq 0x58(%rsp), %rsi
movq 0x60(%rsp), %rdx
movq 0xf6231(%rip), %rdi     # 0x175f90
callq 0x22ab0
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
movq 0x58(%rsp), %rdi
cmpq %r14, %rdi
je 0x7fda5
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x1f0(%rsp), %rax
movq %rax, 0x1e0(%rsp)
movq 0x38(%rsp), %rsi
movq 0x40(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1e0(%rsp), %rdi
callq 0x32180
movq %rbx, %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x92400
movq 0x1e0(%rsp), %rdi
leaq 0x1f0(%rsp), %rax
cmpq %rax, %rdi
je 0x7fe04
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x88(%rsp), %rax
movq %rax, 0x58(%rsp)
movq $0x1, 0x60(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, (%r14)
movl $0x3f800000, 0x78(%rsp) # imm = 0x3F800000
movups %xmm0, 0x18(%r14)
cmpl $0x0, 0x1620(%rbx)
movq 0xc0(%rsp), %r14
jle 0x7fead
xorl %ebp, %ebp
incl %ebp
movl %ebp, 0x90(%rsp)
movq %r14, %rdi
leaq 0x90(%rsp), %rsi
callq 0x6f13e
movl $0x0, 0x2a0(%rsp)
movq %rax, %rdi
movq %r12, %rsi
callq 0x6f1a2
movl %ebp, 0x10(%rsp)
leaq 0x18(%rsp), %rdi
movq %rax, %rsi
callq 0x66228
leaq 0x58(%rsp), %rdi
movq %r15, %rsi
callq 0xbcb78
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x7fea5
movq 0x28(%rsp), %rsi
subq %rdi, %rsi
callq 0x229c0
cmpl 0x1620(%rbx), %ebp
jl 0x7fe41
cmpl $0x3, 0x1614(%rbx)
jbe 0x7ff6f
movl $0x15, %edx
movq 0xf60ca(%rip), %rdi     # 0x175f90
leaq 0x809a9(%rip), %rsi     # 0x100876
callq 0x22ab0
movq 0x70(%rsp), %rsi
movq 0xf60b2(%rip), %rdi     # 0x175f90
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 $0xc, %edx
movq 0xf6077(%rip), %rdi     # 0x175f90
leaq 0x8096c(%rip), %rsi     # 0x10088c
callq 0x22ab0
movq 0x140(%rsp), %rsi
subq 0x138(%rsp), %rsi
sarq $0x2, %rsi
movq 0xf6050(%rip), %rdi     # 0x175f90
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
cmpq $0x0, 0x70(%rsp)
je 0x7ffa7
movq 0x68(%rsp), %r14
leaq 0xe0(%rsp), %rax
movq %rax, 0x10(%rsp)
testq %r14, %r14
je 0x7ffa7
leaq 0x8(%r14), %rsi
leaq 0xe0(%rsp), %rdi
movq %r15, %rdx
callq 0xbcc5e
movq (%r14), %r14
jmp 0x7ff89
movq 0xf0(%rsp), %r14
testq %r14, %r14
je 0x80152
movl $0x1, %r13d
cmpl $0x4, 0x1614(%rbx)
jb 0x8012a
movl $0x7, %edx
movq 0xf5fb9(%rip), %rdi     # 0x175f90
leaq 0x7ec57(%rip), %rsi     # 0xfec35
callq 0x22ab0
movq 0xf5fa6(%rip), %rdi     # 0x175f90
movl %r13d, %esi
callq 0x231e0
movq %rax, %rbp
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbp, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movl $0xf, %edx
movq 0xf5f68(%rip), %rdi     # 0x175f90
leaq 0x8086a(%rip), %rsi     # 0x100899
callq 0x22ab0
movl 0x8(%r14), %esi
movq 0xf5f51(%rip), %rdi     # 0x175f90
callq 0x22650
movq %rax, %rbp
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbp, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movl $0x13, %edx
movq 0xf5f16(%rip), %rdi     # 0x175f90
leaq 0x807d8(%rip), %rsi     # 0x100859
callq 0x22ab0
movl 0x8(%r14), %eax
movq 0x1d20(%rbx), %rcx
movl (%rcx,%rax,4), %esi
movq 0xf5ef5(%rip), %rdi     # 0x175f90
callq 0x22650
movq %rax, %rbp
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbp, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movl $0x18, %edx
movq 0xf5eba(%rip), %rdi     # 0x175f90
leaq 0x807cc(%rip), %rsi     # 0x1008a9
callq 0x22ab0
movq 0x1d28(%rbx), %rsi
subq 0x1d20(%rbx), %rsi
sarq $0x2, %rsi
movq 0xf5e95(%rip), %rdi     # 0x175f90
callq 0x22650
movq %rax, %rbp
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbp, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movl 0x8(%r14), %eax
movq 0x1d20(%rbx), %rcx
movl (%rcx,%rax,4), %eax
movq 0x138(%rsp), %rcx
incl (%rcx,%rax,4)
movq (%r14), %r14
incl %r13d
testq %r14, %r14
jne 0x7ffbe
leaq 0xe0(%rsp), %rdi
callq 0xad746
movl 0x16fc(%rbx), %ecx
testl %ecx, %ecx
je 0x8051a
movl $0x1, %r13d
movl %r13d, %r13d
movq 0x138(%rsp), %rax
movq 0x140(%rsp), %rdx
subq %rax, %rdx
sarq $0x2, %rdx
cmpq %r13, %rdx
jbe 0x8074a
movl (%rax,%r13,4), %esi
movl 0x1620(%rbx), %eax
xorl %edx, %edx
divl %ecx
cmpl %eax, %esi
jne 0x80508
movq %r13, 0xb0(%rsp)
cmpl $0x3, 0x1614(%rbx)
jb 0x80228
movl $0x7, %edx
movq 0xf5dc7(%rip), %rdi     # 0x175f90
leaq 0x806f2(%rip), %rsi     # 0x1008c2
callq 0x22ab0
movq 0xf5db4(%rip), %rdi     # 0x175f90
movq 0xb0(%rsp), %rsi
callq 0x22650
movq %rax, %rbp
movl $0x9, %edx
movq %rax, %rdi
leaq 0x79626(%rip), %rsi     # 0xf9821
callq 0x22ab0
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbp, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0x1d38(%rbx), %rcx
movq 0x1d40(%rbx), %rdx
subq %rcx, %rdx
sarq $0x3, %rdx
movabsq $-0x5555555555555555, %rsi # imm = 0xAAAAAAAAAAAAAAAB
imulq %rsi, %rdx
movq 0xb0(%rsp), %r13
cmpq %r13, %rdx
jbe 0x807ee
movq 0x1d38(%rbx), %rax
movq 0x1d40(%rbx), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
imulq %rsi, %rdx
cmpq %r13, %rdx
jbe 0x80739
leaq (,%r13,2), %rdx
addq %r13, %rdx
movq %rdx, 0xc8(%rsp)
movq (%rcx,%rdx,8), %r14
movq 0xc8(%rsp), %rcx
cmpq 0x8(%rax,%rcx,8), %r14
je 0x80508
xorps %xmm0, %xmm0
movaps %xmm0, 0x90(%rsp)
movq $0x0, 0xa0(%rsp)
movl (%r14), %edx
xorps %xmm0, %xmm0
movq %r15, %rdi
movq %rbx, %rsi
callq 0xa0d88
movq 0x90(%rsp), %rdi
movq 0xa0(%rsp), %rsi
movq 0x10(%rsp), %rax
movq %rax, 0x90(%rsp)
movups 0x18(%rsp), %xmm0
movups %xmm0, 0x98(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x80318
subq %rdi, %rsi
callq 0x229c0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x8032f
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x229c0
movl (%r14), %ebp
leaq 0x2b8(%rsp), %r13
movq %r13, %rdi
leaq 0x90(%rsp), %rsi
callq 0x66228
xorps %xmm0, %xmm0
movq %r15, %rdi
movq %rbx, %rsi
movl %ebp, %edx
movq %r13, %rcx
xorl %r8d, %r8d
callq 0xa1efe
movq 0x90(%rsp), %rdi
movq 0xa0(%rsp), %rsi
movq 0x10(%rsp), %rax
movq %rax, 0x90(%rsp)
movups 0x18(%rsp), %xmm0
movups %xmm0, 0x98(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x803a8
subq %rdi, %rsi
callq 0x229c0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x803bf
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x229c0
movq 0x2b8(%rsp), %rdi
testq %rdi, %rdi
je 0x803dc
movq 0x2c8(%rsp), %rsi
subq %rdi, %rsi
callq 0x229c0
xorps %xmm0, %xmm0
movaps %xmm0, 0x2a0(%rsp)
movq $0x0, 0x2b0(%rsp)
movq 0x90(%rsp), %rbp
cmpq 0x98(%rsp), %rbp
je 0x8043f
movsd (%rbp), %xmm0
movq %r15, %rdi
callq 0xc0446
movq %r12, %rdi
movq %r15, %rsi
callq 0x6a77e
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x80439
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x229c0
addq $0x8, %rbp
jmp 0x803fb
movq 0x15c8(%rbx), %rdx
subq 0x15c0(%rbx), %rdx
je 0x80496
sarq $0x3, %rdx
xorl %ebp, %ebp
movl (%r14), %edi
movl %ebp, %esi
callq 0xbf2a3
movq (%rbx), %rdi
movl $0xffffffff, (%rsp)     # imm = 0xFFFFFFFF
xorl %esi, %esi
movl %eax, %edx
movl $0x15, %ecx
xorl %r8d, %r8d
movq %r12, %r9
callq 0x6bfb0
incl %ebp
movq 0x15c8(%rbx), %rdx
subq 0x15c0(%rbx), %rdx
sarq $0x3, %rdx
cmpq %rbp, %rdx
ja 0x80455
movq 0x138(%rsp), %rax
movq 0xb0(%rsp), %r13
movl $0x0, (%rax,%r13,4)
movq %r12, %rdi
callq 0x31a9e
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x804d3
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x229c0
addq $0x4, %r14
movq 0x1d38(%rbx), %rax
movq 0x1d40(%rbx), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rcx, %rdx
cmpq %r13, %rdx
ja 0x80295
jmp 0x80739
incl %r13d
movl 0x16fc(%rbx), %ecx
cmpl %ecx, %r13d
jbe 0x80173
movq %rbx, %rdi
callq 0x8795e
movl %eax, %r13d
cmpl $0x3, 0x1614(%rbx)
jb 0x80580
movl $0x15, %edx
movq 0xf5a56(%rip), %rdi     # 0x175f90
leaq 0x802ca(%rip), %rsi     # 0x10080b
callq 0x22ab0
movzbl %r13b, %esi
movq 0xf5a3f(%rip), %rdi     # 0x175f90
callq 0x230e0
movq %rax, %rbp
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbp, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
testb %r13b, %r13b
jne 0x80673
movl 0x1708(%rbx), %ecx
testl %ecx, %ecx
leaq 0x2f0(%rsp), %r14
je 0x80618
movl 0x13e8(%rbx), %eax
xorl %edx, %edx
divl %ecx
testl %edx, %edx
jne 0x80618
cmpl $0x0, 0x16fc(%rbx)
je 0x805ee
movl $0x1, %ebp
movq %r14, %rdi
leaq 0x150(%rsp), %rsi
callq 0xa8a90
movq %rbx, %rdi
movl %ebp, %esi
movq %r14, %rdx
leaq 0x1b0(%rsp), %rcx
callq 0x9cc68
movq %r14, %rdi
callq 0xa7bb4
incl %ebp
cmpl 0x16fc(%rbx), %ebp
jbe 0x805b7
cmpl $0x0, 0x16fc(%rbx)
je 0x80618
movl $0x1, %ebp
movq %rbx, %rdi
movl %ebp, %esi
leaq 0x1b0(%rsp), %rdx
callq 0x9d0d8
incl %ebp
cmpl 0x16fc(%rbx), %ebp
jbe 0x805fc
leaq 0x58(%rsp), %rdi
callq 0xad720
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x8063e
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
leaq 0x68(%rsp), %r14
je 0x80668
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x229c0
testb %r13b, %r13b
je 0x7f7b4
jmp 0x806be
leaq 0x58(%rsp), %rdi
callq 0xad720
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x80699
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x806be
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
cmpq %rax, %rdi
je 0x806e3
movq 0x230(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x1b0(%rsp), %rdi
callq 0xadbb0
movq 0x138(%rsp), %rdi
testq %rdi, %rdi
je 0x8070d
movq 0x148(%rsp), %rsi
subq %rdi, %rsi
callq 0x229c0
leaq 0xe0(%rsp), %rdi
callq 0xad720
leaq 0x150(%rsp), %rdi
callq 0xa7bb4
addq $0x308, %rsp            # imm = 0x308
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x72f85(%rip), %rdi     # 0xf36c5
movq %r13, %rsi
xorl %eax, %eax
callq 0x22f40
leaq 0x72f74(%rip), %rdi     # 0xf36c5
movq %r13, %rsi
xorl %eax, %eax
callq 0x22f40
leaq 0x7e6f4(%rip), %rsi     # 0xfee56
leaq 0x10(%rsp), %rdi
movq 0xb8(%rsp), %rdx
callq 0x319d8
movl 0x13e8(%rbx), %esi
leaq 0x90(%rsp), %rdi
callq 0xc03b8
movq 0x10(%rsp), %rcx
movq 0x18(%rsp), %r8
movq 0x98(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %esi
leaq 0x20(%rsp), %rdi
cmpq %rdi, %rcx
je 0x807b1
movq 0x20(%rsp), %rsi
leaq 0xa0(%rsp), %r14
cmpq %rsi, %rax
jbe 0x807da
movl $0xf, %esi
cmpq %r14, 0x90(%rsp)
je 0x807d5
movq 0xa0(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x807ff
movq 0x90(%rsp), %rsi
leaq 0x10(%rsp), %rdi
callq 0x222b0
jmp 0x80810
leaq 0x72ed0(%rip), %rdi     # 0xf36c5
movq %r13, %rsi
xorl %eax, %eax
callq 0x22f40
leaq 0x90(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x22a80
leaq 0x48(%rsp), %rcx
movq %rcx, 0x38(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
jne 0x80833
movups (%rcx), %xmm0
leaq 0x48(%rsp), %rdx
movups %xmm0, (%rdx)
jmp 0x80840
movq %rdx, 0x38(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x48(%rsp)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x40(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x7e60a(%rip), %rsi     # 0xfee6e
leaq 0x38(%rsp), %rdi
callq 0x233b0
leaq 0x2e0(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x80892
movups (%rcx), %xmm0
movups %xmm0, (%r15)
jmp 0x808a5
movq %rdx, 0x2d0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x2e0(%rsp)
movq 0x8(%rax), %rdx
leaq 0x2d0(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %rbx, %rdi
callq 0x78b66
movq %rax, %rbx
movq 0x280(%rsp), %rdi
cmpq %r15, %rdi
je 0x808f1
movq 0x290(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x808f1
movq %rax, %rbx
movq 0xe0(%rsp), %rdi
cmpq %r14, %rdi
jne 0x80995
jmp 0x80db1
movq %rax, %rbx
leaq 0x1c0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x80930
movq 0x1c0(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x80930
movq %rax, %rbx
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x80db1
movq 0x68(%rsp), %rsi
jmp 0x8099d
jmp 0x80c75
movq %rax, %rbx
jmp 0x80d97
jmp 0x80c75
movq %rax, %rbx
movq 0x240(%rsp), %rdi
cmpq %r14, %rdi
je 0x80980
movq 0x250(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x80980
movq %rax, %rbx
leaq 0xf0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x80db1
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x80db1
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x80d07
movq 0x20(%rsp), %rsi
jmp 0x80b6d
jmp 0x80b19
jmp 0x80b21
movq %rax, %rbx
movq 0x2d0(%rsp), %rdi
cmpq %r15, %rdi
je 0x809f9
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x809f9
movq %rax, %rbx
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x80afa
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x80afa
movq %rax, %rbx
movq 0x1e0(%rsp), %rdi
leaq 0x1f0(%rsp), %rax
cmpq %rax, %rdi
je 0x80d07
movq 0x1f0(%rsp), %rsi
jmp 0x80b6d
jmp 0x80b21
jmp 0x80b19
movq %rax, %rbx
movq 0x58(%rsp), %rdi
cmpq %r14, %rdi
je 0x80a70
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x80a70
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x80d23
movq 0x20(%rsp), %rsi
jmp 0x80d1b
movq %rax, %rbx
movq 0x58(%rsp), %rdi
cmpq %r14, %rdi
je 0x80d48
movq 0x68(%rsp), %rsi
jmp 0x80d40
movq %rax, %rbx
movq 0x190(%rsp), %rdi
leaq 0x1a0(%rsp), %rax
cmpq %rax, %rdi
je 0x80add
movq 0x1a0(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x80add
movq %rax, %rbx
jmp 0x80d48
movq %rax, %rbx
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
jne 0x80c69
jmp 0x80d23
jmp 0x80b21
movq %rax, %rbx
movq 0x90(%rsp), %rdi
cmpq %r14, %rdi
je 0x80b2c
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x80b2c
movq %rax, %rbx
jmp 0x80d07
movq %rax, %rbx
jmp 0x80d23
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x80b48
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x68(%rsp), %r14
jmp 0x80c5b
jmp 0x80ca8
movq %rax, %rbx
movq 0x58(%rsp), %rdi
cmpq %r14, %rdi
je 0x80d07
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x80d07
movq %rax, %rbx
leaq 0x2f0(%rsp), %rdi
callq 0xa7bb4
jmp 0x80cfd
jmp 0x80ca8
jmp 0x80ca8
jmp 0x80ca8
jmp 0x80c58
movq %rax, %rbx
movq 0x170(%rsp), %rdi
leaq 0x180(%rsp), %rax
cmpq %rax, %rdi
je 0x80bda
movq 0x180(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x80bda
movq %rax, %rbx
leaq 0x68(%rsp), %r14
jmp 0x80c0e
movq %rax, %rbx
leaq 0x68(%rsp), %r14
movq 0x260(%rsp), %rdi
leaq 0x270(%rsp), %rax
cmpq %rax, %rdi
je 0x80c0e
movq 0x270(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x80c0e
jmp 0x80ca8
movq %rax, %rbx
movq 0x200(%rsp), %rdi
leaq 0x210(%rsp), %rax
cmpq %rax, %rdi
je 0x80c5b
movq 0x210(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x80c5b
jmp 0x80ca8
jmp 0x80ca8
movq %rax, %rbx
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x80cfd
movq 0x28(%rsp), %rsi
jmp 0x80cf5
jmp 0x80ca8
jmp 0x80ca8
movq %rax, %rbx
movq 0x58(%rsp), %rdi
cmpq %r14, %rdi
je 0x80d23
movq 0x68(%rsp), %rsi
jmp 0x80d1b
jmp 0x80ca8
movq %rax, %rbx
jmp 0x80da4
jmp 0x80ca8
movq %rax, %rbx
movq 0x2b8(%rsp), %rdi
testq %rdi, %rdi
je 0x80ce0
movq 0x2c8(%rsp), %rsi
subq %rdi, %rsi
callq 0x229c0
jmp 0x80ce0
jmp 0x80ca3
movq %rax, %rbx
jmp 0x80ce0
movq %rax, %rbx
jmp 0x80cfd
jmp 0x80cd0
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x80cd3
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x80cd3
movq %rax, %rbx
leaq 0x2a0(%rsp), %rdi
callq 0x31a9e
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x80cfd
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x229c0
leaq 0x58(%rsp), %rdi
callq 0xad720
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x80d23
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x80d48
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x230(%rsp), %rax
movq 0x220(%rsp), %rdi
cmpq %rax, %rdi
je 0x80d6d
movq 0x230(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x1b0(%rsp), %rdi
callq 0xadbb0
movq 0x138(%rsp), %rdi
testq %rdi, %rdi
je 0x80d97
movq 0x148(%rsp), %rsi
subq %rdi, %rsi
callq 0x229c0
leaq 0xe0(%rsp), %rdi
callq 0xad720
leaq 0x150(%rsp), %rdi
callq 0xa7bb4
movq %rbx, %rdi
callq 0x23240
nop