// File: 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
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x28(%rbp)
cmpq $0x0, 0x8(%rax)
je 0x2e507
movq -0x28(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x2e507
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0x365f9(%rip), %rsi     # 0x64a4e
callq 0x9e30
testb $0x1, %al
jne 0x2e463
jmp 0x2e507
movq -0x28(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x2e507
movq -0x18(%rbp), %rax
testb $0x1, 0x21b(%rax)
jne 0x2e507
movq -0x10(%rbp), %rdi
movq 0x59ae2(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x35ff4(%rip), %rsi     # 0x64491
callq 0x8400
movq %rax, %rdi
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x83c0
movq %rax, %rdi
leaq 0x3657d(%rip), %rsi     # 0x64a39
callq 0x8400
movq %rax, %rdi
movq -0x18(%rbp), %rsi
addq $0x220, %rsi            # imm = 0x220
callq 0x83c0
movq %rax, %rdi
movq 0x59a92(%rip), %rsi     # 0x87f70
callq 0x8450
movq -0x10(%rbp), %rdi
movq 0x59a82(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x35eb4(%rip), %rsi     # 0x643b1
callq 0x8400
jmp 0x2ee51
movq -0x28(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x2e640
movq -0x28(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x2e640
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0x3651f(%rip), %rsi     # 0x64a53
callq 0x9e30
testb $0x1, %al
jne 0x2e542
jmp 0x2e640
movq -0x28(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x2e640
movq -0x18(%rbp), %rax
testb $0x1, 0x21b(%rax)
jne 0x2e640
movq -0x18(%rbp), %rax
cmpq $0x0, 0x3f8(%rax)
je 0x2e59e
movq -0x18(%rbp), %rax
movb $0x1, 0x1d1(%rax)
movq -0x18(%rbp), %rax
movq 0x3f8(%rax), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x13a40
movq -0x18(%rbp), %rax
movb $0x0, 0x1d1(%rax)
movq -0x18(%rbp), %rdi
addq $0x3d8, %rdi            # imm = 0x3D8
callq 0xbef0
cmpq $0x0, %rax
je 0x2e63b
movq -0x18(%rbp), %rdi
addq $0x548, %rdi            # imm = 0x548
callq 0x11a60
cmpq $0x0, %rax
je 0x2e63b
movq -0x10(%rbp), %rdi
leaq 0x35e66(%rip), %rsi     # 0x6443f
callq 0x8400
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rax
addq $0x3d8, %rax            # imm = 0x3D8
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rdi
addq $0x3d8, %rdi            # imm = 0x3D8
callq 0xbef0
movq -0x38(%rbp), %rdi
movq %rax, %rsi
subq $0x1, %rsi
callq 0xbf10
movq -0x30(%rbp), %rdi
movq %rax, %rsi
callq 0x83c0
movq -0x10(%rbp), %rdi
movq 0x59949(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x35d7b(%rip), %rsi     # 0x643b1
callq 0x8400
jmp 0x2ee4f
movq -0x28(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x2e74c
movq -0x28(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x2e74c
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0x363ef(%rip), %rsi     # 0x64a5c
callq 0x9e30
testb $0x1, %al
jne 0x2e67b
jmp 0x2e74c
movq -0x28(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x2e74c
movq -0x18(%rbp), %rax
testb $0x1, 0x21b(%rax)
jne 0x2e74c
movq -0x18(%rbp), %rdi
addq $0x4b8, %rdi            # imm = 0x4B8
callq 0xbef0
cmpq $0x0, %rax
je 0x2e747
movq -0x18(%rbp), %rdi
addq $0x530, %rdi            # imm = 0x530
callq 0x11a60
cmpq $0x0, %rax
je 0x2e747
movq -0x10(%rbp), %rdi
movq 0x5989a(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x35dac(%rip), %rsi     # 0x64491
callq 0x8400
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rax
addq $0x4b8, %rax            # imm = 0x4B8
movq %rax, -0x48(%rbp)
movq -0x18(%rbp), %rdi
addq $0x4b8, %rdi            # imm = 0x4B8
callq 0xbef0
movq -0x48(%rbp), %rdi
movq %rax, %rsi
subq $0x1, %rsi
callq 0xbf10
movq -0x40(%rbp), %rdi
movq %rax, %rsi
callq 0x83c0
movq -0x10(%rbp), %rdi
movq 0x5983d(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x35c6f(%rip), %rsi     # 0x643b1
callq 0x8400
jmp 0x2ee4d
movq -0x28(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x2ee4b
movq -0x28(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x2ee4b
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0x3695b(%rip), %rsi     # 0x650d4
callq 0x9e30
testb $0x1, %al
jne 0x2e787
jmp 0x2ee4b
movq -0x18(%rbp), %rax
testb $0x1, 0x21b(%rax)
jne 0x2ee4b
movq -0x28(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x2e7ce
movq -0x28(%rbp), %rax
movq -0x18(%rbp), %rcx
movb $0x1, 0x1d1(%rcx)
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x13a40
movq -0x18(%rbp), %rax
movb $0x0, 0x1d1(%rax)
movl $0x0, -0x1c(%rbp)
movslq -0x1c(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x18(%rbp), %rdi
addq $0x400, %rdi            # imm = 0x400
callq 0x1f7d0
movq -0x58(%rbp), %rcx
movq %rax, %rdx
xorl %eax, %eax
cmpq %rdx, %rcx
movb %al, -0x49(%rbp)
jae 0x2e80d
movq -0x18(%rbp), %rax
movb 0x21b(%rax), %al
xorb $-0x1, %al
movb %al, -0x49(%rbp)
movb -0x49(%rbp), %al
testb $0x1, %al
jne 0x2e819
jmp 0x2ee49
movq -0x18(%rbp), %rdi
addq $0x400, %rdi            # imm = 0x400
movslq -0x1c(%rbp), %rsi
callq 0x1f800
movq %rax, %rdi
addq $0x28, %rdi
leaq 0x35b09(%rip), %rsi     # 0x64344
callq 0x9e30
testb $0x1, %al
jne 0x2e849
jmp 0x2eaec
movq -0x18(%rbp), %rdi
addq $0x400, %rdi            # imm = 0x400
movslq -0x1c(%rbp), %rsi
callq 0x1f800
movq %rax, %rdi
addq $0x8, %rdi
movq -0x18(%rbp), %rsi
addq $0x220, %rsi            # imm = 0x220
callq 0xfd50
testb $0x1, %al
jne 0x2e87d
jmp 0x2eaec
movq -0x28(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x2e9b5
movq -0x18(%rbp), %rax
testb $0x1, 0x21b(%rax)
jne 0x2e9b5
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
je 0x2e972
movq -0x10(%rbp), %rdi
movq 0x596a3(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x35fa5(%rip), %rsi     # 0x64881
callq 0x8400
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x35c34(%rip), %rsi     # 0x64534
callq 0x8400
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq -0x10(%rbp), %rdi
movq 0x5964b(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x35faa(%rip), %rsi     # 0x648de
callq 0x8400
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x35bdc(%rip), %rsi     # 0x64534
callq 0x8400
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq -0x10(%rbp), %rdi
movq 0x595f3(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x360d6(%rip), %rsi     # 0x64a62
callq 0x8400
movq %rax, %rdi
leaq 0x35f78(%rip), %rsi     # 0x64913
callq 0x8400
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq -0x10(%rbp), %rdi
movq 0x595b0(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3609f(%rip), %rsi     # 0x64a6e
callq 0x8400
movq -0x10(%rbp), %rdi
movq 0x59591(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3608e(%rip), %rsi     # 0x64a7c
callq 0x8400
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x308(%rax), %esi
subl $0x4, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x35914(%rip), %rsi     # 0x64326
callq 0x8400
movq -0x10(%rbp), %rdi
movq 0x5954e(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x36054(%rip), %rsi     # 0x64a85
callq 0x8400
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x308(%rax), %esi
callq 0x8730
movq %rax, %rdi
leaq 0x358d4(%rip), %rsi     # 0x64326
callq 0x8400
movq -0x10(%rbp), %rdi
movq 0x5950e(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3601d(%rip), %rsi     # 0x64a8e
callq 0x8400
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x308(%rax), %esi
addl $0x4, %esi
callq 0x8730
movq -0x10(%rbp), %rdi
movq 0x594da(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x35ff9(%rip), %rsi     # 0x64a9e
callq 0x8400
movq %rax, %rdi
movq 0x594bc(%rip), %rsi     # 0x87f70
callq 0x8450
movq -0x10(%rbp), %rdi
movq 0x594ac(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x358de(%rip), %rsi     # 0x643b1
callq 0x8400
movq %rax, %rdi
movq 0x5948e(%rip), %rsi     # 0x87f70
callq 0x8450
jmp 0x2ee49
movq -0x18(%rbp), %rdi
addq $0x400, %rdi            # imm = 0x400
movslq -0x1c(%rbp), %rsi
callq 0x1f800
movq %rax, %rdi
addq $0x28, %rdi
leaq 0x35836(%rip), %rsi     # 0x64344
callq 0x1f7a0
testb $0x1, %al
jne 0x2eb1c
jmp 0x2ee37
movq -0x18(%rbp), %rdi
addq $0x400, %rdi            # imm = 0x400
movslq -0x1c(%rbp), %rsi
callq 0x1f800
movq %rax, %rdi
addq $0x8, %rdi
movq -0x18(%rbp), %rsi
addq $0x220, %rsi            # imm = 0x220
callq 0xfd50
testb $0x1, %al
jne 0x2eb50
jmp 0x2ee37
movq -0x28(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x2ed03
movq -0x18(%rbp), %rax
testb $0x1, 0x21b(%rax)
jne 0x2ed03
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 0x2ecc0
movq -0x10(%rbp), %rdi
movq 0x593d0(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x35807(%rip), %rsi     # 0x643b6
callq 0x8400
movq -0x10(%rbp), %rdi
movq 0x593b1(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x35cf4(%rip), %rsi     # 0x648c2
callq 0x8400
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x35942(%rip), %rsi     # 0x64534
callq 0x8400
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x358da(%rip), %rsi     # 0x644f0
callq 0x8400
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq -0x10(%rbp), %rdi
movq 0x59335(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x356b4(%rip), %rsi     # 0x642fe
callq 0x8400
movq -0x10(%rbp), %rdi
movq 0x59316(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x35e3c(%rip), %rsi     # 0x64aa5
callq 0x8400
movq %rax, %rdi
leaq 0x35c9b(%rip), %rsi     # 0x64913
callq 0x8400
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq -0x10(%rbp), %rdi
movq 0x592d3(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x35705(%rip), %rsi     # 0x643b1
callq 0x8400
movq %rax, %rdi
movq 0x592b5(%rip), %rsi     # 0x87f70
callq 0x8450
movq -0x10(%rbp), %rdi
movq 0x592a5(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x35dd5(%rip), %rsi     # 0x64aaf
callq 0x8400
movq %rax, %rdi
leaq 0x35bed(%rip), %rsi     # 0x648d6
callq 0x8400
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq -0x10(%rbp), %rdi
movq 0x59262(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x35d51(%rip), %rsi     # 0x64a6e
callq 0x8400
movq -0x10(%rbp), %rdi
movq 0x59243(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x35d40(%rip), %rsi     # 0x64a7c
callq 0x8400
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x308(%rax), %esi
subl $0x4, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x355c6(%rip), %rsi     # 0x64326
callq 0x8400
movq -0x10(%rbp), %rdi
movq 0x59200(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x35d06(%rip), %rsi     # 0x64a85
callq 0x8400
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x308(%rax), %esi
callq 0x8730
movq %rax, %rdi
leaq 0x35586(%rip), %rsi     # 0x64326
callq 0x8400
movq -0x10(%rbp), %rdi
movq 0x591c0(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x35ccf(%rip), %rsi     # 0x64a8e
callq 0x8400
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x308(%rax), %esi
addl $0x4, %esi
callq 0x8730
movq -0x10(%rbp), %rdi
movq 0x5918c(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x35cab(%rip), %rsi     # 0x64a9e
callq 0x8400
movq %rax, %rdi
movq 0x5916e(%rip), %rsi     # 0x87f70
callq 0x8450
movq -0x10(%rbp), %rdi
movq 0x5915e(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x35590(%rip), %rsi     # 0x643b1
callq 0x8400
movq %rax, %rdi
movq 0x59140(%rip), %rsi     # 0x87f70
callq 0x8450
jmp 0x2ee49
jmp 0x2ee39
jmp 0x2ee3b
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x2e7d5
jmp 0x2ee4b
jmp 0x2ee4d
jmp 0x2ee4f
jmp 0x2ee51
addq $0x60, %rsp
popq %rbp
retq
nopw (%rax,%rax)