// File: richardposner[P]BioNetFit2/src/code/Swarm.cpp
// Function: Swarm::initFit()
void Swarm::initFit () {  //razi: modified version
	int i, nModels=options.models.size();
	if (resumingSavedSwarm) {
		//razi: TODO modify this part
		cout << "Resuming fitting run. May need some modifcation to support multiple files. Enter a number..." << endl; cin>>i;

		/*
		for (auto particle = particleIterationCounter_.begin(); particle != particleIterationCounter_.end(); ++particle) {
			swarmComm->univMessageSender.push_back(toString(currentGeneration - 1));

			cout<<"Init fit, modify this line ...\n";
			for (unsigned int mid = 0; mid < options.models.size(); ++mid)
				swarmComm->sendToSwarm(0, particle->first, SEND_NUMFLIGHTS_TO_PARTICLE, false, swarmComm->univMessageSender);
			swarmComm->univMessageSender.clear();

			for (auto param = particleCurrParamSets_.at(particle->first).begin(); param != particleCurrParamSets_.at(particle->first).end(); ++param) {
				//cout << "Sending " << *param << " to " << particle->first << endl;
				swarmComm->univMessageSender.push_back(toString(*param));
			}
			swarmComm->sendToSwarm(0, particle->first, SEND_FINAL_PARAMS_TO_PARTICLE, false, swarmComm->univMessageSender);
			swarmComm->univMessageSender.clear();
		}

		// We need to set current generation to the iteration counter because the saved swarm
		// currentGeneration may not be accurate due to it changed between runGeneration() and
		// breedGenerationGA()
		if (options.fitType == "ga") {
			currentGeneration = currentGeneration - 1;
		}

		*/
	}
	else {
		if (options.verbosity >= 3) {
			cout << "Initializing fitting run" << endl;
		}

		// If we are running ODE, we want to generate a network and network reader.
		// The network file has parameters that are replaced in every generation,
		// and the network reader is used to read those network files

		//razi, generate subparticles, set particle id to 1;
		unsigned int ParID = 1; unsigned int subParId;

		Particle p = Particle(this, 1); bool genNetworkFlag = false;
		vector<subParticle *> sp(nModels);
		for (int mid=0; mid <nModels; mid++){
			if (options.models.at(mid)->getHasGenerateNetwork() && bootstrapCounter == 0) {

				genNetworkFlag = true;
				if (options.verbosity >= 3) {
					cout << "Creating dummy .bngl, running to get a .net file" << endl;
				}

				// First create a particle which will generate the network
				// and fill it with dummy params
				p.setModel(options.models[mid], mid);

				subParId= fcalcsubParID(ParID, mid, nModels); //razi: calc subparticle id from model index
				sp[mid] = new subParticle(&p, mid, subParId); //razi: generate subparticles
				//sp[mid]->setModel(mid);

			}
		}
		if (genNetworkFlag){
			p.generateParams();

			// Output model file with dummy parameters. This file will be used to generate
			// our initial network
			//razi, was options.model->outputModelWithParams(p.getParams(), options.jobOutputDir, "base.bngl", "", false, false, false, false, false);
			for (unsigned int mid = 0; mid < options.models.size(); ++mid){
				options.models[mid]->outputModelWithParams(p.getParams(mid), options.jobOutputDir, p.swarm_->getModelName(mid, false)+"_base.bngl", "", false, false, false, false, false);

				// Construct our simulation command and run the network generator

				string modelPath;
				if (options.jobOutputDir.substr(options.jobOutputDir.size()-1,1)=="/")   //razi added to avoid "//" in windows
					modelPath = options.jobOutputDir + p.swarm_->getModelName(mid, false)+"_base.bngl";
				else
					modelPath = options.jobOutputDir + "/" + p.swarm_->getModelName(mid, false)+"_base.bngl";

				string command = options.bngCommand + " --outdir " + options.jobOutputDir + " " + modelPath + " > " + options.jobOutputDir + "netgen_output 2>&1";
				if(options.verbosity>=1){
					cout << "Generating initial .net file with command: " << command << endl;
				}
				if (options.useCluster) {
					if(options.clusterSoftware == "slurm"){
						command = generateSlurmCommand(command, false, 1);
					}

				}

				int ret; ret= runCommand(command);
				if (ret != 0){
#ifdef PC_VER  //This is only for debugging in windows, the return value is 0 due to some error in BNG2.pl, later to be checked
					cout<<"Warning: Net file may not be generated properly: " <<command<<endl;
#else
					outputError("Error(32): Couldn't generate initial .net file with command: " + command + ". Quitting.");
#endif
				}else{
						// Now that we have a .net file, replace the full .bngl with a .bngl
					// containing ONLY action commands and a .net file loader. This is
					// used later to run our .net files.
					options.models[mid]->outputModelWithParams(p.getParams(mid), options.jobOutputDir, p.swarm_->getModelName(mid, false)+"_base.bngl", "", false, true, false, false, false);

					// Now store our .net file for later use
					//razi, was string netPath = options.jobOutputDir + "/base.net";
					string netPath = options.jobOutputDir + "/"  + p.swarm_->getModelName(mid, false)+"_base.net";
					//netPath=removeLastSlash(netPath);  //razi added for windows, already taken care of
					options.models[mid]->parseNet(netPath);
				}
			}
		}


/*
#if(defined(PC_VER))  //This is only for debugging in windows, the return value is 0 due to some error in BNG2.pl, later to be checked
		// random simulation is requested, just copy the exp file plus some noise into gdat files
		if (options.bngCommand.find("random")!=std::string::npos){
			ret=0;

		}
#endif
*/


		vector<double> params;
		int subPar = 0; //Raquel added to support subparticles
		for (unsigned int param = 0; param < getNumFreeParams(); ++param) {  //Razi: All free params tat appear in some models
			params.push_back(0);
		}

		for (int particle = 1; particle <= options.swarmSize; ++particle) {
			particleCurrParamSets_.insert(pair<int, vector<double> >(particle, params));

			//razi: init for each subparticle
			map<unsigned int, vector<double> > zmap;
			for (unsigned int mid = 0; mid < options.models.size(); ++mid){
				vector<double> zvec(options.models[mid]->getNumFreeParams());	//razi: dummy vector t contain free parameter values
				zmap.insert(make_pair(mid, zvec));
			}
			subparticleCurrParamSets_.insert(make_pair(particle, zmap));

		}


		if (options.fitType == "pso") {
			for (int particle = 1; particle <= options.swarmSize; ++particle) {
				particleParamVelocities_[particle] = params;
				particleBestParamSets_[particle] = params;
				particleWeights_[particle] = 0;
				for (int mid=0; mid<nModels; mid++)
					particleIterationCounter_[particle][mid] = 0;
			}
		}
		if (options.fitType == "pso" || "de") {
			int subPar = 0;

			for (int particle = 1; particle <= options.swarmSize; ++particle) {
				particleBestFits_[particle] = 0;

				//Raquel: added support for subparticles
				for(int mid = 0; (unsigned) mid < options.models.size(); mid++){
					subPar = fcalcsubParID(particle, mid, options.models.size());
					subparticleBestFits_[subPar] = 0;
				}//Raquel: added support for subparticles

			}
		}
		if(options.fitType == "de") {
			for (unsigned int island = 0; island <= options.numIslands; ++island) {
				islandToParticle_.push_back(vector<unsigned int>(options.swarmSize / options.numIslands,0));
			}
			for (int particle = 1; particle <= options.swarmSize; ++particle) {
				particleToIsland_.push_back(0);
				particleBestFitsByFit_.insert(pair<double, unsigned int>(0, particle));

				//Raquel added this loop to support subparticles
				for(unsigned int mid = 0; mid < options.models.size(); mid++){
					subPar = fcalcsubParID(particle, mid, options.models.size());
					subparticleBestFitsByFit_.insert(pair<double, unsigned int>(0, subPar));

				}//Raquel added this loop to support subparticles

			}
		}
		if (options.fitType == "sa") {
			for (int particle = 1; particle <= options.swarmSize; ++particle) {
				particleBestFitsByFit_.insert(pair<double, unsigned int>(0, particle));

				//Raquel added this loop to support subparticles
				for(unsigned int mid = 0; mid < options.models.size(); mid++){
					subPar = fcalcsubParID(particle, mid, options.models.size());
					subparticleBestFitsByFit_.insert(pair<double, unsigned int>(0, subPar));
					currentsubparticleBestFitsByFit_.insert(pair<double, unsigned int>(0, subPar));

				}//Raquel added this loop to support subparticles


			}


		}



	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa40, %rsp            # imm = 0xA40
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x820(%rbp)
addq $0x14c0, %rdi           # imm = 0x14C0
addq $0x100, %rdi            # imm = 0x100
callq 0x45170
movq %rax, %rcx
movq -0x820(%rbp), %rax
movl %ecx, -0x10(%rbp)
testb $0x1, 0x13f0(%rax)
je 0xec90a
movq 0x1e8676(%rip), %rdi    # 0x2d4f50
leaq 0xf49a5(%rip), %rsi     # 0x1e1286
callq 0x2ff50
movq %rax, %rdi
movq 0x1e86d8(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
movq 0x1e86bc(%rip), %rdi    # 0x2d4fb8
leaq -0xc(%rbp), %rsi
callq 0x310d0
jmp 0xee5d1
movq -0x820(%rbp), %rax
cmpl $0x3, 0x1614(%rax)
jb 0xec93c
movq 0x1e862f(%rip), %rdi    # 0x2d4f50
leaq 0xf49bb(%rip), %rsi     # 0x1e12e3
callq 0x2ff50
movq %rax, %rdi
movq 0x1e8691(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
movq -0x820(%rbp), %rsi
movl $0x1, -0x14(%rbp)
leaq -0xd8(%rbp), %rdi
movl $0x1, %edx
callq 0xa2f70
movb $0x0, -0xd9(%rbp)
movslq -0x10(%rbp), %rax
movq %rax, -0x830(%rbp)
leaq -0xf9(%rbp), %rdi
movq %rdi, -0x828(%rbp)
callq 0xb4de0
movq -0x830(%rbp), %rsi
movq -0x828(%rbp), %rdx
leaq -0xf8(%rbp), %rdi
callq 0x121a30
jmp 0xec99c
leaq -0xf9(%rbp), %rdi
callq 0xb9310
movl $0x0, -0x110(%rbp)
movl -0x110(%rbp), %eax
cmpl -0x10(%rbp), %eax
jge 0xecb83
movq -0x820(%rbp), %rdi
addq $0x15c0, %rdi           # imm = 0x15C0
movslq -0x110(%rbp), %rsi
callq 0x45190
movq %rax, -0x838(%rbp)
jmp 0xec9e4
movq -0x838(%rbp), %rax
movq (%rax), %rdi
callq 0x9cbc0
movb %al, -0x839(%rbp)
jmp 0xec9fb
movb -0x839(%rbp), %al
testb $0x1, %al
jne 0xeca0a
jmp 0xecb6d
movq -0x820(%rbp), %rax
cmpl $0x0, 0x13ec(%rax)
jne 0xecb6d
movq -0x820(%rbp), %rax
movb $0x1, -0xd9(%rbp)
cmpl $0x3, 0x1614(%rax)
jb 0xecaa2
movq 0x1e8514(%rip), %rdi    # 0x2d4f50
leaq 0xf48b9(%rip), %rsi     # 0x1e12fc
callq 0x2ff50
movq %rax, -0x848(%rbp)
jmp 0xeca51
movq -0x848(%rbp), %rdi
movq 0x1e8569(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xeca66
jmp 0xecaa2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0xf9(%rbp), %rdi
callq 0xb9310
jmp 0xee5c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xee5b7
movq -0x820(%rbp), %rdi
addq $0x15c0, %rdi           # imm = 0x15C0
movslq -0x110(%rbp), %rsi
callq 0x45b40
movq (%rax), %rsi
movl -0x110(%rbp), %edx
leaq -0xd8(%rbp), %rdi
callq 0xb14f0
jmp 0xecad3
movl -0x14(%rbp), %edi
movl -0x110(%rbp), %esi
movl -0x10(%rbp), %edx
callq 0x17d3a0
movl %eax, -0x84c(%rbp)
jmp 0xecaec
movl -0x84c(%rbp), %eax
movl %eax, -0x18(%rbp)
movl $0x20, %edi
callq 0x2f3b0
movq %rax, -0x858(%rbp)
jmp 0xecb08
movq -0x858(%rbp), %rdi
movl -0x110(%rbp), %edx
movl -0x18(%rbp), %ecx
leaq -0xd8(%rbp), %rsi
callq 0xb1630
jmp 0xecb26
movslq -0x110(%rbp), %rsi
leaq -0xf8(%rbp), %rdi
callq 0xb8cd0
movq -0x858(%rbp), %rcx
movq %rcx, (%rax)
jmp 0xecb6d
movq -0x858(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
movl $0x20, %esi
callq 0x2f2a0
jmp 0xee5b7
jmp 0xecb6f
movl -0x110(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x110(%rbp)
jmp 0xec9b2
testb $0x1, -0xd9(%rbp)
je 0xed8e8
leaq -0xd8(%rbp), %rdi
callq 0xa3640
jmp 0xecb9e
movl $0x0, -0x114(%rbp)
movq -0x820(%rbp), %rdi
movl -0x114(%rbp), %eax
movq %rax, -0x860(%rbp)
addq $0x14c0, %rdi           # imm = 0x14C0
addq $0x100, %rdi            # imm = 0x100
callq 0x45170
movq %rax, %rcx
movq -0x860(%rbp), %rax
cmpq %rcx, %rax
jae 0xed8e6
movq -0x820(%rbp), %rdi
addq $0x15c0, %rdi           # imm = 0x15C0
movl -0x114(%rbp), %eax
movl %eax, %esi
callq 0x45b40
movq (%rax), %rax
movq %rax, -0x868(%rbp)
movl -0x114(%rbp), %edx
leaq -0x148(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x121aa0
jmp 0xecc22
movq -0x820(%rbp), %rsi
addq $0x1520, %rsi           # imm = 0x1520
leaq -0x168(%rbp), %rdi
callq 0x2f300
jmp 0xecc3e
movq -0x30(%rbp), %rsi
movl -0x114(%rbp), %edx
leaq -0x1a8(%rbp), %rdi
xorl %ecx, %ecx
callq 0xec790
jmp 0xecc58
leaq 0xf46ce(%rip), %rdx     # 0x1e132d
leaq -0x188(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x441f0
jmp 0xecc74
leaq -0x1c9(%rbp), %rdi
movq %rdi, -0x870(%rbp)
callq 0x30a70
movq -0x870(%rbp), %rdx
leaq 0xec86b(%rip), %rsi     # 0x1d9500
leaq -0x1c8(%rbp), %rdi
callq 0x44470
jmp 0xecca3
movq -0x868(%rbp), %rdi
movq %rsp, %rax
movl $0x0, 0x18(%rax)
movl $0x0, 0x10(%rax)
movl $0x0, 0x8(%rax)
movl $0x0, (%rax)
leaq -0x148(%rbp), %rsi
leaq -0x168(%rbp), %rdx
leaq -0x188(%rbp), %rcx
leaq -0x1c8(%rbp), %r8
xorl %r9d, %r9d
callq 0x99b90
jmp 0xeccee
leaq -0x1c8(%rbp), %rdi
callq 0x311e8
leaq -0x1c9(%rbp), %rdi
callq 0x311c0
leaq -0x188(%rbp), %rdi
callq 0x311e8
leaq -0x1a8(%rbp), %rdi
callq 0x311e8
leaq -0x168(%rbp), %rdi
callq 0x311e8
leaq -0x148(%rbp), %rdi
callq 0x8de70
leaq -0x1f0(%rbp), %rdi
callq 0x2f880
movq -0x820(%rbp), %rdi
addq $0x1520, %rdi           # imm = 0x1520
movq %rdi, -0x878(%rbp)
callq 0x2f720
movq -0x878(%rbp), %rsi
movq %rax, %rdx
decq %rdx
leaq -0x210(%rbp), %rdi
movl $0x1, %ecx
callq 0x30b40
jmp 0xecd7c
leaq 0xf55d0(%rip), %rsi     # 0x1e2353
leaq -0x210(%rbp), %rdi
callq 0x44930
movb %al, -0x879(%rbp)
jmp 0xecd97
leaq -0x210(%rbp), %rdi
callq 0x311e8
movb -0x879(%rbp), %al
testb $0x1, %al
jne 0xecdb2
jmp 0xecf83
movq -0x820(%rbp), %rax
addq $0x1520, %rax           # imm = 0x1520
movq %rax, -0x888(%rbp)
movq -0x30(%rbp), %rsi
movl -0x114(%rbp), %edx
leaq -0x270(%rbp), %rdi
xorl %ecx, %ecx
callq 0xec790
jmp 0xecde0
movq -0x888(%rbp), %rsi
leaq -0x250(%rbp), %rdi
leaq -0x270(%rbp), %rdx
callq 0xb3380
jmp 0xecdfc
leaq 0xf452a(%rip), %rdx     # 0x1e132d
leaq -0x230(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x441f0
jmp 0xece18
leaq -0x1f0(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0x2fd80
leaq -0x230(%rbp), %rdi
callq 0x311e8
leaq -0x250(%rbp), %rdi
callq 0x311e8
leaq -0x270(%rbp), %rdi
callq 0x311e8
jmp 0xed0a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xecef5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xecee9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xecedd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xecec5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x311e8
leaq -0x1c9(%rbp), %rdi
callq 0x311c0
leaq -0x188(%rbp), %rdi
callq 0x311e8
leaq -0x1a8(%rbp), %rdi
callq 0x311e8
leaq -0x168(%rbp), %rdi
callq 0x311e8
leaq -0x148(%rbp), %rdi
callq 0x8de70
jmp 0xee5b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xed8d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x210(%rbp), %rdi
callq 0x311e8
jmp 0xed8d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xecf72
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x250(%rbp), %rdi
callq 0x311e8
leaq -0x270(%rbp), %rdi
callq 0x311e8
jmp 0xed8d5
movq -0x820(%rbp), %rsi
addq $0x1520, %rsi           # imm = 0x1520
leaq 0xf53bb(%rip), %rdx     # 0x1e2353
leaq -0x2d0(%rbp), %rdi
callq 0x447b0
jmp 0xecfa6
movq -0x30(%rbp), %rsi
movl -0x114(%rbp), %edx
leaq -0x2f0(%rbp), %rdi
xorl %ecx, %ecx
callq 0xec790
jmp 0xecfc0
leaq -0x2b0(%rbp), %rdi
leaq -0x2d0(%rbp), %rsi
leaq -0x2f0(%rbp), %rdx
callq 0x9c7d0
jmp 0xecfdc
leaq 0xf434a(%rip), %rdx     # 0x1e132d
leaq -0x290(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
callq 0x441f0
jmp 0xecff8
leaq -0x1f0(%rbp), %rdi
leaq -0x290(%rbp), %rsi
callq 0x2fd80
leaq -0x290(%rbp), %rdi
callq 0x311e8
leaq -0x2b0(%rbp), %rdi
callq 0x311e8
leaq -0x2f0(%rbp), %rdi
callq 0x311e8
leaq -0x2d0(%rbp), %rdi
callq 0x311e8
jmp 0xed0a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xed08f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xed083
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x2b0(%rbp), %rdi
callq 0x311e8
leaq -0x2f0(%rbp), %rdi
callq 0x311e8
leaq -0x2d0(%rbp), %rdi
callq 0x311e8
jmp 0xed8d5
movq -0x820(%rbp), %rsi
addq $0x1540, %rsi           # imm = 0x1540
leaq 0xee386(%rip), %rdx     # 0x1db43b
leaq -0x3d0(%rbp), %rdi
callq 0x447b0
jmp 0xed0c3
movq -0x820(%rbp), %rdx
addq $0x1520, %rdx           # imm = 0x1520
leaq -0x3b0(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0x44760
jmp 0xed0e6
leaq 0xf6fe2(%rip), %rdx     # 0x1e40cf
leaq -0x390(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0x441f0
jmp 0xed102
leaq -0x370(%rbp), %rdi
leaq -0x390(%rbp), %rsi
leaq -0x1f0(%rbp), %rdx
callq 0x44760
jmp 0xed11e
leaq 0xf4213(%rip), %rdx     # 0x1e1338
leaq -0x350(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0x441f0
jmp 0xed13a
movq -0x820(%rbp), %rdx
addq $0x1520, %rdx           # imm = 0x1520
leaq -0x330(%rbp), %rdi
leaq -0x350(%rbp), %rsi
callq 0x44760
jmp 0xed15d
leaq 0xf41d8(%rip), %rdx     # 0x1e133c
leaq -0x310(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x441f0
jmp 0xed179
leaq -0x330(%rbp), %rdi
callq 0x311e8
leaq -0x350(%rbp), %rdi
callq 0x311e8
leaq -0x370(%rbp), %rdi
callq 0x311e8
leaq -0x390(%rbp), %rdi
callq 0x311e8
leaq -0x3b0(%rbp), %rdi
callq 0x311e8
leaq -0x3d0(%rbp), %rdi
callq 0x311e8
movq -0x820(%rbp), %rax
cmpl $0x1, 0x1614(%rax)
jb 0xed304
movq 0x1e7d74(%rip), %rdi    # 0x2d4f50
leaq 0xf416c(%rip), %rsi     # 0x1e134f
callq 0x2ff50
movq %rax, -0x890(%rbp)
jmp 0xed1f1
movq -0x890(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x2f780
movq %rax, -0x898(%rbp)
jmp 0xed20d
movq -0x898(%rbp), %rdi
movq 0x1e7dad(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xed222
jmp 0xed304
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xed2dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xed2d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xed2c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xed2b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xed2ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x330(%rbp), %rdi
callq 0x311e8
leaq -0x350(%rbp), %rdi
callq 0x311e8
leaq -0x370(%rbp), %rdi
callq 0x311e8
leaq -0x390(%rbp), %rdi
callq 0x311e8
leaq -0x3b0(%rbp), %rdi
callq 0x311e8
leaq -0x3d0(%rbp), %rdi
callq 0x311e8
jmp 0xed8d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xed8c9
movq -0x820(%rbp), %rax
testb $0x1, 0x1631(%rax)
je 0xed3d4
movq -0x820(%rbp), %rdi
addq $0x1730, %rdi           # imm = 0x1730
leaq 0xe74c7(%rip), %rsi     # 0x1d47f4
callq 0x44930
movb %al, -0x899(%rbp)
jmp 0xed33a
movb -0x899(%rbp), %al
testb $0x1, %al
jne 0xed349
jmp 0xed3d2
leaq -0x410(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x2f300
jmp 0xed35e
movq -0x820(%rbp), %rsi
leaq -0x3f0(%rbp), %rdi
leaq -0x410(%rbp), %rdx
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0xee5f0
jmp 0xed382
leaq -0x310(%rbp), %rdi
leaq -0x3f0(%rbp), %rsi
callq 0x2fd80
leaq -0x3f0(%rbp), %rdi
callq 0x311e8
leaq -0x410(%rbp), %rdi
callq 0x311e8
jmp 0xed3d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x410(%rbp), %rdi
callq 0x311e8
jmp 0xed8c9
jmp 0xed3d4
leaq -0x438(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x2f300
jmp 0xed3e9
leaq -0x438(%rbp), %rdi
callq 0x17e3f0
movl %eax, -0x8a0(%rbp)
jmp 0xed3fd
movl -0x8a0(%rbp), %eax
movl %eax, -0x414(%rbp)
leaq -0x438(%rbp), %rdi
callq 0x311e8
cmpl $0x0, -0x414(%rbp)
je 0xed4f2
leaq 0xf3f52(%rip), %rsi     # 0x1e137b
leaq -0x478(%rbp), %rdi
leaq -0x310(%rbp), %rdx
callq 0x44240
jmp 0xed43e
leaq 0xf721f(%rip), %rdx     # 0x1e4664
leaq -0x458(%rbp), %rdi
leaq -0x478(%rbp), %rsi
callq 0x441f0
jmp 0xed45a
movq -0x820(%rbp), %rdi
leaq -0x458(%rbp), %rsi
callq 0xeada0
jmp 0xed46f
leaq -0x458(%rbp), %rdi
callq 0x311e8
leaq -0x478(%rbp), %rdi
callq 0x311e8
jmp 0xed89d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x438(%rbp), %rdi
callq 0x311e8
jmp 0xed8c9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xed4e1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x458(%rbp), %rdi
callq 0x311e8
leaq -0x478(%rbp), %rdi
callq 0x311e8
jmp 0xed8c9
movq -0x820(%rbp), %rdi
addq $0x15c0, %rdi           # imm = 0x15C0
movl -0x114(%rbp), %eax
movl %eax, %esi
callq 0x45b40
movq (%rax), %rax
movq %rax, -0x8a8(%rbp)
movl -0x114(%rbp), %edx
leaq -0x4a8(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x121aa0
jmp 0xed532
movq -0x820(%rbp), %rsi
addq $0x1520, %rsi           # imm = 0x1520
leaq -0x4c8(%rbp), %rdi
callq 0x2f300
jmp 0xed54e
movq -0x30(%rbp), %rsi
movl -0x114(%rbp), %edx
leaq -0x508(%rbp), %rdi
xorl %ecx, %ecx
callq 0xec790
jmp 0xed568
leaq 0xf3dbe(%rip), %rdx     # 0x1e132d
leaq -0x4e8(%rbp), %rdi
leaq -0x508(%rbp), %rsi
callq 0x441f0
jmp 0xed584
leaq -0x529(%rbp), %rdi
movq %rdi, -0x8b0(%rbp)
callq 0x30a70
movq -0x8b0(%rbp), %rdx
leaq 0xebf5b(%rip), %rsi     # 0x1d9500
leaq -0x528(%rbp), %rdi
callq 0x44470
jmp 0xed5b3
movq -0x8a8(%rbp), %rdi
movq %rsp, %rax
movl $0x0, 0x18(%rax)
movl $0x0, 0x10(%rax)
movl $0x0, 0x8(%rax)
movl $0x1, (%rax)
leaq -0x4a8(%rbp), %rsi
leaq -0x4c8(%rbp), %rdx
leaq -0x4e8(%rbp), %rcx
leaq -0x528(%rbp), %r8
xorl %r9d, %r9d
callq 0x99b90
jmp 0xed5fe
leaq -0x528(%rbp), %rdi
callq 0x311e8
leaq -0x529(%rbp), %rdi
callq 0x311c0
leaq -0x4e8(%rbp), %rdi
callq 0x311e8
leaq -0x508(%rbp), %rdi
callq 0x311e8
leaq -0x4c8(%rbp), %rdi
callq 0x311e8
leaq -0x4a8(%rbp), %rdi
callq 0x8de70
movq -0x820(%rbp), %rsi
addq $0x1520, %rsi           # imm = 0x1520
leaq 0xf4cf8(%rip), %rdx     # 0x1e2353
leaq -0x590(%rbp), %rdi
callq 0x447b0
jmp 0xed669
movq -0x30(%rbp), %rsi
movl -0x114(%rbp), %edx
leaq -0x5b0(%rbp), %rdi
xorl %ecx, %ecx
callq 0xec790
jmp 0xed683
leaq -0x570(%rbp), %rdi
leaq -0x590(%rbp), %rsi
leaq -0x5b0(%rbp), %rdx
callq 0x9c7d0
jmp 0xed69f
leaq 0xedbf5(%rip), %rdx     # 0x1db29b
leaq -0x550(%rbp), %rdi
leaq -0x570(%rbp), %rsi
callq 0x441f0
jmp 0xed6bb
leaq -0x570(%rbp), %rdi
callq 0x311e8
leaq -0x5b0(%rbp), %rdi
callq 0x311e8
leaq -0x590(%rbp), %rdi
callq 0x311e8
movq -0x820(%rbp), %rdi
addq $0x15c0, %rdi           # imm = 0x15C0
movl -0x114(%rbp), %eax
movl %eax, %esi
callq 0x45b40
movq (%rax), %rax
movq %rax, -0x8b8(%rbp)
leaq -0x5d0(%rbp), %rdi
leaq -0x550(%rbp), %rsi
callq 0x2f300
jmp 0xed719
movq -0x8b8(%rbp), %rdi
leaq -0x5d0(%rbp), %rsi
callq 0x998e0
jmp 0xed72e
leaq -0x5d0(%rbp), %rdi
callq 0x311e8
leaq -0x550(%rbp), %rdi
callq 0x311e8
jmp 0xed89d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xed7ec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xed7e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xed7d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xed7bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x528(%rbp), %rdi
callq 0x311e8
leaq -0x529(%rbp), %rdi
callq 0x311c0
leaq -0x4e8(%rbp), %rdi
callq 0x311e8
leaq -0x508(%rbp), %rdi
callq 0x311e8
leaq -0x4c8(%rbp), %rdi
callq 0x311e8
leaq -0x4a8(%rbp), %rdi
callq 0x8de70
jmp 0xed8c9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xed84f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xed843
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x570(%rbp), %rdi
callq 0x311e8
leaq -0x5b0(%rbp), %rdi
callq 0x311e8
leaq -0x590(%rbp), %rdi
callq 0x311e8
jmp 0xed8c9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xed88f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x5d0(%rbp), %rdi
callq 0x311e8
leaq -0x550(%rbp), %rdi
callq 0x311e8
jmp 0xed8c9
leaq -0x310(%rbp), %rdi
callq 0x311e8
leaq -0x1f0(%rbp), %rdi
callq 0x311e8
movl -0x114(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x114(%rbp)
jmp 0xecba8
leaq -0x310(%rbp), %rdi
callq 0x311e8
leaq -0x1f0(%rbp), %rdi
callq 0x311e8
jmp 0xee5b7
jmp 0xed8e8
leaq -0x5e8(%rbp), %rdi
callq 0xb2580
movl $0x0, -0x5ec(%rbp)
movl $0x0, -0x5f0(%rbp)
movq -0x820(%rbp), %rdi
movl -0x5f0(%rbp), %eax
movl %eax, -0x8c0(%rbp)
callq 0x121af0
movl %eax, -0x8bc(%rbp)
jmp 0xed928
movl -0x8c0(%rbp), %eax
movl -0x8bc(%rbp), %ecx
cmpl %ecx, %eax
jae 0xed982
movq $0x0, -0x5f8(%rbp)
leaq -0x5e8(%rbp), %rdi
leaq -0x5f8(%rbp), %rsi
callq 0xb2630
jmp 0xed958
jmp 0xed95a
movl -0x5f0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5f0(%rbp)
jmp 0xed908
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xee5ab
movl $0x1, -0x5fc(%rbp)
movq -0x820(%rbp), %rcx
movl -0x5fc(%rbp), %eax
cmpl 0x1620(%rcx), %eax
jg 0xedccd
movq -0x820(%rbp), %rax
addq $0x1400, %rax           # imm = 0x1400
movq %rax, -0x8c8(%rbp)
leaq -0x620(%rbp), %rdi
leaq -0x5fc(%rbp), %rsi
leaq -0x5e8(%rbp), %rdx
callq 0x121b60
jmp 0xed9d5
movq -0x8c8(%rbp), %rdi
leaq -0x620(%rbp), %rsi
callq 0x121b20
movb %dl, -0x8d1(%rbp)
movq %rax, -0x8d0(%rbp)
jmp 0xed9f7
movb -0x8d1(%rbp), %al
movq -0x8d0(%rbp), %rcx
movq %rcx, -0x630(%rbp)
movb %al, -0x628(%rbp)
leaq -0x620(%rbp), %rdi
callq 0x121ba0
leaq -0x660(%rbp), %rdi
callq 0xde640
movl $0x0, -0x664(%rbp)
movq -0x820(%rbp), %rdi
movl -0x664(%rbp), %eax
movq %rax, -0x8e0(%rbp)
addq $0x14c0, %rdi           # imm = 0x14C0
addq $0x100, %rdi            # imm = 0x100
callq 0x45170
movq %rax, %rcx
movq -0x8e0(%rbp), %rax
cmpq %rcx, %rax
jae 0xedc06
movq -0x820(%rbp), %rdi
addq $0x15c0, %rdi           # imm = 0x15C0
movl -0x664(%rbp), %eax
movl %eax, %esi
callq 0x45b40
movq (%rax), %rdi
callq 0x45b60
movl %eax, -0x8e4(%rbp)
jmp 0xeda98
movl -0x8e4(%rbp), %eax
movl %eax, %eax
movq %rax, -0x8f8(%rbp)
leaq -0x681(%rbp), %rdi
movq %rdi, -0x8f0(%rbp)
callq 0xb5b80
movq -0x8f8(%rbp), %rsi
movq -0x8f0(%rbp), %rdx
leaq -0x680(%rbp), %rdi
callq 0x121bc0
jmp 0xedad6
leaq -0x681(%rbp), %rdi
callq 0xbefe0
leaq -0x6a8(%rbp), %rdi
leaq -0x664(%rbp), %rsi
leaq -0x680(%rbp), %rdx
callq 0x121c70
jmp 0xedafe
leaq -0x660(%rbp), %rdi
leaq -0x6a8(%rbp), %rsi
callq 0x121c30
movb %dl, -0x901(%rbp)
movq %rax, -0x900(%rbp)
jmp 0xedb20
movb -0x901(%rbp), %al
movq -0x900(%rbp), %rcx
movq %rcx, -0x6b8(%rbp)
movb %al, -0x6b0(%rbp)
leaq -0x6a8(%rbp), %rdi
callq 0x121cb0
leaq -0x680(%rbp), %rdi
callq 0xb2660
movl -0x664(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x664(%rbp)
jmp 0xeda33
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x620(%rbp), %rdi
callq 0x121ba0
jmp 0xee5ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xedcbc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x681(%rbp), %rdi
callq 0xbefe0
jmp 0xedcbc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xedbf5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x6a8(%rbp), %rdi
callq 0x121cb0
leaq -0x680(%rbp), %rdi
callq 0xb2660
jmp 0xedcbc
movq -0x820(%rbp), %rax
addq $0x1460, %rax           # imm = 0x1460
movq %rax, -0x910(%rbp)
leaq -0x6f0(%rbp), %rdi
leaq -0x5fc(%rbp), %rsi
leaq -0x660(%rbp), %rdx
callq 0x121d10
jmp 0xedc36
movq -0x910(%rbp), %rdi
leaq -0x6f0(%rbp), %rsi
callq 0x121cd0
movb %dl, -0x919(%rbp)
movq %rax, -0x918(%rbp)
jmp 0xedc58
movb -0x919(%rbp), %al
movq -0x918(%rbp), %rcx
movq %rcx, -0x700(%rbp)
movb %al, -0x6f8(%rbp)
leaq -0x6f0(%rbp), %rdi
callq 0x121d50
leaq -0x660(%rbp), %rdi
callq 0xdeb00
movl -0x5fc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5fc(%rbp)
jmp 0xed98c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x6f0(%rbp), %rdi
callq 0x121d50
leaq -0x660(%rbp), %rdi
callq 0xdeb00
jmp 0xee5ab
movq -0x820(%rbp), %rdi
addq $0x14e0, %rdi           # imm = 0x14E0
leaq 0xf3d60(%rip), %rsi     # 0x1e1a42
callq 0x44930
movb %al, -0x91a(%rbp)
jmp 0xedcef
movb -0x91a(%rbp), %al
testb $0x1, %al
jne 0xedcfe
jmp 0xede88
movl $0x1, -0x704(%rbp)
movq -0x820(%rbp), %rcx
movl -0x704(%rbp), %eax
cmpl 0x1620(%rcx), %eax
jg 0xede86
movq -0x820(%rbp), %rdi
addq $0x1c90, %rdi           # imm = 0x1C90
movl -0x704(%rbp), %eax
movl %eax, -0x708(%rbp)
leaq -0x708(%rbp), %rsi
callq 0xd0e30
movq %rax, -0x928(%rbp)
jmp 0xedd50
movq -0x928(%rbp), %rdi
leaq -0x5e8(%rbp), %rsi
callq 0x121d70
jmp 0xedd65
movq -0x820(%rbp), %rdi
addq $0x1cc0, %rdi           # imm = 0x1CC0
movl -0x704(%rbp), %eax
movl %eax, -0x70c(%rbp)
leaq -0x70c(%rbp), %rsi
callq 0xd0e30
movq %rax, -0x930(%rbp)
jmp 0xedd94
movq -0x930(%rbp), %rdi
leaq -0x5e8(%rbp), %rsi
callq 0x121d70
jmp 0xedda9
movq -0x820(%rbp), %rdi
addq $0x1cf0, %rdi           # imm = 0x1CF0
movl -0x704(%rbp), %eax
movl %eax, -0x710(%rbp)
leaq -0x710(%rbp), %rsi
callq 0x121fc0
movq %rax, -0x938(%rbp)
jmp 0xeddd8
movq -0x938(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
movl $0x0, -0x714(%rbp)
movl -0x714(%rbp), %eax
cmpl -0x10(%rbp), %eax
jge 0xede70
movq -0x820(%rbp), %rdi
addq $0x1950, %rdi           # imm = 0x1950
movl -0x704(%rbp), %eax
movl %eax, -0x718(%rbp)
leaq -0x718(%rbp), %rsi
callq 0x1220a0
movq %rax, -0x940(%rbp)
jmp 0xede2a
movq -0x940(%rbp), %rdi
movl -0x714(%rbp), %eax
movl %eax, -0x71c(%rbp)
leaq -0x71c(%rbp), %rsi
callq 0x122180
movq %rax, -0x948(%rbp)
jmp 0xede52
movq -0x948(%rbp), %rax
movl $0x0, (%rax)
movl -0x714(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x714(%rbp)
jmp 0xeddf0
jmp 0xede72
movl -0x704(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x704(%rbp)
jmp 0xedd08
jmp 0xede88
movq -0x820(%rbp), %rdi
addq $0x14e0, %rdi           # imm = 0x14E0
leaq 0xf3ba5(%rip), %rsi     # 0x1e1a42
callq 0x44930
movb %al, -0x949(%rbp)
jmp 0xedeaa
movb -0x949(%rbp), %al
testb $0x1, %al
jne 0xedec1
jmp 0xedeb6
movb $0x1, %al
testb $0x1, %al
jne 0xedec1
jmp 0xee02a
movl $0x0, -0x720(%rbp)
movl $0x1, -0x724(%rbp)
movq -0x820(%rbp), %rcx
movl -0x724(%rbp), %eax
cmpl 0x1620(%rcx), %eax
jg 0xee028
movq -0x820(%rbp), %rdi
addq $0x1a20, %rdi           # imm = 0x1A20
movl -0x724(%rbp), %eax
movl %eax, -0x728(%rbp)
leaq -0x728(%rbp), %rsi
callq 0x121fc0
movq %rax, -0x958(%rbp)
jmp 0xedf1d
movq -0x958(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
movl $0x0, -0x72c(%rbp)
movq -0x820(%rbp), %rdi
movl -0x72c(%rbp), %eax
movq %rax, -0x960(%rbp)
addq $0x14c0, %rdi           # imm = 0x14C0
addq $0x100, %rdi            # imm = 0x100
callq 0x45170
movq %rax, %rcx
movq -0x960(%rbp), %rax
cmpq %rcx, %rax
jae 0xee012
movq -0x820(%rbp), %rdi
movl -0x724(%rbp), %eax
movl %eax, -0x96c(%rbp)
movl -0x72c(%rbp), %eax
movl %eax, -0x968(%rbp)
addq $0x15c0, %rdi           # imm = 0x15C0
callq 0x45170
movl -0x96c(%rbp), %edi
movl -0x968(%rbp), %esi
movl %eax, %edx
callq 0x17d3a0
movl %eax, -0x964(%rbp)
jmp 0xedfb5
movq -0x820(%rbp), %rdi
movl -0x964(%rbp), %eax
movl %eax, -0x720(%rbp)
addq $0x1a50, %rdi           # imm = 0x1A50
movl -0x720(%rbp), %eax
movl %eax, -0x730(%rbp)
leaq -0x730(%rbp), %rsi
callq 0x121fc0
movq %rax, -0x978(%rbp)
jmp 0xedff0
movq -0x978(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
movl -0x72c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x72c(%rbp)
jmp 0xedf35
jmp 0xee014
movl -0x724(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x724(%rbp)
jmp 0xeded5
jmp 0xee02a
movq -0x820(%rbp), %rdi
addq $0x14e0, %rdi           # imm = 0x14E0
leaq 0x1234bc(%rip), %rsi    # 0x2114fb
callq 0x44930
movb %al, -0x979(%rbp)
jmp 0xee04c
movb -0x979(%rbp), %al
testb $0x1, %al
jne 0xee05b
jmp 0xee343
movl $0x0, -0x734(%rbp)
movq -0x820(%rbp), %rcx
movl -0x734(%rbp), %eax
cmpl 0x16fc(%rcx), %eax
ja 0xee170
movq -0x820(%rbp), %rcx
movq %rcx, %rax
addq $0x1d38, %rax           # imm = 0x1D38
movq %rax, -0x998(%rbp)
movl 0x1620(%rcx), %eax
movl 0x16fc(%rcx), %ecx
xorl %edx, %edx
divl %ecx
movq %rax, -0x990(%rbp)
movl $0x0, -0x754(%rbp)
leaq -0x755(%rbp), %rdi
movq %rdi, -0x988(%rbp)
callq 0xb4e90
movq -0x990(%rbp), %rsi
movq -0x988(%rbp), %rcx
leaq -0x750(%rbp), %rdi
leaq -0x754(%rbp), %rdx
callq 0x122290
jmp 0xee0ec
movq -0x998(%rbp), %rdi
leaq -0x750(%rbp), %rsi
callq 0x122260
jmp 0xee101
leaq -0x750(%rbp), %rdi
callq 0xb2400
leaq -0x755(%rbp), %rdi
callq 0xb8c40
movl -0x734(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x734(%rbp)
jmp 0xee065
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xee15f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x750(%rbp), %rdi
callq 0xb2400
leaq -0x755(%rbp), %rdi
callq 0xb8c40
jmp 0xee5ab
movl $0x1, -0x75c(%rbp)
movq -0x820(%rbp), %rcx
movl -0x75c(%rbp), %eax
cmpl 0x1620(%rcx), %eax
jg 0xee341
movq -0x820(%rbp), %rdi
addq $0x1d20, %rdi           # imm = 0x1D20
movl $0x0, -0x760(%rbp)
leaq -0x760(%rbp), %rsi
callq 0x122310
jmp 0xee1b9
movq -0x820(%rbp), %rax
addq $0x1ab0, %rax           # imm = 0x1AB0
movq %rax, -0x9a0(%rbp)
movl $0x0, -0x774(%rbp)
leaq -0x770(%rbp), %rdi
leaq -0x774(%rbp), %rsi
leaq -0x75c(%rbp), %rdx
callq 0x122370
jmp 0xee1f3
movq -0x9a0(%rbp), %rdi
leaq -0x770(%rbp), %rsi
callq 0x122340
movq %rax, -0x9a8(%rbp)
jmp 0xee20f
movq -0x9a8(%rbp), %rax
movq %rax, -0x780(%rbp)
movl $0x0, -0x784(%rbp)
movq -0x820(%rbp), %rdi
movl -0x784(%rbp), %eax
movq %rax, -0x9b0(%rbp)
addq $0x14c0, %rdi           # imm = 0x14C0
addq $0x100, %rdi            # imm = 0x100
callq 0x45170
movq %rax, %rcx
movq -0x9b0(%rbp), %rax
cmpq %rcx, %rax
jae 0xee32b
movq -0x820(%rbp), %rdi
movl -0x75c(%rbp), %eax
movl %eax, -0x9bc(%rbp)
movl -0x784(%rbp), %eax
movl %eax, -0x9b8(%rbp)
addq $0x15c0, %rdi           # imm = 0x15C0
callq 0x45170
movl -0x9bc(%rbp), %edi
movl -0x9b8(%rbp), %esi
movl %eax, %edx
callq 0x17d3a0
movl %eax, -0x9b4(%rbp)
jmp 0xee2a7
movq -0x820(%rbp), %rax
movl -0x9b4(%rbp), %ecx
movl %ecx, -0x5ec(%rbp)
addq $0x1b10, %rax           # imm = 0x1B10
movq %rax, -0x9c8(%rbp)
movl $0x0, -0x79c(%rbp)
leaq -0x798(%rbp), %rdi
leaq -0x79c(%rbp), %rsi
leaq -0x5ec(%rbp), %rdx
callq 0x122370
jmp 0xee2ed
movq -0x9c8(%rbp), %rdi
leaq -0x798(%rbp), %rsi
callq 0x122340
movq %rax, -0x9d0(%rbp)
jmp 0xee309
movq -0x9d0(%rbp), %rax
movq %rax, -0x7a8(%rbp)
movl -0x784(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x784(%rbp)
jmp 0xee227
jmp 0xee32d
movl -0x75c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x75c(%rbp)
jmp 0xee17a
jmp 0xee343
movq -0x820(%rbp), %rdi
addq $0x14e0, %rdi           # imm = 0x14E0
leaq 0xe6089(%rip), %rsi     # 0x1d43e1
callq 0x44930
movb %al, -0x9d1(%rbp)
jmp 0xee365
movb -0x9d1(%rbp), %al
testb $0x1, %al
jne 0xee374
jmp 0xee585
movl $0x1, -0x7ac(%rbp)
movq -0x820(%rbp), %rcx
movl -0x7ac(%rbp), %eax
cmpl 0x1620(%rcx), %eax
jg 0xee583
movq -0x820(%rbp), %rax
addq $0x1ab0, %rax           # imm = 0x1AB0
movq %rax, -0x9e0(%rbp)
movl $0x0, -0x7c4(%rbp)
leaq -0x7c0(%rbp), %rdi
leaq -0x7c4(%rbp), %rsi
leaq -0x7ac(%rbp), %rdx
callq 0x122370
jmp 0xee3d1
movq -0x9e0(%rbp), %rdi
leaq -0x7c0(%rbp), %rsi
callq 0x122340
movq %rax, -0x9e8(%rbp)
jmp 0xee3ed
movq -0x9e8(%rbp), %rax
movq %rax, -0x7d0(%rbp)
movl $0x0, -0x7d4(%rbp)
movq -0x820(%rbp), %rdi
movl -0x7d4(%rbp), %eax
movq %rax, -0x9f0(%rbp)
addq $0x14c0, %rdi           # imm = 0x14C0
addq $0x100, %rdi            # imm = 0x100
callq 0x45170
movq %rax, %rcx
movq -0x9f0(%rbp), %rax
cmpq %rcx, %rax
jae 0xee56d
movq -0x820(%rbp), %rdi
movl -0x7ac(%rbp), %eax
movl %eax, -0x9fc(%rbp)
movl -0x7d4(%rbp), %eax
movl %eax, -0x9f8(%rbp)
addq $0x15c0, %rdi           # imm = 0x15C0
callq 0x45170
movl -0x9fc(%rbp), %edi
movl -0x9f8(%rbp), %esi
movl %eax, %edx
callq 0x17d3a0
movl %eax, -0x9f4(%rbp)
jmp 0xee485
movq -0x820(%rbp), %rax
movl -0x9f4(%rbp), %ecx
movl %ecx, -0x5ec(%rbp)
addq $0x1b10, %rax           # imm = 0x1B10
movq %rax, -0xa08(%rbp)
movl $0x0, -0x7ec(%rbp)
leaq -0x7e8(%rbp), %rdi
leaq -0x7ec(%rbp), %rsi
leaq -0x5ec(%rbp), %rdx
callq 0x122370
jmp 0xee4cb
movq -0xa08(%rbp), %rdi
leaq -0x7e8(%rbp), %rsi
callq 0x122340
movq %rax, -0xa10(%rbp)
jmp 0xee4e7
movq -0x820(%rbp), %rax
movq -0xa10(%rbp), %rcx
movq %rcx, -0x7f8(%rbp)
addq $0x1b70, %rax           # imm = 0x1B70
movq %rax, -0xa18(%rbp)
movl $0x0, -0x80c(%rbp)
leaq -0x808(%rbp), %rdi
leaq -0x80c(%rbp), %rsi
leaq -0x5ec(%rbp), %rdx
callq 0x122370
jmp 0xee52f
movq -0xa18(%rbp), %rdi
leaq -0x808(%rbp), %rsi
callq 0x122340
movq %rax, -0xa20(%rbp)
jmp 0xee54b
movq -0xa20(%rbp), %rax
movq %rax, -0x818(%rbp)
movl -0x7d4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7d4(%rbp)
jmp 0xee405
jmp 0xee56f
movl -0x7ac(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7ac(%rbp)
jmp 0xee37e
jmp 0xee585
leaq -0x5e8(%rbp), %rdi
callq 0xb2660
leaq -0xf8(%rbp), %rdi
callq 0xb2460
leaq -0xd8(%rbp), %rdi
callq 0x1223a0
jmp 0xee5d1
leaq -0x5e8(%rbp), %rdi
callq 0xb2660
leaq -0xf8(%rbp), %rdi
callq 0xb2460
leaq -0xd8(%rbp), %rdi
callq 0x1223a0
jmp 0xee5da
addq $0xa40, %rsp            # imm = 0xA40
popq %rbp
retq
movq -0x108(%rbp), %rdi
callq 0x30170
nopw %cs:(%rax,%rax)