// File: nikhilYadala[P]Python_to_cpp/Source/src/convert_to_cpp_classes.cpp
// Function: convert_to_cpp_classes(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>>&, class_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_classes(unsigned long int start,
							unsigned long int end,
							std::vector< line_pair >& lines,
							std::string& converted_code,
							class_declaration* final_class,
							std::map< std::string,
							std::string >& variables )
   {

     	// if(start == end)
     	// 	std::cout<<"-------------\n\n\n\n"<<lines[start].first<<"\n\n-----------------"
        std ::vector < std::string > tokens;
        tokens.resize(1);
        break_into_words_(lines[start].first,tokens);//the lines get tokenized,inherited function

        if(tokens[1]=="class")
        {
            final_class->name=tokens[2];


            if(tokens[3]==":")
            	final_class->num_base_func=0;
            else if (tokens[3]=="(")
            {
                 std::vector<std::string>::iterator tokens_itr =tokens.begin()+3;
                 while(*(++tokens_itr)!=")")
                 {  
                 	if(*tokens_itr==",")
                 		continue;  //delimeter for inherited list of functions

                 	(final_class->base_functions).push_back(*tokens_itr);
                 	(final_class->num_base_func)++;//incremented each time a base func is found
                 	//tokens_itr++; //to bypass the commas after each base function

                 }



            }//all the base classes(if any)are noted till here;
        
          }
          /*while(*tokens_itr=="\n")
          	tokens_itr++; //gets rid of all the new lines, infact only one new line char would be there
           */
          	//the above block is now no more required as, tokens no more store '\n'

          /************THE FOLLOWING LINES FILL std::string converted_code *******************/
          	//converted_code.append("{\npublic:\n");

           
             for(unsigned long int i=start;i<=end;)
	            {	
		             tokens.clear();
		              break_into_words_(lines[i].first,tokens);
		              std::vector< std::string >::iterator itr=tokens.begin();

		 if(*itr=="if")
		{

			itr++;
			bool is_not=0;
			if(*itr=="not")
				{
					is_not=1;
					itr++;
				}	
			std::string expr="";
			
			if(is_not)
				expr.append("!");

			while(*itr!=":")
				expr.append(*(itr++));
			
			converted_code.append((size_t)lines[i].second,' ');
			converted_code.append("if(");
			converted_code.append(expr);
			converted_code.append(")\n");
			converted_code.append((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_classes(st+1,i-1,lines,snippet,final_class,variables);
			converted_code.append(snippet);
			
			converted_code.append((size_t)lines[st].second,' ');
			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,' ');
			converted_code.append("std::cout<<");
			int f=1;
			while(itr!=tokens.end())
			{
				if(*itr=="("||*itr==")")
					f=!f;

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


		//handle functionn definition inside the classes
		else if(*itr=="def")
		{
			long int space_count=lines[i].second;
			long int st=i;
			std::vector< std::string >::iterator itr1=tokens.begin();

			while(lines[++i].second>space_count); //upto i-1, we have to consider func
			std::string converted_function;
			function_declaration converted_function_declaration;
			convert_to_cpp(st,i-1,lines,converted_function,&converted_function_declaration,variables);

			//rendering the code for function
			if(converted_function_declaration.return_type == "")
				converted_function_declaration.return_type = "void";
			//the funciton can be a constructor
			if(converted_function_declaration.name=="__init__")
				converted_code.append(final_class->name).append("(");
			else{
			converted_code.append(converted_function_declaration.return_type).append(" ");
			//the funciton can be a constructor
			if(converted_function_declaration.name=="__init__")
				converted_code.append(final_class->name).append("(");
			else
			converted_code.append(converted_function_declaration.name).append("(");
			}
			 for(std::vector< string_pair >::iterator j=converted_function_declaration.args.begin();j!=converted_function_declaration.args.end();++j)
			 {
			 	converted_code.append(j->second).append(" "); //arg datatype
			 	converted_code.append(j->first).append(","); // arg name
			 
			 }
			 if(*(converted_code.end()-1) == ',')
			 	*(converted_code.end()-1)=')';
			 else  converted_code.append(")");
			 
			converted_code.append("\n{\n").append(converted_function).append("\n}\n");
			//i already got incremented while checking for the function block
			continue;

		}//end elif statement for functions inside the class




		else if (*itr!="def")	//variable declaration
		{
			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;

		}	



		/***** SOME MORE CASES HAVE TO BE TAKEN CARE OF HERE.*****/
		/***** Variables have to be explicitly taken care off.****/
      
      //At the the end, the closing lines of the classe in c++ is written

    
     }

    //  converted_code.append("\ntalking of this one};\n");
     // the above step to be taken care off in rendering the cpp code
   
 std::cout<<"printing the converted class code\n"<<converted_code <<"haha\n";

     }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x740, %rsp            # imm = 0x740
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, -0x4e0(%rbp)
callq 0x7470
movq -0x4e0(%rbp), %rdi
movl $0x1, %esi
callq 0x135b0
jmp 0x11a76
movq -0x18(%rbp), %rdi
movq -0x8(%rbp), %rsi
callq 0x7490
movq %rax, %rdi
leaq -0x48(%rbp), %rsi
callq 0x11640
jmp 0x11a91
leaq -0x48(%rbp), %rdi
movl $0x1, %esi
callq 0x74b0
movq %rax, %rdi
leaq 0x4851(%rip), %rsi      # 0x162fa
callq 0x71d0
movb %al, -0x4e1(%rbp)
jmp 0x11ab6
movb -0x4e1(%rbp), %al
testb $0x1, %al
jne 0x11ac5
jmp 0x11c29
leaq -0x48(%rbp), %rdi
movl $0x2, %esi
callq 0x74b0
movq %rax, %rsi
movq -0x28(%rbp), %rdi
callq 0x3040
jmp 0x11ae1
leaq -0x48(%rbp), %rdi
movl $0x3, %esi
callq 0x74b0
movq %rax, %rdi
leaq 0x467a(%rip), %rsi      # 0x16173
callq 0x71d0
movb %al, -0x4e2(%rbp)
jmp 0x11b06
movb -0x4e2(%rbp), %al
testb $0x1, %al
jne 0x11b12
jmp 0x11b33
movq -0x28(%rbp), %rax
movl $0x0, 0x20(%rax)
jmp 0x11c27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1359d
leaq -0x48(%rbp), %rdi
movl $0x3, %esi
callq 0x74b0
movq %rax, %rdi
leaq 0x458e(%rip), %rsi      # 0x160d9
callq 0x71d0
movb %al, -0x4e3(%rbp)
jmp 0x11b58
movb -0x4e3(%rbp), %al
testb $0x1, %al
jne 0x11b67
jmp 0x11c25
leaq -0x48(%rbp), %rdi
callq 0x74f0
movq %rax, -0x68(%rbp)
leaq -0x68(%rbp), %rdi
movl $0x3, %esi
callq 0x75b0
movq %rax, -0x60(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x77d0
movq %rax, %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x4488(%rip), %rsi      # 0x16029
callq 0x7520
movb %al, -0x4e4(%rbp)
jmp 0x11bae
movb -0x4e4(%rbp), %al
testb $0x1, %al
jne 0x11bba
jmp 0x11c23
leaq -0x60(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x44b6(%rip), %rsi      # 0x16083
callq 0x71d0
movb %al, -0x4e5(%rbp)
jmp 0x11bda
movb -0x4e5(%rbp), %al
testb $0x1, %al
jne 0x11be6
jmp 0x11be8
jmp 0x11b86
movq -0x28(%rbp), %rax
addq $0x28, %rax
movq %rax, -0x4f0(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x7590
movq -0x4f0(%rbp), %rdi
movq %rax, %rsi
callq 0x7400
jmp 0x11c11
movq -0x28(%rbp), %rax
movl 0x20(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x20(%rax)
jmp 0x11b86
jmp 0x11c25
jmp 0x11c27
jmp 0x11c29
movq -0x8(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rax
cmpq -0x10(%rbp), %rax
ja 0x13541
leaq -0x48(%rbp), %rdi
movq %rdi, -0x4f8(%rbp)
callq 0x7770
movq -0x18(%rbp), %rdi
movq -0x70(%rbp), %rsi
callq 0x7490
movq -0x4f8(%rbp), %rsi
movq %rax, %rdi
callq 0x11640
jmp 0x11c6d
leaq -0x48(%rbp), %rdi
callq 0x74f0
movq %rax, -0x78(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x43fa(%rip), %rsi      # 0x16087
callq 0x71d0
movb %al, -0x4f9(%rbp)
jmp 0x11c9a
movb -0x4f9(%rbp), %al
testb $0x1, %al
jne 0x11ca9
jmp 0x11fb9
leaq -0x78(%rbp), %rdi
movq %rdi, -0x508(%rbp)
xorl %esi, %esi
callq 0x7550
movq -0x508(%rbp), %rdi
movq %rax, -0x80(%rbp)
movb $0x0, -0x81(%rbp)
callq 0x7590
movq %rax, %rdi
leaq 0x43ae(%rip), %rsi      # 0x1608a
callq 0x71d0
movb %al, -0x4fa(%rbp)
jmp 0x11ce9
movb -0x4fa(%rbp), %al
testb $0x1, %al
jne 0x11cf5
jmp 0x11d0e
movb $0x1, -0x81(%rbp)
leaq -0x78(%rbp), %rdi
xorl %esi, %esi
callq 0x7550
movq %rax, -0x90(%rbp)
leaq -0xb1(%rbp), %rdi
movq %rdi, -0x510(%rbp)
callq 0x3400
movq -0x510(%rbp), %rdx
leaq 0x44df(%rip), %rsi      # 0x1620e
leaq -0xb0(%rbp), %rdi
callq 0x3340
jmp 0x11d3d
leaq -0xb1(%rbp), %rdi
callq 0x32a0
testb $0x1, -0x81(%rbp)
je 0x11d97
leaq 0x4335(%rip), %rsi      # 0x1608e
leaq -0xb0(%rbp), %rdi
callq 0x3420
jmp 0x11d67
jmp 0x11d97
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xb1(%rbp), %rdi
callq 0x32a0
jmp 0x1359d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x11fa8
jmp 0x11d99
leaq -0x78(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x43c7(%rip), %rsi      # 0x16173
callq 0x7520
movb %al, -0x511(%rbp)
jmp 0x11db9
movb -0x511(%rbp), %al
testb $0x1, %al
jne 0x11dc5
jmp 0x11df6
leaq -0x78(%rbp), %rdi
xorl %esi, %esi
callq 0x7550
movq %rax, -0xc0(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x7590
movq %rax, %rsi
leaq -0xb0(%rbp), %rdi
callq 0x3430
jmp 0x11df4
jmp 0x11d99
movq -0x20(%rbp), %rax
movq %rax, -0x520(%rbp)
movq -0x18(%rbp), %rdi
movq -0x70(%rbp), %rsi
callq 0x7490
movq -0x520(%rbp), %rdi
movslq 0x20(%rax), %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x11e25
movq -0x20(%rbp), %rdi
leaq 0x4265(%rip), %rsi      # 0x16095
callq 0x3420
jmp 0x11e37
movq -0x20(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x3430
jmp 0x11e49
movq -0x20(%rbp), %rdi
leaq 0x42bf(%rip), %rsi      # 0x16113
callq 0x3420
jmp 0x11e5b
movq -0x20(%rbp), %rax
movq %rax, -0x528(%rbp)
movq -0x18(%rbp), %rdi
movq -0x70(%rbp), %rsi
callq 0x7490
movq -0x528(%rbp), %rdi
movslq 0x20(%rax), %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x11e8a
movq -0x20(%rbp), %rdi
leaq 0x445d(%rip), %rsi      # 0x162f2
callq 0x3420
jmp 0x11e9c
movq -0x18(%rbp), %rdi
movq -0x70(%rbp), %rsi
callq 0x7490
movl 0x20(%rax), %eax
movl %eax, -0xc4(%rbp)
movq -0x70(%rbp), %rax
movl %eax, -0xc8(%rbp)
movq -0x18(%rbp), %rdi
movq -0x70(%rbp), %rsi
addq $0x1, %rsi
movq %rsi, -0x70(%rbp)
callq 0x7490
movl 0x20(%rax), %eax
cmpl -0xc4(%rbp), %eax
jle 0x11ede
jmp 0x11ebc
leaq -0xe8(%rbp), %rdi
movq %rdi, -0x530(%rbp)
callq 0x3360
movq -0x530(%rbp), %rcx
movl -0xc8(%rbp), %eax
incl %eax
movslq %eax, %rdi
movq -0x70(%rbp), %rsi
decq %rsi
movq -0x18(%rbp), %rdx
movq -0x28(%rbp), %r8
movq -0x30(%rbp), %r9
callq 0x11a30
jmp 0x11f1d
movq -0x20(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x3430
jmp 0x11f2f
movq -0x20(%rbp), %rax
movq %rax, -0x538(%rbp)
movq -0x18(%rbp), %rdi
movslq -0xc8(%rbp), %rsi
callq 0x7490
movq -0x538(%rbp), %rdi
movslq 0x20(%rax), %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x11f61
movq -0x20(%rbp), %rdi
leaq 0x439e(%rip), %rsi      # 0x1630a
callq 0x3420
jmp 0x11f73
leaq -0xe8(%rbp), %rdi
callq 0x3170
leaq -0xb0(%rbp), %rdi
callq 0x3170
jmp 0x11c31
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x3170
leaq -0xb0(%rbp), %rdi
callq 0x3170
jmp 0x1359d
leaq -0x78(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x40cd(%rip), %rsi      # 0x16099
callq 0x71d0
movb %al, -0x539(%rbp)
jmp 0x11fd9
movb -0x539(%rbp), %al
testb $0x1, %al
jne 0x11fe8
jmp 0x12173
leaq -0x78(%rbp), %rdi
xorl %esi, %esi
callq 0x7550
movq %rax, -0xf0(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x548(%rbp)
movq -0x18(%rbp), %rdi
movq -0x70(%rbp), %rsi
callq 0x7490
movq -0x548(%rbp), %rdi
movslq 0x20(%rax), %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x12029
movq -0x20(%rbp), %rdi
leaq 0x406b(%rip), %rsi      # 0x1609f
callq 0x3420
jmp 0x1203b
movl $0x1, -0xf4(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x7370
movq %rax, -0x100(%rbp)
leaq -0x78(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x7790
testb $0x1, %al
jne 0x1206e
jmp 0x12150
leaq -0x78(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x4058(%rip), %rsi      # 0x160d9
callq 0x71d0
movb %al, -0x549(%rbp)
jmp 0x1208e
movb -0x549(%rbp), %al
testb $0x1, %al
jne 0x120c6
jmp 0x1209a
leaq -0x78(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x3f7c(%rip), %rsi      # 0x16029
callq 0x71d0
movb %al, -0x54a(%rbp)
jmp 0x120ba
movb -0x54a(%rbp), %al
testb $0x1, %al
jne 0x120c6
jmp 0x120dd
cmpl $0x0, -0xf4(%rbp)
setne %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0xf4(%rbp)
cmpl $0x0, -0xf4(%rbp)
je 0x12112
leaq -0x78(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x3f8a(%rip), %rsi      # 0x16083
callq 0x7520
movb %al, -0x54b(%rbp)
jmp 0x12106
movb -0x54b(%rbp), %al
testb $0x1, %al
jne 0x12112
jmp 0x12139
movq -0x20(%rbp), %rax
movq %rax, -0x558(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x7590
movq -0x558(%rbp), %rdi
movq %rax, %rsi
callq 0x3430
jmp 0x12137
jmp 0x12139
leaq -0x78(%rbp), %rdi
xorl %esi, %esi
callq 0x7550
movq %rax, -0x108(%rbp)
jmp 0x12045
movq -0x20(%rbp), %rdi
leaq 0x3fdc(%rip), %rsi      # 0x16137
callq 0x3420
jmp 0x12162
movq -0x70(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x70(%rbp)
jmp 0x11c31
leaq -0x78(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x3ef9(%rip), %rsi      # 0x1607f
callq 0x71d0
movb %al, -0x559(%rbp)
jmp 0x12193
movb -0x559(%rbp), %al
testb $0x1, %al
jne 0x121a2
jmp 0x12595
movq -0x18(%rbp), %rdi
movq -0x70(%rbp), %rsi
callq 0x7490
movslq 0x20(%rax), %rax
movq %rax, -0x110(%rbp)
movq -0x70(%rbp), %rax
movq %rax, -0x118(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x74f0
movq %rax, -0x120(%rbp)
movq -0x18(%rbp), %rdi
movq -0x70(%rbp), %rsi
addq $0x1, %rsi
movq %rsi, -0x70(%rbp)
callq 0x7490
movslq 0x20(%rax), %rax
cmpq -0x110(%rbp), %rax
jle 0x121f9
jmp 0x121d5
leaq -0x140(%rbp), %rdi
movq %rdi, -0x570(%rbp)
callq 0x3360
leaq -0x198(%rbp), %rdi
movq %rdi, -0x568(%rbp)
callq 0xd370
movq -0x570(%rbp), %rcx
movq -0x568(%rbp), %r8
movq -0x118(%rbp), %rdi
movq -0x70(%rbp), %rsi
decq %rsi
movq -0x18(%rbp), %rdx
movq -0x30(%rbp), %r9
callq 0x4520
jmp 0x1224a
leaq -0x178(%rbp), %rdi
leaq 0x3fb6(%rip), %rsi      # 0x1620e
callq 0x71d0
movb %al, -0x571(%rbp)
jmp 0x12265
movb -0x571(%rbp), %al
testb $0x1, %al
jne 0x12271
jmp 0x122b1
leaq -0x178(%rbp), %rdi
leaq 0x3fe1(%rip), %rsi      # 0x16260
callq 0x3330
jmp 0x12286
jmp 0x122b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x198(%rbp), %rdi
callq 0xd550
leaq -0x140(%rbp), %rdi
callq 0x3170
jmp 0x1359d
leaq 0x4048(%rip), %rsi      # 0x16300
leaq -0x198(%rbp), %rdi
callq 0x71d0
movb %al, -0x572(%rbp)
jmp 0x122cc
movb -0x572(%rbp), %al
testb $0x1, %al
jne 0x122d8
jmp 0x12308
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x3430
movq %rax, -0x580(%rbp)
jmp 0x122ee
movq -0x580(%rbp), %rdi
leaq 0x3ddd(%rip), %rsi      # 0x160d9
callq 0x3420
jmp 0x12303
jmp 0x123bc
movq -0x20(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0x3430
movq %rax, -0x588(%rbp)
jmp 0x12321
movq -0x588(%rbp), %rdi
leaq 0x3eef(%rip), %rsi      # 0x1621e
callq 0x3420
jmp 0x12336
leaq 0x3fc3(%rip), %rsi      # 0x16300
leaq -0x198(%rbp), %rdi
callq 0x71d0
movb %al, -0x589(%rbp)
jmp 0x12351
movb -0x589(%rbp), %al
testb $0x1, %al
jne 0x1235d
jmp 0x1238a
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x3430
movq %rax, -0x598(%rbp)
jmp 0x12373
movq -0x598(%rbp), %rdi
leaq 0x3d58(%rip), %rsi      # 0x160d9
callq 0x3420
jmp 0x12388
jmp 0x123ba
movq -0x20(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x3430
movq %rax, -0x5a0(%rbp)
jmp 0x123a3
movq -0x5a0(%rbp), %rdi
leaq 0x3d28(%rip), %rsi      # 0x160d9
callq 0x3420
jmp 0x123b8
jmp 0x123ba
jmp 0x123bc
leaq -0x198(%rbp), %rdi
addq $0x40, %rdi
callq 0x7690
movq %rax, -0x1a0(%rbp)
leaq -0x198(%rbp), %rdi
addq $0x40, %rdi
callq 0x7700
movq %rax, -0x1a8(%rbp)
leaq -0x1a0(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x76c0
testb $0x1, %al
jne 0x12406
jmp 0x124a5
movq -0x20(%rbp), %rax
movq %rax, -0x5b0(%rbp)
leaq -0x1a0(%rbp), %rdi
callq 0x7730
movq -0x5b0(%rbp), %rdi
movq %rax, %rsi
addq $0x20, %rsi
callq 0x3430
movq %rax, -0x5a8(%rbp)
jmp 0x12439
movq -0x5a8(%rbp), %rdi
leaq 0x3dd7(%rip), %rsi      # 0x1621e
callq 0x3420
jmp 0x1244e
movq -0x20(%rbp), %rax
movq %rax, -0x5c0(%rbp)
leaq -0x1a0(%rbp), %rdi
callq 0x7730
movq -0x5c0(%rbp), %rdi
movq %rax, %rsi
callq 0x3430
movq %rax, -0x5b8(%rbp)
jmp 0x1247d
movq -0x5b8(%rbp), %rdi
leaq 0x3bf8(%rip), %rsi      # 0x16083
callq 0x3420
jmp 0x12492
jmp 0x12494
leaq -0x1a0(%rbp), %rdi
callq 0x7750
jmp 0x123d3
movq -0x20(%rbp), %rdi
callq 0x3140
movq %rax, -0x1b8(%rbp)
leaq -0x1b8(%rbp), %rdi
movl $0x1, %esi
callq 0x10d80
movq %rax, -0x1b0(%rbp)
leaq -0x1b0(%rbp), %rdi
callq 0x6f70
movsbl (%rax), %eax
cmpl $0x2c, %eax
jne 0x1251a
movq -0x20(%rbp), %rdi
callq 0x3140
movq %rax, -0x1c8(%rbp)
leaq -0x1c8(%rbp), %rdi
movl $0x1, %esi
callq 0x10d80
movq %rax, -0x1c0(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x6f70
movb $0x29, (%rax)
jmp 0x1252e
movq -0x20(%rbp), %rdi
leaq 0x3b04(%rip), %rsi      # 0x16029
callq 0x3420
jmp 0x1252c
jmp 0x1252e
movq -0x20(%rbp), %rdi
leaq 0x3db8(%rip), %rsi      # 0x162f1
callq 0x3420
movq %rax, -0x5c8(%rbp)
jmp 0x12547
movq -0x5c8(%rbp), %rdi
leaq -0x140(%rbp), %rsi
callq 0x3430
movq %rax, -0x5d0(%rbp)
jmp 0x12563
movq -0x5d0(%rbp), %rdi
leaq 0x3d98(%rip), %rsi      # 0x16309
callq 0x3420
jmp 0x12578
leaq -0x198(%rbp), %rdi
callq 0xd550
leaq -0x140(%rbp), %rdi
callq 0x3170
jmp 0x11c31
leaq -0x78(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x3ad7(%rip), %rsi      # 0x1607f
callq 0x7520
movb %al, -0x5d1(%rbp)
jmp 0x125b5
movb -0x5d1(%rbp), %al
testb $0x1, %al
jne 0x125c4
jmp 0x13538
leaq -0x78(%rbp), %rdi
callq 0x7590
movq %rax, %rsi
leaq -0x1e8(%rbp), %rdi
callq 0x30f0
jmp 0x125de
leaq -0x209(%rbp), %rdi
movq %rdi, -0x5e0(%rbp)
callq 0x3400
movq -0x5e0(%rbp), %rdx
leaq 0x3c0f(%rip), %rsi      # 0x1620e
leaq -0x208(%rbp), %rdi
callq 0x3340
jmp 0x1260d
leaq -0x209(%rbp), %rdi
callq 0x32a0
movb $0x1, -0x20a(%rbp)
leaq -0x78(%rbp), %rdi
movl $0x1, %esi
callq 0x75b0
movq %rax, -0x218(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x3ac4(%rip), %rsi      # 0x1610f
callq 0x71d0
movb %al, -0x5e1(%rbp)
jmp 0x12658
movb -0x5e1(%rbp), %al
testb $0x1, %al
jne 0x12664
jmp 0x126bb
movb $0x0, -0x20a(%rbp)
leaq -0x78(%rbp), %rdi
movl $0x2, %esi
callq 0x75b0
movq %rax, -0x220(%rbp)
movq -0x220(%rbp), %rax
movq %rax, -0x78(%rbp)
jmp 0x126bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x209(%rbp), %rdi
callq 0x32a0
jmp 0x1352a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1351e
leaq -0x48(%rbp), %rdi
movq %rdi, -0x5f8(%rbp)
callq 0x74f0
movq -0x5f8(%rbp), %rdi
movq %rax, -0x230(%rbp)
callq 0x7370
movq %rax, -0x238(%rbp)
movq -0x230(%rbp), %rdi
movq -0x238(%rbp), %rsi
leaq 0x3a1c(%rip), %rdx      # 0x16116
callq 0x7840
movq %rax, -0x5f0(%rbp)
jmp 0x12708
movq -0x5f0(%rbp), %rax
movq %rax, -0x228(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x7370
movq %rax, -0x240(%rbp)
leaq -0x228(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x7790
testb $0x1, %al
jne 0x12742
jmp 0x12c25
leaq -0x48(%rbp), %rdi
callq 0x7890
leaq -0x78(%rbp), %rdi
movq %rdi, -0x600(%rbp)
movl $0x3, %esi
callq 0x75b0
movq -0x600(%rbp), %rdi
movq %rax, -0x248(%rbp)
movq -0x248(%rbp), %rax
movq %rax, -0x78(%rbp)
movb $0x0, -0x249(%rbp)
movl $0x0, -0x250(%rbp)
movl $0x1, %esi
callq 0x75b0
movq %rax, -0x258(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x7590
movq %rax, %rsi
leaq -0x208(%rbp), %rdi
callq 0x3430
jmp 0x127b8
jmp 0x127ba
leaq -0x78(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x39a6(%rip), %rsi      # 0x16173
callq 0x7520
movb %al, -0x601(%rbp)
jmp 0x127da
movb -0x601(%rbp), %al
testb $0x1, %al
jne 0x127e9
jmp 0x1286e
movl -0x250(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x250(%rbp)
leaq -0x78(%rbp), %rdi
xorl %esi, %esi
callq 0x7550
movq %rax, -0x260(%rbp)
cmpl $0xf4240, -0x250(%rbp)  # imm = 0xF4240
jne 0x12869
movq 0xc7bb(%rip), %rdi      # 0x1efd8
leaq 0x38fc(%rip), %rsi      # 0x16120
callq 0x3220
movq %rax, -0x610(%rbp)
jmp 0x12832
movq -0x610(%rbp), %rdi
movl -0x250(%rbp), %esi
callq 0x33e0
movq %rax, -0x618(%rbp)
jmp 0x1284d
movq -0x618(%rbp), %rdi
movq 0xc76d(%rip), %rsi      # 0x1efc8
callq 0x3280
jmp 0x12862
xorl %edi, %edi
callq 0x32e0
jmp 0x127ba
leaq -0x78(%rbp), %rdi
movq %rdi, -0x620(%rbp)
xorl %esi, %esi
callq 0x7550
movq -0x620(%rbp), %rdi
movq %rax, -0x268(%rbp)
callq 0x7590
movq %rax, %rsi
leaq -0x2a8(%rbp), %rdi
callq 0x30f0
jmp 0x128a4
movl -0x250(%rbp), %edx
leaq -0x288(%rbp), %rdi
leaq -0x2a8(%rbp), %rsi
callq 0x10e00
jmp 0x128bf
movq -0x30(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x7260
movq %rax, -0x628(%rbp)
jmp 0x128d8
movq -0x628(%rbp), %rdi
leaq -0x288(%rbp), %rsi
movq %rsi, -0x638(%rbp)
callq 0x32f0
movq -0x638(%rbp), %rdi
callq 0x3170
leaq -0x2a8(%rbp), %rdi
callq 0x3170
movq -0x20(%rbp), %rax
movq %rax, -0x630(%rbp)
movq -0x18(%rbp), %rdi
movslq -0x250(%rbp), %rsi
callq 0x7490
movq -0x630(%rbp), %rdi
movslq 0x20(%rax), %rsi
shlq $0x2, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x12940
movq -0x20(%rbp), %rax
movq %rax, -0x648(%rbp)
movq -0x30(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x7260
movq %rax, -0x640(%rbp)
jmp 0x12964
movq -0x640(%rbp), %rsi
movq -0x648(%rbp), %rdi
callq 0x3430
jmp 0x12979
movq -0x30(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x7260
movq %rax, -0x650(%rbp)
jmp 0x12992
movq -0x650(%rbp), %rdi
leaq 0x3690(%rip), %rsi      # 0x16030
callq 0x71d0
movb %al, -0x651(%rbp)
jmp 0x129ad
movb -0x651(%rbp), %al
testb $0x1, %al
jne 0x129bc
jmp 0x12a9f
movq -0x20(%rbp), %rax
movq %rax, -0x660(%rbp)
leaq 0x3850(%rip), %rsi      # 0x1621e
leaq -0x2e8(%rbp), %rdi
leaq -0x1e8(%rbp), %rdx
callq 0x7040
jmp 0x129e3
leaq 0x3749(%rip), %rdx      # 0x16133
leaq -0x2c8(%rbp), %rdi
leaq -0x2e8(%rbp), %rsi
callq 0x6ff0
jmp 0x129ff
movq -0x660(%rbp), %rdi
leaq -0x2c8(%rbp), %rsi
callq 0x3430
jmp 0x12a14
leaq -0x2c8(%rbp), %rdi
callq 0x3170
leaq -0x2e8(%rbp), %rdi
callq 0x3170
jmp 0x12b48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x12a57
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x288(%rbp), %rdi
callq 0x3170
leaq -0x2a8(%rbp), %rdi
callq 0x3170
jmp 0x1351e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x12a8e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x2c8(%rbp), %rdi
callq 0x3170
leaq -0x2e8(%rbp), %rdi
callq 0x3170
jmp 0x1351e
movq -0x20(%rbp), %rax
movq %rax, -0x668(%rbp)
leaq 0x376d(%rip), %rsi      # 0x1621e
leaq -0x328(%rbp), %rdi
leaq -0x1e8(%rbp), %rdx
callq 0x7040
jmp 0x12ac6
leaq 0x366a(%rip), %rdx      # 0x16137
leaq -0x308(%rbp), %rdi
leaq -0x328(%rbp), %rsi
callq 0x6ff0
jmp 0x12ae2
movq -0x668(%rbp), %rdi
leaq -0x308(%rbp), %rsi
callq 0x3430
jmp 0x12af7
leaq -0x308(%rbp), %rdi
callq 0x3170
leaq -0x328(%rbp), %rdi
callq 0x3170
jmp 0x12b48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x12b37
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x308(%rbp), %rdi
callq 0x3170
leaq -0x328(%rbp), %rdi
callq 0x3170
jmp 0x1351e
movq -0x20(%rbp), %rax
movq %rax, -0x670(%rbp)
movq -0x18(%rbp), %rdi
movslq -0x250(%rbp), %rsi
callq 0x7490
movq -0x670(%rbp), %rdi
movslq 0x20(%rax), %rsi
shlq $0x2, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x12b7e
movq -0x20(%rbp), %rdi
leaq 0x3516(%rip), %rsi      # 0x1609f
callq 0x3420
jmp 0x12b90
movq -0x20(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x3430
jmp 0x12ba2
movq -0x20(%rbp), %rdi
leaq 0x358a(%rip), %rsi      # 0x16137
callq 0x3420
jmp 0x12bb4
movq -0x20(%rbp), %rax
movq %rax, -0x678(%rbp)
movq -0x18(%rbp), %rdi
movslq -0x250(%rbp), %rsi
callq 0x7490
movq -0x678(%rbp), %rdi
movslq 0x20(%rax), %rsi
shlq $0x2, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x12bea
movq -0x20(%rbp), %rdi
leaq 0x3545(%rip), %rsi      # 0x1613a
callq 0x3420
jmp 0x12bfc
movq -0x20(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x3430
jmp 0x12c0e
movq -0x20(%rbp), %rdi
leaq 0x351e(%rip), %rsi      # 0x16137
callq 0x3420
jmp 0x12c20
jmp 0x134f5
testb $0x1, -0x20a(%rbp)
je 0x12c8c
jmp 0x12c30
leaq -0x48(%rbp), %rdi
callq 0x7370
movq %rax, -0x330(%rbp)
leaq -0x78(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x7790
testb $0x1, %al
jne 0x12c56
jmp 0x12c87
leaq -0x78(%rbp), %rdi
xorl %esi, %esi
callq 0x7550
movq %rax, -0x338(%rbp)
leaq -0x338(%rbp), %rdi
callq 0x7590
movq %rax, %rsi
leaq -0x208(%rbp), %rdi
callq 0x3430
jmp 0x12c85
jmp 0x12c30
jmp 0x12d2b
jmp 0x12c8e
leaq -0x78(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x34d2(%rip), %rsi      # 0x16173
callq 0x7520
movb %al, -0x679(%rbp)
jmp 0x12cae
movb -0x679(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x67a(%rbp)
jne 0x12cc3
jmp 0x12ce9
leaq -0x48(%rbp), %rdi
callq 0x7370
movq %rax, -0x340(%rbp)
leaq -0x78(%rbp), %rdi
leaq -0x340(%rbp), %rsi
callq 0x7790
movb %al, -0x67a(%rbp)
movb -0x67a(%rbp), %al
testb $0x1, %al
jne 0x12cf5
jmp 0x12d29
leaq -0x78(%rbp), %rdi
xorl %esi, %esi
callq 0x7550
movq %rax, -0x348(%rbp)
leaq -0x348(%rbp), %rdi
callq 0x7590
movq %rax, %rsi
leaq -0x208(%rbp), %rdi
callq 0x3430
jmp 0x12d24
jmp 0x12c8e
jmp 0x12d2b
movb $0x1, -0x349(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x7370
movq %rax, -0x358(%rbp)
leaq -0x78(%rbp), %rdi
leaq -0x358(%rbp), %rsi
callq 0x78c0
testb $0x1, %al
jne 0x12d58
jmp 0x12db6
movb $0x0, -0x349(%rbp)
testb $0x1, -0x20a(%rbp)
jne 0x12db4
movq 0xc269(%rip), %rdi      # 0x1efd8
leaq 0x33cf(%rip), %rsi      # 0x16145
callq 0x3220
movq %rax, -0x688(%rbp)
jmp 0x12d84
movq -0x688(%rbp), %rdi
movq -0x70(%rbp), %rsi
callq 0x3070
movq %rax, -0x690(%rbp)
jmp 0x12d9d
movq -0x690(%rbp), %rdi
movq 0xc21d(%rip), %rsi      # 0x1efc8
callq 0x3280
jmp 0x12db2
jmp 0x12db4
jmp 0x12db6
movq -0x78(%rbp), %rax
movq %rax, -0x360(%rbp)
testb $0x1, -0x349(%rbp)
je 0x12ded
leaq -0x78(%rbp), %rdi
movl $0x1, %esi
callq 0x75b0
movq %rax, -0x368(%rbp)
movq -0x368(%rbp), %rax
movq %rax, -0x360(%rbp)
leaq -0x388(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x10fb0
jmp 0x12e02
leaq -0x208(%rbp), %rdi
leaq -0x388(%rbp), %rsi
callq 0x32f0
leaq -0x388(%rbp), %rdi
callq 0x3170
testb $0x1, -0x20a(%rbp)
jne 0x1349a
movq -0x30(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x7930
movq %rax, -0x698(%rbp)
jmp 0x12e47
movq -0x698(%rbp), %rax
movq %rax, -0x398(%rbp)
movq -0x30(%rbp), %rdi
callq 0x7960
movq %rax, -0x3a0(%rbp)
leaq -0x398(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
callq 0x7900
andb $0x1, %al
movb %al, -0x389(%rbp)
testb $0x1, -0x349(%rbp)
jne 0x12efc
movq -0x30(%rbp), %rdx
leaq -0x3c0(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x11300
jmp 0x12ea2
movq -0x30(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x7260
movq %rax, -0x6a0(%rbp)
jmp 0x12ebb
movq -0x6a0(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
callq 0x32f0
leaq -0x3c0(%rbp), %rdi
callq 0x3170
jmp 0x13084
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x3c0(%rbp), %rdi
callq 0x3170
jmp 0x1351e
leaq -0x3e1(%rbp), %rdi
movq %rdi, -0x6a8(%rbp)
callq 0x3400
movq -0x6a8(%rbp), %rdx
leaq 0x32f1(%rip), %rsi      # 0x1620e
leaq -0x3e0(%rbp), %rdi
callq 0x3340
jmp 0x12f2b
leaq -0x3e1(%rbp), %rdi
callq 0x32a0
leaq -0x48(%rbp), %rdi
callq 0x7370
movq %rax, -0x3f0(%rbp)
leaq -0x360(%rbp), %rdi
leaq -0x3f0(%rbp), %rsi
callq 0x7790
testb $0x1, %al
jne 0x12f60
jmp 0x12fc2
leaq -0x360(%rbp), %rdi
callq 0x7590
movq %rax, %rsi
leaq -0x3e0(%rbp), %rdi
callq 0x3430
jmp 0x12f7d
leaq -0x360(%rbp), %rdi
xorl %esi, %esi
callq 0x7550
movq %rax, -0x3f8(%rbp)
jmp 0x12f37
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x3e1(%rbp), %rdi
callq 0x32a0
jmp 0x1351e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x13073
leaq -0x438(%rbp), %rdi
leaq -0x3e0(%rbp), %rsi
callq 0x30f0
jmp 0x12fd7
movl -0x70(%rbp), %edx
leaq -0x418(%rbp), %rdi
leaq -0x438(%rbp), %rsi
callq 0x10e00
jmp 0x12fef
movq -0x30(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x7260
movq %rax, -0x6b0(%rbp)
jmp 0x13008
movq -0x6b0(%rbp), %rdi
leaq -0x418(%rbp), %rsi
callq 0x32f0
leaq -0x418(%rbp), %rdi
callq 0x3170
leaq -0x438(%rbp), %rdi
callq 0x3170
leaq -0x3e0(%rbp), %rdi
callq 0x3170
jmp 0x13084
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x13067
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x418(%rbp), %rdi
callq 0x3170
leaq -0x438(%rbp), %rdi
callq 0x3170
leaq -0x3e0(%rbp), %rdi
callq 0x3170
jmp 0x1351e
movq -0x20(%rbp), %rax
movq %rax, -0x6b8(%rbp)
movq -0x18(%rbp), %rdi
movq -0x70(%rbp), %rsi
callq 0x7490
movq -0x6b8(%rbp), %rdi
movslq 0x20(%rax), %rsi
shlq $0x2, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x130b7
movq -0x30(%rbp), %rdx
leaq -0x458(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x11300
jmp 0x130d0
leaq 0x2f54(%rip), %rsi      # 0x1602b
leaq -0x458(%rbp), %rdi
callq 0x71d0
movb %al, -0x6b9(%rbp)
jmp 0x130eb
leaq -0x458(%rbp), %rdi
callq 0x3170
movb -0x6b9(%rbp), %al
testb $0x1, %al
jne 0x13106
jmp 0x1338c
leaq -0x48(%rbp), %rdi
callq 0x74f0
movq %rax, -0x468(%rbp)
leaq -0x468(%rbp), %rdi
movl $0x3, %esi
callq 0x75b0
movq %rax, -0x460(%rbp)
movq -0x460(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x6d0(%rbp)
movq -0x30(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x7260
movq %rax, -0x6c8(%rbp)
jmp 0x1315d
movq -0x6c8(%rbp), %rdx
leaq 0x3004(%rip), %rsi      # 0x1616f
leaq -0x4a8(%rbp), %rdi
callq 0x7040
jmp 0x13179
leaq 0x309e(%rip), %rdx      # 0x1621e
leaq -0x488(%rbp), %rdi
leaq -0x4a8(%rbp), %rsi
callq 0x6ff0
jmp 0x13195
movq -0x6d0(%rbp), %rdi
leaq -0x488(%rbp), %rsi
callq 0x3430
movq %rax, -0x6d8(%rbp)
jmp 0x131b1
movq -0x6d8(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x3430
movq %rax, -0x6e0(%rbp)
jmp 0x131cd
movq -0x6e0(%rbp), %rdi
leaq 0x2fab(%rip), %rsi      # 0x16186
callq 0x3420
jmp 0x131e2
leaq -0x488(%rbp), %rdi
callq 0x3170
leaq -0x4a8(%rbp), %rdi
callq 0x3170
leaq -0x78(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x2f68(%rip), %rsi      # 0x16175
callq 0x7520
movb %al, -0x6e1(%rbp)
jmp 0x1321a
movb -0x6e1(%rbp), %al
testb $0x1, %al
jne 0x13229
jmp 0x1338a
leaq -0x78(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x2f3b(%rip), %rsi      # 0x16177
callq 0x71d0
movb %al, -0x6e2(%rbp)
jmp 0x13249
movb -0x6e2(%rbp), %al
testb $0x1, %al
jne 0x13281
jmp 0x13255
leaq -0x78(%rbp), %rdi
callq 0x7590
movq %rax, %rdi
leaq 0x2e1b(%rip), %rsi      # 0x16083
callq 0x71d0
movb %al, -0x6e3(%rbp)
jmp 0x13275
movb -0x6e3(%rbp), %al
testb $0x1, %al
jne 0x13281
jmp 0x132ec
leaq -0x78(%rbp), %rdi
xorl %esi, %esi
callq 0x7550
movq %rax, -0x4b0(%rbp)
jmp 0x13385
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x458(%rbp), %rdi
callq 0x3170
jmp 0x1351e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x132db
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 0x1351e
movq -0x20(%rbp), %rdi
leaq 0x2f16(%rip), %rsi      # 0x1620d
callq 0x3420
movq %rax, -0x6f0(%rbp)
jmp 0x13305
movq -0x6f0(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x3430
movq %rax, -0x6f8(%rbp)
jmp 0x13321
movq -0x6f8(%rbp), %rdi
leaq 0x2e4a(%rip), %rsi      # 0x16179
callq 0x3420
movq %rax, -0x700(%rbp)
jmp 0x1333d
leaq -0x78(%rbp), %rdi
callq 0x7590
movq -0x700(%rbp), %rdi
movq %rax, %rsi
callq 0x3430
movq %rax, -0x708(%rbp)
jmp 0x1335e
movq -0x708(%rbp), %rdi
leaq 0x2e19(%rip), %rsi      # 0x16185
callq 0x3420
jmp 0x13373
leaq -0x78(%rbp), %rdi
xorl %esi, %esi
callq 0x7550
movq %rax, -0x4b8(%rbp)
jmp 0x131fa
jmp 0x1338c
movq -0x30(%rbp), %rdx
leaq -0x4d8(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x11300
jmp 0x133a5
leaq 0x2c7f(%rip), %rsi      # 0x1602b
leaq -0x4d8(%rbp), %rdi
callq 0x7520
movb %al, -0x709(%rbp)
jmp 0x133c0
leaq -0x4d8(%rbp), %rdi
callq 0x3170
movb -0x709(%rbp), %al
testb $0x1, %al
jne 0x133db
jmp 0x13498
testb $0x1, -0x389(%rbp)
jne 0x1343c
movq -0x20(%rbp), %rax
movq %rax, -0x720(%rbp)
movq -0x30(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x7260
movq %rax, -0x718(%rbp)
jmp 0x13408
movq -0x718(%rbp), %rsi
movq -0x720(%rbp), %rdi
callq 0x3430
jmp 0x1341d
jmp 0x1343c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x4d8(%rbp), %rdi
callq 0x3170
jmp 0x1351e
movq -0x20(%rbp), %rdi
leaq 0x2dd7(%rip), %rsi      # 0x1621e
callq 0x3420
jmp 0x1344e
movq -0x20(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x3430
jmp 0x13460
movq -0x20(%rbp), %rdi
leaq 0x2d1d(%rip), %rsi      # 0x16188
callq 0x3420
jmp 0x13472
movq -0x20(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x3430
jmp 0x13484
movq -0x20(%rbp), %rdi
leaq 0x2ca8(%rip), %rsi      # 0x16137
callq 0x3420
jmp 0x13496
jmp 0x13498
jmp 0x134f3
movq -0x20(%rbp), %rax
movq %rax, -0x728(%rbp)
movq -0x18(%rbp), %rdi
movq -0x70(%rbp), %rsi
callq 0x7490
movq -0x728(%rbp), %rdi
movslq 0x20(%rax), %rsi
shlq $0x2, %rsi
movl $0x20, %edx
callq 0x3290
jmp 0x134cd
movq -0x20(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x3430
jmp 0x134df
movq -0x20(%rbp), %rdi
leaq 0x2c4d(%rip), %rsi      # 0x16137
callq 0x3420
jmp 0x134f1
jmp 0x134f3
jmp 0x134f5
movq -0x70(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x70(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x3170
leaq -0x1e8(%rbp), %rdi
callq 0x3170
jmp 0x11c31
leaq -0x208(%rbp), %rdi
callq 0x3170
leaq -0x1e8(%rbp), %rdi
callq 0x3170
jmp 0x1359d
jmp 0x1353a
jmp 0x1353c
jmp 0x11c31
movq 0xba90(%rip), %rdi      # 0x1efd8
leaq 0x2dbe(%rip), %rsi      # 0x1630d
callq 0x3220
movq %rax, -0x730(%rbp)
jmp 0x1355d
movq -0x730(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x31f0
movq %rax, -0x738(%rbp)
jmp 0x13576
movq -0x738(%rbp), %rdi
leaq 0x2dac(%rip), %rsi      # 0x16330
callq 0x3220
jmp 0x1358b
leaq -0x48(%rbp), %rdi
callq 0x7990
addq $0x740, %rsp            # imm = 0x740
popq %rbp
retq
leaq -0x48(%rbp), %rdi
callq 0x7990
movq -0x50(%rbp), %rdi
callq 0x33f0
nop