// File: /workspace/github_cpp_makefile_star2_O2/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, %r15
movq %rsi, %rbx
movq %rdi, %r12
leaq 0x48(%rsp), %r14
movq %r14, %rdi
movq %rdx, %rsi
callq 0xda27
leaq 0x12d95(%rip), %rsi     # 0x2dc66
leaq 0xc8(%rsp), %rdi
movq %r14, %rdx
callq 0xdaa7
leaq 0x12d85(%rip), %rsi     # 0x2dc6d
leaq 0xa8(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0xdaa7
leaq 0x12778(%rip), %rsi     # 0x2d679
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0xdaa7
leaq 0x12d5a(%rip), %rsi     # 0x2dc71
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0xdaa7
leaq 0x12d49(%rip), %rsi     # 0x2dc76
leaq 0x88(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0xdaa7
leaq 0x12d37(%rip), %rsi     # 0x2dc7d
leaq 0x28(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0xdaa7
movq 0x28(%r12), %rdi
testq %rdi, %rdi
je 0x1ba74
leaq 0x12506(%rip), %rsi     # 0x2d470
callq 0x820e
testb %al, %al
je 0x1b0cf
cmpq $0x0, 0x8(%r12)
je 0x1b0cf
cmpq $0x0, 0x10(%r12)
je 0x1b0cf
incl 0x528(%r15)
incl 0x560(%r15)
movq %rbx, %rdi
callq 0x7190
leaq 0x88(%rsp), %rsi
movq %rax, %rdi
callq 0x72d0
leaq 0x1243a(%rip), %rsi     # 0x2d3f6
movq %rax, %rdi
callq 0x7310
leaq 0x3d8(%r15), %rbp
leaq 0x28(%rsp), %rsi
movq %rbp, %rdi
callq 0xab3c
leaq 0x560(%r15), %rsi
leaq 0x548(%r15), %rdi
movq %rsi, (%rsp)
callq 0xfa9e
movb $0x1, 0x1d1(%r15)
movq 0x8(%r12), %rdi
movq %rdi, 0x3f8(%r15)
movq %rbx, %rsi
movq %r15, %rdx
callq 0xe864
movb $0x0, 0x1d1(%r15)
cmpb $0x0, 0x21b(%r15)
jne 0x1b67b
movslq 0x310(%r15), %rax
cmpb $0x66, 0x342(%rax,%r15)
jne 0x1b604
movq %rbx, %rdi
callq 0x7190
leaq 0x28(%rsp), %rsi
movq %rax, %rdi
callq 0x72d0
leaq 0x123a0(%rip), %rsi     # 0x2d3f6
movq %rax, %rdi
callq 0x7310
leaq 0x12c21(%rip), %rsi     # 0x2dc86
movq %rax, %rdi
callq 0x7310
movq %rbx, %rdi
callq 0x7190
leaq 0x12643(%rip), %rsi     # 0x2d6bf
movq %rax, %rdi
callq 0x7310
movl 0x310(%r15), %esi
incl %esi
movq %rax, %rdi
callq 0x7590
leaq 0x1262e(%rip), %rsi     # 0x2d6ca
movq %rax, %rdi
callq 0x7310
movq %rbx, %rdi
callq 0x7190
leaq 0x12549(%rip), %rsi     # 0x2d5fc
movq %rax, %rdi
callq 0x7310
movq %rbx, %rdi
callq 0x7190
leaq 0x12624(%rip), %rsi     # 0x2d6ee
jmp 0x1b64f
movq 0x28(%r12), %rdi
testq %rdi, %rdi
je 0x1ba74
leaq 0x12bae(%rip), %rsi     # 0x2dc92
callq 0x820e
testb %al, %al
je 0x1b290
cmpq $0x0, 0x8(%r12)
je 0x1b290
cmpq $0x0, 0x10(%r12)
je 0x1b290
incl 0x560(%r15)
incl 0x528(%r15)
movq %rbx, %rdi
callq 0x7190
leaq 0xa8(%rsp), %rsi
movq %rax, %rdi
callq 0x72d0
leaq 0x122c0(%rip), %rsi     # 0x2d3f6
movq %rax, %rdi
callq 0x7310
leaq 0x3d8(%r15), %rbp
leaq 0x28(%rsp), %rsi
movq %rbp, %rdi
callq 0xab3c
leaq 0x560(%r15), %rsi
leaq 0x548(%r15), %rdi
movq %rsi, (%rsp)
callq 0xfa9e
leaq 0x4b8(%r15), %r14
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0xab3c
leaq 0x528(%r15), %r13
leaq 0x530(%r15), %rdi
movq %r13, %rsi
callq 0xfa9e
movq 0x10(%r12), %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1a914
movb $0x1, 0x1d1(%r15)
movq 0x8(%r12), %rax
movq %rax, 0x3f8(%r15)
movq %rbx, %rdi
callq 0x7190
leaq 0x28(%rsp), %rsi
movq %rax, %rdi
callq 0x72d0
leaq 0x12223(%rip), %rsi     # 0x2d3f6
movq %rax, %rdi
callq 0x7310
movq 0x8(%r12), %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0xe864
movb $0x0, 0x1d1(%r15)
cmpb $0x0, 0x21b(%r15)
jne 0x1b80a
movslq 0x310(%r15), %rax
cmpb $0x66, 0x342(%rax,%r15)
jne 0x1b755
movq %rbx, %rdi
callq 0x7190
leaq 0x12a60(%rip), %rsi     # 0x2dc86
movq %rax, %rdi
callq 0x7310
movq %rbx, %rdi
callq 0x7190
leaq 0x12482(%rip), %rsi     # 0x2d6bf
movq %rax, %rdi
callq 0x7310
movl 0x310(%r15), %esi
incl %esi
movq %rax, %rdi
callq 0x7590
leaq 0x1246d(%rip), %rsi     # 0x2d6ca
movq %rax, %rdi
callq 0x7310
movq %rbx, %rdi
callq 0x7190
leaq 0x12388(%rip), %rsi     # 0x2d5fc
movq %rax, %rdi
callq 0x7310
movq %rbx, %rdi
callq 0x7190
leaq 0x12463(%rip), %rsi     # 0x2d6ee
jmp 0x1b784
movq 0x28(%r12), %rdi
testq %rdi, %rdi
je 0x1ba74
leaq 0x129f0(%rip), %rsi     # 0x2dc95
callq 0x820e
testb %al, %al
je 0x1b435
movq 0x18(%r12), %rdi
testq %rdi, %rdi
je 0x1b435
cmpq $0x0, 0x20(%r12)
je 0x1b435
cmpq $0x0, 0x8(%r12)
jne 0x1b435
cmpq $0x0, 0x10(%r12)
je 0x1b435
incl 0x560(%r15)
incl 0x528(%r15)
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1ae7e
movq %rbx, %rdi
callq 0x7190
leaq 0x68(%rsp), %rsi
movq %rax, %rdi
callq 0x72d0
leaq 0x120dd(%rip), %rsi     # 0x2d3f6
movq %rax, %rdi
callq 0x7310
leaq 0x3d8(%r15), %rbp
leaq 0x28(%rsp), %rsi
movq %rbp, %rdi
callq 0xab3c
leaq 0x560(%r15), %rsi
leaq 0x548(%r15), %rdi
movq %rsi, (%rsp)
callq 0xfa9e
movb $0x1, 0x1d1(%r15)
movq 0x20(%r12), %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1ae7e
movb $0x0, 0x1d1(%r15)
movq 0x20(%r12), %rax
cmpq $0x0, 0x8(%rax)
je 0x1b896
cmpb $0x0, 0x21b(%r15)
jne 0x1b896
movslq 0x310(%r15), %rax
cmpb $0x66, 0x342(%rax,%r15)
jne 0x1b81f
movq %rbx, %rdi
callq 0x7190
leaq 0x28(%rsp), %rsi
movq %rax, %rdi
callq 0x72d0
leaq 0x1203a(%rip), %rsi     # 0x2d3f6
movq %rax, %rdi
callq 0x7310
leaq 0x128bb(%rip), %rsi     # 0x2dc86
movq %rax, %rdi
callq 0x7310
movq %rbx, %rdi
callq 0x7190
leaq 0x122dd(%rip), %rsi     # 0x2d6bf
movq %rax, %rdi
callq 0x7310
movl 0x310(%r15), %esi
incl %esi
movq %rax, %rdi
callq 0x7590
leaq 0x122c8(%rip), %rsi     # 0x2d6ca
movq %rax, %rdi
callq 0x7310
movq %rbx, %rdi
callq 0x7190
leaq 0x121e3(%rip), %rsi     # 0x2d5fc
movq %rax, %rdi
callq 0x7310
movq %rbx, %rdi
callq 0x7190
leaq 0x122be(%rip), %rsi     # 0x2d6ee
jmp 0x1b86a
movq 0x28(%r12), %rdi
testq %rdi, %rdi
je 0x1ba74
leaq 0x1284b(%rip), %rsi     # 0x2dc95
callq 0x820e
testb %al, %al
je 0x1ba74
movq 0x18(%r12), %rdi
testq %rdi, %rdi
je 0x1ba74
cmpq $0x0, 0x20(%r12)
je 0x1ba74
cmpq $0x0, 0x8(%r12)
je 0x1ba74
cmpq $0x0, 0x10(%r12)
je 0x1ba74
incl 0x560(%r15)
incl 0x528(%r15)
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1ae7e
leaq 0x4b8(%r15), %r14
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0xab3c
leaq 0x528(%r15), %r13
leaq 0x530(%r15), %rdi
movq %r13, %rsi
callq 0xfa9e
movq %rbx, %rdi
callq 0x7190
leaq 0x68(%rsp), %rsi
movq %rax, %rdi
callq 0x72d0
leaq 0x11f0e(%rip), %rsi     # 0x2d3f6
movq %rax, %rdi
callq 0x7310
leaq 0x3d8(%r15), %rbp
leaq 0x28(%rsp), %rsi
movq %rbp, %rdi
callq 0xab3c
leaq 0x560(%r15), %rsi
leaq 0x548(%r15), %rdi
movq %rsi, (%rsp)
callq 0xfa9e
movb $0x1, 0x1d1(%r15)
movq 0x20(%r12), %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1ae7e
movb $0x0, 0x1d1(%r15)
movq 0x20(%r12), %rax
cmpq $0x0, 0x8(%rax)
je 0x1b9bd
cmpb $0x0, 0x21b(%r15)
jne 0x1b9bd
movslq 0x310(%r15), %rax
cmpb $0x66, 0x342(%rax,%r15)
jne 0x1b946
movq %rbx, %rdi
callq 0x7190
leaq 0x28(%rsp), %rsi
movq %rax, %rdi
callq 0x72d0
leaq 0x11e6b(%rip), %rsi     # 0x2d3f6
movq %rax, %rdi
callq 0x7310
leaq 0x126ec(%rip), %rsi     # 0x2dc86
movq %rax, %rdi
callq 0x7310
movq %rbx, %rdi
callq 0x7190
leaq 0x1210e(%rip), %rsi     # 0x2d6bf
movq %rax, %rdi
callq 0x7310
movl 0x310(%r15), %esi
incl %esi
movq %rax, %rdi
callq 0x7590
leaq 0x120f9(%rip), %rsi     # 0x2d6ca
movq %rax, %rdi
callq 0x7310
movq %rbx, %rdi
callq 0x7190
leaq 0x12014(%rip), %rsi     # 0x2d5fc
movq %rax, %rdi
callq 0x7310
movq %rbx, %rdi
callq 0x7190
leaq 0x120ef(%rip), %rsi     # 0x2d6ee
jmp 0x1b991
movq %rbx, %rdi
callq 0x7190
leaq 0x28(%rsp), %rsi
movq %rax, %rdi
callq 0x72d0
leaq 0x11dd6(%rip), %rsi     # 0x2d3f6
movq %rax, %rdi
callq 0x7310
leaq 0x1261f(%rip), %rsi     # 0x2dc4e
movq %rax, %rdi
callq 0x7310
movl 0x310(%r15), %esi
incl %esi
movq %rax, %rdi
callq 0x7590
leaq 0x12036(%rip), %rsi     # 0x2d685
movq %rax, %rdi
callq 0x7310
leaq 0x8(%rsp), %rsi
movq %rax, %rdi
callq 0x72d0
movq %rbx, %rdi
callq 0x7190
leaq 0x11f89(%rip), %rsi     # 0x2d5fc
movq %rax, %rdi
callq 0x7310
movq %rbx, %rdi
callq 0x7190
leaq 0xc8(%rsp), %rsi
movq %rax, %rdi
callq 0x72d0
leaq 0x11d5c(%rip), %rsi     # 0x2d3f6
movq %rax, %rdi
callq 0x7310
leaq 0x4b8(%r15), %r14
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0xab3c
leaq 0x528(%r15), %r13
leaq 0x530(%r15), %rdi
movq %r13, %rsi
callq 0xfa9e
movq 0x10(%r12), %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1a914
cmpb $0x0, 0x21b(%r15)
jne 0x1b71c
leaq 0x11f9d(%rip), %rsi     # 0x2d68a
movq %rbx, %rdi
callq 0x7310
leaq 0x88(%rsp), %rsi
movq %rax, %rdi
callq 0x72d0
movq %rbx, %rdi
callq 0x7190
leaq 0x11ee8(%rip), %rsi     # 0x2d5fc
movq %rax, %rdi
callq 0x7310
movq %rbp, %rdi
callq 0xcbde
movq %r14, %rdi
callq 0xcbde
movq %rbx, %rdi
callq 0x7190
leaq 0x8(%rsp), %rsi
movq %rax, %rdi
callq 0x72d0
leaq 0x11cae(%rip), %rsi     # 0x2d3f6
movq %rax, %rdi
callq 0x7310
jmp 0x1ba6a
movq %rbx, %rdi
callq 0x7190
leaq 0x124ea(%rip), %rsi     # 0x2dc4e
movq %rax, %rdi
callq 0x7310
movl 0x310(%r15), %esi
incl %esi
movq %rax, %rdi
callq 0x7590
leaq 0x11f01(%rip), %rsi     # 0x2d685
movq %rax, %rdi
callq 0x7310
leaq 0x8(%rsp), %rsi
movq %rax, %rdi
callq 0x72d0
movq %rbx, %rdi
callq 0x7190
leaq 0x11e54(%rip), %rsi     # 0x2d5fc
movq %rax, %rdi
callq 0x7310
leaq 0x11ed3(%rip), %rsi     # 0x2d68a
movq %rbx, %rdi
callq 0x7310
leaq 0xa8(%rsp), %rsi
movq %rax, %rdi
callq 0x72d0
movq %rbx, %rdi
callq 0x7190
leaq 0x11e1e(%rip), %rsi     # 0x2d5fc
movq %rax, %rdi
callq 0x7310
movq %rbx, %rdi
callq 0x7190
leaq 0x8(%rsp), %rsi
movq %rax, %rdi
callq 0x72d0
leaq 0x11bf4(%rip), %rsi     # 0x2d3f6
movq %rax, %rdi
callq 0x7310
movq %rbp, %rdi
callq 0xcbde
movq %r14, %rdi
callq 0xcbde
jmp 0x1ba6a
movq %rbx, %rdi
callq 0x7190
leaq 0x28(%rsp), %rsi
movq %rax, %rdi
callq 0x72d0
leaq 0x11bbb(%rip), %rsi     # 0x2d3f6
movq %rax, %rdi
callq 0x7310
leaq 0x12404(%rip), %rsi     # 0x2dc4e
movq %rax, %rdi
callq 0x7310
movl 0x310(%r15), %esi
incl %esi
movq %rax, %rdi
callq 0x7590
leaq 0x11e1b(%rip), %rsi     # 0x2d685
movq %rax, %rdi
callq 0x7310
leaq 0x8(%rsp), %rsi
movq %rax, %rdi
callq 0x72d0
movq %rbx, %rdi
callq 0x7190
leaq 0x11d6e(%rip), %rsi     # 0x2d5fc
movq %rax, %rdi
callq 0x7310
leaq 0x4b8(%r15), %r14
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0xab3c
leaq 0x528(%r15), %r13
leaq 0x530(%r15), %rdi
movq %r13, %rsi
callq 0xfa9e
movq 0x10(%r12), %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1a914
cmpb $0x0, 0x21b(%r15)
jne 0x1b90d
leaq 0x11da9(%rip), %rsi     # 0x2d68a
movq %rbx, %rdi
callq 0x7310
leaq 0x68(%rsp), %rsi
movq %rax, %rdi
callq 0x72d0
movq %rbx, %rdi
callq 0x7190
leaq 0x11cf7(%rip), %rsi     # 0x2d5fc
movq %rax, %rdi
callq 0x7310
movq %rbp, %rdi
callq 0xcbde
movq %r14, %rdi
callq 0xcbde
movq %rbx, %rdi
callq 0x7190
leaq 0x8(%rsp), %rsi
movq %rax, %rdi
callq 0x72d0
leaq 0x11abd(%rip), %rsi     # 0x2d3f6
movq %rax, %rdi
callq 0x7310
jmp 0x1ba6a
movq %rbx, %rdi
callq 0x7190
leaq 0x28(%rsp), %rsi
movq %rax, %rdi
callq 0x72d0
leaq 0x11a94(%rip), %rsi     # 0x2d3f6
movq %rax, %rdi
callq 0x7310
leaq 0x122dd(%rip), %rsi     # 0x2dc4e
movq %rax, %rdi
callq 0x7310
movl 0x310(%r15), %esi
incl %esi
movq %rax, %rdi
callq 0x7590
leaq 0x11cf4(%rip), %rsi     # 0x2d685
movq %rax, %rdi
callq 0x7310
leaq 0x8(%rsp), %rsi
movq %rax, %rdi
callq 0x72d0
movq %rbx, %rdi
callq 0x7190
leaq 0x11c47(%rip), %rsi     # 0x2d5fc
movq %rax, %rdi
callq 0x7310
movq 0x8(%r12), %rax
movq %rax, 0x3f8(%r15)
movq 0x10(%r12), %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1a914
movb $0x1, 0x1d1(%r15)
movq 0x8(%r12), %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0xe864
movb $0x0, 0x1d1(%r15)
cmpb $0x0, 0x21b(%r15)
jne 0x1ba36
leaq 0x11c80(%rip), %rsi     # 0x2d68a
movq %rbx, %rdi
callq 0x7310
leaq 0x68(%rsp), %rsi
movq %rax, %rdi
callq 0x72d0
movq %rbx, %rdi
callq 0x7190
leaq 0x11bce(%rip), %rsi     # 0x2d5fc
movq %rax, %rdi
callq 0x7310
movq %rbp, %rdi
callq 0xcbde
movq %r14, %rdi
callq 0xcbde
movq %rbx, %rdi
callq 0x7190
leaq 0x8(%rsp), %rsi
movq %rax, %rdi
callq 0x72d0
leaq 0x11994(%rip), %rsi     # 0x2d3f6
movq %rax, %rdi
callq 0x7310
decl (%r13)
movq (%rsp), %rax
decl (%rax)
leaq 0x28(%rsp), %rdi
callq 0x7170
leaq 0x88(%rsp), %rdi
callq 0x7170
leaq 0x68(%rsp), %rdi
callq 0x7170
leaq 0x8(%rsp), %rdi
callq 0x7170
leaq 0xa8(%rsp), %rdi
callq 0x7170
leaq 0xc8(%rsp), %rdi
callq 0x7170
leaq 0x48(%rsp), %rdi
callq 0x7170
addq $0xe8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0x1bb00
movq %rax, %rbx
jmp 0x1bb0d
movq %rax, %rbx
jmp 0x1bb17
movq %rax, %rbx
jmp 0x1bb21
movq %rax, %rbx
jmp 0x1bb2e
movq %rax, %rbx
jmp 0x1bb3b
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x7170
leaq 0x88(%rsp), %rdi
callq 0x7170
leaq 0x68(%rsp), %rdi
callq 0x7170
leaq 0x8(%rsp), %rdi
callq 0x7170
leaq 0xa8(%rsp), %rdi
callq 0x7170
leaq 0xc8(%rsp), %rdi
callq 0x7170
leaq 0x48(%rsp), %rdi
callq 0x7170
movq %rbx, %rdi
callq 0x75c0
nop