// File: /workspace/github_c_makefile_star2_O2/azhai[P]mlite/mlite.c
// Function: make_recursive_fns
cell make_recursive_fns(cell cs, cell body) {
	cell	p, c, n, fns, vars, undef, new;

	undef = make_undefineds(cs);
	save(undef);
	fns = body;			/* ((fn (() body ...))) */
	fns = node(NIL, fns);
	fns = node(fns, NIL);
	fns = node(S_fn, fns);
	fns = node(fns, NIL);
	fns = node(fns, NIL);
	save(fns);
	for (p = cs; p != NIL; p = cdr(p)) {
		c = car(p);		/* (set! name (fn case ...)) */
		n = cdr(c);
		n = node(S_fn, n);
		n = node(n, NIL);
		n = node(car(c), n);
		n = node(S_setb, n);
		set(car(Stack), node(n, car(Stack)));
	}
	vars = NIL;
	for (p = cs; p != NIL; p = cdr(p))
		vars = node(caar(p), vars);
	if (vars != NIL && cdr(vars) == NIL)
		vars = car(vars);
	fns = unsave(1);
	fns = node(vars, fns);
	fns = node(fns, NIL);
	fns = node(S_fn, fns);
	undef = unsave(1);
	return node(fns, undef);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rsi, %r15
movq %rdi, %r14
callq 0xcc80
movq 0xf455(%rip), %rsi      # 0x1c128
movq %rax, %rdi
xorl %edx, %edx
callq 0x3613
movq %rax, 0xf444(%rip)      # 0x1c128
pushq $-0x1
popq %rbx
movq %rbx, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x3613
movq %rax, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x3613
movq 0xfa00(%rip), %rdi      # 0x1c708
movq %rax, %rsi
xorl %edx, %edx
callq 0x3613
movq %rax, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x3613
movq %rax, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x3613
movq 0xf3f5(%rip), %rsi      # 0x1c128
movq %rax, %rdi
xorl %edx, %edx
callq 0x3613
movq %rax, 0xf3e4(%rip)      # 0x1c128
movq %r14, %r15
cmpq $-0x1, %r15
je 0xce0d
movq 0xf418(%rip), %rax      # 0x1c170
movq (%rax,%r15,8), %r12
movq 0xf85d(%rip), %rax      # 0x1c5c0
movq (%rax,%r12,8), %rsi
movq 0xf99a(%rip), %rdi      # 0x1c708
xorl %edx, %edx
callq 0x3613
movq %rax, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x3613
movq 0xf3e7(%rip), %rcx      # 0x1c170
movq (%rcx,%r12,8), %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x3613
movq 0xf9ea(%rip), %rdi      # 0x1c788
movq %rax, %rsi
xorl %edx, %edx
callq 0x3613
movq 0xf3c1(%rip), %rcx      # 0x1c170
movq 0xf372(%rip), %rdx      # 0x1c128
movq (%rcx,%rdx,8), %rsi
movq %rax, %rdi
xorl %edx, %edx
callq 0x3613
movq 0xf3a5(%rip), %rcx      # 0x1c170
movq 0xf356(%rip), %rdx      # 0x1c128
movq %rax, (%rcx,%rdx,8)
movq 0xf7e3(%rip), %rax      # 0x1c5c0
movq (%rax,%r15,8), %r15
jmp 0xcd47
movq 0xf383(%rip), %rax      # 0x1c170
movq (%rax,%r14,8), %rcx
movq (%rax,%rcx,8), %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x3613
movq %rax, %rbx
movq 0xf7b7(%rip), %rax      # 0x1c5c0
movq (%rax,%r14,8), %r14
cmpq $-0x1, %r14
jne 0xcde6
cmpq $-0x1, %rbx
je 0xce34
movq 0xf7a0(%rip), %rax      # 0x1c5c0
cmpq $-0x1, (%rax,%rbx,8)
jne 0xce37
movq 0xf342(%rip), %rax      # 0x1c170
movq (%rax,%rbx,8), %rbx
jmp 0xce37
pushq $-0x1
popq %rbx
pushq $0x1
popq %r14
movl %r14d, %edi
callq 0x3775
movq %rbx, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x3613
pushq $-0x1
popq %rsi
movq %rax, %rdi
xorl %edx, %edx
callq 0x3613
movq 0xf8a4(%rip), %rdi      # 0x1c708
movq %rax, %rsi
xorl %edx, %edx
callq 0x3613
movq %rax, %rbx
movl %r14d, %edi
callq 0x3775
movq %rbx, %rdi
movq %rax, %rsi
xorl %edx, %edx
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x3613