#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_K31(double f(double, void *), void *cbData, double a, double b,
             double *abserr, double *resabs, double *resasc) {
  static long double XGK31[16] = {
      0.99800229869339706029, 0.98799251802048542849, 0.96773907567913913426,
      0.93727339240070590431, 0.89726453234408190088, 0.84820658341042721620,
      0.79041850144246593297, 0.72441773136017004742, 0.65099674129741697053,
      0.57097217260853884754, 0.48508186364023968069, 0.39415134707756336990,
      0.29918000715316881217, 0.20119409399743452230, 0.10114206691871749903,
      0.00000000000000000000};
  static long double WGK31[16] = {
      0.00537747987292334899, 0.01500794732931612254, 0.02546084732671532019,
      0.03534636079137584622, 0.04458975132476487661, 0.05348152469092808727,
      0.06200956780067064029, 0.06985412131872825871, 0.07684968075772037889,
      0.08308050282313302104, 0.08856444305621177065, 0.09312659817082532123,
      0.09664272698362367851, 0.09917359872179195933, 0.10076984552387559504,
      0.10133000701479154902};
  static long double WG15[8] = {0.03075324199611726835, 0.07036604748810812471,
                                0.10715922046717193501, 0.13957067792615431445,
                                0.16626920581699393355, 0.18616100001556221103,
                                0.19843148532711157646, 0.20257824192556127288};
  double fv1[15], fv2[15];
  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 * WG15[7];
  resk = fc * WGK31[15];
  *resabs = fabs(resk);
  for (j = 0; j < 7; j++) {
    jtw = 2 * j + 1;
    adir = hlgth * XGK31[jtw];
    fval1 = (*f)(centr - adir, cbData);
    fval2 = (*f)(centr + adir, cbData);
    fv1[jtw] = fval1;
    fv2[jtw] = fval2;
    fsum = fval1 + fval2;
    resg += WG15[j] * fsum;
    resk += WGK31[jtw] * fsum;
    *resabs = *resabs + WGK31[jtw] * (fabs(fval1) + fabs(fval2));
  }
  for (j = 0; j < 8; j++) {
    jtwm1 = j * 2;
    adir = hlgth * XGK31[jtwm1];
    fval1 = (*f)(centr - adir, cbData);
    fval2 = (*f)(centr + adir, cbData);
    fv1[jtwm1] = fval1;
    fv2[jtwm1] = fval2;
    fsum = fval1 + fval2;
    resk = resk + WGK31[jtwm1] * fsum;
    *resabs = (*resabs) + WGK31[jtwm1] * (fabs(fval1) + fabs(fval2));
  }
  reskh = resk * 0.5;
  *resasc = WGK31[15] * fabs(fc - reskh);
  for (j = 0; j < 15; j++)
    *resasc =
        (*resasc) + WGK31[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_K31>:
push   %rbp
mov    %rsp,%rbp
sub    $0x260,%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,-0x140(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm2
subsd  %xmm2,%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fstpl  -0x148(%rbp)
mov    -0x8(%rbp),%rax
movsd  -0x140(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x150(%rbp)
ff
fldl   -0x150(%rbp)
fldt   0x30f2(%rip)
fmulp  %st,%st(1)
fstpl  -0x178(%rbp)
fldl   -0x150(%rbp)
fldt   0x305e(%rip)
fmulp  %st,%st(1)
fstpl  -0x180(%rbp)
movsd  -0x180(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fstpl  -0x1a8(%rbp)
movsd  -0x1a8(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x0,-0x194(%rbp)
cmpl   $0x7,-0x194(%rbp)
jge    13c1 <G_K31+0x2a1>
mov    -0x194(%rbp),%ecx
mov    %ecx,%eax
lea    0x1(%rax,%rax,1),%eax
mov    %eax,-0x198(%rbp)
fldl   -0x170(%rbp)
movslq -0x198(%rbp),%rax
shl    $0x4,%rax
lea    0x2e02(%rip),%rcx
fldt   (%rax,%rcx,1)
fmulp  %st,%st(1)
fstpl  -0x138(%rbp)
mov    -0x8(%rbp),%rax
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x160(%rbp),%xmm0
ff
movslq -0x198(%rbp),%rax
movsd  %xmm0,-0xb0(%rbp,%rax,8)
ff ff
movsd  -0x168(%rbp),%xmm0
ff
movslq -0x198(%rbp),%rax
movsd  %xmm0,-0x130(%rbp,%rax,8)
ff ff
movsd  -0x160(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movslq -0x194(%rbp),%rax
shl    $0x4,%rax
lea    0x2f4d(%rip),%rcx
fldt   (%rax,%rcx,1)
fldl   -0x158(%rbp)
fldl   -0x178(%rbp)
fxch   %st(2)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpl  -0x178(%rbp)
movslq -0x198(%rbp),%rax
shl    $0x4,%rax
lea    0x2e20(%rip),%rcx
fldt   (%rax,%rcx,1)
fldl   -0x158(%rbp)
fldl   -0x180(%rbp)
fxch   %st(2)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpl  -0x180(%rbp)
mov    -0x30(%rbp),%rax
fldl   (%rax)
fstpt  -0x1e8(%rbp)
movslq -0x198(%rbp),%rax
shl    $0x4,%rax
fldt   (%rax,%rcx,1)
fstpt  -0x1dc(%rbp)
movsd  -0x160(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fstpt  -0x1f4(%rbp)
movsd  -0x168(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fldt   -0x1f4(%rbp)
fldt   -0x1e8(%rbp)
fldt   -0x1dc(%rbp)
fxch   %st(2)
faddp  %st,%st(3)
fxch   %st(1)
fmulp  %st,%st(2)
faddp  %st,%st(1)
fstpl  -0x1d0(%rbp)
movsd  -0x1d0(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x194(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x194(%rbp)
jmp    1207 <G_K31+0xe7>
movl   $0x0,-0x194(%rbp)
cmpl   $0x8,-0x194(%rbp)
jge    1552 <G_K31+0x432>
mov    -0x194(%rbp),%eax
add    %eax,%eax
mov    %eax,-0x19c(%rbp)
fldl   -0x170(%rbp)
movslq -0x19c(%rbp),%rax
shl    $0x4,%rax
lea    0x2c42(%rip),%rcx
fldt   (%rax,%rcx,1)
fmulp  %st,%st(1)
fstpl  -0x138(%rbp)
mov    -0x8(%rbp),%rax
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x160(%rbp),%xmm0
ff
movslq -0x19c(%rbp),%rax
movsd  %xmm0,-0xb0(%rbp,%rax,8)
ff ff
movsd  -0x168(%rbp),%xmm0
ff
movslq -0x19c(%rbp),%rax
movsd  %xmm0,-0x130(%rbp,%rax,8)
ff ff
movsd  -0x160(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
fldl   -0x180(%rbp)
movslq -0x19c(%rbp),%rax
shl    $0x4,%rax
lea    0x2c87(%rip),%rcx
fldt   (%rax,%rcx,1)
fldl   -0x158(%rbp)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpl  -0x180(%rbp)
mov    -0x30(%rbp),%rax
fldl   (%rax)
fstpt  -0x20c(%rbp)
movslq -0x19c(%rbp),%rax
shl    $0x4,%rax
fldt   (%rax,%rcx,1)
fstpt  -0x200(%rbp)
movsd  -0x160(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fstpt  -0x218(%rbp)
movsd  -0x168(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fldt   -0x218(%rbp)
fldt   -0x20c(%rbp)
fldt   -0x200(%rbp)
fxch   %st(2)
faddp  %st,%st(3)
fxch   %st(1)
fmulp  %st,%st(2)
faddp  %st,%st(1)
fstpl  -0x1c8(%rbp)
movsd  -0x1c8(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x194(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x194(%rbp)
jmp    13cb <G_K31+0x2ab>
movsd  -0x180(%rbp),%xmm0
ff
movsd  0xa9e(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
fldt   0x2cbc(%rip)
fstpt  -0x224(%rbp)
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x188(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fldt   -0x224(%rbp)
fmulp  %st,%st(1)
fstpl  -0x1b0(%rbp)
movsd  -0x1b0(%rbp),%xmm0
ff
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x0,-0x194(%rbp)
cmpl   $0xf,-0x194(%rbp)
jge    1679 <G_K31+0x559>
mov    -0x38(%rbp),%rax
fldl   (%rax)
fstpt  -0x23c(%rbp)
movslq -0x194(%rbp),%rax
mov    %rax,%rcx
shl    $0x4,%rcx
lea    0x2b57(%rip),%rdx
fldt   (%rcx,%rdx,1)
fstpt  -0x230(%rbp)
movsd  -0xb0(%rbp,%rax,8),%xmm0
ff ff
movsd  -0x188(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fstpt  -0x248(%rbp)
movslq -0x194(%rbp),%rax
movsd  -0x130(%rbp,%rax,8),%xmm0
ff ff
movsd  -0x188(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fldt   -0x248(%rbp)
fldt   -0x23c(%rbp)
fldt   -0x230(%rbp)
fxch   %st(2)
faddp  %st,%st(3)
fxch   %st(1)
fmulp  %st,%st(2)
faddp  %st,%st(1)
fstpl  -0x1c0(%rbp)
movsd  -0x1c0(%rbp),%xmm0
ff
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x194(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x194(%rbp)
jmp    15bb <G_K31+0x49b>
movsd  -0x180(%rbp),%xmm0
ff
movsd  -0x170(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x190(%rbp)
ff
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0x148(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0x148(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
movsd  -0x180(%rbp),%xmm0
ff
movsd  -0x178(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
movsd  -0x170(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fstpl  -0x1b8(%rbp)
movsd  -0x1b8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1720 <G_K31+0x600>
jp     1720 <G_K31+0x600>
jmp    17e5 <G_K31+0x6c5>
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1740 <G_K31+0x620>
jp     1740 <G_K31+0x620>
jmp    17e5 <G_K31+0x6c5>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x250(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x8bc(%rip),%xmm0
mulsd  (%rax),%xmm0
mov    -0x38(%rbp),%rax
divsd  (%rax),%xmm0
movsd  0x8a0(%rip),%xmm1
call   1040 <pow@plt>
movsd  0x88b(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    179c <G_K31+0x67c>
movsd  0x879(%rip),%xmm0
movsd  %xmm0,-0x258(%rbp)
ff
jmp    17c9 <G_K31+0x6a9>
mov    -0x28(%rbp),%rax
movsd  0x870(%rip),%xmm0
mulsd  (%rax),%xmm0
mov    -0x38(%rbp),%rax
divsd  (%rax),%xmm0
movsd  0x854(%rip),%xmm1
call   1040 <pow@plt>
movsd  %xmm0,-0x258(%rbp)
ff
movsd  -0x250(%rbp),%xmm0
ff
movsd  -0x258(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x27e4(%rip),%rax
movsd  (%rax),%xmm1
movsd  0x820(%rip),%xmm2
mov    0x27e1(%rip),%rax
mulsd  (%rax),%xmm2
divsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
jbe    188a <G_K31+0x76a>
movsd  0x7ff(%rip),%xmm0
mov    0x27c0(%rip),%rax
mulsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
mulsd  (%rax),%xmm0
mov    -0x28(%rbp),%rax
ucomisd (%rax),%xmm0
jbe    186a <G_K31+0x74a>
movsd  0x7d6(%rip),%xmm0
mov    0x2797(%rip),%rax
mulsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x260(%rbp)
ff
jmp    187a <G_K31+0x75a>
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x260(%rbp)
ff
movsd  -0x260(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x190(%rbp),%xmm0
ff
add    $0x260,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<G_K31>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x228,%rsp
mov    %r8,0x78(%rsp)
mov    %rcx,%rbp
mov    %rdx,0x80(%rsp)
movapd %xmm1,%xmm2
mov    %rsi,%r13
mov    %rdi,%r14
movapd %xmm0,%xmm3
addsd  %xmm1,%xmm3
movsd  0xea5(%rip),%xmm1
mulsd  %xmm1,%xmm3
movsd  %xmm3,(%rsp)
subsd  %xmm0,%xmm2
mulsd  %xmm1,%xmm2
movsd  %xmm2,0x40(%rsp)
movapd %xmm2,%xmm0
call   1030 <fabs@plt>
fstpt  0x124(%rsp)
movsd  (%rsp),%xmm0
mov    %r13,%rdi
call   *%r14
movsd  %xmm0,0x70(%rsp)
movsd  %xmm0,0x110(%rsp)
fldl   0x110(%rsp)
fld    %st(0)
fmull  0xe5d(%rip)
fstpt  0x30(%rsp)
fmull  0xe5b(%rip)
fstpl  0x108(%rsp)
movsd  0x108(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
call   1030 <fabs@plt>
fstpl  0x0(%rbp)
movsd  0x40(%rsp),%xmm0
movsd  %xmm0,0x118(%rsp)
fldl   0x118(%rsp)
fldt   0x30(%rsp)
fstpl  0x100(%rsp)
xor    %r15d,%r15d
movsd  0x100(%rsp),%xmm0
lea    0xe39(%rip),%rbx
lea    0xf32(%rip),%r12
fld    %st(0)
fstpt  0x4c(%rsp)
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movsd  %xmm0,0x30(%rsp)
fldt   0x10(%rbx,%r15,2)
fmulp  %st,%st(1)
fstpl  0xe8(%rsp)
movsd  0xe8(%rsp),%xmm1
movsd  %xmm1,0x10(%rsp)
movsd  (%rsp),%xmm0
subsd  %xmm1,%xmm0
mov    %r13,%rdi
call   *%r14
movsd  %xmm0,0x20(%rsp)
movsd  0x10(%rsp),%xmm0
addsd  (%rsp),%xmm0
mov    %r13,%rdi
call   *%r14
movsd  %xmm0,0x10(%rsp)
movsd  0x20(%rsp),%xmm1
movsd  %xmm1,0x1b8(%rsp,%r15,1)
movsd  %xmm0,0x138(%rsp,%r15,1)
movapd %xmm1,%xmm2
addsd  %xmm0,%xmm2
lea    0xfa8(%rip),%rax
fldt   (%r15,%rax,1)
movsd  %xmm2,0xe0(%rsp)
fldl   0xe0(%rsp)
movsd  0x30(%rsp),%xmm0
movsd  %xmm0,0xf8(%rsp)
fmul   %st,%st(1)
fxch   %st(1)
faddl  0xf8(%rsp)
fstpt  0x30(%rsp)
fldt   0x10(%r12,%r15,2)
fld    %st(0)
fstpt  0x58(%rsp)
movsd  0x8(%rsp),%xmm0
movsd  %xmm0,0xf0(%rsp)
fmulp  %st,%st(1)
faddl  0xf0(%rsp)
fstpl  0xd8(%rsp)
movsd  0xd8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
fldl   0x0(%rbp)
fstpt  0x64(%rsp)
movapd %xmm1,%xmm0
call   1030 <fabs@plt>
fstpt  0x20(%rsp)
movsd  0x10(%rsp),%xmm0
call   1030 <fabs@plt>
fldt   0x4c(%rsp)
fldt   0x20(%rsp)
faddp  %st,%st(2)
fldt   0x58(%rsp)
fmulp  %st,%st(2)
fldt   0x64(%rsp)
faddp  %st,%st(2)
fxch   %st(1)
fstpl  0x0(%rbp)
fldt   0x30(%rsp)
fstpl  0xd0(%rsp)
movsd  0xd0(%rsp),%xmm0
add    $0x10,%r15
cmp    $0x70,%r15
jne    1220 <G_K31+0x100>
movsd  %xmm0,0x30(%rsp)
xor    %ebx,%ebx
mov    %rbp,%r15
xor    %ebp,%ebp
nopl   0x0(%rax)
lea    0xcc9(%rip),%rax
fldt   0x0(%rbp,%rax,1)
fmulp  %st,%st(1)
fstpl  0xc0(%rsp)
movsd  0xc0(%rsp),%xmm1
movsd  %xmm1,0x10(%rsp)
movsd  (%rsp),%xmm0
subsd  %xmm1,%xmm0
mov    %r13,%rdi
call   *%r14
movsd  %xmm0,0x20(%rsp)
movsd  0x10(%rsp),%xmm0
addsd  (%rsp),%xmm0
mov    %r13,%rdi
call   *%r14
movsd  %xmm0,0x58(%rsp)
movsd  0x20(%rsp),%xmm2
movsd  %xmm2,0x1b0(%rsp,%rbx,1)
movsd  %xmm0,0x130(%rsp,%rbx,1)
movapd %xmm2,%xmm3
addsd  %xmm0,%xmm3
movsd  0x8(%rsp),%xmm1
movsd  %xmm1,0xc8(%rsp)
fldt   0x0(%rbp,%r12,1)
fld    %st(0)
fstpt  0x10(%rsp)
movsd  %xmm3,0xb8(%rsp)
fmull  0xb8(%rsp)
faddl  0xc8(%rsp)
fstpl  0xb0(%rsp)
movsd  0xb0(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
fldl   (%r15)
fstpt  0x64(%rsp)
movapd %xmm2,%xmm0
call   1030 <fabs@plt>
fstpt  0x20(%rsp)
movsd  0x58(%rsp),%xmm0
call   1030 <fabs@plt>
fldt   0x4c(%rsp)
fldt   0x20(%rsp)
faddp  %st,%st(2)
fldt   0x10(%rsp)
fmulp  %st,%st(2)
fldt   0x64(%rsp)
faddp  %st,%st(2)
fxch   %st(1)
fstpl  (%r15)
add    $0x20,%rbp
add    $0x10,%rbx
cmp    $0x80,%rbx
jne    1370 <G_K31+0x250>
fstp   %st(0)
movsd  0xb81(%rip),%xmm1
mulsd  0x8(%rsp),%xmm1
movsd  0x70(%rsp),%xmm0
movsd  %xmm1,(%rsp)
subsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fmull  0xb71(%rip)
fstpl  0xa8(%rsp)
movsd  0xa8(%rsp),%xmm0
mov    0x78(%rsp),%rbp
movsd  %xmm0,0x0(%rbp)
xor    %ebx,%ebx
nopl   0x0(%rax,%rax,1)
movsd  %xmm0,0xa0(%rsp)
fldt   (%r12)
fstpt  0x4c(%rsp)
movsd  0x1b0(%rsp,%rbx,8),%xmm0
subsd  (%rsp),%xmm0
call   1030 <fabs@plt>
fstpt  0x10(%rsp)
movsd  0x130(%rsp,%rbx,8),%xmm0
subsd  (%rsp),%xmm0
call   1030 <fabs@plt>
fldt   0x10(%rsp)
faddp  %st,%st(1)
fldt   0x4c(%rsp)
fmulp  %st,%st(1)
faddl  0xa0(%rsp)
fstpl  0x98(%rsp)
movsd  0x98(%rsp),%xmm0
movsd  %xmm0,0x0(%rbp)
add    $0x1,%rbx
add    $0x10,%r12
cmp    $0xf,%rbx
jne    14c0 <G_K31+0x3a0>
fldt   0x124(%rsp)
fstpl  0x90(%rsp)
movsd  0x90(%rsp),%xmm0
movsd  (%r15),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,(%r15)
mulsd  0x0(%rbp),%xmm0
movsd  %xmm0,0x0(%rbp)
movsd  0x8(%rsp),%xmm0
subsd  0x30(%rsp),%xmm0
mulsd  0x40(%rsp),%xmm0
call   1030 <fabs@plt>
fstpl  0x88(%rsp)
movsd  0x88(%rsp),%xmm0
mov    0x80(%rsp),%rbx
movsd  %xmm0,(%rbx)
movsd  0x0(%rbp),%xmm2
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm2
jne    15a4 <G_K31+0x484>
jnp    160b <G_K31+0x4eb>
ucomisd %xmm1,%xmm0
jne    15ac <G_K31+0x48c>
jnp    160b <G_K31+0x4eb>
mulsd  0xa64(%rip),%xmm0
divsd  %xmm2,%xmm0
movsd  0xa60(%rip),%xmm1
movsd  %xmm2,(%rsp)
call   1040 <pow@plt>
movapd %xmm0,%xmm1
movsd  0xa52(%rip),%xmm0
ucomisd %xmm0,%xmm1
ja     15fa <G_K31+0x4da>
movsd  (%rbx),%xmm0
mulsd  0xa30(%rip),%xmm0
divsd  0x0(%rbp),%xmm0
movsd  0xa2b(%rip),%xmm1
call   1040 <pow@plt>
movsd  (%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,(%rbx)
movapd %xmm1,%xmm0
movsd  0x8(%rsp),%xmm4
movsd  (%r15),%xmm1
mov    0x29cb(%rip),%rax
movsd  (%rax),%xmm2
mov    0x29b0(%rip),%rax
mulsd  0xa00(%rip),%xmm2
movsd  (%rax),%xmm3
divsd  %xmm2,%xmm3
ucomisd %xmm3,%xmm1
jbe    164a <G_K31+0x52a>
mulsd  %xmm2,%xmm1
maxsd  %xmm0,%xmm1
movsd  %xmm1,(%rbx)
movsd  0x40(%rsp),%xmm0
mulsd  %xmm4,%xmm0
add    $0x228,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@G_K31.XGK31 = internal global [16 x x86_fp80] [x86_fp80 0xK3FFEFF7D142238911800, x86_fp80 0xK3FFEFCED13E197368000, x86_fp80 0xK3FFEF7BDBF811A697000, x86_fp80 0xK3FFEEFF12627C5A24000, x86_fp80 0xK3FFEE5B320DE47501800, x86_fp80 0xK3FFED924110FFFEB1800, x86_fp80 0xK3FFECA58DDEDD945B800, x86_fp80 0xK3FFEB97370C0D59E2000, x86_fp80 0xK3FFEA6A7B8F1ACCB6800, x86_fp80 0xK3FFE922B3B78479D2000, x86_fp80 0xK3FFDF85CA6686F642800, x86_fp80 0xK3FFDC9CE3492BEB5B000, x86_fp80 0xK3FFD992E1F34AE083000, x86_fp80 0xK3FFCCE05D3177825A800, x86_fp80 0xK3FFBCF23926D536CF000, x86_fp80 0xK00000000000000000000]
@G_K31.WGK31 = internal global [16 x x86_fp80] [x86_fp80 0xK3FF7B0359218348F8000, x86_fp80 0xK3FF8F5E3E4BD68807800, x86_fp80 0xK3FF9D093445318186800, x86_fp80 0xK3FFA90C7587A1AEF6000, x86_fp80 0xK3FFAB6A3BE3AD3823000, x86_fp80 0xK3FFADB0F7177CDD5B800, x86_fp80 0xK3FFAFDFDBE9BE339D000, x86_fp80 0xK3FFB8F0FAD7470230000, x86_fp80 0xK3FFB9D635D8C7FE58800, x86_fp80 0xK3FFBAA261C547C17A800, x86_fp80 0xK3FFBB56146541E7B6800, x86_fp80 0xK3FFBBEB9286C405D6800, x86_fp80 0xK3FFBC5EC9F3E53CE1800, x86_fp80 0xK3FFBCB1B87191802B000, x86_fp80 0xK3FFBCE606BB7958A4800, x86_fp80 0xK3FFBCF861B51DB187800]
@G_K31.WG15 = internal global [8 x x86_fp80] [x86_fp80 0xK3FF9FBEE3913D148D800, x86_fp80 0xK3FFB901C1305AE813000, x86_fp80 0xK3FFBDB764B1AF88A3000, x86_fp80 0xK3FFC8EEB9DA4B18B0800, x86_fp80 0xK3FFCAA42798543768800, x86_fp80 0xK3FFCBEA0FD3B6E133800, x86_fp80 0xK3FFCCB319F8FE8167000, x86_fp80 0xK3FFCCF70ABAFCE4C0000]
@DBL_MIN = global double 0.000000e+00
@DBL_EPSILON = global double 0.000000e+00
define double @G_K31(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 [15 x double]
%16 = alloca [15 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 ([8 x x86_fp80], [8 x x86_fp80]* @G_K31.WG15, i64 0, i64 7)
%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 ([16 x x86_fp80], [16 x x86_fp80]* @G_K31.WGK31, i64 0, i64 15)
%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, 7
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 [16 x x86_fp80], [16 x x86_fp80]* @G_K31.XGK31, 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 [15 x double], [15 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 [15 x double], [15 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 [8 x x86_fp80], [8 x x86_fp80]* @G_K31.WG15, 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 [16 x x86_fp80], [16 x x86_fp80]* @G_K31.WGK31, 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 [16 x x86_fp80], [16 x x86_fp80]* @G_K31.WGK31, 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, 8
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 [16 x x86_fp80], [16 x x86_fp80]* @G_K31.XGK31, 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 [15 x double], [15 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 [15 x double], [15 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 [16 x x86_fp80], [16 x x86_fp80]* @G_K31.WGK31, 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 [16 x x86_fp80], [16 x x86_fp80]* @G_K31.WGK31, 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 ([16 x x86_fp80], [16 x x86_fp80]* @G_K31.WGK31, i64 0, i64 15)
%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, 15
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 [16 x x86_fp80], [16 x x86_fp80]* @G_K31.WGK31, 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 [15 x double], [15 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 [15 x double], [15 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):
@G_K31.XGK31 = internal unnamed_addr constant [16 x x86_fp80] [x86_fp80 0xK3FFEFF7D142238911800, x86_fp80 0xK3FFEFCED13E197368000, x86_fp80 0xK3FFEF7BDBF811A697000, x86_fp80 0xK3FFEEFF12627C5A24000, x86_fp80 0xK3FFEE5B320DE47501800, x86_fp80 0xK3FFED924110FFFEB1800, x86_fp80 0xK3FFECA58DDEDD945B800, x86_fp80 0xK3FFEB97370C0D59E2000, x86_fp80 0xK3FFEA6A7B8F1ACCB6800, x86_fp80 0xK3FFE922B3B78479D2000, x86_fp80 0xK3FFDF85CA6686F642800, x86_fp80 0xK3FFDC9CE3492BEB5B000, x86_fp80 0xK3FFD992E1F34AE083000, x86_fp80 0xK3FFCCE05D3177825A800, x86_fp80 0xK3FFBCF23926D536CF000, x86_fp80 0xK00000000000000000000]
@G_K31.WGK31 = internal unnamed_addr constant [16 x x86_fp80] [x86_fp80 0xK3FF7B0359218348F8000, x86_fp80 0xK3FF8F5E3E4BD68807800, x86_fp80 0xK3FF9D093445318186800, x86_fp80 0xK3FFA90C7587A1AEF6000, x86_fp80 0xK3FFAB6A3BE3AD3823000, x86_fp80 0xK3FFADB0F7177CDD5B800, x86_fp80 0xK3FFAFDFDBE9BE339D000, x86_fp80 0xK3FFB8F0FAD7470230000, x86_fp80 0xK3FFB9D635D8C7FE58800, x86_fp80 0xK3FFBAA261C547C17A800, x86_fp80 0xK3FFBB56146541E7B6800, x86_fp80 0xK3FFBBEB9286C405D6800, x86_fp80 0xK3FFBC5EC9F3E53CE1800, x86_fp80 0xK3FFBCB1B87191802B000, x86_fp80 0xK3FFBCE606BB7958A4800, x86_fp80 0xK3FFBCF861B51DB187800]
@G_K31.WG15 = internal unnamed_addr constant [8 x x86_fp80] [x86_fp80 0xK3FF9FBEE3913D148D800, x86_fp80 0xK3FFB901C1305AE813000, x86_fp80 0xK3FFBDB764B1AF88A3000, x86_fp80 0xK3FFC8EEB9DA4B18B0800, x86_fp80 0xK3FFCAA42798543768800, x86_fp80 0xK3FFCBEA0FD3B6E133800, x86_fp80 0xK3FFCCB319F8FE8167000, x86_fp80 0xK3FFCCF70ABAFCE4C0000]
@DBL_MIN = global double 0.000000e+00
@DBL_EPSILON = global double 0.000000e+00
define double @G_K31(double (double, i8*)* nocapture %0, i8* %1, double %2, double %3, double* nocapture %4, double* nocapture %5, double* nocapture %6) {
%8 = alloca [15 x double]
%9 = alloca [15 x double]
%10 = bitcast [15 x double]* %8 to i8*
%11 = bitcast [15 x double]* %9 to i8*
%12 = fadd double %2, %3
%13 = fmul double %12, 5.000000e-01
%14 = fsub double %3, %2
%15 = fmul double %14, 5.000000e-01
%16 = tail call x86_fp80 @fabs(double %15)
%17 = tail call double %0(double %13, i8* %1)
%18 = fpext double %17 to x86_fp80
%19 = fmul x86_fp80 %18, 0xK3FFCCF70ABAFCE4C0000
%20 = fmul x86_fp80 %18, 0xK3FFBCF861B51DB187800
%21 = fptrunc x86_fp80 %20 to double
%22 = tail call x86_fp80 @fabs(double %21)
%23 = fptrunc x86_fp80 %22 to double
store double %23, double* %5
%24 = fpext double %15 to x86_fp80
%25 = fptrunc x86_fp80 %19 to double
br label %26
26: ; preds = %7, %26
%27 = phi i64 [ 0, %7 ], [ %60, %26 ]
%28 = phi double [ %25, %7 ], [ %61, %26 ]
%29 = phi double [ %21, %7 ], [ %52, %26 ]
%30 = shl nuw nsw i64 %27, 1
%31 = or i64 %30, 1
%32 = getelementptr inbounds [16 x x86_fp80], [16 x x86_fp80]* @G_K31.XGK31, i64 0, i64 %31
%33 = load x86_fp80, x86_fp80* %32
%34 = fmul x86_fp80 %33, %24
%35 = fptrunc x86_fp80 %34 to double
%36 = fsub double %13, %35
%37 = tail call double %0(double %36, i8* %1)
%38 = fadd double %13, %35
%39 = tail call double %0(double %38, i8* %1)
%40 = getelementptr inbounds [15 x double], [15 x double]* %8, i64 0, i64 %31
store double %37, double* %40
%41 = getelementptr inbounds [15 x double], [15 x double]* %9, i64 0, i64 %31
store double %39, double* %41
%42 = fadd double %37, %39
%43 = getelementptr inbounds [8 x x86_fp80], [8 x x86_fp80]* @G_K31.WG15, i64 0, i64 %27
%44 = load x86_fp80, x86_fp80* %43
%45 = fpext double %42 to x86_fp80
%46 = fpext double %28 to x86_fp80
%47 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %44, x86_fp80 %45, x86_fp80 %46)
%48 = getelementptr inbounds [16 x x86_fp80], [16 x x86_fp80]* @G_K31.WGK31, i64 0, i64 %31
%49 = load x86_fp80, x86_fp80* %48
%50 = fpext double %29 to x86_fp80
%51 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %49, x86_fp80 %45, x86_fp80 %50)
%52 = fptrunc x86_fp80 %51 to double
%53 = load double, double* %5
%54 = fpext double %53 to x86_fp80
%55 = tail call x86_fp80 @fabs(double %37)
%56 = tail call x86_fp80 @fabs(double %39)
%57 = fadd x86_fp80 %55, %56
%58 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %49, x86_fp80 %57, x86_fp80 %54)
%59 = fptrunc x86_fp80 %58 to double
store double %59, double* %5
%60 = add nuw nsw i64 %27, 1
%61 = fptrunc x86_fp80 %47 to double
%62 = icmp eq i64 %60, 7
br i1 %62, label %63, label %26
63: ; preds = %26, %63
%64 = phi i64 [ %91, %63 ], [ 0, %26 ]
%65 = phi double [ %83, %63 ], [ %52, %26 ]
%66 = shl nuw nsw i64 %64, 1
%67 = getelementptr inbounds [16 x x86_fp80], [16 x x86_fp80]* @G_K31.XGK31, i64 0, i64 %66
%68 = load x86_fp80, x86_fp80* %67
%69 = fmul x86_fp80 %68, %24
%70 = fptrunc x86_fp80 %69 to double
%71 = fsub double %13, %70
%72 = tail call double %0(double %71, i8* %1)
%73 = fadd double %13, %70
%74 = tail call double %0(double %73, i8* %1)
%75 = getelementptr inbounds [15 x double], [15 x double]* %8, i64 0, i64 %66
store double %72, double* %75
%76 = getelementptr inbounds [15 x double], [15 x double]* %9, i64 0, i64 %66
store double %74, double* %76
%77 = fadd double %72, %74
%78 = fpext double %65 to x86_fp80
%79 = getelementptr inbounds [16 x x86_fp80], [16 x x86_fp80]* @G_K31.WGK31, i64 0, i64 %66
%80 = load x86_fp80, x86_fp80* %79
%81 = fpext double %77 to x86_fp80
%82 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %80, x86_fp80 %81, x86_fp80 %78)
%83 = fptrunc x86_fp80 %82 to double
%84 = load double, double* %5
%85 = fpext double %84 to x86_fp80
%86 = tail call x86_fp80 @fabs(double %72)
%87 = tail call x86_fp80 @fabs(double %74)
%88 = fadd x86_fp80 %86, %87
%89 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %80, x86_fp80 %88, x86_fp80 %85)
%90 = fptrunc x86_fp80 %89 to double
store double %90, double* %5
%91 = add nuw nsw i64 %64, 1
%92 = icmp eq i64 %91, 8
br i1 %92, label %93, label %63
93: ; preds = %63
%94 = fmul double %83, 5.000000e-01
%95 = fsub double %17, %94
%96 = tail call x86_fp80 @fabs(double %95)
%97 = fmul x86_fp80 %96, 0xK3FFBCF861B51DB187800
%98 = fptrunc x86_fp80 %97 to double
store double %98, double* %6
br label %99
99: ; preds = %93, %99
%100 = phi double [ %98, %93 ], [ %115, %99 ]
%101 = phi i64 [ 0, %93 ], [ %116, %99 ]
%102 = fpext double %100 to x86_fp80
%103 = getelementptr inbounds [16 x x86_fp80], [16 x x86_fp80]* @G_K31.WGK31, i64 0, i64 %101
%104 = load x86_fp80, x86_fp80* %103
%105 = getelementptr inbounds [15 x double], [15 x double]* %8, i64 0, i64 %101
%106 = load double, double* %105
%107 = fsub double %106, %94
%108 = tail call x86_fp80 @fabs(double %107)
%109 = getelementptr inbounds [15 x double], [15 x double]* %9, i64 0, i64 %101
%110 = load double, double* %109
%111 = fsub double %110, %94
%112 = tail call x86_fp80 @fabs(double %111)
%113 = fadd x86_fp80 %108, %112
%114 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %104, x86_fp80 %113, x86_fp80 %102)
%115 = fptrunc x86_fp80 %114 to double
store double %115, double* %6
%116 = add nuw nsw i64 %101, 1
%117 = icmp eq i64 %116, 15
br i1 %117, label %118, label %99
118: ; preds = %99
%119 = fptrunc x86_fp80 %16 to double
%120 = load double, double* %5
%121 = fmul double %120, %119
store double %121, double* %5
%122 = load double, double* %6
%123 = fmul double %122, %119
store double %123, double* %6
%124 = fsub double %83, %61
%125 = fmul double %15, %124
%126 = tail call x86_fp80 @fabs(double %125)
%127 = fptrunc x86_fp80 %126 to double
store double %127, double* %4
%128 = load double, double* %6
%129 = fcmp une double %128, 0.000000e+00
%130 = fcmp une double %127, 0.000000e+00
%131 = select i1 %129, i1 %130, i1 false
br i1 %131, label %132, label %146
132: ; preds = %118
%133 = fmul double %127, 2.000000e+02
%134 = fdiv double %133, %128
%135 = tail call double @pow(double %134, double 1.500000e+00)
%136 = fcmp ogt double %135, 1.000000e+00
br i1 %136, label %143, label %137
137: ; preds = %132
%138 = load double, double* %4
%139 = fmul double %138, 2.000000e+02
%140 = load double, double* %6
%141 = fdiv double %139, %140
%142 = tail call double @pow(double %141, double 1.500000e+00)
br label %143
143: ; preds = %132, %137
%144 = phi double [ %142, %137 ], [ 1.000000e+00, %132 ]
%145 = fmul double %128, %144
store double %145, double* %4
br label %146
146: ; preds = %143, %118
%147 = phi double [ %145, %143 ], [ %127, %118 ]
%148 = load double, double* %5
%149 = load double, double* @DBL_MIN
%150 = load double, double* @DBL_EPSILON
%151 = fmul double %150, 5.000000e+01
%152 = fdiv double %149, %151
%153 = fcmp ogt double %148, %152
br i1 %153, label %154, label %158
154: ; preds = %146
%155 = fmul double %148, %151
%156 = fcmp ogt double %155, %147
%157 = select i1 %156, double %155, double %147
store double %157, double* %4
br label %158
158: ; preds = %154, %146
%159 = fmul double %15, %83
ret double %159
}