// File: /workspace/github_cpp_makefile_star2_O1/gioannides[P]Language_Processors/src/../include/ast/ast_node_python.cpp
// Function: SelectionStatement::print_py(std::basic_ofstream<char, std::char_traits<char>>&, bool)
inline void SelectionStatement::print_py(std::ofstream& file,bool elseif) { 	//the elseif flag is initially set to false when the program starts for the first time
	
	if( SELECTIVE_IF != NULL && AssignmentExpressionPtr != NULL && StatementPtr != NULL && StatementPtr2 == NULL && SELECTIVE_ELSE == NULL && SELECTIVE_SWITCH == NULL) {
				
								
		if(elseif == false){						//if the elseif flag is on, then this has already been printed as elif, from below, so skip (looked ahead)
			
			for( int i(0); i<counter_py; i++) { file << "\t"; } 	// the elseif flag cannot be ON if this is the first time we execute, so the check here is fine to do
				file << "if(";					//always ident when entering a new scope
				is_Selective = true;
				AssignmentExpressionPtr->print_py(file) ;
				is_Selective = false;
				file << "):" << std::endl;
			
		}
			Indent_Generator(StatementPtr,file,elseif);
	}

	else if (SELECTIVE_IF!=NULL&&AssignmentExpressionPtr!=NULL&&StatementPtr!=NULL&&StatementPtr2!=NULL&&SELECTIVE_ELSE!=NULL&&SELECTIVE_SWITCH==NULL) {


		if(elseif == false) {						//modification of elseif variable has not been made on first entry so is ok (ie. the elseif is still 											//initialized to false)
			for( int i(0); i<counter_py; i++) { file << "\t"; } 
			file << "if(";
			is_Selective = true;
			AssignmentExpressionPtr->print_py(file) ;
			is_Selective = false;
			file << "):" << std::endl;
			Indent_Generator(StatementPtr,file,elseif);  
				
		}

		if(elseif == true) {					//If the elseif was detected from the previous iteration, then the body of it is in the next
									//therefore will be printed here
			
			 Indent_Generator(StatementPtr,file,elseif); 
			 elseif = false;
		}

		if( (StatementPtr2->SelectionStatementPtr != NULL && (StatementPtr2->SelectionStatementPtr)->SELECTIVE_IF) != NULL) { //check for else-if scenario

			elseif = true;
		}

		if(elseif == false) {
		
			for( int i(0); i<counter_py; i++) { file << "\t"; } 
			file << "else:";
			file << std::endl;
			is_Selective = true;
			Indent_Generator(StatementPtr2,file,elseif);
			is_Selective = false;
		}

		else if (elseif == true){

			for( int i(0); i<counter_py; i++) { file << "\t"; }	
			file <<"elif(";
			is_Selective = true;
	       		((StatementPtr2->SelectionStatementPtr)->AssignmentExpressionPtr)->print_py(file) ;
			elseif = true;
			is_Selective = false;
			file << "):" << std::endl;		
			StatementPtr2->print_py(file,elseif); 
					
		}				
				
				
	}
	


}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq 0x20(%rdi), %rax
testq %rax, %rax
je 0xd028
movl %edx, %ebp
movq %rsi, %rbx
movq %rdi, %r14
cmpq $0x0, 0x8(%rdi)
je 0xcc0b
cmpq $0x0, 0x10(%r14)
je 0xcc0b
cmpq $0x0, 0x18(%r14)
jne 0xcc0b
cmpq $0x0, 0x28(%r14)
jne 0xcc0b
cmpq $0x0, 0x30(%r14)
jne 0xcc0b
testb %bpl, %bpl
jne 0xcbaa
cmpl $0x0, 0x61a08(%rip)     # 0x6e524
jle 0xcb41
xorl %ebp, %ebp
leaq 0x2abd5(%rip), %r15     # 0x376fc
movl $0x1, %edx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x73a0
incl %ebp
cmpl 0x619e5(%rip), %ebp     # 0x6e524
jl 0xcb27
leaq 0x2a91a(%rip), %rsi     # 0x37462
movl $0x3, %edx
movq %rbx, %rdi
callq 0x73a0
movb $0x1, 0x619ce(%rip)     # 0x6e52a
movq 0x8(%r14), %rdi
movq %rbx, %rsi
callq 0xd254
movb $0x0, 0x619bb(%rip)     # 0x6e52a
leaq 0x2a89f(%rip), %rsi     # 0x37415
movl $0x2, %edx
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
movq 0x10(%r14), %r14
testq %r14, %r14
jne 0xcbee
leaq 0x2a88e(%rip), %rsi     # 0x37448
movl $0x4, %edx
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
cmpq $0x0, 0x10(%r14)
je 0xcd4e
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0xca0e
jmp 0xcd67
testq %rax, %rax
je 0xd028
cmpq $0x0, 0x8(%r14)
je 0xd028
cmpq $0x0, 0x10(%r14)
je 0xd028
cmpq $0x0, 0x18(%r14)
je 0xd028
cmpq $0x0, 0x28(%r14)
je 0xd028
cmpq $0x0, 0x30(%r14)
jne 0xd028
testb %bpl, %bpl
jne 0xcdc0
cmpl $0x0, 0x618c9(%rip)     # 0x6e524
jle 0xcc83
xorl %r12d, %r12d
leaq 0x2aa95(%rip), %r15     # 0x376fc
movl $0x1, %edx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x73a0
incl %r12d
cmpl 0x618a3(%rip), %r12d    # 0x6e524
jl 0xcc67
leaq 0x2a7d8(%rip), %rsi     # 0x37462
movl $0x3, %edx
movq %rbx, %rdi
callq 0x73a0
movb $0x1, 0x6188c(%rip)     # 0x6e52a
movq 0x8(%r14), %rdi
movq %rbx, %rsi
callq 0xd254
movb $0x0, 0x61879(%rip)     # 0x6e52a
leaq 0x2a75d(%rip), %rsi     # 0x37415
movl $0x2, %edx
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
movq 0x10(%r14), %r15
testq %r15, %r15
jne 0xcd11
leaq 0x2a74c(%rip), %rsi     # 0x37448
movl $0x4, %edx
movq %rbx, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
cmpq $0x0, 0x10(%r15)
je 0xcd96
movq %r15, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0xca0e
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
jmp 0xcdb7
incl 0x617d0(%rip)           # 0x6e524
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0xca0e
decl 0x617bd(%rip)           # 0x6e524
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
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x7220
incl 0x61788(%rip)           # 0x6e524
movq %r15, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0xca0e
decl 0x61775(%rip)           # 0x6e524
movq %rbx, %rdi
callq 0x7180
testb %bpl, %bpl
je 0xce5c
movq 0x10(%r14), %r15
testq %r15, %r15
jne 0xce04
leaq 0x2a678(%rip), %rsi     # 0x37448
movl $0x4, %edx
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
cmpq $0x0, 0x10(%r15)
je 0xce1a
movq %r15, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0xca0e
jmp 0xce33
incl 0x61704(%rip)           # 0x6e524
movq %r15, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0xca0e
decl 0x616f1(%rip)           # 0x6e524
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
xorl %ebp, %ebp
movq 0x18(%r14), %rax
movq 0x30(%rax), %rax
testq %rax, %rax
je 0xce73
cmpq $0x0, 0x20(%rax)
setne %al
jmp 0xce75
xorl %eax, %eax
orb %al, %bpl
movl 0x616a6(%rip), %eax     # 0x6e524
je 0xcf35
testl %eax, %eax
jle 0xceab
xorl %ebp, %ebp
leaq 0x2a86b(%rip), %r15     # 0x376fc
movl $0x1, %edx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x73a0
incl %ebp
cmpl 0x6167b(%rip), %ebp     # 0x6e524
jl 0xce91
leaq 0x2a5ae(%rip), %rsi     # 0x37460
movl $0x5, %edx
movq %rbx, %rdi
callq 0x73a0
movb $0x1, 0x61664(%rip)     # 0x6e52a
movq 0x18(%r14), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rdi
movq %rbx, %rsi
callq 0xd254
movb $0x0, 0x61649(%rip)     # 0x6e52a
leaq 0x2a52d(%rip), %rsi     # 0x37415
movl $0x2, %edx
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
movq 0x18(%r14), %rdi
movq %rbx, %rsi
movl $0x1, %edx
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0xca0e
testl %eax, %eax
jle 0xcf5c
xorl %ebp, %ebp
leaq 0x2a7ba(%rip), %r15     # 0x376fc
movl $0x1, %edx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x73a0
incl %ebp
cmpl 0x615ca(%rip), %ebp     # 0x6e524
jl 0xcf42
leaq 0x2a4f7(%rip), %rsi     # 0x3745a
movl $0x5, %edx
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
movb $0x1, 0x6158c(%rip)     # 0x6e52a
movq 0x18(%r14), %r14
testq %r14, %r14
jne 0xcfc3
leaq 0x2a49a(%rip), %rsi     # 0x37448
movl $0x4, %edx
movq %rbx, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
cmpq $0x0, 0x10(%r14)
je 0xd000
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0xca0e
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
jmp 0xd021
incl 0x6151e(%rip)           # 0x6e524
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0xca0e
decl 0x6150b(%rip)           # 0x6e524
movq %rbx, %rdi
callq 0x7180
movb $0x0, 0x61502(%rip)     # 0x6e52a
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
nop