#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */
typedef double uint32_t;
typedef int int32_t;

/* Variables and functions */
double INFINITY;
double binom_2sided(uint32_t succ, uint32_t obs, double rate, uint32_t midp) {
  double cur_succ_t2 = (int32_t)succ;
  double cur_fail_t2 = (int32_t)(obs - succ);
  double tailp =
      (1 - 0.0000000000001) *
      0.00000000000000000000000010339757656912845935892608650874535669572651386260986328125;
  double centerp = 0;
  double lastp2 = tailp;
  double lastp1 = tailp;
  int32_t tie_ct = 1;
  double rate_mult_incr = rate / (1 - rate);
  double rate_mult_decr = (1 - rate) / rate;
  double cur_succ_t1;
  double cur_fail_t1;
  double preaddp;
  if (!obs) {
    return midp ? 0.5 : 1;
  }
  if (obs * rate < succ) {
    while (cur_succ_t2 > 0.5) {
      cur_fail_t2 += 1;
      lastp2 *= rate_mult_decr * cur_succ_t2 / cur_fail_t2;
      cur_succ_t2 -= 1;
      if (lastp2 <
          0.00000000000000000000000010339757656912845935892608650874535669572651386260986328125) {
        if (lastp2 >
            (1 - 2 * 0.0000000000001) *
                0.00000000000000000000000010339757656912845935892608650874535669572651386260986328125) {
          tie_ct++;
        }
        tailp += lastp2;
        break;
      }
      centerp += lastp2;
      if (centerp == INFINITY) {
        return 0;
      }
    }
    if ((centerp == 0) && (!midp)) {
      return 1;
    }
    while (cur_succ_t2 > 0.5) {
      cur_fail_t2 += 1;
      lastp2 *= rate_mult_decr * cur_succ_t2 / cur_fail_t2;
      cur_succ_t2 -= 1;
      preaddp = tailp;
      tailp += lastp2;
      if (tailp <= preaddp) {
        break;
      }
    }
    cur_succ_t1 = (int32_t)(succ + 1);
    cur_fail_t1 = (int32_t)(obs - succ);
    while (cur_fail_t1 > 0.5) {
      lastp1 *= rate_mult_incr * cur_fail_t1 / cur_succ_t1;
      preaddp = tailp;
      tailp += lastp1;
      if (tailp <= preaddp) {
        break;
      }
      cur_succ_t1 += 1;
      cur_fail_t1 -= 1;
    }
  } else {
    while (cur_fail_t2 > 0.5) {
      cur_succ_t2++;
      lastp2 *= rate_mult_incr * cur_fail_t2 / cur_succ_t2;
      cur_fail_t2--;
      if (lastp2 <
          0.00000000000000000000000010339757656912845935892608650874535669572651386260986328125) {
        if (lastp2 >
            (1 - 2 * 0.0000000000001) *
                0.00000000000000000000000010339757656912845935892608650874535669572651386260986328125) {
          tie_ct++;
        }
        tailp += lastp2;
        break;
      }
      centerp += lastp2;
      if (centerp == INFINITY) {
        return 0;
      }
    }
    if ((centerp == 0) && (!midp)) {
      return 1;
    }
    while (cur_fail_t2 > 0.5) {
      cur_succ_t2 += 1;
      lastp2 *= rate_mult_incr * cur_fail_t2 / cur_succ_t2;
      cur_fail_t2 -= 1;
      preaddp = tailp;
      tailp += lastp2;
      if (tailp <= preaddp) {
        break;
      }
    }
    cur_succ_t1 = (int32_t)succ;
    cur_fail_t1 = (int32_t)(obs - succ);
    while (cur_succ_t1 > 0.5) {
      cur_fail_t1 += 1;
      lastp1 *= rate_mult_decr * cur_succ_t1 / cur_fail_t1;
      preaddp = tailp;
      tailp += lastp1;
      if (tailp <= preaddp) {
        break;
      }
      cur_succ_t1 -= 1;
    }
  }
  if (!midp) {
    return tailp / (tailp + centerp);
  } else {
    return (tailp -
            ((1 - 0.0000000000001) *
             0.00000000000000000000000010339757656912845935892608650874535669572651386260986328125 *
             0.5) *
                tie_ct) /
           (tailp + centerp);
  }
}


x86 assembly (clang, -O0):
<binom_2sided>:
push   %rbp
mov    %rsp,%rbp
push   %rax
movsd  %xmm0,-0x10(%rbp)
movsd  %xmm1,-0x18(%rbp)
movsd  %xmm2,-0x20(%rbp)
movsd  %xmm3,-0x28(%rbp)
cvttsd2si -0x10(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x18(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xec2(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movl   $0x1,-0x5c(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  0xe85(%rip),%xmm1
subsd  -0x20(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  0xe6f(%rip),%xmm0
subsd  -0x20(%rbp),%xmm0
divsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x18(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    11ee <binom_2sided+0xee>
jp     11ee <binom_2sided+0xee>
movsd  -0x28(%rbp),%xmm0
movsd  0xe4b(%rip),%xmm3
movsd  0xe33(%rip),%xmm2
xorps  %xmm1,%xmm1
cmpneqsd %xmm1,%xmm0
movaps %xmm0,%xmm1
andpd  %xmm3,%xmm1
andnpd %xmm2,%xmm0
orpd   %xmm1,%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1769 <binom_2sided+0x669>
movsd  -0x18(%rbp),%xmm1
mulsd  -0x20(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    148f <binom_2sided+0x38f>
jmp    120c <binom_2sided+0x10c>
movsd  -0x30(%rbp),%xmm0
movsd  0xdf7(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    12e8 <binom_2sided+0x1e8>
movsd  0xdd5(%rip),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x70(%rbp),%xmm0
mulsd  -0x30(%rbp),%xmm0
divsd  -0x38(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  0xda5(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  0xdac(%rip),%xmm0
ucomisd -0x50(%rbp),%xmm0
jbe    12ab <binom_2sided+0x1ab>
movsd  -0x50(%rbp),%xmm0
movsd  0xda4(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1297 <binom_2sided+0x197>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
movsd  -0x50(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
jmp    12e8 <binom_2sided+0x1e8>
movsd  -0x50(%rbp),%xmm0
addsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x48(%rbp),%xmm0
mov    0x2d22(%rip),%rax
ucomisd (%rax),%xmm0
jne    12e3 <binom_2sided+0x1e3>
jp     12e3 <binom_2sided+0x1e3>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1769 <binom_2sided+0x669>
jmp    120c <binom_2sided+0x10c>
movsd  -0x48(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    132a <binom_2sided+0x22a>
jp     132a <binom_2sided+0x22a>
movsd  -0x28(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    132a <binom_2sided+0x22a>
jp     132a <binom_2sided+0x22a>
movsd  0xce0(%rip),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1769 <binom_2sided+0x669>
jmp    132f <binom_2sided+0x22f>
movsd  -0x30(%rbp),%xmm0
movsd  0xcd4(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    13c4 <binom_2sided+0x2c4>
movsd  0xcb2(%rip),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x70(%rbp),%xmm0
mulsd  -0x30(%rbp),%xmm0
divsd  -0x38(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  0xc82(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm1
movsd  -0x88(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     13bf <binom_2sided+0x2bf>
jmp    13c4 <binom_2sided+0x2c4>
jmp    132f <binom_2sided+0x22f>
movsd  0xc34(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x18(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
movsd  0xc0e(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    148a <binom_2sided+0x38a>
movsd  -0x68(%rbp),%xmm0
mulsd  -0x80(%rbp),%xmm0
divsd  -0x78(%rbp),%xmm0
mulsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm1
movsd  -0x88(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     145d <binom_2sided+0x35d>
jmp    148a <binom_2sided+0x38a>
movsd  0xb9b(%rip),%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x80(%rbp),%xmm0
movsd  0xb84(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
jmp    13f5 <binom_2sided+0x2f5>
jmp    1707 <binom_2sided+0x607>
jmp    1494 <binom_2sided+0x394>
movsd  -0x38(%rbp),%xmm0
movsd  0xb6f(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    156c <binom_2sided+0x46c>
movsd  0xb4d(%rip),%xmm0
addsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x68(%rbp),%xmm0
mulsd  -0x38(%rbp),%xmm0
divsd  -0x30(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  0xb42(%rip),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xb28(%rip),%xmm0
ucomisd -0x50(%rbp),%xmm0
jbe    152f <binom_2sided+0x42f>
movsd  -0x50(%rbp),%xmm0
movsd  0xb20(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    151b <binom_2sided+0x41b>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
movsd  -0x50(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
jmp    156c <binom_2sided+0x46c>
movsd  -0x50(%rbp),%xmm0
addsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x48(%rbp),%xmm0
mov    0x2a9e(%rip),%rax
ucomisd (%rax),%xmm0
jne    1567 <binom_2sided+0x467>
jp     1567 <binom_2sided+0x467>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1769 <binom_2sided+0x669>
jmp    1494 <binom_2sided+0x394>
movsd  -0x48(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    15ae <binom_2sided+0x4ae>
jp     15ae <binom_2sided+0x4ae>
movsd  -0x28(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    15ae <binom_2sided+0x4ae>
jp     15ae <binom_2sided+0x4ae>
movsd  0xa5c(%rip),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1769 <binom_2sided+0x669>
jmp    15b3 <binom_2sided+0x4b3>
movsd  -0x38(%rbp),%xmm0
movsd  0xa50(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1648 <binom_2sided+0x548>
movsd  0xa2e(%rip),%xmm0
addsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x68(%rbp),%xmm0
mulsd  -0x38(%rbp),%xmm0
divsd  -0x30(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  0x9fe(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm1
movsd  -0x88(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     1643 <binom_2sided+0x543>
jmp    1648 <binom_2sided+0x548>
jmp    15b3 <binom_2sided+0x4b3>
cvttsd2si -0x10(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x18(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x78(%rbp),%xmm0
movsd  0x996(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1702 <binom_2sided+0x602>
movsd  0x974(%rip),%xmm0
addsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x70(%rbp),%xmm0
mulsd  -0x78(%rbp),%xmm0
divsd  -0x80(%rbp),%xmm0
mulsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm1
movsd  -0x88(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     16e7 <binom_2sided+0x5e7>
jmp    1702 <binom_2sided+0x602>
movsd  -0x78(%rbp),%xmm0
movsd  0x90c(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
jmp    166d <binom_2sided+0x56d>
jmp    1707 <binom_2sided+0x607>
movsd  -0x28(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    173c <binom_2sided+0x63c>
jp     173c <binom_2sided+0x63c>
movsd  -0x40(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm1
addsd  -0x48(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1769 <binom_2sided+0x669>
movsd  -0x40(%rbp),%xmm1
cvtsi2sdl -0x5c(%rbp),%xmm0
movsd  0x8e2(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm1
addsd  -0x48(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
add    $0x8,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<binom_2sided>:
movapd %xmm0,%xmm10
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm1
jne    1115 <binom_2sided+0x15>
jnp    11e1 <binom_2sided+0xe1>
movapd %xmm1,%xmm0
subsd  %xmm10,%xmm0
unpcklpd %xmm10,%xmm0
cvttpd2dq %xmm0,%xmm8
cvtdq2pd %xmm8,%xmm15
movsd  0xecb(%rip),%xmm0
movapd %xmm0,%xmm13
subsd  %xmm2,%xmm13
movapd %xmm2,%xmm12
divsd  %xmm13,%xmm12
divsd  %xmm2,%xmm13
mulsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm10
mov    0x2e8a(%rip),%rax
movsd  (%rax),%xmm14
movsd  0xe9d(%rip),%xmm7
xorpd  %xmm1,%xmm1
jbe    11fb <binom_2sided+0xfb>
movsd  0xe92(%rip),%xmm9
movapd 0xed9(%rip),%xmm11
movsd  0xe89(%rip),%xmm2
movapd %xmm7,%xmm5
movapd %xmm15,%xmm6
nopl   0x0(%rax,%rax,1)
movapd %xmm6,%xmm4
unpckhpd %xmm6,%xmm4
ucomisd %xmm9,%xmm4
jbe    125e <binom_2sided+0x15e>
mulsd  %xmm13,%xmm4
addpd  %xmm11,%xmm6
divsd  %xmm6,%xmm4
mulsd  %xmm4,%xmm5
ucomisd %xmm5,%xmm2
ja     126c <binom_2sided+0x16c>
addsd  %xmm5,%xmm1
ucomisd %xmm14,%xmm1
jne    11a0 <binom_2sided+0xa0>
jp     11a0 <binom_2sided+0xa0>
xorpd  %xmm0,%xmm0
ret
cmpneqsd %xmm0,%xmm3
movq   %xmm3,%rax
and    $0x1,%eax
lea    0xe4b(%rip),%rcx
movsd  (%rcx,%rax,8),%xmm0
ret
movsd  0xe0c(%rip),%xmm10
movapd 0xe43(%rip),%xmm9
movsd  0xe02(%rip),%xmm11
movapd %xmm7,%xmm2
movapd %xmm15,%xmm5
nop
ucomisd %xmm10,%xmm5
jbe    1265 <binom_2sided+0x165>
movapd %xmm12,%xmm6
mulsd  %xmm5,%xmm6
addpd  %xmm9,%xmm5
movapd %xmm5,%xmm4
unpckhpd %xmm5,%xmm4
divsd  %xmm4,%xmm6
mulsd  %xmm6,%xmm2
ucomisd %xmm2,%xmm11
ja     12ad <binom_2sided+0x1ad>
addsd  %xmm2,%xmm1
ucomisd %xmm14,%xmm1
jne    1220 <binom_2sided+0x120>
jp     1220 <binom_2sided+0x120>
xorpd  %xmm0,%xmm0
ret
mov    $0x1,%eax
jmp    1288 <binom_2sided+0x188>
mov    $0x1,%eax
jmp    12c9 <binom_2sided+0x1c9>
xor    %eax,%eax
ucomisd 0xdaa(%rip),%xmm5
seta   %al
add    $0x1,%eax
movsd  0xd84(%rip),%xmm7
addsd  %xmm5,%xmm7
xorpd  %xmm2,%xmm2
ucomisd %xmm2,%xmm3
jne    1399 <binom_2sided+0x299>
jp     1399 <binom_2sided+0x299>
ucomisd %xmm2,%xmm1
jne    1399 <binom_2sided+0x299>
jp     1399 <binom_2sided+0x299>
ret
xor    %eax,%eax
ucomisd 0xd69(%rip),%xmm2
seta   %al
add    $0x1,%eax
movsd  0xd43(%rip),%xmm7
addsd  %xmm2,%xmm7
xorpd  %xmm4,%xmm4
ucomisd %xmm4,%xmm3
jne    12dd <binom_2sided+0x1dd>
jp     12dd <binom_2sided+0x1dd>
ucomisd %xmm4,%xmm1
jne    12dd <binom_2sided+0x1dd>
jnp    12ac <binom_2sided+0x1ac>
ucomisd 0xd2b(%rip),%xmm5
jbe    1327 <binom_2sided+0x227>
nopw   0x0(%rax,%rax,1)
movapd %xmm2,%xmm0
movapd %xmm7,%xmm4
movapd %xmm12,%xmm2
mulsd  %xmm5,%xmm2
addpd  %xmm9,%xmm5
movapd %xmm5,%xmm6
unpckhpd %xmm5,%xmm6
divsd  %xmm6,%xmm2
mulsd  %xmm0,%xmm2
addsd  %xmm2,%xmm7
ucomisd %xmm7,%xmm4
jae    1327 <binom_2sided+0x227>
ucomisd %xmm10,%xmm5
ja     12f0 <binom_2sided+0x1f0>
pshufd $0x55,%xmm8,%xmm0
movd   %xmm0,%ecx
test   %ecx,%ecx
jle    1455 <binom_2sided+0x355>
movsd  0xcc7(%rip),%xmm2
movapd 0xd17(%rip),%xmm0
nopl   0x0(%rax)
movapd %xmm7,%xmm4
movapd %xmm2,%xmm5
movapd %xmm15,%xmm2
unpckhpd %xmm15,%xmm2
mulsd  %xmm13,%xmm2
addpd  %xmm0,%xmm15
divsd  %xmm15,%xmm2
mulsd  %xmm5,%xmm2
addsd  %xmm2,%xmm7
ucomisd %xmm7,%xmm4
jae    1455 <binom_2sided+0x355>
movapd %xmm15,%xmm4
unpckhpd %xmm15,%xmm4
ucomisd %xmm10,%xmm4
ja     1350 <binom_2sided+0x250>
jmp    1455 <binom_2sided+0x355>
movapd %xmm6,%xmm0
unpckhpd %xmm6,%xmm0
ucomisd 0xc67(%rip),%xmm0
jbe    13eb <binom_2sided+0x2eb>
nopl   0x0(%rax,%rax,1)
movapd %xmm5,%xmm0
movapd %xmm7,%xmm2
movapd %xmm6,%xmm5
unpckhpd %xmm6,%xmm5
mulsd  %xmm13,%xmm5
addpd  %xmm11,%xmm6
divsd  %xmm6,%xmm5
mulsd  %xmm0,%xmm5
addsd  %xmm5,%xmm7
ucomisd %xmm7,%xmm2
jae    13eb <binom_2sided+0x2eb>
movapd %xmm6,%xmm0
unpckhpd %xmm6,%xmm0
ucomisd %xmm9,%xmm0
ja     13b0 <binom_2sided+0x2b0>
movd   %xmm8,%ecx
test   %ecx,%ecx
jle    1455 <binom_2sided+0x355>
addsd  0xc03(%rip),%xmm10
cvttpd2dq %xmm10,%xmm0
cvtdq2pd %xmm0,%xmm0
movsd  0xbfa(%rip),%xmm5
movsd  0xbe9(%rip),%xmm8
movsd  0xc09(%rip),%xmm4
nop
movapd %xmm7,%xmm6
movapd %xmm5,%xmm2
movapd %xmm12,%xmm5
mulsd  %xmm15,%xmm5
divsd  %xmm0,%xmm5
mulsd  %xmm2,%xmm5
addsd  %xmm5,%xmm7
ucomisd %xmm7,%xmm6
jae    1455 <binom_2sided+0x355>
addsd  %xmm8,%xmm0
addsd  %xmm4,%xmm15
ucomisd %xmm9,%xmm15
ja     1420 <binom_2sided+0x320>
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm3
jne    1461 <binom_2sided+0x361>
jnp    147d <binom_2sided+0x37d>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xbc0(%rip),%xmm0
addsd  %xmm7,%xmm0
addsd  %xmm7,%xmm1
divsd  %xmm1,%xmm0
ret
addsd  %xmm7,%xmm1
divsd  %xmm1,%xmm7
movapd %xmm7,%xmm0
ret

LLVM IR (-O0):
@INFINITY = global double 0.000000e+00
define double @binom_2sided(double %0, double %1, double %2, double %3) {
%5 = alloca double
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca double
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca i32
%17 = alloca double
%18 = alloca double
%19 = alloca double
%20 = alloca double
%21 = alloca double
store double %0, double* %6
store double %1, double* %7
store double %2, double* %8
store double %3, double* %9
%22 = load double, double* %6
%23 = fptosi double %22 to i32
%24 = sitofp i32 %23 to double
store double %24, double* %10
%25 = load double, double* %7
%26 = load double, double* %6
%27 = fsub double %25, %26
%28 = fptosi double %27 to i32
%29 = sitofp i32 %28 to double
store double %29, double* %11
store double 0x3ABFFFFFFFFFFC7B, double* %12
store double 0.000000e+00, double* %13
%30 = load double, double* %12
store double %30, double* %14
%31 = load double, double* %12
store double %31, double* %15
store i32 1, i32* %16
%32 = load double, double* %8
%33 = load double, double* %8
%34 = fsub double 1.000000e+00, %33
%35 = fdiv double %32, %34
store double %35, double* %17
%36 = load double, double* %8
%37 = fsub double 1.000000e+00, %36
%38 = load double, double* %8
%39 = fdiv double %37, %38
store double %39, double* %18
%40 = load double, double* %7
%41 = fcmp une double %40, 0.000000e+00
br i1 %41, label %47, label %42
42: ; preds = %4
%43 = load double, double* %9
%44 = fcmp une double %43, 0.000000e+00
%45 = zext i1 %44 to i64
%46 = select i1 %44, double 5.000000e-01, double 1.000000e+00
store double %46, double* %5
br label %278
47: ; preds = %4
%48 = load double, double* %7
%49 = load double, double* %8
%50 = fmul double %48, %49
%51 = load double, double* %6
%52 = fcmp olt double %50, %51
br i1 %52, label %53, label %157
53: ; preds = %47
br label %54
54: ; preds = %89, %53
%55 = load double, double* %10
%56 = fcmp ogt double %55, 5.000000e-01
br i1 %56, label %57, label %90
57: ; preds = %54
%58 = load double, double* %11
%59 = fadd double %58, 1.000000e+00
store double %59, double* %11
%60 = load double, double* %18
%61 = load double, double* %10
%62 = fmul double %60, %61
%63 = load double, double* %11
%64 = fdiv double %62, %63
%65 = load double, double* %14
%66 = fmul double %65, %64
store double %66, double* %14
%67 = load double, double* %10
%68 = fsub double %67, 1.000000e+00
store double %68, double* %10
%69 = load double, double* %14
%70 = fcmp olt double %69, 0x3AC0000000000000
br i1 %70, label %71, label %81
71: ; preds = %57
%72 = load double, double* %14
%73 = fcmp ogt double %72, 0x3ABFFFFFFFFFF8F7
br i1 %73, label %74, label %77
74: ; preds = %71
%75 = load i32, i32* %16
%76 = add nsw i32 %75, 1
store i32 %76, i32* %16
br label %77
77: ; preds = %74, %71
%78 = load double, double* %14
%79 = load double, double* %12
%80 = fadd double %79, %78
store double %80, double* %12
br label %90
81: ; preds = %57
%82 = load double, double* %14
%83 = load double, double* %13
%84 = fadd double %83, %82
store double %84, double* %13
%85 = load double, double* %13
%86 = load double, double* @INFINITY
%87 = fcmp oeq double %85, %86
br i1 %87, label %88, label %89
88: ; preds = %81
store double 0.000000e+00, double* %5
br label %278
89: ; preds = %81
br label %54
90: ; preds = %77, %54
%91 = load double, double* %13
%92 = fcmp oeq double %91, 0.000000e+00
br i1 %92, label %93, label %97
93: ; preds = %90
%94 = load double, double* %9
%95 = fcmp une double %94, 0.000000e+00
br i1 %95, label %97, label %96
96: ; preds = %93
store double 1.000000e+00, double* %5
br label %278
97: ; preds = %93, %90
br label %98
98: ; preds = %121, %97
%99 = load double, double* %10
%100 = fcmp ogt double %99, 5.000000e-01
br i1 %100, label %101, label %122
101: ; preds = %98
%102 = load double, double* %11
%103 = fadd double %102, 1.000000e+00
store double %103, double* %11
%104 = load double, double* %18
%105 = load double, double* %10
%106 = fmul double %104, %105
%107 = load double, double* %11
%108 = fdiv double %106, %107
%109 = load double, double* %14
%110 = fmul double %109, %108
store double %110, double* %14
%111 = load double, double* %10
%112 = fsub double %111, 1.000000e+00
store double %112, double* %10
%113 = load double, double* %12
store double %113, double* %21
%114 = load double, double* %14
%115 = load double, double* %12
%116 = fadd double %115, %114
store double %116, double* %12
%117 = load double, double* %12
%118 = load double, double* %21
%119 = fcmp ole double %117, %118
br i1 %119, label %120, label %121
120: ; preds = %101
br label %122
121: ; preds = %101
br label %98
122: ; preds = %120, %98
%123 = load double, double* %6
%124 = fadd double %123, 1.000000e+00
%125 = fptosi double %124 to i32
%126 = sitofp i32 %125 to double
store double %126, double* %19
%127 = load double, double* %7
%128 = load double, double* %6
%129 = fsub double %127, %128
%130 = fptosi double %129 to i32
%131 = sitofp i32 %130 to double
store double %131, double* %20
br label %132
132: ; preds = %151, %122
%133 = load double, double* %20
%134 = fcmp ogt double %133, 5.000000e-01
br i1 %134, label %135, label %156
135: ; preds = %132
%136 = load double, double* %17
%137 = load double, double* %20
%138 = fmul double %136, %137
%139 = load double, double* %19
%140 = fdiv double %138, %139
%141 = load double, double* %15
%142 = fmul double %141, %140
store double %142, double* %15
%143 = load double, double* %12
store double %143, double* %21
%144 = load double, double* %15
%145 = load double, double* %12
%146 = fadd double %145, %144
store double %146, double* %12
%147 = load double, double* %12
%148 = load double, double* %21
%149 = fcmp ole double %147, %148
br i1 %149, label %150, label %151
150: ; preds = %135
br label %156
151: ; preds = %135
%152 = load double, double* %19
%153 = fadd double %152, 1.000000e+00
store double %153, double* %19
%154 = load double, double* %20
%155 = fsub double %154, 1.000000e+00
store double %155, double* %20
br label %132
156: ; preds = %150, %132
br label %260
157: ; preds = %47
br label %158
158: ; preds = %193, %157
%159 = load double, double* %11
%160 = fcmp ogt double %159, 5.000000e-01
br i1 %160, label %161, label %194
161: ; preds = %158
%162 = load double, double* %10
%163 = fadd double %162, 1.000000e+00
store double %163, double* %10
%164 = load double, double* %17
%165 = load double, double* %11
%166 = fmul double %164, %165
%167 = load double, double* %10
%168 = fdiv double %166, %167
%169 = load double, double* %14
%170 = fmul double %169, %168
store double %170, double* %14
%171 = load double, double* %11
%172 = fadd double %171, -1.000000e+00
store double %172, double* %11
%173 = load double, double* %14
%174 = fcmp olt double %173, 0x3AC0000000000000
br i1 %174, label %175, label %185
175: ; preds = %161
%176 = load double, double* %14
%177 = fcmp ogt double %176, 0x3ABFFFFFFFFFF8F7
br i1 %177, label %178, label %181
178: ; preds = %175
%179 = load i32, i32* %16
%180 = add nsw i32 %179, 1
store i32 %180, i32* %16
br label %181
181: ; preds = %178, %175
%182 = load double, double* %14
%183 = load double, double* %12
%184 = fadd double %183, %182
store double %184, double* %12
br label %194
185: ; preds = %161
%186 = load double, double* %14
%187 = load double, double* %13
%188 = fadd double %187, %186
store double %188, double* %13
%189 = load double, double* %13
%190 = load double, double* @INFINITY
%191 = fcmp oeq double %189, %190
br i1 %191, label %192, label %193
192: ; preds = %185
store double 0.000000e+00, double* %5
br label %278
193: ; preds = %185
br label %158
194: ; preds = %181, %158
%195 = load double, double* %13
%196 = fcmp oeq double %195, 0.000000e+00
br i1 %196, label %197, label %201
197: ; preds = %194
%198 = load double, double* %9
%199 = fcmp une double %198, 0.000000e+00
br i1 %199, label %201, label %200
200: ; preds = %197
store double 1.000000e+00, double* %5
br label %278
201: ; preds = %197, %194
br label %202
202: ; preds = %225, %201
%203 = load double, double* %11
%204 = fcmp ogt double %203, 5.000000e-01
br i1 %204, label %205, label %226
205: ; preds = %202
%206 = load double, double* %10
%207 = fadd double %206, 1.000000e+00
store double %207, double* %10
%208 = load double, double* %17
%209 = load double, double* %11
%210 = fmul double %208, %209
%211 = load double, double* %10
%212 = fdiv double %210, %211
%213 = load double, double* %14
%214 = fmul double %213, %212
store double %214, double* %14
%215 = load double, double* %11
%216 = fsub double %215, 1.000000e+00
store double %216, double* %11
%217 = load double, double* %12
store double %217, double* %21
%218 = load double, double* %14
%219 = load double, double* %12
%220 = fadd double %219, %218
store double %220, double* %12
%221 = load double, double* %12
%222 = load double, double* %21
%223 = fcmp ole double %221, %222
br i1 %223, label %224, label %225
224: ; preds = %205
br label %226
225: ; preds = %205
br label %202
226: ; preds = %224, %202
%227 = load double, double* %6
%228 = fptosi double %227 to i32
%229 = sitofp i32 %228 to double
store double %229, double* %19
%230 = load double, double* %7
%231 = load double, double* %6
%232 = fsub double %230, %231
%233 = fptosi double %232 to i32
%234 = sitofp i32 %233 to double
store double %234, double* %20
br label %235
235: ; preds = %256, %226
%236 = load double, double* %19
%237 = fcmp ogt double %236, 5.000000e-01
br i1 %237, label %238, label %259
238: ; preds = %235
%239 = load double, double* %20
%240 = fadd double %239, 1.000000e+00
store double %240, double* %20
%241 = load double, double* %18
%242 = load double, double* %19
%243 = fmul double %241, %242
%244 = load double, double* %20
%245 = fdiv double %243, %244
%246 = load double, double* %15
%247 = fmul double %246, %245
store double %247, double* %15
%248 = load double, double* %12
store double %248, double* %21
%249 = load double, double* %15
%250 = load double, double* %12
%251 = fadd double %250, %249
store double %251, double* %12
%252 = load double, double* %12
%253 = load double, double* %21
%254 = fcmp ole double %252, %253
br i1 %254, label %255, label %256
255: ; preds = %238
br label %259
256: ; preds = %238
%257 = load double, double* %19
%258 = fsub double %257, 1.000000e+00
store double %258, double* %19
br label %235
259: ; preds = %255, %235
br label %260
260: ; preds = %259, %156
%261 = load double, double* %9
%262 = fcmp une double %261, 0.000000e+00
br i1 %262, label %269, label %263
263: ; preds = %260
%264 = load double, double* %12
%265 = load double, double* %12
%266 = load double, double* %13
%267 = fadd double %265, %266
%268 = fdiv double %264, %267
store double %268, double* %5
br label %278
269: ; preds = %260
%270 = load double, double* %12
%271 = load i32, i32* %16
%272 = sitofp i32 %271 to double
%273 = call double @llvm.fmuladd.f64(double 0xBAAFFFFFFFFFFC7B, double %272, double %270)
%274 = load double, double* %12
%275 = load double, double* %13
%276 = fadd double %274, %275
%277 = fdiv double %273, %276
store double %277, double* %5
br label %278
278: ; preds = %269, %263, %200, %192, %96, %88, %42
%279 = load double, double* %5
ret double %279
}

LLVM IR (-O2):
@INFINITY = global double 0.000000e+00
define double @binom_2sided(double %0, double %1, double %2, double %3) {
%5 = fsub double %1, %0
%6 = insertelement <2 x double> poison, double %0, i64 1
%7 = insertelement <2 x double> %6, double %5, i64 0
%8 = fptosi <2 x double> %7 to <2 x i32>
%9 = sitofp <2 x i32> %8 to <2 x double>
%10 = fsub double 1.000000e+00, %2
%11 = fdiv double %2, %10
%12 = fdiv double %10, %2
%13 = fcmp une double %1, 0.000000e+00
br i1 %13, label %17, label %14
14: ; preds = %4
%15 = fcmp une double %3, 0.000000e+00
%16 = select i1 %15, double 5.000000e-01, double 1.000000e+00
br label %168
17: ; preds = %4
%18 = fmul double %1, %2
%19 = fcmp olt double %18, %0
%20 = load double, double* @INFINITY
br i1 %19, label %21, label %90
21: ; preds = %17, %38
%22 = phi double [ %39, %38 ], [ 0.000000e+00, %17 ]
%23 = phi double [ %32, %38 ], [ 0x3ABFFFFFFFFFFC7B, %17 ]
%24 = phi <2 x double> [ %29, %38 ], [ %9, %17 ]
%25 = extractelement <2 x double> %24, i64 1
%26 = fcmp ogt double %25, 5.000000e-01
br i1 %26, label %27, label %41
27: ; preds = %21
%28 = fmul double %12, %25
%29 = fadd <2 x double> %24, <double 1.000000e+00, double -1.000000e+00>
%30 = extractelement <2 x double> %29, i64 0
%31 = fdiv double %28, %30
%32 = fmul double %23, %31
%33 = fcmp olt double %32, 0x3AC0000000000000
br i1 %33, label %34, label %38
34: ; preds = %27
%35 = fcmp ogt double %32, 0x3ABFFFFFFFFFF8F7
%36 = select i1 %35, i32 2, i32 1
%37 = fadd double %32, 0x3ABFFFFFFFFFFC7B
br label %41
38: ; preds = %27
%39 = fadd double %22, %32
%40 = fcmp oeq double %39, %20
br i1 %40, label %168, label %21
41: ; preds = %21, %34
%42 = phi double [ %37, %34 ], [ 0x3ABFFFFFFFFFFC7B, %21 ]
%43 = phi double [ %32, %34 ], [ %23, %21 ]
%44 = phi i32 [ %36, %34 ], [ 1, %21 ]
%45 = phi <2 x double> [ %29, %34 ], [ %24, %21 ]
%46 = fcmp une double %22, 0.000000e+00
%47 = fcmp une double %3, 0.000000e+00
%48 = or i1 %47, %46
br i1 %48, label %49, label %168
49: ; preds = %41
%50 = extractelement <2 x double> %45, i64 1
%51 = fcmp ogt double %50, 5.000000e-01
br i1 %51, label %52, label %67
52: ; preds = %49, %52
%53 = phi double [ %62, %52 ], [ %42, %49 ]
%54 = phi double [ %61, %52 ], [ %43, %49 ]
%55 = phi <2 x double> [ %58, %52 ], [ %45, %49 ]
%56 = extractelement <2 x double> %55, i64 1
%57 = fmul double %12, %56
%58 = fadd <2 x double> %55, <double 1.000000e+00, double -1.000000e+00>
%59 = extractelement <2 x double> %58, i64 0
%60 = fdiv double %57, %59
%61 = fmul double %54, %60
%62 = fadd double %53, %61
%63 = fcmp ugt double %62, %53
%64 = extractelement <2 x double> %58, i64 1
%65 = fcmp ogt double %64, 5.000000e-01
%66 = select i1 %63, i1 %65, i1 false
br i1 %66, label %52, label %67
67: ; preds = %52, %49
%68 = phi double [ %42, %49 ], [ %62, %52 ]
%69 = extractelement <2 x i32> %8, i64 0
%70 = icmp sgt i32 %69, 0
br i1 %70, label %71, label %155
71: ; preds = %67
%72 = fadd double %0, 1.000000e+00
%73 = fptosi double %72 to i32
%74 = sitofp i32 %73 to double
%75 = extractelement <2 x double> %9, i64 0
br label %76
76: ; preds = %71, %86
%77 = phi double [ %88, %86 ], [ %75, %71 ]
%78 = phi double [ %87, %86 ], [ %74, %71 ]
%79 = phi double [ %83, %86 ], [ 0x3ABFFFFFFFFFFC7B, %71 ]
%80 = phi double [ %84, %86 ], [ %68, %71 ]
%81 = fmul double %11, %77
%82 = fdiv double %81, %78
%83 = fmul double %79, %82
%84 = fadd double %80, %83
%85 = fcmp ugt double %84, %80
br i1 %85, label %86, label %155
86: ; preds = %76
%87 = fadd double %78, 1.000000e+00
%88 = fadd double %77, -1.000000e+00
%89 = fcmp ogt double %88, 5.000000e-01
br i1 %89, label %76, label %155
90: ; preds = %17, %107
%91 = phi double [ %108, %107 ], [ 0.000000e+00, %17 ]
%92 = phi double [ %101, %107 ], [ 0x3ABFFFFFFFFFFC7B, %17 ]
%93 = phi <2 x double> [ %98, %107 ], [ %9, %17 ]
%94 = extractelement <2 x double> %93, i64 0
%95 = fcmp ogt double %94, 5.000000e-01
br i1 %95, label %96, label %110
96: ; preds = %90
%97 = fmul double %11, %94
%98 = fadd <2 x double> %93, <double -1.000000e+00, double 1.000000e+00>
%99 = extractelement <2 x double> %98, i64 1
%100 = fdiv double %97, %99
%101 = fmul double %92, %100
%102 = fcmp olt double %101, 0x3AC0000000000000
br i1 %102, label %103, label %107
103: ; preds = %96
%104 = fcmp ogt double %101, 0x3ABFFFFFFFFFF8F7
%105 = select i1 %104, i32 2, i32 1
%106 = fadd double %101, 0x3ABFFFFFFFFFFC7B
br label %110
107: ; preds = %96
%108 = fadd double %91, %101
%109 = fcmp oeq double %108, %20
br i1 %109, label %168, label %90
110: ; preds = %90, %103
%111 = phi double [ %106, %103 ], [ 0x3ABFFFFFFFFFFC7B, %90 ]
%112 = phi double [ %101, %103 ], [ %92, %90 ]
%113 = phi i32 [ %105, %103 ], [ 1, %90 ]
%114 = phi <2 x double> [ %98, %103 ], [ %93, %90 ]
%115 = fcmp une double %91, 0.000000e+00
%116 = fcmp une double %3, 0.000000e+00
%117 = or i1 %116, %115
br i1 %117, label %118, label %168
118: ; preds = %110
%119 = extractelement <2 x double> %114, i64 0
%120 = fcmp ogt double %119, 5.000000e-01
br i1 %120, label %121, label %136
121: ; preds = %118, %121
%122 = phi double [ %131, %121 ], [ %111, %118 ]
%123 = phi double [ %130, %121 ], [ %112, %118 ]
%124 = phi <2 x double> [ %127, %121 ], [ %114, %118 ]
%125 = extractelement <2 x double> %124, i64 0
%126 = fmul double %11, %125
%127 = fadd <2 x double> %124, <double -1.000000e+00, double 1.000000e+00>
%128 = extractelement <2 x double> %127, i64 1
%129 = fdiv double %126, %128
%130 = fmul double %123, %129
%131 = fadd double %122, %130
%132 = fcmp ugt double %131, %122
%133 = extractelement <2 x double> %127, i64 0
%134 = fcmp ogt double %133, 5.000000e-01
%135 = select i1 %132, i1 %134, i1 false
br i1 %135, label %121, label %136
136: ; preds = %121, %118
%137 = phi double [ %111, %118 ], [ %131, %121 ]
%138 = extractelement <2 x i32> %8, i64 1
%139 = icmp sgt i32 %138, 0
br i1 %139, label %140, label %155
140: ; preds = %136, %140
%141 = phi double [ %149, %140 ], [ 0x3ABFFFFFFFFFFC7B, %136 ]
%142 = phi double [ %150, %140 ], [ %137, %136 ]
%143 = phi <2 x double> [ %146, %140 ], [ %9, %136 ]
%144 = extractelement <2 x double> %143, i64 1
%145 = fmul double %12, %144
%146 = fadd <2 x double> %143, <double 1.000000e+00, double -1.000000e+00>
%147 = extractelement <2 x double> %146, i64 0
%148 = fdiv double %145, %147
%149 = fmul double %141, %148
%150 = fadd double %142, %149
%151 = fcmp ugt double %150, %142
%152 = extractelement <2 x double> %146, i64 1
%153 = fcmp ogt double %152, 5.000000e-01
%154 = select i1 %151, i1 %153, i1 false
br i1 %154, label %140, label %155
155: ; preds = %140, %76, %86, %136, %67
%156 = phi double [ %68, %67 ], [ %137, %136 ], [ %84, %86 ], [ %84, %76 ], [ %150, %140 ]
%157 = phi double [ %22, %67 ], [ %91, %136 ], [ %22, %86 ], [ %22, %76 ], [ %91, %140 ]
%158 = phi i32 [ %44, %67 ], [ %113, %136 ], [ %44, %86 ], [ %44, %76 ], [ %113, %140 ]
%159 = fcmp une double %3, 0.000000e+00
br i1 %159, label %163, label %160
160: ; preds = %155
%161 = fadd double %156, %157
%162 = fdiv double %156, %161
br label %168
163: ; preds = %155
%164 = sitofp i32 %158 to double
%165 = tail call double @llvm.fmuladd.f64(double %164, double 0xBAAFFFFFFFFFFC7B, double %156)
%166 = fadd double %156, %157
%167 = fdiv double %165, %166
br label %168
168: ; preds = %107, %38, %110, %41, %163, %160, %14
%169 = phi double [ %167, %163 ], [ %162, %160 ], [ %16, %14 ], [ 1.000000e+00, %41 ], [ 1.000000e+00, %110 ], [ 0.000000e+00, %38 ], [ 0.000000e+00, %107 ]
ret double %169
}