// File: /workspace/github_c_makefile_star2_O3/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 -0x1b310(%rip), %r9     # 0xa0528
cmpq %r9, %r8
je 0xbb8a4
leaq -0x1b250(%rip), %rsi    # 0xa05f4
cmpq %rsi, %r8
je 0xbb973
leaq 0x64f(%rip), %rsi       # 0xbbea3
cmpq %rsi, %r8
jne 0xbb984
movq 0x2268(%rdi,%rdx,8), %rdx
cmpq %rsi, (%rdx)
jne 0xbb984
leaq -0x34f58(%rip), %rsi    # 0x8691d
cmpq %rsi, 0x20(%rcx)
jne 0xbb898
cmpq %rsi, 0x20(%rdx)
jne 0xbb898
leaq -0x3acf7(%rip), %rsi    # 0x80b91
cmpq %rsi, 0x28(%rcx)
jne 0xbb898
cmpq %rsi, 0x28(%rdx)
je 0xbbb1c
leaq 0x978(%rip), %rcx       # 0xbc217
jmp 0xbbb0e
movq 0x2268(%rdi,%rdx,8), %rdx
movq (%rdx), %r8
cmpq %r9, %r8
je 0xbb987
leaq 0x54b(%rip), %r9        # 0xbbe0a
cmpq %r9, %r8
je 0xbba0e
leaq 0x750(%rip), %r9        # 0xbc01f
cmpq %r9, %r8
jne 0xbba92
addl $0x2, %esi
cmpl %esi, 0x2258(%rdi)
jne 0xbba92
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 -0x35019(%rip), %rcx    # 0x8691d
cmpq %rcx, 0x18(%rax)
leaq 0x703(%rip), %rcx       # 0xbc044
leaq 0x73a(%rip), %rdx       # 0xbc082
cmoveq %rcx, %rdx
movq %rdx, (%rax)
addl $-0x2, 0x2258(%rdi)
movabsq $0x300000003, %rcx      # imm = 0x300000003
movq %rcx, 0x70(%rax)
movabsq $0x30000000b, %rcx      # imm = 0x30000000B
jmp 0xbba82
movq 0x2268(%rdi,%rdx,8), %rdx
cmpq %rsi, (%rdx)
je 0xbbae1
xorl %eax, %eax
retq
addl $0x2, %esi
cmpl %esi, 0x2258(%rdi)
jne 0xbba92
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 -0x350b0(%rip), %rcx    # 0x8691d
cmpq %rcx, 0x18(%rax)
leaq 0x5ae(%rip), %rcx       # 0xbbf86
leaq 0x5cf(%rip), %rdx       # 0xbbfae
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 0xbbb19
addl $0x2, %esi
cmpl %esi, 0x2258(%rdi)
jne 0xbba92
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 0x580(%rip), %rcx       # 0xbbfe0
movq %rcx, (%rax)
addl $-0x2, 0x2258(%rdi)
movabsq $0x300000002, %rcx      # imm = 0x300000002
movq %rcx, 0x70(%rax)
movabsq $0x300000009, %rcx      # imm = 0x300000009
movq %rcx, 0x60(%rax)
movl $0x3, 0x78(%rax)
jmp 0xbbb19
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 -0x35194(%rip), %rcx    # 0x8691d
cmpq %rcx, 0x18(%rax)
leaq 0x60e(%rip), %rcx       # 0xbc0ca
leaq 0x64a(%rip), %rdx       # 0xbc10d
cmoveq %rcx, %rdx
movq %rdx, (%rax)
movabsq $0x100000005, %rcx      # imm = 0x100000005
movq %rcx, 0x60(%rax)
movl $0x3, 0x70(%rax)
jmp 0xbbb19
leaq -0x351cb(%rip), %rsi    # 0x8691d
cmpq %rsi, 0x20(%rcx)
jne 0xbbb07
cmpq %rsi, 0x20(%rdx)
jne 0xbbb07
leaq -0x3af6a(%rip), %rsi    # 0x80b91
cmpq %rsi, 0x28(%rcx)
jne 0xbbb07
cmpq %rsi, 0x28(%rdx)
je 0xbbb1c
leaq 0x64a(%rip), %rcx       # 0xbc158
movq %rcx, (%rax)
movq $0x4, 0x60(%rax)
movb $0x1, %al
retq
leaq -0x126b3(%rip), %rcx    # 0xa9470
jmp 0xbbb0e