// File: gioannides[P]Language_Processors/src/../include/ast/ast_node.hpp
// Function: SelectionStatement::render_asm(std::basic_ofstream<char, std::char_traits<char>>&, Context&)
inline void SelectionStatement::render_asm(std::ofstream& file, Context& contxt) {
		
			std::string label_id = labelGen(contxt);
			std::string ELSE = "$ELSE" + label_id;
			std::string IF = "$IF" + label_id;
			std::string END = "$END" + label_id;
			std::string SWITCH = "$SWITCH" + label_id;
			

			if( SELECTIVE_IF != NULL && SELECTIVE_SWITCH == NULL && SELECTIVE_ELSE == NULL && AssignmentExpressionPtr != NULL && StatementPtr != NULL && StatementPtr2 == NULL) {
				
				contxt.rhs_of_expression = true;
				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 << std::endl << IF << ":";
				StatementPtr->render_asm(file,contxt);
			        file << std::endl << END << ":"; 
			}
			
			
			else if( SELECTIVE_IF != NULL && SELECTIVE_SWITCH == NULL && SELECTIVE_ELSE != NULL && AssignmentExpressionPtr != NULL && StatementPtr != NULL && StatementPtr2 != NULL) {
				contxt.rhs_of_expression = true;
				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" << ELSE;
						file << std::endl << "\tnop";
					}
					else{
						file << std::endl << "\tbeq\t$" << contxt.Regs+1 <<",$0," << ELSE;
						file << std::endl << "\tnop";
					}
				}
				file << std::endl << IF << ":";
				StatementPtr->render_asm(file,contxt);
				if(!contxt.reading)	{
					file << "\n\tb " << END;
					file << std::endl << "\tnop";
				}
				file << std::endl << ELSE << ":";
				StatementPtr2->render_asm(file,contxt);
				file << std::endl << END << ":"; 
			}
						

			else if( SELECTIVE_IF == NULL && SELECTIVE_SWITCH != NULL && SELECTIVE_ELSE == NULL && AssignmentExpressionPtr != NULL && StatementPtr != NULL && StatementPtr2 == NULL) {					
					
				
							
					
					contxt.SwitchControl++;
					contxt.BreakCounter++;
					contxt.LastScope.push_back(END);

				if( contxt.SwitchControl == 1 || contxt.inCase){

					
					
					contxt.rhs_of_expression = true;
					AssignmentExpressionPtr->render_asm(file,contxt);
					contxt.rhs_of_expression = false;			

					contxt.BreakTracker.push_back(contxt.BreakCounter);
					contxt.Regs++;
					contxt.ReadingSwitch = true;
					
					StatementPtr->render_asm(file,contxt);
					if( contxt.LastScope.size() != 0 && contxt.BreakTracker.size() != 0 && contxt.ReadingSwitch){
						file << std::endl << "\tb\t" << contxt.LastScope[contxt.LastScope.size()-1];		//The label of the loopend
						//contxt.BreakTracker.pop_back();
						file << std::endl << "\tnop";
					}
					contxt.ReadingSwitch = false;
					contxt.Regs--;			

					
					
					
					
					contxt.EndSwitchLoop.push_back(SWITCH);
					contxt.Regs++;
					StatementPtr->render_asm(file,contxt);
					contxt.Regs--;
					
					
					
					
				}
				

				
				contxt.LastScope.pop_back();
				file << std::endl << END << ":";
			
					
					
				if(contxt.SwitchControl!=0){
					contxt.SwitchControl--;
				}
					contxt.BreakCounter--;
					
				
					
			}
			//if(contxt.LastScope.size() > 0 && !contxt.ReadingSwitch && contxt.VectorSize >= contxt.Cases.size() && contxt.VectorSize != 0){
			//	file << std::endl << contxt.LastScope[contxt.LastScope.size()-1] << ":";
			//}
			//contxt.inCase = false;
				
		
		}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x240, %rsp            # imm = 0x240
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xd8(%rbp)
movq -0x18(%rbp), %rsi
leaq -0x38(%rbp), %rdi
movq %rdi, -0xd0(%rbp)
callq 0x11f70
movq -0xd0(%rbp), %rdx
leaq 0x35580(%rip), %rsi     # 0x64424
leaq -0x58(%rbp), %rdi
callq 0x12040
jmp 0x2eeaf
leaq 0x35574(%rip), %rsi     # 0x6442a
leaq -0x88(%rbp), %rdi
leaq -0x38(%rbp), %rdx
callq 0x12040
jmp 0x2eec8
leaq 0x3555f(%rip), %rsi     # 0x6442e
leaq -0xa8(%rbp), %rdi
leaq -0x38(%rbp), %rdx
callq 0x12040
jmp 0x2eee1
leaq 0x35bd1(%rip), %rsi     # 0x64ab9
leaq -0xc8(%rbp), %rdi
leaq -0x38(%rbp), %rdx
callq 0x12040
jmp 0x2eefa
movq -0xd8(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x2f2dd
movq -0xd8(%rbp), %rax
cmpq $0x0, 0x30(%rax)
jne 0x2f2dd
movq -0xd8(%rbp), %rax
cmpq $0x0, 0x28(%rax)
jne 0x2f2dd
movq -0xd8(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x2f2dd
movq -0xd8(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x2f2dd
movq -0xd8(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jne 0x2f2dd
movq -0xd8(%rbp), %rax
movq -0x18(%rbp), %rcx
movb $0x1, 0x1d1(%rcx)
movq 0x8(%rax), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x13a40
jmp 0x2ef8b
movq -0x18(%rbp), %rax
movb $0x0, 0x1d1(%rax)
movq -0x18(%rbp), %rax
testb $0x1, 0x21b(%rax)
jne 0x2f22a
movq -0x18(%rbp), %rax
movq -0x18(%rbp), %rcx
movl 0x310(%rcx), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movsbl 0x341(%rax,%rcx), %eax
cmpl $0x66, %eax
jne 0x2f171
movq -0x10(%rbp), %rdi
movq 0x58f99(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0xe0(%rbp)
jmp 0x2efe5
movq -0xe0(%rbp), %rdi
leaq 0x35a48(%rip), %rsi     # 0x64a3b
callq 0x8400
jmp 0x2effa
movq -0x10(%rbp), %rdi
movq 0x58f6b(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0xe8(%rbp)
jmp 0x2f013
movq -0xe8(%rbp), %rdi
leaq 0x35453(%rip), %rsi     # 0x64474
callq 0x8400
movq %rax, -0xf0(%rbp)
jmp 0x2f02f
movq -0xf0(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x310(%rax), %esi
incl %esi
callq 0x8730
movq %rax, -0xf8(%rbp)
jmp 0x2f050
movq -0xf8(%rbp), %rdi
leaq 0x35421(%rip), %rsi     # 0x6447f
callq 0x8400
jmp 0x2f065
movq -0x10(%rbp), %rdi
movq 0x58f00(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0x100(%rbp)
jmp 0x2f07e
movq -0x100(%rbp), %rdi
leaq 0x35325(%rip), %rsi     # 0x643b1
callq 0x8400
jmp 0x2f093
movq -0x10(%rbp), %rdi
movq 0x58ed2(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0x108(%rbp)
jmp 0x2f0ac
movq -0x108(%rbp), %rdi
leaq 0x353e9(%rip), %rsi     # 0x644a3
callq 0x8400
movq %rax, -0x110(%rbp)
jmp 0x2f0c8
movq -0x110(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x83c0
jmp 0x2f0dd
movq -0x10(%rbp), %rdi
movq 0x58e88(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0x118(%rbp)
jmp 0x2f0f6
movq -0x118(%rbp), %rdi
leaq 0x352ad(%rip), %rsi     # 0x643b1
callq 0x8400
jmp 0x2f10b
jmp 0x2f228
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x2fab9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x2fab0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x2faa4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x2fa98
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x8280
jmp 0x2fa98
movq -0x10(%rbp), %rdi
movq 0x58df4(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0x120(%rbp)
jmp 0x2f18a
movq -0x120(%rbp), %rdi
leaq 0x3586b(%rip), %rsi     # 0x64a03
callq 0x8400
movq %rax, -0x128(%rbp)
jmp 0x2f1a6
movq -0x128(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x310(%rax), %esi
incl %esi
callq 0x8730
movq %rax, -0x130(%rbp)
jmp 0x2f1c7
movq -0x130(%rbp), %rdi
leaq 0x35265(%rip), %rsi     # 0x6443a
callq 0x8400
movq %rax, -0x138(%rbp)
jmp 0x2f1e3
movq -0x138(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x83c0
jmp 0x2f1f8
movq -0x10(%rbp), %rdi
movq 0x58d6d(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0x140(%rbp)
jmp 0x2f211
movq -0x140(%rbp), %rdi
leaq 0x35192(%rip), %rsi     # 0x643b1
callq 0x8400
jmp 0x2f226
jmp 0x2f228
jmp 0x2f22a
movq -0x10(%rbp), %rdi
movq 0x58d3b(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0x148(%rbp)
jmp 0x2f243
movq -0x148(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x83c0
movq %rax, -0x150(%rbp)
jmp 0x2f25f
movq -0x150(%rbp), %rdi
leaq 0x34f66(%rip), %rsi     # 0x641d3
callq 0x8400
jmp 0x2f274
movq -0xd8(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x2c110
jmp 0x2f28e
movq -0x10(%rbp), %rdi
movq 0x58cd7(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0x158(%rbp)
jmp 0x2f2a7
movq -0x158(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x83c0
movq %rax, -0x160(%rbp)
jmp 0x2f2c3
movq -0x160(%rbp), %rdi
leaq 0x34f02(%rip), %rsi     # 0x641d3
callq 0x8400
jmp 0x2f2d8
jmp 0x2fa59
movq -0xd8(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x2f725
movq -0xd8(%rbp), %rax
cmpq $0x0, 0x30(%rax)
jne 0x2f725
movq -0xd8(%rbp), %rax
cmpq $0x0, 0x28(%rax)
je 0x2f725
movq -0xd8(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x2f725
movq -0xd8(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x2f725
movq -0xd8(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x2f725
movq -0xd8(%rbp), %rax
movq -0x18(%rbp), %rcx
movb $0x1, 0x1d1(%rcx)
movq 0x8(%rax), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x13a40
jmp 0x2f36e
movq -0x18(%rbp), %rax
movb $0x0, 0x1d1(%rax)
movq -0x18(%rbp), %rax
testb $0x1, 0x21b(%rax)
jne 0x2f5a6
movq -0x18(%rbp), %rax
movq -0x18(%rbp), %rcx
movl 0x310(%rcx), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movsbl 0x341(%rax,%rcx), %eax
cmpl $0x66, %eax
jne 0x2f4f0
movq -0x10(%rbp), %rdi
movq 0x58bb6(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0x168(%rbp)
jmp 0x2f3c8
movq -0x168(%rbp), %rdi
leaq 0x35665(%rip), %rsi     # 0x64a3b
callq 0x8400
jmp 0x2f3dd
movq -0x10(%rbp), %rdi
movq 0x58b88(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0x170(%rbp)
jmp 0x2f3f6
movq -0x170(%rbp), %rdi
leaq 0x35070(%rip), %rsi     # 0x64474
callq 0x8400
movq %rax, -0x178(%rbp)
jmp 0x2f412
movq -0x178(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x310(%rax), %esi
incl %esi
callq 0x8730
movq %rax, -0x180(%rbp)
jmp 0x2f433
movq -0x180(%rbp), %rdi
leaq 0x3503e(%rip), %rsi     # 0x6447f
callq 0x8400
jmp 0x2f448
movq -0x10(%rbp), %rdi
movq 0x58b1d(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0x188(%rbp)
jmp 0x2f461
movq -0x188(%rbp), %rdi
leaq 0x34f42(%rip), %rsi     # 0x643b1
callq 0x8400
jmp 0x2f476
movq -0x10(%rbp), %rdi
movq 0x58aef(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0x190(%rbp)
jmp 0x2f48f
movq -0x190(%rbp), %rdi
leaq 0x35006(%rip), %rsi     # 0x644a3
callq 0x8400
movq %rax, -0x198(%rbp)
jmp 0x2f4ab
movq -0x198(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x83c0
jmp 0x2f4bd
movq -0x10(%rbp), %rdi
movq 0x58aa8(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0x1a0(%rbp)
jmp 0x2f4d6
movq -0x1a0(%rbp), %rdi
leaq 0x34ecd(%rip), %rsi     # 0x643b1
callq 0x8400
jmp 0x2f4eb
jmp 0x2f5a4
movq -0x10(%rbp), %rdi
movq 0x58a75(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0x1a8(%rbp)
jmp 0x2f509
movq -0x1a8(%rbp), %rdi
leaq 0x354ec(%rip), %rsi     # 0x64a03
callq 0x8400
movq %rax, -0x1b0(%rbp)
jmp 0x2f525
movq -0x1b0(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x310(%rax), %esi
incl %esi
callq 0x8730
movq %rax, -0x1b8(%rbp)
jmp 0x2f546
movq -0x1b8(%rbp), %rdi
leaq 0x34ee6(%rip), %rsi     # 0x6443a
callq 0x8400
movq %rax, -0x1c0(%rbp)
jmp 0x2f562
movq -0x1c0(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x83c0
jmp 0x2f574
movq -0x10(%rbp), %rdi
movq 0x589f1(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0x1c8(%rbp)
jmp 0x2f58d
movq -0x1c8(%rbp), %rdi
leaq 0x34e16(%rip), %rsi     # 0x643b1
callq 0x8400
jmp 0x2f5a2
jmp 0x2f5a4
jmp 0x2f5a6
movq -0x10(%rbp), %rdi
movq 0x589bf(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0x1d0(%rbp)
jmp 0x2f5bf
movq -0x1d0(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x83c0
movq %rax, -0x1d8(%rbp)
jmp 0x2f5db
movq -0x1d8(%rbp), %rdi
leaq 0x34bea(%rip), %rsi     # 0x641d3
callq 0x8400
jmp 0x2f5f0
movq -0xd8(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x2c110
jmp 0x2f60a
movq -0x18(%rbp), %rax
testb $0x1, 0x21b(%rax)
jne 0x2f675
movq -0x10(%rbp), %rdi
leaq 0x34e1d(%rip), %rsi     # 0x6443f
callq 0x8400
movq %rax, -0x1e0(%rbp)
jmp 0x2f630
movq -0x1e0(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x83c0
jmp 0x2f645
movq -0x10(%rbp), %rdi
movq 0x58920(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0x1e8(%rbp)
jmp 0x2f65e
movq -0x1e8(%rbp), %rdi
leaq 0x34d45(%rip), %rsi     # 0x643b1
callq 0x8400
jmp 0x2f673
jmp 0x2f675
movq -0x10(%rbp), %rdi
movq 0x588f0(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0x1f0(%rbp)
jmp 0x2f68e
movq -0x1f0(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x83c0
movq %rax, -0x1f8(%rbp)
jmp 0x2f6a7
movq -0x1f8(%rbp), %rdi
leaq 0x34b1e(%rip), %rsi     # 0x641d3
callq 0x8400
jmp 0x2f6bc
movq -0xd8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x2c110
jmp 0x2f6d6
movq -0x10(%rbp), %rdi
movq 0x5888f(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0x200(%rbp)
jmp 0x2f6ef
movq -0x200(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x83c0
movq %rax, -0x208(%rbp)
jmp 0x2f70b
movq -0x208(%rbp), %rdi
leaq 0x34aba(%rip), %rsi     # 0x641d3
callq 0x8400
jmp 0x2f720
jmp 0x2fa57
movq -0xd8(%rbp), %rax
cmpq $0x0, 0x20(%rax)
jne 0x2fa55
movq -0xd8(%rbp), %rax
cmpq $0x0, 0x30(%rax)
je 0x2fa55
movq -0xd8(%rbp), %rax
cmpq $0x0, 0x28(%rax)
jne 0x2fa55
movq -0xd8(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x2fa55
movq -0xd8(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x2fa55
movq -0xd8(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jne 0x2fa55
movq -0x18(%rbp), %rax
movl 0x564(%rax), %ecx
incl %ecx
movl %ecx, 0x564(%rax)
movq -0x18(%rbp), %rax
movl 0x528(%rax), %ecx
incl %ecx
movl %ecx, 0x528(%rax)
movq -0x18(%rbp), %rdi
addq $0x4b8, %rdi            # imm = 0x4B8
leaq -0xa8(%rbp), %rsi
callq 0xc2e0
jmp 0x2f7ce
movq -0x18(%rbp), %rax
cmpl $0x1, 0x564(%rax)
je 0x2f7ec
movq -0x18(%rbp), %rax
cmpl $0x0, 0x5a8(%rax)
je 0x2f9c8
movq -0xd8(%rbp), %rax
movq -0x18(%rbp), %rcx
movb $0x1, 0x1d1(%rcx)
movq 0x8(%rax), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x13a40
jmp 0x2f811
movq -0x18(%rbp), %rax
movb $0x0, 0x1d1(%rax)
movq -0x18(%rbp), %rsi
movq %rsi, %rdi
addq $0x530, %rdi            # imm = 0x530
addq $0x528, %rsi            # imm = 0x528
callq 0x15ec0
jmp 0x2f838
movq -0xd8(%rbp), %rax
movq -0x18(%rbp), %rcx
movl 0x310(%rcx), %edx
incl %edx
movl %edx, 0x310(%rcx)
movq -0x18(%rbp), %rcx
movb $0x1, 0x3d1(%rcx)
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x2c110
jmp 0x2f86f
movq -0x18(%rbp), %rdi
addq $0x4b8, %rdi            # imm = 0x4B8
callq 0xbef0
cmpq $0x0, %rax
je 0x2f953
movq -0x18(%rbp), %rdi
addq $0x530, %rdi            # imm = 0x530
callq 0x11a60
cmpq $0x0, %rax
je 0x2f953
movq -0x18(%rbp), %rax
testb $0x1, 0x3d1(%rax)
je 0x2f953
movq -0x10(%rbp), %rdi
movq 0x586b1(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0x210(%rbp)
jmp 0x2f8cd
movq -0x210(%rbp), %rdi
leaq 0x34bb6(%rip), %rsi     # 0x64491
callq 0x8400
movq %rax, -0x218(%rbp)
jmp 0x2f8e9
movq -0x18(%rbp), %rdi
addq $0x4b8, %rdi            # imm = 0x4B8
movq %rdi, -0x220(%rbp)
callq 0xbef0
movq -0x220(%rbp), %rdi
movq %rax, %rsi
decq %rsi
callq 0xbf10
movq -0x218(%rbp), %rdi
movq %rax, %rsi
callq 0x83c0
jmp 0x2f923
movq -0x10(%rbp), %rdi
movq 0x58642(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0x228(%rbp)
jmp 0x2f93c
movq -0x228(%rbp), %rdi
leaq 0x34a67(%rip), %rsi     # 0x643b1
callq 0x8400
jmp 0x2f951
jmp 0x2f953
movq -0x18(%rbp), %rax
movb $0x0, 0x3d1(%rax)
movq -0x18(%rbp), %rax
movl 0x310(%rax), %ecx
decl %ecx
movl %ecx, 0x310(%rax)
movq -0x18(%rbp), %rdi
addq $0x388, %rdi            # imm = 0x388
leaq -0xc8(%rbp), %rsi
callq 0xc2e0
jmp 0x2f989
movq -0xd8(%rbp), %rax
movq -0x18(%rbp), %rcx
movl 0x310(%rcx), %edx
incl %edx
movl %edx, 0x310(%rcx)
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x2c110
jmp 0x2f9b5
movq -0x18(%rbp), %rax
movl 0x310(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x310(%rax)
movq -0x18(%rbp), %rdi
addq $0x4b8, %rdi            # imm = 0x4B8
callq 0xfe00
movq -0x10(%rbp), %rdi
movq 0x5858d(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0x230(%rbp)
jmp 0x2f9f1
movq -0x230(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x83c0
movq %rax, -0x238(%rbp)
jmp 0x2fa0d
movq -0x238(%rbp), %rdi
leaq 0x347b8(%rip), %rsi     # 0x641d3
callq 0x8400
jmp 0x2fa22
movq -0x18(%rbp), %rax
cmpl $0x0, 0x564(%rax)
je 0x2fa42
movq -0x18(%rbp), %rax
movl 0x564(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x564(%rax)
movq -0x18(%rbp), %rax
movl 0x528(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x528(%rax)
jmp 0x2fa57
jmp 0x2fa59
leaq -0xc8(%rbp), %rdi
callq 0x8280
leaq -0xa8(%rbp), %rdi
callq 0x8280
leaq -0x88(%rbp), %rdi
callq 0x8280
leaq -0x58(%rbp), %rdi
callq 0x8280
leaq -0x38(%rbp), %rdi
callq 0x8280
addq $0x240, %rsp            # imm = 0x240
popq %rbp
retq
leaq -0xa8(%rbp), %rdi
callq 0x8280
leaq -0x88(%rbp), %rdi
callq 0x8280
leaq -0x58(%rbp), %rdi
callq 0x8280
leaq -0x38(%rbp), %rdi
callq 0x8280
movq -0x60(%rbp), %rdi
callq 0x8760
nopl (%rax,%rax)