// File: 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
movq %rsp, %rbp
subq $0x20, %rsp
movb %cl, %al
movb %dl, %cl
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
andb $0x1, %cl
movb %cl, -0x11(%rbp)
andb $0x1, %al
movb %al, -0x12(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
cmpq $0x0, 0x20(%rax)
je 0xc120
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rdi
movq -0x10(%rbp), %rsi
movb -0x11(%rbp), %cl
movb -0x12(%rbp), %al
andb $0x1, %cl
andb $0x1, %al
movzbl %cl, %edx
movzbl %al, %ecx
callq 0xc0d0
testb $0x1, -0x12(%rbp)
jne 0xc235
cmpl $0x0, 0x905fb(%rip)     # 0x9c72c
jne 0xc15d
testb $0x1, 0x905f6(%rip)     # 0x9c730
jne 0xc15d
movq -0x20(%rbp), %rax
cmpq $0x0, 0x38(%rax)
je 0xc15b
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rsi
leaq 0x7c71a(%rip), %rdi     # 0x88870
callq 0xc2e0
jmp 0xc15d
movl $0x0, -0x18(%rbp)
movl -0x18(%rbp), %eax
cmpl 0x905bf(%rip), %eax     # 0x9c72c
jge 0xc18a
movq -0x10(%rbp), %rdi
leaq 0x58341(%rip), %rsi     # 0x644bb
callq 0x8400
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0xc164
testb $0x1, -0x11(%rbp)
jne 0xc1d5
testb $0x1, 0x90599(%rip)     # 0x9c730
jne 0xc1d5
movq -0x20(%rbp), %rax
cmpq $0x0, 0x38(%rax)
je 0xc1d3
movq -0x20(%rbp), %rax
movq -0x10(%rbp), %rdi
movq 0x38(%rax), %rsi
callq 0x83c0
movq %rax, %rdi
leaq 0x5801f(%rip), %rsi     # 0x641de
callq 0x8400
movq %rax, %rdi
movq 0x7bda2(%rip), %rsi     # 0x87f70
callq 0x8450
jmp 0xc230
testb $0x1, 0x90554(%rip)     # 0x9c730
jne 0xc20b
movq -0x20(%rbp), %rax
cmpq $0x0, 0x38(%rax)
je 0xc209
movq -0x20(%rbp), %rax
movq -0x10(%rbp), %rdi
movq 0x38(%rax), %rsi
callq 0x83c0
movq %rax, %rdi
leaq 0x5830e(%rip), %rsi     # 0x64512
callq 0x8400
jmp 0xc22e
movq -0x20(%rbp), %rax
cmpq $0x0, 0x38(%rax)
je 0xc227
movq -0x20(%rbp), %rax
movq -0x10(%rbp), %rdi
movq 0x38(%rax), %rsi
callq 0x83c0
movb $0x0, 0x90502(%rip)     # 0x9c730
jmp 0xc230
jmp 0xc2ce
movq -0x20(%rbp), %rax
cmpq $0x0, 0x38(%rax)
je 0xc290
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rdi
leaq 0x57f92(%rip), %rsi     # 0x641e1
callq 0x9e30
testb $0x1, %al
jne 0xc25a
jmp 0xc261
movb $0x1, 0x904c7(%rip)     # 0x9c728
movq -0x10(%rbp), %rdi
leaq 0x57f7a(%rip), %rsi     # 0x641e6
callq 0x8400
movq %rax, %rdi
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rsi
callq 0x83c0
movq %rax, %rdi
leaq 0x57fa5(%rip), %rsi     # 0x64230
callq 0x8400
movq -0x20(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0xc2ae
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rsi
callq 0xc350
jmp 0xc2cc
movq -0x20(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0xc2ca
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x10(%rbp), %rsi
callq 0xc390
jmp 0xc2cc
jmp 0xc2ce
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop