// File: /workspace/github_c_makefile_star2_O3/BernardTatin[P]s7sh/s7.c
// Function: check_or
static bool check_or(s7_scheme *sc)
                {
                    s7_pointer p, form;
                    bool any_nils = false;

                    form = sc->code;
                    sc->code = cdr(sc->code);

                    if (is_null(sc->code))
                    {
                        sc->value = sc->F;
                        return(true);
                    }

                    for (p = sc->code; is_pair(p); p = cdr(p))
                    {
                        s7_function callee;
                        callee = fx_choose(sc, p, sc->envir, let_symbol_is_safe);
                        if (!callee) any_nils = true;
                        set_c_call_checked(p, callee);
                    }

                    if (is_not_null(p))
                        eval_error_no_return(sc, sc->syntax_error_symbol, "or: stray dot?: ~A", 18, form);

                    if ((c_callee(sc->code)) &&
                            (is_proper_list_1(sc, cdr(sc->code)))) /* list_1 of cdr so there are 2 exprs */
                        pair_set_syntax_op(form, (any_nils) ? OP_OR_AP : OP_OR_SAFE_AA);
                    else pair_set_syntax_op(form, (any_nils) ? OP_OR_P : OP_OR_N);
                    sc->code = form;
                    return(false);
                }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
movq (%rdi), %rbp
movq 0x110(%rdi), %r15
movq 0x10(%rbp), %r13
movq %r13, (%rdi)
cmpq %r15, %r13
je 0xcae5e
cmpb $0x1, (%r13)
jne 0xcae6e
movq %rbp, 0x8(%rsp)
movq %r15, 0x10(%rsp)
xorl %r12d, %r12d
leaq -0x19cae(%rip), %r15    # 0xb1155
movl $0x1, %ebp
movq %r13, %r14
movq 0x8(%rbx), %rdx
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rcx
callq 0xaf535
xorl %ecx, %ecx
testq %rax, %rax
setne %cl
movzbl %r12b, %r12d
cmovel %ebp, %r12d
movq %rax, 0x20(%r14)
movzwl 0x6(%r14), %eax
andl $-0x5, %eax
leal (%rax,%rcx,4), %eax
movw %ax, 0x6(%r14)
movq 0x10(%r14), %r14
cmpb $0x1, (%r14)
je 0xcae0b
movq 0x110(%rbx), %rax
movq 0x10(%rsp), %r15
movq 0x8(%rsp), %rbp
jmp 0xcae77
movq 0x120(%rbx), %rax
movq %rax, 0x20(%rbx)
jmp 0xcaf1a
xorl %r12d, %r12d
movq %r15, %rax
movq %r13, %r14
cmpq %rax, %r14
je 0xcaedc
movq 0x1918(%rbx), %rsi
movq 0x820(%rbx), %rax
movslq 0x7dc(%rbx), %rcx
movq (%rax,%rcx,8), %rax
incl %ecx
andl $0x7, %ecx
movl %ecx, 0x7dc(%rbx)
leaq 0x4e315(%rip), %rcx     # 0x1191bc
movq %rcx, 0x10(%rax)
movq $0x12, 0x8(%rax)
movq 0x6e0(%rbx), %rcx
movq %rax, 0x8(%rcx)
movq 0x6e0(%rbx), %rax
movq 0x10(%rax), %rax
movq %rbp, 0x8(%rax)
movq 0x6e0(%rbx), %rdx
movq %rbx, %rdi
callq 0x38dfa
movq (%rbx), %rax
cmpq $0x0, 0x20(%rax)
je 0xcaefc
movq 0x10(%rax), %rax
cmpb $0x1, (%rax)
jne 0xcaefc
movq 0x10(%rax), %rax
cmpq 0x110(%rbx), %rax
je 0xcaf2f
testb $0x1, %r12b
movl $0x292, %ecx            # imm = 0x292
movl $0x298, %eax            # imm = 0x298
cmovnel %ecx, %eax
movw %ax, 0x4(%rbp)
movw $0x201, (%rbp)          # imm = 0x201
movq %rbp, (%rbx)
cmpq %r15, %r13
sete %al
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movzbl %r12b, %eax
andl $0x1, %eax
xorl $0x295, %eax            # imm = 0x295
jmp 0xcaf0d