#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 DBL_EPSILON;
double DBL_MIN;
long double fabs(double);
double pow(double, double);
double stub1(double, void *);
double stub2(double, void *);
double stub3(double, void *);
double stub4(double, void *);
double stub5(double, void *);
double stub6(double, void *);
double G_K15I(double f(double, void *), void *cbData, double boun, int inf,
              double a, double b, double *abserr, double *resabs,
              double *resasc) {
  static long double XGK15[8] = {
      0.99145537112081263921, 0.94910791234275852453, 0.86486442335976907279,
      0.74153118559939443986, 0.58608723546769113029, 0.40584515137739716691,
      0.20778495500789846760, 0.00000000000000000000};
  static long double WGK15[8] = {
      0.02293532201052922496, 0.06309209262997855329, 0.10479001032225018384,
      0.14065325971552591875, 0.16900472663926790283, 0.19035057806478540991,
      0.20443294007529889241, 0.20948214108472782801};
  static long double WG7[4] = {0.12948496616886969327, 0.27970539148927666790,
                               0.38183005050511894495, 0.41795918367346938776};
  double fv1[8], fv2[8];
  double adir, adir1, adir2, centr, dinf;
  double fc, fsum, fval1, fval2, hlgth, resg, resk;
  double reskh, result, tadir1, tadir2;
  int j;
  dinf = ((((double)(1.0)) < ((double)inf)) ? ((double)(1.0)) : ((double)inf));
  centr = 0.5 * (a + b);
  hlgth = 0.5 * (b - a);
  tadir1 = boun + dinf * (1.0 - centr) / centr;
  fval1 = (*f)(tadir1, cbData);
  if (inf == 2)
    fval1 += (*f)(-tadir1, cbData);
  fc = (fval1 / centr) / centr;
  resg = fc * WG7[3];
  resk = fc * WGK15[7];
  *resabs = fabs(resk);
  for (j = 0; j < 7; j++) {
    adir = hlgth * XGK15[j];
    adir1 = centr - adir;
    adir2 = centr + adir;
    tadir1 = boun + dinf * (1.0 - adir1) / adir1;
    tadir2 = boun + dinf * (1.0 - adir2) / adir2;
    fval1 = (*f)(tadir1, cbData);
    fval2 = (*f)(tadir2, cbData);
    if (inf == 2) {
      fval1 += (*f)(-tadir1, cbData);
      fval2 += (*f)(-tadir2, cbData);
    }
    fval1 = (fval1 / adir1) / adir1;
    fval2 = (fval2 / adir2) / adir2;
    fv1[j] = fval1;
    fv2[j] = fval2;
    fsum = fval1 + fval2;
    if (j & 1)
      resg += WG7[j / 2] * fsum;
    resk += WGK15[j] * fsum;
    *resabs = (*resabs) + WGK15[j] * (fabs(fval1) + fabs(fval2));
  }
  reskh = resk * 0.5;
  *resasc = WGK15[7] * fabs(fc - reskh);
  for (j = 0; j < 7; j++)
    *resasc =
        (*resasc) + WGK15[j] * (fabs(fv1[j] - reskh) + fabs(fv2[j] - reskh));
  result = resk * hlgth;
  *resabs = (*resabs) * hlgth;
  *resasc = (*resasc) * hlgth;
  *abserr = fabs((resk - resg) * hlgth);
  if ((*resasc != 0.0) && (*abserr != 0.0))
    *abserr = (*resasc) * (((1.0) < (pow((200.0 * (*abserr) / (*resasc)), 1.5)))
                               ? (1.0)
                               : (pow((200.0 * (*abserr) / (*resasc)), 1.5)));
  if (*resabs > DBL_MIN / (50.0 * DBL_EPSILON))
    *abserr = (((DBL_EPSILON * 50.0 * (*resabs)) > ((*abserr)))
                   ? (DBL_EPSILON * 50.0 * (*resabs))
                   : ((*abserr)));
  return result;
}


x86 assembly (clang, -O0):
<G_K15I>:
push   %rbp
mov    %rsp,%rbp
sub    $0x210,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movsd  %xmm0,-0x18(%rbp)
mov    %edx,-0x1c(%rbp)
movsd  %xmm1,-0x28(%rbp)
movsd  %xmm2,-0x30(%rbp)
mov    %rcx,-0x38(%rbp)
mov    %r8,-0x40(%rbp)
mov    %r9,-0x48(%rbp)
cvtsi2sdl -0x1c(%rbp),%xmm0
movsd  0xea2(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    117d <G_K15I+0x5d>
movsd  0xe90(%rip),%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
jmp    118a <G_K15I+0x6a>
cvtsi2sdl -0x1c(%rbp),%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
movsd  -0x198(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x28(%rbp),%xmm1
addsd  -0x30(%rbp),%xmm1
movsd  0xe5c(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x30(%rbp),%xmm1
subsd  -0x28(%rbp),%xmm1
movsd  0xe3e(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movsd  -0xf8(%rbp),%xmm1
ff
movsd  0xe15(%rip),%xmm2
subsd  -0xf0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
divsd  -0xf0(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  -0x148(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x110(%rbp)
ff
cmpl   $0x2,-0x1c(%rbp)
jne    1268 <G_K15I+0x148>
mov    -0x8(%rbp),%rax
movsd  -0x148(%rbp),%xmm0
ff
movq   %xmm0,%rcx
movabs $0x8000000000000000,%rdx
xor    %rdx,%rcx
movq   %rcx,%xmm0
mov    -0x10(%rbp),%rdi
call   *%rax
addsd  -0x110(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x110(%rbp),%xmm0
ff
movsd  -0xf0(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
fldl   -0x100(%rbp)
fldt   0x2edc(%rip)
fmulp  %st,%st(1)
fstpl  -0x128(%rbp)
fldl   -0x100(%rbp)
fldt   0x2e88(%rip)
fmulp  %st,%st(1)
fstpl  -0x130(%rbp)
movsd  -0x130(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fstpl  -0x160(%rbp)
movsd  -0x160(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x0,-0x154(%rbp)
cmpl   $0x7,-0x154(%rbp)
jge    15fb <G_K15I+0x4db>
fldl   -0x120(%rbp)
movslq -0x154(%rbp),%rax
shl    $0x4,%rax
lea    0x2d3e(%rip),%rcx
fldt   (%rax,%rcx,1)
fmulp  %st,%st(1)
fstpl  -0x180(%rbp)
movsd  -0x180(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
subsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
addsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movsd  -0xf8(%rbp),%xmm1
ff
movsd  0xc9e(%rip),%xmm2
subsd  -0xe0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
divsd  -0xe0(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movsd  -0xf8(%rbp),%xmm1
ff
movsd  0xc69(%rip),%xmm2
subsd  -0xe8(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
divsd  -0xe8(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  -0x148(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  -0x150(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x118(%rbp)
ff
cmpl   $0x2,-0x1c(%rbp)
jne    1467 <G_K15I+0x347>
mov    -0x8(%rbp),%rax
movsd  -0x148(%rbp),%xmm0
movq   %xmm0,%rcx
movabs $0x8000000000000000,%rdx
xor    %rdx,%rcx
movq   %rcx,%xmm0
mov    -0x10(%rbp),%rdi
call   *%rax
addsd  -0x110(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  -0x150(%rbp),%xmm0
ff
movq   %xmm0,%rcx
movabs $0x8000000000000000,%rdx
xor    %rdx,%rcx
movq   %rcx,%xmm0
mov    -0x10(%rbp),%rdi
call   *%rax
addsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x110(%rbp),%xmm0
ff
divsd  -0xe0(%rbp),%xmm0
ff
divsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
divsd  -0xe8(%rbp),%xmm0
ff
divsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x110(%rbp),%xmm0
ff
movslq -0x154(%rbp),%rax
movsd  %xmm0,-0x90(%rbp,%rax,8)
ff ff
movsd  -0x118(%rbp),%xmm0
ff
movslq -0x154(%rbp),%rax
movsd  %xmm0,-0xd0(%rbp,%rax,8)
ff ff
movsd  -0x110(%rbp),%xmm0
ff
addsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
mov    -0x154(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     1548 <G_K15I+0x428>
mov    -0x154(%rbp),%eax
mov    %eax,%ecx
shr    $0x1f,%ecx
add    %ecx,%eax
sar    %eax
cltq
shl    $0x4,%rax
lea    0x2c23(%rip),%rcx
fldt   (%rax,%rcx,1)
fldl   -0x108(%rbp)
fldl   -0x128(%rbp)
fxch   %st(2)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpl  -0x188(%rbp)
movsd  -0x188(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
movslq -0x154(%rbp),%rax
shl    $0x4,%rax
lea    0x2b66(%rip),%rcx
fldt   (%rax,%rcx,1)
fldl   -0x108(%rbp)
fldl   -0x130(%rbp)
fxch   %st(2)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpl  -0x130(%rbp)
mov    -0x40(%rbp),%rax
fldl   (%rax)
fstpt  -0x1b0(%rbp)
movslq -0x154(%rbp),%rax
shl    $0x4,%rax
fldt   (%rax,%rcx,1)
fstpt  -0x1a4(%rbp)
movsd  -0x110(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fstpt  -0x1bc(%rbp)
movsd  -0x118(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fldt   -0x1bc(%rbp)
fldt   -0x1b0(%rbp)
fldt   -0x1a4(%rbp)
fxch   %st(2)
faddp  %st,%st(3)
fxch   %st(1)
fmulp  %st,%st(2)
faddp  %st,%st(1)
fstpl  -0x190(%rbp)
movsd  -0x190(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x154(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x154(%rbp)
jmp    12dd <G_K15I+0x1bd>
movsd  -0x130(%rbp),%xmm0
ff
movsd  0x9fd(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
fldt   0x2b13(%rip)
fstpt  -0x1c8(%rbp)
movsd  -0x100(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fldt   -0x1c8(%rbp)
fmulp  %st,%st(1)
fstpl  -0x168(%rbp)
movsd  -0x168(%rbp),%xmm0
ff
mov    -0x48(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x0,-0x154(%rbp)
cmpl   $0x7,-0x154(%rbp)
jge    1722 <G_K15I+0x602>
mov    -0x48(%rbp),%rax
fldl   (%rax)
fstpt  -0x1e0(%rbp)
movslq -0x154(%rbp),%rax
mov    %rax,%rcx
shl    $0x4,%rcx
lea    0x2a2e(%rip),%rdx
fldt   (%rcx,%rdx,1)
fstpt  -0x1d4(%rbp)
movsd  -0x90(%rbp,%rax,8),%xmm0
ff ff
movsd  -0x138(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fstpt  -0x1ec(%rbp)
movslq -0x154(%rbp),%rax
movsd  -0xd0(%rbp,%rax,8),%xmm0
ff ff
movsd  -0x138(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fldt   -0x1ec(%rbp)
fldt   -0x1e0(%rbp)
fldt   -0x1d4(%rbp)
fxch   %st(2)
faddp  %st,%st(3)
fxch   %st(1)
fmulp  %st,%st(2)
faddp  %st,%st(1)
fstpl  -0x178(%rbp)
movsd  -0x178(%rbp),%xmm0
ff
mov    -0x48(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x154(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x154(%rbp)
jmp    1664 <G_K15I+0x544>
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0x120(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
mov    -0x48(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0x120(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x128(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
movsd  -0x120(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fstpl  -0x170(%rbp)
movsd  -0x170(%rbp),%xmm0
ff
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x48(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    17c9 <G_K15I+0x6a9>
jp     17c9 <G_K15I+0x6a9>
jmp    188e <G_K15I+0x76e>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    17e9 <G_K15I+0x6c9>
jp     17e9 <G_K15I+0x6c9>
jmp    188e <G_K15I+0x76e>
mov    -0x48(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x1f8(%rbp)
ff
mov    -0x38(%rbp),%rax
movsd  0x813(%rip),%xmm0
mulsd  (%rax),%xmm0
mov    -0x48(%rbp),%rax
divsd  (%rax),%xmm0
movsd  0x7f7(%rip),%xmm1
call   1040 <pow@plt>
movsd  0x7da(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1845 <G_K15I+0x725>
movsd  0x7c8(%rip),%xmm0
movsd  %xmm0,-0x200(%rbp)
ff
jmp    1872 <G_K15I+0x752>
mov    -0x38(%rbp),%rax
movsd  0x7c7(%rip),%xmm0
mulsd  (%rax),%xmm0
mov    -0x48(%rbp),%rax
divsd  (%rax),%xmm0
movsd  0x7ab(%rip),%xmm1
call   1040 <pow@plt>
movsd  %xmm0,-0x200(%rbp)
ff
movsd  -0x1f8(%rbp),%xmm0
ff
movsd  -0x200(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x273b(%rip),%rax
movsd  (%rax),%xmm1
movsd  0x777(%rip),%xmm2
mov    0x2738(%rip),%rax
mulsd  (%rax),%xmm2
divsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
jbe    1933 <G_K15I+0x813>
movsd  0x756(%rip),%xmm0
mov    0x2717(%rip),%rax
mulsd  (%rax),%xmm0
mov    -0x40(%rbp),%rax
mulsd  (%rax),%xmm0
mov    -0x38(%rbp),%rax
ucomisd (%rax),%xmm0
jbe    1913 <G_K15I+0x7f3>
movsd  0x72d(%rip),%xmm0
mov    0x26ee(%rip),%rax
mulsd  (%rax),%xmm0
mov    -0x40(%rbp),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x208(%rbp)
ff
jmp    1923 <G_K15I+0x803>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x208(%rbp)
ff
movsd  -0x208(%rbp),%xmm0
ff
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x140(%rbp),%xmm0
ff
add    $0x210,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<G_K15I>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x218,%rsp
mov    %edx,%r12d
cvtsi2sd %edx,%xmm3
mov    %r9,0x78(%rsp)
mov    %r8,%r13
mov    %rcx,0x80(%rsp)
mov    %rsi,%rbp
mov    %rdi,%rbx
movsd  0xeaa(%rip),%xmm4
movapd %xmm4,%xmm5
minsd  %xmm3,%xmm5
movapd %xmm1,%xmm6
addsd  %xmm2,%xmm6
movsd  0xe9a(%rip),%xmm3
mulsd  %xmm3,%xmm6
subsd  %xmm1,%xmm2
mulsd  %xmm3,%xmm2
movsd  %xmm2,0x38(%rsp)
subsd  %xmm6,%xmm4
movsd  %xmm5,0x88(%rsp)
mulsd  %xmm5,%xmm4
movsd  %xmm6,0x58(%rsp)
divsd  %xmm6,%xmm4
movsd  %xmm0,0x90(%rsp)
addsd  %xmm0,%xmm4
movapd %xmm4,0x10(%rsp)
movapd %xmm4,%xmm0
mov    %rsi,%rdi
call   *%rbx
movapd %xmm0,%xmm1
cmp    $0x2,%r12d
jne    11e4 <G_K15I+0xc4>
movapd 0x10(%rsp),%xmm0
xorpd  0xea1(%rip),%xmm0
mov    %rbp,%rdi
movsd  %xmm1,0x30(%rsp)
call   *%rbx
movsd  0x30(%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  0x58(%rsp),%xmm0
divsd  %xmm0,%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x30(%rsp)
movsd  %xmm1,0x160(%rsp)
fldl   0x160(%rsp)
fld    %st(0)
fmull  0xe00(%rip)
fstpl  0x150(%rsp)
movsd  0x150(%rsp),%xmm0
movsd  %xmm0,0x40(%rsp)
fmull  0xdec(%rip)
fstpl  0x158(%rsp)
movsd  0x158(%rsp),%xmm0
movsd  %xmm0,0x28(%rsp)
call   1030 <fabs@plt>
fstpl  0x0(%r13)
movsd  0x38(%rsp),%xmm0
movsd  %xmm0,0x168(%rsp)
xor    %r14d,%r14d
fldl   0x168(%rsp)
fstpt  0x174(%rsp)
xor    %r15d,%r15d
jmp    1355 <G_K15I+0x235>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %r15d,%eax
and    $0xfffffffe,%eax
lea    0xef3(%rip),%rcx
fldt   (%rcx,%rax,8)
movsd  %xmm0,0x140(%rsp)
fldl   0x140(%rsp)
movsd  0x40(%rsp),%xmm0
movsd  %xmm0,0x138(%rsp)
fmul   %st,%st(1)
fxch   %st(1)
faddl  0x138(%rsp)
fstpl  0x130(%rsp)
movsd  0x130(%rsp),%xmm0
movsd  %xmm0,0x40(%rsp)
lea    0xe29(%rip),%rax
fldt   (%r14,%rax,1)
fld    %st(0)
fstpt  (%rsp)
movsd  0x28(%rsp),%xmm0
movsd  %xmm0,0x120(%rsp)
fmulp  %st,%st(1)
faddl  0x120(%rsp)
fstpl  0x118(%rsp)
movsd  0x118(%rsp),%xmm0
movsd  %xmm0,0x28(%rsp)
fldl   0x0(%r13)
fstpt  0x60(%rsp)
movapd %xmm1,%xmm0
call   1030 <fabs@plt>
fstpt  0x48(%rsp)
movsd  0x10(%rsp),%xmm0
call   1030 <fabs@plt>
fldt   0x48(%rsp)
faddp  %st,%st(1)
fldt   (%rsp)
fmulp  %st,%st(1)
fldt   0x60(%rsp)
faddp  %st,%st(1)
fstpl  0x0(%r13)
add    $0x1,%r15
add    $0x10,%r14
cmp    $0x7,%r15
je     14be <G_K15I+0x39e>
lea    0xd24(%rip),%rax
fldt   (%r14,%rax,1)
fldt   0x174(%rsp)
fmulp  %st,%st(1)
fstpl  0x148(%rsp)
movsd  0x148(%rsp),%xmm3
movsd  0x58(%rsp),%xmm0
movapd %xmm0,%xmm1
subsd  %xmm3,%xmm1
addsd  %xmm0,%xmm3
movsd  0xc6d(%rip),%xmm4
movapd %xmm4,%xmm0
subsd  %xmm1,%xmm0
movsd  0x88(%rsp),%xmm2
mulsd  %xmm2,%xmm0
movsd  %xmm1,0x98(%rsp)
divsd  %xmm1,%xmm0
movsd  0x90(%rsp),%xmm1
addsd  %xmm1,%xmm0
subsd  %xmm3,%xmm4
mulsd  %xmm2,%xmm4
movsd  %xmm3,0x48(%rsp)
divsd  %xmm3,%xmm4
addsd  %xmm1,%xmm4
movapd %xmm4,0x60(%rsp)
movapd %xmm0,0x180(%rsp)
mov    %rbp,%rdi
call   *%rbx
movsd  %xmm0,(%rsp)
movapd 0x60(%rsp),%xmm0
mov    %rbp,%rdi
call   *%rbx
cmp    $0x2,%r12d
jne    1459 <G_K15I+0x339>
movsd  %xmm0,0x10(%rsp)
movapd 0xc60(%rip),%xmm1
movapd 0x180(%rsp),%xmm0
xorpd  %xmm1,%xmm0
mov    %rbp,%rdi
call   *%rbx
movsd  (%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,(%rsp)
movapd 0x60(%rsp),%xmm0
xorpd  0xc32(%rip),%xmm0
mov    %rbp,%rdi
call   *%rbx
movsd  0x10(%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%rsp)
movsd  0x10(%rsp),%xmm0
movsd  0x98(%rsp),%xmm1
movsd  (%rsp),%xmm2
divsd  %xmm1,%xmm2
divsd  %xmm1,%xmm2
movsd  0x48(%rsp),%xmm1
divsd  %xmm1,%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm2,0x1d0(%rsp,%r15,8)
movsd  %xmm0,0x190(%rsp,%r15,8)
movsd  %xmm0,0x10(%rsp)
addsd  %xmm2,%xmm0
test   $0x1,%r15b
movapd %xmm2,%xmm1
jne    1280 <G_K15I+0x160>
movsd  %xmm0,0x128(%rsp)
fldl   0x128(%rsp)
jmp    12d0 <G_K15I+0x1b0>
movsd  0xb42(%rip),%xmm1
mulsd  0x28(%rsp),%xmm1
movsd  %xmm1,0x10(%rsp)
movsd  0x30(%rsp),%xmm0
subsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fmull  0xb31(%rip)
fstpl  0x110(%rsp)
movsd  0x110(%rsp),%xmm0
mov    0x78(%rsp),%rbp
movsd  %xmm0,0x0(%rbp)
movsd  %xmm0,0x108(%rsp)
movsd  0x1d0(%rsp),%xmm0
subsd  0x10(%rsp),%xmm0
call   1030 <fabs@plt>
fstpt  (%rsp)
movsd  0x190(%rsp),%xmm0
subsd  0x10(%rsp),%xmm0
call   1030 <fabs@plt>
fldt   (%rsp)
faddp  %st,%st(1)
fmull  0xae0(%rip)
faddl  0x108(%rsp)
fstpl  0x100(%rsp)
movsd  0x100(%rsp),%xmm0
movsd  %xmm0,0x0(%rbp)
movsd  %xmm0,0xf8(%rsp)
movsd  0x1d8(%rsp),%xmm0
subsd  0x10(%rsp),%xmm0
call   1030 <fabs@plt>
fstpt  (%rsp)
movsd  0x198(%rsp),%xmm0
subsd  0x10(%rsp),%xmm0
call   1030 <fabs@plt>
fldt   (%rsp)
faddp  %st,%st(1)
fmull  0xa8d(%rip)
faddl  0xf8(%rsp)
fstpl  0xf0(%rsp)
movsd  0xf0(%rsp),%xmm0
movsd  %xmm0,0x0(%rbp)
movsd  %xmm0,0xe8(%rsp)
movsd  0x1e0(%rsp),%xmm0
subsd  0x10(%rsp),%xmm0
call   1030 <fabs@plt>
fstpt  (%rsp)
movsd  0x1a0(%rsp),%xmm0
subsd  0x10(%rsp),%xmm0
call   1030 <fabs@plt>
fldt   (%rsp)
faddp  %st,%st(1)
fmull  0xa3a(%rip)
faddl  0xe8(%rsp)
fstpl  0xe0(%rsp)
movsd  0xe0(%rsp),%xmm0
movsd  %xmm0,0x0(%rbp)
movsd  %xmm0,0xd8(%rsp)
movsd  0x1e8(%rsp),%xmm0
subsd  0x10(%rsp),%xmm0
call   1030 <fabs@plt>
fstpt  (%rsp)
movsd  0x1a8(%rsp),%xmm0
subsd  0x10(%rsp),%xmm0
call   1030 <fabs@plt>
fldt   (%rsp)
faddp  %st,%st(1)
fmull  0x9e7(%rip)
faddl  0xd8(%rsp)
fstpl  0xd0(%rsp)
movsd  0xd0(%rsp),%xmm0
movsd  %xmm0,0x0(%rbp)
movsd  %xmm0,0xc8(%rsp)
movsd  0x1f0(%rsp),%xmm0
subsd  0x10(%rsp),%xmm0
call   1030 <fabs@plt>
fstpt  (%rsp)
movsd  0x1b0(%rsp),%xmm0
subsd  0x10(%rsp),%xmm0
call   1030 <fabs@plt>
fldt   (%rsp)
faddp  %st,%st(1)
fmull  0x994(%rip)
faddl  0xc8(%rsp)
fstpl  0xc0(%rsp)
movsd  0xc0(%rsp),%xmm0
movsd  %xmm0,0x0(%rbp)
movsd  %xmm0,0xb8(%rsp)
movsd  0x1f8(%rsp),%xmm0
subsd  0x10(%rsp),%xmm0
call   1030 <fabs@plt>
fstpt  (%rsp)
movsd  0x1b8(%rsp),%xmm0
subsd  0x10(%rsp),%xmm0
call   1030 <fabs@plt>
fldt   (%rsp)
faddp  %st,%st(1)
fmull  0x941(%rip)
faddl  0xb8(%rsp)
fstpl  0xb0(%rsp)
movsd  0xb0(%rsp),%xmm0
movsd  %xmm0,0x0(%rbp)
movsd  %xmm0,0xa8(%rsp)
movsd  0x200(%rsp),%xmm0
subsd  0x10(%rsp),%xmm0
call   1030 <fabs@plt>
fstpt  (%rsp)
movsd  0x1c0(%rsp),%xmm0
subsd  0x10(%rsp),%xmm0
call   1030 <fabs@plt>
fldt   (%rsp)
faddp  %st,%st(1)
fmull  0x8ee(%rip)
faddl  0xa8(%rsp)
fstpl  0x0(%rbp)
movsd  0x0(%r13),%xmm0
movsd  0x38(%rsp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x0(%r13)
movsd  0x0(%rbp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x0(%rbp)
movsd  0x28(%rsp),%xmm0
subsd  0x40(%rsp),%xmm0
mulsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fstpl  0xa0(%rsp)
movsd  0xa0(%rsp),%xmm0
mov    0x80(%rsp),%rbx
movsd  %xmm0,(%rbx)
movsd  0x0(%rbp),%xmm2
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm2
jne    17d2 <G_K15I+0x6b2>
jnp    183b <G_K15I+0x71b>
ucomisd %xmm1,%xmm0
jne    17da <G_K15I+0x6ba>
jnp    183b <G_K15I+0x71b>
mulsd  0x876(%rip),%xmm0
divsd  %xmm2,%xmm0
movsd  0x872(%rip),%xmm1
movsd  %xmm2,0x10(%rsp)
call   1040 <pow@plt>
movsd  0x7ff(%rip),%xmm1
ucomisd %xmm1,%xmm0
movapd %xmm1,%xmm0
ja     1829 <G_K15I+0x709>
movsd  (%rbx),%xmm0
mulsd  0x841(%rip),%xmm0
divsd  0x0(%rbp),%xmm0
movsd  0x83c(%rip),%xmm1
call   1040 <pow@plt>
movsd  0x10(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,(%rbx)
movapd %xmm1,%xmm0
movsd  0x0(%r13),%xmm1
mov    0x27a0(%rip),%rax
movsd  (%rax),%xmm2
mov    0x2785(%rip),%rax
mulsd  0x80d(%rip),%xmm2
movsd  (%rax),%xmm3
divsd  %xmm2,%xmm3
ucomisd %xmm3,%xmm1
jbe    1875 <G_K15I+0x755>
mulsd  %xmm2,%xmm1
maxsd  %xmm0,%xmm1
movsd  %xmm1,(%rbx)
movsd  0x38(%rsp),%xmm0
mulsd  0x28(%rsp),%xmm0
add    $0x218,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@G_K15I.XGK15 = internal global [8 x x86_fp80] [x86_fp80 0xK3FFEFDD004EA684D8800, x86_fp80 0xK3FFEF2F8BC73E3114800, x86_fp80 0xK3FFEDD67C13DCDD9F000, x86_fp80 0xK3FFEBDD4FCDF1D0EB000, x86_fp80 0xK3FFE9609D024EFD12000, x86_fp80 0xK3FFDCFCAEF88CFEB1000, x86_fp80 0xK3FFCD4C594497063B800, x86_fp80 0xK00000000000000000000]
@G_K15I.WGK15 = internal global [8 x x86_fp80] [x86_fp80 0xK3FF9BBE2DB3EABA38000, x86_fp80 0xK3FFB81366D53DB0E2000, x86_fp80 0xK3FFBD69C251A40A63000, x86_fp80 0xK3FFC9007687A37460800, x86_fp80 0xK3FFCAD0F933723EAE000, x86_fp80 0xK3FFCC2EB430E40758800, x86_fp80 0xK3FFCD156DE5F64E6C000, x86_fp80 0xK3FFCD6827C8438487800]
@G_K15I.WG7 = internal global [4 x x86_fp80] [x86_fp80 0xK3FFC8497B4FC136AB800, x86_fp80 0xK3FFD8F358B89EC322000, x86_fp80 0xK3FFDC37F3A771959E800, x86_fp80 0xK3FFDD5FEBF01E17D3000]
@DBL_MIN = global double 0.000000e+00
@DBL_EPSILON = global double 0.000000e+00
define double @G_K15I(double (double, i8*)* %0, i8* %1, double %2, i32 %3, double %4, double %5, double* %6, double* %7, double* %8) {
%10 = alloca double (double, i8*)*
%11 = alloca i8*
%12 = alloca double
%13 = alloca i32
%14 = alloca double
%15 = alloca double
%16 = alloca double*
%17 = alloca double*
%18 = alloca double*
%19 = alloca [8 x double]
%20 = alloca [8 x double]
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = alloca double
%30 = alloca double
%31 = alloca double
%32 = alloca double
%33 = alloca double
%34 = alloca double
%35 = alloca double
%36 = alloca double
%37 = alloca i32
store double (double, i8*)* %0, double (double, i8*)** %10
store i8* %1, i8** %11
store double %2, double* %12
store i32 %3, i32* %13
store double %4, double* %14
store double %5, double* %15
store double* %6, double** %16
store double* %7, double** %17
store double* %8, double** %18
%38 = load i32, i32* %13
%39 = sitofp i32 %38 to double
%40 = fcmp olt double 1.000000e+00, %39
br i1 %40, label %41, label %42
41: ; preds = %9
br label %45
42: ; preds = %9
%43 = load i32, i32* %13
%44 = sitofp i32 %43 to double
br label %45
45: ; preds = %42, %41
%46 = phi double [ 1.000000e+00, %41 ], [ %44, %42 ]
store double %46, double* %25
%47 = load double, double* %14
%48 = load double, double* %15
%49 = fadd double %47, %48
%50 = fmul double 5.000000e-01, %49
store double %50, double* %24
%51 = load double, double* %15
%52 = load double, double* %14
%53 = fsub double %51, %52
%54 = fmul double 5.000000e-01, %53
store double %54, double* %30
%55 = load double, double* %12
%56 = load double, double* %25
%57 = load double, double* %24
%58 = fsub double 1.000000e+00, %57
%59 = fmul double %56, %58
%60 = load double, double* %24
%61 = fdiv double %59, %60
%62 = fadd double %55, %61
store double %62, double* %35
%63 = load double (double, i8*)*, double (double, i8*)** %10
%64 = load double, double* %35
%65 = load i8*, i8** %11
%66 = call double %63(double %64, i8* %65)
store double %66, double* %28
%67 = load i32, i32* %13
%68 = icmp eq i32 %67, 2
br i1 %68, label %69, label %77
69: ; preds = %45
%70 = load double (double, i8*)*, double (double, i8*)** %10
%71 = load double, double* %35
%72 = fneg double %71
%73 = load i8*, i8** %11
%74 = call double %70(double %72, i8* %73)
%75 = load double, double* %28
%76 = fadd double %75, %74
store double %76, double* %28
br label %77
77: ; preds = %69, %45
%78 = load double, double* %28
%79 = load double, double* %24
%80 = fdiv double %78, %79
%81 = load double, double* %24
%82 = fdiv double %80, %81
store double %82, double* %26
%83 = load double, double* %26
%84 = fpext double %83 to x86_fp80
%85 = load x86_fp80, x86_fp80* getelementptr inbounds ([4 x x86_fp80], [4 x x86_fp80]* @G_K15I.WG7, i64 0, i64 3)
%86 = fmul x86_fp80 %84, %85
%87 = fptrunc x86_fp80 %86 to double
store double %87, double* %31
%88 = load double, double* %26
%89 = fpext double %88 to x86_fp80
%90 = load x86_fp80, x86_fp80* getelementptr inbounds ([8 x x86_fp80], [8 x x86_fp80]* @G_K15I.WGK15, i64 0, i64 7)
%91 = fmul x86_fp80 %89, %90
%92 = fptrunc x86_fp80 %91 to double
store double %92, double* %32
%93 = load double, double* %32
%94 = call x86_fp80 @fabs(double %93)
%95 = fptrunc x86_fp80 %94 to double
%96 = load double*, double** %17
store double %95, double* %96
store i32 0, i32* %37
br label %97
97: ; preds = %219, %77
%98 = load i32, i32* %37
%99 = icmp slt i32 %98, 7
br i1 %99, label %100, label %222
100: ; preds = %97
%101 = load double, double* %30
%102 = fpext double %101 to x86_fp80
%103 = load i32, i32* %37
%104 = sext i32 %103 to i64
%105 = getelementptr inbounds [8 x x86_fp80], [8 x x86_fp80]* @G_K15I.XGK15, i64 0, i64 %104
%106 = load x86_fp80, x86_fp80* %105
%107 = fmul x86_fp80 %102, %106
%108 = fptrunc x86_fp80 %107 to double
store double %108, double* %21
%109 = load double, double* %24
%110 = load double, double* %21
%111 = fsub double %109, %110
store double %111, double* %22
%112 = load double, double* %24
%113 = load double, double* %21
%114 = fadd double %112, %113
store double %114, double* %23
%115 = load double, double* %12
%116 = load double, double* %25
%117 = load double, double* %22
%118 = fsub double 1.000000e+00, %117
%119 = fmul double %116, %118
%120 = load double, double* %22
%121 = fdiv double %119, %120
%122 = fadd double %115, %121
store double %122, double* %35
%123 = load double, double* %12
%124 = load double, double* %25
%125 = load double, double* %23
%126 = fsub double 1.000000e+00, %125
%127 = fmul double %124, %126
%128 = load double, double* %23
%129 = fdiv double %127, %128
%130 = fadd double %123, %129
store double %130, double* %36
%131 = load double (double, i8*)*, double (double, i8*)** %10
%132 = load double, double* %35
%133 = load i8*, i8** %11
%134 = call double %131(double %132, i8* %133)
store double %134, double* %28
%135 = load double (double, i8*)*, double (double, i8*)** %10
%136 = load double, double* %36
%137 = load i8*, i8** %11
%138 = call double %135(double %136, i8* %137)
store double %138, double* %29
%139 = load i32, i32* %13
%140 = icmp eq i32 %139, 2
br i1 %140, label %141, label %156
141: ; preds = %100
%142 = load double (double, i8*)*, double (double, i8*)** %10
%143 = load double, double* %35
%144 = fneg double %143
%145 = load i8*, i8** %11
%146 = call double %142(double %144, i8* %145)
%147 = load double, double* %28
%148 = fadd double %147, %146
store double %148, double* %28
%149 = load double (double, i8*)*, double (double, i8*)** %10
%150 = load double, double* %36
%151 = fneg double %150
%152 = load i8*, i8** %11
%153 = call double %149(double %151, i8* %152)
%154 = load double, double* %29
%155 = fadd double %154, %153
store double %155, double* %29
br label %156
156: ; preds = %141, %100
%157 = load double, double* %28
%158 = load double, double* %22
%159 = fdiv double %157, %158
%160 = load double, double* %22
%161 = fdiv double %159, %160
store double %161, double* %28
%162 = load double, double* %29
%163 = load double, double* %23
%164 = fdiv double %162, %163
%165 = load double, double* %23
%166 = fdiv double %164, %165
store double %166, double* %29
%167 = load double, double* %28
%168 = load i32, i32* %37
%169 = sext i32 %168 to i64
%170 = getelementptr inbounds [8 x double], [8 x double]* %19, i64 0, i64 %169
store double %167, double* %170
%171 = load double, double* %29
%172 = load i32, i32* %37
%173 = sext i32 %172 to i64
%174 = getelementptr inbounds [8 x double], [8 x double]* %20, i64 0, i64 %173
store double %171, double* %174
%175 = load double, double* %28
%176 = load double, double* %29
%177 = fadd double %175, %176
store double %177, double* %27
%178 = load i32, i32* %37
%179 = and i32 %178, 1
%180 = icmp ne i32 %179, 0
br i1 %180, label %181, label %193
181: ; preds = %156
%182 = load i32, i32* %37
%183 = sdiv i32 %182, 2
%184 = sext i32 %183 to i64
%185 = getelementptr inbounds [4 x x86_fp80], [4 x x86_fp80]* @G_K15I.WG7, i64 0, i64 %184
%186 = load x86_fp80, x86_fp80* %185
%187 = load double, double* %27
%188 = fpext double %187 to x86_fp80
%189 = load double, double* %31
%190 = fpext double %189 to x86_fp80
%191 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %186, x86_fp80 %188, x86_fp80 %190)
%192 = fptrunc x86_fp80 %191 to double
store double %192, double* %31
br label %193
193: ; preds = %181, %156
%194 = load i32, i32* %37
%195 = sext i32 %194 to i64
%196 = getelementptr inbounds [8 x x86_fp80], [8 x x86_fp80]* @G_K15I.WGK15, i64 0, i64 %195
%197 = load x86_fp80, x86_fp80* %196
%198 = load double, double* %27
%199 = fpext double %198 to x86_fp80
%200 = load double, double* %32
%201 = fpext double %200 to x86_fp80
%202 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %197, x86_fp80 %199, x86_fp80 %201)
%203 = fptrunc x86_fp80 %202 to double
store double %203, double* %32
%204 = load double*, double** %17
%205 = load double, double* %204
%206 = fpext double %205 to x86_fp80
%207 = load i32, i32* %37
%208 = sext i32 %207 to i64
%209 = getelementptr inbounds [8 x x86_fp80], [8 x x86_fp80]* @G_K15I.WGK15, i64 0, i64 %208
%210 = load x86_fp80, x86_fp80* %209
%211 = load double, double* %28
%212 = call x86_fp80 @fabs(double %211)
%213 = load double, double* %29
%214 = call x86_fp80 @fabs(double %213)
%215 = fadd x86_fp80 %212, %214
%216 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %210, x86_fp80 %215, x86_fp80 %206)
%217 = fptrunc x86_fp80 %216 to double
%218 = load double*, double** %17
store double %217, double* %218
br label %219
219: ; preds = %193
%220 = load i32, i32* %37
%221 = add nsw i32 %220, 1
store i32 %221, i32* %37
br label %97
222: ; preds = %97
%223 = load double, double* %32
%224 = fmul double %223, 5.000000e-01
store double %224, double* %33
%225 = load x86_fp80, x86_fp80* getelementptr inbounds ([8 x x86_fp80], [8 x x86_fp80]* @G_K15I.WGK15, i64 0, i64 7)
%226 = load double, double* %26
%227 = load double, double* %33
%228 = fsub double %226, %227
%229 = call x86_fp80 @fabs(double %228)
%230 = fmul x86_fp80 %225, %229
%231 = fptrunc x86_fp80 %230 to double
%232 = load double*, double** %18
store double %231, double* %232
store i32 0, i32* %37
br label %233
233: ; preds = %262, %222
%234 = load i32, i32* %37
%235 = icmp slt i32 %234, 7
br i1 %235, label %236, label %265
236: ; preds = %233
%237 = load double*, double** %18
%238 = load double, double* %237
%239 = fpext double %238 to x86_fp80
%240 = load i32, i32* %37
%241 = sext i32 %240 to i64
%242 = getelementptr inbounds [8 x x86_fp80], [8 x x86_fp80]* @G_K15I.WGK15, i64 0, i64 %241
%243 = load x86_fp80, x86_fp80* %242
%244 = load i32, i32* %37
%245 = sext i32 %244 to i64
%246 = getelementptr inbounds [8 x double], [8 x double]* %19, i64 0, i64 %245
%247 = load double, double* %246
%248 = load double, double* %33
%249 = fsub double %247, %248
%250 = call x86_fp80 @fabs(double %249)
%251 = load i32, i32* %37
%252 = sext i32 %251 to i64
%253 = getelementptr inbounds [8 x double], [8 x double]* %20, i64 0, i64 %252
%254 = load double, double* %253
%255 = load double, double* %33
%256 = fsub double %254, %255
%257 = call x86_fp80 @fabs(double %256)
%258 = fadd x86_fp80 %250, %257
%259 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %243, x86_fp80 %258, x86_fp80 %239)
%260 = fptrunc x86_fp80 %259 to double
%261 = load double*, double** %18
store double %260, double* %261
br label %262
262: ; preds = %236
%263 = load i32, i32* %37
%264 = add nsw i32 %263, 1
store i32 %264, i32* %37
br label %233
265: ; preds = %233
%266 = load double, double* %32
%267 = load double, double* %30
%268 = fmul double %266, %267
store double %268, double* %34
%269 = load double*, double** %17
%270 = load double, double* %269
%271 = load double, double* %30
%272 = fmul double %270, %271
%273 = load double*, double** %17
store double %272, double* %273
%274 = load double*, double** %18
%275 = load double, double* %274
%276 = load double, double* %30
%277 = fmul double %275, %276
%278 = load double*, double** %18
store double %277, double* %278
%279 = load double, double* %32
%280 = load double, double* %31
%281 = fsub double %279, %280
%282 = load double, double* %30
%283 = fmul double %281, %282
%284 = call x86_fp80 @fabs(double %283)
%285 = fptrunc x86_fp80 %284 to double
%286 = load double*, double** %16
store double %285, double* %286
%287 = load double*, double** %18
%288 = load double, double* %287
%289 = fcmp une double %288, 0.000000e+00
br i1 %289, label %290, label %318
290: ; preds = %265
%291 = load double*, double** %16
%292 = load double, double* %291
%293 = fcmp une double %292, 0.000000e+00
br i1 %293, label %294, label %318
294: ; preds = %290
%295 = load double*, double** %18
%296 = load double, double* %295
%297 = load double*, double** %16
%298 = load double, double* %297
%299 = fmul double 2.000000e+02, %298
%300 = load double*, double** %18
%301 = load double, double* %300
%302 = fdiv double %299, %301
%303 = call double @pow(double %302, double 1.500000e+00)
%304 = fcmp olt double 1.000000e+00, %303
br i1 %304, label %305, label %306
305: ; preds = %294
br label %314
306: ; preds = %294
%307 = load double*, double** %16
%308 = load double, double* %307
%309 = fmul double 2.000000e+02, %308
%310 = load double*, double** %18
%311 = load double, double* %310
%312 = fdiv double %309, %311
%313 = call double @pow(double %312, double 1.500000e+00)
br label %314
314: ; preds = %306, %305
%315 = phi double [ 1.000000e+00, %305 ], [ %313, %306 ]
%316 = fmul double %296, %315
%317 = load double*, double** %16
store double %316, double* %317
br label %318
318: ; preds = %314, %290, %265
%319 = load double*, double** %17
%320 = load double, double* %319
%321 = load double, double* @DBL_MIN
%322 = load double, double* @DBL_EPSILON
%323 = fmul double 5.000000e+01, %322
%324 = fdiv double %321, %323
%325 = fcmp ogt double %320, %324
br i1 %325, label %326, label %347
326: ; preds = %318
%327 = load double, double* @DBL_EPSILON
%328 = fmul double %327, 5.000000e+01
%329 = load double*, double** %17
%330 = load double, double* %329
%331 = fmul double %328, %330
%332 = load double*, double** %16
%333 = load double, double* %332
%334 = fcmp ogt double %331, %333
br i1 %334, label %335, label %341
335: ; preds = %326
%336 = load double, double* @DBL_EPSILON
%337 = fmul double %336, 5.000000e+01
%338 = load double*, double** %17
%339 = load double, double* %338
%340 = fmul double %337, %339
br label %344
341: ; preds = %326
%342 = load double*, double** %16
%343 = load double, double* %342
br label %344
344: ; preds = %341, %335
%345 = phi double [ %340, %335 ], [ %343, %341 ]
%346 = load double*, double** %16
store double %345, double* %346
br label %347
347: ; preds = %344, %318
%348 = load double, double* %34
ret double %348
}

LLVM IR (-O2):
@G_K15I.XGK15 = internal unnamed_addr constant [8 x x86_fp80] [x86_fp80 0xK3FFEFDD004EA684D8800, x86_fp80 0xK3FFEF2F8BC73E3114800, x86_fp80 0xK3FFEDD67C13DCDD9F000, x86_fp80 0xK3FFEBDD4FCDF1D0EB000, x86_fp80 0xK3FFE9609D024EFD12000, x86_fp80 0xK3FFDCFCAEF88CFEB1000, x86_fp80 0xK3FFCD4C594497063B800, x86_fp80 0xK00000000000000000000]
@G_K15I.WGK15 = internal unnamed_addr constant [8 x x86_fp80] [x86_fp80 0xK3FF9BBE2DB3EABA38000, x86_fp80 0xK3FFB81366D53DB0E2000, x86_fp80 0xK3FFBD69C251A40A63000, x86_fp80 0xK3FFC9007687A37460800, x86_fp80 0xK3FFCAD0F933723EAE000, x86_fp80 0xK3FFCC2EB430E40758800, x86_fp80 0xK3FFCD156DE5F64E6C000, x86_fp80 0xK3FFCD6827C8438487800]
@G_K15I.WG7 = internal unnamed_addr constant [4 x x86_fp80] [x86_fp80 0xK3FFC8497B4FC136AB800, x86_fp80 0xK3FFD8F358B89EC322000, x86_fp80 0xK3FFDC37F3A771959E800, x86_fp80 0xK3FFDD5FEBF01E17D3000]
@DBL_MIN = global double 0.000000e+00
@DBL_EPSILON = global double 0.000000e+00
define double @G_K15I(double (double, i8*)* nocapture %0, i8* %1, double %2, i32 %3, double %4, double %5, double* nocapture %6, double* nocapture %7, double* nocapture %8) {
%10 = alloca [8 x double]
%11 = alloca [8 x double]
%12 = bitcast [8 x double]* %10 to i8*
%13 = bitcast [8 x double]* %11 to i8*
%14 = sitofp i32 %3 to double
%15 = fcmp ogt double %14, 1.000000e+00
%16 = select i1 %15, double 1.000000e+00, double %14
%17 = fadd double %4, %5
%18 = fmul double %17, 5.000000e-01
%19 = fsub double %5, %4
%20 = fmul double %19, 5.000000e-01
%21 = fsub double 1.000000e+00, %18
%22 = fmul double %16, %21
%23 = fdiv double %22, %18
%24 = fadd double %23, %2
%25 = tail call double %0(double %24, i8* %1)
%26 = icmp eq i32 %3, 2
br i1 %26, label %27, label %31
27: ; preds = %9
%28 = fneg double %24
%29 = tail call double %0(double %28, i8* %1)
%30 = fadd double %25, %29
br label %31
31: ; preds = %27, %9
%32 = phi double [ %30, %27 ], [ %25, %9 ]
%33 = fdiv double %32, %18
%34 = fdiv double %33, %18
%35 = fpext double %34 to x86_fp80
%36 = fmul x86_fp80 %35, 0xK3FFDD5FEBF01E17D3000
%37 = fptrunc x86_fp80 %36 to double
%38 = fmul x86_fp80 %35, 0xK3FFCD6827C8438487800
%39 = fptrunc x86_fp80 %38 to double
%40 = tail call x86_fp80 @fabs(double %39)
%41 = fptrunc x86_fp80 %40 to double
store double %41, double* %7
%42 = fpext double %20 to x86_fp80
br label %43
43: ; preds = %31, %93
%44 = phi i64 [ 0, %31 ], [ %108, %93 ]
%45 = phi double [ %37, %31 ], [ %95, %93 ]
%46 = phi double [ %39, %31 ], [ %100, %93 ]
%47 = getelementptr inbounds [8 x x86_fp80], [8 x x86_fp80]* @G_K15I.XGK15, i64 0, i64 %44
%48 = load x86_fp80, x86_fp80* %47
%49 = fmul x86_fp80 %48, %42
%50 = fptrunc x86_fp80 %49 to double
%51 = fsub double %18, %50
%52 = fadd double %18, %50
%53 = fsub double 1.000000e+00, %51
%54 = fmul double %16, %53
%55 = fdiv double %54, %51
%56 = fadd double %55, %2
%57 = fsub double 1.000000e+00, %52
%58 = fmul double %16, %57
%59 = fdiv double %58, %52
%60 = fadd double %59, %2
%61 = tail call double %0(double %56, i8* %1)
%62 = tail call double %0(double %60, i8* %1)
br i1 %26, label %63, label %70
63: ; preds = %43
%64 = fneg double %56
%65 = tail call double %0(double %64, i8* %1)
%66 = fadd double %61, %65
%67 = fneg double %60
%68 = tail call double %0(double %67, i8* %1)
%69 = fadd double %62, %68
br label %70
70: ; preds = %63, %43
%71 = phi double [ %69, %63 ], [ %62, %43 ]
%72 = phi double [ %66, %63 ], [ %61, %43 ]
%73 = fdiv double %72, %51
%74 = fdiv double %73, %51
%75 = fdiv double %71, %52
%76 = fdiv double %75, %52
%77 = getelementptr inbounds [8 x double], [8 x double]* %10, i64 0, i64 %44
store double %74, double* %77
%78 = getelementptr inbounds [8 x double], [8 x double]* %11, i64 0, i64 %44
store double %76, double* %78
%79 = fadd double %76, %74
%80 = and i64 %44, 1
%81 = icmp eq i64 %80, 0
br i1 %81, label %82, label %84
82: ; preds = %70
%83 = fpext double %79 to x86_fp80
br label %93
84: ; preds = %70
%85 = lshr i64 %44, 1
%86 = and i64 %85, 2147483647
%87 = getelementptr inbounds [4 x x86_fp80], [4 x x86_fp80]* @G_K15I.WG7, i64 0, i64 %86
%88 = load x86_fp80, x86_fp80* %87
%89 = fpext double %79 to x86_fp80
%90 = fpext double %45 to x86_fp80
%91 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %88, x86_fp80 %89, x86_fp80 %90)
%92 = fptrunc x86_fp80 %91 to double
br label %93
93: ; preds = %82, %84
%94 = phi x86_fp80 [ %83, %82 ], [ %89, %84 ]
%95 = phi double [ %45, %82 ], [ %92, %84 ]
%96 = getelementptr inbounds [8 x x86_fp80], [8 x x86_fp80]* @G_K15I.WGK15, i64 0, i64 %44
%97 = load x86_fp80, x86_fp80* %96
%98 = fpext double %46 to x86_fp80
%99 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %97, x86_fp80 %94, x86_fp80 %98)
%100 = fptrunc x86_fp80 %99 to double
%101 = load double, double* %7
%102 = fpext double %101 to x86_fp80
%103 = tail call x86_fp80 @fabs(double %74)
%104 = tail call x86_fp80 @fabs(double %76)
%105 = fadd x86_fp80 %103, %104
%106 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %97, x86_fp80 %105, x86_fp80 %102)
%107 = fptrunc x86_fp80 %106 to double
store double %107, double* %7
%108 = add nuw nsw i64 %44, 1
%109 = icmp eq i64 %108, 7
br i1 %109, label %110, label %43
110: ; preds = %93
%111 = fmul double %100, 5.000000e-01
%112 = fsub double %34, %111
%113 = tail call x86_fp80 @fabs(double %112)
%114 = fmul x86_fp80 %113, 0xK3FFCD6827C8438487800
%115 = fptrunc x86_fp80 %114 to double
store double %115, double* %8
%116 = fpext double %115 to x86_fp80
%117 = getelementptr inbounds [8 x double], [8 x double]* %10, i64 0, i64 0
%118 = load double, double* %117
%119 = fsub double %118, %111
%120 = tail call x86_fp80 @fabs(double %119)
%121 = getelementptr inbounds [8 x double], [8 x double]* %11, i64 0, i64 0
%122 = load double, double* %121
%123 = fsub double %122, %111
%124 = tail call x86_fp80 @fabs(double %123)
%125 = fadd x86_fp80 %120, %124
%126 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %125, x86_fp80 0xK3FF9BBE2DB3EABA38000, x86_fp80 %116)
%127 = fptrunc x86_fp80 %126 to double
store double %127, double* %8
%128 = fpext double %127 to x86_fp80
%129 = getelementptr inbounds [8 x double], [8 x double]* %10, i64 0, i64 1
%130 = load double, double* %129
%131 = fsub double %130, %111
%132 = tail call x86_fp80 @fabs(double %131)
%133 = getelementptr inbounds [8 x double], [8 x double]* %11, i64 0, i64 1
%134 = load double, double* %133
%135 = fsub double %134, %111
%136 = tail call x86_fp80 @fabs(double %135)
%137 = fadd x86_fp80 %132, %136
%138 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %137, x86_fp80 0xK3FFB81366D53DB0E2000, x86_fp80 %128)
%139 = fptrunc x86_fp80 %138 to double
store double %139, double* %8
%140 = fpext double %139 to x86_fp80
%141 = getelementptr inbounds [8 x double], [8 x double]* %10, i64 0, i64 2
%142 = load double, double* %141
%143 = fsub double %142, %111
%144 = tail call x86_fp80 @fabs(double %143)
%145 = getelementptr inbounds [8 x double], [8 x double]* %11, i64 0, i64 2
%146 = load double, double* %145
%147 = fsub double %146, %111
%148 = tail call x86_fp80 @fabs(double %147)
%149 = fadd x86_fp80 %144, %148
%150 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %149, x86_fp80 0xK3FFBD69C251A40A63000, x86_fp80 %140)
%151 = fptrunc x86_fp80 %150 to double
store double %151, double* %8
%152 = fpext double %151 to x86_fp80
%153 = getelementptr inbounds [8 x double], [8 x double]* %10, i64 0, i64 3
%154 = load double, double* %153
%155 = fsub double %154, %111
%156 = tail call x86_fp80 @fabs(double %155)
%157 = getelementptr inbounds [8 x double], [8 x double]* %11, i64 0, i64 3
%158 = load double, double* %157
%159 = fsub double %158, %111
%160 = tail call x86_fp80 @fabs(double %159)
%161 = fadd x86_fp80 %156, %160
%162 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %161, x86_fp80 0xK3FFC9007687A37460800, x86_fp80 %152)
%163 = fptrunc x86_fp80 %162 to double
store double %163, double* %8
%164 = fpext double %163 to x86_fp80
%165 = getelementptr inbounds [8 x double], [8 x double]* %10, i64 0, i64 4
%166 = load double, double* %165
%167 = fsub double %166, %111
%168 = tail call x86_fp80 @fabs(double %167)
%169 = getelementptr inbounds [8 x double], [8 x double]* %11, i64 0, i64 4
%170 = load double, double* %169
%171 = fsub double %170, %111
%172 = tail call x86_fp80 @fabs(double %171)
%173 = fadd x86_fp80 %168, %172
%174 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %173, x86_fp80 0xK3FFCAD0F933723EAE000, x86_fp80 %164)
%175 = fptrunc x86_fp80 %174 to double
store double %175, double* %8
%176 = fpext double %175 to x86_fp80
%177 = getelementptr inbounds [8 x double], [8 x double]* %10, i64 0, i64 5
%178 = load double, double* %177
%179 = fsub double %178, %111
%180 = tail call x86_fp80 @fabs(double %179)
%181 = getelementptr inbounds [8 x double], [8 x double]* %11, i64 0, i64 5
%182 = load double, double* %181
%183 = fsub double %182, %111
%184 = tail call x86_fp80 @fabs(double %183)
%185 = fadd x86_fp80 %180, %184
%186 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %185, x86_fp80 0xK3FFCC2EB430E40758800, x86_fp80 %176)
%187 = fptrunc x86_fp80 %186 to double
store double %187, double* %8
%188 = fpext double %187 to x86_fp80
%189 = getelementptr inbounds [8 x double], [8 x double]* %10, i64 0, i64 6
%190 = load double, double* %189
%191 = fsub double %190, %111
%192 = tail call x86_fp80 @fabs(double %191)
%193 = getelementptr inbounds [8 x double], [8 x double]* %11, i64 0, i64 6
%194 = load double, double* %193
%195 = fsub double %194, %111
%196 = tail call x86_fp80 @fabs(double %195)
%197 = fadd x86_fp80 %192, %196
%198 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %197, x86_fp80 0xK3FFCD156DE5F64E6C000, x86_fp80 %188)
%199 = fptrunc x86_fp80 %198 to double
store double %199, double* %8
%200 = load double, double* %7
%201 = fmul double %20, %200
store double %201, double* %7
%202 = load double, double* %8
%203 = fmul double %20, %202
store double %203, double* %8
%204 = fsub double %100, %95
%205 = fmul double %20, %204
%206 = tail call x86_fp80 @fabs(double %205)
%207 = fptrunc x86_fp80 %206 to double
store double %207, double* %6
%208 = load double, double* %8
%209 = fcmp une double %208, 0.000000e+00
%210 = fcmp une double %207, 0.000000e+00
%211 = select i1 %209, i1 %210, i1 false
br i1 %211, label %212, label %226
212: ; preds = %110
%213 = fmul double %207, 2.000000e+02
%214 = fdiv double %213, %208
%215 = tail call double @pow(double %214, double 1.500000e+00)
%216 = fcmp ogt double %215, 1.000000e+00
br i1 %216, label %223, label %217
217: ; preds = %212
%218 = load double, double* %6
%219 = fmul double %218, 2.000000e+02
%220 = load double, double* %8
%221 = fdiv double %219, %220
%222 = tail call double @pow(double %221, double 1.500000e+00)
br label %223
223: ; preds = %212, %217
%224 = phi double [ %222, %217 ], [ 1.000000e+00, %212 ]
%225 = fmul double %208, %224
store double %225, double* %6
br label %226
226: ; preds = %223, %110
%227 = phi double [ %225, %223 ], [ %207, %110 ]
%228 = load double, double* %7
%229 = load double, double* @DBL_MIN
%230 = load double, double* @DBL_EPSILON
%231 = fmul double %230, 5.000000e+01
%232 = fdiv double %229, %231
%233 = fcmp ogt double %228, %232
br i1 %233, label %234, label %238
234: ; preds = %226
%235 = fmul double %228, %231
%236 = fcmp ogt double %235, %227
%237 = select i1 %236, double %235, double %227
store double %237, double* %6
br label %238
238: ; preds = %234, %226
%239 = fmul double %20, %100
ret double %239
}