// File: /workspace/github_c_makefile_star2_O0/azhai[P]mlite/mlite.c
// Function: decls
cell decls(int local) {
	cell	d, ds, new;
	char	*msg;

	msg = "expected declaration in 'let' or 'local'";
	ds = NIL;
	save(ds);
	for (;;) {
		switch (Token) {
		case TOK_VAL:	d = val_decl(local); break;
		case TOK_FUN:	d = fun_decl(local); break;
		default:	unsave(1);
				return error(msg, NOEXPR);
		}
		if (local) {
			if (ds == NIL) {
				ds = car(Stack) = d;
			}
			else {
				if (car(ds) == S_letrec) {
					set(cddr(ds), node(d, NIL));
				}
				else {
					set(cdadar(ds), node(d, NIL));
				}
				ds = d;
			}
		}
		else {
			if (ds == NIL) {
				set(ds, node(d, NIL));
				car(Stack) = ds;
			}
			else {
				set(cdr(ds), node(d, NIL));
			}
		}
		if (Token != TOK_SEMI)
			break;
		Token = scan();
	}
	if (!local) {
		ds = unsave(1);
		if (cdr(ds) == NIL)
			return car(ds);
		return node(S_begin, ds);
	}
	return node(ds, unsave(1));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movl %edi, -0xc(%rbp)
leaq 0xf469(%rip), %rax      # 0x209fb
movq %rax, -0x30(%rbp)
movq $-0x1, -0x20(%rbp)
movq -0x20(%rbp), %rdi
movq 0x16b8f(%rip), %rsi     # 0x28138
xorl %edx, %edx
callq 0x3780
movq %rax, 0x16b81(%rip)     # 0x28138
movl 0x17123(%rip), %eax     # 0x286e0
movl %eax, -0x34(%rbp)
subl $0xffffff1e, %eax       # imm = 0xFFFFFF1E
je 0x115d5
jmp 0x115c9
movl -0x34(%rbp), %eax
subl $0xffffff2e, %eax       # imm = 0xFFFFFF2E
je 0x115e3
jmp 0x115f1
movl -0xc(%rbp), %edi
callq 0x10ab0
movq %rax, -0x18(%rbp)
jmp 0x11614
movl -0xc(%rbp), %edi
callq 0x10ed0
movq %rax, -0x18(%rbp)
jmp 0x11614
movl $0x1, %edi
callq 0x3950
movq -0x30(%rbp), %rdi
movq $-0x8, %rsi
callq 0x34b0
movq %rax, -0x8(%rbp)
jmp 0x117e0
cmpl $0x0, -0xc(%rbp)
je 0x116e6
cmpq $-0x1, -0x20(%rbp)
jne 0x11644
movq -0x18(%rbp), %rax
movq 0x16b50(%rip), %rcx     # 0x28180
movq 0x16b01(%rip), %rdx     # 0x28138
movq %rax, (%rcx,%rdx,8)
movq %rax, -0x20(%rbp)
jmp 0x116e4
movq 0x16b35(%rip), %rax     # 0x28180
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rax
cmpq 0x1711e(%rip), %rax     # 0x28778
jne 0x11692
movq -0x18(%rbp), %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdx
movq 0x16f53(%rip), %rax     # 0x285d0
movq 0x16f4c(%rip), %rcx     # 0x285d0
movq -0x20(%rbp), %rsi
movq (%rcx,%rsi,8), %rcx
movq %rdx, (%rax,%rcx,8)
jmp 0x116dc
movq -0x18(%rbp), %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdx
movq 0x16f1d(%rip), %rax     # 0x285d0
movq 0x16ac6(%rip), %rcx     # 0x28180
movq 0x16f0f(%rip), %rsi     # 0x285d0
movq 0x16ab8(%rip), %rdi     # 0x28180
movq -0x20(%rbp), %r8
movq (%rdi,%r8,8), %rdi
movq (%rsi,%rdi,8), %rsi
movq (%rcx,%rsi,8), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
jmp 0x1174e
cmpq $-0x1, -0x20(%rbp)
jne 0x11723
movq -0x18(%rbp), %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdx
movq 0x16a6a(%rip), %rax     # 0x28180
movq 0x16a1b(%rip), %rcx     # 0x28138
movq %rdx, (%rax,%rcx,8)
jmp 0x1174c
movq -0x18(%rbp), %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdx
movq 0x16e8c(%rip), %rax     # 0x285d0
movq -0x20(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
jmp 0x1174e
cmpl $-0x65, 0x16f8b(%rip)   # 0x286e0
je 0x11759
jmp 0x11769
callq 0xcc90
movl %eax, 0x16f7c(%rip)     # 0x286e0
jmp 0x115b7
cmpl $0x0, -0xc(%rbp)
jne 0x117bc
movl $0x1, %edi
callq 0x3950
movq %rax, -0x20(%rbp)
movq 0x16e4c(%rip), %rax     # 0x285d0
movq -0x20(%rbp), %rcx
cmpq $-0x1, (%rax,%rcx,8)
jne 0x117a4
movq 0x169ea(%rip), %rax     # 0x28180
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x8(%rbp)
jmp 0x117e0
movq 0x16fbd(%rip), %rdi     # 0x28768
movq -0x20(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x8(%rbp)
jmp 0x117e0
movq -0x20(%rbp), %rax
movq %rax, -0x40(%rbp)
movl $0x1, %edi
callq 0x3950
movq -0x40(%rbp), %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x40, %rsp
popq %rbp
retq
nopw (%rax,%rax)