// File: /workspace/github_c_makefile_star2_O0/azhai[P]mlite/mlite.c
// Function: val_decl
cell val_decl(int inner) {
	cell	n, def, v, a, new;

	a = node(NIL, NIL);
	save(a);
	v = node(NIL, NIL);
	save(v);
	def = node(NIL, NIL);
	save(def);
	for (;;) {
		Token = scan();
		set(car(v), pattern());
		def = make_defines(car(v), def);
		if (Token != TOK_ID || Attr != S_equal) {
			unsave(3);
			return error("missing '=' in 'val'", Attr);
		}
		Token = scan();
		set(car(a), expr());
		if (Token != TOK_AND)
			break;
		set(cdr(def), node(NIL, NIL));
		def = cdr(def);
		set(cdr(v), node(NIL, NIL));
		v = cdr(v);
		set(cdr(a), node(NIL, NIL));
		a = cdr(a);
	}
	if (!inner && cdar(Stack) == NIL && symbol_p(caadr(Stack))) {
		unsave(1);
		n = cadr(Stack);
		n = node(car(unsave(1)), n);
		n = node(S_define, n);
		unsave(1);
		return n;
	}
	def = unsave(1);	/* ((fn (v... def...)) a...) */
	n = unsave(1);
	if (cdr(n) == NIL)
		n = car(n);
	n = node(n, def);
	n = node(n, NIL);
	n = node(S_fn, n);
	n = node(n, unsave(1));
	return n;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movl %edi, -0xc(%rbp)
movq $-0x1, %rsi
xorl %edx, %edx
movq %rsi, %rdi
callq 0x3780
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
movq 0x1765d(%rip), %rsi     # 0x28138
xorl %edx, %edx
callq 0x3780
movq %rax, 0x1764f(%rip)     # 0x28138
movq $-0x1, %rsi
xorl %edx, %edx
movq %rsi, %rdi
callq 0x3780
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
movq 0x1762f(%rip), %rsi     # 0x28138
xorl %edx, %edx
callq 0x3780
movq %rax, 0x17621(%rip)     # 0x28138
movq $-0x1, %rsi
xorl %edx, %edx
movq %rsi, %rdi
callq 0x3780
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
movq 0x17601(%rip), %rsi     # 0x28138
xorl %edx, %edx
callq 0x3780
movq %rax, 0x175f3(%rip)     # 0x28138
callq 0xcc90
movl %eax, 0x17b90(%rip)     # 0x286e0
callq 0xf080
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdx
movq 0x1761c(%rip), %rax     # 0x28180
movq -0x28(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x1760d(%rip), %rax     # 0x28180
movq -0x28(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movq -0x20(%rbp), %rsi
callq 0x10970
movq %rax, -0x20(%rbp)
cmpl $0xfffffed1, 0x17b4e(%rip) # imm = 0xFFFFFED1
jne 0x10ba4
movq 0x175cd(%rip), %rax     # 0x28168
cmpq 0x17b66(%rip), %rax     # 0x28708
je 0x10bca
movl $0x3, %edi
callq 0x3950
movq 0x175b3(%rip), %rsi     # 0x28168
leaq 0xfdad(%rip), %rdi      # 0x20969
callq 0x34b0
movq %rax, -0x8(%rbp)
jmp 0x10ec1
callq 0xcc90
movl %eax, 0x17b0b(%rip)     # 0x286e0
callq 0xd930
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdx
movq 0x17597(%rip), %rax     # 0x28180
movq -0x30(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
cmpl $0xffffff37, 0x17ae5(%rip) # imm = 0xFFFFFF37
je 0x10c02
jmp 0x10cb8
movq $-0x1, %rsi
xorl %edx, %edx
movq %rsi, %rdi
callq 0x3780
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdx
movq 0x179ae(%rip), %rax     # 0x285d0
movq -0x20(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x1799f(%rip), %rax     # 0x285d0
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x20(%rbp)
movq $-0x1, %rsi
xorl %edx, %edx
movq %rsi, %rdi
callq 0x3780
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdx
movq 0x17973(%rip), %rax     # 0x285d0
movq -0x28(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x17964(%rip), %rax     # 0x285d0
movq -0x28(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x28(%rbp)
movq $-0x1, %rsi
xorl %edx, %edx
movq %rsi, %rdi
callq 0x3780
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdx
movq 0x17938(%rip), %rax     # 0x285d0
movq -0x30(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x17929(%rip), %rax     # 0x285d0
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x30(%rbp)
jmp 0x10b45
cmpl $0x0, -0xc(%rbp)
jne 0x10e15
movq 0x17907(%rip), %rax     # 0x285d0
movq 0x174b0(%rip), %rcx     # 0x28180
movq 0x17461(%rip), %rdx     # 0x28138
movq (%rcx,%rdx,8), %rcx
cmpq $-0x1, (%rax,%rcx,8)
jne 0x10e15
movq 0x17493(%rip), %rax     # 0x28180
movq 0x1748c(%rip), %rcx     # 0x28180
movq 0x178d5(%rip), %rdx     # 0x285d0
movq 0x17436(%rip), %rsi     # 0x28138
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
cmpq $0x0, (%rax,%rcx,8)
jl 0x10e15
movq 0x178d4(%rip), %rax     # 0x285f0
movq 0x1745d(%rip), %rcx     # 0x28180
movq 0x17456(%rip), %rdx     # 0x28180
movq 0x1789f(%rip), %rsi     # 0x285d0
movq 0x17400(%rip), %rdi     # 0x28138
movq (%rsi,%rdi,8), %rsi
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
movsbl (%rax,%rcx), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0x10e15
movq 0x17425(%rip), %rax     # 0x28180
movq 0x1741e(%rip), %rcx     # 0x28180
movq 0x17417(%rip), %rdx     # 0x28180
movq 0x17860(%rip), %rsi     # 0x285d0
movq 0x173c1(%rip), %rdi     # 0x28138
movq (%rsi,%rdi,8), %rsi
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
cmpq $-0x22, (%rax,%rcx,8)
jne 0x10e15
movl $0x1, %edi
callq 0x3950
movq 0x173e1(%rip), %rax     # 0x28180
movq 0x1782a(%rip), %rcx     # 0x285d0
movq 0x1738b(%rip), %rdx     # 0x28138
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x18(%rbp)
movq 0x173c0(%rip), %rax     # 0x28180
movq %rax, -0x40(%rbp)
movl $0x1, %edi
callq 0x3950
movq %rax, %rcx
movq -0x40(%rbp), %rax
movq (%rax,%rcx,8), %rdi
movq -0x18(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
movq 0x17981(%rip), %rdi     # 0x28770
movq -0x18(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
movl $0x1, %edi
callq 0x3950
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x10ec1
movl $0x1, %edi
callq 0x3950
movq %rax, -0x20(%rbp)
movl $0x1, %edi
callq 0x3950
movq %rax, -0x18(%rbp)
movq 0x17798(%rip), %rax     # 0x285d0
movq -0x18(%rbp), %rcx
cmpq $-0x1, (%rax,%rcx,8)
jne 0x10e56
movq 0x17336(%rip), %rax     # 0x28180
movq -0x18(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
movq 0x17892(%rip), %rdi     # 0x28718
movq -0x18(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x48(%rbp)
movl $0x1, %edi
callq 0x3950
movq -0x48(%rbp), %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax,%rax)