// File: /workspace/github_c_makefile_star2_O1/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 $0x78, %rsp
movapd %xmm1, %xmm8
movapd %xmm0, %xmm7
movq 0xc8(%rsp), %r15
movq 0xc0(%rsp), %rbx
movq 0xb0(%rsp), %r12
movsd (%rbx), %xmm1
movsd (%rdx), %xmm2
movl (%r15), %r10d
testl %r10d, %r10d
je 0x4d04
movsd (%r12), %xmm0
movsd (%rdi), %xmm3
movsd (%rcx), %xmm4
movapd %xmm3, %xmm5
cmplesd %xmm4, %xmm5
movapd %xmm5, %xmm6
andpd %xmm3, %xmm6
andnpd %xmm4, %xmm5
orpd %xmm6, %xmm5
movl $0xfffffc15, %eax       # imm = 0xFFFFFC15
ucomisd %xmm0, %xmm5
jae 0x5678
movapd %xmm4, %xmm5
cmplesd %xmm3, %xmm5
movapd %xmm5, %xmm6
andpd %xmm3, %xmm6
andnpd %xmm4, %xmm5
orpd %xmm6, %xmm5
ucomisd %xmm5, %xmm0
jae 0x5678
subsd %xmm3, %xmm0
mulsd %xmm2, %xmm0
movl $0xfffffc1e, %eax       # imm = 0xFFFFFC1E
xorpd %xmm3, %xmm3
ucomisd %xmm3, %xmm0
jae 0x5678
movl $0xfffffc16, %eax       # imm = 0xFFFFFC16
ucomisd %xmm8, %xmm7
ja 0x5678
movq 0xb8(%rsp), %r13
movapd 0x938c(%rip), %xmm0     # 0xe0a0
andpd %xmm2, %xmm0
movapd %xmm2, %xmm9
divsd %xmm0, %xmm9
mulsd %xmm1, %xmm9
movsd (%rsi), %xmm10
movsd (%r13), %xmm6
ucomisd %xmm10, %xmm6
jbe 0x4dfb
movl $0x1, (%r15)
movsd (%r12), %xmm11
subsd (%rdi), %xmm11
subsd %xmm6, %xmm10
mulsd 0x9333(%rip), %xmm10    # 0xe090
divsd %xmm11, %xmm10
addsd %xmm2, %xmm10
addsd %xmm1, %xmm10
movapd 0x932c(%rip), %xmm6     # 0xe0a0
movapd %xmm10, %xmm3
andpd %xmm6, %xmm3
movapd %xmm1, %xmm4
andpd %xmm6, %xmm4
movapd %xmm0, %xmm5
cmplesd %xmm3, %xmm5
andpd %xmm5, %xmm3
andnpd %xmm0, %xmm5
orpd %xmm3, %xmm5
movapd %xmm4, %xmm3
cmplesd %xmm5, %xmm3
movapd %xmm3, %xmm0
andpd %xmm5, %xmm0
andnpd %xmm4, %xmm3
orpd %xmm0, %xmm3
movapd %xmm10, %xmm0
xorpd 0x92f0(%rip), %xmm2     # 0xe0b0
divsd %xmm3, %xmm0
unpcklpd %xmm1, %xmm2            # xmm2 = xmm2[0],xmm1[0]
movddup %xmm3, %xmm1            # xmm1 = xmm3[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 0x4edf
sqrtsd %xmm0, %xmm0
jmp 0x4f7e
xorpd %xmm3, %xmm3
ucomisd %xmm9, %xmm3
ja 0x503b
movapd 0x928e(%rip), %xmm3     # 0xe0a0
andpd %xmm1, %xmm3
ucomisd %xmm3, %xmm0
movsd (%r12), %xmm12
jbe 0x50f5
subsd (%rdi), %xmm12
subsd %xmm6, %xmm10
mulsd 0x9257(%rip), %xmm10    # 0xe090
divsd %xmm12, %xmm10
addsd %xmm2, %xmm10
addsd %xmm1, %xmm10
movapd 0x9250(%rip), %xmm4     # 0xe0a0
andpd %xmm10, %xmm4
movapd %xmm0, %xmm5
cmplesd %xmm4, %xmm5
andpd %xmm5, %xmm4
andnpd %xmm0, %xmm5
orpd %xmm4, %xmm5
movapd %xmm3, %xmm4
cmplesd %xmm5, %xmm4
movapd %xmm4, %xmm0
andpd %xmm5, %xmm0
andnpd %xmm3, %xmm4
orpd %xmm0, %xmm4
movapd %xmm10, %xmm11
xorpd 0x9220(%rip), %xmm2     # 0xe0b0
divsd %xmm4, %xmm11
unpcklpd %xmm1, %xmm2            # xmm2 = xmm2[0],xmm1[0]
movddup %xmm4, %xmm0            # xmm0 = xmm4[0,0]
divpd %xmm0, %xmm2
movapd %xmm2, %xmm0
unpckhpd %xmm2, %xmm0            # xmm0 = xmm0[1],xmm2[1]
mulsd %xmm2, %xmm0
movapd %xmm11, %xmm1
mulsd %xmm11, %xmm1
addsd %xmm0, %xmm1
xorpd %xmm2, %xmm2
movapd %xmm1, %xmm0
cmplesd %xmm2, %xmm0
andnpd %xmm1, %xmm0
ucomisd %xmm2, %xmm0
jb 0x52fe
sqrtsd %xmm0, %xmm0
jmp 0x53a3
movapd %xmm7, 0x50(%rsp)
movapd %xmm8, 0x40(%rsp)
movq %rcx, %r13
movq %r9, %r12
movq %rsi, %r15
movq %rdx, %rbx
movq %r8, %rbp
movq %rdi, %r14
movapd %xmm9, 0x30(%rsp)
movapd %xmm10, 0x20(%rsp)
movsd %xmm11, 0x10(%rsp)
movapd %xmm3, (%rsp)
callq 0x1210
movapd (%rsp), %xmm3
movsd 0x10(%rsp), %xmm11
movapd 0x916f(%rip), %xmm6     # 0xe0a0
movapd 0x20(%rsp), %xmm10
movapd 0x30(%rsp), %xmm9
movq %r14, %rdi
movq %rbp, %r8
movq %rbx, %rdx
movq %r15, %rsi
movq %r12, %r9
movq %r13, %rcx
movq 0xb8(%rsp), %r13
movq 0xc0(%rsp), %rbx
movq 0xc8(%rsp), %r15
movapd 0x40(%rsp), %xmm8
movq 0xb0(%rsp), %r12
movapd 0x50(%rsp), %xmm7
mulsd %xmm3, %xmm0
movsd (%r12), %xmm2
movsd (%rdi), %xmm1
movapd 0x911c(%rip), %xmm3     # 0xe0b0
xorpd %xmm0, %xmm3
movapd %xmm2, %xmm4
cmpltsd %xmm1, %xmm4
andpd %xmm4, %xmm3
andnpd %xmm0, %xmm4
orpd %xmm3, %xmm4
movsd (%rdx), %xmm0
movapd %xmm4, %xmm3
subsd %xmm0, %xmm3
addsd %xmm3, %xmm10
addsd %xmm4, %xmm3
addsd (%rbx), %xmm3
divsd %xmm3, %xmm10
mulsd %xmm11, %xmm10
subsd %xmm1, %xmm2
movsd (%rsi), %xmm3
subsd (%r13), %xmm3
divsd %xmm2, %xmm3
addsd %xmm0, %xmm3
divsd %xmm3, %xmm0
mulsd 0x905e(%rip), %xmm0     # 0xe050
addsd %xmm1, %xmm10
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movapd %xmm10, %xmm2
subsd %xmm1, %xmm2
andpd %xmm6, %xmm2
movapd %xmm0, %xmm3
subsd %xmm1, %xmm3
andpd %xmm6, %xmm3
movb $0x1, %al
ucomisd %xmm2, %xmm3
ja 0x55bb
subsd %xmm10, %xmm0
mulsd 0x901f(%rip), %xmm0     # 0xe050
addsd %xmm0, %xmm10
jmp 0x55bb
movl $0x1, (%r15)
movsd (%r12), %xmm11
subsd %xmm6, %xmm10
mulsd 0x903a(%rip), %xmm10    # 0xe090
movapd 0x9042(%rip), %xmm5     # 0xe0a0
movapd %xmm1, %xmm6
andpd %xmm5, %xmm6
movapd 0x9042(%rip), %xmm4     # 0xe0b0
xorpd %xmm2, %xmm4
unpcklpd %xmm1, %xmm4            # xmm4 = xmm4[0],xmm1[0]
subsd (%rdi), %xmm11
divsd %xmm11, %xmm10
addsd %xmm2, %xmm10
addsd %xmm1, %xmm10
andpd %xmm10, %xmm5
movapd %xmm0, %xmm1
cmplesd %xmm5, %xmm1
andpd %xmm1, %xmm5
andnpd %xmm0, %xmm1
orpd %xmm5, %xmm1
movapd %xmm6, %xmm2
cmplesd %xmm1, %xmm2
movapd %xmm2, %xmm0
andpd %xmm1, %xmm0
andnpd %xmm6, %xmm2
orpd %xmm0, %xmm2
movapd %xmm10, %xmm0
divsd %xmm2, %xmm0
movddup %xmm2, %xmm1            # xmm1 = xmm2[0,0]
divpd %xmm1, %xmm4
movapd %xmm4, %xmm1
unpckhpd %xmm4, %xmm1            # xmm1 = xmm1[1],xmm4[1]
mulsd %xmm4, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd %xmm3, %xmm0
jb 0x51b0
sqrtsd %xmm0, %xmm0
jmp 0x5247
testl %r10d, %r10d
je 0x548f
movsd (%rcx), %xmm10
subsd %xmm12, %xmm10
subsd (%r8), %xmm6
mulsd 0x8f7b(%rip), %xmm6     # 0xe090
divsd %xmm10, %xmm6
addsd %xmm1, %xmm6
movsd (%r9), %xmm2
addsd %xmm2, %xmm6
movapd 0x8f71(%rip), %xmm0     # 0xe0a0
movapd %xmm6, %xmm4
andpd %xmm0, %xmm4
andpd %xmm2, %xmm0
movapd %xmm3, %xmm5
cmplesd %xmm4, %xmm5
andpd %xmm5, %xmm4
andnpd %xmm3, %xmm5
orpd %xmm4, %xmm5
movapd %xmm0, %xmm4
cmplesd %xmm5, %xmm4
movapd %xmm4, %xmm3
andpd %xmm5, %xmm3
andnpd %xmm0, %xmm4
orpd %xmm3, %xmm4
movapd %xmm6, %xmm0
xorpd 0x8f3b(%rip), %xmm1     # 0xe0b0
divsd %xmm4, %xmm0
unpcklpd %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0]
movddup %xmm4, %xmm2            # xmm2 = xmm4[0,0]
divpd %xmm2, %xmm1
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
mulsd %xmm1, %xmm2
mulsd %xmm0, %xmm0
addsd %xmm2, %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x54ce
sqrtsd %xmm0, %xmm0
jmp 0x5563
movapd %xmm7, 0x50(%rsp)
movapd %xmm8, 0x40(%rsp)
movq %rcx, %r13
movq %r9, %rbp
movq %rsi, %r15
movq %rdx, %rbx
movq %r8, %r12
movq %rdi, %r14
movapd %xmm9, 0x30(%rsp)
movapd %xmm10, 0x20(%rsp)
movapd %xmm11, 0x10(%rsp)
movapd %xmm2, (%rsp)
callq 0x1210
movapd (%rsp), %xmm2
movapd 0x10(%rsp), %xmm11
movapd 0x20(%rsp), %xmm10
movapd 0x30(%rsp), %xmm9
movq %r14, %rdi
movq %r12, %r8
movq %rbx, %rdx
movq %r15, %rsi
movq %rbp, %r9
movq %r13, %rcx
movq 0xb8(%rsp), %r13
movq 0xc0(%rsp), %rbx
movq 0xc8(%rsp), %r15
movapd 0x40(%rsp), %xmm8
movq 0xb0(%rsp), %r12
movapd 0x50(%rsp), %xmm7
mulsd %xmm2, %xmm0
movsd (%r12), %xmm2
movsd (%rdi), %xmm1
movapd 0x8e53(%rip), %xmm3     # 0xe0b0
xorpd %xmm0, %xmm3
movapd %xmm2, %xmm4
cmpltsd %xmm1, %xmm4
andpd %xmm4, %xmm3
andnpd %xmm0, %xmm4
orpd %xmm3, %xmm4
movsd (%rdx), %xmm0
movapd %xmm4, %xmm3
subsd %xmm0, %xmm3
addsd %xmm3, %xmm10
addsd %xmm4, %xmm3
movsd (%rbx), %xmm4
addsd %xmm4, %xmm3
movapd %xmm1, %xmm5
subsd %xmm2, %xmm5
unpcklpd %xmm4, %xmm10           # xmm10 = xmm10[0],xmm4[0]
subsd %xmm0, %xmm4
unpcklpd %xmm4, %xmm3            # xmm3 = xmm3[0],xmm4[0]
divpd %xmm3, %xmm10
unpcklpd %xmm5, %xmm11           # xmm11 = xmm11[0],xmm5[0]
mulpd %xmm10, %xmm11
unpcklpd %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0]
addpd %xmm11, %xmm1
movddup %xmm2, %xmm0            # xmm0 = xmm2[0,0]
movapd %xmm1, %xmm2
subpd %xmm0, %xmm2
andpd 0x8dcc(%rip), %xmm2     # 0xe0a0
pshufd $0xee, %xmm2, %xmm10    # xmm10 = xmm2[2,3,2,3]
cmpltsd %xmm2, %xmm10
movapd %xmm10, %xmm0
andpd %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
andnpd %xmm1, %xmm10
orpd %xmm0, %xmm10
xorl %eax, %eax
jmp 0x55bb
movapd %xmm7, 0x50(%rsp)
movapd %xmm8, 0x40(%rsp)
movq %rcx, %r13
movq %r9, %r12
movq %rsi, %r15
movq %r8, %rbp
movq %rdx, %r14
movq %rdi, %rbx
movapd %xmm9, 0x30(%rsp)
movapd %xmm10, 0x20(%rsp)
movapd %xmm11, 0x10(%rsp)
movsd %xmm12, (%rsp)
movapd %xmm4, 0x60(%rsp)
callq 0x1210
movapd 0x60(%rsp), %xmm4
movsd (%rsp), %xmm12
movapd 0x10(%rsp), %xmm11
movapd 0x20(%rsp), %xmm10
movapd 0x30(%rsp), %xmm9
movq %rbx, %rdi
movq %r14, %rdx
movq %rbp, %r8
movq %r15, %rsi
movq %r12, %r9
movq %r13, %rcx
movq 0xb8(%rsp), %r13
movq 0xc0(%rsp), %rbx
movq 0xc8(%rsp), %r15
movapd 0x40(%rsp), %xmm8
movq 0xb0(%rsp), %r12
movapd 0x50(%rsp), %xmm7
mulsd %xmm4, %xmm0
movsd (%rdi), %xmm3
movsd (%r12), %xmm1
movapd 0x8cf7(%rip), %xmm5     # 0xe0b0
xorpd %xmm0, %xmm5
movsd (%rbx), %xmm2
movsd (%rdx), %xmm4
ucomisd %xmm5, %xmm0
jne 0x53cd
jnp 0x5418
movapd %xmm3, %xmm6
cmpltsd %xmm1, %xmm6
andpd %xmm6, %xmm5
andnpd %xmm0, %xmm6
orpd %xmm5, %xmm6
movapd %xmm6, %xmm0
subsd %xmm2, %xmm0
addsd %xmm0, %xmm10
addsd %xmm6, %xmm0
addsd %xmm4, %xmm0
divsd %xmm0, %xmm10
xorpd %xmm0, %xmm0
ucomisd %xmm10, %xmm0
jbe 0x5418
mulsd %xmm12, %xmm10
movapd %xmm1, %xmm11
subsd %xmm10, %xmm11
jmp 0x5436
xorpd %xmm0, %xmm0
cmpltsd %xmm0, %xmm11
movapd %xmm11, %xmm0
andpd %xmm8, %xmm0
andnpd %xmm7, %xmm11
orpd %xmm0, %xmm11
subsd %xmm1, %xmm3
movapd %xmm2, %xmm0
subsd %xmm4, %xmm0
divsd %xmm0, %xmm2
mulsd %xmm3, %xmm2
addsd %xmm1, %xmm2
cmpl $0x0, (%r15)
movapd %xmm1, %xmm10
subsd %xmm11, %xmm10
movapd 0x8c3c(%rip), %xmm0     # 0xe0a0
andpd %xmm0, %xmm10
subsd %xmm2, %xmm1
andpd %xmm0, %xmm1
je 0x54ae
cmpltsd %xmm1, %xmm10
andpd %xmm10, %xmm11
andnpd %xmm2, %xmm10
orpd %xmm11, %xmm10
movb $0x1, %al
jmp 0x55bb
movsd (%rdi), %xmm10
cmpltsd %xmm12, %xmm10
movapd %xmm10, %xmm0
andpd %xmm8, %xmm0
andnpd %xmm7, %xmm10
jmp 0x52f2
cmpltsd %xmm10, %xmm1
andpd %xmm1, %xmm11
andnpd %xmm2, %xmm1
orpd %xmm11, %xmm1
movb $0x1, %al
movapd %xmm1, %xmm10
jmp 0x55bb
movapd %xmm7, 0x50(%rsp)
movapd %xmm8, 0x40(%rsp)
movq %rcx, %r13
movq %r9, %r12
movq %rsi, %r15
movq %r8, %rbp
movq %rdx, %r14
movq %rdi, %rbx
movapd %xmm9, 0x30(%rsp)
movapd %xmm6, 0x20(%rsp)
movsd %xmm10, 0x10(%rsp)
movapd %xmm4, (%rsp)
callq 0x1210
movapd (%rsp), %xmm4
movsd 0x10(%rsp), %xmm10
movapd 0x20(%rsp), %xmm6
movapd 0x30(%rsp), %xmm9
movq %rbx, %rdi
movq %r14, %rdx
movq %rbp, %r8
movq %r15, %rsi
movq %r12, %r9
movq %r13, %rcx
movq 0xb8(%rsp), %r13
movq 0xc0(%rsp), %rbx
movq 0xc8(%rsp), %r15
movapd 0x40(%rsp), %xmm8
movq 0xb0(%rsp), %r12
movapd 0x50(%rsp), %xmm7
mulsd %xmm4, %xmm0
movsd (%rcx), %xmm1
movsd (%r12), %xmm2
movapd 0x8b37(%rip), %xmm3     # 0xe0b0
xorpd %xmm0, %xmm3
cmpltsd %xmm2, %xmm1
andpd %xmm1, %xmm3
andnpd %xmm0, %xmm1
orpd %xmm3, %xmm1
movsd (%rbx), %xmm0
movapd %xmm1, %xmm3
subsd %xmm0, %xmm3
addsd %xmm3, %xmm6
addsd %xmm1, %xmm3
addsd (%r9), %xmm3
divsd %xmm3, %xmm6
mulsd %xmm10, %xmm6
addsd %xmm2, %xmm6
xorl %eax, %eax
movapd %xmm6, %xmm10
movsd (%r13), %xmm0
ucomisd (%rsi), %xmm0
movq %rdi, %r10
cmovaq %rcx, %r10
movq %rsi, %r14
cmovaq %r8, %r14
movq %rdx, %r11
cmovaq %r9, %r11
ja 0x560a
xorpd %xmm0, %xmm0
ucomisd %xmm9, %xmm0
jbe 0x560a
movsd (%rdi), %xmm0
movsd %xmm0, (%rcx)
movsd (%rsi), %xmm0
movsd %xmm0, (%r8)
movsd (%rdx), %xmm0
movsd %xmm0, (%r9)
movq %rdi, %r10
movq %rsi, %r14
movq %rdx, %r11
movsd (%r12), %xmm0
movsd %xmm0, (%r10)
movsd (%r13), %xmm0
movsd %xmm0, (%r14)
movsd (%rbx), %xmm0
movsd %xmm0, (%r11)
minsd %xmm10, %xmm8
cmpl $0x0, (%r15)
maxsd %xmm8, %xmm7
sete %dl
xorb $0x1, %al
orb %dl, %al
jne 0x5670
movsd (%rdi), %xmm1
movsd (%rcx), %xmm0
ucomisd %xmm1, %xmm0
subsd %xmm1, %xmm0
mulsd 0x8a28(%rip), %xmm0     # 0xe080
addsd %xmm1, %xmm0
jbe 0x5666
ucomisd %xmm0, %xmm7
ja 0x566c
jmp 0x5670
ucomisd %xmm7, %xmm0
jbe 0x5670
movapd %xmm0, %xmm7
movsd %xmm7, (%r12)
xorl %eax, %eax
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop