// File: simonrharris[P]SKA/src/sk_type.cpp
// Function: typeKmerFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> const&)
int typeKmerFile(const std::string & queryfile, const std::string & profileFile, const std::vector < std::string > & subjectfiles)
{
	
	// Create the kmer map
	std::unordered_map < std::string, std::string > kmerMap;
	
	std::ifstream fileStream;

	if (openFileStream(queryfile, fileStream, false)){return 1;};

	int querykmersize;
	std::vector < std::string > querySampleNames;
	
	readKmerHeader(fileStream, querykmersize, querySampleNames);
	
	char base;
	char kmerbuffer[querykmersize*2/3];
	char asciibuffer[int(std::ceil(float(querySampleNames.size())/6))];
	std::vector < std::unordered_map < std::string, std::vector < int > > > profileMap (querySampleNames.size());
	std::vector < std::set < std::string > > novel ( querySampleNames.size());
	std::vector < std::set < std::string > > hasNs ( querySampleNames.size());
	std::vector < std::set < std::string > > hasgaps ( querySampleNames.size());
	std::vector < bool > uncertain ( querySampleNames.size(), false);

	while (fileStream.read(asciibuffer, sizeof(asciibuffer))){//read the ascii representation of the taxa
		std::string asciibits (asciibuffer, sizeof(asciibuffer));
		std::vector < bool > mybits;
		vectorbool_from_ascii(asciibits, mybits);//read the ascii representation of the taxa to a verctor of bools
		while (fileStream.peek()!='\n' && fileStream.get(base)){
			//base=std::toupper(base);
			fileStream.read(kmerbuffer, sizeof(kmerbuffer));
			std::string kmer (kmerbuffer, querykmersize*2/3);

			addKmerToStringMap(kmerMap, kmer, base, mybits, querySampleNames.size());

    	}
    	fileStream.ignore(256,'\n');//skip the end ofline character
    }
	fileStream.close();

	std::string header;
	
	int substringlength=(querykmersize*2)+1;

	for (int s = 0; s < subjectfiles.size(); ++s){

		std::vector < std::string > alleleNames;
		std::vector < float > bestsimilarity (querySampleNames.size(), 0);
		std::vector < float > bestid (querySampleNames.size(), 0);
		std::vector < int > Ncount (querySampleNames.size(), 0);
		std::vector < int > gapcount (querySampleNames.size(), 0);
		std::vector < std::vector < int > > bestMatches (querySampleNames.size());
		std::vector < std::string > bestSequences (querySampleNames.size());

		igzstream gzfileStream;

		int alleleNumber=0;

		if(openGzFileStream(subjectfiles[s], gzfileStream)){return 1;}

		while (gzfileStream.peek()!=EOF){

			std::string alleleName;
			std::string sequence;
			sequence.reserve(10000);

			if(readNextFastaSequence(gzfileStream, subjectfiles[s], alleleName, sequence)){return 1;}

			std::string::size_type found=alleleName.find_last_of("_");
			try {
			    stoi(alleleName.substr(found+1));
			}
			catch (...) {
				std::cout << "Error in " << subjectfiles[s] << std::endl;
			    std::cout << "Malformed alleles fasta file!" << std::endl << "Expecting an allele integer after the last underscore in the name. Got " << alleleName << std::endl;
			    return 1;
			}

			alleleNames.push_back(alleleName);

			std::vector < std::string > alleleSequence ( querySampleNames.size() , std::string ( sequence.length() , '-' ) );
			std::vector < std::vector < bool > > alleleCoverage ( querySampleNames.size() , std::vector < bool > ( sequence.length() , false ) );
				
			if (sequence.length()<substringlength){
				continue;
			}
			
			int i=0;

			for (std::string::iterator iti = sequence.begin(), end = sequence.end()-(substringlength-1); iti != end; ++iti, ++i){

				std::string kmer=sequence.substr(i,substringlength);
				
				bool isrev=reverseComplementIfMin(kmer);
				extractMiddleBase(kmer, base);
				if(ascii_codons(kmer)){return 1;}
				
				std::unordered_map < std::string, std::string >::iterator it = kmerMap.find(kmer);//check if the kmer is in the hash
				
				if ( it != kmerMap.end() ){//if the kmer is in the hash
					for (int k=0; k<querySampleNames.size(); ++k){
						if (it->second[k]!='-'){
							char querybase;
							if (isrev){
								querybase=complement(it->second[k]);
							}
							else {
								querybase=it->second[k];
							}
							for (int j=i; j<i+substringlength; ++j){
								alleleCoverage[k][j]=true;

								if (j==(i+querykmersize)){
									
									if (alleleSequence[k][j]=='-' or islower(alleleSequence[k][j])){
										alleleSequence[k][j]=querybase;
									}
									else if (querybase==base){
										//cout << "HERE" << std::endl;
										alleleSequence[k][j]=base;
									}
									else if (alleleSequence[k][j]!=base){
										//cout << querybase << " " << alleleSequence[k][j] << " " << base << std::endl;
										alleleSequence[k][j]='N';
									}
								}
								//else if ((j<=querykmersize || j>=(sequence.length()-querykmersize) || ( querybase!=sequence[i+querykmersize] && base_score[querybase]<4) ) && alleleSequence[k][j]=='-'){
								else if (alleleSequence[k][j]=='-'){
									alleleSequence[k][j]=tolower(sequence[j]);
								}
							}
						}
					}
				}
		
    		}

    		for (std::vector < std::string >::size_type k=0; k<querySampleNames.size(); ++k){

    			float matches=0.0;
    			float covered=0.0;
    			float Ns=0.0;
    			float gaps=0.0;
    			char base;
    			for (int i=0; i<sequence.length(); ++i){
    				//std::cout << i << " " << alleleSequence[k][i] << " " << sequence[i] << std::endl;
    				base=std::toupper(alleleSequence[k][i]);
    				if (alleleSequence[k][i]==sequence[i]){
    					matches++;
    				}
    				if (base==sequence[i]){
    					covered++;
    				}
    				else if (base=='N'){
    					Ns++;
    				}
    				else if (base=='-'){
    					gaps++;
    				}
    			}
    			float sampleid=(matches)/sequence.length();
    			float similarity=(Ns+covered)/sequence.length();
    			//std::cout  << alleleNumber << " " << sequence.length() << " " << matches << " " << covered << " " << sampleid << " " << Ns << " " << gaps << " " << bestid[k] << std::endl;

				if (sampleid>bestid[k] || (sampleid==bestid[k] && similarity>bestsimilarity[k])){
					bestMatches[k].clear();
					bestid[k]=sampleid;
					bestsimilarity[k]=similarity;
					Ncount[k]=Ns;
					gapcount[k]=gaps;
				}
				if (sampleid>0 && sampleid==bestid[k] && similarity==bestsimilarity[k]){
					bestMatches[k].push_back(alleleNumber);
					bestSequences[k]=alleleSequence[k];
				}
			}
			
    		alleleNumber++;
		}
 		gzfileStream.close();


 		for (int k=0; k<querySampleNames.size(); ++k){

 			int allele;
			std::string locus;
			//cout << querySampleNames[k];
	 		for (std::vector < int >::iterator it=bestMatches[k].begin(); it!=bestMatches[k].end(); ++it){
	 			//cout << "\t" << alleleNames[*it];
				std::string::size_type found=alleleNames[*it].find_last_of("_");
				if (found!=std::string::npos){
					locus=alleleNames[*it].substr(0,found);
					allele=stoi(alleleNames[*it].substr(found+1));
				}
				std::unordered_map < std::string, std::vector < int > >::iterator it2 = profileMap[k].find(locus);//check if the kmer is in the hash
				if ( it2 != profileMap[k].end() ){//if the kmer is not in the hash
					it2->second.push_back(allele);
					uncertain[k]=true;
				}
				else{
					std::vector < int > newLocus;
					newLocus.push_back(allele);
					profileMap[k].insert(std::make_pair(locus, newLocus));
				}
			}

			if ((bestsimilarity[k]!=1.0 || Ncount[k]>0) && bestid[k]>0){//if the allele sequence of the sample has Ns or isn't a perfect match to an allele in the file, print the allele sequence to a file
				if (bestsimilarity[k]!=1.0){
					novel[k].insert(locus);
				}
				if (Ncount[k]>0){
					hasNs[k].insert(locus);
				}
				if (gapcount[k]>0){
					hasgaps[k].insert(locus);
				}
				std::ofstream alignfile(querySampleNames[k]+"_"+locus+".fa");
				alignfile << ">" << querySampleNames[k] << "_" << locus << std::endl;
				alignfile << bestSequences[k] << std::endl;
				alignfile.close();
			}
			/*cout << ">" << querySampleNames[k] << "_" << locus << std::endl;
			cout << bestSequences[k] << std::endl;*/
			//cout << "\t" << bestid[k] << "\t" << Ncount[k] << "\t" << gapcount[k] << std::endl;
		}
	}


	if (profileFile!=""){

		std::vector < int > certainFiles;
		for (int k=0; k<querySampleNames.size(); ++k){
			if (novel[k].size()==0 && not uncertain[k]){
				certainFiles.push_back(k);
			}
		}

		if(openFileStream(profileFile, fileStream, false)){return 1;}

		std::string header;
		std::getline(fileStream, header);

		std::stringstream headerstream;
		headerstream << header;//convert the header to a stringstream
		std::string word;
		int i=0;
		int ST=-1;
		int cc=-1;
		std::map < std::string, int > alleles;
		int maxallelecolumn=0;

		while (std::getline(headerstream, word, '\t')){
			if (word=="ST"){
				ST=i;
				maxallelecolumn=i;
			}
			else if (word=="clonal_complex"){
				cc=i;
			}
			else {
				alleles[word]=i;
				maxallelecolumn=i;
			}
			++i;
		}

		if (ST==-1){
			std::cerr << "Error: Found no ST column in your profile file" << std::endl << std::endl;
			return 1;
		}

		if (alleles.size()!=profileMap[0].size()){
			std::cerr << "Error: Found " << alleles.size() << " alleles in your allele file and " << profileMap[0].size() << " alleles in your profile file" << std::endl << std::endl;
			return 1;
		}

		for (std::map < std::string, int >::iterator it=alleles.begin(); it!=alleles.end(); ++it){
			std::unordered_map < std::string, std::vector < int > >::iterator it2 = profileMap[0].find(it->first);//check if the kmer is in the hash
			if ( it2 == profileMap[0].end() ){//if the kmer is not in the hash
				std::cerr << "Error: Cannot find " << it->first << " in your profiles file" << std::endl << std::endl;
				return 1;
			}
		}

		std::cout << "Sample" << "\t";
		std::cout << "ST";
		for (std::map < std::string, int >::iterator it=alleles.begin(); it!=alleles.end(); ++it){
			std::cout << "\t" << it->first;
		}
		std::cout << std::endl;

		std::string line;
		int linenumber=0;
		int matches=0;
		while (std::getline(fileStream, line)){
			linenumber++;
			std::stringstream linestream;
			linestream << line;//convert the header to a stringstream
			std::vector < std::string > words;

			while (std::getline(linestream, word, '\t')){
				words.push_back(word);
			}

			if (words.size()<maxallelecolumn){
				std::cerr << "Malformed profile file on line " << linenumber << ". Expecting at least " << maxallelecolumn << " columns and found " << words.size() << std::endl << std::endl;
				return 1;
			}

			for (std::vector < int >::iterator k=certainFiles.begin(); k!=certainFiles.end(); ++k){
				bool perfectmatch=true;
				for (std::map < std::string, int >::iterator it=alleles.begin(); it!=alleles.end(); ++it){
					std::unordered_map < std::string, std::vector < int > >::iterator it2 = profileMap[*k].find(it->first);//check if the kmer is in the hash
					if ( it2 == profileMap[*k].end() ){//if the kmer is not in the hash
						perfectmatch=false;
						std::cerr << "Shouldn't be here";
					}
					else{
						if (std::stoi(words[it->second])!=it2->second[0]){
							perfectmatch=false;
							continue;
						}
					}
				}
				if (perfectmatch){
					std::vector < int > STs;
					STs.push_back(std::stoi(words[ST].substr(words[ST].find_last_of("_")+1)));
					profileMap[*k]["ST"]=STs;
				}
			}
			if (matches==certainFiles.size()){
				break;
			}
		}

		fileStream.close();
		

		for (int k=0; k<querySampleNames.size(); ++k){
			std::cout << querySampleNames[k] << "\t";
			if (profileMap[k]["ST"].size()==1){
				std::cout << profileMap[k]["ST"][0];
			}
			else {
				std::cout << "-";
			}
			for (std::map < std::string, int >::iterator it=alleles.begin(); it!=alleles.end(); ++it){
				std::string suffix="";
				std::set < std::string >::iterator it2 = novel[k].find(it->first);
				if ( it2 != novel[k].end() ){
					suffix="*";
				}
				it2 = hasNs[k].find(it->first);
				if ( it2 != hasNs[k].end() ){
					suffix+="N";
				}
				it2 = hasgaps[k].find(it->first);
				if ( it2 != hasgaps[k].end() ){
					suffix+="-";
				}

				if (profileMap[k][it->first].size()==0){
					std::cout << "\t" << "-";
				}
				else if (profileMap[k][it->first].size()==1){
					std::cout << "\t" << profileMap[k][it->first][0] << suffix;
				}
				else {
					std::cout << "\t";
					for (int i=0; i<profileMap[k][it->first].size()-1; ++i){
						std::cout << profileMap[k][it->first][i] << "/";
					}
					std::cout << profileMap[k][it->first][profileMap[k][it->first].size()-1] << suffix;
				}
			}
			std::cout << std::endl;
		}

	}
	else{
		std::set < std::string > allLoci;
		for (int k=0; k<querySampleNames.size(); ++k){
			for (std::unordered_map < std::string, std::vector < int > >::iterator it=profileMap[k].begin(); it!=profileMap[k].end(); ++it){
				allLoci.insert(it->first);
				//cout << it->first << std::endl;
			}
		}
		std::cout << "Sample";
		for (std::set < std::string >::iterator it=allLoci.begin(); it!=allLoci.end(); ++it){
			std::cout << "\t" << *it;
		}
		std::cout << std::endl;
		for (int k=0; k<querySampleNames.size(); ++k){
			std::cout << querySampleNames[k] << "\t";
			for (std::set < std::string >::iterator it=allLoci.begin(); it!=allLoci.end(); ++it){
				std::string suffix="";
				std::set < std::string >::iterator it2 = novel[k].find(*it);//check if the kmer is in the set
				if ( it2 != novel[k].end() ){
					suffix="*";
				}
				it2 = hasNs[k].find(*it);//check if the kmer is in the set
				if ( it2 != hasNs[k].end() ){
					suffix+="N";
				}
				it2 = hasgaps[k].find(*it);//check if the kmer is in the set
				if ( it2 != hasgaps[k].end() ){
					suffix+="-";
				}

				if (profileMap[k][*it].size()==0){
					std::cout << "-" << "\t";
				}
				else if (profileMap[k][*it].size()==1){
					std::cout << profileMap[k][*it][0] << suffix << "\t";
				}
				else {
					for (int i=0; i<profileMap[k][*it].size()-1; ++i){
						std::cout << profileMap[k][*it][i] << "/";
					}
					std::cout << profileMap[k][*it][profileMap[k][*it].size()-1] << suffix << "\t";
				}
			}
			std::cout << std::endl;
		}
	}

	return 0;
	
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1aa0, %rsp           # imm = 0x1AA0
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x1abf0
leaq -0x260(%rbp), %rdi
callq 0x65f0
jmp 0x3de5e
movq -0x10(%rbp), %rdi
leaq -0x260(%rbp), %rsi
xorl %edx, %edx
callq 0xa4f0
movl %eax, -0x1310(%rbp)
jmp 0x3de78
movl -0x1310(%rbp), %eax
cmpl $0x0, %eax
je 0x3dec7
movl $0x1, -0x4(%rbp)
movl $0x1, -0x270(%rbp)
jmp 0x42435
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x4245e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x42452
leaq -0x290(%rbp), %rdi
movq %rdi, -0x1318(%rbp)
callq 0x1ab40
movq -0x1318(%rbp), %rdx
leaq -0x260(%rbp), %rdi
leaq -0x274(%rbp), %rsi
callq 0xcd40
jmp 0x3def6
movl -0x274(%rbp), %eax
addl %eax, %eax
cltq
imulq $0x55555556, %rax, %rax # imm = 0x55555556
movq %rax, %rcx
shrq $0x3f, %rcx
shrq $0x20, %rax
addl %ecx, %eax
movq %rax, -0x1330(%rbp)
movq %rsp, %rcx
movq %rcx, -0x2a0(%rbp)
movq %rax, %rdx
addq $0xf, %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x1328(%rbp)
movq %rcx, %rsp
movq %rax, -0x2a8(%rbp)
leaq -0x290(%rbp), %rdi
callq 0xb670
movq %rax, %rdx
shrq %rdx
movl %eax, %ecx
andl $0x1, %ecx
orq %rdx, %rcx
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
cvtsi2ss %rax, %xmm1
movss %xmm1, -0x1320(%rbp)
testq %rax, %rax
movss %xmm0, -0x131c(%rbp)
js 0x3df94
movss -0x1320(%rbp), %xmm0
movss %xmm0, -0x131c(%rbp)
movss -0x131c(%rbp), %xmm0
movss 0x1b6d8(%rip), %xmm1    # 0x5967c
divss %xmm1, %xmm0
callq 0x33ed0
movss %xmm0, -0x1334(%rbp)
jmp 0x3dfb7
movss -0x1334(%rbp), %xmm0
cvttss2si %xmm0, %eax
movq %rax, -0x1358(%rbp)
movq %rax, %rdx
addq $0xf, %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x1350(%rbp)
movq %rcx, %rsp
movq %rax, -0x2b0(%rbp)
leaq -0x290(%rbp), %rdi
callq 0xb670
movq %rax, -0x1348(%rbp)
leaq -0x2c9(%rbp), %rdi
movq %rdi, -0x1340(%rbp)
callq 0x42480
movq -0x1348(%rbp), %rsi
movq -0x1340(%rbp), %rdx
leaq -0x2c8(%rbp), %rdi
callq 0x424a0
jmp 0x3e02e
leaq -0x2c9(%rbp), %rdi
callq 0x42510
leaq -0x290(%rbp), %rdi
callq 0xb670
movq %rax, -0x1368(%rbp)
leaq -0x2e9(%rbp), %rdi
movq %rdi, -0x1360(%rbp)
callq 0x42530
movq -0x1368(%rbp), %rsi
movq -0x1360(%rbp), %rdx
leaq -0x2e8(%rbp), %rdi
callq 0x42550
jmp 0x3e07c
leaq -0x2e9(%rbp), %rdi
callq 0x425c0
leaq -0x290(%rbp), %rdi
callq 0xb670
movq %rax, -0x1378(%rbp)
leaq -0x309(%rbp), %rdi
movq %rdi, -0x1370(%rbp)
callq 0x42530
movq -0x1378(%rbp), %rsi
movq -0x1370(%rbp), %rdx
leaq -0x308(%rbp), %rdi
callq 0x42550
jmp 0x3e0ca
leaq -0x309(%rbp), %rdi
callq 0x425c0
leaq -0x290(%rbp), %rdi
callq 0xb670
movq %rax, -0x1388(%rbp)
leaq -0x329(%rbp), %rdi
movq %rdi, -0x1380(%rbp)
callq 0x42530
movq -0x1388(%rbp), %rsi
movq -0x1380(%rbp), %rdx
leaq -0x328(%rbp), %rdi
callq 0x42550
jmp 0x3e118
leaq -0x329(%rbp), %rdi
callq 0x425c0
leaq -0x290(%rbp), %rdi
callq 0xb670
movq %rax, -0x1398(%rbp)
movb $0x0, -0x359(%rbp)
leaq -0x35a(%rbp), %rdi
movq %rdi, -0x1390(%rbp)
callq 0xf380
movq -0x1398(%rbp), %rsi
movq -0x1390(%rbp), %rcx
leaq -0x358(%rbp), %rdi
leaq -0x359(%rbp), %rdx
callq 0xffb0
jmp 0x3e174
leaq -0x35a(%rbp), %rdi
callq 0xf3e0
movq -0x1358(%rbp), %rdx
movq -0x1350(%rbp), %rsi
leaq -0x260(%rbp), %rdi
callq 0x6680
movq %rax, -0x13a0(%rbp)
jmp 0x3e1a3
movq -0x13a0(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x6670
movb %al, -0x13a1(%rbp)
jmp 0x3e1c1
movb -0x13a1(%rbp), %al
testb $0x1, %al
jne 0x3e1d0
jmp 0x3e531
leaq -0x381(%rbp), %rdi
movq %rdi, -0x13b0(%rbp)
callq 0x6910
movq -0x1350(%rbp), %rsi
movq -0x1358(%rbp), %rdx
movq -0x13b0(%rbp), %rcx
leaq -0x380(%rbp), %rdi
callq 0x65e0
jmp 0x3e206
leaq -0x381(%rbp), %rdi
callq 0x65a0
leaq -0x3b0(%rbp), %rdi
movq %rdi, -0x13b8(%rbp)
callq 0x1acc0
movq -0x13b8(%rbp), %rsi
leaq -0x380(%rbp), %rdi
callq 0xbd50
jmp 0x3e23a
jmp 0x3e23c
leaq -0x260(%rbp), %rdi
callq 0x61c0
movl %eax, -0x13bc(%rbp)
jmp 0x3e250
movl -0x13bc(%rbp), %ecx
xorl %eax, %eax
cmpl $0xa, %ecx
movb %al, -0x13bd(%rbp)
je 0x3e2ab
leaq -0x260(%rbp), %rdi
leaq -0x291(%rbp), %rsi
callq 0x6720
movq %rax, -0x13c8(%rbp)
jmp 0x3e27f
movq -0x13c8(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x6670
movb %al, -0x13c9(%rbp)
jmp 0x3e29d
movb -0x13c9(%rbp), %al
movb %al, -0x13bd(%rbp)
jmp 0x3e2ab
movb -0x13bd(%rbp), %al
testb $0x1, %al
jne 0x3e2ba
jmp 0x3e4df
movq -0x1330(%rbp), %rdx
movq -0x1328(%rbp), %rsi
leaq -0x260(%rbp), %rdi
callq 0x6680
jmp 0x3e2d6
movl -0x274(%rbp), %eax
addl %eax, %eax
cltq
imulq $0x55555556, %rax, %rax # imm = 0x55555556
movq %rax, %rcx
shrq $0x3f, %rcx
shrq $0x20, %rax
addl %ecx, %eax
cltq
movq %rax, -0x13e0(%rbp)
leaq -0x3d1(%rbp), %rdi
movq %rdi, -0x13d8(%rbp)
callq 0x6910
movq -0x1328(%rbp), %rsi
movq -0x13e0(%rbp), %rdx
movq -0x13d8(%rbp), %rcx
leaq -0x3d0(%rbp), %rdi
callq 0x65e0
jmp 0x3e333
leaq -0x3d1(%rbp), %rdi
callq 0x65a0
movsbl -0x291(%rbp), %eax
movl %eax, -0x13e4(%rbp)
leaq -0x290(%rbp), %rdi
callq 0xb670
movl -0x13e4(%rbp), %edx
movl %eax, %r8d
leaq -0x58(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
leaq -0x3b0(%rbp), %rcx
callq 0x3db70
jmp 0x3e37a
leaq -0x3d0(%rbp), %rdi
callq 0x6a08
jmp 0x3e23c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x42427
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x2c9(%rbp), %rdi
callq 0x42510
jmp 0x42427
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x2e9(%rbp), %rdi
callq 0x425c0
jmp 0x4241b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x309(%rbp), %rdi
callq 0x425c0
jmp 0x4240f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x329(%rbp), %rdi
callq 0x425c0
jmp 0x42403
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x35a(%rbp), %rdi
callq 0xf3e0
jmp 0x423f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x423eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x381(%rbp), %rdi
callq 0x65a0
jmp 0x423eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x3e514
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x3d1(%rbp), %rdi
callq 0x65a0
jmp 0x3e514
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x3d0(%rbp), %rdi
callq 0x6a08
jmp 0x3e514
leaq -0x260(%rbp), %rdi
movl $0x100, %esi            # imm = 0x100
movl $0xa, %edx
callq 0x6340
jmp 0x3e4f7
leaq -0x3b0(%rbp), %rdi
callq 0xf720
leaq -0x380(%rbp), %rdi
callq 0x6a08
jmp 0x3e180
leaq -0x3b0(%rbp), %rdi
callq 0xf720
leaq -0x380(%rbp), %rdi
callq 0x6a08
jmp 0x423eb
leaq -0x260(%rbp), %rdi
callq 0x60f0
jmp 0x3e53f
leaq -0x3f8(%rbp), %rdi
callq 0x6730
movl -0x274(%rbp), %eax
shll %eax
addl $0x1, %eax
movl %eax, -0x3fc(%rbp)
movl $0x0, -0x400(%rbp)
movslq -0x400(%rbp), %rax
movq %rax, -0x13f0(%rbp)
movq -0x20(%rbp), %rdi
callq 0xb670
movq %rax, %rcx
movq -0x13f0(%rbp), %rax
cmpq %rcx, %rax
jae 0x402e6
leaq -0x418(%rbp), %rdi
callq 0x1ab40
leaq -0x290(%rbp), %rdi
callq 0xb670
movq %rax, -0x1400(%rbp)
movl $0x0, -0x434(%rbp)
leaq -0x435(%rbp), %rdi
movq %rdi, -0x13f8(%rbp)
callq 0x425e0
movq -0x1400(%rbp), %rsi
movq -0x13f8(%rbp), %rcx
leaq -0x430(%rbp), %rdi
leaq -0x434(%rbp), %rdx
callq 0x42600
jmp 0x3e5ef
leaq -0x435(%rbp), %rdi
callq 0x42680
leaq -0x290(%rbp), %rdi
callq 0xb670
movq %rax, -0x1410(%rbp)
movl $0x0, -0x454(%rbp)
leaq -0x455(%rbp), %rdi
movq %rdi, -0x1408(%rbp)
callq 0x425e0
movq -0x1410(%rbp), %rsi
movq -0x1408(%rbp), %rcx
leaq -0x450(%rbp), %rdi
leaq -0x454(%rbp), %rdx
callq 0x42600
jmp 0x3e64e
leaq -0x455(%rbp), %rdi
callq 0x42680
leaq -0x290(%rbp), %rdi
callq 0xb670
movq %rax, -0x1420(%rbp)
movl $0x0, -0x474(%rbp)
leaq -0x475(%rbp), %rdi
movq %rdi, -0x1418(%rbp)
callq 0x1a8f0
movq -0x1420(%rbp), %rsi
movq -0x1418(%rbp), %rcx
leaq -0x470(%rbp), %rdi
leaq -0x474(%rbp), %rdx
callq 0x1a910
jmp 0x3e6ad
leaq -0x475(%rbp), %rdi
callq 0x1a990
leaq -0x290(%rbp), %rdi
callq 0xb670
movq %rax, -0x1430(%rbp)
movl $0x0, -0x494(%rbp)
leaq -0x495(%rbp), %rdi
movq %rdi, -0x1428(%rbp)
callq 0x1a8f0
movq -0x1430(%rbp), %rsi
movq -0x1428(%rbp), %rcx
leaq -0x490(%rbp), %rdi
leaq -0x494(%rbp), %rdx
callq 0x1a910
jmp 0x3e70c
leaq -0x495(%rbp), %rdi
callq 0x1a990
leaq -0x290(%rbp), %rdi
callq 0xb670
movq %rax, -0x1440(%rbp)
leaq -0x4b1(%rbp), %rdi
movq %rdi, -0x1438(%rbp)
callq 0x242a0
movq -0x1440(%rbp), %rsi
movq -0x1438(%rbp), %rdx
leaq -0x4b0(%rbp), %rdi
callq 0x426a0
jmp 0x3e75a
leaq -0x4b1(%rbp), %rdi
callq 0x24340
leaq -0x290(%rbp), %rdi
callq 0xb670
movq %rax, -0x1450(%rbp)
leaq -0x4d1(%rbp), %rdi
movq %rdi, -0x1448(%rbp)
callq 0xfdc0
movq -0x1450(%rbp), %rsi
movq -0x1448(%rbp), %rdx
leaq -0x4d0(%rbp), %rdi
callq 0x42710
jmp 0x3e7a8
leaq -0x4d1(%rbp), %rdi
callq 0xfef0
leaq -0x778(%rbp), %rdi
callq 0x92d0
jmp 0x3e7c2
movl $0x0, -0x77c(%rbp)
movq -0x20(%rbp), %rdi
movslq -0x400(%rbp), %rsi
callq 0xf2d0
movq %rax, %rdi
leaq -0x778(%rbp), %rsi
movl $0x1, %edx
callq 0xa5e0
movl %eax, -0x1454(%rbp)
jmp 0x3e7f8
movl -0x1454(%rbp), %eax
cmpl $0x0, %eax
je 0x3e91d
movl $0x1, -0x4(%rbp)
movl $0x1, -0x270(%rbp)
jmp 0x401fb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x435(%rbp), %rdi
callq 0x42680
jmp 0x402d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x455(%rbp), %rdi
callq 0x42680
jmp 0x402c9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x475(%rbp), %rdi
callq 0x1a990
jmp 0x402bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x495(%rbp), %rdi
callq 0x1a990
jmp 0x402b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x4b1(%rbp), %rdi
callq 0x24340
jmp 0x402a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x4d1(%rbp), %rdi
callq 0xfef0
jmp 0x40299
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x4028d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x40281
jmp 0x3e91f
leaq -0x5f0(%rbp), %rdi
callq 0x61c0
movl %eax, -0x1458(%rbp)
jmp 0x3e933
movl -0x1458(%rbp), %eax
cmpl $-0x1, %eax
je 0x3fa0e
leaq -0x7a0(%rbp), %rdi
callq 0x6730
leaq -0x7c0(%rbp), %rdi
movq %rdi, -0x1460(%rbp)
callq 0x6730
movq -0x1460(%rbp), %rdi
movl $0x2710, %esi           # imm = 0x2710
callq 0x6810
jmp 0x3e974
movq -0x20(%rbp), %rdi
movslq -0x400(%rbp), %rsi
callq 0xf2d0
movq %rax, %rsi
leaq -0x778(%rbp), %rdi
leaq -0x7a0(%rbp), %rdx
leaq -0x7c0(%rbp), %rcx
callq 0x84b0
movl %eax, -0x1464(%rbp)
jmp 0x3e9a9
movl -0x1464(%rbp), %eax
cmpl $0x0, %eax
je 0x3e9e1
movl $0x1, -0x4(%rbp)
movl $0x1, -0x270(%rbp)
jmp 0x3f996
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x3f9f1
leaq 0x1baad(%rip), %rsi     # 0x5a495
leaq -0x7a0(%rbp), %rdi
movq %rdi, -0x1478(%rbp)
movq $-0x1, %rdx
movq %rdx, -0x1470(%rbp)
callq 0x64f0
movq -0x1478(%rbp), %rsi
movq -0x1470(%rbp), %rcx
movq %rax, -0x7c8(%rbp)
movq -0x7c8(%rbp), %rdx
incq %rdx
leaq -0x7e8(%rbp), %rdi
callq 0x6550
jmp 0x3ea36
xorl %eax, %eax
movl %eax, %esi
leaq -0x7e8(%rbp), %rdi
movl $0xa, %edx
callq 0x2dfe0
jmp 0x3ea4d
leaq -0x7e8(%rbp), %rdi
callq 0x6a08
jmp 0x3ebb5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x3ea90
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x7e8(%rbp), %rdi
callq 0x6a08
movq -0x268(%rbp), %rdi
callq 0x6200
movq 0x3a505(%rip), %rdi     # 0x78fa8
leaq 0x1b9ed(%rip), %rsi     # 0x5a497
callq 0x6520
movq %rax, -0x1480(%rbp)
jmp 0x3eab8
movq -0x20(%rbp), %rdi
movslq -0x400(%rbp), %rsi
callq 0xf2d0
movq -0x1480(%rbp), %rdi
movq %rax, %rsi
callq 0x64d0
movq %rax, -0x1488(%rbp)
jmp 0x3eae0
movq -0x1488(%rbp), %rdi
movq 0x3a4a2(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x3eaf5
movq 0x3a4ac(%rip), %rdi     # 0x78fa8
leaq 0x1b99e(%rip), %rsi     # 0x5a4a1
callq 0x6520
movq %rax, -0x1490(%rbp)
jmp 0x3eb11
movq -0x1490(%rbp), %rdi
movq 0x3a471(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x1498(%rbp)
jmp 0x3eb2d
movq -0x1498(%rbp), %rdi
leaq 0x1b984(%rip), %rsi     # 0x5a4bf
callq 0x6520
movq %rax, -0x14a0(%rbp)
jmp 0x3eb49
movq -0x14a0(%rbp), %rdi
leaq -0x7a0(%rbp), %rsi
callq 0x64d0
movq %rax, -0x14a8(%rbp)
jmp 0x3eb65
movq -0x14a8(%rbp), %rdi
movq 0x3a41d(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x3eb7a
movl $0x1, -0x4(%rbp)
movl $0x1, -0x270(%rbp)
callq 0x6860
jmp 0x3ebab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
callq 0x6860
jmp 0x3ebb0
jmp 0x3f996
jmp 0x3f9f1
leaq -0x418(%rbp), %rdi
leaq -0x7a0(%rbp), %rsi
callq 0xabd0
jmp 0x3ebca
leaq -0x290(%rbp), %rdi
callq 0xb670
movq %rax, -0x14c0(%rbp)
leaq -0x7c0(%rbp), %rdi
callq 0x67e0
movq %rax, -0x14b8(%rbp)
leaq -0x821(%rbp), %rdi
movq %rdi, -0x14b0(%rbp)
callq 0x6910
movq -0x14b8(%rbp), %rsi
movq -0x14b0(%rbp), %rcx
leaq -0x820(%rbp), %rdi
movl $0x2d, %edx
callq 0x9150
jmp 0x3ec24
leaq -0x822(%rbp), %rdi
movq %rdi, -0x14c8(%rbp)
callq 0xfdc0
movq -0x14c0(%rbp), %rsi
movq -0x14c8(%rbp), %rcx
leaq -0x800(%rbp), %rdi
leaq -0x820(%rbp), %rdx
callq 0x38f40
jmp 0x3ec5a
leaq -0x822(%rbp), %rdi
callq 0xfef0
leaq -0x820(%rbp), %rdi
callq 0x6a08
leaq -0x821(%rbp), %rdi
callq 0x65a0
leaq -0x290(%rbp), %rdi
callq 0xb670
movq %rax, -0x14e0(%rbp)
leaq -0x7c0(%rbp), %rdi
callq 0x67e0
movq %rax, -0x14d8(%rbp)
movb $0x0, -0x869(%rbp)
leaq -0x86a(%rbp), %rdi
movq %rdi, -0x14d0(%rbp)
callq 0xf380
movq -0x14d8(%rbp), %rsi
movq -0x14d0(%rbp), %rcx
leaq -0x868(%rbp), %rdi
leaq -0x869(%rbp), %rdx
callq 0xffb0
jmp 0x3ece1
leaq -0x86b(%rbp), %rdi
movq %rdi, -0x14e8(%rbp)
callq 0x42780
movq -0x14e0(%rbp), %rsi
movq -0x14e8(%rbp), %rcx
leaq -0x840(%rbp), %rdi
leaq -0x868(%rbp), %rdx
callq 0x427a0
jmp 0x3ed17
leaq -0x86b(%rbp), %rdi
callq 0x42820
leaq -0x868(%rbp), %rdi
callq 0xf720
leaq -0x86a(%rbp), %rdi
callq 0xf3e0
leaq -0x7c0(%rbp), %rdi
callq 0x67e0
movslq -0x3fc(%rbp), %rcx
cmpq %rcx, %rax
jae 0x3ee04
movl $0x9, -0x270(%rbp)
jmp 0x3f97e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x3eda4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x822(%rbp), %rdi
callq 0xfef0
leaq -0x820(%rbp), %rdi
callq 0x6a08
leaq -0x821(%rbp), %rdi
callq 0x65a0
jmp 0x3f9f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x3edf3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x86b(%rbp), %rdi
callq 0x42820
leaq -0x868(%rbp), %rdi
callq 0xf720
leaq -0x86a(%rbp), %rdi
callq 0xf3e0
jmp 0x3f9e5
movl $0x0, -0x870(%rbp)
leaq -0x7c0(%rbp), %rdi
callq 0x64a0
movq %rax, -0x878(%rbp)
leaq -0x7c0(%rbp), %rdi
callq 0x62e0
movq %rax, -0x888(%rbp)
movl -0x3fc(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
leaq -0x888(%rbp), %rdi
callq 0x38eb0
movq %rax, -0x880(%rbp)
leaq -0x878(%rbp), %rdi
leaq -0x880(%rbp), %rsi
callq 0x90d0
testb $0x1, %al
jne 0x3ee6f
jmp 0x3f3e1
movslq -0x870(%rbp), %rdx
movslq -0x3fc(%rbp), %rcx
leaq -0x8a8(%rbp), %rdi
leaq -0x7c0(%rbp), %rsi
callq 0x6550
jmp 0x3ee92
leaq -0x8a8(%rbp), %rdi
callq 0x7ec0
movb %al, -0x14e9(%rbp)
jmp 0x3eea6
movb -0x14e9(%rbp), %al
andb $0x1, %al
movb %al, -0x8a9(%rbp)
leaq -0x8a8(%rbp), %rdi
leaq -0x291(%rbp), %rsi
callq 0xbe60
jmp 0x3eec9
leaq -0x8a8(%rbp), %rdi
callq 0x8100
movl %eax, -0x14f0(%rbp)
jmp 0x3eedd
movl -0x14f0(%rbp), %eax
cmpl $0x0, %eax
je 0x3ef38
movl $0x1, -0x4(%rbp)
movl $0x1, -0x270(%rbp)
jmp 0x3f3a3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x3f9d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x8a8(%rbp), %rdi
callq 0x6a08
jmp 0x3f9d9
leaq -0x58(%rbp), %rdi
leaq -0x8a8(%rbp), %rsi
callq 0xf760
movq %rax, -0x14f8(%rbp)
jmp 0x3ef51
movq -0x14f8(%rbp), %rax
movq %rax, -0x8b8(%rbp)
leaq -0x58(%rbp), %rdi
callq 0xf7c0
movq %rax, -0x8c0(%rbp)
leaq -0x8b8(%rbp), %rdi
leaq -0x8c0(%rbp), %rsi
callq 0xf790
testb $0x1, %al
jne 0x3ef8b
jmp 0x3f399
movl $0x0, -0x8c4(%rbp)
movslq -0x8c4(%rbp), %rax
movq %rax, -0x1500(%rbp)
leaq -0x290(%rbp), %rdi
callq 0xb670
movq %rax, %rcx
movq -0x1500(%rbp), %rax
cmpq %rcx, %rax
jae 0x3f397
leaq -0x8b8(%rbp), %rdi
callq 0xf880
movq %rax, %rdi
addq $0x20, %rdi
movslq -0x8c4(%rbp), %rsi
callq 0x69e0
movq %rax, -0x1508(%rbp)
jmp 0x3efea
movq -0x1508(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
je 0x3f381
testb $0x1, -0x8a9(%rbp)
je 0x3f050
leaq -0x8b8(%rbp), %rdi
callq 0xf880
movq %rax, %rdi
addq $0x20, %rdi
movslq -0x8c4(%rbp), %rsi
callq 0x69e0
movq %rax, -0x1510(%rbp)
jmp 0x3f02e
movq -0x1510(%rbp), %rdi
callq 0x7d20
movb %al, -0x1511(%rbp)
jmp 0x3f042
movb -0x1511(%rbp), %al
movb %al, -0x8c5(%rbp)
jmp 0x3f087
leaq -0x8b8(%rbp), %rdi
callq 0xf880
movq %rax, %rdi
addq $0x20, %rdi
movslq -0x8c4(%rbp), %rsi
callq 0x69e0
movq %rax, -0x1520(%rbp)
jmp 0x3f078
movq -0x1520(%rbp), %rax
movb (%rax), %al
movb %al, -0x8c5(%rbp)
movl -0x870(%rbp), %eax
movl %eax, -0x8cc(%rbp)
movl -0x8cc(%rbp), %eax
movl -0x870(%rbp), %ecx
addl -0x3fc(%rbp), %ecx
cmpl %ecx, %eax
jge 0x3f37f
movslq -0x8c4(%rbp), %rsi
leaq -0x840(%rbp), %rdi
callq 0x42840
movq %rax, %rdi
movslq -0x8cc(%rbp), %rsi
callq 0xedc0
movq %rdx, -0x1530(%rbp)
movq %rax, -0x1528(%rbp)
jmp 0x3f0df
movq -0x1530(%rbp), %rax
movq -0x1528(%rbp), %rcx
movq %rcx, -0x8e0(%rbp)
movq %rax, -0x8d8(%rbp)
leaq -0x8e0(%rbp), %rdi
movl $0x1, %esi
callq 0xee20
movl -0x8cc(%rbp), %eax
movl -0x870(%rbp), %ecx
addl -0x274(%rbp), %ecx
cmpl %ecx, %eax
jne 0x3f2c2
movslq -0x8c4(%rbp), %rsi
leaq -0x800(%rbp), %rdi
callq 0x1ab60
movq %rax, %rdi
movslq -0x8cc(%rbp), %rsi
callq 0x69e0
movq %rax, -0x1538(%rbp)
jmp 0x3f151
movq -0x1538(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
je 0x3f19f
movslq -0x8c4(%rbp), %rsi
leaq -0x800(%rbp), %rdi
callq 0x1ab60
movq %rax, %rdi
movslq -0x8cc(%rbp), %rsi
callq 0x69e0
movq %rax, -0x1540(%rbp)
jmp 0x3f18b
movq -0x1540(%rbp), %rax
movsbl (%rax), %edi
callq 0x66c0
cmpl $0x0, %eax
je 0x3f1ea
movb -0x8c5(%rbp), %al
movb %al, -0x1549(%rbp)
movslq -0x8c4(%rbp), %rsi
leaq -0x800(%rbp), %rdi
callq 0x1ab60
movq %rax, %rdi
movslq -0x8cc(%rbp), %rsi
callq 0x69e0
movq %rax, -0x1548(%rbp)
jmp 0x3f1d6
movq -0x1548(%rbp), %rax
movb -0x1549(%rbp), %cl
movb %cl, (%rax)
jmp 0x3f2bd
movsbl -0x8c5(%rbp), %eax
movsbl -0x291(%rbp), %ecx
cmpl %ecx, %eax
jne 0x3f244
movb -0x291(%rbp), %al
movb %al, -0x1559(%rbp)
movslq -0x8c4(%rbp), %rsi
leaq -0x800(%rbp), %rdi
callq 0x1ab60
movq %rax, %rdi
movslq -0x8cc(%rbp), %rsi
callq 0x69e0
movq %rax, -0x1558(%rbp)
jmp 0x3f233
movq -0x1558(%rbp), %rax
movb -0x1559(%rbp), %cl
movb %cl, (%rax)
jmp 0x3f2bb
movslq -0x8c4(%rbp), %rsi
leaq -0x800(%rbp), %rdi
callq 0x1ab60
movq %rax, %rdi
movslq -0x8cc(%rbp), %rsi
callq 0x69e0
movq %rax, -0x1568(%rbp)
jmp 0x3f26f
movq -0x1568(%rbp), %rax
movsbl (%rax), %eax
movsbl -0x291(%rbp), %ecx
cmpl %ecx, %eax
je 0x3f2b9
movslq -0x8c4(%rbp), %rsi
leaq -0x800(%rbp), %rdi
callq 0x1ab60
movq %rax, %rdi
movslq -0x8cc(%rbp), %rsi
callq 0x69e0
movq %rax, -0x1570(%rbp)
jmp 0x3f2af
movq -0x1570(%rbp), %rax
movb $0x4e, (%rax)
jmp 0x3f2bb
jmp 0x3f2bd
jmp 0x3f369
movslq -0x8c4(%rbp), %rsi
leaq -0x800(%rbp), %rdi
callq 0x1ab60
movq %rax, %rdi
movslq -0x8cc(%rbp), %rsi
callq 0x69e0
movq %rax, -0x1578(%rbp)
jmp 0x3f2ed
movq -0x1578(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x3f367
movslq -0x8cc(%rbp), %rsi
leaq -0x7c0(%rbp), %rdi
callq 0x69e0
movq %rax, -0x1580(%rbp)
jmp 0x3f318
movq -0x1580(%rbp), %rax
movsbl (%rax), %edi
callq 0x6a18
movb %al, -0x1589(%rbp)
movslq -0x8c4(%rbp), %rsi
leaq -0x800(%rbp), %rdi
callq 0x1ab60
movq %rax, %rdi
movslq -0x8cc(%rbp), %rsi
callq 0x69e0
movq %rax, -0x1588(%rbp)
jmp 0x3f358
movq -0x1588(%rbp), %rax
movb -0x1589(%rbp), %cl
movb %cl, (%rax)
jmp 0x3f369
jmp 0x3f36b
movl -0x8cc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8cc(%rbp)
jmp 0x3f093
jmp 0x3f381
jmp 0x3f383
movl -0x8c4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8c4(%rbp)
jmp 0x3ef95
jmp 0x3f399
movl $0x0, -0x270(%rbp)
leaq -0x8a8(%rbp), %rdi
callq 0x6a08
movl -0x270(%rbp), %eax
testl %eax, %eax
jne 0x3f97e
jmp 0x3f3bf
jmp 0x3f3c1
leaq -0x878(%rbp), %rdi
callq 0x9130
movl -0x870(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x870(%rbp)
jmp 0x3ee53
movq $0x0, -0x8e8(%rbp)
movq -0x8e8(%rbp), %rax
movq %rax, -0x1598(%rbp)
leaq -0x290(%rbp), %rdi
callq 0xb670
movq %rax, %rcx
movq -0x1598(%rbp), %rax
cmpq %rcx, %rax
jae 0x3f965
xorps %xmm0, %xmm0
movss %xmm0, -0x8ec(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x8f0(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x8f4(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x8f8(%rbp)
movl $0x0, -0x900(%rbp)
movslq -0x900(%rbp), %rax
movq %rax, -0x15a0(%rbp)
leaq -0x7c0(%rbp), %rdi
callq 0x67e0
movq %rax, %rcx
movq -0x15a0(%rbp), %rax
cmpq %rcx, %rax
jae 0x3f5fa
movq -0x8e8(%rbp), %rsi
leaq -0x800(%rbp), %rdi
callq 0x1ab60
movq %rax, %rdi
movslq -0x900(%rbp), %rsi
callq 0x69e0
movq %rax, -0x15a8(%rbp)
jmp 0x3f4a7
movq -0x15a8(%rbp), %rax
movsbl (%rax), %edi
callq 0x6a20
movb %al, -0x8f9(%rbp)
movq -0x8e8(%rbp), %rsi
leaq -0x800(%rbp), %rdi
callq 0x1ab60
movq %rax, %rdi
movslq -0x900(%rbp), %rsi
callq 0x69e0
movq %rax, -0x15b0(%rbp)
jmp 0x3f4e7
movq -0x15b0(%rbp), %rax
movsbl (%rax), %eax
movl %eax, -0x15bc(%rbp)
movslq -0x900(%rbp), %rsi
leaq -0x7c0(%rbp), %rdi
callq 0x69e0
movq %rax, -0x15b8(%rbp)
jmp 0x3f513
movl -0x15bc(%rbp), %eax
movq -0x15b8(%rbp), %rcx
movsbl (%rcx), %ecx
cmpl %ecx, %eax
jne 0x3f53f
movss 0x19ad5(%rip), %xmm0    # 0x59004
addss -0x8ec(%rbp), %xmm0
movss %xmm0, -0x8ec(%rbp)
movsbl -0x8f9(%rbp), %eax
movl %eax, -0x15cc(%rbp)
movslq -0x900(%rbp), %rsi
leaq -0x7c0(%rbp), %rdi
callq 0x69e0
movq %rax, -0x15c8(%rbp)
jmp 0x3f568
movl -0x15cc(%rbp), %eax
movq -0x15c8(%rbp), %rcx
movsbl (%rcx), %ecx
cmpl %ecx, %eax
jne 0x3f596
movss 0x19a80(%rip), %xmm0    # 0x59004
addss -0x8f0(%rbp), %xmm0
movss %xmm0, -0x8f0(%rbp)
jmp 0x3f5e4
movsbl -0x8f9(%rbp), %eax
cmpl $0x4e, %eax
jne 0x3f5bc
movss 0x19a5a(%rip), %xmm0    # 0x59004
addss -0x8f4(%rbp), %xmm0
movss %xmm0, -0x8f4(%rbp)
jmp 0x3f5e2
movsbl -0x8f9(%rbp), %eax
cmpl $0x2d, %eax
jne 0x3f5e0
movss 0x19a34(%rip), %xmm0    # 0x59004
addss -0x8f8(%rbp), %xmm0
movss %xmm0, -0x8f8(%rbp)
jmp 0x3f5e2
jmp 0x3f5e4
jmp 0x3f5e6
movl -0x900(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x900(%rbp)
jmp 0x3f44f
movss -0x8ec(%rbp), %xmm0
movss %xmm0, -0x15e4(%rbp)
leaq -0x7c0(%rbp), %rdi
movq %rdi, -0x15e0(%rbp)
callq 0x67e0
movq %rax, %rdx
shrq %rdx
movl %eax, %ecx
andl $0x1, %ecx
orq %rdx, %rcx
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
cvtsi2ss %rax, %xmm1
movss %xmm1, -0x15d4(%rbp)
testq %rax, %rax
movss %xmm0, -0x15d0(%rbp)
js 0x3f65e
movss -0x15d4(%rbp), %xmm0
movss %xmm0, -0x15d0(%rbp)
movq -0x15e0(%rbp), %rdi
movss -0x15e4(%rbp), %xmm0
movss -0x15d0(%rbp), %xmm1
divss %xmm1, %xmm0
movss %xmm0, -0x904(%rbp)
movss -0x8f4(%rbp), %xmm0
movss -0x8f0(%rbp), %xmm1
addss %xmm1, %xmm0
movss %xmm0, -0x15f0(%rbp)
callq 0x67e0
movq %rax, %rdx
shrq %rdx
movl %eax, %ecx
andl $0x1, %ecx
orq %rdx, %rcx
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
cvtsi2ss %rax, %xmm1
movss %xmm1, -0x15ec(%rbp)
testq %rax, %rax
movss %xmm0, -0x15e8(%rbp)
js 0x3f6e3
movss -0x15ec(%rbp), %xmm0
movss %xmm0, -0x15e8(%rbp)
movss -0x15f0(%rbp), %xmm0
movss -0x15e8(%rbp), %xmm1
divss %xmm1, %xmm0
movss %xmm0, -0x908(%rbp)
movss -0x904(%rbp), %xmm0
movss %xmm0, -0x15f4(%rbp)
movq -0x8e8(%rbp), %rsi
leaq -0x450(%rbp), %rdi
callq 0x42860
movss -0x15f4(%rbp), %xmm0
ucomiss (%rax), %xmm0
ja 0x3f79d
movss -0x904(%rbp), %xmm0
movss %xmm0, -0x15f8(%rbp)
movq -0x8e8(%rbp), %rsi
leaq -0x450(%rbp), %rdi
callq 0x42860
movss -0x15f8(%rbp), %xmm0
ucomiss (%rax), %xmm0
jne 0x3f868
jp 0x3f868
movss -0x908(%rbp), %xmm0
movss %xmm0, -0x15fc(%rbp)
movq -0x8e8(%rbp), %rsi
leaq -0x430(%rbp), %rdi
callq 0x42860
movss -0x15fc(%rbp), %xmm0
ucomiss (%rax), %xmm0
jbe 0x3f868
movq -0x8e8(%rbp), %rsi
leaq -0x4b0(%rbp), %rdi
callq 0x24530
movq %rax, %rdi
callq 0x248c0
movss -0x904(%rbp), %xmm0
movss %xmm0, -0x160c(%rbp)
movq -0x8e8(%rbp), %rsi
leaq -0x450(%rbp), %rdi
callq 0x42860
movss -0x160c(%rbp), %xmm0
movss %xmm0, (%rax)
movss -0x908(%rbp), %xmm0
movss %xmm0, -0x1608(%rbp)
movq -0x8e8(%rbp), %rsi
leaq -0x430(%rbp), %rdi
callq 0x42860
movss -0x1608(%rbp), %xmm0
movss %xmm0, (%rax)
cvttss2si -0x8f4(%rbp), %eax
movl %eax, -0x1604(%rbp)
movq -0x8e8(%rbp), %rsi
leaq -0x470(%rbp), %rdi
callq 0x1a9b0
movl -0x1604(%rbp), %ecx
movl %ecx, (%rax)
cvttss2si -0x8f8(%rbp), %eax
movl %eax, -0x1600(%rbp)
movq -0x8e8(%rbp), %rsi
leaq -0x490(%rbp), %rdi
callq 0x1a9b0
movl -0x1600(%rbp), %ecx
movl %ecx, (%rax)
movss -0x904(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jbe 0x3f94c
movss -0x904(%rbp), %xmm0
movss %xmm0, -0x1610(%rbp)
movq -0x8e8(%rbp), %rsi
leaq -0x450(%rbp), %rdi
callq 0x42860
movss -0x1610(%rbp), %xmm0
ucomiss (%rax), %xmm0
jne 0x3f94c
jp 0x3f94c
movss -0x908(%rbp), %xmm0
movss %xmm0, -0x1614(%rbp)
movq -0x8e8(%rbp), %rsi
leaq -0x430(%rbp), %rdi
callq 0x42860
movss -0x1614(%rbp), %xmm0
ucomiss (%rax), %xmm0
jne 0x3f94c
jp 0x3f94c
movq -0x8e8(%rbp), %rsi
leaq -0x4b0(%rbp), %rdi
callq 0x24530
movq %rax, %rdi
leaq -0x77c(%rbp), %rsi
callq 0x1ac30
jmp 0x3f90c
movq -0x8e8(%rbp), %rsi
leaq -0x800(%rbp), %rdi
callq 0x1ab60
movq %rax, -0x1620(%rbp)
movq -0x8e8(%rbp), %rsi
leaq -0x4d0(%rbp), %rdi
callq 0x1ab60
movq -0x1620(%rbp), %rsi
movq %rax, %rdi
callq 0x6060
jmp 0x3f94a
jmp 0x3f94c
jmp 0x3f94e
movq -0x8e8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x8e8(%rbp)
jmp 0x3f3ec
movl -0x77c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x77c(%rbp)
movl $0x0, -0x270(%rbp)
leaq -0x840(%rbp), %rdi
callq 0x42880
leaq -0x800(%rbp), %rdi
callq 0xfe90
leaq -0x7c0(%rbp), %rdi
callq 0x6a08
leaq -0x7a0(%rbp), %rdi
callq 0x6a08
movl -0x270(%rbp), %eax
movl %eax, -0x1624(%rbp)
testl %eax, %eax
je 0x3f9d4
jmp 0x3f9c0
movl -0x1624(%rbp), %eax
subl $0x9, %eax
je 0x3e91f
jmp 0x401fb
jmp 0x3e91f
leaq -0x840(%rbp), %rdi
callq 0x42880
leaq -0x800(%rbp), %rdi
callq 0xfe90
leaq -0x7c0(%rbp), %rdi
callq 0x6a08
leaq -0x7a0(%rbp), %rdi
callq 0x6a08
jmp 0x40281
leaq -0x778(%rbp), %rdi
callq 0x9400
jmp 0x3fa1c
movl $0x0, -0x90c(%rbp)
movslq -0x90c(%rbp), %rax
movq %rax, -0x1630(%rbp)
leaq -0x290(%rbp), %rdi
callq 0xb670
movq %rax, %rcx
movq -0x1630(%rbp), %rax
cmpq %rcx, %rax
jae 0x401f1
leaq -0x930(%rbp), %rdi
callq 0x6730
movslq -0x90c(%rbp), %rsi
leaq -0x4b0(%rbp), %rdi
callq 0x24530
movq %rax, %rdi
callq 0x1c1b0
movq %rax, -0x938(%rbp)
movslq -0x90c(%rbp), %rsi
leaq -0x4b0(%rbp), %rdi
callq 0x24530
movq %rax, %rdi
callq 0x1c040
movq %rax, -0x940(%rbp)
leaq -0x938(%rbp), %rdi
leaq -0x940(%rbp), %rsi
callq 0x245c0
testb $0x1, %al
jne 0x3fabf
jmp 0x3fe04
leaq -0x938(%rbp), %rdi
callq 0x24600
movslq (%rax), %rsi
leaq -0x418(%rbp), %rdi
callq 0x1ab60
movq %rax, %rdi
leaq 0x1a9b1(%rip), %rsi     # 0x5a495
movq $-0x1, %rdx
callq 0x64f0
movq %rax, -0x948(%rbp)
cmpq $-0x1, -0x948(%rbp)
je 0x3fc10
leaq -0x938(%rbp), %rdi
callq 0x24600
movslq (%rax), %rsi
leaq -0x418(%rbp), %rdi
callq 0x1ab60
movq %rax, %rsi
movq -0x948(%rbp), %rcx
xorl %eax, %eax
movl %eax, %edx
leaq -0x968(%rbp), %rdi
callq 0x6550
jmp 0x3fb3c
leaq -0x930(%rbp), %rdi
leaq -0x968(%rbp), %rsi
movq %rsi, -0x1638(%rbp)
callq 0x6640
movq -0x1638(%rbp), %rdi
callq 0x6a08
leaq -0x938(%rbp), %rdi
callq 0x24600
movslq (%rax), %rsi
leaq -0x418(%rbp), %rdi
callq 0x1ab60
movq %rax, %rsi
movq -0x948(%rbp), %rdx
incq %rdx
leaq -0x988(%rbp), %rdi
movq $-0x1, %rcx
callq 0x6550
jmp 0x3fb9f
xorl %eax, %eax
movl %eax, %esi
leaq -0x988(%rbp), %rdi
movl $0xa, %edx
callq 0x2dfe0
movl %eax, -0x163c(%rbp)
jmp 0x3fbbc
movl -0x163c(%rbp), %eax
movl %eax, -0x910(%rbp)
leaq -0x988(%rbp), %rdi
callq 0x6a08
jmp 0x3fc10
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x401e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x988(%rbp), %rdi
callq 0x6a08
jmp 0x401e0
movslq -0x90c(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x428e0
movq %rax, %rdi
leaq -0x930(%rbp), %rsi
callq 0x2df50
movq %rax, -0x1648(%rbp)
jmp 0x3fc3b
movq -0x1648(%rbp), %rax
movq %rax, -0x990(%rbp)
movslq -0x90c(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x428e0
movq %rax, %rdi
callq 0x2dfb0
movq %rax, -0x998(%rbp)
leaq -0x990(%rbp), %rdi
leaq -0x998(%rbp), %rsi
callq 0x2df80
testb $0x1, %al
jne 0x3fc84
jmp 0x3fcfa
leaq -0x990(%rbp), %rdi
callq 0x2e020
movq %rax, %rdi
addq $0x20, %rdi
leaq -0x910(%rbp), %rsi
callq 0x1ac30
jmp 0x3fca5
movslq -0x90c(%rbp), %rsi
leaq -0x358(%rbp), %rdi
callq 0xedc0
movq %rdx, -0x1658(%rbp)
movq %rax, -0x1650(%rbp)
jmp 0x3fcc8
movq -0x1658(%rbp), %rax
movq -0x1650(%rbp), %rcx
movq %rcx, -0x9a8(%rbp)
movq %rax, -0x9a0(%rbp)
leaq -0x9a8(%rbp), %rdi
movl $0x1, %esi
callq 0xee20
jmp 0x3fdf1
leaq -0x9c0(%rbp), %rdi
movq %rdi, -0x1660(%rbp)
callq 0x1ac10
movq -0x1660(%rbp), %rdi
leaq -0x910(%rbp), %rsi
callq 0x1ac30
jmp 0x3fd22
movslq -0x90c(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x428e0
movq %rax, -0x1668(%rbp)
leaq -0x9f8(%rbp), %rdi
leaq -0x930(%rbp), %rsi
leaq -0x9c0(%rbp), %rdx
callq 0x42900
jmp 0x3fd58
movq -0x1668(%rbp), %rdi
leaq -0x9f8(%rbp), %rsi
callq 0x2e180
movb %dl, -0x1671(%rbp)
movq %rax, -0x1670(%rbp)
jmp 0x3fd7a
movb -0x1671(%rbp), %al
movq -0x1670(%rbp), %rcx
movq %rcx, -0xa08(%rbp)
movb %al, -0xa00(%rbp)
leaq -0x9f8(%rbp), %rdi
callq 0x2e200
leaq -0x9c0(%rbp), %rdi
callq 0x1aa00
jmp 0x3fdf1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x3fde0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x9f8(%rbp), %rdi
callq 0x2e200
leaq -0x9c0(%rbp), %rdi
callq 0x1aa00
jmp 0x401e0
jmp 0x3fdf3
leaq -0x938(%rbp), %rdi
callq 0x24620
jmp 0x3fa81
movslq -0x90c(%rbp), %rsi
leaq -0x430(%rbp), %rdi
callq 0x42860
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x19441(%rip), %xmm1    # 0x59268
ucomisd %xmm1, %xmm0
jne 0x3fe4b
jp 0x3fe4b
movslq -0x90c(%rbp), %rsi
leaq -0x470(%rbp), %rdi
callq 0x1a9b0
cmpl $0x0, (%rax)
jle 0x401c0
movslq -0x90c(%rbp), %rsi
leaq -0x450(%rbp), %rdi
callq 0x42860
movss (%rax), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jbe 0x401c0
movslq -0x90c(%rbp), %rsi
leaq -0x430(%rbp), %rdi
callq 0x42860
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x193d7(%rip), %xmm1    # 0x59268
ucomisd %xmm1, %xmm0
jne 0x3fe9b
jp 0x3fe9b
jmp 0x3fee6
movslq -0x90c(%rbp), %rsi
leaq -0x2e8(%rbp), %rdi
callq 0x42940
movq %rax, %rdi
leaq -0x930(%rbp), %rsi
callq 0xf310
movb %dl, -0x1681(%rbp)
movq %rax, -0x1680(%rbp)
jmp 0x3fecc
movb -0x1681(%rbp), %al
movq -0x1680(%rbp), %rcx
movq %rcx, -0xa18(%rbp)
movb %al, -0xa10(%rbp)
movslq -0x90c(%rbp), %rsi
leaq -0x470(%rbp), %rdi
callq 0x1a9b0
cmpl $0x0, (%rax)
jle 0x3ff49
movslq -0x90c(%rbp), %rsi
leaq -0x308(%rbp), %rdi
callq 0x42940
movq %rax, %rdi
leaq -0x930(%rbp), %rsi
callq 0xf310
movb %dl, -0x1691(%rbp)
movq %rax, -0x1690(%rbp)
jmp 0x3ff2f
movb -0x1691(%rbp), %al
movq -0x1690(%rbp), %rcx
movq %rcx, -0xa28(%rbp)
movb %al, -0xa20(%rbp)
movslq -0x90c(%rbp), %rsi
leaq -0x490(%rbp), %rdi
callq 0x1a9b0
cmpl $0x0, (%rax)
jle 0x3ffac
movslq -0x90c(%rbp), %rsi
leaq -0x328(%rbp), %rdi
callq 0x42940
movq %rax, %rdi
leaq -0x930(%rbp), %rsi
callq 0xf310
movb %dl, -0x16a1(%rbp)
movq %rax, -0x16a0(%rbp)
jmp 0x3ff92
movb -0x16a1(%rbp), %al
movq -0x16a0(%rbp), %rcx
movq %rcx, -0xa38(%rbp)
movb %al, -0xa30(%rbp)
movslq -0x90c(%rbp), %rsi
leaq -0x290(%rbp), %rdi
callq 0x1ab60
movq %rax, %rsi
leaq 0x1a4cc(%rip), %rdx     # 0x5a495
leaq -0xc98(%rbp), %rdi
callq 0x1ace0
jmp 0x3ffd7
leaq -0xc78(%rbp), %rdi
leaq -0xc98(%rbp), %rsi
leaq -0x930(%rbp), %rdx
callq 0x2e480
jmp 0x3fff3
leaq 0x1a50d(%rip), %rdx     # 0x5a507
leaq -0xc58(%rbp), %rdi
leaq -0xc78(%rbp), %rsi
callq 0x24a10
jmp 0x4000f
leaq -0xc38(%rbp), %rdi
leaq -0xc58(%rbp), %rsi
movl $0x10, %edx
callq 0x69b0
jmp 0x40029
leaq -0xc58(%rbp), %rdi
callq 0x6a08
leaq -0xc78(%rbp), %rdi
callq 0x6a08
leaq -0xc98(%rbp), %rdi
callq 0x6a08
leaq 0x1a033(%rip), %rsi     # 0x5a087
leaq -0xc38(%rbp), %rdi
callq 0x6520
movq %rax, -0x16b0(%rbp)
jmp 0x40069
movslq -0x90c(%rbp), %rsi
leaq -0x290(%rbp), %rdi
callq 0x1ab60
movq -0x16b0(%rbp), %rdi
movq %rax, %rsi
callq 0x64d0
movq %rax, -0x16b8(%rbp)
jmp 0x40094
movq -0x16b8(%rbp), %rdi
leaq 0x1a3f3(%rip), %rsi     # 0x5a495
callq 0x6520
movq %rax, -0x16c0(%rbp)
jmp 0x400b0
movq -0x16c0(%rbp), %rdi
leaq -0x930(%rbp), %rsi
callq 0x64d0
movq %rax, -0x16c8(%rbp)
jmp 0x400cc
movq -0x16c8(%rbp), %rdi
movq 0x38eb6(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x400e1
movslq -0x90c(%rbp), %rsi
leaq -0x4d0(%rbp), %rdi
callq 0x1ab60
movq %rax, %rsi
leaq -0xc38(%rbp), %rdi
callq 0x64d0
movq %rax, -0x16d0(%rbp)
jmp 0x4010c
movq -0x16d0(%rbp), %rdi
movq 0x38e76(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x40121
leaq -0xc38(%rbp), %rdi
callq 0x6740
jmp 0x4012f
leaq -0xc38(%rbp), %rdi
callq 0x67d0
jmp 0x401c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x40192
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x40186
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0xc58(%rbp), %rdi
callq 0x6a08
leaq -0xc78(%rbp), %rdi
callq 0x6a08
leaq -0xc98(%rbp), %rdi
callq 0x6a08
jmp 0x401e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0xc38(%rbp), %rdi
callq 0x67d0
jmp 0x401e0
leaq -0x930(%rbp), %rdi
callq 0x6a08
movl -0x90c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x90c(%rbp)
jmp 0x3fa26
leaq -0x930(%rbp), %rdi
callq 0x6a08
jmp 0x40281
movl $0x0, -0x270(%rbp)
leaq -0x778(%rbp), %rdi
callq 0x9480
leaq -0x4d0(%rbp), %rdi
callq 0xfe90
leaq -0x4b0(%rbp), %rdi
callq 0x246d0
leaq -0x490(%rbp), %rdi
callq 0x1aa00
leaq -0x470(%rbp), %rdi
callq 0x1aa00
leaq -0x450(%rbp), %rdi
callq 0x42960
leaq -0x430(%rbp), %rdi
callq 0x42960
leaq -0x418(%rbp), %rdi
callq 0xfe90
movl -0x270(%rbp), %eax
testl %eax, %eax
jne 0x4237f
jmp 0x4026b
jmp 0x4026d
movl -0x400(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x400(%rbp)
jmp 0x3e566
leaq -0x778(%rbp), %rdi
callq 0x9480
leaq -0x4d0(%rbp), %rdi
callq 0xfe90
leaq -0x4b0(%rbp), %rdi
callq 0x246d0
leaq -0x490(%rbp), %rdi
callq 0x1aa00
leaq -0x470(%rbp), %rdi
callq 0x1aa00
leaq -0x450(%rbp), %rdi
callq 0x42960
leaq -0x430(%rbp), %rdi
callq 0x42960
leaq -0x418(%rbp), %rdi
callq 0xfe90
jmp 0x423df
movq -0x18(%rbp), %rdi
leaq 0x19fc1(%rip), %rsi     # 0x5a2b2
callq 0x2df20
movb %al, -0x16d1(%rbp)
jmp 0x402fe
movb -0x16d1(%rbp), %al
testb $0x1, %al
jne 0x4030d
jmp 0x41a9f
leaq -0xcb0(%rbp), %rdi
callq 0x1ac10
movl $0x0, -0xcb4(%rbp)
movslq -0xcb4(%rbp), %rax
movq %rax, -0x16e0(%rbp)
leaq -0x290(%rbp), %rdi
callq 0xb670
movq %rax, %rcx
movq -0x16e0(%rbp), %rax
cmpq %rcx, %rax
jae 0x40436
movslq -0xcb4(%rbp), %rsi
leaq -0x2e8(%rbp), %rdi
callq 0x42940
movq %rax, %rdi
callq 0xf360
movq %rax, %rcx
xorl %eax, %eax
cmpq $0x0, %rcx
movb %al, -0x16e1(%rbp)
jne 0x403cf
movslq -0xcb4(%rbp), %rsi
leaq -0x358(%rbp), %rdi
callq 0xedc0
movq %rdx, -0x16f8(%rbp)
movq %rax, -0x16f0(%rbp)
jmp 0x4039f
movq -0x16f8(%rbp), %rax
movq -0x16f0(%rbp), %rcx
movq %rcx, -0xcc8(%rbp)
movq %rax, -0xcc0(%rbp)
leaq -0xcc8(%rbp), %rdi
callq 0xf510
xorb $-0x1, %al
movb %al, -0x16e1(%rbp)
movb -0x16e1(%rbp), %al
testb $0x1, %al
jne 0x403db
jmp 0x40420
leaq -0xcb0(%rbp), %rdi
leaq -0xcb4(%rbp), %rsi
callq 0x1ac30
jmp 0x403f0
jmp 0x40420
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x423df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x41a8e
jmp 0x40422
movl -0xcb4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xcb4(%rbp)
jmp 0x40323
movq -0x18(%rbp), %rdi
leaq -0x260(%rbp), %rsi
xorl %edx, %edx
callq 0xa4f0
movl %eax, -0x16fc(%rbp)
jmp 0x40450
movl -0x16fc(%rbp), %eax
cmpl $0x0, %eax
je 0x40471
movl $0x1, -0x4(%rbp)
movl $0x1, -0x270(%rbp)
jmp 0x41a31
leaq -0xce8(%rbp), %rdi
movq %rdi, -0x1708(%rbp)
callq 0x6730
movq -0x1708(%rbp), %rsi
leaq -0x260(%rbp), %rdi
callq 0x60d0
jmp 0x40499
leaq -0xe70(%rbp), %rdi
callq 0x63a0
jmp 0x404a7
leaq -0xe60(%rbp), %rdi
leaq -0xce8(%rbp), %rsi
callq 0x64d0
jmp 0x404bc
leaq -0xe90(%rbp), %rdi
callq 0x6730
movl $0x0, -0xe94(%rbp)
movl $0xffffffff, -0xe98(%rbp) # imm = 0xFFFFFFFF
movl $0xffffffff, -0xe9c(%rbp) # imm = 0xFFFFFFFF
leaq -0xed0(%rbp), %rdi
callq 0x429c0
movl $0x0, -0xed4(%rbp)
leaq -0xe70(%rbp), %rdi
leaq -0xe90(%rbp), %rsi
movl $0x9, %edx
callq 0x6960
movq %rax, -0x1710(%rbp)
jmp 0x4051d
movq -0x1710(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x6670
movb %al, -0x1711(%rbp)
jmp 0x4053b
movb -0x1711(%rbp), %al
testb $0x1, %al
jne 0x4054a
jmp 0x40661
leaq 0x19fba(%rip), %rsi     # 0x5a50b
leaq -0xe90(%rbp), %rdi
callq 0x2dce0
movb %al, -0x1712(%rbp)
jmp 0x40565
movb -0x1712(%rbp), %al
testb $0x1, %al
jne 0x40571
jmp 0x405d3
movl -0xe94(%rbp), %eax
movl %eax, -0xe98(%rbp)
movl -0xe94(%rbp), %eax
movl %eax, -0xed4(%rbp)
jmp 0x4064d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x41a82
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x41a76
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x41a5e
leaq 0x19f34(%rip), %rsi     # 0x5a50e
leaq -0xe90(%rbp), %rdi
callq 0x2dce0
movb %al, -0x1713(%rbp)
jmp 0x405ee
movb -0x1713(%rbp), %al
testb $0x1, %al
jne 0x405fa
jmp 0x40608
movl -0xe94(%rbp), %eax
movl %eax, -0xe9c(%rbp)
jmp 0x4064b
movl -0xe94(%rbp), %eax
movl %eax, -0x1724(%rbp)
leaq -0xed0(%rbp), %rdi
leaq -0xe90(%rbp), %rsi
callq 0x429e0
movq %rax, -0x1720(%rbp)
jmp 0x40630
movq -0x1720(%rbp), %rax
movl -0x1724(%rbp), %ecx
movl %ecx, (%rax)
movl -0xe94(%rbp), %eax
movl %eax, -0xed4(%rbp)
jmp 0x4064d
movl -0xe94(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xe94(%rbp)
jmp 0x404fc
cmpl $-0x1, -0xe98(%rbp)
jne 0x406cd
movq 0x3897f(%rip), %rdi     # 0x78ff0
leaq 0x19ea5(%rip), %rsi     # 0x5a51d
callq 0x6520
movq %rax, -0x1730(%rbp)
jmp 0x40686
movq -0x1730(%rbp), %rdi
movq 0x388fc(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x1738(%rbp)
jmp 0x406a2
movq -0x1738(%rbp), %rdi
movq 0x388e0(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x406b7
movl $0x1, -0x4(%rbp)
movl $0x1, -0x270(%rbp)
jmp 0x41a01
leaq -0xed0(%rbp), %rdi
callq 0x42ac0
movq %rax, -0x1740(%rbp)
leaq -0x2c8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x428e0
movq %rax, %rdi
callq 0x2e2a0
movq %rax, %rcx
movq -0x1740(%rbp), %rax
cmpq %rcx, %rax
je 0x407fa
movq 0x388de(%rip), %rdi     # 0x78ff0
leaq 0x19e33(%rip), %rsi     # 0x5a54c
callq 0x6520
movq %rax, -0x1748(%rbp)
jmp 0x40727
leaq -0xed0(%rbp), %rdi
callq 0x42ac0
movq -0x1748(%rbp), %rdi
movq %rax, %rsi
callq 0x6120
movq %rax, -0x1750(%rbp)
jmp 0x4074b
movq -0x1750(%rbp), %rdi
leaq 0x19e01(%rip), %rsi     # 0x5a55a
callq 0x6520
movq %rax, -0x1758(%rbp)
jmp 0x40767
xorl %eax, %eax
movl %eax, %esi
leaq -0x2c8(%rbp), %rdi
callq 0x428e0
movq %rax, %rdi
callq 0x2e2a0
movq -0x1758(%rbp), %rdi
movq %rax, %rsi
callq 0x6120
movq %rax, -0x1760(%rbp)
jmp 0x40797
movq -0x1760(%rbp), %rdi
leaq 0x19dd7(%rip), %rsi     # 0x5a57c
callq 0x6520
movq %rax, -0x1768(%rbp)
jmp 0x407b3
movq -0x1768(%rbp), %rdi
movq 0x387cf(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x1770(%rbp)
jmp 0x407cf
movq -0x1770(%rbp), %rdi
movq 0x387b3(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x407e4
movl $0x1, -0x4(%rbp)
movl $0x1, -0x270(%rbp)
jmp 0x41a01
leaq -0xed0(%rbp), %rdi
callq 0x42ae0
movq %rax, -0xee0(%rbp)
leaq -0xed0(%rbp), %rdi
callq 0x42b40
movq %rax, -0xee8(%rbp)
leaq -0xee0(%rbp), %rdi
leaq -0xee8(%rbp), %rsi
callq 0x42b10
testb $0x1, %al
jne 0x4083c
jmp 0x40976
xorl %eax, %eax
movl %eax, %esi
leaq -0x2c8(%rbp), %rdi
callq 0x428e0
movq %rax, -0x1780(%rbp)
leaq -0xee0(%rbp), %rdi
callq 0x42b70
movq -0x1780(%rbp), %rdi
movq %rax, %rsi
callq 0x2df50
movq %rax, -0x1778(%rbp)
jmp 0x40877
movq -0x1778(%rbp), %rax
movq %rax, -0xef0(%rbp)
leaq -0x2c8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x428e0
movq %rax, %rdi
callq 0x2dfb0
movq %rax, -0xef8(%rbp)
leaq -0xef0(%rbp), %rdi
leaq -0xef8(%rbp), %rsi
callq 0x42b90
testb $0x1, %al
jne 0x408c0
jmp 0x40963
movq 0x38729(%rip), %rdi     # 0x78ff0
leaq 0x19ccc(%rip), %rsi     # 0x5a59a
callq 0x6520
movq %rax, -0x1788(%rbp)
jmp 0x408dc
leaq -0xee0(%rbp), %rdi
callq 0x42b70
movq -0x1788(%rbp), %rdi
movq %rax, %rsi
callq 0x64d0
movq %rax, -0x1790(%rbp)
jmp 0x40900
movq -0x1790(%rbp), %rdi
leaq 0x19ca0(%rip), %rsi     # 0x5a5ae
callq 0x6520
movq %rax, -0x1798(%rbp)
jmp 0x4091c
movq -0x1798(%rbp), %rdi
movq 0x38666(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x17a0(%rbp)
jmp 0x40938
movq -0x17a0(%rbp), %rdi
movq 0x3864a(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x4094d
movl $0x1, -0x4(%rbp)
movl $0x1, -0x270(%rbp)
jmp 0x41a01
jmp 0x40965
leaq -0xee0(%rbp), %rdi
callq 0x42bc0
jmp 0x4080d
movq 0x3862b(%rip), %rdi     # 0x78fa8
leaq 0x19c41(%rip), %rsi     # 0x5a5c5
callq 0x6520
movq %rax, -0x17a8(%rbp)
jmp 0x40992
movq -0x17a8(%rbp), %rdi
leaq 0x19911(%rip), %rsi     # 0x5a2b1
callq 0x6520
jmp 0x409a7
movq 0x385fa(%rip), %rdi     # 0x78fa8
leaq 0x19b56(%rip), %rsi     # 0x5a50b
callq 0x6520
jmp 0x409bc
leaq -0xed0(%rbp), %rdi
callq 0x42ae0
movq %rax, -0xf00(%rbp)
leaq -0xed0(%rbp), %rdi
callq 0x42b40
movq %rax, -0xf08(%rbp)
leaq -0xf00(%rbp), %rdi
leaq -0xf08(%rbp), %rsi
callq 0x42b10
testb $0x1, %al
jne 0x409fb
jmp 0x40a44
movq 0x385a6(%rip), %rdi     # 0x78fa8
leaq 0x198a8(%rip), %rsi     # 0x5a2b1
callq 0x6520
movq %rax, -0x17b0(%rbp)
jmp 0x40a17
leaq -0xf00(%rbp), %rdi
callq 0x42b70
movq -0x17b0(%rbp), %rdi
movq %rax, %rsi
callq 0x64d0
jmp 0x40a34
jmp 0x40a36
leaq -0xf00(%rbp), %rdi
callq 0x42bc0
jmp 0x409cf
movq 0x3855d(%rip), %rdi     # 0x78fa8
movq 0x3853e(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x40a59
leaq -0xf28(%rbp), %rdi
callq 0x6730
movl $0x0, -0xf2c(%rbp)
movl $0x0, -0xf30(%rbp)
leaq -0x260(%rbp), %rdi
leaq -0xf28(%rbp), %rsi
callq 0x60d0
movq %rax, -0x17b8(%rbp)
jmp 0x40a95
movq -0x17b8(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x6670
movb %al, -0x17b9(%rbp)
jmp 0x40ab3
movb -0x17b9(%rbp), %al
testb $0x1, %al
jne 0x40ac2
jmp 0x41125
movl -0xf2c(%rbp), %eax
incl %eax
movl %eax, -0xf2c(%rbp)
leaq -0x10b8(%rbp), %rdi
callq 0x63a0
jmp 0x40ade
leaq -0x10a8(%rbp), %rdi
leaq -0xf28(%rbp), %rsi
callq 0x64d0
jmp 0x40af3
leaq -0x10d0(%rbp), %rdi
callq 0x1ab40
leaq -0x10b8(%rbp), %rdi
leaq -0xe90(%rbp), %rsi
movl $0x9, %edx
callq 0x6960
movq %rax, -0x17c8(%rbp)
jmp 0x40b20
movq -0x17c8(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x6670
movb %al, -0x17c9(%rbp)
jmp 0x40b3e
movb -0x17c9(%rbp), %al
testb $0x1, %al
jne 0x40b4a
jmp 0x40ba6
leaq -0x10d0(%rbp), %rdi
leaq -0xe90(%rbp), %rsi
callq 0xabd0
jmp 0x40b5f
jmp 0x40aff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x41a52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x41114
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x41108
leaq -0x10d0(%rbp), %rdi
callq 0xb670
movslq -0xed4(%rbp), %rcx
cmpq %rcx, %rax
jae 0x40cb7
movq 0x38427(%rip), %rdi     # 0x78ff0
leaq 0x199fc(%rip), %rsi     # 0x5a5cc
callq 0x6520
movq %rax, -0x17d8(%rbp)
jmp 0x40bde
movq -0x17d8(%rbp), %rdi
movl -0xf2c(%rbp), %esi
callq 0x68d0
movq %rax, -0x17e0(%rbp)
jmp 0x40bf9
movq -0x17e0(%rbp), %rdi
leaq 0x199e5(%rip), %rsi     # 0x5a5ec
callq 0x6520
movq %rax, -0x17e8(%rbp)
jmp 0x40c15
movq -0x17e8(%rbp), %rdi
movl -0xed4(%rbp), %esi
callq 0x68d0
movq %rax, -0x17f0(%rbp)
jmp 0x40c30
movq -0x17f0(%rbp), %rdi
leaq 0x199c4(%rip), %rsi     # 0x5a602
callq 0x6520
movq %rax, -0x17f8(%rbp)
jmp 0x40c4c
leaq -0x10d0(%rbp), %rdi
callq 0xb670
movq -0x17f8(%rbp), %rdi
movq %rax, %rsi
callq 0x6120
movq %rax, -0x1800(%rbp)
jmp 0x40c70
movq -0x1800(%rbp), %rdi
movq 0x38312(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x1808(%rbp)
jmp 0x40c8c
movq -0x1808(%rbp), %rdi
movq 0x382f6(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x40ca1
movl $0x1, -0x4(%rbp)
movl $0x1, -0x270(%rbp)
jmp 0x410c9
leaq -0xcb0(%rbp), %rdi
callq 0x1c1b0
movq %rax, -0x10d8(%rbp)
leaq -0xcb0(%rbp), %rdi
callq 0x1c040
movq %rax, -0x10e0(%rbp)
leaq -0x10d8(%rbp), %rdi
leaq -0x10e0(%rbp), %rsi
callq 0x245c0
testb $0x1, %al
jne 0x40cf9
jmp 0x4108a
movb $0x1, -0x10e1(%rbp)
leaq -0xed0(%rbp), %rdi
callq 0x42ae0
movq %rax, -0x10f0(%rbp)
leaq -0xed0(%rbp), %rdi
callq 0x42b40
movq %rax, -0x10f8(%rbp)
leaq -0x10f0(%rbp), %rdi
leaq -0x10f8(%rbp), %rsi
callq 0x42b10
testb $0x1, %al
jne 0x40d42
jmp 0x40e73
leaq -0x10d8(%rbp), %rdi
callq 0x24600
movslq (%rax), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x428e0
movq %rax, -0x1818(%rbp)
leaq -0x10f0(%rbp), %rdi
callq 0x42b70
movq -0x1818(%rbp), %rdi
movq %rax, %rsi
callq 0x2df50
movq %rax, -0x1810(%rbp)
jmp 0x40d88
movq -0x1810(%rbp), %rax
movq %rax, -0x1100(%rbp)
leaq -0x10d8(%rbp), %rdi
callq 0x24600
movslq (%rax), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x428e0
movq %rax, %rdi
callq 0x2dfb0
movq %rax, -0x1108(%rbp)
leaq -0x1100(%rbp), %rdi
leaq -0x1108(%rbp), %rsi
callq 0x42b90
testb $0x1, %al
jne 0x40dd9
jmp 0x40df7
movb $0x0, -0x10e1(%rbp)
movq 0x38209(%rip), %rdi     # 0x78ff0
leaq 0x19828(%rip), %rsi     # 0x5a616
callq 0x6520
jmp 0x40df5
jmp 0x40e60
leaq -0x10f0(%rbp), %rdi
callq 0x42b70
movslq 0x20(%rax), %rsi
leaq -0x10d0(%rbp), %rdi
callq 0x1ab60
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xa, %edx
callq 0x2dfe0
movl %eax, -0x181c(%rbp)
jmp 0x40e2c
leaq -0x1100(%rbp), %rdi
callq 0x2e020
movq %rax, %rdi
addq $0x20, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1a9b0
movq %rax, %rcx
movl -0x181c(%rbp), %eax
cmpl (%rcx), %eax
je 0x40e5e
movb $0x0, -0x10e1(%rbp)
jmp 0x40e62
jmp 0x40e60
jmp 0x40e62
leaq -0x10f0(%rbp), %rdi
callq 0x42bc0
jmp 0x40d13
testb $0x1, -0x10e1(%rbp)
je 0x41077
leaq -0x1120(%rbp), %rdi
callq 0x1ac10
movslq -0xe98(%rbp), %rsi
leaq -0x10d0(%rbp), %rdi
movq %rdi, -0x1838(%rbp)
callq 0x1ab60
movq -0x1838(%rbp), %rdi
movq %rax, -0x1830(%rbp)
movslq -0xe98(%rbp), %rsi
callq 0x1ab60
movq %rax, %rdi
leaq 0x195cb(%rip), %rsi     # 0x5a495
movq $-0x1, %rdx
movq %rdx, -0x1828(%rbp)
callq 0x64f0
movq -0x1830(%rbp), %rsi
movq -0x1828(%rbp), %rcx
movq %rax, %rdx
incq %rdx
leaq -0x1148(%rbp), %rdi
callq 0x6550
jmp 0x40eff
xorl %eax, %eax
movl %eax, %esi
leaq -0x1148(%rbp), %rdi
movl $0xa, %edx
callq 0x2dfe0
movl %eax, -0x183c(%rbp)
jmp 0x40f1c
movl -0x183c(%rbp), %eax
movl %eax, -0x1124(%rbp)
leaq -0x1120(%rbp), %rdi
leaq -0x1124(%rbp), %rsi
callq 0x42bf0
jmp 0x40f3d
leaq -0x1148(%rbp), %rdi
callq 0x6a08
leaq -0x10d8(%rbp), %rdi
callq 0x24600
movslq (%rax), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x428e0
movq %rax, -0x1850(%rbp)
leaq -0x1169(%rbp), %rdi
movq %rdi, -0x1848(%rbp)
callq 0x6910
movq -0x1848(%rbp), %rdx
leaq 0x1957f(%rip), %rsi     # 0x5a50b
leaq -0x1168(%rbp), %rdi
callq 0xab20
jmp 0x40f9a
movq -0x1850(%rbp), %rdi
leaq -0x1168(%rbp), %rsi
callq 0x42c20
movq %rax, -0x1858(%rbp)
jmp 0x40fb6
movq -0x1858(%rbp), %rdi
leaq -0x1120(%rbp), %rsi
callq 0x26690
jmp 0x40fcb
leaq -0x1168(%rbp), %rdi
callq 0x6a08
leaq -0x1169(%rbp), %rdi
callq 0x65a0
leaq -0x1120(%rbp), %rdi
callq 0x1aa00
jmp 0x41077
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x41066
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x1148(%rbp), %rdi
callq 0x6a08
jmp 0x41066
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x4105a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x1168(%rbp), %rdi
callq 0x6a08
leaq -0x1169(%rbp), %rdi
callq 0x65a0
leaq -0x1120(%rbp), %rdi
callq 0x1aa00
jmp 0x41108
jmp 0x41079
leaq -0x10d8(%rbp), %rdi
callq 0x24620
jmp 0x40cca
movslq -0xf30(%rbp), %rax
movq %rax, -0x1860(%rbp)
leaq -0xcb0(%rbp), %rdi
callq 0xf7f0
movq %rax, %rcx
movq -0x1860(%rbp), %rax
cmpq %rcx, %rax
jne 0x410bf
movl $0x2c, -0x270(%rbp)
jmp 0x410c9
movl $0x0, -0x270(%rbp)
leaq -0x10d0(%rbp), %rdi
callq 0xfe90
leaq -0x10b8(%rbp), %rdi
callq 0x6410
movl -0x270(%rbp), %eax
movl %eax, -0x1864(%rbp)
testl %eax, %eax
je 0x41103
jmp 0x410f3
movl -0x1864(%rbp), %eax
subl $0x2c, %eax
je 0x41125
jmp 0x419f5
jmp 0x40a79
leaq -0x10d0(%rbp), %rdi
callq 0xfe90
leaq -0x10b8(%rbp), %rdi
callq 0x6410
jmp 0x41a52
leaq -0x260(%rbp), %rdi
callq 0x60f0
jmp 0x41133
movl $0x0, -0x1170(%rbp)
movslq -0x1170(%rbp), %rax
movq %rax, -0x1870(%rbp)
leaq -0x290(%rbp), %rdi
callq 0xb670
movq %rax, %rcx
movq -0x1870(%rbp), %rax
cmpq %rcx, %rax
jae 0x419eb
movslq -0x1170(%rbp), %rsi
leaq -0x290(%rbp), %rdi
callq 0x1ab60
movq %rax, %rsi
movq 0x37e21(%rip), %rdi     # 0x78fa8
callq 0x64d0
movq %rax, -0x1878(%rbp)
jmp 0x41195
movq -0x1878(%rbp), %rdi
leaq 0x1910e(%rip), %rsi     # 0x5a2b1
callq 0x6520
jmp 0x411aa
movslq -0x1170(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x428e0
movq %rax, -0x1888(%rbp)
leaq -0x1191(%rbp), %rdi
movq %rdi, -0x1880(%rbp)
callq 0x6910
movq -0x1880(%rbp), %rdx
leaq 0x19326(%rip), %rsi     # 0x5a50b
leaq -0x1190(%rbp), %rdi
callq 0xab20
jmp 0x411f3
movq -0x1888(%rbp), %rdi
leaq -0x1190(%rbp), %rsi
callq 0x42c20
movq %rax, -0x1890(%rbp)
jmp 0x4120f
movq -0x1890(%rbp), %rdi
callq 0xf7f0
movq %rax, -0x1898(%rbp)
leaq -0x1190(%rbp), %rdi
callq 0x6a08
leaq -0x1191(%rbp), %rdi
callq 0x65a0
movq -0x1898(%rbp), %rax
cmpq $0x1, %rax
jne 0x41373
movslq -0x1170(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x428e0
movq %rax, -0x18a8(%rbp)
leaq -0x11b9(%rbp), %rdi
movq %rdi, -0x18a0(%rbp)
callq 0x6910
movq -0x18a0(%rbp), %rdx
leaq 0x19285(%rip), %rsi     # 0x5a50b
leaq -0x11b8(%rbp), %rdi
callq 0xab20
jmp 0x41294
movq -0x18a8(%rbp), %rdi
leaq -0x11b8(%rbp), %rsi
callq 0x42c20
movq %rax, -0x18b0(%rbp)
jmp 0x412b0
movq -0x18b0(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1a9b0
movl (%rax), %esi
movq 0x37cdf(%rip), %rdi     # 0x78fa8
callq 0x68d0
jmp 0x412d0
leaq -0x11b8(%rbp), %rdi
callq 0x6a08
leaq -0x11b9(%rbp), %rdi
callq 0x65a0
jmp 0x4138a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x4131f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x1190(%rbp), %rdi
callq 0x6a08
leaq -0x1191(%rbp), %rdi
callq 0x65a0
jmp 0x41a52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x41362
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x11b8(%rbp), %rdi
callq 0x6a08
leaq -0x11b9(%rbp), %rdi
callq 0x65a0
jmp 0x41a52
movq 0x37c2e(%rip), %rdi     # 0x78fa8
leaq 0x192a7(%rip), %rsi     # 0x5a628
callq 0x6520
jmp 0x41388
jmp 0x4138a
leaq -0xed0(%rbp), %rdi
callq 0x42ae0
movq %rax, -0x11c8(%rbp)
leaq -0xed0(%rbp), %rdi
callq 0x42b40
movq %rax, -0x11d0(%rbp)
leaq -0x11c8(%rbp), %rdi
leaq -0x11d0(%rbp), %rsi
callq 0x42b10
testb $0x1, %al
jne 0x413cc
jmp 0x419c0
leaq -0x11f1(%rbp), %rdi
movq %rdi, -0x18b8(%rbp)
callq 0x6910
movq -0x18b8(%rbp), %rdx
leaq 0x18ec5(%rip), %rsi     # 0x5a2b2
leaq -0x11f0(%rbp), %rdi
callq 0xab20
jmp 0x413fb
leaq -0x11f1(%rbp), %rdi
callq 0x65a0
movslq -0x1170(%rbp), %rsi
leaq -0x2e8(%rbp), %rdi
callq 0x42940
movq %rax, -0x18c8(%rbp)
leaq -0x11c8(%rbp), %rdi
callq 0x42b70
movq -0x18c8(%rbp), %rdi
movq %rax, %rsi
callq 0xf400
movq %rax, -0x18c0(%rbp)
jmp 0x41445
movq -0x18c0(%rbp), %rax
movq %rax, -0x1200(%rbp)
movslq -0x1170(%rbp), %rsi
leaq -0x2e8(%rbp), %rdi
callq 0x42940
movq %rax, %rdi
callq 0xf470
movq %rax, -0x1208(%rbp)
leaq -0x1200(%rbp), %rdi
leaq -0x1208(%rbp), %rsi
callq 0xf440
testb $0x1, %al
jne 0x4148e
jmp 0x414eb
leaq 0x19195(%rip), %rsi     # 0x5a62a
leaq -0x11f0(%rbp), %rdi
callq 0x6710
jmp 0x414a3
jmp 0x414eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x11f1(%rbp), %rdi
callq 0x65a0
jmp 0x41a52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x11f0(%rbp), %rdi
callq 0x6a08
jmp 0x41a52
movslq -0x1170(%rbp), %rsi
leaq -0x308(%rbp), %rdi
callq 0x42940
movq %rax, -0x18d8(%rbp)
leaq -0x11c8(%rbp), %rdi
callq 0x42b70
movq -0x18d8(%rbp), %rdi
movq %rax, %rsi
callq 0xf400
movq %rax, -0x18d0(%rbp)
jmp 0x41529
movq -0x18d0(%rbp), %rax
movq %rax, -0x1210(%rbp)
movq -0x1210(%rbp), %rax
movq %rax, -0x1200(%rbp)
movslq -0x1170(%rbp), %rsi
leaq -0x308(%rbp), %rdi
callq 0x42940
movq %rax, %rdi
callq 0xf470
movq %rax, -0x1218(%rbp)
leaq -0x1200(%rbp), %rdi
leaq -0x1218(%rbp), %rsi
callq 0xf440
testb $0x1, %al
jne 0x41580
jmp 0x41597
leaq 0x17ec0(%rip), %rsi     # 0x59447
leaq -0x11f0(%rbp), %rdi
callq 0x6500
jmp 0x41595
jmp 0x41597
movslq -0x1170(%rbp), %rsi
leaq -0x328(%rbp), %rdi
callq 0x42940
movq %rax, -0x18e8(%rbp)
leaq -0x11c8(%rbp), %rdi
callq 0x42b70
movq -0x18e8(%rbp), %rdi
movq %rax, %rsi
callq 0xf400
movq %rax, -0x18e0(%rbp)
jmp 0x415d5
movq -0x18e0(%rbp), %rax
movq %rax, -0x1220(%rbp)
movq -0x1220(%rbp), %rax
movq %rax, -0x1200(%rbp)
movslq -0x1170(%rbp), %rsi
leaq -0x328(%rbp), %rdi
callq 0x42940
movq %rax, %rdi
callq 0xf470
movq %rax, -0x1228(%rbp)
leaq -0x1200(%rbp), %rdi
leaq -0x1228(%rbp), %rsi
callq 0xf440
testb $0x1, %al
jne 0x4162c
jmp 0x41643
leaq 0x18ff5(%rip), %rsi     # 0x5a628
leaq -0x11f0(%rbp), %rdi
callq 0x6500
jmp 0x41641
jmp 0x41643
movslq -0x1170(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x428e0
movq %rax, -0x18f8(%rbp)
leaq -0x11c8(%rbp), %rdi
callq 0x42b70
movq -0x18f8(%rbp), %rdi
movq %rax, %rsi
callq 0x42c50
movq %rax, -0x18f0(%rbp)
jmp 0x41681
movq -0x18f0(%rbp), %rdi
callq 0xf7f0
cmpq $0x0, %rax
jne 0x416c9
movq 0x3790e(%rip), %rdi     # 0x78fa8
leaq 0x18c10(%rip), %rsi     # 0x5a2b1
callq 0x6520
movq %rax, -0x1900(%rbp)
jmp 0x416af
movq -0x1900(%rbp), %rdi
leaq 0x18f6b(%rip), %rsi     # 0x5a628
callq 0x6520
jmp 0x416c4
jmp 0x419a3
movslq -0x1170(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x428e0
movq %rax, -0x1910(%rbp)
leaq -0x11c8(%rbp), %rdi
callq 0x42b70
movq -0x1910(%rbp), %rdi
movq %rax, %rsi
callq 0x42c50
movq %rax, -0x1908(%rbp)
jmp 0x41707
movq -0x1908(%rbp), %rdi
callq 0xf7f0
cmpq $0x1, %rax
jne 0x417b8
movq 0x37884(%rip), %rdi     # 0x78fa8
leaq 0x18b86(%rip), %rsi     # 0x5a2b1
callq 0x6520
movq %rax, -0x1918(%rbp)
jmp 0x41739
movslq -0x1170(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x428e0
movq %rax, -0x1928(%rbp)
leaq -0x11c8(%rbp), %rdi
callq 0x42b70
movq -0x1928(%rbp), %rdi
movq %rax, %rsi
callq 0x42c50
movq %rax, -0x1920(%rbp)
jmp 0x41777
movq -0x1920(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1a9b0
movq -0x1918(%rbp), %rdi
movl (%rax), %esi
callq 0x68d0
movq %rax, -0x1930(%rbp)
jmp 0x4179e
movq -0x1930(%rbp), %rdi
leaq -0x11f0(%rbp), %rsi
callq 0x64d0
jmp 0x417b3
jmp 0x419a1
movq 0x377e9(%rip), %rdi     # 0x78fa8
leaq 0x18aeb(%rip), %rsi     # 0x5a2b1
callq 0x6520
jmp 0x417cd
movl $0x0, -0x122c(%rbp)
movslq -0x122c(%rbp), %rax
movq %rax, -0x1948(%rbp)
movslq -0x1170(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x428e0
movq %rax, -0x1940(%rbp)
leaq -0x11c8(%rbp), %rdi
callq 0x42b70
movq -0x1940(%rbp), %rdi
movq %rax, %rsi
callq 0x42c50
movq %rax, -0x1938(%rbp)
jmp 0x41823
movq -0x1938(%rbp), %rdi
callq 0xf7f0
movq %rax, %rcx
movq -0x1948(%rbp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0x418d9
movslq -0x1170(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x428e0
movq %rax, -0x1958(%rbp)
leaq -0x11c8(%rbp), %rdi
callq 0x42b70
movq -0x1958(%rbp), %rdi
movq %rax, %rsi
callq 0x42c50
movq %rax, -0x1950(%rbp)
jmp 0x41884
movq -0x1950(%rbp), %rdi
movslq -0x122c(%rbp), %rsi
callq 0x1a9b0
movl (%rax), %esi
movq 0x37708(%rip), %rdi     # 0x78fa8
callq 0x68d0
movq %rax, -0x1960(%rbp)
jmp 0x418ae
movq -0x1960(%rbp), %rdi
leaq 0x18d70(%rip), %rsi     # 0x5a62c
callq 0x6520
jmp 0x418c3
jmp 0x418c5
movl -0x122c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x122c(%rbp)
jmp 0x417d7
movslq -0x1170(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x428e0
movq %rax, -0x1970(%rbp)
leaq -0x11c8(%rbp), %rdi
callq 0x42b70
movq -0x1970(%rbp), %rdi
movq %rax, %rsi
callq 0x42c50
movq %rax, -0x1968(%rbp)
jmp 0x41917
movslq -0x1170(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x428e0
movq %rax, -0x1980(%rbp)
leaq -0x11c8(%rbp), %rdi
callq 0x42b70
movq -0x1980(%rbp), %rdi
movq %rax, %rsi
callq 0x42c50
movq %rax, -0x1978(%rbp)
jmp 0x41955
movq -0x1978(%rbp), %rdi
callq 0xf7f0
movq -0x1968(%rbp), %rdi
movq %rax, %rsi
decq %rsi
callq 0x1a9b0
movl (%rax), %esi
movq 0x3762c(%rip), %rdi     # 0x78fa8
callq 0x68d0
movq %rax, -0x1988(%rbp)
jmp 0x4198a
movq -0x1988(%rbp), %rdi
leaq -0x11f0(%rbp), %rsi
callq 0x64d0
jmp 0x4199f
jmp 0x419a1
jmp 0x419a3
leaq -0x11f0(%rbp), %rdi
callq 0x6a08
leaq -0x11c8(%rbp), %rdi
callq 0x42bc0
jmp 0x4139d
movq 0x375e1(%rip), %rdi     # 0x78fa8
movq 0x375c2(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x419d5
jmp 0x419d7
movl -0x1170(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1170(%rbp)
jmp 0x4113d
movl $0x0, -0x270(%rbp)
leaq -0xf28(%rbp), %rdi
callq 0x6a08
leaq -0xed0(%rbp), %rdi
callq 0x42c80
leaq -0xe90(%rbp), %rdi
callq 0x6a08
leaq -0xe70(%rbp), %rdi
callq 0x6410
leaq -0xce8(%rbp), %rdi
callq 0x6a08
leaq -0xcb0(%rbp), %rdi
callq 0x1aa00
movl -0x270(%rbp), %eax
testl %eax, %eax
jne 0x4237f
jmp 0x41a4d
jmp 0x4236e
leaq -0xf28(%rbp), %rdi
callq 0x6a08
leaq -0xed0(%rbp), %rdi
callq 0x42c80
leaq -0xe90(%rbp), %rdi
callq 0x6a08
leaq -0xe70(%rbp), %rdi
callq 0x6410
leaq -0xce8(%rbp), %rdi
callq 0x6a08
leaq -0xcb0(%rbp), %rdi
callq 0x1aa00
jmp 0x423df
leaq -0x1260(%rbp), %rdi
callq 0xf2f0
movl $0x0, -0x1264(%rbp)
movslq -0x1264(%rbp), %rax
movq %rax, -0x1990(%rbp)
leaq -0x290(%rbp), %rdi
callq 0xb670
movq %rax, %rcx
movq -0x1990(%rbp), %rax
cmpq %rcx, %rax
jae 0x41bc1
movslq -0x1264(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x428e0
movq %rax, %rdi
callq 0x42ca0
movq %rax, -0x1270(%rbp)
movslq -0x1264(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x428e0
movq %rax, %rdi
callq 0x2dfb0
movq %rax, -0x1278(%rbp)
leaq -0x1270(%rbp), %rdi
leaq -0x1278(%rbp), %rsi
callq 0x2df80
testb $0x1, %al
jne 0x41b3f
jmp 0x41bab
leaq -0x1270(%rbp), %rdi
callq 0x2e020
movq %rax, %rsi
leaq -0x1260(%rbp), %rdi
callq 0xf310
movb %dl, -0x1999(%rbp)
movq %rax, -0x1998(%rbp)
jmp 0x41b69
movb -0x1999(%rbp), %al
movq -0x1998(%rbp), %rcx
movq %rcx, -0x1288(%rbp)
movb %al, -0x1280(%rbp)
leaq -0x1270(%rbp), %rdi
callq 0x42cd0
jmp 0x41b04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
jmp 0x42360
jmp 0x41bad
movl -0x1264(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1264(%rbp)
jmp 0x41ab5
movq 0x373e0(%rip), %rdi     # 0x78fa8
leaq 0x189f6(%rip), %rsi     # 0x5a5c5
callq 0x6520
jmp 0x41bd6
leaq -0x1260(%rbp), %rdi
callq 0xf4e0
movq %rax, -0x1290(%rbp)
leaq -0x1260(%rbp), %rdi
callq 0xf470
movq %rax, -0x1298(%rbp)
leaq -0x1290(%rbp), %rdi
leaq -0x1298(%rbp), %rsi
callq 0xf440
testb $0x1, %al
jne 0x41c15
jmp 0x41c5e
movq 0x3738c(%rip), %rdi     # 0x78fa8
leaq 0x1868e(%rip), %rsi     # 0x5a2b1
callq 0x6520
movq %rax, -0x19a8(%rbp)
jmp 0x41c31
leaq -0x1290(%rbp), %rdi
callq 0xf6d0
movq -0x19a8(%rbp), %rdi
movq %rax, %rsi
callq 0x64d0
jmp 0x41c4e
jmp 0x41c50
leaq -0x1290(%rbp), %rdi
callq 0x102e0
jmp 0x41be9
movq 0x37343(%rip), %rdi     # 0x78fa8
movq 0x37324(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x41c73
movl $0x0, -0x129c(%rbp)
movslq -0x129c(%rbp), %rax
movq %rax, -0x19b0(%rbp)
leaq -0x290(%rbp), %rdi
callq 0xb670
movq %rax, %rcx
movq -0x19b0(%rbp), %rax
cmpq %rcx, %rax
jae 0x42352
movslq -0x129c(%rbp), %rsi
leaq -0x290(%rbp), %rdi
callq 0x1ab60
movq %rax, %rsi
movq 0x372e1(%rip), %rdi     # 0x78fa8
callq 0x64d0
movq %rax, -0x19b8(%rbp)
jmp 0x41cd5
movq -0x19b8(%rbp), %rdi
leaq 0x185ce(%rip), %rsi     # 0x5a2b1
callq 0x6520
jmp 0x41cea
leaq -0x1260(%rbp), %rdi
callq 0xf4e0
movq %rax, -0x12a8(%rbp)
leaq -0x1260(%rbp), %rdi
callq 0xf470
movq %rax, -0x12b0(%rbp)
leaq -0x12a8(%rbp), %rdi
leaq -0x12b0(%rbp), %rsi
callq 0xf440
testb $0x1, %al
jne 0x41d2c
jmp 0x42327
leaq -0x12d1(%rbp), %rdi
movq %rdi, -0x19c0(%rbp)
callq 0x6910
movq -0x19c0(%rbp), %rdx
leaq 0x18565(%rip), %rsi     # 0x5a2b2
leaq -0x12d0(%rbp), %rdi
callq 0xab20
jmp 0x41d5b
leaq -0x12d1(%rbp), %rdi
callq 0x65a0
movslq -0x129c(%rbp), %rsi
leaq -0x2e8(%rbp), %rdi
callq 0x42940
movq %rax, -0x19d0(%rbp)
leaq -0x12a8(%rbp), %rdi
callq 0xf6d0
movq -0x19d0(%rbp), %rdi
movq %rax, %rsi
callq 0xf400
movq %rax, -0x19c8(%rbp)
jmp 0x41da5
movq -0x19c8(%rbp), %rax
movq %rax, -0x12e0(%rbp)
movslq -0x129c(%rbp), %rsi
leaq -0x2e8(%rbp), %rdi
callq 0x42940
movq %rax, %rdi
callq 0xf470
movq %rax, -0x12e8(%rbp)
leaq -0x12e0(%rbp), %rdi
leaq -0x12e8(%rbp), %rsi
callq 0xf440
testb $0x1, %al
jne 0x41dee
jmp 0x41e4b
leaq 0x18835(%rip), %rsi     # 0x5a62a
leaq -0x12d0(%rbp), %rdi
callq 0x6710
jmp 0x41e03
jmp 0x41e4b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x12d1(%rbp), %rdi
callq 0x65a0
jmp 0x42360
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x268(%rbp)
movl %eax, -0x26c(%rbp)
leaq -0x12d0(%rbp), %rdi
callq 0x6a08
jmp 0x42360
movslq -0x129c(%rbp), %rsi
leaq -0x308(%rbp), %rdi
callq 0x42940
movq %rax, -0x19e0(%rbp)
leaq -0x12a8(%rbp), %rdi
callq 0xf6d0
movq -0x19e0(%rbp), %rdi
movq %rax, %rsi
callq 0xf400
movq %rax, -0x19d8(%rbp)
jmp 0x41e89
movq -0x19d8(%rbp), %rax
movq %rax, -0x12f0(%rbp)
movq -0x12f0(%rbp), %rax
movq %rax, -0x12e0(%rbp)
movslq -0x129c(%rbp), %rsi
leaq -0x308(%rbp), %rdi
callq 0x42940
movq %rax, %rdi
callq 0xf470
movq %rax, -0x12f8(%rbp)
leaq -0x12e0(%rbp), %rdi
leaq -0x12f8(%rbp), %rsi
callq 0xf440
testb $0x1, %al
jne 0x41ee0
jmp 0x41ef7
leaq 0x17560(%rip), %rsi     # 0x59447
leaq -0x12d0(%rbp), %rdi
callq 0x6500
jmp 0x41ef5
jmp 0x41ef7
movslq -0x129c(%rbp), %rsi
leaq -0x328(%rbp), %rdi
callq 0x42940
movq %rax, -0x19f0(%rbp)
leaq -0x12a8(%rbp), %rdi
callq 0xf6d0
movq -0x19f0(%rbp), %rdi
movq %rax, %rsi
callq 0xf400
movq %rax, -0x19e8(%rbp)
jmp 0x41f35
movq -0x19e8(%rbp), %rax
movq %rax, -0x1300(%rbp)
movq -0x1300(%rbp), %rax
movq %rax, -0x12e0(%rbp)
movslq -0x129c(%rbp), %rsi
leaq -0x328(%rbp), %rdi
callq 0x42940
movq %rax, %rdi
callq 0xf470
movq %rax, -0x1308(%rbp)
leaq -0x12e0(%rbp), %rdi
leaq -0x1308(%rbp), %rsi
callq 0xf440
testb $0x1, %al
jne 0x41f8c
jmp 0x41fa3
leaq 0x18695(%rip), %rsi     # 0x5a628
leaq -0x12d0(%rbp), %rdi
callq 0x6500
jmp 0x41fa1
jmp 0x41fa3
movslq -0x129c(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x428e0
movq %rax, -0x1a00(%rbp)
leaq -0x12a8(%rbp), %rdi
callq 0xf6d0
movq -0x1a00(%rbp), %rdi
movq %rax, %rsi
callq 0x42c50
movq %rax, -0x19f8(%rbp)
jmp 0x41fe1
movq -0x19f8(%rbp), %rdi
callq 0xf7f0
cmpq $0x0, %rax
jne 0x42029
movq 0x36fae(%rip), %rdi     # 0x78fa8
leaq 0x18627(%rip), %rsi     # 0x5a628
callq 0x6520
movq %rax, -0x1a08(%rbp)
jmp 0x4200f
movq -0x1a08(%rbp), %rdi
leaq 0x18294(%rip), %rsi     # 0x5a2b1
callq 0x6520
jmp 0x42024
jmp 0x4230a
movslq -0x129c(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x428e0
movq %rax, -0x1a18(%rbp)
leaq -0x12a8(%rbp), %rdi
callq 0xf6d0
movq -0x1a18(%rbp), %rdi
movq %rax, %rsi
callq 0x42c50
movq %rax, -0x1a10(%rbp)
jmp 0x42067
movq -0x1a10(%rbp), %rdi
callq 0xf7f0
cmpq $0x1, %rax
jne 0x42118
movslq -0x129c(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x428e0
movq %rax, -0x1a28(%rbp)
leaq -0x12a8(%rbp), %rdi
callq 0xf6d0
movq -0x1a28(%rbp), %rdi
movq %rax, %rsi
callq 0x42c50
movq %rax, -0x1a20(%rbp)
jmp 0x420bb
movq -0x1a20(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1a9b0
movl (%rax), %esi
movq 0x36ed4(%rip), %rdi     # 0x78fa8
callq 0x68d0
movq %rax, -0x1a30(%rbp)
jmp 0x420e2
movq -0x1a30(%rbp), %rdi
leaq -0x12d0(%rbp), %rsi
callq 0x64d0
movq %rax, -0x1a38(%rbp)
jmp 0x420fe
movq -0x1a38(%rbp), %rdi
leaq 0x181a5(%rip), %rsi     # 0x5a2b1
callq 0x6520
jmp 0x42113
jmp 0x42308
movl $0x0, -0x130c(%rbp)
movslq -0x130c(%rbp), %rax
movq %rax, -0x1a50(%rbp)
movslq -0x129c(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x428e0
movq %rax, -0x1a48(%rbp)
leaq -0x12a8(%rbp), %rdi
callq 0xf6d0
movq -0x1a48(%rbp), %rdi
movq %rax, %rsi
callq 0x42c50
movq %rax, -0x1a40(%rbp)
jmp 0x4216e
movq -0x1a40(%rbp), %rdi
callq 0xf7f0
movq %rax, %rcx
movq -0x1a50(%rbp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0x42224
movslq -0x129c(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x428e0
movq %rax, -0x1a60(%rbp)
leaq -0x12a8(%rbp), %rdi
callq 0xf6d0
movq -0x1a60(%rbp), %rdi
movq %rax, %rsi
callq 0x42c50
movq %rax, -0x1a58(%rbp)
jmp 0x421cf
movq -0x1a58(%rbp), %rdi
movslq -0x130c(%rbp), %rsi
callq 0x1a9b0
movl (%rax), %esi
movq 0x36dbd(%rip), %rdi     # 0x78fa8
callq 0x68d0
movq %rax, -0x1a68(%rbp)
jmp 0x421f9
movq -0x1a68(%rbp), %rdi
leaq 0x18425(%rip), %rsi     # 0x5a62c
callq 0x6520
jmp 0x4220e
jmp 0x42210
movl -0x130c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x130c(%rbp)
jmp 0x42122
movslq -0x129c(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x428e0
movq %rax, -0x1a78(%rbp)
leaq -0x12a8(%rbp), %rdi
callq 0xf6d0
movq -0x1a78(%rbp), %rdi
movq %rax, %rsi
callq 0x42c50
movq %rax, -0x1a70(%rbp)
jmp 0x42262
movslq -0x129c(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x428e0
movq %rax, -0x1a88(%rbp)
leaq -0x12a8(%rbp), %rdi
callq 0xf6d0
movq -0x1a88(%rbp), %rdi
movq %rax, %rsi
callq 0x42c50
movq %rax, -0x1a80(%rbp)
jmp 0x422a0
movq -0x1a80(%rbp), %rdi
callq 0xf7f0
movq -0x1a70(%rbp), %rdi
movq %rax, %rsi
decq %rsi
callq 0x1a9b0
movl (%rax), %esi
movq 0x36ce1(%rip), %rdi     # 0x78fa8
callq 0x68d0
movq %rax, -0x1a90(%rbp)
jmp 0x422d5
movq -0x1a90(%rbp), %rdi
leaq -0x12d0(%rbp), %rsi
callq 0x64d0
movq %rax, -0x1a98(%rbp)
jmp 0x422f1
movq -0x1a98(%rbp), %rdi
leaq 0x17fb2(%rip), %rsi     # 0x5a2b1
callq 0x6520
jmp 0x42306
jmp 0x42308
jmp 0x4230a
leaq -0x12d0(%rbp), %rdi
callq 0x6a08
leaq -0x12a8(%rbp), %rdi
callq 0x102e0
jmp 0x41cfd
movq 0x36c7a(%rip), %rdi     # 0x78fa8
movq 0x36c5b(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x4233c
jmp 0x4233e
movl -0x129c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x129c(%rbp)
jmp 0x41c7d
leaq -0x1260(%rbp), %rdi
callq 0xf740
jmp 0x4236e
leaq -0x1260(%rbp), %rdi
callq 0xf740
jmp 0x423df
movl $0x0, -0x4(%rbp)
movl $0x1, -0x270(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x6a08
leaq -0x358(%rbp), %rdi
callq 0xf720
leaq -0x328(%rbp), %rdi
callq 0x42d00
leaq -0x308(%rbp), %rdi
callq 0x42d00
leaq -0x2e8(%rbp), %rdi
callq 0x42d00
leaq -0x2c8(%rbp), %rdi
callq 0x42d60
movq -0x2a0(%rbp), %rax
movq %rax, %rsp
leaq -0x290(%rbp), %rdi
callq 0xfe90
jmp 0x42435
leaq -0x3f8(%rbp), %rdi
callq 0x6a08
leaq -0x358(%rbp), %rdi
callq 0xf720
leaq -0x328(%rbp), %rdi
callq 0x42d00
leaq -0x308(%rbp), %rdi
callq 0x42d00
leaq -0x2e8(%rbp), %rdi
callq 0x42d00
leaq -0x2c8(%rbp), %rdi
callq 0x42d60
leaq -0x290(%rbp), %rdi
callq 0xfe90
jmp 0x42452
leaq -0x260(%rbp), %rdi
callq 0x6140
leaq -0x58(%rbp), %rdi
callq 0x1aeb0
movl -0x4(%rbp), %eax
movq %rbp, %rsp
popq %rbp
retq
leaq -0x260(%rbp), %rdi
callq 0x6140
leaq -0x58(%rbp), %rdi
callq 0x1aeb0
movq -0x268(%rbp), %rdi
callq 0x6900
movq %rax, %rdi
callq 0x9b50
nopl (%rax,%rax)