// File: /workspace/github_c_makefile_star2_O1/BernardTatin[P]s7sh/s7.c
// Function: d_dd_ff_combinable
static bool d_dd_ff_combinable(s7_scheme *sc, int32_t start)
                {
                    opt_info *opc, *o1;
                    opc = sc->opts[start - 1];
                    o1 = sc->opts[start];
                    if (o1->v[0].fd == opt_d_v)
                    {
                        opt_info *o2;
                        /* opc->v[3] is in use */
                        o2 = sc->opts[start + 1];
                        if ((o2->v[0].fd == opt_d_v) &&
                                (sc->pc == start + 2))
                        {
                            opc->v[1].obj = o1->v[5].obj;
                            opc->v[6].p = o1->v[1].p;
                            opc->v[4].d_v_f = o1->v[3].d_v_f;
                            opc->v[2].obj = o2->v[5].obj;
                            opc->v[7].p = o2->v[1].p;
                            opc->v[5].d_v_f = o2->v[3].d_v_f;
                            if (opc->v[3].d_dd_f == multiply_d_dd)
                                opc->v[0].fd = opt_d_dd_ff_mul2;
                            else opc->v[0].fd = opt_d_dd_ff_o2;
                            sc->pc -= 2;
                            return(oo_set_type_2(opc, 8, 6 + (1 << 4), 7 + (2 << 4), OO_V, OO_V));
                        }
                        if ((o2->v[0].fd == opt_d_vd_s) &&
                                (sc->pc == start + 2))
                        {
                            opc->v[4].d_dd_f = opc->v[3].d_dd_f; /* make room for symbols */
                            opc->v[1].obj = o1->v[5].obj;
                            opc->v[7].p = o1->v[1].p;
                            opc->v[5].d_v_f = o1->v[3].d_v_f;
                            opc->v[2].obj = o2->v[5].obj;
                            opc->v[8].p = o2->v[1].p;
                            opc->v[6].d_vd_f = o2->v[3].d_vd_f;
                            opc->v[3].p = o2->v[2].p;
                            opc->v[0].fd = opt_d_dd_ff_o3;
                            sc->pc -= 2;
                            return(oo_set_type_3(opc, 9, 3, 7 + (1 << 4), 8 + (2 << 4), OO_D, OO_V, OO_V));
                        }
                        if ((o2->v[0].fd == opt_d_vd_o) &&
                                (sc->pc == start + 2))
                        {
                            opc->v[1].obj = o1->v[5].obj;
                            opc->v[8].p = o1->v[1].p;
                            opc->v[2].d_v_f = o1->v[3].d_v_f;
                            opc->v[7].d_vd_f = o2->v[3].d_vd_f;
                            opc->v[4].d_v_f = o2->v[4].d_v_f;
                            opc->v[5].obj = o2->v[5].obj;
                            opc->v[9].p = o2->v[1].p;
                            opc->v[6].obj = o2->v[6].obj;
                            opc->v[10].p = o2->v[2].p;
                            if (opc->v[3].d_dd_f == multiply_d_dd)
                                opc->v[0].fd = opt_d_dd_ff_mul4;
                            else opc->v[0].fd = opt_d_dd_ff_o4;
                            sc->pc -= 2;
                            return(oo_set_type_3(opc, 11, 8 + (1 << 4), 9 + (5 << 4), 10 + (6 << 4), OO_V, OO_V, OO_V));
                        }
                        opc->v[1].obj = o1->v[5].obj;
                        opc->v[4].p = o1->v[1].p;
                        opc->v[2].d_v_f = o1->v[3].d_v_f;
                        if (opc->v[3].d_dd_f == multiply_d_dd)
                            opc->v[0].fd = opt_d_dd_ff_mul1;
                        else opc->v[0].fd = opt_d_dd_ff_o1;
                        return(oo_set_type_1(opc, 5, 4 + (1 << 4), OO_V));
                    }

                    if (o1->v[0].fd == opt_d_dd_fso)
                    {
                        opt_info *o2;
                        o2 = sc->opts[start + 1];
                        if (o2->v[0].fd == opt_d_dd_fso)
                        {
                            if ((o1->v[4].d_dd_f == multiply_d_dd) &&
                                    (o2->v[4].d_dd_f == multiply_d_dd) &&
                                    (o1->v[5].d_7pi_f == float_vector_ref_d_7pi) &&
                                    (o2->v[5].d_7pi_f == float_vector_ref_d_7pi))
                                opc->v[0].fd = opt_d_mm_fff;
                            else opc->v[0].fd = opt_d_dd_fff;
                            return(oo_set_type_0(opc, 4));
                        }
                    }
                    if (o1->v[0].fd == opt_d_dd_sfo)
                    {
                        opt_info *o2;
                        o2 = sc->opts[start + 1];
                        if (o2->v[0].fd == opt_d_dd_sfo)
                        {
                            if ((o1->v[4].d_dd_f == multiply_d_dd) &&
                                    (o2->v[4].d_dd_f == multiply_d_dd) &&
                                    (o1->v[5].d_7pi_f == float_vector_ref_d_7pi) &&
                                    (o2->v[5].d_7pi_f == float_vector_ref_d_7pi))
                                opc->v[0].fd = opt_d_mm_fff; /* multiply is commutative */
                            else opc->v[0].fd = opt_d_dd_fff_rev;
                            return(oo_set_type_0(opc, 4));
                        }
                    }
                    return(return_false(sc, NULL, __func__, __LINE__));
                }

// Assembly:
movslq %esi, %rdx
movq 0x2258(%rdi,%rdx,8), %rax
movq 0x2260(%rdi,%rdx,8), %rcx
movq (%rcx), %r8
leaq -0x1c525(%rip), %r9     # 0xa70aa
cmpq %r9, %r8
je 0xc3611
leaq -0x1c465(%rip), %r9     # 0xa7176
cmpq %r9, %r8
jne 0xc35f1
movq 0x2268(%rdi,%rdx,8), %rsi
cmpq %r9, (%rsi)
je 0xc3836
leaq 0x639(%rip), %rsi       # 0xc3c31
cmpq %rsi, (%rcx)
jne 0xc360e
movq 0x2268(%rdi,%rdx,8), %rdx
cmpq %rsi, (%rdx)
je 0xc3865
xorl %eax, %eax
retq
movq 0x2268(%rdi,%rdx,8), %rdx
movq (%rdx), %r8
cmpq %r9, %r8
jne 0xc36aa
leal 0x2(%rsi), %r9d
cmpl %r9d, 0x2258(%rdi)
jne 0xc36aa
movq 0x28(%rcx), %rsi
movq %rsi, 0x8(%rax)
movq 0x8(%rcx), %rsi
movq %rsi, 0x30(%rax)
movq 0x18(%rcx), %rcx
movq %rcx, 0x20(%rax)
movq 0x28(%rdx), %rcx
movq %rcx, 0x10(%rax)
movq 0x8(%rdx), %rcx
movq %rcx, 0x38(%rax)
movq 0x18(%rdx), %rcx
movq %rcx, 0x28(%rax)
leaq -0x36671(%rip), %rcx    # 0x8cff8
cmpq %rcx, 0x18(%rax)
leaq 0x6a0(%rip), %rcx       # 0xc3d14
leaq 0x6c1(%rip), %rdx       # 0xc3d3c
cmoveq %rcx, %rdx
movq %rdx, (%rax)
addl $-0x2, 0x2258(%rdi)
movabsq $0x200000008, %rcx      # imm = 0x200000008
movq %rcx, 0x60(%rax)
movabsq $0x300000003, %rcx      # imm = 0x300000003
movq %rcx, 0x70(%rax)
jmp 0xc389d
leaq 0x4e7(%rip), %r9        # 0xc3b98
cmpq %r9, %r8
jne 0xc3731
leal 0x2(%rsi), %r9d
cmpl %r9d, 0x2258(%rdi)
jne 0xc3731
movq 0x18(%rax), %rsi
movq %rsi, 0x20(%rax)
movq 0x28(%rcx), %rsi
movq %rsi, 0x8(%rax)
movq 0x8(%rcx), %rsi
movq %rsi, 0x38(%rax)
movq 0x18(%rcx), %rcx
movq %rcx, 0x28(%rax)
movq 0x28(%rdx), %rcx
movq %rcx, 0x10(%rax)
movq 0x8(%rdx), %rcx
movq %rcx, 0x40(%rax)
movq 0x18(%rdx), %rcx
movq %rcx, 0x30(%rax)
movq 0x10(%rdx), %rcx
movq %rcx, 0x18(%rax)
leaq 0x664(%rip), %rcx       # 0xc3d6e
movq %rcx, (%rax)
addl $-0x2, 0x2258(%rdi)
movabsq $0x300000009, %rcx      # imm = 0x300000009
movq %rcx, 0x60(%rax)
movabsq $0x300000002, %rcx      # imm = 0x300000002
jmp 0xc37d7
leaq 0x675(%rip), %r9        # 0xc3dad
cmpq %r9, %r8
jne 0xc37e7
addl $0x2, %esi
cmpl %esi, 0x2258(%rdi)
jne 0xc37e7
movq 0x28(%rcx), %rsi
movq %rsi, 0x8(%rax)
movq 0x8(%rcx), %rsi
movq %rsi, 0x40(%rax)
movq 0x18(%rcx), %rcx
movq %rcx, 0x10(%rax)
movq 0x18(%rdx), %rcx
movq %rcx, 0x38(%rax)
movq 0x20(%rdx), %rcx
movq %rcx, 0x20(%rax)
movq 0x28(%rdx), %rcx
movq %rcx, 0x28(%rax)
movq 0x8(%rdx), %rcx
movq %rcx, 0x48(%rax)
movq 0x30(%rdx), %rcx
movq %rcx, 0x30(%rax)
movq 0x10(%rdx), %rcx
movq %rcx, 0x50(%rax)
leaq -0x367a7(%rip), %rcx    # 0x8cff8
cmpq %rcx, 0x18(%rax)
leaq 0x628(%rip), %rcx       # 0xc3dd2
leaq 0x65f(%rip), %rdx       # 0xc3e10
cmoveq %rcx, %rdx
movq %rdx, (%rax)
addl $-0x2, 0x2258(%rdi)
movabsq $0x30000000b, %rcx      # imm = 0x30000000B
movq %rcx, 0x60(%rax)
movabsq $0x300000003, %rcx      # imm = 0x300000003
movq %rcx, 0x70(%rax)
movl $0x3, 0x78(%rax)
jmp 0xc389d
movq 0x28(%rcx), %rdx
movq %rdx, 0x8(%rax)
movq 0x8(%rcx), %rdx
movq %rdx, 0x20(%rax)
movq 0x18(%rcx), %rcx
movq %rcx, 0x10(%rax)
leaq -0x3680e(%rip), %rcx    # 0x8cff8
cmpq %rcx, 0x18(%rax)
leaq 0x647(%rip), %rcx       # 0xc3e58
leaq 0x683(%rip), %rdx       # 0xc3e9b
cmoveq %rcx, %rdx
movq %rdx, (%rax)
movabsq $0x100000005, %rcx      # imm = 0x100000005
movq %rcx, 0x60(%rax)
movl $0x3, 0x70(%rax)
jmp 0xc389d
leaq -0x36845(%rip), %rdx    # 0x8cff8
cmpq %rdx, 0x20(%rcx)
jne 0xc385c
cmpq %rdx, 0x20(%rsi)
jne 0xc385c
leaq -0x3c7fc(%rip), %rdx    # 0x87054
cmpq %rdx, 0x28(%rcx)
jne 0xc385c
cmpq %rdx, 0x28(%rsi)
je 0xc38a0
leaq 0x683(%rip), %rcx       # 0xc3ee6
jmp 0xc3892
leaq -0x36874(%rip), %rsi    # 0x8cff8
cmpq %rsi, 0x20(%rcx)
jne 0xc388b
cmpq %rsi, 0x20(%rdx)
jne 0xc388b
leaq -0x3c82b(%rip), %rsi    # 0x87054
cmpq %rsi, 0x28(%rcx)
jne 0xc388b
cmpq %rsi, 0x28(%rdx)
je 0xc38a0
leaq 0x713(%rip), %rcx       # 0xc3fa5
movq %rcx, (%rax)
movq $0x4, 0x60(%rax)
movb $0x1, %al
retq
leaq -0x1350f(%rip), %rcx    # 0xb0398
jmp 0xc3892