#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 */
float exp(float);
double fabs(float);
int floor(float);
int sqrt(double);
float erfcore(float x, int jint) {
  float xbreak = 0.46875;
  float a[5];
  float b[4];
  float c[9];
  float d[8];
  float p[6];
  float q[5];
  float y, z;
  float xnum;
  float xden;
  int i;
  float result;
  float del;
  if (fabs(x) <= xbreak) {
    a[0] = 3.16112374387056560e00;
    a[1] = 1.13864154151050156e02;
    a[2] = 3.77485237685302021e02;
    a[3] = 3.20937758913846947e03;
    a[4] = 1.85777706184603153e-1;
    b[0] = 2.36012909523441209e01;
    b[1] = 2.44024637934444173e02;
    b[2] = 1.28261652607737228e03;
    b[3] = 2.84423683343917062e03;
    y = fabs(x);
    z = y * y;
    xnum = a[4] * z;
    xden = z;
    for (i = 0; i <= 2; i++) {
      xnum = (xnum + a[i]) * z;
      xden = (xden + b[i]) * z;
    }
    result = x * (xnum + a[3]) / (xden + b[3]);
    if (jint != 0)
      result = 1 - result;
  }
  if ((fabs(x) > xbreak) & (fabs(x) <= 4.0)) {
    c[0] = 5.64188496988670089e-1;
    c[1] = 8.88314979438837594e00;
    c[2] = 6.61191906371416295e01;
    c[3] = 2.98635138197400131e02;
    c[4] = 8.81952221241769090e02;
    c[5] = 1.71204761263407058e03;
    c[6] = 2.05107837782607147e03;
    c[7] = 1.23033935479799725e03;
    c[8] = 2.15311535474403846e-8;
    d[0] = 1.57449261107098347e01;
    d[1] = 1.17693950891312499e02;
    d[2] = 5.37181101862009858e02;
    d[3] = 1.62138957456669019e03;
    d[4] = 3.29079923573345963e03;
    d[5] = 4.36261909014324716e03;
    d[6] = 3.43936767414372164e03;
    d[7] = 1.23033935480374942e03;
    y = fabs(x);
    xnum = c[8] * y;
    xden = y;
    for (i = 0; i <= 6; i++) {
      xnum = (xnum + c[i]) * y;
      xden = (xden + d[i]) * y;
    }
    result = (xnum + c[7]) / (xden + d[7]);
    z = floor(y * 16) / 16;
    del = (y - z) * (y + z);
    result = exp(-z * z) * exp(-del) * result;
  }
  if (fabs(x) > 4.0) {
    p[0] = 3.05326634961232344e-1;
    p[1] = 3.60344899949804439e-1;
    p[2] = 1.25781726111229246e-1;
    p[3] = 1.60837851487422766e-2;
    p[4] = 6.58749161529837803e-4;
    p[5] = 1.63153871373020978e-2;
    q[0] = 2.56852019228982242e00;
    q[1] = 1.87295284992346047e00;
    q[2] = 5.27905102951428412e-1;
    q[3] = 6.05183413124413191e-2;
    q[4] = 2.33520497626869185e-3;
    y = fabs(x);
    z = 1 / (y * y);
    xnum = p[5] * z;
    xden = z;
    for (i = 0; i <= 3; i++) {
      xnum = (xnum + p[i]) * z;
      xden = (xden + q[i]) * z;
    }
    result = z * (xnum + p[4]) / (xden + q[4]);
    result = (1 / sqrt(3.1415926) - result) / y;
    z = floor(y * 16) / 16;
    del = (y - z) * (y + z);
    result = exp(-z * z) * exp(-del) * result;
  }
  if (jint == 0) {
    if (x > xbreak)
      result = 1 - result;
    if (x < -xbreak)
      result = -1 + result;
  } else {
    if (x < -xbreak)
      result = 2 - result;
  }
  return result;
}


x86 assembly (clang, -O0):
<erfcore>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf0,%rsp
movss  %xmm0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
movss  0xea5(%rip),%xmm0
movss  %xmm0,-0xc(%rbp)
movss  -0x4(%rbp),%xmm0
call   1030 <fabs@plt>
movaps %xmm0,%xmm1
movss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jb     1313 <erfcore+0x1d3>
movss  0xe9c(%rip),%xmm0
movss  %xmm0,-0x20(%rbp)
movss  0xe8b(%rip),%xmm0
movss  %xmm0,-0x1c(%rbp)
movss  0xe7a(%rip),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  0xe69(%rip),%xmm0
movss  %xmm0,-0x14(%rbp)
movss  0xe58(%rip),%xmm0
movss  %xmm0,-0x10(%rbp)
movss  0xe47(%rip),%xmm0
movss  %xmm0,-0x30(%rbp)
movss  0xe36(%rip),%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  0xe25(%rip),%xmm0
movss  %xmm0,-0x28(%rbp)
movss  0xe14(%rip),%xmm0
movss  %xmm0,-0x24(%rbp)
movss  -0x4(%rbp),%xmm0
call   1030 <fabs@plt>
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xc4(%rbp)
ff
movss  -0xc4(%rbp),%xmm0
ff
mulss  -0xc4(%rbp),%xmm0
ff
movss  %xmm0,-0xc8(%rbp)
ff
movss  -0x10(%rbp),%xmm0
mulss  -0xc8(%rbp),%xmm0
ff
movss  %xmm0,-0xcc(%rbp)
ff
movss  -0xc8(%rbp),%xmm0
ff
movss  %xmm0,-0xd0(%rbp)
ff
movl   $0x0,-0xd4(%rbp)
cmpl   $0x2,-0xd4(%rbp)
jg     12bd <erfcore+0x17d>
movss  -0xcc(%rbp),%xmm0
ff
movslq -0xd4(%rbp),%rax
addss  -0x20(%rbp,%rax,4),%xmm0
mulss  -0xc8(%rbp),%xmm0
ff
movss  %xmm0,-0xcc(%rbp)
ff
movss  -0xd0(%rbp),%xmm0
ff
movslq -0xd4(%rbp),%rax
addss  -0x30(%rbp,%rax,4),%xmm0
mulss  -0xc8(%rbp),%xmm0
ff
movss  %xmm0,-0xd0(%rbp)
ff
mov    -0xd4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xd4(%rbp)
jmp    1252 <erfcore+0x112>
movss  -0x4(%rbp),%xmm0
movss  -0xcc(%rbp),%xmm1
ff
addss  -0x14(%rbp),%xmm1
mulss  %xmm1,%xmm0
movss  -0xd0(%rbp),%xmm1
ff
addss  -0x24(%rbp),%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0xd8(%rbp)
ff
cmpl   $0x0,-0x8(%rbp)
je     130e <erfcore+0x1ce>
movss  0xd2a(%rip),%xmm0
subss  -0xd8(%rbp),%xmm0
ff
movss  %xmm0,-0xd8(%rbp)
ff
jmp    1313 <erfcore+0x1d3>
movss  -0x4(%rbp),%xmm0
call   1030 <fabs@plt>
movss  -0xc(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
ucomisd %xmm1,%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0xe0(%rbp)
movss  -0x4(%rbp),%xmm0
call   1030 <fabs@plt>
mov    -0xe0(%rbp),%eax
movaps %xmm0,%xmm1
movsd  0xd55(%rip),%xmm0
ucomisd %xmm1,%xmm0
setae  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     15d6 <erfcore+0x496>
movss  0xcf5(%rip),%xmm0
movss  %xmm0,-0x60(%rbp)
movss  0xce4(%rip),%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  0xcd3(%rip),%xmm0
movss  %xmm0,-0x58(%rbp)
movss  0xcc2(%rip),%xmm0
movss  %xmm0,-0x54(%rbp)
movss  0xcb1(%rip),%xmm0
movss  %xmm0,-0x50(%rbp)
movss  0xca0(%rip),%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  0xc8f(%rip),%xmm0
movss  %xmm0,-0x48(%rbp)
movss  0xc5e(%rip),%xmm0
movss  %xmm0,-0x44(%rbp)
movss  0xc71(%rip),%xmm0
movss  %xmm0,-0x40(%rbp)
movss  0xc60(%rip),%xmm0
movss  %xmm0,-0x80(%rbp)
movss  0xc4f(%rip),%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  0xc3e(%rip),%xmm0
movss  %xmm0,-0x78(%rbp)
movss  0xc2d(%rip),%xmm0
movss  %xmm0,-0x74(%rbp)
movss  0xc1c(%rip),%xmm0
movss  %xmm0,-0x70(%rbp)
movss  0xc0b(%rip),%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  0xbfa(%rip),%xmm0
movss  %xmm0,-0x68(%rbp)
movss  0xbe9(%rip),%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x4(%rbp),%xmm0
call   1030 <fabs@plt>
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xc4(%rbp)
ff
movss  -0x40(%rbp),%xmm0
mulss  -0xc4(%rbp),%xmm0
ff
movss  %xmm0,-0xcc(%rbp)
ff
movss  -0xc4(%rbp),%xmm0
ff
movss  %xmm0,-0xd0(%rbp)
ff
movl   $0x0,-0xd4(%rbp)
cmpl   $0x6,-0xd4(%rbp)
jg     14f8 <erfcore+0x3b8>
movss  -0xcc(%rbp),%xmm0
ff
movslq -0xd4(%rbp),%rax
addss  -0x60(%rbp,%rax,4),%xmm0
mulss  -0xc4(%rbp),%xmm0
ff
movss  %xmm0,-0xcc(%rbp)
ff
movss  -0xd0(%rbp),%xmm0
ff
movslq -0xd4(%rbp),%rax
addss  -0x80(%rbp,%rax,4),%xmm0
mulss  -0xc4(%rbp),%xmm0
ff
movss  %xmm0,-0xd0(%rbp)
ff
mov    -0xd4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xd4(%rbp)
jmp    148d <erfcore+0x34d>
movss  -0xcc(%rbp),%xmm0
ff
addss  -0x44(%rbp),%xmm0
movss  -0xd0(%rbp),%xmm1
ff
addss  -0x64(%rbp),%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0xd8(%rbp)
ff
movss  0xb46(%rip),%xmm0
mulss  -0xc4(%rbp),%xmm0
ff
call   1060 <floor@plt>
mov    $0x10,%ecx
cltd
idiv   %ecx
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0xc8(%rbp)
ff
movss  -0xc4(%rbp),%xmm0
ff
subss  -0xc8(%rbp),%xmm0
ff
movss  -0xc4(%rbp),%xmm1
ff
addss  -0xc8(%rbp),%xmm1
ff
mulss  %xmm1,%xmm0
movss  %xmm0,-0xdc(%rbp)
ff
movss  -0xc8(%rbp),%xmm0
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  -0xc8(%rbp),%xmm0
ff
call   1040 <exp@plt>
movss  %xmm0,-0xe4(%rbp)
ff
movss  -0xdc(%rbp),%xmm0
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
call   1040 <exp@plt>
movaps %xmm0,%xmm1
movss  -0xe4(%rbp),%xmm0
ff
mulss  %xmm1,%xmm0
mulss  -0xd8(%rbp),%xmm0
ff
movss  %xmm0,-0xd8(%rbp)
ff
movss  -0x4(%rbp),%xmm0
call   1030 <fabs@plt>
movsd  0xac0(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    18a2 <erfcore+0x762>
movss  0xa9e(%rip),%xmm0
movss  %xmm0,-0xa0(%rbp)
ff
movss  0xa8a(%rip),%xmm0
movss  %xmm0,-0x9c(%rbp)
ff
movss  0xa76(%rip),%xmm0
movss  %xmm0,-0x98(%rbp)
ff
movss  0xa62(%rip),%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  0xa4e(%rip),%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  0xa3a(%rip),%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  0xa26(%rip),%xmm0
movss  %xmm0,-0xc0(%rbp)
ff
movss  0xa12(%rip),%xmm0
movss  %xmm0,-0xbc(%rbp)
ff
movss  0x9fe(%rip),%xmm0
movss  %xmm0,-0xb8(%rbp)
ff
movss  0x9ea(%rip),%xmm0
movss  %xmm0,-0xb4(%rbp)
ff
movss  0x9d6(%rip),%xmm0
movss  %xmm0,-0xb0(%rbp)
ff
movss  -0x4(%rbp),%xmm0
call   1030 <fabs@plt>
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xc4(%rbp)
ff
movss  -0xc4(%rbp),%xmm1
ff
mulss  -0xc4(%rbp),%xmm1
ff
movss  0x958(%rip),%xmm0
divss  %xmm1,%xmm0
movss  %xmm0,-0xc8(%rbp)
ff
movss  -0x8c(%rbp),%xmm0
ff
mulss  -0xc8(%rbp),%xmm0
ff
movss  %xmm0,-0xcc(%rbp)
ff
movss  -0xc8(%rbp),%xmm0
ff
movss  %xmm0,-0xd0(%rbp)
ff
movl   $0x0,-0xd4(%rbp)
cmpl   $0x3,-0xd4(%rbp)
jg     177f <erfcore+0x63f>
movss  -0xcc(%rbp),%xmm0
ff
movslq -0xd4(%rbp),%rax
addss  -0xa0(%rbp,%rax,4),%xmm0
ff ff
mulss  -0xc8(%rbp),%xmm0
ff
movss  %xmm0,-0xcc(%rbp)
ff
movss  -0xd0(%rbp),%xmm0
ff
movslq -0xd4(%rbp),%rax
addss  -0xc0(%rbp,%rax,4),%xmm0
ff ff
mulss  -0xc8(%rbp),%xmm0
ff
movss  %xmm0,-0xd0(%rbp)
ff
mov    -0xd4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xd4(%rbp)
jmp    170e <erfcore+0x5ce>
movss  -0xc8(%rbp),%xmm0
ff
movss  -0xcc(%rbp),%xmm1
ff
addss  -0x90(%rbp),%xmm1
ff
mulss  %xmm1,%xmm0
movss  -0xd0(%rbp),%xmm1
ff
addss  -0xb0(%rbp),%xmm1
ff
divss  %xmm1,%xmm0
movss  %xmm0,-0xd8(%rbp)
ff
movsd  0x8f1(%rip),%xmm0
call   1050 <sqrt@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cltd
idiv   %ecx
cvtsi2ss %eax,%xmm0
subss  -0xd8(%rbp),%xmm0
ff
divss  -0xc4(%rbp),%xmm0
ff
movss  %xmm0,-0xd8(%rbp)
ff
movss  0x87a(%rip),%xmm0
mulss  -0xc4(%rbp),%xmm0
ff
call   1060 <floor@plt>
mov    $0x10,%ecx
cltd
idiv   %ecx
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0xc8(%rbp)
ff
movss  -0xc4(%rbp),%xmm0
ff
subss  -0xc8(%rbp),%xmm0
ff
movss  -0xc4(%rbp),%xmm1
ff
addss  -0xc8(%rbp),%xmm1
ff
mulss  %xmm1,%xmm0
movss  %xmm0,-0xdc(%rbp)
ff
movss  -0xc8(%rbp),%xmm0
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  -0xc8(%rbp),%xmm0
ff
call   1040 <exp@plt>
movss  %xmm0,-0xe8(%rbp)
ff
movss  -0xdc(%rbp),%xmm0
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
call   1040 <exp@plt>
movaps %xmm0,%xmm1
movss  -0xe8(%rbp),%xmm0
ff
mulss  %xmm1,%xmm0
mulss  -0xd8(%rbp),%xmm0
ff
movss  %xmm0,-0xd8(%rbp)
ff
cmpl   $0x0,-0x8(%rbp)
jne    1910 <erfcore+0x7d0>
movss  -0x4(%rbp),%xmm0
ucomiss -0xc(%rbp),%xmm0
jbe    18d3 <erfcore+0x793>
movss  0x765(%rip),%xmm0
subss  -0xd8(%rbp),%xmm0
ff
movss  %xmm0,-0xd8(%rbp)
ff
movss  -0x4(%rbp),%xmm1
movss  -0xc(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
ucomiss %xmm1,%xmm0
jbe    190b <erfcore+0x7cb>
movss  0x7a5(%rip),%xmm0
addss  -0xd8(%rbp),%xmm0
ff
movss  %xmm0,-0xd8(%rbp)
ff
jmp    194d <erfcore+0x80d>
movss  -0x4(%rbp),%xmm1
movss  -0xc(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
ucomiss %xmm1,%xmm0
jbe    1948 <erfcore+0x808>
movss  0x764(%rip),%xmm0
subss  -0xd8(%rbp),%xmm0
ff
movss  %xmm0,-0xd8(%rbp)
ff
jmp    194d <erfcore+0x80d>
movss  -0xd8(%rbp),%xmm0
ff
add    $0xf0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<erfcore>:
push   %rbx
sub    $0x50,%rsp
mov    %edi,%ebx
movapd %xmm0,0x30(%rsp)
call   1030 <fabs@plt>
movaps 0x30(%rsp),%xmm2
movsd  0xea1(%rip),%xmm1
ucomisd %xmm0,%xmm1
jb     11f0 <erfcore+0xb0>
movaps %xmm2,%xmm0
call   1030 <fabs@plt>
movaps 0x30(%rsp),%xmm2
cvtsd2ss %xmm0,%xmm0
mulss  %xmm0,%xmm0
movss  0xe92(%rip),%xmm3
mulss  %xmm0,%xmm3
addss  0xe8a(%rip),%xmm3
mulss  %xmm0,%xmm3
unpcklps %xmm0,%xmm3
addps  0xeb0(%rip),%xmm3
movaps %xmm2,%xmm1
unpcklps %xmm0,%xmm1
shufps $0x0,%xmm0,%xmm0
mulps  %xmm0,%xmm3
addps  0xeac(%rip),%xmm3
mulps  %xmm0,%xmm3
addps  0xeb2(%rip),%xmm3
mulps  %xmm1,%xmm3
movaps %xmm3,%xmm0
shufps $0x55,%xmm3,%xmm0
addss  0xe50(%rip),%xmm0
divss  %xmm0,%xmm3
test   %ebx,%ebx
je     11eb <erfcore+0xab>
movss  0xe44(%rip),%xmm0
subss  %xmm3,%xmm0
movaps %xmm0,0x20(%rsp)
jmp    11f0 <erfcore+0xb0>
movaps %xmm3,0x20(%rsp)
movaps %xmm2,%xmm0
call   1030 <fabs@plt>
movsd  %xmm0,0x10(%rsp)
movapd 0x30(%rsp),%xmm0
call   1030 <fabs@plt>
movsd  0x10(%rsp),%xmm1
ucomisd 0xde9(%rip),%xmm1
jbe    1340 <erfcore+0x200>
movsd  0xde3(%rip),%xmm1
ucomisd %xmm0,%xmm1
movaps 0x30(%rsp),%xmm1
jb     1345 <erfcore+0x205>
movaps %xmm1,%xmm0
call   1030 <fabs@plt>
xorps  %xmm2,%xmm2
cvtsd2ss %xmm0,%xmm2
movss  0xddd(%rip),%xmm1
mulss  %xmm2,%xmm1
unpcklps %xmm2,%xmm1
addps  0xe27(%rip),%xmm1
movaps %xmm2,%xmm0
movaps %xmm2,0x10(%rsp)
shufps $0x0,%xmm2,%xmm0
mulps  %xmm0,%xmm1
addps  0xe21(%rip),%xmm1
mulps  %xmm0,%xmm1
addps  0xe27(%rip),%xmm1
mulps  %xmm0,%xmm1
addps  0xe2d(%rip),%xmm1
mulps  %xmm0,%xmm1
addps  0xe33(%rip),%xmm1
mulps  %xmm0,%xmm1
addps  0xe39(%rip),%xmm1
mulps  %xmm0,%xmm1
addps  0xe3f(%rip),%xmm1
mulps  %xmm0,%xmm1
addps  0xe45(%rip),%xmm1
movaps %xmm1,%xmm0
shufps $0x55,%xmm1,%xmm0
divss  %xmm0,%xmm1
movaps %xmm1,0x20(%rsp)
movss  0xd69(%rip),%xmm0
mulss  %xmm2,%xmm0
call   1060 <floor@plt>
lea    0xf(%rax),%ecx
test   %eax,%eax
cmovns %eax,%ecx
sar    $0x4,%ecx
xorps  %xmm1,%xmm1
cvtsi2ss %ecx,%xmm1
movaps 0x10(%rsp),%xmm0
movaps %xmm0,%xmm2
subss  %xmm1,%xmm2
movaps %xmm2,0x40(%rsp)
addss  %xmm1,%xmm0
movaps %xmm0,0x10(%rsp)
movaps %xmm1,%xmm0
xorps  0xdfe(%rip),%xmm0
mulss  %xmm1,%xmm0
call   1040 <exp@plt>
movss  %xmm0,0xc(%rsp)
movaps 0x40(%rsp),%xmm0
xorps  0xde3(%rip),%xmm0
mulss  0x10(%rsp),%xmm0
call   1040 <exp@plt>
movaps 0x30(%rsp),%xmm1
mulss  0xc(%rsp),%xmm0
mulss  0x20(%rsp),%xmm0
movaps %xmm0,0x20(%rsp)
jmp    1345 <erfcore+0x205>
movaps 0x30(%rsp),%xmm1
movaps %xmm1,%xmm0
call   1030 <fabs@plt>
ucomisd 0xcb3(%rip),%xmm0
movaps 0x20(%rsp),%xmm0
jbe    1493 <erfcore+0x353>
movaps 0x30(%rsp),%xmm0
call   1030 <fabs@plt>
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x10(%rsp)
mulss  %xmm0,%xmm0
movss  0xca4(%rip),%xmm1
divss  %xmm0,%xmm1
movss  0xca4(%rip),%xmm2
mulss  %xmm1,%xmm2
addss  0xc9c(%rip),%xmm2
mulss  %xmm1,%xmm2
unpcklps %xmm1,%xmm2
addps  0xd6a(%rip),%xmm2
shufps $0x0,%xmm1,%xmm1
mulps  %xmm1,%xmm2
addps  0xd6c(%rip),%xmm2
mulps  %xmm1,%xmm2
addps  0xd72(%rip),%xmm2
mulps  %xmm1,%xmm2
addps  0xd78(%rip),%xmm2
mulps  %xmm1,%xmm2
movaps %xmm2,%xmm0
shufps $0x55,%xmm2,%xmm0
addss  0xc5e(%rip),%xmm0
divss  %xmm0,%xmm2
movaps %xmm2,0x20(%rsp)
movsd  0xc25(%rip),%xmm0
call   1050 <sqrt@plt>
lea    0x1(%rax),%ecx
xor    %edx,%edx
cmp    $0x3,%ecx
cmovb  %eax,%edx
xorps  %xmm0,%xmm0
cvtsi2ss %edx,%xmm0
subss  0x20(%rsp),%xmm0
movss  0x10(%rsp),%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,0x20(%rsp)
movss  0xc0c(%rip),%xmm0
mulss  %xmm1,%xmm0
call   1060 <floor@plt>
lea    0xf(%rax),%ecx
test   %eax,%eax
cmovns %eax,%ecx
sar    $0x4,%ecx
xorps  %xmm1,%xmm1
cvtsi2ss %ecx,%xmm1
movss  0x10(%rsp),%xmm0
movaps %xmm0,%xmm2
subss  %xmm1,%xmm2
movaps %xmm2,0x40(%rsp)
addss  %xmm1,%xmm0
movss  %xmm0,0x10(%rsp)
movaps %xmm1,%xmm0
xorps  0xc9f(%rip),%xmm0
mulss  %xmm1,%xmm0
call   1040 <exp@plt>
movss  %xmm0,0xc(%rsp)
movaps 0x40(%rsp),%xmm0
xorps  0xc84(%rip),%xmm0
mulss  0x10(%rsp),%xmm0
call   1040 <exp@plt>
mulss  0xc(%rsp),%xmm0
mulss  0x20(%rsp),%xmm0
test   %ebx,%ebx
je     14b7 <erfcore+0x377>
movss  0xb9d(%rip),%xmm1
ucomiss 0x30(%rsp),%xmm1
jbe    14f9 <erfcore+0x3b9>
movss  0xb92(%rip),%xmm1
subss  %xmm0,%xmm1
movaps %xmm1,%xmm0
jmp    14f9 <erfcore+0x3b9>
movss  0xb65(%rip),%xmm1
subss  %xmm0,%xmm1
movss  0xb79(%rip),%xmm3
movaps 0x30(%rsp),%xmm2
cmpltss %xmm2,%xmm3
andps  %xmm3,%xmm1
andnps %xmm0,%xmm3
orps   %xmm1,%xmm3
movss  0xb56(%rip),%xmm1
ucomiss %xmm2,%xmm1
movaps %xmm3,%xmm0
jbe    14f9 <erfcore+0x3b9>
addss  0xb52(%rip),%xmm3
movaps %xmm3,%xmm0
add    $0x50,%rsp
pop    %rbx
ret

LLVM IR (-O0):
define float @erfcore(float %0, i32 %1) {
%3 = alloca float
%4 = alloca i32
%5 = alloca float
%6 = alloca [5 x float]
%7 = alloca [4 x float]
%8 = alloca [9 x float]
%9 = alloca [8 x float]
%10 = alloca [6 x float]
%11 = alloca [5 x float]
%12 = alloca float
%13 = alloca float
%14 = alloca float
%15 = alloca float
%16 = alloca i32
%17 = alloca float
%18 = alloca float
store float %0, float* %3
store i32 %1, i32* %4
store float 4.687500e-01, float* %5
%19 = load float, float* %3
%20 = call double @fabs(float %19)
%21 = load float, float* %5
%22 = fpext float %21 to double
%23 = fcmp ole double %20, %22
br i1 %23, label %24, label %86
24: ; preds = %2
%25 = getelementptr inbounds [5 x float], [5 x float]* %6, i64 0, i64 0
store float 0x400949FB40000000, float* %25
%26 = getelementptr inbounds [5 x float], [5 x float]* %6, i64 0, i64 1
store float 0x405C774E40000000, float* %26
%27 = getelementptr inbounds [5 x float], [5 x float]* %6, i64 0, i64 2
store float 0x407797C380000000, float* %27
%28 = getelementptr inbounds [5 x float], [5 x float]* %6, i64 0, i64 3
store float 0x40A912C160000000, float* %28
%29 = getelementptr inbounds [5 x float], [5 x float]* %6, i64 0, i64 4
store float 0x3FC7C79060000000, float* %29
%30 = getelementptr inbounds [4 x float], [4 x float]* %7, i64 0, i64 0
store float 0x403799EE40000000, float* %30
%31 = getelementptr inbounds [4 x float], [4 x float]* %7, i64 0, i64 1
store float 0x406E80C9E0000000, float* %31
%32 = getelementptr inbounds [4 x float], [4 x float]* %7, i64 0, i64 2
store float 0x40940A7760000000, float* %32
%33 = getelementptr inbounds [4 x float], [4 x float]* %7, i64 0, i64 3
store float 0x40A6387940000000, float* %33
%34 = load float, float* %3
%35 = call double @fabs(float %34)
%36 = fptrunc double %35 to float
store float %36, float* %12
%37 = load float, float* %12
%38 = load float, float* %12
%39 = fmul float %37, %38
store float %39, float* %13
%40 = getelementptr inbounds [5 x float], [5 x float]* %6, i64 0, i64 4
%41 = load float, float* %40
%42 = load float, float* %13
%43 = fmul float %41, %42
store float %43, float* %14
%44 = load float, float* %13
store float %44, float* %15
store i32 0, i32* %16
br label %45
45: ; preds = %65, %24
%46 = load i32, i32* %16
%47 = icmp sle i32 %46, 2
br i1 %47, label %48, label %68
48: ; preds = %45
%49 = load float, float* %14
%50 = load i32, i32* %16
%51 = sext i32 %50 to i64
%52 = getelementptr inbounds [5 x float], [5 x float]* %6, i64 0, i64 %51
%53 = load float, float* %52
%54 = fadd float %49, %53
%55 = load float, float* %13
%56 = fmul float %54, %55
store float %56, float* %14
%57 = load float, float* %15
%58 = load i32, i32* %16
%59 = sext i32 %58 to i64
%60 = getelementptr inbounds [4 x float], [4 x float]* %7, i64 0, i64 %59
%61 = load float, float* %60
%62 = fadd float %57, %61
%63 = load float, float* %13
%64 = fmul float %62, %63
store float %64, float* %15
br label %65
65: ; preds = %48
%66 = load i32, i32* %16
%67 = add nsw i32 %66, 1
store i32 %67, i32* %16
br label %45
68: ; preds = %45
%69 = load float, float* %3
%70 = load float, float* %14
%71 = getelementptr inbounds [5 x float], [5 x float]* %6, i64 0, i64 3
%72 = load float, float* %71
%73 = fadd float %70, %72
%74 = fmul float %69, %73
%75 = load float, float* %15
%76 = getelementptr inbounds [4 x float], [4 x float]* %7, i64 0, i64 3
%77 = load float, float* %76
%78 = fadd float %75, %77
%79 = fdiv float %74, %78
store float %79, float* %17
%80 = load i32, i32* %4
%81 = icmp ne i32 %80, 0
br i1 %81, label %82, label %85
82: ; preds = %68
%83 = load float, float* %17
%84 = fsub float 1.000000e+00, %83
store float %84, float* %17
br label %85
85: ; preds = %82, %68
br label %86
86: ; preds = %85, %2
%87 = load float, float* %3
%88 = call double @fabs(float %87)
%89 = load float, float* %5
%90 = fpext float %89 to double
%91 = fcmp ogt double %88, %90
%92 = zext i1 %91 to i32
%93 = load float, float* %3
%94 = call double @fabs(float %93)
%95 = fcmp ole double %94, 4.000000e+00
%96 = zext i1 %95 to i32
%97 = and i32 %92, %96
%98 = icmp ne i32 %97, 0
br i1 %98, label %99, label %181
99: ; preds = %86
%100 = getelementptr inbounds [9 x float], [9 x float]* %8, i64 0, i64 0
store float 0x3FE20DD500000000, float* %100
%101 = getelementptr inbounds [9 x float], [9 x float]* %8, i64 0, i64 1
store float 0x4021C42C40000000, float* %101
%102 = getelementptr inbounds [9 x float], [9 x float]* %8, i64 0, i64 2
store float 0x405087A0E0000000, float* %102
%103 = getelementptr inbounds [9 x float], [9 x float]* %8, i64 0, i64 3
store float 0x4072AA2980000000, float* %103
%104 = getelementptr inbounds [9 x float], [9 x float]* %8, i64 0, i64 4
store float 0x408B8F9E20000000, float* %104
%105 = getelementptr inbounds [9 x float], [9 x float]* %8, i64 0, i64 5
store float 0x409AC030C0000000, float* %105
%106 = getelementptr inbounds [9 x float], [9 x float]* %8, i64 0, i64 6
store float 0x40A0062820000000, float* %106
%107 = getelementptr inbounds [9 x float], [9 x float]* %8, i64 0, i64 7
store float 0x4093395B80000000, float* %107
%108 = getelementptr inbounds [9 x float], [9 x float]* %8, i64 0, i64 8
store float 0x3E571E7040000000, float* %108
%109 = getelementptr inbounds [8 x float], [8 x float]* %9, i64 0, i64 0
store float 0x402F7D6700000000, float* %109
%110 = getelementptr inbounds [8 x float], [8 x float]* %9, i64 0, i64 1
store float 0x405D6C69C0000000, float* %110
%111 = getelementptr inbounds [8 x float], [8 x float]* %9, i64 0, i64 2
store float 0x4080C972E0000000, float* %111
%112 = getelementptr inbounds [8 x float], [8 x float]* %9, i64 0, i64 3
store float 0x4099558EE0000000, float* %112
%113 = getelementptr inbounds [8 x float], [8 x float]* %9, i64 0, i64 4
store float 0x40A9B59940000000, float* %113
%114 = getelementptr inbounds [8 x float], [8 x float]* %9, i64 0, i64 5
store float 0x40B10A9E80000000, float* %114
%115 = getelementptr inbounds [8 x float], [8 x float]* %9, i64 0, i64 6
store float 0x40AADEBC40000000, float* %115
%116 = getelementptr inbounds [8 x float], [8 x float]* %9, i64 0, i64 7
store float 0x4093395B80000000, float* %116
%117 = load float, float* %3
%118 = call double @fabs(float %117)
%119 = fptrunc double %118 to float
store float %119, float* %12
%120 = getelementptr inbounds [9 x float], [9 x float]* %8, i64 0, i64 8
%121 = load float, float* %120
%122 = load float, float* %12
%123 = fmul float %121, %122
store float %123, float* %14
%124 = load float, float* %12
store float %124, float* %15
store i32 0, i32* %16
br label %125
125: ; preds = %145, %99
%126 = load i32, i32* %16
%127 = icmp sle i32 %126, 6
br i1 %127, label %128, label %148
128: ; preds = %125
%129 = load float, float* %14
%130 = load i32, i32* %16
%131 = sext i32 %130 to i64
%132 = getelementptr inbounds [9 x float], [9 x float]* %8, i64 0, i64 %131
%133 = load float, float* %132
%134 = fadd float %129, %133
%135 = load float, float* %12
%136 = fmul float %134, %135
store float %136, float* %14
%137 = load float, float* %15
%138 = load i32, i32* %16
%139 = sext i32 %138 to i64
%140 = getelementptr inbounds [8 x float], [8 x float]* %9, i64 0, i64 %139
%141 = load float, float* %140
%142 = fadd float %137, %141
%143 = load float, float* %12
%144 = fmul float %142, %143
store float %144, float* %15
br label %145
145: ; preds = %128
%146 = load i32, i32* %16
%147 = add nsw i32 %146, 1
store i32 %147, i32* %16
br label %125
148: ; preds = %125
%149 = load float, float* %14
%150 = getelementptr inbounds [9 x float], [9 x float]* %8, i64 0, i64 7
%151 = load float, float* %150
%152 = fadd float %149, %151
%153 = load float, float* %15
%154 = getelementptr inbounds [8 x float], [8 x float]* %9, i64 0, i64 7
%155 = load float, float* %154
%156 = fadd float %153, %155
%157 = fdiv float %152, %156
store float %157, float* %17
%158 = load float, float* %12
%159 = fmul float %158, 1.600000e+01
%160 = call i32 @floor(float %159)
%161 = sdiv i32 %160, 16
%162 = sitofp i32 %161 to float
store float %162, float* %13
%163 = load float, float* %12
%164 = load float, float* %13
%165 = fsub float %163, %164
%166 = load float, float* %12
%167 = load float, float* %13
%168 = fadd float %166, %167
%169 = fmul float %165, %168
store float %169, float* %18
%170 = load float, float* %13
%171 = fneg float %170
%172 = load float, float* %13
%173 = fmul float %171, %172
%174 = call float @exp(float %173)
%175 = load float, float* %18
%176 = fneg float %175
%177 = call float @exp(float %176)
%178 = fmul float %174, %177
%179 = load float, float* %17
%180 = fmul float %178, %179
store float %180, float* %17
br label %181
181: ; preds = %148, %86
%182 = load float, float* %3
%183 = call double @fabs(float %182)
%184 = fcmp ogt double %183, 4.000000e+00
br i1 %184, label %185, label %274
185: ; preds = %181
%186 = getelementptr inbounds [6 x float], [6 x float]* %10, i64 0, i64 0
store float 0x3FD38A78C0000000, float* %186
%187 = getelementptr inbounds [6 x float], [6 x float]* %10, i64 0, i64 1
store float 0x3FD70FE400000000, float* %187
%188 = getelementptr inbounds [6 x float], [6 x float]* %10, i64 0, i64 2
store float 0x3FC0199DA0000000, float* %188
%189 = getelementptr inbounds [6 x float], [6 x float]* %10, i64 0, i64 3
store float 0x3F90784480000000, float* %189
%190 = getelementptr inbounds [6 x float], [6 x float]* %10, i64 0, i64 4
store float 0x3F4595FD00000000, float* %190
%191 = getelementptr inbounds [6 x float], [6 x float]* %10, i64 0, i64 5
store float 0x3F90B4FB20000000, float* %191
%192 = getelementptr inbounds [5 x float], [5 x float]* %11, i64 0, i64 0
store float 0x40048C5460000000, float* %192
%193 = getelementptr inbounds [5 x float], [5 x float]* %11, i64 0, i64 1
store float 0x3FFDF79D60000000, float* %193
%194 = getelementptr inbounds [5 x float], [5 x float]* %11, i64 0, i64 2
store float 0x3FE0E49940000000, float* %194
%195 = getelementptr inbounds [5 x float], [5 x float]* %11, i64 0, i64 3
store float 0x3FAEFC42A0000000, float* %195
%196 = getelementptr inbounds [5 x float], [5 x float]* %11, i64 0, i64 4
store float 0x3F632147A0000000, float* %196
%197 = load float, float* %3
%198 = call double @fabs(float %197)
%199 = fptrunc double %198 to float
store float %199, float* %12
%200 = load float, float* %12
%201 = load float, float* %12
%202 = fmul float %200, %201
%203 = fdiv float 1.000000e+00, %202
store float %203, float* %13
%204 = getelementptr inbounds [6 x float], [6 x float]* %10, i64 0, i64 5
%205 = load float, float* %204
%206 = load float, float* %13
%207 = fmul float %205, %206
store float %207, float* %14
%208 = load float, float* %13
store float %208, float* %15
store i32 0, i32* %16
br label %209
209: ; preds = %229, %185
%210 = load i32, i32* %16
%211 = icmp sle i32 %210, 3
br i1 %211, label %212, label %232
212: ; preds = %209
%213 = load float, float* %14
%214 = load i32, i32* %16
%215 = sext i32 %214 to i64
%216 = getelementptr inbounds [6 x float], [6 x float]* %10, i64 0, i64 %215
%217 = load float, float* %216
%218 = fadd float %213, %217
%219 = load float, float* %13
%220 = fmul float %218, %219
store float %220, float* %14
%221 = load float, float* %15
%222 = load i32, i32* %16
%223 = sext i32 %222 to i64
%224 = getelementptr inbounds [5 x float], [5 x float]* %11, i64 0, i64 %223
%225 = load float, float* %224
%226 = fadd float %221, %225
%227 = load float, float* %13
%228 = fmul float %226, %227
store float %228, float* %15
br label %229
229: ; preds = %212
%230 = load i32, i32* %16
%231 = add nsw i32 %230, 1
store i32 %231, i32* %16
br label %209
232: ; preds = %209
%233 = load float, float* %13
%234 = load float, float* %14
%235 = getelementptr inbounds [6 x float], [6 x float]* %10, i64 0, i64 4
%236 = load float, float* %235
%237 = fadd float %234, %236
%238 = fmul float %233, %237
%239 = load float, float* %15
%240 = getelementptr inbounds [5 x float], [5 x float]* %11, i64 0, i64 4
%241 = load float, float* %240
%242 = fadd float %239, %241
%243 = fdiv float %238, %242
store float %243, float* %17
%244 = call i32 @sqrt(double 0x400921FB4D12D84A)
%245 = sdiv i32 1, %244
%246 = sitofp i32 %245 to float
%247 = load float, float* %17
%248 = fsub float %246, %247
%249 = load float, float* %12
%250 = fdiv float %248, %249
store float %250, float* %17
%251 = load float, float* %12
%252 = fmul float %251, 1.600000e+01
%253 = call i32 @floor(float %252)
%254 = sdiv i32 %253, 16
%255 = sitofp i32 %254 to float
store float %255, float* %13
%256 = load float, float* %12
%257 = load float, float* %13
%258 = fsub float %256, %257
%259 = load float, float* %12
%260 = load float, float* %13
%261 = fadd float %259, %260
%262 = fmul float %258, %261
store float %262, float* %18
%263 = load float, float* %13
%264 = fneg float %263
%265 = load float, float* %13
%266 = fmul float %264, %265
%267 = call float @exp(float %266)
%268 = load float, float* %18
%269 = fneg float %268
%270 = call float @exp(float %269)
%271 = fmul float %267, %270
%272 = load float, float* %17
%273 = fmul float %271, %272
store float %273, float* %17
br label %274
274: ; preds = %232, %181
%275 = load i32, i32* %4
%276 = icmp eq i32 %275, 0
br i1 %276, label %277, label %293
277: ; preds = %274
%278 = load float, float* %3
%279 = load float, float* %5
%280 = fcmp ogt float %278, %279
br i1 %280, label %281, label %284
281: ; preds = %277
%282 = load float, float* %17
%283 = fsub float 1.000000e+00, %282
store float %283, float* %17
br label %284
284: ; preds = %281, %277
%285 = load float, float* %3
%286 = load float, float* %5
%287 = fneg float %286
%288 = fcmp olt float %285, %287
br i1 %288, label %289, label %292
289: ; preds = %284
%290 = load float, float* %17
%291 = fadd float -1.000000e+00, %290
store float %291, float* %17
br label %292
292: ; preds = %289, %284
br label %302
293: ; preds = %274
%294 = load float, float* %3
%295 = load float, float* %5
%296 = fneg float %295
%297 = fcmp olt float %294, %296
br i1 %297, label %298, label %301
298: ; preds = %293
%299 = load float, float* %17
%300 = fsub float 2.000000e+00, %299
store float %300, float* %17
br label %301
301: ; preds = %298, %293
br label %302
302: ; preds = %301, %292
%303 = load float, float* %17
ret float %303
}

LLVM IR (-O2):
define float @erfcore(float %0, i32 %1) {
%3 = tail call double @fabs(float %0)
%4 = fcmp ugt double %3, 4.687500e-01
br i1 %4, label %31, label %5
5: ; preds = %2
%6 = tail call double @fabs(float %0)
%7 = fptrunc double %6 to float
%8 = fmul float %7, %7
%9 = fmul float %8, 0x3FC7C79060000000
%10 = fadd float %9, 0x400949FB40000000
%11 = fmul float %8, %10
%12 = insertelement <2 x float> poison, float %11, i64 0
%13 = insertelement <2 x float> %12, float %8, i64 1
%14 = fadd <2 x float> %13, <float 0x405C774E40000000, float 0x403799EE40000000>
%15 = insertelement <2 x float> poison, float %8, i64 0
%16 = shufflevector <2 x float> %15, <2 x float> poison, <2 x i32> zeroinitializer
%17 = fmul <2 x float> %16, %14
%18 = fadd <2 x float> %17, <float 0x407797C380000000, float 0x406E80C9E0000000>
%19 = fmul <2 x float> %16, %18
%20 = fadd <2 x float> %19, <float 0x40A912C160000000, float 0x40940A7760000000>
%21 = insertelement <2 x float> poison, float %0, i64 0
%22 = insertelement <2 x float> %21, float %8, i64 1
%23 = fmul <2 x float> %20, %22
%24 = extractelement <2 x float> %23, i64 1
%25 = fadd float %24, 0x40A6387940000000
%26 = extractelement <2 x float> %23, i64 0
%27 = fdiv float %26, %25
%28 = icmp eq i32 %1, 0
%29 = fsub float 1.000000e+00, %27
%30 = select i1 %28, float %27, float %29
br label %31
31: ; preds = %5, %2
%32 = phi float [ undef, %2 ], [ %30, %5 ]
%33 = tail call double @fabs(float %0)
%34 = fcmp ogt double %33, 4.687500e-01
%35 = tail call double @fabs(float %0)
%36 = fcmp ole double %35, 4.000000e+00
%37 = and i1 %34, %36
br i1 %37, label %38, label %78
38: ; preds = %31
%39 = tail call double @fabs(float %0)
%40 = fptrunc double %39 to float
%41 = fmul float %40, 0x3E571E7040000000
%42 = insertelement <2 x float> poison, float %41, i64 0
%43 = insertelement <2 x float> %42, float %40, i64 1
%44 = fadd <2 x float> %43, <float 0x3FE20DD500000000, float 0x402F7D6700000000>
%45 = insertelement <2 x float> poison, float %40, i64 0
%46 = shufflevector <2 x float> %45, <2 x float> poison, <2 x i32> zeroinitializer
%47 = fmul <2 x float> %44, %46
%48 = fadd <2 x float> %47, <float 0x4021C42C40000000, float 0x405D6C69C0000000>
%49 = fmul <2 x float> %48, %46
%50 = fadd <2 x float> %49, <float 0x405087A0E0000000, float 0x4080C972E0000000>
%51 = fmul <2 x float> %50, %46
%52 = fadd <2 x float> %51, <float 0x4072AA2980000000, float 0x4099558EE0000000>
%53 = fmul <2 x float> %52, %46
%54 = fadd <2 x float> %53, <float 0x408B8F9E20000000, float 0x40A9B59940000000>
%55 = fmul <2 x float> %54, %46
%56 = fadd <2 x float> %55, <float 0x409AC030C0000000, float 0x40B10A9E80000000>
%57 = fmul <2 x float> %56, %46
%58 = fadd <2 x float> %57, <float 0x40A0062820000000, float 0x40AADEBC40000000>
%59 = fmul <2 x float> %58, %46
%60 = fadd <2 x float> %59, <float 0x4093395B80000000, float 0x4093395B80000000>
%61 = extractelement <2 x float> %60, i64 0
%62 = extractelement <2 x float> %60, i64 1
%63 = fdiv float %61, %62
%64 = fmul float %40, 1.600000e+01
%65 = tail call i32 @floor(float %64)
%66 = sdiv i32 %65, 16
%67 = sitofp i32 %66 to float
%68 = fsub float %40, %67
%69 = fadd float %40, %67
%70 = fneg float %67
%71 = fmul float %70, %67
%72 = tail call float @exp(float %71)
%73 = fneg float %68
%74 = fmul float %69, %73
%75 = tail call float @exp(float %74)
%76 = fmul float %72, %75
%77 = fmul float %63, %76
br label %78
78: ; preds = %38, %31
%79 = phi float [ %77, %38 ], [ %32, %31 ]
%80 = tail call double @fabs(float %0)
%81 = fcmp ogt double %80, 4.000000e+00
br i1 %81, label %82, label %127
82: ; preds = %78
%83 = tail call double @fabs(float %0)
%84 = fptrunc double %83 to float
%85 = fmul float %84, %84
%86 = fdiv float 1.000000e+00, %85
%87 = fmul float %86, 0x3F90B4FB20000000
%88 = fadd float %87, 0x3FD38A78C0000000
%89 = fmul float %86, %88
%90 = insertelement <2 x float> poison, float %89, i64 0
%91 = insertelement <2 x float> %90, float %86, i64 1
%92 = fadd <2 x float> %91, <float 0x3FD70FE400000000, float 0x40048C5460000000>
%93 = insertelement <2 x float> poison, float %86, i64 0
%94 = shufflevector <2 x float> %93, <2 x float> poison, <2 x i32> zeroinitializer
%95 = fmul <2 x float> %94, %92
%96 = fadd <2 x float> %95, <float 0x3FC0199DA0000000, float 0x3FFDF79D60000000>
%97 = fmul <2 x float> %94, %96
%98 = fadd <2 x float> %97, <float 0x3F90784480000000, float 0x3FE0E49940000000>
%99 = fmul <2 x float> %94, %98
%100 = fadd <2 x float> %99, <float 0x3F4595FD00000000, float 0x3FAEFC42A0000000>
%101 = fmul <2 x float> %94, %100
%102 = extractelement <2 x float> %101, i64 1
%103 = fadd float %102, 0x3F632147A0000000
%104 = extractelement <2 x float> %101, i64 0
%105 = fdiv float %104, %103
%106 = tail call i32 @sqrt(double 0x400921FB4D12D84A)
%107 = add i32 %106, 1
%108 = icmp ult i32 %107, 3
%109 = select i1 %108, i32 %106, i32 0
%110 = sitofp i32 %109 to float
%111 = fsub float %110, %105
%112 = fdiv float %111, %84
%113 = fmul float %84, 1.600000e+01
%114 = tail call i32 @floor(float %113)
%115 = sdiv i32 %114, 16
%116 = sitofp i32 %115 to float
%117 = fsub float %84, %116
%118 = fadd float %84, %116
%119 = fneg float %116
%120 = fmul float %119, %116
%121 = tail call float @exp(float %120)
%122 = fneg float %117
%123 = fmul float %118, %122
%124 = tail call float @exp(float %123)
%125 = fmul float %121, %124
%126 = fmul float %125, %112
br label %127
127: ; preds = %82, %78
%128 = phi float [ %126, %82 ], [ %79, %78 ]
%129 = icmp eq i32 %1, 0
br i1 %129, label %130, label %137
130: ; preds = %127
%131 = fcmp ogt float %0, 4.687500e-01
%132 = fsub float 1.000000e+00, %128
%133 = select i1 %131, float %132, float %128
%134 = fcmp olt float %0, -4.687500e-01
br i1 %134, label %135, label %141
135: ; preds = %130
%136 = fadd float %133, -1.000000e+00
br label %141
137: ; preds = %127
%138 = fcmp olt float %0, -4.687500e-01
br i1 %138, label %139, label %141
139: ; preds = %137
%140 = fsub float 2.000000e+00, %128
br label %141
141: ; preds = %137, %139, %130, %135
%142 = phi float [ %136, %135 ], [ %133, %130 ], [ %140, %139 ], [ %128, %137 ]
ret float %142
}