// File: gioannides[P]Language_Processors/src/../include/ast/ast_Expressions.cpp
// Function: ConditionalExpression::render_asm(std::basic_ofstream<char, std::char_traits<char>>&, Context&)
inline void ConditionalExpression::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;
			
			
			if( LogicalORExpression != NULL && ExpressioN == NULL && ConditionalExpressionPtr == NULL) {
				LogicalORExpression->render_asm(file,contxt);
				
				
			}
			else if (LogicalORExpression != NULL && ExpressioN != NULL && ConditionalExpressionPtr != NULL) {
				
				contxt.rhs_of_expression = true;
				LogicalORExpression->render_asm(file,contxt);
				contxt.rhs_of_expression = false;				
				file << std::endl << "\tbeq\t$2,$0," << ELSE;
				file << std::endl << "\tnop";
				file << std::endl << IF << ":";
				contxt.rhs_of_expression = true;
				ExpressioN->render_asm(file,contxt);
				contxt.rhs_of_expression = false;
				file << "\n\tb " << END;
				file << std::endl << "\tnop";
				file << std::endl << ELSE << ":";
				contxt.rhs_of_expression = true;
				ConditionalExpressionPtr->render_asm(file,contxt);
				contxt.rhs_of_expression = false;
				file << "\n\tb " << END;
				file << std::endl << "\tnop";
			}
			if(contxt.function){
				file << std::endl << END << ":";
			}
			
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x120, %rsp            # imm = 0x120
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq -0x18(%rbp), %rsi
leaq -0x38(%rbp), %rdi
movq %rdi, -0xb0(%rbp)
callq 0x11f70
movq -0xb0(%rbp), %rdx
leaq 0x528d0(%rip), %rsi     # 0x64424
leaq -0x58(%rbp), %rdi
callq 0x12040
jmp 0x11b5f
leaq 0x528c4(%rip), %rsi     # 0x6442a
leaq -0x88(%rbp), %rdi
leaq -0x38(%rbp), %rdx
callq 0x12040
jmp 0x11b78
leaq 0x528af(%rip), %rsi     # 0x6442e
leaq -0xa8(%rbp), %rdi
leaq -0x38(%rbp), %rdx
callq 0x12040
jmp 0x11b91
movq -0xb8(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x11c2e
movq -0xb8(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x11c2e
movq -0xb8(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jne 0x11c2e
movq -0xb8(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x12150
jmp 0x11bd9
jmp 0x11eb6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x11f57
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x11f4e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x11f42
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x8280
jmp 0x11f42
movq -0xb8(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x11eb4
movq -0xb8(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x11eb4
movq -0xb8(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x11eb4
movq -0xb8(%rbp), %rax
movq -0x18(%rbp), %rcx
movb $0x1, 0x1d1(%rcx)
movq 0x8(%rax), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x12150
jmp 0x11c89
movq -0x18(%rbp), %rax
movb $0x0, 0x1d1(%rax)
movq -0x10(%rbp), %rdi
movq 0x762d1(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0xc0(%rbp)
jmp 0x11cad
movq -0xc0(%rbp), %rdi
leaq 0x52778(%rip), %rsi     # 0x64433
callq 0x8400
movq %rax, -0xc8(%rbp)
jmp 0x11cc9
movq -0xc8(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x83c0
jmp 0x11cdb
movq -0x10(%rbp), %rdi
movq 0x7628a(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0xd0(%rbp)
jmp 0x11cf4
movq -0xd0(%rbp), %rdi
leaq 0x526af(%rip), %rsi     # 0x643b1
callq 0x8400
jmp 0x11d09
movq -0x10(%rbp), %rdi
movq 0x7625c(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0xd8(%rbp)
jmp 0x11d22
movq -0xd8(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x83c0
movq %rax, -0xe0(%rbp)
jmp 0x11d3e
movq -0xe0(%rbp), %rdi
leaq 0x52487(%rip), %rsi     # 0x641d3
callq 0x8400
jmp 0x11d53
movq -0xb8(%rbp), %rax
movq -0x18(%rbp), %rcx
movb $0x1, 0x1d1(%rcx)
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x13a40
jmp 0x11d78
movq -0x18(%rbp), %rax
movb $0x0, 0x1d1(%rax)
movq -0x10(%rbp), %rdi
leaq 0x526b1(%rip), %rsi     # 0x6443f
callq 0x8400
movq %rax, -0xe8(%rbp)
jmp 0x11d9c
movq -0xe8(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x83c0
jmp 0x11db1
movq -0x10(%rbp), %rdi
movq 0x761b4(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0xf0(%rbp)
jmp 0x11dca
movq -0xf0(%rbp), %rdi
leaq 0x525d9(%rip), %rsi     # 0x643b1
callq 0x8400
jmp 0x11ddf
movq -0x10(%rbp), %rdi
movq 0x76186(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0xf8(%rbp)
jmp 0x11df8
movq -0xf8(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x83c0
movq %rax, -0x100(%rbp)
jmp 0x11e11
movq -0x100(%rbp), %rdi
leaq 0x523b4(%rip), %rsi     # 0x641d3
callq 0x8400
jmp 0x11e26
movq -0xb8(%rbp), %rax
movq -0x18(%rbp), %rcx
movb $0x1, 0x1d1(%rcx)
movq 0x18(%rax), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x11b10
jmp 0x11e4b
movq -0x18(%rbp), %rax
movb $0x0, 0x1d1(%rax)
movq -0x10(%rbp), %rdi
leaq 0x525de(%rip), %rsi     # 0x6443f
callq 0x8400
movq %rax, -0x108(%rbp)
jmp 0x11e6f
movq -0x108(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x83c0
jmp 0x11e84
movq -0x10(%rbp), %rdi
movq 0x760e1(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0x110(%rbp)
jmp 0x11e9d
movq -0x110(%rbp), %rdi
leaq 0x52506(%rip), %rsi     # 0x643b1
callq 0x8400
jmp 0x11eb2
jmp 0x11eb4
jmp 0x11eb6
movq -0x18(%rbp), %rax
testb $0x1, 0x218(%rax)
je 0x11f0f
movq -0x10(%rbp), %rdi
movq 0x760a2(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, -0x118(%rbp)
jmp 0x11edc
movq -0x118(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x83c0
movq %rax, -0x120(%rbp)
jmp 0x11ef8
movq -0x120(%rbp), %rdi
leaq 0x522cd(%rip), %rsi     # 0x641d3
callq 0x8400
jmp 0x11f0d
jmp 0x11f0f
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 $0x120, %rsp            # imm = 0x120
popq %rbp
retq
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)