// File: /workspace/github_c_makefile_star2_O0/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
subq $0x40, %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 0x1723d(%rip), %rsi     # 0x28138
xorl %edx, %edx
callq 0x3780
movq %rax, 0x1722f(%rip)     # 0x28138
movq $-0x1, %rsi
xorl %edx, %edx
movq %rsi, %rdi
callq 0x3780
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
movq 0x1720f(%rip), %rsi     # 0x28138
xorl %edx, %edx
callq 0x3780
movq %rax, 0x17201(%rip)     # 0x28138
callq 0xcc90
movl %eax, 0x1779e(%rip)     # 0x286e0
cmpl $0xfffffed1, 0x17794(%rip) # imm = 0xFFFFFED1
je 0x10f74
movl $0x2, %edi
callq 0x3950
movq 0x17209(%rip), %rsi     # 0x28168
leaq 0xfa18(%rip), %rdi      # 0x2097e
callq 0x34b0
movq %rax, -0x8(%rbp)
jmp 0x111ce
movq 0x171ed(%rip), %rdi     # 0x28168
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
movq 0x171d4(%rip), %rdi     # 0x28168
movq -0x18(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
movq 0x177c6(%rip), %rdi     # 0x28770
movq -0x18(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdx
movq 0x171bc(%rip), %rax     # 0x28180
movq -0x28(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
callq 0xcc90
movl %eax, 0x17709(%rip)     # 0x286e0
movl $0x1, %edi
callq 0xf110
movq %rax, -0x18(%rbp)
movq 0x17194(%rip), %rax     # 0x28180
movq 0x175dd(%rip), %rcx     # 0x285d0
movq 0x17186(%rip), %rdx     # 0x28180
movq -0x28(%rbp), %rsi
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rdi
movq -0x18(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdx
movq 0x1715c(%rip), %rax     # 0x28180
movq -0x30(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
cmpl $0xffffff37, 0x176aa(%rip) # imm = 0xFFFFFF37
je 0x1103a
jmp 0x110b5
movq $-0x1, %rsi
xorl %edx, %edx
movq %rsi, %rdi
callq 0x3780
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdx
movq 0x17576(%rip), %rax     # 0x285d0
movq -0x30(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x17567(%rip), %rax     # 0x285d0
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x30(%rbp)
movq $-0x1, %rsi
xorl %edx, %edx
movq %rsi, %rdi
callq 0x3780
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdx
movq 0x1753b(%rip), %rax     # 0x285d0
movq -0x28(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x1752c(%rip), %rax     # 0x285d0
movq -0x28(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x28(%rbp)
jmp 0x10f37
cmpl $0x0, -0xc(%rbp)
jne 0x11186
movq 0x1750a(%rip), %rax     # 0x285d0
movq 0x170b3(%rip), %rcx     # 0x28180
movq 0x17064(%rip), %rdx     # 0x28138
movq (%rcx,%rdx,8), %rcx
cmpq $-0x1, (%rax,%rcx,8)
jne 0x11186
movq 0x17096(%rip), %rax     # 0x28180
movq 0x1708f(%rip), %rcx     # 0x28180
movq 0x174d8(%rip), %rdx     # 0x285d0
movq 0x17039(%rip), %rsi     # 0x28138
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x20(%rbp)
movq 0x17602(%rip), %rdi     # 0x28718
movq 0x174b3(%rip), %rax     # 0x285d0
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %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 0x17033(%rip), %rax     # 0x28180
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movq -0x18(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
movl $0x2, %edi
callq 0x3950
movq 0x175fb(%rip), %rdi     # 0x28770
movq -0x18(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x8(%rbp)
jmp 0x111ce
movl $0x1, %edi
callq 0x3950
movq %rax, -0x28(%rbp)
movl $0x1, %edi
callq 0x3950
movq %rax, %rdi
movq -0x28(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
movq 0x175c1(%rip), %rdi     # 0x28778
movq -0x18(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax,%rax)