#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_K61(double f(double, void *), void *cbData, double a, double b,
             double *abserr, double *resabs, double *resasc) {
  static long double XGK61[31] = {
      0.99948441005049063757, 0.99689348407464954027, 0.99163099687040459486,
      0.98366812327974720997, 0.97311632250112626837, 0.96002186496830751222,
      0.94437444474855997942, 0.92620004742927432588, 0.90557330769990779855,
      0.88256053579205268154, 0.85720523354606109896, 0.82956576238276839744,
      0.79972783582183908301, 0.76777743210482619492, 0.73379006245322680473,
      0.69785049479331579693, 0.66006106412662696137, 0.62052618298924286114,
      0.57934523582636169176, 0.53662414814201989926, 0.49248046786177857499,
      0.44703376953808917678, 0.40040125483039439254, 0.35270472553087811347,
      0.30407320227362507737, 0.25463692616788984644, 0.20452511668230989144,
      0.15386991360858354696, 0.10280693796673703015, 0.05147184255531769583,
      0.00000000000000000000};
  static long double WGK61[31] = {
      0.00138901369867700762, 0.00389046112709988405, 0.00663070391593129217,
      0.00927327965951776343, 0.01182301525349634174, 0.01436972950704580481,
      0.01692088918905327263, 0.01941414119394238117, 0.02182803582160919230,
      0.02419116207808060137, 0.02650995488233310161, 0.02875404876504129284,
      0.03090725756238776247, 0.03298144705748372603, 0.03497933802806002414,
      0.03688236465182122922, 0.03867894562472759295, 0.04037453895153595911,
      0.04196981021516424615, 0.04345253970135606932, 0.04481480013316266319,
      0.04605923827100698812, 0.04718554656929915395, 0.04818586175708712914,
      0.04905543455502977889, 0.04979568342707420636, 0.05040592140278234684,
      0.05088179589874960649, 0.05122154784925877217, 0.05142612853745902593,
      0.05149472942945156756};
  static long double WG30[15] = {
      0.00796819249616660562, 0.01846646831109095914, 0.02878470788332336935,
      0.03879919256962704960, 0.04840267283059405290, 0.05749315621761906648,
      0.06597422988218049513, 0.07375597473770520627, 0.08075589522942021535,
      0.08689978720108297980, 0.09212252223778612872, 0.09636873717464425964,
      0.09959342058679526706, 0.10176238974840550460, 0.10285265289355884034};
  double fv1[30], fv2[30];
  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);
  resg = 0.0;
  fc = (*f)(centr, cbData);
  resk = fc * WGK61[30];
  *resabs = fabs(resk);
  for (j = 0; j < 15; j++) {
    jtw = 2 * j + 1;
    adir = hlgth * XGK61[jtw];
    fval1 = (*f)(centr - adir, cbData);
    fval2 = (*f)(centr + adir, cbData);
    fv1[jtw] = fval1;
    fv2[jtw] = fval2;
    fsum = fval1 + fval2;
    resg += WG30[j] * fsum;
    resk += WGK61[jtw] * fsum;
    *resabs = *resabs + WGK61[jtw] * (fabs(fval1) + fabs(fval2));
  }
  for (j = 0; j < 15; j++) {
    jtwm1 = j * 2;
    adir = hlgth * XGK61[jtwm1];
    fval1 = (*f)(centr - adir, cbData);
    fval2 = (*f)(centr + adir, cbData);
    fv1[jtwm1] = fval1;
    fv2[jtwm1] = fval2;
    fsum = fval1 + fval2;
    resk += WGK61[jtwm1] * fsum;
    *resabs = *resabs + WGK61[jtwm1] * (fabs(fval1) + fabs(fval2));
  }
  reskh = resk * 0.5;
  *resasc = WGK61[30] * fabs(fc - reskh);
  for (j = 0; j < 30; j++)
    *resasc =
        (*resasc) + WGK61[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_K61>:
push   %rbp
mov    %rsp,%rbp
sub    $0x350,%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,-0x230(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm2
subsd  %xmm2,%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x260(%rbp)
ff
movsd  -0x260(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fstpl  -0x238(%rbp)
movq   $0x0,-0x268(%rbp)
mov    -0x8(%rbp),%rax
movsd  -0x230(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x240(%rbp)
ff
fldl   -0x240(%rbp)
fldt   0x3247(%rip)
fmulp  %st,%st(1)
fstpl  -0x270(%rbp)
movsd  -0x270(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fstpl  -0x298(%rbp)
movsd  -0x298(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x0,-0x284(%rbp)
cmpl   $0xf,-0x284(%rbp)
jge    13b8 <G_K61+0x298>
mov    -0x284(%rbp),%ecx
mov    %ecx,%eax
lea    0x1(%rax,%rax,1),%eax
mov    %eax,-0x288(%rbp)
fldl   -0x260(%rbp)
movslq -0x288(%rbp),%rax
shl    $0x4,%rax
lea    0x2e0b(%rip),%rcx
fldt   (%rax,%rcx,1)
fmulp  %st,%st(1)
fstpl  -0x228(%rbp)
mov    -0x8(%rbp),%rax
movsd  -0x230(%rbp),%xmm0
ff
movsd  -0x228(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x250(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  -0x230(%rbp),%xmm0
ff
movsd  -0x228(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x258(%rbp)
ff
movsd  -0x250(%rbp),%xmm0
ff
movslq -0x288(%rbp),%rax
movsd  %xmm0,-0x130(%rbp,%rax,8)
ff ff
movsd  -0x258(%rbp),%xmm0
ff
movslq -0x288(%rbp),%rax
movsd  %xmm0,-0x220(%rbp,%rax,8)
ff ff
movsd  -0x250(%rbp),%xmm0
ff
movsd  -0x258(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x248(%rbp)
ff
movslq -0x284(%rbp),%rax
shl    $0x4,%rax
lea    0x3136(%rip),%rcx
fldt   (%rax,%rcx,1)
fldl   -0x248(%rbp)
fldl   -0x268(%rbp)
fxch   %st(2)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpl  -0x268(%rbp)
movslq -0x288(%rbp),%rax
shl    $0x4,%rax
lea    0x2f19(%rip),%rcx
fldt   (%rax,%rcx,1)
fldl   -0x248(%rbp)
fldl   -0x270(%rbp)
fxch   %st(2)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpl  -0x270(%rbp)
mov    -0x30(%rbp),%rax
fldl   (%rax)
fstpt  -0x2d8(%rbp)
movslq -0x288(%rbp),%rax
shl    $0x4,%rax
fldt   (%rax,%rcx,1)
fstpt  -0x2cc(%rbp)
movsd  -0x250(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fstpt  -0x2e4(%rbp)
movsd  -0x258(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fldt   -0x2e4(%rbp)
fldt   -0x2d8(%rbp)
fldt   -0x2cc(%rbp)
fxch   %st(2)
faddp  %st,%st(3)
fxch   %st(1)
fmulp  %st,%st(2)
faddp  %st,%st(1)
fstpl  -0x2c0(%rbp)
movsd  -0x2c0(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x284(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x284(%rbp)
jmp    11fe <G_K61+0xde>
movl   $0x0,-0x284(%rbp)
cmpl   $0xf,-0x284(%rbp)
jge    154b <G_K61+0x42b>
mov    -0x284(%rbp),%eax
add    %eax,%eax
mov    %eax,-0x28c(%rbp)
fldl   -0x260(%rbp)
movslq -0x28c(%rbp),%rax
shl    $0x4,%rax
lea    0x2c4b(%rip),%rcx
fldt   (%rax,%rcx,1)
fmulp  %st,%st(1)
fstpl  -0x228(%rbp)
mov    -0x8(%rbp),%rax
movsd  -0x230(%rbp),%xmm0
ff
movsd  -0x228(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x250(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  -0x230(%rbp),%xmm0
ff
movsd  -0x228(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x258(%rbp)
ff
movsd  -0x250(%rbp),%xmm0
ff
movslq -0x28c(%rbp),%rax
movsd  %xmm0,-0x130(%rbp,%rax,8)
ff ff
movsd  -0x258(%rbp),%xmm0
ff
movslq -0x28c(%rbp),%rax
movsd  %xmm0,-0x220(%rbp,%rax,8)
ff ff
movsd  -0x250(%rbp),%xmm0
ff
movsd  -0x258(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x248(%rbp)
ff
movslq -0x28c(%rbp),%rax
shl    $0x4,%rax
lea    0x2d86(%rip),%rcx
fldt   (%rax,%rcx,1)
fldl   -0x248(%rbp)
fldl   -0x270(%rbp)
fxch   %st(2)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpl  -0x270(%rbp)
mov    -0x30(%rbp),%rax
fldl   (%rax)
fstpt  -0x2fc(%rbp)
movslq -0x28c(%rbp),%rax
shl    $0x4,%rax
fldt   (%rax,%rcx,1)
fstpt  -0x2f0(%rbp)
movsd  -0x250(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fstpt  -0x308(%rbp)
movsd  -0x258(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fldt   -0x308(%rbp)
fldt   -0x2fc(%rbp)
fldt   -0x2f0(%rbp)
fxch   %st(2)
faddp  %st,%st(3)
fxch   %st(1)
fmulp  %st,%st(2)
faddp  %st,%st(1)
fstpl  -0x2b8(%rbp)
movsd  -0x2b8(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x284(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x284(%rbp)
jmp    13c2 <G_K61+0x2a2>
movsd  -0x270(%rbp),%xmm0
ff
movsd  0xaa5(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x278(%rbp)
ff
fldt   0x2ea3(%rip)
fstpt  -0x314(%rbp)
movsd  -0x240(%rbp),%xmm0
ff
movsd  -0x278(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fldt   -0x314(%rbp)
fmulp  %st,%st(1)
fstpl  -0x2a0(%rbp)
movsd  -0x2a0(%rbp),%xmm0
ff
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x0,-0x284(%rbp)
cmpl   $0x1e,-0x284(%rbp)
jge    1672 <G_K61+0x552>
mov    -0x38(%rbp),%rax
fldl   (%rax)
fstpt  -0x32c(%rbp)
movslq -0x284(%rbp),%rax
mov    %rax,%rcx
shl    $0x4,%rcx
lea    0x2c4e(%rip),%rdx
fldt   (%rcx,%rdx,1)
fstpt  -0x320(%rbp)
movsd  -0x130(%rbp,%rax,8),%xmm0
ff ff
movsd  -0x278(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fstpt  -0x338(%rbp)
movslq -0x284(%rbp),%rax
movsd  -0x220(%rbp,%rax,8),%xmm0
ff ff
movsd  -0x278(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fldt   -0x338(%rbp)
fldt   -0x32c(%rbp)
fldt   -0x320(%rbp)
fxch   %st(2)
faddp  %st,%st(3)
fxch   %st(1)
fmulp  %st,%st(2)
faddp  %st,%st(1)
fstpl  -0x2b0(%rbp)
movsd  -0x2b0(%rbp),%xmm0
ff
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x284(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x284(%rbp)
jmp    15b4 <G_K61+0x494>
movsd  -0x270(%rbp),%xmm0
ff
movsd  -0x260(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x280(%rbp)
ff
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0x238(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0x238(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
movsd  -0x270(%rbp),%xmm0
ff
movsd  -0x268(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
movsd  -0x260(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fstpl  -0x2a8(%rbp)
movsd  -0x2a8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1719 <G_K61+0x5f9>
jp     1719 <G_K61+0x5f9>
jmp    17de <G_K61+0x6be>
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1739 <G_K61+0x619>
jp     1739 <G_K61+0x619>
jmp    17de <G_K61+0x6be>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x340(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x8c3(%rip),%xmm0
mulsd  (%rax),%xmm0
mov    -0x38(%rbp),%rax
divsd  (%rax),%xmm0
movsd  0x8a7(%rip),%xmm1
call   1040 <pow@plt>
movsd  0x892(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1795 <G_K61+0x675>
movsd  0x880(%rip),%xmm0
movsd  %xmm0,-0x348(%rbp)
ff
jmp    17c2 <G_K61+0x6a2>
mov    -0x28(%rbp),%rax
movsd  0x877(%rip),%xmm0
mulsd  (%rax),%xmm0
mov    -0x38(%rbp),%rax
divsd  (%rax),%xmm0
movsd  0x85b(%rip),%xmm1
call   1040 <pow@plt>
movsd  %xmm0,-0x348(%rbp)
ff
movsd  -0x340(%rbp),%xmm0
ff
movsd  -0x348(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x27eb(%rip),%rax
movsd  (%rax),%xmm1
movsd  0x827(%rip),%xmm2
mov    0x27e8(%rip),%rax
mulsd  (%rax),%xmm2
divsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
jbe    1883 <G_K61+0x763>
movsd  0x806(%rip),%xmm0
mov    0x27c7(%rip),%rax
mulsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
mulsd  (%rax),%xmm0
mov    -0x28(%rbp),%rax
ucomisd (%rax),%xmm0
jbe    1863 <G_K61+0x743>
movsd  0x7dd(%rip),%xmm0
mov    0x279e(%rip),%rax
mulsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x350(%rbp)
ff
jmp    1873 <G_K61+0x753>
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x350(%rbp)
ff
movsd  -0x350(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x280(%rbp),%xmm0
ff
add    $0x350,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<G_K61>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x308,%rsp
mov    %r8,0x70(%rsp)
mov    %rcx,%rbp
mov    %rdx,0x78(%rsp)
movapd %xmm1,%xmm2
mov    %rsi,%r13
mov    %rdi,%r14
movapd %xmm0,%xmm3
addsd  %xmm1,%xmm3
movsd  0xea8(%rip),%xmm1
mulsd  %xmm1,%xmm3
movsd  %xmm3,(%rsp)
subsd  %xmm0,%xmm2
mulsd  %xmm1,%xmm2
movsd  %xmm2,0x30(%rsp)
movapd %xmm2,%xmm0
call   1030 <fabs@plt>
fstpt  0x114(%rsp)
movsd  (%rsp),%xmm0
mov    %r13,%rdi
call   *%r14
movsd  %xmm0,0x68(%rsp)
movsd  %xmm0,0x100(%rsp)
fldl   0x100(%rsp)
fmull  0xe62(%rip)
fstpl  0xf8(%rsp)
movsd  0xf8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
call   1030 <fabs@plt>
fstpl  0x0(%rbp)
movsd  0x30(%rsp),%xmm0
movsd  %xmm0,0x108(%rsp)
xorps  %xmm0,%xmm0
movsd  %xmm0,0x38(%rsp)
xor    %r15d,%r15d
fldl   0x108(%rsp)
lea    0xe43(%rip),%rbx
lea    0x102c(%rip),%r12
fld    %st(0)
fstpt  0x44(%rsp)
nopw   0x0(%rax,%rax,1)
fldt   0x10(%rbx,%r15,2)
fmulp  %st,%st(1)
fstpl  0xe0(%rsp)
movsd  0xe0(%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,0x218(%rsp,%r15,1)
movsd  %xmm0,0x128(%rsp,%r15,1)
movapd %xmm1,%xmm2
addsd  %xmm0,%xmm2
lea    0x119e(%rip),%rax
fldt   (%r15,%rax,1)
movsd  %xmm2,0xd8(%rsp)
fldl   0xd8(%rsp)
movsd  0x38(%rsp),%xmm0
movsd  %xmm0,0xf0(%rsp)
fmul   %st,%st(1)
fxch   %st(1)
faddl  0xf0(%rsp)
fstpl  0xc8(%rsp)
movsd  0xc8(%rsp),%xmm0
movsd  %xmm0,0x38(%rsp)
fldt   0x10(%r12,%r15,2)
fld    %st(0)
fstpt  0x50(%rsp)
movsd  0x8(%rsp),%xmm0
movsd  %xmm0,0xe8(%rsp)
fmulp  %st,%st(1)
faddl  0xe8(%rsp)
fstpl  0xd0(%rsp)
movsd  0xd0(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
fldl   0x0(%rbp)
fstpt  0x5c(%rsp)
movapd %xmm1,%xmm0
call   1030 <fabs@plt>
fstpt  0x20(%rsp)
movsd  0x10(%rsp),%xmm0
call   1030 <fabs@plt>
fldt   0x44(%rsp)
fldt   0x20(%rsp)
faddp  %st,%st(2)
fldt   0x50(%rsp)
fmulp  %st,%st(2)
fldt   0x5c(%rsp)
faddp  %st,%st(2)
fxch   %st(1)
fstpl  0x0(%rbp)
add    $0x10,%r15
cmp    $0xf0,%r15
jne    1200 <G_K61+0xe0>
xor    %ebx,%ebx
mov    %rbp,%r15
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
lea    0xcd9(%rip),%rax
fldt   0x0(%rbp,%rax,1)
fmulp  %st,%st(1)
fstpl  0xb8(%rsp)
movsd  0xb8(%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,0x50(%rsp)
movsd  0x20(%rsp),%xmm1
movsd  %xmm1,0x210(%rsp,%rbx,1)
movsd  %xmm0,0x120(%rsp,%rbx,1)
movapd %xmm1,%xmm2
addsd  %xmm0,%xmm2
fldt   0x0(%rbp,%r12,1)
fld    %st(0)
fstpt  0x10(%rsp)
movsd  %xmm2,0xb0(%rsp)
movsd  0x8(%rsp),%xmm0
movsd  %xmm0,0xc0(%rsp)
fmull  0xb0(%rsp)
faddl  0xc0(%rsp)
fstpl  0xa8(%rsp)
movsd  0xa8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
fldl   (%r15)
fstpt  0x5c(%rsp)
movapd %xmm1,%xmm0
call   1030 <fabs@plt>
fstpt  0x20(%rsp)
movsd  0x50(%rsp),%xmm0
call   1030 <fabs@plt>
fldt   0x44(%rsp)
fldt   0x20(%rsp)
faddp  %st,%st(2)
fldt   0x10(%rsp)
fmulp  %st,%st(2)
fldt   0x5c(%rsp)
faddp  %st,%st(2)
fxch   %st(1)
fstpl  (%r15)
add    $0x20,%rbp
add    $0x10,%rbx
cmp    $0xf0,%rbx
jne    1350 <G_K61+0x230>
fstp   %st(0)
movsd  0xba1(%rip),%xmm1
mulsd  0x8(%rsp),%xmm1
movsd  0x68(%rsp),%xmm0
movsd  %xmm1,(%rsp)
subsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fmull  0xb89(%rip)
fstpl  0xa0(%rsp)
movsd  0xa0(%rsp),%xmm0
mov    0x70(%rsp),%rbp
movsd  %xmm0,0x0(%rbp)
xor    %ebx,%ebx
nopl   0x0(%rax,%rax,1)
movsd  %xmm0,0x98(%rsp)
fldt   (%r12)
fstpt  0x44(%rsp)
movsd  0x210(%rsp,%rbx,8),%xmm0
subsd  (%rsp),%xmm0
call   1030 <fabs@plt>
fstpt  0x10(%rsp)
movsd  0x120(%rsp,%rbx,8),%xmm0
subsd  (%rsp),%xmm0
call   1030 <fabs@plt>
fldt   0x10(%rsp)
faddp  %st,%st(1)
fldt   0x44(%rsp)
fmulp  %st,%st(1)
faddl  0x98(%rsp)
fstpl  0x90(%rsp)
movsd  0x90(%rsp),%xmm0
movsd  %xmm0,0x0(%rbp)
add    $0x1,%rbx
add    $0x10,%r12
cmp    $0x1e,%rbx
jne    14a0 <G_K61+0x380>
fldt   0x114(%rsp)
fstpl  0x88(%rsp)
movsd  0x88(%rsp),%xmm0
movsd  (%r15),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,(%r15)
mulsd  0x0(%rbp),%xmm0
movsd  %xmm0,0x0(%rbp)
movsd  0x8(%rsp),%xmm0
subsd  0x38(%rsp),%xmm0
mulsd  0x30(%rsp),%xmm0
call   1030 <fabs@plt>
fstpl  0x80(%rsp)
movsd  0x80(%rsp),%xmm0
mov    0x78(%rsp),%rbx
movsd  %xmm0,(%rbx)
movsd  0x0(%rbp),%xmm2
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm2
jne    1581 <G_K61+0x461>
jnp    15e8 <G_K61+0x4c8>
ucomisd %xmm1,%xmm0
jne    1589 <G_K61+0x469>
jnp    15e8 <G_K61+0x4c8>
mulsd  0xa7f(%rip),%xmm0
divsd  %xmm2,%xmm0
movsd  0xa7b(%rip),%xmm1
movsd  %xmm2,(%rsp)
call   1040 <pow@plt>
movapd %xmm0,%xmm1
movsd  0xa6d(%rip),%xmm0
ucomisd %xmm0,%xmm1
ja     15d7 <G_K61+0x4b7>
movsd  (%rbx),%xmm0
mulsd  0xa4b(%rip),%xmm0
divsd  0x0(%rbp),%xmm0
movsd  0xa46(%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    0x29ee(%rip),%rax
movsd  (%rax),%xmm2
mov    0x29d3(%rip),%rax
mulsd  0xa1b(%rip),%xmm2
movsd  (%rax),%xmm3
divsd  %xmm2,%xmm3
ucomisd %xmm3,%xmm1
jbe    1627 <G_K61+0x507>
mulsd  %xmm2,%xmm1
maxsd  %xmm0,%xmm1
movsd  %xmm1,(%rbx)
movsd  0x30(%rsp),%xmm0
mulsd  %xmm4,%xmm0
add    $0x308,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@G_K61.XGK61 = internal global [31 x x86_fp80] [x86_fp80 0xK3FFEFFDE35D607599800, x86_fp80 0xK3FFEFF34694FB234B000, x86_fp80 0xK3FFEFDDB876D421DB800, x86_fp80 0xK3FFEFBD1AC939AAD8800, x86_fp80 0xK3FFEF91E26BC589BB800, x86_fp80 0xK3FFEF5C3FE317BDAE800, x86_fp80 0xK3FFEF1C2860B5F8BA000, x86_fp80 0xK3FFEED1B7241432B7800, x86_fp80 0xK3FFEE7D3A6FCB39F4800, x86_fp80 0xK3FFEE1EF7CBDF7942000, x86_fp80 0xK3FFEDB71CD5C0A560000, x86_fp80 0xK3FFED45E6BFB50B75000, x86_fp80 0xK3FFECCBAF6A48E3F7800, x86_fp80 0xK3FFEC48D0FD17F413800, x86_fp80 0xK3FFEBBD9AA605DCCD000, x86_fp80 0xK3FFEB2A6547CA27C5800, x86_fp80 0xK3FFEA8F9C30BC96D2000, x86_fp80 0xK3FFE9EDACDCE40216800, x86_fp80 0xK3FFE944FF828F7B6A800, x86_fp80 0xK3FFE8960333E838AA800, x86_fp80 0xK3FFDFC26665EC52E3000, x86_fp80 0xK3FFDE4E19C38BF54D000, x86_fp80 0xK3FFDCD0164AD8C3D6800, x86_fp80 0xK3FFDB495B6BA997C7800, x86_fp80 0xK3FFD9BAF7B96B5DE6800, x86_fp80 0xK3FFD825FC56C7D77A800, x86_fp80 0xK3FFCD16F083D71C58000, x86_fp80 0xK3FFC9D90131B261AD000, x86_fp80 0xK3FFBD28C71A2F3C94800, x86_fp80 0xK3FFAD2D423870A09A000, x86_fp80 0xK00000000000000000000]
@G_K61.WGK61 = internal global [31 x x86_fp80] [x86_fp80 0xK3FF5B60F90D1ABC92800, x86_fp80 0xK3FF6FEF71B4EA8270000, x86_fp80 0xK3FF7D946603BF4021000, x86_fp80 0xK3FF897EEF437508A6800, x86_fp80 0xK3FF8C1B551F6A5E74000, x86_fp80 0xK3FF8EB6F03923F893800, x86_fp80 0xK3FF98A9DAD35F58B8800, x86_fp80 0xK3FF99F0A67B040CA3800, x86_fp80 0xK3FF9B2D0B57FABDA0000, x86_fp80 0xK3FF9C62C8B3F486E2000, x86_fp80 0xK3FF9D92B67A79E280800, x86_fp80 0xK3FF9EB8D9C6259A21000, x86_fp80 0xK3FF9FD31378E106AF000, x86_fp80 0xK3FFA87178DC7C94F7000, x86_fp80 0xK3FFA8F467E8DDC25C000, x86_fp80 0xK3FFA9711F65FA8D4D800, x86_fp80 0xK3FFA9E6DD068080EE000, x86_fp80 0xK3FFAA55FC5C634F0E800, x86_fp80 0xK3FFAABE88924B2002000, x86_fp80 0xK3FFAB1FB4A4F20A0E000, x86_fp80 0xK3FFAB78FB94F2DEAA000, x86_fp80 0xK3FFABCA89CA0D7A3F800, x86_fp80 0xK3FFAC145A1B5BE90D800, x86_fp80 0xK3FFAC55E89C6052FD800, x86_fp80 0xK3FFAC8EE59F1ADC1E000, x86_fp80 0xK3FFACBF68EFCD1EE9800, x86_fp80 0xK3FFACE76707F31F51800, x86_fp80 0xK3FFAD0696E158CCE6000, x86_fp80 0xK3FFAD1CDAF8DCF1DD800, x86_fp80 0xK3FFAD2A43443A707B000, x86_fp80 0xK3FFAD2EC232D0DC69800]
@G_K61.WG30 = internal global [15 x x86_fp80] [x86_fp80 0xK3FF8828D058B79213800, x86_fp80 0xK3FF99746FDAF000CA000, x86_fp80 0xK3FF9EBCDE85F7B2F6800, x86_fp80 0xK3FFA9EEBE6F32A008000, x86_fp80 0xK3FFAC641E18D8ACF6800, x86_fp80 0xK3FFAEB7DF19B2D06F000, x86_fp80 0xK3FFB871D7F3DC831C000, x86_fp80 0xK3FFB970D5F5B107A7000, x86_fp80 0xK3FFBA56358C7C1A9D800, x86_fp80 0xK3FFBB1F8840076CE5800, x86_fp80 0xK3FFBBCAABBA1E3FDE800, x86_fp80 0xK3FFBC55CF8F42CE29000, x86_fp80 0xK3FFBCBF7A2A289562000, x86_fp80 0xK3FFBD068CCBF75291800, x86_fp80 0xK3FFBD2A46963E09D4800]
@DBL_MIN = global double 0.000000e+00
@DBL_EPSILON = global double 0.000000e+00
define double @G_K61(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 [30 x double]
%16 = alloca [30 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
store double 0.000000e+00, double* %25
%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 ([31 x x86_fp80], [31 x x86_fp80]* @G_K61.WGK61, i64 0, i64 30)
%50 = fmul x86_fp80 %48, %49
%51 = fptrunc x86_fp80 %50 to double
store double %51, double* %26
%52 = load double, double* %26
%53 = call x86_fp80 @fabs(double %52)
%54 = fptrunc x86_fp80 %53 to double
%55 = load double*, double** %13
store double %54, double* %55
store i32 0, i32* %29
br label %56
56: ; preds = %129, %7
%57 = load i32, i32* %29
%58 = icmp slt i32 %57, 15
br i1 %58, label %59, label %132
59: ; preds = %56
%60 = load i32, i32* %29
%61 = mul nsw i32 2, %60
%62 = add nsw i32 %61, 1
store i32 %62, i32* %30
%63 = load double, double* %24
%64 = fpext double %63 to x86_fp80
%65 = load i32, i32* %30
%66 = sext i32 %65 to i64
%67 = getelementptr inbounds [31 x x86_fp80], [31 x x86_fp80]* @G_K61.XGK61, i64 0, i64 %66
%68 = load x86_fp80, x86_fp80* %67
%69 = fmul x86_fp80 %64, %68
%70 = fptrunc x86_fp80 %69 to double
store double %70, double* %17
%71 = load double (double, i8*)*, double (double, i8*)** %8
%72 = load double, double* %18
%73 = load double, double* %17
%74 = fsub double %72, %73
%75 = load i8*, i8** %9
%76 = call double %71(double %74, i8* %75)
store double %76, double* %22
%77 = load double (double, i8*)*, double (double, i8*)** %8
%78 = load double, double* %18
%79 = load double, double* %17
%80 = fadd double %78, %79
%81 = load i8*, i8** %9
%82 = call double %77(double %80, i8* %81)
store double %82, double* %23
%83 = load double, double* %22
%84 = load i32, i32* %30
%85 = sext i32 %84 to i64
%86 = getelementptr inbounds [30 x double], [30 x double]* %15, i64 0, i64 %85
store double %83, double* %86
%87 = load double, double* %23
%88 = load i32, i32* %30
%89 = sext i32 %88 to i64
%90 = getelementptr inbounds [30 x double], [30 x double]* %16, i64 0, i64 %89
store double %87, double* %90
%91 = load double, double* %22
%92 = load double, double* %23
%93 = fadd double %91, %92
store double %93, double* %21
%94 = load i32, i32* %29
%95 = sext i32 %94 to i64
%96 = getelementptr inbounds [15 x x86_fp80], [15 x x86_fp80]* @G_K61.WG30, i64 0, i64 %95
%97 = load x86_fp80, x86_fp80* %96
%98 = load double, double* %21
%99 = fpext double %98 to x86_fp80
%100 = load double, double* %25
%101 = fpext double %100 to x86_fp80
%102 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %97, x86_fp80 %99, x86_fp80 %101)
%103 = fptrunc x86_fp80 %102 to double
store double %103, double* %25
%104 = load i32, i32* %30
%105 = sext i32 %104 to i64
%106 = getelementptr inbounds [31 x x86_fp80], [31 x x86_fp80]* @G_K61.WGK61, i64 0, i64 %105
%107 = load x86_fp80, x86_fp80* %106
%108 = load double, double* %21
%109 = fpext double %108 to x86_fp80
%110 = load double, double* %26
%111 = fpext double %110 to x86_fp80
%112 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %107, x86_fp80 %109, x86_fp80 %111)
%113 = fptrunc x86_fp80 %112 to double
store double %113, double* %26
%114 = load double*, double** %13
%115 = load double, double* %114
%116 = fpext double %115 to x86_fp80
%117 = load i32, i32* %30
%118 = sext i32 %117 to i64
%119 = getelementptr inbounds [31 x x86_fp80], [31 x x86_fp80]* @G_K61.WGK61, i64 0, i64 %118
%120 = load x86_fp80, x86_fp80* %119
%121 = load double, double* %22
%122 = call x86_fp80 @fabs(double %121)
%123 = load double, double* %23
%124 = call x86_fp80 @fabs(double %123)
%125 = fadd x86_fp80 %122, %124
%126 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %120, x86_fp80 %125, x86_fp80 %116)
%127 = fptrunc x86_fp80 %126 to double
%128 = load double*, double** %13
store double %127, double* %128
br label %129
129: ; preds = %59
%130 = load i32, i32* %29
%131 = add nsw i32 %130, 1
store i32 %131, i32* %29
br label %56
132: ; preds = %56
store i32 0, i32* %29
br label %133
133: ; preds = %195, %132
%134 = load i32, i32* %29
%135 = icmp slt i32 %134, 15
br i1 %135, label %136, label %198
136: ; preds = %133
%137 = load i32, i32* %29
%138 = mul nsw i32 %137, 2
store i32 %138, i32* %31
%139 = load double, double* %24
%140 = fpext double %139 to x86_fp80
%141 = load i32, i32* %31
%142 = sext i32 %141 to i64
%143 = getelementptr inbounds [31 x x86_fp80], [31 x x86_fp80]* @G_K61.XGK61, i64 0, i64 %142
%144 = load x86_fp80, x86_fp80* %143
%145 = fmul x86_fp80 %140, %144
%146 = fptrunc x86_fp80 %145 to double
store double %146, double* %17
%147 = load double (double, i8*)*, double (double, i8*)** %8
%148 = load double, double* %18
%149 = load double, double* %17
%150 = fsub double %148, %149
%151 = load i8*, i8** %9
%152 = call double %147(double %150, i8* %151)
store double %152, double* %22
%153 = load double (double, i8*)*, double (double, i8*)** %8
%154 = load double, double* %18
%155 = load double, double* %17
%156 = fadd double %154, %155
%157 = load i8*, i8** %9
%158 = call double %153(double %156, i8* %157)
store double %158, double* %23
%159 = load double, double* %22
%160 = load i32, i32* %31
%161 = sext i32 %160 to i64
%162 = getelementptr inbounds [30 x double], [30 x double]* %15, i64 0, i64 %161
store double %159, double* %162
%163 = load double, double* %23
%164 = load i32, i32* %31
%165 = sext i32 %164 to i64
%166 = getelementptr inbounds [30 x double], [30 x double]* %16, i64 0, i64 %165
store double %163, double* %166
%167 = load double, double* %22
%168 = load double, double* %23
%169 = fadd double %167, %168
store double %169, double* %21
%170 = load i32, i32* %31
%171 = sext i32 %170 to i64
%172 = getelementptr inbounds [31 x x86_fp80], [31 x x86_fp80]* @G_K61.WGK61, i64 0, i64 %171
%173 = load x86_fp80, x86_fp80* %172
%174 = load double, double* %21
%175 = fpext double %174 to x86_fp80
%176 = load double, double* %26
%177 = fpext double %176 to x86_fp80
%178 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %173, x86_fp80 %175, x86_fp80 %177)
%179 = fptrunc x86_fp80 %178 to double
store double %179, double* %26
%180 = load double*, double** %13
%181 = load double, double* %180
%182 = fpext double %181 to x86_fp80
%183 = load i32, i32* %31
%184 = sext i32 %183 to i64
%185 = getelementptr inbounds [31 x x86_fp80], [31 x x86_fp80]* @G_K61.WGK61, i64 0, i64 %184
%186 = load x86_fp80, x86_fp80* %185
%187 = load double, double* %22
%188 = call x86_fp80 @fabs(double %187)
%189 = load double, double* %23
%190 = call x86_fp80 @fabs(double %189)
%191 = fadd x86_fp80 %188, %190
%192 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %186, x86_fp80 %191, x86_fp80 %182)
%193 = fptrunc x86_fp80 %192 to double
%194 = load double*, double** %13
store double %193, double* %194
br label %195
195: ; preds = %136
%196 = load i32, i32* %29
%197 = add nsw i32 %196, 1
store i32 %197, i32* %29
br label %133
198: ; preds = %133
%199 = load double, double* %26
%200 = fmul double %199, 5.000000e-01
store double %200, double* %27
%201 = load x86_fp80, x86_fp80* getelementptr inbounds ([31 x x86_fp80], [31 x x86_fp80]* @G_K61.WGK61, i64 0, i64 30)
%202 = load double, double* %20
%203 = load double, double* %27
%204 = fsub double %202, %203
%205 = call x86_fp80 @fabs(double %204)
%206 = fmul x86_fp80 %201, %205
%207 = fptrunc x86_fp80 %206 to double
%208 = load double*, double** %14
store double %207, double* %208
store i32 0, i32* %29
br label %209
209: ; preds = %238, %198
%210 = load i32, i32* %29
%211 = icmp slt i32 %210, 30
br i1 %211, label %212, label %241
212: ; preds = %209
%213 = load double*, double** %14
%214 = load double, double* %213
%215 = fpext double %214 to x86_fp80
%216 = load i32, i32* %29
%217 = sext i32 %216 to i64
%218 = getelementptr inbounds [31 x x86_fp80], [31 x x86_fp80]* @G_K61.WGK61, i64 0, i64 %217
%219 = load x86_fp80, x86_fp80* %218
%220 = load i32, i32* %29
%221 = sext i32 %220 to i64
%222 = getelementptr inbounds [30 x double], [30 x double]* %15, i64 0, i64 %221
%223 = load double, double* %222
%224 = load double, double* %27
%225 = fsub double %223, %224
%226 = call x86_fp80 @fabs(double %225)
%227 = load i32, i32* %29
%228 = sext i32 %227 to i64
%229 = getelementptr inbounds [30 x double], [30 x double]* %16, i64 0, i64 %228
%230 = load double, double* %229
%231 = load double, double* %27
%232 = fsub double %230, %231
%233 = call x86_fp80 @fabs(double %232)
%234 = fadd x86_fp80 %226, %233
%235 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %219, x86_fp80 %234, x86_fp80 %215)
%236 = fptrunc x86_fp80 %235 to double
%237 = load double*, double** %14
store double %236, double* %237
br label %238
238: ; preds = %212
%239 = load i32, i32* %29
%240 = add nsw i32 %239, 1
store i32 %240, i32* %29
br label %209
241: ; preds = %209
%242 = load double, double* %26
%243 = load double, double* %24
%244 = fmul double %242, %243
store double %244, double* %28
%245 = load double*, double** %13
%246 = load double, double* %245
%247 = load double, double* %19
%248 = fmul double %246, %247
%249 = load double*, double** %13
store double %248, double* %249
%250 = load double*, double** %14
%251 = load double, double* %250
%252 = load double, double* %19
%253 = fmul double %251, %252
%254 = load double*, double** %14
store double %253, double* %254
%255 = load double, double* %26
%256 = load double, double* %25
%257 = fsub double %255, %256
%258 = load double, double* %24
%259 = fmul double %257, %258
%260 = call x86_fp80 @fabs(double %259)
%261 = fptrunc x86_fp80 %260 to double
%262 = load double*, double** %12
store double %261, double* %262
%263 = load double*, double** %14
%264 = load double, double* %263
%265 = fcmp une double %264, 0.000000e+00
br i1 %265, label %266, label %294
266: ; preds = %241
%267 = load double*, double** %12
%268 = load double, double* %267
%269 = fcmp une double %268, 0.000000e+00
br i1 %269, label %270, label %294
270: ; preds = %266
%271 = load double*, double** %14
%272 = load double, double* %271
%273 = load double*, double** %12
%274 = load double, double* %273
%275 = fmul double 2.000000e+02, %274
%276 = load double*, double** %14
%277 = load double, double* %276
%278 = fdiv double %275, %277
%279 = call double @pow(double %278, double 1.500000e+00)
%280 = fcmp olt double 1.000000e+00, %279
br i1 %280, label %281, label %282
281: ; preds = %270
br label %290
282: ; preds = %270
%283 = load double*, double** %12
%284 = load double, double* %283
%285 = fmul double 2.000000e+02, %284
%286 = load double*, double** %14
%287 = load double, double* %286
%288 = fdiv double %285, %287
%289 = call double @pow(double %288, double 1.500000e+00)
br label %290
290: ; preds = %282, %281
%291 = phi double [ 1.000000e+00, %281 ], [ %289, %282 ]
%292 = fmul double %272, %291
%293 = load double*, double** %12
store double %292, double* %293
br label %294
294: ; preds = %290, %266, %241
%295 = load double*, double** %13
%296 = load double, double* %295
%297 = load double, double* @DBL_MIN
%298 = load double, double* @DBL_EPSILON
%299 = fmul double 5.000000e+01, %298
%300 = fdiv double %297, %299
%301 = fcmp ogt double %296, %300
br i1 %301, label %302, label %323
302: ; preds = %294
%303 = load double, double* @DBL_EPSILON
%304 = fmul double %303, 5.000000e+01
%305 = load double*, double** %13
%306 = load double, double* %305
%307 = fmul double %304, %306
%308 = load double*, double** %12
%309 = load double, double* %308
%310 = fcmp ogt double %307, %309
br i1 %310, label %311, label %317
311: ; preds = %302
%312 = load double, double* @DBL_EPSILON
%313 = fmul double %312, 5.000000e+01
%314 = load double*, double** %13
%315 = load double, double* %314
%316 = fmul double %313, %315
br label %320
317: ; preds = %302
%318 = load double*, double** %12
%319 = load double, double* %318
br label %320
320: ; preds = %317, %311
%321 = phi double [ %316, %311 ], [ %319, %317 ]
%322 = load double*, double** %12
store double %321, double* %322
br label %323
323: ; preds = %320, %294
%324 = load double, double* %28
ret double %324
}

LLVM IR (-O2):
@G_K61.XGK61 = internal unnamed_addr constant [31 x x86_fp80] [x86_fp80 0xK3FFEFFDE35D607599800, x86_fp80 0xK3FFEFF34694FB234B000, x86_fp80 0xK3FFEFDDB876D421DB800, x86_fp80 0xK3FFEFBD1AC939AAD8800, x86_fp80 0xK3FFEF91E26BC589BB800, x86_fp80 0xK3FFEF5C3FE317BDAE800, x86_fp80 0xK3FFEF1C2860B5F8BA000, x86_fp80 0xK3FFEED1B7241432B7800, x86_fp80 0xK3FFEE7D3A6FCB39F4800, x86_fp80 0xK3FFEE1EF7CBDF7942000, x86_fp80 0xK3FFEDB71CD5C0A560000, x86_fp80 0xK3FFED45E6BFB50B75000, x86_fp80 0xK3FFECCBAF6A48E3F7800, x86_fp80 0xK3FFEC48D0FD17F413800, x86_fp80 0xK3FFEBBD9AA605DCCD000, x86_fp80 0xK3FFEB2A6547CA27C5800, x86_fp80 0xK3FFEA8F9C30BC96D2000, x86_fp80 0xK3FFE9EDACDCE40216800, x86_fp80 0xK3FFE944FF828F7B6A800, x86_fp80 0xK3FFE8960333E838AA800, x86_fp80 0xK3FFDFC26665EC52E3000, x86_fp80 0xK3FFDE4E19C38BF54D000, x86_fp80 0xK3FFDCD0164AD8C3D6800, x86_fp80 0xK3FFDB495B6BA997C7800, x86_fp80 0xK3FFD9BAF7B96B5DE6800, x86_fp80 0xK3FFD825FC56C7D77A800, x86_fp80 0xK3FFCD16F083D71C58000, x86_fp80 0xK3FFC9D90131B261AD000, x86_fp80 0xK3FFBD28C71A2F3C94800, x86_fp80 0xK3FFAD2D423870A09A000, x86_fp80 0xK00000000000000000000]
@G_K61.WGK61 = internal unnamed_addr constant [31 x x86_fp80] [x86_fp80 0xK3FF5B60F90D1ABC92800, x86_fp80 0xK3FF6FEF71B4EA8270000, x86_fp80 0xK3FF7D946603BF4021000, x86_fp80 0xK3FF897EEF437508A6800, x86_fp80 0xK3FF8C1B551F6A5E74000, x86_fp80 0xK3FF8EB6F03923F893800, x86_fp80 0xK3FF98A9DAD35F58B8800, x86_fp80 0xK3FF99F0A67B040CA3800, x86_fp80 0xK3FF9B2D0B57FABDA0000, x86_fp80 0xK3FF9C62C8B3F486E2000, x86_fp80 0xK3FF9D92B67A79E280800, x86_fp80 0xK3FF9EB8D9C6259A21000, x86_fp80 0xK3FF9FD31378E106AF000, x86_fp80 0xK3FFA87178DC7C94F7000, x86_fp80 0xK3FFA8F467E8DDC25C000, x86_fp80 0xK3FFA9711F65FA8D4D800, x86_fp80 0xK3FFA9E6DD068080EE000, x86_fp80 0xK3FFAA55FC5C634F0E800, x86_fp80 0xK3FFAABE88924B2002000, x86_fp80 0xK3FFAB1FB4A4F20A0E000, x86_fp80 0xK3FFAB78FB94F2DEAA000, x86_fp80 0xK3FFABCA89CA0D7A3F800, x86_fp80 0xK3FFAC145A1B5BE90D800, x86_fp80 0xK3FFAC55E89C6052FD800, x86_fp80 0xK3FFAC8EE59F1ADC1E000, x86_fp80 0xK3FFACBF68EFCD1EE9800, x86_fp80 0xK3FFACE76707F31F51800, x86_fp80 0xK3FFAD0696E158CCE6000, x86_fp80 0xK3FFAD1CDAF8DCF1DD800, x86_fp80 0xK3FFAD2A43443A707B000, x86_fp80 0xK3FFAD2EC232D0DC69800]
@G_K61.WG30 = internal unnamed_addr constant [15 x x86_fp80] [x86_fp80 0xK3FF8828D058B79213800, x86_fp80 0xK3FF99746FDAF000CA000, x86_fp80 0xK3FF9EBCDE85F7B2F6800, x86_fp80 0xK3FFA9EEBE6F32A008000, x86_fp80 0xK3FFAC641E18D8ACF6800, x86_fp80 0xK3FFAEB7DF19B2D06F000, x86_fp80 0xK3FFB871D7F3DC831C000, x86_fp80 0xK3FFB970D5F5B107A7000, x86_fp80 0xK3FFBA56358C7C1A9D800, x86_fp80 0xK3FFBB1F8840076CE5800, x86_fp80 0xK3FFBBCAABBA1E3FDE800, x86_fp80 0xK3FFBC55CF8F42CE29000, x86_fp80 0xK3FFBCBF7A2A289562000, x86_fp80 0xK3FFBD068CCBF75291800, x86_fp80 0xK3FFBD2A46963E09D4800]
@DBL_MIN = global double 0.000000e+00
@DBL_EPSILON = global double 0.000000e+00
define double @G_K61(double (double, i8*)* nocapture %0, i8* %1, double %2, double %3, double* nocapture %4, double* nocapture %5, double* nocapture %6) {
%8 = alloca [30 x double]
%9 = alloca [30 x double]
%10 = bitcast [30 x double]* %8 to i8*
%11 = bitcast [30 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, 0xK3FFAD2EC232D0DC69800
%20 = fptrunc x86_fp80 %19 to double
%21 = tail call x86_fp80 @fabs(double %20)
%22 = fptrunc x86_fp80 %21 to double
store double %22, double* %5
%23 = fpext double %15 to x86_fp80
br label %24
24: ; preds = %7, %24
%25 = phi i64 [ 0, %7 ], [ %59, %24 ]
%26 = phi double [ %20, %7 ], [ %51, %24 ]
%27 = phi double [ 0.000000e+00, %7 ], [ %46, %24 ]
%28 = shl nuw nsw i64 %25, 1
%29 = or i64 %28, 1
%30 = getelementptr inbounds [31 x x86_fp80], [31 x x86_fp80]* @G_K61.XGK61, i64 0, i64 %29
%31 = load x86_fp80, x86_fp80* %30
%32 = fmul x86_fp80 %31, %23
%33 = fptrunc x86_fp80 %32 to double
%34 = fsub double %13, %33
%35 = tail call double %0(double %34, i8* %1)
%36 = fadd double %13, %33
%37 = tail call double %0(double %36, i8* %1)
%38 = getelementptr inbounds [30 x double], [30 x double]* %8, i64 0, i64 %29
store double %35, double* %38
%39 = getelementptr inbounds [30 x double], [30 x double]* %9, i64 0, i64 %29
store double %37, double* %39
%40 = fadd double %35, %37
%41 = getelementptr inbounds [15 x x86_fp80], [15 x x86_fp80]* @G_K61.WG30, i64 0, i64 %25
%42 = load x86_fp80, x86_fp80* %41
%43 = fpext double %40 to x86_fp80
%44 = fpext double %27 to x86_fp80
%45 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %42, x86_fp80 %43, x86_fp80 %44)
%46 = fptrunc x86_fp80 %45 to double
%47 = getelementptr inbounds [31 x x86_fp80], [31 x x86_fp80]* @G_K61.WGK61, i64 0, i64 %29
%48 = load x86_fp80, x86_fp80* %47
%49 = fpext double %26 to x86_fp80
%50 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %48, x86_fp80 %43, x86_fp80 %49)
%51 = fptrunc x86_fp80 %50 to double
%52 = load double, double* %5
%53 = fpext double %52 to x86_fp80
%54 = tail call x86_fp80 @fabs(double %35)
%55 = tail call x86_fp80 @fabs(double %37)
%56 = fadd x86_fp80 %54, %55
%57 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %48, x86_fp80 %56, x86_fp80 %53)
%58 = fptrunc x86_fp80 %57 to double
store double %58, double* %5
%59 = add nuw nsw i64 %25, 1
%60 = icmp eq i64 %59, 15
br i1 %60, label %61, label %24
61: ; preds = %24, %61
%62 = phi i64 [ %89, %61 ], [ 0, %24 ]
%63 = phi double [ %81, %61 ], [ %51, %24 ]
%64 = shl nuw nsw i64 %62, 1
%65 = getelementptr inbounds [31 x x86_fp80], [31 x x86_fp80]* @G_K61.XGK61, i64 0, i64 %64
%66 = load x86_fp80, x86_fp80* %65
%67 = fmul x86_fp80 %66, %23
%68 = fptrunc x86_fp80 %67 to double
%69 = fsub double %13, %68
%70 = tail call double %0(double %69, i8* %1)
%71 = fadd double %13, %68
%72 = tail call double %0(double %71, i8* %1)
%73 = getelementptr inbounds [30 x double], [30 x double]* %8, i64 0, i64 %64
store double %70, double* %73
%74 = getelementptr inbounds [30 x double], [30 x double]* %9, i64 0, i64 %64
store double %72, double* %74
%75 = fadd double %70, %72
%76 = getelementptr inbounds [31 x x86_fp80], [31 x x86_fp80]* @G_K61.WGK61, i64 0, i64 %64
%77 = load x86_fp80, x86_fp80* %76
%78 = fpext double %75 to x86_fp80
%79 = fpext double %63 to x86_fp80
%80 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %77, x86_fp80 %78, x86_fp80 %79)
%81 = fptrunc x86_fp80 %80 to double
%82 = load double, double* %5
%83 = fpext double %82 to x86_fp80
%84 = tail call x86_fp80 @fabs(double %70)
%85 = tail call x86_fp80 @fabs(double %72)
%86 = fadd x86_fp80 %84, %85
%87 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %77, x86_fp80 %86, x86_fp80 %83)
%88 = fptrunc x86_fp80 %87 to double
store double %88, double* %5
%89 = add nuw nsw i64 %62, 1
%90 = icmp eq i64 %89, 15
br i1 %90, label %91, label %61
91: ; preds = %61
%92 = fmul double %81, 5.000000e-01
%93 = fsub double %17, %92
%94 = tail call x86_fp80 @fabs(double %93)
%95 = fmul x86_fp80 %94, 0xK3FFAD2EC232D0DC69800
%96 = fptrunc x86_fp80 %95 to double
store double %96, double* %6
br label %97
97: ; preds = %91, %97
%98 = phi double [ %96, %91 ], [ %113, %97 ]
%99 = phi i64 [ 0, %91 ], [ %114, %97 ]
%100 = fpext double %98 to x86_fp80
%101 = getelementptr inbounds [31 x x86_fp80], [31 x x86_fp80]* @G_K61.WGK61, i64 0, i64 %99
%102 = load x86_fp80, x86_fp80* %101
%103 = getelementptr inbounds [30 x double], [30 x double]* %8, i64 0, i64 %99
%104 = load double, double* %103
%105 = fsub double %104, %92
%106 = tail call x86_fp80 @fabs(double %105)
%107 = getelementptr inbounds [30 x double], [30 x double]* %9, i64 0, i64 %99
%108 = load double, double* %107
%109 = fsub double %108, %92
%110 = tail call x86_fp80 @fabs(double %109)
%111 = fadd x86_fp80 %106, %110
%112 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %102, x86_fp80 %111, x86_fp80 %100)
%113 = fptrunc x86_fp80 %112 to double
store double %113, double* %6
%114 = add nuw nsw i64 %99, 1
%115 = icmp eq i64 %114, 30
br i1 %115, label %116, label %97
116: ; preds = %97
%117 = fptrunc x86_fp80 %16 to double
%118 = load double, double* %5
%119 = fmul double %118, %117
store double %119, double* %5
%120 = load double, double* %6
%121 = fmul double %120, %117
store double %121, double* %6
%122 = fsub double %81, %46
%123 = fmul double %15, %122
%124 = tail call x86_fp80 @fabs(double %123)
%125 = fptrunc x86_fp80 %124 to double
store double %125, double* %4
%126 = load double, double* %6
%127 = fcmp une double %126, 0.000000e+00
%128 = fcmp une double %125, 0.000000e+00
%129 = select i1 %127, i1 %128, i1 false
br i1 %129, label %130, label %144
130: ; preds = %116
%131 = fmul double %125, 2.000000e+02
%132 = fdiv double %131, %126
%133 = tail call double @pow(double %132, double 1.500000e+00)
%134 = fcmp ogt double %133, 1.000000e+00
br i1 %134, label %141, label %135
135: ; preds = %130
%136 = load double, double* %4
%137 = fmul double %136, 2.000000e+02
%138 = load double, double* %6
%139 = fdiv double %137, %138
%140 = tail call double @pow(double %139, double 1.500000e+00)
br label %141
141: ; preds = %130, %135
%142 = phi double [ %140, %135 ], [ 1.000000e+00, %130 ]
%143 = fmul double %126, %142
store double %143, double* %4
br label %144
144: ; preds = %141, %116
%145 = phi double [ %143, %141 ], [ %125, %116 ]
%146 = load double, double* %5
%147 = load double, double* @DBL_MIN
%148 = load double, double* @DBL_EPSILON
%149 = fmul double %148, 5.000000e+01
%150 = fdiv double %147, %149
%151 = fcmp ogt double %146, %150
br i1 %151, label %152, label %156
152: ; preds = %144
%153 = fmul double %146, %149
%154 = fcmp ogt double %153, %145
%155 = select i1 %154, double %153, double %145
store double %155, double* %4
br label %156
156: ; preds = %152, %144
%157 = fmul double %15, %81
ret double %157
}