// File: /workspace/github_cpp_makefile_star2_O1/gioannides[P]Language_Processors/src/../include/ast/ast_Expressions.cpp
// Function: PrimaryExpression::render_asm(std::basic_ofstream<char, std::char_traits<char>>&, Context&)
inline void PrimaryExpression::render_asm(std::ofstream& file,Context& contxt)  
{
	/*if(IDENTIFIER!=NULL)
	{
		file << "# id" << *IDENTIFIER << "- f_call" << contxt.is_function_call << "- reading" << contxt.reading << "- function" << contxt.function << "- SizeOf:" << contxt.sizeof_ << "- lhs_of_assignment:" << contxt.lhs_of_assignment << "\n";
	}*/
	if( AssignmentExpressionPtr != NULL && !contxt.reading ) 
	{
		AssignmentExpressionPtr->render_asm(file,contxt);		
	}



	if(CONSTANT != NULL && contxt.reading && contxt.LocalArray){

		contxt.ArraySize.push_back(std::stoi(*CONSTANT));
		
	}


	else if( IDENTIFIER != NULL && !contxt.reading && contxt.function)			//this identifier is involved in expressions
	{
		if(contxt.sizeof_){
			findSize(contxt,*IDENTIFIER);
		}


		if(contxt.Regs>=24 && !contxt.sizeof_)
		{
			std::cout << std::endl << "buy more registers!" << std::endl; 
		}
		int found_0nothing_1local_2globl = 0;	
		int good_index=0;			//this will determine whether the variable wanted is a global or a local
		int i(0), j;				//must initialize the index i outside so it is accessible throughout here
		if(contxt.is_function_call && !contxt.sizeof_)
		{
			for (int i=0; i<contxt.functions_declared.size(); i++)
			{
			//std::cout << "\n\n\n merge!\n\n";
			 	if(contxt.functions_declared[i].name==*IDENTIFIER)
			 	{	//std::cout << "aici;";
				 	contxt.Scopes.push_back(*IDENTIFIER);
				}
			}
			contxt.is_function_call=false;
		}
		else
		{ 
			if(contxt.Variables.size()&&contxt.Scopes.size() && !contxt.sizeof_ && !contxt.enum_constant)
			{
			for(i=contxt.Variables.size()-1; i>=0; i--) {
				for (j=contxt.Scopes.size()-1; j>=0; j--)
				{
					if(contxt.Variables[i].scope == contxt.Scopes[j] && *IDENTIFIER == contxt.Variables[i].id) 
					{
						found_0nothing_1local_2globl = 1;	//means that we found a local variable in the function of that name					
						good_index=i;
						contxt.good_i = good_index;
						i = -1;
						j = -1;
					}
					if(contxt.Variables[good_index].DataType == "unsigned") { //[0] this might cause problems
						contxt.is_unsigned = true;
					}
					if(contxt.Variables[good_index].DataType == "float") {
						contxt.float_ = true;
					}										
				}
			  }
			}
			if(!found_0nothing_1local_2globl && !contxt.sizeof_ && !contxt.enum_constant) {
				for(i=0; i<contxt.Variables.size(); i++) {
					if(contxt.Variables[i].scope == "global" && *IDENTIFIER == contxt.Variables[i].id) {
						found_0nothing_1local_2globl=2;
						good_index = i;
						contxt.good_i = good_index;
						i = contxt.Variables.size();
						if(contxt.Variables[good_index].DataType == "unsigned") {
							contxt.is_unsigned = true;
						}
						if(contxt.Variables[good_index].DataType == "float") {
							contxt.float_ = true;
						}
					}	
				}
		  	} 
			if(found_0nothing_1local_2globl && contxt.nested_arrays)
			{
				
					file << std::endl << "\tli $24, " << contxt.Variables[good_index].word_size;
				
				
				file << std::endl << "\tmul $25,$24,$25";
			}	  		
			if(contxt.lhs_of_assignment && !contxt.sizeof_ && !contxt.enum_constant )
			{
				//file << "# lhs_of_assignment is set\n";
				if(found_0nothing_1local_2globl)
				{
					
					if(contxt.AssignmentOperator != "df" && contxt.AssignmentOperator != "=")
					{
						AssignmentOperator(file,good_index,contxt,found_0nothing_1local_2globl);				
					}
				}
				if(found_0nothing_1local_2globl==1){
					if(!contxt.Variables[good_index].Pointer){
						
						contxt.DataType = contxt.Variables[good_index].DataType;
						
						store_locals(contxt, file, good_index);
						
					}
					else{
						contxt.PointerNotStored = true;
						//std::cout << contxt.Variables[contxt.good_i].PointerLevelsTemp << " " <<  contxt.Variables[contxt.good_i].id << std::endl;
						
					}
				}					
				else if(found_0nothing_1local_2globl==2){
					if(!contxt.Variables[good_index].Pointer){
						
						contxt.DataType = contxt.Variables[good_index].DataType;
						
						store_globals(contxt, file, good_index);
						
					}
					else{
						contxt.PointerNotStored = true;
					}
				}			
				else
				{
						
					//else{
						//file << std::endl << "#VARIABLE : " << *IDENTIFIER << "NOT DECLARED!!!\n";
					//}
				}
			}
			else
			{

			 	if(found_0nothing_1local_2globl==1 && !contxt.sizeof_ && !contxt.enum_constant) 
			 	{
					
					contxt.DataType = contxt.Variables[good_index].DataType;
					
			 		load_locals(contxt, file, good_index);
					
					if(contxt.Cast){
						CastToType(file,contxt,*IDENTIFIER);
					}			
			  	}
     		   		 else if(found_0nothing_1local_2globl==2 && !contxt.sizeof_ && !contxt.enum_constant) 
				{
					
					contxt.DataType = contxt.Variables[good_index].DataType;
					
					load_globals(contxt, file, good_index);
					
					if(contxt.Cast){
						CastToType(file,contxt,*IDENTIFIER);
					}
			
				}		
				else
					
				{	if(!contxt.enum_constant){	
						bool found = false;
						for( int i(0); i < contxt.Enum.size(); i++){
							//std::cout <<  contxt.Enum[i].ScopeID << " " <<  contxt.Enum[i].IDENTIFIER << " " <<  contxt.Enum[i].value << std::endl;
							if(contxt.Enum[i].IDENTIFIER == *IDENTIFIER && contxt.Enum[i].ScopeID == contxt.funct_id){
								file <<  std::endl << "\tli\t$" << contxt.Regs+1 << ", " << contxt.Enum[i].value;
								contxt.regType[contxt.Regs+1]='i';
								found = true;
								break;
							}
						}
						if(!found){
							for( int i(0); i < contxt.Enum.size(); i++){
								if(contxt.Enum[i].IDENTIFIER == *IDENTIFIER && contxt.Enum[i].ScopeID == "global"){
									file <<  std::endl << "\tli\t$" << contxt.Regs+1 << ", " << contxt.Enum[i].value;
									contxt.regType[contxt.Regs+1]='i';
									found = true;
									break;
								}
							}
						}
					}

				}

			}
					
					//}    
						

						if(!contxt.sizeof_){
							//file << std::endl << "#VARIABLE : " << *IDENTIFIER << "NOT DECLARED!!!\n";
						}
				}		
		}	
		
	
	else if( CONSTANT != NULL && !contxt.reading ) 
	{	

	
		
		char tmp2;
		int64_t temp;
		float temp_f;
		bool is_char = false;

		if((*CONSTANT) == "'\\n'"){
			tmp2 = '\n';
			is_char = true;
		}
		else if((*CONSTANT) == "'\\r'"){
			tmp2 = '\r';
			is_char = true;
		}
		else if((*CONSTANT) == "'\\v'"){
			tmp2 = '\v';
			is_char = true;
		}
		else if((*CONSTANT) == "'\\t'"){
			tmp2 = '\t';
			is_char = true;
		}
		else if((*CONSTANT) == "'\\f'"){
			tmp2 = '\f';
			is_char = true;
		}
		else if((*CONSTANT) == "'\\b'"){
			tmp2 = '\b';
			is_char = true;
		}
		else if((*CONSTANT) == "'\\a'"){
			tmp2 = '\a';
			is_char = true;
		}
			
		if(is_char){
			temp = (int)tmp2;
			temp_f = (int)tmp2;
			if(contxt.sizeof_){
				if(contxt.SizeOf < 8){
					contxt.SizeOf = 4;
					return;
				}
			}
		}
			

		if( (*CONSTANT).find_first_of("'")==0 /*&& contxt.variable.word_size == 1*/ && !is_char)
		{
			tmp2 = (*CONSTANT)[1];
			temp = (int)tmp2;
			temp_f = (int)tmp2;
			is_char = true;
			if(contxt.sizeof_){
				contxt.SizeOf = 4;
				return;
			}

		}
		else if(!is_char){
			
			temp_f = (std::stod(*CONSTANT));
		 	temp = (std::stod(*CONSTANT));
			if(contxt.sizeof_){
				if((std::floor(std::stod(*CONSTANT))) != std::stod(*CONSTANT)){
					contxt.SizeOf = 8;
					return;
				}
				else{
					if(contxt.SizeOf < 8){
						contxt.SizeOf = 4;
						return;
					}
				}
			}
		}
		
		if(contxt.function && contxt.UnaryOperators.size() != 0 && contxt.variable.DataType != "float")
		{
			if(contxt.UnaryOperators[contxt.UnaryOperators.size()-1] == '-' && !contxt.function) 
			{			
				temp = (-1) * temp;
				contxt.UnaryOperators.pop_back();
							
			}
			else if(contxt.UnaryOperators[contxt.UnaryOperators.size()-1] == '~'  && !contxt.function) 
			{				
				temp = ~temp;
				contxt.UnaryOperators.pop_back();
							
			}
			else if(contxt.UnaryOperators[contxt.UnaryOperators.size()-1] == '!'  && !contxt.function) 
			{	
				temp = !temp;
				contxt.UnaryOperators.pop_back();									
			}
		}
		if(contxt.enum_constant){
			
			contxt.EnumOperands.push_back(temp);	
			
		}
		
		if(contxt.variable.DataType != "float" && !contxt.enum_constant){			
			contxt.variable.value = temp;
		}
		else if(contxt.variable.DataType == "float" && !contxt.enum_constant){
			contxt.variable.value = temp_f;
		}
		
		if(is_char && contxt.function){		
			file <<  std::endl << "\tli\t$" << contxt.Regs+1 << ", " << temp;
			contxt.regType[contxt.Regs+1]='i';
		}
					

		if(!contxt.reading && contxt.function && !is_char && !contxt.enum_constant) 
		{	if(contxt.is_array) { contxt.DataType = "int"; }
			if(contxt.DataType == "float" || (std::floor(std::stod(*CONSTANT))) != std::stod(*CONSTANT)){
				
				if(contxt.lhs_of_assignment &&!contxt.LocalArray){
					file <<  std::endl << "\tli.s\t$f" << contxt.Regs+2 << ", " << temp_f;
					for(int i(0); i < 2; i++){
						file << std::endl << "\taddu\t$" << contxt.Regs+2 << ",$" << contxt.Regs+2 << ",$" << contxt.Regs+2; //TODO: NEW THING
					}
					file << std::endl << "\tmtc1\t$" << contxt.Regs+2 << ",$f" << contxt.Regs+2;
					contxt.regType[contxt.Regs+2]='f';
				}
				else{

					file <<  std::endl << "\tli.s\t$f" << contxt.Regs+1 << ", " << temp_f; 
					contxt.regType[contxt.Regs+1]='f';
				}
				
			}
			else if(contxt.DataType != "float" || (std::floor(std::stod(*CONSTANT))) == std::stod(*CONSTANT)){
				if(contxt.lhs_of_assignment && !contxt.LocalArray){						//TODO: NEW THING
					int j = 0;
					file <<  std::endl << "\tli\t$" << contxt.Regs+2 << ", " << temp;
					if(contxt.variable.DataType == "char") { j = 0; }
					else if(contxt.variable.DataType == "short") { j = 1; }
					else { j = 2; }
					for(int i(0); i < j; i++){
						file << std::endl << "\taddu\t$" << contxt.Regs+2 << ",$" << contxt.Regs+2 << ",$" << contxt.Regs+2;
					}
					contxt.regType[contxt.Regs+2]='i';
				}
				else{
					file <<  std::endl << "\tli\t$" << contxt.Regs+1 << ", " << temp;
					contxt.regType[contxt.Regs+1]='i';
				}
				
			}
			
		}
		if ((!contxt.reading && !contxt.function && !contxt.enum_constant))
		{
			//file << std::endl << "# this is where you start evaluating " << temp ;
			contxt.eval[contxt.Regs+1]=temp;
			contxt.eval_f[contxt.Regs+1] = temp_f;
		}
		
	}
				
	else if( IDENTIFIER != NULL && contxt.reading && contxt.function && !contxt.sizeof_)
	{	for (int i=0; i<contxt.functions_declared.size(); i++)
		{
			//std::cout << "\n\n\n merge!\n\n";
			 if(contxt.functions_declared[i].name==*IDENTIFIER)
			 {	//std::cout << "aici;";
			 	//contxt.Scopes.push_back(*IDENTIFIER);
			 	if(contxt.max_offset<contxt.functions_declared[i].paramters_size){
					//std::cout <<"\n update max_offset: " << contxt.functions_declared[i].paramters_size << "\n";
					contxt.max_offset=contxt.functions_declared[i].paramters_size;
					break;
				} 	
			//	std::cout << "\n" <<  contxt.functions_declared[i].paramters_size << " " <<  contxt.functions_declared[i].name << "\n"; 
			//	for(int j=0; j<contxt.Scopes.size(); j++)
			//	{
			//		std::cout << contxt.Scopes[j] << " ";
			// 	}
			// 	std::cout << "\n";
			 }
		}
	}

	else if(IDENTIFIER != NULL && !contxt.function && !contxt.function_dec && !contxt.lhs_of_assignment){
			
			contxt.GlobalPointerValue = *IDENTIFIER;

	}

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xa8, %rsp
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %rbp
movq 0x20(%rdi), %rdi
testq %rdi, %rdi
je 0x19391
cmpb $0x0, 0x21b(%rbx)
jne 0x19391
movq %r14, %rsi
movq %rbx, %rdx
callq 0x11e3c
movq 0x10(%rbp), %rdi
testq %rdi, %rdi
je 0x1942c
cmpb $0x1, 0x21b(%rbx)
jne 0x1942c
cmpb $0x1, 0x74(%rbx)
jne 0x1942c
movq (%rdi), %r15
callq 0x7060
movq %rax, %r14
movl (%rax), %ebp
movl $0x0, (%rax)
leaq 0x28(%rsp), %r12
movq %r15, %rdi
movq %r12, %rsi
movl $0xa, %edx
callq 0x7470
cmpq %r15, (%r12)
je 0x1a8c7
movslq %eax, %rcx
cmpq %rax, %rcx
jne 0x1a8d3
movl (%r14), %ecx
cmpl $0x22, %ecx
je 0x1a8d3
testl %ecx, %ecx
jne 0x19402
movl %ebp, (%r14)
movl %eax, 0x44(%rsp)
movq 0x80(%rbx), %rsi
cmpq 0x88(%rbx), %rsi
je 0x19977
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x80(%rbx)
jmp 0x1a40f
movq 0x8(%rbp), %r12
testq %r12, %r12
je 0x196da
cmpb $0x0, 0x21b(%rbx)
jne 0x196da
cmpb $0x1, 0x218(%rbx)
jne 0x196da
cmpb $0x1, 0x1f8(%rbx)
jne 0x194a3
movq %r14, %r15
leaq 0x98(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%r12), %rsi
movq 0x8(%r12), %rdx
addq %rsi, %rdx
leaq 0x88(%rsp), %r12
movq %r12, %rdi
callq 0x8a36
movq %rbx, %rdi
movq %r12, %rsi
callq 0x1b6c5
movq (%r12), %rdi
cmpq %r14, %rdi
movq %r15, %r14
je 0x194a3
callq 0x72e0
cmpl $0x18, 0x310(%rbx)
jl 0x19523
cmpb $0x0, 0x1f8(%rbx)
jne 0x19523
movq 0x2caf4(%rip), %r12     # 0x45fb0
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %r12, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %rax, %r12
leaq 0x1e582(%rip), %rsi     # 0x37a70
movl $0x13, %edx
movq %rax, %rdi
callq 0x73a0
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %r12, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
cmpb $0x1, 0x4b0(%rbx)
jne 0x19539
cmpb $0x0, 0x1f8(%rbx)
je 0x19c80
movq %r14, 0x18(%rsp)
movq 0x248(%rbx), %r14
movq 0x240(%rbx), %rcx
movb $0x1, %al
subq %rcx, %r14
movq %rbp, 0x20(%rsp)
je 0x19823
movq 0x468(%rbx), %rcx
cmpq 0x460(%rbx), %rcx
je 0x19823
movq %rbp, %r12
cmpb $0x0, 0x1f8(%rbx)
jne 0x19826
xorl %r13d, %r13d
cmpb $0x0, 0x14d(%rbx)
jne 0x19829
sarq $0x4, %r14
movabsq $0x2e8ba2e8ba2e8ba3, %rcx # imm = 0x2E8BA2E8BA2E8BA3
imulq %rcx, %r14
decl %r14d
js 0x19829
xorl %r13d, %r13d
movl $0x0, 0x8(%rsp)
movq 0x468(%rbx), %r15
subq 0x460(%rbx), %r15
shrq $0x5, %r15
decl %r15d
js 0x196bf
movslq %r14d, %rax
movq 0x240(%rbx), %rbp
imulq $0xb0, %rax, %r12
movl %r15d, %eax
movq 0x460(%rbx), %rcx
shlq $0x5, %rax
movq 0x38(%rbp,%r12), %rdx
cmpq 0x8(%rcx,%rax), %rdx
jne 0x19642
addq %rbp, %r12
testq %rdx, %rdx
je 0x19618
addq %rax, %rcx
movq (%rcx), %rsi
movq 0x30(%r12), %rdi
callq 0x7350
testl %eax, %eax
jne 0x19642
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdx
cmpq 0x10(%r12), %rdx
jne 0x19642
testq %rdx, %rdx
je 0x1969f
movq 0x8(%r12), %rsi
movq (%rax), %rdi
callq 0x7350
testl %eax, %eax
je 0x1969f
movl %r13d, %eax
movl %eax, %r13d
cltq
imulq $0xb0, %rax, %r12
leaq (%r12,%rbp), %rdi
addq $0x58, %rdi
leaq 0x1dff0(%rip), %rsi     # 0x37650
callq 0x70c0
testl %eax, %eax
jne 0x19670
movb $0x1, 0x219(%rbx)
movq 0x240(%rbx), %rax
leaq (%rax,%r12), %rdi
addq $0x58, %rdi
leaq 0x1deff(%rip), %rsi     # 0x37585
callq 0x70c0
testl %eax, %eax
jne 0x195c8
movb $0x1, 0x340(%rbx)
jmp 0x195c8
movl %r14d, 0x5b4(%rbx)
movl $0xffffffff, %r15d      # imm = 0xFFFFFFFF
movl $0x1, 0x8(%rsp)
movl %r14d, %eax
movl $0xffffffff, %r14d      # imm = 0xFFFFFFFF
jmp 0x19645
decl %r14d
jns 0x195b6
cmpl $0x0, 0x8(%rsp)
sete %al
movq 0x20(%rsp), %r12
jmp 0x19829
testq %rdi, %rdi
je 0x196e8
cmpb $0x0, 0x21b(%rbx)
je 0x19760
testq %r12, %r12
je 0x1a40f
cmpb $0x1, 0x21b(%rbx)
jne 0x19710
cmpb $0x1, 0x218(%rbx)
jne 0x19710
cmpb $0x0, 0x1f8(%rbx)
je 0x19c08
testq %r12, %r12
je 0x1a40f
cmpb $0x0, 0x218(%rbx)
jne 0x1a40f
cmpb $0x0, 0x13e7c(%rbx)
jne 0x1a40f
cmpb $0x0, 0x1d2(%rbx)
jne 0x1a40f
addq $0x50, %rbx
movq %rbx, %rdi
movq %r12, %rsi
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x71c0
movq %r14, 0x18(%rsp)
leaq 0x1e333(%rip), %rsi     # 0x37a9f
callq 0x70c0
movb $0x1, %r14b
testl %eax, %eax
je 0x19819
movq 0x10(%rbp), %rdi
leaq 0x1e31d(%rip), %rsi     # 0x37aa4
callq 0x70c0
testl %eax, %eax
je 0x1998d
movq 0x10(%rbp), %rdi
leaq 0x1e30a(%rip), %rsi     # 0x37aa9
callq 0x70c0
testl %eax, %eax
je 0x19d16
movq 0x10(%rbp), %rdi
leaq 0x1e2f7(%rip), %rsi     # 0x37aae
callq 0x70c0
testl %eax, %eax
je 0x19d20
movq 0x10(%rbp), %rdi
leaq 0x1e2e4(%rip), %rsi     # 0x37ab3
callq 0x70c0
testl %eax, %eax
je 0x19d2a
movq 0x10(%rbp), %rdi
leaq 0x1e2d1(%rip), %rsi     # 0x37ab8
callq 0x70c0
testl %eax, %eax
je 0x19ec1
movq 0x10(%rbp), %rdi
leaq 0x1e2be(%rip), %rsi     # 0x37abd
callq 0x70c0
xorl %ecx, %ecx
testl %eax, %eax
sete %r14b
movl $0x7, %eax
cmovnel %ecx, %eax
jmp 0x19ec6
movl $0xa, %eax
jmp 0x19ec6
movq %rbp, %r12
xorl %r13d, %r13d
testb %al, %al
je 0x19997
cmpb $0x0, 0x1f8(%rbx)
jne 0x199a1
cmpb $0x0, 0x14d(%rbx)
jne 0x199a1
movq 0x240(%rbx), %rax
cmpq %rax, 0x248(%rbx)
je 0x199a1
xorl %ecx, %ecx
xorl %r14d, %r14d
movl $0x0, 0x8(%rsp)
imulq $0xb0, %rcx, %r15
leaq (%rax,%r15), %rdi
addq $0x30, %rdi
leaq 0x1dddc(%rip), %rsi     # 0x3765e
callq 0x70c0
testl %eax, %eax
jne 0x198c6
movq 0x8(%r12), %rax
movq 0x240(%rbx), %rbp
movq 0x8(%rax), %rdx
cmpq 0x10(%rbp,%r15), %rdx
jne 0x198c6
leaq (%r15,%rbp), %r12
testq %rdx, %rdx
je 0x19902
movq 0x8(%r12), %rsi
movq (%rax), %rdi
callq 0x7350
testl %eax, %eax
je 0x19902
movl %r14d, %ebp
movq 0x20(%rsp), %r12
jmp 0x198c9
movl %r14d, %ebp
incl %ebp
movslq %ebp, %rcx
movq 0x240(%rbx), %rax
movq 0x248(%rbx), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
movabsq $0x2e8ba2e8ba2e8ba3, %rsi # imm = 0x2E8BA2E8BA2E8BA3
imulq %rsi, %rdx
movl %ebp, %r14d
cmpq %rcx, %rdx
ja 0x1986c
jmp 0x199a9
movl %r14d, 0x5b4(%rbx)
movq %r12, %rdi
movq 0x248(%rbx), %r12
addq $0x58, %rdi
leaq 0x1dd32(%rip), %rsi     # 0x37650
callq 0x70c0
testl %eax, %eax
jne 0x1992e
movb $0x1, 0x219(%rbx)
subq %rbp, %r12
shrq $0x4, %r12
imull $0xba2e8ba3, %r12d, %ebp # imm = 0xBA2E8BA3
movq 0x240(%rbx), %rax
leaq (%rax,%r15), %rdi
addq $0x58, %rdi
leaq 0x1dc33(%rip), %rsi     # 0x37585
callq 0x70c0
movl $0x2, 0x8(%rsp)
testl %eax, %eax
movq 0x20(%rsp), %r12
jne 0x1996f
movb $0x1, 0x340(%rbx)
movl %r14d, %r13d
jmp 0x198c9
addq $0x78, %rbx
leaq 0x44(%rsp), %rdx
movq %rbx, %rdi
callq 0x1a978
jmp 0x1a40f
movl $0xd, %eax
jmp 0x19ec6
movl $0x1, 0x8(%rsp)
jmp 0x199a9
movl $0x0, 0x8(%rsp)
movl 0x8(%rsp), %ebp
testl %ebp, %ebp
movq 0x18(%rsp), %r14
je 0x19a5c
cmpl $0x0, 0x13e90(%rbx)
je 0x19a5c
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %r14, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %rax, %r15
leaq 0x1e08c(%rip), %rsi     # 0x37a84
movl $0x9, %edx
movq %rax, %rdi
callq 0x73a0
movslq %r13d, %rax
movq 0x240(%rbx), %rcx
imulq $0xb0, %rax, %rax
movl (%rcx,%rax), %esi
movq %r15, %rdi
callq 0x75c0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %r14, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
leaq 0x1e03f(%rip), %rsi     # 0x37a8e
movl $0x10, %edx
movq %rax, %rdi
callq 0x73a0
cmpb $0x1, 0x1d2(%rbx)
jne 0x19a7b
cmpb $0x0, 0x1f8(%rbx)
jne 0x19a7b
cmpb $0x0, 0x14d(%rbx)
je 0x19d34
cmpl $0x2, %ebp
je 0x19aa0
cmpl $0x1, %ebp
jne 0x19ab6
cmpb $0x0, 0x1f8(%rbx)
jne 0x19a9b
cmpb $0x0, 0x14d(%rbx)
je 0x1a1bb
cmpl $0x2, %ebp
jne 0x19ab6
cmpb $0x0, 0x1f8(%rbx)
jne 0x19ab6
cmpb $0x0, 0x14d(%rbx)
je 0x19dd0
cmpb $0x0, 0x14d(%rbx)
jne 0x1a40f
movq 0xc0(%rbx), %r13
movq 0xc8(%rbx), %rbp
subq %r13, %rbp
je 0x19b73
sarq $0x3, %rbp
movabsq $-0x71c71c71c71c71c7, %rax # imm = 0x8E38E38E38E38E39
imulq %rax, %rbp
movq 0x20(%rsp), %rax
movq 0x8(%rax), %r12
movq 0x8(%r12), %r14
movq 0x220(%rbx), %rax
movq %rax, 0x10(%rsp)
movq 0x228(%rbx), %rax
movq %rax, 0x8(%rsp)
cmpq $0x1, %rbp
adcq $0x0, %rbp
xorl %r15d, %r15d
movq 0x28(%r13,%r15), %rdx
cmpq %r14, %rdx
jne 0x19b6a
testq %rdx, %rdx
je 0x19b3e
movq (%r12), %rsi
movq 0x20(%r13,%r15), %rdi
callq 0x7350
testl %eax, %eax
jne 0x19b6a
movq 0x8(%r13,%r15), %rdx
cmpq 0x8(%rsp), %rdx
jne 0x19b6a
testq %rdx, %rdx
je 0x19e4f
movq (%r13,%r15), %rdi
movq 0x10(%rsp), %rsi
callq 0x7350
testl %eax, %eax
je 0x19e4f
addq $0x48, %r15
decq %rbp
jne 0x19b1d
movq 0xc0(%rbx), %r13
cmpq %r13, 0xc8(%rbx)
movabsq $-0x71c71c71c71c71c7, %rbp # imm = 0x8E38E38E38E38E39
je 0x1a40f
xorl %r15d, %r15d
leaq 0x1dac3(%rip), %r12     # 0x3765e
xorl %r14d, %r14d
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x28(%r13,%r15), %rdx
cmpq 0x8(%rax), %rdx
jne 0x19bde
testq %rdx, %rdx
je 0x19bc8
movq (%rax), %rsi
movq 0x20(%r13,%r15), %rdi
callq 0x7350
testl %eax, %eax
jne 0x19bde
addq %r15, %r13
movq %r13, %rdi
movq %r12, %rsi
callq 0x70c0
testl %eax, %eax
je 0x19e4f
incq %r14
movq 0xc0(%rbx), %r13
movq 0xc8(%rbx), %rax
subq %r13, %rax
sarq $0x3, %rax
imulq %rbp, %rax
addq $0x48, %r15
cmpq %r14, %rax
ja 0x19b9e
jmp 0x1a40f
movq 0x400(%rbx), %r14
movq 0x408(%rbx), %rax
subq %r14, %rax
je 0x1a40f
sarq $0x3, %rax
movabsq $-0x71c71c71c71c71c7, %r15 # imm = 0x8E38E38E38E38E39
imulq %rax, %r15
movq 0x8(%r12), %r13
movl 0x4ac(%rbx), %ebp
cmpq $0x1, %r15
adcq $0x0, %r15
addq $0x10, %r14
movq (%r14), %rdx
cmpq %r13, %rdx
jne 0x19c72
testq %rdx, %rdx
je 0x19c66
movq (%r12), %rsi
movq -0x8(%r14), %rdi
callq 0x7350
testl %eax, %eax
jne 0x19c72
movl -0x10(%r14), %eax
cmpl %eax, %ebp
jl 0x1a248
addq $0x48, %r14
decq %r15
jne 0x19c48
jmp 0x1a40f
movq 0x400(%rbx), %rax
cmpq %rax, 0x408(%rbx)
je 0x19d0a
movq %rbp, %r14
leaq 0x460(%rbx), %rcx
movq %rcx, 0x18(%rsp)
movl $0x10, %r15d
xorl %r13d, %r13d
movabsq $-0x71c71c71c71c71c7, %rbp # imm = 0x8E38E38E38E38E39
movq 0x8(%r14), %r12
movq (%rax,%r15), %rdx
cmpq 0x8(%r12), %rdx
jne 0x19ce5
testq %rdx, %rdx
je 0x19cd8
movq (%r12), %rsi
movq -0x8(%rax,%r15), %rdi
callq 0x7350
testl %eax, %eax
jne 0x19ce5
movq 0x18(%rsp), %rdi
movq %r12, %rsi
callq 0xc5f0
incq %r13
movq 0x400(%rbx), %rax
movq 0x408(%rbx), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
imulq %rbp, %rcx
addq $0x48, %r15
cmpq %r13, %rcx
ja 0x19cb2
movb $0x0, 0x4b0(%rbx)
jmp 0x1a40f
movl $0xb, %eax
jmp 0x19ec6
movl $0x9, %eax
jmp 0x19ec6
movl $0xc, %eax
jmp 0x19ec6
testl %ebp, %ebp
je 0x19d7b
leaq 0x318(%rbx), %r15
leaq 0x1b2fc(%rip), %rsi     # 0x35042
movq %r15, %rdi
callq 0x70c0
testl %eax, %eax
je 0x19d7b
leaq 0x1d9fa(%rip), %rsi     # 0x37753
movq %r15, %rdi
callq 0x70c0
testl %eax, %eax
je 0x19d7b
movq 0x20(%rsp), %rdi
movq %r14, %rsi
movl %r13d, %edx
movq %rbx, %rcx
movl %ebp, %r8d
callq 0x1bbca
cmpl $0x2, %ebp
je 0x1a253
cmpl $0x1, %ebp
jne 0x1a40f
movslq %r13d, %rax
movq 0x240(%rbx), %rsi
imulq $0xb0, %rax, %rax
cmpb $0x0, 0x9c(%rsi,%rax)
jne 0x1a272
addq %rax, %rsi
addq $0x58, %rsi
movq %rbx, %rdi
callq 0x71c0
movq %rbx, %rdi
movq 0x18(%rsp), %rsi
movl %r13d, %edx
callq 0x1c95e
jmp 0x1a40f
movslq %r13d, %rax
movq 0x240(%rbx), %rcx
imulq $0xb0, %rax, %rax
leaq (%rcx,%rax), %rsi
addq $0x58, %rsi
movq %rbx, %rdi
callq 0x71c0
movq %rbx, %rdi
movq %r14, %rsi
movl %r13d, %edx
callq 0x1fe5e
cmpb $0x1, 0x90(%rbx)
jne 0x1a40f
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rax
leaq 0x58(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x48(%rsp), %r15
movq %r15, %rdi
callq 0x8a36
movq 0x18(%rsp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1ee1c
movq 0x48(%rsp), %rdi
jmp 0x1a235
movq 0x18(%rsp), %rdi
callq 0x7180
movq %rax, %r14
leaq 0x1dad7(%rip), %rsi     # 0x3793a
movl $0x5, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%rbx), %esi
incl %esi
movq %r14, %rdi
callq 0x75c0
movq %rax, %r14
leaq 0x1dd73(%rip), %rsi     # 0x37bfd
movl $0x2, %edx
movq %rax, %rdi
callq 0x73a0
movq 0xc0(%rbx), %rax
movsd 0x40(%rax,%r15), %xmm0
movq %r14, %rdi
callq 0x7540
movslq 0x310(%rbx), %rax
movb $0x69, 0x342(%rax,%rbx)
jmp 0x1a40f
movl $0x8, %eax
testb %r14b, %r14b
je 0x19eec
cvtsi2ss %eax, %xmm0
movss %xmm0, 0x8(%rsp)
movl %eax, %r12d
cmpb $0x1, 0x1f8(%rbx)
jne 0x19eec
cmpl $0x7, 0x1fc(%rbx)
jg 0x19eec
jmp 0x19f16
movq 0x10(%rbp), %rdi
leaq 0x1dbc9(%rip), %rsi     # 0x37ac0
movl $0x1, %ecx
xorl %edx, %edx
callq 0x7500
testq %rax, %rax
jne 0x19f25
testb %r14b, %r14b
jne 0x19f25
cmpb $0x1, 0x1f8(%rbx)
jne 0x19f87
movl $0x4, 0x1fc(%rbx)
jmp 0x1a40f
testb %r14b, %r14b
jne 0x1a077
movq %rbp, %r15
movq 0x10(%rbp), %rax
movq (%rax), %r12
callq 0x7060
movq %rax, %r13
movl (%rax), %eax
movl %eax, 0x10(%rsp)
movl $0x0, (%r13)
leaq 0x28(%rsp), %rbp
movq %r12, %rdi
movq %rbp, %rsi
callq 0x7270
cmpq %r12, (%rbp)
je 0x1a8df
movl (%r13), %eax
testl %eax, %eax
movsd %xmm0, 0x8(%rsp)
je 0x19fa9
cmpl $0x22, %eax
jne 0x19fb1
leaq 0x1dc14(%rip), %rdi     # 0x37b96
callq 0x74c0
movq 0x10(%rbp), %rax
movq (%rax), %rax
movsbq 0x1(%rax), %r12
xorps %xmm0, %xmm0
cvtsi2ss %r12d, %xmm0
movss %xmm0, 0x8(%rsp)
movb $0x1, %r14b
jmp 0x1a077
movl 0x10(%rsp), %eax
movl %eax, (%r13)
movq 0x10(%r15), %rax
movq (%rax), %r12
movl (%r13), %eax
movl %eax, 0x10(%rsp)
movl $0x0, (%r13)
leaq 0x28(%rsp), %rbp
movq %r12, %rdi
movq %rbp, %rsi
callq 0x7270
cmpq %r12, (%rbp)
je 0x1a8eb
movl (%r13), %eax
testl %eax, %eax
je 0x19ffb
cmpl $0x22, %eax
jne 0x1a003
leaq 0x1dba0(%rip), %rdi     # 0x37b96
callq 0x74c0
movl 0x10(%rsp), %eax
movl %eax, (%r13)
cvtsd2ss 0x8(%rsp), %xmm1
movss %xmm1, 0x8(%rsp)
cvttsd2si %xmm0, %r12
cmpb $0x1, 0x1f8(%rbx)
jne 0x1a074
movq %r12, 0x10(%rsp)
movq 0x10(%r15), %rax
movq (%rax), %rbp
movl (%r13), %eax
movl %eax, 0x38(%rsp)
movl $0x0, (%r13)
leaq 0x28(%rsp), %r12
movq %rbp, %rdi
movq %r12, %rsi
callq 0x7270
cmpq %rbp, (%r12)
je 0x1a8f7
movl (%r13), %eax
testl %eax, %eax
je 0x1a11f
cmpl $0x22, %eax
jne 0x1a127
leaq 0x1db27(%rip), %rdi     # 0x37b96
callq 0x74c0
movq %r15, %rbp
cmpb $0x1, 0x218(%rbx)
jne 0x1a28d
movq 0x4d8(%rbx), %rax
cmpq 0x4d0(%rbx), %rax
je 0x1a28d
leaq 0x2b0(%rbx), %rdi
leaq 0x1d4df(%rip), %rsi     # 0x37585
callq 0x70c0
testl %eax, %eax
je 0x1a28d
movq 0x4d8(%rbx), %rax
movzbl -0x1(%rax), %ecx
cmpl $0x21, %ecx
je 0x1a102
cmpl $0x7e, %ecx
je 0x1a0ec
cmpl $0x2d, %ecx
jne 0x1a28d
cmpb $0x0, 0x218(%rbx)
je 0x1a280
cmpl $0x21, %ecx
je 0x1a102
cmpl $0x7e, %ecx
jne 0x1a28d
cmpb $0x0, 0x218(%rbx)
je 0x1a27b
cmpl $0x21, %ecx
jne 0x1a28d
cmpb $0x0, 0x218(%rbx)
jne 0x1a28d
xorl %ecx, %ecx
testq %r12, %r12
sete %cl
movq %rcx, %r12
jmp 0x1a283
movl 0x38(%rsp), %eax
movl %eax, (%r13)
callq 0x7590
movsd %xmm0, 0x38(%rsp)
movq 0x10(%r15), %rax
movq (%rax), %r12
movl (%r13), %eax
movl %eax, 0x34(%rsp)
movl $0x0, (%r13)
leaq 0x28(%rsp), %rbp
movq %r12, %rdi
movq %rbp, %rsi
callq 0x7270
cmpq %r12, (%rbp)
je 0x1a903
movl (%r13), %eax
testl %eax, %eax
movq 0x10(%rsp), %r12
je 0x1a181
cmpl $0x22, %eax
jne 0x1a189
leaq 0x1da1a(%rip), %rdi     # 0x37b96
callq 0x74c0
movl 0x34(%rsp), %eax
movl %eax, (%r13)
movsd 0x38(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jne 0x1a197
jnp 0x1a1a6
movl $0x8, 0x1fc(%rbx)
jmp 0x1a40f
cmpl $0x7, 0x1fc(%rbx)
movq %r15, %rbp
jle 0x19f16
jmp 0x1a077
movslq %r13d, %rax
movq 0x240(%rbx), %rcx
imulq $0xb0, %rax, %rax
leaq (%rcx,%rax), %rsi
addq $0x58, %rsi
movq %rbx, %rdi
callq 0x71c0
movq %rbx, %rdi
movq %r14, %rsi
movl %r13d, %edx
callq 0x1e7b7
cmpb $0x1, 0x90(%rbx)
jne 0x1a40f
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rax
leaq 0x78(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x68(%rsp), %r15
movq %r15, %rdi
callq 0x8a36
movq 0x18(%rsp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1ee1c
movq 0x68(%rsp), %rdi
cmpq %r14, %rdi
je 0x1a40f
callq 0x72e0
jmp 0x1a40f
movl %eax, 0x4ac(%rbx)
jmp 0x1a40f
movslq %r13d, %rax
movq 0x240(%rbx), %rsi
imulq $0xb0, %rax, %rax
cmpb $0x0, 0x9c(%rsi,%rax)
je 0x1a74e
movb $0x1, 0x48(%rbx)
jmp 0x1a40f
notq %r12
jmp 0x1a283
negq %r12
decq %rax
movq %rax, 0x4d8(%rbx)
cmpb $0x1, 0x14d(%rbx)
jne 0x1a2cc
movl %r12d, 0x28(%rsp)
movq 0x158(%rbx), %rsi
cmpq 0x160(%rbx), %rsi
je 0x1a2bb
movl %r12d, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x158(%rbx)
jmp 0x1a2cc
leaq 0x150(%rbx), %rdi
leaq 0x28(%rsp), %rdx
callq 0x1a978
leaq 0x2b0(%rbx), %r13
leaq 0x1d2ab(%rip), %rsi     # 0x37585
movq %r13, %rdi
callq 0x70c0
testl %eax, %eax
je 0x1a2ef
cmpb $0x0, 0x14d(%rbx)
je 0x1a316
leaq 0x1d28f(%rip), %rsi     # 0x37585
movq %r13, %rdi
callq 0x70c0
testl %eax, %eax
jne 0x1a326
cmpb $0x0, 0x14d(%rbx)
jne 0x1a326
xorps %xmm0, %xmm0
cvtss2sd 0x8(%rsp), %xmm0
jmp 0x1a31e
xorps %xmm0, %xmm0
cvtsi2sd %r12, %xmm0
movsd %xmm0, 0x280(%rbx)
testb %r14b, %r14b
je 0x1a3c6
cmpb $0x1, 0x218(%rbx)
jne 0x1a3c6
movq 0x18(%rsp), %r15
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %r15, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %r12, %r15
movq %rax, %r12
leaq 0x1d5c5(%rip), %rsi     # 0x3793a
movl $0x5, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%rbx), %esi
incl %esi
movq %r12, %rdi
callq 0x75c0
movq %rax, %r12
leaq 0x1d861(%rip), %rsi     # 0x37bfd
movl $0x2, %edx
movq %rax, %rdi
callq 0x73a0
movq %r12, %rdi
movq %r15, %r12
movq %r15, %rsi
callq 0x72f0
movslq 0x310(%rbx), %rax
movb $0x69, 0x342(%rax,%rbx)
cmpb $0x0, 0x21b(%rbx)
je 0x1a421
cmpb $0x0, 0x21b(%rbx)
jne 0x1a40f
cmpb $0x0, 0x218(%rbx)
jne 0x1a40f
cmpb $0x0, 0x14d(%rbx)
jne 0x1a40f
movslq 0x310(%rbx), %rax
movl %r12d, 0x5fc(%rbx,%rax,4)
movslq 0x310(%rbx), %rax
movss 0x8(%rsp), %xmm0
movss %xmm0, 0xa23c(%rbx,%rax,4)
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
testb %r14b, %r14b
jne 0x1a3cf
cmpb $0x0, 0x218(%rbx)
je 0x1a3cf
cmpb $0x0, 0x14d(%rbx)
jne 0x1a3cf
cmpb $0x1, 0x13e94(%rbx)
jne 0x1a450
leaq 0x1dd44(%rip), %rsi     # 0x3818c
movq %rbx, %rdi
callq 0x7450
leaq 0x1d12e(%rip), %rsi     # 0x37585
movq %rbx, %rdi
callq 0x70c0
testl %eax, %eax
movq 0x18(%rsp), %r14
je 0x1a497
movq 0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x207bb
callq 0x7590
movsd %xmm0, 0x10(%rsp)
movq 0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x207bb
movsd 0x10(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jne 0x1a497
jnp 0x1a508
cmpb $0x1, 0x1d2(%rbx)
jne 0x1a4aa
cmpb $0x0, 0x74(%rbx)
je 0x1a5c5
movq %r14, %rdi
callq 0x7180
movq %rax, %r14
leaq 0x1d2a8(%rip), %rsi     # 0x37764
movl $0x8, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%rbx), %esi
incl %esi
movq %r14, %rdi
callq 0x75c0
movq %rax, %r14
leaq 0x1d71a(%rip), %rsi     # 0x37bfd
movl $0x2, %edx
movq %rax, %rdi
callq 0x73a0
xorps %xmm0, %xmm0
cvtss2sd 0x8(%rsp), %xmm0
movq %r14, %rdi
callq 0x7540
movb $0x66, %dl
jmp 0x1a5ba
leaq 0x1d076(%rip), %rsi     # 0x37585
movq %rbx, %rdi
callq 0x70c0
testl %eax, %eax
jne 0x1a552
movq 0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x207bb
callq 0x7590
movsd %xmm0, 0x10(%rsp)
movq 0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x207bb
movsd 0x10(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jne 0x1a3cf
jp 0x1a3cf
cmpb $0x1, 0x1d2(%rbx)
jne 0x1a565
cmpb $0x0, 0x74(%rbx)
je 0x1a770
movq 0x18(%rsp), %rdi
callq 0x7180
movq %rax, %r14
leaq 0x1d3c1(%rip), %rsi     # 0x3793a
movl $0x5, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%rbx), %esi
incl %esi
movq %r14, %rdi
callq 0x75c0
movq %rax, %r14
leaq 0x1d65d(%rip), %rsi     # 0x37bfd
movl $0x2, %edx
movq %rax, %rdi
callq 0x73a0
movq %r14, %rdi
movq %r12, %rsi
callq 0x72f0
movb $0x69, %dl
movl $0x1, %r14d
jmp 0x1a735
movq %r12, 0x10(%rsp)
movq %r14, %rdi
callq 0x7180
movq %rax, %r15
leaq 0x1d188(%rip), %rsi     # 0x37764
movl $0x8, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%rbx), %esi
addl $0x2, %esi
movq %r15, %rdi
callq 0x75c0
movq %rax, %r15
leaq 0x1d5f9(%rip), %rsi     # 0x37bfd
movl $0x2, %edx
movq %rax, %rdi
callq 0x73a0
xorps %xmm0, %xmm0
cvtss2sd 0x8(%rsp), %xmm0
movq %r15, %rdi
callq 0x7540
movl $0x1, %ebp
leaq 0x1d20f(%rip), %r15     # 0x3783d
leaq 0x1d0fc(%rip), %r13     # 0x37731
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %r14, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %rax, %r12
movl $0x7, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x73a0
movl 0x310(%rbx), %esi
addl $0x2, %esi
movq %r12, %rdi
callq 0x75c0
movq %rax, %r12
movl $0x2, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x73a0
movl 0x310(%rbx), %esi
addl $0x2, %esi
movq %r12, %rdi
callq 0x75c0
movq %rax, %r12
movl $0x2, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x73a0
movl 0x310(%rbx), %esi
addl $0x2, %esi
movq %r12, %rdi
callq 0x75c0
decl %ebp
je 0x1a635
movq %r14, %rdi
callq 0x7180
movq %rax, %r14
leaq 0x1d3e0(%rip), %rsi     # 0x37ac2
movl $0x7, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%rbx), %esi
addl $0x2, %esi
movq %r14, %rdi
callq 0x75c0
movq %rax, %r14
leaq 0x1d06b(%rip), %rsi     # 0x37775
movl $0x3, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%rbx), %esi
addl $0x2, %esi
movq %r14, %rdi
callq 0x75c0
movb $0x66, %dl
movl $0x2, %r14d
movq 0x10(%rsp), %r12
movslq 0x310(%rbx), %rax
movl %r14d, %ecx
addq %rax, %rcx
movb %dl, 0x341(%rbx,%rcx)
jmp 0x1a3cf
addq %rax, %rsi
addq $0x58, %rsi
movq %rbx, %rdi
callq 0x71c0
movq %rbx, %rdi
movq %r14, %rsi
movl %r13d, %edx
callq 0x1d938
jmp 0x1a40f
movq 0x18(%rsp), %rdi
callq 0x7180
movq %rax, %r15
leaq 0x1d1b6(%rip), %rsi     # 0x3793a
movl $0x5, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%rbx), %esi
addl $0x2, %esi
movq %r15, %rdi
callq 0x75c0
movq %rax, %r15
leaq 0x1d451(%rip), %rsi     # 0x37bfd
movl $0x2, %edx
movq %rax, %rdi
callq 0x73a0
movq %r15, %rdi
movq %r12, %rsi
callq 0x72f0
leaq 0x1cdd9(%rip), %rsi     # 0x375a4
movq %r13, %rdi
callq 0x70c0
testl %eax, %eax
je 0x1a7f5
leaq 0x1cdd1(%rip), %rsi     # 0x375af
movq %r13, %rdi
callq 0x70c0
cmpl $0x1, %eax
movl $0x2, %r15d
sbbl $0x0, %r15d
jmp 0x1a7f8
xorl %r15d, %r15d
movb $0x69, %dl
movl $0x2, %r14d
testl %r15d, %r15d
je 0x1a735
movq %r12, 0x10(%rsp)
movq 0x18(%rsp), %r13
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %r13, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %rax, %r12
movl $0x7, %edx
movq %rax, %rdi
leaq 0x1cff0(%rip), %rsi     # 0x3783d
callq 0x73a0
movl 0x310(%rbx), %esi
addl $0x2, %esi
movq %r12, %rdi
callq 0x75c0
movq %rax, %r12
movl $0x2, %edx
movq %rax, %rdi
leaq 0x1cebc(%rip), %rbp     # 0x37731
movq %rbp, %rsi
callq 0x73a0
movl 0x310(%rbx), %esi
addl $0x2, %esi
movq %r12, %rdi
callq 0x75c0
movq %rax, %r12
movl $0x2, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x73a0
movl 0x310(%rbx), %esi
addl $0x2, %esi
movq %r12, %rdi
callq 0x75c0
decl %r15d
jne 0x1a813
movq 0x10(%rsp), %r12
movb $0x69, %dl
jmp 0x1a735
leaq 0x1d1fc(%rip), %rdi     # 0x37aca
callq 0x71e0
leaq 0x1d1f0(%rip), %rdi     # 0x37aca
callq 0x74c0
leaq 0x1d2b0(%rip), %rdi     # 0x37b96
callq 0x71e0
leaq 0x1d2a4(%rip), %rdi     # 0x37b96
callq 0x71e0
leaq 0x1d298(%rip), %rdi     # 0x37b96
callq 0x71e0
leaq 0x1d28c(%rip), %rdi     # 0x37b96
callq 0x71e0
movq %rax, %rbx
movq 0x68(%rsp), %rdi
jmp 0x1a921
movq %rax, %rbx
movq 0x48(%rsp), %rdi
cmpq %r14, %rdi
je 0x1a96f
callq 0x72e0
jmp 0x1a96f
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0x1a96f
movl 0x34(%rsp), %eax
jmp 0x1a95d
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0x1a96f
movl 0x38(%rsp), %eax
jmp 0x1a95d
jmp 0x1a94f
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0x1a96f
movl 0x10(%rsp), %eax
movl %eax, (%r13)
jmp 0x1a96f
movq %rax, %rbx
cmpl $0x0, (%r14)
jne 0x1a96f
movl %ebp, (%r14)
movq %rbx, %rdi
callq 0x75f0
nop