// File: /workspace/github_c_makefile_star2_O3/BernardTatin[P]s7sh/s7.c
// Function: d_vid_ok
static bool d_vid_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer car_x)
                {
                    if ((is_symbol(cadr(car_x))) &&
                            (is_symbol(caddr(car_x))))
                    {
                        s7_d_vid_t flt;
                        flt = s7_d_vid_function(s_func);
                        if (flt)
                        {
                            s7_pointer sig;
                            opc->v[4].d_vid_f = flt;
                            sig = c_function_signature(s_func);
                            if (is_pair(sig))
                            {
                                int32_t start;
                                s7_pointer vslot;
                                start = sc->pc;
                                vslot = opt_types_match(sc, cadr(sig), cadr(car_x));
                                if (vslot)
                                {
                                    s7_pointer slot;
                                    opc->v[0].fd = opt_d_vid_ssf;
                                    opc->v[1].p = vslot;
                                    slot = opt_integer_symbol(sc, caddr(car_x));
                                    if ((slot) &&
                                            (float_optimize(sc, cdddr(car_x))))
                                    {
                                        opt_info *o2;
                                        opc->v[2].p = slot;
                                        opc->v[5].obj = (void *)c_object_value(slot_value(vslot));
                                        o2 = sc->opts[start];
                                        if (o2->v[0].fd == opt_d_dd_ff_mul1)
                                        {
                                            opt_info *o3;
                                            o3 = sc->opts[start + 2];
                                            if (o3->v[0].fd == opt_d_vd_o1)
                                            {
                                                opt_info *o1;
                                                o1 = sc->opts[start + 4];
                                                if ((o1->v[0].fd == opt_d_dd_ff_o3) &&
                                                        (o1->v[4].d_dd_f == multiply_d_dd) &&
                                                        (o3->v[4].d_dd_f == add_d_dd))
                                                    opc->v[0].fd = opt_fmv;
                                            }
                                        }
                                        return(oo_set_type_2(opc, 6, 1 + (5 << 4), 2, OO_V, OO_I));
                                    }
                                }
                                pc_fallback(sc, start);
                            }}}
                    return(return_false(sc, car_x, __func__, __LINE__));
                }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rcx, %r15
movq 0x10(%rcx), %rax
movq 0x8(%rax), %rcx
cmpb $0xa, (%rcx)
jne 0x9ed57
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
cmpb $0xa, (%rax)
jne 0x9ed57
cmpb $0x30, (%rdx)
jb 0x9ed57
movq 0x8(%rdx), %rax
movq 0x20(%rax), %rax
testq %rax, %rax
je 0x9ed57
movq %rsi, %rbx
movq %rdi, %r14
cmpl $0x3, (%rax)
je 0x9ec2d
movq 0x10(%rax), %rax
testq %rax, %rax
jne 0x9ec1a
jmp 0x9ed57
movq 0x8(%rax), %rax
testq %rax, %rax
je 0x9ed57
movq %rax, 0x20(%rbx)
movq 0x8(%rdx), %rax
movq 0x38(%rax), %rax
cmpb $0x1, (%rax)
jne 0x9ed57
movl 0x2258(%r14), %ebp
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
movq 0x10(%r15), %rax
movq 0x8(%rax), %rdx
movq %r14, %rdi
callq 0xbacd7
testq %rax, %rax
je 0x9ed50
movq %rax, %r12
leaq 0x1dddf(%rip), %rax     # 0xbca60
movq %rax, (%rbx)
movq %r12, 0x8(%rbx)
movq 0x10(%r15), %rax
movq 0x10(%rax), %r13
movq 0x8(%r13), %rsi
movq %r14, %rdi
callq 0x9f8a2
testq %rax, %rax
je 0x9ed50
movq %rax, %r15
movq 0x10(%r13), %rsi
movq %r14, %rdi
callq 0x44f61
testb %al, %al
je 0x9ed50
movslq %ebp, %rax
movq %r15, 0x10(%rbx)
movq 0x10(%r12), %rcx
movq 0x10(%rcx), %rcx
movq %rcx, 0x28(%rbx)
movq 0x2260(%r14,%rax,8), %rcx
leaq 0x1d3eb(%rip), %rdx     # 0xbc0ca
cmpq %rdx, (%rcx)
jne 0x9ed30
movq 0x2270(%r14,%rax,8), %rcx
leaq 0x1d8c5(%rip), %rdx     # 0xbc5b8
cmpq %rdx, (%rcx)
jne 0x9ed30
movq 0x2280(%r14,%rax,8), %rax
leaq 0x1d2d9(%rip), %rdx     # 0xbbfe0
cmpq %rdx, (%rax)
jne 0x9ed30
leaq -0x183f6(%rip), %rdx    # 0x8691d
cmpq %rdx, 0x20(%rax)
jne 0x9ed30
leaq -0x1840d(%rip), %rax    # 0x86913
cmpq %rax, 0x20(%rcx)
jne 0x9ed30
leaq 0x1dd7e(%rip), %rax     # 0xbcaab
movq %rax, (%rbx)
movabsq $0x200000006, %rax      # imm = 0x200000006
movq %rax, 0x60(%rbx)
movabsq $0x100000003, %rax      # imm = 0x100000003
movq %rax, 0x70(%rbx)
movb $0x1, %al
jmp 0x9ed59
movl %ebp, 0x2258(%r14)
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq