// File: /workspace/github_c_makefile_star2_O3/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 0x3a4c6
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 0x3a648
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)
jle 0x3a595
movq %rsi, %r14
movl (%rsp), %ecx
cmpq $0x28, %rcx
ja 0x3a527
movq %rcx, %rax
addq 0x10(%rsp), %rax
addl $0x8, %ecx
movl %ecx, (%rsp)
jmp 0x3a535
movq 0x8(%rsp), %rax
leaq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq (%rax), %r15
testq %r15, %r15
je 0x3a5e1
movq 0x4d8(%rbx), %r12
movq 0x90(%rbx), %rax
cmpq 0x98(%rbx), %rax
ja 0x3a567
movq %rbx, %rdi
callq 0xa550
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)
decq %r14
jne 0x3a50e
movl (%rsp), %ecx
cmpq $0x28, %rcx
ja 0x3a5ae
movq %rcx, %rax
addq 0x10(%rsp), %rax
addl $0x8, %ecx
movl %ecx, (%rsp)
jmp 0x3a5bc
movq 0x8(%rsp), %rax
leaq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
cmpq $0x0, (%rax)
je 0x3a60b
movq 0x4d8(%rbx), %rdx
movq 0x110(%rbx), %rsi
movq %rbx, %rdi
callq 0x9975a
leaq 0xcfc60(%rip), %rsi     # 0x10a23f
jmp 0x3a5fe
movq 0x4d8(%rbx), %rdx
movq 0x110(%rbx), %rsi
movq %rbx, %rdi
callq 0x9975a
leaq 0xcfc1e(%rip), %rsi     # 0x10a21c
movq %rbx, %rdi
movq %rax, %rdx
callq 0x3a657
jmp 0x3a648
cmpq $0x0, 0x6a0(%rbx)
jle 0x3a62b
movq 0x4d8(%rbx), %rdx
leaq 0xcfc3d(%rip), %rsi     # 0x10a260
movq %rbx, %rdi
callq 0x3a3fd
movq 0x4d8(%rbx), %rdx
movq 0x110(%rbx), %rsi
movq %rsi, 0x4d8(%rbx)
movq %rbx, %rdi
callq 0x9975a
addq $0xd8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq