// File: /workspace/github_cpp_makefile_star2_O2/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 %rsi, %rax
movq %rdi, %r14
cmpb $0x1, 0x360(%rdx)
jne 0xcd08
cmpb $0x0, 0x1f8(%rbx)
jne 0xcd08
cmpb $0x0, 0x1d0(%rbx)
jne 0xcd08
cmpb $0x0, 0x90(%rbx)
je 0xcfc1
movq 0x8(%r14), %rsi
testq %rsi, %rsi
je 0xce1a
cmpb $0x0, 0x1f8(%rbx)
jne 0xce1a
cmpb $0x0, 0x1d0(%rbx)
jne 0xce1a
cmpb $0x1, 0x90(%rbx)
jne 0xce1a
movq %rsp, %r15
movq %r15, %rdi
callq 0x7460
leaq 0x20860(%rip), %r14     # 0x2d5ae
movq %r15, %rdi
movq %r14, %rsi
callq 0x820e
testb %al, %al
jne 0xce03
leaq 0x20851(%rip), %r14     # 0x2d5b9
movq %rsp, %rdi
movq %r14, %rsi
callq 0x820e
testb %al, %al
jne 0xce03
leaq 0x21414(%rip), %r14     # 0x2e196
movq %rsp, %rdi
movq %r14, %rsi
callq 0x820e
testb %al, %al
jne 0xce03
leaq 0x208b6(%rip), %r14     # 0x2d64e
movq %rsp, %rdi
movq %r14, %rsi
callq 0x820e
testb %al, %al
jne 0xce03
leaq 0x207e1(%rip), %r14     # 0x2d58f
movq %rsp, %rdi
movq %r14, %rsi
callq 0x820e
testb %al, %al
jne 0xce03
leaq 0x2088f(%rip), %r14     # 0x2d653
movq %rsp, %rdi
movq %r14, %rsi
callq 0x820e
testb %al, %al
jne 0xce03
leaq 0x20882(%rip), %r14     # 0x2d65c
movq %rsp, %rdi
movq %r14, %rsi
callq 0x820e
testb %al, %al
jne 0xce03
leaq 0x2086a(%rip), %r14     # 0x2d65a
movq %rsp, %rdi
movq %r14, %rsi
callq 0x820e
testb %al, %al
je 0xd103
addq $0x98, %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x7630
jmp 0xd103
movq 0x18(%r14), %rdi
testq %rdi, %rdi
je 0xce39
cmpb $0x0, 0x1f8(%rbx)
jne 0xce39
cmpb $0x0, 0x90(%rbx)
je 0xcfa3
testq %rsi, %rsi
je 0xd10b
cmpb $0x0, 0x1f8(%rbx)
je 0xce95
cmpb $0x0, 0x90(%rbx)
jne 0xd10b
leaq 0x21337(%rip), %rax     # 0x2e196
movq %rsi, %rdi
movq %rax, %rsi
callq 0x820e
testb %al, %al
jne 0xce86
movq 0x8(%r14), %rdi
leaq 0x20716(%rip), %rsi     # 0x2d58f
callq 0x820e
testb %al, %al
je 0xd012
movl $0x4, 0x1fc(%rbx)
jmp 0xd10b
cmpb $0x0, 0x1d0(%rbx)
jne 0xceab
cmpb $0x0, 0x90(%rbx)
je 0xcfdd
cmpb $0x1, 0x1d0(%rbx)
jne 0xd10b
cmpb $0x0, 0x90(%rbx)
jne 0xd10b
movq %rsp, %r15
movq %r15, %rdi
callq 0x7460
leaq 0x206d7(%rip), %r14     # 0x2d5ae
movq %r15, %rdi
movq %r14, %rsi
callq 0x820e
testb %al, %al
jne 0xcf8c
leaq 0x206c8(%rip), %r14     # 0x2d5b9
movq %rsp, %rdi
movq %r14, %rsi
callq 0x820e
testb %al, %al
jne 0xcf8c
leaq 0x2128b(%rip), %r14     # 0x2e196
movq %rsp, %rdi
movq %r14, %rsi
callq 0x820e
testb %al, %al
jne 0xcf8c
leaq 0x2072d(%rip), %r14     # 0x2d64e
movq %rsp, %rdi
movq %r14, %rsi
callq 0x820e
testb %al, %al
jne 0xcf8c
leaq 0x20658(%rip), %r14     # 0x2d58f
movq %rsp, %rdi
movq %r14, %rsi
callq 0x820e
testb %al, %al
jne 0xcf8c
leaq 0x20706(%rip), %r14     # 0x2d653
movq %rsp, %rdi
movq %r14, %rsi
callq 0x820e
testb %al, %al
jne 0xcf8c
leaq 0x206f9(%rip), %r14     # 0x2d65c
movq %rsp, %rdi
movq %r14, %rsi
callq 0x820e
testb %al, %al
jne 0xcf8c
leaq 0x206e1(%rip), %r14     # 0x2d65a
movq %rsp, %rdi
movq %r14, %rsi
callq 0x820e
testb %al, %al
je 0xd103
addq $0x190, %rbx            # imm = 0x190
movq %rbx, %rdi
movq %r14, %rsi
callq 0x7630
jmp 0xd103
movb $0x1, 0x14d(%rbx)
movq %rax, %rsi
movq %rbx, %rdx
callq 0xd526
movb $0x0, 0x14d(%rbx)
jmp 0xd10b
movq 0x8(%r14), %rsi
addq $0x368, %rbx            # imm = 0x368
movq %rbx, %rdi
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
jmp 0x71e0
movq %rsp, %r15
movq %r15, %rdi
callq 0x7460
leaq 0x205bf(%rip), %r14     # 0x2d5ae
movq %r15, %rdi
movq %r14, %rsi
callq 0x820e
testb %al, %al
je 0xd035
cmpb $0x0, 0x2f4(%rbx)
jne 0xd0f1
pushq $0x1
jmp 0xd0ea
movq 0x8(%r14), %rdi
leaq 0x20591(%rip), %rsi     # 0x2d5ae
callq 0x820e
testb %al, %al
je 0xd05f
movl $0x1, 0x1fc(%rbx)
jmp 0xd10b
leaq 0x2057d(%rip), %r14     # 0x2d5b9
movq %rsp, %rdi
movq %r14, %rsi
callq 0x820e
testb %al, %al
je 0xd082
cmpb $0x0, 0x2f4(%rbx)
jne 0xd0f1
pushq $0x2
jmp 0xd0ea
movq 0x8(%r14), %rdi
leaq 0x2054f(%rip), %rsi     # 0x2d5b9
callq 0x820e
testb %al, %al
je 0xd0a5
movl $0x2, 0x1fc(%rbx)
jmp 0xd10b
leaq 0x2110d(%rip), %r14     # 0x2e196
movq %rsp, %rdi
movq %r14, %rsi
callq 0x820e
testb %al, %al
je 0xd0c5
cmpb $0x0, 0x2f4(%rbx)
jne 0xd0f1
pushq $0x4
jmp 0xd0ea
movq 0x8(%r14), %rdi
leaq 0x2059e(%rip), %rsi     # 0x2d64e
callq 0x820e
testb %al, %al
je 0xd115
movl $0x8, 0x1fc(%rbx)
jmp 0xd10b
leaq 0x20582(%rip), %r14     # 0x2d64e
movq %rsp, %rdi
movq %r14, %rsi
callq 0x820e
testb %al, %al
je 0xd1ea
cmpb $0x0, 0x2f4(%rbx)
jne 0xd0f1
pushq $0x8
popq %rax
movl %eax, 0x258(%rbx)
addq $0x2b0, %rbx            # imm = 0x2B0
movq %rbx, %rdi
movq %r14, %rsi
callq 0x7630
movq %rsp, %rdi
callq 0x7170
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq 0x8(%r14), %rdi
leaq 0x2053a(%rip), %rsi     # 0x2d65a
callq 0x820e
testb %al, %al
jne 0xce86
movq 0x8(%r14), %rdi
leaq 0x20524(%rip), %rsi     # 0x2d65c
callq 0x820e
testb %al, %al
jne 0xce86
movq 0x8(%r14), %rdi
leaq 0x20503(%rip), %rsi     # 0x2d653
callq 0x820e
testb %al, %al
jne 0xd0b9
movq 0x8(%r14), %rdi
leaq 0x204fb(%rip), %rsi     # 0x2d663
callq 0x820e
testb %al, %al
jne 0xd026
movq 0x8(%r14), %rdi
leaq 0x20439(%rip), %rsi     # 0x2d5b9
xorl %edx, %edx
callq 0x7670
cmpq $-0x1, %rax
jne 0xd073
movq 0x8(%r14), %rdi
leaq 0x204b2(%rip), %rsi     # 0x2d64e
xorl %edx, %edx
callq 0x7670
cmpq $-0x1, %rax
jne 0xd0b9
movq 0x8(%r14), %rdi
leaq 0x2049b(%rip), %rsi     # 0x2d653
xorl %edx, %edx
callq 0x7670
cmpq $-0x1, %rax
jne 0xd0b9
movq 0x8(%r14), %rdi
leaq 0x20fc2(%rip), %rsi     # 0x2e196
xorl %edx, %edx
callq 0x7670
cmpq $-0x1, %rax
jne 0xd0b9
jmp 0xd10b
leaq 0x2039e(%rip), %rsi     # 0x2d58f
movq %rsp, %rdi
callq 0x820e
testb %al, %al
je 0xd22f
cmpb $0x0, 0x2f4(%rbx)
jne 0xd210
movl $0x4, 0x258(%rbx)
leaq 0x2b0(%rbx), %rdi
leaq 0x20371(%rip), %rsi     # 0x2d58f
callq 0x7630
movb $0x1, 0x340(%rbx)
jmp 0xd103
leaq 0x2041d(%rip), %r14     # 0x2d653
movq %rsp, %rdi
movq %r14, %rsi
callq 0x820e
testb %al, %al
jne 0xd0df
leaq 0x2040c(%rip), %r14     # 0x2d65c
movq %rsp, %rdi
movq %r14, %rsi
callq 0x820e
testb %al, %al
jne 0xd098
leaq 0x203f0(%rip), %rsi     # 0x2d65a
movq %rsp, %rdi
callq 0x820e
testb %al, %al
je 0xd103
cmpb $0x0, 0x2f4(%rbx)
jne 0xd28d
movl $0x4, 0x258(%rbx)
leaq 0x2b0(%rbx), %rdi
leaq 0x203bf(%rip), %rsi     # 0x2d65a
callq 0x7630
movb $0x1, 0x219(%rbx)
jmp 0xd103
jmp 0xd2b0
jmp 0xd2b0
movq %rax, %rbx
movq %rsp, %rdi
callq 0x7170
movq %rbx, %rdi
callq 0x75c0
nop