// File: /workspace/github_c_makefile_star2_O0/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
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
callq 0x12ea0
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rdi
movq 0x15220(%rip), %rsi     # 0x28138
xorl %edx, %edx
callq 0x3780
movq %rax, 0x15212(%rip)     # 0x28138
movq -0x10(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rsi
movq $-0x1, %rdi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x30(%rbp)
movq 0x157b7(%rip), %rdi     # 0x28718
movq -0x30(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
movq 0x15191(%rip), %rsi     # 0x28138
xorl %edx, %edx
callq 0x3780
movq %rax, 0x15183(%rip)     # 0x28138
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
cmpq $-0x1, -0x18(%rbp)
je 0x1309d
movq 0x151b1(%rip), %rax     # 0x28180
movq -0x18(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x20(%rbp)
movq 0x155ee(%rip), %rax     # 0x285d0
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x28(%rbp)
movq 0x15723(%rip), %rdi     # 0x28718
movq -0x28(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x28(%rbp)
movq 0x1515f(%rip), %rax     # 0x28180
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movq -0x28(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x28(%rbp)
movq 0x15759(%rip), %rdi     # 0x28798
movq -0x28(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
movq 0x15127(%rip), %rax     # 0x28180
movq 0x150d8(%rip), %rcx     # 0x28138
movq (%rax,%rcx,8), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rdx
movq 0x15106(%rip), %rax     # 0x28180
movq 0x150b7(%rip), %rcx     # 0x28138
movq %rdx, (%rax,%rcx,8)
movq 0x15544(%rip), %rax     # 0x285d0
movq -0x18(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x18(%rbp)
jmp 0x12fbd
movq $-0x1, -0x38(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
cmpq $-0x1, -0x18(%rbp)
je 0x130f2
movq 0x150c5(%rip), %rax     # 0x28180
movq 0x150be(%rip), %rcx     # 0x28180
movq -0x18(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rdi
movq -0x38(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x38(%rbp)
movq 0x154ec(%rip), %rax     # 0x285d0
movq -0x18(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x18(%rbp)
jmp 0x130ad
cmpq $-0x1, -0x38(%rbp)
je 0x1311e
movq 0x154d0(%rip), %rax     # 0x285d0
movq -0x38(%rbp), %rcx
cmpq $-0x1, (%rax,%rcx,8)
jne 0x1311e
movq 0x1506e(%rip), %rax     # 0x28180
movq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x38(%rbp)
movl $0x1, %edi
callq 0x3950
movq %rax, -0x30(%rbp)
movq -0x38(%rbp), %rdi
movq -0x30(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x30(%rbp)
movq 0x155bc(%rip), %rdi     # 0x28718
movq -0x30(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x30(%rbp)
movl $0x1, %edi
callq 0x3950
movq %rax, -0x40(%rbp)
movq -0x30(%rbp), %rdi
movq -0x40(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
addq $0x50, %rsp
popq %rbp
retq
nop