#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_K51(double f(double, void *), void *cbData, double a, double b,
             double *abserr, double *resabs, double *resasc) {
  static long double XGK51[26] = {
      0.99926210499260983419, 0.99555696979049809791, 0.98803579453407724764,
      0.97666392145951751150, 0.96161498642584251242, 0.94297457122897433941,
      0.92074711528170156175, 0.89499199787827536885, 0.86584706529327559545,
      0.83344262876083400142, 0.79787379799850005941, 0.75925926303735763058,
      0.71776640681308438819, 0.67356636847346836449, 0.62681009901031741279,
      0.57766293024122296772, 0.52632528433471918260, 0.47300273144571496052,
      0.41788538219303774885, 0.36117230580938783774, 0.30308953893110783017,
      0.24386688372098843205, 0.18371893942104889202, 0.12286469261071039639,
      0.06154448300568507889, 0.00000000000000000000};
  static long double WGK51[26] = {
      0.00198738389233031593, 0.00556193213535671376, 0.00947397338617415161,
      0.01323622919557167481, 0.01684781770912829823, 0.02043537114588283546,
      0.02400994560695321622, 0.02747531758785173780, 0.03079230016738748889,
      0.03400213027432933784, 0.03711627148341554356, 0.04008382550403238207,
      0.04287284502017004948, 0.04550291304992178891, 0.04798253713883671391,
      0.05027767908071567196, 0.05236288580640747586, 0.05425112988854549014,
      0.05595081122041231731, 0.05743711636156783285, 0.05868968002239420796,
      0.05972034032417405998, 0.06053945537604586295, 0.06112850971705304831,
      0.06147118987142531666, 0.06158081806783293508};
  static long double WG25[13] = {
      0.01139379850102628795, 0.02635498661503213726, 0.04093915670130631266,
      0.05490469597583519193, 0.06803833381235691721, 0.08014070033500101801,
      0.09102826198296364981, 0.10053594906705064420, 0.10851962447426365312,
      0.11485825914571164834, 0.11945576353578477223, 0.12224244299031004169,
      0.12317605372671545120};
  double fv1[25], fv2[25];
  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 * WG25[12];
  resk = fc * WGK51[25];
  *resabs = fabs(resk);
  for (j = 0; j < 12; j++) {
    jtw = 2 * j + 1;
    adir = hlgth * XGK51[jtw];
    fval1 = (*f)(centr - adir, cbData);
    fval2 = (*f)(centr + adir, cbData);
    fv1[jtw] = fval1;
    fv2[jtw] = fval2;
    fsum = fval1 + fval2;
    resg += WG25[j] * fsum;
    resk += WGK51[jtw] * fsum;
    *resabs = *resabs + WGK51[jtw] * (fabs(fval1) + fabs(fval2));
  }
  for (j = 0; j < 13; j++) {
    jtwm1 = j * 2;
    adir = hlgth * XGK51[jtwm1];
    fval1 = (*f)(centr - adir, cbData);
    fval2 = (*f)(centr + adir, cbData);
    fv1[jtwm1] = fval1;
    fv2[jtwm1] = fval2;
    fsum = fval1 + fval2;
    resk = resk + WGK51[jtwm1] * fsum;
    *resabs = (*resabs) + WGK51[jtwm1] * (fabs(fval1) + fabs(fval2));
  }
  reskh = resk * 0.5;
  *resasc = WGK51[25] * fabs(fc - reskh);
  for (j = 0; j < 25; j++)
    *resasc =
        (*resasc) + WGK51[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_K51>:
push   %rbp
mov    %rsp,%rbp
sub    $0x300,%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,-0x1e0(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm2
subsd  %xmm2,%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x210(%rbp)
ff
movsd  -0x210(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fstpl  -0x1e8(%rbp)
mov    -0x8(%rbp),%rax
movsd  -0x1e0(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x1f0(%rbp)
ff
fldl   -0x1f0(%rbp)
fldt   0x3282(%rip)
fmulp  %st,%st(1)
fstpl  -0x218(%rbp)
fldl   -0x1f0(%rbp)
fldt   0x319e(%rip)
fmulp  %st,%st(1)
fstpl  -0x220(%rbp)
movsd  -0x220(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fstpl  -0x248(%rbp)
movsd  -0x248(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x0,-0x234(%rbp)
cmpl   $0xc,-0x234(%rbp)
jge    13c1 <G_K51+0x2a1>
mov    -0x234(%rbp),%ecx
mov    %ecx,%eax
lea    0x1(%rax,%rax,1),%eax
mov    %eax,-0x238(%rbp)
fldl   -0x210(%rbp)
movslq -0x238(%rbp),%rax
shl    $0x4,%rax
lea    0x2e02(%rip),%rcx
fldt   (%rax,%rcx,1)
fmulp  %st,%st(1)
fstpl  -0x1d8(%rbp)
mov    -0x8(%rbp),%rax
movsd  -0x1e0(%rbp),%xmm0
ff
movsd  -0x1d8(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x200(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  -0x1e0(%rbp),%xmm0
ff
movsd  -0x1d8(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x208(%rbp)
ff
movsd  -0x200(%rbp),%xmm0
ff
movslq -0x238(%rbp),%rax
movsd  %xmm0,-0x100(%rbp,%rax,8)
ff ff
movsd  -0x208(%rbp),%xmm0
ff
movslq -0x238(%rbp),%rax
movsd  %xmm0,-0x1d0(%rbp,%rax,8)
ff ff
movsd  -0x200(%rbp),%xmm0
ff
movsd  -0x208(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1f8(%rbp)
ff
movslq -0x234(%rbp),%rax
shl    $0x4,%rax
lea    0x308d(%rip),%rcx
fldt   (%rax,%rcx,1)
fldl   -0x1f8(%rbp)
fldl   -0x218(%rbp)
fxch   %st(2)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpl  -0x218(%rbp)
movslq -0x238(%rbp),%rax
shl    $0x4,%rax
lea    0x2ec0(%rip),%rcx
fldt   (%rax,%rcx,1)
fldl   -0x1f8(%rbp)
fldl   -0x220(%rbp)
fxch   %st(2)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpl  -0x220(%rbp)
mov    -0x30(%rbp),%rax
fldl   (%rax)
fstpt  -0x288(%rbp)
movslq -0x238(%rbp),%rax
shl    $0x4,%rax
fldt   (%rax,%rcx,1)
fstpt  -0x27c(%rbp)
movsd  -0x200(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fstpt  -0x294(%rbp)
movsd  -0x208(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fldt   -0x294(%rbp)
fldt   -0x288(%rbp)
fldt   -0x27c(%rbp)
fxch   %st(2)
faddp  %st,%st(3)
fxch   %st(1)
fmulp  %st,%st(2)
faddp  %st,%st(1)
fstpl  -0x270(%rbp)
movsd  -0x270(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x234(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x234(%rbp)
jmp    1207 <G_K51+0xe7>
movl   $0x0,-0x234(%rbp)
cmpl   $0xd,-0x234(%rbp)
jge    1552 <G_K51+0x432>
mov    -0x234(%rbp),%eax
add    %eax,%eax
mov    %eax,-0x23c(%rbp)
fldl   -0x210(%rbp)
movslq -0x23c(%rbp),%rax
shl    $0x4,%rax
lea    0x2c42(%rip),%rcx
fldt   (%rax,%rcx,1)
fmulp  %st,%st(1)
fstpl  -0x1d8(%rbp)
mov    -0x8(%rbp),%rax
movsd  -0x1e0(%rbp),%xmm0
ff
movsd  -0x1d8(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x200(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  -0x1e0(%rbp),%xmm0
ff
movsd  -0x1d8(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x208(%rbp)
ff
movsd  -0x200(%rbp),%xmm0
ff
movslq -0x23c(%rbp),%rax
movsd  %xmm0,-0x100(%rbp,%rax,8)
ff ff
movsd  -0x208(%rbp),%xmm0
ff
movslq -0x23c(%rbp),%rax
movsd  %xmm0,-0x1d0(%rbp,%rax,8)
ff ff
movsd  -0x200(%rbp),%xmm0
ff
movsd  -0x208(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1f8(%rbp)
ff
fldl   -0x220(%rbp)
movslq -0x23c(%rbp),%rax
shl    $0x4,%rax
lea    0x2d27(%rip),%rcx
fldt   (%rax,%rcx,1)
fldl   -0x1f8(%rbp)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpl  -0x220(%rbp)
mov    -0x30(%rbp),%rax
fldl   (%rax)
fstpt  -0x2ac(%rbp)
movslq -0x23c(%rbp),%rax
shl    $0x4,%rax
fldt   (%rax,%rcx,1)
fstpt  -0x2a0(%rbp)
movsd  -0x200(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fstpt  -0x2b8(%rbp)
movsd  -0x208(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fldt   -0x2b8(%rbp)
fldt   -0x2ac(%rbp)
fldt   -0x2a0(%rbp)
fxch   %st(2)
faddp  %st,%st(3)
fxch   %st(1)
fmulp  %st,%st(2)
faddp  %st,%st(1)
fstpl  -0x268(%rbp)
movsd  -0x268(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x234(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x234(%rbp)
jmp    13cb <G_K51+0x2ab>
movsd  -0x220(%rbp),%xmm0
ff
movsd  0xa9e(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x228(%rbp)
ff
fldt   0x2dfc(%rip)
fstpt  -0x2c4(%rbp)
movsd  -0x1f0(%rbp),%xmm0
ff
movsd  -0x228(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fldt   -0x2c4(%rbp)
fmulp  %st,%st(1)
fstpl  -0x250(%rbp)
movsd  -0x250(%rbp),%xmm0
ff
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x0,-0x234(%rbp)
cmpl   $0x19,-0x234(%rbp)
jge    1679 <G_K51+0x559>
mov    -0x38(%rbp),%rax
fldl   (%rax)
fstpt  -0x2dc(%rbp)
movslq -0x234(%rbp),%rax
mov    %rax,%rcx
shl    $0x4,%rcx
lea    0x2bf7(%rip),%rdx
fldt   (%rcx,%rdx,1)
fstpt  -0x2d0(%rbp)
movsd  -0x100(%rbp,%rax,8),%xmm0
ff ff
movsd  -0x228(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fstpt  -0x2e8(%rbp)
movslq -0x234(%rbp),%rax
movsd  -0x1d0(%rbp,%rax,8),%xmm0
ff ff
movsd  -0x228(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fldt   -0x2e8(%rbp)
fldt   -0x2dc(%rbp)
fldt   -0x2d0(%rbp)
fxch   %st(2)
faddp  %st,%st(3)
fxch   %st(1)
fmulp  %st,%st(2)
faddp  %st,%st(1)
fstpl  -0x260(%rbp)
movsd  -0x260(%rbp),%xmm0
ff
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x234(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x234(%rbp)
jmp    15bb <G_K51+0x49b>
movsd  -0x220(%rbp),%xmm0
ff
movsd  -0x210(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x230(%rbp)
ff
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0x1e8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0x1e8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
movsd  -0x220(%rbp),%xmm0
ff
movsd  -0x218(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
movsd  -0x210(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fstpl  -0x258(%rbp)
movsd  -0x258(%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_K51+0x600>
jp     1720 <G_K51+0x600>
jmp    17e5 <G_K51+0x6c5>
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1740 <G_K51+0x620>
jp     1740 <G_K51+0x620>
jmp    17e5 <G_K51+0x6c5>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x2f0(%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_K51+0x67c>
movsd  0x879(%rip),%xmm0
movsd  %xmm0,-0x2f8(%rbp)
ff
jmp    17c9 <G_K51+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,-0x2f8(%rbp)
ff
movsd  -0x2f0(%rbp),%xmm0
ff
movsd  -0x2f8(%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_K51+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_K51+0x74a>
movsd  0x7d6(%rip),%xmm0
mov    0x2797(%rip),%rax
mulsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x300(%rbp)
ff
jmp    187a <G_K51+0x75a>
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x300(%rbp)
ff
movsd  -0x300(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x230(%rbp),%xmm0
ff
add    $0x300,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<G_K51>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x2c8,%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    0xfd2(%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,0x208(%rsp,%r15,1)
movsd  %xmm0,0x138(%rsp,%r15,1)
movapd %xmm1,%xmm2
addsd  %xmm0,%xmm2
lea    0x10e8(%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    $0xc0,%r15
jne    1220 <G_K51+0x100>
movsd  %xmm0,0x30(%rsp)
xor    %ebx,%ebx
mov    %rbp,%r15
xor    %ebp,%ebp
nop
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,0x200(%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    $0xd0,%rbx
jne    1370 <G_K51+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  0x200(%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    $0x19,%rbx
jne    14c0 <G_K51+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_K51+0x484>
jnp    160b <G_K51+0x4eb>
ucomisd %xmm1,%xmm0
jne    15ac <G_K51+0x48c>
jnp    160b <G_K51+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_K51+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_K51+0x52a>
mulsd  %xmm2,%xmm1
maxsd  %xmm0,%xmm1
movsd  %xmm1,(%rbx)
movsd  0x40(%rsp),%xmm0
mulsd  %xmm4,%xmm0
add    $0x2c8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@G_K51.XGK51 = internal global [26 x x86_fp80] [x86_fp80 0xK3FFEFFCFA42D134BF000, x86_fp80 0xK3FFEFEDCD2528E17B800, x86_fp80 0xK3FFEFCEFE9F0CD1DE000, x86_fp80 0xK3FFEFA06A591DA0BA800, x86_fp80 0xK3FFEF62C66560ADFD000, x86_fp80 0xK3FFEF166C81063586000, x86_fp80 0xK3FFEEBB6153C0570A800, x86_fp80 0xK3FFEE51E321111A30800, x86_fp80 0xK3FFEDDA8273CC5AE9800, x86_fp80 0xK3FFED55C7F019EBBA800, x86_fp80 0xK3FFECC41750CBD267800, x86_fp80 0xK3FFEC25ED0A7EE361000, x86_fp80 0xK3FFEB7BF8A0B6DFC2800, x86_fp80 0xK3FFEAC6ED874476EA800, x86_fp80 0xK3FFEA076A06C0D451000, x86_fp80 0xK3FFE93E1B7C17F618800, x86_fp80 0xK3FFE86BD40FB46887800, x86_fp80 0xK3FFDF22D69FCF4BE9800, x86_fp80 0xK3FFDD5F512A3FDB9C000, x86_fp80 0xK3FFDB8EB9393582EC000, x86_fp80 0xK3FFD9B2E8D52F00A1800, x86_fp80 0xK3FFCF9B83D88A2E5E800, x86_fp80 0xK3FFCBC20D151E078A000, x86_fp80 0xK3FFBFBA07BE4C4CCF000, x86_fp80 0xK3FFAFC16115C23692800, x86_fp80 0xK00000000000000000000]
@G_K51.WGK51 = internal global [26 x x86_fp80] [x86_fp80 0xK3FF6823EC4D278CF0000, x86_fp80 0xK3FF7B640DE4FDCE3E000, x86_fp80 0xK3FF89B38B976D5AFA000, x86_fp80 0xK3FF8D8DCC4E11C1C5000, x86_fp80 0xK3FF98A046F423AC88000, x86_fp80 0xK3FF9A76814581A1F7000, x86_fp80 0xK3FF9C4B0816523A8C000, x86_fp80 0xK3FF9E113EACF95CE4000, x86_fp80 0xK3FF9FC402246005D8000, x86_fp80 0xK3FFA8B45D1585C78A800, x86_fp80 0xK3FFA98073B42BB4C6800, x86_fp80 0xK3FFAA42EEFFA36D83800, x86_fp80 0xK3FFAAF9B6FB3F83EE000, x86_fp80 0xK3FFABA614336C11BD800, x86_fp80 0xK3FFAC489563CA5840000, x86_fp80 0xK3FFACDEFF7B5ED647800, x86_fp80 0xK3FFAD67A772100D48800, x86_fp80 0xK3FFADE366ECA4711D800, x86_fp80 0xK3FFAE52CAD86057DE000, x86_fp80 0xK3FFAEB432E859778B800, x86_fp80 0xK3FFAF0649704F1343000, x86_fp80 0xK3FFAF49D50C992B58000, x86_fp80 0xK3FFAF7F8384F5304E800, x86_fp80 0xK3FFAFA61E3616849D800, x86_fp80 0xK3FFAFBC936E24DBC1000, x86_fp80 0xK3FFAFC3C2AFA98A6B800]
@G_K51.WG25 = internal global [13 x x86_fp80] [x86_fp80 0xK3FF8BAAD0DFC1A920800, x86_fp80 0xK3FF9D7E669B3237A4800, x86_fp80 0xK3FFAA7AFD13286E17800, x86_fp80 0xK3FFAE0E3BF19CEFDC000, x86_fp80 0xK3FFB8B57AE94C9880000, x86_fp80 0xK3FFBA420CEB823909800, x86_fp80 0xK3FFBBA6D0681D4118000, x86_fp80 0xK3FFBCDE5CAAA85BE3800, x86_fp80 0xK3FFBDE3F8970BAB3F800, x86_fp80 0xK3FFBEB3ACE95A68D6800, x86_fp80 0xK3FFBF4A5392DA3A53000, x86_fp80 0xK3FFBFA5A3EF69CB9B000, x86_fp80 0xK3FFBFC43BA1340ADF000]
@DBL_MIN = global double 0.000000e+00
@DBL_EPSILON = global double 0.000000e+00
define double @G_K51(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 [25 x double]
%16 = alloca [25 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 ([13 x x86_fp80], [13 x x86_fp80]* @G_K51.WG25, i64 0, i64 12)
%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 ([26 x x86_fp80], [26 x x86_fp80]* @G_K51.WGK51, i64 0, i64 25)
%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, 12
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 [26 x x86_fp80], [26 x x86_fp80]* @G_K51.XGK51, 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 [25 x double], [25 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 [25 x double], [25 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 [13 x x86_fp80], [13 x x86_fp80]* @G_K51.WG25, 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 [26 x x86_fp80], [26 x x86_fp80]* @G_K51.WGK51, 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 [26 x x86_fp80], [26 x x86_fp80]* @G_K51.WGK51, 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, 13
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 [26 x x86_fp80], [26 x x86_fp80]* @G_K51.XGK51, 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 [25 x double], [25 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 [25 x double], [25 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 [26 x x86_fp80], [26 x x86_fp80]* @G_K51.WGK51, 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 [26 x x86_fp80], [26 x x86_fp80]* @G_K51.WGK51, 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 ([26 x x86_fp80], [26 x x86_fp80]* @G_K51.WGK51, i64 0, i64 25)
%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, 25
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 [26 x x86_fp80], [26 x x86_fp80]* @G_K51.WGK51, 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 [25 x double], [25 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 [25 x double], [25 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_K51.XGK51 = internal unnamed_addr constant [26 x x86_fp80] [x86_fp80 0xK3FFEFFCFA42D134BF000, x86_fp80 0xK3FFEFEDCD2528E17B800, x86_fp80 0xK3FFEFCEFE9F0CD1DE000, x86_fp80 0xK3FFEFA06A591DA0BA800, x86_fp80 0xK3FFEF62C66560ADFD000, x86_fp80 0xK3FFEF166C81063586000, x86_fp80 0xK3FFEEBB6153C0570A800, x86_fp80 0xK3FFEE51E321111A30800, x86_fp80 0xK3FFEDDA8273CC5AE9800, x86_fp80 0xK3FFED55C7F019EBBA800, x86_fp80 0xK3FFECC41750CBD267800, x86_fp80 0xK3FFEC25ED0A7EE361000, x86_fp80 0xK3FFEB7BF8A0B6DFC2800, x86_fp80 0xK3FFEAC6ED874476EA800, x86_fp80 0xK3FFEA076A06C0D451000, x86_fp80 0xK3FFE93E1B7C17F618800, x86_fp80 0xK3FFE86BD40FB46887800, x86_fp80 0xK3FFDF22D69FCF4BE9800, x86_fp80 0xK3FFDD5F512A3FDB9C000, x86_fp80 0xK3FFDB8EB9393582EC000, x86_fp80 0xK3FFD9B2E8D52F00A1800, x86_fp80 0xK3FFCF9B83D88A2E5E800, x86_fp80 0xK3FFCBC20D151E078A000, x86_fp80 0xK3FFBFBA07BE4C4CCF000, x86_fp80 0xK3FFAFC16115C23692800, x86_fp80 0xK00000000000000000000]
@G_K51.WGK51 = internal unnamed_addr constant [26 x x86_fp80] [x86_fp80 0xK3FF6823EC4D278CF0000, x86_fp80 0xK3FF7B640DE4FDCE3E000, x86_fp80 0xK3FF89B38B976D5AFA000, x86_fp80 0xK3FF8D8DCC4E11C1C5000, x86_fp80 0xK3FF98A046F423AC88000, x86_fp80 0xK3FF9A76814581A1F7000, x86_fp80 0xK3FF9C4B0816523A8C000, x86_fp80 0xK3FF9E113EACF95CE4000, x86_fp80 0xK3FF9FC402246005D8000, x86_fp80 0xK3FFA8B45D1585C78A800, x86_fp80 0xK3FFA98073B42BB4C6800, x86_fp80 0xK3FFAA42EEFFA36D83800, x86_fp80 0xK3FFAAF9B6FB3F83EE000, x86_fp80 0xK3FFABA614336C11BD800, x86_fp80 0xK3FFAC489563CA5840000, x86_fp80 0xK3FFACDEFF7B5ED647800, x86_fp80 0xK3FFAD67A772100D48800, x86_fp80 0xK3FFADE366ECA4711D800, x86_fp80 0xK3FFAE52CAD86057DE000, x86_fp80 0xK3FFAEB432E859778B800, x86_fp80 0xK3FFAF0649704F1343000, x86_fp80 0xK3FFAF49D50C992B58000, x86_fp80 0xK3FFAF7F8384F5304E800, x86_fp80 0xK3FFAFA61E3616849D800, x86_fp80 0xK3FFAFBC936E24DBC1000, x86_fp80 0xK3FFAFC3C2AFA98A6B800]
@G_K51.WG25 = internal unnamed_addr constant [13 x x86_fp80] [x86_fp80 0xK3FF8BAAD0DFC1A920800, x86_fp80 0xK3FF9D7E669B3237A4800, x86_fp80 0xK3FFAA7AFD13286E17800, x86_fp80 0xK3FFAE0E3BF19CEFDC000, x86_fp80 0xK3FFB8B57AE94C9880000, x86_fp80 0xK3FFBA420CEB823909800, x86_fp80 0xK3FFBBA6D0681D4118000, x86_fp80 0xK3FFBCDE5CAAA85BE3800, x86_fp80 0xK3FFBDE3F8970BAB3F800, x86_fp80 0xK3FFBEB3ACE95A68D6800, x86_fp80 0xK3FFBF4A5392DA3A53000, x86_fp80 0xK3FFBFA5A3EF69CB9B000, x86_fp80 0xK3FFBFC43BA1340ADF000]
@DBL_MIN = global double 0.000000e+00
@DBL_EPSILON = global double 0.000000e+00
define double @G_K51(double (double, i8*)* nocapture %0, i8* %1, double %2, double %3, double* nocapture %4, double* nocapture %5, double* nocapture %6) {
%8 = alloca [25 x double]
%9 = alloca [25 x double]
%10 = bitcast [25 x double]* %8 to i8*
%11 = bitcast [25 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, 0xK3FFBFC43BA1340ADF000
%20 = fmul x86_fp80 %18, 0xK3FFAFC3C2AFA98A6B800
%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 [26 x x86_fp80], [26 x x86_fp80]* @G_K51.XGK51, 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 [25 x double], [25 x double]* %8, i64 0, i64 %31
store double %37, double* %40
%41 = getelementptr inbounds [25 x double], [25 x double]* %9, i64 0, i64 %31
store double %39, double* %41
%42 = fadd double %37, %39
%43 = getelementptr inbounds [13 x x86_fp80], [13 x x86_fp80]* @G_K51.WG25, 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 [26 x x86_fp80], [26 x x86_fp80]* @G_K51.WGK51, 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, 12
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 [26 x x86_fp80], [26 x x86_fp80]* @G_K51.XGK51, 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 [25 x double], [25 x double]* %8, i64 0, i64 %66
store double %72, double* %75
%76 = getelementptr inbounds [25 x double], [25 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 [26 x x86_fp80], [26 x x86_fp80]* @G_K51.WGK51, 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, 13
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, 0xK3FFAFC3C2AFA98A6B800
%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 [26 x x86_fp80], [26 x x86_fp80]* @G_K51.WGK51, i64 0, i64 %101
%104 = load x86_fp80, x86_fp80* %103
%105 = getelementptr inbounds [25 x double], [25 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 [25 x double], [25 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, 25
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
}