// File: /workspace/github_cpp_makefile_star2_O3/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, %r13
leaq 0x68(%rsp), %r15
movq %r15, %rdi
movq %rdx, %rsi
callq 0xfdc2
leaq 0x15c71(%rip), %rsi     # 0x37c5c
leaq 0xc8(%rsp), %rdi
movq %r15, %rdx
callq 0xfef4
leaq 0x15c61(%rip), %rsi     # 0x37c63
leaq 0xa8(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0xfef4
leaq 0x15654(%rip), %rsi     # 0x3766f
leaq 0x8(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0xfef4
leaq 0x15c36(%rip), %rsi     # 0x37c67
leaq 0x48(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0xfef4
leaq 0x15c25(%rip), %rsi     # 0x37c6c
leaq 0x88(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0xfef4
leaq 0x15c13(%rip), %rsi     # 0x37c73
leaq 0x28(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0xfef4
movq 0x28(%r13), %rdi
testq %rdi, %rdi
je 0x23321
leaq 0x153e3(%rip), %rsi     # 0x37466
callq 0x70c0
testl %eax, %eax
je 0x221a8
movq 0x28(%r13), %rdi
testq %rdi, %rdi
je 0x23321
leaq 0x15be4(%rip), %rsi     # 0x37c88
callq 0x70c0
testl %eax, %eax
je 0x22264
movq 0x28(%r13), %rdi
testq %rdi, %rdi
je 0x23321
leaq 0x15bc6(%rip), %rsi     # 0x37c8b
callq 0x70c0
testl %eax, %eax
je 0x22320
movq 0x28(%r13), %rdi
testq %rdi, %rdi
je 0x23321
leaq 0x15ba5(%rip), %rsi     # 0x37c8b
callq 0x70c0
testl %eax, %eax
jne 0x23321
movq 0x18(%r13), %rax
testq %rax, %rax
je 0x23321
cmpq $0x0, 0x20(%r13)
je 0x23321
cmpq $0x0, 0x8(%r13)
je 0x23321
cmpq $0x0, 0x10(%r13)
je 0x23321
incl 0x560(%r14)
incl 0x528(%r14)
movq 0x8(%rax), %rax
testq %rax, %rax
je 0x22163
movb $0x1, 0x1d1(%r14)
movq %rax, %rcx
movq 0x10(%rax), %rax
testq %rax, %rax
jne 0x22140
movq 0x8(%rcx), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1a310
movb $0x0, 0x1d1(%r14)
leaq 0x4b8(%r14), %rdi
leaq 0x8(%rsp), %rsi
callq 0xbcf4
leaq 0x528(%r14), %r12
movq 0x538(%r14), %rsi
cmpq 0x540(%r14), %rsi
je 0x22d8a
movl 0x528(%r14), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x538(%r14)
jmp 0x22d99
cmpq $0x0, 0x8(%r13)
je 0x22090
cmpq $0x0, 0x10(%r13)
je 0x22090
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 0x15204(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x3d8(%r14), %rdi
leaq 0x28(%rsp), %rsi
callq 0xbcf4
leaq 0x560(%r14), %r15
movq 0x550(%r14), %rsi
cmpq 0x558(%r14), %rsi
je 0x22422
movl 0x560(%r14), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x550(%r14)
jmp 0x22431
cmpq $0x0, 0x8(%r13)
je 0x220b1
cmpq $0x0, 0x10(%r13)
je 0x220b1
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 0x15148(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x3d8(%r14), %rdi
leaq 0x28(%rsp), %rsi
callq 0xbcf4
leaq 0x560(%r14), %r15
movq 0x550(%r14), %rsi
cmpq 0x558(%r14), %rsi
je 0x22859
movl 0x560(%r14), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x550(%r14)
jmp 0x22868
movq 0x18(%r13), %rax
testq %rax, %rax
je 0x220d2
cmpq $0x0, 0x20(%r13)
je 0x220d2
cmpq $0x0, 0x8(%r13)
jne 0x220d2
cmpq $0x0, 0x10(%r13)
je 0x220d2
incl 0x560(%r14)
incl 0x528(%r14)
movq 0x8(%rax), %rax
testq %rax, %rax
je 0x22390
movb $0x1, 0x1d1(%r14)
movq %rax, %rcx
movq 0x10(%rax), %rax
testq %rax, %rax
jne 0x2236d
movq 0x8(%rcx), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1a310
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 0x15046(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x3d8(%r14), %rdi
leaq 0x28(%rsp), %rsi
callq 0xbcf4
leaq 0x560(%r14), %r15
movq 0x550(%r14), %rsi
cmpq 0x558(%r14), %rsi
je 0x22c36
movl 0x560(%r14), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x550(%r14)
jmp 0x22c45
leaq 0x548(%r14), %rdi
movq %r15, %rdx
callq 0x202ae
leaq 0x528(%r14), %r12
movb $0x1, 0x1d1(%r14)
movq 0x8(%r13), %rax
movq %rax, 0x3f8(%r14)
movq %rax, %rcx
movq 0x10(%rax), %rax
testq %rax, %rax
jne 0x2244b
movq 0x8(%rcx), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1a310
movb $0x0, 0x1d1(%r14)
cmpb $0x0, 0x21b(%r14)
jne 0x226a6
movslq 0x310(%r14), %rax
movq (%rbx), %rcx
movq -0x18(%rcx), %rdi
addq %rbx, %rdi
cmpb $0x66, 0x342(%rax,%r14)
jne 0x225d7
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, %rbp
leaq 0x14f41(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x15793(%rip), %rsi     # 0x37c7c
movl $0xb, %edx
movq %rbp, %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, %rbp
leaq 0x1518e(%rip), %rsi     # 0x376b5
movl $0xa, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%r14), %esi
incl %esi
movq %rbp, %rdi
callq 0x75c0
leaq 0x15174(%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 0x1506b(%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, %rbp
leaq 0x1511f(%rip), %rsi     # 0x376e4
movl $0x6, %edx
movq %rax, %rdi
callq 0x73a0
jmp 0x22659
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, %rbp
leaq 0x14e06(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x15620(%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 0x1502f(%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), %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 0x14f59(%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 0x14d2a(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x4b8(%r14), %rdi
leaq 0x8(%rsp), %rsi
callq 0xbcf4
movq 0x538(%r14), %rsi
cmpq 0x540(%r14), %rsi
je 0x22730
movl 0x528(%r14), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x538(%r14)
jmp 0x2273f
leaq 0x530(%r14), %rdi
movq %r12, %rdx
callq 0x202ae
movq 0x10(%r13), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x21854
cmpb $0x0, 0x21b(%r14)
jne 0x227bf
leaq 0x14f21(%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 0x14e40(%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 0x227e3
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 0x22807
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 0x14bcf(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
jmp 0x2331a
leaq 0x548(%r14), %rdi
movq %r15, %rdx
callq 0x202ae
leaq 0x4b8(%r14), %rdi
leaq 0x8(%rsp), %rsi
callq 0xbcf4
leaq 0x528(%r14), %r12
movq 0x538(%r14), %rsi
cmpq 0x540(%r14), %rsi
je 0x228a6
movl 0x528(%r14), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x538(%r14)
jmp 0x228b5
leaq 0x530(%r14), %rdi
movq %r12, %rdx
callq 0x202ae
movq 0x10(%r13), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x21854
movb $0x1, 0x1d1(%r14)
movq 0x8(%r13), %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 0x14aff(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
movq 0x8(%r13), %rax
movq %rax, %rcx
movq 0x10(%rax), %rax
testq %rax, %rax
jne 0x22928
movq 0x8(%rcx), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1a310
movb $0x0, 0x1d1(%r14)
cmpb $0x0, 0x21b(%r14)
jne 0x22be5
movslq 0x310(%r14), %rax
movq (%rbx), %rcx
movq -0x18(%rcx), %rdi
addq %rbx, %rdi
cmpb $0x66, 0x342(%rax,%r14)
jne 0x22a88
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
leaq 0x152df(%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, %r13
leaq 0x14cda(%rip), %rsi     # 0x376b5
movl $0xa, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%r14), %esi
incl %esi
movq %r13, %rdi
callq 0x75c0
leaq 0x14cc0(%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 0x14bb7(%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 0x14c6b(%rip), %rsi     # 0x376e4
movl $0x6, %edx
movq %rax, %rdi
callq 0x73a0
jmp 0x22ae4
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %rax, %r13
leaq 0x15195(%rip), %rsi     # 0x37c44
movl $0x6, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%r14), %esi
incl %esi
movq %r13, %rdi
callq 0x75c0
movq %rax, %r13
leaq 0x14ba4(%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 0x14ace(%rip), %rsi     # 0x375f2
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x14b48(%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 0x14a67(%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 0x1483e(%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 0x22c09
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 0x2331a
callq 0x72e0
jmp 0x2331a
leaq 0x548(%r14), %rdi
movq %r15, %rdx
callq 0x202ae
movb $0x1, 0x1d1(%r14)
movq 0x20(%r13), %rax
movq 0x8(%rax), %rax
testq %rax, %rax
je 0x22d7d
movq %rax, %rcx
movq 0x10(%rax), %rax
testq %rax, %rax
jne 0x22c5e
movq 0x8(%rcx), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1a310
movq 0x20(%r13), %rax
cmpq $0x0, 0x8(%rax)
movb $0x0, 0x1d1(%r14)
je 0x23013
cmpb $0x0, 0x21b(%r14)
jne 0x23013
movslq 0x310(%r14), %rax
cmpb $0x66, 0x342(%rax,%r14)
jne 0x22f78
movq %rbx, %rdi
callq 0x7180
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %rax, %rdi
callq 0x73a0
movq %rax, %r12
leaq 0x1473e(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x14f90(%rip), %rsi     # 0x37c7c
movl $0xb, %edx
movq %r12, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
movq %rax, %r12
leaq 0x149aa(%rip), %rsi     # 0x376b5
movl $0xa, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%r14), %esi
incl %esi
movq %r12, %rdi
callq 0x75c0
leaq 0x14990(%rip), %rsi     # 0x376c0
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
leaq 0x148a6(%rip), %rsi     # 0x375f2
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
movq %rax, %r12
leaq 0x14979(%rip), %rsi     # 0x376e4
movl $0x6, %edx
movq %rax, %rdi
callq 0x73a0
jmp 0x22fe5
movb $0x0, 0x1d1(%r14)
jmp 0x23013
leaq 0x530(%r14), %rdi
movq %r12, %rdx
callq 0x202ae
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 0x1463d(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x3d8(%r14), %rdi
leaq 0x28(%rsp), %rsi
callq 0xbcf4
leaq 0x560(%r14), %r15
movq 0x550(%r14), %rsi
cmpq 0x558(%r14), %rsi
je 0x22e24
movl 0x560(%r14), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x550(%r14)
jmp 0x22e33
leaq 0x548(%r14), %rdi
movq %r15, %rdx
callq 0x202ae
movb $0x1, 0x1d1(%r14)
movq 0x20(%r13), %rax
movq 0x8(%rax), %rax
testq %rax, %rax
je 0x22f6b
movq %rax, %rcx
movq 0x10(%rax), %rax
testq %rax, %rax
jne 0x22e4c
movq 0x8(%rcx), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1a310
movq 0x20(%r13), %rax
cmpq $0x0, 0x8(%rax)
movb $0x0, 0x1d1(%r14)
je 0x231f0
cmpb $0x0, 0x21b(%r14)
jne 0x231f0
movslq 0x310(%r14), %rax
cmpb $0x66, 0x342(%rax,%r14)
jne 0x23155
movq %rbx, %rdi
callq 0x7180
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %rax, %rdi
callq 0x73a0
movq %rax, %rbp
leaq 0x14550(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x14da2(%rip), %rsi     # 0x37c7c
movl $0xb, %edx
movq %rbp, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
movq %rax, %rbp
leaq 0x147bc(%rip), %rsi     # 0x376b5
movl $0xa, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%r14), %esi
incl %esi
movq %rbp, %rdi
callq 0x75c0
leaq 0x147a2(%rip), %rsi     # 0x376c0
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
leaq 0x146b8(%rip), %rsi     # 0x375f2
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
movq %rax, %rbp
leaq 0x1478b(%rip), %rsi     # 0x376e4
movl $0x6, %edx
movq %rax, %rdi
callq 0x73a0
jmp 0x231c2
movb $0x0, 0x1d1(%r14)
jmp 0x231f0
movq %rbx, %rdi
callq 0x7180
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %rax, %rdi
callq 0x73a0
movq %rax, %r12
leaq 0x1447a(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x14c94(%rip), %rsi     # 0x37c44
movl $0x6, %edx
movq %r12, %rdi
callq 0x73a0
movl 0x310(%r14), %esi
incl %esi
movq %r12, %rdi
callq 0x75c0
movq %rax, %r12
leaq 0x146a3(%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, %rdi
callq 0x7180
leaq 0x145ec(%rip), %rsi     # 0x375f2
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x4b8(%r14), %rdi
leaq 0x8(%rsp), %rsi
callq 0xbcf4
leaq 0x528(%r14), %r12
movq 0x538(%r14), %rsi
cmpq 0x540(%r14), %rsi
je 0x23051
movl 0x528(%r14), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x538(%r14)
jmp 0x23060
leaq 0x530(%r14), %rdi
movq %r12, %rdx
callq 0x202ae
movq 0x10(%r13), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x21854
cmpb $0x0, 0x21b(%r14)
jne 0x230bb
leaq 0x14600(%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 0x14544(%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 0x230df
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 0x23103
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 0x142d3(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
jmp 0x2331a
movq %rbx, %rdi
callq 0x7180
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %rax, %rdi
callq 0x73a0
movq %rax, %rbp
leaq 0x1429d(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x14ab7(%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 0x144c6(%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 0x1440f(%rip), %rsi     # 0x375f2
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
movq 0x8(%r13), %rax
movq %rax, 0x3f8(%r14)
movq 0x10(%r13), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x21854
movb $0x1, 0x1d1(%r14)
movq 0x8(%r13), %rax
movq %rax, %rcx
movq 0x10(%rax), %rax
testq %rax, %rax
jne 0x23216
movq 0x8(%rcx), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1a310
movb $0x0, 0x1d1(%r14)
cmpb $0x0, 0x21b(%r14)
jne 0x23285
leaq 0x14436(%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 0x1437a(%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 0x232a9
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 0x232cd
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 0x14109(%rip), %rsi     # 0x37416
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
decl (%r12)
decl (%r15)
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x23334
callq 0x72e0
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2334a
callq 0x72e0
leaq 0x58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2335d
callq 0x72e0
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x23370
callq 0x72e0
leaq 0xb8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x23386
callq 0x72e0
leaq 0xd8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2339c
callq 0x72e0
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x233af
callq 0x72e0
addq $0xe8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0x233f5
movq %rax, %rbx
jmp 0x2340b
movq %rax, %rbx
jmp 0x2341e
movq %rax, %rbx
jmp 0x23431
movq %rax, %rbx
jmp 0x23447
movq %rax, %rbx
jmp 0x2345d
movq %rax, %rbx
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x233f5
callq 0x72e0
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2340b
callq 0x72e0
leaq 0x58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2341e
callq 0x72e0
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x23431
callq 0x72e0
leaq 0xb8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x23447
callq 0x72e0
leaq 0xd8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2345d
callq 0x72e0
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x23470
callq 0x72e0
movq %rbx, %rdi
callq 0x75f0