// File: /workspace/github_cpp_makefile_star2_O1/gioannides[P]Language_Processors/src/../include/ast/ast_Expressions.cpp
// Function: AssignmentExpression::render_asm(std::basic_ofstream<char, std::char_traits<char>>&, Context&)
inline void AssignmentExpression::render_asm(std::ofstream& file, Context& contxt)  {
			
			if(AssignmentExpressionPtr != NULL) {
				contxt.rhs_of_expression = true;
				AssignmentExpressionPtr->render_asm(file,contxt);
				contxt.rhs_of_expression = false;
			}
			if(UnaryExpressionPtr != NULL && AssignmentOperator != NULL) { //!contxt.reading
				
				contxt.AssignmentOperator = *AssignmentOperator;	
				contxt.lhs_of_assignment = true;
				UnaryExpressionPtr->render_asm(file,contxt);			//TODO: This is for identifier names and values
				
				if(contxt.PointerNotStored){
					if(!contxt.PointerLHSEval){
						file << std::endl << "\tsw\t$" << contxt.Regs+1 << ", " << contxt.Variables[contxt.good_i].offset << "($sp) #" << contxt.Variables[contxt.good_i].id;	
					}
					else{
						if(contxt.Variables[contxt.good_i].DataType == "char"){
						file << std::endl << "\tsb\t$" << contxt.Regs+1 << ", " << "0($" <<  contxt.Regs+2  << ")" << "#" << contxt.Variables[contxt.good_i].id;
			
						}
						else if(contxt.Variables[contxt.good_i].DataType == "short"){
						file << std::endl << "\tsh\t$" << contxt.Regs+1 << ", " << "0($" <<  contxt.Regs+2  << ")" << "#" << contxt.Variables[contxt.good_i].id;
						}
						else if(contxt.Variables[contxt.good_i].DataType != "float"){
						file << std::endl << "\tsw\t$" << contxt.Regs+1 << ", " << "0($" <<  contxt.Regs+2  << ")" << "#" << contxt.Variables[contxt.good_i].id;
						}
						else if(contxt.Variables[contxt.good_i].DataType == "float"){
						file << std::endl << "\tswc1\t$f" << contxt.Regs+1 << ", " << "0($" <<  contxt.Regs+2  << ")" << "#" << contxt.Variables[contxt.good_i].id;
						}
		

					}
					contxt.Variables[contxt.good_i].PointerLevelsTemp = contxt.Variables[contxt.good_i].PointerLevels;
					contxt.regType[contxt.Regs+1]='i';
					contxt.PointerNotStored = false;
				}
				contxt.lhs_of_assignment = false;
				contxt.AssignmentOperator = "df";
				

				
			}				
			else if(ConditionalExpressionPtr != NULL) {
				ConditionalExpressionPtr->render_asm(file,contxt);		//THIS IS FOR IF STATEMENTS/ LOGICAL / ARITHMETIC OPERATIONS / ASSIGNEMENTS
			}
			if(contxt.argument_no.size()>=1 && contxt.argument_no[contxt.argument_no.size()-1])
			{
				file << "\n# merge\n";
				int ki=0;
				
				while(ki<contxt.Variables.size())
				{
					if(contxt.Scopes.size()-contxt.nested_function_calls && contxt.Scopes[contxt.Scopes.size()-contxt.nested_function_calls]==contxt.Variables[ki].scope)
					{ 
						int u=contxt.argument_no[contxt.argument_no.size()-1]-1;
						//file << std::endl << "\tsw\t$" << contxt.Regs+1 << ", " << (contxt.argument_no-1)*4 << "($sp) #";
						if((ki+u)>=0 && contxt.Variables[ki+u].word_size==1) 
						{
							file << std::endl << "\tsw\t$" << contxt.Regs+1 << ", " << u*4 << "($sp) #" << contxt.Variables[ki+u].id << " " << (u)*4;		
							contxt.regType[contxt.Regs+1]='c';
						}				
						else if((ki+u)>=0 && contxt.Variables[ki+u].word_size==4 && contxt.Variables[ki+u].DataType != "float")
						{ 	
							file << std::endl << "\tsw\t$" << contxt.Regs+1 << ", " << (u)*4 << "($sp) #" << contxt.Variables[ki+u].id << " " << (u)*4 << "\n";	
							contxt.regType[contxt.Regs+1]='i';
						}
						else if((ki+u)>=0 && contxt.Variables[ki+u].word_size==2 && contxt.Variables[ki+u].DataType != "float")
						{ 	
							file << std::endl << "\tsw\t$" << contxt.Regs+1 << ", " << u*4 << "($sp) #" << contxt.Variables[ki+u].id << " " << (u)*4 << "\n";	
							contxt.regType[contxt.Regs+1]='i';
						}
						else if((ki+u)>=0 && contxt.Variables[ki+u].word_size==4 && contxt.Variables[ki+u].DataType == "float")
						{
							file << std::endl << "\tswc1\t$f" << contxt.Regs+1 << ", " << (u)*4 << "($sp) #" << contxt.Variables[ki+u].id << " " << u*4 << "\n";	
							contxt.regType[contxt.Regs+1]='f';
						}
						
						if(u<4)
						{
							if((ki+u)>=0 /*&& contxt.regType[u+4] != 'f'/*&& contxt.Variables[ki+contxt.argument_no-1].DataType != "float"*/)
							{
								if(contxt.Variables[ki+u].DataType != "float"){
									file << std::endl << "\tmove\t$" << u+4 << ", $" << contxt.Regs+1 << " #load parameter " << u+1;
								}
								else if(contxt.Variables[ki+u].DataType == "float" && (u+4) == 4){

									file << std::endl << "\tmov.s\t$f12" << ", $f" << contxt.Regs+1 << " #load parameter " << u+1;
									contxt.FloatRegCount+=2;
		
								}
								else if(contxt.Variables[ki+u].DataType == "float" && (u+4) == 5){

									file << std::endl << "\tmov.s\t$f14" << ", $f" << contxt.Regs+1 << " #load parameter " << u+1;
									contxt.FloatRegCount=6;
		
								}
								else if(contxt.Variables[ki+u].DataType == "float" && (u+4) == 6){

									file << std::endl << "\tmfc1\t$6" << ", $f" << contxt.Regs+1 << " #load parameter " << u+1;
									contxt.FloatRegCount=7;
		
								}
								else if(contxt.Variables[ki+u].DataType == "float" && (u+4) == 7){

									file << std::endl << "\tmfc1\t$7"  << ", $f" << contxt.Regs+1 << " #load parameter " << u+1;
									contxt.FloatRegCount=12;
		
								}
								
								
							}
							/*else 
							{
								file << std::endl << "\tmov.s\t$f" << u+4 << ", $f" << contxt.Regs+1 << " #load parameter " << u+1; 
							*///}
						}
						ki=contxt.Variables.size();
					}
					ki++;
					
				}
			}
		}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdx, %rbx
movq %rsi, %rbp
movq %rdi, %r12
movq 0x20(%rdi), %rdi
testq %rdi, %rdi
je 0x1aae5
movb $0x1, 0x1d1(%rbx)
movq %rbp, %rsi
movq %rbx, %rdx
callq 0x1aaac
movb $0x0, 0x1d1(%rbx)
cmpq $0x0, 0x10(%r12)
je 0x1ac03
movq 0x18(%r12), %rsi
testq %rsi, %rsi
je 0x1ac03
leaq 0x318(%rbx), %r15
movq %r15, %rdi
callq 0x71c0
movb $0x1, 0x1d2(%rbx)
movq 0x10(%r12), %rdi
movq %rbp, %rsi
movq %rbx, %rdx
callq 0x177c4
cmpb $0x1, 0x48(%rbx)
jne 0x1ae0d
cmpb $0x0, 0x40(%rbx)
je 0x1ac21
leaq 0x240(%rbx), %r14
leaq 0x5b4(%rbx), %r13
movslq 0x5b4(%rbx), %rax
movq 0x240(%rbx), %rcx
imulq $0xb0, %rax, %rax
leaq (%rcx,%rax), %rdi
addq $0x58, %rdi
leaq 0x1ca39(%rip), %rsi     # 0x375a4
callq 0x70c0
testl %eax, %eax
je 0x1accd
movslq (%r13), %rax
movq (%r14), %rcx
imulq $0xb0, %rax, %rax
leaq (%rcx,%rax), %rdi
addq $0x58, %rdi
leaq 0x1ca1a(%rip), %rsi     # 0x375af
callq 0x70c0
testl %eax, %eax
je 0x1ad01
movslq (%r13), %rax
movq (%r14), %rcx
imulq $0xb0, %rax, %rax
leaq (%rcx,%rax), %rdi
addq $0x58, %rdi
leaq 0x1c9c6(%rip), %rsi     # 0x37585
callq 0x70c0
testl %eax, %eax
je 0x1b67f
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbp, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %rax, %r12
leaq 0x1ce01(%rip), %rsi     # 0x379ff
jmp 0x1ad33
movq 0x8(%r12), %rdi
testq %rdi, %rdi
je 0x1ae32
movq %rbp, %rsi
movq %rbx, %rdx
callq 0x102a0
jmp 0x1ae32
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbp, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %rax, %r12
leaq 0x1cdac(%rip), %rsi     # 0x379ff
movl $0x5, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%rbx), %esi
incl %esi
movq %r12, %rdi
callq 0x75c0
movq %rax, %r12
leaq 0x1cf83(%rip), %rsi     # 0x37bfd
movl $0x2, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x240(%rbx), %r14
leaq 0x5b4(%rbx), %r13
movslq 0x5b4(%rbx), %rax
movq 0x240(%rbx), %rcx
imulq $0xb0, %rax, %rax
movl 0x50(%rcx,%rax), %esi
movq %r12, %rdi
callq 0x75c0
movq %rax, %r12
leaq 0x1cd45(%rip), %rsi     # 0x37a05
movl $0x7, %edx
movq %rax, %rdi
jmp 0x1adb2
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbp, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %rax, %r12
leaq 0x1cd0e(%rip), %rsi     # 0x37a0d
jmp 0x1ad33
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbp, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %rax, %r12
leaq 0x1cce0(%rip), %rsi     # 0x37a13
movl $0x5, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%rbx), %esi
incl %esi
movq %r12, %rdi
callq 0x75c0
movq %rax, %r12
leaq 0x1cea3(%rip), %rsi     # 0x37bfd
movl $0x2, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x1cba0(%rip), %rsi     # 0x3790e
movl $0x3, %edx
movq %r12, %rdi
callq 0x73a0
movl 0x310(%rbx), %esi
addl $0x2, %esi
movq %r12, %rdi
callq 0x75c0
movq %rax, %r12
leaq 0x1d879(%rip), %rsi     # 0x3860f
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x1cfe3(%rip), %rsi     # 0x37d8d
movl $0x1, %edx
movq %r12, %rdi
callq 0x73a0
movslq (%r13), %rax
movq (%r14), %rcx
imulq $0xb0, %rax, %rax
movq 0x8(%rcx,%rax), %rsi
movq 0x10(%rcx,%rax), %rdx
movq %r12, %rdi
callq 0x73a0
movslq 0x5b4(%rbx), %rax
movq 0x240(%rbx), %rcx
imulq $0xb0, %rax, %rax
movl 0xa0(%rcx,%rax), %edx
movl %edx, 0xa4(%rcx,%rax)
movslq 0x310(%rbx), %rax
movb $0x69, 0x342(%rax,%rbx)
movb $0x0, 0x48(%rbx)
movb $0x0, 0x1d2(%rbx)
movq 0x320(%rbx), %rdx
leaq 0x1a220(%rip), %rcx     # 0x35042
movl $0x2, %r8d
movq %r15, %rdi
xorl %esi, %esi
callq 0x7520
movq %rbp, 0x8(%rsp)
movq 0x498(%rbx), %rax
cmpq 0x490(%rbx), %rax
je 0x1b670
cmpl $0x0, -0x4(%rax)
je 0x1b670
leaq 0x1cbc6(%rip), %rsi     # 0x37a22
movl $0x9, %edx
movq 0x8(%rsp), %rdi
callq 0x73a0
movq 0x240(%rbx), %rbp
cmpq %rbp, 0x248(%rbx)
je 0x1b670
xorl %eax, %eax
movabsq $0x2e8ba2e8ba2e8ba3, %r14 # imm = 0x2E8BA2E8BA2E8BA3
xorl %r15d, %r15d
movq 0x460(%rbx), %rcx
movq 0x468(%rbx), %rsi
subq %rcx, %rsi
sarq $0x5, %rsi
movslq 0x13e98(%rbx), %rdx
subq %rdx, %rsi
je 0x1b648
shlq $0x5, %rsi
imulq $0xb0, %rax, %rax
movq 0x8(%rcx,%rsi), %rdx
cmpq 0x38(%rbp,%rax), %rdx
jne 0x1b648
testq %rdx, %rdx
je 0x1aef0
addq %rsi, %rcx
addq %rbp, %rax
addq $0x30, %rax
movq (%rax), %rsi
movq (%rcx), %rdi
callq 0x7350
testl %eax, %eax
jne 0x1b648
movq 0x498(%rbx), %rax
movl -0x4(%rax), %r12d
leal -0x1(%r12), %r13d
addl %r13d, %r15d
movl %r15d, %ecx
js 0x1b148
imulq $0xb0, %rcx, %r14
movl (%rbp,%r14), %eax
cmpl $0x4, %eax
movq %rcx, 0x10(%rsp)
je 0x1b002
cmpl $0x1, %eax
jne 0x1b021
movq 0x8(%rsp), %rbp
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbp, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %rax, %rbp
movl $0x5, %edx
movq %rax, %rdi
leaq 0x1ca91(%rip), %rsi     # 0x379ff
callq 0x73a0
movl 0x310(%rbx), %esi
incl %esi
movq %rbp, %rdi
callq 0x75c0
movq %rax, %rbp
movl $0x2, %edx
movq %rax, %rdi
leaq 0x1cc68(%rip), %rsi     # 0x37bfd
callq 0x73a0
shll $0x2, %r13d
movq %rbp, %rdi
movl %r13d, %esi
callq 0x75c0
movq %rax, %rbp
movl $0x7, %edx
movq %rax, %rdi
leaq 0x1ca4a(%rip), %rsi     # 0x37a05
callq 0x73a0
movq 0x240(%rbx), %rax
movq 0x8(%rax,%r14), %rsi
movq 0x10(%rax,%r14), %rdx
movq %rbp, %rdi
callq 0x73a0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x1cc13(%rip), %rsi     # 0x37bfe
callq 0x73a0
movq %rbp, %rdi
movl %r13d, %esi
callq 0x75c0
movb $0x63, %al
jmp 0x1b135
addq %r14, %rbp
addq $0x58, %rbp
movq %rbp, %rdi
leaq 0x1c572(%rip), %rsi     # 0x37585
callq 0x70c0
movq 0x10(%rsp), %rcx
testl %eax, %eax
jne 0x1b053
movq 0x240(%rbx), %rdi
cmpl $0x2, (%rdi,%r14)
jne 0x1b226
addq %r14, %rdi
addq $0x58, %rdi
leaq 0x1c544(%rip), %rsi     # 0x37585
callq 0x70c0
movq 0x10(%rsp), %rcx
testl %eax, %eax
je 0x1b226
movq 0x8(%rsp), %rbp
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbp, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %rax, %rbp
movl $0x5, %edx
movq %rax, %rdi
leaq 0x1c96d(%rip), %rsi     # 0x379ff
callq 0x73a0
movl 0x310(%rbx), %esi
incl %esi
movq %rbp, %rdi
callq 0x75c0
movq %rax, %rbp
movl $0x2, %edx
movq %rax, %rdi
leaq 0x1cb44(%rip), %rsi     # 0x37bfd
callq 0x73a0
shll $0x2, %r13d
movq %rbp, %rdi
movl %r13d, %esi
callq 0x75c0
movq %rax, %rbp
movl $0x7, %edx
movq %rax, %rdi
leaq 0x1c926(%rip), %rsi     # 0x37a05
callq 0x73a0
movq 0x240(%rbx), %rax
movq 0x8(%rax,%r14), %rsi
movq 0x10(%rax,%r14), %rdx
movq %rbp, %rdi
callq 0x73a0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x1caef(%rip), %rsi     # 0x37bfe
callq 0x73a0
movq %rbp, %rdi
movl %r13d, %esi
callq 0x75c0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x1caee(%rip), %rsi     # 0x37c1c
callq 0x73a0
movb $0x69, %al
movslq 0x310(%rbx), %rcx
movb %al, 0x342(%rbx,%rcx)
movq 0x10(%rsp), %rcx
cmpl $0x4, %r12d
jg 0x1b625
testl %r15d, %r15d
js 0x1b625
movq 0x240(%rbx), %rax
imulq $0xb0, %rcx, %r14
leaq (%rax,%r14), %rdi
addq $0x58, %rdi
leaq 0x1c40d(%rip), %r13     # 0x37585
movq %r13, %rsi
callq 0x70c0
testl %eax, %eax
je 0x1b33f
movq 0x8(%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, %r13
movl $0x7, %edx
movq %rax, %rdi
leaq 0x1c866(%rip), %rsi     # 0x37a2c
callq 0x73a0
leal 0x3(%r12), %esi
movq %r13, %rdi
callq 0x75c0
movq %rax, %r13
movl $0x3, %edx
movq %rax, %rdi
leaq 0x1c5a7(%rip), %rsi     # 0x37791
callq 0x73a0
movl 0x310(%rbx), %esi
incl %esi
movq %r13, %rdi
callq 0x75c0
movq %rax, %r13
movl $0x11, %edx
movq %rax, %rdi
leaq 0x1c823(%rip), %rsi     # 0x37a34
callq 0x73a0
movq %r13, %rdi
movl %r12d, %esi
callq 0x75c0
jmp 0x1b625
movq 0x240(%rbx), %rdi
cmpl $0x4, (%rdi,%r14)
jne 0x1b148
addq %r14, %rdi
addq $0x58, %rdi
leaq 0x1c33f(%rip), %rsi     # 0x37585
callq 0x70c0
movq 0x10(%rsp), %rcx
testl %eax, %eax
jne 0x1b148
movq 0x8(%rsp), %rbp
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbp, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %rax, %rbp
movl $0x8, %edx
movq %rax, %rdi
leaq 0x1c782(%rip), %rsi     # 0x37a19
callq 0x73a0
movl 0x310(%rbx), %esi
incl %esi
movq %rbp, %rdi
callq 0x75c0
movq %rax, %rbp
movl $0x2, %edx
movq %rax, %rdi
leaq 0x1c93f(%rip), %rsi     # 0x37bfd
callq 0x73a0
shll $0x2, %r13d
movq %rbp, %rdi
movl %r13d, %esi
callq 0x75c0
movq %rax, %rbp
movl $0x7, %edx
movq %rax, %rdi
leaq 0x1c721(%rip), %rsi     # 0x37a05
callq 0x73a0
movq 0x240(%rbx), %rax
movq 0x8(%rax,%r14), %rsi
movq 0x10(%rax,%r14), %rdx
movq %rbp, %rdi
callq 0x73a0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x1c8ea(%rip), %rsi     # 0x37bfe
callq 0x73a0
movq %rbp, %rdi
movl %r13d, %esi
callq 0x75c0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x1c8e9(%rip), %rsi     # 0x37c1c
callq 0x73a0
movb $0x66, %al
jmp 0x1b135
movq 0x240(%rbx), %rax
leaq (%rax,%r14), %rdi
addq $0x58, %rdi
movq %r13, %rsi
callq 0x70c0
cmpl $0x1, %r12d
movq 0x8(%rsp), %r15
jne 0x1b3fa
testl %eax, %eax
jne 0x1b3fa
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 %rax, %r13
movl $0xb, %edx
movq %rax, %rdi
leaq 0x1c6a0(%rip), %rsi     # 0x37a46
callq 0x73a0
movl $0x4, %edx
movq %r13, %rdi
leaq 0x1c47e(%rip), %rsi     # 0x37838
callq 0x73a0
movl 0x310(%rbx), %esi
incl %esi
movq %r13, %rdi
callq 0x75c0
movq %rax, %r13
movl $0x11, %edx
movq %rax, %rdi
leaq 0x1c653(%rip), %rsi     # 0x37a34
callq 0x73a0
movq %r13, %rdi
movl %r12d, %esi
callq 0x75c0
addl $0x2, 0x70(%rbx)
jmp 0x1b625
movq 0x240(%rbx), %rax
leaq (%rax,%r14), %rdi
addq $0x58, %rdi
movq %r13, %rsi
callq 0x70c0
cmpl $0x2, %r12d
jne 0x1b4b3
testl %eax, %eax
jne 0x1b4b3
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 %rax, %r13
movl $0xb, %edx
movq %rax, %rdi
leaq 0x1c5f6(%rip), %rsi     # 0x37a52
callq 0x73a0
movl $0x4, %edx
movq %r13, %rdi
leaq 0x1c3c8(%rip), %rsi     # 0x37838
callq 0x73a0
movl 0x310(%rbx), %esi
incl %esi
movq %r13, %rdi
callq 0x75c0
movq %rax, %r13
movl $0x11, %edx
movq %rax, %rdi
leaq 0x1c59d(%rip), %rsi     # 0x37a34
callq 0x73a0
movq %r13, %rdi
movl %r12d, %esi
callq 0x75c0
movl $0x6, 0x70(%rbx)
jmp 0x1b625
movq 0x240(%rbx), %rax
leaq (%rax,%r14), %rdi
addq $0x58, %rdi
movq %r13, %rsi
callq 0x70c0
cmpl $0x3, %r12d
jne 0x1b56c
testl %eax, %eax
jne 0x1b56c
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 %rax, %r13
movl $0x8, %edx
movq %rax, %rdi
leaq 0x1c549(%rip), %rsi     # 0x37a5e
callq 0x73a0
movl $0x4, %edx
movq %r13, %rdi
leaq 0x1c30f(%rip), %rsi     # 0x37838
callq 0x73a0
movl 0x310(%rbx), %esi
incl %esi
movq %r13, %rdi
callq 0x75c0
movq %rax, %r13
movl $0x11, %edx
movq %rax, %rdi
leaq 0x1c4e4(%rip), %rsi     # 0x37a34
callq 0x73a0
movq %r13, %rdi
movl %r12d, %esi
callq 0x75c0
movl $0x7, 0x70(%rbx)
jmp 0x1b625
movq 0x240(%rbx), %rax
leaq (%rax,%r14), %rdi
addq $0x58, %rdi
movq %r13, %rsi
callq 0x70c0
cmpl $0x4, %r12d
jne 0x1b625
testl %eax, %eax
jne 0x1b625
movq 0x8(%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, %r13
movl $0x8, %edx
movq %rax, %rdi
leaq 0x1c494(%rip), %rsi     # 0x37a67
callq 0x73a0
movl $0x4, %edx
movq %r13, %rdi
leaq 0x1c251(%rip), %rsi     # 0x37838
callq 0x73a0
movl 0x310(%rbx), %esi
incl %esi
movq %r13, %rdi
callq 0x75c0
movq %rax, %r13
movl $0x11, %edx
movq %rax, %rdi
leaq 0x1c426(%rip), %rsi     # 0x37a34
callq 0x73a0
movq %r13, %rdi
movl %r12d, %esi
callq 0x75c0
movl $0xc, 0x70(%rbx)
movq 0x248(%rbx), %rax
subq 0x240(%rbx), %rax
shrq $0x4, %rax
imull $0xba2e8ba3, %eax, %r15d # imm = 0xBA2E8BA3
movabsq $0x2e8ba2e8ba2e8ba3, %r14 # imm = 0x2E8BA2E8BA2E8BA3
incl %r15d
movslq %r15d, %rax
movq 0x240(%rbx), %rbp
movq 0x248(%rbx), %rcx
subq %rbp, %rcx
sarq $0x4, %rcx
imulq %r14, %rcx
cmpq %rax, %rcx
ja 0x1ae8e
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movslq (%r13), %rax
movq (%r14), %rcx
imulq $0xb0, %rax, %rax
leaq (%rcx,%rax), %rdi
addq $0x58, %rdi
leaq 0x1bee9(%rip), %rsi     # 0x37585
callq 0x70c0
testl %eax, %eax
jne 0x1add7
movq %rbp, %rdi
callq 0x7180
movq %rax, %r12
leaq 0x1c35e(%rip), %rsi     # 0x37a19
movl $0x8, %edx
jmp 0x1ad38