// File: /workspace/github_cpp_makefile_star2_O1/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 %rbx
subq $0x20, %rsp
movq %rdx, %rbx
movq %rdi, %r14
cmpb $0x1, 0x360(%rdx)
jne 0xf669
cmpb $0x0, 0x1f8(%rbx)
jne 0xf669
cmpb $0x0, 0x1d0(%rbx)
jne 0xf669
cmpb $0x0, 0x90(%rbx)
je 0xf942
movq 0x8(%r14), %rdi
testq %rdi, %rdi
je 0xf78b
cmpb $0x0, 0x1f8(%rbx)
jne 0xf78b
cmpb $0x0, 0x1d0(%rbx)
jne 0xf78b
cmpb $0x1, 0x90(%rbx)
jne 0xf78b
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rdi), %rsi
movq 0x8(%rdi), %rdx
addq %rsi, %rdx
movq %rsp, %r14
movq %r14, %rdi
callq 0x8a36
leaq 0x27ee2(%rip), %rsi     # 0x375a4
movq %r14, %rdi
callq 0x70c0
testl %eax, %eax
je 0xfb63
leaq 0x27ed6(%rip), %r14     # 0x375af
movq %rsp, %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xf774
leaq 0x28a99(%rip), %r14     # 0x3818c
movq %rsp, %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xf774
leaq 0x27f3b(%rip), %r14     # 0x37644
movq %rsp, %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xf774
leaq 0x27e66(%rip), %r14     # 0x37585
movq %rsp, %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xf774
leaq 0x27f14(%rip), %r14     # 0x37649
movq %rsp, %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xf774
leaq 0x27f07(%rip), %r14     # 0x37652
movq %rsp, %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xf774
leaq 0x27eef(%rip), %r14     # 0x37650
movq %rsp, %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
jne 0xfc31
addq $0x98, %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x7450
jmp 0xfc31
movq 0x18(%r14), %rax
testq %rax, %rax
je 0xf7aa
cmpb $0x0, 0x1f8(%rbx)
jne 0xf7aa
cmpb $0x0, 0x90(%rbx)
je 0xf915
testq %rdi, %rdi
je 0xf7f2
cmpb $0x0, 0x1f8(%rbx)
jne 0xf7ce
cmpb $0x0, 0x1d0(%rbx)
jne 0xf7ce
cmpb $0x0, 0x90(%rbx)
je 0xf95e
testq %rdi, %rdi
je 0xf7f2
cmpb $0x0, 0x1f8(%rbx)
jne 0xf7f2
cmpb $0x1, 0x1d0(%rbx)
jne 0xf7f2
cmpb $0x0, 0x90(%rbx)
je 0xfa75
testq %rdi, %rdi
je 0xfc3f
cmpb $0x0, 0x1f8(%rbx)
je 0xfc3f
cmpb $0x0, 0x90(%rbx)
jne 0xfc3f
leaq 0x28970(%rip), %rsi     # 0x3818c
callq 0x70c0
testl %eax, %eax
je 0xf933
movq 0x8(%r14), %rdi
leaq 0x27d51(%rip), %rsi     # 0x37585
callq 0x70c0
testl %eax, %eax
je 0xf933
movq 0x8(%r14), %rdi
leaq 0x27d58(%rip), %rsi     # 0x375a4
callq 0x70c0
testl %eax, %eax
je 0xfb8d
movq 0x8(%r14), %rdi
leaq 0x27d4b(%rip), %rsi     # 0x375af
callq 0x70c0
testl %eax, %eax
je 0xf906
movq 0x8(%r14), %rdi
leaq 0x27dc8(%rip), %rsi     # 0x37644
callq 0x70c0
testl %eax, %eax
je 0xfcd3
movq 0x8(%r14), %rdi
leaq 0x27dbc(%rip), %rsi     # 0x37650
callq 0x70c0
testl %eax, %eax
je 0xf933
movq 0x8(%r14), %rdi
leaq 0x27da6(%rip), %rsi     # 0x37652
callq 0x70c0
testl %eax, %eax
je 0xf933
movq 0x8(%r14), %rdi
leaq 0x27d89(%rip), %rsi     # 0x37649
callq 0x70c0
testl %eax, %eax
je 0xfcd3
movq 0x8(%r14), %rdi
leaq 0x27d81(%rip), %rsi     # 0x37659
callq 0x70c0
testl %eax, %eax
je 0xfb8d
movq 0x8(%r14), %rdi
leaq 0x27cbf(%rip), %rsi     # 0x375af
movl $0x5, %ecx
xorl %edx, %edx
callq 0x75d0
cmpq $-0x1, %rax
je 0xfc78
movl $0x2, 0x1fc(%rbx)
jmp 0xfc3f
movb $0x1, 0x14d(%rbx)
movq %rax, %rdi
movq %rbx, %rdx
callq 0x10012
movb $0x0, 0x14d(%rbx)
jmp 0xfc3f
movl $0x4, 0x1fc(%rbx)
jmp 0xfc3f
movq 0x8(%r14), %rsi
addq $0x368, %rbx            # imm = 0x368
movq %rbx, %rdi
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
jmp 0x71c0
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rdi), %rsi
movq 0x8(%rdi), %rdx
addq %rsi, %rdx
movq %rsp, %r14
movq %r14, %rdi
callq 0x8a36
leaq 0x27c21(%rip), %rsi     # 0x375a4
movq %r14, %rdi
callq 0x70c0
testl %eax, %eax
je 0xfb9c
leaq 0x27c15(%rip), %r14     # 0x375af
movq %rsp, %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xfbd6
leaq 0x287d8(%rip), %r14     # 0x3818c
movq %rsp, %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xfc04
leaq 0x27c76(%rip), %r14     # 0x37644
movq %rsp, %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xfc0b
leaq 0x27b9d(%rip), %rsi     # 0x37585
movq %rsp, %rdi
callq 0x70c0
testl %eax, %eax
je 0xfc49
leaq 0x27c4a(%rip), %r14     # 0x37649
movq %rsp, %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xfc0b
leaq 0x27c39(%rip), %r14     # 0x37652
movq %rsp, %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xfc04
leaq 0x27c1d(%rip), %rsi     # 0x37650
movq %rsp, %rdi
callq 0x70c0
testl %eax, %eax
jne 0xfc31
cmpb $0x0, 0x2f4(%rbx)
jne 0xfa56
movl $0x4, 0x258(%rbx)
leaq 0x2b0(%rbx), %rdi
leaq 0x27bec(%rip), %rsi     # 0x37650
callq 0x7450
movb $0x1, 0x219(%rbx)
jmp 0xfc31
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rdi), %rsi
movq 0x8(%rdi), %rdx
addq %rsi, %rdx
movq %rsp, %r14
movq %r14, %rdi
callq 0x8a36
leaq 0x27b0a(%rip), %rsi     # 0x375a4
movq %r14, %rdi
callq 0x70c0
testl %eax, %eax
je 0xfbdd
leaq 0x27afe(%rip), %r14     # 0x375af
movq %rsp, %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xfb4c
leaq 0x286c1(%rip), %r14     # 0x3818c
movq %rsp, %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xfb4c
leaq 0x27b63(%rip), %r14     # 0x37644
movq %rsp, %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xfb4c
leaq 0x27a8e(%rip), %r14     # 0x37585
movq %rsp, %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xfb4c
leaq 0x27b3c(%rip), %r14     # 0x37649
movq %rsp, %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xfb4c
leaq 0x27b2f(%rip), %r14     # 0x37652
movq %rsp, %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
je 0xfb4c
leaq 0x27b17(%rip), %r14     # 0x37650
movq %rsp, %rdi
movq %r14, %rsi
callq 0x70c0
testl %eax, %eax
jne 0xfc31
addq $0x190, %rbx            # imm = 0x190
movq %rbx, %rdi
movq %r14, %rsi
callq 0x7450
jmp 0xfc31
movq 0xa0(%rbx), %rdx
addq $0x98, %rbx
leaq 0x27a2c(%rip), %rcx     # 0x375a4
movl $0x4, %r8d
movq %rbx, %rdi
xorl %esi, %esi
callq 0x7520
jmp 0xfc31
movl $0x1, 0x1fc(%rbx)
jmp 0xfc3f
cmpb $0x0, 0x2f4(%rbx)
jne 0xfbaf
movl $0x1, 0x258(%rbx)
movq 0x2b8(%rbx), %rdx
addq $0x2b0, %rbx            # imm = 0x2B0
leaq 0x279e0(%rip), %rcx     # 0x375a4
movl $0x4, %r8d
movq %rbx, %rdi
xorl %esi, %esi
callq 0x7520
jmp 0xfc31
movl $0x2, %eax
jmp 0xfc10
movq 0x198(%rbx), %rdx
addq $0x190, %rbx            # imm = 0x190
leaq 0x279b2(%rip), %rcx     # 0x375a4
movl $0x4, %r8d
movq %rbx, %rdi
xorl %esi, %esi
callq 0x7520
jmp 0xfc31
movl $0x4, %eax
jmp 0xfc10
movl $0x8, %eax
cmpb $0x0, 0x2f4(%rbx)
jne 0xfc1f
movl %eax, 0x258(%rbx)
addq $0x2b0, %rbx            # imm = 0x2B0
movq %rbx, %rdi
movq %r14, %rsi
callq 0x7450
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0xfc3f
callq 0x72e0
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
cmpb $0x0, 0x2f4(%rbx)
jne 0xfc5c
movl $0x4, 0x258(%rbx)
leaq 0x2b0(%rbx), %rdi
leaq 0x2791b(%rip), %rsi     # 0x37585
callq 0x7450
movb $0x1, 0x340(%rbx)
jmp 0xfc31
movq 0x8(%r14), %rdi
leaq 0x279c1(%rip), %rsi     # 0x37644
movl $0x4, %ecx
xorl %edx, %edx
callq 0x75d0
cmpq $-0x1, %rax
jne 0xfcd3
movq 0x8(%r14), %rdi
leaq 0x279a9(%rip), %rsi     # 0x37649
movl $0x6, %ecx
xorl %edx, %edx
callq 0x75d0
cmpq $-0x1, %rax
jne 0xfcd3
movq 0x8(%r14), %rdi
leaq 0x284cf(%rip), %rsi     # 0x3818c
movl $0x3, %ecx
xorl %edx, %edx
callq 0x75d0
cmpq $-0x1, %rax
je 0xfc3f
movl $0x8, 0x1fc(%rbx)
jmp 0xfc3f
jmp 0xfce6
jmp 0xfce6
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0xfcf7
callq 0x72e0
movq %rbx, %rdi
callq 0x75f0
nop