// File: /workspace/github_cpp_makefile_star2_O1/gioannides[P]Language_Processors/src/../include/ast/ast_node.hpp
// Function: IterationStatement::render_asm(std::basic_ofstream<char, std::char_traits<char>>&, Context&)
inline void IterationStatement::render_asm(std::ofstream& file, Context& contxt) {
			
			std::string label_id = labelGen(contxt);
			std::string WHILE = "$WHILE" + label_id;
			std::string DO = "$DO" + label_id;
			std::string END = "$END" + label_id;
			std::string FOR = "$FOR" + label_id;
			std::string BEGIN_ = "$BEGIN" + label_id;
			std::string BEGIN_2 = "$BEGIN2_" + label_id;


			if( ITERATIVE_TYPE != NULL && *ITERATIVE_TYPE == "while" && AssignmentExpressionPtr != NULL && StatementPtr != NULL) {
				contxt.BreakCounter++;
				contxt.ContinueCounter++;

				file << std::endl << BEGIN_ << ":";
				
				contxt.LoopHeader.push_back(BEGIN_2);
				contxt.ContinueTracker.push_back(contxt.ContinueCounter);

				contxt.rhs_of_expression = true;
				contxt.TestConditionContinue = AssignmentExpressionPtr; //In case of a continue
				AssignmentExpressionPtr->render_asm(file,contxt);
				contxt.rhs_of_expression = false;
				if(!contxt.reading)	{
					if(contxt.regType[contxt.Regs+1] == 'f'){
						file << std::endl << BEGIN_2 << ":" << "\tli.s\t$f1,0";
						
						file << std::endl << "\tc.eq.s\t$f" << contxt.Regs+1 << ",$f1";
						file << std::endl << "\tnop";
						file << std::endl << "\tbc1t\t" << END;
						file << std::endl << "\tnop";
					}
					else{				
						file << std::endl << BEGIN_2 << ":" << "\tbeq\t$" << contxt.Regs+1 << ",$0," << END;
						file << std::endl << "\tnop";
					}
				}
				file << std::endl << WHILE << ":";

				contxt.LastScope.push_back(END);
				contxt.BreakTracker.push_back(contxt.BreakCounter);

				StatementPtr->render_asm(file,contxt);
				if(!contxt.reading)	{
					if(contxt.regType[contxt.Regs+1] == 'f'){
						file << "\n\tb " << BEGIN_;
						file << std::endl << "\tnop";					
					}
					else{
						file << "\n\tb " << BEGIN_;
						file << std::endl << "\tnop";
					}
				}
				contxt.LoopHeader.pop_back();
				contxt.LastScope.pop_back();
				file << std::endl << END << ":";

				
				contxt.BreakCounter--;
				contxt.ContinueCounter--;
				

			}

			else if( ITERATIVE_TYPE != NULL && *ITERATIVE_TYPE == "do" && AssignmentExpressionPtr != NULL && StatementPtr != NULL){

				contxt.ContinueCounter++;
				contxt.BreakCounter++;

				file << std::endl << DO << ":";
				contxt.LoopHeader.push_back(BEGIN_2);
				contxt.ContinueTracker.push_back(contxt.ContinueCounter);

				contxt.LastScope.push_back(END);
				contxt.BreakTracker.push_back(contxt.BreakCounter);

				StatementPtr->render_asm(file,contxt);
				contxt.rhs_of_expression = true;
				contxt.TestConditionContinue = AssignmentExpressionPtr; //In case of a continue
				file << std::endl << BEGIN_2 << ":";
				AssignmentExpressionPtr->render_asm(file,contxt);
				contxt.rhs_of_expression = false;
				
				if(!contxt.reading)	
				{
					if(contxt.regType[contxt.Regs+1] == 'f'){
						file << std::endl << "\tli.s\t$f1,0";
						
						file << std::endl << "\tc.eq.s\t$f" << contxt.Regs+1 << ",$f1";
						file << std::endl << "\tnop";
						file << std::endl << "\tbc1t\t" << END;
						file << std::endl << "\tnop";
					}
					else{
						file << std::endl << "\tbeq\t$" << contxt.Regs+1 <<",$0," << END;
						file << std::endl << "\tnop";
					}			
					file << "\n\tb " << DO;
					file << std::endl << "\tnop";
					file << std::endl << END << ":";
				}

				contxt.LoopHeader.pop_back();
				contxt.LastScope.pop_back();
				
				contxt.BreakCounter--;
				contxt.ContinueCounter--;
				
			}

			else if( ITERATIVE_TYPE != NULL && *ITERATIVE_TYPE == "for" && ExpressionStatementPtr != NULL && ExpressionStatementPtr2 != NULL && AssignmentExpressionPtr == NULL && StatementPtr != NULL){
				contxt.ContinueCounter++;
				contxt.BreakCounter++;

				ExpressionStatementPtr->render_asm(file,contxt);
				file << std::endl << FOR << ":";

				contxt.LoopHeader.push_back(BEGIN_2);
				contxt.ContinueTracker.push_back(contxt.ContinueCounter);

				contxt.rhs_of_expression = true;
				ExpressionStatementPtr2->render_asm(file,contxt);
				contxt.rhs_of_expression = false;
				if(ExpressionStatementPtr2->AssignmentExpressionPtr!=NULL)
				{
				if(!contxt.reading)	{

					if(contxt.regType[contxt.Regs+1] == 'f'){
						file << std::endl << BEGIN_2 << ":" << "\tli.s\t$f1,0";
						
						file << std::endl << "\tc.eq.s\t$f" << contxt.Regs+1 << ",$f1";
						file << std::endl << "\tnop";
						file << std::endl << "\tbc1t\t" << END;
						file << std::endl << "\tnop";
					}
					else{
						file << std::endl << BEGIN_2 << ":" << "\tbeq\t$" << contxt.Regs+1 <<",$0," << END;
						file << std::endl << "\tnop";
					}
				}
			}

				contxt.LastScope.push_back(END);
				contxt.BreakTracker.push_back(contxt.BreakCounter);

				StatementPtr->render_asm(file,contxt);				
				if(!contxt.reading)	{
					file << "\n\tb " << FOR;
					file << std::endl << "\tnop";
				}
				contxt.LoopHeader.pop_back();
				contxt.LastScope.pop_back();			
				file << std::endl << END << ":";
				contxt.BreakCounter--;
				contxt.ContinueCounter--;
				
			}

			else if(ITERATIVE_TYPE != NULL && *ITERATIVE_TYPE == "for" && ExpressionStatementPtr != NULL && ExpressionStatementPtr2 != NULL && AssignmentExpressionPtr != NULL && StatementPtr != NULL){
				contxt.ContinueCounter++;
				contxt.BreakCounter++;
				ExpressionStatementPtr->render_asm(file,contxt);

				contxt.LastScope.push_back(END);
				contxt.BreakTracker.push_back(contxt.BreakCounter);

				file << std::endl << FOR << ":";

				contxt.LoopHeader.push_back(BEGIN_2);
				contxt.ContinueTracker.push_back(contxt.ContinueCounter);

				contxt.rhs_of_expression = true;
				ExpressionStatementPtr2->render_asm(file,contxt);
				contxt.rhs_of_expression = false;
				if(ExpressionStatementPtr2->AssignmentExpressionPtr!=NULL)
				{
				if(!contxt.reading)	{
					if(contxt.regType[contxt.Regs+1] == 'f'){
						file << std::endl << BEGIN_2 << ":" << "\tli.s\t$f1,0";
						
						file << std::endl << "\tc.eq.s\t$f" << contxt.Regs+1 << ",$f1";
						file << std::endl << "\tnop";
						file << std::endl << "\tbc1t\t" << END;
						file << std::endl << "\tnop";
					}
					else{
						file << std::endl << BEGIN_2 << ":" << "\tbeq\t$" << contxt.Regs+1 <<",$0," << END;
						file << std::endl << "\tnop";
					}				
				}
			}
				contxt.TestConditionContinue = AssignmentExpressionPtr; //In case of a continue
				StatementPtr->render_asm(file,contxt);
				
				contxt.rhs_of_expression = true;
				
				AssignmentExpressionPtr->render_asm(file,contxt);
				contxt.rhs_of_expression = false;
				if(!contxt.reading){
					file << "\n\tb " << FOR;
					file << std::endl << "\tnop";
				}
				contxt.LoopHeader.pop_back();
				contxt.LastScope.pop_back();
				file << std::endl << END << ":";
				contxt.BreakCounter--;
				contxt.ContinueCounter--;
				
			}
			//file << std::endl << END << ":"; 
		
		}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xe8, %rsp
movq %rdx, %r14
movq %rsi, %rbx
movq %rdi, %r12
leaq 0x68(%rsp), %r15
movq %r15, %rdi
movq %rdx, %rsi
callq 0x106b0
leaq 0x1553b(%rip), %rsi     # 0x37c5c
leaq 0xc8(%rsp), %rdi
movq %r15, %rdx
callq 0x107e2
leaq 0x1552b(%rip), %rsi     # 0x37c63
leaq 0xa8(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0x107e2
leaq 0x14f1e(%rip), %rsi     # 0x3766f
leaq 0x8(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0x107e2
leaq 0x15500(%rip), %rsi     # 0x37c67
leaq 0x48(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0x107e2
leaq 0x154ef(%rip), %rsi     # 0x37c6c
leaq 0x88(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0x107e2
leaq 0x154dd(%rip), %rsi     # 0x37c73
leaq 0x28(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0x107e2
movq 0x28(%r12), %rdi
testq %rdi, %rdi
je 0x227c3
leaq 0x14cb0(%rip), %rsi     # 0x37466
callq 0x70c0
testl %eax, %eax
je 0x228ca
movq 0x28(%r12), %rdi
testq %rdi, %rdi
je 0x227e1
leaq 0x154b4(%rip), %rsi     # 0x37c88
callq 0x70c0
testl %eax, %eax
je 0x22988
movq 0x28(%r12), %rdi
testq %rdi, %rdi
je 0x227ff
leaq 0x15499(%rip), %rsi     # 0x37c8b
callq 0x70c0
testl %eax, %eax
je 0x22a46
movq 0x28(%r12), %rdi
testq %rdi, %rdi
je 0x239f9
leaq 0x15477(%rip), %rsi     # 0x37c8b
callq 0x70c0
testl %eax, %eax
jne 0x239f9
movq 0x18(%r12), %rax
testq %rax, %rax
je 0x239f9
cmpq $0x0, 0x20(%r12)
je 0x239f9
cmpq $0x0, 0x8(%r12)
je 0x239f9
cmpq $0x0, 0x10(%r12)
je 0x239f9
incl 0x560(%r14)
incl 0x528(%r14)
movq 0x8(%rax), %rdi
testq %rdi, %rdi
je 0x22885
movb $0x1, 0x1d1(%r14)
movq %rbx, %rsi
movq %r14, %rdx
callq 0x11e3c
movb $0x0, 0x1d1(%r14)
leaq 0x4b8(%r14), %rdi
leaq 0x8(%rsp), %rsi
callq 0xc5f0
leaq 0x528(%r14), %r13
movq 0x538(%r14), %rsi
cmpq 0x540(%r14), %rsi
je 0x2347d
movl 0x528(%r14), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x538(%r14)
jmp 0x2348c
cmpq $0x0, 0x8(%r12)
je 0x227c3
cmpq $0x0, 0x10(%r12)
je 0x227c3
incl 0x528(%r14)
incl 0x560(%r14)
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
movq %rax, %rdi
callq 0x73a0
leaq 0x14ae0(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x3d8(%r14), %rdi
leaq 0x28(%rsp), %rsi
callq 0xc5f0
leaq 0x560(%r14), %r15
movq 0x550(%r14), %rsi
cmpq 0x558(%r14), %rsi
je 0x22b3c
movl 0x560(%r14), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x550(%r14)
jmp 0x22b4b
cmpq $0x0, 0x8(%r12)
je 0x227e1
cmpq $0x0, 0x10(%r12)
je 0x227e1
incl 0x560(%r14)
incl 0x528(%r14)
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rdx
movq %rax, %rdi
callq 0x73a0
leaq 0x14a22(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x3d8(%r14), %rdi
leaq 0x28(%rsp), %rsi
callq 0xc5f0
leaq 0x560(%r14), %r15
movq 0x550(%r14), %rsi
cmpq 0x558(%r14), %rsi
je 0x22cdb
movl 0x560(%r14), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x550(%r14)
jmp 0x22cea
movq 0x18(%r12), %rax
testq %rax, %rax
je 0x227ff
cmpq $0x0, 0x20(%r12)
je 0x227ff
cmpq $0x0, 0x8(%r12)
jne 0x227ff
cmpq $0x0, 0x10(%r12)
je 0x227ff
incl 0x560(%r14)
incl 0x528(%r14)
movq 0x8(%rax), %rdi
testq %rdi, %rdi
je 0x22aaa
movb $0x1, 0x1d1(%r14)
movq %rbx, %rsi
movq %r14, %rdx
callq 0x11e3c
movb $0x0, 0x1d1(%r14)
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq %rax, %rdi
callq 0x73a0
leaq 0x1492c(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x3d8(%r14), %rdi
leaq 0x28(%rsp), %rsi
callq 0xc5f0
leaq 0x560(%r14), %r15
movq 0x550(%r14), %rsi
cmpq 0x558(%r14), %rsi
je 0x23338
movl 0x560(%r14), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x550(%r14)
jmp 0x23347
leaq 0x548(%r14), %rdi
movq %r15, %rdx
callq 0x20a34
movb $0x1, 0x1d1(%r14)
movq 0x8(%r12), %rdi
movq %rdi, 0x3f8(%r14)
movq %rbx, %rsi
movq %r14, %rdx
callq 0x11e3c
movb $0x0, 0x1d1(%r14)
cmpb $0x0, 0x21b(%r14)
jne 0x22fcf
movslq 0x310(%r14), %rax
movq (%rbx), %rcx
movq -0x18(%rcx), %rdi
addq %rbx, %rdi
cmpb $0x66, 0x342(%rax,%r14)
jne 0x22f00
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %rax, %rdi
callq 0x73a0
movq %rax, %r13
leaq 0x1483d(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x1508f(%rip), %rsi     # 0x37c7c
movl $0xb, %edx
movq %r13, %rdi
callq 0x73a0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %rax, %r13
leaq 0x14a8a(%rip), %rsi     # 0x376b5
movl $0xa, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%r14), %esi
incl %esi
movq %r13, %rdi
callq 0x75c0
leaq 0x14a70(%rip), %rsi     # 0x376c0
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
leaq 0x14967(%rip), %rsi     # 0x375f2
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %rax, %r13
leaq 0x14a1b(%rip), %rsi     # 0x376e4
movl $0x6, %edx
movq %rax, %rdi
callq 0x73a0
jmp 0x22f82
leaq 0x548(%r14), %rdi
movq %r15, %rdx
callq 0x20a34
leaq 0x4b8(%r14), %rdi
leaq 0x8(%rsp), %rsi
callq 0xc5f0
leaq 0x528(%r14), %r13
movq 0x538(%r14), %rsi
cmpq 0x540(%r14), %rsi
je 0x22d28
movl 0x528(%r14), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x538(%r14)
jmp 0x22d37
leaq 0x530(%r14), %rdi
movq %r13, %rdx
callq 0x20a34
movq 0x10(%r12), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x21fb0
movb $0x1, 0x1d1(%r14)
movq 0x8(%r12), %rax
movq %rax, 0x3f8(%r14)
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %rax, %rdi
callq 0x73a0
leaq 0x1467b(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
movq 0x8(%r12), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x11e3c
movb $0x0, 0x1d1(%r14)
cmpb $0x0, 0x21b(%r14)
jne 0x232e7
movslq 0x310(%r14), %rax
movq (%rbx), %rcx
movq -0x18(%rcx), %rdi
addq %rbx, %rdi
cmpb $0x66, 0x342(%rax,%r14)
jne 0x2318a
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
leaq 0x14e6a(%rip), %rsi     # 0x37c7c
movl $0xb, %edx
movq %rax, %rdi
callq 0x73a0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %rax, %r12
leaq 0x14865(%rip), %rsi     # 0x376b5
movl $0xa, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%r14), %esi
incl %esi
movq %r12, %rdi
callq 0x75c0
leaq 0x1484b(%rip), %rsi     # 0x376c0
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
leaq 0x14742(%rip), %rsi     # 0x375f2
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %rax, %r12
leaq 0x147f6(%rip), %rsi     # 0x376e4
movl $0x6, %edx
movq %rax, %rdi
callq 0x73a0
jmp 0x231e6
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %rax, %rdi
callq 0x73a0
movq %rax, %r13
leaq 0x144dd(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x14cf7(%rip), %rsi     # 0x37c44
movl $0x6, %edx
movq %r13, %rdi
callq 0x73a0
movl 0x310(%r14), %esi
incl %esi
movq %r13, %rdi
callq 0x75c0
movq %rax, %r13
leaq 0x14706(%rip), %rsi     # 0x3767b
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %r13, %rdi
callq 0x73a0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
leaq 0x14630(%rip), %rsi     # 0x375f2
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq 0xc8(%rsp), %rsi
movq 0xd0(%rsp), %rdx
movq %rax, %rdi
callq 0x73a0
leaq 0x14401(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x4b8(%r14), %rdi
leaq 0x8(%rsp), %rsi
callq 0xc5f0
leaq 0x528(%r14), %r13
movq 0x538(%r14), %rsi
cmpq 0x540(%r14), %rsi
je 0x23060
movl 0x528(%r14), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x538(%r14)
jmp 0x2306f
leaq 0x530(%r14), %rdi
movq %r13, %rdx
callq 0x20a34
movq 0x10(%r12), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x21fb0
cmpb $0x0, 0x21b(%r14)
jne 0x230f0
leaq 0x145f0(%rip), %rsi     # 0x37680
movl $0x4, %edx
movq %rbx, %rdi
callq 0x73a0
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
movq %rbx, %rdi
callq 0x73a0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
leaq 0x1450f(%rip), %rsi     # 0x375f2
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
movq 0x3e0(%r14), %rax
leaq -0x20(%rax), %rcx
movq %rcx, 0x3e0(%r14)
movq -0x20(%rax), %rdi
addq $-0x10, %rax
cmpq %rax, %rdi
je 0x23114
callq 0x72e0
movq 0x4c0(%r14), %rax
leaq -0x20(%rax), %rcx
movq %rcx, 0x4c0(%r14)
movq -0x20(%rax), %rdi
addq $-0x10, %rax
cmpq %rax, %rdi
je 0x23138
callq 0x72e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rax, %rdi
callq 0x73a0
leaq 0x1429e(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
jmp 0x239f2
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %rax, %r12
leaq 0x14a93(%rip), %rsi     # 0x37c44
movl $0x6, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%r14), %esi
incl %esi
movq %r12, %rdi
callq 0x75c0
movq %rax, %r12
leaq 0x144a2(%rip), %rsi     # 0x3767b
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %r12, %rdi
callq 0x73a0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
leaq 0x143cc(%rip), %rsi     # 0x375f2
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x14446(%rip), %rsi     # 0x37680
movl $0x4, %edx
movq %rbx, %rdi
callq 0x73a0
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rdx
movq %rbx, %rdi
callq 0x73a0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
leaq 0x14365(%rip), %rsi     # 0x375f2
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rax, %rdi
callq 0x73a0
leaq 0x1413c(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
movq 0x3e0(%r14), %rax
leaq -0x20(%rax), %rcx
movq %rcx, 0x3e0(%r14)
movq -0x20(%rax), %rdi
addq $-0x10, %rax
cmpq %rax, %rdi
je 0x2330b
callq 0x72e0
movq 0x4c0(%r14), %rax
leaq -0x20(%rax), %rcx
movq %rcx, 0x4c0(%r14)
movq -0x20(%rax), %rdi
addq $-0x10, %rax
cmpq %rax, %rdi
je 0x239f2
callq 0x72e0
jmp 0x239f2
leaq 0x548(%r14), %rdi
movq %r15, %rdx
callq 0x20a34
movb $0x1, 0x1d1(%r14)
movq 0x20(%r12), %rax
movq 0x8(%rax), %rdi
testq %rdi, %rdi
je 0x23378
movb $0x1, 0x1d1(%r14)
movq %rbx, %rsi
movq %r14, %rdx
callq 0x11e3c
movb $0x0, 0x1d1(%r14)
movb $0x0, 0x1d1(%r14)
movq 0x20(%r12), %rax
cmpq $0x0, 0x8(%rax)
je 0x236f7
cmpb $0x0, 0x21b(%r14)
jne 0x236f7
movslq 0x310(%r14), %rax
cmpb $0x66, 0x342(%rax,%r14)
jne 0x2365c
movq %rbx, %rdi
callq 0x7180
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %rax, %rdi
callq 0x73a0
movq %rax, %r13
leaq 0x1403e(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x14890(%rip), %rsi     # 0x37c7c
movl $0xb, %edx
movq %r13, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
movq %rax, %r13
leaq 0x142aa(%rip), %rsi     # 0x376b5
movl $0xa, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%r14), %esi
incl %esi
movq %r13, %rdi
callq 0x75c0
leaq 0x14290(%rip), %rsi     # 0x376c0
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
leaq 0x141a6(%rip), %rsi     # 0x375f2
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
movq %rax, %r13
leaq 0x14279(%rip), %rsi     # 0x376e4
movl $0x6, %edx
movq %rax, %rdi
callq 0x73a0
jmp 0x236c9
leaq 0x530(%r14), %rdi
movq %r13, %rdx
callq 0x20a34
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq %rax, %rdi
callq 0x73a0
leaq 0x13f4a(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x3d8(%r14), %rdi
leaq 0x28(%rsp), %rsi
callq 0xc5f0
leaq 0x560(%r14), %r15
movq 0x550(%r14), %rsi
cmpq 0x558(%r14), %rsi
je 0x23517
movl 0x560(%r14), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x550(%r14)
jmp 0x23526
leaq 0x548(%r14), %rdi
movq %r15, %rdx
callq 0x20a34
movb $0x1, 0x1d1(%r14)
movq 0x20(%r12), %rax
movq 0x8(%rax), %rdi
testq %rdi, %rdi
je 0x23557
movb $0x1, 0x1d1(%r14)
movq %rbx, %rsi
movq %r14, %rdx
callq 0x11e3c
movb $0x0, 0x1d1(%r14)
movb $0x0, 0x1d1(%r14)
movq 0x20(%r12), %rax
cmpq $0x0, 0x8(%rax)
je 0x238d5
cmpb $0x0, 0x21b(%r14)
jne 0x238d5
movslq 0x310(%r14), %rax
cmpb $0x66, 0x342(%rax,%r14)
jne 0x2383a
movq %rbx, %rdi
callq 0x7180
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %rax, %rdi
callq 0x73a0
movq %rax, %rbp
leaq 0x13e5f(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x146b1(%rip), %rsi     # 0x37c7c
movl $0xb, %edx
movq %rbp, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
movq %rax, %rbp
leaq 0x140cb(%rip), %rsi     # 0x376b5
movl $0xa, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%r14), %esi
incl %esi
movq %rbp, %rdi
callq 0x75c0
leaq 0x140b1(%rip), %rsi     # 0x376c0
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
leaq 0x13fc7(%rip), %rsi     # 0x375f2
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
movq %rax, %rbp
leaq 0x1409a(%rip), %rsi     # 0x376e4
movl $0x6, %edx
movq %rax, %rdi
callq 0x73a0
jmp 0x238a7
movq %rbx, %rdi
callq 0x7180
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %rax, %rdi
callq 0x73a0
movq %rax, %r13
leaq 0x13d96(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x145b0(%rip), %rsi     # 0x37c44
movl $0x6, %edx
movq %r13, %rdi
callq 0x73a0
movl 0x310(%r14), %esi
incl %esi
movq %r13, %rdi
callq 0x75c0
movq %rax, %r13
leaq 0x13fbf(%rip), %rsi     # 0x3767b
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %r13, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
leaq 0x13f08(%rip), %rsi     # 0x375f2
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x4b8(%r14), %rdi
leaq 0x8(%rsp), %rsi
callq 0xc5f0
leaq 0x528(%r14), %r13
movq 0x538(%r14), %rsi
cmpq 0x540(%r14), %rsi
je 0x23735
movl 0x528(%r14), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x538(%r14)
jmp 0x23744
leaq 0x530(%r14), %rdi
movq %r13, %rdx
callq 0x20a34
movq 0x10(%r12), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x21fb0
cmpb $0x0, 0x21b(%r14)
jne 0x237a0
leaq 0x13f1b(%rip), %rsi     # 0x37680
movl $0x4, %edx
movq %rbx, %rdi
callq 0x73a0
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq %rbx, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
leaq 0x13e5f(%rip), %rsi     # 0x375f2
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
movq 0x3e0(%r14), %rax
leaq -0x20(%rax), %rcx
movq %rcx, 0x3e0(%r14)
movq -0x20(%rax), %rdi
addq $-0x10, %rax
cmpq %rax, %rdi
je 0x237c4
callq 0x72e0
movq 0x4c0(%r14), %rax
leaq -0x20(%rax), %rcx
movq %rcx, 0x4c0(%r14)
movq -0x20(%rax), %rdi
addq $-0x10, %rax
cmpq %rax, %rdi
je 0x237e8
callq 0x72e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rax, %rdi
callq 0x73a0
leaq 0x13bee(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
jmp 0x239f2
movq %rbx, %rdi
callq 0x7180
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %rax, %rdi
callq 0x73a0
movq %rax, %rbp
leaq 0x13bb8(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x143d2(%rip), %rsi     # 0x37c44
movl $0x6, %edx
movq %rbp, %rdi
callq 0x73a0
movl 0x310(%r14), %esi
incl %esi
movq %rbp, %rdi
callq 0x75c0
movq %rax, %rbp
leaq 0x13de1(%rip), %rsi     # 0x3767b
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rbp, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
leaq 0x13d2a(%rip), %rsi     # 0x375f2
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
movq 0x8(%r12), %rax
movq %rax, 0x3f8(%r14)
movq 0x10(%r12), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x21fb0
movb $0x1, 0x1d1(%r14)
movq 0x8(%r12), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x11e3c
movb $0x0, 0x1d1(%r14)
cmpb $0x0, 0x21b(%r14)
jne 0x2395d
leaq 0x13d5e(%rip), %rsi     # 0x37680
movl $0x4, %edx
movq %rbx, %rdi
callq 0x73a0
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq %rbx, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
leaq 0x13ca2(%rip), %rsi     # 0x375f2
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
movq 0x3e0(%r14), %rax
leaq -0x20(%rax), %rcx
movq %rcx, 0x3e0(%r14)
movq -0x20(%rax), %rdi
addq $-0x10, %rax
cmpq %rax, %rdi
je 0x23981
callq 0x72e0
movq 0x4c0(%r14), %rax
leaq -0x20(%rax), %rcx
movq %rcx, 0x4c0(%r14)
movq -0x20(%rax), %rdi
addq $-0x10, %rax
cmpq %rax, %rdi
je 0x239a5
callq 0x72e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rax, %rdi
callq 0x73a0
leaq 0x13a31(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
decl (%r13)
decl (%r15)
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x23a0c
callq 0x72e0
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x23a22
callq 0x72e0
leaq 0x58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x23a35
callq 0x72e0
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x23a48
callq 0x72e0
leaq 0xb8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x23a5e
callq 0x72e0
leaq 0xd8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x23a74
callq 0x72e0
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x23a87
callq 0x72e0
addq $0xe8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0x23acd
movq %rax, %rbx
jmp 0x23ae3
movq %rax, %rbx
jmp 0x23af6
movq %rax, %rbx
jmp 0x23b09
movq %rax, %rbx
jmp 0x23b1f
movq %rax, %rbx
jmp 0x23b35
movq %rax, %rbx
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x23acd
callq 0x72e0
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x23ae3
callq 0x72e0
leaq 0x58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x23af6
callq 0x72e0
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x23b09
callq 0x72e0
leaq 0xb8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x23b1f
callq 0x72e0
leaq 0xd8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x23b35
callq 0x72e0
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x23b48
callq 0x72e0
movq %rbx, %rdi
callq 0x75f0