// File: /workspace/github_c_makefile_star2_O2/BernardTatin[P]s7sh/s7.c
// Function: s7_list_nl
s7_pointer s7_list_nl(s7_scheme *sc, s7_int num_values, ...) /* arglist should be NULL terminated */
                {
                    s7_int i;
                    va_list ap;
                    s7_pointer p;

                    if (num_values == 0)
                        return(sc->nil);

                    sc->w = sc->nil;
                    va_start(ap, num_values);
                    for (i = 0; i < num_values; i++)
                    {
                        p = va_arg(ap, s7_pointer);
                        if (!p)
                        {
                            va_end(ap);
                            return(s7_wrong_number_of_args_error(sc, "not enough args for s7_list_nl: ~S", safe_reverse_in_place(sc, sc->w)));
                        }
                        sc->w = cons(sc, p, sc->w);
                    }
                    p = va_arg(ap, s7_pointer);
                    va_end(ap);
                    if (p)
                        return(s7_wrong_number_of_args_error(sc, "too many args for s7_list_nl: ~S", safe_reverse_in_place(sc, sc->w)));

                    if (sc->safety > NO_SAFETY)
                        check_list_validity(sc, "s7_list_nl", sc->w);

                    p = sc->w;
                    sc->w = sc->nil;
                    return(safe_reverse_in_place(sc, p));
                }

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0xd8, %rsp
movq %rdx, 0x30(%rsp)
movq %rcx, 0x38(%rsp)
movq %r8, 0x40(%rsp)
movq %r9, 0x48(%rsp)
testb %al, %al
je 0x2e28d
movaps %xmm0, 0x50(%rsp)
movaps %xmm1, 0x60(%rsp)
movaps %xmm2, 0x70(%rsp)
movaps %xmm3, 0x80(%rsp)
movaps %xmm4, 0x90(%rsp)
movaps %xmm5, 0xa0(%rsp)
movaps %xmm6, 0xb0(%rsp)
movaps %xmm7, 0xc0(%rsp)
movq 0x110(%rdi), %rax
testq %rsi, %rsi
je 0x2e3bc
movq %rdi, %rbx
movq %rax, 0x4d8(%rdi)
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
leaq 0x100(%rsp), %rax
movq %rax, 0x8(%rsp)
movabsq $0x3000000010, %rax     # imm = 0x3000000010
movq %rax, (%rsp)
xorl %r14d, %r14d
testq %rsi, %rsi
cmovgq %rsi, %r14
movl (%rsp), %eax
subq $0x1, %r14
jb 0x2e35a
cmpl $0x28, %eax
ja 0x2e2f4
movq %rax, %rcx
addq 0x10(%rsp), %rcx
addl $0x8, %eax
movl %eax, (%rsp)
jmp 0x2e302
movq 0x8(%rsp), %rcx
leaq 0x8(%rcx), %rax
movq %rax, 0x8(%rsp)
movq (%rcx), %r15
testq %r15, %r15
je 0x2e36f
movq 0x4d8(%rbx), %r12
movq 0x90(%rbx), %rax
cmpq 0x98(%rbx), %rax
ja 0x2e330
movq %rbx, %rdi
callq 0x9c27
movq 0x90(%rbx), %rax
leaq -0x8(%rax), %rcx
movq %rcx, 0x90(%rbx)
movq -0x8(%rax), %rax
movq $0x200001, (%rax)       # imm = 0x200001
movq %r15, 0x8(%rax)
movq %r12, 0x10(%rax)
movq %rax, 0x4d8(%rbx)
jmp 0x2e2d6
cmpl $0x28, %eax
ja 0x2e387
movq %rax, %rcx
addq 0x10(%rsp), %rcx
addl $0x8, %eax
movl %eax, (%rsp)
jmp 0x2e395
movq 0x4d8(%rbx), %rsi
movq %rbx, %rdi
callq 0xa833
leaq 0xa7e37(%rip), %rsi     # 0xd61bc
jmp 0x2e3b1
movq 0x8(%rsp), %rcx
leaq 0x8(%rcx), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, (%rcx)
je 0x2e3cb
movq 0x4d8(%rbx), %rsi
movq %rbx, %rdi
callq 0xa833
leaq 0xa7e2e(%rip), %rsi     # 0xd61df
movq %rbx, %rdi
movq %rax, %rdx
callq 0x2e40a
addq $0xd8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
cmpq $0x0, 0x6a0(%rbx)
jle 0x2e3eb
movq 0x4d8(%rbx), %rdx
leaq 0xa7e1d(%rip), %rsi     # 0xd6200
movq %rbx, %rdi
callq 0x2e1c9
movq 0x4d8(%rbx), %rsi
movq 0x110(%rbx), %rax
movq %rax, 0x4d8(%rbx)
movq %rbx, %rdi
callq 0xa833
jmp 0x2e3bc