// File: gioannides[P]Language_Processors/src/../include/ast/ast_Expressions.cpp
// Function: InclusiveOrExpression::render_asm(std::basic_ofstream<char, std::char_traits<char>>&, Context&)
inline void InclusiveOrExpression::render_asm(std::ofstream& file,Context& contxt) {
			

			if(INC_OR==NULL && EXclusiveOrExpression != NULL){
				EXclusiveOrExpression->render_asm(file,contxt);
			}
			if(contxt.LocalArray && contxt.reading && contxt.function){
				if(InclusiveOrExpressionPtr != NULL && 	EXclusiveOrExpression != NULL){
					InclusiveOrExpressionPtr->render_asm(file,contxt);
					EXclusiveOrExpression->render_asm(file,contxt);
				}
					if(contxt.ArraySize.size()>=2){
						int result = contxt.ArraySize[contxt.ArraySize.size()-2] |  contxt.ArraySize[contxt.ArraySize.size()-1];
						contxt.ArraySize.pop_back();
						contxt.ArraySize.pop_back();
						contxt.ArraySize.push_back(result);
					}
						
			}
			else if(InclusiveOrExpressionPtr != NULL && !contxt.reading && EXclusiveOrExpression != NULL && INC_OR != NULL) { 
				InclusiveOrExpressionPtr->render_asm(file,contxt);
				contxt.Regs++;
				EXclusiveOrExpression->render_asm(file,contxt);
				
				if(contxt.enum_constant){
					if(contxt.EnumOperands.size()>=2){
						int result =  contxt.EnumOperands[contxt.EnumOperands.size()-2] | contxt.EnumOperands[contxt.EnumOperands.size()-1];
						contxt.EnumOperands.pop_back();
						contxt.EnumOperands.pop_back();
						contxt.EnumOperands.push_back(result);
					}
				}
				if (contxt.function && !contxt.sizeof_ && !contxt.enum_constant )
				{
					typePromotion(contxt.Regs,contxt.Regs+1,file,contxt);
					file << std::endl << "\tor\t$" << contxt.Regs << ", $" << contxt.Regs << ", $" << contxt.Regs + 1;
					
					contxt.regType[contxt.Regs]='i';
					contxt.regType[contxt.Regs+1]='i';
					
				}
				else 
				{
					if(!contxt.sizeof_ && !contxt.enum_constant){
						contxt.eval[contxt.Regs] = contxt.eval[contxt.Regs] | contxt.eval[contxt.Regs+1];
					}
				}
				contxt.Regs--;
			}
		}

// 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, 0x10(%rax)
jne 0x163e3
movq -0x28(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x163e3
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x167d0
movq -0x18(%rbp), %rax
testb $0x1, 0x74(%rax)
je 0x164fc
movq -0x18(%rbp), %rax
testb $0x1, 0x21b(%rax)
je 0x164fc
movq -0x18(%rbp), %rax
testb $0x1, 0x218(%rax)
je 0x164fc
movq -0x28(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x16453
movq -0x28(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x16453
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x163a0
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x167d0
movq -0x18(%rbp), %rdi
addq $0x78, %rdi
callq 0x11a60
cmpq $0x2, %rax
jb 0x164f7
movq -0x18(%rbp), %rax
addq $0x78, %rax
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rdi
addq $0x78, %rdi
callq 0x11a60
movq -0x40(%rbp), %rdi
movq %rax, %rsi
subq $0x2, %rsi
callq 0x11a80
movl (%rax), %eax
movl %eax, -0x2c(%rbp)
movq -0x18(%rbp), %rax
addq $0x78, %rax
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rdi
addq $0x78, %rdi
callq 0x11a60
movq -0x38(%rbp), %rdi
movq %rax, %rsi
subq $0x1, %rsi
callq 0x11a80
movq %rax, %rcx
movl -0x2c(%rbp), %eax
orl (%rcx), %eax
movl %eax, -0x1c(%rbp)
movq -0x18(%rbp), %rdi
addq $0x78, %rdi
callq 0x15e90
movq -0x18(%rbp), %rdi
addq $0x78, %rdi
callq 0x15e90
movq -0x18(%rbp), %rdi
addq $0x78, %rdi
leaq -0x1c(%rbp), %rsi
callq 0x15ec0
jmp 0x167be
movq -0x28(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x167bc
movq -0x18(%rbp), %rax
testb $0x1, 0x21b(%rax)
jne 0x167bc
movq -0x28(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x167bc
movq -0x28(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x167bc
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x163a0
movq -0x28(%rbp), %rax
movq -0x18(%rbp), %rcx
movl 0x310(%rcx), %edx
addl $0x1, %edx
movl %edx, 0x310(%rcx)
movq 0x8(%rax), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x167d0
movq -0x18(%rbp), %rax
testb $0x1, 0x14d(%rax)
je 0x16644
movq -0x18(%rbp), %rdi
addq $0x150, %rdi            # imm = 0x150
callq 0x11a60
cmpq $0x2, %rax
jb 0x16642
movq -0x18(%rbp), %rax
addq $0x150, %rax            # imm = 0x150
movq %rax, -0x58(%rbp)
movq -0x18(%rbp), %rdi
addq $0x150, %rdi            # imm = 0x150
callq 0x11a60
movq -0x58(%rbp), %rdi
movq %rax, %rsi
subq $0x2, %rsi
callq 0x11a80
movl (%rax), %eax
movl %eax, -0x44(%rbp)
movq -0x18(%rbp), %rax
addq $0x150, %rax            # imm = 0x150
movq %rax, -0x50(%rbp)
movq -0x18(%rbp), %rdi
addq $0x150, %rdi            # imm = 0x150
callq 0x11a60
movq -0x50(%rbp), %rdi
movq %rax, %rsi
subq $0x1, %rsi
callq 0x11a80
movq %rax, %rcx
movl -0x44(%rbp), %eax
orl (%rcx), %eax
movl %eax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
addq $0x150, %rdi            # imm = 0x150
callq 0x15e90
movq -0x18(%rbp), %rdi
addq $0x150, %rdi            # imm = 0x150
callq 0x15e90
movq -0x18(%rbp), %rdi
addq $0x150, %rdi            # imm = 0x150
leaq -0x20(%rbp), %rsi
callq 0x15ec0
jmp 0x16644
movq -0x18(%rbp), %rax
testb $0x1, 0x218(%rax)
je 0x16746
movq -0x18(%rbp), %rax
testb $0x1, 0x1f8(%rax)
jne 0x16746
movq -0x18(%rbp), %rax
testb $0x1, 0x14d(%rax)
jne 0x16746
movq -0x18(%rbp), %rax
movl 0x310(%rax), %edi
movq -0x18(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
movq -0x10(%rbp), %rdx
movq -0x18(%rbp), %rcx
callq 0x16000
movq -0x10(%rbp), %rdi
movq 0x718ca(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x4de45(%rip), %rsi     # 0x644fa
callq 0x8400
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x310(%rax), %esi
callq 0x8730
movq %rax, %rdi
leaq 0x4de7a(%rip), %rsi     # 0x64550
callq 0x8400
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x310(%rax), %esi
callq 0x8730
movq %rax, %rdi
leaq 0x4de59(%rip), %rsi     # 0x64550
callq 0x8400
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq -0x18(%rbp), %rax
movq -0x18(%rbp), %rcx
movslq 0x310(%rcx), %rcx
movb $0x69, 0x341(%rax,%rcx)
movq -0x18(%rbp), %rax
movq -0x18(%rbp), %rcx
movl 0x310(%rcx), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movb $0x69, 0x341(%rax,%rcx)
jmp 0x167a9
movq -0x18(%rbp), %rax
testb $0x1, 0x1f8(%rax)
jne 0x167a7
movq -0x18(%rbp), %rax
testb $0x1, 0x14d(%rax)
jne 0x167a7
movq -0x18(%rbp), %rax
movq -0x18(%rbp), %rcx
movslq 0x310(%rcx), %rcx
movl 0x5f8(%rax,%rcx,4), %edx
movq -0x18(%rbp), %rax
movq -0x18(%rbp), %rcx
movl 0x310(%rcx), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
orl 0x5f8(%rax,%rcx,4), %edx
movq -0x18(%rbp), %rax
movq -0x18(%rbp), %rcx
movslq 0x310(%rcx), %rcx
movl %edx, 0x5f8(%rax,%rcx,4)
jmp 0x167a9
movq -0x18(%rbp), %rax
movl 0x310(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x310(%rax)
jmp 0x167be
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop