// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: check_lambda_star
static void check_lambda_star(s7_scheme *sc)
                {
                    s7_pointer form;
                    form = sc->code;
                    if ((sc->safety > NO_SAFETY) &&
                            (tree_is_cyclic(sc, form)))
                        s7_error(sc, sc->wrong_type_arg_symbol, wrap_string(sc, "lambda*: body is cyclic", 23));

                    sc->code = cdr(sc->code);
                    if ((!is_pair(sc->code)) ||
                            (!is_pair(cdr(sc->code))))                                          /* (lambda*) or (lambda* #f) */
                        eval_error_no_return(sc, sc->syntax_error_symbol, "lambda*: no args or no body? ~A", 31, form);

                    set_car(sc->code, check_lambda_star_args(sc, car(sc->code), NULL));
                    clear_symbol_list(sc);

                    if ((sc->safety > NO_SAFETY) ||
                            (main_stack_op(sc) != OP_DEFINE1))
                    {
                        if (optimize(sc, cdr(sc->code), 0, collect_parameters(sc, car(sc->code), sc->nil)) == OPT_OOPS)
                            clear_all_optimizations(sc, cdr(sc->code));
                    }
                    else optimize_lambda(sc, false, sc->unused, car(sc->code), cdr(sc->code));

                    pair_set_syntax_op(form, OP_LAMBDA_STAR_UNCHECKED);
                }

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq 0x40(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x38(%rsp)
movq 0x40(%rsp), %rax
cmpq $0x0, 0x6a0(%rax)
jle 0x197ebd
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0x2f870
testb $0x1, %al
jne 0x197e7a
jmp 0x197ebd
movq 0x40(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x40(%rsp), %rax
movq 0x1940(%rax), %rax
movq %rax, 0x30(%rsp)
movq 0x40(%rsp), %rdi
leaq 0x59359(%rip), %rsi     # 0x1f11fa
movl $0x17, %edx
callq 0xb880
movq 0x28(%rsp), %rdi
movq 0x30(%rsp), %rsi
movq %rax, %rdx
callq 0x2f940
movq 0x40(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rcx
movq 0x40(%rsp), %rax
movq %rcx, (%rax)
movq 0x40(%rsp), %rax
movq (%rax), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
jne 0x197ef5
movq 0x40(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
je 0x197f54
movq 0x40(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x40(%rsp), %rax
movq 0x1918(%rax), %rax
movq %rax, 0x20(%rsp)
movq 0x40(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x40(%rsp), %rdi
leaq 0x592ec(%rip), %rsi     # 0x1f1212
movl $0x1f, %edx
callq 0xb880
movq 0x10(%rsp), %rdi
movq %rax, %rsi
movq 0x38(%rsp), %rdx
callq 0xb830
movq 0x18(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq %rax, %rdx
callq 0x2f940
movq 0x40(%rsp), %rdi
movq 0x40(%rsp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x18c450
movq %rax, %rcx
movq 0x40(%rsp), %rax
movq (%rax), %rax
movq %rcx, 0x8(%rax)
movq 0x40(%rsp), %rdi
callq 0xdd1b0
movq 0x40(%rsp), %rax
cmpq $0x0, 0x6a0(%rax)
jg 0x197fab
movq 0x40(%rsp), %rax
movq 0x50(%rax), %rax
movq -0x8(%rax), %rax
cmpq $0x19e, %rax            # imm = 0x19E
je 0x198017
movq 0x40(%rsp), %rax
movq %rax, (%rsp)
movq 0x40(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x40(%rsp), %rdi
movq 0x40(%rsp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rsi
movq 0x40(%rsp), %rax
movq 0x110(%rax), %rdx
callq 0x17fc80
movq (%rsp), %rdi
movq 0x8(%rsp), %rsi
movq %rax, %rcx
xorl %edx, %edx
callq 0x1835e0
cmpl $0x2, %eax
jne 0x198015
movq 0x40(%rsp), %rdi
movq 0x40(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rsi
callq 0x15a840
jmp 0x198047
movq 0x40(%rsp), %rdi
movq 0x40(%rsp), %rax
movq 0x140(%rax), %rdx
movq 0x40(%rsp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rcx
movq 0x40(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %r8
xorl %esi, %esi
callq 0x182d50
jmp 0x198049
movq 0x38(%rsp), %rax
movw $0x237, 0x4(%rax)       # imm = 0x237
movq 0x38(%rsp), %rax
movq (%rax), %rcx
andq $-0x10000, %rcx         # imm = 0xFFFF0000
orq $0x201, %rcx            # imm = 0x201
movq 0x38(%rsp), %rax
movq %rcx, (%rax)
addq $0x48, %rsp
retq
nopw (%rax,%rax)