#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 G_K15(double f(double, void *), void *cbData, 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[7], fv2[7];
  double adir, centr, dhlgth;
  double fc, fsum, fval1, fval2, hlgth;
  double resg, resk, reskh, result;
  int j, jtw, jtwm1;
  centr = 0.5 * (a + b);
  hlgth = 0.5 * (b - a);
  dhlgth = fabs(hlgth);
  fc = (*f)(centr, cbData);
  resg = fc * WG7[3];
  resk = fc * WGK15[7];
  *resabs = fabs(resk);
  for (j = 0; j < 3; j++) {
    jtw = 2 * j + 1;
    adir = hlgth * XGK15[jtw];
    fval1 = (*f)(centr - adir, cbData);
    fval2 = (*f)(centr + adir, cbData);
    fv1[jtw] = fval1;
    fv2[jtw] = fval2;
    fsum = fval1 + fval2;
    resg += WG7[j] * fsum;
    resk += WGK15[jtw] * fsum;
    *resabs = *resabs + WGK15[jtw] * (fabs(fval1) + fabs(fval2));
  }
  for (j = 0; j < 4; j++) {
    jtwm1 = j * 2;
    adir = hlgth * XGK15[jtwm1];
    fval1 = (*f)(centr - adir, cbData);
    fval2 = (*f)(centr + adir, cbData);
    fv1[jtwm1] = fval1;
    fv2[jtwm1] = fval2;
    fsum = fval1 + fval2;
    resk = resk + WGK15[jtwm1] * fsum;
    *resabs = (*resabs) + WGK15[jtwm1] * (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) * dhlgth;
  *resasc = (*resasc) * dhlgth;
  *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_K15>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1e0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movsd  %xmm0,-0x18(%rbp)
movsd  %xmm1,-0x20(%rbp)
mov    %rdx,-0x28(%rbp)
mov    %rcx,-0x30(%rbp)
mov    %r8,-0x38(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm1
addsd  %xmm1,%xmm0
movsd  0xea1(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm2
subsd  %xmm2,%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fstpl  -0xc8(%rbp)
mov    -0x8(%rbp),%rax
movsd  -0xc0(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0xd0(%rbp)
ff
fldl   -0xd0(%rbp)
fldt   0x2fb2(%rip)
fmulp  %st,%st(1)
fstpl  -0xf8(%rbp)
fldl   -0xd0(%rbp)
fldt   0x2f5e(%rip)
fmulp  %st,%st(1)
fstpl  -0x100(%rbp)
movsd  -0x100(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fstpl  -0x128(%rbp)
movsd  -0x128(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x0,-0x114(%rbp)
cmpl   $0x3,-0x114(%rbp)
jge    13be <G_K15+0x29e>
mov    -0x114(%rbp),%ecx
mov    %ecx,%eax
lea    0x1(%rax,%rax,1),%eax
mov    %eax,-0x118(%rbp)
fldl   -0xf0(%rbp)
movslq -0x118(%rbp),%rax
shl    $0x4,%rax
lea    0x2e02(%rip),%rcx
fldt   (%rax,%rcx,1)
fmulp  %st,%st(1)
fstpl  -0xb8(%rbp)
mov    -0x8(%rbp),%rax
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movslq -0x118(%rbp),%rax
movsd  %xmm0,-0x70(%rbp,%rax,8)
movsd  -0xe8(%rbp),%xmm0
ff
movslq -0x118(%rbp),%rax
movsd  %xmm0,-0xb0(%rbp,%rax,8)
ff ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  -0xe8(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movslq -0x114(%rbp),%rax
shl    $0x4,%rax
lea    0x2e50(%rip),%rcx
fldt   (%rax,%rcx,1)
fldl   -0xd8(%rbp)
fldl   -0xf8(%rbp)
fxch   %st(2)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpl  -0xf8(%rbp)
movslq -0x118(%rbp),%rax
shl    $0x4,%rax
lea    0x2da3(%rip),%rcx
fldt   (%rax,%rcx,1)
fldl   -0xd8(%rbp)
fldl   -0x100(%rbp)
fxch   %st(2)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpl  -0x100(%rbp)
mov    -0x30(%rbp),%rax
fldl   (%rax)
fstpt  -0x168(%rbp)
movslq -0x118(%rbp),%rax
shl    $0x4,%rax
fldt   (%rax,%rcx,1)
fstpt  -0x15c(%rbp)
movsd  -0xe0(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fstpt  -0x174(%rbp)
movsd  -0xe8(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fldt   -0x174(%rbp)
fldt   -0x168(%rbp)
fldt   -0x15c(%rbp)
fxch   %st(2)
faddp  %st,%st(3)
fxch   %st(1)
fmulp  %st,%st(2)
faddp  %st,%st(1)
fstpl  -0x150(%rbp)
movsd  -0x150(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x114(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x114(%rbp)
jmp    1207 <G_K15+0xe7>
movl   $0x0,-0x114(%rbp)
cmpl   $0x4,-0x114(%rbp)
jge    154c <G_K15+0x42c>
mov    -0x114(%rbp),%eax
add    %eax,%eax
mov    %eax,-0x11c(%rbp)
fldl   -0xf0(%rbp)
movslq -0x11c(%rbp),%rax
shl    $0x4,%rax
lea    0x2c45(%rip),%rcx
fldt   (%rax,%rcx,1)
fmulp  %st,%st(1)
fstpl  -0xb8(%rbp)
mov    -0x8(%rbp),%rax
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movslq -0x11c(%rbp),%rax
movsd  %xmm0,-0x70(%rbp,%rax,8)
movsd  -0xe8(%rbp),%xmm0
ff
movslq -0x11c(%rbp),%rax
movsd  %xmm0,-0xb0(%rbp,%rax,8)
ff ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  -0xe8(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
fldl   -0x100(%rbp)
movslq -0x11c(%rbp),%rax
shl    $0x4,%rax
lea    0x2c0d(%rip),%rcx
fldt   (%rax,%rcx,1)
fldl   -0xd8(%rbp)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpl  -0x100(%rbp)
mov    -0x30(%rbp),%rax
fldl   (%rax)
fstpt  -0x18c(%rbp)
movslq -0x11c(%rbp),%rax
shl    $0x4,%rax
fldt   (%rax,%rcx,1)
fstpt  -0x180(%rbp)
movsd  -0xe0(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fstpt  -0x198(%rbp)
movsd  -0xe8(%rbp),%xmm0
call   1030 <fabs@plt>
fldt   -0x198(%rbp)
fldt   -0x18c(%rbp)
fldt   -0x180(%rbp)
fxch   %st(2)
faddp  %st,%st(3)
fxch   %st(1)
fmulp  %st,%st(2)
faddp  %st,%st(1)
fstpl  -0x148(%rbp)
movsd  -0x148(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x114(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x114(%rbp)
jmp    13c8 <G_K15+0x2a8>
movsd  -0x100(%rbp),%xmm0
ff
movsd  0xaa4(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
fldt   0x2bc2(%rip)
fstpt  -0x1a4(%rbp)
movsd  -0xd0(%rbp),%xmm0
ff
movsd  -0x108(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fldt   -0x1a4(%rbp)
fmulp  %st,%st(1)
fstpl  -0x130(%rbp)
movsd  -0x130(%rbp),%xmm0
ff
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x0,-0x114(%rbp)
cmpl   $0x7,-0x114(%rbp)
jge    1670 <G_K15+0x550>
mov    -0x38(%rbp),%rax
fldl   (%rax)
fstpt  -0x1bc(%rbp)
movslq -0x114(%rbp),%rax
mov    %rax,%rcx
shl    $0x4,%rcx
lea    0x2add(%rip),%rdx
fldt   (%rcx,%rdx,1)
fstpt  -0x1b0(%rbp)
movsd  -0x70(%rbp,%rax,8),%xmm0
movsd  -0x108(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fstpt  -0x1c8(%rbp)
movslq -0x114(%rbp),%rax
movsd  -0xb0(%rbp,%rax,8),%xmm0
ff ff
movsd  -0x108(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fldt   -0x1c8(%rbp)
fldt   -0x1bc(%rbp)
fldt   -0x1b0(%rbp)
fxch   %st(2)
faddp  %st,%st(3)
fxch   %st(1)
fmulp  %st,%st(2)
faddp  %st,%st(1)
fstpl  -0x140(%rbp)
movsd  -0x140(%rbp),%xmm0
ff
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x114(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x114(%rbp)
jmp    15b5 <G_K15+0x495>
movsd  -0x100(%rbp),%xmm0
ff
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
movsd  -0x100(%rbp),%xmm0
ff
movsd  -0xf8(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fstpl  -0x138(%rbp)
movsd  -0x138(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1717 <G_K15+0x5f7>
jp     1717 <G_K15+0x5f7>
jmp    17dc <G_K15+0x6bc>
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1737 <G_K15+0x617>
jp     1737 <G_K15+0x617>
jmp    17dc <G_K15+0x6bc>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x1d0(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x8c5(%rip),%xmm0
mulsd  (%rax),%xmm0
mov    -0x38(%rbp),%rax
divsd  (%rax),%xmm0
movsd  0x8a9(%rip),%xmm1
call   1040 <pow@plt>
movsd  0x894(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1793 <G_K15+0x673>
movsd  0x882(%rip),%xmm0
movsd  %xmm0,-0x1d8(%rbp)
ff
jmp    17c0 <G_K15+0x6a0>
mov    -0x28(%rbp),%rax
movsd  0x879(%rip),%xmm0
mulsd  (%rax),%xmm0
mov    -0x38(%rbp),%rax
divsd  (%rax),%xmm0
movsd  0x85d(%rip),%xmm1
call   1040 <pow@plt>
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  -0x1d0(%rbp),%xmm0
ff
movsd  -0x1d8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x27ed(%rip),%rax
movsd  (%rax),%xmm1
movsd  0x829(%rip),%xmm2
mov    0x27ea(%rip),%rax
mulsd  (%rax),%xmm2
divsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
jbe    1881 <G_K15+0x761>
movsd  0x808(%rip),%xmm0
mov    0x27c9(%rip),%rax
mulsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
mulsd  (%rax),%xmm0
mov    -0x28(%rbp),%rax
ucomisd (%rax),%xmm0
jbe    1861 <G_K15+0x741>
movsd  0x7df(%rip),%xmm0
mov    0x27a0(%rip),%rax
mulsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x1e0(%rbp)
ff
jmp    1871 <G_K15+0x751>
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x1e0(%rbp)
ff
movsd  -0x1e0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x110(%rbp),%xmm0
ff
add    $0x1e0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<G_K15>:
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x330,%rsp
mov    %r8,%r15
mov    %rcx,%r12
mov    %rdx,%r14
mov    %rsi,%r13
mov    %rdi,%rbx
movapd %xmm0,%xmm3
addsd  %xmm1,%xmm3
movsd  0xeb1(%rip),%xmm2
mulsd  %xmm2,%xmm3
movsd  %xmm3,(%rsp)
subsd  %xmm0,%xmm1
mulsd  %xmm2,%xmm1
movsd  %xmm1,0x90(%rsp)
movapd %xmm1,%xmm0
call   1030 <fabs@plt>
fstpt  0x324(%rsp)
movsd  (%rsp),%xmm0
mov    %r13,%rdi
call   *%rbx
movsd  %xmm0,0x150(%rsp)
movsd  %xmm0,0x2b8(%rsp)
fldl   0x2b8(%rsp)
fld    %st(0)
fmull  0xe64(%rip)
fstpt  0x10(%rsp)
fldl   0xe62(%rip)
fld    %st(0)
fstpt  0x318(%rsp)
fmulp  %st,%st(1)
fstpl  0x2b0(%rsp)
movsd  0x2b0(%rsp),%xmm0
movsd  %xmm0,0x118(%rsp)
call   1030 <fabs@plt>
fstpl  (%r12)
movsd  0x90(%rsp),%xmm0
movsd  %xmm0,0x300(%rsp)
fldl   0x300(%rsp)
fld    %st(0)
fstpt  0x20(%rsp)
fldt   0x10(%rsp)
fstpl  0x2a8(%rsp)
fmull  0xe0d(%rip)
movsd  0x2a8(%rsp),%xmm0
movsd  %xmm0,0x80(%rsp)
fstpl  0x2c8(%rsp)
movsd  0x2c8(%rsp),%xmm1
movsd  %xmm1,0x10(%rsp)
movsd  (%rsp),%xmm0
subsd  %xmm1,%xmm0
mov    %r13,%rdi
call   *%rbx
movsd  %xmm0,0xf8(%rsp)
movsd  0x10(%rsp),%xmm0
addsd  (%rsp),%xmm0
mov    %r13,%rdi
call   *%rbx
movapd %xmm0,%xmm2
movsd  %xmm0,0x10(%rsp)
movsd  0xf8(%rsp),%xmm0
movapd %xmm0,%xmm1
addsd  %xmm2,%xmm1
movsd  %xmm1,0x290(%rsp)
fldl   0x290(%rsp)
fld    %st(0)
fmull  0xd93(%rip)
movsd  0x80(%rsp),%xmm1
movsd  %xmm1,0x298(%rsp)
faddl  0x298(%rsp)
fstpt  0x80(%rsp)
movsd  0x118(%rsp),%xmm1
movsd  %xmm1,0x2a0(%rsp)
fldl   0xd63(%rip)
fld    %st(0)
fstpt  0x118(%rsp)
fmulp  %st,%st(1)
faddl  0x2a0(%rsp)
fstpl  0x288(%rsp)
movsd  0x288(%rsp),%xmm1
movsd  %xmm1,0x108(%rsp)
fldl   (%r12)
fstpt  0x50(%rsp)
call   1030 <fabs@plt>
fstpt  0x98(%rsp)
movsd  0x10(%rsp),%xmm0
call   1030 <fabs@plt>
fldt   0x98(%rsp)
faddp  %st,%st(1)
fldt   0x118(%rsp)
fmulp  %st,%st(1)
fldt   0x50(%rsp)
faddp  %st,%st(1)
fstpl  (%r12)
fldt   0x80(%rsp)
fstpl  0x280(%rsp)
fldt   0x20(%rsp)
fmull  0xced(%rip)
movsd  0x280(%rsp),%xmm0
movsd  %xmm0,0x50(%rsp)
fstpl  0x2d0(%rsp)
movsd  0x2d0(%rsp),%xmm1
movsd  %xmm1,0x80(%rsp)
movsd  (%rsp),%xmm0
subsd  %xmm1,%xmm0
mov    %r13,%rdi
call   *%rbx
movsd  %xmm0,0x148(%rsp)
movsd  0x80(%rsp),%xmm0
addsd  (%rsp),%xmm0
mov    %r13,%rdi
call   *%rbx
movapd %xmm0,%xmm2
movsd  %xmm0,0x80(%rsp)
movsd  0x148(%rsp),%xmm0
movapd %xmm0,%xmm1
addsd  %xmm2,%xmm1
movsd  %xmm1,0x268(%rsp)
fldl   0x268(%rsp)
fld    %st(0)
fmull  0xc6d(%rip)
movsd  0x50(%rsp),%xmm1
movsd  %xmm1,0x270(%rsp)
faddl  0x270(%rsp)
fstpt  0x50(%rsp)
movsd  0x108(%rsp),%xmm1
movsd  %xmm1,0x278(%rsp)
fldl   0xc43(%rip)
fld    %st(0)
fstpt  0x108(%rsp)
fmulp  %st,%st(1)
faddl  0x278(%rsp)
fstpl  0x260(%rsp)
movsd  0x260(%rsp),%xmm1
movsd  %xmm1,0x98(%rsp)
fldl   (%r12)
fstpt  0xe8(%rsp)
call   1030 <fabs@plt>
fstpt  0x70(%rsp)
movsd  0x80(%rsp),%xmm0
call   1030 <fabs@plt>
fldt   0x70(%rsp)
faddp  %st,%st(1)
fldt   0x108(%rsp)
fmulp  %st,%st(1)
fldt   0xe8(%rsp)
faddp  %st,%st(1)
fstpl  (%r12)
fldt   0x50(%rsp)
fstpl  0x258(%rsp)
fldt   0x20(%rsp)
fmull  0xbcd(%rip)
movsd  0x258(%rsp),%xmm0
movsd  %xmm0,0x70(%rsp)
fstpl  0x2d8(%rsp)
movsd  0x2d8(%rsp),%xmm1
movsd  %xmm1,0x50(%rsp)
movsd  (%rsp),%xmm0
subsd  %xmm1,%xmm0
mov    %r13,%rdi
call   *%rbx
movsd  %xmm0,0xe8(%rsp)
movsd  0x50(%rsp),%xmm0
addsd  (%rsp),%xmm0
mov    %r13,%rdi
call   *%rbx
movapd %xmm0,%xmm2
movsd  %xmm0,0x50(%rsp)
movsd  0xe8(%rsp),%xmm0
movapd %xmm0,%xmm1
addsd  %xmm2,%xmm1
movsd  %xmm1,0x240(%rsp)
fldl   0x240(%rsp)
fld    %st(0)
fmull  0xb56(%rip)
movsd  0x70(%rsp),%xmm1
movsd  %xmm1,0x248(%rsp)
faddl  0x248(%rsp)
fstpt  0x60(%rsp)
movsd  0x98(%rsp),%xmm1
movsd  %xmm1,0x250(%rsp)
fldl   0xb2c(%rip)
fld    %st(0)
fstpt  0x98(%rsp)
fmulp  %st,%st(1)
faddl  0x250(%rsp)
fstpl  0x238(%rsp)
movsd  0x238(%rsp),%xmm1
movsd  %xmm1,0x70(%rsp)
fldl   (%r12)
fstpt  0x40(%rsp)
call   1030 <fabs@plt>
fstpt  0x30(%rsp)
movsd  0x50(%rsp),%xmm0
call   1030 <fabs@plt>
fldt   0x30(%rsp)
faddp  %st,%st(1)
fldt   0x98(%rsp)
fmulp  %st,%st(1)
fldt   0x40(%rsp)
faddp  %st,%st(1)
fstpl  (%r12)
fldt   0x20(%rsp)
fmull  0xacd(%rip)
fldt   0x60(%rsp)
fstpl  0x230(%rsp)
fstpl  0x2e0(%rsp)
movsd  0x2e0(%rsp),%xmm1
movsd  %xmm1,0x60(%rsp)
movsd  (%rsp),%xmm0
subsd  %xmm1,%xmm0
mov    %r13,%rdi
call   *%rbx
movsd  %xmm0,0xb8(%rsp)
movsd  0x60(%rsp),%xmm0
addsd  (%rsp),%xmm0
mov    %r13,%rdi
call   *%rbx
movapd %xmm0,%xmm2
movsd  %xmm0,0x140(%rsp)
movsd  0xb8(%rsp),%xmm0
movapd %xmm0,%xmm1
addsd  %xmm2,%xmm1
movsd  0x70(%rsp),%xmm2
movsd  %xmm2,0x228(%rsp)
movsd  %xmm1,0x220(%rsp)
fldl   0xa51(%rip)
fld    %st(0)
fstpt  0x70(%rsp)
fmull  0x220(%rsp)
faddl  0x228(%rsp)
fstpl  0x218(%rsp)
movsd  0x218(%rsp),%xmm1
movsd  %xmm1,0x60(%rsp)
fldl   (%r12)
fstpt  0x40(%rsp)
call   1030 <fabs@plt>
fstpt  0x30(%rsp)
movsd  0x140(%rsp),%xmm0
call   1030 <fabs@plt>
fldt   0x30(%rsp)
faddp  %st,%st(1)
fldt   0x70(%rsp)
fmulp  %st,%st(1)
fldt   0x40(%rsp)
faddp  %st,%st(1)
fldt   0x20(%rsp)
fmull  0x9f4(%rip)
fxch   %st(1)
fstpl  (%r12)
fstpl  0x2e8(%rsp)
movsd  0x2e8(%rsp),%xmm1
movsd  %xmm1,0x40(%rsp)
movsd  (%rsp),%xmm0
subsd  %xmm1,%xmm0
mov    %r13,%rdi
call   *%rbx
movsd  %xmm0,0x130(%rsp)
movsd  0x40(%rsp),%xmm0
addsd  (%rsp),%xmm0
mov    %r13,%rdi
call   *%rbx
movapd %xmm0,%xmm2
movsd  %xmm0,0x138(%rsp)
movsd  0x130(%rsp),%xmm0
movapd %xmm0,%xmm1
addsd  %xmm2,%xmm1
movsd  0x60(%rsp),%xmm2
movsd  %xmm2,0x210(%rsp)
movsd  %xmm1,0x208(%rsp)
fldl   0x97d(%rip)
fld    %st(0)
fstpt  0x60(%rsp)
fmull  0x208(%rsp)
faddl  0x210(%rsp)
fstpl  0x200(%rsp)
movsd  0x200(%rsp),%xmm1
movsd  %xmm1,0x40(%rsp)
fldl   (%r12)
fstpt  0x30(%rsp)
call   1030 <fabs@plt>
fstpt  0xd8(%rsp)
movsd  0x138(%rsp),%xmm0
call   1030 <fabs@plt>
fldt   0xd8(%rsp)
faddp  %st,%st(1)
fldt   0x60(%rsp)
fmulp  %st,%st(1)
fldt   0x30(%rsp)
faddp  %st,%st(1)
fldt   0x20(%rsp)
fmull  0x91a(%rip)
fxch   %st(1)
fstpl  (%r12)
fstpl  0x2f0(%rsp)
movsd  0x2f0(%rsp),%xmm1
movsd  %xmm1,0x30(%rsp)
movsd  (%rsp),%xmm0
subsd  %xmm1,%xmm0
mov    %r13,%rdi
call   *%rbx
movsd  %xmm0,0x128(%rsp)
movsd  0x30(%rsp),%xmm0
addsd  (%rsp),%xmm0
mov    %r13,%rdi
call   *%rbx
movapd %xmm0,%xmm2
movsd  %xmm0,0xd8(%rsp)
movsd  0x128(%rsp),%xmm0
movapd %xmm0,%xmm1
addsd  %xmm2,%xmm1
movsd  0x40(%rsp),%xmm2
movsd  %xmm2,0x1f8(%rsp)
movsd  %xmm1,0x1f0(%rsp)
fldl   0x8a3(%rip)
fld    %st(0)
fstpt  0x40(%rsp)
fmull  0x1f0(%rsp)
faddl  0x1f8(%rsp)
fstpl  0x1e8(%rsp)
movsd  0x1e8(%rsp),%xmm1
movsd  %xmm1,0x30(%rsp)
fldl   (%r12)
fstpt  0xc8(%rsp)
call   1030 <fabs@plt>
fstpt  0xa8(%rsp)
movsd  0xd8(%rsp),%xmm0
call   1030 <fabs@plt>
fldt   0xa8(%rsp)
faddp  %st,%st(1)
fldt   0x40(%rsp)
fmulp  %st,%st(1)
fldt   0xc8(%rsp)
faddp  %st,%st(1)
fldt   0x20(%rsp)
fmull  0x83a(%rip)
fxch   %st(1)
fstpl  (%r12)
fstpl  0x2f8(%rsp)
movsd  0x2f8(%rsp),%xmm1
movsd  %xmm1,0x20(%rsp)
movsd  (%rsp),%xmm0
subsd  %xmm1,%xmm0
mov    %r13,%rdi
call   *%rbx
movsd  %xmm0,0xa8(%rsp)
movsd  (%rsp),%xmm0
addsd  0x20(%rsp),%xmm0
mov    %r13,%rdi
call   *%rbx
movsd  %xmm0,0xc8(%rsp)
movsd  0xa8(%rsp),%xmm1
movapd %xmm1,%xmm2
addsd  %xmm0,%xmm2
movsd  0x30(%rsp),%xmm0
movsd  %xmm0,0x1e0(%rsp)
movsd  %xmm2,0x1d8(%rsp)
fldl   0x7c7(%rip)
fld    %st(0)
fstpt  0x30(%rsp)
fmull  0x1d8(%rsp)
faddl  0x1e0(%rsp)
fstpl  0x1d0(%rsp)
movsd  0x1d0(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
fldl   (%r12)
fstpt  (%rsp)
movapd %xmm1,%xmm0
call   1030 <fabs@plt>
fstpt  0x30c(%rsp)
movsd  0xc8(%rsp),%xmm0
call   1030 <fabs@plt>
fldt   0x30c(%rsp)
faddp  %st,%st(1)
fldt   0x30(%rsp)
fmulp  %st,%st(1)
fldt   (%rsp)
faddp  %st,%st(1)
fstpl  (%r12)
movsd  0x6c0(%rip),%xmm1
mulsd  0x20(%rsp),%xmm1
movsd  %xmm1,(%rsp)
movsd  0x150(%rsp),%xmm0
subsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fldt   0x318(%rsp)
fmulp  %st,%st(1)
fstpl  0x1c8(%rsp)
movsd  0x1c8(%rsp),%xmm0
movsd  %xmm0,(%r15)
movsd  %xmm0,0x1c0(%rsp)
movsd  0xb8(%rsp),%xmm0
subsd  (%rsp),%xmm0
call   1030 <fabs@plt>
fstpt  0xb8(%rsp)
movsd  0x140(%rsp),%xmm0
subsd  (%rsp),%xmm0
call   1030 <fabs@plt>
fldt   0xb8(%rsp)
faddp  %st,%st(1)
fldt   0x70(%rsp)
fmulp  %st,%st(1)
faddl  0x1c0(%rsp)
fstpl  0x1b8(%rsp)
movsd  0x1b8(%rsp),%xmm0
movsd  %xmm0,(%r15)
movsd  %xmm0,0x1b0(%rsp)
movsd  0xf8(%rsp),%xmm0
subsd  (%rsp),%xmm0
call   1030 <fabs@plt>
fstpt  0xf8(%rsp)
movsd  0x10(%rsp),%xmm0
subsd  (%rsp),%xmm0
call   1030 <fabs@plt>
fldt   0xf8(%rsp)
faddp  %st,%st(1)
fldt   0x118(%rsp)
fmulp  %st,%st(1)
faddl  0x1b0(%rsp)
fstpl  0x1a8(%rsp)
movsd  0x1a8(%rsp),%xmm0
movsd  %xmm0,(%r15)
movsd  %xmm0,0x1a0(%rsp)
movsd  0x130(%rsp),%xmm0
subsd  (%rsp),%xmm0
call   1030 <fabs@plt>
fstpt  0x10(%rsp)
movsd  0x138(%rsp),%xmm0
subsd  (%rsp),%xmm0
call   1030 <fabs@plt>
fldt   0x10(%rsp)
faddp  %st,%st(1)
fldt   0x60(%rsp)
fmulp  %st,%st(1)
faddl  0x1a0(%rsp)
fstpl  0x198(%rsp)
movsd  0x198(%rsp),%xmm0
movsd  %xmm0,(%r15)
movsd  %xmm0,0x190(%rsp)
movsd  0x148(%rsp),%xmm0
subsd  (%rsp),%xmm0
call   1030 <fabs@plt>
fstpt  0x10(%rsp)
movsd  0x80(%rsp),%xmm0
subsd  (%rsp),%xmm0
call   1030 <fabs@plt>
fldt   0x10(%rsp)
faddp  %st,%st(1)
fldt   0x108(%rsp)
fmulp  %st,%st(1)
faddl  0x190(%rsp)
fstpl  0x188(%rsp)
movsd  0x188(%rsp),%xmm0
movsd  %xmm0,(%r15)
movsd  %xmm0,0x180(%rsp)
movsd  0x128(%rsp),%xmm0
subsd  (%rsp),%xmm0
call   1030 <fabs@plt>
fstpt  0x10(%rsp)
movsd  0xd8(%rsp),%xmm0
subsd  (%rsp),%xmm0
call   1030 <fabs@plt>
fldt   0x10(%rsp)
faddp  %st,%st(1)
fldt   0x40(%rsp)
fmulp  %st,%st(1)
faddl  0x180(%rsp)
fstpl  0x178(%rsp)
movsd  0x178(%rsp),%xmm0
movsd  %xmm0,(%r15)
movsd  %xmm0,0x170(%rsp)
movsd  0xe8(%rsp),%xmm0
subsd  (%rsp),%xmm0
call   1030 <fabs@plt>
fstpt  0x10(%rsp)
movsd  0x50(%rsp),%xmm0
subsd  (%rsp),%xmm0
call   1030 <fabs@plt>
fldt   0x10(%rsp)
faddp  %st,%st(1)
fldt   0x98(%rsp)
fmulp  %st,%st(1)
faddl  0x170(%rsp)
fstpl  0x168(%rsp)
movsd  0x168(%rsp),%xmm0
movsd  %xmm0,(%r15)
movsd  %xmm0,0x160(%rsp)
movsd  0xa8(%rsp),%xmm0
subsd  (%rsp),%xmm0
call   1030 <fabs@plt>
fstpt  0x10(%rsp)
movsd  0xc8(%rsp),%xmm0
subsd  (%rsp),%xmm0
call   1030 <fabs@plt>
fldt   0x10(%rsp)
faddp  %st,%st(1)
fldt   0x30(%rsp)
fmulp  %st,%st(1)
faddl  0x160(%rsp)
fstpl  (%r15)
fldt   0x324(%rsp)
fstpl  0x2c0(%rsp)
movsd  0x2c0(%rsp),%xmm0
movsd  (%r12),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,(%r12)
mulsd  (%r15),%xmm0
movsd  %xmm0,(%r15)
movsd  0x20(%rsp),%xmm0
subsd  0x230(%rsp),%xmm0
mulsd  0x90(%rsp),%xmm0
call   1030 <fabs@plt>
fstpl  0x158(%rsp)
movsd  0x158(%rsp),%xmm0
movsd  %xmm0,(%r14)
movsd  (%r15),%xmm2
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm2
jne    1c69 <G_K15+0xb49>
jnp    1cd2 <G_K15+0xbb2>
ucomisd %xmm1,%xmm0
jne    1c71 <G_K15+0xb51>
jnp    1cd2 <G_K15+0xbb2>
mulsd  0x427(%rip),%xmm0
divsd  %xmm2,%xmm0
movsd  0x423(%rip),%xmm1
movsd  %xmm2,(%rsp)
call   1040 <pow@plt>
movapd %xmm0,%xmm1
movsd  0x415(%rip),%xmm0
ucomisd %xmm0,%xmm1
ja     1cc0 <G_K15+0xba0>
movsd  (%r14),%xmm0
mulsd  0x3f2(%rip),%xmm0
divsd  (%r15),%xmm0
movsd  0x3ed(%rip),%xmm1
call   1040 <pow@plt>
movsd  (%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,(%r14)
movapd %xmm1,%xmm0
movsd  0x90(%rsp),%xmm4
movsd  0x20(%rsp),%xmm5
movsd  (%r12),%xmm1
mov    0x22fa(%rip),%rax
movsd  (%rax),%xmm2
mov    0x22df(%rip),%rax
mulsd  0x3b7(%rip),%xmm2
movsd  (%rax),%xmm3
divsd  %xmm2,%xmm3
ucomisd %xmm3,%xmm1
jbe    1d1c <G_K15+0xbfc>
mulsd  %xmm2,%xmm1
maxsd  %xmm0,%xmm1
movsd  %xmm1,(%r14)
mulsd  %xmm5,%xmm4
movapd %xmm4,%xmm0
add    $0x330,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
ret

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

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