// File: gioannides[P]Language_Processors/src/../include/ast/ast_node.hpp
// Function: TranslationUnit::render_asm(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>) const
virtual void render_asm(std::string file_name) const {

			
			std::ofstream file;
			file.open(file_name.c_str());

			std::string new_file_name = "";

			for(int i(0); i < file_name.size(); ++i) {
				if(file_name[i] != '.') {
					new_file_name += file_name[i];
					break;
				}
			}
			file << "\t.file 1 " << "\"" << new_file_name << ".c\"" << std::endl;
			file << "\t.section .mdebug.abi32" << std::endl;
			file << "\t.previous" <<std::endl;
			file << "\t.nan legacy" << std::endl;
			file << "\t.module fp=32" << std::endl;
			file << "\t.module nooddspreg" << std::endl;
			file << "\t.abicalls" << std::endl;
			if(TranslationUnitPtr != NULL){
				TranslationUnitPtr->render_asm(file,contxt);
			}
			if( ExternalDecl != NULL){
				ExternalDecl->render_asm(file,contxt);
			}
			
			// for (int i=0; i<contxt.functions_declared.size(); i++)
			// {
			// 	std::cout << contxt.functions_declared[i].name << " - " << contxt.functions_declared[i].paramters_size; 
			// }
			 // print_scopes(contxt,file);
			  //print_variables(contxt,file);
			//print_declared(contxt, file);
		}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2d0, %rsp            # imm = 0x2D0
movq %rsi, -0x258(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x260(%rbp)
leaq -0x210(%rbp), %rdi
movq %rdi, -0x250(%rbp)
callq 0x86f0
movq -0x258(%rbp), %rdi
callq 0x8180
movq -0x250(%rbp), %rdi
movq %rax, %rsi
movl $0x10, %edx
callq 0x8080
jmp 0x9f1a
leaq -0x241(%rbp), %rdi
movq %rdi, -0x268(%rbp)
callq 0x8770
movq -0x268(%rbp), %rdx
leaq 0x5a581(%rip), %rsi     # 0x644bc
leaq -0x240(%rbp), %rdi
callq 0x85a0
jmp 0x9f49
leaq -0x241(%rbp), %rdi
callq 0x8480
movl $0x0, -0x248(%rbp)
movq -0x258(%rbp), %rdi
movslq -0x248(%rbp), %rax
movq %rax, -0x270(%rbp)
callq 0x8310
movq %rax, %rcx
movq -0x270(%rbp), %rax
cmpq %rcx, %rax
jae 0xa064
movq -0x258(%rbp), %rdi
movslq -0x248(%rbp), %rsi
callq 0x8860
movq %rax, -0x278(%rbp)
jmp 0x9fa8
movq -0x278(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2e, %eax
je 0xa04e
movq -0x258(%rbp), %rdi
movslq -0x248(%rbp), %rsi
callq 0x8860
movq %rax, -0x280(%rbp)
jmp 0x9fd7
movq -0x280(%rbp), %rax
movsbl (%rax), %esi
leaq -0x240(%rbp), %rdi
callq 0x82a0
jmp 0x9fef
jmp 0xa064
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
jmp 0xa290
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
leaq -0x241(%rbp), %rdi
callq 0x8480
jmp 0xa290
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
leaq -0x240(%rbp), %rdi
callq 0x8280
jmp 0xa290
jmp 0xa050
movl -0x248(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x248(%rbp)
jmp 0x9f5f
leaq 0x5a1c7(%rip), %rsi     # 0x64232
leaq -0x210(%rbp), %rdi
callq 0x8400
movq %rax, -0x288(%rbp)
jmp 0xa080
movq -0x288(%rbp), %rdi
leaq 0x5a103(%rip), %rsi     # 0x64191
callq 0x8400
movq %rax, -0x290(%rbp)
jmp 0xa09c
movq -0x290(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x83c0
movq %rax, -0x298(%rbp)
jmp 0xa0b8
movq -0x298(%rbp), %rdi
leaq 0x5a176(%rip), %rsi     # 0x6423c
callq 0x8400
movq %rax, -0x2a0(%rbp)
jmp 0xa0d4
movq -0x2a0(%rbp), %rdi
movq 0x7de8e(%rip), %rsi     # 0x87f70
callq 0x8450
jmp 0xa0e9
leaq 0x5a150(%rip), %rsi     # 0x64240
leaq -0x210(%rbp), %rdi
callq 0x8400
movq %rax, -0x2a8(%rbp)
jmp 0xa105
movq -0x2a8(%rbp), %rdi
movq 0x7de5d(%rip), %rsi     # 0x87f70
callq 0x8450
jmp 0xa11a
leaq 0x5a137(%rip), %rsi     # 0x64258
leaq -0x210(%rbp), %rdi
callq 0x8400
movq %rax, -0x2b0(%rbp)
jmp 0xa136
movq -0x2b0(%rbp), %rdi
movq 0x7de2c(%rip), %rsi     # 0x87f70
callq 0x8450
jmp 0xa14b
leaq 0x5a111(%rip), %rsi     # 0x64263
leaq -0x210(%rbp), %rdi
callq 0x8400
movq %rax, -0x2b8(%rbp)
jmp 0xa167
movq -0x2b8(%rbp), %rdi
movq 0x7ddfb(%rip), %rsi     # 0x87f70
callq 0x8450
jmp 0xa17c
leaq 0x5a0ed(%rip), %rsi     # 0x64270
leaq -0x210(%rbp), %rdi
callq 0x8400
movq %rax, -0x2c0(%rbp)
jmp 0xa198
movq -0x2c0(%rbp), %rdi
movq 0x7ddca(%rip), %rsi     # 0x87f70
callq 0x8450
jmp 0xa1ad
leaq 0x5a0cb(%rip), %rsi     # 0x6427f
leaq -0x210(%rbp), %rdi
callq 0x8400
movq %rax, -0x2c8(%rbp)
jmp 0xa1c9
movq -0x2c8(%rbp), %rdi
movq 0x7dd99(%rip), %rsi     # 0x87f70
callq 0x8450
jmp 0xa1de
leaq 0x5a0ae(%rip), %rsi     # 0x64293
leaq -0x210(%rbp), %rdi
callq 0x8400
movq %rax, -0x2d0(%rbp)
jmp 0xa1fa
movq -0x2d0(%rbp), %rdi
movq 0x7dd68(%rip), %rsi     # 0x87f70
callq 0x8450
jmp 0xa20f
movq -0x260(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0xa23f
movq -0x260(%rbp), %rax
movq 0x10(%rax), %rdi
leaq 0x7e659(%rip), %rdx     # 0x88888
leaq -0x210(%rbp), %rsi
callq 0xe680
jmp 0xa23d
jmp 0xa23f
movq -0x260(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0xa26f
movq -0x260(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x7e629(%rip), %rdx     # 0x88888
leaq -0x210(%rbp), %rsi
callq 0xe6e0
jmp 0xa26d
jmp 0xa26f
leaq -0x240(%rbp), %rdi
callq 0x8280
leaq -0x210(%rbp), %rdi
callq 0x8630
addq $0x2d0, %rsp            # imm = 0x2D0
popq %rbp
retq
leaq -0x210(%rbp), %rdi
callq 0x8630
movq -0x218(%rbp), %rdi
callq 0x8760
nopl (%rax,%rax)