// File: martinda3[P]Compiler/src/TCparser.cpp
// Function: toyc::TCparser::FunctionHeader(toyc::ASdefinition**)
int TCparser::FunctionHeader(ASdefinition* list[]) // DONE
	{
		// FunctionHeader --> LPAREN [ FormalParamList ] RPAREN
		enteringDEBUG("Function Header");
		accept(LPAREN);
		int i;
		if (buff->getTokenType() == INT || buff->getTokenType() == CHAR)
		{
			i = FormalParamList(list);
			accept(RPAREN);
			exitingDEBUG("Function Header");
		}
		else if (buff->getTokenType() == RPAREN)
		{
			i = 0;
			accept(RPAREN);
			exitingDEBUG("Function Header");
		}
		else      // Error Handlding
		{
			reportSEMANTIC_ERROR(scanner, "type or ')' expected");
			exit(EXIT_FAILURE);
		}
		return i;
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xd0(%rbp)
leaq -0x31(%rbp), %rdi
movq %rdi, -0xc8(%rbp)
callq 0x95c0
movq -0xc8(%rbp), %rdx
leaq 0x248b3(%rip), %rsi     # 0x331bf
leaq -0x30(%rbp), %rdi
callq 0x13550
jmp 0xe917
leaq -0x30(%rbp), %rdi
callq 0xd790
jmp 0xe922
leaq -0x30(%rbp), %rdi
callq 0x9658
leaq -0x31(%rbp), %rdi
callq 0x93b0
movq -0xd0(%rbp), %rdi
movl $0x1e, %esi
callq 0xe670
movq -0xd0(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x1be60
cmpl $0x3, %eax
je 0xe973
movq -0xd0(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x1be60
cmpl $0x5, %eax
jne 0xea44
movq -0xd0(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0xed00
movq -0xd0(%rbp), %rdi
movl %eax, -0x48(%rbp)
movl $0x1f, %esi
callq 0xe670
leaq -0x69(%rbp), %rdi
movq %rdi, -0xd8(%rbp)
callq 0x95c0
movq -0xd8(%rbp), %rdx
leaq 0x2480a(%rip), %rsi     # 0x331bf
leaq -0x68(%rbp), %rdi
callq 0x13550
jmp 0xe9c0
leaq -0x68(%rbp), %rdi
callq 0xda50
jmp 0xe9cb
leaq -0x68(%rbp), %rdi
callq 0x9658
leaq -0x69(%rbp), %rdi
callq 0x93b0
jmp 0xebb3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xea05
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x9658
leaq -0x31(%rbp), %rdi
callq 0x93b0
jmp 0xebbf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xea36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x9658
leaq -0x69(%rbp), %rdi
callq 0x93b0
jmp 0xebbf
movq -0xd0(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x1be60
cmpl $0x1f, %eax
jne 0xeb06
movq -0xd0(%rbp), %rdi
movl $0x0, -0x48(%rbp)
movl $0x1f, %esi
callq 0xe670
leaq -0x91(%rbp), %rdi
movq %rdi, -0xe0(%rbp)
callq 0x95c0
movq -0xe0(%rbp), %rdx
leaq 0x24729(%rip), %rsi     # 0x331bf
leaq -0x90(%rbp), %rdi
callq 0x13550
jmp 0xeaa4
leaq -0x90(%rbp), %rdi
callq 0xda50
jmp 0xeab2
leaq -0x90(%rbp), %rdi
callq 0x9658
leaq -0x91(%rbp), %rdi
callq 0x93b0
jmp 0xebb1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xeaf5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x9658
leaq -0x91(%rbp), %rdi
callq 0x93b0
jmp 0xebbf
movq -0xd0(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xf0(%rbp)
leaq -0xb9(%rbp), %rdi
movq %rdi, -0xe8(%rbp)
callq 0x95c0
movq -0xe8(%rbp), %rdx
leaq 0x24697(%rip), %rsi     # 0x331cf
leaq -0xb8(%rbp), %rdi
callq 0x13550
jmp 0xeb46
movq -0xf0(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x1b380
jmp 0xeb5b
leaq -0xb8(%rbp), %rdi
callq 0x9658
leaq -0xb9(%rbp), %rdi
callq 0x93b0
movl $0x1, %edi
callq 0x9410
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xeba3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x9658
leaq -0xb9(%rbp), %rdi
callq 0x93b0
jmp 0xebbf
jmp 0xebb3
movl -0x48(%rbp), %eax
addq $0xf0, %rsp
popq %rbp
retq
movq -0x40(%rbp), %rdi
callq 0x95b0
nopl (%rax,%rax)