// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: op_map_2
static bool op_map_2(s7_scheme *sc)
                {
                    s7_pointer x, c, p, code;
                    code = sc->code;
                    c = sc->args;
                    p = counter_list(c);
                    if (!is_pair(p))
                    {
                        sc->value = safe_reverse_in_place(sc, counter_result(c));
                        free_cell(sc, sc->args);
                        sc->args = sc->nil;
                        return(true);
                    }
                    x = car(p);
                    counter_set_list(c, cdr(p));

                    if (sc->cur_op == OP_MAP_GATHER_3)
                    {
                        closure_set_map_list(code, cdr(closure_map_list(code)));
                        /* this depends on code (the function) being non-recursive, else closure_setter gets stepped on */
                        if (closure_map_list(code) == counter_list(c))
                        {
                            sc->value = safe_reverse_in_place(sc, counter_result(c));
                            free_cell(sc, c);
                            sc->args = sc->nil;
                            return(true);
                        }
                        push_stack(sc, OP_MAP_GATHER_2, c, code);
                    }
                    else push_stack(sc, OP_MAP_GATHER_3, c, code);

                    if (counter_capture(c) != sc->capture_let_counter)
                    {
                        new_frame_with_slot(sc, closure_let(code), sc->envir, car(closure_args(code)), x);
                        counter_set_let(c, sc->envir);
                        counter_set_slots(c, let_slots(sc->envir));
                        counter_set_capture(c, sc->capture_let_counter);
                    }
                    else
                    {
                        let_set_slots(counter_let(c), counter_slots(c));
                        sc->envir = old_frame_with_slot(sc, counter_let(c), x);
                    }
                    sc->code = car(closure_body(code));
                    return(false);
                }

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x48(%rsp)
movq 0x48(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x28(%rsp)
movq 0x48(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
je 0x134ed0
movq 0x48(%rsp), %rdi
movq 0x38(%rsp), %rax
movq 0x8(%rax), %rsi
callq 0xe460
movq %rax, %rcx
movq 0x48(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x48(%rsp), %rdi
movq 0x48(%rsp), %rax
movq 0x10(%rax), %rsi
callq 0x2bcd0
movq 0x48(%rsp), %rax
movq 0x110(%rax), %rcx
movq 0x48(%rsp), %rax
movq %rcx, 0x10(%rax)
movb $0x1, 0x57(%rsp)
jmp 0x135230
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x40(%rsp)
movq 0x30(%rsp), %rax
movq 0x10(%rax), %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x48(%rsp), %rax
cmpq $0x202, 0x18(%rax)      # imm = 0x202
jne 0x134fda
movq 0x28(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x10(%rax), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x28(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x38(%rsp), %rcx
cmpq 0x10(%rcx), %rax
jne 0x134f7a
movq 0x48(%rsp), %rdi
movq 0x38(%rsp), %rax
movq 0x8(%rax), %rsi
callq 0xe460
movq %rax, %rcx
movq 0x48(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x48(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0x2bcd0
movq 0x48(%rsp), %rax
movq 0x110(%rax), %rcx
movq 0x48(%rsp), %rax
movq %rcx, 0x10(%rax)
movb $0x1, 0x57(%rsp)
jmp 0x135230
jmp 0x134f7c
movq 0x28(%rsp), %rcx
movq 0x48(%rsp), %rax
movq 0x50(%rax), %rax
movq %rcx, (%rax)
movq 0x48(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0x48(%rsp), %rax
movq 0x50(%rax), %rax
movq %rcx, 0x8(%rax)
movq 0x38(%rsp), %rcx
movq 0x48(%rsp), %rax
movq 0x50(%rax), %rax
movq %rcx, 0x10(%rax)
movq 0x48(%rsp), %rax
movq 0x50(%rax), %rax
movl $0x201, %ecx            # imm = 0x201
movq %rcx, 0x18(%rax)
movq 0x48(%rsp), %rax
movq 0x50(%rax), %rcx
addq $0x20, %rcx
movq %rcx, 0x50(%rax)
jmp 0x13503a
jmp 0x134fdc
movq 0x28(%rsp), %rcx
movq 0x48(%rsp), %rax
movq 0x50(%rax), %rax
movq %rcx, (%rax)
movq 0x48(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0x48(%rsp), %rax
movq 0x50(%rax), %rax
movq %rcx, 0x8(%rax)
movq 0x38(%rsp), %rcx
movq 0x48(%rsp), %rax
movq 0x50(%rax), %rax
movq %rcx, 0x10(%rax)
movq 0x48(%rsp), %rax
movq 0x50(%rax), %rax
movl $0x202, %ecx            # imm = 0x202
movq %rcx, 0x18(%rax)
movq 0x48(%rsp), %rax
movq 0x50(%rax), %rcx
addq $0x20, %rcx
movq %rcx, 0x50(%rax)
jmp 0x13503a
movq 0x38(%rsp), %rax
movq 0x28(%rax), %rax
movq 0x48(%rsp), %rcx
cmpq 0x240(%rcx), %rax
je 0x1351dc
jmp 0x135057
movq 0x28(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x40(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x48(%rsp), %rax
movq 0x90(%rax), %rax
movq 0x48(%rsp), %rcx
cmpq 0x98(%rcx), %rax
ja 0x135097
movq 0x48(%rsp), %rdi
callq 0xc670
movq 0x48(%rsp), %rcx
movq 0x90(%rcx), %rax
movq %rax, %rdx
addq $-0x8, %rdx
movq %rdx, 0x90(%rcx)
movq -0x8(%rax), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
movq $0x20001c, (%rax)       # imm = 0x20001C
movq 0x48(%rsp), %rax
movq 0x250(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x250(%rax)
movq 0x20(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x28(%rsp), %rax
movq 0x18(%rax), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x20(%rsp), %rcx
movq 0x48(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x48(%rsp), %rcx
movq 0x90(%rcx), %rax
movq %rax, %rdx
addq $-0x8, %rdx
movq %rdx, 0x90(%rcx)
movq -0x8(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq $0x20, (%rax)
movq 0x10(%rsp), %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x8(%rsp), %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x18(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x48(%rsp), %rax
movq 0x250(%rax), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x10(%rsp), %rax
movl 0x28(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x28(%rax)
movq 0x18(%rsp), %rax
movq $0x0, 0x18(%rax)
movq 0x18(%rsp), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x48(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x48(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x48(%rsp), %rax
movq 0x240(%rax), %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x28(%rax)
jmp 0x135216
movq 0x38(%rsp), %rax
movq 0x20(%rax), %rcx
movq 0x38(%rsp), %rax
movq 0x18(%rax), %rax
movq %rcx, 0x8(%rax)
movq 0x48(%rsp), %rdi
movq 0x38(%rsp), %rax
movq 0x18(%rax), %rsi
movq 0x40(%rsp), %rdx
callq 0x111f60
movq %rax, %rcx
movq 0x48(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x28(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rcx
movq 0x48(%rsp), %rax
movq %rcx, (%rax)
movb $0x0, 0x57(%rsp)
movb 0x57(%rsp), %al
andb $0x1, %al
addq $0x58, %rsp
retq
nopl (%rax,%rax)