// File: /workspace/github_cpp_makefile_star2_O3/gioannides[P]Language_Processors/src/../include/ast/ast_node.hpp
// Function: TypeSpecifier::render_asm(std::basic_ofstream<char, std::char_traits<char>>&, Context&)
void render_asm(std::ofstream& file,Context& contxt) {

			if(contxt.functionReturnType && !contxt.sizeof_ && !contxt.typedefs_ && !contxt.Cast){

					contxt.functionReturnTypetemp = *TYPES;


				}



			else if( TYPES != NULL && !contxt.sizeof_ && !contxt.typedefs_ && contxt.Cast){
					std::string types = *TYPES;			

					
					if (types=="char"){
						contxt.CastType = "char"; 
					}
					else if (types=="short"){
						contxt.CastType = "short";	
					}
					else if (types=="int"){
						contxt.CastType = "int";	
					}	
					else if (types=="long"){
						contxt.CastType = "long";	
					}
					else if (types=="float"){
						contxt.CastType = "float";	
					}
					else if (types=="double"){
						contxt.CastType = "double";	
					}	
					else if (types=="signed"){
						contxt.CastType = "signed";	
					}	
					else if (types=="unsigned"){
						contxt.CastType = "unsigned";
					}
				}

			else if( EnumSpecifierPtr != NULL && !contxt.sizeof_ && !contxt.Cast){
				contxt.enum_constant = true;
				EnumSpecifierPtr->render_asm(file,contxt);
				contxt.enum_constant = false;
			}

			
			else if( TYPES != NULL && !contxt.sizeof_ && !contxt.typedefs_  && !contxt.Cast ){
				std::string types = *TYPES;		// Require conversion to be used
				
				if (types=="char"){
					if(!contxt.variable.Pointer){
						contxt.variable.word_size = 1;				///it should be size=1, you need lb and sb
					}
					contxt.variable.DataType = "char";
				}
				else if (types=="short"){
					if(!contxt.variable.Pointer){
						contxt.variable.word_size = 2;				///it should be size=1, you need lb and sb
					}
					contxt.variable.DataType = "short";
				}
				else if (types=="int"){
					if(!contxt.variable.Pointer){
						contxt.variable.word_size = 4;				///it should be size=1, you need lb and sb
					}
					contxt.variable.DataType = "int";
				}	
				else if (types=="long"){
					if(!contxt.variable.Pointer){
						contxt.variable.word_size = 8;				///it should be size=1, you need lb and sb
					}
					contxt.variable.DataType = "long";
				}
				else if (types=="float"){
					if(!contxt.variable.Pointer){
						contxt.variable.word_size = 4;				///it should be size=1, you need lb and sb
					}
					contxt.variable.DataType = "float";
					contxt.float_ = true;
				}
				else if (types=="double"){
					if(!contxt.variable.Pointer){
						contxt.variable.word_size = 8;				///it should be size=1, you need lb and sb
					}
					contxt.variable.DataType = "double";
				}	
				else if (types=="signed"){
					if(!contxt.variable.Pointer){
						contxt.variable.word_size = 4;				///it should be size=1, you need lb and sb
					}
					contxt.variable.DataType = "signed";
				}	
				else if (types=="unsigned"){
					if(!contxt.variable.Pointer){
						contxt.variable.word_size = 4;				///it should be size=1, you need lb and sb
					}
					contxt.variable.DataType = "unsigned";
					contxt.is_unsigned = true;
				}
			}
				
				
				
				else if( TYPES != NULL && !contxt.sizeof_ && contxt.typedefs_  && !contxt.Cast){
					std::string types = *TYPES;			

					if (types=="char"){
						contxt.TypeDef.TypeSpec = "char";
					}
					else if (types=="short"){
						contxt.TypeDef.TypeSpec = "short";	
					}
					else if (types=="int"){
						contxt.TypeDef.TypeSpec = "int";	
					}	
					else if (types=="long"){
						contxt.TypeDef.TypeSpec = "long";	
					}
					else if (types=="float"){
						contxt.TypeDef.TypeSpec = "float";	
					}
					else if (types=="double"){
						contxt.TypeDef.TypeSpec = "double";	
					}	
					else if (types=="signed"){
						contxt.TypeDef.TypeSpec = "signed";	
					}	
					else if (types=="unsigned"){
						contxt.TypeDef.TypeSpec = "unsigned";
					}
				}

				// if(contxt.reading) { //this is predicting total stack frame for all paramters/local declarations in function body
				// 	//contxt.variable.offset = contxt.totalStackArea;
				// 	contxt.totalStackArea += contxt.variable.word_size;
				// 	//file << "\nonly golbals get here " << contxt.totalStackArea << "\n";

				// }

				// if(!contxt.reading){ //this is execution

				// 	contxt.StackOffset += contxt.variable.word_size;
				// 	contxt.variable.offset = contxt.StackOffset-contxt.variable.word_size;
				// }

			//}
			else if(contxt.sizeof_ && TYPES != NULL && !contxt.Cast){
					if(*TYPES == "int"){
						contxt.SizeOf = 4;
					}
					else if(*TYPES == "float"){
						contxt.SizeOf = 4;
					}
					else if(*TYPES == "char"){
						contxt.SizeOf = 1;
					}
					else if(*TYPES == "short"){
						contxt.SizeOf = 2;
					}
					else if(*TYPES == "long"){
						contxt.SizeOf = 8;
					}
					else if(*TYPES == "unsigned"){
						contxt.SizeOf = 4;
					}
					else if(*TYPES == "signed"){
						contxt.SizeOf = 4;
					}
					else if(*TYPES == "double"){
						contxt.SizeOf = 8;
					}
					else if(*TYPES == "void"){
						contxt.SizeOf = 1;
					}
					else if ((*TYPES).find("short") != std::string::npos) {
    						contxt.SizeOf = 2;
					}
					else if ((*TYPES).find("long") != std::string::npos) {
    						contxt.SizeOf = 8;
					}
					else if ((*TYPES).find("double") != std::string::npos) {
    						contxt.SizeOf = 8;
					}
					else if ((*TYPES).find("int") != std::string::npos) {
    						contxt.SizeOf = 8;
					}				
				

				}
		}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdx, %rbx
movq %rdi, %r14
cmpb $0x1, 0x360(%rdx)
jne 0xed79
cmpb $0x0, 0x1f8(%rbx)
jne 0xed79
cmpb $0x0, 0x1d0(%rbx)
jne 0xed79
cmpb $0x0, 0x90(%rbx)
je 0xf264
movq 0x8(%r14), %rdi
testq %rdi, %rdi
je 0xeea8
cmpb $0x0, 0x1f8(%rbx)
jne 0xeea8
cmpb $0x0, 0x1d0(%rbx)
jne 0xeea8
cmpb $0x1, 0x90(%rbx)
jne 0xeea8
leaq 0x18(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rdi), %rsi
movq 0x8(%rdi), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %r15
movq %r15, %rdi
callq 0x8a78
leaq 0x287cf(%rip), %r14     # 0x375a4
movq %r15, %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xf282
leaq 0x287c0(%rip), %r14     # 0x375af
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xee98
leaq 0x29381(%rip), %r14     # 0x3818c
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xee98
leaq 0x28821(%rip), %r14     # 0x37644
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xee98
leaq 0x2874a(%rip), %r14     # 0x37585
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xee98
leaq 0x287f6(%rip), %r14     # 0x37649
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xee98
leaq 0x287e7(%rip), %r14     # 0x37652
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xee98
leaq 0x287cd(%rip), %r14     # 0x37650
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
jne 0xf33a
movq %r14, %rdi
callq 0x7170
movq %rax, %r8
jmp 0xf288
movq 0x18(%r14), %rax
testq %rax, %rax
je 0xeec7
cmpb $0x0, 0x1f8(%rbx)
jne 0xeec7
cmpb $0x0, 0x90(%rbx)
je 0xf104
testq %rdi, %rdi
je 0xf349
cmpb $0x0, 0x1f8(%rbx)
je 0xefee
cmpb $0x0, 0x90(%rbx)
jne 0xf349
leaq 0x2929b(%rip), %rsi     # 0x3818c
callq 0x70c0
testl %eax, %eax
je 0xf255
movq 0x8(%r14), %rdi
leaq 0x2867c(%rip), %rsi     # 0x37585
callq 0x70c0
testl %eax, %eax
je 0xf255
movq 0x8(%r14), %rdi
leaq 0x28683(%rip), %rsi     # 0x375a4
callq 0x70c0
testl %eax, %eax
je 0xf2e6
movq 0x8(%r14), %rdi
leaq 0x28676(%rip), %rsi     # 0x375af
callq 0x70c0
testl %eax, %eax
je 0xefdf
movq 0x8(%r14), %rdi
leaq 0x286f3(%rip), %rsi     # 0x37644
callq 0x70c0
testl %eax, %eax
je 0xf3df
movq 0x8(%r14), %rdi
leaq 0x286e7(%rip), %rsi     # 0x37650
callq 0x70c0
testl %eax, %eax
je 0xf255
movq 0x8(%r14), %rdi
leaq 0x286d1(%rip), %rsi     # 0x37652
callq 0x70c0
testl %eax, %eax
je 0xf255
movq 0x8(%r14), %rdi
leaq 0x286b0(%rip), %rsi     # 0x37649
callq 0x70c0
testl %eax, %eax
je 0xf3df
movq 0x8(%r14), %rdi
leaq 0x286a8(%rip), %rsi     # 0x37659
callq 0x70c0
testl %eax, %eax
je 0xf2e6
movq 0x8(%r14), %rdi
leaq 0x285e6(%rip), %rsi     # 0x375af
movl $0x5, %ecx
xorl %edx, %edx
callq 0x75d0
cmpq $-0x1, %rax
je 0xf384
movl $0x2, 0x1fc(%rbx)
jmp 0xf349
movb 0x90(%rbx), %al
cmpb $0x0, 0x1d0(%rbx)
je 0xf122
testb %al, %al
jne 0xf349
leaq 0x18(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rdi), %rsi
movq 0x8(%rdi), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %r15
movq %r15, %rdi
callq 0x8a78
leaq 0x28573(%rip), %r14     # 0x375a4
movq %r15, %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xf2a8
leaq 0x28564(%rip), %r14     # 0x375af
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xf0f4
leaq 0x29125(%rip), %r14     # 0x3818c
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xf0f4
leaq 0x285c5(%rip), %r14     # 0x37644
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xf0f4
leaq 0x284ee(%rip), %r14     # 0x37585
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xf0f4
leaq 0x2859a(%rip), %r14     # 0x37649
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xf0f4
leaq 0x2858b(%rip), %r14     # 0x37652
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xf0f4
leaq 0x28571(%rip), %r14     # 0x37650
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
jne 0xf33a
movq %r14, %rdi
callq 0x7170
movq %rax, %r8
jmp 0xf2ae
movb $0x1, 0x14d(%rbx)
movq %rax, %rdi
movq %rbx, %rdx
callq 0xf71e
movb $0x0, 0x14d(%rbx)
jmp 0xf349
testb %al, %al
jne 0xf349
leaq 0x18(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rdi), %rsi
movq 0x8(%rdi), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %r15
movq %r15, %rdi
callq 0x8a78
leaq 0x28452(%rip), %r14     # 0x375a4
movq %r15, %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xf2cb
leaq 0x28443(%rip), %r14     # 0x375af
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xf2f2
leaq 0x29004(%rip), %r14     # 0x3818c
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xf2f9
leaq 0x284a0(%rip), %r14     # 0x37644
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xf300
leaq 0x283c5(%rip), %rsi     # 0x37585
leaq 0x8(%rsp), %rdi
callq 0x70c0
testl %eax, %eax
je 0xf355
leaq 0x28470(%rip), %r14     # 0x37649
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xf300
leaq 0x2845d(%rip), %r14     # 0x37652
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xf2f9
leaq 0x2843f(%rip), %rsi     # 0x37650
leaq 0x8(%rsp), %rdi
callq 0x70c0
testl %eax, %eax
jne 0xf33a
cmpb $0x0, 0x2f4(%rbx)
jne 0xf236
movl $0x4, 0x258(%rbx)
leaq 0x2b0(%rbx), %rdi
leaq 0x2840c(%rip), %rsi     # 0x37650
callq 0x7450
movb $0x1, 0x219(%rbx)
jmp 0xf33a
movl $0x4, 0x1fc(%rbx)
jmp 0xf349
movq 0x8(%r14), %rsi
addq $0x368, %rbx            # imm = 0x368
movq %rbx, %rdi
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x71c0
movl $0x4, %r8d
movq 0xa0(%rbx), %rdx
addq $0x98, %rbx
movq %rbx, %rdi
xorl %esi, %esi
movq %r14, %rcx
callq 0x7520
jmp 0xf33a
movl $0x4, %r8d
movq 0x198(%rbx), %rdx
addq $0x190, %rbx            # imm = 0x190
movq %rbx, %rdi
xorl %esi, %esi
movq %r14, %rcx
callq 0x7520
jmp 0xf33a
movl $0x4, %r8d
cmpb $0x0, 0x2f4(%rbx)
jne 0xf31f
movl $0x1, 0x258(%rbx)
jmp 0xf31f
movl $0x1, 0x1fc(%rbx)
jmp 0xf349
movl $0x2, %eax
jmp 0xf305
movl $0x4, %eax
jmp 0xf305
movl $0x8, %eax
cmpb $0x0, 0x2f4(%rbx)
jne 0xf314
movl %eax, 0x258(%rbx)
movq %r14, %rdi
callq 0x7170
movq %rax, %r8
movq 0x2b8(%rbx), %rdx
addq $0x2b0, %rbx            # imm = 0x2B0
movq %rbx, %rdi
xorl %esi, %esi
movq %r14, %rcx
callq 0x7520
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xf349
callq 0x72e0
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
cmpb $0x0, 0x2f4(%rbx)
jne 0xf368
movl $0x4, 0x258(%rbx)
leaq 0x2b0(%rbx), %rdi
leaq 0x2820f(%rip), %rsi     # 0x37585
callq 0x7450
movb $0x1, 0x340(%rbx)
jmp 0xf33a
movq 0x8(%r14), %rdi
leaq 0x282b5(%rip), %rsi     # 0x37644
movl $0x4, %ecx
xorl %edx, %edx
callq 0x75d0
cmpq $-0x1, %rax
jne 0xf3df
movq 0x8(%r14), %rdi
leaq 0x2829d(%rip), %rsi     # 0x37649
movl $0x6, %ecx
xorl %edx, %edx
callq 0x75d0
cmpq $-0x1, %rax
jne 0xf3df
movq 0x8(%r14), %rdi
leaq 0x28dc3(%rip), %rsi     # 0x3818c
movl $0x3, %ecx
xorl %edx, %edx
callq 0x75d0
cmpq $-0x1, %rax
je 0xf349
movl $0x8, 0x1fc(%rbx)
jmp 0xf349
jmp 0xf3f2
jmp 0xf3f2
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xf404
callq 0x72e0
movq %rbx, %rdi
callq 0x75f0