// File: /workspace/github_c_makefile_star2_O1/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 0xe050
movq %rbx, %r12
movq $-0x5, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x36e8
movq 0x1057a(%rip), %rcx     # 0x1e5c0
movq (%rcx,%r12,8), %r12
cmpq $-0x1, %r12
jne 0xe02e
movq 0x100d1(%rip), %rsi     # 0x1e128
movq %rax, %rdi
xorl %edx, %edx
callq 0x36e8
movq %rax, 0x100c0(%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 0x10677(%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 0x10064(%rip), %rsi     # 0x1e128
movq %rax, %rdi
xorl %edx, %edx
callq 0x36e8
movq %rax, 0x10053(%rip)     # 0x1e128
cmpq $-0x1, %rbx
je 0xe1b4
movq %rbx, %r14
movq 0x10087(%rip), %rax     # 0x1e170
movq (%rax,%r14,8), %r15
movq 0x104cc(%rip), %rax     # 0x1e5c0
movq (%rax,%r15,8), %rsi
movq 0x10609(%rip), %rdi     # 0x1e708
xorl %edx, %edx
callq 0x36e8
movq %rax, %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x36e8
movq 0x10052(%rip), %rcx     # 0x1e170
movq (%rcx,%r15,8), %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x36e8
movq 0x10655(%rip), %rdi     # 0x1e788
movq %rax, %rsi
xorl %edx, %edx
callq 0x36e8
movq 0x1002c(%rip), %rcx     # 0x1e170
movq 0xffdd(%rip), %rdx      # 0x1e128
movq (%rcx,%rdx,8), %rsi
movq %rax, %rdi
xorl %edx, %edx
callq 0x36e8
movq 0x10010(%rip), %rcx     # 0x1e170
movq 0xffc1(%rip), %rdx      # 0x1e128
movq %rax, (%rcx,%rdx,8)
movq 0x1044e(%rip), %rax     # 0x1e5c0
movq (%rax,%r14,8), %r14
cmpq $-0x1, %r14
jne 0xe0e2
movq $-0x1, %r14
movq 0xffe2(%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 0x10416(%rip), %rax     # 0x1e5c0
movq (%rax,%rbx,8), %rbx
cmpq $-0x1, %rbx
jne 0xe187
cmpq $-0x1, %r14
je 0xe1d5
movq 0x103ff(%rip), %rax     # 0x1e5c0
cmpq $-0x1, (%rax,%r14,8)
jne 0xe1dc
movq 0xffa1(%rip), %rax      # 0x1e170
movq (%rax,%r14,8), %r14
jmp 0xe1dc
movq $-0x1, %r14
movl $0x1, %edi
callq 0x3851
movq %r14, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x36e8
movq %rax, %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x36e8
movq 0x104fd(%rip), %rdi     # 0x1e708
movq %rax, %rsi
xorl %edx, %edx
callq 0x36e8
movq %rax, %rbx
movl $0x1, %edi
callq 0x3851
movq %rbx, %rdi
movq %rax, %rsi
xorl %edx, %edx
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x36e8