// File: /workspace/github_cpp_makefile_star2_O1/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 0x23b99
movq 0x18(%r15), %rdi
testq %rdi, %rdi
je 0x23b99
leaq 0x14114(%rip), %rsi     # 0x37c8f
callq 0x70c0
testl %eax, %eax
jne 0x23b99
cmpq $0x0, 0x10(%r15)
jne 0x23b99
cmpb $0x0, 0x21b(%r14)
je 0x23e5a
cmpq $0x0, 0x8(%r15)
je 0x23bc5
cmpq $0x0, 0x8(%r15)
je 0x23c66
cmpq $0x0, 0x8(%r15)
je 0x23d0b
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x18(%r15), %rdi
testq %rdi, %rdi
je 0x23ba0
leaq 0x140bf(%rip), %rsi     # 0x37c94
callq 0x70c0
testl %eax, %eax
jne 0x23ba0
cmpq $0x0, 0x10(%r15)
jne 0x23ba0
cmpb $0x0, 0x21b(%r14)
jne 0x23ba0
movq 0x3f8(%r14), %rdi
testq %rdi, %rdi
je 0x23c16
movb $0x1, 0x1d1(%r14)
movq %rbx, %rsi
movq %r14, %rdx
callq 0x11e3c
movb $0x0, 0x1d1(%r14)
movq 0x3e0(%r14), %rax
cmpq 0x3d8(%r14), %rax
je 0x23bb6
movq 0x550(%r14), %rax
cmpq 0x548(%r14), %rax
je 0x23bb6
leaq 0x13a43(%rip), %rsi     # 0x37680
movl $0x4, %edx
movq %rbx, %rdi
callq 0x73a0
movq 0x3e0(%r14), %rax
movq -0x20(%rax), %rsi
movq -0x18(%rax), %rdx
movq %rbx, %rdi
callq 0x73a0
jmp 0x23f02
movq 0x18(%r15), %rdi
testq %rdi, %rdi
je 0x23bab
leaq 0x14023(%rip), %rsi     # 0x37c9d
callq 0x70c0
testl %eax, %eax
jne 0x23bab
cmpq $0x0, 0x10(%r15)
jne 0x23bab
cmpb $0x0, 0x21b(%r14)
jne 0x23bab
movq 0x4c0(%r14), %rax
cmpq 0x4b8(%r14), %rax
je 0x23bb6
movq 0x538(%r14), %rax
cmpq 0x530(%r14), %rax
je 0x23bb6
movq %rbx, %rdi
callq 0x7180
movq %rax, %r15
leaq 0x139f8(%rip), %rsi     # 0x376d2
movl $0x3, %edx
movq %rax, %rdi
callq 0x73a0
movq 0x4c0(%r14), %rax
movq -0x20(%rax), %rsi
movq -0x18(%rax), %rdx
movq %r15, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
jmp 0x23f29
movq 0x18(%r15), %rdi
testq %rdi, %rdi
je 0x23bb6
leaq 0x145cc(%rip), %rsi     # 0x382eb
callq 0x70c0
testl %eax, %eax
jne 0x23bb6
cmpb $0x0, 0x21b(%r14)
jne 0x23bb6
movq 0x10(%r15), %rdi
testq %rdi, %rdi
je 0x23d5e
movb $0x1, 0x1d1(%r14)
movq %rbx, %rsi
movq %r14, %rdx
callq 0x11e3c
movb $0x0, 0x1d1(%r14)
movq 0x400(%r14), %rdi
cmpq %rdi, 0x408(%r14)
je 0x23bb6
movl $0x28, %r13d
xorl %ebp, %ebp
leaq 0x13804(%rip), %r12     # 0x37585
cmpb $0x0, 0x21b(%r14)
jne 0x23bb6
addq %r13, %rdi
movq %r12, %rsi
callq 0x70c0
testl %eax, %eax
jne 0x23dd5
movq 0x400(%r14), %rax
movq -0x18(%rax,%r13), %rdx
cmpq 0x228(%r14), %rdx
jne 0x23dd5
testq %rdx, %rdx
je 0x240cd
movq 0x220(%r14), %rsi
movq -0x20(%rax,%r13), %rdi
callq 0x7350
testl %eax, %eax
je 0x240cd
movq 0x400(%r14), %rdi
addq %r13, %rdi
movq %r12, %rsi
callq 0x70c0
testl %eax, %eax
je 0x23e22
movq 0x400(%r14), %rax
movq -0x18(%rax,%r13), %rdx
cmpq 0x228(%r14), %rdx
jne 0x23e22
testq %rdx, %rdx
je 0x23f4b
movq 0x220(%r14), %rsi
movq -0x20(%rax,%r13), %rdi
callq 0x7350
testl %eax, %eax
je 0x23f4b
incq %rbp
movq 0x400(%r14), %rdi
movq 0x408(%r14), %rax
subq %rdi, %rax
sarq $0x3, %rax
movabsq $-0x71c71c71c71c71c7, %rcx # imm = 0x8E38E38E38E38E39
imulq %rcx, %rax
addq $0x48, %r13
cmpq %rbp, %rax
ja 0x23d81
jmp 0x23bb6
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 0x13847(%rip), %rsi     # 0x376d2
movl $0x3, %edx
movq %rax, %rdi
callq 0x73a0
movq 0x8(%r15), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %r12, %rdi
callq 0x73a0
movq %rax, %r15
leaq 0x13dc5(%rip), %rsi     # 0x37c7a
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
movq 0x220(%r14), %rsi
movq 0x228(%r14), %rdx
movq %r15, %rdi
callq 0x73a0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %r14, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
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 0x136c2(%rip), %rsi     # 0x375f2
movl $0x4, %edx
movq %rax, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x73a0
cmpq $0x0, 0x10(%r15)
je 0x241ef
cmpb $0x0, 0x21b(%r14)
jne 0x241ef
movslq 0x310(%r14), %rax
cmpb $0x66, 0x342(%rax,%r14)
jne 0x2409d
movq %rbx, %rdi
callq 0x7180
leaq 0x1366e(%rip), %rsi     # 0x375f7
movl $0xb, %edx
movq %rax, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
movq %rax, %r15
leaq 0x13b5b(%rip), %rsi     # 0x37b03
movl $0xd, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%r14), %esi
incl %esi
movq %r15, %rdi
callq 0x75c0
movq %rax, %r15
leaq 0x137a5(%rip), %rsi     # 0x37775
movl $0x3, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%r14), %esi
incl %esi
movq %r15, %rdi
callq 0x75c0
movq %rax, %r15
leaq 0x13739(%rip), %rsi     # 0x37731
movl $0x2, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%r14), %esi
incl %esi
movq %r15, %rdi
callq 0x75c0
movq %rbx, %rdi
callq 0x7180
leaq 0x1351a(%rip), %rsi     # 0x3753f
movl $0xd, %edx
movq %rax, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
movq %rax, %r15
leaq 0x13ca2(%rip), %rsi     # 0x37ce6
movl $0x9, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x13afc(%rip), %rsi     # 0x37b54
movl $0x2, %edx
movq %r15, %rdi
callq 0x73a0
movl 0x310(%r14), %esi
incl %esi
movq %r15, %rdi
callq 0x75c0
movq %rbx, %rdi
callq 0x7180
movq %rax, %r15
leaq 0x1356a(%rip), %rsi     # 0x375f2
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
movq %r15, %rdi
callq 0x7180
movq %rbx, %rdi
callq 0x7180
movq %rax, %r15
leaq 0x13c41(%rip), %rsi     # 0x37cf0
movl $0x9, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x13a54(%rip), %rsi     # 0x37b17
movl $0x1, %edx
jmp 0x241d6
cmpq $0x0, 0x10(%r15)
je 0x241ef
cmpb $0x0, 0x21b(%r14)
jne 0x241ef
movslq 0x310(%r14), %rax
cmpb $0x66, 0x342(%rax,%r14)
je 0x241ab
movq %rbx, %rdi
callq 0x7180
movq %rax, %r15
leaq 0x139b4(%rip), %rsi     # 0x37ac2
movl $0x7, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%r14), %esi
incl %esi
movq %r15, %rdi
callq 0x75c0
movq %rax, %r12
leaq 0x1363f(%rip), %r15     # 0x37775
movl $0x3, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x73a0
movl 0x310(%r14), %esi
incl %esi
movq %r12, %rdi
callq 0x75c0
movq %rbx, %rdi
callq 0x7180
movq %rax, %r12
leaq 0x139b6(%rip), %rsi     # 0x37b1f
movl $0xb, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x310(%r14), %esi
incl %esi
movq %r12, %rdi
callq 0x75c0
movq %rax, %r12
movl $0x3, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x73a0
movl 0x310(%r14), %esi
incl %esi
movq %r12, %rdi
callq 0x75c0
movq %rbx, %rdi
callq 0x7180
movq %rax, %r15
leaq 0x13ae6(%rip), %rsi     # 0x37ca3
movl $0xb, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x13983(%rip), %rsi     # 0x37b54
movl $0x2, %edx
movq %r15, %rdi
callq 0x73a0
movl 0x310(%r14), %esi
incl %esi
movq %r15, %rdi
callq 0x75c0
movq %rbx, %rdi
callq 0x7180
leaq 0x13ab1(%rip), %rsi     # 0x37caf
movl $0xd, %edx
movq %rax, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
movq %rax, %r15
leaq 0x13aa0(%rip), %rsi     # 0x37cbd
movl $0x8, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x308(%r14), %esi
addl $-0x4, %esi
movq %r15, %rdi
callq 0x75c0
leaq 0x13324(%rip), %r15     # 0x37567
movl $0x5, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
movq %rax, %r12
leaq 0x13a61(%rip), %rsi     # 0x37cc6
movl $0x8, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x308(%r14), %esi
movq %r12, %rdi
callq 0x75c0
movl $0x5, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
movq %rax, %r15
leaq 0x13a2c(%rip), %rsi     # 0x37ccf
movl $0xf, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x308(%r14), %esi
addl $0x4, %esi
movq %r15, %rdi
callq 0x75c0
movq %rbx, %rdi
callq 0x7180
movq %rax, %r14
leaq 0x13a0b(%rip), %rsi     # 0x37cdf
movl $0x6, %edx
movq %rax, %rdi
callq 0x73a0
movq %r14, %rdi
callq 0x7180
movq %rbx, %rdi
callq 0x7180
movq %rax, %rbx
leaq 0x132f7(%rip), %rsi     # 0x375f2
movl $0x4, %edx
movq %rax, %rdi
callq 0x73a0
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x7180