#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 */

/* Variables and functions */
double aint(double *);
double calerf(double x, int jint) {
  static double four = 4.;
  static double xneg = -26.628;
  static double xsmall = 1.11e-16;
  static double xbig = 26.543;
  static double xhuge = 6.71e7;
  static double xmax = 2.53e307;
  static double a[5] = {3.1611237438705656, 113.864154151050156,
                        377.485237685302021, 3209.37758913846947,
                        .185777706184603153};
  static double b[4] = {23.6012909523441209, 244.024637934444173,
                        1282.61652607737228, 2844.23683343917062};
  static double c__[9] = {
      .564188496988670089, 8.88314979438837594, 66.1191906371416295,
      298.635138197400131, 881.95222124176909,  1712.04761263407058,
      2051.07837782607147, 1230.33935479799725, 2.15311535474403846e-8};
  static double d__[8] = {15.7449261107098347, 117.693950891312499,
                          537.181101862009858, 1621.38957456669019,
                          3290.79923573345963, 4362.61909014324716,
                          3439.36767414372164, 1230.33935480374942};
  static double p[6] = {.305326634961232344,    .360344899949804439,
                        .125781726111229246,    .0160837851487422766,
                        6.58749161529837803e-4, .0163153871373020978};
  static double one = 1.;
  static double q[5] = {2.56852019228982242, 1.87295284992346047,
                        .527905102951428412, .0605183413124413191,
                        .00233520497626869185};
  static double half = .5;
  static double two = 2.;
  static double zero = 0.;
  static double sqrpi = .56418958354775628695;
  static double thresh = .46875;
  static double sixten = 16.;
  static double xinf = 1.79e308;
  double d__1;
  double exp();
  static double xden, xnum;
  static int i__;
  static double result, y, del, ysq;
  y = ((x) >= 0 ? (x) : -(x));
  if (y <= thresh) {
    ysq = zero;
    if (y > xsmall) {
      ysq = y * y;
    }
    xnum = a[4] * ysq;
    xden = ysq;
    for (i__ = 1; i__ <= 3; ++i__) {
      xnum = (xnum + a[i__ - 1]) * ysq;
      xden = (xden + b[i__ - 1]) * ysq;
    }
    result = x * (xnum + a[3]) / (xden + b[3]);
    if (jint != 0) {
      result = one - result;
    }
    if (jint == 2) {
      result = exp(ysq) * result;
    }
    goto L800;
  } else if (y <= four) {
    xnum = c__[8] * y;
    xden = y;
    for (i__ = 1; i__ <= 7; ++i__) {
      xnum = (xnum + c__[i__ - 1]) * y;
      xden = (xden + d__[i__ - 1]) * y;
    }
    result = (xnum + c__[7]) / (xden + d__[7]);
    if (jint != 2) {
      d__1 = y * sixten;
      ysq = aint(&d__1) / sixten;
      del = (y - ysq) * (y + ysq);
      result = exp(-ysq * ysq) * exp(-del) * result;
    }
  } else {
    result = zero;
    if (y >= xbig) {
      if (jint != 2 || y >= xmax) {
        goto L300;
      }
      if (y >= xhuge) {
        result = sqrpi / y;
        goto L300;
      }
    }
    ysq = one / (y * y);
    xnum = p[5] * ysq;
    xden = ysq;
    for (i__ = 1; i__ <= 4; ++i__) {
      xnum = (xnum + p[i__ - 1]) * ysq;
      xden = (xden + q[i__ - 1]) * ysq;
    }
    result = ysq * (xnum + p[4]) / (xden + q[4]);
    result = (sqrpi - result) / y;
    if (jint != 2) {
      d__1 = y * sixten;
      ysq = aint(&d__1) / sixten;
      del = (y - ysq) * (y + ysq);
      result = exp(-ysq * ysq) * exp(-del) * result;
    }
  }
L300:
  if (jint == 0) {
    result = half - result + half;
    if (x < zero) {
      result = -(result);
    }
  } else if (jint == 1) {
    if (x < zero) {
      result = two - result;
    }
  } else {
    if (x < zero) {
      if (x < xneg) {
        result = xinf;
      } else {
        d__1 = x * sixten;
        ysq = aint(&d__1) / sixten;
        del = (x - ysq) * (x + ysq);
        y = exp(ysq * ysq) * exp(del);
        result = y + y - result;
      }
    }
  }
L800:
  return (result);
}


x86 assembly (clang, -O0):
<calerf>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
movsd  %xmm0,-0x8(%rbp)
mov    %edi,-0xc(%rbp)
movsd  -0x8(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1151 <calerf+0x31>
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
jmp    1172 <calerf+0x52>
movsd  -0x8(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,0x3099(%rip)
movsd  0x3091(%rip),%xmm1
movsd  0x3041(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     130d <calerf+0x1ed>
movsd  0x304f(%rip),%xmm0
movsd  %xmm0,0x307f(%rip)
movsd  0x3067(%rip),%xmm0
ucomisd 0x2e97(%rip),%xmm0
jbe    11d7 <calerf+0xb7>
movsd  0x3051(%rip),%xmm0
mulsd  0x3049(%rip),%xmm0
movsd  %xmm0,0x3051(%rip)
movsd  0x2eb1(%rip),%xmm0
mulsd  0x3041(%rip),%xmm0
movsd  %xmm0,0x3011(%rip)
movsd  0x3031(%rip),%xmm0
movsd  %xmm0,0x2ff9(%rip)
movl   $0x1,0x2fff(%rip)
cmpl   $0x3,0x2ff8(%rip)
jg     128a <calerf+0x16a>
movsd  0x2fe2(%rip),%xmm0
mov    0x2fe4(%rip),%eax
sub    $0x1,%eax
movslq %eax,%rcx
lea    0x2e3f(%rip),%rax
addsd  (%rax,%rcx,8),%xmm0
mulsd  0x2fea(%rip),%xmm0
movsd  %xmm0,0x2fba(%rip)
movsd  0x2faa(%rip),%xmm0
mov    0x2fb4(%rip),%eax
sub    $0x1,%eax
movslq %eax,%rcx
lea    0x2e3f(%rip),%rax
addsd  (%rax,%rcx,8),%xmm0
mulsd  0x2fba(%rip),%xmm0
movsd  %xmm0,0x2f82(%rip)
mov    0x2f8c(%rip),%eax
add    $0x1,%eax
mov    %eax,0x2f83(%rip)
jmp    1209 <calerf+0xe9>
movsd  -0x8(%rbp),%xmm0
movsd  0x2f69(%rip),%xmm1
addsd  0x2de9(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x2f4d(%rip),%xmm1
addsd  0x2e05(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,0x2f51(%rip)
cmpl   $0x0,-0xc(%rbp)
je     12e1 <calerf+0x1c1>
movsd  0x2eaf(%rip),%xmm0
subsd  0x2f37(%rip),%xmm0
movsd  %xmm0,0x2f2f(%rip)
cmpl   $0x2,-0xc(%rbp)
jne    1308 <calerf+0x1e8>
movsd  0x2f35(%rip),%xmm0
call   1030 <exp@plt>
mulsd  0x2f10(%rip),%xmm0
movsd  %xmm0,0x2f08(%rip)
jmp    1924 <calerf+0x804>
movsd  0x2f03(%rip),%xmm1
movsd  0x2d23(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     14e0 <calerf+0x3c0>
movsd  0x2dd1(%rip),%xmm0
mulsd  0x2ee1(%rip),%xmm0
movsd  %xmm0,0x2ec1(%rip)
movsd  0x2ed1(%rip),%xmm0
movsd  %xmm0,0x2ea9(%rip)
movl   $0x1,0x2eaf(%rip)
cmpl   $0x7,0x2ea8(%rip)
jg     13da <calerf+0x2ba>
movsd  0x2e92(%rip),%xmm0
mov    0x2e94(%rip),%eax
sub    $0x1,%eax
movslq %eax,%rcx
lea    0x2d3f(%rip),%rax
addsd  (%rax,%rcx,8),%xmm0
mulsd  0x2e8a(%rip),%xmm0
movsd  %xmm0,0x2e6a(%rip)
movsd  0x2e5a(%rip),%xmm0
mov    0x2e64(%rip),%eax
sub    $0x1,%eax
movslq %eax,%rcx
lea    0x2d5f(%rip),%rax
addsd  (%rax,%rcx,8),%xmm0
mulsd  0x2e5a(%rip),%xmm0
movsd  %xmm0,0x2e32(%rip)
mov    0x2e3c(%rip),%eax
add    $0x1,%eax
mov    %eax,0x2e33(%rip)
jmp    1359 <calerf+0x239>
movsd  0x2e1e(%rip),%xmm0
addsd  0x2d0e(%rip),%xmm0
movsd  0x2e06(%rip),%xmm1
addsd  0x2d4e(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,0x2e0a(%rip)
cmpl   $0x2,-0xc(%rbp)
je     14db <calerf+0x3bb>
movsd  0x2e00(%rip),%xmm0
mulsd  0x2db8(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
lea    -0x18(%rbp),%rdi
call   1040 <aint@plt>
divsd  0x2da2(%rip),%xmm0
movsd  %xmm0,0x2dea(%rip)
movsd  0x2dd2(%rip),%xmm0
subsd  0x2dda(%rip),%xmm0
movsd  0x2dc2(%rip),%xmm1
addsd  0x2dca(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x2db6(%rip)
movsd  0x2db6(%rip),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  0x2d97(%rip),%xmm0
call   1030 <exp@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  0x2d7d(%rip),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1030 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x28(%rbp),%xmm0
mulsd  %xmm1,%xmm0
mulsd  0x2d3d(%rip),%xmm0
movsd  %xmm0,0x2d35(%rip)
jmp    176c <calerf+0x64c>
movsd  0x2d08(%rip),%xmm0
movsd  %xmm0,0x2d20(%rip)
movsd  0x2d20(%rip),%xmm0
ucomisd 0x2b58(%rip),%xmm0
jb     1563 <calerf+0x443>
cmpl   $0x2,-0xc(%rbp)
jne    1526 <calerf+0x406>
movsd  0x2d00(%rip),%xmm0
ucomisd 0x2b48(%rip),%xmm0
jb     152b <calerf+0x40b>
jmp    1776 <calerf+0x656>
movsd  0x2ce5(%rip),%xmm0
ucomisd 0x2b25(%rip),%xmm0
jb     155e <calerf+0x43e>
movsd  0x2c7f(%rip),%xmm0
divsd  0x2cc7(%rip),%xmm0
movsd  %xmm0,0x2cb7(%rip)
jmp    1776 <calerf+0x656>
jmp    1563 <calerf+0x443>
movsd  0x2c15(%rip),%xmm0
movsd  0x2ca5(%rip),%xmm1
mulsd  0x2c9d(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,0x2ca1(%rip)
movsd  0x2be9(%rip),%xmm0
mulsd  0x2c91(%rip),%xmm0
movsd  %xmm0,0x2c61(%rip)
movsd  0x2c81(%rip),%xmm0
movsd  %xmm0,0x2c49(%rip)
movl   $0x1,0x2c4f(%rip)
cmpl   $0x4,0x2c48(%rip)
jg     163a <calerf+0x51a>
movsd  0x2c32(%rip),%xmm0
mov    0x2c34(%rip),%eax
sub    $0x1,%eax
movslq %eax,%rcx
lea    0x2b6f(%rip),%rax
addsd  (%rax,%rcx,8),%xmm0
mulsd  0x2c3a(%rip),%xmm0
movsd  %xmm0,0x2c0a(%rip)
movsd  0x2bfa(%rip),%xmm0
mov    0x2c04(%rip),%eax
sub    $0x1,%eax
movslq %eax,%rcx
lea    0x2b7f(%rip),%rax
addsd  (%rax,%rcx,8),%xmm0
mulsd  0x2c0a(%rip),%xmm0
movsd  %xmm0,0x2bd2(%rip)
mov    0x2bdc(%rip),%eax
add    $0x1,%eax
mov    %eax,0x2bd3(%rip)
jmp    15b9 <calerf+0x499>
movsd  0x2be6(%rip),%xmm0
movsd  0x2bb6(%rip),%xmm1
addsd  0x2b1e(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x2b9a(%rip),%xmm1
addsd  0x2b4a(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,0x2b9e(%rip)
movsd  0x2b4e(%rip),%xmm0
subsd  0x2b8e(%rip),%xmm0
divsd  0x2b8e(%rip),%xmm0
movsd  %xmm0,0x2b7e(%rip)
cmpl   $0x2,-0xc(%rbp)
je     1767 <calerf+0x647>
movsd  0x2b74(%rip),%xmm0
mulsd  0x2b2c(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
lea    -0x18(%rbp),%rdi
call   1040 <aint@plt>
divsd  0x2b16(%rip),%xmm0
movsd  %xmm0,0x2b5e(%rip)
movsd  0x2b46(%rip),%xmm0
subsd  0x2b4e(%rip),%xmm0
movsd  0x2b36(%rip),%xmm1
addsd  0x2b3e(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x2b2a(%rip)
movsd  0x2b2a(%rip),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  0x2b0b(%rip),%xmm0
call   1030 <exp@plt>
movsd  %xmm0,-0x30(%rbp)
movsd  0x2af1(%rip),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1030 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x30(%rbp),%xmm0
mulsd  %xmm1,%xmm0
mulsd  0x2ab1(%rip),%xmm0
movsd  %xmm0,0x2aa9(%rip)
jmp    176c <calerf+0x64c>
jmp    1771 <calerf+0x651>
jmp    1776 <calerf+0x656>
cmpl   $0x0,-0xc(%rbp)
jne    17e3 <calerf+0x6c3>
movsd  0x2a30(%rip),%xmm0
subsd  0x2a80(%rip),%xmm0
addsd  0x2a20(%rip),%xmm0
movsd  %xmm0,0x2a70(%rip)
movsd  -0x8(%rbp),%xmm1
movsd  0x2a43(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    17de <calerf+0x6be>
movsd  0x2a51(%rip),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,0x2a32(%rip)
jmp    191f <calerf+0x7ff>
cmpl   $0x1,-0xc(%rbp)
jne    1821 <calerf+0x701>
movsd  -0x8(%rbp),%xmm1
movsd  0x29f6(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    181c <calerf+0x6fc>
movsd  0x29b4(%rip),%xmm0
subsd  0x29fc(%rip),%xmm0
movsd  %xmm0,0x29f4(%rip)
jmp    191a <calerf+0x7fa>
movsd  -0x8(%rbp),%xmm1
movsd  0x29c2(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1915 <calerf+0x7f5>
movsd  -0x8(%rbp),%xmm1
movsd  0x2803(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1864 <calerf+0x744>
movsd  0x2989(%rip),%xmm0
movsd  %xmm0,0x29b1(%rip)
jmp    1910 <calerf+0x7f0>
movsd  -0x8(%rbp),%xmm0
mulsd  0x2967(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
lea    -0x18(%rbp),%rdi
call   1040 <aint@plt>
divsd  0x2951(%rip),%xmm0
movsd  %xmm0,0x2999(%rip)
movsd  -0x8(%rbp),%xmm0
subsd  0x298c(%rip),%xmm0
movsd  -0x8(%rbp),%xmm1
addsd  0x297f(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x296b(%rip)
movsd  0x296b(%rip),%xmm0
mulsd  0x2963(%rip),%xmm0
call   1030 <exp@plt>
movsd  %xmm0,-0x38(%rbp)
movsd  0x2949(%rip),%xmm0
call   1030 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x38(%rbp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x2928(%rip)
movsd  0x2920(%rip),%xmm0
addsd  0x2918(%rip),%xmm0
subsd  0x2908(%rip),%xmm0
movsd  %xmm0,0x2900(%rip)
jmp    1915 <calerf+0x7f5>
jmp    191a <calerf+0x7fa>
jmp    191f <calerf+0x7ff>
jmp    1924 <calerf+0x804>
movsd  0x28e4(%rip),%xmm0
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<calerf>:
push   %rbx
sub    $0x30,%rsp
mov    %edi,%ebx
movapd %xmm0,%xmm4
movapd 0xecd(%rip),%xmm1
xorpd  %xmm0,%xmm1
xorpd  %xmm0,%xmm0
cmplesd %xmm4,%xmm0
movapd %xmm0,%xmm2
andpd  %xmm4,%xmm2
andnpd %xmm1,%xmm0
orpd   %xmm2,%xmm0
movlpd %xmm0,0x2ee8(%rip)
movsd  0xfa0(%rip),%xmm1
ucomisd %xmm0,%xmm1
jae    1222 <calerf+0x102>
movsd  0xfbe(%rip),%xmm1
ucomisd %xmm0,%xmm1
jae    12d6 <calerf+0x1b6>
movq   $0x0,0x2eb1(%rip)
ucomisd 0xfc1(%rip),%xmm0
jae    144d <calerf+0x32d>
movapd %xmm0,%xmm1
mulsd  %xmm0,%xmm1
movsd  0xf83(%rip),%xmm3
divsd  %xmm1,%xmm3
movsd  0xfbf(%rip),%xmm2
mulsd  %xmm3,%xmm2
addsd  0xfbb(%rip),%xmm2
mulsd  %xmm3,%xmm2
unpcklpd %xmm3,%xmm2
addpd  0xef3(%rip),%xmm2
unpcklpd %xmm3,%xmm3
mulpd  %xmm3,%xmm2
addpd  0xef3(%rip),%xmm2
mulpd  %xmm3,%xmm2
addpd  0xef7(%rip),%xmm2
mulpd  %xmm3,%xmm2
addpd  0xefb(%rip),%xmm2
mulpd  %xmm3,%xmm2
movapd %xmm2,%xmm1
unpckhpd %xmm2,%xmm1
addsd  0xf77(%rip),%xmm1
divsd  %xmm1,%xmm2
movsd  0xf53(%rip),%xmm1
subsd  %xmm2,%xmm1
divsd  %xmm0,%xmm1
jmp    1356 <calerf+0x236>
movsd  0xede(%rip),%xmm1
cmpltsd %xmm0,%xmm1
mulsd  %xmm0,%xmm0
andpd  %xmm1,%xmm0
movsd  0xed1(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xecd(%rip),%xmm1
mulsd  %xmm0,%xmm1
unpcklpd %xmm0,%xmm1
addpd  0xdb5(%rip),%xmm1
movapd %xmm0,%xmm2
unpcklpd %xmm0,%xmm2
mulpd  %xmm2,%xmm1
addpd  0xdb1(%rip),%xmm1
mulpd  %xmm2,%xmm1
addpd  0xdb5(%rip),%xmm1
unpcklpd %xmm0,%xmm4
mulpd  %xmm1,%xmm4
movapd %xmm4,%xmm2
unpckhpd %xmm4,%xmm2
addsd  0xe8d(%rip),%xmm2
movapd %xmm4,%xmm1
divsd  %xmm2,%xmm1
test   %ebx,%ebx
je     12af <calerf+0x18f>
movsd  0xe81(%rip),%xmm2
subsd  %xmm1,%xmm2
movapd %xmm2,%xmm1
movsd  %xmm1,0x2d81(%rip)
cmp    $0x2,%ebx
jne    1558 <calerf+0x438>
call   1030 <exp@plt>
movapd %xmm0,%xmm1
mulsd  0x2d67(%rip),%xmm1
jmp    1550 <calerf+0x430>
movsd  0xe5a(%rip),%xmm1
mulsd  %xmm0,%xmm1
unpcklpd %xmm0,%xmm1
addpd  0xd52(%rip),%xmm1
movapd %xmm0,%xmm2
unpcklpd %xmm0,%xmm2
mulpd  %xmm2,%xmm1
addpd  0xd4e(%rip),%xmm1
mulpd  %xmm2,%xmm1
addpd  0xd52(%rip),%xmm1
mulpd  %xmm2,%xmm1
addpd  0xd56(%rip),%xmm1
mulpd  %xmm2,%xmm1
addpd  0xd5a(%rip),%xmm1
mulpd  %xmm2,%xmm1
addpd  0xd5e(%rip),%xmm1
mulpd  %xmm2,%xmm1
addpd  0xd62(%rip),%xmm1
mulpd  %xmm2,%xmm1
addpd  0xd66(%rip),%xmm1
movapd %xmm1,%xmm2
unpckhpd %xmm1,%xmm2
divsd  %xmm2,%xmm1
movsd  %xmm1,0x2cda(%rip)
cmp    $0x2,%ebx
je     1482 <calerf+0x362>
movapd %xmm4,0x10(%rsp)
movsd  0xdcb(%rip),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%rsp)
lea    0x8(%rsp),%rdi
call   1040 <aint@plt>
mulsd  0xdb7(%rip),%xmm0
movsd  0x2ca7(%rip),%xmm1
movapd %xmm0,%xmm2
addsd  %xmm1,%xmm2
subsd  %xmm0,%xmm1
mulsd  %xmm2,%xmm1
movsd  %xmm1,0x2c97(%rip)
movapd %xmm0,%xmm1
xorpd  0xc43(%rip),%xmm1
mulsd  %xmm0,%xmm1
movapd %xmm1,%xmm0
call   1030 <exp@plt>
movsd  %xmm0,0x28(%rsp)
movsd  0x2c70(%rip),%xmm0
xorpd  0xc20(%rip),%xmm0
call   1030 <exp@plt>
movapd %xmm0,%xmm1
mulsd  0x28(%rsp),%xmm1
mulsd  0x2c41(%rip),%xmm1
movsd  %xmm1,0x2c39(%rip)
movapd 0x10(%rsp),%xmm4
cmp    $0x1,%ebx
je     14ab <calerf+0x38b>
test   %ebx,%ebx
jne    1482 <calerf+0x362>
movsd  0xd76(%rip),%xmm0
movapd %xmm0,%xmm2
subsd  %xmm1,%xmm2
movapd %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x2c06(%rip)
xorpd  %xmm0,%xmm0
ucomisd %xmm4,%xmm0
jbe    1558 <calerf+0x438>
xorpd  0xbb8(%rip),%xmm1
jmp    1550 <calerf+0x430>
xorpd  %xmm1,%xmm1
cmp    $0x2,%ebx
jne    1405 <calerf+0x2e5>
ucomisd 0xcfa(%rip),%xmm0
jae    1405 <calerf+0x2e5>
ucomisd 0xcf8(%rip),%xmm0
jb     1195 <calerf+0x75>
movsd  0xcf2(%rip),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x2bb6(%rip)
xorpd  %xmm0,%xmm0
ucomisd %xmm4,%xmm0
jbe    1558 <calerf+0x438>
movsd  0xd08(%rip),%xmm0
ucomisd %xmm4,%xmm0
jbe    14ce <calerf+0x3ae>
movsd  0xcf2(%rip),%xmm1
jmp    1550 <calerf+0x430>
xorpd  %xmm0,%xmm0
ucomisd %xmm4,%xmm0
jbe    1558 <calerf+0x438>
movsd  0xcc7(%rip),%xmm0
subsd  %xmm1,%xmm0
movapd %xmm0,%xmm1
jmp    1550 <calerf+0x430>
movsd  0xc6a(%rip),%xmm0
mulsd  %xmm4,%xmm0
movsd  %xmm0,0x8(%rsp)
lea    0x8(%rsp),%rdi
movapd %xmm4,0x10(%rsp)
call   1040 <aint@plt>
mulsd  0xc50(%rip),%xmm0
movapd %xmm0,%xmm1
movapd 0x10(%rsp),%xmm2
addsd  %xmm2,%xmm1
subsd  %xmm0,%xmm2
mulsd  %xmm1,%xmm2
movsd  %xmm2,0x2b32(%rip)
mulsd  %xmm0,%xmm0
call   1030 <exp@plt>
movsd  %xmm0,0x10(%rsp)
movsd  0x2b1b(%rip),%xmm0
call   1030 <exp@plt>
movapd %xmm0,%xmm1
mulsd  0x10(%rsp),%xmm1
movsd  %xmm1,0x2afc(%rip)
addsd  %xmm1,%xmm1
subsd  0x2ae8(%rip),%xmm1
movsd  %xmm1,0x2ae0(%rip)
movapd %xmm1,%xmm0
add    $0x30,%rsp
pop    %rbx
ret

LLVM IR (-O0):
@calerf.four = internal global double 4.000000e+00
@calerf.xneg = internal global double -2.662800e+01
@calerf.xsmall = internal global double 1.110000e-16
@calerf.xbig = internal global double 2.654300e+01
@calerf.xhuge = internal global double 6.710000e+07
@calerf.xmax = internal global double 2.530000e+307
@calerf.a = internal global [5 x double] [double 0x400949FB3ED443E9, double 0x405C774E4D365DA3, double 0x407797C38897528B, double 0x40A912C1535D121A, double 0x3FC7C7905A31C322]
@calerf.b = internal global [4 x double] [double 0x403799EE342FB2DE, double 0x406E80C9D57E55B8, double 0x40940A77529CADC8, double 0x40A63879423B87AD]
@calerf.c__ = internal global [9 x double] [double 0x3FE20DD508EB103E, double 0x4021C42C35B8BC02, double 0x405087A0D1C420D0, double 0x4072AA2986ABA462, double 0x408B8F9E262B9FA3, double 0x409AC030C15DC8D7, double 0x40A0062821236F6B, double 0x4093395B7FD2FC8E, double 0x3E571E703C5F5815]
@calerf.d__ = internal global [8 x double] [double 0x402F7D66F486DED5, double 0x405D6C69B0FFCDE7, double 0x4080C972E588749E, double 0x4099558EECA29D27, double 0x40A9B599356D1202, double 0x40B10A9E7CB10E86, double 0x40AADEBC3FC90DBD, double 0x4093395B7FD35F61]
@calerf.p = internal global [6 x double] [double 0x3FD38A78B9F065F6, double 0x3FD70FE40E2425B8, double 0x3FC0199D980A842F, double 0x3F9078448CD6C5B5, double 0x3F4595FD0D71E33C, double 0x3F90B4FB18B485C7]
@calerf.one = internal global double 1.000000e+00
@calerf.q = internal global [5 x double] [double 0x40048C54508800DB, double 0x3FFDF79D6855F0AD, double 0x3FE0E4993E122C39, double 0x3FAEFC42917D7DE7, double 0x3F632147A014BAD1]
@calerf.half = internal global double 5.000000e-01
@calerf.two = internal global double 2.000000e+00
@calerf.zero = internal global double 0.000000e+00
@calerf.sqrpi = internal global double 0x3FE20DD750429B6D
@calerf.thresh = internal global double 4.687500e-01
@calerf.sixten = internal global double 1.600000e+01
@calerf.xinf = internal global double 1.790000e+308
@calerf.xden = internal global double 0.000000e+00
@calerf.xnum = internal global double 0.000000e+00
@calerf.i__ = internal global i32 0
@calerf.result = internal global double 0.000000e+00
@calerf.y = internal global double 0.000000e+00
@calerf.del = internal global double 0.000000e+00
@calerf.ysq = internal global double 0.000000e+00
define double @calerf(double %0, i32 %1) {
%3 = alloca double
%4 = alloca i32
%5 = alloca double
store double %0, double* %3
store i32 %1, i32* %4
%6 = load double, double* %3
%7 = fcmp oge double %6, 0.000000e+00
br i1 %7, label %8, label %10
8: ; preds = %2
%9 = load double, double* %3
br label %13
10: ; preds = %2
%11 = load double, double* %3
%12 = fneg double %11
br label %13
13: ; preds = %10, %8
%14 = phi double [ %9, %8 ], [ %12, %10 ]
store double %14, double* @calerf.y
%15 = load double, double* @calerf.y
%16 = load double, double* @calerf.thresh
%17 = fcmp ole double %15, %16
br i1 %17, label %18, label %82
18: ; preds = %13
%19 = load double, double* @calerf.zero
store double %19, double* @calerf.ysq
%20 = load double, double* @calerf.y
%21 = load double, double* @calerf.xsmall
%22 = fcmp ogt double %20, %21
br i1 %22, label %23, label %27
23: ; preds = %18
%24 = load double, double* @calerf.y
%25 = load double, double* @calerf.y
%26 = fmul double %24, %25
store double %26, double* @calerf.ysq
br label %27
27: ; preds = %23, %18
%28 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @calerf.a, i64 0, i64 4)
%29 = load double, double* @calerf.ysq
%30 = fmul double %28, %29
store double %30, double* @calerf.xnum
%31 = load double, double* @calerf.ysq
store double %31, double* @calerf.xden
store i32 1, i32* @calerf.i__
br label %32
32: ; preds = %54, %27
%33 = load i32, i32* @calerf.i__
%34 = icmp sle i32 %33, 3
br i1 %34, label %35, label %57
35: ; preds = %32
%36 = load double, double* @calerf.xnum
%37 = load i32, i32* @calerf.i__
%38 = sub nsw i32 %37, 1
%39 = sext i32 %38 to i64
%40 = getelementptr inbounds [5 x double], [5 x double]* @calerf.a, i64 0, i64 %39
%41 = load double, double* %40
%42 = fadd double %36, %41
%43 = load double, double* @calerf.ysq
%44 = fmul double %42, %43
store double %44, double* @calerf.xnum
%45 = load double, double* @calerf.xden
%46 = load i32, i32* @calerf.i__
%47 = sub nsw i32 %46, 1
%48 = sext i32 %47 to i64
%49 = getelementptr inbounds [4 x double], [4 x double]* @calerf.b, i64 0, i64 %48
%50 = load double, double* %49
%51 = fadd double %45, %50
%52 = load double, double* @calerf.ysq
%53 = fmul double %51, %52
store double %53, double* @calerf.xden
br label %54
54: ; preds = %35
%55 = load i32, i32* @calerf.i__
%56 = add nsw i32 %55, 1
store i32 %56, i32* @calerf.i__
br label %32
57: ; preds = %32
%58 = load double, double* %3
%59 = load double, double* @calerf.xnum
%60 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @calerf.a, i64 0, i64 3)
%61 = fadd double %59, %60
%62 = fmul double %58, %61
%63 = load double, double* @calerf.xden
%64 = load double, double* getelementptr inbounds ([4 x double], [4 x double]* @calerf.b, i64 0, i64 3)
%65 = fadd double %63, %64
%66 = fdiv double %62, %65
store double %66, double* @calerf.result
%67 = load i32, i32* %4
%68 = icmp ne i32 %67, 0
br i1 %68, label %69, label %73
69: ; preds = %57
%70 = load double, double* @calerf.one
%71 = load double, double* @calerf.result
%72 = fsub double %70, %71
store double %72, double* @calerf.result
br label %73
73: ; preds = %69, %57
%74 = load i32, i32* %4
%75 = icmp eq i32 %74, 2
br i1 %75, label %76, label %81
76: ; preds = %73
%77 = load double, double* @calerf.ysq
%78 = call double @exp(double %77)
%79 = load double, double* @calerf.result
%80 = fmul double %78, %79
store double %80, double* @calerf.result
br label %81
81: ; preds = %76, %73
br label %322
82: ; preds = %13
%83 = load double, double* @calerf.y
%84 = load double, double* @calerf.four
%85 = fcmp ole double %83, %84
br i1 %85, label %86, label %152
86: ; preds = %82
%87 = load double, double* getelementptr inbounds ([9 x double], [9 x double]* @calerf.c__, i64 0, i64 8)
%88 = load double, double* @calerf.y
%89 = fmul double %87, %88
store double %89, double* @calerf.xnum
%90 = load double, double* @calerf.y
store double %90, double* @calerf.xden
store i32 1, i32* @calerf.i__
br label %91
91: ; preds = %113, %86
%92 = load i32, i32* @calerf.i__
%93 = icmp sle i32 %92, 7
br i1 %93, label %94, label %116
94: ; preds = %91
%95 = load double, double* @calerf.xnum
%96 = load i32, i32* @calerf.i__
%97 = sub nsw i32 %96, 1
%98 = sext i32 %97 to i64
%99 = getelementptr inbounds [9 x double], [9 x double]* @calerf.c__, i64 0, i64 %98
%100 = load double, double* %99
%101 = fadd double %95, %100
%102 = load double, double* @calerf.y
%103 = fmul double %101, %102
store double %103, double* @calerf.xnum
%104 = load double, double* @calerf.xden
%105 = load i32, i32* @calerf.i__
%106 = sub nsw i32 %105, 1
%107 = sext i32 %106 to i64
%108 = getelementptr inbounds [8 x double], [8 x double]* @calerf.d__, i64 0, i64 %107
%109 = load double, double* %108
%110 = fadd double %104, %109
%111 = load double, double* @calerf.y
%112 = fmul double %110, %111
store double %112, double* @calerf.xden
br label %113
113: ; preds = %94
%114 = load i32, i32* @calerf.i__
%115 = add nsw i32 %114, 1
store i32 %115, i32* @calerf.i__
br label %91
116: ; preds = %91
%117 = load double, double* @calerf.xnum
%118 = load double, double* getelementptr inbounds ([9 x double], [9 x double]* @calerf.c__, i64 0, i64 7)
%119 = fadd double %117, %118
%120 = load double, double* @calerf.xden
%121 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @calerf.d__, i64 0, i64 7)
%122 = fadd double %120, %121
%123 = fdiv double %119, %122
store double %123, double* @calerf.result
%124 = load i32, i32* %4
%125 = icmp ne i32 %124, 2
br i1 %125, label %126, label %151
126: ; preds = %116
%127 = load double, double* @calerf.y
%128 = load double, double* @calerf.sixten
%129 = fmul double %127, %128
store double %129, double* %5
%130 = call double @aint(double* %5)
%131 = load double, double* @calerf.sixten
%132 = fdiv double %130, %131
store double %132, double* @calerf.ysq
%133 = load double, double* @calerf.y
%134 = load double, double* @calerf.ysq
%135 = fsub double %133, %134
%136 = load double, double* @calerf.y
%137 = load double, double* @calerf.ysq
%138 = fadd double %136, %137
%139 = fmul double %135, %138
store double %139, double* @calerf.del
%140 = load double, double* @calerf.ysq
%141 = fneg double %140
%142 = load double, double* @calerf.ysq
%143 = fmul double %141, %142
%144 = call double @exp(double %143)
%145 = load double, double* @calerf.del
%146 = fneg double %145
%147 = call double @exp(double %146)
%148 = fmul double %144, %147
%149 = load double, double* @calerf.result
%150 = fmul double %148, %149
store double %150, double* @calerf.result
br label %151
151: ; preds = %126, %116
br label %252
152: ; preds = %82
%153 = load double, double* @calerf.zero
store double %153, double* @calerf.result
%154 = load double, double* @calerf.y
%155 = load double, double* @calerf.xbig
%156 = fcmp oge double %154, %155
br i1 %156, label %157, label %174
157: ; preds = %152
%158 = load i32, i32* %4
%159 = icmp ne i32 %158, 2
br i1 %159, label %164, label %160
160: ; preds = %157
%161 = load double, double* @calerf.y
%162 = load double, double* @calerf.xmax
%163 = fcmp oge double %161, %162
br i1 %163, label %164, label %165
164: ; preds = %160, %157
br label %254
165: ; preds = %160
%166 = load double, double* @calerf.y
%167 = load double, double* @calerf.xhuge
%168 = fcmp oge double %166, %167
br i1 %168, label %169, label %173
169: ; preds = %165
%170 = load double, double* @calerf.sqrpi
%171 = load double, double* @calerf.y
%172 = fdiv double %170, %171
store double %172, double* @calerf.result
br label %254
173: ; preds = %165
br label %174
174: ; preds = %173, %152
%175 = load double, double* @calerf.one
%176 = load double, double* @calerf.y
%177 = load double, double* @calerf.y
%178 = fmul double %176, %177
%179 = fdiv double %175, %178
store double %179, double* @calerf.ysq
%180 = load double, double* getelementptr inbounds ([6 x double], [6 x double]* @calerf.p, i64 0, i64 5)
%181 = load double, double* @calerf.ysq
%182 = fmul double %180, %181
store double %182, double* @calerf.xnum
%183 = load double, double* @calerf.ysq
store double %183, double* @calerf.xden
store i32 1, i32* @calerf.i__
br label %184
184: ; preds = %206, %174
%185 = load i32, i32* @calerf.i__
%186 = icmp sle i32 %185, 4
br i1 %186, label %187, label %209
187: ; preds = %184
%188 = load double, double* @calerf.xnum
%189 = load i32, i32* @calerf.i__
%190 = sub nsw i32 %189, 1
%191 = sext i32 %190 to i64
%192 = getelementptr inbounds [6 x double], [6 x double]* @calerf.p, i64 0, i64 %191
%193 = load double, double* %192
%194 = fadd double %188, %193
%195 = load double, double* @calerf.ysq
%196 = fmul double %194, %195
store double %196, double* @calerf.xnum
%197 = load double, double* @calerf.xden
%198 = load i32, i32* @calerf.i__
%199 = sub nsw i32 %198, 1
%200 = sext i32 %199 to i64
%201 = getelementptr inbounds [5 x double], [5 x double]* @calerf.q, i64 0, i64 %200
%202 = load double, double* %201
%203 = fadd double %197, %202
%204 = load double, double* @calerf.ysq
%205 = fmul double %203, %204
store double %205, double* @calerf.xden
br label %206
206: ; preds = %187
%207 = load i32, i32* @calerf.i__
%208 = add nsw i32 %207, 1
store i32 %208, i32* @calerf.i__
br label %184
209: ; preds = %184
%210 = load double, double* @calerf.ysq
%211 = load double, double* @calerf.xnum
%212 = load double, double* getelementptr inbounds ([6 x double], [6 x double]* @calerf.p, i64 0, i64 4)
%213 = fadd double %211, %212
%214 = fmul double %210, %213
%215 = load double, double* @calerf.xden
%216 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @calerf.q, i64 0, i64 4)
%217 = fadd double %215, %216
%218 = fdiv double %214, %217
store double %218, double* @calerf.result
%219 = load double, double* @calerf.sqrpi
%220 = load double, double* @calerf.result
%221 = fsub double %219, %220
%222 = load double, double* @calerf.y
%223 = fdiv double %221, %222
store double %223, double* @calerf.result
%224 = load i32, i32* %4
%225 = icmp ne i32 %224, 2
br i1 %225, label %226, label %251
226: ; preds = %209
%227 = load double, double* @calerf.y
%228 = load double, double* @calerf.sixten
%229 = fmul double %227, %228
store double %229, double* %5
%230 = call double @aint(double* %5)
%231 = load double, double* @calerf.sixten
%232 = fdiv double %230, %231
store double %232, double* @calerf.ysq
%233 = load double, double* @calerf.y
%234 = load double, double* @calerf.ysq
%235 = fsub double %233, %234
%236 = load double, double* @calerf.y
%237 = load double, double* @calerf.ysq
%238 = fadd double %236, %237
%239 = fmul double %235, %238
store double %239, double* @calerf.del
%240 = load double, double* @calerf.ysq
%241 = fneg double %240
%242 = load double, double* @calerf.ysq
%243 = fmul double %241, %242
%244 = call double @exp(double %243)
%245 = load double, double* @calerf.del
%246 = fneg double %245
%247 = call double @exp(double %246)
%248 = fmul double %244, %247
%249 = load double, double* @calerf.result
%250 = fmul double %248, %249
store double %250, double* @calerf.result
br label %251
251: ; preds = %226, %209
br label %252
252: ; preds = %251, %151
br label %253
253: ; preds = %252
br label %254
254: ; preds = %253, %169, %164
%255 = load i32, i32* %4
%256 = icmp eq i32 %255, 0
br i1 %256, label %257, label %270
257: ; preds = %254
%258 = load double, double* @calerf.half
%259 = load double, double* @calerf.result
%260 = fsub double %258, %259
%261 = load double, double* @calerf.half
%262 = fadd double %260, %261
store double %262, double* @calerf.result
%263 = load double, double* %3
%264 = load double, double* @calerf.zero
%265 = fcmp olt double %263, %264
br i1 %265, label %266, label %269
266: ; preds = %257
%267 = load double, double* @calerf.result
%268 = fneg double %267
store double %268, double* @calerf.result
br label %269
269: ; preds = %266, %257
br label %321
270: ; preds = %254
%271 = load i32, i32* %4
%272 = icmp eq i32 %271, 1
br i1 %272, label %273, label %282
273: ; preds = %270
%274 = load double, double* %3
%275 = load double, double* @calerf.zero
%276 = fcmp olt double %274, %275
br i1 %276, label %277, label %281
277: ; preds = %273
%278 = load double, double* @calerf.two
%279 = load double, double* @calerf.result
%280 = fsub double %278, %279
store double %280, double* @calerf.result
br label %281
281: ; preds = %277, %273
br label %320
282: ; preds = %270
%283 = load double, double* %3
%284 = load double, double* @calerf.zero
%285 = fcmp olt double %283, %284
br i1 %285, label %286, label %319
286: ; preds = %282
%287 = load double, double* %3
%288 = load double, double* @calerf.xneg
%289 = fcmp olt double %287, %288
br i1 %289, label %290, label %292
290: ; preds = %286
%291 = load double, double* @calerf.xinf
store double %291, double* @calerf.result
br label %318
292: ; preds = %286
%293 = load double, double* %3
%294 = load double, double* @calerf.sixten
%295 = fmul double %293, %294
store double %295, double* %5
%296 = call double @aint(double* %5)
%297 = load double, double* @calerf.sixten
%298 = fdiv double %296, %297
store double %298, double* @calerf.ysq
%299 = load double, double* %3
%300 = load double, double* @calerf.ysq
%301 = fsub double %299, %300
%302 = load double, double* %3
%303 = load double, double* @calerf.ysq
%304 = fadd double %302, %303
%305 = fmul double %301, %304
store double %305, double* @calerf.del
%306 = load double, double* @calerf.ysq
%307 = load double, double* @calerf.ysq
%308 = fmul double %306, %307
%309 = call double @exp(double %308)
%310 = load double, double* @calerf.del
%311 = call double @exp(double %310)
%312 = fmul double %309, %311
store double %312, double* @calerf.y
%313 = load double, double* @calerf.y
%314 = load double, double* @calerf.y
%315 = fadd double %313, %314
%316 = load double, double* @calerf.result
%317 = fsub double %315, %316
store double %317, double* @calerf.result
br label %318
318: ; preds = %292, %290
br label %319
319: ; preds = %318, %282
br label %320
320: ; preds = %319, %281
br label %321
321: ; preds = %320, %269
br label %322
322: ; preds = %321, %81
%323 = load double, double* @calerf.result
ret double %323
}

LLVM IR (-O2):
@calerf.result = internal unnamed_addr global double 0.000000e+00
@calerf.y = internal unnamed_addr global double 0.000000e+00
@calerf.del = internal unnamed_addr global double 0.000000e+00
define double @calerf(double %0, i32 %1) {
%3 = alloca double
%4 = bitcast double* %3 to i8*
%5 = fcmp oge double %0, 0.000000e+00
%6 = fneg double %0
%7 = select i1 %5, double %0, double %6
store double %7, double* @calerf.y
%8 = fcmp ugt double %7, 4.687500e-01
br i1 %8, label %40, label %9
9: ; preds = %2
%10 = fcmp ogt double %7, 1.110000e-16
%11 = fmul double %7, %7
%12 = select i1 %10, double %11, double 0.000000e+00
%13 = fmul double %12, 0x3FC7C7905A31C322
%14 = fadd double %13, 0x400949FB3ED443E9
%15 = fmul double %12, %14
%16 = insertelement <2 x double> poison, double %15, i64 0
%17 = insertelement <2 x double> %16, double %12, i64 1
%18 = fadd <2 x double> %17, <double 0x405C774E4D365DA3, double 0x403799EE342FB2DE>
%19 = insertelement <2 x double> poison, double %12, i64 0
%20 = shufflevector <2 x double> %19, <2 x double> poison, <2 x i32> zeroinitializer
%21 = fmul <2 x double> %20, %18
%22 = fadd <2 x double> %21, <double 0x407797C38897528B, double 0x406E80C9D57E55B8>
%23 = fmul <2 x double> %20, %22
%24 = fadd <2 x double> %23, <double 0x40A912C1535D121A, double 0x40940A77529CADC8>
%25 = insertelement <2 x double> poison, double %0, i64 0
%26 = insertelement <2 x double> %25, double %12, i64 1
%27 = fmul <2 x double> %26, %24
%28 = extractelement <2 x double> %27, i64 1
%29 = fadd double %28, 0x40A63879423B87AD
%30 = extractelement <2 x double> %27, i64 0
%31 = fdiv double %30, %29
%32 = icmp eq i32 %1, 0
%33 = fsub double 1.000000e+00, %31
%34 = select i1 %32, double %31, double %33
store double %34, double* @calerf.result
%35 = icmp eq i32 %1, 2
br i1 %35, label %36, label %164
36: ; preds = %9
%37 = tail call double @exp(double %12)
%38 = load double, double* @calerf.result
%39 = fmul double %37, %38
br label %162
40: ; preds = %2
%41 = fcmp ugt double %7, 4.000000e+00
br i1 %41, label %75, label %42
42: ; preds = %40
%43 = fmul double %7, 0x3E571E703C5F5815
%44 = insertelement <2 x double> poison, double %43, i64 0
%45 = insertelement <2 x double> %44, double %7, i64 1
%46 = fadd <2 x double> %45, <double 0x3FE20DD508EB103E, double 0x402F7D66F486DED5>
%47 = insertelement <2 x double> poison, double %7, i64 0
%48 = shufflevector <2 x double> %47, <2 x double> poison, <2 x i32> zeroinitializer
%49 = fmul <2 x double> %48, %46
%50 = fadd <2 x double> %49, <double 0x4021C42C35B8BC02, double 0x405D6C69B0FFCDE7>
%51 = fmul <2 x double> %48, %50
%52 = fadd <2 x double> %51, <double 0x405087A0D1C420D0, double 0x4080C972E588749E>
%53 = fmul <2 x double> %48, %52
%54 = fadd <2 x double> %53, <double 0x4072AA2986ABA462, double 0x4099558EECA29D27>
%55 = fmul <2 x double> %48, %54
%56 = fadd <2 x double> %55, <double 0x408B8F9E262B9FA3, double 0x40A9B599356D1202>
%57 = fmul <2 x double> %48, %56
%58 = fadd <2 x double> %57, <double 0x409AC030C15DC8D7, double 0x40B10A9E7CB10E86>
%59 = fmul <2 x double> %48, %58
%60 = fadd <2 x double> %59, <double 0x40A0062821236F6B, double 0x40AADEBC3FC90DBD>
%61 = fmul <2 x double> %48, %60
%62 = fadd <2 x double> %61, <double 0x4093395B7FD2FC8E, double 0x4093395B7FD35F61>
%63 = extractelement <2 x double> %62, i64 0
%64 = extractelement <2 x double> %62, i64 1
%65 = fdiv double %63, %64
store double %65, double* @calerf.result
%66 = icmp eq i32 %1, 2
br i1 %66, label %142, label %67
67: ; preds = %42
%68 = fmul double %7, 1.600000e+01
store double %68, double* %3
%69 = call double @aint(double* %3)
%70 = fmul double %69, 6.250000e-02
%71 = load double, double* @calerf.y
%72 = fsub double %71, %70
%73 = fadd double %70, %71
%74 = fmul double %72, %73
br label %118
75: ; preds = %40
store double 0.000000e+00, double* @calerf.result
%76 = fcmp ult double %7, 2.654300e+01
br i1 %76, label %85, label %77
77: ; preds = %75
%78 = icmp eq i32 %1, 2
%79 = fcmp ult double %7, 2.530000e+307
%80 = and i1 %78, %79
br i1 %80, label %81, label %130
81: ; preds = %77
%82 = fcmp ult double %7, 6.710000e+07
br i1 %82, label %85, label %83
83: ; preds = %81
%84 = fdiv double 0x3FE20DD750429B6D, %7
store double %84, double* @calerf.result
br label %142
85: ; preds = %81, %75
%86 = fmul double %7, %7
%87 = fdiv double 1.000000e+00, %86
%88 = fmul double %87, 0x3F90B4FB18B485C7
%89 = fadd double %88, 0x3FD38A78B9F065F6
%90 = fmul double %87, %89
%91 = insertelement <2 x double> poison, double %90, i64 0
%92 = insertelement <2 x double> %91, double %87, i64 1
%93 = fadd <2 x double> %92, <double 0x3FD70FE40E2425B8, double 0x40048C54508800DB>
%94 = insertelement <2 x double> poison, double %87, i64 0
%95 = shufflevector <2 x double> %94, <2 x double> poison, <2 x i32> zeroinitializer
%96 = fmul <2 x double> %95, %93
%97 = fadd <2 x double> %96, <double 0x3FC0199D980A842F, double 0x3FFDF79D6855F0AD>
%98 = fmul <2 x double> %95, %97
%99 = fadd <2 x double> %98, <double 0x3F9078448CD6C5B5, double 0x3FE0E4993E122C39>
%100 = fmul <2 x double> %95, %99
%101 = fadd <2 x double> %100, <double 0x3F4595FD0D71E33C, double 0x3FAEFC42917D7DE7>
%102 = fmul <2 x double> %95, %101
%103 = extractelement <2 x double> %102, i64 1
%104 = fadd double %103, 0x3F632147A014BAD1
%105 = extractelement <2 x double> %102, i64 0
%106 = fdiv double %105, %104
%107 = fsub double 0x3FE20DD750429B6D, %106
%108 = fdiv double %107, %7
store double %108, double* @calerf.result
%109 = icmp eq i32 %1, 2
br i1 %109, label %142, label %110
110: ; preds = %85
%111 = fmul double %7, 1.600000e+01
store double %111, double* %3
%112 = call double @aint(double* %3)
%113 = fmul double %112, 6.250000e-02
%114 = load double, double* @calerf.y
%115 = fsub double %114, %113
%116 = fadd double %113, %114
%117 = fmul double %115, %116
br label %118
118: ; preds = %67, %110
%119 = phi double [ %74, %67 ], [ %117, %110 ]
%120 = phi double [ %70, %67 ], [ %113, %110 ]
store double %119, double* @calerf.del
%121 = fneg double %120
%122 = fmul double %120, %121
%123 = call double @exp(double %122)
%124 = load double, double* @calerf.del
%125 = fneg double %124
%126 = call double @exp(double %125)
%127 = fmul double %123, %126
%128 = load double, double* @calerf.result
%129 = fmul double %127, %128
store double %129, double* @calerf.result
br label %130
130: ; preds = %118, %77
%131 = phi double [ 0.000000e+00, %77 ], [ %129, %118 ]
switch i32 %1, label %142 [
i32 0, label %132
i32 1, label %138
]
132: ; preds = %130
%133 = fsub double 5.000000e-01, %131
%134 = fadd double %133, 5.000000e-01
store double %134, double* @calerf.result
%135 = fcmp olt double %0, 0.000000e+00
br i1 %135, label %136, label %164
136: ; preds = %132
%137 = fneg double %134
br label %162
138: ; preds = %130
%139 = fcmp olt double %0, 0.000000e+00
br i1 %139, label %140, label %164
140: ; preds = %138
%141 = fsub double 2.000000e+00, %131
br label %162
142: ; preds = %83, %85, %42, %130
%143 = phi double [ %84, %83 ], [ %108, %85 ], [ %65, %42 ], [ %131, %130 ]
%144 = fcmp olt double %0, 0.000000e+00
br i1 %144, label %145, label %164
145: ; preds = %142
%146 = fcmp olt double %0, -2.662800e+01
br i1 %146, label %162, label %147
147: ; preds = %145
%148 = fmul double %0, 1.600000e+01
store double %148, double* %3
%149 = call double @aint(double* %3)
%150 = fmul double %149, 6.250000e-02
%151 = fsub double %0, %150
%152 = fadd double %150, %0
%153 = fmul double %151, %152
store double %153, double* @calerf.del
%154 = fmul double %150, %150
%155 = call double @exp(double %154)
%156 = load double, double* @calerf.del
%157 = call double @exp(double %156)
%158 = fmul double %155, %157
store double %158, double* @calerf.y
%159 = fadd double %158, %158
%160 = load double, double* @calerf.result
%161 = fsub double %159, %160
br label %162
162: ; preds = %145, %36, %140, %147, %136
%163 = phi double [ %137, %136 ], [ %161, %147 ], [ %141, %140 ], [ %39, %36 ], [ 1.790000e+308, %145 ]
store double %163, double* @calerf.result
br label %164
164: ; preds = %162, %132, %142, %138, %9
%165 = phi double [ %134, %132 ], [ %143, %142 ], [ %131, %138 ], [ %34, %9 ], [ %163, %162 ]
ret double %165
}