// File: /workspace/github_cpp_makefile_star2_O2/richardposner[P]BioNetFit2/src/code/Particle.cpp
// Function: subParticle::runModel(unsigned int, bool)
void subParticle::runModel(unsigned int iteration, bool localSearch) {

	unsigned int pID = parParticle->id_;
	if (parParticle->swarm_->options.verbosity >= 3) {
		cout << "RRR parParticle->id_: " << pID << endl;
	}
	Swarm * swp = parParticle->swarm_;  if(!swp){cout<<"subParticle::runModel: Invalid subParticle with no parent..."; return;}
	Model * mdl = parParticle->models.at(this->mid_);  if(!swp){cout<<"subParticle::runModel: Invalid subParticle with no model..."; return;}
	unsigned int mid = this->mid_;
	unsigned int subParID = parParticle->calcsubParID(mid);

	if ((swp->getNumModels()<1) || (mid<0) || (mid >=swp->getNumModels())){
		cout<<"subParticle::runModel. Number of models:" << swp->getNumModels() <<"subParticle id:" << mid<< endl;
		outputError("Something must be wrong. Particle can not be run. Quitting...");
	}


	// First get our path and filename variables set up for use in model generation, sim command, etc
	string bnglFilename = swp->getModelName(this->mid_,false)+"_"+toString(pID) + "_" + toString(iteration) + ".bngl";

	if (parParticle->swarm_->options.verbosity>= 3) {cout<<"Started running model for subParticle:["<<subParID <<":"<< pID  <<"-"<<mid_ <<"] model file is: " << bnglFilename<<".\n"; }

	string path = swp->options.jobOutputDir + toString(parParticle->currentGeneration_) + "/";
	string bnglFullPath = path + bnglFilename;

	string suffix = toString(pID) + "_" + toString(iteration);

	string pipePath;
	// Only need to generate files if we're in the first generation. In subsequent generations
	// the model generation is handled by breeding parents
	if (parParticle->currentGeneration_ == 1 && !localSearch) {
		if (mdl->getHasGenerateNetwork()){
			if (parParticle->swarm_->options.verbosity>= 3) cout<<"generating network...\n";
			if (swp->bootstrapCounter == 0) {
				//string netFilename = "base_"+toString(mid)+".net"; //Raquel: commented to fix problem with .net file name
				//string netFullPath = swp->options.jobOutputDir + netFilename; //Raquel: commented to fix problem with .net file name
				string path2 = swp->options.models.at(mid)->getName(); //Raquel: fixed problem with .net file name
				string basename1 = getFilename(path2); //Raquel: fixed problem with .net file name
				string netFilename = basename1 + "_base.net"; //Raquel: fixed problem with .net file name
				string netFullPath = swp->options.jobOutputDir + netFilename; //Raquel: fixed problem with .net file name
				if ((swp->options.jobOutputDir.substr(swp->options.jobOutputDir.size()-1,1)!="/") && (swp->options.jobOutputDir.substr(swp->options.jobOutputDir.size()-1,1)!="\\"))
					netFullPath = swp->options.jobOutputDir + "/" + netFilename;
				if (iteration == 1) {
					mdl->parseNet(netFullPath);
				}
			}
			//razi: check later
			mdl->outputModelWithParams(parParticle->simParams_.at(mid), path, bnglFilename, suffix, false, false, true, false, false);
		}
		else {
			//razi: check later
			mdl->outputModelWithParams(parParticle->simParams_.at(mid), path, bnglFilename, suffix, false, false, false, false, false);
		}
	}
	else if (localSearch) {
		cout << "regenerating models.." << endl;
		// And generate our models
		if (mdl->getHasGenerateNetwork()){
			// If we're using ODE solver, output .net file
			bnglFilename = boost::regex_replace(bnglFilename, boost::regex("bngl$"), string("net"));
			mdl->outputModelWithParams(parParticle->simParams_.at(mid), path, bnglFilename, suffix, false, false, false, false, true);
		}
		else {
			// If we're using network free simulation, output .bngl
			mdl->outputModelWithParams(parParticle->simParams_.at(mid), path, bnglFilename, suffix, false, false, false, false, false);
		}
	}

	ifstream bngfile(bnglFullPath);

	if(!bngfile){
		if (swp->options.verbosity >= 2) {
			cout << "BNGL file not found: " << bnglFullPath << endl;
		}
		swp->processLateParticles(parParticle->simParams_.at(mid), subParID, false, parParticle->currentGeneration_);
		swp->fixRunningParticle(subParID);
		//cout << "from particle: " << swp->particleCurrParamSets_.size() << endl;
		//cout << parParticle->simParams_.at(mid).size() << endl;


	}
	if (swp->options.verbosity>= 3) {
		cout << "RAQUEL GENERATION: " << parParticle->currentGeneration_ << " path" << path << endl;
	}
	// Generate .gdat pipes if we're using pipes

#ifdef PC_VER //pipe are defined only in linux operating systems
	if (swp->options.usePipes)
		outputError("Using pipes are not allowed in windows, disable use_pipes option in the config [.conf] file!!!");
#endif

	string outputSuffix;
	if (swp->options.usePipes) {
		for (std::map<std::string,Model::action>::iterator i = mdl->actions.begin(); i != mdl->actions.end(); ++i) {
			if (i->second.scanParam.size() > 0) {
				outputSuffix = ".scan";
			}
			else {
				outputSuffix = ".gdat";
			}

			//raquel: added line below to fix problem with real simulator file name
			//pipePath = swp->getModelName(this->mid_,false)+"_"+toString(pID) + "_" + toString(iteration) + ".gdat";
			//raquel commented below
			pipePath = path + i->first+ toString(pID) + "_" + toString(iteration) + outputSuffix; //new format to be consistent with bngl file
			if (parParticle->swarm_->options.verbosity >= 3) {
				cout << "Raquel: pipepath " << pipePath << endl;
				cout << "subParticle::runModel pp is: " << pipePath << endl;
			}
			createParticlePipe(pipePath.c_str());
		}
	}




	int ret = -1;
	if (swp->options.verbosity>=3) cout<<"subParticle::runModel: bngl command is:" << swp->options.bngCommand<<endl;
	//razi: generate random gdat if the simulation is set to random, only for test
	std::size_t found = swp->options.bngCommand.find("random");
	if (found!=std::string::npos){   //run artificial simulation
#ifndef TEST_SIMULATOR
		outputError("You are using the random simulator, but the macro is not activated. Recompile the code with TEST_SIMULATOR on !!!");
#endif
		if (parParticle->swarm_->options.verbosity >= 3) {
			cout<<"\nsubParticle::runModel: Random Simulation is chosen for test, generating random result file !!!\n\n"; //mypause();
		}
//swp->printDetails();
//if (mid==1) {return;}
		string exp_file = swp->getExpPath(mid, 0);
//if (mid==1) return; //razi for test uncomment
		if (parParticle->swarm_->options.verbosity >= 3) {
			cout<<"\nsubParticle::runModel: Tries to generate file from file :" << exp_file<<"\n."; //mypause();
		}
		string gdat_path = path +  swp->getExp(mid_,0)+ "_" + toString(pID) + "_" + toString(iteration) + ".gdat";
		if (parParticle->swarm_->options.verbosity >= 3) {
			cout<<"\nsubParticle::runModel: Finished generating file: "<< gdat_path << "   from file :" << exp_file<<"\n.";// mypause();
		}
		ret = generate_gdat_file(exp_file, gdat_path, pID);
		if (parParticle->swarm_->options.verbosity >= 3) {
			cout << "RAQUEL ret: " << ret << endl;
		}
	}else
	{
//if (mid==1) return; //razi for test uncomment
		// Construct our simulation command
		string command = swp->options.bngCommand + " --outdir " + path + " " + bnglFullPath + " >> " + path + toString(pID) + ".BNG_OUT 2>&1";
		if (swp->options.usePipes) {
			command += " &";
		}

		if (!checkIfFileExists(path)) {
			runCommand("mkdir " + path); //Raquel added this block
		}

		if (swp->options.verbosity >= 3) {
			cout << "subParticle::runModel: Running model with command: " << command << endl;
		}

		// Run simulation command
		//int ret = system(command.c_str());
		ret = system(command.c_str()); //Raquel: uncomented to run real Simulators, and removed the redeclaration of ret
	}


//if (mid==1) return; //razi for test uncomment

	// Check for simulation command success
	//Raquel: changed this temporarily
	if (ret == 0 || ret==-1 ) { // TODO: Need to check for simulation status when using pipes. Going by return code doesn't work there because we're using the & operator

		// really not sure how we can do this easily
		if (parParticle->swarm_->options.verbosity >= 3) {
			cout<<"subParticle::runModel: simulation completed successfully. Lets collect data ...\n"; //mypause();
		}
		string outputSuffix;
		// Save our simulation outputs to data objects
		for (std::map<std::string,Model::action>::iterator action = mdl->actions.begin(); action != mdl->actions.end(); ++action) {
			if (action->second.scanParam.size() > 0) {
				outputSuffix = ".scan";
				//cout<<"Particle::runModel: A1\n";
			}
			else {
				//cout<<"Particle::runModel: A2\n";
				outputSuffix = ".gdat";
			}
//cout<<"Particle::runModel: A3\n"; //mypause();
			//razi: this is the gdatfile including the simulation results for [ParID,subParID,iteration]
			string dataPath = path + action->first + "_" + toString(pID) + "_" + toString(iteration) + outputSuffix;  //was string dataPath = path + action->first + "_" + toString(id_) + "_" + toString(iteration) + outputSuffix;
			//cout<<"Particle::runModel: A3 dataPath :"<<dataPath<<endl; //mypause();
			if (swp->options.verbosity>=3) cout<<"subParticle::runModel: Adding the results as a data object.  action:"<< action->first<< " datafile:"<<dataPath<<"   model id:"<< mid << "  iteration:" << iteration << endl;
			parParticle->dataFiles_.at(mid)[action->first].insert(pair<int, Data*>(iteration, new Data(dataPath, swp, false, mid)));

			if (parParticle->swarm_->options.verbosity >= 3) {
				cout << "RAQUEL COUNT AT MID " << mid << " = " << parParticle->dataFiles_.at(mid).count(action->first) << endl;
			}

			if (swp->options.verbosity>=3) cout<<"subParticle::runModel: Lets check if done properly. File:"<< parParticle->dataFiles_.at(mid)[action->first][iteration]->getPath() << "exists.\n";

			//cout<<"Particle::runModel: A4\n";
		}
	}
	else {
		// If our return code is not 0, tell the master that the simulation failed
		if (parParticle->swarm_->options.verbosity >= 3) {
			cout << "RAQUEL ret " << ret << endl;

			cout << "subParticle::runModel: I failed completing runmodel ..." << endl; //mypause();
		}
		swp->swarmComm->sendToSwarm(int(subParID), 0, SIMULATION_FAIL, true, swp->swarmComm->univMessageSender);
	}
	if (parParticle->swarm_->options.verbosity >= 3) {

		cout<<"subParticle::runModel: runmodel finished ...\n";
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x808, %rsp            # imm = 0x808
movl %edx, %r15d
movl %esi, 0x2c(%rsp)
movq %rdi, %r13
movq (%rdi), %rdi
movl 0x40(%rdi), %ebx
movq 0xa8(%rdi), %r14
cmpl $0x3, 0x1614(%r14)
jb 0x52112
movq 0x113eb9(%rip), %rdi    # 0x165f98
leaq 0x8473e(%rip), %rsi     # 0xd6824
callq 0x289f0
movq %rax, %rdi
movq %rbx, %rsi
callq 0x286e0
movq %rax, %rdi
callq 0x284a0
movq (%r13), %rdi
movq 0xa8(%rdi), %r14
testq %r14, %r14
je 0x528af
movq %rbx, 0x50(%rsp)
addq $0x78, %rdi
movl 0x8(%r13), %esi
callq 0x3374c
movq (%rax), %rax
movq %rax, 0x40(%rsp)
movl 0x8(%r13), %ebx
movq (%r13), %rdi
movl %ebx, %esi
callq 0x5645e
movq 0x15c8(%r14), %rcx
subq 0x15c0(%r14), %rcx
movl %eax, %ebp
shrq $0x3, %rcx
movl %ebx, %edx
movq %rbx, 0x38(%rsp)
cmpl %ecx, %ebx
movq %r14, 0x30(%rsp)
jb 0x521f5
movq 0x113e2e(%rip), %rdi    # 0x165f98
leaq 0x84707(%rip), %rsi     # 0xd6878
callq 0x289f0
movq 0x15c8(%r14), %rcx
subq 0x15c0(%r14), %rcx
shrq $0x3, %rcx
movl %ecx, %esi
movq %rax, %rdi
callq 0x286e0
leaq 0x84708(%rip), %rsi     # 0xd68a1
movq %rax, %rdi
callq 0x289f0
movq %rax, %rdi
movq 0x38(%rsp), %rsi
callq 0x286e0
movq %rax, %rdi
callq 0x284a0
leaq 0x846f4(%rip), %rsi     # 0xd68b1
leaq 0x350(%rsp), %rdi
leaq 0x540(%rsp), %rdx
callq 0x33402
leaq 0x350(%rsp), %rdi
callq 0x9f54b
leaq 0x350(%rsp), %rdi
callq 0x295a0
movl 0x8(%r13), %edx
movq 0x30(%rsp), %r14
leaq 0x188(%rsp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
xorl %ecx, %ecx
callq 0x6bd9a
leaq 0x83b56(%rip), %rdx     # 0xd5d67
leaq 0x208(%rsp), %rdi
movq %rbx, %rsi
callq 0x3336c
leaq 0xe0(%rsp), %rdi
movq 0x50(%rsp), %rsi
callq 0x9f56b
leaq 0x1a8(%rsp), %rdi
leaq 0x208(%rsp), %rsi
leaq 0xe0(%rsp), %rdx
callq 0x4e6ed
leaq 0x83b10(%rip), %rdx     # 0xd5d67
leaq 0x100(%rsp), %rdi
leaq 0x1a8(%rsp), %rsi
callq 0x3336c
leaq 0x80(%rsp), %rdi
movl 0x2c(%rsp), %esi
callq 0x9f56b
leaq 0x540(%rsp), %rdi
leaq 0x100(%rsp), %rsi
leaq 0x80(%rsp), %rdx
callq 0x4e6ed
leaq 0x84f82(%rip), %rdx     # 0xd7223
leaq 0x228(%rsp), %rdi
leaq 0x540(%rsp), %rsi
callq 0x3336c
leaq 0x540(%rsp), %rdi
callq 0x295a0
leaq 0x80(%rsp), %rdi
callq 0x295a0
leaq 0x100(%rsp), %rdi
callq 0x295a0
leaq 0x1a8(%rsp), %rdi
callq 0x295a0
leaq 0xe0(%rsp), %rdi
callq 0x295a0
leaq 0x208(%rsp), %rdi
callq 0x295a0
leaq 0x188(%rsp), %rdi
callq 0x295a0
movq (%r13), %rax
movq 0xa8(%rax), %rcx
cmpl $0x3, 0x1614(%rcx)
jb 0x523af
movq 0x113c68(%rip), %rdi    # 0x165f98
leaq 0x845b8(%rip), %rsi     # 0xd68ef
callq 0x289f0
movl %ebp, %esi
movq %rax, %rdi
callq 0x286e0
leaq 0x8a3e3(%rip), %rsi     # 0xdc730
movq %rax, %rdi
callq 0x289f0
movq %rax, %rdi
movq 0x50(%rsp), %rsi
callq 0x286e0
leaq 0x8d501(%rip), %rsi     # 0xdf86a
movq %rax, %rdi
callq 0x289f0
movl 0x8(%r13), %esi
movq %rax, %rdi
callq 0x286e0
leaq 0x84593(%rip), %rsi     # 0xd6917
movq %rax, %rdi
callq 0x289f0
leaq 0x228(%rsp), %rsi
movq %rax, %rdi
callq 0x28910
leaq 0x8d31a(%rip), %rsi     # 0xdf6bd
movq %rax, %rdi
callq 0x289f0
movq (%r13), %rax
movl 0xb0(%rax), %esi
leaq 0x1a8(%rsp), %rdi
callq 0x9f56b
movq 0x30(%rsp), %rax
leaq 0x1520(%rax), %rbx
leaq 0x540(%rsp), %rdi
leaq 0x1a8(%rsp), %rdx
movq %rbx, %rsi
callq 0x5a115
leaq 0x8b5ca(%rip), %rdx     # 0xdd9b7
leaq 0x100(%rsp), %rdi
leaq 0x540(%rsp), %rsi
callq 0x3336c
leaq 0x540(%rsp), %rdi
callq 0x295a0
leaq 0x1a8(%rsp), %rdi
callq 0x295a0
leaq 0x1a8(%rsp), %rdi
leaq 0x100(%rsp), %rsi
leaq 0x228(%rsp), %rdx
callq 0x34fc8
leaq 0x188(%rsp), %rdi
movq 0x50(%rsp), %rsi
callq 0x9f56b
leaq 0x83915(%rip), %rdx     # 0xd5d67
leaq 0x540(%rsp), %rdi
leaq 0x188(%rsp), %rsi
callq 0x3336c
leaq 0xe0(%rsp), %rdi
movl 0x2c(%rsp), %esi
callq 0x9f56b
leaq 0x208(%rsp), %rdi
leaq 0x540(%rsp), %rsi
leaq 0xe0(%rsp), %rdx
callq 0x4e6ed
leaq 0xe0(%rsp), %rdi
callq 0x295a0
leaq 0x540(%rsp), %rdi
callq 0x295a0
leaq 0x188(%rsp), %rdi
callq 0x295a0
leaq 0x198(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq (%r13), %rdi
cmpl $0x1, 0xb0(%rdi)
setne %al
orb %r15b, %al
je 0x5264e
testb %r15b, %r15b
je 0x52a9e
movq 0x113aa1(%rip), %rdi    # 0x165f98
leaq 0x8444c(%rip), %rsi     # 0xd694a
callq 0x289f0
movq %rax, %rdi
callq 0x284a0
movq 0x40(%rsp), %rax
cmpb $0x1, 0xb8(%rax)
jne 0x528d3
leaq 0x8397a(%rip), %rsi     # 0xd5e9e
leaq 0xe0(%rsp), %rdi
xorl %edx, %edx
callq 0x33278
leaq 0x8440c(%rip), %rsi     # 0xd6946
leaq 0x2f0(%rsp), %rdi
leaq 0x80(%rsp), %rdx
callq 0x33402
leaq 0x540(%rsp), %rdi
leaq 0x228(%rsp), %rsi
leaq 0xe0(%rsp), %rdx
leaq 0x2f0(%rsp), %rcx
xorl %r8d, %r8d
callq 0x4926c
leaq 0x228(%rsp), %rdi
leaq 0x540(%rsp), %rbx
movq %rbx, %rsi
callq 0x28c40
movq %rbx, %rdi
callq 0x295a0
leaq 0x2f0(%rsp), %rdi
callq 0x295a0
leaq 0xe8(%rsp), %rdi
callq 0x33e80
movq (%r13), %rdi
movq 0x38(%rsp), %rsi
callq 0x59f72
leaq 0x778(%rsp), %rbx
movq %rbx, %rdi
movq %rax, %rsi
callq 0x4e96a
leaq 0x460(%rsp), %r14
leaq 0x100(%rsp), %rsi
movq %r14, %rdi
callq 0x28dd0
leaq 0x440(%rsp), %r15
leaq 0x228(%rsp), %rsi
movq %r15, %rdi
callq 0x28dd0
leaq 0x420(%rsp), %r12
leaq 0x208(%rsp), %rsi
movq %r12, %rdi
callq 0x28dd0
andl $0x0, 0x10(%rsp)
andl $0x0, 0x8(%rsp)
andl $0x0, (%rsp)
movl $0x1, 0x18(%rsp)
movq 0x40(%rsp), %rdi
movq %rbx, %rsi
movq %r14, %rdx
movq %r15, %rcx
movq %r12, %r8
xorl %r9d, %r9d
callq 0x4cf22
jmp 0x52a7e
movq 0x40(%rsp), %rax
cmpb $0x1, 0xb8(%rax)
jne 0x52819
movq 0xa8(%rdi), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x52683
movq 0x113921(%rip), %rdi    # 0x165f98
leaq 0x842ab(%rip), %rsi     # 0xd6929
callq 0x289f0
movq 0x30(%rsp), %rax
cmpl $0x0, 0x13ec(%rax)
jne 0x529e6
movq 0x30(%rsp), %rax
leaq 0x15c0(%rax), %rdi
movq 0x38(%rsp), %rsi
callq 0x3374c
movq (%rax), %rsi
addq $0x68, %rsi
leaq 0x540(%rsp), %rdi
callq 0x28dd0
leaq 0x330(%rsp), %rdi
leaq 0x540(%rsp), %rsi
callq 0x28dd0
leaq 0xe0(%rsp), %rdi
leaq 0x330(%rsp), %rsi
callq 0x9ed1e
leaq 0x330(%rsp), %rdi
callq 0x295a0
leaq 0x84243(%rip), %rdx     # 0xd6940
leaq 0x80(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
callq 0x334ed
leaq 0xc0(%rsp), %rdi
leaq 0x80(%rsp), %rdx
movq %rbx, %rsi
callq 0x34fc8
movq 0x30(%rsp), %rax
movq 0x1528(%rax), %rdx
decq %rdx
leaq 0x60(%rsp), %rdi
pushq $0x1
popq %rcx
movq %rbx, %rsi
callq 0x28a90
leaq 0x8b267(%rip), %rsi     # 0xdd9b7
leaq 0x60(%rsp), %rdi
callq 0x33990
testb %al, %al
je 0x5296d
movl %ebp, %r15d
movq 0x30(%rsp), %rax
movq 0x1528(%rax), %rdx
decq %rdx
leaq 0xa0(%rsp), %rdi
pushq $0x1
popq %rcx
movq %rbx, %rsi
callq 0x28a90
leaq 0x83456(%rip), %rsi     # 0xd5be4
leaq 0xa0(%rsp), %r14
movq %r14, %rdi
callq 0x33990
movl %eax, %ebp
movq %r14, %rdi
callq 0x295a0
leaq 0x60(%rsp), %rdi
callq 0x295a0
testb %bpl, %bpl
movl %r15d, %ebp
je 0x52977
leaq 0x8b1f2(%rip), %rdx     # 0xdd9b7
leaq 0xa0(%rsp), %rdi
movq %rbx, %rsi
callq 0x334ed
leaq 0x60(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
leaq 0x80(%rsp), %rdx
callq 0x334ce
leaq 0xc0(%rsp), %rdi
leaq 0x60(%rsp), %rbx
movq %rbx, %rsi
callq 0x28c40
movq %rbx, %rdi
callq 0x295a0
leaq 0xa0(%rsp), %rdi
jmp 0x52972
movq 0x38(%rsp), %rsi
callq 0x59f72
leaq 0x7a8(%rsp), %rbx
movq %rbx, %rdi
movq %rax, %rsi
callq 0x4e96a
leaq 0x4c0(%rsp), %r14
leaq 0x100(%rsp), %rsi
movq %r14, %rdi
callq 0x28dd0
leaq 0x4a0(%rsp), %r15
leaq 0x228(%rsp), %rsi
movq %r15, %rdi
callq 0x28dd0
leaq 0x480(%rsp), %r12
leaq 0x208(%rsp), %rsi
movq %r12, %rdi
callq 0x28dd0
andl $0x0, 0x18(%rsp)
andl $0x0, 0x10(%rsp)
andl $0x0, 0x8(%rsp)
andl $0x0, (%rsp)
movq 0x40(%rsp), %rdi
movq %rbx, %rsi
movq %r14, %rdx
movq %r15, %rcx
movq %r12, %r8
xorl %r9d, %r9d
callq 0x4cf22
jmp 0x52a7e
movq 0x1136e2(%rip), %rdi    # 0x165f98
leaq 0x83f7e(%rip), %rsi     # 0xd683b
addq $0x808, %rsp            # imm = 0x808
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x289f0
movq (%r13), %rdi
movq 0x38(%rsp), %rsi
callq 0x59f72
leaq 0x748(%rsp), %rbx
movq %rbx, %rdi
movq %rax, %rsi
callq 0x4e96a
leaq 0x400(%rsp), %r14
leaq 0x100(%rsp), %rsi
movq %r14, %rdi
callq 0x28dd0
leaq 0x3e0(%rsp), %r15
leaq 0x228(%rsp), %rsi
movq %r15, %rdi
callq 0x28dd0
leaq 0x3c0(%rsp), %r12
leaq 0x208(%rsp), %rsi
movq %r12, %rdi
callq 0x28dd0
andl $0x0, 0x18(%rsp)
andl $0x0, 0x10(%rsp)
andl $0x0, 0x8(%rsp)
andl $0x0, (%rsp)
movq 0x40(%rsp), %rdi
movq %rbx, %rsi
movq %r14, %rdx
movq %r15, %rcx
movq %r12, %r8
xorl %r9d, %r9d
callq 0x4cf22
jmp 0x52a7e
leaq 0x60(%rsp), %rdi
callq 0x295a0
cmpl $0x1, 0x2c(%rsp)
jne 0x529b2
leaq 0x310(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x28dd0
leaq 0x310(%rsp), %rsi
movq 0x40(%rsp), %rdi
callq 0x4cd7e
leaq 0x310(%rsp), %rdi
callq 0x295a0
leaq 0xc0(%rsp), %rdi
callq 0x295a0
leaq 0x80(%rsp), %rdi
callq 0x295a0
leaq 0xe0(%rsp), %rdi
callq 0x295a0
leaq 0x540(%rsp), %rdi
callq 0x295a0
movq (%r13), %rdi
movq 0x38(%rsp), %rsi
callq 0x59f72
leaq 0x7d8(%rsp), %rbx
movq %rbx, %rdi
movq %rax, %rsi
callq 0x4e96a
leaq 0x520(%rsp), %r14
leaq 0x100(%rsp), %rsi
movq %r14, %rdi
callq 0x28dd0
leaq 0x500(%rsp), %r15
leaq 0x228(%rsp), %rsi
movq %r15, %rdi
callq 0x28dd0
leaq 0x4e0(%rsp), %r12
leaq 0x208(%rsp), %rsi
movq %r12, %rdi
callq 0x28dd0
andl $0x0, 0x18(%rsp)
andl $0x0, 0x10(%rsp)
andl $0x0, (%rsp)
movl $0x1, 0x8(%rsp)
movq 0x40(%rsp), %rdi
movq %rbx, %rsi
movq %r14, %rdx
movq %r15, %rcx
movq %r12, %r8
xorl %r9d, %r9d
callq 0x4cf22
movq %r12, %rdi
callq 0x295a0
movq %r15, %rdi
callq 0x295a0
movq %r14, %rdi
callq 0x295a0
movq %rbx, %rdi
callq 0x495ac
leaq 0x540(%rsp), %rdi
leaq 0x1a8(%rsp), %rsi
pushq $0x8
popq %rdx
callq 0x29100
movq 0x540(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x560(%rsp,%rax)
je 0x52b62
movq 0x30(%rsp), %rax
cmpl $0x2, 0x1614(%rax)
jb 0x52b09
movq 0x1134b3(%rip), %rdi    # 0x165f98
leaq 0x83e74(%rip), %rsi     # 0xd6960
callq 0x289f0
leaq 0x1a8(%rsp), %rsi
movq %rax, %rdi
callq 0x28910
movq %rax, %rdi
callq 0x284a0
movq (%r13), %rdi
movq 0x38(%rsp), %rsi
callq 0x59f72
leaq 0x370(%rsp), %rdi
movq %rax, %rsi
callq 0x4e96a
movq (%r13), %rax
movl 0xb0(%rax), %r8d
leaq 0x370(%rsp), %rsi
movq 0x30(%rsp), %rbx
movq %rbx, %rdi
movl %ebp, %edx
xorl %ecx, %ecx
callq 0x787c4
leaq 0x370(%rsp), %rdi
callq 0x495ac
movq %rbx, %rdi
movl %ebp, %esi
callq 0x7bbe4
movq 0x30(%rsp), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x52bbc
movq 0x113421(%rip), %rdi    # 0x165f98
leaq 0x83df8(%rip), %rsi     # 0xd6976
callq 0x289f0
movq (%r13), %rcx
movl 0xb0(%rcx), %esi
movq %rax, %rdi
callq 0x286e0
leaq 0x83dee(%rip), %rsi     # 0xd698a
movq %rax, %rdi
callq 0x289f0
leaq 0x100(%rsp), %rsi
movq %rax, %rdi
callq 0x28910
movq %rax, %rdi
callq 0x284a0
movl %ebp, 0x120(%rsp)
movq %r13, 0x48(%rsp)
leaq 0xf0(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq 0x30(%rsp), %rax
cmpb $0x1, 0x1630(%rax)
jne 0x52dbd
movq 0x40(%rsp), %rax
movq 0x18(%rax), %r14
addq $0x8, %rax
movq %rax, 0x58(%rsp)
leaq 0x168(%rsp), %r12
leaq 0xc0(%rsp), %r15
leaq 0x80(%rsp), %r13
cmpq 0x58(%rsp), %r14
je 0x52dbd
cmpq $0x0, 0x90(%r14)
leaq 0x83d5e(%rip), %rsi     # 0xd6990
leaq 0x83d5d(%rip), %rax     # 0xd6996
cmoveq %rax, %rsi
leaq 0xe0(%rsp), %rdi
callq 0x29490
leaq 0x20(%r14), %rdx
leaq 0x128(%rsp), %rdi
leaq 0x100(%rsp), %rsi
callq 0x34fc8
movq %r12, %rbp
movq %r12, %rdi
movq 0x50(%rsp), %rsi
callq 0x9f56b
leaq 0xa0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x128(%rsp), %rsi
movq %rbp, %rdx
callq 0x4e6ed
leaq 0x60(%rsp), %rdi
movq %rbx, %rsi
leaq 0x830ca(%rip), %rdx     # 0xd5d67
callq 0x3336c
leaq 0x148(%rsp), %rbx
movq %rbx, %rdi
movl 0x2c(%rsp), %esi
callq 0x9f56b
movq %r15, %rdi
leaq 0x60(%rsp), %rsi
movq %rbx, %rdx
callq 0x4e6ed
movq %r13, %rdi
movq %r15, %rsi
leaq 0xe0(%rsp), %rdx
callq 0x334ce
leaq 0x188(%rsp), %rdi
movq %r13, %rsi
callq 0x28c40
movq %r13, %rdi
callq 0x295a0
movq %r15, %rdi
callq 0x295a0
leaq 0x148(%rsp), %rdi
callq 0x295a0
leaq 0x60(%rsp), %rdi
callq 0x295a0
leaq 0xa0(%rsp), %rdi
callq 0x295a0
movq %r12, %rdi
callq 0x295a0
leaq 0x128(%rsp), %rdi
callq 0x295a0
movq 0x48(%rsp), %rax
movq (%rax), %rax
movq 0xa8(%rax), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x52da0
movq 0x113247(%rip), %rdi    # 0x165f98
leaq 0x83c44(%rip), %rsi     # 0xd699c
callq 0x289f0
movq %rax, %rdi
leaq 0x188(%rsp), %rsi
callq 0x28910
movq %rax, %rdi
callq 0x284a0
movq 0x11321c(%rip), %rdi    # 0x165f98
leaq 0x83c2b(%rip), %rsi     # 0xd69ae
callq 0x289f0
movq %rax, %rdi
leaq 0x188(%rsp), %rsi
callq 0x28910
movq %rax, %rdi
callq 0x284a0
movq 0x188(%rsp), %rdi
callq 0x9f388
movq %r14, %rdi
callq 0x28700
movq %rax, %r14
jmp 0x52c18
movq 0x30(%rsp), %r15
cmpl $0x3, 0x1614(%r15)
jb 0x52df6
movq 0x1131c5(%rip), %rdi    # 0x165f98
leaq 0x83bf2(%rip), %rsi     # 0xd69cc
callq 0x289f0
leaq 0x1540(%r15), %rsi
movq %rax, %rdi
callq 0x28910
movq %rax, %rdi
callq 0x284a0
leaq 0x1540(%r15), %rbx
leaq 0x7c82c(%rip), %rsi     # 0xcf630
movq %rbx, %rdi
xorl %edx, %edx
callq 0x29510
cmpq $-0x1, %rax
movq 0x48(%rsp), %r14
movq 0x50(%rsp), %r12
movl 0x120(%rsp), %ebp
je 0x530f8
movq (%r14), %rax
movq 0xa8(%rax), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x52e4f
movq 0x113155(%rip), %rdi    # 0x165f98
leaq 0x83baa(%rip), %rsi     # 0xd69f4
callq 0x289f0
leaq 0x80(%rsp), %rdi
movq %r15, %rsi
movq 0x38(%rsp), %rdx
xorl %ecx, %ecx
callq 0x5a13a
movq (%r14), %rax
movq 0xa8(%rax), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x52eab
movq 0x113118(%rip), %rdi    # 0x165f98
leaq 0x83bcf(%rip), %rsi     # 0xd6a56
callq 0x289f0
leaq 0x80(%rsp), %rsi
movq %rax, %rdi
callq 0x28910
leaq 0x8a209(%rip), %rsi     # 0xdd0ac
movq %rax, %rdi
callq 0x289f0
movl 0x8(%r14), %edx
leaq 0x1e8(%rsp), %rdi
movq %r15, %rsi
xorl %ecx, %ecx
callq 0x6bd02
leaq 0x148(%rsp), %rdi
leaq 0x100(%rsp), %rsi
leaq 0x1e8(%rsp), %rdx
callq 0x5a115
leaq 0x82e82(%rip), %rdx     # 0xd5d67
leaq 0x168(%rsp), %rdi
leaq 0x148(%rsp), %rsi
callq 0x3336c
leaq 0x1c8(%rsp), %rdi
movl %r12d, %esi
callq 0x9f56b
leaq 0x128(%rsp), %rdi
leaq 0x168(%rsp), %rsi
leaq 0x1c8(%rsp), %rdx
callq 0x4e6ed
leaq 0x82e39(%rip), %rdx     # 0xd5d67
leaq 0xa0(%rsp), %rdi
leaq 0x128(%rsp), %rsi
callq 0x3336c
leaq 0x2d0(%rsp), %rdi
movl 0x2c(%rsp), %esi
callq 0x9f56b
leaq 0x60(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
leaq 0x2d0(%rsp), %rdx
callq 0x4e6ed
leaq 0x83a21(%rip), %rdx     # 0xd6996
leaq 0xc0(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x3336c
leaq 0x60(%rsp), %rdi
callq 0x295a0
leaq 0x2d0(%rsp), %rdi
callq 0x295a0
leaq 0xa0(%rsp), %rdi
callq 0x295a0
leaq 0x128(%rsp), %rdi
callq 0x295a0
leaq 0x1c8(%rsp), %rdi
callq 0x295a0
leaq 0x168(%rsp), %rdi
callq 0x295a0
leaq 0x148(%rsp), %rdi
callq 0x295a0
leaq 0x1e8(%rsp), %rdi
callq 0x295a0
movq (%r14), %rax
movq 0xa8(%rax), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x53050
movq 0x112f92(%rip), %rdi    # 0x165f98
leaq 0x83a84(%rip), %rsi     # 0xd6a91
callq 0x289f0
leaq 0xc0(%rsp), %rsi
movq %rax, %rdi
callq 0x28910
leaq 0x83a9b(%rip), %rsi     # 0xd6ac4
movq %rax, %rdi
callq 0x289f0
leaq 0x80(%rsp), %rsi
movq %rax, %rdi
callq 0x28910
leaq 0x8a064(%rip), %rsi     # 0xdd0ac
movq %rax, %rdi
callq 0x289f0
leaq 0x2b0(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x28dd0
leaq 0x290(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x28dd0
leaq 0x2b0(%rsp), %rdi
leaq 0x290(%rsp), %rsi
movl %r12d, %edx
callq 0x9e579
movl %eax, %ebx
leaq 0x290(%rsp), %rdi
callq 0x295a0
leaq 0x2b0(%rsp), %rdi
callq 0x295a0
movq (%r14), %rax
movq 0xa8(%rax), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x530e6
movq 0x112ed0(%rip), %rdi    # 0x165f98
leaq 0x83a04(%rip), %rsi     # 0xd6ad3
callq 0x289f0
movq %rax, %rdi
movl %ebx, %esi
callq 0x29290
movq %rax, %rdi
callq 0x284a0
leaq 0xc0(%rsp), %rdi
callq 0x295a0
jmp 0x53313
leaq 0x839e1(%rip), %rdx     # 0xd6ae0
leaq 0x1e8(%rsp), %rdi
movq %rbx, %rsi
callq 0x334ed
leaq 0x148(%rsp), %rdi
leaq 0x1e8(%rsp), %rsi
leaq 0x100(%rsp), %rdx
callq 0x334ce
leaq 0x8c4da(%rip), %rdx     # 0xdf60d
leaq 0x168(%rsp), %rdi
leaq 0x148(%rsp), %rsi
callq 0x3336c
leaq 0x128(%rsp), %rdi
leaq 0x168(%rsp), %rsi
leaq 0x1a8(%rsp), %rdx
callq 0x334ce
leaq 0x8397f(%rip), %rdx     # 0xd6aeb
leaq 0xa0(%rsp), %rdi
leaq 0x128(%rsp), %rsi
callq 0x3336c
leaq 0x60(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
leaq 0x100(%rsp), %rdx
callq 0x334ce
leaq 0x1c8(%rsp), %rdi
movl %r12d, %esi
callq 0x9f56b
leaq 0xc0(%rsp), %rdi
leaq 0x60(%rsp), %rsi
leaq 0x1c8(%rsp), %rdx
callq 0x4e6ed
leaq 0x83924(%rip), %rdx     # 0xd6af0
leaq 0x80(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x3336c
leaq 0xc0(%rsp), %rdi
callq 0x295a0
leaq 0x1c8(%rsp), %rdi
callq 0x295a0
leaq 0x60(%rsp), %rdi
callq 0x295a0
leaq 0xa0(%rsp), %rdi
callq 0x295a0
leaq 0x128(%rsp), %rdi
callq 0x295a0
leaq 0x168(%rsp), %rdi
callq 0x295a0
leaq 0x148(%rsp), %rdi
callq 0x295a0
leaq 0x1e8(%rsp), %rdi
callq 0x295a0
cmpb $0x1, 0x1630(%r15)
jne 0x53264
leaq 0x838a7(%rip), %rsi     # 0xd6afe
leaq 0x80(%rsp), %rdi
callq 0x29480
leaq 0x270(%rsp), %rdi
leaq 0x100(%rsp), %rsi
callq 0x28dd0
leaq 0x270(%rsp), %rdi
callq 0x9ec28
movl %eax, %ebx
leaq 0x270(%rsp), %rdi
callq 0x295a0
testl %ebx, %ebx
jne 0x532cf
leaq 0x82bf7(%rip), %rsi     # 0xd5e97
leaq 0x250(%rsp), %rdi
leaq 0x100(%rsp), %rdx
callq 0x3338b
leaq 0x250(%rsp), %rdi
callq 0x9f543
leaq 0x250(%rsp), %rdi
callq 0x295a0
cmpl $0x3, 0x1614(%r15)
jb 0x53304
movq 0x112cb8(%rip), %rdi    # 0x165f98
leaq 0x8381a(%rip), %rsi     # 0xd6b01
callq 0x289f0
leaq 0x80(%rsp), %rsi
movq %rax, %rdi
callq 0x28910
movq %rax, %rdi
callq 0x284a0
movq 0x80(%rsp), %rdi
callq 0x28880
movl %eax, %ebx
leaq 0x80(%rsp), %rdi
callq 0x295a0
leal 0x1(%rbx), %ecx
movq (%r14), %rax
movq 0xa8(%rax), %rax
movl 0x1614(%rax), %eax
cmpl $0x1, %ecx
ja 0x53747
cmpl $0x3, %eax
jb 0x53354
movq 0x112c50(%rip), %rdi    # 0x165f98
leaq 0x837e6(%rip), %rsi     # 0xd6b35
callq 0x289f0
leaq 0x90(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq 0x40(%rsp), %rax
movq 0x18(%rax), %rcx
addq $0x8, %rax
movq %rax, 0x40(%rsp)
movl 0x2c(%rsp), %eax
movq %rax, 0x248(%rsp)
leaq 0x80(%rsp), %r13
leaq 0x3a0(%rsp), %r15
cmpq 0x40(%rsp), %rcx
je 0x537a8
cmpq $0x0, 0x90(%rcx)
leaq 0x835e0(%rip), %rsi     # 0xd6990
leaq 0x835df(%rip), %rax     # 0xd6996
cmoveq %rax, %rsi
movq %rcx, %r14
movq %r13, %rdi
callq 0x29490
movq %r14, 0x120(%rsp)
leaq 0x20(%r14), %rdx
leaq 0x148(%rsp), %r14
movq %r14, %rdi
leaq 0x100(%rsp), %rsi
movq %rdx, 0x58(%rsp)
callq 0x34fc8
leaq 0x168(%rsp), %rdi
movq %r14, %rsi
leaq 0x82966(%rip), %rdx     # 0xd5d67
callq 0x3336c
leaq 0x1e8(%rsp), %r14
movq %r14, %rdi
movq 0x50(%rsp), %rsi
callq 0x9f56b
leaq 0x128(%rsp), %r12
movq %r12, %rdi
leaq 0x168(%rsp), %rsi
movq %r14, %rdx
callq 0x4e6ed
leaq 0xa0(%rsp), %rdi
movq %r12, %rsi
leaq 0x8291f(%rip), %rdx     # 0xd5d67
callq 0x3336c
leaq 0x1c8(%rsp), %r14
movq %r14, %rdi
movl 0x2c(%rsp), %esi
callq 0x9f56b
leaq 0x60(%rsp), %r12
movq %r12, %rdi
leaq 0xa0(%rsp), %rsi
movq %r14, %rdx
callq 0x4e6ed
leaq 0xc0(%rsp), %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x334ce
movq %r12, %rdi
callq 0x295a0
leaq 0x1c8(%rsp), %rdi
callq 0x295a0
leaq 0xa0(%rsp), %rdi
callq 0x295a0
leaq 0x128(%rsp), %rdi
callq 0x295a0
leaq 0x1e8(%rsp), %rdi
callq 0x295a0
leaq 0x168(%rsp), %rdi
callq 0x295a0
leaq 0x148(%rsp), %rdi
callq 0x295a0
movq 0x30(%rsp), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x53576
movq 0x112a9d(%rip), %rdi    # 0x165f98
leaq 0x83684(%rip), %rsi     # 0xd6b86
callq 0x289f0
movq %rax, %rdi
movq 0x58(%rsp), %rsi
callq 0x28910
movq %rax, %rdi
leaq 0x836ad(%rip), %rsi     # 0xd6bcb
callq 0x289f0
movq %rax, %rdi
leaq 0xc0(%rsp), %rsi
callq 0x28910
movq %rax, %rdi
leaq 0x83699(%rip), %rsi     # 0xd6bd6
callq 0x289f0
movq %rax, %rdi
movq 0x38(%rsp), %rsi
callq 0x286e0
movq %rax, %rdi
leaq 0x8368a(%rip), %rsi     # 0xd6be3
callq 0x289f0
movq %rax, %rdi
movq 0x248(%rsp), %rsi
callq 0x286e0
movq %rax, %rdi
callq 0x284a0
movq 0x48(%rsp), %rax
movq (%rax), %rdi
movl $0x90, %eax
addq %rax, %rdi
movq 0x38(%rsp), %rsi
callq 0x5a176
movq %rax, %rdi
movq 0x58(%rsp), %rsi
callq 0x5a194
movq %rax, %rbp
movq %r15, %r14
movl $0x160, %edi            # imm = 0x160
callq 0x28a10
movq %rax, %r12
movq %r14, %r15
movq %r14, %rdi
leaq 0xc0(%rsp), %rsi
callq 0x28dd0
movb $0x1, %bl
movq %r12, %rdi
movq %r15, %rsi
movq 0x30(%rsp), %rdx
xorl %ecx, %ecx
movq 0x38(%rsp), %r8
callq 0x47a50
movl 0x2c(%rsp), %eax
movl %eax, 0x60(%rsp)
movq %r12, 0x68(%rsp)
xorl %ebx, %ebx
movq %rbp, %rdi
leaq 0x60(%rsp), %rsi
callq 0x5d6de
movq %r14, %rdi
callq 0x295a0
movq 0x48(%rsp), %rax
movq (%rax), %rax
movq 0xa8(%rax), %rax
cmpl $0x3, 0x1614(%rax)
movq %r14, %r15
jb 0x53687
movq 0x112976(%rip), %rdi    # 0x165f98
leaq 0x835c7(%rip), %rsi     # 0xd6bf0
callq 0x289f0
movq %rax, %rdi
movq 0x38(%rsp), %rsi
callq 0x286e0
movq %rax, %rdi
leaq 0x86259(%rip), %rsi     # 0xd989e
callq 0x289f0
movq %rax, %r14
movq 0x48(%rsp), %rax
movq (%rax), %rdi
movl $0x90, %eax
addq %rax, %rdi
movq 0x38(%rsp), %rsi
callq 0x5a176
movq %rax, %rdi
movq 0x58(%rsp), %rsi
callq 0x5a1fa
movq %r14, %rdi
movq %rax, %rsi
callq 0x286e0
movq %rax, %rdi
callq 0x284a0
movq 0x30(%rsp), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x53725
movq 0x1128f8(%rip), %rdi    # 0x165f98
leaq 0x8355e(%rip), %rsi     # 0xd6c05
callq 0x289f0
movq %rax, %r12
movq 0x48(%rsp), %rax
movq (%rax), %rdi
movl $0x90, %eax
addq %rax, %rdi
movq 0x38(%rsp), %rsi
callq 0x5a176
movq %rax, %rdi
movq 0x58(%rsp), %rsi
callq 0x5a194
movl 0x2c(%rsp), %ecx
movl %ecx, 0xa0(%rsp)
movq %rax, %rdi
leaq 0xa0(%rsp), %rsi
callq 0x5a214
leaq 0x60(%rsp), %r14
movq (%rax), %rsi
movq %r14, %rdi
callq 0x49232
movq %r12, %rdi
movq %r14, %rsi
callq 0x28910
movq %rax, %rdi
leaq 0x83529(%rip), %rsi     # 0xd6c3f
callq 0x289f0
leaq 0x60(%rsp), %rdi
callq 0x295a0
leaq 0xc0(%rsp), %rdi
callq 0x295a0
movq 0x120(%rsp), %rdi
callq 0x28700
movq %rax, %rcx
jmp 0x53396
cmpl $0x3, %eax
jb 0x5378c
movq 0x112845(%rip), %rdi    # 0x165f98
leaq 0x834ee(%rip), %rsi     # 0xd6c48
callq 0x289f0
movq %rax, %rdi
movl %ebx, %esi
callq 0x29290
movq %rax, %rdi
callq 0x284a0
movq 0x112820(%rip), %rdi    # 0x165f98
leaq 0x834d5(%rip), %rsi     # 0xd6c54
callq 0x289f0
movq %rax, %rdi
callq 0x284a0
movq (%r15), %rdi
orl $-0x1, (%rsp)
pushq $0xe
popq %rcx
pushq $0x1
popq %r8
movl %ebp, %esi
xorl %edx, %edx
movq %rdi, %r9
callq 0x600c8
jmp 0x537ba
leaq 0x80(%rsp), %rdi
callq 0x295a0
movq 0x48(%rsp), %r14
movq (%r14), %rax
movq 0xa8(%rax), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x537e0
movq 0x1127c4(%rip), %rdi    # 0x165f98
leaq 0x834b1(%rip), %rsi     # 0xd6c8c
callq 0x289f0
leaq 0xe0(%rsp), %rdi
callq 0x295a0
leaq 0x540(%rsp), %rdi
callq 0x28230
leaq 0x188(%rsp), %rdi
callq 0x295a0
leaq 0x208(%rsp), %rdi
callq 0x295a0
leaq 0x1a8(%rsp), %rdi
callq 0x295a0
leaq 0x100(%rsp), %rdi
callq 0x295a0
leaq 0x228(%rsp), %rdi
callq 0x295a0
addq $0x808, %rsp            # imm = 0x808
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0xa0(%rsp), %rdi
jmp 0x53873
jmp 0x5387a
movq %rax, %r14
leaq 0x310(%rsp), %rdi
jmp 0x53873
jmp 0x5387a
movq %rax, %r14
leaq 0x60(%rsp), %rdi
callq 0x295a0
jmp 0x5387d
movq %rax, %r14
leaq 0xc0(%rsp), %rdi
callq 0x295a0
jmp 0x5388f
movq %rax, %r14
leaq 0x80(%rsp), %rdi
callq 0x295a0
jmp 0x538a1
movq %rax, %r14
leaq 0xe0(%rsp), %rdi
callq 0x295a0
leaq 0x540(%rsp), %rdi
callq 0x295a0
jmp 0x53e3f
movq %rax, %r14
leaq 0x330(%rsp), %rdi
jmp 0x538a9
movq %rax, %r14
jmp 0x538ae
movq %rax, %r14
leaq 0x420(%rsp), %rdi
callq 0x295a0
jmp 0x538e7
movq %rax, %r14
leaq 0x440(%rsp), %rdi
callq 0x295a0
jmp 0x538f9
movq %rax, %r14
leaq 0x460(%rsp), %rdi
callq 0x295a0
jmp 0x5391d
movq %rax, %r14
leaq 0x3c0(%rsp), %rdi
callq 0x295a0
jmp 0x5392d
movq %rax, %r14
leaq 0x778(%rsp), %rdi
jmp 0x53a23
movq %rax, %r14
leaq 0x3e0(%rsp), %rdi
callq 0x295a0
jmp 0x5393f
movq %rax, %r14
leaq 0x400(%rsp), %rdi
callq 0x295a0
jmp 0x53951
movq %rax, %r14
leaq 0x748(%rsp), %rdi
jmp 0x53a23
movq %rax, %r14
leaq 0x2f0(%rsp), %rdi
callq 0x295a0
jmp 0x53973
movq %rax, %r14
leaq 0xe8(%rsp), %rdi
callq 0x33e80
jmp 0x53e3f
jmp 0x53ca9
movq %rax, %r14
leaq 0x250(%rsp), %rdi
jmp 0x53e13
jmp 0x53ca9
movq %rax, %r14
leaq 0x4e0(%rsp), %rdi
callq 0x295a0
jmp 0x539b4
movq %rax, %r14
leaq 0x500(%rsp), %rdi
callq 0x295a0
jmp 0x539c6
movq %rax, %r14
leaq 0x520(%rsp), %rdi
callq 0x295a0
jmp 0x539d8
movq %rax, %r14
leaq 0x7d8(%rsp), %rdi
jmp 0x53a23
movq %rax, %r14
leaq 0x480(%rsp), %rdi
callq 0x295a0
jmp 0x539f7
movq %rax, %r14
leaq 0x4a0(%rsp), %rdi
callq 0x295a0
jmp 0x53a09
movq %rax, %r14
leaq 0x4c0(%rsp), %rdi
callq 0x295a0
jmp 0x53a1b
movq %rax, %r14
leaq 0x7a8(%rsp), %rdi
callq 0x495ac
jmp 0x53e3f
movq %rax, %r14
leaq 0x270(%rsp), %rdi
jmp 0x53e13
movq %rax, %r14
leaq 0xc0(%rsp), %rdi
callq 0x295a0
jmp 0x53a52
movq %rax, %r14
leaq 0x1c8(%rsp), %rdi
callq 0x295a0
jmp 0x53a64
movq %rax, %r14
leaq 0x60(%rsp), %rdi
callq 0x295a0
jmp 0x53a73
movq %rax, %r14
leaq 0xa0(%rsp), %rdi
callq 0x295a0
jmp 0x53a85
movq %rax, %r14
leaq 0x128(%rsp), %rdi
callq 0x295a0
leaq 0x168(%rsp), %rdi
callq 0x295a0
leaq 0x148(%rsp), %rdi
callq 0x295a0
leaq 0x1e8(%rsp), %rdi
jmp 0x53e20
movq %rax, %r14
jmp 0x53a92
movq %rax, %r14
jmp 0x53a9f
movq %rax, %r14
jmp 0x53aac
jmp 0x53e03
movq %rax, %r14
leaq 0x350(%rsp), %rdi
jmp 0x53e7b
movq %rax, %r14
jmp 0x53e80
movq %rax, %r14
leaq 0x290(%rsp), %rdi
callq 0x295a0
jmp 0x53afa
movq %rax, %r14
leaq 0x2b0(%rsp), %rdi
jmp 0x53cdd
movq %rax, %r14
leaq 0x60(%rsp), %rdi
callq 0x295a0
jmp 0x53b19
movq %rax, %r14
leaq 0x2d0(%rsp), %rdi
callq 0x295a0
jmp 0x53b2b
movq %rax, %r14
leaq 0xa0(%rsp), %rdi
callq 0x295a0
jmp 0x53b3d
movq %rax, %r14
leaq 0x128(%rsp), %rdi
callq 0x295a0
jmp 0x53b4f
movq %rax, %r14
leaq 0x1c8(%rsp), %rdi
callq 0x295a0
leaq 0x168(%rsp), %rdi
callq 0x295a0
leaq 0x148(%rsp), %rdi
callq 0x295a0
leaq 0x1e8(%rsp), %rdi
jmp 0x53e13
movq %rax, %r14
jmp 0x53b5c
movq %rax, %r14
jmp 0x53b69
movq %rax, %r14
jmp 0x53b76
jmp 0x53d0a
jmp 0x53e03
movq %rax, %r14
leaq 0x370(%rsp), %rdi
callq 0x495ac
jmp 0x53e32
jmp 0x53d0a
jmp 0x53ca9
movq %rax, %r14
leaq 0xe0(%rsp), %rdi
callq 0x295a0
jmp 0x53bd0
movq %rax, %r14
leaq 0x540(%rsp), %rdi
callq 0x295a0
jmp 0x53be2
movq %rax, %r14
leaq 0x188(%rsp), %rdi
jmp 0x53e54
movq %rax, %r14
jmp 0x53e59
movq %rax, %r14
jmp 0x53e66
movq %rax, %r14
leaq 0x540(%rsp), %rdi
callq 0x295a0
jmp 0x53c14
movq %rax, %r14
leaq 0x1a8(%rsp), %rdi
jmp 0x53e6e
jmp 0x53cbb
movq %rax, %r14
leaq 0x540(%rsp), %rdi
callq 0x295a0
jmp 0x53c3b
movq %rax, %r14
leaq 0x80(%rsp), %rdi
callq 0x295a0
jmp 0x53c4d
movq %rax, %r14
leaq 0x100(%rsp), %rdi
callq 0x295a0
jmp 0x53c5f
movq %rax, %r14
leaq 0x1a8(%rsp), %rdi
callq 0x295a0
jmp 0x53c71
movq %rax, %r14
leaq 0xe0(%rsp), %rdi
callq 0x295a0
leaq 0x208(%rsp), %rdi
callq 0x295a0
leaq 0x188(%rsp), %rdi
jmp 0x53e7b
movq %rax, %r14
jmp 0x53c7e
movq %rax, %r14
jmp 0x53c8b
jmp 0x53e03
jmp 0x53d0a
movq %rax, %r14
jmp 0x53e3f
jmp 0x53e03
jmp 0x53e08
movq %rax, %r14
jmp 0x53e73
movq %rax, %r14
jmp 0x53e32
jmp 0x53e08
jmp 0x53e08
movq %rax, %r14
leaq 0x60(%rsp), %rdi
callq 0x295a0
jmp 0x53e0b
movq %rax, %r14
jmp 0x53cfb
jmp 0x53d0a
movq %rax, %r14
leaq 0x60(%rsp), %rdi
callq 0x295a0
leaq 0x1c8(%rsp), %rdi
callq 0x295a0
jmp 0x53d36
movq %rax, %r14
jmp 0x53e18
jmp 0x53e08
movq %rax, %r14
jmp 0x53d6a
movq %rax, %r14
jmp 0x53df4
movq %rax, %r14
jmp 0x53d5d
movq %rax, %r14
jmp 0x53d50
movq %rax, %r14
jmp 0x53d43
movq %rax, %r14
leaq 0xa0(%rsp), %rdi
callq 0x295a0
leaq 0x128(%rsp), %rdi
callq 0x295a0
leaq 0x1e8(%rsp), %rdi
callq 0x295a0
leaq 0x168(%rsp), %rdi
callq 0x295a0
leaq 0x148(%rsp), %rdi
jmp 0x53e13
jmp 0x53e03
movq %rax, %r14
jmp 0x53dd6
movq %rax, %r14
jmp 0x53dc9
movq %rax, %r14
jmp 0x53dbc
movq %rax, %r14
jmp 0x53db2
movq %rax, %r14
jmp 0x53da5
movq %rax, %r14
leaq 0xc0(%rsp), %rdi
callq 0x295a0
leaq 0x148(%rsp), %rdi
callq 0x295a0
leaq 0x60(%rsp), %rdi
callq 0x295a0
leaq 0xa0(%rsp), %rdi
callq 0x295a0
leaq 0x168(%rsp), %rdi
callq 0x295a0
leaq 0x128(%rsp), %rdi
jmp 0x53e20
movq %rax, %r14
leaq 0x3a0(%rsp), %rdi
callq 0x295a0
testb %bl, %bl
je 0x53e0b
movl $0x160, %esi            # imm = 0x160
movq %r12, %rdi
callq 0x28a50
jmp 0x53e0b
movq %rax, %r14
jmp 0x53e25
movq %rax, %r14
leaq 0xc0(%rsp), %rdi
callq 0x295a0
leaq 0x80(%rsp), %rdi
callq 0x295a0
leaq 0xe0(%rsp), %rdi
callq 0x295a0
leaq 0x540(%rsp), %rdi
callq 0x28230
leaq 0x188(%rsp), %rdi
callq 0x295a0
leaq 0x208(%rsp), %rdi
callq 0x295a0
leaq 0x1a8(%rsp), %rdi
callq 0x295a0
leaq 0x100(%rsp), %rdi
callq 0x295a0
leaq 0x228(%rsp), %rdi
callq 0x295a0
movq %r14, %rdi
callq 0x292f0