// File: /workspace/github_cpp_makefile_star2_O3/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 0xbb24
movzbl %bpl, %edx
movzbl %r15b, %ecx
movq %rbx, %rsi
callq 0xbaf8
testb %r15b, %r15b
je 0xbbae
movq 0x38(%r14), %rdi
testq %rdi, %rdi
je 0xbb88
leaq 0x2b8e7(%rip), %rsi     # 0x37424
callq 0x70c0
testl %eax, %eax
jne 0xbb4d
movb $0x1, 0x629b3(%rip)     # 0x6e500
leaq 0x2b8d5(%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 0x2b8f6(%rip), %rsi     # 0x37471
movl $0x1, %edx
movq %rax, %rdi
callq 0x73a0
movq 0x10(%r14), %rax
testq %rax, %rax
je 0xbbe4
movq 0x8(%rax), %rdi
testq %rdi, %rdi
je 0xbc8d
movq %rbx, %rsi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0xbf88
movl 0x62970(%rip), %eax     # 0x6e524
testl %eax, %eax
je 0xbc01
testl %eax, %eax
jle 0xbc27
xorl %r12d, %r12d
leaq 0x2bb36(%rip), %r15     # 0x376fc
movl $0x1, %edx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x73a0
incl %r12d
cmpl 0x62944(%rip), %r12d    # 0x6e524
jl 0xbbc6
jmp 0xbc27
movq 0x18(%r14), %rdi
testq %rdi, %rdi
je 0xbc8d
movq %rbx, %rsi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0xbd32
cmpb $0x0, 0x62920(%rip)     # 0x6e528
jne 0xbc27
movq 0x38(%r14), %rsi
testq %rsi, %rsi
je 0xbc27
leaq 0x4ea2e(%rip), %rdi     # 0x5a648
callq 0xbcf4
movl 0x628ff(%rip), %eax     # 0x6e524
jmp 0xbbb8
movb 0x628fb(%rip), %al      # 0x6e528
testb %bpl, %bpl
je 0xbc6a
testb $0x1, %al
jne 0xbc6e
movq 0x38(%r14), %rax
testq %rax, %rax
je 0xbc8d
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbx, %rdi
callq 0x73a0
leaq 0x2bafe(%rip), %rsi     # 0x37753
movl $0x1, %edx
movq %rax, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x73a0
testb $0x1, %al
je 0xbc96
movq 0x38(%r14), %rax
testq %rax, %rax
je 0xbc86
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbx, %rdi
callq 0x73a0
movb $0x0, 0x6289b(%rip)     # 0x6e528
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq 0x38(%r14), %rax
testq %rax, %rax
je 0xbc8d
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbx, %rdi
callq 0x73a0
movq %rax, %rbx
leaq 0x2b769(%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