#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_K41(double f(double, void *), void *cbData, double a, double b,
             double *abserr, double *resabs, double *resasc) {
  static long double XGK41[21] = {
      0.99885903158827766384, 0.99312859918509492479, 0.98150787745025025919,
      0.96397192727791379127, 0.94082263383175475352, 0.91223442825132590587,
      0.87827681125228197608, 0.83911697182221882339, 0.79504142883755119835,
      0.74633190646015079261, 0.69323765633475138481, 0.63605368072651502545,
      0.57514044681971031534, 0.51086700195082709800, 0.44359317523872510320,
      0.37370608871541956067, 0.30162786811491300432, 0.22778585114164507808,
      0.15260546524092267551, 0.07652652113349733375, 0.00000000000000000000};
  static long double WGK41[21] = {
      0.00307358371852053150, 0.00860026985564294220, 0.01462616925697125298,
      0.02038837346126652360, 0.02588213360495115883, 0.03128730677703279896,
      0.03660016975820079803, 0.04166887332797368626, 0.04643482186749767472,
      0.05094457392372869193, 0.05519510534828599474, 0.05911140088063957237,
      0.06265323755478116803, 0.06583459713361842211, 0.06864867292852161935,
      0.07105442355344406831, 0.07303069033278666750, 0.07458287540049918899,
      0.07570449768455667466, 0.07637786767208073671, 0.07660071191799965645};
  static long double WG20[10] = {
      0.01761400713915211831, 0.04060142980038694133, 0.06267204833410906357,
      0.08327674157670474872, 0.10193011981724043504, 0.11819453196151841731,
      0.13168863844917662690, 0.14209610931838205133, 0.14917298647260374679,
      0.15275338713072585070};
  double fv1[20], fv2[20];
  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 * WGK41[20];
  *resabs = fabs(resk);
  for (j = 0; j < 10; j++) {
    jtw = 2 * j + 1;
    adir = hlgth * XGK41[jtw];
    fval1 = (*f)(centr - adir, cbData);
    fval2 = (*f)(centr + adir, cbData);
    fv1[jtw] = fval1;
    fv2[jtw] = fval2;
    fsum = fval1 + fval2;
    resg += WG20[j] * fsum;
    resk += WGK41[jtw] * fsum;
    *resabs = *resabs + WGK41[jtw] * (fabs(fval1) + fabs(fval2));
  }
  for (j = 0; j < 10; j++) {
    jtwm1 = j * 2;
    adir = hlgth * XGK41[jtwm1];
    fval1 = (*f)(centr - adir, cbData);
    fval2 = (*f)(centr + adir, cbData);
    fv1[jtwm1] = fval1;
    fv2[jtwm1] = fval2;
    fsum = fval1 + fval2;
    resk = resk + WGK41[jtwm1] * fsum;
    *resabs = (*resabs) + WGK41[jtwm1] * (fabs(fval1) + fabs(fval2));
  }
  reskh = resk * 0.5;
  *resasc = WGK41[20] * fabs(fc - reskh);
  for (j = 0; j < 20; j++)
    *resasc =
        (*resasc) + WGK41[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_K41>:
push   %rbp
mov    %rsp,%rbp
sub    $0x2b0,%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,-0x190(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm2
subsd  %xmm2,%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  -0x1c0(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fstpl  -0x198(%rbp)
movq   $0x0,-0x1c8(%rbp)
mov    -0x8(%rbp),%rax
movsd  -0x190(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x1a0(%rbp)
ff
fldl   -0x1a0(%rbp)
fldt   0x3107(%rip)
fmulp  %st,%st(1)
fstpl  -0x1d0(%rbp)
movsd  -0x1d0(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fstpl  -0x1f8(%rbp)
movsd  -0x1f8(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x0,-0x1e4(%rbp)
cmpl   $0xa,-0x1e4(%rbp)
jge    13b8 <G_K41+0x298>
mov    -0x1e4(%rbp),%ecx
mov    %ecx,%eax
lea    0x1(%rax,%rax,1),%eax
mov    %eax,-0x1e8(%rbp)
fldl   -0x1c0(%rbp)
movslq -0x1e8(%rbp),%rax
shl    $0x4,%rax
lea    0x2e0b(%rip),%rcx
fldt   (%rax,%rcx,1)
fmulp  %st,%st(1)
fstpl  -0x188(%rbp)
mov    -0x8(%rbp),%rax
movsd  -0x190(%rbp),%xmm0
ff
movsd  -0x188(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x1b0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  -0x190(%rbp),%xmm0
ff
movsd  -0x188(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  -0x1b0(%rbp),%xmm0
ff
movslq -0x1e8(%rbp),%rax
movsd  %xmm0,-0xe0(%rbp,%rax,8)
ff ff
movsd  -0x1b8(%rbp),%xmm0
ff
movslq -0x1e8(%rbp),%rax
movsd  %xmm0,-0x180(%rbp,%rax,8)
ff ff
movsd  -0x1b0(%rbp),%xmm0
ff
movsd  -0x1b8(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1a8(%rbp)
ff
movslq -0x1e4(%rbp),%rax
shl    $0x4,%rax
lea    0x2ff6(%rip),%rcx
fldt   (%rax,%rcx,1)
fldl   -0x1a8(%rbp)
fldl   -0x1c8(%rbp)
fxch   %st(2)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpl  -0x1c8(%rbp)
movslq -0x1e8(%rbp),%rax
shl    $0x4,%rax
lea    0x2e79(%rip),%rcx
fldt   (%rax,%rcx,1)
fldl   -0x1a8(%rbp)
fldl   -0x1d0(%rbp)
fxch   %st(2)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpl  -0x1d0(%rbp)
mov    -0x30(%rbp),%rax
fldl   (%rax)
fstpt  -0x238(%rbp)
movslq -0x1e8(%rbp),%rax
shl    $0x4,%rax
fldt   (%rax,%rcx,1)
fstpt  -0x22c(%rbp)
movsd  -0x1b0(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fstpt  -0x244(%rbp)
movsd  -0x1b8(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fldt   -0x244(%rbp)
fldt   -0x238(%rbp)
fldt   -0x22c(%rbp)
fxch   %st(2)
faddp  %st,%st(3)
fxch   %st(1)
fmulp  %st,%st(2)
faddp  %st,%st(1)
fstpl  -0x220(%rbp)
movsd  -0x220(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x1e4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1e4(%rbp)
jmp    11fe <G_K41+0xde>
movl   $0x0,-0x1e4(%rbp)
cmpl   $0xa,-0x1e4(%rbp)
jge    1549 <G_K41+0x429>
mov    -0x1e4(%rbp),%eax
add    %eax,%eax
mov    %eax,-0x1ec(%rbp)
fldl   -0x1c0(%rbp)
movslq -0x1ec(%rbp),%rax
shl    $0x4,%rax
lea    0x2c4b(%rip),%rcx
fldt   (%rax,%rcx,1)
fmulp  %st,%st(1)
fstpl  -0x188(%rbp)
mov    -0x8(%rbp),%rax
movsd  -0x190(%rbp),%xmm0
ff
movsd  -0x188(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x1b0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  -0x190(%rbp),%xmm0
ff
movsd  -0x188(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  -0x1b0(%rbp),%xmm0
ff
movslq -0x1ec(%rbp),%rax
movsd  %xmm0,-0xe0(%rbp,%rax,8)
ff ff
movsd  -0x1b8(%rbp),%xmm0
ff
movslq -0x1ec(%rbp),%rax
movsd  %xmm0,-0x180(%rbp,%rax,8)
ff ff
movsd  -0x1b0(%rbp),%xmm0
ff
movsd  -0x1b8(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1a8(%rbp)
ff
fldl   -0x1d0(%rbp)
movslq -0x1ec(%rbp),%rax
shl    $0x4,%rax
lea    0x2ce0(%rip),%rcx
fldt   (%rax,%rcx,1)
fldl   -0x1a8(%rbp)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpl  -0x1d0(%rbp)
mov    -0x30(%rbp),%rax
fldl   (%rax)
fstpt  -0x25c(%rbp)
movslq -0x1ec(%rbp),%rax
shl    $0x4,%rax
fldt   (%rax,%rcx,1)
fstpt  -0x250(%rbp)
movsd  -0x1b0(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fstpt  -0x268(%rbp)
movsd  -0x1b8(%rbp),%xmm0
ff
call   1030 <fabs@plt>
fldt   -0x268(%rbp)
fldt   -0x25c(%rbp)
fldt   -0x250(%rbp)
fxch   %st(2)
faddp  %st,%st(3)
fxch   %st(1)
fmulp  %st,%st(2)
faddp  %st,%st(1)
fstpl  -0x218(%rbp)
movsd  -0x218(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x1e4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1e4(%rbp)
jmp    13c2 <G_K41+0x2a2>
movsd  -0x1d0(%rbp),%xmm0
ff
movsd  0xaa7(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1d8(%rbp)
ff
fldt   0x2d65(%rip)
fstpt  -0x274(%rbp)
movsd  -0x1a0(%rbp),%xmm0
ff
movsd  -0x1d8(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fldt   -0x274(%rbp)
fmulp  %st,%st(1)
fstpl  -0x200(%rbp)
movsd  -0x200(%rbp),%xmm0
ff
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x0,-0x1e4(%rbp)
cmpl   $0x14,-0x1e4(%rbp)
jge    1670 <G_K41+0x550>
mov    -0x38(%rbp),%rax
fldl   (%rax)
fstpt  -0x28c(%rbp)
movslq -0x1e4(%rbp),%rax
mov    %rax,%rcx
shl    $0x4,%rcx
lea    0x2bb0(%rip),%rdx
fldt   (%rcx,%rdx,1)
fstpt  -0x280(%rbp)
movsd  -0xe0(%rbp,%rax,8),%xmm0
ff ff
movsd  -0x1d8(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fstpt  -0x298(%rbp)
movslq -0x1e4(%rbp),%rax
movsd  -0x180(%rbp,%rax,8),%xmm0
ff ff
movsd  -0x1d8(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fldt   -0x298(%rbp)
fldt   -0x28c(%rbp)
fldt   -0x280(%rbp)
fxch   %st(2)
faddp  %st,%st(3)
fxch   %st(1)
fmulp  %st,%st(2)
faddp  %st,%st(1)
fstpl  -0x210(%rbp)
movsd  -0x210(%rbp),%xmm0
ff
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x1e4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1e4(%rbp)
jmp    15b2 <G_K41+0x492>
movsd  -0x1d0(%rbp),%xmm0
ff
movsd  -0x1c0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1e0(%rbp)
ff
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0x198(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0x198(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
movsd  -0x1d0(%rbp),%xmm0
ff
movsd  -0x1c8(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
movsd  -0x1c0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
call   1030 <fabs@plt>
fstpl  -0x208(%rbp)
movsd  -0x208(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1717 <G_K41+0x5f7>
jp     1717 <G_K41+0x5f7>
jmp    17dc <G_K41+0x6bc>
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1737 <G_K41+0x617>
jp     1737 <G_K41+0x617>
jmp    17dc <G_K41+0x6bc>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x2a0(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x8c5(%rip),%xmm0
mulsd  (%rax),%xmm0
mov    -0x38(%rbp),%rax
divsd  (%rax),%xmm0
movsd  0x8a9(%rip),%xmm1
call   1040 <pow@plt>
movsd  0x894(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1793 <G_K41+0x673>
movsd  0x882(%rip),%xmm0
movsd  %xmm0,-0x2a8(%rbp)
ff
jmp    17c0 <G_K41+0x6a0>
mov    -0x28(%rbp),%rax
movsd  0x879(%rip),%xmm0
mulsd  (%rax),%xmm0
mov    -0x38(%rbp),%rax
divsd  (%rax),%xmm0
movsd  0x85d(%rip),%xmm1
call   1040 <pow@plt>
movsd  %xmm0,-0x2a8(%rbp)
ff
movsd  -0x2a0(%rbp),%xmm0
ff
movsd  -0x2a8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x27ed(%rip),%rax
movsd  (%rax),%xmm1
movsd  0x829(%rip),%xmm2
mov    0x27ea(%rip),%rax
mulsd  (%rax),%xmm2
divsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
jbe    1881 <G_K41+0x761>
movsd  0x808(%rip),%xmm0
mov    0x27c9(%rip),%rax
mulsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
mulsd  (%rax),%xmm0
mov    -0x28(%rbp),%rax
ucomisd (%rax),%xmm0
jbe    1861 <G_K41+0x741>
movsd  0x7df(%rip),%xmm0
mov    0x27a0(%rip),%rax
mulsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x2b0(%rbp)
ff
jmp    1871 <G_K41+0x751>
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x2b0(%rbp)
ff
movsd  -0x2b0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x1e0(%rbp),%xmm0
ff
add    $0x2b0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<G_K41>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x268,%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    0xf8c(%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,0x1c8(%rsp,%r15,1)
movsd  %xmm0,0x128(%rsp,%r15,1)
movapd %xmm1,%xmm2
addsd  %xmm0,%xmm2
lea    0x105e(%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    $0xa0,%r15
jne    1200 <G_K41+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),%xmm2
movsd  %xmm2,0x1c0(%rsp,%rbx,1)
movsd  %xmm0,0x120(%rsp,%rbx,1)
movapd %xmm2,%xmm3
addsd  %xmm0,%xmm3
movsd  0x8(%rsp),%xmm1
movsd  %xmm1,0xc0(%rsp)
fldt   0x0(%rbp,%r12,1)
fld    %st(0)
fstpt  0x10(%rsp)
movsd  %xmm3,0xb0(%rsp)
fmull  0xb0(%rsp)
faddl  0xc0(%rsp)
fstpl  0xa8(%rsp)
movsd  0xa8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
fldl   (%r15)
fstpt  0x5c(%rsp)
movapd %xmm2,%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    $0xa0,%rbx
jne    1350 <G_K41+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  0x1c0(%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    $0x14,%rbx
jne    14a0 <G_K41+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_K41+0x461>
jnp    15e8 <G_K41+0x4c8>
ucomisd %xmm1,%xmm0
jne    1589 <G_K41+0x469>
jnp    15e8 <G_K41+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_K41+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_K41+0x507>
mulsd  %xmm2,%xmm1
maxsd  %xmm0,%xmm1
movsd  %xmm1,(%rbx)
movsd  0x30(%rsp),%xmm0
mulsd  %xmm4,%xmm0
add    $0x268,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@G_K41.XGK41 = internal global [21 x x86_fp80] [x86_fp80 0xK3FFEFFB539B9FC62E000, x86_fp80 0xK3FFEFE3DAD0638E70000, x86_fp80 0xK3FFEFB4419AA6A4A9800, x86_fp80 0xK3FFEF6C6DD3DEBB4F800, x86_fp80 0xK3FFEF0D9C08BA4DB3800, x86_fp80 0xK3FFEE988320B9FEC9000, x86_fp80 0xK3FFEE0D6BFC529E94800, x86_fp80 0xK3FFED6D05EAF7EB73800, x86_fp80 0xK3FFECB87D5C7D2886800, x86_fp80 0xK3FFEBF0F9B9A352A7000, x86_fp80 0xK3FFEB17805E6503DE800, x86_fp80 0xK3FFEA2D469FD3886D800, x86_fp80 0xK3FFE933C6781B28E4000, x86_fp80 0xK3FFE82C82E09FBFFB800, x86_fp80 0xK3FFDE31EA508C21C3000, x86_fp80 0xK3FFDBF56678AB2962000, x86_fp80 0xK3FFD9A6EF7CA3B43E800, x86_fp80 0xK3FFCE940B1B4945E0000, x86_fp80 0xK3FFC9C449B699A3E2000, x86_fp80 0xK3FFB9CB9EFCC5C358000, x86_fp80 0xK00000000000000000000]
@G_K41.WGK41 = internal global [21 x x86_fp80] [x86_fp80 0xK3FF6C96E2D8D74D17000, x86_fp80 0xK3FF88CE82571129D1000, x86_fp80 0xK3FF8EFA299A7F7062800, x86_fp80 0xK3FF9A70584A78344D800, x86_fp80 0xK3FF9D406C4AC4976E000, x86_fp80 0xK3FFA80271E7632475000, x86_fp80 0xK3FFA95EA0F423B7A0000, x86_fp80 0xK3FFAAAACFB0346EAB000, x86_fp80 0xK3FFABE3270951055E000, x86_fp80 0xK3FFAD0AB41EE93BD3800, x86_fp80 0xK3FFAE2144345EC301000, x86_fp80 0xK3FFAF21ECBD9A6446000, x86_fp80 0xK3FFB805057324A59D000, x86_fp80 0xK3FFB86D44A0D12E55000, x86_fp80 0xK3FFB8C97ACE922688000, x86_fp80 0xK3FFB9184FB4B2F761000, x86_fp80 0xK3FFB95911D54AB421000, x86_fp80 0xK3FFB98BEE8157E8A2000, x86_fp80 0xK3FFB9B0AF5ADB8E40000, x86_fp80 0xK3FFB9C6BFFDE5183F000, x86_fp80 0xK3FFB9CE0D5844E14F800]
@G_K41.WG20 = internal global [10 x x86_fp80] [x86_fp80 0xK3FF9904B4013A7457800, x86_fp80 0xK3FFAA64DAF529DB3F800, x86_fp80 0xK3FFB805A33EFBF23A800, x86_fp80 0xK3FFBAA8CFF0CB7125000, x86_fp80 0xK3FFBD0C0BD18BD410800, x86_fp80 0xK3FFBF20FF98AB9DA4000, x86_fp80 0xK3FFC86D962ED936FF800, x86_fp80 0xK3FFC9181A479A529A800, x86_fp80 0xK3FFC98C0CDA962CC9000, x86_fp80 0xK3FFC9C6B6248519B8000]
@DBL_MIN = global double 0.000000e+00
@DBL_EPSILON = global double 0.000000e+00
define double @G_K41(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 [20 x double]
%16 = alloca [20 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 ([21 x x86_fp80], [21 x x86_fp80]* @G_K41.WGK41, i64 0, i64 20)
%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, 10
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 [21 x x86_fp80], [21 x x86_fp80]* @G_K41.XGK41, 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 [20 x double], [20 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 [20 x double], [20 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 [10 x x86_fp80], [10 x x86_fp80]* @G_K41.WG20, 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 [21 x x86_fp80], [21 x x86_fp80]* @G_K41.WGK41, 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 [21 x x86_fp80], [21 x x86_fp80]* @G_K41.WGK41, 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, 10
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 [21 x x86_fp80], [21 x x86_fp80]* @G_K41.XGK41, 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 [20 x double], [20 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 [20 x double], [20 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 double, double* %26
%171 = fpext double %170 to x86_fp80
%172 = load i32, i32* %31
%173 = sext i32 %172 to i64
%174 = getelementptr inbounds [21 x x86_fp80], [21 x x86_fp80]* @G_K41.WGK41, i64 0, i64 %173
%175 = load x86_fp80, x86_fp80* %174
%176 = load double, double* %21
%177 = fpext double %176 to x86_fp80
%178 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %175, x86_fp80 %177, x86_fp80 %171)
%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 [21 x x86_fp80], [21 x x86_fp80]* @G_K41.WGK41, 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 ([21 x x86_fp80], [21 x x86_fp80]* @G_K41.WGK41, i64 0, i64 20)
%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, 20
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 [21 x x86_fp80], [21 x x86_fp80]* @G_K41.WGK41, 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 [20 x double], [20 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 [20 x double], [20 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_K41.XGK41 = internal unnamed_addr constant [21 x x86_fp80] [x86_fp80 0xK3FFEFFB539B9FC62E000, x86_fp80 0xK3FFEFE3DAD0638E70000, x86_fp80 0xK3FFEFB4419AA6A4A9800, x86_fp80 0xK3FFEF6C6DD3DEBB4F800, x86_fp80 0xK3FFEF0D9C08BA4DB3800, x86_fp80 0xK3FFEE988320B9FEC9000, x86_fp80 0xK3FFEE0D6BFC529E94800, x86_fp80 0xK3FFED6D05EAF7EB73800, x86_fp80 0xK3FFECB87D5C7D2886800, x86_fp80 0xK3FFEBF0F9B9A352A7000, x86_fp80 0xK3FFEB17805E6503DE800, x86_fp80 0xK3FFEA2D469FD3886D800, x86_fp80 0xK3FFE933C6781B28E4000, x86_fp80 0xK3FFE82C82E09FBFFB800, x86_fp80 0xK3FFDE31EA508C21C3000, x86_fp80 0xK3FFDBF56678AB2962000, x86_fp80 0xK3FFD9A6EF7CA3B43E800, x86_fp80 0xK3FFCE940B1B4945E0000, x86_fp80 0xK3FFC9C449B699A3E2000, x86_fp80 0xK3FFB9CB9EFCC5C358000, x86_fp80 0xK00000000000000000000]
@G_K41.WGK41 = internal unnamed_addr constant [21 x x86_fp80] [x86_fp80 0xK3FF6C96E2D8D74D17000, x86_fp80 0xK3FF88CE82571129D1000, x86_fp80 0xK3FF8EFA299A7F7062800, x86_fp80 0xK3FF9A70584A78344D800, x86_fp80 0xK3FF9D406C4AC4976E000, x86_fp80 0xK3FFA80271E7632475000, x86_fp80 0xK3FFA95EA0F423B7A0000, x86_fp80 0xK3FFAAAACFB0346EAB000, x86_fp80 0xK3FFABE3270951055E000, x86_fp80 0xK3FFAD0AB41EE93BD3800, x86_fp80 0xK3FFAE2144345EC301000, x86_fp80 0xK3FFAF21ECBD9A6446000, x86_fp80 0xK3FFB805057324A59D000, x86_fp80 0xK3FFB86D44A0D12E55000, x86_fp80 0xK3FFB8C97ACE922688000, x86_fp80 0xK3FFB9184FB4B2F761000, x86_fp80 0xK3FFB95911D54AB421000, x86_fp80 0xK3FFB98BEE8157E8A2000, x86_fp80 0xK3FFB9B0AF5ADB8E40000, x86_fp80 0xK3FFB9C6BFFDE5183F000, x86_fp80 0xK3FFB9CE0D5844E14F800]
@G_K41.WG20 = internal unnamed_addr constant [10 x x86_fp80] [x86_fp80 0xK3FF9904B4013A7457800, x86_fp80 0xK3FFAA64DAF529DB3F800, x86_fp80 0xK3FFB805A33EFBF23A800, x86_fp80 0xK3FFBAA8CFF0CB7125000, x86_fp80 0xK3FFBD0C0BD18BD410800, x86_fp80 0xK3FFBF20FF98AB9DA4000, x86_fp80 0xK3FFC86D962ED936FF800, x86_fp80 0xK3FFC9181A479A529A800, x86_fp80 0xK3FFC98C0CDA962CC9000, x86_fp80 0xK3FFC9C6B6248519B8000]
@DBL_MIN = global double 0.000000e+00
@DBL_EPSILON = global double 0.000000e+00
define double @G_K41(double (double, i8*)* nocapture %0, i8* %1, double %2, double %3, double* nocapture %4, double* nocapture %5, double* nocapture %6) {
%8 = alloca [20 x double]
%9 = alloca [20 x double]
%10 = bitcast [20 x double]* %8 to i8*
%11 = bitcast [20 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, 0xK3FFB9CE0D5844E14F800
%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 [21 x x86_fp80], [21 x x86_fp80]* @G_K41.XGK41, 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 [20 x double], [20 x double]* %8, i64 0, i64 %29
store double %35, double* %38
%39 = getelementptr inbounds [20 x double], [20 x double]* %9, i64 0, i64 %29
store double %37, double* %39
%40 = fadd double %35, %37
%41 = getelementptr inbounds [10 x x86_fp80], [10 x x86_fp80]* @G_K41.WG20, 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 [21 x x86_fp80], [21 x x86_fp80]* @G_K41.WGK41, 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, 10
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 [21 x x86_fp80], [21 x x86_fp80]* @G_K41.XGK41, 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 [20 x double], [20 x double]* %8, i64 0, i64 %64
store double %70, double* %73
%74 = getelementptr inbounds [20 x double], [20 x double]* %9, i64 0, i64 %64
store double %72, double* %74
%75 = fadd double %70, %72
%76 = fpext double %63 to x86_fp80
%77 = getelementptr inbounds [21 x x86_fp80], [21 x x86_fp80]* @G_K41.WGK41, i64 0, i64 %64
%78 = load x86_fp80, x86_fp80* %77
%79 = fpext double %75 to x86_fp80
%80 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %78, x86_fp80 %79, x86_fp80 %76)
%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 %78, 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, 10
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, 0xK3FFB9CE0D5844E14F800
%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 [21 x x86_fp80], [21 x x86_fp80]* @G_K41.WGK41, i64 0, i64 %99
%102 = load x86_fp80, x86_fp80* %101
%103 = getelementptr inbounds [20 x double], [20 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 [20 x double], [20 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, 20
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
}