// File: /workspace/github_cpp_makefile_star2_O2/gioannides[P]Language_Processors/src/../include/ast/ast_node.hpp
// Function: JumpStatement::render_asm(std::basic_ofstream<char, std::char_traits<char>>&, Context&)
void render_asm(std::ofstream& file,Context& contxt) {
			if( IDENTIFIER != NULL && JUMP_TYPE != NULL && *JUMP_TYPE == "goto" && AssignmentExpressionPtr == NULL && !contxt.reading) {
				file << std::endl << "\tb\t" << *IDENTIFIER << "_" << contxt.funct_id  << std::endl;
				file << std::endl << "\tnop";
			}

			else if( IDENTIFIER == NULL && JUMP_TYPE != NULL && *JUMP_TYPE == "continue"  && AssignmentExpressionPtr == NULL && !contxt.reading) {

						if( contxt.TestConditionContinue != NULL){
							contxt.rhs_of_expression = true;
							contxt.TestConditionContinue->render_asm(file,contxt);
							contxt.rhs_of_expression = false;
						}
						if(contxt.LoopHeader.size() != 0 && contxt.ContinueTracker.size() != 0){
							file << "\n\tb " << contxt.LoopHeader[contxt.LoopHeader.size()-1];
							//contxt.ContinueTracker.pop_back();
							file << std::endl << "\tnop";
						}			
			}			
			else if( IDENTIFIER == NULL && JUMP_TYPE != NULL && *JUMP_TYPE == "break" && AssignmentExpressionPtr == NULL && !contxt.reading) {

				if( contxt.LastScope.size() != 0 && contxt.BreakTracker.size() != 0){
					file << std::endl << "\tb\t" << contxt.LastScope[contxt.LastScope.size()-1];		//The label of the loopend
					//contxt.BreakTracker.pop_back();
					file << std::endl << "\tnop";
				}
			}
			else if( IDENTIFIER == NULL && JUMP_TYPE != NULL && *JUMP_TYPE == "return" && !contxt.reading) {				
			

				if( AssignmentExpressionPtr != NULL){
					contxt.rhs_of_expression = true;
					AssignmentExpressionPtr->render_asm(file,contxt);
					contxt.rhs_of_expression = false;
				}
				for(int i(0); i < contxt.functions_declared.size() && !contxt.reading; i++){
	
					if(contxt.functions_declared[i].returnType == "float" && contxt.functions_declared[i].name == contxt.funct_id ){
						if( AssignmentExpressionPtr != NULL && !contxt.reading){
							if( contxt.regType[contxt.Regs+1] != 'f'){
								file << std::endl << "\tmtc1\t$" << contxt.Regs+1 << ",$f" << contxt.Regs+1;		// MAY CAUSE PROBLEMS
								file << std::endl << "\tcvt.s.w\t$f" << contxt.Regs+1 << ",$f" << contxt.Regs+1;
							}
							file << std::endl << "\tmov.s\t$f0," << "$f" << contxt.Regs+1;
						}
							file << std::endl << "\tmove\t$sp,$fp";
							file << std::endl << "\tlw\t$31," << contxt.totalStackArea-4 <<"($sp)";
							file << std::endl << "\tlw\t$fp," << contxt.totalStackArea << "($sp)";
							file << std::endl << "\taddiu\t$sp,$sp," << contxt.totalStackArea + 4;
							file << std::endl << "\tj\t$31" << std::endl;
							file << std::endl << "\tnop" << std::endl;
							break;
						}
					else if(contxt.functions_declared[i].returnType != "float" && contxt.functions_declared[i].name == contxt.funct_id ){
						if( AssignmentExpressionPtr != NULL && !contxt.reading){
							if( contxt.regType[contxt.Regs+1] == 'f'){
								file << std::endl << "\t.set macro";
								file << std::endl << "\ttrunc.w.s\t$f" << contxt.Regs+1 << ",$f" << contxt.Regs+1 << ",$" << contxt.Regs+1;
								file << std::endl << "\t.set nomacro";
								file << std::endl << "\tmfc1\t$2," << "$f" << contxt.Regs+1;			// MAY CAUSE PROBLEMS
								file << std::endl << "\tnop" << std::endl;
							}
							file << std::endl << "\tmove\t$2," << "$" << contxt.Regs+1;
						}
						file << std::endl << "\tmove\t$sp,$fp";
						file << std::endl << "\tlw\t$31," << contxt.totalStackArea-4 <<"($sp)";
						file << std::endl << "\tlw\t$fp," << contxt.totalStackArea << "($sp)";
						file << std::endl << "\taddiu\t$sp,$sp," << contxt.totalStackArea + 4;
						file << std::endl << "\tj\t$31" << std::endl;
						file << std::endl << "\tnop" << std::endl;
						break;
					}
				}
		
			}
		}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, %r14
movq %rsi, %rbx
movq %rdi, %r15
cmpq $0x0, 0x8(%rdi)
je 0x1bb9e
movq 0x18(%r15), %rdi
testq %rdi, %rdi
je 0x1bb97
leaq 0x12120(%rip), %rsi     # 0x2dc99
callq 0x820e
testb %al, %al
je 0x1bb97
cmpq $0x0, 0x10(%r15)
jne 0x1bb97
cmpb $0x0, 0x21b(%r14)
je 0x1bd17
cmpq $0x0, 0x8(%r15)
jne 0x1bbd3
movq 0x18(%r15), %rdi
testq %rdi, %rdi
je 0x1bbcc
leaq 0x120f0(%rip), %rsi     # 0x2dc9e
callq 0x820e
testb %al, %al
je 0x1bbcc
cmpq $0x0, 0x10(%r15)
jne 0x1bbcc
cmpb $0x0, 0x21b(%r14)
je 0x1bd68
cmpq $0x0, 0x8(%r15)
je 0x1bbe2
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x18(%r15), %rdi
testq %rdi, %rdi
je 0x1bbd3
leaq 0x120b5(%rip), %rsi     # 0x2dca7
callq 0x820e
testb %al, %al
je 0x1bc10
cmpq $0x0, 0x10(%r15)
jne 0x1bc10
cmpb $0x0, 0x21b(%r14)
je 0x1bdcf
cmpq $0x0, 0x8(%r15)
jne 0x1bbd3
movq 0x18(%r15), %rdi
testq %rdi, %rdi
je 0x1bbd3
leaq 0x126ce(%rip), %rsi     # 0x2e2f5
callq 0x820e
testb %al, %al
je 0x1bbd3
cmpb $0x0, 0x21b(%r14)
jne 0x1bbd3
movq 0x10(%r15), %rdi
testq %rdi, %rdi
je 0x1bc5e
movb $0x1, 0x1d1(%r14)
movq %rbx, %rsi
movq %r14, %rdx
callq 0xe864
movb $0x0, 0x1d1(%r14)
leaq 0x220(%r14), %rax
movq %rax, (%rsp)
pushq $0x28
popq %rbp
xorl %r12d, %r12d
leaq 0x11919(%rip), %r13     # 0x2d58f
movq 0x400(%r14), %rdi
movq 0x408(%r14), %rax
subq %rdi, %rax
cqto
pushq $0x48
popq %rcx
idivq %rcx
cmpq %r12, %rax
jbe 0x1bbd3
cmpb $0x0, 0x21b(%r14)
jne 0x1bbd3
addq %rbp, %rdi
movq %r13, %rsi
callq 0x820e
testb %al, %al
je 0x1bcd5
movq 0x400(%r14), %rax
leaq (%rax,%rbp), %rdi
addq $-0x20, %rdi
movq (%rsp), %rsi
callq 0xcbbb
testb %al, %al
jne 0x1be46
movq 0x400(%r14), %rdi
addq %rbp, %rdi
movq %r13, %rsi
callq 0x14630
testb %al, %al
je 0x1bd0b
movq 0x400(%r14), %rax
leaq (%rax,%rbp), %rdi
addq $-0x20, %rdi
movq (%rsp), %rsi
callq 0xcbbb
testb %al, %al
jne 0x1bf27
incq %r12
addq $0x48, %rbp
jmp 0x1bc76
movq %rbx, %rdi
callq 0x7190
leaq 0x119b6(%rip), %rsi     # 0x2d6dc
movq %rax, %rdi
callq 0x7310
movq 0x8(%r15), %rsi
movq %rax, %rdi
callq 0x72d0
leaq 0x11f43(%rip), %rsi     # 0x2dc84
movq %rax, %rdi
callq 0x7310
addq $0x220, %r14            # imm = 0x220
movq %rax, %rdi
movq %r14, %rsi
callq 0x72d0
movq %rax, %rdi
callq 0x7190
jmp 0x1be21
movq 0x3f8(%r14), %rdi
testq %rdi, %rdi
je 0x1bd8f
movb $0x1, 0x1d1(%r14)
movq %rbx, %rsi
movq %r14, %rdx
callq 0xe864
movb $0x0, 0x1d1(%r14)
movq 0x3e0(%r14), %rax
cmpq 0x3d8(%r14), %rax
je 0x1bbd3
movq 0x550(%r14), %rax
cmpq 0x548(%r14), %rax
je 0x1bbd3
leaq 0x118cc(%rip), %rsi     # 0x2d68a
movq %rbx, %rdi
callq 0x7310
movq 0x3e0(%r14), %rsi
jmp 0x1be15
movq 0x4c0(%r14), %rax
cmpq 0x4b8(%r14), %rax
je 0x1bbd3
movq 0x538(%r14), %rax
cmpq 0x530(%r14), %rax
je 0x1bbd3
movq %rbx, %rdi
callq 0x7190
leaq 0x118d6(%rip), %rsi     # 0x2d6dc
movq %rax, %rdi
callq 0x7310
movq 0x4c0(%r14), %rsi
addq $-0x20, %rsi
movq %rax, %rdi
callq 0x72d0
movq %rbx, %rdi
callq 0x7190
leaq 0x117cc(%rip), %rsi     # 0x2d5fc
movq %rax, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x7310
cmpq $0x0, 0x10(%r15)
je 0x1c079
cmpb $0x0, 0x21b(%r14)
jne 0x1c079
movslq 0x310(%r14), %rax
cmpb $0x66, 0x342(%rax,%r14)
je 0x1bf04
movq %rbx, %rdi
callq 0x7190
leaq 0x11c48(%rip), %rsi     # 0x2dacc
movq %rax, %rdi
callq 0x7310
movl 0x310(%r14), %esi
incl %esi
movq %rax, %rdi
callq 0x7590
leaq 0x118db(%rip), %r15     # 0x2d77f
movq %rax, %rdi
movq %r15, %rsi
callq 0x7310
movl 0x310(%r14), %esi
incl %esi
movq %rax, %rdi
callq 0x7590
movq %rbx, %rdi
callq 0x7190
leaq 0x11c5a(%rip), %rsi     # 0x2db29
movq %rax, %rdi
callq 0x7310
movl 0x310(%r14), %esi
incl %esi
movq %rax, %rdi
callq 0x7590
movq %rax, %rdi
movq %r15, %rsi
callq 0x7310
movl 0x310(%r14), %esi
incl %esi
movq %rax, %rdi
callq 0x7590
movq %rbx, %rdi
callq 0x7190
leaq 0x11d9a(%rip), %rsi     # 0x2dcad
movq %rax, %rdi
callq 0x7310
leaq 0x11c3c(%rip), %rsi     # 0x2db5e
jmp 0x1c060
cmpq $0x0, 0x10(%r15)
je 0x1c079
cmpb $0x0, 0x21b(%r14)
jne 0x1c079
movslq 0x310(%r14), %rax
cmpb $0x66, 0x342(%rax,%r14)
jne 0x1c042
movq %rbx, %rdi
callq 0x7190
leaq 0x1169c(%rip), %rsi     # 0x2d601
movq %rax, %rdi
callq 0x7310
movq %rbx, %rdi
callq 0x7190
leaq 0x11b91(%rip), %rsi     # 0x2db0d
movq %rax, %rdi
callq 0x7310
movl 0x310(%r14), %esi
incl %esi
movq %rax, %rdi
callq 0x7590
leaq 0x117e3(%rip), %rsi     # 0x2d77f
movq %rax, %rdi
callq 0x7310
movl 0x310(%r14), %esi
incl %esi
movq %rax, %rdi
callq 0x7590
leaq 0x1177f(%rip), %rsi     # 0x2d73b
movq %rax, %rdi
callq 0x7310
movl 0x310(%r14), %esi
incl %esi
movq %rax, %rdi
callq 0x7590
movq %rbx, %rdi
callq 0x7190
leaq 0x11565(%rip), %rsi     # 0x2d549
movq %rax, %rdi
callq 0x7310
movq %rbx, %rdi
callq 0x7190
leaq 0x11cf5(%rip), %rsi     # 0x2dcf0
movq %rax, %rdi
callq 0x7310
leaq 0x11b54(%rip), %rsi     # 0x2db5e
movq %rax, %rdi
callq 0x7310
movl 0x310(%r14), %esi
incl %esi
movq %rax, %rdi
callq 0x7590
movq %rbx, %rdi
callq 0x7190
leaq 0x115ca(%rip), %rsi     # 0x2d5fc
movq %rax, %rdi
callq 0x7310
movq %rax, %rdi
callq 0x7190
movq %rbx, %rdi
callq 0x7190
leaq 0x11ca9(%rip), %rsi     # 0x2dcfa
movq %rax, %rdi
callq 0x7310
leaq 0x11ac1(%rip), %rsi     # 0x2db21
movq %rax, %rdi
callq 0x7310
movl 0x310(%r14), %esi
incl %esi
movq %rax, %rdi
callq 0x7590
movq %rbx, %rdi
callq 0x7190
leaq 0x11c31(%rip), %rsi     # 0x2dcb9
movq %rax, %rdi
callq 0x7310
movq %rbx, %rdi
callq 0x7190
leaq 0x11c28(%rip), %rsi     # 0x2dcc7
movq %rax, %rdi
callq 0x7310
movl 0x308(%r14), %esi
addl $-0x4, %esi
movq %rax, %rdi
callq 0x7590
leaq 0x114b1(%rip), %r15     # 0x2d571
movq %rax, %rdi
movq %r15, %rsi
callq 0x7310
movq %rbx, %rdi
callq 0x7190
leaq 0x11bf6(%rip), %rsi     # 0x2dcd0
movq %rax, %rdi
callq 0x7310
movl 0x308(%r14), %esi
movq %rax, %rdi
callq 0x7590
movq %rax, %rdi
movq %r15, %rsi
callq 0x7310
movq %rbx, %rdi
callq 0x7190
leaq 0x11bce(%rip), %rsi     # 0x2dcd9
movq %rax, %rdi
callq 0x7310
movl 0x308(%r14), %esi
addl $0x4, %esi
movq %rax, %rdi
callq 0x7590
movq %rbx, %rdi
callq 0x7190
leaq 0x11bb5(%rip), %rsi     # 0x2dce9
movq %rax, %rdi
callq 0x7310
movq %rax, %rdi
callq 0x7190
movq %rbx, %rdi
callq 0x7190
leaq 0x114a9(%rip), %rsi     # 0x2d5fc
movq %rax, %rdi
callq 0x7310
movq %rax, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x7190
nop