// File: /workspace/github_c_makefile_star2_O3/azhai[P]mlite/mlite.c
// Function: fun_decl
cell fun_decl(int inner) {
	cell	n, m, def, bind, new;

	bind = node(NIL, NIL);
	save(bind);
	def = node(NIL, NIL);
	save(def);
	for (;;) {
		Token = scan();
		if (Token != TOK_ID) {
			unsave(2);
			return error("identifier expected at", Attr);
		}
		n = node(Attr, NIL);
		n = node(Attr, n);
		set(car(def), node(S_define, n));
		Token = scan();
		n = match(1);
		n = node(cadar(def), n);
		car(bind) = n;
		if (Token != TOK_AND)
			break;
		set(cdr(bind), node(NIL, NIL));
		bind = cdr(bind);
		set(cdr(def), node(NIL, NIL));
		def = cdr(def);
	}
	if (!inner && cdar(Stack) == NIL) {
		m = caadr(Stack);		/* (name pattern)          */
		n = node(S_fn, cdr(m));		/* --> (name (fn pattern)) */
		n = node(n, NIL);
		n = node(car(m), n);
		unsave(2);
		return node(S_define, n);
	}
	def = unsave(1);
	n = node(unsave(1), def);
	n = node(S_letrec, n);
	return n;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movl %edi, %ebx
movq $-0x1, %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x36e8
movq %rax, %r14
movq 0x117e8(%rip), %rsi     # 0x1e128
movq %rax, %rdi
xorl %edx, %edx
callq 0x36e8
movq %rax, 0x117d7(%rip)     # 0x1e128
movq $-0x1, %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x36e8
movq %rax, %r15
movq 0x117b8(%rip), %rsi     # 0x1e128
movq %rax, %rdi
xorl %edx, %edx
callq 0x36e8
movq %rax, 0x117a7(%rip)     # 0x1e128
callq 0x9ac4
movl %eax, 0x11d44(%rip)     # 0x1e6d0
cmpl $0xfffffed1, %eax       # imm = 0xFFFFFED1
jne 0xca89
movq 0x117ba(%rip), %rdi     # 0x1e158
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x36e8
movq 0x117a5(%rip), %rdi     # 0x1e158
movq %rax, %rsi
xorl %edx, %edx
callq 0x36e8
movq 0x11d9c(%rip), %rdi     # 0x1e760
movq %rax, %rsi
xorl %edx, %edx
callq 0x36e8
movq 0x1179b(%rip), %rcx     # 0x1e170
movq %rax, (%rcx,%r15,8)
callq 0x9ac4
movl %eax, 0x11cec(%rip)     # 0x1e6d0
movl $0x1, %edi
callq 0xb317
movq 0x1177b(%rip), %rcx     # 0x1e170
movq 0x11bc4(%rip), %rdx     # 0x1e5c0
movq (%rcx,%r15,8), %rsi
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x36e8
movq 0x11757(%rip), %rcx     # 0x1e170
movq %rax, (%rcx,%r14,8)
cmpl $0xffffff37, 0x11ca9(%rip) # imm = 0xFFFFFF37
jne 0xcabc
movq $-0x1, %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x36e8
movq %rax, %r12
movq 0x11b74(%rip), %rax     # 0x1e5c0
movq %r12, (%rax,%r14,8)
movq $-0x1, %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x36e8
movq %rax, %r13
movq 0x11b51(%rip), %rax     # 0x1e5c0
movq %r13, (%rax,%r15,8)
callq 0x9ac4
movl %eax, 0x11c52(%rip)     # 0x1e6d0
movq %r12, %r14
movq %r13, %r15
jmp 0xc98c
movl $0x2, %edi
callq 0x384f
movq 0x116be(%rip), %rsi     # 0x1e158
leaq 0x9e12(%rip), %rdi      # 0x168b3
callq 0x33eb
movq $-0x5, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
testl %ebx, %ebx
jne 0xcad9
movq 0x11af9(%rip), %rax     # 0x1e5c0
movq 0x1165a(%rip), %rdx     # 0x1e128
movq (%rcx,%rdx,8), %rsi
cmpq $-0x1, (%rax,%rsi,8)
je 0xcb1c
movl $0x1, %edi
callq 0x384f
movq %rax, %rbx
movl $0x1, %edi
callq 0x384f
movq %rax, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x36e8
movq 0x11c64(%rip), %rdi     # 0x1e768
movq %rax, %rsi
xorl %edx, %edx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x36e8
movq (%rax,%rdx,8), %rdx
movq (%rcx,%rdx,8), %rdx
movq (%rcx,%rdx,8), %rbx
movq 0x11bd9(%rip), %rdi     # 0x1e708
movq (%rax,%rbx,8), %rsi
xorl %edx, %edx
callq 0x36e8
movq %rax, %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x36e8
movq 0x1161e(%rip), %rcx     # 0x1e170
movq (%rcx,%rbx,8), %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x36e8
movq %rax, %rbx
movl $0x2, %edi
callq 0x384f
movq 0x11bec(%rip), %rdi     # 0x1e760
movq %rbx, %rsi
jmp 0xcb07