// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: s7_let_to_list
s7_pointer s7_let_to_list(s7_scheme *sc, s7_pointer env)
    {
        s7_pointer x;

        sc->temp3 = sc->w;
        sc->w = sc->nil;

        if (env == sc->rootlet)
        {
            s7_int i, lim2;
            s7_pointer *entries;

            entries = rootlet_elements(env);
            lim2 = sc->rootlet_entries;
            if (lim2 & 1) lim2--;

            for (i = 0; i < lim2; )
            {
                sc->w = cons_unchecked(sc, cons(sc, slot_symbol(entries[i]), slot_value(entries[i])), sc->w); i++;
                sc->w = cons_unchecked(sc, cons_unchecked(sc, slot_symbol(entries[i]), slot_value(entries[i])), sc->w); i++;
            }
            if (lim2 < sc->rootlet_entries)
                sc->w = cons_unchecked(sc, cons(sc, slot_symbol(entries[i]), slot_value(entries[i])), sc->w);
        }
        else
        {
            s7_pointer iter, func;
            s7_int gc_loc = -1;
            /* need to check make-iterator method before dropping into let->list */

            if ((has_active_methods(sc, env)) &&
                    ((func = find_method(sc, env, sc->make_iterator_symbol)) != sc->undefined))
                iter = s7_apply_function(sc, func, list_1(sc, env));
            else
            {
                if (env == sc->s7_let)
                {
                    iter = s7_make_iterator(sc, env);
                    gc_loc = s7_gc_protect(sc, iter);
                }
                else iter = sc->nil;
            }

            if (is_null(iter))
            {
                for (x = let_slots(env); tis_slot(x); x = next_slot(x))
                    sc->w = cons_unchecked(sc, cons(sc, slot_symbol(x), slot_value(x)), sc->w);
            }
            else
            {
                /* (begin (load "mockery.scm") (let ((lt ((*mock-pair* 'mock-pair) 1 2 3))) (format *stderr* "~{~A ~}" lt))) */
                while (true)
                {
                    x = s7_iterate(sc, iter);
                    if (iterator_is_at_end(iter)) break;
                    sc->w = cons(sc, x, sc->w);
                }
                sc->w = safe_reverse_in_place(sc, sc->w);
            }
            if (gc_loc != -1)
                s7_gc_unprotect_at(sc, gc_loc);
        }
        x = sc->w;
        sc->w = sc->temp3;
        sc->temp3 = sc->nil;
        return(x);
    }

// Assembly:
subq $0x118, %rsp            # imm = 0x118
movq %rdi, 0x110(%rsp)
movq %rsi, 0x108(%rsp)
movq 0x110(%rsp), %rax
movq 0x4d8(%rax), %rcx
movq 0x110(%rsp), %rax
movq %rcx, 0x508(%rax)
movq 0x110(%rsp), %rax
movq 0x110(%rax), %rcx
movq 0x110(%rsp), %rax
movq %rcx, 0x4d8(%rax)
movq 0x108(%rsp), %rax
movq 0x110(%rsp), %rcx
cmpq 0x150(%rcx), %rax
jne 0xd514
movq 0x108(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0xe8(%rsp)
movq 0x110(%rsp), %rax
movq 0x160(%rax), %rax
movq %rax, 0xf0(%rsp)
movq 0xf0(%rsp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0xd1f1
movq 0xf0(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0xf0(%rsp)
movq $0x0, 0xf8(%rsp)
movq 0xf8(%rsp), %rax
cmpq 0xf0(%rsp), %rax
jge 0xd3d5
movq 0x110(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0xe8(%rsp), %rax
movq 0xf8(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x8(%rax), %rax
movq %rax, 0xd8(%rsp)
movq 0xe8(%rsp), %rax
movq 0xf8(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rax
movq %rax, 0xd0(%rsp)
movq 0x110(%rsp), %rax
movq 0x90(%rax), %rax
movq 0x110(%rsp), %rcx
cmpq 0x98(%rcx), %rax
ja 0xd28d
movq 0x110(%rsp), %rdi
callq 0xc670
movq 0x110(%rsp), %rcx
movq 0x90(%rcx), %rax
movq %rax, %rdx
addq $-0x8, %rdx
movq %rdx, 0x90(%rcx)
movq -0x8(%rax), %rax
movq %rax, 0xe0(%rsp)
movq 0xe0(%rsp), %rax
movq $0x200001, (%rax)       # imm = 0x200001
movq 0x28(%rsp), %rdi
movq 0xd8(%rsp), %rcx
movq 0xe0(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0xd0(%rsp), %rcx
movq 0xe0(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0xe0(%rsp), %rax
movq %rax, 0xc8(%rsp)
movq 0xc8(%rsp), %rsi
movq 0x110(%rsp), %rax
movq 0x4d8(%rax), %rdx
callq 0xd9f0
movq %rax, %rcx
movq 0x110(%rsp), %rax
movq %rcx, 0x4d8(%rax)
movq 0xf8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xf8(%rsp)
movq 0x110(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x110(%rsp), %rdi
movq 0xe8(%rsp), %rax
movq 0xf8(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x8(%rax), %rsi
movq 0xe8(%rsp), %rax
movq 0xf8(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rdx
callq 0xd9f0
movq 0x20(%rsp), %rdi
movq %rax, %rsi
movq 0x110(%rsp), %rax
movq 0x4d8(%rax), %rdx
callq 0xd9f0
movq %rax, %rcx
movq 0x110(%rsp), %rax
movq %rcx, 0x4d8(%rax)
movq 0xf8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xf8(%rsp)
jmp 0xd1fd
movq 0xf0(%rsp), %rax
movq 0x110(%rsp), %rcx
cmpq 0x160(%rcx), %rax
jge 0xd50f
movq 0x110(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0xe8(%rsp), %rax
movq 0xf8(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x8(%rax), %rax
movq %rax, 0xb8(%rsp)
movq 0xe8(%rsp), %rax
movq 0xf8(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rax
movq %rax, 0xb0(%rsp)
movq 0x110(%rsp), %rax
movq 0x90(%rax), %rax
movq 0x110(%rsp), %rcx
cmpq 0x98(%rcx), %rax
ja 0xd46c
movq 0x110(%rsp), %rdi
callq 0xc670
movq 0x110(%rsp), %rcx
movq 0x90(%rcx), %rax
movq %rax, %rdx
addq $-0x8, %rdx
movq %rdx, 0x90(%rcx)
movq -0x8(%rax), %rax
movq %rax, 0xc0(%rsp)
movq 0xc0(%rsp), %rax
movq $0x200001, (%rax)       # imm = 0x200001
movq 0x18(%rsp), %rdi
movq 0xb8(%rsp), %rcx
movq 0xc0(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0xb0(%rsp), %rcx
movq 0xc0(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0xc0(%rsp), %rax
movq %rax, 0xa8(%rsp)
movq 0xa8(%rsp), %rsi
movq 0x110(%rsp), %rax
movq 0x4d8(%rax), %rdx
callq 0xd9f0
movq %rax, %rcx
movq 0x110(%rsp), %rax
movq %rcx, 0x4d8(%rax)
jmp 0xd980
movq $-0x1, 0x90(%rsp)
movq 0x108(%rsp), %rax
movq (%rax), %rax
andq $0x40000000, %rax       # imm = 0x40000000
cmpq $0x0, %rax
je 0xd684
movq 0x110(%rsp), %rax
testb $0x1, 0x24c(%rax)
je 0xd684
movq 0x110(%rsp), %rdi
movq 0x108(%rsp), %rsi
movq 0x110(%rsp), %rax
movq 0x12f8(%rax), %rdx
callq 0x98d0
movq %rax, 0x98(%rsp)
movq 0x110(%rsp), %rcx
cmpq 0x128(%rcx), %rax
je 0xd684
movq 0x110(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x98(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x108(%rsp), %rax
movq %rax, 0x80(%rsp)
movq 0x110(%rsp), %rax
movq 0x110(%rax), %rax
movq %rax, 0x78(%rsp)
movq 0x110(%rsp), %rax
movq 0x90(%rax), %rax
movq 0x110(%rsp), %rcx
cmpq 0x98(%rcx), %rax
ja 0xd5fc
movq 0x110(%rsp), %rdi
callq 0xc670
movq 0x110(%rsp), %rcx
movq 0x90(%rcx), %rax
movq %rax, %rdx
addq $-0x8, %rdx
movq %rdx, 0x90(%rcx)
movq -0x8(%rax), %rax
movq %rax, 0x88(%rsp)
movq 0x88(%rsp), %rax
movq $0x200001, (%rax)       # imm = 0x200001
movq 0x10(%rsp), %rsi
movq 0x8(%rsp), %rdi
movq 0x80(%rsp), %rcx
movq 0x88(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x78(%rsp), %rcx
movq 0x88(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x88(%rsp), %rax
movq %rax, 0x70(%rsp)
movq 0x70(%rsp), %rdx
callq 0xda50
movq %rax, 0xa0(%rsp)
jmp 0xd6f2
movq 0x108(%rsp), %rax
movq 0x110(%rsp), %rcx
cmpq 0x2150(%rcx), %rax
jne 0xd6d9
movq 0x110(%rsp), %rdi
movq 0x108(%rsp), %rsi
callq 0xdb80
movq %rax, 0xa0(%rsp)
movq 0x110(%rsp), %rdi
movq 0xa0(%rsp), %rsi
callq 0x9cb0
movq %rax, 0x90(%rsp)
jmp 0xd6f0
movq 0x110(%rsp), %rax
movq 0x110(%rax), %rax
movq %rax, 0xa0(%rsp)
jmp 0xd6f2
movq 0xa0(%rsp), %rax
movq 0x110(%rsp), %rcx
cmpq 0x110(%rcx), %rax
jne 0xd832
movq 0x108(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x100(%rsp)
cmpq $0x0, 0x100(%rsp)
je 0xd82d
movq 0x110(%rsp), %rax
movq %rax, (%rsp)
movq 0x100(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x60(%rsp)
movq 0x100(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x58(%rsp)
movq 0x110(%rsp), %rax
movq 0x90(%rax), %rax
movq 0x110(%rsp), %rcx
cmpq 0x98(%rcx), %rax
ja 0xd78d
movq 0x110(%rsp), %rdi
callq 0xc670
movq 0x110(%rsp), %rcx
movq 0x90(%rcx), %rax
movq %rax, %rdx
addq $-0x8, %rdx
movq %rdx, 0x90(%rcx)
movq -0x8(%rax), %rax
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rax
movq $0x200001, (%rax)       # imm = 0x200001
movq (%rsp), %rdi
movq 0x60(%rsp), %rcx
movq 0x68(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x58(%rsp), %rcx
movq 0x68(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x68(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x50(%rsp), %rsi
movq 0x110(%rsp), %rax
movq 0x4d8(%rax), %rdx
callq 0xd9f0
movq %rax, %rcx
movq 0x110(%rsp), %rax
movq %rcx, 0x4d8(%rax)
movq 0x100(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x100(%rsp)
jmp 0xd723
jmp 0xd95e
jmp 0xd834
movq 0x110(%rsp), %rdi
movq 0xa0(%rsp), %rsi
callq 0xe430
movq %rax, 0x100(%rsp)
movq 0xa0(%rsp), %rcx
movabsq $0x80000000, %rax       # imm = 0x80000000
andq (%rcx), %rax
cmpq $0x0, %rax
jne 0xd871
jmp 0xd930
movq 0x100(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x110(%rsp), %rax
movq 0x4d8(%rax), %rax
movq %rax, 0x38(%rsp)
movq 0x110(%rsp), %rax
movq 0x90(%rax), %rax
movq 0x110(%rsp), %rcx
cmpq 0x98(%rcx), %rax
ja 0xd8bf
movq 0x110(%rsp), %rdi
callq 0xc670
movq 0x110(%rsp), %rcx
movq 0x90(%rcx), %rax
movq %rax, %rdx
addq $-0x8, %rdx
movq %rdx, 0x90(%rcx)
movq -0x8(%rax), %rax
movq %rax, 0x48(%rsp)
movq 0x48(%rsp), %rax
movq $0x200001, (%rax)       # imm = 0x200001
movq 0x40(%rsp), %rcx
movq 0x48(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x38(%rsp), %rcx
movq 0x48(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x48(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rcx
movq 0x110(%rsp), %rax
movq %rcx, 0x4d8(%rax)
jmp 0xd834
movq 0x110(%rsp), %rdi
movq 0x110(%rsp), %rax
movq 0x4d8(%rax), %rsi
callq 0xe460
movq %rax, %rcx
movq 0x110(%rsp), %rax
movq %rcx, 0x4d8(%rax)
cmpq $-0x1, 0x90(%rsp)
je 0xd97e
movq 0x110(%rsp), %rdi
movq 0x90(%rsp), %rsi
callq 0x9f60
jmp 0xd980
movq 0x110(%rsp), %rax
movq 0x4d8(%rax), %rax
movq %rax, 0x100(%rsp)
movq 0x110(%rsp), %rax
movq 0x508(%rax), %rcx
movq 0x110(%rsp), %rax
movq %rcx, 0x4d8(%rax)
movq 0x110(%rsp), %rax
movq 0x110(%rax), %rcx
movq 0x110(%rsp), %rax
movq %rcx, 0x508(%rax)
movq 0x100(%rsp), %rax
addq $0x118, %rsp            # imm = 0x118
retq
nopw %cs:(%rax,%rax)