// File: /workspace/github_c_makefile_star2_O3/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, %rbx
movq $-0x1, %r14
movq $-0x1, %rax
cmpq $-0x1, %rdi
je 0xdec3
movq %rbx, %r12
movq $-0x5, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x36e8
movq 0x10707(%rip), %rcx     # 0x1e5c0
movq (%rcx,%r12,8), %r12
cmpq $-0x1, %r12
jne 0xdea1
movq 0x1025e(%rip), %rsi     # 0x1e128
movq %rax, %rdi
xorl %edx, %edx
callq 0x36e8
movq %rax, 0x1024d(%rip)     # 0x1e128
movq $-0x1, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x36e8
movq %rax, %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x36e8
movq 0x10804(%rip), %rdi     # 0x1e708
movq %rax, %rsi
xorl %edx, %edx
callq 0x36e8
movq %rax, %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x36e8
movq %rax, %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x36e8
movq 0x101f1(%rip), %rsi     # 0x1e128
movq %rax, %rdi
xorl %edx, %edx
callq 0x36e8
movq %rax, 0x101e0(%rip)     # 0x1e128
cmpq $-0x1, %rbx
je 0xe04f
movq 0x10217(%rip), %rcx     # 0x1e170
movq 0x10660(%rip), %rax     # 0x1e5c0
movq %rbx, %r14
movq (%rcx,%r14,8), %r15
movq (%rax,%r15,8), %rsi
movq 0x10796(%rip), %rdi     # 0x1e708
xorl %edx, %edx
callq 0x36e8
movq %rax, %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x36e8
movq 0x101df(%rip), %rcx     # 0x1e170
movq (%rcx,%r15,8), %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x36e8
movq 0x107e2(%rip), %rdi     # 0x1e788
movq %rax, %rsi
xorl %edx, %edx
callq 0x36e8
movq 0x101b9(%rip), %rcx     # 0x1e170
movq 0x1016a(%rip), %rdx     # 0x1e128
movq (%rcx,%rdx,8), %rsi
movq %rax, %rdi
xorl %edx, %edx
callq 0x36e8
movq 0x1019d(%rip), %rcx     # 0x1e170
movq 0x1014e(%rip), %rdx     # 0x1e128
movq %rax, (%rcx,%rdx,8)
movq 0x105db(%rip), %rax     # 0x1e5c0
movq (%rax,%r14,8), %r14
cmpq $-0x1, %r14
jne 0xdf63
movq $-0x1, %r14
movq 0x1016f(%rip), %rax     # 0x1e170
movq (%rax,%rbx,8), %rcx
movq (%rax,%rcx,8), %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0x36e8
movq %rax, %r14
movq 0x105a3(%rip), %rax     # 0x1e5c0
movq (%rax,%rbx,8), %rbx
cmpq $-0x1, %rbx
jne 0xdffa
cmpq $-0x1, %r14
je 0xe048
movq 0x1058c(%rip), %rax     # 0x1e5c0
cmpq $-0x1, (%rax,%r14,8)
jne 0xe04f
movq 0x1012e(%rip), %rax     # 0x1e170
movq (%rax,%r14,8), %r14
jmp 0xe04f
movq $-0x1, %r14
movl $0x1, %edi
callq 0x384f
movq %r14, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x36e8
movq %rax, %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x36e8
movq 0x1068a(%rip), %rdi     # 0x1e708
movq %rax, %rsi
xorl %edx, %edx
callq 0x36e8
movq %rax, %rbx
movl $0x1, %edi
callq 0x384f
movq %rbx, %rdi
movq %rax, %rsi
xorl %edx, %edx
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x36e8