// File: /workspace/github_cpp_makefile_star2_O3/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 0x234c8
movq 0x18(%r15), %rdi
testq %rdi, %rdi
je 0x234c1
leaq 0x147ec(%rip), %rsi     # 0x37c8f
callq 0x70c0
testl %eax, %eax
jne 0x234c1
cmpq $0x0, 0x10(%r15)
jne 0x234c1
cmpb $0x0, 0x21b(%r14)
je 0x2368d
cmpq $0x0, 0x8(%r15)
jne 0x234fd
movq 0x18(%r15), %rdi
testq %rdi, %rdi
je 0x234f6
leaq 0x147bc(%rip), %rsi     # 0x37c94
callq 0x70c0
testl %eax, %eax
jne 0x234f6
cmpq $0x0, 0x10(%r15)
jne 0x234f6
cmpb $0x0, 0x21b(%r14)
je 0x2373a
cmpq $0x0, 0x8(%r15)
je 0x2350c
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x18(%r15), %rdi
testq %rdi, %rdi
je 0x234fd
leaq 0x14781(%rip), %rsi     # 0x37c9d
callq 0x70c0
testl %eax, %eax
jne 0x2353a
cmpq $0x0, 0x10(%r15)
jne 0x2353a
cmpb $0x0, 0x21b(%r14)
je 0x2380d
cmpq $0x0, 0x8(%r15)
jne 0x234fd
movq 0x18(%r15), %rdi
testq %rdi, %rdi
je 0x234fd
leaq 0x14d9a(%rip), %rsi     # 0x382eb
callq 0x70c0
testl %eax, %eax
jne 0x234fd
cmpb $0x0, 0x21b(%r14)
jne 0x234fd
movq 0x10(%r15), %rax
testq %rax, %rax
je 0x23598
movb $0x1, 0x1d1(%r14)
movq %rax, %rcx
movq 0x10(%rax), %rax
testq %rax, %rax
jne 0x23575
movq 0x8(%rcx), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1a310
movb $0x0, 0x1d1(%r14)
movq 0x400(%r14), %r13
cmpq %r13, 0x408(%r14)
je 0x234fd
movl $0x28, %ebp
xorl %r12d, %r12d
cmpb $0x0, 0x21b(%r14)
jne 0x234fd
addq %rbp, %r13
movq %r13, %rdi
leaq 0x13fb6(%rip), %rsi     # 0x37585
callq 0x70c0
movq 0x400(%r14), %r13
testl %eax, %eax
jne 0x2360f
movq -0x18(%r13,%rbp), %rdx
cmpq 0x228(%r14), %rdx
jne 0x2360f
testq %rdx, %rdx
je 0x239fa
movq 0x220(%r14), %rsi
movq -0x20(%r13,%rbp), %rdi
callq 0x7350
testl %eax, %eax
je 0x239fa
addq %rbp, %r13
movq %r13, %rdi
leaq 0x13f69(%rip), %rsi     # 0x37585
callq 0x70c0
movq 0x400(%r14), %r13
testl %eax, %eax
je 0x2365c
movq -0x18(%r13,%rbp), %rdx
cmpq 0x228(%r14), %rdx
jne 0x2365c
testq %rdx, %rdx
je 0x23878
movq 0x220(%r14), %rsi
movq -0x20(%r13,%rbp), %rdi
callq 0x7350
testl %eax, %eax
je 0x23878
incq %r12
movq 0x408(%r14), %rax
subq %r13, %rax
sarq $0x3, %rax
movabsq $-0x71c71c71c71c71c7, %rcx # imm = 0x8E38E38E38E38E39
imulq %rcx, %rax
addq $0x48, %rbp
cmpq %r12, %rax
ja 0x235b4
jmp 0x234fd
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 0x14014(%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 0x14592(%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
jmp 0x237c4
movq 0x3f8(%r14), %rax
testq %rax, %rax
je 0x23771
movb $0x1, 0x1d1(%r14)
movq %rax, %rcx
movq 0x10(%rax), %rax
testq %rax, %rax
jne 0x2374e
movq 0x8(%rcx), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1a310
movb $0x0, 0x1d1(%r14)
movq 0x3e0(%r14), %rax
cmpq 0x3d8(%r14), %rax
je 0x234fd
movq 0x550(%r14), %rax
cmpq 0x548(%r14), %rax
je 0x234fd
leaq 0x13ee0(%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
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 0x13e00(%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
movq 0x4c0(%r14), %rax
cmpq 0x4b8(%r14), %rax
je 0x234fd
movq 0x538(%r14), %rax
cmpq 0x530(%r14), %rax
je 0x234fd
movq %rbx, %rdi
callq 0x7180
movq %rax, %r15
leaq 0x13e8b(%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 0x237eb
cmpq $0x0, 0x10(%r15)
je 0x23b1c
cmpb $0x0, 0x21b(%r14)
jne 0x23b1c
movslq 0x310(%r14), %rax
cmpb $0x66, 0x342(%rax,%r14)
jne 0x239ca
movq %rbx, %rdi
callq 0x7180
leaq 0x13d41(%rip), %rsi     # 0x375f7
movl $0xb, %edx
movq %rax, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
movq %rax, %r15
leaq 0x1422e(%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 0x13e78(%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 0x13e0c(%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 0x13bed(%rip), %rsi     # 0x3753f
movl $0xd, %edx
movq %rax, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
movq %rax, %r15
leaq 0x14375(%rip), %rsi     # 0x37ce6
movl $0x9, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x141cf(%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 0x13c3d(%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 0x14314(%rip), %rsi     # 0x37cf0
movl $0x9, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x14127(%rip), %rsi     # 0x37b17
movl $0x1, %edx
jmp 0x23b03
cmpq $0x0, 0x10(%r15)
je 0x23b1c
cmpb $0x0, 0x21b(%r14)
jne 0x23b1c
movslq 0x310(%r14), %rax
cmpb $0x66, 0x342(%rax,%r14)
je 0x23ad8
movq %rbx, %rdi
callq 0x7180
movq %rax, %r15
leaq 0x14087(%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 0x13d12(%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 0x14089(%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 0x141b9(%rip), %rsi     # 0x37ca3
movl $0xb, %edx
movq %rax, %rdi
callq 0x73a0
leaq 0x14056(%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 0x14184(%rip), %rsi     # 0x37caf
movl $0xd, %edx
movq %rax, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
movq %rax, %r15
leaq 0x14173(%rip), %rsi     # 0x37cbd
movl $0x8, %edx
movq %rax, %rdi
callq 0x73a0
movl 0x308(%r14), %esi
addl $-0x4, %esi
movq %r15, %rdi
callq 0x75c0
leaq 0x139f7(%rip), %r15     # 0x37567
movl $0x5, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
movq %rax, %r12
leaq 0x14134(%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 0x140ff(%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 0x140de(%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 0x139ca(%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
nop