// File: /workspace/github_c_makefile_star2_O3/c-zhou[P]yahs/binomlite.c
// Function: bratio
void bratio(double a, double b, double x, double y, double *w, double *w1, int *ierr, int log_p)
{
    int do_swap;
    int n, ierr1 = 0;
    double z, a0, b0, x0, y0, lambda;
    double eps = DBL_EPSILON;
    *w  = R_D__0;
    *w1 = R_D__0;
    if (a < 0. || b < 0.)   { *ierr = 1; return; }
    if (a == 0. && b == 0.) { *ierr = 2; return; }
    if (x < 0. || x > 1.)   { *ierr = 3; return; }
    if (y < 0. || y > 1.)   { *ierr = 4; return; }

    /* check that  'y == 1 - x' : */
    z = x + y - 0.5 - 0.5;

    if (fabs(z) > eps * 3.) { *ierr = 5; return; }
    
    *ierr = 0;
    if (x == 0.) goto L200;
    if (y == 0.) goto L210;

    if (a == 0.) goto L211;
    if (b == 0.) goto L201;

    eps = fmax2(eps, 1e-15);
    int a_lt_b = (a < b);
    if (/* max(a,b) */ (a_lt_b ? b : a) < eps * .001) { /* procedure for a and b < 0.001 * eps */
        // L230:  -- result *independent* of x (!)
        // *w  = a/(a+b)  and  w1 = b/(a+b) :
        if(log_p) {
            if(a_lt_b) {
                *w  = log1p(-a / (a + b)); // notably if a << b
                *w1 = log  ( a / (a + b));
            } else { // b <= a
                *w  = log  ( b / (a + b));
                *w1 = log1p(-b / (a + b));
            }
        } else {
            *w    = b / (a + b);
            *w1 = a / (a + b);
        }
        return;
    }

    #define SET_0_noswap \
    a0 = a;  x0 = x; \
    b0 = b;  y0 = y;

#define SET_0_swap   \
    a0 = b;  x0 = y; \
    b0 = a;  y0 = x;
    
    if (fmin2(a, b) <= 1.) { /*------------------------ a <= 1  or  b <= 1 ---- */
        do_swap = (x > 0.5);
        if (do_swap) {
            SET_0_swap;
        } else {
            SET_0_noswap;
        }
        /* now have  x0 <= 1/2 <= y0  (still  x0+y0 == 1) */

        if (b0 < fmin2(eps, eps * a0)) { /* L80: */
            *w = fpser(a0, b0, x0, eps, log_p);
            *w1 = log_p ? R_Log1_Exp(*w) : 0.5 - *w + 0.5;
            goto L_end;
        }

        if (a0 < fmin2(eps, eps * b0) && b0 * x0 <= 1.) { /* L90: */
            *w1 = apser(a0, b0, x0, eps);
            goto L_end_from_w1;
        }

        int did_bup = 0;
        if (fmax2(a0, b0) > 1.) { /* L20:  min(a,b) <= 1 < max(a,b)  */
            if (b0 <= 1.) goto L_w_bpser;

            if (x0 >= 0.29) /* was 0.3, PR#13786 */    goto L_w1_bpser;

            if (x0 < 0.1 && pow(x0 * b0, a0) <= 0.7) goto L_w_bpser;

            if (b0 > 15.) {
                *w1 = 0.;
                goto L131;
            }
        } else { /*  a, b <= 1 */
            if (a0 >= fmin2(0.2, b0))    goto L_w_bpser;

            if (pow(x0, a0) <= 0.9) goto L_w_bpser;

            if (x0 >= 0.3) goto L_w1_bpser;
        }
        n = 20; /* goto L130; */
        *w1 = bup(b0, a0, y0, x0, n, eps, 0);
        did_bup = 1;
        b0 += n;
    L131:
        bgrat(b0, a0, y0, x0, w1, 15*eps, &ierr1, 0);
        
        if(*w1 == 0 || (0 < *w1 && *w1 < DBL_MIN)) { // w1=0 or very close:
            // "almost surely" from underflow, try more: [2013-03-04]
            // FIXME: it is even better to do this in bgrat *directly* at least for the case
            //  !did_bup, i.e., where *w1 = (0 or -Inf) on entry
            if(did_bup) // re-do that part on log scale:
                *w1 = bup(b0-n, a0, y0, x0, n, eps, 1);
            else
                *w1 = ML_NEGINF; // = 0 on log-scale
            bgrat(b0, a0, y0, x0, w1, 15*eps, &ierr1, 1);
            if(ierr1) *ierr = 10 + ierr1;
            goto L_end_from_w1_log;
        }
        // else
        if(ierr1) *ierr = 10 + ierr1;
        goto L_end_from_w1;
    } else { /* L30: -------------------- both  a, b > 1  {a0 > 1  &  b0 > 1} ---*/
        
        /* lambda := a y - b x  =  (a + b)y  =  a - (a+b)x    {using x + y == 1},
        * ------ using the numerically best version : */
        lambda = R_FINITE(a + b)
            ? ((a > b) ? (a + b) * y - b : a - (a + b) * x)
            : a * y - b * x;
        do_swap = (lambda < 0.);
        if (do_swap) {
            lambda = -lambda;
            SET_0_swap;
        } else {
            SET_0_noswap;
        }

        if (b0 < 40.) {
            if (b0 * x0 <= 0.7
                    || (log_p && lambda > 650.)) // << added 2010-03; svn r51327
                goto L_w_bpser;
            else
                goto L140;
        } else if (a0 > b0) { /* ----  a0 > b0 >= 40  ---- */
            if (b0 <= 100. || lambda > b0 * 0.03)
                goto L_bfrac;
        } else if (a0 <= 100.) {
            goto L_bfrac;
        } else if (lambda > a0 * 0.03) {
            goto L_bfrac;
        }

        /* else if none of the above    L180: */
        *w = basym(a0, b0, lambda, eps * 100., log_p);
        *w1 = log_p ? R_Log1_Exp(*w) : 0.5 - *w + 0.5;
        goto L_end;
    } /* else: a, b > 1 */
    
    /*            EVALUATION OF THE APPROPRIATE ALGORITHM */

L_w_bpser: // was L100
    *w = bpser(a0, b0, x0, eps, log_p);
    *w1 = log_p ? R_Log1_Exp(*w) : 0.5 - *w + 0.5;
    goto L_end;

L_w1_bpser:  // was L110
    *w1 = bpser(b0, a0, y0, eps, log_p);
    *w  = log_p ? R_Log1_Exp(*w1) : 0.5 - *w1 + 0.5;
    goto L_end;

L_bfrac:
    *w = bfrac(a0, b0, x0, y0, lambda, eps * 15., log_p);
    *w1 = log_p ? R_Log1_Exp(*w) : 0.5 - *w + 0.5;
    goto L_end;

L140:
    /* b0 := fractional_part( b0 )  in (0, 1]  */
    n = (int) b0;
    b0 -= n;
    if (b0 == 0.) {
        --n;
        b0 = 1.;
    }

    *w = bup(b0, a0, y0, x0, n, eps, 0);

    if(*w < DBL_MIN && log_p) { /* do not believe it; try bpser() : */
        /*revert: */ b0 += n;
        /* which is only valid if b0 <= 1 || b0*x0 <= 0.7 */
        goto L_w_bpser;
    }
    if (x0 <= 0.7) {
        /* log_p :  TODO:  w = bup(.) + bpser(.)  -- not so easy to use log-scale */
        *w += bpser(a0, b0, x0, eps, /* log_p = */ 0);
        goto L_end_from_w;
    }
    /* L150: */
    if (a0 <= 15.) {
        n = 20;
        *w += bup(a0, b0, x0, y0, n, eps, 0);
        a0 += n;
    }
    bgrat(a0, b0, x0, y0, w, 15*eps, &ierr1, 0);
    if(ierr1) *ierr = 10 + ierr1;
    goto L_end_from_w;

/* TERMINATION OF THE PROCEDURE */

L200:
    if (a == 0.) { *ierr = 6;    return; }
    // else:
L201: *w  = R_D__0; *w1 = R_D__1; return;

L210:
    if (b == 0.) { *ierr = 7;    return; }
    // else:
L211: *w  = R_D__1; *w1 = R_D__0; return;

L_end_from_w:
    if(log_p) {
        *w1 = log1p(-*w);
        *w  = log(*w);
    } else {
        *w1 = 0.5 - *w + 0.5;
    }
    goto L_end;

L_end_from_w1:
    if(log_p) {
        *w  = log1p(-*w1);
        *w1 = log(*w1);
    } else {
        *w = 0.5 - *w1 + 0.5;
    }
    goto L_end;

L_end_from_w1_log:
    // *w1 = log(w1) already; w = 1 - w1  ==> log(w) = log(1 - w1) = log(1 - exp(*w1))
    if(log_p) {
        *w = R_Log1_Exp(*w1);
    } else {
        *w  = /* 1 - exp(*w1) */ -expm1(*w1);
        *w1 = exp(*w1);
    }
    goto L_end;


L_end:
    if (do_swap) { /* swap */
        double t = *w; *w = *w1; *w1 = t;
    }
    return;

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movl %ecx, %ebp
movq %rdx, %r15
movq %rsi, %rbx
movq %rdi, %r14
movapd %xmm2, %xmm8
movapd %xmm1, %xmm5
movapd %xmm0, %xmm7
movl $0x0, 0x2c(%rsp)
xorpd %xmm1, %xmm1
testl %ecx, %ecx
jne 0x182e8
xorpd %xmm0, %xmm0
jmp 0x182f0
movsd 0xb5c0(%rip), %xmm0     # 0x238b0
movsd %xmm0, (%r14)
movsd %xmm0, (%rbx)
ucomisd %xmm7, %xmm1
ja 0x1831e
ucomisd %xmm5, %xmm1
ja 0x1831e
ucomisd %xmm1, %xmm7
jne 0x18334
jp 0x18334
ucomisd %xmm1, %xmm5
jne 0x18334
jp 0x18334
movl $0x2, (%r15)
jmp 0x18325
movl $0x1, (%r15)
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
ucomisd %xmm8, %xmm1
ja 0x1838a
ucomisd 0xa31c(%rip), %xmm8     # 0x22660
ja 0x1838a
ucomisd %xmm3, %xmm1
ja 0x18393
ucomisd 0xa30c(%rip), %xmm3     # 0x22660
ja 0x18393
movapd %xmm8, %xmm1
addsd %xmm3, %xmm1
movsd 0xb551(%rip), %xmm2     # 0x238b8
addsd %xmm2, %xmm1
addsd %xmm2, %xmm1
andpd 0xba69(%rip), %xmm1     # 0x23de0
ucomisd 0xb541(%rip), %xmm1     # 0x238c0
jbe 0x1839c
movl $0x5, (%r15)
jmp 0x18325
movl $0x3, (%r15)
jmp 0x18325
movl $0x4, (%r15)
jmp 0x18325
movl $0x0, (%r15)
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm8
jne 0x183c4
jp 0x183c4
ucomisd %xmm1, %xmm7
jne 0x18403
jp 0x18403
movl $0x6, (%r15)
jmp 0x18325
ucomisd %xmm1, %xmm3
jne 0x183e0
jp 0x183e0
ucomisd %xmm1, %xmm5
jne 0x183e8
jp 0x183e8
movl $0x7, (%r15)
jmp 0x18325
ucomisd %xmm1, %xmm7
jne 0x183fb
jp 0x183fb
testl %ebp, %ebp
jne 0x183f4
movsd 0xa26c(%rip), %xmm1     # 0x22660
movsd %xmm1, (%r14)
jmp 0x18418
ucomisd %xmm1, %xmm5
jne 0x18421
jp 0x18421
movsd %xmm0, (%r14)
xorpd %xmm0, %xmm0
testl %ebp, %ebp
jne 0x18418
movsd 0xa248(%rip), %xmm0     # 0x22660
movsd %xmm0, (%rbx)
jmp 0x18325
movapd %xmm5, %xmm0
maxsd %xmm7, %xmm0
movsd 0xb497(%rip), %xmm1     # 0x238c8
ucomisd %xmm0, %xmm1
jbe 0x18486
testl %ebp, %ebp
je 0x18516
ucomisd %xmm7, %xmm5
jbe 0x18534
movapd 0xb99f(%rip), %xmm0     # 0x23df0
xorpd %xmm7, %xmm0
addsd %xmm7, %xmm5
movapd %xmm5, 0x10(%rsp)
divsd %xmm5, %xmm0
movapd %xmm7, 0x40(%rsp)
callq 0x2220
movsd %xmm0, (%r14)
movapd 0x40(%rsp), %xmm0
divsd 0x10(%rsp), %xmm0
callq 0x2240
jmp 0x18418
movapd %xmm7, %xmm0
cmplesd %xmm5, %xmm0
movapd %xmm0, %xmm1
andpd %xmm7, %xmm1
andnpd %xmm5, %xmm0
orpd %xmm1, %xmm0
movsd 0xa1b9(%rip), %xmm1     # 0x22660
ucomisd %xmm0, %xmm1
jae 0x184f3
movapd %xmm7, %xmm4
addsd %xmm5, %xmm4
movq %xmm4, %rax
btrq $0x3f, %rax
movabsq $0x7fefffffffffffff, %rcx # imm = 0x7FEFFFFFFFFFFFFF
cmpq %rcx, %rax
movsd %xmm8, 0x10(%rsp)
jle 0x18574
movapd %xmm5, %xmm0
mulsd %xmm8, %xmm0
movapd %xmm7, %xmm4
mulsd %xmm3, %xmm4
subsd %xmm0, %xmm4
jmp 0x186f4
xorl %r13d, %r13d
ucomisd 0x9d19(%rip), %xmm8     # 0x22218
seta %al
ja 0x1858b
movapd %xmm7, %xmm6
movapd %xmm8, %xmm2
jmp 0x1859c
movapd %xmm7, %xmm0
addsd %xmm5, %xmm0
divsd %xmm0, %xmm5
movsd %xmm5, (%r14)
divsd %xmm0, %xmm7
movsd %xmm7, (%rbx)
jmp 0x18325
addsd %xmm5, %xmm7
movapd %xmm7, 0x40(%rsp)
movapd %xmm5, %xmm0
divsd %xmm7, %xmm0
movapd %xmm5, 0x10(%rsp)
callq 0x2240
movsd %xmm0, (%r14)
movapd 0x10(%rsp), %xmm0
xorpd 0xb88c(%rip), %xmm0     # 0x23df0
divsd 0x40(%rsp), %xmm0
callq 0x2220
jmp 0x18418
ucomisd %xmm5, %xmm7
jbe 0x186e2
mulsd %xmm3, %xmm4
subsd %xmm5, %xmm4
jmp 0x186f4
movapd %xmm5, %xmm6
movapd %xmm7, %xmm5
movapd %xmm3, %xmm2
movapd %xmm8, %xmm3
movb %al, %r13b
movsd 0xb329(%rip), %xmm4     # 0x238d0
movapd %xmm6, %xmm0
mulsd %xmm4, %xmm0
movapd %xmm4, %xmm7
minsd %xmm0, %xmm7
ucomisd %xmm5, %xmm7
jbe 0x185d1
movapd %xmm6, %xmm0
movapd %xmm5, %xmm1
movl %ebp, %edi
callq 0x18c94
jmp 0x188a4
movsd %xmm3, 0x40(%rsp)
movapd %xmm5, %xmm0
movsd %xmm2, 0x8(%rsp)
mulsd %xmm2, %xmm0
ucomisd %xmm0, %xmm1
jb 0x18640
movapd %xmm5, %xmm3
mulsd %xmm4, %xmm3
minsd %xmm3, %xmm4
ucomisd %xmm6, %xmm4
jbe 0x18640
movapd %xmm6, %xmm0
movapd %xmm5, %xmm1
movsd 0x8(%rsp), %xmm2
callq 0x18ee2
movsd %xmm0, (%rbx)
testl %ebp, %ebp
je 0x18aab
xorpd 0xb7cc(%rip), %xmm0     # 0x23df0
callq 0x2220
movsd %xmm0, (%r14)
movsd (%rbx), %xmm0
callq 0x2240
movsd %xmm0, (%rbx)
jmp 0x188fb
movapd %xmm5, %xmm2
cmplesd %xmm6, %xmm2
movapd %xmm2, %xmm3
movapd %xmm6, 0x30(%rsp)
andpd %xmm6, %xmm3
movapd %xmm5, 0x10(%rsp)
andnpd %xmm5, %xmm2
orpd %xmm3, %xmm2
ucomisd 0x9ff3(%rip), %xmm2     # 0x22660
jbe 0x18912
ucomisd 0x10(%rsp), %xmm1
jae 0x1884f
movsd 0x8(%rsp), %xmm1
ucomisd 0xb25b(%rip), %xmm1     # 0x238e8
jae 0x18b1a
movsd 0x9fcd(%rip), %xmm1     # 0x22668
ucomisd 0x8(%rsp), %xmm1
jbe 0x186bf
movaps 0x30(%rsp), %xmm1
callq 0x2140
movsd 0xb243(%rip), %xmm1     # 0x238f8
ucomisd %xmm0, %xmm1
jae 0x1884f
movapd 0x10(%rsp), %xmm0
ucomisd 0xb233(%rip), %xmm0     # 0x23900
jbe 0x18966
movq $0x0, (%rbx)
movb $0x1, %r12b
jmp 0x189a4
mulsd 0x10(%rsp), %xmm4
movapd %xmm7, %xmm0
subsd %xmm4, %xmm0
movapd %xmm0, %xmm4
xorpd %xmm0, %xmm0
xorl %r13d, %r13d
ucomisd %xmm4, %xmm0
seta %al
jbe 0x18716
xorpd 0xb6e4(%rip), %xmm4     # 0x23df0
movapd %xmm5, %xmm0
movapd %xmm3, %xmm2
jmp 0x1872a
movapd %xmm7, %xmm0
movapd %xmm5, %xmm7
movsd 0x10(%rsp), %xmm2
movsd %xmm3, 0x10(%rsp)
movb %al, %r13b
movsd 0xb1e3(%rip), %xmm3     # 0x23918
ucomisd %xmm7, %xmm3
jbe 0x18827
movapd %xmm0, 0x30(%rsp)
testl %ebp, %ebp
setne %al
ucomisd 0xb1de(%rip), %xmm4     # 0x23930
movapd %xmm7, %xmm3
seta %cl
movsd %xmm2, 0x8(%rsp)
mulsd %xmm2, %xmm7
movsd 0xb18d(%rip), %xmm2     # 0x238f8
ucomisd %xmm7, %xmm2
jae 0x18849
andb %cl, %al
jne 0x18849
cvttsd2si %xmm3, %r12d
cvttpd2dq %xmm3, %xmm0
cvtdq2pd %xmm0, %xmm0
subsd %xmm0, %xmm3
xorpd %xmm0, %xmm0
movapd %xmm3, %xmm2
cmpeqsd %xmm0, %xmm2
movq %xmm2, %rax
movapd %xmm3, 0x40(%rsp)
ucomisd %xmm0, %xmm3
jne 0x187b4
jp 0x187b4
movapd %xmm1, 0x40(%rsp)
addl %eax, %r12d
movapd 0x40(%rsp), %xmm0
movapd 0x30(%rsp), %xmm1
movsd 0x10(%rsp), %xmm2
movsd 0x8(%rsp), %xmm3
movl %r12d, %edi
xorl %esi, %esi
callq 0x19386
movsd %xmm0, (%r14)
testl %ebp, %ebp
je 0x18a0b
movsd 0xb14a(%rip), %xmm1     # 0x23938
ucomisd %xmm0, %xmm1
jbe 0x18a0b
xorps %xmm0, %xmm0
cvtsi2sd %r12d, %xmm0
movapd 0x40(%rsp), %xmm1
addsd %xmm0, %xmm1
movapd 0x30(%rsp), %xmm0
movsd 0x8(%rsp), %xmm2
movl %ebp, %edi
callq 0x1a64c
movsd %xmm0, (%r14)
jmp 0x188ad
movsd 0xb0f1(%rip), %xmm1     # 0x23920
ucomisd %xmm7, %xmm0
jbe 0x1886a
ucomisd %xmm7, %xmm1
jae 0x18893
movsd 0xb0e5(%rip), %xmm1     # 0x23928
mulsd %xmm7, %xmm1
jmp 0x1887c
movapd %xmm3, 0x10(%rsp)
movapd 0x30(%rsp), %xmm0
movapd 0x10(%rsp), %xmm1
movsd 0x8(%rsp), %xmm2
movl %ebp, %edi
callq 0x1a64c
jmp 0x188a4
ucomisd %xmm0, %xmm1
jae 0x18893
movsd 0xb0b0(%rip), %xmm1     # 0x23928
mulsd %xmm0, %xmm1
ucomisd %xmm1, %xmm4
ja 0x18893
movapd %xmm7, %xmm1
movapd %xmm4, %xmm2
movl %ebp, %edi
callq 0x1a082
jmp 0x188a4
movapd %xmm7, %xmm1
movsd 0x10(%rsp), %xmm3
movl %ebp, %edi
callq 0x1abdb
movsd %xmm0, (%r14)
testl %ebp, %ebp
je 0x188cb
ucomisd 0xb03b(%rip), %xmm0     # 0x238f0
jbe 0x188e1
callq 0x18e02
xorpd 0xb52c(%rip), %xmm0     # 0x23df0
callq 0x2240
jmp 0x188f3
movsd 0x9945(%rip), %xmm2     # 0x22218
movapd %xmm2, %xmm1
subsd %xmm0, %xmm1
addsd %xmm2, %xmm1
jmp 0x188f7
callq 0x2550
xorpd 0xb502(%rip), %xmm0     # 0x23df0
callq 0x2220
movapd %xmm0, %xmm1
movsd %xmm1, (%rbx)
testl %r13d, %r13d
je 0x18325
movsd (%r14), %xmm0
movsd (%rbx), %xmm1
jmp 0x183f4
movsd 0xafbe(%rip), %xmm0     # 0x238d8
minsd 0x10(%rsp), %xmm0
movapd 0x30(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jae 0x1884f
movsd 0x8(%rsp), %xmm0
movaps 0x30(%rsp), %xmm1
callq 0x2140
movsd 0x9d40(%rip), %xmm1     # 0x22688
ucomisd %xmm0, %xmm1
jae 0x1884f
movsd 0x8(%rsp), %xmm0
ucomisd 0xaf80(%rip), %xmm0     # 0x238e0
jae 0x18b1a
xorl %r12d, %r12d
movaps 0x10(%rsp), %xmm0
movapd 0x30(%rsp), %xmm1
movsd 0x40(%rsp), %xmm2
movsd 0x8(%rsp), %xmm3
movl $0x14, %edi
xorl %esi, %esi
callq 0x19386
movsd %xmm0, (%rbx)
movapd 0x10(%rsp), %xmm0
addsd 0xaf6a(%rip), %xmm0     # 0x23908
movapd %xmm0, 0x10(%rsp)
leaq 0x2c(%rsp), %rsi
movaps 0x10(%rsp), %xmm0
movapd 0x30(%rsp), %xmm1
movsd 0x40(%rsp), %xmm2
movsd 0x8(%rsp), %xmm3
movq %rbx, %rdi
xorl %edx, %edx
callq 0x195ff
movsd (%rbx), %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x189da
jnp 0x189f5
movq %xmm0, %rax
decq %rax
movabsq $0xffffffffffffe, %rcx  # imm = 0xFFFFFFFFFFFFE
cmpq %rcx, %rax
ja 0x18c7d
testb %r12b, %r12b
je 0x18b95
movsd 0xaeaa(%rip), %xmm0     # 0x238b0
jmp 0x18bc4
movsd 0xaee5(%rip), %xmm0     # 0x238f8
ucomisd 0x8(%rsp), %xmm0
jae 0x18ac9
movsd 0xaed9(%rip), %xmm0     # 0x23900
ucomisd 0x30(%rsp), %xmm0
jb 0x18a71
movapd 0x30(%rsp), %xmm0
movapd 0x40(%rsp), %xmm1
movsd 0x8(%rsp), %xmm2
movsd 0x10(%rsp), %xmm3
movl $0x14, %edi
xorl %esi, %esi
callq 0x19386
addsd (%r14), %xmm0
movsd %xmm0, (%r14)
movapd 0x30(%rsp), %xmm0
addsd 0xae9d(%rip), %xmm0     # 0x23908
movapd %xmm0, 0x30(%rsp)
leaq 0x2c(%rsp), %r12
movapd 0x30(%rsp), %xmm0
movapd 0x40(%rsp), %xmm1
movsd 0x8(%rsp), %xmm2
movsd 0x10(%rsp), %xmm3
movq %r14, %rdi
movq %r12, %rsi
xorl %edx, %edx
callq 0x195ff
movl (%r12), %eax
testl %eax, %eax
je 0x18aec
addl $0xa, %eax
movl %eax, (%r15)
jmp 0x18aec
movsd 0x9765(%rip), %xmm1     # 0x22218
movapd %xmm1, %xmm2
subsd %xmm0, %xmm2
addsd %xmm1, %xmm2
movsd %xmm2, (%r14)
jmp 0x188fb
movapd 0x30(%rsp), %xmm0
movapd 0x40(%rsp), %xmm1
movsd 0x8(%rsp), %xmm2
xorl %edi, %edi
callq 0x1a64c
addsd (%r14), %xmm0
movsd %xmm0, (%r14)
movsd (%r14), %xmm0
testl %ebp, %ebp
je 0x18b5f
xorpd 0xb2f3(%rip), %xmm0     # 0x23df0
callq 0x2220
movsd %xmm0, (%rbx)
movsd (%r14), %xmm0
callq 0x2240
movsd %xmm0, (%r14)
jmp 0x188fb
movapd 0x10(%rsp), %xmm0
movaps 0x30(%rsp), %xmm1
movsd 0x40(%rsp), %xmm2
movl %ebp, %edi
callq 0x1a64c
movsd %xmm0, (%rbx)
testl %ebp, %ebp
je 0x18b7c
ucomisd 0xadae(%rip), %xmm0     # 0x238f0
jbe 0x18c26
callq 0x18e02
xorpd 0xb29b(%rip), %xmm0     # 0x23df0
callq 0x2240
jmp 0x18c38
movsd 0x96b1(%rip), %xmm1     # 0x22218
movapd %xmm1, %xmm2
subsd %xmm0, %xmm2
addsd %xmm1, %xmm2
movsd %xmm2, (%rbx)
jmp 0x188fb
movsd 0x9694(%rip), %xmm2     # 0x22218
movapd %xmm2, %xmm1
subsd %xmm0, %xmm1
addsd %xmm2, %xmm1
jmp 0x18c3c
movsd 0xad73(%rip), %xmm0     # 0x23910
addsd 0x10(%rsp), %xmm0
movapd 0x30(%rsp), %xmm1
movsd 0x40(%rsp), %xmm2
movsd 0x8(%rsp), %xmm3
movl $0x14, %edi
movl $0x1, %esi
callq 0x19386
movsd %xmm0, (%rbx)
leaq 0x2c(%rsp), %r12
movaps 0x10(%rsp), %xmm0
movapd 0x30(%rsp), %xmm1
movsd 0x40(%rsp), %xmm2
movsd 0x8(%rsp), %xmm3
movq %rbx, %rdi
movq %r12, %rsi
movl $0x1, %edx
callq 0x195ff
movl (%r12), %eax
testl %eax, %eax
je 0x18c02
addl $0xa, %eax
movl %eax, (%r15)
movsd (%rbx), %xmm0
testl %ebp, %ebp
je 0x18c46
ucomisd 0xacde(%rip), %xmm0     # 0x238f0
jbe 0x18c66
callq 0x18e02
xorpd 0xb1cf(%rip), %xmm0     # 0x23df0
jmp 0x18b0b
callq 0x2550
xorpd 0xb1bd(%rip), %xmm0     # 0x23df0
callq 0x2220
movapd %xmm0, %xmm1
movsd %xmm1, (%r14)
jmp 0x188fb
callq 0x22f0
xorpd 0xb19d(%rip), %xmm0     # 0x23df0
movlpd %xmm0, (%r14)
movsd (%rbx), %xmm0
callq 0x2550
jmp 0x18637
callq 0x2550
xorpd 0xb17d(%rip), %xmm0     # 0x23df0
callq 0x2220
jmp 0x18b10
movl 0x2c(%rsp), %eax
testl %eax, %eax
je 0x18614
addl $0xa, %eax
movl %eax, (%r15)
jmp 0x18614