// File: /workspace/github_cpp_makefile_star2_O1/gioannides[P]Language_Processors/src/../include/ast/ast_node_python.cpp
// Function: DirectDeclarator::print_py(std::basic_ofstream<char, std::char_traits<char>>&, bool, bool)
inline void DirectDeclarator::print_py(std::ofstream& file, bool initialized, bool function) {


			if( DirectDeclaratorPtr != NULL) {

				DirectDeclaratorPtr->print_py(file,initialized,function);
			}

			if(!function) {							//This handles initializing variables, and identifying the global ones by the level of indentation of
											// counter_py
				if(counter_py == 0 && !ParameterVariable ){
					if(IDENTIFIER != NULL){
						GlobalVars.push_back(*IDENTIFIER);
					}
				}
	
				for( int i(0); i<counter_py; i++) { file << "\t"; }
				if(!initialized && !ParameterVariable){
					if(IDENTIFIER != NULL){
						file << *IDENTIFIER << "=0" << std::endl;
					}
				}

				else if(!ParameterVariable){
					if(IDENTIFIER != NULL){
						file << *IDENTIFIER << "=";
					}
				}
				else{
					if(IDENTIFIER != NULL){
						file << *IDENTIFIER;
					}
					ParameterVariable = false;
				}
				

			}
			
			else{								//This is handling functions and printing the main part of a standard python program

				if( IDENTIFIER != NULL ) {
					if( *IDENTIFIER == "main") { main_ = true; }
				
					file << "def " << *IDENTIFIER << "(";

				}
			
				if( ParameterTypeLiSt != NULL) {
					ParameterTypeLiSt->print_py(file);
					
				}
				else if( IDentifierList != NULL) {
					IDentifierList->print_py(file);
				}

			}

		}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movl %ecx, %r15d
movl %edx, %ebp
movq %rsi, %rbx
movq %rdi, %r14
movq 0x20(%rdi), %rdi
testq %rdi, %rdi
je 0xc418
movzbl %bpl, %edx
movzbl %r15b, %ecx
movq %rbx, %rsi
callq 0xc3ec
testb %r15b, %r15b
je 0xc4a6
movq 0x38(%r14), %rdi
testq %rdi, %rdi
je 0xc47c
leaq 0x2aff3(%rip), %rsi     # 0x37424
callq 0x70c0
testl %eax, %eax
jne 0xc441
movb $0x1, 0x620bf(%rip)     # 0x6e500
leaq 0x2afe1(%rip), %rsi     # 0x37429
movl $0x4, %edx
movq %rbx, %rdi
callq 0x73a0
movq 0x38(%r14), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbx, %rdi
callq 0x73a0
leaq 0x2b002(%rip), %rsi     # 0x37471
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
movq 0x10(%r14), %rax
testq %rax, %rax
je 0xc537
movq 0x8(%rax), %rdi
testq %rdi, %rdi
je 0xc5e6
movq %rbx, %rsi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0xc8c2
cmpl $0x0, 0x62077(%rip)     # 0x6e524
jne 0xc4cd
cmpb $0x0, 0x62072(%rip)     # 0x6e528
jne 0xc4cd
movq 0x38(%r14), %rsi
testq %rsi, %rsi
je 0xc4cd
leaq 0x4e180(%rip), %rdi     # 0x5a648
callq 0xc5f0
cmpl $0x0, 0x62050(%rip)     # 0x6e524
jle 0xc4fc
xorl %r12d, %r12d
leaq 0x2b21c(%rip), %r15     # 0x376fc
movl $0x1, %edx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x73a0
incl %r12d
cmpl 0x6202a(%rip), %r12d    # 0x6e524
jl 0xc4e0
testb %bpl, %bpl
jne 0xc50a
cmpb $0x0, 0x62020(%rip)     # 0x6e528
je 0xc588
movq 0x38(%r14), %rax
cmpb $0x0, 0x62013(%rip)     # 0x6e528
je 0xc554
testq %rax, %rax
je 0xc52b
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbx, %rdi
callq 0x73a0
movb $0x0, 0x61ff6(%rip)     # 0x6e528
jmp 0xc5e6
movq 0x18(%r14), %rdi
testq %rdi, %rdi
je 0xc5e6
movq %rbx, %rsi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0xc62e
testq %rax, %rax
je 0xc5e6
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbx, %rdi
callq 0x73a0
leaq 0x2b1e0(%rip), %rsi     # 0x37753
movl $0x1, %edx
movq %rax, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x73a0
movq 0x38(%r14), %rax
testq %rax, %rax
je 0xc5e6
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbx, %rdi
callq 0x73a0
movq %rax, %rbx
leaq 0x2ae77(%rip), %rsi     # 0x37421
movl $0x2, %edx
movq %rax, %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
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x7220
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
nop