// File: /workspace/github_cpp_makefile_star2_O3/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 %rbx
pushq %rax
cmpq $0x0, 0x20(%rdi)
je 0xc644
movq %rdi, %r14
cmpq $0x0, 0x8(%rdi)
je 0xc644
movq %rsi, %rbx
movq 0x10(%r14), %rdi
testq %rdi, %rdi
je 0xc2c0
cmpq $0x0, 0x18(%r14)
jne 0xc2c0
cmpq $0x0, 0x28(%r14)
jne 0xc2c0
cmpq $0x0, 0x30(%r14)
jne 0xc2c0
testb %dl, %dl
jne 0xc2ad
cmpl $0x0, 0x62322(%rip)     # 0x6e524
jle 0xc227
xorl %ebp, %ebp
leaq 0x2b4ef(%rip), %r15     # 0x376fc
movl $0x1, %edx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x73a0
incl %ebp
cmpl 0x622ff(%rip), %ebp     # 0x6e524
jl 0xc20d
leaq 0x2b234(%rip), %rsi     # 0x37462
movl $0x3, %edx
movq %rbx, %rdi
callq 0x73a0
movb $0x1, 0x622e8(%rip)     # 0x6e52a
movq 0x8(%r14), %rax
movq %rax, %rcx
movq 0x10(%rax), %rax
testq %rax, %rax
jne 0xc246
movq 0x8(%rcx), %rdi
movq %rbx, %rsi
callq 0xc8c0
movb $0x0, 0x622c5(%rip)     # 0x6e52a
leaq 0x2b1a9(%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), %rdi
testq %rdi, %rdi
je 0xc675
cmpq $0x0, 0x10(%rdi)
je 0xc318
movq %rbx, %rsi
xorl %edx, %edx
callq 0xc0e4
jmp 0xc32e
movq 0x10(%r14), %rdi
testq %rdi, %rdi
je 0xc644
cmpq $0x0, 0x18(%r14)
je 0xc644
cmpq $0x0, 0x28(%r14)
je 0xc644
cmpq $0x0, 0x30(%r14)
jne 0xc644
testb %dl, %dl
je 0xc35f
cmpq $0x0, 0x10(%rdi)
jne 0xc437
incl 0x62221(%rip)           # 0x6e524
movq %rbx, %rsi
xorl %edx, %edx
callq 0xc0e4
decl 0x62211(%rip)           # 0x6e524
jmp 0xc441
incl 0x62206(%rip)           # 0x6e524
movq %rbx, %rsi
xorl %edx, %edx
callq 0xc0e4
decl 0x621f6(%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
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x7220
cmpl $0x0, 0x621be(%rip)     # 0x6e524
jle 0xc38b
xorl %ebp, %ebp
leaq 0x2b38b(%rip), %r15     # 0x376fc
movl $0x1, %edx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x73a0
incl %ebp
cmpl 0x6219b(%rip), %ebp     # 0x6e524
jl 0xc371
leaq 0x2b0d0(%rip), %rsi     # 0x37462
movl $0x3, %edx
movq %rbx, %rdi
callq 0x73a0
movb $0x1, 0x62184(%rip)     # 0x6e52a
movq 0x8(%r14), %rax
movq %rax, %rcx
movq 0x10(%rax), %rax
testq %rax, %rax
jne 0xc3aa
movq 0x8(%rcx), %rdi
movq %rbx, %rsi
callq 0xc8c0
movb $0x0, 0x62161(%rip)     # 0x6e52a
leaq 0x2b045(%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 0xc429
leaq 0x2b034(%rip), %rsi     # 0x37448
movl $0x4, %edx
movq %rbx, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
cmpq $0x0, 0x10(%r15)
je 0xc64f
movq %r15, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0xc0e4
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), %rax
movq 0x30(%rax), %rax
testq %rax, %rax
je 0xc54c
cmpq $0x0, 0x20(%rax)
je 0xc54c
cmpl $0x0, 0x62099(%rip)     # 0x6e524
jle 0xc4b0
xorl %ebp, %ebp
leaq 0x2b266(%rip), %r15     # 0x376fc
movl $0x1, %edx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x73a0
incl %ebp
cmpl 0x62076(%rip), %ebp     # 0x6e524
jl 0xc496
leaq 0x2afa9(%rip), %rsi     # 0x37460
movl $0x5, %edx
movq %rbx, %rdi
callq 0x73a0
movb $0x1, 0x6205f(%rip)     # 0x6e52a
movq 0x18(%r14), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, %rcx
movq 0x10(%rax), %rax
testq %rax, %rax
jne 0xc4d7
movq 0x8(%rcx), %rdi
movq %rbx, %rsi
callq 0xc8c0
movb $0x0, 0x62034(%rip)     # 0x6e52a
leaq 0x2af18(%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
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0xc0e4
cmpl $0x0, 0x61fd1(%rip)     # 0x6e524
jle 0xc578
xorl %ebp, %ebp
leaq 0x2b19e(%rip), %r15     # 0x376fc
movl $0x1, %edx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x73a0
incl %ebp
cmpl 0x61fae(%rip), %ebp     # 0x6e524
jl 0xc55e
leaq 0x2aedb(%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, 0x61f70(%rip)     # 0x6e52a
movq 0x18(%r14), %r14
testq %r14, %r14
jne 0xc5df
leaq 0x2ae7e(%rip), %rsi     # 0x37448
movl $0x4, %edx
movq %rbx, %rdi
callq 0x73a0
movq %rbx, %rdi
callq 0x7180
cmpq $0x0, 0x10(%r14)
je 0xc61c
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0xc0e4
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 0xc63d
incl 0x61f02(%rip)           # 0x6e524
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0xc0e4
decl 0x61eef(%rip)           # 0x6e524
movq %rbx, %rdi
callq 0x7180
movb $0x0, 0x61ee6(%rip)     # 0x6e52a
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
incl 0x61ecf(%rip)           # 0x6e524
movq %r15, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0xc0e4
decl 0x61ebc(%rip)           # 0x6e524
movq %rbx, %rdi
callq 0x7180
jmp 0xc468
movq %rbx, %rdi
callq 0x76c1
nop