// File: /workspace/github_c_makefile_star2_O0/Oric4ever[P]lcc65/6502/build/../src/decl.c
// Function: decl
static void decl(dcl, eflag)
dclproto(Symbol (*dcl),(int, char *, Type, Coordinate *));
int eflag;
{
	int sclass;
	char *id = 0;
	Type ty, ty1;
	Coordinate pt;
	static char follow[] = { CHAR, STATIC, ID, 0 };

	pt = src;
	ty = type(level, &sclass);
	if (t == ID || t == '*' || t == '(' || t == '[') {
		Coordinate pos;
		pos = src;
		funcdclr = 0;
		if (level == GLOBAL) {
			ty1 = dclr(ty, &id, 0);
			if (funcdclr && id && isfunc(ty1)
			&& (t == '{' || kind[t] == CHAR
			|| (kind[t] == STATIC && t != TYPEDEF)
			||  t == ID && tsym && tsym->sclass == TYPEDEF)) {
				if (sclass == TYPEDEF) {
					error("invalid use of `typedef'\n");
					sclass = EXTERN;
				}
				funcdecl(sclass, id, ty1, pt);
				return;
			} else if (funcdclr)
				{ foreach(identifiers, level, checkparam, (Generic)0); exitscope(); }
		} else
			ty1 = dclr(ty, &id, 1);
		for (;;) {
			if (Aflag >= 1 && !hasproto(ty1))
				warning("missing prototype\n");
			if (id == 0)
				error("missing identifier\n");
			else if (sclass == TYPEDEF)
				deftype(id, ty1, &pos);
			else
				(*dcl)(sclass, id, ty1, &pos);
			if (level == GLOBAL)
				tfree();
			if (t != ',')
				break;
			t = gettok();
			id = 0;
			pos = src;
			ty1 = dclr(ty, &id, 1);
		}
	} else if (ty && eflag)
		error("empty declaration\n");
	else if (ty && (sclass || !isstruct(ty) && !isenum(ty)))
		warning("empty declaration\n");
	test(';', follow);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq $0x0, -0x18(%rbp)
leaq 0x373da(%rip), %rax     # 0x3dad8
movq (%rax), %rcx
movq %rcx, -0x38(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x30(%rbp)
leaq 0x3a87c(%rip), %rax     # 0x40f90
movl (%rax), %edi
leaq -0x10(%rbp), %rsi
callq 0x7f00
movq %rax, -0x20(%rbp)
leaq 0x37456(%rip), %rax     # 0x3db80
cmpl $0x20, (%rax)
je 0x6757
leaq 0x3744a(%rip), %rax     # 0x3db80
cmpl $0x2a, (%rax)
je 0x6757
leaq 0x3743e(%rip), %rax     # 0x3db80
cmpl $0x28, (%rax)
je 0x6757
leaq 0x37432(%rip), %rax     # 0x3db80
cmpl $0x5b, (%rax)
jne 0x69b9
leaq 0x3737a(%rip), %rax     # 0x3dad8
movq (%rax), %rcx
movq %rcx, -0x48(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x40(%rbp)
movl $0x0, 0x352bd(%rip)     # 0x3ba34
leaq 0x3a812(%rip), %rax     # 0x40f90
cmpl $0x3, (%rax)
jne 0x68c5
movq -0x20(%rbp), %rdi
leaq -0x18(%rbp), %rsi
xorl %edx, %edx
callq 0x82c0
movq %rax, -0x28(%rbp)
cmpl $0x0, 0x35293(%rip)     # 0x3ba34
je 0x6890
cmpq $0x0, -0x18(%rbp)
je 0x6890
movq -0x28(%rbp), %rax
cmpl $0xf, (%rax)
jb 0x67c9
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x50(%rbp)
jmp 0x67d1
movq -0x28(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
cmpl $0xb, (%rax)
jne 0x6890
leaq 0x3739b(%rip), %rax     # 0x3db80
cmpl $0x7b, (%rax)
je 0x6858
leaq 0x3738f(%rip), %rax     # 0x3db80
movl (%rax), %eax
movl %eax, %ecx
leaq 0x33194(%rip), %rax     # 0x39990
movsbl (%rax,%rcx), %eax
cmpl $0x3, %eax
je 0x6858
leaq 0x37374(%rip), %rax     # 0x3db80
movl (%rax), %eax
movl %eax, %ecx
leaq 0x33179(%rip), %rax     # 0x39990
movsbl (%rax,%rcx), %eax
cmpl $0x51, %eax
jne 0x682c
leaq 0x37359(%rip), %rax     # 0x3db80
cmpl $0x53, (%rax)
jne 0x6858
leaq 0x3734d(%rip), %rax     # 0x3db80
cmpl $0x20, (%rax)
jne 0x6890
leaq 0x372b1(%rip), %rax     # 0x3daf0
cmpq $0x0, (%rax)
je 0x6890
leaq 0x372a4(%rip), %rax     # 0x3daf0
movq (%rax), %rax
movzbl 0x1a(%rax), %eax
cmpl $0x53, %eax
jne 0x6890
cmpl $0x53, -0x10(%rbp)
jne 0x6873
leaq 0x28da6(%rip), %rdi     # 0x2f60b
movb $0x0, %al
callq 0xd530
movl $0x4a, -0x10(%rbp)
movl -0x10(%rbp), %edi
movq -0x18(%rbp), %rsi
movq -0x28(%rbp), %rdx
movq -0x38(%rbp), %rcx
movq -0x30(%rbp), %r8
callq 0x83d0
jmp 0x6a85
cmpl $0x0, 0x3519d(%rip)     # 0x3ba34
je 0x68c1
leaq 0x34898(%rip), %rax     # 0x3b138
movq (%rax), %rdi
leaq 0x3a6e6(%rip), %rax     # 0x40f90
movl (%rax), %esi
leaq 0x23ad(%rip), %rdx      # 0x8c60
xorl %eax, %eax
movl %eax, %ecx
callq 0x243f0
callq 0x24130
jmp 0x68c3
jmp 0x68db
movq -0x20(%rbp), %rdi
leaq -0x18(%rbp), %rsi
movl $0x1, %edx
callq 0x82c0
movq %rax, -0x28(%rbp)
jmp 0x68dd
leaq 0x37344(%rip), %rax     # 0x3dc28
cmpl $0x1, (%rax)
jl 0x6905
movq -0x28(%rbp), %rdi
callq 0x28aa0
cmpl $0x0, %eax
jne 0x6905
leaq 0x28b25(%rip), %rdi     # 0x2f423
movb $0x0, %al
callq 0xdba0
cmpq $0x0, -0x18(%rbp)
jne 0x691c
leaq 0x28d12(%rip), %rdi     # 0x2f625
movb $0x0, %al
callq 0xd530
jmp 0x694c
cmpl $0x53, -0x10(%rbp)
jne 0x6935
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rsi
leaq -0x48(%rbp), %rdx
callq 0x27e00
jmp 0x694a
movq -0x8(%rbp), %rax
movl -0x10(%rbp), %edi
movq -0x18(%rbp), %rsi
movq -0x28(%rbp), %rdx
leaq -0x48(%rbp), %rcx
callq *%rax
jmp 0x694c
leaq 0x3a63d(%rip), %rax     # 0x40f90
cmpl $0x3, (%rax)
jne 0x695d
callq 0x26160
leaq 0x3721c(%rip), %rax     # 0x3db80
cmpl $0x2c, (%rax)
je 0x696b
jmp 0x69b4
callq 0x15170
movl %eax, %ecx
leaq 0x37207(%rip), %rax     # 0x3db80
movl %ecx, (%rax)
movq $0x0, -0x18(%rbp)
leaq 0x3714e(%rip), %rax     # 0x3dad8
movq (%rax), %rcx
movq %rcx, -0x48(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x20(%rbp), %rdi
leaq -0x18(%rbp), %rsi
movl $0x1, %edx
callq 0x82c0
movq %rax, -0x28(%rbp)
jmp 0x68dd
jmp 0x6a74
cmpq $0x0, -0x20(%rbp)
je 0x69d9
cmpl $0x0, -0xc(%rbp)
je 0x69d9
leaq 0x28a17(%rip), %rdi     # 0x2f3e4
movb $0x0, %al
callq 0xd530
jmp 0x6a72
cmpq $0x0, -0x20(%rbp)
je 0x6a70
cmpl $0x0, -0x10(%rbp)
jne 0x6a62
movq -0x20(%rbp), %rax
cmpl $0xf, (%rax)
jb 0x6a01
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x58(%rbp)
jmp 0x6a09
movq -0x20(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
cmpl $0x9, (%rax)
je 0x6a70
movq -0x20(%rbp), %rax
cmpl $0xf, (%rax)
jb 0x6a29
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x60(%rbp)
jmp 0x6a31
movq -0x20(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
cmpl $0xa, (%rax)
je 0x6a70
movq -0x20(%rbp), %rax
cmpl $0xf, (%rax)
jb 0x6a51
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x68(%rbp)
jmp 0x6a59
movq -0x20(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
cmpl $0xd, (%rax)
je 0x6a70
leaq 0x2897b(%rip), %rdi     # 0x2f3e4
movb $0x0, %al
callq 0xdba0
jmp 0x6a72
jmp 0x6a74
movl $0x3b, %edi
leaq 0x326b0(%rip), %rsi     # 0x39130
callq 0xdb30
addq $0x70, %rsp
popq %rbp
retq
nopl (%rax,%rax)