// File: /workspace/github_cpp_makefile_star2_O3/richardposner[P]BioNetFit2/src/code/Swarm.cpp
// Function: Swarm::checkMasterMessages()
vector<unsigned int> Swarm::checkMasterMessages() {  //razi:  modified version, particles replaced with subparticles
	unsigned int pID, mid, NumNewlyFinishedParticles=0;
	std::vector<unsigned int> NewlyFinishedParticles;

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

	// First let's check interswarm communication
	int numMessages = swarmComm->recvMessage(-1, 0, -1, true, swarmComm->univMessageReceiver);
	//if we set false in the boolean above, the program still works for multiple models, but doesn't work for single models, who knows why...
	if (numMessages >= 1) {
		if (options.verbosity >= 3) {
			cout << "Found " << numMessages << " messages" << endl;
		}

		pair <Pheromones::swarmMsgHolderIt, Pheromones::swarmMsgHolderIt> smhRange;

		smhRange = swarmComm->univMessageReceiver.equal_range(SIMULATION_END);

		for (Pheromones::swarmMsgHolderIt sm = smhRange.first; sm != smhRange.second; ++sm) {

			unsigned int subParID;
			subParID = sm->second.sender;

			pID = fcalcParID(subParID, options.models.size());
			mid= fcalcMID(subParID, options.models.size());

			fixRunningParticle(subParID);


			if (options.verbosity >= 3) {
				cout << "subParticle [" << subParID << ":"<< pID <<"-"<< mid <<"] finished simulation" << endl;
			}
			// Get an iterator to the particle in our list of running particles
			runningSubParticlesIterator_ = runningSubParticles_.find(subParID);
			// Then remove it
			if (runningSubParticlesIterator_ == runningSubParticles_.end()) {
				string errMsg = "Error: Couldn't remove subParticle " + toString(subParID) + " from runningParticle list.";

				if(options.verbosity >= 3) {

					cout << "Size of runningSubParticles_: " << runningSubParticles_.size() << endl;
					cout << "Subparticles in running list are: " << endl;

					for(auto myIt = runningSubParticles_.begin(); myIt != runningSubParticles_.end(); myIt++){
						cout << "first: " << *myIt << endl;

					}
					cout << "Done listing running particles. " << endl;
				}
				outputError(errMsg);
			}

			if(options.verbosity >= 3) {

				cout << "Master messages Added supar " << subParID << " to finnished list and removed it from running list" << endl;
			}
			runningSubParticles_.erase(runningSubParticlesIterator_);
			finishedSubParticles_.insert(subParID); //razi: add to the list
			++particleIterationCounter_[pID][mid];
			if(options.verbosity >= 5) {

				cout << "Master messages running sub" << runningSubParticles_.size() << " finished size " << finishedSubParticles_.size() << endl;
			}
			update_cur_particle_params(pID, mid, true); //razi: TODO  the same procedure should be done in other places, the slave sends theliust of free parameters for subparticle that should be reordered for particles

			//finishedsubParticles.push_back(subParID);


			//razi: was ++flightCounter_;    //razi increment the flight counter if this subparticle completes a particle
			NewlyFinishedParticles = update_finished_running_particles(); //update particle lists
			NumNewlyFinishedParticles = NewlyFinishedParticles.size(); //update particle lists
			flightCounter_=flightCounter_+ NumNewlyFinishedParticles;
			if (options.verbosity == 3) {
				cout << "Master NumNewlyFinishedParticles " <<  NumNewlyFinishedParticles << " Flightcounter " << flightCounter_ << endl;
			}
			unsigned int gen = currentGeneration;
			string paramsString;
			if (options.synchronicity == 1 || options.synchronicity == 0) { //Raquel testing
				if (options.fitType == "ga") {
					paramsString = "gen" + toString(gen) + "perm" + toString(subParID) + " ";
				}
				else if (options.fitType == "pso") {
					paramsString = "flock" + toString(gen) + "SubParticle" + toString(subParID) + " ";
				}

			}
			/*else if (options.synchronicity == 0) {
				// Increment our flight counter

				// TODO: This run summary contains 1 less particle than it should.
				// Output a run summary every outputEvery flights
				if (flightCounter_ % options.outputEvery == 0) {
					string outputPath = options.jobOutputDir + toString(flightCounter_) + "_summary.txt";
					outputRunSummary(outputPath);
				}

				paramsString = toString(flightCounter_) + " ";
			}
	*/
			// Store the parameters given to us by the particle


//cout<< "check messages: this part may need modifications ...."<<endl;

//razi: just for debugging, later del
/*int i1, i2;
cout<<"size 1:"<< subparticleCurrParamSets_.size()<<endl;
i1=0;
for (auto ii=subparticleCurrParamSets_.begin(); ii!=subparticleCurrParamSets_.end(); ii++){
	i2=0;
	for (auto jj=ii->second.begin(); jj!=ii->second.end(); jj++){
		cout<<"size [p-sp]: ["<< i1<<","<<i2 <<"]: "<< jj->second.size()<<endl;
		i2++;
	}i1++;
}
*/

			vector<double> paramsVec;
			int i = 0;
			for (vector<string>::iterator m = sm->second.message.begin() + 1; m != sm->second.message.end(); ++m) {
				paramsString += *m + " ";
//cout<<"paramsString["<<i<<"]= "<<paramsString<<endl; //mypause();
				paramsVec.push_back(stod(*m));
				if (options.fitType == "ga") {
					subparticleCurrParamSets_[pID][mid][i] = stod(*m);   //razi: the list and order of free params can be different for  different models
					if (options.verbosity>= 3) {
						cout << "pID " << pID << " mid " << mid << " i " << i << " *m " << *m << endl;
					}
					particleCurrParamSets_[pID][i] = stod(*m);
				}
				++i;
			}
			if(options.verbosity >= 5) {

cout<<i <<" Params collected for one subparticle: "<<paramsString<<endl; //mypause();
subparticleCurrParamSets_copy = subparticleCurrParamSets_;
particleCurrParamSets_copy = particleCurrParamSets_;

			}
			update_cur_particle_params(pID, mid, true); //razi: TODO  the same procedure should be done in other places, the slave sends theliust of free parameters for subparticle that should be reordered for particles

			if (options.verbosity>= 3) {cout << "params are stored" << endl;} //mypause();}

			double fitCalc = stod(sm->second.message[0]);
			if (options.verbosity>= 3) {cout << "fitCalc: " << fitCalc <<endl;} //mypause();}


			update_fitCalcs(); //razi: TODO: later develop and test this function
			if(options.verbosity >= 3) {

cout << "add to allGenFits fitCalc: " << fitCalc <<" params:" << paramsString<<endl; //mypause();
			}
			allGenFits.insert(pair<double, string>(fitCalc, order_params(paramsString, mid)));
			swarmBestFits_.insert(pair<double, unsigned int>(fitCalc, pID));
			subswarmBestFits_.insert(pair<double, unsigned int>(fitCalc, subParID));
			currentsubswarmBestFits_.insert(pair<double, unsigned int>(fitCalc, subParID));
			currentsubswarmBestFits_copy.insert(pair<double, unsigned int>(fitCalc, subParID));

			if(options.verbosity>=3){

				cout << "@@@@@@@@@@@@@@@@@ currentsubswarmBestFits_ size A " << currentsubswarmBestFits_.size() << " @@@@@@@@@@@@@@@@@@@@@@@@@@@@" << endl;

			}
//cout << "add to swarmBestFits_ fitCalc: " << fitCalc <<endl;mypause();

			if (options.fitType == "pso") {
				processParamsPSO(paramsVec, subParID, fitCalc);
			}

			if (options.fitType == "de") {
				processParamsDE(paramsVec, subParID, fitCalc);
			}
		}

		// TODO: When sending NEXT_GENERATION, make sure failed particles have actually run again. If not, they need re-launched.
		if(options.verbosity >= 5) {

			cout << "RAQUEL: before univMessageReceiver.equal_range(SIMULATION_FAIL)" << endl;
			cout << "Number of runnning subparticles before" << runningSubParticles_.size() << endl;
		}
		smhRange = swarmComm->univMessageReceiver.equal_range(SIMULATION_FAIL);
		if(options.verbosity >= 5) {

			cout << "RAQUEL: after univMessageReceiver.equal_range(SIMULATION_FAIL);" << endl;
		}
		for (Pheromones::swarmMsgHolderIt sm = smhRange.first; sm != smhRange.second; ++sm) {

			unsigned int subParID = sm->second.sender;
			pID = fcalcParID(subParID, options.models.size());
			mid= fcalcMID(subParID, options.models.size());

			fixRunningParticle(subParID);

			// Get an iterator to the particle in our list of running particles
			runningSubParticlesIterator_ = runningSubParticles_.find(subParID);
			if(options.verbosity >= 5) {

				cout << "Number of runnning subparticles before erasing" << runningSubParticles_.size() << endl;
			}


			if (runningSubParticlesIterator_ == runningSubParticles_.end()) {
				string errMsg = "Error: Couldn't remove particle " + toString(pID) +  "  SubParticle " + toString(subParID) + " from runningParticle list.";
				outputError(errMsg);
			}else{
				runningSubParticles_.erase(runningSubParticlesIterator_);
				if(options.verbosity >= 5) {

					cout << "RAQUEL Erased one subparticle fro running list " << endl;
					cout << "New size: " << runningSubParticles_.size() << endl;
				}
			}
			runningSubParticlesIterator_ = failedSubParticles_.find(subParID);
			if (runningSubParticlesIterator_== failedSubParticles_.end())  //add to the list of failed subparticles
				failedParticles_.insert(subParID);
			else{
				string errMsg = "Error: subparticle failed, but failure was already reported for particle " + toString(pID) +  "  SubParticle " + toString(subParID);
				outputError(errMsg);
			}
			update_finished_running_particles();


			cout << "Particle " << pID << " SubParticle:" << subParID << "  failed in gen " << currentGeneration << endl;

			// Store particle ID in our list of failed particles

		}
		if(options.verbosity >= 5) {

			cout << "RAQUEL: After for (Pheromones::swarmMsgHolderIt sm = smhRange.first; sm != smhRange.second; ++sm) {" << endl;
		}
		int messageCount = 0;
		if(options.verbosity >= 5) {

			cout << "RAQUEL: Before for (Pheromones::swarmMsgHolderIt sm = smhRange.first; sm != smhRange.second; ++sm) { {" << endl;
		}
		smhRange = swarmComm->univMessageReceiver.equal_range(GET_RUNNING_PARTICLES);
		for (Pheromones::swarmMsgHolderIt sm = smhRange.first; sm != smhRange.second; ++sm) {

			vector<string> intParts;
			//for (auto i: runningParticles_) {
			for (auto i = runningSubParticles_.begin(); i != runningSubParticles_.end(); ++i) { //razi: get list of subparticles
				intParts.push_back(toString(*i));
			}
			messageCount++;
			//cout << "RAQUEL: Sending " << messageCount << " messages." << endl;
			//cout << "RAQUEL: sending message to subpar " << sm->second.sender << " message=Running_particles" << endl;
			swarmComm->sendToSwarm(0, sm->second.sender, SEND_RUNNING_PARTICLES, true, intParts);
			//cout << "RAQUEL: Sent " << messageCount << " messages." << endl;
		}

		if(options.verbosity >= 5) {

			cout << "RAQUEL: After for (Pheromones::swarmMsgHolderIt sm = smhRange.first; sm != smhRange.second; ++sm) { {" << endl;
		}

		swarmComm->univMessageReceiver.clear();

	}

	// Now let's check for any external messages
	//checkExternalMessages();
	if (options.verbosity>= 4) {

		cout<<"checking message is finished.\n";
		cout << "RAQUEL: NewlyFinishedParticles = " << toString(NewlyFinishedParticles.size()) << endl;
	}

	return NewlyFinishedParticles;

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x238, %rsp            # imm = 0x238
movq %rsi, %r14
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movq %rdi, 0x128(%rsp)
movq $0x0, 0x10(%rdi)
cmpl $0x3, 0x1614(%rsi)
jb 0x8d651
movq 0xe8996(%rip), %rbx     # 0x175fa8
leaq 0x72548(%rip), %rsi     # 0xffb61
movl $0x11, %edx
movq %rbx, %rdi
callq 0x22ab0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0xe8964(%rip), %rdi     # 0x175fa8
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq (%r14), %rdi
leaq 0x18(%rdi), %r9
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
xorl %edx, %edx
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
movl $0x1, %r8d
pushq $-0x1
pushq $0x1
callq 0x6d52e
addq $0x10, %rsp
movl %eax, %ebx
testl %eax, %eax
jle 0x8ef08
cmpl $0x3, 0x1614(%r14)
jb 0x8d6ef
movq 0xe8916(%rip), %rdi     # 0x175fa8
leaq 0x6e381(%rip), %rsi     # 0xfba1a
movl $0x6, %edx
callq 0x22ab0
movq 0xe88fe(%rip), %rdi     # 0x175fa8
movl %ebx, %esi
callq 0x231e0
movq %rax, %rbx
leaq 0x94754(%rip), %rsi     # 0x121e0f
movl $0x9, %edx
movq %rax, %rdi
callq 0x22ab0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbx, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq (%r14), %rdi
addq $0x18, %rdi
leaq 0x10(%rsp), %rsi
movl $0xd, (%rsi)
callq 0x6920c
cmpq %rdx, %rax
movq %r14, 0xb0(%rsp)
je 0x8e8d2
movq %rax, %rcx
leaq 0x1820(%r14), %rax
movq %rax, 0x1b8(%rsp)
leaq 0x1828(%r14), %rax
movq %rax, 0x130(%rsp)
leaq 0x1890(%r14), %rax
movq %rax, 0x1b0(%rsp)
leaq 0x1950(%r14), %rax
movq %rax, 0x1a8(%rsp)
leaq 0x14e0(%r14), %rax
movq %rax, 0x100(%rsp)
leaq 0xd0(%rsp), %r13
leaq 0x20(%rsp), %r15
leaq 0x1460(%r14), %rax
movq %rax, 0x140(%rsp)
leaq 0x1400(%r14), %rax
movq %rax, 0x138(%rsp)
leaq 0x1490(%r14), %rax
movq %rax, 0x170(%rsp)
leaq 0x1430(%r14), %rax
movq %rax, 0x168(%rsp)
leaq 0x8(%r14), %rax
movq %rax, 0x1a0(%rsp)
leaq 0x1bd0(%r14), %rax
movq %rax, 0x198(%rsp)
leaq 0x1c00(%r14), %rax
movq %rax, 0x190(%rsp)
leaq 0x1c30(%r14), %rax
movq %rax, 0x188(%rsp)
leaq 0x1c60(%r14), %rax
movq %rax, 0x180(%rsp)
leaq 0x10(%rsp), %r12
movq %rdx, 0x178(%rsp)
movq %rcx, 0xb8(%rsp)
movl 0x34(%rcx), %edi
movl %edi, 0x8(%rsp)
movq 0x15c8(%r14), %rsi
subq 0x15c0(%r14), %rsi
shrq $0x3, %rsi
callq 0xbe99e
movl %eax, 0xc(%rsp)
movl 0x8(%rsp), %edi
movq 0x15c8(%r14), %rsi
subq 0x15c0(%r14), %rsi
shrq $0x3, %rsi
callq 0xbe994
movl %eax, 0x64(%rsp)
movl 0x8(%rsp), %esi
movq %r14, %rdi
callq 0x95896
cmpl $0x3, 0x1614(%r14)
jb 0x8d912
movl $0xd, %edx
movq 0xe8736(%rip), %rdi     # 0x175fa8
leaq 0x722fa(%rip), %rsi     # 0xffb73
callq 0x22ab0
movl 0x8(%rsp), %esi
movq 0xe871f(%rip), %rdi     # 0x175fa8
callq 0x22650
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x70d30(%rip), %rsi     # 0xfe5d0
callq 0x22ab0
movl 0xc(%rsp), %esi
movq %rbx, %rdi
callq 0x22650
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x73dbe(%rip), %rsi     # 0x101681
callq 0x22ab0
movl 0x64(%rsp), %esi
movq %rbx, %rdi
callq 0x22650
movq %rax, %rbx
movl $0x15, %edx
movq %rax, %rdi
leaq 0x7229b(%rip), %rsi     # 0xffb81
callq 0x22ab0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbx, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0x1830(%r14), %rcx
movl 0x8(%rsp), %esi
testq %rcx, %rcx
movq 0x130(%rsp), %rdx
je 0x8f020
movq %rdx, %rax
xorl %edx, %edx
cmpl %esi, 0x20(%rcx)
setb %dl
cmovaeq %rcx, %rax
movq 0x10(%rcx,%rdx,8), %rcx
testq %rcx, %rcx
jne 0x8d931
movq 0x130(%rsp), %rdx
cmpq %rdx, %rax
je 0x8f020
cmpl 0x20(%rax), %esi
movq %rax, %rcx
cmovbq %rdx, %rcx
movq %rcx, 0x1850(%r14)
jb 0x8f027
cmpl $0x3, 0x1614(%r14)
jb 0x8d9e6
movl $0x1c, %edx
movq 0xe8623(%rip), %rdi     # 0x175fa8
leaq 0x722ae(%rip), %rsi     # 0xffc3a
callq 0x22ab0
movl 0x8(%rsp), %esi
movq 0xe860c(%rip), %rdi     # 0x175fa8
callq 0x22650
movq %rax, %rbx
movl $0x33, %edx
movq %rax, %rdi
leaq 0x722a4(%rip), %rsi     # 0xffc57
callq 0x22ab0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbx, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0x1850(%r14), %rax
movq 0x1b8(%rsp), %rdi
movq %rax, %rsi
callq 0xafb34
movq 0x1b0(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xaf99c
movq 0x1a8(%rsp), %rdi
leaq 0xc(%rsp), %rsi
callq 0xa7ecc
movq %rax, %rdi
leaq 0x64(%rsp), %rsi
callq 0xa7f32
incl (%rax)
cmpl $0x5, 0x1614(%r14)
jb 0x8daae
movl $0x1b, %edx
movq 0xe8569(%rip), %rdi     # 0x175fa8
leaq 0x72245(%rip), %rsi     # 0xffc8b
callq 0x22ab0
movq 0x1848(%r14), %rsi
movq 0xe854f(%rip), %rdi     # 0x175fa8
callq 0x22650
movq %rax, %rbx
movl $0xf, %edx
movq %rax, %rdi
leaq 0x72237(%rip), %rsi     # 0xffca7
callq 0x22ab0
movq 0x18b8(%r14), %rsi
movq %rbx, %rdi
callq 0x22650
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbx, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movl 0xc(%rsp), %esi
movl 0x64(%rsp), %edx
movq %r14, %rdi
movl $0x1, %ecx
callq 0x8b0b0
movq %r12, %rdi
movq %r14, %rsi
callq 0x958ea
movq 0x128(%rsp), %rcx
movq (%rcx), %rdi
movq 0x10(%rcx), %rsi
movq 0x10(%rsp), %r14
movq %r14, (%rcx)
movq 0x18(%rsp), %rbx
movq %rbx, 0x8(%rcx)
movq 0x20(%rsp), %rax
movq %rax, 0x10(%rcx)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x8db2c
subq %rdi, %rsi
callq 0x229c0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x8db2c
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x229c0
subq %r14, %rbx
shrq $0x2, %rbx
movq 0xb0(%rsp), %r14
addl %ebx, 0x1d84(%r14)
cmpl $0x3, 0x1614(%r14)
jne 0x8dbc2
movl $0x21, %edx
movq 0xe8450(%rip), %rdi     # 0x175fa8
leaq 0x72158(%rip), %rsi     # 0xffcb7
callq 0x22ab0
movl %ebx, %esi
movq 0xe843b(%rip), %rdi     # 0x175fa8
callq 0x22650
movq %rax, %rbx
movl $0xf, %edx
movq %rax, %rdi
leaq 0x72155(%rip), %rsi     # 0xffcd9
callq 0x22ab0
movl 0x1d84(%r14), %esi
movq %rbx, %rdi
callq 0x22650
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbx, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movl 0x13e8(%r14), %ebx
leaq 0x80(%rsp), %rax
movq %rax, 0x70(%rsp)
movq $0x0, 0x78(%rsp)
movb $0x0, 0x80(%rsp)
movq 0x100(%rsp), %r14
movq %r14, %rdi
leaq 0x64390(%rip), %rsi     # 0xf1f89
callq 0x22250
testl %eax, %eax
je 0x8dc7c
movq %r14, %rdi
leaq 0x71366(%rip), %rsi     # 0xfef72
callq 0x22250
testl %eax, %eax
jne 0x8e0ce
leaq 0x108(%rsp), %r14
movq %r14, %rdi
movl %ebx, %esi
callq 0xbfa49
movl $0x5, %r8d
movq %r14, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x720b3(%rip), %rcx     # 0xffcf2
callq 0x22a80
leaq 0x50(%rsp), %r14
movq %r13, 0xc0(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x8de51
movq %rdx, 0xc0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xd0(%rsp)
jmp 0x8de59
leaq 0x108(%rsp), %r14
movq %r14, %rdi
movl %ebx, %esi
callq 0xbfa49
movl $0x3, %r8d
movq %r14, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x72047(%rip), %rcx     # 0xffce9
callq 0x22a80
movq %r13, 0xc0(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq 0x50(%rsp), %r14
je 0x8dcd8
movq %rdx, 0xc0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xd0(%rsp)
jmp 0x8dce0
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0xc8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xc0(%rsp), %rdi
leaq 0x71fe3(%rip), %rsi     # 0xffced
callq 0x233b0
leaq 0xa0(%rsp), %rsi
movq %rsi, 0x90(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x8dd43
movq %rdx, 0x90(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xa0(%rsp)
jmp 0x8dd49
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x98(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl 0x8(%rsp), %esi
leaq 0xe0(%rsp), %rdi
callq 0xbfa49
movq 0x90(%rsp), %rcx
movl $0xf, %edi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rcx
je 0x8dd97
movq 0xa0(%rsp), %rdi
movq 0x98(%rsp), %r8
movq 0xe0(%rsp), %rsi
movq 0xe8(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x8ddd7
movl $0xf, %edi
leaq 0xf0(%rsp), %r9
cmpq %r9, %rsi
je 0x8ddd2
movq 0xf0(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x8dde6
leaq 0x90(%rsp), %rdi
callq 0x222b0
jmp 0x8ddf7
leaq 0xe0(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x22a80
movq %r14, 0x40(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x8de17
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x8de1e
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x48(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x40(%rsp), %rdi
leaq 0x735dd(%rip), %rsi     # 0x101424
callq 0x233b0
jmp 0x8dfc5
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0xc8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xc0(%rsp), %rdi
leaq 0x71e75(%rip), %rsi     # 0xffcf8
callq 0x233b0
leaq 0xa0(%rsp), %rsi
movq %rsi, 0x90(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x8debc
movq %rdx, 0x90(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xa0(%rsp)
jmp 0x8dec2
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x98(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl 0x8(%rsp), %esi
leaq 0xe0(%rsp), %rdi
callq 0xbfa49
movq 0x90(%rsp), %rcx
movl $0xf, %edi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rcx
je 0x8df10
movq 0xa0(%rsp), %rdi
movq 0x98(%rsp), %r8
movq 0xe0(%rsp), %rsi
movq 0xe8(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x8df50
movl $0xf, %edi
leaq 0xf0(%rsp), %r9
cmpq %r9, %rsi
je 0x8df4b
movq 0xf0(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x8df5f
leaq 0x90(%rsp), %rdi
callq 0x222b0
jmp 0x8df70
leaq 0xe0(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x22a80
movq %r14, 0x40(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x8df90
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x8df97
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x48(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x40(%rsp), %rdi
leaq 0x73464(%rip), %rsi     # 0x101424
callq 0x233b0
movq %r15, 0x10(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x8dfe8
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0x8dfef
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, 0x18(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x70(%rsp), %rdi
movq %r12, %rsi
callq 0x22bb0
movq 0x10(%rsp), %rdi
cmpq %r15, %rdi
je 0x8e02b
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x40(%rsp), %rdi
cmpq %r14, %rdi
je 0x8e042
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0xe0(%rsp), %rdi
leaq 0xf0(%rsp), %rax
cmpq %rax, %rdi
je 0x8e067
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x8e08c
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0xc0(%rsp), %rdi
cmpq %r13, %rdi
je 0x8e0a9
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x108(%rsp), %rdi
leaq 0x118(%rsp), %rax
cmpq %rax, %rdi
je 0x8e0ce
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x229c0
xorps %xmm0, %xmm0
movaps %xmm0, 0x90(%rsp)
movq $0x0, 0xa0(%rsp)
movq 0xb8(%rsp), %rax
movq 0x38(%rax), %r14
addq $0x20, %r14
cmpq 0x40(%rax), %r14
je 0x8e3b2
xorl %ebx, %ebx
movq %r15, 0x10(%rsp)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x3213c
movq %r12, %rdi
leaq 0x73302(%rip), %rsi     # 0x101424
callq 0x233b0
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
leaq 0x70(%rsp), %rdi
callq 0x222b0
movq 0x10(%rsp), %rdi
cmpq %r15, %rdi
je 0x8e152
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x229c0
movq (%r14), %rbp
callq 0x22070
movq %rax, %r13
movl (%rax), %r15d
movl $0x0, (%rax)
movq %rbp, %rdi
movq %r12, %rsi
callq 0x22760
cmpq %rbp, 0x10(%rsp)
je 0x8efd8
movl (%r13), %eax
testl %eax, %eax
je 0x8e18e
cmpl $0x22, %eax
jne 0x8e192
jmp 0x8efe4
movl %r15d, (%r13)
movsd %xmm0, 0x40(%rsp)
movq 0x98(%rsp), %rsi
cmpq 0xa0(%rsp), %rsi
je 0x8e1c4
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x98(%rsp)
movq 0x100(%rsp), %rdi
jmp 0x8e1de
leaq 0x90(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x67e5a
movq 0x100(%rsp), %rdi
leaq 0x63da4(%rip), %rsi     # 0xf1f89
callq 0x22250
testl %eax, %eax
jne 0x8e392
movq (%r14), %rbp
movl (%r13), %r15d
movl $0x0, (%r13)
movq %rbp, %rdi
movq %r12, %rsi
callq 0x22760
movsd %xmm0, 0x68(%rsp)
cmpq %rbp, 0x10(%rsp)
je 0x8effc
movl (%r13), %eax
testl %eax, %eax
je 0x8e22f
cmpl $0x22, %eax
jne 0x8e233
jmp 0x8f008
movl %r15d, (%r13)
movq 0x140(%rsp), %rdi
leaq 0xc(%rsp), %rsi
callq 0xa7e66
movq %rax, %rdi
leaq 0x64(%rsp), %rsi
callq 0xa7e00
movq (%rax), %rax
movsd 0x68(%rsp), %xmm0
movsd %xmm0, (%rax,%rbx,8)
movq 0xb0(%rsp), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x8e331
movl $0x4, %edx
movq 0xe7d27(%rip), %rdi     # 0x175fa8
leaq 0x71a7c(%rip), %rsi     # 0xffd04
callq 0x22ab0
movl 0xc(%rsp), %esi
movq 0xe7d10(%rip), %rdi     # 0x175fa8
callq 0x22650
movq %rax, %rbp
movl $0x5, %edx
movq %rax, %rdi
leaq 0x6b46f(%rip), %rsi     # 0xf971e
callq 0x22ab0
movl 0x64(%rsp), %esi
movq %rbp, %rdi
callq 0x22650
movq %rax, %rbp
movl $0x3, %edx
movq %rax, %rdi
leaq 0x6acb7(%rip), %rsi     # 0xf8f89
callq 0x22ab0
movq %rbp, %rdi
movl %ebx, %esi
callq 0x231e0
movq %rax, %rbp
movl $0x4, %edx
movq %rax, %rdi
leaq 0x71a16(%rip), %rsi     # 0xffd09
callq 0x22ab0
movq (%r14), %rsi
movq 0x8(%r14), %rdx
movq %rbp, %rdi
callq 0x22ab0
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
movq (%r14), %rbp
movl (%r13), %r15d
movl $0x0, (%r13)
movq %rbp, %rdi
movq %r12, %rsi
callq 0x22760
movsd %xmm0, 0x68(%rsp)
cmpq %rbp, 0x10(%rsp)
je 0x8eff0
movl (%r13), %eax
testl %eax, %eax
je 0x8e36e
cmpl $0x22, %eax
jne 0x8e372
jmp 0x8f014
movl %r15d, (%r13)
movq 0x138(%rsp), %rdi
leaq 0xc(%rsp), %rsi
callq 0xa7e00
movq (%rax), %rax
movsd 0x68(%rsp), %xmm0
movsd %xmm0, (%rax,%rbx,8)
incq %rbx
addq $0x20, %r14
movq 0xb8(%rsp), %rax
cmpq 0x40(%rax), %r14
leaq 0x20(%rsp), %r15
jne 0x8e101
jmp 0x8e3b4
xorl %ebx, %ebx
movq 0xb0(%rsp), %r14
cmpl $0x4, 0x1614(%r14)
jbe 0x8e455
movq 0xe7bd7(%rip), %rdi     # 0x175fa8
movl %ebx, %esi
callq 0x231e0
movq %rax, %rbx
movl $0x27, %edx
movq %rax, %rdi
leaq 0x71924(%rip), %rsi     # 0xffd0e
callq 0x22ab0
movq 0x70(%rsp), %rsi
movq 0x78(%rsp), %rdx
movq %rbx, %rdi
callq 0x22ab0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbx, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0x170(%rsp), %rdi
movq 0x140(%rsp), %rsi
callq 0xac9cc
movq 0x168(%rsp), %rdi
movq 0x138(%rsp), %rsi
callq 0xaccd2
movl 0xc(%rsp), %esi
movl 0x64(%rsp), %edx
movq %r14, %rdi
movl $0x1, %ecx
callq 0x8b0b0
cmpl $0x3, 0x1614(%r14)
jb 0x8e4be
movl $0x11, %edx
movq 0xe7b28(%rip), %rdi     # 0x175fa8
leaq 0x718af(%rip), %rsi     # 0xffd36
callq 0x22ab0
movq 0xe7b15(%rip), %rcx     # 0x175fa8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0xe7af7(%rip), %rdi     # 0x175fa8
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0xb8(%rsp), %rax
movq 0x38(%rax), %rax
movq (%rax), %rbx
callq 0x22070
movq %rax, %r13
movl (%rax), %ebp
movl $0x0, (%rax)
movq %rbx, %rdi
movq %r12, %rsi
callq 0x22760
movsd %xmm0, 0x68(%rsp)
cmpq %rbx, 0x10(%rsp)
je 0x8f0d9
movl (%r13), %eax
testl %eax, %eax
je 0x8e50b
cmpl $0x22, %eax
jne 0x8e50f
jmp 0x8f0e5
movl %ebp, (%r13)
cmpl $0x3, 0x1614(%r14)
leaq 0x20(%rsp), %r15
leaq 0xd0(%rsp), %r13
jb 0x8e57a
movl $0x9, %edx
movq 0xe7a76(%rip), %rdi     # 0x175fa8
leaq 0x71821(%rip), %rsi     # 0xffd5a
callq 0x22ab0
movq 0xe7a63(%rip), %rdi     # 0x175fa8
movsd 0x68(%rsp), %xmm0
callq 0x23060
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbx, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq %r14, %rdi
callq 0x95e76
cmpl $0x3, 0x1614(%r14)
jb 0x8e609
movl $0x1b, %edx
movq 0xe7a10(%rip), %rdi     # 0x175fa8
leaq 0x717a9(%rip), %rsi     # 0xffd48
callq 0x22ab0
movq 0xe79fd(%rip), %rdi     # 0x175fa8
movsd 0x68(%rsp), %xmm0
callq 0x23060
movq %rax, %rbx
movl $0x8, %edx
movq %rax, %rdi
leaq 0x7179c(%rip), %rsi     # 0xffd64
callq 0x22ab0
movq 0x70(%rsp), %rsi
movq 0x78(%rsp), %rdx
movq %rbx, %rdi
callq 0x22ab0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbx, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
leaq 0x158(%rsp), %rax
movq %rax, 0x148(%rsp)
movq 0x70(%rsp), %rsi
movq 0x78(%rsp), %rdx
addq %rsi, %rdx
leaq 0x148(%rsp), %rbx
movq %rbx, %rdi
callq 0x3213c
movl 0x64(%rsp), %ecx
leaq 0x40(%rsp), %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x95ec4
movsd 0x68(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
leaq 0x28(%rsp), %rdx
movq %rdx, 0x18(%rsp)
movq 0x40(%rsp), %rax
leaq 0x50(%rsp), %rcx
cmpq %rcx, %rax
je 0x8e680
movq %rax, 0x18(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x28(%rsp)
jmp 0x8e686
movups (%rcx), %xmm0
movups %xmm0, (%rdx)
movq 0x48(%rsp), %rax
movq %rax, 0x20(%rsp)
movq %rcx, 0x40(%rsp)
movq $0x0, 0x48(%rsp)
movb $0x0, 0x50(%rsp)
movq 0x1a0(%rsp), %rdi
movq %r12, %rsi
callq 0xafc16
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x8e6cf
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x8e6eb
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x148(%rsp), %rdi
leaq 0x158(%rsp), %rax
cmpq %rax, %rdi
je 0x8e710
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x229c0
movsd 0x68(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
movl 0xc(%rsp), %eax
movl %eax, 0x18(%rsp)
movq 0x198(%rsp), %rdi
movq %r12, %rsi
callq 0xaefd4
movsd 0x68(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
movl 0x8(%rsp), %eax
movl %eax, 0x18(%rsp)
movq 0x190(%rsp), %rdi
movq %r12, %rsi
callq 0xaefd4
movsd 0x68(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
movl 0x8(%rsp), %eax
movl %eax, 0x18(%rsp)
movq 0x188(%rsp), %rdi
movq %r12, %rsi
callq 0xaefd4
movsd 0x68(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
movl 0x8(%rsp), %eax
movl %eax, 0x18(%rsp)
movq 0x180(%rsp), %rdi
movq %r12, %rsi
callq 0xaefd4
cmpl $0x3, 0x1614(%r14)
jb 0x8e813
movl $0x32, %edx
movq 0xe77f2(%rip), %rdi     # 0x175fa8
leaq 0x715b0(%rip), %rsi     # 0xffd6d
callq 0x22ab0
movq 0x1c58(%r14), %rsi
movq 0xe77d8(%rip), %rdi     # 0x175fa8
callq 0x22650
movq %rax, %rbx
movl $0x1d, %edx
movq %rax, %rdi
leaq 0x70d16(%rip), %rsi     # 0xff4fd
callq 0x22ab0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbx, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0x100(%rsp), %rdi
leaq 0x70750(%rip), %rsi     # 0xfef72
callq 0x22250
testl %eax, %eax
jne 0x8e845
movl 0x8(%rsp), %edx
movq %r14, %rdi
leaq 0x90(%rsp), %rsi
movsd 0x68(%rsp), %xmm0
callq 0x8aa9a
movq 0x100(%rsp), %rdi
leaq 0x9f6a7(%rip), %rsi     # 0x12defb
callq 0x22250
testl %eax, %eax
jne 0x8e877
movl 0x8(%rsp), %edx
movq %r14, %rdi
leaq 0x90(%rsp), %rsi
movsd 0x68(%rsp), %xmm0
callq 0x8b67c
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x8e894
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x229c0
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0x8e8b6
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0xb8(%rsp), %rcx
movq (%rcx), %rcx
movq 0x178(%rsp), %rdx
cmpq %rdx, %rcx
jne 0x8d803
cmpl $0x4, 0x1614(%r14)
jbe 0x8e97b
movq 0xe76c1(%rip), %rbx     # 0x175fa8
leaq 0x714b2(%rip), %rsi     # 0xffda0
movl $0x3f, %edx
movq %rbx, %rdi
callq 0x22ab0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0xe768f(%rip), %rdi     # 0x175fa8
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0xe767b(%rip), %rdi     # 0x175fa8
leaq 0x714ac(%rip), %rsi     # 0xffde0
movl $0x26, %edx
callq 0x22ab0
movq 0x1848(%r14), %rsi
movq 0xe765c(%rip), %rdi     # 0x175fa8
callq 0x22650
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbx, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq (%r14), %rdi
addq $0x18, %rdi
leaq 0x10(%rsp), %rsi
movl $0xe, (%rsi)
callq 0x6920c
movq %rdx, 0xb8(%rsp)
movq %rax, %rbx
cmpl $0x5, 0x1614(%r14)
jb 0x8e9ed
movq 0xe75fa(%rip), %r15     # 0x175fa8
leaq 0x71452(%rip), %rsi     # 0xffe07
movl $0x3f, %edx
movq %r15, %rdi
callq 0x22ab0
movq (%r15), %rax
addq -0x18(%rax), %r15
movq %r15, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0xe75c8(%rip), %rdi     # 0x175fa8
callq 0x22050
movq %rax, %rdi
callq 0x22660
cmpq 0xb8(%rsp), %rbx
je 0x8ed09
leaq 0x1820(%r14), %rax
movq %rax, 0x100(%rsp)
leaq 0x1828(%r14), %r12
leaq 0x1860(%r14), %r13
leaq 0x19d0(%r14), %rax
movq %rax, 0x68(%rsp)
movq 0xe757d(%rip), %rbp     # 0x175fa8
movl 0x34(%rbx), %edi
movl %edi, 0xe0(%rsp)
movq 0x15c8(%r14), %rsi
subq 0x15c0(%r14), %rsi
shrq $0x3, %rsi
callq 0xbe99e
movl %eax, 0xc(%rsp)
movl 0xe0(%rsp), %edi
movq 0x15c8(%r14), %rsi
subq 0x15c0(%r14), %rsi
shrq $0x3, %rsi
callq 0xbe994
movl %eax, 0x64(%rsp)
movl 0xe0(%rsp), %esi
movq %r14, %rdi
callq 0x95896
movq 0x1830(%r14), %rdx
movq %r12, %rsi
testq %rdx, %rdx
je 0x8eac3
movl 0xe0(%rsp), %ecx
movq %r12, %rax
xorl %esi, %esi
cmpl %ecx, 0x20(%rdx)
setb %sil
cmovaeq %rdx, %rax
movq 0x10(%rdx,%rsi,8), %rdx
testq %rdx, %rdx
jne 0x8ea9a
movq %r12, %rsi
cmpq %r12, %rax
je 0x8eac3
cmpl 0x20(%rax), %ecx
cmovbq %r12, %rax
movq %rax, %rsi
movq %rsi, 0x1850(%r14)
cmpl $0x5, 0x1614(%r14)
jb 0x8eb28
movl $0x2e, %edx
movq %rbp, %rdi
leaq 0x71364(%rip), %rsi     # 0xffe47
callq 0x22ab0
movq 0x1848(%r14), %rsi
movq %rbp, %rdi
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
movq 0x1850(%r14), %rsi
cmpq %r12, %rsi
je 0x8f07f
movq 0x100(%rsp), %rdi
callq 0xafb34
cmpl $0x5, 0x1614(%r14)
jb 0x8ebd5
movl $0x2f, %edx
movq %rbp, %rdi
leaq 0x7134b(%rip), %rsi     # 0xffea6
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
movl $0xa, %edx
movq %rbp, %rdi
leaq 0x7133f(%rip), %rsi     # 0xffed6
callq 0x22ab0
movq 0x1848(%r14), %rsi
movq %rbp, %rdi
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
movq 0x1868(%r14), %rdx
testq %rdx, %rdx
je 0x8ec1c
movl 0xe0(%rsp), %ecx
movq %r13, %rax
xorl %esi, %esi
cmpl %ecx, 0x20(%rdx)
setb %sil
cmovaeq %rdx, %rax
movq 0x10(%rdx,%rsi,8), %rdx
testq %rdx, %rdx
jne 0x8ebeb
cmpq %r13, %rax
je 0x8ec1c
cmpl 0x20(%rax), %ecx
cmovbq %r13, %rax
movq %rax, 0x1850(%r14)
jb 0x8ec23
jmp 0x8f0f1
movq %r13, 0x1850(%r14)
movq 0x68(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
callq 0xaf99c
leaq 0x220(%rsp), %rdi
movq %r14, %rsi
callq 0x958ea
movq 0x220(%rsp), %rdi
testq %rdi, %rdi
je 0x8ec62
movq 0x230(%rsp), %rsi
subq %rdi, %rsi
callq 0x229c0
movl $0x9, %edx
movq %rbp, %rdi
leaq 0x7122b(%rip), %rsi     # 0xffe9c
callq 0x22ab0
movl 0xc(%rsp), %esi
movq %rbp, %rdi
callq 0x22650
movq %rax, %r15
movl $0xd, %edx
movq %rax, %rdi
leaq 0x707e2(%rip), %rsi     # 0xff476
callq 0x22ab0
movl 0xe0(%rsp), %esi
movq %r15, %rdi
callq 0x22650
movq %rax, %r15
movl $0x10, %edx
movq %rax, %rdi
leaq 0x71271(%rip), %rsi     # 0xfff2b
callq 0x22ab0
movl 0x13e8(%r14), %esi
movq %r15, %rdi
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
movq (%rbx), %rbx
cmpq 0xb8(%rsp), %rbx
jne 0x8ea2b
cmpl $0x4, 0x1614(%r14)
jbe 0x8edad
movq 0xe728a(%rip), %rbx     # 0x175fa8
leaq 0x71217(%rip), %rsi     # 0xfff3c
movl $0x63, %edx
movq %rbx, %rdi
callq 0x22ab0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0xe7258(%rip), %rdi     # 0x175fa8
callq 0x22050
movq %rax, %rdi
callq 0x22660
cmpl $0x5, 0x1614(%r14)
jb 0x8edad
movq 0xe723a(%rip), %rbx     # 0x175fa8
leaq 0x7122b(%rip), %rsi     # 0xfffa0
movl $0x66, %edx
movq %rbx, %rdi
callq 0x22ab0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0xe7208(%rip), %rdi     # 0x175fa8
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq (%r14), %rdi
addq $0x18, %rdi
leaq 0x10(%rsp), %rsi
movl $0xb, (%rsi)
callq 0x6920c
movq %rax, %rbx
cmpq %rdx, %rax
je 0x8eea4
movq 0xb0(%rsp), %rax
leaq 0x1828(%rax), %r15
leaq 0x20(%rsp), %r14
leaq 0x70(%rsp), %r12
leaq 0x10(%rsp), %r13
movq %rdx, 0xb8(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x70(%rsp)
movq $0x0, 0x80(%rsp)
movq 0xb0(%rsp), %rax
movq 0x1838(%rax), %rbp
cmpq %r15, %rbp
je 0x8ee5b
movl 0x20(%rbp), %esi
movq %r13, %rdi
callq 0xbfa49
movq %r12, %rdi
movq %r13, %rsi
callq 0x6a2a2
movq 0x10(%rsp), %rdi
cmpq %r14, %rdi
je 0x8ee4b
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x229c0
movq %rbp, %rdi
callq 0x22ad0
movq %rax, %rbp
cmpq %r15, %rax
jne 0x8ee1e
movq 0xb0(%rsp), %rax
movq (%rax), %rdi
movl 0x34(%rbx), %edx
subq $0x8, %rsp
xorl %esi, %esi
movl $0xc, %ecx
movl $0x1, %r8d
movq %r12, %r9
pushq $-0x1
callq 0x6bac2
addq $0x10, %rsp
movq %r12, %rdi
callq 0x31a0a
movq (%rbx), %rbx
movq 0xb8(%rsp), %rdx
cmpq %rdx, %rbx
jne 0x8edf6
movq 0xb0(%rsp), %r14
cmpl $0x4, 0x1614(%r14)
jbe 0x8eefc
movq 0xe70eb(%rip), %rbx     # 0x175fa8
leaq 0x71143(%rip), %rsi     # 0x100007
movl $0x65, %edx
movq %rbx, %rdi
callq 0x22ab0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0xe70b9(%rip), %rdi     # 0x175fa8
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq (%r14), %rdi
addq $0x18, %rdi
callq 0x689b6
cmpl $0x4, 0x1614(%r14)
jb 0x8efbe
movq 0xe708b(%rip), %rdi     # 0x175fa8
leaq 0x71149(%rip), %rsi     # 0x10006d
movl $0x1e, %edx
callq 0x22ab0
movq 0xe7073(%rip), %rdi     # 0x175fa8
leaq 0x71150(%rip), %rsi     # 0x10008c
movl $0x21, %edx
callq 0x22ab0
movq 0x128(%rsp), %rax
movq 0x8(%rax), %rsi
subq (%rax), %rsi
sarq $0x2, %rsi
leaq 0x10(%rsp), %rdi
callq 0xbfb47
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq 0xe7034(%rip), %rdi     # 0x175fa8
callq 0x22ab0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbx, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8efbe
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x128(%rsp), %rax
addq $0x238, %rsp            # imm = 0x238
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x6375c(%rip), %rdi     # 0xf273b
callq 0x225a0
leaq 0x63750(%rip), %rdi     # 0xf273b
callq 0x22e40
leaq 0x63744(%rip), %rdi     # 0xf273b
callq 0x225a0
leaq 0x63738(%rip), %rdi     # 0xf273b
callq 0x225a0
leaq 0x6372c(%rip), %rdi     # 0xf273b
callq 0x22e40
leaq 0x63720(%rip), %rdi     # 0xf273b
callq 0x22e40
movq %rdx, 0x1850(%r14)
leaq 0x40(%rsp), %rdi
callq 0xbfa49
leaq 0x70b5f(%rip), %rcx     # 0xffb97
leaq 0x40(%rsp), %rdi
movl $0x23, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x22a80
leaq 0x80(%rsp), %rcx
movq %rcx, 0x70(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x8f148
movups (%rcx), %xmm0
leaq 0x80(%rsp), %rdx
movups %xmm0, (%rdx)
jmp 0x8f158
movl 0xc(%rsp), %esi
leaq 0xc0(%rsp), %rdi
callq 0xbfa49
leaq 0x70ddf(%rip), %rcx     # 0xffe76
leaq 0xc0(%rsp), %rdi
movl $0x20, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x22a80
leaq 0xa0(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x8f362
movups (%rcx), %xmm0
movups %xmm0, (%r14)
jmp 0x8f375
leaq 0x6365b(%rip), %rdi     # 0xf273b
callq 0x225a0
leaq 0x6364f(%rip), %rdi     # 0xf273b
callq 0x22e40
movl 0xc(%rsp), %esi
leaq 0x90(%rsp), %rdi
callq 0xbfa49
leaq 0x70dd8(%rip), %rcx     # 0xffee1
leaq 0x90(%rsp), %rdi
movl $0x49, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x22a80
leaq 0x50(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x8f45e
movups (%rcx), %xmm0
movups %xmm0, (%r14)
jmp 0x8f46b
movq %rdx, 0x70(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x80(%rsp)
movq 0x8(%rax), %rdx
leaq 0x70(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x70a40(%rip), %rsi     # 0xffbbb
callq 0x233b0
leaq 0x20(%rsp), %rcx
movq %rcx, 0x10(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x8f1a6
movups (%rcx), %xmm0
leaq 0x20(%rsp), %rdx
movups %xmm0, (%rdx)
jmp 0x8f1b3
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
movq 0x8(%rax), %rdx
movq %rdx, 0x18(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0x8f1ed
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x8f209
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0xb0(%rsp), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x8f327
movq 0xe6d83(%rip), %rdi     # 0x175fa8
leaq 0x709ab(%rip), %rsi     # 0xffbd7
movl $0x1e, %edx
callq 0x22ab0
movq 0xb0(%rsp), %rax
movq 0x1848(%rax), %rsi
movq 0xe6d5c(%rip), %rdi     # 0x175fa8
callq 0x22650
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbx, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0xe6d26(%rip), %rbx     # 0x175fa8
leaq 0x7096d(%rip), %rsi     # 0xffbf6
movl $0x22, %edx
movq %rbx, %rdi
callq 0x22ab0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0xe6cf4(%rip), %rdi     # 0x175fa8
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0xb0(%rsp), %rax
movq 0x1838(%rax), %rbx
movq 0x130(%rsp), %r14
cmpq %r14, %rbx
jne 0x8f7e9
movq 0xe6cc0(%rip), %rbx     # 0x175fa8
leaq 0x7092a(%rip), %rsi     # 0xffc19
movl $0x20, %edx
movq %rbx, %rdi
callq 0x22ab0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0xe6c8e(%rip), %rdi     # 0x175fa8
callq 0x22050
movq %rax, %rdi
callq 0x22660
leaq 0x210(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x200(%rsp), %rdi
callq 0x3213c
leaq 0x200(%rsp), %rsi
movq 0xb0(%rsp), %rdi
callq 0x784c2
movq %rdx, 0x90(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xa0(%rsp)
movq 0x8(%rax), %rdx
leaq 0x90(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x70afc(%rip), %rsi     # 0xffe97
callq 0x233b0
leaq 0x50(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x8f3c1
movups (%rcx), %xmm0
movups %xmm0, (%r15)
jmp 0x8f3ce
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
movq 0x8(%rax), %rdx
movq %rdx, 0x48(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl 0xe0(%rsp), %esi
leaq 0x108(%rsp), %rdi
callq 0xbfa49
movq 0x40(%rsp), %rcx
movq 0x48(%rsp), %r8
movq 0x110(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %edi
cmpq %r15, %rcx
je 0x8f41f
movq 0x50(%rsp), %rdi
movq 0x108(%rsp), %rsi
cmpq %rdi, %rax
jbe 0x8f44f
leaq 0x118(%rsp), %r9
movl $0xf, %edi
cmpq %r9, %rsi
je 0x8f446
movq 0x118(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x8f55a
leaq 0x40(%rsp), %rdi
callq 0x222b0
jmp 0x8f56b
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
movq 0x8(%rax), %rdx
leaq 0x40(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x70a09(%rip), %rsi     # 0xffe97
callq 0x233b0
leaq 0x80(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x8f4b7
movups (%rcx), %xmm0
movups %xmm0, (%r15)
jmp 0x8f4c7
movq %rdx, 0x70(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x80(%rsp)
movq 0x8(%rax), %rdx
movq %rdx, 0x78(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl 0xe0(%rsp), %esi
leaq 0xc0(%rsp), %rdi
callq 0xbfa49
movq 0x70(%rsp), %rcx
movq 0x78(%rsp), %r8
movq 0xc8(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %edi
cmpq %r15, %rcx
je 0x8f51b
movq 0x80(%rsp), %rdi
movq 0xc0(%rsp), %rsi
cmpq %rdi, %rax
jbe 0x8f54b
leaq 0xd0(%rsp), %r9
movl $0xf, %edi
cmpq %r9, %rsi
je 0x8f542
movq 0xd0(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x8f6e3
leaq 0x70(%rsp), %rdi
callq 0x222b0
jmp 0x8f6f4
leaq 0x108(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x22a80
leaq 0x80(%rsp), %rdx
movq %rdx, -0x10(%rdx)
movq (%rax), %rsi
leaq 0x10(%rax), %rcx
cmpq %rcx, %rsi
jne 0x8f58b
movups (%rcx), %xmm0
movups %xmm0, (%rdx)
jmp 0x8f59b
movq %rsi, 0x70(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x80(%rsp)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x78(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x705fc(%rip), %rsi     # 0xffbbb
leaq 0x70(%rsp), %rdi
callq 0x233b0
leaq 0x20(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x8f5ec
movups (%rcx), %xmm0
movups %xmm0, (%r12)
jmp 0x8f5f9
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
movq 0x8(%rax), %rdx
movq %rdx, 0x18(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x80(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8f632
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x118(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8f653
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x40(%rsp), %rdi
cmpq %r15, %rdi
je 0x8f66a
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x90(%rsp), %rdi
cmpq %r14, %rdi
je 0x8f687
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0xd0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8f6a8
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x1f0(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1e0(%rsp), %rdi
callq 0x3213c
leaq 0x1e0(%rsp), %rsi
movq 0xb0(%rsp), %rdi
callq 0x784c2
leaq 0xc0(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x22a80
leaq 0x20(%rsp), %rdx
movq %rdx, -0x10(%rdx)
movq (%rax), %rsi
leaq 0x10(%rax), %rcx
cmpq %rcx, %rsi
jne 0x8f711
movups (%rcx), %xmm0
movups %xmm0, (%rdx)
jmp 0x8f71e
movq %rsi, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x18(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0xd0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8f75c
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x70(%rsp), %rdi
cmpq %r15, %rdi
je 0x8f776
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x40(%rsp), %rdi
cmpq %r14, %rdi
je 0x8f78d
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0xa0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8f7ae
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x1d0(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1c0(%rsp), %rdi
callq 0x3213c
leaq 0x1c0(%rsp), %rsi
movq 0xb0(%rsp), %rdi
callq 0x784c2
movq 0xe67b8(%rip), %r15     # 0x175fa8
leaq 0x69e0a(%rip), %r12     # 0xf9601
movl $0x7, %edx
movq %r15, %rdi
movq %r12, %rsi
callq 0x22ab0
movl 0x20(%rbx), %esi
movq %r15, %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
movq %rbx, %rdi
callq 0x22ad0
movq %rax, %rbx
cmpq %r14, %rax
jne 0x8f7f7
jmp 0x8f2e1
jmp 0x8fa63
movq %rax, %rbx
movq 0x1c0(%rsp), %rdi
cmpq %r14, %rdi
je 0x8fa11
movq 0x1d0(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x8fa11
jmp 0x8fa0e
movq %rax, %rbx
movq 0x1e0(%rsp), %rdi
cmpq %r14, %rdi
je 0x8f8a9
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x8f8a9
movq %rax, %rbx
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
jne 0x8fa79
jmp 0x8fcee
movq %rax, %rbx
leaq 0xd0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8f90b
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x8f90b
movq %rax, %rbx
leaq 0x80(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8f92a
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x8f92a
movq %rax, %rbx
movq 0x70(%rsp), %rdi
cmpq %r15, %rdi
je 0x8f955
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x8f955
movq %rax, %rbx
leaq 0x118(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8f980
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x8f980
jmp 0x8fc97
movq %rax, %rbx
movq 0x40(%rsp), %rdi
cmpq %r14, %rdi
je 0x8f9c5
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x8f9c5
jmp 0x8fc97
jmp 0x8fc97
jmp 0x8fc97
movq %rax, %rbx
movq 0x40(%rsp), %rdi
cmpq %r15, %rdi
je 0x8f9ea
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x8f9ea
movq %rax, %rbx
movq 0x200(%rsp), %rdi
cmpq %r14, %rdi
je 0x8fa66
movq 0x210(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x8fa66
movq %rax, %rbx
leaq 0xa0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8fcee
movq 0xa0(%rsp), %rsi
jmp 0x8fce6
movq %rax, %rbx
movq 0x90(%rsp), %rdi
cmpq %r14, %rdi
je 0x8fa41
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x8fa41
jmp 0x8fc97
movq %rax, %rbx
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
jmp 0x8fa70
jmp 0x8fc97
jmp 0x8fc97
jmp 0x8facd
jmp 0x8fa88
jmp 0x8fac3
jmp 0x8fac8
jmp 0x8fb58
jmp 0x8fabb
movq %rax, %rbx
leaq 0xd0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8fcee
movq 0xd0(%rsp), %rsi
jmp 0x8fce6
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x8fcee
movq 0x20(%rsp), %rsi
jmp 0x8fce6
jmp 0x8fc97
movq %rax, %rbx
jmp 0x8fae7
movq %rax, %rbx
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0x8fb91
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x8fb91
movq %rax, %rbx
jmp 0x8fccc
movq %rax, %rbx
jmp 0x8fb0c
movq %rax, %rbx
jmp 0x8fb31
movq %rax, %rbx
movq 0x40(%rsp), %rdi
cmpq %r14, %rdi
je 0x8fae7
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0xe0(%rsp), %rdi
leaq 0xf0(%rsp), %rax
cmpq %rax, %rdi
je 0x8fb0c
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x8fb31
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x8fb5b
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x8fb5b
movq %rax, %rbx
movq 0x108(%rsp), %rdi
leaq 0x118(%rsp), %rax
cmpq %rax, %rdi
je 0x8fccc
movq 0x118(%rsp), %rsi
incq %rsi
jmp 0x8fcc7
jmp 0x8fc97
jmp 0x8fc97
movq %rax, %rbx
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x8fcee
movq 0x50(%rsp), %rsi
jmp 0x8fce6
jmp 0x8fcac
movq %rax, %rbx
jmp 0x8fbf3
movq %rax, %rbx
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x8fbd7
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x8fbf3
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x148(%rsp), %rdi
leaq 0x158(%rsp), %rax
cmpq %rax, %rdi
je 0x8fcaf
movq 0x158(%rsp), %rsi
jmp 0x8fc5e
jmp 0x8fcac
jmp 0x8fcac
jmp 0x8fcac
jmp 0x8fcac
jmp 0x8fc97
jmp 0x8fc6a
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0x8fcaf
movl %ebp, (%r13)
jmp 0x8fcaf
jmp 0x8fc97
jmp 0x8fcac
jmp 0x8fcac
jmp 0x8fcac
jmp 0x8fc9c
jmp 0x8fc9c
jmp 0x8fc4c
movq %rax, %rbx
movq 0x10(%rsp), %rdi
cmpq %r15, %rdi
je 0x8fcaf
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x8fcaf
jmp 0x8fcac
movq %rax, %rbx
jmp 0x8fc89
movq %rax, %rbx
movq 0x10(%rsp), %rdi
cmpq %r14, %rdi
je 0x8fc89
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x70(%rsp), %rdi
callq 0x31a0a
jmp 0x8fcee
jmp 0x8fc97
movq %rax, %rbx
jmp 0x8fcee
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0x8fcaf
movl %r15d, (%r13)
jmp 0x8fcaf
movq %rax, %rbx
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x8fccc
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x229c0
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0x8fcee
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x128(%rsp), %rax
movq (%rax), %rdi
testq %rdi, %rdi
je 0x8fd0a
movq 0x10(%rax), %rsi
subq %rdi, %rsi
callq 0x229c0
movq %rbx, %rdi
callq 0x23240