// File: /workspace/github_c_makefile_star2_O1/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, %xmm7
movapd %xmm1, %xmm5
movapd %xmm0, %xmm6
movl $0x0, 0x2c(%rsp)
xorpd %xmm1, %xmm1
testl %ecx, %ecx
jne 0x17463
xorpd %xmm0, %xmm0
jmp 0x1746b
movsd 0xb415(%rip), %xmm0     # 0x22880
movsd %xmm0, (%r14)
movsd %xmm0, (%rbx)
ucomisd %xmm6, %xmm1
ja 0x17499
ucomisd %xmm5, %xmm1
ja 0x17499
ucomisd %xmm1, %xmm6
jne 0x174af
jp 0x174af
ucomisd %xmm1, %xmm5
jne 0x174af
jp 0x174af
movl $0x2, (%r15)
jmp 0x174a0
movl $0x1, (%r15)
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
ucomisd %xmm7, %xmm1
ja 0x17502
ucomisd 0xa173(%rip), %xmm7     # 0x21630
ja 0x17502
ucomisd %xmm3, %xmm1
ja 0x1750b
ucomisd 0xa163(%rip), %xmm3     # 0x21630
ja 0x1750b
movapd %xmm7, %xmm1
addsd %xmm3, %xmm1
movsd 0xb3a9(%rip), %xmm2     # 0x22888
addsd %xmm2, %xmm1
addsd %xmm2, %xmm1
andpd 0xbae1(%rip), %xmm1     # 0x22fd0
ucomisd 0xb399(%rip), %xmm1     # 0x22890
jbe 0x17514
movl $0x5, (%r15)
jmp 0x174a0
movl $0x3, (%r15)
jmp 0x174a0
movl $0x4, (%r15)
jmp 0x174a0
movl $0x0, (%r15)
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm7
jne 0x1753b
jp 0x1753b
ucomisd %xmm1, %xmm6
jne 0x1757a
jp 0x1757a
movl $0x6, (%r15)
jmp 0x174a0
ucomisd %xmm1, %xmm3
jne 0x17557
jp 0x17557
ucomisd %xmm1, %xmm5
jne 0x1755f
jp 0x1755f
movl $0x7, (%r15)
jmp 0x174a0
ucomisd %xmm1, %xmm6
jne 0x17572
jp 0x17572
testl %ebp, %ebp
jne 0x1756b
movsd 0xa0c5(%rip), %xmm1     # 0x21630
movsd %xmm1, (%r14)
jmp 0x1758f
ucomisd %xmm1, %xmm5
jne 0x17598
jp 0x17598
movsd %xmm0, (%r14)
xorpd %xmm0, %xmm0
testl %ebp, %ebp
jne 0x1758f
movsd 0xa0a1(%rip), %xmm0     # 0x21630
movsd %xmm0, (%rbx)
jmp 0x174a0
movapd %xmm5, %xmm0
maxsd %xmm6, %xmm0
movsd 0xb2f0(%rip), %xmm1     # 0x22898
ucomisd %xmm0, %xmm1
jbe 0x175fd
testl %ebp, %ebp
je 0x17689
ucomisd %xmm6, %xmm5
jbe 0x176a7
movapd 0xba18(%rip), %xmm0     # 0x22fe0
xorpd %xmm6, %xmm0
addsd %xmm6, %xmm5
movapd %xmm5, 0x10(%rsp)
divsd %xmm5, %xmm0
movapd %xmm6, 0x40(%rsp)
callq 0x2220
movsd %xmm0, (%r14)
movapd 0x40(%rsp), %xmm0
divsd 0x10(%rsp), %xmm0
callq 0x2240
jmp 0x1758f
movapd %xmm6, %xmm0
cmplesd %xmm5, %xmm0
movapd %xmm0, %xmm1
andpd %xmm6, %xmm1
andnpd %xmm5, %xmm0
orpd %xmm1, %xmm0
movsd 0xa012(%rip), %xmm1     # 0x21630
ucomisd %xmm0, %xmm1
jae 0x17668
movapd %xmm6, %xmm4
addsd %xmm5, %xmm4
movq %xmm4, %rax
btrq $0x3f, %rax
movabsq $0x7fefffffffffffff, %rcx # imm = 0x7FEFFFFFFFFFFFFF
cmpq %rcx, %rax
movsd %xmm7, 0x10(%rsp)
jle 0x176e7
movapd %xmm5, %xmm0
mulsd %xmm7, %xmm0
movapd %xmm6, %xmm4
mulsd %xmm3, %xmm4
subsd %xmm0, %xmm4
jmp 0x17870
xorl %r13d, %r13d
ucomisd 0x9b85(%rip), %xmm7     # 0x211f8
seta %al
ja 0x176fe
movapd %xmm6, %xmm4
movapd %xmm7, %xmm2
jmp 0x1770e
movapd %xmm6, %xmm0
addsd %xmm5, %xmm0
divsd %xmm0, %xmm5
movsd %xmm5, (%r14)
divsd %xmm0, %xmm6
movsd %xmm6, (%rbx)
jmp 0x174a0
addsd %xmm5, %xmm6
movapd %xmm6, 0x40(%rsp)
movapd %xmm5, %xmm0
divsd %xmm6, %xmm0
movapd %xmm5, 0x10(%rsp)
callq 0x2240
movsd %xmm0, (%r14)
movapd 0x10(%rsp), %xmm0
xorpd 0xb909(%rip), %xmm0     # 0x22fe0
divsd 0x40(%rsp), %xmm0
callq 0x2220
jmp 0x1758f
ucomisd %xmm5, %xmm6
jbe 0x1785e
mulsd %xmm3, %xmm4
subsd %xmm5, %xmm4
jmp 0x17870
movapd %xmm5, %xmm4
movapd %xmm6, %xmm5
movapd %xmm3, %xmm2
movapd %xmm7, %xmm3
movb %al, %r13b
movsd 0xb187(%rip), %xmm6     # 0x228a0
movapd %xmm4, %xmm0
mulsd %xmm6, %xmm0
movapd %xmm6, %xmm7
minsd %xmm0, %xmm7
ucomisd %xmm5, %xmm7
jbe 0x17743
movapd %xmm4, %xmm0
movapd %xmm5, %xmm1
movl %ebp, %edi
callq 0x17e23
jmp 0x17a01
movsd %xmm3, 0x40(%rsp)
movapd %xmm5, %xmm0
movsd %xmm2, 0x8(%rsp)
mulsd %xmm2, %xmm0
ucomisd %xmm0, %xmm1
jb 0x177b6
movapd %xmm5, %xmm3
mulsd %xmm6, %xmm3
minsd %xmm3, %xmm6
ucomisd %xmm4, %xmm6
jbe 0x177b6
movapd %xmm4, %xmm0
movapd %xmm5, %xmm1
movsd 0x8(%rsp), %xmm2
callq 0x1807e
movsd %xmm0, (%rbx)
movsd (%rbx), %xmm0
testl %ebp, %ebp
je 0x17c14
xorpd 0xb846(%rip), %xmm0     # 0x22fe0
callq 0x2220
movsd %xmm0, (%r14)
movsd (%rbx), %xmm0
callq 0x2240
movsd %xmm0, (%rbx)
jmp 0x17a58
movapd %xmm5, %xmm2
cmplesd %xmm4, %xmm2
movapd %xmm2, %xmm3
movapd %xmm4, 0x30(%rsp)
andpd %xmm4, %xmm3
movapd %xmm5, 0x10(%rsp)
andnpd %xmm5, %xmm2
orpd %xmm3, %xmm2
ucomisd 0x9e4d(%rip), %xmm2     # 0x21630
jbe 0x17a6f
movl $0x8, %r12d
ucomisd 0x10(%rsp), %xmm1
jae 0x17d1c
movsd 0x8(%rsp), %xmm1
ucomisd 0xb0af(%rip), %xmm1     # 0x228b8
jae 0x17ca0
movsd 0x9e21(%rip), %xmm1     # 0x21638
ucomisd 0x8(%rsp), %xmm1
jbe 0x1783b
movaps 0x30(%rsp), %xmm1
callq 0x2140
movsd 0xb08f(%rip), %xmm1     # 0x228c0
ucomisd %xmm0, %xmm1
jae 0x17d1c
movapd 0x10(%rsp), %xmm0
ucomisd 0xb07f(%rip), %xmm0     # 0x228c8
jbe 0x17acf
movq $0x0, (%rbx)
movb $0x1, %r12b
jmp 0x17b0d
mulsd 0x10(%rsp), %xmm4
movapd %xmm6, %xmm0
subsd %xmm4, %xmm0
movapd %xmm0, %xmm4
xorpd %xmm0, %xmm0
xorl %r13d, %r13d
ucomisd %xmm4, %xmm0
seta %al
jbe 0x17892
xorpd 0xb758(%rip), %xmm4     # 0x22fe0
movapd %xmm5, %xmm0
movapd %xmm3, %xmm5
jmp 0x178a6
movapd %xmm6, %xmm0
movapd %xmm5, %xmm6
movsd 0x10(%rsp), %xmm5
movsd %xmm3, 0x10(%rsp)
movb %al, %r13b
movsd 0xb037(%rip), %xmm2     # 0x228e8
ucomisd %xmm6, %xmm2
jbe 0x17988
movapd %xmm0, 0x30(%rsp)
testl %ebp, %ebp
setne %al
ucomisd 0xb032(%rip), %xmm4     # 0x22900
movapd %xmm6, %xmm3
seta %cl
movsd %xmm5, 0x8(%rsp)
mulsd %xmm5, %xmm6
movsd 0xafd9(%rip), %xmm2     # 0x228c0
ucomisd %xmm6, %xmm2
jae 0x179ae
andb %cl, %al
jne 0x179ae
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 0x17930
jp 0x17930
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 0x184f3
movsd %xmm0, (%r14)
testl %ebp, %ebp
je 0x17b74
movsd 0xaf9e(%rip), %xmm1     # 0x22908
ucomisd %xmm0, %xmm1
jbe 0x17b74
xorps %xmm0, %xmm0
cvtsi2sd %r12d, %xmm0
movapd 0x40(%rsp), %xmm1
addsd %xmm0, %xmm1
jmp 0x179b2
movapd %xmm5, %xmm2
movsd 0xaf5c(%rip), %xmm1     # 0x228f0
ucomisd %xmm6, %xmm0
jbe 0x179c7
ucomisd %xmm6, %xmm1
jae 0x179f0
movsd 0xaf50(%rip), %xmm1     # 0x228f8
mulsd %xmm6, %xmm1
jmp 0x179d9
movapd %xmm3, %xmm1
movapd 0x30(%rsp), %xmm0
movsd 0x8(%rsp), %xmm2
movl %ebp, %edi
callq 0x1981f
jmp 0x17a01
ucomisd %xmm0, %xmm1
jae 0x179f0
movsd 0xaf23(%rip), %xmm1     # 0x228f8
mulsd %xmm0, %xmm1
ucomisd %xmm1, %xmm4
ja 0x179f0
movapd %xmm6, %xmm1
movapd %xmm4, %xmm2
movl %ebp, %edi
callq 0x19233
jmp 0x17a01
movapd %xmm6, %xmm1
movsd 0x10(%rsp), %xmm3
movl %ebp, %edi
callq 0x19da9
movsd %xmm0, (%r14)
testl %ebp, %ebp
je 0x17a28
ucomisd 0xaece(%rip), %xmm0     # 0x228e0
jbe 0x17a3e
callq 0x17f9a
xorpd 0xb5bf(%rip), %xmm0     # 0x22fe0
callq 0x2240
jmp 0x17a50
movsd 0x97c8(%rip), %xmm2     # 0x211f8
movapd %xmm2, %xmm1
subsd %xmm0, %xmm1
addsd %xmm2, %xmm1
jmp 0x17a54
callq 0x2550
xorpd 0xb595(%rip), %xmm0     # 0x22fe0
callq 0x2220
movapd %xmm0, %xmm1
movsd %xmm1, (%rbx)
testl %r13d, %r13d
je 0x174a0
movsd (%r14), %xmm0
movsd (%rbx), %xmm1
jmp 0x1756b
movsd 0xae31(%rip), %xmm0     # 0x228a8
minsd 0x10(%rsp), %xmm0
movl $0x8, %r12d
movapd 0x30(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jae 0x17d1c
movsd 0x8(%rsp), %xmm0
movaps 0x30(%rsp), %xmm1
callq 0x2140
movsd 0x9ba5(%rip), %xmm1     # 0x21650
ucomisd %xmm0, %xmm1
jae 0x17d1c
movl $0x9, %r12d
movsd 0x8(%rsp), %xmm0
ucomisd 0xade7(%rip), %xmm0     # 0x228b0
jae 0x17d1c
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 0x184f3
movsd %xmm0, (%rbx)
movapd 0x10(%rsp), %xmm0
addsd 0xadc9(%rip), %xmm0     # 0x228d0
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 0x1876b
movsd (%rbx), %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x17b43
jnp 0x17b5e
movq %xmm0, %rax
decq %rax
movabsq $0xffffffffffffe, %rcx  # imm = 0xFFFFFFFFFFFFE
cmpq %rcx, %rax
ja 0x17e14
testb %r12b, %r12b
je 0x17ca8
movsd 0xad11(%rip), %xmm0     # 0x22880
jmp 0x17cd7
movsd 0xad44(%rip), %xmm0     # 0x228c0
ucomisd 0x8(%rsp), %xmm0
jae 0x17c32
movsd 0xad38(%rip), %xmm0     # 0x228c8
ucomisd 0x30(%rsp), %xmm0
jb 0x17bda
movapd 0x30(%rsp), %xmm0
movapd 0x40(%rsp), %xmm1
movsd 0x8(%rsp), %xmm2
movsd 0x10(%rsp), %xmm3
movl $0x14, %edi
xorl %esi, %esi
callq 0x184f3
addsd (%r14), %xmm0
movsd %xmm0, (%r14)
movapd 0x30(%rsp), %xmm0
addsd 0xacfc(%rip), %xmm0     # 0x228d0
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 0x1876b
movl (%r12), %eax
testl %eax, %eax
je 0x17c55
addl $0xa, %eax
movl %eax, (%r15)
jmp 0x17c55
movsd 0x95dc(%rip), %xmm1     # 0x211f8
movapd %xmm1, %xmm2
subsd %xmm0, %xmm2
addsd %xmm1, %xmm2
movsd %xmm2, (%r14)
jmp 0x17a58
movapd 0x30(%rsp), %xmm0
movapd 0x40(%rsp), %xmm1
movsd 0x8(%rsp), %xmm2
xorl %edi, %edi
callq 0x1981f
addsd (%r14), %xmm0
movsd %xmm0, (%r14)
movsd (%r14), %xmm0
testl %ebp, %ebp
je 0x17c83
xorpd 0xb37a(%rip), %xmm0     # 0x22fe0
callq 0x2220
movsd %xmm0, (%rbx)
movsd (%r14), %xmm0
callq 0x2240
movsd %xmm0, (%r14)
jmp 0x17a58
movsd 0x956d(%rip), %xmm1     # 0x211f8
movapd %xmm1, %xmm2
subsd %xmm0, %xmm2
addsd %xmm1, %xmm2
movsd %xmm2, (%rbx)
jmp 0x17a58
movl $0x9, %r12d
jmp 0x17d1c
movsd 0xac28(%rip), %xmm0     # 0x228d8
addsd 0x10(%rsp), %xmm0
movapd 0x30(%rsp), %xmm1
movsd 0x40(%rsp), %xmm2
movsd 0x8(%rsp), %xmm3
movl $0x14, %edi
movl $0x1, %esi
callq 0x184f3
movsd %xmm0, (%rbx)
leaq 0x2c(%rsp), %r12
movapd 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 0x1876b
movl (%r12), %eax
movl $0xb, %r12d
testl %eax, %eax
je 0x17d1c
addl $0xa, %eax
movl %eax, (%r15)
addl $-0x7, %r12d
cmpl $0x4, %r12d
ja 0x174a0
leaq 0xb2ef(%rip), %rax      # 0x23020
movslq (%rax,%r12,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movapd 0x10(%rsp), %xmm1
jmp 0x179b2
movapd 0x10(%rsp), %xmm0
movaps 0x30(%rsp), %xmm1
movsd 0x40(%rsp), %xmm2
movl %ebp, %edi
callq 0x1981f
movsd %xmm0, (%rbx)
testl %ebp, %ebp
je 0x17da7
ucomisd 0xab73(%rip), %xmm0     # 0x228e0
jbe 0x17ddd
callq 0x17f9a
xorpd 0xb264(%rip), %xmm0     # 0x22fe0
callq 0x2240
jmp 0x17def
movsd (%rbx), %xmm0
testl %ebp, %ebp
je 0x17dbd
ucomisd 0xab4d(%rip), %xmm0     # 0x228e0
jbe 0x17dfd
callq 0x17f9a
xorpd 0xb23e(%rip), %xmm0     # 0x22fe0
jmp 0x17c74
movsd 0x9449(%rip), %xmm2     # 0x211f8
movapd %xmm2, %xmm1
subsd %xmm0, %xmm1
addsd %xmm2, %xmm1
jmp 0x17df3
callq 0x22f0
xorpd 0xb216(%rip), %xmm0     # 0x22fe0
movlpd %xmm0, (%r14)
movsd (%rbx), %xmm0
callq 0x2550
jmp 0x177ad
callq 0x2550
xorpd 0xb1f6(%rip), %xmm0     # 0x22fe0
callq 0x2220
movapd %xmm0, %xmm1
movsd %xmm1, (%r14)
jmp 0x17a58
callq 0x2550
xorpd 0xb1d6(%rip), %xmm0     # 0x22fe0
callq 0x2220
jmp 0x17c79
movl 0x2c(%rsp), %eax
movl $0x7, %r12d
jmp 0x17d12