// File: /workspace/github_c_makefile_star2_O1/BernardTatin[P]s7sh/s7.c
// Function: check_let_one_var
static s7_pointer check_let_one_var(s7_scheme *sc, s7_pointer form, s7_pointer start)
                {
                    s7_pointer binding;
#if S7_DEBUGGING
                    if (cdr(form) != sc->code) fprintf(stderr, "%s[%d]: form: %s, code: %s\n", __func__, __LINE__, DISPLAY_80(form), DISPLAY_80(sc->code));
#endif

                    binding = car(start);
                    if (is_pair(cadr(binding)))
                    {
                        /* this is not a named let */
                        pair_set_syntax_op(form, ((is_pair(cdr(sc->code))) && (is_null(cddr(sc->code)))) ? OP_LET_ONE_P_OLD : OP_LET_ONE_OLD);
                        set_opt2_sym(cdr(sc->code), car(binding)); /* these don't collide -- cdr(code) and code */
                        set_opt2_pair(sc->code, cadr(binding));

                        if (is_optimized(cadr(binding)))
                        {
                            /* if (not_in_heap(form)) fprintf(stderr, "unheap %s\n", DISPLAY_80(form)); */

                            if (is_null(cddr(sc->code)))                   /* one statement body */
                            {
                                if (optimize_op(cadr(binding)) == HOP_SAFE_C_SS)
                                {
                                    /* no lt fx here, 4 s7test */
                                    set_opt2_pair(sc->code, cadr(binding));
                                    pair_set_syntax_op(form, OP_LET_opSSq_E_OLD);
                                    if (c_callee(cadr(binding)) == g_assq)
                                        pair_set_syntax_op(form, OP_LET_opaSSq_E_OLD);
                                    set_opt3_sym(cdr(sc->code), caddr(cadr(binding)));
                                    return(sc->code);
                                }
                                if (is_fxable(sc, cadr(binding)))
                                {
                                    set_opt2_pair(sc->code, binding);
                                    pair_set_syntax_op(form, OP_LET_A_OLD);
                                    annotate_arg(sc, cdr(binding), sc->envir);
                                    check_let_a_body(sc, form);
                                    return(sc->code);
                                }
                            }
                            if (optimize_op(cadr(binding)) == HOP_SAFE_C_SS)
                            {
                                if (c_callee(cadr(binding)) == g_assq)
                                    pair_set_syntax_op(form, OP_LET_opaSSq_OLD);
                                else pair_set_syntax_op(form, OP_LET_opSSq_OLD);
                                set_opt3_sym(cdr(sc->code), caddr(cadr(binding)));
                            }
                            else
                            {
                                if (is_fxable(sc, cadr(binding)))
                                {
                                    set_opt2_pair(sc->code, binding);
                                    pair_set_syntax_op(form, OP_LET_A_OLD);
                                    annotate_arg(sc, cdr(binding), sc->envir);
                                    if (is_null(cddr(sc->code)))
                                        check_let_a_body(sc, form);
                                    else
                                    {
                                        s7_pointer p;
                                        for (p = cdr(sc->code); is_pair(p); p = cdr(p))
                                            if (!is_fxable(sc, car(p)))
                                                break;
                                        if (is_null(p))
                                        {
                                            pair_set_syntax_op(form, OP_LET_A_FX_OLD);
                                            annotate_args(sc, cdr(sc->code), set_plist_1(sc, car(binding)));
                                            fx_tree(sc, cdr(sc->code), car(binding), NULL);
                                            return(sc->code);
                                        }}}}}}
                    else
                    {
                        set_opt2_pair(sc->code, binding);
                        pair_set_syntax_op(form, OP_LET_A_OLD);
                        annotate_arg(sc, cdr(binding), sc->envir);
                        if (is_null(cddr(sc->code))) check_let_a_body(sc, form);
                    }

                    if ((optimize_op(form) == OP_LET_A_OLD) &&
                            (is_pair(cddr(sc->code))) && (is_null(cdddr(sc->code))))
                        pair_set_syntax_op(form, OP_LET_A_OLD_2);

                    return(sc->code);
                }

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
movq 0x8(%rdx), %r12
movq 0x10(%r12), %rax
movq 0x8(%rax), %rax
cmpb $0x1, (%rax)
movq (%rdi), %rax
jne 0xf0d28
movq 0x10(%rax), %rcx
movw $0x252, %ax             # imm = 0x252
cmpb $0x1, (%rcx)
jne 0xf0c72
movq 0x10(%rcx), %rax
xorl %ecx, %ecx
cmpq 0x110(%rbx), %rax
sete %cl
leal 0x252(,%rcx,2), %eax
movw %ax, 0x4(%r14)
movw $0x201, (%r14)          # imm = 0x201
movq 0x8(%r12), %rax
movq (%rbx), %rcx
movq 0x10(%rcx), %rcx
movq %rax, 0x20(%rcx)
movq 0x10(%r12), %rax
movq 0x8(%rax), %rax
movq (%rbx), %rcx
movq %rax, 0x20(%rcx)
movq 0x10(%r12), %rax
movq 0x8(%rax), %r15
cmpw $0x801, (%r15)          # imm = 0x801
jne 0xf0d8d
movq (%rbx), %r13
movq 0x10(%r13), %rax
movq 0x10(%rax), %rax
cmpq 0x110(%rbx), %rax
je 0xf0dca
cmpw $0x7, 0x4(%r15)
jne 0xf0e42
leaq -0x75e86(%rip), %rax    # 0x7ae57
xorl %ecx, %ecx
cmpq %rax, 0x20(%r15)
sete %cl
leal 0x24a(,%rcx,4), %eax
movw %ax, 0x4(%r14)
movw $0x201, (%r14)          # imm = 0x201
movq 0x10(%r12), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq (%rbx), %rcx
movq 0x10(%rcx), %rcx
movq %rax, 0x28(%rcx)
movq (%rbx), %rax
movq 0x10(%rax), %rax
andq $-0x40001, (%rax)       # imm = 0xFFFBFFFF
jmp 0xf0d8d
movq %r12, 0x20(%rax)
movw $0x25a, 0x4(%r14)       # imm = 0x25A
movw $0x201, (%r14)          # imm = 0x201
movq 0x10(%r12), %r15
movq 0x8(%rbx), %rdx
movb (%rdx), %al
decb %al
cmpb $0x2, %al
leaq -0x1b2d1(%rip), %rax    # 0xd5a7e
leaq -0x38bce(%rip), %rcx    # 0xb8188
cmovbq %rax, %rcx
movq %rbx, %rdi
movq %r15, %rsi
callq 0xb69b9
movq %rax, 0x20(%r15)
orb $0x4, 0x6(%r15)
movq (%rbx), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
cmpq 0x110(%rbx), %rax
jne 0xf0d8d
movq %rbx, %rdi
movq %r14, %rsi
callq 0xf0f96
cmpw $0x25a, 0x4(%r14)       # imm = 0x25A
jne 0xf0e38
movq (%rbx), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
cmpb $0x1, (%rax)
jne 0xf0e38
movq 0x10(%rax), %rax
cmpq 0x110(%rbx), %rax
jne 0xf0e38
movw $0x262, 0x4(%r14)       # imm = 0x262
movw $0x201, (%r14)          # imm = 0x201
jmp 0xf0e38
cmpw $0x7, 0x4(%r15)
jne 0xf0ed4
movq %r15, 0x20(%r13)
movw $0x24c, 0x4(%r14)       # imm = 0x24C
movw $0x201, (%r14)          # imm = 0x201
movq 0x10(%r12), %rax
movq 0x8(%rax), %rax
leaq -0x75fa0(%rip), %rcx    # 0x7ae57
cmpq %rcx, 0x20(%rax)
jne 0xf0e0a
movw $0x250, 0x4(%r14)       # imm = 0x250
movw $0x201, (%r14)          # imm = 0x201
movq 0x10(%r12), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq (%rbx), %rcx
movq 0x10(%rcx), %rcx
movq %rax, 0x28(%rcx)
movq (%rbx), %rax
movq 0x10(%rax), %rax
andq $-0x40001, (%rax)       # imm = 0xFFFBFFFF
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
movq %rbx, %rdi
movq %r15, %rsi
callq 0xd5a05
testb %al, %al
je 0xf0d8d
movq %r12, 0x20(%r13)
movw $0x25a, 0x4(%r14)       # imm = 0x25A
movw $0x201, (%r14)          # imm = 0x201
movq 0x10(%r12), %r15
movq 0x8(%rbx), %rdx
movb (%rdx), %al
decb %al
cmpb $0x2, %al
leaq -0x1b3fe(%rip), %rax    # 0xd5a7e
leaq -0x38cfb(%rip), %rcx    # 0xb8188
cmovbq %rax, %rcx
movq %rbx, %rdi
movq %r15, %rsi
callq 0xb69b9
movq %rax, 0x20(%r15)
orb $0x4, 0x6(%r15)
movq (%rbx), %rax
movq 0x110(%rbx), %r15
movq 0x10(%rax), %r13
cmpq %r15, 0x10(%r13)
je 0xf0d82
cmpb $0x1, (%r13)
jne 0xf0f3e
movq 0x8(%r13), %rsi
movq %rbx, %rdi
callq 0xd5a05
testb %al, %al
je 0xf0f3e
movq 0x10(%r13), %r13
jmp 0xf0eb3
movq %rbx, %rdi
movq %r15, %rsi
callq 0xd5a05
testb %al, %al
je 0xf0cca
movq %r12, 0x20(%r13)
movw $0x25a, 0x4(%r14)       # imm = 0x25A
movw $0x201, (%r14)          # imm = 0x201
movq 0x10(%r12), %r15
movq 0x8(%rbx), %rdx
movb (%rdx), %al
decb %al
cmpb $0x2, %al
leaq -0x1b490(%rip), %rax    # 0xd5a7e
leaq -0x38d8d(%rip), %rcx    # 0xb8188
cmovbq %rax, %rcx
movq %rbx, %rdi
movq %r15, %rsi
callq 0xb69b9
movq %rax, 0x20(%r15)
orb $0x4, 0x6(%r15)
movq %rbx, %rdi
movq %r14, %rsi
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0xf0f96
cmpq %r15, %r13
jne 0xf0d8d
movw $0x260, 0x4(%r14)       # imm = 0x260
movw $0x201, (%r14)          # imm = 0x201
movq (%rbx), %rax
movq 0x10(%rax), %rsi
movq 0x8(%r12), %rax
movq 0x700(%rbx), %rcx
movq %rax, 0x8(%rcx)
movq 0x700(%rbx), %rdx
movq %rbx, %rdi
callq 0xd9cf3
movq (%rbx), %rax
movq 0x10(%rax), %rdi
movq 0x8(%r12), %rsi
xorl %edx, %edx
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0xd5a9e