// File: martinda3[P]Compiler/src/TCparser.cpp
// Function: toyc::TCparser::Type()
AStype* TCparser::Type() // Functional Needs testing
	{
		// Type --> INT | CHAR
		TCtoken *t1, *t2;
		enteringDEBUG("Type");
		AStype* operand = NULL;
		if (buff->getTokenType() == INT)
		{
			t1 = buff;
			accept(INT);
			t2 = buff;
			operand = new AStype(t1, t2);
			exitingDEBUG(operand->toString());
			exitingDEBUG("Type");
		}
		else if (buff->getTokenType() == CHAR)
		{
			t1 = buff;
			accept(CHAR);
			t2 = buff;
			operand = new AStype(t1, t2);
			exitingDEBUG("Type");
		}
		else        // Error Handlding
		{
			reportSEMANTIC_ERROR(scanner, "type expected");
			exit(EXIT_FAILURE);
		}
		return operand;
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x140, %rsp            # imm = 0x140
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x100(%rbp)
leaq -0x39(%rbp), %rdi
movq %rdi, -0xf8(%rbp)
callq 0x95c0
movq -0xf8(%rbp), %rdx
leaq 0x24ee0(%rip), %rsi     # 0x33198
leaq -0x38(%rbp), %rdi
callq 0x13550
jmp 0xe2c3
leaq -0x38(%rbp), %rdi
callq 0xd790
jmp 0xe2ce
leaq -0x38(%rbp), %rdi
callq 0x9658
leaq -0x39(%rbp), %rdi
callq 0x93b0
movq -0x100(%rbp), %rax
movq $0x0, -0x58(%rbp)
movq 0x8(%rax), %rdi
callq 0x1be60
cmpl $0x3, %eax
jne 0xe486
movq -0x100(%rbp), %rdi
movq 0x8(%rdi), %rax
movq %rax, -0x10(%rbp)
movl $0x3, %esi
callq 0xe670
movq -0x100(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x18(%rbp)
movl $0x18, %edi
callq 0x9350
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x108(%rbp)
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x2e9b0
jmp 0xe34f
movq -0x108(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x78(%rbp), %rdi
movq %rdi, -0x110(%rbp)
callq *%rax
movq -0x110(%rbp), %rdi
callq 0xda50
jmp 0xe37f
leaq -0x78(%rbp), %rdi
callq 0x9658
leaq -0x99(%rbp), %rdi
movq %rdi, -0x118(%rbp)
callq 0x95c0
movq -0x118(%rbp), %rdx
leaq 0x24def(%rip), %rsi     # 0x33198
leaq -0x98(%rbp), %rdi
callq 0x13550
jmp 0xe3b7
leaq -0x98(%rbp), %rdi
callq 0xda50
jmp 0xe3c5
leaq -0x98(%rbp), %rdi
callq 0x9658
leaq -0x99(%rbp), %rdi
callq 0x93b0
jmp 0xe658
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xe405
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x9658
leaq -0x39(%rbp), %rdi
callq 0x93b0
jmp 0xe665
movq -0x108(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
movl $0x18, %esi
callq 0x9360
jmp 0xe665
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x9658
jmp 0xe665
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xe475
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x9658
leaq -0x99(%rbp), %rdi
callq 0x93b0
jmp 0xe665
movq -0x100(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x1be60
cmpl $0x5, %eax
jne 0xe5ab
movq -0x100(%rbp), %rdi
movq 0x8(%rdi), %rax
movq %rax, -0x10(%rbp)
movl $0x5, %esi
callq 0xe670
movq -0x100(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x18(%rbp)
movl $0x18, %edi
callq 0x9350
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x120(%rbp)
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x2e9b0
jmp 0xe4ed
movq -0x120(%rbp), %rax
movq %rax, -0x58(%rbp)
leaq -0xc1(%rbp), %rdi
movq %rdi, -0x128(%rbp)
callq 0x95c0
movq -0x128(%rbp), %rdx
leaq 0x24c7f(%rip), %rsi     # 0x33198
leaq -0xc0(%rbp), %rdi
callq 0x13550
jmp 0xe527
leaq -0xc0(%rbp), %rdi
callq 0xda50
jmp 0xe535
leaq -0xc0(%rbp), %rdi
callq 0x9658
leaq -0xc1(%rbp), %rdi
callq 0x93b0
jmp 0xe656
movq -0x120(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
movl $0x18, %esi
callq 0x9360
jmp 0xe665
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xe59a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x9658
leaq -0xc1(%rbp), %rdi
callq 0x93b0
jmp 0xe665
movq -0x100(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x138(%rbp)
leaq -0xe9(%rbp), %rdi
movq %rdi, -0x130(%rbp)
callq 0x95c0
movq -0x130(%rbp), %rdx
leaq 0x24bc0(%rip), %rsi     # 0x3319d
leaq -0xe8(%rbp), %rdi
callq 0x13550
jmp 0xe5eb
movq -0x138(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x1b380
jmp 0xe600
leaq -0xe8(%rbp), %rdi
callq 0x9658
leaq -0xe9(%rbp), %rdi
callq 0x93b0
movl $0x1, %edi
callq 0x9410
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xe648
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x9658
leaq -0xe9(%rbp), %rdi
callq 0x93b0
jmp 0xe665
jmp 0xe658
movq -0x58(%rbp), %rax
addq $0x140, %rsp            # imm = 0x140
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x95b0
nop