// File: /workspace/github_c_makefile_star2_O3/debbiemarkslab[P]plmc/src/lib/lbfgs.c
// Function: update_trial_interval
static int update_trial_interval(
    lbfgsfloatval_t *x,
    lbfgsfloatval_t *fx,
    lbfgsfloatval_t *dx,
    lbfgsfloatval_t *y,
    lbfgsfloatval_t *fy,
    lbfgsfloatval_t *dy,
    lbfgsfloatval_t *t,
    lbfgsfloatval_t *ft,
    lbfgsfloatval_t *dt,
    const lbfgsfloatval_t tmin,
    const lbfgsfloatval_t tmax,
    int *brackt
    )
{
    int bound;
    int dsign = fsigndiff(dt, dx);
    lbfgsfloatval_t mc; /* minimizer of an interpolated cubic. */
    lbfgsfloatval_t mq; /* minimizer of an interpolated quadratic. */
    lbfgsfloatval_t newt;   /* new trial value. */
    USES_MINIMIZER;     /* for CUBIC_MINIMIZER and QUARD_MINIMIZER. */

    /* Check the input parameters for errors. */
    if (*brackt) {
        if (*t <= min2(*x, *y) || max2(*x, *y) <= *t) {
            /* The trival value t is out of the interval. */
            return LBFGSERR_OUTOFINTERVAL;
        }
        if (0. <= *dx * (*t - *x)) {
            /* The function must decrease from x. */
            return LBFGSERR_INCREASEGRADIENT;
        }
        if (tmax < tmin) {
            /* Incorrect tmin and tmax specified. */
            return LBFGSERR_INCORRECT_TMINMAX;
        }
    }

    /*
        Trial value selection.
     */
    if (*fx < *ft) {
        /*
            Case 1: a higher function value.
            The minimum is brackt. If the cubic minimizer is closer
            to x than the quadratic one, the cubic one is taken, else
            the average of the minimizers is taken.
         */
        *brackt = 1;
        bound = 1;
        CUBIC_MINIMIZER(mc, *x, *fx, *dx, *t, *ft, *dt);
        QUARD_MINIMIZER(mq, *x, *fx, *dx, *t, *ft);
        if (fabs(mc - *x) < fabs(mq - *x)) {
            newt = mc;
        } else {
            newt = mc + 0.5 * (mq - mc);
        }
    } else if (dsign) {
        /*
            Case 2: a lower function value and derivatives of
            opposite sign. The minimum is brackt. If the cubic
            minimizer is closer to x than the quadratic (secant) one,
            the cubic one is taken, else the quadratic one is taken.
         */
        *brackt = 1;
        bound = 0;
        CUBIC_MINIMIZER(mc, *x, *fx, *dx, *t, *ft, *dt);
        QUARD_MINIMIZER2(mq, *x, *dx, *t, *dt);
        if (fabs(mc - *t) > fabs(mq - *t)) {
            newt = mc;
        } else {
            newt = mq;
        }
    } else if (fabs(*dt) < fabs(*dx)) {
        /*
            Case 3: a lower function value, derivatives of the
            same sign, and the magnitude of the derivative decreases.
            The cubic minimizer is only used if the cubic tends to
            infinity in the direction of the minimizer or if the minimum
            of the cubic is beyond t. Otherwise the cubic minimizer is
            defined to be either tmin or tmax. The quadratic (secant)
            minimizer is also computed and if the minimum is brackt
            then the the minimizer closest to x is taken, else the one
            farthest away is taken.
         */
        bound = 1;
        CUBIC_MINIMIZER2(mc, *x, *fx, *dx, *t, *ft, *dt, tmin, tmax);
        QUARD_MINIMIZER2(mq, *x, *dx, *t, *dt);
        if (*brackt) {
            if (fabs(*t - mc) < fabs(*t - mq)) {
                newt = mc;
            } else {
                newt = mq;
            }
        } else {
            if (fabs(*t - mc) > fabs(*t - mq)) {
                newt = mc;
            } else {
                newt = mq;
            }
        }
    } else {
        /*
            Case 4: a lower function value, derivatives of the
            same sign, and the magnitude of the derivative does
            not decrease. If the minimum is not brackt, the step
            is either tmin or tmax, else the cubic minimizer is taken.
         */
        bound = 0;
        if (*brackt) {
            CUBIC_MINIMIZER(newt, *t, *ft, *dt, *y, *fy, *dy);
        } else if (*x < *t) {
            newt = tmax;
        } else {
            newt = tmin;
        }
    }

    /*
        Update the interval of uncertainty. This update does not
        depend on the new step or the case analysis above.

        - Case a: if f(x) < f(t),
            x <- x, y <- t.
        - Case b: if f(t) <= f(x) && f'(t)*f'(x) > 0,
            x <- t, y <- y.
        - Case c: if f(t) <= f(x) && f'(t)*f'(x) < 0, 
            x <- t, y <- x.
     */
    if (*fx < *ft) {
        /* Case a */
        *y = *t;
        *fy = *ft;
        *dy = *dt;
    } else {
        /* Case c */
        if (dsign) {
            *y = *x;
            *fy = *fx;
            *dy = *dx;
        }
        /* Cases b and c */
        *x = *t;
        *fx = *ft;
        *dx = *dt;
    }

    /* Clip the new trial value in [tmin, tmax]. */
    if (tmax < newt) newt = tmax;
    if (newt < tmin) newt = tmin;

    /*
        Redefine the new trial value if it is close to the upper bound
        of the interval.
     */
    if (*brackt && bound) {
        mq = *x + 0.66 * (*y - *x);
        if (*x < *y) {
            if (mq < newt) newt = mq;
        } else {
            if (newt < mq) newt = mq;
        }
    }

    /* Return the new trial value. */
    *t = newt;
    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movapd %xmm1, %xmm12
movapd %xmm0, %xmm11
movq 0xb8(%rsp), %rbx
movq 0xb0(%rsp), %r10
movq 0xa0(%rsp), %r14
movsd (%r10), %xmm2
movsd (%rdx), %xmm3
movl (%rbx), %r11d
testl %r11d, %r11d
je 0x420f
movsd (%r14), %xmm0
movsd (%rdi), %xmm1
movsd (%rcx), %xmm4
movapd %xmm1, %xmm5
cmplesd %xmm4, %xmm5
movapd %xmm5, %xmm6
andpd %xmm1, %xmm6
andnpd %xmm4, %xmm5
orpd %xmm6, %xmm5
movl $0xfffffc15, %eax       # imm = 0xFFFFFC15
ucomisd %xmm0, %xmm5
jae 0x4ad1
movapd %xmm4, %xmm5
cmplesd %xmm1, %xmm5
movapd %xmm5, %xmm6
andpd %xmm1, %xmm6
andnpd %xmm4, %xmm5
orpd %xmm6, %xmm5
ucomisd %xmm5, %xmm0
jae 0x4ad1
subsd %xmm1, %xmm0
mulsd %xmm3, %xmm0
movl $0xfffffc1e, %eax       # imm = 0xFFFFFC1E
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jae 0x4ad1
movl $0xfffffc16, %eax       # imm = 0xFFFFFC16
ucomisd %xmm12, %xmm11
ja 0x4ad1
movq 0xa8(%rsp), %r15
movapd 0x8e81(%rip), %xmm4     # 0xd0a0
andpd %xmm3, %xmm4
movapd %xmm3, %xmm13
divsd %xmm4, %xmm13
mulsd %xmm2, %xmm13
movsd (%rsi), %xmm14
movsd (%r15), %xmm7
ucomisd %xmm14, %xmm7
jbe 0x4303
movl $0x1, (%rbx)
movsd (%r14), %xmm8
subsd (%rdi), %xmm8
subsd %xmm7, %xmm14
mulsd 0x8e2b(%rip), %xmm14    # 0xd090
divsd %xmm8, %xmm14
addsd %xmm3, %xmm14
addsd %xmm2, %xmm14
movapd 0x8e24(%rip), %xmm6     # 0xd0a0
movapd %xmm14, %xmm0
andpd %xmm6, %xmm0
movapd %xmm2, %xmm1
andpd %xmm6, %xmm1
movapd %xmm4, %xmm5
cmplesd %xmm0, %xmm5
andpd %xmm5, %xmm0
andnpd %xmm4, %xmm5
orpd %xmm0, %xmm5
movapd %xmm1, %xmm4
cmplesd %xmm5, %xmm4
movapd %xmm4, %xmm0
andpd %xmm5, %xmm0
andnpd %xmm1, %xmm4
orpd %xmm0, %xmm4
movapd %xmm14, %xmm0
xorpd 0x8de8(%rip), %xmm3     # 0xd0b0
divsd %xmm4, %xmm0
unpcklpd %xmm2, %xmm3            # xmm3 = xmm3[0],xmm2[0]
movddup %xmm4, %xmm1            # xmm1 = xmm4[0,0]
divpd %xmm1, %xmm3
movapd %xmm3, %xmm1
unpckhpd %xmm3, %xmm1            # xmm1 = xmm1[1],xmm3[1]
mulsd %xmm3, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x43ca
sqrtsd %xmm0, %xmm0
jmp 0x446b
xorpd %xmm1, %xmm1
ucomisd %xmm13, %xmm1
jbe 0x452b
movl $0x1, (%rbx)
movsd (%r14), %xmm8
subsd %xmm7, %xmm14
mulsd 0x8d65(%rip), %xmm14    # 0xd090
movapd 0x8d6d(%rip), %xmm0     # 0xd0a0
movapd %xmm2, %xmm6
andpd %xmm0, %xmm6
movapd 0x8d6d(%rip), %xmm5     # 0xd0b0
xorpd %xmm3, %xmm5
unpcklpd %xmm2, %xmm5            # xmm5 = xmm5[0],xmm2[0]
subsd (%rdi), %xmm8
divsd %xmm8, %xmm14
addsd %xmm3, %xmm14
addsd %xmm2, %xmm14
andpd %xmm14, %xmm0
movapd %xmm4, %xmm2
cmplesd %xmm0, %xmm2
andpd %xmm2, %xmm0
andnpd %xmm4, %xmm2
orpd %xmm0, %xmm2
movapd %xmm6, %xmm3
cmplesd %xmm2, %xmm3
movapd %xmm3, %xmm0
andpd %xmm2, %xmm0
andnpd %xmm6, %xmm3
orpd %xmm0, %xmm3
movapd %xmm14, %xmm0
divsd %xmm3, %xmm0
movddup %xmm3, %xmm2            # xmm2 = xmm3[0,0]
divpd %xmm2, %xmm5
movapd %xmm5, %xmm2
unpckhpd %xmm5, %xmm2            # xmm2 = xmm2[1],xmm5[1]
mulsd %xmm5, %xmm2
mulsd %xmm0, %xmm0
addsd %xmm2, %xmm0
ucomisd %xmm1, %xmm0
jb 0x4684
sqrtsd %xmm0, %xmm0
jmp 0x471d
movapd %xmm11, 0x50(%rsp)
movapd %xmm12, 0x40(%rsp)
movq %rcx, %r12
movq %rsi, %rbx
movq %rdi, %rbp
movq %r9, %r15
movq %rdx, %r14
movq %r8, %r13
movapd %xmm13, 0x30(%rsp)
movapd %xmm14, 0x20(%rsp)
movsd %xmm8, 0x10(%rsp)
movapd %xmm4, (%rsp)
callq 0x1220
movapd (%rsp), %xmm4
movsd 0x10(%rsp), %xmm8
movapd 0x8c83(%rip), %xmm6     # 0xd0a0
movapd 0x20(%rsp), %xmm14
movapd 0x30(%rsp), %xmm13
movq %r13, %r8
movq %r14, %rdx
movq %r15, %r9
movq 0xa8(%rsp), %r15
movq %rbp, %rdi
movq %rbx, %rsi
movq %r12, %rcx
movq 0xb0(%rsp), %r10
movq 0xb8(%rsp), %rbx
movapd 0x40(%rsp), %xmm12
movq 0xa0(%rsp), %r14
movapd 0x50(%rsp), %xmm11
mulsd %xmm4, %xmm0
movsd (%r14), %xmm1
movsd (%rdi), %xmm2
movapd 0x8c30(%rip), %xmm3     # 0xd0b0
xorpd %xmm0, %xmm3
movapd %xmm1, %xmm4
cmpltsd %xmm2, %xmm4
andpd %xmm4, %xmm3
andnpd %xmm0, %xmm4
orpd %xmm3, %xmm4
movsd (%rdx), %xmm0
movapd %xmm4, %xmm3
subsd %xmm0, %xmm3
addsd %xmm3, %xmm14
addsd %xmm4, %xmm3
addsd (%r10), %xmm3
divsd %xmm3, %xmm14
mulsd %xmm8, %xmm14
movapd %xmm1, %xmm3
subsd %xmm2, %xmm3
movsd (%rsi), %xmm4
subsd (%r15), %xmm4
divsd %xmm3, %xmm4
addsd %xmm0, %xmm4
divsd %xmm4, %xmm0
mulsd 0x8b6e(%rip), %xmm0     # 0xd050
addsd %xmm2, %xmm14
mulsd %xmm3, %xmm0
addsd %xmm2, %xmm0
movapd %xmm14, %xmm3
subsd %xmm2, %xmm3
andpd %xmm6, %xmm3
movapd %xmm0, %xmm4
subsd %xmm2, %xmm4
andpd %xmm6, %xmm4
movb $0x1, %al
ucomisd %xmm3, %xmm4
ja 0x4a28
subsd %xmm14, %xmm0
mulsd 0x8b2f(%rip), %xmm0     # 0xd050
addsd %xmm0, %xmm14
jmp 0x4a28
movapd 0x8b6d(%rip), %xmm6     # 0xd0a0
andpd %xmm2, %xmm6
ucomisd %xmm6, %xmm4
movsd (%r14), %xmm1
jbe 0x47d4
movsd (%rdi), %xmm0
movapd %xmm1, %xmm5
subsd %xmm7, %xmm14
mulsd 0x8b34(%rip), %xmm14    # 0xd090
subsd %xmm0, %xmm5
divsd %xmm5, %xmm14
addsd %xmm3, %xmm14
addsd %xmm2, %xmm14
movapd 0x8b29(%rip), %xmm7     # 0xd0a0
andpd %xmm14, %xmm7
movapd %xmm4, %xmm9
cmplesd %xmm7, %xmm9
andpd %xmm9, %xmm7
andnpd %xmm4, %xmm9
orpd %xmm7, %xmm9
movapd %xmm6, %xmm8
cmplesd %xmm9, %xmm8
movapd %xmm8, %xmm4
andpd %xmm9, %xmm4
andnpd %xmm6, %xmm8
orpd %xmm4, %xmm8
movapd %xmm14, %xmm4
divsd %xmm8, %xmm4
movapd 0x8ae9(%rip), %xmm7     # 0xd0b0
movapd %xmm3, %xmm6
xorpd %xmm7, %xmm6
unpcklpd %xmm2, %xmm6            # xmm6 = xmm6[0],xmm2[0]
movddup %xmm8, %xmm9            # xmm9 = xmm8[0,0]
divpd %xmm9, %xmm6
movapd %xmm6, %xmm9
unpckhpd %xmm6, %xmm9            # xmm9 = xmm9[1],xmm6[1]
mulsd %xmm6, %xmm9
movapd %xmm4, %xmm10
mulsd %xmm4, %xmm10
addsd %xmm9, %xmm10
xorpd %xmm6, %xmm6
movapd %xmm10, %xmm9
cmplesd %xmm6, %xmm9
andnpd %xmm10, %xmm9
sqrtsd %xmm9, %xmm9
mulsd %xmm8, %xmm9
xorpd %xmm9, %xmm7
ucomisd %xmm7, %xmm9
jne 0x462b
jnp 0x488c
movapd %xmm0, %xmm8
cmpltsd %xmm1, %xmm8
movapd %xmm8, %xmm10
andnpd %xmm9, %xmm10
andpd %xmm7, %xmm8
orpd %xmm10, %xmm8
movapd %xmm8, %xmm7
subsd %xmm2, %xmm7
addsd %xmm7, %xmm14
addsd %xmm8, %xmm7
addsd %xmm3, %xmm7
divsd %xmm7, %xmm14
ucomisd %xmm14, %xmm6
jbe 0x488c
mulsd %xmm5, %xmm14
movapd %xmm1, %xmm4
subsd %xmm14, %xmm4
jmp 0x48a3
movapd %xmm11, 0x50(%rsp)
movapd %xmm12, 0x40(%rsp)
movq %rcx, %r12
movq %rsi, %r13
movq %rdi, %r14
movq %r9, %r15
movq %rdx, %rbx
movq %r8, %rbp
movapd %xmm13, 0x30(%rsp)
movapd %xmm14, 0x20(%rsp)
movapd %xmm8, 0x10(%rsp)
movapd %xmm3, (%rsp)
callq 0x1220
movapd (%rsp), %xmm3
movapd 0x10(%rsp), %xmm8
movapd 0x20(%rsp), %xmm14
movapd 0x30(%rsp), %xmm13
movq %rbp, %r8
movq %rbx, %rdx
movq %r15, %r9
movq 0xa8(%rsp), %r15
movq %r14, %rdi
movq %r13, %rsi
movq %r12, %rcx
movq 0xb0(%rsp), %r10
movq 0xb8(%rsp), %rbx
movapd 0x40(%rsp), %xmm12
movq 0xa0(%rsp), %r14
movapd 0x50(%rsp), %xmm11
mulsd %xmm3, %xmm0
movsd (%r14), %xmm1
movsd (%rdi), %xmm2
movapd 0x897e(%rip), %xmm3     # 0xd0b0
xorpd %xmm0, %xmm3
movapd %xmm1, %xmm4
cmpltsd %xmm2, %xmm4
andpd %xmm4, %xmm3
andnpd %xmm0, %xmm4
orpd %xmm3, %xmm4
movsd (%rdx), %xmm0
movapd %xmm4, %xmm3
subsd %xmm0, %xmm3
addsd %xmm3, %xmm14
addsd %xmm4, %xmm3
movsd (%r10), %xmm4
addsd %xmm4, %xmm3
movapd %xmm2, %xmm5
subsd %xmm1, %xmm5
unpcklpd %xmm4, %xmm14           # xmm14 = xmm14[0],xmm4[0]
subsd %xmm0, %xmm4
unpcklpd %xmm4, %xmm3            # xmm3 = xmm3[0],xmm4[0]
divpd %xmm3, %xmm14
unpcklpd %xmm5, %xmm8            # xmm8 = xmm8[0],xmm5[0]
mulpd %xmm14, %xmm8
unpcklpd %xmm1, %xmm2            # xmm2 = xmm2[0],xmm1[0]
addpd %xmm8, %xmm2
movddup %xmm1, %xmm0            # xmm0 = xmm1[0,0]
movapd %xmm2, %xmm3
subpd %xmm0, %xmm3
andpd 0x88f6(%rip), %xmm3     # 0xd0a0
pshufd $0xee, %xmm3, %xmm14    # xmm14 = xmm3[2,3,2,3]
cmpltsd %xmm3, %xmm14
movapd %xmm14, %xmm0
andpd %xmm2, %xmm0
unpckhpd %xmm2, %xmm2            # xmm2 = xmm2[1,1]
andnpd %xmm2, %xmm14
orpd %xmm0, %xmm14
xorl %eax, %eax
jmp 0x4a28
testl %r11d, %r11d
je 0x48ff
movsd (%rcx), %xmm5
subsd %xmm1, %xmm5
subsd (%r8), %xmm7
mulsd 0x889e(%rip), %xmm7     # 0xd090
divsd %xmm5, %xmm7
addsd %xmm2, %xmm7
movsd (%r9), %xmm1
addsd %xmm1, %xmm7
movapd 0x8895(%rip), %xmm0     # 0xd0a0
movapd %xmm7, %xmm3
andpd %xmm0, %xmm3
andpd %xmm1, %xmm0
movapd %xmm6, %xmm4
cmplesd %xmm3, %xmm4
andpd %xmm4, %xmm3
andnpd %xmm6, %xmm4
orpd %xmm3, %xmm4
movapd %xmm0, %xmm6
cmplesd %xmm4, %xmm6
movapd %xmm6, %xmm3
andpd %xmm4, %xmm3
andnpd %xmm0, %xmm6
orpd %xmm3, %xmm6
movapd %xmm7, %xmm0
xorpd 0x885f(%rip), %xmm2     # 0xd0b0
divsd %xmm6, %xmm0
unpcklpd %xmm1, %xmm2            # xmm2 = xmm2[0],xmm1[0]
movddup %xmm6, %xmm1            # xmm1 = xmm6[0,0]
divpd %xmm1, %xmm2
movapd %xmm2, %xmm1
unpckhpd %xmm2, %xmm1            # xmm1 = xmm1[1],xmm2[1]
mulsd %xmm2, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x493c
sqrtsd %xmm0, %xmm0
jmp 0x49d1
cmpltsd %xmm6, %xmm4
movapd %xmm4, %xmm5
andpd %xmm12, %xmm5
andnpd %xmm11, %xmm4
orpd %xmm5, %xmm4
subsd %xmm1, %xmm0
movapd %xmm2, %xmm5
subsd %xmm3, %xmm5
divsd %xmm5, %xmm2
mulsd %xmm0, %xmm2
addsd %xmm1, %xmm2
movapd %xmm1, %xmm14
subsd %xmm4, %xmm14
movapd 0x87d3(%rip), %xmm3     # 0xd0a0
andpd %xmm3, %xmm14
movapd %xmm1, %xmm0
subsd %xmm2, %xmm0
andpd %xmm3, %xmm0
testl %r11d, %r11d
je 0x491e
cmpltsd %xmm0, %xmm14
andpd %xmm14, %xmm4
andnpd %xmm2, %xmm14
orpd %xmm4, %xmm14
movb $0x1, %al
jmp 0x4a28
movsd (%rdi), %xmm14
cmpltsd %xmm1, %xmm14
movapd %xmm14, %xmm0
andpd %xmm12, %xmm0
andnpd %xmm11, %xmm14
jmp 0x47c8
cmpltsd %xmm14, %xmm0
andpd %xmm0, %xmm4
andnpd %xmm2, %xmm0
orpd %xmm4, %xmm0
movb $0x1, %al
movapd %xmm0, %xmm14
jmp 0x4a28
movapd %xmm11, 0x50(%rsp)
movapd %xmm12, 0x40(%rsp)
movq %rcx, %r12
movq %rsi, %r13
movq %rdi, %r14
movq %r9, %r15
movq %rdx, %rbx
movq %r8, %rbp
movapd %xmm13, 0x30(%rsp)
movapd %xmm7, 0x20(%rsp)
movsd %xmm5, 0x10(%rsp)
movapd %xmm6, (%rsp)
callq 0x1220
movapd (%rsp), %xmm6
movsd 0x10(%rsp), %xmm5
movapd 0x20(%rsp), %xmm7
movapd 0x30(%rsp), %xmm13
movq %rbp, %r8
movq %rbx, %rdx
movq %r15, %r9
movq 0xa8(%rsp), %r15
movq %r14, %rdi
movq %r13, %rsi
movq %r12, %rcx
movq 0xb0(%rsp), %r10
movq 0xb8(%rsp), %rbx
movapd 0x40(%rsp), %xmm12
movq 0xa0(%rsp), %r14
movapd 0x50(%rsp), %xmm11
mulsd %xmm6, %xmm0
movsd (%rcx), %xmm2
movsd (%r14), %xmm1
movapd 0x86ca(%rip), %xmm3     # 0xd0b0
xorpd %xmm0, %xmm3
cmpltsd %xmm1, %xmm2
andpd %xmm2, %xmm3
andnpd %xmm0, %xmm2
orpd %xmm3, %xmm2
movsd (%r10), %xmm0
movapd %xmm2, %xmm3
subsd %xmm0, %xmm3
addsd %xmm3, %xmm7
addsd %xmm2, %xmm3
addsd (%r9), %xmm3
divsd %xmm3, %xmm7
mulsd %xmm5, %xmm7
addsd %xmm1, %xmm7
xorl %eax, %eax
movapd %xmm7, %xmm14
movsd (%r15), %xmm0
ucomisd (%rsi), %xmm0
jbe 0x4a3f
movsd %xmm1, (%rcx)
movq %r8, %rsi
movq %r9, %rdx
jmp 0x4a6d
xorpd %xmm0, %xmm0
ucomisd %xmm13, %xmm0
jbe 0x4a69
movsd (%rdi), %xmm0
movsd %xmm0, (%rcx)
movsd (%rsi), %xmm0
movsd %xmm0, (%r8)
movsd (%rdx), %xmm0
movsd %xmm0, (%r9)
movsd (%r14), %xmm1
movsd %xmm1, (%rdi)
movsd (%r15), %xmm0
movsd %xmm0, (%rsi)
movsd (%r10), %xmm0
movsd %xmm0, (%rdx)
minsd %xmm14, %xmm12
cmpl $0x0, (%rbx)
maxsd %xmm12, %xmm11
sete %sil
xorb $0x1, %al
orb %sil, %al
jne 0x4aca
movsd (%rdi), %xmm1
movsd (%rcx), %xmm0
ucomisd %xmm1, %xmm0
subsd %xmm1, %xmm0
mulsd 0x85d1(%rip), %xmm0     # 0xd080
addsd %xmm1, %xmm0
jbe 0x4abe
ucomisd %xmm0, %xmm11
ja 0x4ac5
jmp 0x4aca
ucomisd %xmm11, %xmm0
jbe 0x4aca
movapd %xmm0, %xmm11
movsd %xmm11, (%r14)
xorl %eax, %eax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq