// File: /workspace/github_cpp_makefile_star2_O3/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, %r13
movq %rdi, %r15
movq 0x20(%rdi), %rax
testq %rax, %rax
je 0x18bf1
cmpb $0x0, 0x21b(%rbx)
jne 0x18bf1
movq %rax, %rcx
movq 0x10(%rax), %rax
testq %rax, %rax
jne 0x18bd6
movq 0x8(%rcx), %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x1a310
movq 0x10(%r15), %rdi
testq %rdi, %rdi
je 0x18c8c
cmpb $0x1, 0x21b(%rbx)
jne 0x18c8c
cmpb $0x1, 0x74(%rbx)
jne 0x18c8c
movq (%rdi), %r15
callq 0x7060
movq %rax, %r14
movl (%rax), %ebp
movl $0x0, (%rax)
leaq 0x38(%rsp), %r12
movq %r15, %rdi
movq %r12, %rsi
movl $0xa, %edx
callq 0x7470
cmpq %r15, (%r12)
je 0x1a12c
movslq %eax, %rcx
cmpq %rax, %rcx
jne 0x1a138
movl (%r14), %ecx
cmpl $0x22, %ecx
je 0x1a138
testl %ecx, %ecx
jne 0x18c62
movl %ebp, (%r14)
movl %eax, 0x44(%rsp)
movq 0x80(%rbx), %rsi
cmpq 0x88(%rbx), %rsi
je 0x193de
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x80(%rbx)
jmp 0x19dd3
movq 0x8(%r15), %r12
testq %r12, %r12
je 0x1915f
cmpb $0x0, 0x21b(%rbx)
jne 0x1915f
cmpb $0x1, 0x218(%rbx)
jne 0x1915f
cmpb $0x1, 0x1f8(%rbx)
jne 0x18d02
movq %r15, %rbp
leaq 0x98(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%r12), %rsi
movq 0x8(%r12), %rdx
addq %rsi, %rdx
leaq 0x88(%rsp), %r14
movq %r14, %rdi
callq 0x8a78
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1af06
movq (%r14), %rdi
cmpq %r15, %rdi
movq %rbp, %r15
je 0x18d02
callq 0x72e0
cmpl $0x18, 0x310(%rbx)
jl 0x18d80
cmpb $0x0, 0x1f8(%rbx)
jne 0x18d80
movq 0x2d295(%rip), %r14     # 0x45fb0
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, %r14
leaq 0x1ed24(%rip), %rsi     # 0x37a70
movl $0x13, %edx
movq %rax, %rdi
callq 0x73a0
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
cmpb $0x1, 0x4b0(%rbx)
movq %r15, 0x18(%rsp)
jne 0x18d9b
cmpb $0x0, 0x1f8(%rbx)
je 0x193fe
movq 0x248(%rbx), %r14
movq 0x240(%rbx), %rax
movl $0x0, %r12d
subq %rax, %r14
movq %r13, 0x20(%rsp)
je 0x18f41
movq 0x468(%rbx), %rax
cmpq 0x460(%rbx), %rax
je 0x18f41
cmpb $0x0, 0x1f8(%rbx)
jne 0x18f41
cmpb $0x0, 0x14d(%rbx)
jne 0x18f41
sarq $0x4, %r14
movabsq $0x2e8ba2e8ba2e8ba3, %rax # imm = 0x2E8BA2E8BA2E8BA3
imulq %rax, %r14
decl %r14d
js 0x18f41
xorl %r13d, %r13d
movl $0x0, 0x8(%rsp)
movq 0x468(%rbx), %r15
subq 0x460(%rbx), %r15
shrq $0x5, %r15
decl %r15d
js 0x18f1a
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 0x18e9d
addq %rbp, %r12
testq %rdx, %rdx
je 0x18e73
addq %rax, %rcx
movq (%rcx), %rsi
movq 0x30(%r12), %rdi
callq 0x7350
testl %eax, %eax
jne 0x18e9d
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdx
cmpq 0x10(%r12), %rdx
jne 0x18e9d
testq %rdx, %rdx
je 0x18efa
movq 0x8(%r12), %rsi
movq (%rax), %rdi
callq 0x7350
testl %eax, %eax
je 0x18efa
movl %r13d, %eax
movl %eax, %r13d
cltq
imulq $0xb0, %rax, %r12
leaq (%r12,%rbp), %rdi
addq $0x58, %rdi
leaq 0x1e795(%rip), %rsi     # 0x37650
callq 0x70c0
testl %eax, %eax
jne 0x18ecb
movb $0x1, 0x219(%rbx)
movq 0x240(%rbx), %rax
leaq (%rax,%r12), %rdi
addq $0x58, %rdi
leaq 0x1e6a4(%rip), %rsi     # 0x37585
callq 0x70c0
testl %eax, %eax
jne 0x18e23
movb $0x1, 0x340(%rbx)
jmp 0x18e23
movl %r14d, 0x5b4(%rbx)
movl $0xffffffff, %r15d      # imm = 0xFFFFFFFF
movl $0x1, 0x8(%rsp)
movl %r14d, %eax
movl $0xffffffff, %r14d      # imm = 0xFFFFFFFF
jmp 0x18ea0
decl %r14d
jns 0x18e11
movl $0x1, 0x10(%rsp)
cmpl $0x0, 0x8(%rsp)
movq 0x20(%rsp), %rax
movl %r13d, %r12d
movq %rax, %r13
jne 0x1909c
movb $0x1, %al
cmpb $0x0, 0x1f8(%rbx)
movq 0x18(%rsp), %r15
jne 0x19311
cmpb $0x0, 0x14d(%rbx)
jne 0x19311
movq 0x240(%rbx), %rcx
cmpq %rcx, 0x248(%rbx)
je 0x19311
xorl %eax, %eax
xorl %r15d, %r15d
movl $0x0, 0x10(%rsp)
imulq $0xb0, %rax, %rbp
leaq (%rcx,%rbp), %rdi
addq $0x30, %rdi
leaq 0x1e6c5(%rip), %rsi     # 0x3765e
callq 0x70c0
testl %eax, %eax
je 0x18faa
movl %r15d, %r14d
jmp 0x19067
movl %r12d, 0x8(%rsp)
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x240(%rbx), %r12
movq 0x8(%rax), %rdx
cmpq 0x10(%r12,%rbp), %rdx
jne 0x18fe3
leaq (%r12,%rbp), %r14
testq %rdx, %rdx
je 0x18fed
movq 0x8(%r14), %rsi
movq (%rax), %rdi
callq 0x7350
testl %eax, %eax
je 0x18fed
movl %r15d, %r14d
movl 0x8(%rsp), %r12d
jmp 0x19067
movl %r15d, 0x5b4(%rbx)
movq 0x248(%rbx), %r13
addq $0x58, %r14
movq %r14, %rdi
leaq 0x1e647(%rip), %rsi     # 0x37650
callq 0x70c0
testl %eax, %eax
jne 0x19019
movb $0x1, 0x219(%rbx)
subq %r12, %r13
shrq $0x4, %r13
imull $0xba2e8ba3, %r13d, %r14d # imm = 0xBA2E8BA3
movq 0x240(%rbx), %rax
leaq (%rax,%rbp), %rdi
addq $0x58, %rdi
leaq 0x1e548(%rip), %rsi     # 0x37585
callq 0x70c0
testl %eax, %eax
je 0x19050
movl $0x2, 0x10(%rsp)
jmp 0x1905f
movl $0x2, 0x10(%rsp)
movb $0x1, 0x340(%rbx)
movl %r15d, %r12d
movq 0x20(%rsp), %r13
incl %r14d
movslq %r14d, %rax
movq 0x240(%rbx), %rcx
movq 0x248(%rbx), %rdx
subq %rcx, %rdx
sarq $0x4, %rdx
movabsq $0x2e8ba2e8ba2e8ba3, %rsi # imm = 0x2E8BA2E8BA2E8BA3
imulq %rsi, %rdx
movl %r14d, %r15d
cmpq %rax, %rdx
ja 0x18f83
movl 0x10(%rsp), %ebp
testl %ebp, %ebp
sete %al
movq 0x18(%rsp), %r15
je 0x19313
cmpl $0x0, 0x13e90(%rbx)
je 0x19313
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, %r14
leaq 0x1e995(%rip), %rsi     # 0x37a84
movl $0x9, %edx
movq %rax, %rdi
callq 0x73a0
movslq %r12d, %rax
movq 0x240(%rbx), %rcx
imulq $0xb0, %rax, %rax
movl (%rcx,%rax), %esi
movq %r14, %rdi
callq 0x75c0
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
leaq 0x1e947(%rip), %rsi     # 0x37a8e
movl $0x10, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x10(%rsp), %ebp
xorl %eax, %eax
jmp 0x19313
testq %rdi, %rdi
je 0x19171
cmpb $0x0, 0x21b(%rbx)
je 0x1921a
testq %r12, %r12
je 0x19dd3
movb 0x218(%rbx), %al
cmpb $0x1, 0x21b(%rbx)
jne 0x192c5
testb $0x1, %al
je 0x192cd
cmpb $0x0, 0x1f8(%rbx)
jne 0x19dd3
movq 0x400(%rbx), %r15
movq 0x408(%rbx), %rax
subq %r15, %rax
je 0x19dd3
sarq $0x3, %rax
movabsq $-0x71c71c71c71c71c7, %r13 # imm = 0x8E38E38E38E38E39
imulq %rax, %r13
movq 0x8(%r12), %r14
movl 0x4ac(%rbx), %ebp
cmpq $0x1, %r13
adcq $0x0, %r13
addq $0x10, %r15
cmpq %r14, (%r15)
jne 0x1920c
testq %r14, %r14
je 0x19200
movq (%r12), %rsi
movq -0x8(%r15), %rdi
movq %r14, %rdx
callq 0x7350
testl %eax, %eax
jne 0x1920c
movl -0x10(%r15), %eax
cmpl %eax, %ebp
jl 0x1974c
addq $0x48, %r15
decq %r13
jne 0x191e2
jmp 0x19dd3
leaq 0x1e87e(%rip), %rsi     # 0x37a9f
callq 0x70c0
testl %eax, %eax
je 0x19307
movq 0x10(%r15), %rdi
leaq 0x1e86b(%rip), %rsi     # 0x37aa4
callq 0x70c0
testl %eax, %eax
je 0x193f4
movq 0x10(%r15), %rdi
leaq 0x1e858(%rip), %rsi     # 0x37aa9
callq 0x70c0
testl %eax, %eax
je 0x1949b
movq 0x10(%r15), %rdi
leaq 0x1e845(%rip), %rsi     # 0x37aae
callq 0x70c0
testl %eax, %eax
je 0x19608
movq 0x10(%r15), %rdi
leaq 0x1e832(%rip), %rsi     # 0x37ab3
callq 0x70c0
testl %eax, %eax
je 0x19612
movq 0x10(%r15), %rdi
leaq 0x1e81f(%rip), %rsi     # 0x37ab8
callq 0x70c0
testl %eax, %eax
je 0x196b4
movq 0x10(%r15), %rdi
leaq 0x1e80c(%rip), %rsi     # 0x37abd
callq 0x70c0
testl %eax, %eax
je 0x197b5
xorl %ebp, %ebp
jmp 0x197dc
testb $0x1, %al
jne 0x19dd3
cmpb $0x0, 0x13e7c(%rbx)
jne 0x19dd3
cmpb $0x0, 0x1d2(%rbx)
jne 0x19dd3
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
movl $0xa, %eax
jmp 0x197ba
xorl %ebp, %ebp
cmpb $0x1, 0x1d2(%rbx)
jne 0x19332
cmpb $0x0, 0x1f8(%rbx)
jne 0x19332
cmpb $0x0, 0x14d(%rbx)
je 0x1961c
cmpl $0x2, %ebp
je 0x194a5
cmpl $0x1, %ebp
jne 0x194bb
cmpb $0x0, 0x1f8(%rbx)
jne 0x194bb
cmpb $0x0, 0x14d(%rbx)
jne 0x194bb
movslq %r12d, %rax
movq 0x240(%rbx), %rcx
imulq $0xb0, %rax, %rax
leaq (%rcx,%rax), %rsi
addq $0x58, %rsi
movq %rbx, %rdi
callq 0x71c0
movq %rbx, %rdi
movl %r12d, %edx
movq %r13, %r12
movq %r13, %rsi
callq 0x1df97
cmpb $0x1, 0x90(%rbx)
jne 0x19dd3
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rax
leaq 0x78(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x68(%rsp), %r14
movq %r14, %rdi
callq 0x8a78
movq %r12, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1e5fd
movq 0x68(%rsp), %rdi
jmp 0x19739
addq $0x78, %rbx
leaq 0x44(%rsp), %rdx
movq %rbx, %rdi
callq 0x1a1dc
jmp 0x19dd3
movl $0xd, %eax
jmp 0x197ba
movq 0x400(%rbx), %r15
movq 0x408(%rbx), %r14
cmpq %r15, %r14
je 0x1948f
leaq 0x460(%rbx), %rax
movq %rax, 0x8(%rsp)
movl $0x10, %r13d
xorl %ebp, %ebp
movq 0x18(%rsp), %rax
movq 0x8(%rax), %r12
movq (%r15,%r13), %rdx
cmpq 0x8(%r12), %rdx
jne 0x1946b
testq %rdx, %rdx
je 0x19450
movq (%r12), %rsi
movq -0x8(%r15,%r13), %rdi
callq 0x7350
testl %eax, %eax
jne 0x1946b
movq 0x8(%rsp), %rdi
movq %r12, %rsi
callq 0xbcf4
movq 0x400(%rbx), %r15
movq 0x408(%rbx), %r14
incq %rbp
movq %r14, %rax
subq %r15, %rax
sarq $0x3, %rax
movabsq $-0x71c71c71c71c71c7, %rcx # imm = 0x8E38E38E38E38E39
imulq %rcx, %rax
addq $0x48, %r13
cmpq %rbp, %rax
ja 0x19425
movb $0x0, 0x4b0(%rbx)
jmp 0x19dd3
movl $0xb, %eax
jmp 0x197ba
cmpb $0x0, 0x1f8(%rbx)
jne 0x194bb
cmpb $0x0, 0x14d(%rbx)
je 0x196be
cmpb $0x0, 0x14d(%rbx)
jne 0x19dd3
movq 0xc0(%rbx), %r12
movq 0xc8(%rbx), %rbp
movq %rbp, 0x8(%rsp)
subq %r12, %rbp
je 0x19dd3
sarq $0x3, %rbp
movabsq $-0x71c71c71c71c71c7, %rax # imm = 0x8E38E38E38E38E39
imulq %rax, %rbp
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x8(%rax), %r13
movq 0x220(%rbx), %rax
movq %rax, 0x28(%rsp)
movq 0x228(%rbx), %r14
cmpq $0x1, %rbp
adcq $0x0, %rbp
xorl %r15d, %r15d
cmpq %r13, 0x28(%r12,%r15)
jne 0x19574
testq %r13, %r13
je 0x1954b
movq 0x10(%rsp), %rax
movq (%rax), %rsi
movq 0x20(%r12,%r15), %rdi
movq %r13, %rdx
callq 0x7350
testl %eax, %eax
jne 0x19574
cmpq %r14, 0x8(%r12,%r15)
jne 0x19574
testq %r14, %r14
je 0x19757
movq (%r12,%r15), %rdi
movq 0x28(%rsp), %rsi
movq %r14, %rdx
callq 0x7350
testl %eax, %eax
je 0x19757
addq $0x48, %r15
decq %rbp
jne 0x19526
xorl %r14d, %r14d
leaq 0x1e0d7(%rip), %r13     # 0x3765e
xorl %r15d, %r15d
movabsq $-0x71c71c71c71c71c7, %rbp # imm = 0x8E38E38E38E38E39
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x28(%r12,%r14), %rdx
cmpq 0x8(%rax), %rdx
jne 0x195e7
testq %rdx, %rdx
je 0x195be
movq (%rax), %rsi
movq 0x20(%r12,%r14), %rdi
callq 0x7350
testl %eax, %eax
jne 0x195e7
addq %r14, %r12
movq %r12, %rdi
movq %r13, %rsi
callq 0x70c0
testl %eax, %eax
je 0x19d66
movq 0xc0(%rbx), %r12
movq 0xc8(%rbx), %rax
movq %rax, 0x8(%rsp)
incq %r15
movq 0x8(%rsp), %rax
subq %r12, %rax
sarq $0x3, %rax
imulq %rbp, %rax
addq $0x48, %r14
cmpq %r15, %rax
ja 0x19594
jmp 0x19dd3
movl $0x9, %eax
jmp 0x197ba
movl $0xc, %eax
jmp 0x197ba
testb %al, %al
jne 0x19661
leaq 0x318(%rbx), %r14
leaq 0x1ba14(%rip), %rsi     # 0x35042
movq %r14, %rdi
callq 0x70c0
testl %eax, %eax
je 0x19661
leaq 0x1e112(%rip), %rsi     # 0x37753
movq %r14, %rdi
callq 0x70c0
testl %eax, %eax
je 0x19661
movq %r15, %rdi
movq %r13, %rsi
movl %r12d, %edx
movq %rbx, %rcx
movl %ebp, %r8d
callq 0x1b390
cmpl $0x2, %ebp
je 0x19d41
cmpl $0x1, %ebp
jne 0x19dd3
movslq %r12d, %rax
movq 0x240(%rbx), %rsi
imulq $0xb0, %rax, %rax
cmpb $0x0, 0x9c(%rsi,%rax)
jne 0x19d60
addq %rax, %rsi
addq $0x58, %rsi
movq %rbx, %rdi
callq 0x71c0
movq %rbx, %rdi
movq %r13, %rsi
movl %r12d, %edx
callq 0x1c13a
jmp 0x19dd3
movl $0x8, %eax
jmp 0x197ba
movslq %r12d, %rax
movq 0x240(%rbx), %rcx
imulq $0xb0, %rax, %rax
leaq (%rcx,%rax), %rsi
addq $0x58, %rsi
movq %rbx, %rdi
callq 0x71c0
movq %rbx, %rdi
movl %r12d, %edx
movq %r13, %r12
movq %r13, %rsi
callq 0x1f79e
cmpb $0x1, 0x90(%rbx)
jne 0x19dd3
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rax
leaq 0x58(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x48(%rsp), %r14
movq %r14, %rdi
callq 0x8a78
movq %r12, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1e5fd
movq 0x48(%rsp), %rdi
cmpq %r15, %rdi
je 0x19dd3
callq 0x72e0
jmp 0x19dd3
movl %eax, 0x4ac(%rbx)
jmp 0x19dd3
movq 0x20(%rsp), %rdi
callq 0x7180
movq %rax, %r14
leaq 0x1e1cf(%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 0x1e46b(%rip), %rsi     # 0x37bfd
movl $0x2, %edx
movq %rax, %rdi
callq 0x73a0
movq 0xc0(%rbx), %rax
movsd 0x40(%rax,%r15), %xmm0
movq %r14, %rdi
jmp 0x19dbf
movl $0x7, %eax
cvtsi2ss %eax, %xmm0
movss %xmm0, 0x8(%rsp)
movl %eax, %r14d
movb $0x1, %bpl
cmpb $0x1, 0x1f8(%rbx)
jne 0x197dc
cmpl $0x7, 0x1fc(%rbx)
jle 0x19806
movq 0x10(%r15), %rdi
leaq 0x1e2d9(%rip), %rsi     # 0x37ac0
movl $0x1, %ecx
xorl %edx, %edx
callq 0x7500
testb %bpl, %bpl
jne 0x19815
testq %rax, %rax
jne 0x19815
cmpb $0x1, 0x1f8(%rbx)
jne 0x1987d
movl $0x4, 0x1fc(%rbx)
jmp 0x19dd3
testb %bpl, %bpl
jne 0x19897
movq %r13, 0x20(%rsp)
movq %r15, 0x18(%rsp)
movq 0x10(%r15), %rax
movq (%rax), %r14
callq 0x7060
movq %rax, %r13
movl (%rax), %r15d
movl $0x0, (%rax)
leaq 0x38(%rsp), %r12
movq %r14, %rdi
movq %r12, %rsi
callq 0x7270
cmpq %r14, (%r12)
je 0x1a144
movl (%r13), %ebp
testl %ebp, %ebp
movsd %xmm0, 0x8(%rsp)
je 0x19911
cmpl $0x22, %ebp
jne 0x19918
leaq 0x1e31e(%rip), %rdi     # 0x37b96
callq 0x74c0
movq 0x10(%r15), %rax
movq (%rax), %rax
movsbq 0x1(%rax), %r14
xorps %xmm0, %xmm0
cvtsi2ss %r14d, %xmm0
movss %xmm0, 0x8(%rsp)
xorl %r12d, %r12d
cmpb $0x1, 0x218(%rbx)
jne 0x19aac
movq 0x4d8(%rbx), %rax
cmpq 0x4d0(%rbx), %rax
je 0x19aac
leaq 0x2b0(%rbx), %rdi
leaq 0x1dcbc(%rip), %rsi     # 0x37585
callq 0x70c0
testl %eax, %eax
je 0x19aac
movq 0x4d8(%rbx), %rax
movzbl -0x1(%rax), %ecx
cmpl $0x21, %ecx
je 0x19a8e
cmpl $0x7e, %ecx
je 0x19a80
cmpl $0x2d, %ecx
jne 0x19aac
cmpb $0x0, 0x218(%rbx)
jne 0x19aac
negq %r14
jmp 0x19aa2
movl %r15d, (%r13)
movl %r15d, %ebp
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rax
movq (%rax), %r14
movl $0x0, (%r13)
leaq 0x38(%rsp), %r12
movq %r14, %rdi
movq %r12, %rsi
callq 0x7270
cmpq %r14, (%r12)
je 0x1a150
movl (%r13), %r15d
testl %r15d, %r15d
je 0x19961
cmpl $0x22, %r15d
jne 0x19968
leaq 0x1e23a(%rip), %rdi     # 0x37b96
callq 0x74c0
movl %ebp, (%r13)
movl %ebp, %r15d
cvtsd2ss 0x8(%rsp), %xmm1
movss %xmm1, 0x8(%rsp)
cvttsd2si %xmm0, %r14
movb $0x1, %r12b
cmpb $0x1, 0x1f8(%rbx)
jne 0x199d5
movq %r14, 0x10(%rsp)
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rax
movq (%rax), %r14
movl $0x0, (%r13)
leaq 0x38(%rsp), %rbp
movq %r14, %rdi
movq %rbp, %rsi
callq 0x7270
cmpq %r14, (%rbp)
je 0x1a15c
movl (%r13), %eax
testl %eax, %eax
je 0x199e4
movl %eax, 0x34(%rsp)
cmpl $0x22, %eax
jne 0x199ed
leaq 0x1e1c6(%rip), %rdi     # 0x37b96
callq 0x74c0
movq 0x20(%rsp), %r13
movq 0x18(%rsp), %r15
jmp 0x1989a
movl %r15d, (%r13)
movl %r15d, 0x34(%rsp)
callq 0x7590
movsd %xmm0, 0x28(%rsp)
movq 0x18(%rsp), %r15
movq 0x10(%r15), %rax
movq (%rax), %r14
movl $0x0, (%r13)
leaq 0x38(%rsp), %rbp
movq %r14, %rdi
movq %rbp, %rsi
callq 0x7270
cmpq %r14, (%rbp)
je 0x1a168
movl (%r13), %eax
testl %eax, %eax
movq 0x10(%rsp), %r14
je 0x19a44
cmpl $0x22, %eax
jne 0x19a4c
leaq 0x1e157(%rip), %rdi     # 0x37b96
callq 0x74c0
movl 0x34(%rsp), %eax
movl %eax, (%r13)
movsd 0x28(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jne 0x19a5a
jnp 0x19a69
movl $0x8, 0x1fc(%rbx)
jmp 0x19dd3
cmpl $0x7, 0x1fc(%rbx)
movq 0x20(%rsp), %r13
jle 0x19806
jmp 0x1989a
cmpb $0x0, 0x218(%rbx)
jne 0x19aac
notq %r14
jmp 0x19aa2
cmpb $0x0, 0x218(%rbx)
jne 0x19aac
xorl %ecx, %ecx
testq %r14, %r14
sete %cl
movq %rcx, %r14
decq %rax
movq %rax, 0x4d8(%rbx)
cmpb $0x1, 0x14d(%rbx)
jne 0x19aeb
movl %r14d, 0x38(%rsp)
movq 0x158(%rbx), %rsi
cmpq 0x160(%rbx), %rsi
je 0x19ada
movl %r14d, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x158(%rbx)
jmp 0x19aeb
leaq 0x150(%rbx), %rdi
leaq 0x38(%rsp), %rdx
callq 0x1a1dc
movq %r14, 0x10(%rsp)
movq %r13, %r14
leaq 0x2b0(%rbx), %r13
leaq 0x1da84(%rip), %rsi     # 0x37585
movq %r13, %rdi
callq 0x70c0
testl %eax, %eax
je 0x19b16
cmpb $0x0, 0x14d(%rbx)
je 0x19b3d
leaq 0x1da68(%rip), %rsi     # 0x37585
movq %r13, %rdi
callq 0x70c0
testl %eax, %eax
jne 0x19b4f
cmpb $0x0, 0x14d(%rbx)
jne 0x19b4f
xorps %xmm0, %xmm0
cvtss2sd 0x8(%rsp), %xmm0
jmp 0x19b47
xorps %xmm0, %xmm0
cvtsi2sdq 0x10(%rsp), %xmm0
movsd %xmm0, 0x280(%rbx)
testb %r12b, %r12b
je 0x19c4f
cmpb $0x0, 0x21b(%rbx)
jne 0x19cec
testb $0x1, 0x218(%rbx)
je 0x19cec
cmpb $0x0, 0x14d(%rbx)
jne 0x19cec
cmpb $0x1, 0x13e94(%rbx)
jne 0x19b97
leaq 0x1e5fd(%rip), %rsi     # 0x3818c
movq %rbx, %rdi
callq 0x7450
leaq 0x1d9e7(%rip), %rsi     # 0x37585
movq %rbx, %rdi
callq 0x70c0
testl %eax, %eax
je 0x19bdd
movq 0x10(%r15), %rdi
xorl %esi, %esi
callq 0x200f5
callq 0x7590
movsd %xmm0, 0x28(%rsp)
movq 0x10(%r15), %rdi
xorl %esi, %esi
callq 0x200f5
movsd 0x28(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jne 0x19bdd
jnp 0x19de5
cmpb $0x1, 0x1d2(%rbx)
jne 0x19bf0
cmpb $0x0, 0x74(%rbx)
je 0x19e4f
movq %r14, %rdi
callq 0x7180
movq %rax, %r14
leaq 0x1db62(%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 0x1dfd4(%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, %bpl
jmp 0x19cd1
cmpb $0x1, 0x218(%rbx)
jne 0x19cec
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, %r14
leaq 0x1dcad(%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 0x1df49(%rip), %rsi     # 0x37bfd
movl $0x2, %edx
movq %rax, %rdi
callq 0x73a0
movq %r14, %rdi
movq 0x10(%rsp), %rsi
callq 0x72f0
movb $0x69, %bpl
movl $0x1, %r12d
movslq 0x310(%rbx), %rax
movl %r12d, %ecx
addq %rax, %rcx
movb %bpl, 0x341(%rbx,%rcx)
cmpb $0x0, 0x21b(%rbx)
jne 0x19dd3
cmpb $0x0, 0x218(%rbx)
jne 0x19dd3
cmpb $0x0, 0x14d(%rbx)
jne 0x19dd3
movslq 0x310(%rbx), %rax
movq 0x10(%rsp), %rcx
movl %ecx, 0x5fc(%rbx,%rax,4)
movslq 0x310(%rbx), %rax
movss 0x8(%rsp), %xmm0
movss %xmm0, 0xa23c(%rbx,%rax,4)
jmp 0x19dd3
movslq %r12d, %rax
movq 0x240(%rbx), %rsi
imulq $0xb0, %rax, %rax
cmpb $0x0, 0x9c(%rsi,%rax)
je 0x19fc4
movb $0x1, 0x48(%rbx)
jmp 0x19dd3
movq 0x20(%rsp), %rdi
callq 0x7180
movq %rax, %r15
leaq 0x1dbc0(%rip), %rsi     # 0x3793a
movl $0x5, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%rbx), %esi
incl %esi
movq %r15, %rdi
callq 0x75c0
movq %rax, %r15
leaq 0x1de5c(%rip), %rsi     # 0x37bfd
movl $0x2, %edx
movq %rax, %rdi
callq 0x73a0
movq 0xc0(%rbx), %rax
movsd 0x40(%rax,%r14), %xmm0
movq %r15, %rdi
callq 0x7540
movslq 0x310(%rbx), %rax
movb $0x69, 0x342(%rax,%rbx)
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1d799(%rip), %rsi     # 0x37585
movq %rbx, %rdi
callq 0x70c0
testl %eax, %eax
jne 0x19e2f
movq 0x10(%r15), %rdi
xorl %esi, %esi
callq 0x200f5
callq 0x7590
movsd %xmm0, 0x28(%rsp)
movq 0x10(%r15), %rdi
xorl %esi, %esi
callq 0x200f5
movsd 0x28(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jne 0x19cec
jp 0x19cec
cmpb $0x1, 0x1d2(%rbx)
jne 0x19e42
cmpb $0x0, 0x74(%rbx)
je 0x19fe6
movq %r14, %rdi
callq 0x7180
jmp 0x19c83
movq %r14, %r12
movq %r14, %rdi
callq 0x7180
movq %rax, %r14
leaq 0x1d900(%rip), %rsi     # 0x37764
movl $0x8, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%rbx), %esi
addl $0x2, %esi
movq %r14, %rdi
callq 0x75c0
movq %rax, %r14
leaq 0x1dd71(%rip), %rsi     # 0x37bfd
movl $0x2, %edx
movq %rax, %rdi
callq 0x73a0
xorps %xmm0, %xmm0
cvtss2sd 0x8(%rsp), %xmm0
movq %r14, %rdi
callq 0x7540
movb $0x1, %bpl
leaq 0x1d989(%rip), %r15     # 0x3783d
leaq 0x1d876(%rip), %r13     # 0x37731
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, %r14
movl $0x7, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x73a0
movl 0x310(%rbx), %esi
addl $0x2, %esi
movq %r14, %rdi
callq 0x75c0
movq %rax, %r14
movl $0x2, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x73a0
movl 0x310(%rbx), %esi
addl $0x2, %esi
movq %r14, %rdi
callq 0x75c0
movq %rax, %r14
movl $0x2, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x73a0
movl 0x310(%rbx), %esi
addl $0x2, %esi
movq %r14, %rdi
callq 0x75c0
testb $0x1, %bpl
movl $0x0, %ebp
jne 0x19ebb
movq %r12, %rdi
callq 0x7180
movq %rax, %r14
leaq 0x1db52(%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 0x1d7dd(%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, %bpl
movl $0x2, %r12d
jmp 0x19cd7
addq %rax, %rsi
addq $0x58, %rsi
movq %rbx, %rdi
callq 0x71c0
movq %rbx, %rdi
movq %r13, %rsi
movl %r12d, %edx
callq 0x1d118
jmp 0x19dd3
movq %r14, %rdi
callq 0x7180
movq %rax, %r15
leaq 0x1d942(%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 0x1dbdd(%rip), %rsi     # 0x37bfd
movl $0x2, %edx
movq %rax, %rdi
callq 0x73a0
movq %r15, %rdi
movq 0x10(%rsp), %rsi
callq 0x72f0
leaq 0x1d563(%rip), %rsi     # 0x375a4
movq %r13, %rdi
callq 0x70c0
movb $0x69, %bpl
testl %eax, %eax
je 0x19fb9
leaq 0x1d554(%rip), %rsi     # 0x375af
movq %r13, %rdi
callq 0x70c0
cmpl $0x1, %eax
movl $0x2, %r12d
movl $0x2, %r15d
sbbl $0x0, %r15d
movq %r14, 0x20(%rsp)
movq 0x20(%rsp), %r14
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, %r14
movl $0x7, %edx
movq %rax, %rdi
leaq 0x1d784(%rip), %rsi     # 0x3783d
callq 0x73a0
movl 0x310(%rbx), %esi
addl $0x2, %esi
movq %r14, %rdi
callq 0x75c0
movq %rax, %r14
movl $0x2, %edx
movq %rax, %rdi
leaq 0x1d650(%rip), %r13     # 0x37731
movq %r13, %rsi
callq 0x73a0
movl 0x310(%rbx), %esi
addl $0x2, %esi
movq %r14, %rdi
callq 0x75c0
movq %rax, %r14
movl $0x2, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x73a0
movl 0x310(%rbx), %esi
addl $0x2, %esi
movq %r14, %rdi
callq 0x75c0
decl %r15d
jne 0x1a07b
jmp 0x19cd7
leaq 0x1d997(%rip), %rdi     # 0x37aca
callq 0x71e0
leaq 0x1d98b(%rip), %rdi     # 0x37aca
callq 0x74c0
leaq 0x1da4b(%rip), %rdi     # 0x37b96
callq 0x71e0
leaq 0x1da3f(%rip), %rdi     # 0x37b96
callq 0x71e0
leaq 0x1da33(%rip), %rdi     # 0x37b96
callq 0x71e0
leaq 0x1da27(%rip), %rdi     # 0x37b96
callq 0x71e0
movq %rax, %rbx
movq 0x48(%rsp), %rdi
jmp 0x1a186
movq %rax, %rbx
movq 0x68(%rsp), %rdi
cmpq %r15, %rdi
je 0x1a1d4
callq 0x72e0
jmp 0x1a1d4
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0x1a1d4
movl 0x34(%rsp), %eax
movl %eax, (%r13)
jmp 0x1a1d4
jmp 0x1a1b8
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0x1a1d4
movl %ebp, (%r13)
jmp 0x1a1d4
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0x1a1d4
movl %r15d, (%r13)
jmp 0x1a1d4
movq %rax, %rbx
cmpl $0x0, (%r14)
jne 0x1a1d4
movl %ebp, (%r14)
movq %rbx, %rdi
callq 0x75f0