// File: nikhilYadala[P]Python_to_cpp/Source/src/convert_to_cpp.cpp
// Function: convert_to_cpp(unsigned long, unsigned long, std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int>>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, function_declaration*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<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>>>>>&)
void convert_to_cpp(unsigned long int start,
					unsigned long int end,
					std::vector< line_pair >& lines,
					std::string& converted_code,
					function_declaration* _function,
					std::map< std::string,std::string >& variables )
{

// std::cout<<src.lines[itr1->first].first;
	std::vector< std::string > tokens;

	//std::string res_code;
	//break_into_words(lines[start].first,tokens);
	// for(std::vector< std::string >::iterator itr=tokens.begin();itr!=tokens.end();++itr)
	// 	std::cout<<*itr<<"--";

///////////////////////////////////////Function conversion starts/////////////////////////////////////
	
	
	break_into_words(lines[start].first,tokens);
	

	if(tokens[0]=="def")
	{
		_function->return_type="";
		_function->name=tokens[1];	
		std::vector< std::string >::iterator itr,itr1=tokens.begin();

		while(*(itr1++)!=":");

		for(itr=tokens.begin()+3;;itr++){
			if(*itr == ",")
				continue;
			if(*(itr)==")")
				break;
			_function->args.push_back(std::pair< std::string,std::string >(*itr,map_type(*itr1,start)));
			itr1++;
		}

	}
	for(std::vector< string_pair >::iterator itr=_function->args.begin();itr!=_function->args.end();++itr)
			variables[itr->first]=itr->second;
	
		

	for(unsigned long int i=start;i<=end;)						//start from start only not +1 as it will miss cases of outside															 
	{	
		tokens.clear();
		break_into_words(lines[i].first,tokens);
			// 	for(std::vector< std::string >::iterator itr=tokens.begin();itr!=tokens.end();itr=itr+1)
			// 	std::	cout<<"---"<<*itr<<"-----";
			// std::cout<<"\n\n";

		std::vector< std::string >::iterator itr=tokens.begin();		
		if(*itr=="if" || *itr == "elif")
		{
			std::vector< std::string >::iterator if_or_elif = itr; 
			itr++;
			bool is_not=0;
			if(*itr=="not")
				{
					is_not=1;
					itr++;
				}	
			std::string expr="";
			
			if(is_not)
				expr.append("!");

			while(itr!=tokens.end()-1)
				expr.append(*(itr++));
			
			converted_code.append((size_t)lines[i].second*tab_size,' ');
			if( *if_or_elif == "if")
				converted_code.append("if(");
			else converted_code.append("else if(");		
			converted_code.append(expr);
			converted_code.append(")\n");
			converted_code.append((size_t)lines[i].second*tab_size,' ');
			int spaces = (size_t)lines[i].second;
			converted_code.append("{\n");
			
			int space_count=lines[i].second,st=i;
			
			while(lines[++i].second>space_count);
				
			std::string snippet;
			convert_to_cpp(st+1,i-1,lines,snippet,_function,variables);
			converted_code.append(snippet);
			
			converted_code.append(spaces*tab_size,' ');
			converted_code.append("}\n");
			//i already incremented while changing lines
			continue;

		}
		
		////NOTE:- Every section puts \n at its end so no need to put one in each section's beginning

		if(*itr=="print")
		{
			itr++;
			converted_code.append((size_t)lines[i].second*tab_size,' ');
			converted_code.append("std::cout<<");
			int f=1;
			while(itr!=tokens.end())
			{
				if(*itr=="("||*itr==")")
					f=!f;

				if(!f||*itr!=",")
					converted_code.append(*itr);
				if(f&&*itr==",")
					converted_code.append("<<\"  \"<<");
				itr++;
			}
			converted_code.append(";\n");
			i++;
			continue;
		}

		if(*itr=="return")
		{
			converted_code.append((size_t)lines[i].second*tab_size,' ');
			converted_code.append("return ");
			std::vector< std::string >::iterator itr1;
			std::string expr="";
			bool f= 0;
			while((++itr)!=tokens.end()){
				if(*itr==":"){
					f=1;
					break;
				}
				expr.append(*itr);
			}
			itr1 = itr+1;
			
			converted_code.append(expr);
			converted_code.append(";\n");
			// std::cout<<"OKK";
			if(expr_type(expr,variables)!="")
				_function->return_type=expr_type(expr,variables);
			else if(f)
				_function->return_type=*itr1;
			
			break;	//break in return as must be last line of every sensible function  or block
		}

		if(*itr=="else")
		 {
		 	converted_code.append((size_t)lines[i].second*tab_size,' ');
			converted_code.append("else\n");
		 	converted_code.append((size_t)lines[i].second*tab_size,' ');
		 	converted_code.append("{\n");
		 	int spaces = (size_t)lines[i].second;

		 	int space_count=lines[i].second,st=i;			
			while(lines[++i].second>space_count);				
			std::string snippet;
			convert_to_cpp(st+1,i-1,lines,snippet,_function,variables);
			converted_code.append(snippet);
			
			converted_code.append(spaces*tab_size,' ');
			converted_code.append("}\n");
			////NOTE:- Every section puts \n at its end so no need to put one in each section's beginning
		 	continue;
		 }

		else if (*itr=="while")
		{

		// for(std::vector< std::string >::iterator itr=tokens.begin();itr!=tokens.end();itr=itr+1)
		// 		std::	cout<<"---"<<*itr<<"-----\n";
			itr++;
			bool is_not=0;
			if(*itr=="not")
				{
					is_not=1;
					itr++;
				}
			converted_code.append((size_t)lines[i].second*tab_size,' ');
			converted_code.append("while(");
			if(is_not) converted_code.append("!");
			while(*itr!=":"){
				converted_code.append(*itr);
				itr++;
			}

			converted_code.append(")\n");
					
			converted_code.append((size_t)lines[i].second*tab_size,' ');
			int spaces = (size_t)lines[i].second;
			converted_code.append("{\n");
			
			int space_count=lines[i].second,st=i;
			
			while(lines[++i].second>space_count);
				
			std::string snippet;
			convert_to_cpp(st+1,i-1,lines,snippet,_function,variables);
			converted_code.append(snippet);
			
			converted_code.append(spaces*tab_size,' ');
			converted_code.append("}\n");
			//i already incremented while changing lines
			continue;
		}

	//code for converting for loops in python to cpp
		else if(*itr=="for")
		{
			if(std::count(tokens.begin(),tokens.end(),"range")==0)
			{
			std::cout<<"KKK "<<tokens[1]<<"  "<<tokens[3]<<"\n";
			converted_code.append((size_t)lines[i].second*tab_size,' ');

				converted_code.append("\nfor (auto &").append(tokens[1]).append(" : ").append(tokens[3]).append(")");
 			int spaces = (size_t)lines[i].second;
			converted_code.append(spaces*tab_size,' ');
			converted_code.append("{\n");

			int space_count=lines[i].second,st=i;

			while(lines[++i].second>space_count); //to find the complete for block
			std::string snippet;
			convert_to_cpp(st+1,i-1,lines,snippet,_function,variables);
			converted_code.append(snippet);
			converted_code.append(spaces*tab_size,' ');
			converted_code.append("}\n");
			//i already incremented while changing lines
			continue;

			}
			else {
			converted_code.append((size_t)lines[i].second*tab_size,' ');
			int spaces=(size_t)lines[i].second;
			converted_code.append("for(long int ");
			converted_code.append(*(++itr)); 
			std::string var=*(itr); 

			std::string start_range="0";
			std::string end_range="";

			std::vector< std::string >::iterator itr2;
			itr2=++itr;//bypassing "in"

			if(*(++itr2)=="range")
			{
				if(*(++itr2)=="(")            //the case of range(3,5)
				{
					start_range = *(++itr2);
					
					if(*(++itr2)==",")
					{
						end_range=*(++itr2);
					}
					else						//the case of range(100)
					{
						end_range=start_range.append("-1");
						start_range="0";
					}

				} //end evaluating the expression in range()

				
			}//end the range()


			converted_code.append("=");
			converted_code.append((start_range));
			converted_code.append(";").append(var).append("<=").append((end_range)).append(";");
			converted_code.append(var).append("++)\n");//starting the for loop with {
				// i++;  //to go next line
			spaces = (size_t)lines[i].second;
			converted_code.append(spaces*tab_size,' ');
			converted_code.append("{\n");

			int space_count=lines[i].second,st=i;

			while(lines[++i].second>space_count); //to find the complete for block
			std::string snippet;
			convert_to_cpp(st+1,i-1,lines,snippet,_function,variables);
			converted_code.append(snippet);
			converted_code.append(spaces*tab_size,' ');
			converted_code.append("}\n");
			//i already incremented while changing lines
			continue;
		}


	}//end elseif statement for for loop

		else if (*itr!="def")	//treat every foreign token as variable name or function
		{

			std::string v=*itr;
			std::string expr="";
			bool is_function_call=1;
			if(*(itr+1)=="="){
				is_function_call=0;
				itr=itr+2;	//skip = sign
			}



			if(std::find(tokens.begin(), tokens.end(),"raw_input")!=tokens.end())
			{
				tokens.pop_back();
				itr=itr+3;
				bool f = 0;
				int i = 0;
				expr.append(*(itr+1));
				while(*itr!=":") {
					i++;
					// if(*itr=="(") f=1;
					// if(!f) expr.append(*itr);
					itr++;
					if(i==1000000)
					{
						std::cout<<": missing on line "<<i<<std::endl;
						exit(0);
					}
				}
				itr++;
				variables[v]=map_type(*itr,i);
				converted_code.append((size_t)lines[i].second*tab_size,' ');			
				converted_code.append(variables[v]);
				if(variables[v]=="artificial_string")
					converted_code.append(" "+v+"(\"\");\n");					
				else converted_code.append(" "+v+";\n"	);

				converted_code.append((size_t)lines[i].second*tab_size,' ');
				converted_code.append("std::cout<<");
				converted_code.append(expr);
				converted_code.append(";\n");
				converted_code.append((size_t)lines[i].second*tab_size,' ');
				converted_code.append("std::cin>>");
				converted_code.append(v);
				converted_code.append(";\n");

				
			}
			//all other function calls and varible declarations and procesing
			else{
					if(is_function_call)
						while(itr!=tokens.end()) expr.append(*itr++);
					else{
							while(*itr!=":" && itr!=tokens.end())
								expr.append(*itr++);
					}
					//if the type is expliciyly mentioned 
					bool type_annotated = 1;
					if(itr == tokens.end())
					{
						type_annotated = 0;
						if(!is_function_call)
							std::cout<<"[ WARNING ] Auto type predicting at line "<<i<<std::endl;
					}

					std::vector< std::string >::iterator itr1 = itr;
					if(type_annotated)	
						itr1 = itr+1;
					

		    		expr = eval_expr(expr);

					if(!is_function_call)
					{
						bool not_decl = (variables.find(v) != variables.end());
				
							if(!type_annotated)
								variables[v]=expr_type(expr,variables);
							else{
								std::string t ="";
								while(itr1!=tokens.end()){
									t.append(*itr1);
									itr1++;
								}
								variables[v]=map_type(t,i);
							}
									
							converted_code.append((size_t)lines[i].second*tab_size,' ');		
							
								if(expr_type(expr,variables)=="list")
								{
									itr = tokens.begin()+3;
									converted_code.append("std::"+variables[v]+" ").append(v).append(";");
									// std::string::iterator itr3=itr;
									// if(variables.count(*itr3))
									// {
									// 	for(std::vector <int>::iterator it=(*itr3).begin();it!=(*itr3).end();it++)

									// }


									while(*itr!="]")
									{
										if(*itr=="["||*itr==",")
											itr++;
 										else {converted_code.append("\n").append(v).append(".push_back(").append(*itr).append(");");
 											itr++;
 									}
 								    }


                                   }

						 		   if(expr_type(expr,variables)!="list")
									{	
										if(!not_decl) 
										converted_code.append(variables[v]);	
										converted_code.append(" ");
										converted_code.append(v);
										converted_code.append(" = ");
										converted_code.append(expr);
										converted_code.append(";\n");
									
									}
					}

					
					else{// if it is a function call
						converted_code.append((size_t)lines[i].second*tab_size,' ');
						converted_code.append(expr);
						converted_code.append(";\n");
					}
			}
			i++;
			continue;



		}	 
		i++;							// if nothing gets caught
	
	}		

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa20, %rsp            # imm = 0xA20
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
leaq -0x48(%rbp), %rdi
movq %rdi, -0x6e0(%rbp)
callq 0x7470
movq -0x18(%rbp), %rdi
movq -0x8(%rbp), %rsi
callq 0x7490
movq -0x6e0(%rbp), %rsi
movq %rax, %rdi
callq 0x3ed0
jmp 0x4571
xorl %eax, %eax
movl %eax, %esi
leaq -0x48(%rbp), %rdi
callq 0x74b0
movq %rax, %rdi
leaq 0x11af7(%rip), %rsi     # 0x1607f
callq 0x71d0
movb %al, -0x6e1(%rbp)
jmp 0x4595
movb -0x6e1(%rbp), %al
testb $0x1, %al
jne 0x45a4
jmp 0x47e5
movq -0x28(%rbp), %rdi
addq $0x20, %rdi
leaq 0x11c5b(%rip), %rsi     # 0x1620e
callq 0x3330
jmp 0x45ba
leaq -0x48(%rbp), %rdi
movl $0x1, %esi
callq 0x74b0
movq %rax, %rsi
movq -0x28(%rbp), %rdi
callq 0x3040
jmp 0x45d6
leaq -0x60(%rbp), %rdi
callq 0x74d0
leaq -0x48(%rbp), %rdi
callq 0x74f0
movq %rax, -0x68(%rbp)
leaq -0x68(%rbp), %rdi
xorl %esi, %esi
callq 0x7550
movq %rax, -0x70(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x11b65(%rip), %rsi     # 0x16173
callq 0x7520
movb %al, -0x6e2(%rbp)
jmp 0x461b
movb -0x6e2(%rbp), %al
testb $0x1, %al
jne 0x4627
jmp 0x463a
jmp 0x45ec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6f57
leaq -0x48(%rbp), %rdi
callq 0x74f0
movq %rax, -0x80(%rbp)
leaq -0x80(%rbp), %rdi
movl $0x3, %esi
callq 0x75b0
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x60(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x11a0f(%rip), %rsi     # 0x16083
callq 0x71d0
movb %al, -0x6e3(%rbp)
jmp 0x4681
movb -0x6e3(%rbp), %al
testb $0x1, %al
jne 0x468d
jmp 0x4692
jmp 0x477b
leaq -0x60(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x11984(%rip), %rsi     # 0x16029
callq 0x71d0
movb %al, -0x6e4(%rbp)
jmp 0x46b2
movb -0x6e4(%rbp), %al
testb $0x1, %al
jne 0x46be
jmp 0x46c3
jmp 0x47e3
movq -0x28(%rbp), %rax
addq $0x40, %rax
movq %rax, -0x6f8(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x7590
movq %rax, -0x6f0(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x7590
movq %rax, %rsi
leaq -0x100(%rbp), %rdi
callq 0x30f0
jmp 0x46fc
movl -0x8(%rbp), %edx
leaq -0xe0(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x42c0
jmp 0x4714
movq -0x6f0(%rbp), %rsi
leaq -0xc0(%rbp), %rdi
leaq -0xe0(%rbp), %rdx
callq 0x7620
jmp 0x4730
movq -0x6f8(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x75f0
jmp 0x4745
leaq -0xc0(%rbp), %rdi
callq 0x7660
leaq -0xe0(%rbp), %rdi
callq 0x3170
leaq -0x100(%rbp), %rdi
callq 0x3170
leaq -0x68(%rbp), %rdi
xorl %esi, %esi
callq 0x7550
movq %rax, -0x108(%rbp)
leaq -0x60(%rbp), %rdi
xorl %esi, %esi
callq 0x7550
movq %rax, -0x110(%rbp)
jmp 0x4661
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x47d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x47c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x7660
leaq -0xe0(%rbp), %rdi
callq 0x3170
leaq -0x100(%rbp), %rdi
callq 0x3170
jmp 0x6f57
jmp 0x47e5
movq -0x28(%rbp), %rdi
addq $0x40, %rdi
callq 0x7690
movq %rax, -0x118(%rbp)
movq -0x28(%rbp), %rdi
addq $0x40, %rdi
callq 0x7700
movq %rax, -0x120(%rbp)
leaq -0x118(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0x76c0
testb $0x1, %al
jne 0x4826
jmp 0x489b
leaq -0x118(%rbp), %rdi
movq %rdi, -0x718(%rbp)
callq 0x7730
movq -0x718(%rbp), %rdi
addq $0x20, %rax
movq %rax, -0x710(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x708(%rbp)
callq 0x7730
movq -0x708(%rbp), %rdi
movq %rax, %rsi
callq 0x7260
movq %rax, -0x700(%rbp)
jmp 0x4873
movq -0x710(%rbp), %rsi
movq -0x700(%rbp), %rdi
callq 0x3040
jmp 0x4888
jmp 0x488a
leaq -0x118(%rbp), %rdi
callq 0x7750
jmp 0x47f9
movq -0x8(%rbp), %rax
movq %rax, -0x128(%rbp)
movq -0x128(%rbp), %rax
cmpq -0x10(%rbp), %rax
ja 0x6f45
leaq -0x48(%rbp), %rdi
movq %rdi, -0x720(%rbp)
callq 0x7770
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
callq 0x7490
movq -0x720(%rbp), %rsi
movq %rax, %rdi
callq 0x3ed0
jmp 0x48e8
leaq -0x48(%rbp), %rdi
callq 0x74f0
movq %rax, -0x130(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x11779(%rip), %rsi     # 0x16087
callq 0x71d0
movb %al, -0x721(%rbp)
jmp 0x491b
movb -0x721(%rbp), %al
testb $0x1, %al
jne 0x4959
jmp 0x4927
leaq -0x130(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x11748(%rip), %rsi     # 0x16085
callq 0x71d0
movb %al, -0x722(%rbp)
jmp 0x494a
movb -0x722(%rbp), %al
testb $0x1, %al
jne 0x4959
jmp 0x4cfd
movq -0x130(%rbp), %rax
movq %rax, -0x138(%rbp)
leaq -0x130(%rbp), %rdi
movq %rdi, -0x730(%rbp)
xorl %esi, %esi
callq 0x7550
movq -0x730(%rbp), %rdi
movq %rax, -0x140(%rbp)
movb $0x0, -0x141(%rbp)
callq 0x7590
movq %rax, %rdi
leaq 0x116ea(%rip), %rsi     # 0x1608a
callq 0x71d0
movb %al, -0x723(%rbp)
jmp 0x49ad
movb -0x723(%rbp), %al
testb $0x1, %al
jne 0x49b9
jmp 0x49d5
movb $0x1, -0x141(%rbp)
leaq -0x130(%rbp), %rdi
xorl %esi, %esi
callq 0x7550
movq %rax, -0x150(%rbp)
leaq -0x171(%rbp), %rdi
movq %rdi, -0x738(%rbp)
callq 0x3400
movq -0x738(%rbp), %rdx
leaq 0x11818(%rip), %rsi     # 0x1620e
leaq -0x170(%rbp), %rdi
callq 0x3340
jmp 0x4a04
leaq -0x171(%rbp), %rdi
callq 0x32a0
testb $0x1, -0x141(%rbp)
je 0x4a5e
leaq 0x1166e(%rip), %rsi     # 0x1608e
leaq -0x170(%rbp), %rdi
callq 0x3420
jmp 0x4a2e
jmp 0x4a5e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x171(%rbp), %rdi
callq 0x32a0
jmp 0x6f57
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x4cec
jmp 0x4a60
leaq -0x48(%rbp), %rdi
callq 0x7370
movq %rax, -0x188(%rbp)
leaq -0x188(%rbp), %rdi
movl $0x1, %esi
callq 0x73a0
movq %rax, -0x180(%rbp)
leaq -0x130(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x7790
testb $0x1, %al
jne 0x4aa1
jmp 0x4ad5
leaq -0x130(%rbp), %rdi
xorl %esi, %esi
callq 0x7550
movq %rax, -0x190(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x7590
movq %rax, %rsi
leaq -0x170(%rbp), %rdi
callq 0x3430
jmp 0x4ad3
jmp 0x4a60
movq -0x20(%rbp), %rax
movq %rax, -0x740(%rbp)
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
callq 0x7490
movq -0x740(%rbp), %rdi
movslq 0x20(%rax), %rsi
shlq $0x2, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x4b0b
leaq -0x138(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x11566(%rip), %rsi     # 0x16087
callq 0x71d0
movb %al, -0x741(%rbp)
jmp 0x4b2e
movb -0x741(%rbp), %al
testb $0x1, %al
jne 0x4b3a
jmp 0x4b4e
movq -0x20(%rbp), %rdi
leaq 0x11550(%rip), %rsi     # 0x16095
callq 0x3420
jmp 0x4b4c
jmp 0x4b62
movq -0x20(%rbp), %rdi
leaq 0x11537(%rip), %rsi     # 0x16090
callq 0x3420
jmp 0x4b60
jmp 0x4b62
movq -0x20(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0x3430
jmp 0x4b74
movq -0x20(%rbp), %rdi
leaq 0x11594(%rip), %rsi     # 0x16113
callq 0x3420
jmp 0x4b86
movq -0x20(%rbp), %rax
movq %rax, -0x750(%rbp)
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
callq 0x7490
movq -0x750(%rbp), %rdi
movslq 0x20(%rax), %rsi
shlq $0x2, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x4bbc
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
callq 0x7490
movl 0x20(%rax), %eax
movl %eax, -0x194(%rbp)
movq -0x20(%rbp), %rdi
leaq 0x11712(%rip), %rsi     # 0x162f2
callq 0x3420
jmp 0x4be7
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
callq 0x7490
movl 0x20(%rax), %eax
movl %eax, -0x198(%rbp)
movq -0x128(%rbp), %rax
movl %eax, -0x19c(%rbp)
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
addq $0x1, %rsi
movq %rsi, -0x128(%rbp)
callq 0x7490
movl 0x20(%rax), %eax
cmpl -0x198(%rbp), %eax
jle 0x4c35
jmp 0x4c0d
leaq -0x1c0(%rbp), %rdi
movq %rdi, -0x758(%rbp)
callq 0x3360
movq -0x758(%rbp), %rcx
movl -0x19c(%rbp), %eax
incl %eax
movslq %eax, %rdi
movq -0x128(%rbp), %rsi
decq %rsi
movq -0x18(%rbp), %rdx
movq -0x28(%rbp), %r8
movq -0x30(%rbp), %r9
callq 0x4520
jmp 0x4c77
movq -0x20(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
callq 0x3430
jmp 0x4c89
movq -0x20(%rbp), %rdi
movl -0x194(%rbp), %eax
shll $0x2, %eax
movslq %eax, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x4ca5
movq -0x20(%rbp), %rdi
leaq 0x1165a(%rip), %rsi     # 0x1630a
callq 0x3420
jmp 0x4cb7
leaq -0x1c0(%rbp), %rdi
callq 0x3170
leaq -0x170(%rbp), %rdi
callq 0x3170
jmp 0x48a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x3170
leaq -0x170(%rbp), %rdi
callq 0x3170
jmp 0x6f57
leaq -0x130(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x11386(%rip), %rsi     # 0x16099
callq 0x71d0
movb %al, -0x759(%rbp)
jmp 0x4d20
movb -0x759(%rbp), %al
testb $0x1, %al
jne 0x4d2f
jmp 0x4f28
leaq -0x130(%rbp), %rdi
xorl %esi, %esi
callq 0x7550
movq %rax, -0x1c8(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x768(%rbp)
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
callq 0x7490
movq -0x768(%rbp), %rdi
movslq 0x20(%rax), %rsi
shlq $0x2, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x4d7a
movq -0x20(%rbp), %rdi
leaq 0x1131a(%rip), %rsi     # 0x1609f
callq 0x3420
jmp 0x4d8c
movl $0x1, -0x1cc(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x7370
movq %rax, -0x1d8(%rbp)
leaq -0x130(%rbp), %rdi
leaq -0x1d8(%rbp), %rsi
callq 0x7790
testb $0x1, %al
jne 0x4dc2
jmp 0x4eff
leaq -0x130(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x11301(%rip), %rsi     # 0x160d9
callq 0x71d0
movb %al, -0x769(%rbp)
jmp 0x4de5
movb -0x769(%rbp), %al
testb $0x1, %al
jne 0x4e20
jmp 0x4df1
leaq -0x130(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x11222(%rip), %rsi     # 0x16029
callq 0x71d0
movb %al, -0x76a(%rbp)
jmp 0x4e14
movb -0x76a(%rbp), %al
testb $0x1, %al
jne 0x4e20
jmp 0x4e37
cmpl $0x0, -0x1cc(%rbp)
setne %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x1cc(%rbp)
cmpl $0x0, -0x1cc(%rbp)
je 0x4e6f
leaq -0x130(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x1122d(%rip), %rsi     # 0x16083
callq 0x7520
movb %al, -0x76b(%rbp)
jmp 0x4e63
movb -0x76b(%rbp), %al
testb $0x1, %al
jne 0x4e6f
jmp 0x4e99
movq -0x20(%rbp), %rax
movq %rax, -0x778(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x7590
movq -0x778(%rbp), %rdi
movq %rax, %rsi
callq 0x3430
jmp 0x4e97
jmp 0x4e99
cmpl $0x0, -0x1cc(%rbp)
je 0x4ee5
leaq -0x130(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x111cb(%rip), %rsi     # 0x16083
callq 0x71d0
movb %al, -0x779(%rbp)
jmp 0x4ec5
movb -0x779(%rbp), %al
testb $0x1, %al
jne 0x4ed1
jmp 0x4ee5
movq -0x20(%rbp), %rdi
leaq 0x111cf(%rip), %rsi     # 0x160ab
callq 0x3420
jmp 0x4ee3
jmp 0x4ee5
leaq -0x130(%rbp), %rdi
xorl %esi, %esi
callq 0x7550
movq %rax, -0x1e0(%rbp)
jmp 0x4d96
movq -0x20(%rbp), %rdi
leaq 0x1122d(%rip), %rsi     # 0x16137
callq 0x3420
jmp 0x4f11
movq -0x128(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x128(%rbp)
jmp 0x48a6
leaq -0x130(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x11176(%rip), %rsi     # 0x160b4
callq 0x71d0
movb %al, -0x77a(%rbp)
jmp 0x4f4b
movb -0x77a(%rbp), %al
testb $0x1, %al
jne 0x4f5a
jmp 0x51ef
movq -0x20(%rbp), %rax
movq %rax, -0x788(%rbp)
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
callq 0x7490
movq -0x788(%rbp), %rdi
movslq 0x20(%rax), %rsi
shlq $0x2, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x4f90
movq -0x20(%rbp), %rdi
leaq 0x11120(%rip), %rsi     # 0x160bb
callq 0x3420
jmp 0x4fa2
leaq -0x1e8(%rbp), %rdi
callq 0x74d0
leaq -0x209(%rbp), %rdi
movq %rdi, -0x790(%rbp)
callq 0x3400
movq -0x790(%rbp), %rdx
leaq 0x1123f(%rip), %rsi     # 0x1620e
leaq -0x208(%rbp), %rdi
callq 0x3340
jmp 0x4fdd
leaq -0x209(%rbp), %rdi
callq 0x32a0
movb $0x0, -0x20a(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x77d0
movq %rax, -0x798(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x7370
movq -0x798(%rbp), %rdi
movq %rax, -0x218(%rbp)
leaq -0x218(%rbp), %rsi
callq 0x7790
testb $0x1, %al
jne 0x502f
jmp 0x50b7
leaq -0x130(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x1112e(%rip), %rsi     # 0x16173
callq 0x71d0
movb %al, -0x799(%rbp)
jmp 0x5052
movb -0x799(%rbp), %al
testb $0x1, %al
jne 0x505e
jmp 0x5095
movb $0x1, -0x20a(%rbp)
jmp 0x50b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x209(%rbp), %rdi
callq 0x32a0
jmp 0x6f57
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x51de
leaq -0x130(%rbp), %rdi
callq 0x7590
movq %rax, %rsi
leaq -0x208(%rbp), %rdi
callq 0x3430
jmp 0x50b2
jmp 0x4ff0
leaq -0x130(%rbp), %rdi
movl $0x1, %esi
callq 0x75b0
movq %rax, -0x220(%rbp)
movq -0x220(%rbp), %rax
movq %rax, -0x1e8(%rbp)
movq -0x20(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x3430
jmp 0x50ef
movq -0x20(%rbp), %rdi
leaq 0x1103d(%rip), %rsi     # 0x16137
callq 0x3420
jmp 0x5101
movq -0x30(%rbp), %rdx
leaq -0x240(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x3ab0
jmp 0x511a
leaq 0x110ed(%rip), %rsi     # 0x1620e
leaq -0x240(%rbp), %rdi
callq 0x7520
movb %al, -0x79a(%rbp)
jmp 0x5135
leaq -0x240(%rbp), %rdi
callq 0x3170
movb -0x79a(%rbp), %al
testb $0x1, %al
jne 0x514d
jmp 0x51a2
movq -0x30(%rbp), %rdx
leaq -0x260(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x3ab0
jmp 0x5166
movq -0x28(%rbp), %rdi
addq $0x20, %rdi
leaq -0x260(%rbp), %rsi
callq 0x32f0
leaq -0x260(%rbp), %rdi
callq 0x3170
jmp 0x51cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x240(%rbp), %rdi
callq 0x3170
jmp 0x51de
testb $0x1, -0x20a(%rbp)
je 0x51cb
leaq -0x1e8(%rbp), %rdi
callq 0x7590
movq %rax, %rsi
movq -0x28(%rbp), %rdi
addq $0x20, %rdi
callq 0x3040
jmp 0x51c9
jmp 0x51cb
jmp 0x51cd
leaq -0x208(%rbp), %rdi
callq 0x3170
jmp 0x6f45
leaq -0x208(%rbp), %rdi
callq 0x3170
jmp 0x6f57
leaq -0x130(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x10ebe(%rip), %rsi     # 0x160c3
callq 0x71d0
movb %al, -0x79b(%rbp)
jmp 0x5212
movb -0x79b(%rbp), %al
testb $0x1, %al
jne 0x5221
jmp 0x53c9
movq -0x20(%rbp), %rax
movq %rax, -0x7a8(%rbp)
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
callq 0x7490
movq -0x7a8(%rbp), %rdi
movslq 0x20(%rax), %rsi
shlq $0x2, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x5257
movq -0x20(%rbp), %rdi
leaq 0x10e66(%rip), %rsi     # 0x160c8
callq 0x3420
jmp 0x5269
movq -0x20(%rbp), %rax
movq %rax, -0x7b0(%rbp)
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
callq 0x7490
movq -0x7b0(%rbp), %rdi
movslq 0x20(%rax), %rsi
shlq $0x2, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x529f
movq -0x20(%rbp), %rdi
leaq 0x11048(%rip), %rsi     # 0x162f2
callq 0x3420
jmp 0x52b1
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
callq 0x7490
movslq 0x20(%rax), %rax
movl %eax, -0x264(%rbp)
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
callq 0x7490
movl 0x20(%rax), %eax
movl %eax, -0x268(%rbp)
movq -0x128(%rbp), %rax
movl %eax, -0x26c(%rbp)
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
addq $0x1, %rsi
movq %rsi, -0x128(%rbp)
callq 0x7490
movl 0x20(%rax), %eax
cmpl -0x268(%rbp), %eax
jle 0x5319
jmp 0x52f1
leaq -0x290(%rbp), %rdi
movq %rdi, -0x7b8(%rbp)
callq 0x3360
movq -0x7b8(%rbp), %rcx
movl -0x26c(%rbp), %eax
incl %eax
movslq %eax, %rdi
movq -0x128(%rbp), %rsi
decq %rsi
movq -0x18(%rbp), %rdx
movq -0x28(%rbp), %r8
movq -0x30(%rbp), %r9
callq 0x4520
jmp 0x535b
movq -0x20(%rbp), %rdi
leaq -0x290(%rbp), %rsi
callq 0x3430
jmp 0x536d
movq -0x20(%rbp), %rdi
movl -0x264(%rbp), %eax
shll $0x2, %eax
movslq %eax, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x5389
movq -0x20(%rbp), %rdi
leaq 0x10f76(%rip), %rsi     # 0x1630a
callq 0x3420
jmp 0x539b
leaq -0x290(%rbp), %rdi
callq 0x3170
jmp 0x48a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x290(%rbp), %rdi
callq 0x3170
jmp 0x6f57
leaq -0x130(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x10cef(%rip), %rsi     # 0x160ce
callq 0x71d0
movb %al, -0x7b9(%rbp)
jmp 0x53ec
movb -0x7b9(%rbp), %al
testb $0x1, %al
jne 0x53fb
jmp 0x56af
leaq -0x130(%rbp), %rdi
movq %rdi, -0x7c8(%rbp)
xorl %esi, %esi
callq 0x7550
movq -0x7c8(%rbp), %rdi
movq %rax, -0x298(%rbp)
movb $0x0, -0x299(%rbp)
callq 0x7590
movq %rax, %rdi
leaq 0x10c56(%rip), %rsi     # 0x1608a
callq 0x71d0
movb %al, -0x7ba(%rbp)
jmp 0x5441
movb -0x7ba(%rbp), %al
testb $0x1, %al
jne 0x544d
jmp 0x5469
movb $0x1, -0x299(%rbp)
leaq -0x130(%rbp), %rdi
xorl %esi, %esi
callq 0x7550
movq %rax, -0x2a8(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x7d0(%rbp)
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
callq 0x7490
movq -0x7d0(%rbp), %rdi
movslq 0x20(%rax), %rsi
shlq $0x2, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x549f
movq -0x20(%rbp), %rdi
leaq 0x10c2a(%rip), %rsi     # 0x160d4
callq 0x3420
jmp 0x54b1
testb $0x1, -0x299(%rbp)
je 0x54ce
movq -0x20(%rbp), %rdi
leaq 0x10bc9(%rip), %rsi     # 0x1608e
callq 0x3420
jmp 0x54cc
jmp 0x54ce
jmp 0x54d0
leaq -0x130(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x10c8d(%rip), %rsi     # 0x16173
callq 0x7520
movb %al, -0x7d1(%rbp)
jmp 0x54f3
movb -0x7d1(%rbp), %al
testb $0x1, %al
jne 0x54ff
jmp 0x553e
movq -0x20(%rbp), %rax
movq %rax, -0x7e0(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x7590
movq -0x7e0(%rbp), %rdi
movq %rax, %rsi
callq 0x3430
jmp 0x5527
leaq -0x130(%rbp), %rdi
xorl %esi, %esi
callq 0x7550
movq %rax, -0x2b0(%rbp)
jmp 0x54d0
movq -0x20(%rbp), %rdi
leaq 0x10bca(%rip), %rsi     # 0x16113
callq 0x3420
jmp 0x5550
movq -0x20(%rbp), %rax
movq %rax, -0x7e8(%rbp)
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
callq 0x7490
movq -0x7e8(%rbp), %rdi
movslq 0x20(%rax), %rsi
shlq $0x2, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x5586
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
callq 0x7490
movl 0x20(%rax), %eax
movl %eax, -0x2b4(%rbp)
movq -0x20(%rbp), %rdi
leaq 0x10d48(%rip), %rsi     # 0x162f2
callq 0x3420
jmp 0x55b1
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
callq 0x7490
movl 0x20(%rax), %eax
movl %eax, -0x2b8(%rbp)
movq -0x128(%rbp), %rax
movl %eax, -0x2bc(%rbp)
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
addq $0x1, %rsi
movq %rsi, -0x128(%rbp)
callq 0x7490
movl 0x20(%rax), %eax
cmpl -0x2b8(%rbp), %eax
jle 0x55ff
jmp 0x55d7
leaq -0x2e0(%rbp), %rdi
movq %rdi, -0x7f0(%rbp)
callq 0x3360
movq -0x7f0(%rbp), %rcx
movl -0x2bc(%rbp), %eax
incl %eax
movslq %eax, %rdi
movq -0x128(%rbp), %rsi
decq %rsi
movq -0x18(%rbp), %rdx
movq -0x28(%rbp), %r8
movq -0x30(%rbp), %r9
callq 0x4520
jmp 0x5641
movq -0x20(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x3430
jmp 0x5653
movq -0x20(%rbp), %rdi
movl -0x2b4(%rbp), %eax
shll $0x2, %eax
movslq %eax, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x566f
movq -0x20(%rbp), %rdi
leaq 0x10c90(%rip), %rsi     # 0x1630a
callq 0x3420
jmp 0x5681
leaq -0x2e0(%rbp), %rdi
callq 0x3170
jmp 0x48a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x2e0(%rbp), %rdi
callq 0x3170
jmp 0x6f57
leaq -0x130(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x10a16(%rip), %rsi     # 0x160db
callq 0x71d0
movb %al, -0x7f1(%rbp)
jmp 0x56d2
movb -0x7f1(%rbp), %al
testb $0x1, %al
jne 0x56e1
jmp 0x5f28
leaq -0x48(%rbp), %rdi
movq %rdi, -0x808(%rbp)
callq 0x74f0
movq -0x808(%rbp), %rdi
movq %rax, -0x2e8(%rbp)
callq 0x7370
movq %rax, -0x2f0(%rbp)
movq -0x2e8(%rbp), %rdi
movq -0x2f0(%rbp), %rsi
leaq 0x109bf(%rip), %rdx     # 0x160df
callq 0x77f0
movq %rax, -0x800(%rbp)
jmp 0x572e
movq -0x800(%rbp), %rax
cmpq $0x0, %rax
jne 0x59e9
movq 0x19892(%rip), %rdi     # 0x1efd8
leaq 0x10998(%rip), %rsi     # 0x160e5
callq 0x3220
movq %rax, -0x810(%rbp)
jmp 0x575b
leaq -0x48(%rbp), %rdi
movl $0x1, %esi
callq 0x74b0
movq -0x810(%rbp), %rdi
movq %rax, %rsi
callq 0x31f0
movq %rax, -0x818(%rbp)
jmp 0x5781
movq -0x818(%rbp), %rdi
leaq 0x10a8e(%rip), %rsi     # 0x1621d
callq 0x3220
movq %rax, -0x820(%rbp)
jmp 0x579d
leaq -0x48(%rbp), %rdi
movl $0x3, %esi
callq 0x74b0
movq -0x820(%rbp), %rdi
movq %rax, %rsi
callq 0x31f0
movq %rax, -0x828(%rbp)
jmp 0x57c3
movq -0x828(%rbp), %rdi
leaq 0x10a3c(%rip), %rsi     # 0x1620d
callq 0x3220
jmp 0x57d8
movq -0x20(%rbp), %rax
movq %rax, -0x830(%rbp)
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
callq 0x7490
movq -0x830(%rbp), %rdi
movslq 0x20(%rax), %rsi
shlq $0x2, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x580e
movq -0x20(%rbp), %rdi
leaq 0x108d1(%rip), %rsi     # 0x160ea
callq 0x3420
movq %rax, -0x838(%rbp)
jmp 0x5827
leaq -0x48(%rbp), %rdi
movl $0x1, %esi
callq 0x74b0
movq -0x838(%rbp), %rdi
movq %rax, %rsi
callq 0x3430
movq %rax, -0x840(%rbp)
jmp 0x584d
movq -0x840(%rbp), %rdi
leaq 0x1089c(%rip), %rsi     # 0x160f7
callq 0x3420
movq %rax, -0x848(%rbp)
jmp 0x5869
leaq -0x48(%rbp), %rdi
movl $0x3, %esi
callq 0x74b0
movq -0x848(%rbp), %rdi
movq %rax, %rsi
callq 0x3430
movq %rax, -0x850(%rbp)
jmp 0x588f
movq -0x850(%rbp), %rdi
leaq 0x1078c(%rip), %rsi     # 0x16029
callq 0x3420
jmp 0x58a4
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
callq 0x7490
movl 0x20(%rax), %eax
movl %eax, -0x2f4(%rbp)
movq -0x20(%rbp), %rdi
movl -0x2f4(%rbp), %eax
shll $0x2, %eax
movslq %eax, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x58d9
movq -0x20(%rbp), %rdi
leaq 0x10a0e(%rip), %rsi     # 0x162f2
callq 0x3420
jmp 0x58eb
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
callq 0x7490
movl 0x20(%rax), %eax
movl %eax, -0x2f8(%rbp)
movq -0x128(%rbp), %rax
movl %eax, -0x2fc(%rbp)
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
addq $0x1, %rsi
movq %rsi, -0x128(%rbp)
callq 0x7490
movl 0x20(%rax), %eax
cmpl -0x2f8(%rbp), %eax
jle 0x5939
jmp 0x5911
leaq -0x320(%rbp), %rdi
movq %rdi, -0x858(%rbp)
callq 0x3360
movq -0x858(%rbp), %rcx
movl -0x2fc(%rbp), %eax
incl %eax
movslq %eax, %rdi
movq -0x128(%rbp), %rsi
decq %rsi
movq -0x18(%rbp), %rdx
movq -0x28(%rbp), %r8
movq -0x30(%rbp), %r9
callq 0x4520
jmp 0x597b
movq -0x20(%rbp), %rdi
leaq -0x320(%rbp), %rsi
callq 0x3430
jmp 0x598d
movq -0x20(%rbp), %rdi
movl -0x2f4(%rbp), %eax
shll $0x2, %eax
movslq %eax, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x59a9
movq -0x20(%rbp), %rdi
leaq 0x10956(%rip), %rsi     # 0x1630a
callq 0x3420
jmp 0x59bb
leaq -0x320(%rbp), %rdi
callq 0x3170
jmp 0x48a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x320(%rbp), %rdi
callq 0x3170
jmp 0x6f57
movq -0x20(%rbp), %rax
movq %rax, -0x860(%rbp)
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
callq 0x7490
movq -0x860(%rbp), %rdi
movslq 0x20(%rax), %rsi
shlq $0x2, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x5a1f
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
callq 0x7490
movl 0x20(%rax), %eax
movl %eax, -0x324(%rbp)
movq -0x20(%rbp), %rdi
leaq 0x106b8(%rip), %rsi     # 0x160fb
callq 0x3420
jmp 0x5a4a
movq -0x20(%rbp), %rax
movq %rax, -0x868(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x77d0
movq %rax, %rdi
callq 0x7590
movq -0x868(%rbp), %rdi
movq %rax, %rsi
callq 0x3430
jmp 0x5a7a
leaq -0x130(%rbp), %rdi
callq 0x7590
movq %rax, %rsi
leaq -0x348(%rbp), %rdi
callq 0x30f0
jmp 0x5a97
leaq -0x369(%rbp), %rdi
movq %rdi, -0x870(%rbp)
callq 0x3400
movq -0x870(%rbp), %rdx
leaq 0x10651(%rip), %rsi     # 0x16109
leaq -0x368(%rbp), %rdi
callq 0x3340
jmp 0x5ac6
leaq -0x369(%rbp), %rdi
callq 0x32a0
leaq -0x391(%rbp), %rdi
movq %rdi, -0x878(%rbp)
callq 0x3400
movq -0x878(%rbp), %rdx
leaq 0x1071b(%rip), %rsi     # 0x1620e
leaq -0x390(%rbp), %rdi
callq 0x3340
jmp 0x5b01
leaq -0x391(%rbp), %rdi
callq 0x32a0
leaq -0x3a0(%rbp), %rdi
movq %rdi, -0x888(%rbp)
callq 0x74d0
leaq -0x130(%rbp), %rdi
callq 0x77d0
movq -0x888(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x3a0(%rbp)
callq 0x77d0
movq %rax, %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x1058b(%rip), %rsi     # 0x160df
callq 0x71d0
movb %al, -0x879(%rbp)
jmp 0x5b61
movb -0x879(%rbp), %al
testb $0x1, %al
jne 0x5b70
jmp 0x5cc7
leaq -0x3a0(%rbp), %rdi
callq 0x77d0
movq %rax, %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x1054b(%rip), %rsi     # 0x160d9
callq 0x71d0
movb %al, -0x889(%rbp)
jmp 0x5b9b
movb -0x889(%rbp), %al
testb $0x1, %al
jne 0x5baa
jmp 0x5cc5
leaq -0x3a0(%rbp), %rdi
callq 0x77d0
movq %rax, %rdi
callq 0x7590
movq %rax, %rsi
leaq -0x368(%rbp), %rdi
callq 0x3040
jmp 0x5bcf
leaq -0x3a0(%rbp), %rdi
callq 0x77d0
movq %rax, %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x10496(%rip), %rsi     # 0x16083
callq 0x71d0
movb %al, -0x88a(%rbp)
jmp 0x5bfa
movb -0x88a(%rbp), %al
testb $0x1, %al
jne 0x5c06
jmp 0x5c7b
leaq -0x3a0(%rbp), %rdi
callq 0x77d0
movq %rax, %rdi
callq 0x7590
movq %rax, %rsi
leaq -0x390(%rbp), %rdi
callq 0x3040
jmp 0x5c2b
jmp 0x5cc3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x369(%rbp), %rdi
callq 0x32a0
jmp 0x5f17
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x391(%rbp), %rdi
callq 0x32a0
jmp 0x5f0b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x5eff
leaq 0x10489(%rip), %rsi     # 0x1610b
leaq -0x368(%rbp), %rdi
callq 0x3420
movq %rax, -0x898(%rbp)
jmp 0x5c97
movq -0x898(%rbp), %rsi
leaq -0x390(%rbp), %rdi
callq 0x3040
jmp 0x5cac
leaq 0x10456(%rip), %rsi     # 0x16109
leaq -0x368(%rbp), %rdi
callq 0x3330
jmp 0x5cc1
jmp 0x5cc3
jmp 0x5cc5
jmp 0x5cc7
movq -0x20(%rbp), %rdi
leaq 0x1043d(%rip), %rsi     # 0x1610f
callq 0x3420
jmp 0x5cd9
movq -0x20(%rbp), %rdi
leaq -0x368(%rbp), %rsi
callq 0x3430
jmp 0x5ceb
movq -0x20(%rbp), %rdi
leaq 0x10490(%rip), %rsi     # 0x16186
callq 0x3420
movq %rax, -0x8a0(%rbp)
jmp 0x5d04
movq -0x8a0(%rbp), %rdi
leaq -0x348(%rbp), %rsi
callq 0x3430
movq %rax, -0x8a8(%rbp)
jmp 0x5d20
movq -0x8a8(%rbp), %rdi
leaq 0x103e0(%rip), %rsi     # 0x1610e
callq 0x3420
movq %rax, -0x8b0(%rbp)
jmp 0x5d3c
movq -0x8b0(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0x3430
movq %rax, -0x8b8(%rbp)
jmp 0x5d58
movq -0x8b8(%rbp), %rdi
leaq 0x10420(%rip), %rsi     # 0x16186
callq 0x3420
jmp 0x5d6d
movq -0x20(%rbp), %rdi
leaq -0x348(%rbp), %rsi
callq 0x3430
movq %rax, -0x8c0(%rbp)
jmp 0x5d86
movq -0x8c0(%rbp), %rdi
leaq 0x1037d(%rip), %rsi     # 0x16111
callq 0x3420
jmp 0x5d9b
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
callq 0x7490
movl 0x20(%rax), %eax
movl %eax, -0x324(%rbp)
movq -0x20(%rbp), %rdi
movl -0x324(%rbp), %eax
shll $0x2, %eax
movslq %eax, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x5dd0
movq -0x20(%rbp), %rdi
leaq 0x10517(%rip), %rsi     # 0x162f2
callq 0x3420
jmp 0x5de2
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
callq 0x7490
movl 0x20(%rax), %eax
movl %eax, -0x3a4(%rbp)
movq -0x128(%rbp), %rax
movl %eax, -0x3a8(%rbp)
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
addq $0x1, %rsi
movq %rsi, -0x128(%rbp)
callq 0x7490
movl 0x20(%rax), %eax
cmpl -0x3a4(%rbp), %eax
jle 0x5e30
jmp 0x5e08
leaq -0x3c8(%rbp), %rdi
movq %rdi, -0x8c8(%rbp)
callq 0x3360
movq -0x8c8(%rbp), %rcx
movl -0x3a8(%rbp), %eax
incl %eax
movslq %eax, %rdi
movq -0x128(%rbp), %rsi
decq %rsi
movq -0x18(%rbp), %rdx
movq -0x28(%rbp), %r8
movq -0x30(%rbp), %r9
callq 0x4520
jmp 0x5e72
movq -0x20(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
callq 0x3430
jmp 0x5e84
movq -0x20(%rbp), %rdi
movl -0x324(%rbp), %eax
shll $0x2, %eax
movslq %eax, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x5ea0
movq -0x20(%rbp), %rdi
leaq 0x1045f(%rip), %rsi     # 0x1630a
callq 0x3420
jmp 0x5eb2
leaq -0x3c8(%rbp), %rdi
callq 0x3170
leaq -0x390(%rbp), %rdi
callq 0x3170
leaq -0x368(%rbp), %rdi
callq 0x3170
leaq -0x348(%rbp), %rdi
callq 0x3170
jmp 0x48a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x3c8(%rbp), %rdi
callq 0x3170
leaq -0x390(%rbp), %rdi
callq 0x3170
leaq -0x368(%rbp), %rdi
callq 0x3170
leaq -0x348(%rbp), %rdi
callq 0x3170
jmp 0x6f57
leaq -0x130(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x10141(%rip), %rsi     # 0x1607f
callq 0x7520
movb %al, -0x8c9(%rbp)
jmp 0x5f4b
movb -0x8c9(%rbp), %al
testb $0x1, %al
jne 0x5f5a
jmp 0x6f28
leaq -0x130(%rbp), %rdi
callq 0x7590
movq %rax, %rsi
leaq -0x3e8(%rbp), %rdi
callq 0x30f0
jmp 0x5f77
leaq -0x409(%rbp), %rdi
movq %rdi, -0x8d8(%rbp)
callq 0x3400
movq -0x8d8(%rbp), %rdx
leaq 0x10276(%rip), %rsi     # 0x1620e
leaq -0x408(%rbp), %rdi
callq 0x3340
jmp 0x5fa6
leaq -0x409(%rbp), %rdi
callq 0x32a0
movb $0x1, -0x40a(%rbp)
leaq -0x130(%rbp), %rdi
movl $0x1, %esi
callq 0x75b0
movq %rax, -0x418(%rbp)
leaq -0x418(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x10128(%rip), %rsi     # 0x1610f
callq 0x71d0
movb %al, -0x8d9(%rbp)
jmp 0x5ff4
movb -0x8d9(%rbp), %al
testb $0x1, %al
jne 0x6000
jmp 0x605d
movb $0x0, -0x40a(%rbp)
leaq -0x130(%rbp), %rdi
movl $0x2, %esi
callq 0x75b0
movq %rax, -0x420(%rbp)
movq -0x420(%rbp), %rax
movq %rax, -0x130(%rbp)
jmp 0x605d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x409(%rbp), %rdi
callq 0x32a0
jmp 0x6f1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6f0e
leaq -0x48(%rbp), %rdi
movq %rdi, -0x8f0(%rbp)
callq 0x74f0
movq -0x8f0(%rbp), %rdi
movq %rax, -0x430(%rbp)
callq 0x7370
movq %rax, -0x438(%rbp)
movq -0x430(%rbp), %rdi
movq -0x438(%rbp), %rsi
leaq 0x1007a(%rip), %rdx     # 0x16116
callq 0x7840
movq %rax, -0x8e8(%rbp)
jmp 0x60aa
movq -0x8e8(%rbp), %rax
movq %rax, -0x428(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x7370
movq %rax, -0x440(%rbp)
leaq -0x428(%rbp), %rdi
leaq -0x440(%rbp), %rsi
callq 0x7790
testb $0x1, %al
jne 0x60e4
jmp 0x65d6
leaq -0x48(%rbp), %rdi
callq 0x7890
leaq -0x130(%rbp), %rdi
movq %rdi, -0x8f8(%rbp)
movl $0x3, %esi
callq 0x75b0
movq -0x8f8(%rbp), %rdi
movq %rax, -0x448(%rbp)
movq -0x448(%rbp), %rax
movq %rax, -0x130(%rbp)
movb $0x0, -0x449(%rbp)
movl $0x0, -0x450(%rbp)
movl $0x1, %esi
callq 0x75b0
movq %rax, -0x458(%rbp)
leaq -0x458(%rbp), %rdi
callq 0x7590
movq %rax, %rsi
leaq -0x408(%rbp), %rdi
callq 0x3430
jmp 0x6160
jmp 0x6162
leaq -0x130(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0xfffb(%rip), %rsi      # 0x16173
callq 0x7520
movb %al, -0x8f9(%rbp)
jmp 0x6185
movb -0x8f9(%rbp), %al
testb $0x1, %al
jne 0x6194
jmp 0x621c
movl -0x450(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x450(%rbp)
leaq -0x130(%rbp), %rdi
xorl %esi, %esi
callq 0x7550
movq %rax, -0x460(%rbp)
cmpl $0xf4240, -0x450(%rbp)  # imm = 0xF4240
jne 0x6217
movq 0x18e0d(%rip), %rdi     # 0x1efd8
leaq 0xff4e(%rip), %rsi      # 0x16120
callq 0x3220
movq %rax, -0x908(%rbp)
jmp 0x61e0
movq -0x908(%rbp), %rdi
movl -0x450(%rbp), %esi
callq 0x33e0
movq %rax, -0x910(%rbp)
jmp 0x61fb
movq -0x910(%rbp), %rdi
movq 0x18dbf(%rip), %rsi     # 0x1efc8
callq 0x3280
jmp 0x6210
xorl %edi, %edi
callq 0x32e0
jmp 0x6162
leaq -0x130(%rbp), %rdi
movq %rdi, -0x918(%rbp)
xorl %esi, %esi
callq 0x7550
movq -0x918(%rbp), %rdi
movq %rax, -0x468(%rbp)
callq 0x7590
movq %rax, %rsi
leaq -0x4a8(%rbp), %rdi
callq 0x30f0
jmp 0x6255
movl -0x450(%rbp), %edx
leaq -0x488(%rbp), %rdi
leaq -0x4a8(%rbp), %rsi
callq 0x42c0
jmp 0x6270
movq -0x30(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
callq 0x7260
movq %rax, -0x920(%rbp)
jmp 0x6289
movq -0x920(%rbp), %rdi
leaq -0x488(%rbp), %rsi
movq %rsi, -0x930(%rbp)
callq 0x32f0
movq -0x930(%rbp), %rdi
callq 0x3170
leaq -0x4a8(%rbp), %rdi
callq 0x3170
movq -0x20(%rbp), %rax
movq %rax, -0x928(%rbp)
movq -0x18(%rbp), %rdi
movslq -0x450(%rbp), %rsi
callq 0x7490
movq -0x928(%rbp), %rdi
movslq 0x20(%rax), %rsi
shlq $0x2, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x62f1
movq -0x20(%rbp), %rax
movq %rax, -0x940(%rbp)
movq -0x30(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
callq 0x7260
movq %rax, -0x938(%rbp)
jmp 0x6315
movq -0x938(%rbp), %rsi
movq -0x940(%rbp), %rdi
callq 0x3430
jmp 0x632a
movq -0x30(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
callq 0x7260
movq %rax, -0x948(%rbp)
jmp 0x6343
movq -0x948(%rbp), %rdi
leaq 0xfcdf(%rip), %rsi      # 0x16030
callq 0x71d0
movb %al, -0x949(%rbp)
jmp 0x635e
movb -0x949(%rbp), %al
testb $0x1, %al
jne 0x636d
jmp 0x6450
movq -0x20(%rbp), %rax
movq %rax, -0x958(%rbp)
leaq 0xfe9f(%rip), %rsi      # 0x1621e
leaq -0x4e8(%rbp), %rdi
leaq -0x3e8(%rbp), %rdx
callq 0x7040
jmp 0x6394
leaq 0xfd98(%rip), %rdx      # 0x16133
leaq -0x4c8(%rbp), %rdi
leaq -0x4e8(%rbp), %rsi
callq 0x6ff0
jmp 0x63b0
movq -0x958(%rbp), %rdi
leaq -0x4c8(%rbp), %rsi
callq 0x3430
jmp 0x63c5
leaq -0x4c8(%rbp), %rdi
callq 0x3170
leaq -0x4e8(%rbp), %rdi
callq 0x3170
jmp 0x64f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6408
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x488(%rbp), %rdi
callq 0x3170
leaq -0x4a8(%rbp), %rdi
callq 0x3170
jmp 0x6f0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x643f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x4c8(%rbp), %rdi
callq 0x3170
leaq -0x4e8(%rbp), %rdi
callq 0x3170
jmp 0x6f0e
movq -0x20(%rbp), %rax
movq %rax, -0x960(%rbp)
leaq 0xfdbc(%rip), %rsi      # 0x1621e
leaq -0x528(%rbp), %rdi
leaq -0x3e8(%rbp), %rdx
callq 0x7040
jmp 0x6477
leaq 0xfcb9(%rip), %rdx      # 0x16137
leaq -0x508(%rbp), %rdi
leaq -0x528(%rbp), %rsi
callq 0x6ff0
jmp 0x6493
movq -0x960(%rbp), %rdi
leaq -0x508(%rbp), %rsi
callq 0x3430
jmp 0x64a8
leaq -0x508(%rbp), %rdi
callq 0x3170
leaq -0x528(%rbp), %rdi
callq 0x3170
jmp 0x64f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x64e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x508(%rbp), %rdi
callq 0x3170
leaq -0x528(%rbp), %rdi
callq 0x3170
jmp 0x6f0e
movq -0x20(%rbp), %rax
movq %rax, -0x968(%rbp)
movq -0x18(%rbp), %rdi
movslq -0x450(%rbp), %rsi
callq 0x7490
movq -0x968(%rbp), %rdi
movslq 0x20(%rax), %rsi
shlq $0x2, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x652f
movq -0x20(%rbp), %rdi
leaq 0xfb65(%rip), %rsi      # 0x1609f
callq 0x3420
jmp 0x6541
movq -0x20(%rbp), %rdi
leaq -0x408(%rbp), %rsi
callq 0x3430
jmp 0x6553
movq -0x20(%rbp), %rdi
leaq 0xfbd9(%rip), %rsi      # 0x16137
callq 0x3420
jmp 0x6565
movq -0x20(%rbp), %rax
movq %rax, -0x970(%rbp)
movq -0x18(%rbp), %rdi
movslq -0x450(%rbp), %rsi
callq 0x7490
movq -0x970(%rbp), %rdi
movslq 0x20(%rax), %rsi
shlq $0x2, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x659b
movq -0x20(%rbp), %rdi
leaq 0xfb94(%rip), %rsi      # 0x1613a
callq 0x3420
jmp 0x65ad
movq -0x20(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
callq 0x3430
jmp 0x65bf
movq -0x20(%rbp), %rdi
leaq 0xfb6d(%rip), %rsi      # 0x16137
callq 0x3420
jmp 0x65d1
jmp 0x6edf
testb $0x1, -0x40a(%rbp)
je 0x6643
jmp 0x65e1
leaq -0x48(%rbp), %rdi
callq 0x7370
movq %rax, -0x530(%rbp)
leaq -0x130(%rbp), %rdi
leaq -0x530(%rbp), %rsi
callq 0x7790
testb $0x1, %al
jne 0x660a
jmp 0x663e
leaq -0x130(%rbp), %rdi
xorl %esi, %esi
callq 0x7550
movq %rax, -0x538(%rbp)
leaq -0x538(%rbp), %rdi
callq 0x7590
movq %rax, %rsi
leaq -0x408(%rbp), %rdi
callq 0x3430
jmp 0x663c
jmp 0x65e1
jmp 0x66eb
jmp 0x6645
leaq -0x130(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0xfb18(%rip), %rsi      # 0x16173
callq 0x7520
movb %al, -0x971(%rbp)
jmp 0x6668
movb -0x971(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x972(%rbp)
jne 0x667d
jmp 0x66a6
leaq -0x48(%rbp), %rdi
callq 0x7370
movq %rax, -0x540(%rbp)
leaq -0x130(%rbp), %rdi
leaq -0x540(%rbp), %rsi
callq 0x7790
movb %al, -0x972(%rbp)
movb -0x972(%rbp), %al
testb $0x1, %al
jne 0x66b2
jmp 0x66e9
leaq -0x130(%rbp), %rdi
xorl %esi, %esi
callq 0x7550
movq %rax, -0x548(%rbp)
leaq -0x548(%rbp), %rdi
callq 0x7590
movq %rax, %rsi
leaq -0x408(%rbp), %rdi
callq 0x3430
jmp 0x66e4
jmp 0x6645
jmp 0x66eb
movb $0x1, -0x549(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x7370
movq %rax, -0x558(%rbp)
leaq -0x130(%rbp), %rdi
leaq -0x558(%rbp), %rsi
callq 0x78c0
testb $0x1, %al
jne 0x671b
jmp 0x677c
movb $0x0, -0x549(%rbp)
testb $0x1, -0x40a(%rbp)
jne 0x677a
movq 0x188a6(%rip), %rdi     # 0x1efd8
leaq 0xfa0c(%rip), %rsi      # 0x16145
callq 0x3220
movq %rax, -0x980(%rbp)
jmp 0x6747
movq -0x980(%rbp), %rdi
movq -0x128(%rbp), %rsi
callq 0x3070
movq %rax, -0x988(%rbp)
jmp 0x6763
movq -0x988(%rbp), %rdi
movq 0x18857(%rip), %rsi     # 0x1efc8
callq 0x3280
jmp 0x6778
jmp 0x677a
jmp 0x677c
movq -0x130(%rbp), %rax
movq %rax, -0x560(%rbp)
testb $0x1, -0x549(%rbp)
je 0x67b9
leaq -0x130(%rbp), %rdi
movl $0x1, %esi
callq 0x75b0
movq %rax, -0x568(%rbp)
movq -0x568(%rbp), %rax
movq %rax, -0x560(%rbp)
leaq -0x588(%rbp), %rdi
leaq -0x408(%rbp), %rsi
callq 0x3760
jmp 0x67ce
leaq -0x408(%rbp), %rdi
leaq -0x588(%rbp), %rsi
callq 0x32f0
leaq -0x588(%rbp), %rdi
callq 0x3170
testb $0x1, -0x40a(%rbp)
jne 0x6e81
movq -0x30(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
callq 0x7930
movq %rax, -0x990(%rbp)
jmp 0x6813
movq -0x990(%rbp), %rax
movq %rax, -0x598(%rbp)
movq -0x30(%rbp), %rdi
callq 0x7960
movq %rax, -0x5a0(%rbp)
leaq -0x598(%rbp), %rdi
leaq -0x5a0(%rbp), %rsi
callq 0x7900
andb $0x1, %al
movb %al, -0x589(%rbp)
testb $0x1, -0x549(%rbp)
jne 0x68c8
movq -0x30(%rbp), %rdx
leaq -0x5c0(%rbp), %rdi
leaq -0x408(%rbp), %rsi
callq 0x3ab0
jmp 0x686e
movq -0x30(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
callq 0x7260
movq %rax, -0x998(%rbp)
jmp 0x6887
movq -0x998(%rbp), %rdi
leaq -0x5c0(%rbp), %rsi
callq 0x32f0
leaq -0x5c0(%rbp), %rdi
callq 0x3170
jmp 0x6a53
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x5c0(%rbp), %rdi
callq 0x3170
jmp 0x6f0e
leaq -0x5e1(%rbp), %rdi
movq %rdi, -0x9a0(%rbp)
callq 0x3400
movq -0x9a0(%rbp), %rdx
leaq 0xf925(%rip), %rsi      # 0x1620e
leaq -0x5e0(%rbp), %rdi
callq 0x3340
jmp 0x68f7
leaq -0x5e1(%rbp), %rdi
callq 0x32a0
leaq -0x48(%rbp), %rdi
callq 0x7370
movq %rax, -0x5f0(%rbp)
leaq -0x560(%rbp), %rdi
leaq -0x5f0(%rbp), %rsi
callq 0x7790
testb $0x1, %al
jne 0x692c
jmp 0x698e
leaq -0x560(%rbp), %rdi
callq 0x7590
movq %rax, %rsi
leaq -0x5e0(%rbp), %rdi
callq 0x3430
jmp 0x6949
leaq -0x560(%rbp), %rdi
xorl %esi, %esi
callq 0x7550
movq %rax, -0x5f8(%rbp)
jmp 0x6903
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x5e1(%rbp), %rdi
callq 0x32a0
jmp 0x6f0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6a42
leaq -0x638(%rbp), %rdi
leaq -0x5e0(%rbp), %rsi
callq 0x30f0
jmp 0x69a3
movl -0x128(%rbp), %edx
leaq -0x618(%rbp), %rdi
leaq -0x638(%rbp), %rsi
callq 0x42c0
jmp 0x69be
movq -0x30(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
callq 0x7260
movq %rax, -0x9a8(%rbp)
jmp 0x69d7
movq -0x9a8(%rbp), %rdi
leaq -0x618(%rbp), %rsi
callq 0x32f0
leaq -0x618(%rbp), %rdi
callq 0x3170
leaq -0x638(%rbp), %rdi
callq 0x3170
leaq -0x5e0(%rbp), %rdi
callq 0x3170
jmp 0x6a53
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6a36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x618(%rbp), %rdi
callq 0x3170
leaq -0x638(%rbp), %rdi
callq 0x3170
leaq -0x5e0(%rbp), %rdi
callq 0x3170
jmp 0x6f0e
movq -0x20(%rbp), %rax
movq %rax, -0x9b0(%rbp)
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
callq 0x7490
movq -0x9b0(%rbp), %rdi
movslq 0x20(%rax), %rsi
shlq $0x2, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x6a89
movq -0x30(%rbp), %rdx
leaq -0x658(%rbp), %rdi
leaq -0x408(%rbp), %rsi
callq 0x3ab0
jmp 0x6aa2
leaq 0xf582(%rip), %rsi      # 0x1602b
leaq -0x658(%rbp), %rdi
callq 0x71d0
movb %al, -0x9b1(%rbp)
jmp 0x6abd
leaq -0x658(%rbp), %rdi
callq 0x3170
movb -0x9b1(%rbp), %al
testb $0x1, %al
jne 0x6ad8
jmp 0x6d73
leaq -0x48(%rbp), %rdi
callq 0x74f0
movq %rax, -0x668(%rbp)
leaq -0x668(%rbp), %rdi
movl $0x3, %esi
callq 0x75b0
movq %rax, -0x660(%rbp)
movq -0x660(%rbp), %rax
movq %rax, -0x130(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x9c8(%rbp)
movq -0x30(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
callq 0x7260
movq %rax, -0x9c0(%rbp)
jmp 0x6b32
movq -0x9c0(%rbp), %rdx
leaq 0xf62f(%rip), %rsi      # 0x1616f
leaq -0x6a8(%rbp), %rdi
callq 0x7040
jmp 0x6b4e
leaq 0xf6c9(%rip), %rdx      # 0x1621e
leaq -0x688(%rbp), %rdi
leaq -0x6a8(%rbp), %rsi
callq 0x6ff0
jmp 0x6b6a
movq -0x9c8(%rbp), %rdi
leaq -0x688(%rbp), %rsi
callq 0x3430
movq %rax, -0x9d0(%rbp)
jmp 0x6b86
movq -0x9d0(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
callq 0x3430
movq %rax, -0x9d8(%rbp)
jmp 0x6ba2
movq -0x9d8(%rbp), %rdi
leaq 0xf5d6(%rip), %rsi      # 0x16186
callq 0x3420
jmp 0x6bb7
leaq -0x688(%rbp), %rdi
callq 0x3170
leaq -0x6a8(%rbp), %rdi
callq 0x3170
leaq -0x130(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0xf590(%rip), %rsi      # 0x16175
callq 0x7520
movb %al, -0x9d9(%rbp)
jmp 0x6bf2
movb -0x9d9(%rbp), %al
testb $0x1, %al
jne 0x6c01
jmp 0x6d71
leaq -0x130(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0xf560(%rip), %rsi      # 0x16177
callq 0x71d0
movb %al, -0x9da(%rbp)
jmp 0x6c24
movb -0x9da(%rbp), %al
testb $0x1, %al
jne 0x6c5f
jmp 0x6c30
leaq -0x130(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0xf43d(%rip), %rsi      # 0x16083
callq 0x71d0
movb %al, -0x9db(%rbp)
jmp 0x6c53
movb -0x9db(%rbp), %al
testb $0x1, %al
jne 0x6c5f
jmp 0x6ccd
leaq -0x130(%rbp), %rdi
xorl %esi, %esi
callq 0x7550
movq %rax, -0x6b0(%rbp)
jmp 0x6d6c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x658(%rbp), %rdi
callq 0x3170
jmp 0x6f0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6cbc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x688(%rbp), %rdi
callq 0x3170
leaq -0x6a8(%rbp), %rdi
callq 0x3170
jmp 0x6f0e
movq -0x20(%rbp), %rdi
leaq 0xf535(%rip), %rsi      # 0x1620d
callq 0x3420
movq %rax, -0x9e8(%rbp)
jmp 0x6ce6
movq -0x9e8(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
callq 0x3430
movq %rax, -0x9f0(%rbp)
jmp 0x6d02
movq -0x9f0(%rbp), %rdi
leaq 0xf469(%rip), %rsi      # 0x16179
callq 0x3420
movq %rax, -0x9f8(%rbp)
jmp 0x6d1e
leaq -0x130(%rbp), %rdi
callq 0x7590
movq -0x9f8(%rbp), %rdi
movq %rax, %rsi
callq 0x3430
movq %rax, -0xa00(%rbp)
jmp 0x6d42
movq -0xa00(%rbp), %rdi
leaq 0xf435(%rip), %rsi      # 0x16185
callq 0x3420
jmp 0x6d57
leaq -0x130(%rbp), %rdi
xorl %esi, %esi
callq 0x7550
movq %rax, -0x6b8(%rbp)
jmp 0x6bcf
jmp 0x6d73
movq -0x30(%rbp), %rdx
leaq -0x6d8(%rbp), %rdi
leaq -0x408(%rbp), %rsi
callq 0x3ab0
jmp 0x6d8c
leaq 0xf298(%rip), %rsi      # 0x1602b
leaq -0x6d8(%rbp), %rdi
callq 0x7520
movb %al, -0xa01(%rbp)
jmp 0x6da7
leaq -0x6d8(%rbp), %rdi
callq 0x3170
movb -0xa01(%rbp), %al
testb $0x1, %al
jne 0x6dc2
jmp 0x6e7f
testb $0x1, -0x589(%rbp)
jne 0x6e23
movq -0x20(%rbp), %rax
movq %rax, -0xa18(%rbp)
movq -0x30(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
callq 0x7260
movq %rax, -0xa10(%rbp)
jmp 0x6def
movq -0xa10(%rbp), %rsi
movq -0xa18(%rbp), %rdi
callq 0x3430
jmp 0x6e04
jmp 0x6e23
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x6d8(%rbp), %rdi
callq 0x3170
jmp 0x6f0e
movq -0x20(%rbp), %rdi
leaq 0xf3f0(%rip), %rsi      # 0x1621e
callq 0x3420
jmp 0x6e35
movq -0x20(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
callq 0x3430
jmp 0x6e47
movq -0x20(%rbp), %rdi
leaq 0xf336(%rip), %rsi      # 0x16188
callq 0x3420
jmp 0x6e59
movq -0x20(%rbp), %rdi
leaq -0x408(%rbp), %rsi
callq 0x3430
jmp 0x6e6b
movq -0x20(%rbp), %rdi
leaq 0xf2c1(%rip), %rsi      # 0x16137
callq 0x3420
jmp 0x6e7d
jmp 0x6e7f
jmp 0x6edd
movq -0x20(%rbp), %rax
movq %rax, -0xa20(%rbp)
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rsi
callq 0x7490
movq -0xa20(%rbp), %rdi
movslq 0x20(%rax), %rsi
shlq $0x2, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x6eb7
movq -0x20(%rbp), %rdi
leaq -0x408(%rbp), %rsi
callq 0x3430
jmp 0x6ec9
movq -0x20(%rbp), %rdi
leaq 0xf263(%rip), %rsi      # 0x16137
callq 0x3420
jmp 0x6edb
jmp 0x6edd
jmp 0x6edf
movq -0x128(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x128(%rbp)
leaq -0x408(%rbp), %rdi
callq 0x3170
leaq -0x3e8(%rbp), %rdi
callq 0x3170
jmp 0x48a6
leaq -0x408(%rbp), %rdi
callq 0x3170
leaq -0x3e8(%rbp), %rdi
callq 0x3170
jmp 0x6f57
jmp 0x6f2a
jmp 0x6f2c
jmp 0x6f2e
movq -0x128(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x128(%rbp)
jmp 0x48a6
leaq -0x48(%rbp), %rdi
callq 0x7990
addq $0xa20, %rsp            # imm = 0xA20
popq %rbp
retq
leaq -0x48(%rbp), %rdi
callq 0x7990
movq -0x50(%rbp), %rdi
callq 0x33f0
nopl (%rax)