// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: apply_safe_closure_star_1
static bool apply_safe_closure_star_1(s7_scheme *sc)                   /* -------- define* (lambda*) -------- */
                {
                    s7_pointer z;
                    /* fprintf(stderr, "%s %s\n", __func__, DISPLAY(sc->code)); */
                    /* slots are in "reverse order" -- in the same order as the args, despite let printout (which reverses the order!) */

                    sc->envir = closure_let(sc->code);
                    if (has_no_defaults(sc->code))
                    {
                        for (z = let_slots(sc->envir); tis_slot(z); z = next_slot(z))
                        {
                            clear_checked_slot(z);
                            slot_set_value(z, sc->F);
                        }
                        if (!is_null(sc->args))
                            lambda_star_set_args(sc);                     /* load up current arg vals */
                        sc->code = closure_body(sc->code);
                        return(false); /* goto BEGIN */
                    }

                    for (z = let_slots(sc->envir); tis_slot(z); z = next_slot(z))
                    {
                        clear_checked_slot(z);
                        slot_set_value(z, (slot_defaults(z)) ? sc->undefined : slot_expression(z));
                    }
                    return(set_star_args(sc, slot_pending_value(let_slots(sc->envir))));
                }

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x18(%rax), %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x18(%rsp), %rax
movq (%rax), %rax
movzwl 0x6(%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x169c76
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x169c37
movq 0x10(%rsp), %rax
movq (%rax), %rcx
andq $-0x400001, %rcx        # imm = 0xFFBFFFFF
movq %rcx, (%rax)
movq 0x18(%rsp), %rax
movq 0x120(%rax), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x10(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x10(%rsp)
jmp 0x169bf8
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rsp), %rcx
cmpq 0x110(%rcx), %rax
je 0x169c58
movq 0x18(%rsp), %rdi
callq 0x169d20
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rcx
movq 0x18(%rsp), %rax
movq %rcx, (%rax)
movb $0x0, 0x27(%rsp)
jmp 0x169d13
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x169cf2
movq 0x10(%rsp), %rax
movq (%rax), %rcx
andq $-0x400001, %rcx        # imm = 0xFFBFFFFF
movq %rcx, (%rax)
movq 0x10(%rsp), %rax
movzwl 0x6(%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x169cc6
movq 0x18(%rsp), %rax
movq 0x128(%rax), %rax
movq %rax, 0x8(%rsp)
jmp 0x169cd4
movq 0x10(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x10(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x10(%rsp)
jmp 0x169c88
movq 0x18(%rsp), %rdi
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
movq 0x20(%rax), %rsi
callq 0x16a830
andb $0x1, %al
movb %al, 0x27(%rsp)
movb 0x27(%rsp), %al
andb $0x1, %al
addq $0x28, %rsp
retq
nop