#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;
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 stub6(double, void *);
double stub7(double, void *);
long double stub8(double, void *);
long double stub9(double, void *);
double dqng(double f(double, void *), void *cbData, double a, double b,
            double epsabs, double epsrel, double *abserr, int *neval,
            int *ier) {
  static long double x1[5] = {0.97390652851717172008, 0.86506336668898451073,
                              0.67940956829902440623, 0.43339539412924719080,
                              0.14887433898163121088};
  static long double w10[5] = {0.06667134430868813759, 0.14945134915058059315,
                               0.21908636251598204400, 0.26926671930999635509,
                               0.29552422471475287017};
  static long double x2[5] = {0.99565716302580808074, 0.93015749135570822600,
                              0.78081772658641689706, 0.56275713466860468334,
                              0.29439286270146019813};
  static long double w21a[5] = {0.03255816230796472748, 0.07503967481091995277,
                                0.10938715880229764190, 0.13470921731147332593,
                                0.14773910490133849137};
  static long double w21b[6] = {0.01169463886737187428, 0.05475589657435199603,
                                0.09312545458369760554, 0.12349197626206585108,
                                0.14277593857706008080, 0.14944555400291690566};
  static long double x3[11] = {
      0.99933336090193208139, 0.98743340290808886980, 0.95480793481426629926,
      0.90014869574832829363, 0.82519831498311415085, 0.73214838898930498261,
      0.62284797053772523864, 0.49947957407105649995, 0.36490166134658076804,
      0.22225491977660129650, 0.07465061746138332204};
  static long double w43a[10] = {
      0.01629673428966656492, 0.03752287612086950146, 0.05469490205825544215,
      0.06735541460947808608, 0.07387019963239395343, 0.00576855605976979618,
      0.02737189059324884208, 0.04656082691042883074, 0.06174499520144256450,
      0.07138726726869339777};
  static long double w43b[12] = {
      0.00184447764021241410, 0.01079868958589165174, 0.02189536386779542810,
      0.03259746397534568944, 0.04216313793519181185, 0.05074193960018457778,
      0.05837939554261924838, 0.06474640495144588554, 0.06956619791235648453,
      0.07282444147183320815, 0.07450775101417511827, 0.07472214751740300559};
  static long double x4[22] = {
      0.99990297726272923449, 0.99798989598667874543, 0.99217549786068722281,
      0.98135816357271277357, 0.96505762385838461913, 0.94316761313367059682,
      0.91580641468550720959, 0.88322165777131650137, 0.84571074846241566661,
      0.80355765803523098279, 0.75700573068549555833, 0.70627320978732181982,
      0.65158946650117792253, 0.59322337405796108888, 0.53149360597083193229,
      0.46676362304202284487, 0.39942484785921880473, 0.32987487710618828827,
      0.25850355920216155180, 0.18569539656834665202, 0.11184221317990746817,
      0.03735212339461987081};
  static long double w87a[21] = {
      0.00814837738414917290, 0.01876143820156282224, 0.02734745105005228616,
      0.03367770731163793005, 0.03693509982042790761, 0.00288487243021153050,
      0.01368594602271270189, 0.02328041350288831112, 0.03087249761171335868,
      0.03569363363941877072, 0.00091528334520224136, 0.00539928021930047137,
      0.01094767960111893113, 0.01629873169678733526, 0.02108156888920383511,
      0.02537096976925382724, 0.02918969775647575250, 0.03237320246720278969,
      0.03478309895036514275, 0.03641222073135178756, 0.03725387550304770854};
  static long double w87b[23] = {
      0.00027414556376207235, 0.00180712415505794295, 0.00409686928275916486,
      0.00675829005184737870, 0.00954995767220164654, 0.01232944765224485369,
      0.01501044734638895238, 0.01754896798624319110, 0.01993803778644088820,
      0.02219493596101228680, 0.02433914712600080547, 0.02637450541483920724,
      0.02828691078877120066, 0.03005258112809269532, 0.03164675137143992940,
      0.03305041341997850329, 0.03425509970422606179, 0.03526241266015668103,
      0.03607698962288870119, 0.03669860449845609450, 0.03712054926983257611,
      0.03733422875193504032, 0.03736107376267902341};
  double fv1[5], fv2[5], fv3[5], fv4[5], savfun[21];
  double adir, centr, dhlgth;
  double fcentr, fval, fval1, fval2, hlgth;
  double result, res10, res21, res43, res87;
  double resabs, resasc, reskh;
  int ipx, k, l;
  result = 0.0;
  *abserr = 0.0;
  *neval = 0;
  *ier = 6;
  if ((epsabs < 0.0) && (epsrel < 0.0))
    return result;
  hlgth = 0.5 * (b - a);
  dhlgth = fabs(hlgth);
  centr = 0.5 * (a + b);
  fcentr = (*f)(centr, cbData);
  *neval = 21;
  *ier = 1;
  for (l = 1; l <= 3; l++) {
    switch (l) {
    case 1:
      res10 = 0.0;
      res21 = w21b[5] * fcentr;
      resabs = w21b[5] * fabs(fcentr);
      for (k = 0; k < 5; k++) {
        adir = hlgth * x1[k];
        fval1 = (*f)(centr + adir, cbData);
        fval2 = (*f)(centr - adir, cbData);
        fval = fval1 + fval2;
        res10 += (w10[k] * fval);
        res21 += (w21a[k] * fval);
        resabs += (w21a[k] * (fabs(fval1) + fabs(fval2)));
        savfun[k] = fval;
        fv1[k] = fval1;
        fv2[k] = fval2;
      }
      ipx = 4;
      for (k = 0; k < 5; k++) {
        ipx++;
        adir = hlgth * x2[k];
        fval1 = (*f)(centr + adir, cbData);
        fval2 = (*f)(centr - adir, cbData);
        fval = fval1 + fval2;
        res21 += (w21b[k] * fval);
        resabs += (w21b[k] * (fabs(fval1) + fabs(fval2)));
        savfun[ipx] = fval;
        fv3[k] = fval1;
        fv4[k] = fval2;
      }
      result = res21 * hlgth;
      resabs *= dhlgth;
      reskh = 0.5 * res21;
      resasc = w21b[5] * fabs(fcentr - reskh);
      for (k = 0; k < 5; k++)
        resasc += (w21a[k] * (fabs(fv1[k] - reskh) + fabs(fv2[k] - reskh)) +
                   w21b[k] * (fabs(fv3[k] - reskh) + fabs(fv4[k] - reskh)));
      *abserr = fabs((res21 - res10) * hlgth);
      resasc *= dhlgth;
      break;
    case 2:
      res43 = w43b[11] * fcentr;
      *neval = 43;
      for (k = 0; k < 10; k++)
        res43 += (savfun[k] * w43a[k]);
      for (k = 0; k < 11; k++) {
        ipx++;
        adir = hlgth * x3[k];
        fval = (*f)(centr + adir, cbData) + (*f)(centr - adir, cbData);
        res43 += (fval * w43b[k]);
        savfun[ipx] = fval;
      }
      result = res43 * hlgth;
      *abserr = fabs((res43 - res21) * hlgth);
      break;
    case 3:
      res87 = w87b[22] * fcentr;
      *neval = 87;
      for (k = 0; k < 21; k++)
        res87 += (savfun[k] * w87a[k]);
      for (k = 0; k < 22; k++) {
        adir = hlgth * x4[k];
        res87 +=
            w87b[k] * ((*f)(centr + adir, cbData) + (*f)(centr - adir, cbData));
      }
      result = res87 * hlgth;
      *abserr = fabs((res87 - res43) * 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));
    if (*abserr <= (((epsabs) > (epsrel * fabs(result)))
                        ? (epsabs)
                        : (epsrel * fabs(result))))
      *ier = 0;
    if (*ier == 0)
      break;
  }
  return result;
}


x86 assembly (clang, -O0):
<dqng>:
push   %rbp
mov    %rsp,%rbp
sub    $0x330,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
movsd  %xmm0,-0x20(%rbp)
movsd  %xmm1,-0x28(%rbp)
movsd  %xmm2,-0x30(%rbp)
movsd  %xmm3,-0x38(%rbp)
mov    %rdx,-0x40(%rbp)
mov    %rcx,-0x48(%rbp)
mov    %r8,-0x50(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x208(%rbp)
ff
mov    -0x40(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0x48(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x50(%rbp),%rax
movl   $0x6,(%rax)
xorps  %xmm0,%xmm0
ucomisd -0x30(%rbp),%xmm0
jbe    119b <dqng+0x8b>
xorps  %xmm0,%xmm0
ucomisd -0x38(%rbp),%xmm0
jbe    119b <dqng+0x8b>
movsd  -0x208(%rbp),%xmm0
ff
movsd  %xmm0,-0x8(%rbp)
jmp    1e12 <dqng+0xd02>
movsd  -0x28(%rbp),%xmm1
subsd  -0x20(%rbp),%xmm1
movsd  0xe53(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x200(%rbp)
ff
movsd  -0x200(%rbp),%xmm0
ff
movaps 0xe68(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  -0x20(%rbp),%xmm1
addsd  -0x28(%rbp),%xmm1
movsd  0xe1a(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1d0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  -0x1d0(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x1e0(%rbp)
ff
mov    -0x48(%rbp),%rax
movl   $0x15,(%rax)
mov    -0x50(%rbp),%rax
movl   $0x1,(%rax)
movl   $0x1,-0x24c(%rbp)
cmpl   $0x3,-0x24c(%rbp)
jg     1e05 <dqng+0xcf5>
mov    -0x24c(%rbp),%eax
mov    %eax,-0x2e4(%rbp)
sub    $0x1,%eax
je     1279 <dqng+0x169>
jmp    1251 <dqng+0x141>
mov    -0x2e4(%rbp),%eax
sub    $0x2,%eax
je     1803 <dqng+0x6f3>
jmp    1265 <dqng+0x155>
mov    -0x2e4(%rbp),%eax
sub    $0x3,%eax
je     19ef <dqng+0x8df>
jmp    1bbb <dqng+0xaab>
movq   $0x0,-0x210(%rbp)
fldt   0x2f36(%rip)
fldl   -0x1e0(%rbp)
fmulp  %st,%st(1)
fstpl  -0x218(%rbp)
fldt   0x2f22(%rip)
movaps 0xd8b(%rip),%xmm1
movsd  -0x1e0(%rbp),%xmm0
ff
pand   %xmm1,%xmm0
movlpd %xmm0,-0x290(%rbp)
ff
fldl   -0x290(%rbp)
fmulp  %st,%st(1)
fstpl  -0x298(%rbp)
movsd  -0x298(%rbp),%xmm0
ff
movsd  %xmm0,-0x230(%rbp)
ff
movl   $0x0,-0x248(%rbp)
cmpl   $0x5,-0x248(%rbp)
jge    148e <dqng+0x37e>
fldl   -0x200(%rbp)
movslq -0x248(%rbp),%rax
shl    $0x4,%rax
lea    0x2d2a(%rip),%rcx
fldt   (%rax,%rcx,1)
fmulp  %st,%st(1)
fstpl  -0x1c8(%rbp)
mov    -0x10(%rbp),%rax
movsd  -0x1d0(%rbp),%xmm0
ff
movsd  -0x1c8(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x1f0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  -0x1d0(%rbp),%xmm0
ff
movsd  -0x1c8(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x1f8(%rbp)
ff
movsd  -0x1f0(%rbp),%xmm0
ff
movsd  -0x1f8(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1e8(%rbp)
ff
movslq -0x248(%rbp),%rax
shl    $0x4,%rax
lea    0x2cf5(%rip),%rcx
fldt   (%rax,%rcx,1)
fldl   -0x1e8(%rbp)
fldl   -0x210(%rbp)
fxch   %st(2)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpl  -0x210(%rbp)
movslq -0x248(%rbp),%rax
shl    $0x4,%rax
lea    0x2d68(%rip),%rcx
fldt   (%rax,%rcx,1)
fldl   -0x1e8(%rbp)
fldl   -0x218(%rbp)
fxch   %st(2)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpl  -0x218(%rbp)
movslq -0x248(%rbp),%rax
shl    $0x4,%rax
fldt   (%rax,%rcx,1)
movsd  -0x1f0(%rbp),%xmm0
ff
movapd 0xc3f(%rip),%xmm2
pand   %xmm2,%xmm0
movsd  -0x1f8(%rbp),%xmm1
ff
pand   %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x2d8(%rbp)
ff
fldl   -0x2d8(%rbp)
fldl   -0x230(%rbp)
fxch   %st(2)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpl  -0x2e0(%rbp)
movsd  -0x2e0(%rbp),%xmm0
ff
movsd  %xmm0,-0x230(%rbp)
ff
movsd  -0x1e8(%rbp),%xmm0
ff
movslq -0x248(%rbp),%rax
movsd  %xmm0,-0x1c0(%rbp,%rax,8)
ff ff
movsd  -0x1f0(%rbp),%xmm0
ff
movslq -0x248(%rbp),%rax
movsd  %xmm0,-0x80(%rbp,%rax,8)
movsd  -0x1f8(%rbp),%xmm0
ff
movslq -0x248(%rbp),%rax
movsd  %xmm0,-0xb0(%rbp,%rax,8)
ff ff
mov    -0x248(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x248(%rbp)
jmp    12e1 <dqng+0x1d1>
movl   $0x4,-0x244(%rbp)
movl   $0x0,-0x248(%rbp)
cmpl   $0x5,-0x248(%rbp)
jge    1634 <dqng+0x524>
mov    -0x244(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x244(%rbp)
fldl   -0x200(%rbp)
movslq -0x248(%rbp),%rax
shl    $0x4,%rax
lea    0x2bfa(%rip),%rcx
fldt   (%rax,%rcx,1)
fmulp  %st,%st(1)
fstpl  -0x1c8(%rbp)
mov    -0x10(%rbp),%rax
movsd  -0x1d0(%rbp),%xmm0
ff
movsd  -0x1c8(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x1f0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  -0x1d0(%rbp),%xmm0
ff
movsd  -0x1c8(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x1f8(%rbp)
ff
movsd  -0x1f0(%rbp),%xmm0
ff
movsd  -0x1f8(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1e8(%rbp)
ff
movslq -0x248(%rbp),%rax
shl    $0x4,%rax
lea    0x2c15(%rip),%rcx
fldt   (%rax,%rcx,1)
fldl   -0x1e8(%rbp)
fldl   -0x218(%rbp)
fxch   %st(2)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpl  -0x218(%rbp)
movslq -0x248(%rbp),%rax
shl    $0x4,%rax
fldt   (%rax,%rcx,1)
movsd  -0x1f0(%rbp),%xmm0
ff
movapd 0xa9c(%rip),%xmm2
pand   %xmm2,%xmm0
movsd  -0x1f8(%rbp),%xmm1
ff
pand   %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x2c8(%rbp)
ff
fldl   -0x2c8(%rbp)
fldl   -0x230(%rbp)
fxch   %st(2)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpl  -0x2d0(%rbp)
movsd  -0x2d0(%rbp),%xmm0
ff
movsd  %xmm0,-0x230(%rbp)
ff
movsd  -0x1e8(%rbp),%xmm0
ff
movslq -0x244(%rbp),%rax
movsd  %xmm0,-0x1c0(%rbp,%rax,8)
ff ff
movsd  -0x1f0(%rbp),%xmm0
ff
movslq -0x248(%rbp),%rax
movsd  %xmm0,-0xe0(%rbp,%rax,8)
ff ff
movsd  -0x1f8(%rbp),%xmm0
ff
movslq -0x248(%rbp),%rax
movsd  %xmm0,-0x110(%rbp,%rax,8)
ff ff
mov    -0x248(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x248(%rbp)
jmp    14a2 <dqng+0x392>
movsd  -0x218(%rbp),%xmm0
ff
movsd  -0x200(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x208(%rbp)
ff
movsd  -0x1d8(%rbp),%xmm1
ff
movsd  -0x230(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x230(%rbp)
ff
movsd  -0x218(%rbp),%xmm0
ff
movsd  0x984(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x240(%rbp)
ff
fldt   0x2b32(%rip)
movsd  -0x1e0(%rbp),%xmm0
ff
movsd  -0x240(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
movaps 0x987(%rip),%xmm1
pand   %xmm1,%xmm0
movlpd %xmm0,-0x2a0(%rbp)
ff
fldl   -0x2a0(%rbp)
fmulp  %st,%st(1)
fstpl  -0x2a8(%rbp)
movsd  -0x2a8(%rbp),%xmm0
ff
movsd  %xmm0,-0x238(%rbp)
ff
movl   $0x0,-0x248(%rbp)
cmpl   $0x5,-0x248(%rbp)
jge    17bb <dqng+0x6ab>
movslq -0x248(%rbp),%rax
mov    %rax,%rcx
shl    $0x4,%rcx
lea    0x2a21(%rip),%rdx
fldt   (%rcx,%rdx,1)
movsd  -0x80(%rbp,%rax,8),%xmm0
movsd  -0x240(%rbp),%xmm3
ff
subsd  %xmm3,%xmm0
movapd 0x914(%rip),%xmm2
pand   %xmm2,%xmm0
movsd  -0xb0(%rbp,%rax,8),%xmm1
ff ff
subsd  %xmm3,%xmm1
pand   %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x2b8(%rbp)
ff
fldl   -0x2b8(%rbp)
lea    0x2a26(%rip),%rdx
fldt   (%rcx,%rdx,1)
movsd  -0xe0(%rbp,%rax,8),%xmm0
ff ff
subsd  %xmm3,%xmm0
pand   %xmm2,%xmm0
movsd  -0x110(%rbp,%rax,8),%xmm1
ff ff
subsd  %xmm3,%xmm1
pand   %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x2b0(%rbp)
ff
fldl   -0x2b0(%rbp)
fmulp  %st,%st(1)
fxch   %st(2)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fldl   -0x238(%rbp)
faddp  %st,%st(1)
fstpl  -0x2c0(%rbp)
movsd  -0x2c0(%rbp),%xmm0
ff
movsd  %xmm0,-0x238(%rbp)
ff
mov    -0x248(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x248(%rbp)
jmp    16dd <dqng+0x5cd>
movsd  -0x218(%rbp),%xmm0
ff
subsd  -0x210(%rbp),%xmm0
ff
mulsd  -0x200(%rbp),%xmm0
ff
movaps 0x856(%rip),%xmm1
pand   %xmm1,%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x1d8(%rbp),%xmm0
ff
mulsd  -0x238(%rbp),%xmm0
ff
movsd  %xmm0,-0x238(%rbp)
ff
jmp    1bbb <dqng+0xaab>
fldt   0x2bc7(%rip)
fldl   -0x1e0(%rbp)
fmulp  %st,%st(1)
fstpl  -0x278(%rbp)
movsd  -0x278(%rbp),%xmm0
ff
movsd  %xmm0,-0x220(%rbp)
ff
mov    -0x48(%rbp),%rax
movl   $0x2b,(%rax)
movl   $0x0,-0x248(%rbp)
cmpl   $0xa,-0x248(%rbp)
jge    189a <dqng+0x78a>
movslq -0x248(%rbp),%rax
fldl   -0x1c0(%rbp,%rax,8)
shl    $0x4,%rax
lea    0x2a1f(%rip),%rcx
fldt   (%rax,%rcx,1)
fldl   -0x220(%rbp)
fxch   %st(2)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpl  -0x288(%rbp)
movsd  -0x288(%rbp),%xmm0
ff
movsd  %xmm0,-0x220(%rbp)
ff
mov    -0x248(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x248(%rbp)
jmp    183b <dqng+0x72b>
movl   $0x0,-0x248(%rbp)
cmpl   $0xb,-0x248(%rbp)
jge    19a7 <dqng+0x897>
mov    -0x244(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x244(%rbp)
fldl   -0x200(%rbp)
movslq -0x248(%rbp),%rax
shl    $0x4,%rax
lea    0x28f8(%rip),%rcx
fldt   (%rax,%rcx,1)
fmulp  %st,%st(1)
fstpl  -0x1c8(%rbp)
mov    -0x10(%rbp),%rax
movsd  -0x1d0(%rbp),%xmm0
ff
movsd  -0x1c8(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x2f0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  -0x1d0(%rbp),%xmm0
ff
movsd  -0x1c8(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rdi
call   *%rax
movaps %xmm0,%xmm1
movsd  -0x2f0(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1e8(%rbp)
ff
fldl   -0x1e8(%rbp)
movslq -0x248(%rbp),%rax
shl    $0x4,%rax
lea    0x29ca(%rip),%rcx
fldt   (%rax,%rcx,1)
fldl   -0x220(%rbp)
fxch   %st(2)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpl  -0x280(%rbp)
movsd  -0x280(%rbp),%xmm0
ff
movsd  %xmm0,-0x220(%rbp)
ff
movsd  -0x1e8(%rbp),%xmm0
ff
movslq -0x244(%rbp),%rax
movsd  %xmm0,-0x1c0(%rbp,%rax,8)
ff ff
mov    -0x248(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x248(%rbp)
jmp    18a4 <dqng+0x794>
movsd  -0x220(%rbp),%xmm0
ff
mulsd  -0x200(%rbp),%xmm0
ff
movsd  %xmm0,-0x208(%rbp)
ff
movsd  -0x220(%rbp),%xmm0
ff
subsd  -0x218(%rbp),%xmm0
ff
mulsd  -0x200(%rbp),%xmm0
ff
movaps 0x652(%rip),%xmm1
pand   %xmm1,%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1bbb <dqng+0xaab>
fldt   0x2dfb(%rip)
fldl   -0x1e0(%rbp)
fmulp  %st,%st(1)
fstpl  -0x258(%rbp)
movsd  -0x258(%rbp),%xmm0
ff
movsd  %xmm0,-0x228(%rbp)
ff
mov    -0x48(%rbp),%rax
movl   $0x57,(%rax)
movl   $0x0,-0x248(%rbp)
cmpl   $0x15,-0x248(%rbp)
jge    1a86 <dqng+0x976>
movslq -0x248(%rbp),%rax
fldl   -0x1c0(%rbp,%rax,8)
shl    $0x4,%rax
lea    0x2af3(%rip),%rcx
fldt   (%rax,%rcx,1)
fldl   -0x228(%rbp)
fxch   %st(2)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpl  -0x270(%rbp)
movsd  -0x270(%rbp),%xmm0
ff
movsd  %xmm0,-0x228(%rbp)
ff
mov    -0x248(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x248(%rbp)
jmp    1a27 <dqng+0x917>
movl   $0x0,-0x248(%rbp)
cmpl   $0x16,-0x248(%rbp)
jge    1b78 <dqng+0xa68>
fldl   -0x200(%rbp)
movslq -0x248(%rbp),%rax
shl    $0x4,%rax
lea    0x292b(%rip),%rcx
fldt   (%rax,%rcx,1)
fmulp  %st,%st(1)
fstpl  -0x1c8(%rbp)
movslq -0x248(%rbp),%rax
shl    $0x4,%rax
lea    0x2bbe(%rip),%rcx
fldt   (%rax,%rcx,1)
fstpt  -0x304(%rbp)
mov    -0x10(%rbp),%rax
movsd  -0x1d0(%rbp),%xmm0
ff
movsd  -0x1c8(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rdi
call   *%rax
movsd  %xmm0,-0x2f8(%rbp)
mov    -0x10(%rbp),%rax
movsd  -0x1d0(%rbp),%xmm0
ff
movsd  -0x1c8(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rdi
call   *%rax
fldt   -0x304(%rbp)
movaps %xmm0,%xmm1
movsd  -0x2f8(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x260(%rbp)
ff
fldl   -0x260(%rbp)
fldl   -0x228(%rbp)
fxch   %st(2)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpl  -0x268(%rbp)
movsd  -0x268(%rbp),%xmm0
ff
movsd  %xmm0,-0x228(%rbp)
ff
mov    -0x248(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x248(%rbp)
jmp    1a90 <dqng+0x980>
movsd  -0x228(%rbp),%xmm0
ff
mulsd  -0x200(%rbp),%xmm0
ff
movsd  %xmm0,-0x208(%rbp)
ff
movsd  -0x228(%rbp),%xmm0
ff
subsd  -0x220(%rbp),%xmm0
ff
mulsd  -0x200(%rbp),%xmm0
ff
movaps 0x481(%rip),%xmm1
pand   %xmm1,%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x238(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1bdb <dqng+0xacb>
jp     1bdb <dqng+0xacb>
jmp    1ca0 <dqng+0xb90>
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1bfb <dqng+0xaeb>
jp     1bfb <dqng+0xaeb>
jmp    1ca0 <dqng+0xb90>
movsd  -0x238(%rbp),%xmm0
ff
movsd  %xmm0,-0x310(%rbp)
ff
mov    -0x40(%rbp),%rax
movsd  0x401(%rip),%xmm0
mulsd  (%rax),%xmm0
divsd  -0x238(%rbp),%xmm0
ff
movsd  0x3e5(%rip),%xmm1
call   1030 <pow@plt>
movsd  0x3d0(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1c57 <dqng+0xb47>
movsd  0x3be(%rip),%xmm0
movsd  %xmm0,-0x318(%rbp)
ff
jmp    1c84 <dqng+0xb74>
mov    -0x40(%rbp),%rax
movsd  0x3b5(%rip),%xmm0
mulsd  (%rax),%xmm0
divsd  -0x238(%rbp),%xmm0
ff
movsd  0x399(%rip),%xmm1
call   1030 <pow@plt>
movsd  %xmm0,-0x318(%rbp)
ff
movsd  -0x310(%rbp),%xmm0
ff
movsd  -0x318(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x230(%rbp),%xmm0
ff
mov    0x2329(%rip),%rax
movsd  (%rax),%xmm1
movsd  0x365(%rip),%xmm2
mov    0x2326(%rip),%rax
mulsd  (%rax),%xmm2
divsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
jbe    1d45 <dqng+0xc35>
movsd  0x344(%rip),%xmm0
mov    0x2305(%rip),%rax
mulsd  (%rax),%xmm0
mulsd  -0x230(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
ucomisd (%rax),%xmm0
jbe    1d25 <dqng+0xc15>
movsd  0x31b(%rip),%xmm0
mov    0x22dc(%rip),%rax
mulsd  (%rax),%xmm0
mulsd  -0x230(%rbp),%xmm0
ff
movsd  %xmm0,-0x320(%rbp)
ff
jmp    1d35 <dqng+0xc25>
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x320(%rbp)
ff
movsd  -0x320(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x328(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x38(%rbp),%xmm1
movsd  -0x208(%rbp),%xmm2
ff
movaps 0x2c2(%rip),%xmm3
pand   %xmm3,%xmm2
mulsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
jbe    1d92 <dqng+0xc82>
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x330(%rbp)
ff
jmp    1db6 <dqng+0xca6>
movsd  -0x38(%rbp),%xmm0
movsd  -0x208(%rbp),%xmm1
ff
movaps 0x28a(%rip),%xmm2
pand   %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x330(%rbp)
ff
movsd  -0x328(%rbp),%xmm1
ff
movsd  -0x330(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     1dda <dqng+0xcca>
mov    -0x50(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x50(%rbp),%rax
cmpl   $0x0,(%rax)
jne    1dec <dqng+0xcdc>
jmp    1e05 <dqng+0xcf5>
jmp    1df1 <dqng+0xce1>
mov    -0x24c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24c(%rbp)
jmp    122a <dqng+0x11a>
movsd  -0x208(%rbp),%xmm0
ff
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
add    $0x330,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<dqng>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x4c8,%rsp
mov    %r8,%rbp
mov    %rdx,%rbx
movsd  %xmm3,0x88(%rsp)
mov    %rsi,%r13
mov    %rdi,%r14
movq   $0x0,(%rdx)
mov    %rcx,0x68(%rsp)
movl   $0x0,(%rcx)
movl   $0x6,(%r8)
xorpd  %xmm4,%xmm4
movsd  %xmm2,0xb8(%rsp)
ucomisd %xmm2,%xmm4
fldz
jbe    117b <dqng+0x6b>
fstp   %st(0)
xorpd  %xmm2,%xmm2
ucomisd 0x88(%rsp),%xmm2
fldz
ja     1fba <dqng+0xeaa>
fstp   %st(0)
movapd %xmm1,%xmm3
subsd  %xmm0,%xmm3
movsd  0xe73(%rip),%xmm2
mulsd  %xmm2,%xmm3
movapd %xmm3,0x90(%rsp)
andpd  0xf4e(%rip),%xmm3
movapd %xmm3,0x410(%rsp)
addsd  %xmm1,%xmm0
mulsd  %xmm2,%xmm0
movsd  %xmm0,(%rsp)
mov    %r13,%rdi
call   *%r14
movsd  (%rsp),%xmm7
movapd %xmm0,%xmm1
mov    0x68(%rsp),%rax
movl   $0x15,(%rax)
movl   $0x1,0x0(%rbp)
movsd  %xmm0,0x318(%rsp)
fldl   0x318(%rsp)
fld    %st(0)
fmull  0xe17(%rip)
fstpt  0x334(%rsp)
movaps 0x90(%rsp),%xmm0
movsd  %xmm0,0x320(%rsp)
fld    %st(0)
fmull  0xdff(%rip)
fldl   0x320(%rsp)
fxch   %st(1)
fstpl  0x300(%rsp)
movsd  0x300(%rsp),%xmm0
fldl   0xde8(%rip)
movapd %xmm1,0x400(%rsp)
andpd  0xeaf(%rip),%xmm1
movlpd %xmm1,0x310(%rsp)
fld    %st(0)
fmull  0x310(%rsp)
fxch   %st(3)
fmulp  %st,%st(1)
fxch   %st(2)
fstpl  0x2f8(%rsp)
movsd  0x2f8(%rsp),%xmm1
movsd  %xmm1,0xb0(%rsp)
fxch   %st(1)
fstpl  0x308(%rsp)
movsd  0x308(%rsp),%xmm1
movsd  %xmm1,0xa8(%rsp)
movsd  %xmm0,0x2f0(%rsp)
fldl   0x2f0(%rsp)
fstpt  0x328(%rsp)
mov    $0x1,%eax
lea    0x1160(%rip),%rdx
lea    0x1409(%rip),%rsi
lea    0xfe2(%rip),%rdi
lea    0xe8b(%rip),%r15
lea    0xf24(%rip),%rcx
xorpd  %xmm4,%xmm4
mov    %rbp,0x80(%rsp)
mov    %rbx,0x70(%rsp)
fld    %st(0)
fstpt  0x44(%rsp)
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
cmp    $0x3,%eax
mov    %eax,0x2c(%rsp)
je     19b0 <dqng+0x8a0>
cmp    $0x2,%eax
je     1a50 <dqng+0x940>
cmp    $0x1,%eax
jne    1e61 <dqng+0xd51>
xorps  %xmm6,%xmm6
xor    %ebp,%ebp
xor    %ebx,%ebx
movsd  0xa8(%rsp),%xmm10
movsd  0xb0(%rsp),%xmm5
mov    %rcx,%r12
nopl   0x0(%rax)
movsd  %xmm6,0x30(%rsp)
movsd  %xmm10,0x20(%rsp)
movsd  %xmm5,0x8(%rsp)
lea    0xdb6(%rip),%rax
fldt   0x0(%rbp,%rax,1)
fmulp  %st,%st(1)
fstpl  0x1d8(%rsp)
movsd  0x1d8(%rsp),%xmm1
movsd  %xmm1,0x18(%rsp)
movapd %xmm7,%xmm0
addsd  %xmm1,%xmm0
mov    %r13,%rdi
call   *%r14
movapd %xmm0,0x50(%rsp)
movsd  (%rsp),%xmm0
subsd  0x18(%rsp),%xmm0
mov    %r13,%rdi
call   *%r14
fldt   0x44(%rsp)
movapd 0xd59(%rip),%xmm4
movsd  (%rsp),%xmm7
movapd 0x50(%rsp),%xmm3
movapd %xmm3,%xmm1
addsd  %xmm0,%xmm1
fldt   0x0(%rbp,%r15,1)
movsd  %xmm1,0x1d0(%rsp)
fldl   0x1d0(%rsp)
movsd  0x30(%rsp),%xmm2
movsd  %xmm2,0x1f0(%rsp)
fmul   %st,%st(1)
fxch   %st(1)
faddl  0x1f0(%rsp)
fstpl  0x1b8(%rsp)
movsd  0x1b8(%rsp),%xmm6
fldt   0x0(%rbp,%r12,1)
movsd  0x20(%rsp),%xmm2
movsd  %xmm2,0x1e8(%rsp)
fmul   %st,%st(1)
fxch   %st(1)
faddl  0x1e8(%rsp)
movapd %xmm3,%xmm2
movapd %xmm3,%xmm5
andpd  %xmm4,%xmm2
movapd %xmm0,%xmm3
andpd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
movsd  %xmm3,0x1c8(%rsp)
movsd  0x8(%rsp),%xmm2
movsd  %xmm2,0x1e0(%rsp)
fxch   %st(1)
fmull  0x1c8(%rsp)
faddl  0x1e0(%rsp)
movsd  %xmm1,0x420(%rsp,%rbx,8)
movsd  %xmm5,0x3d0(%rsp,%rbx,8)
movsd  %xmm0,0x3a0(%rsp,%rbx,8)
add    $0x1,%rbx
fstpl  0x1b0(%rsp)
movsd  0x1b0(%rsp),%xmm5
fstpl  0x1c0(%rsp)
movsd  0x1c0(%rsp),%xmm10
add    $0x10,%rbp
cmp    $0x5,%rbx
jne    1330 <dqng+0x220>
movsd  %xmm6,0x30(%rsp)
xor    %ebx,%ebx
xor    %ebp,%ebp
lea    0xcf9(%rip),%r15
lea    0xd92(%rip),%r12
xchg   %ax,%ax
movsd  %xmm10,0x20(%rsp)
movsd  %xmm5,0x8(%rsp)
fldt   (%rbx,%r15,1)
fmulp  %st,%st(1)
fstpl  0x198(%rsp)
movsd  0x198(%rsp),%xmm1
movsd  %xmm1,0x18(%rsp)
movapd %xmm7,%xmm0
addsd  %xmm1,%xmm0
mov    %r13,%rdi
call   *%r14
movapd %xmm0,0x50(%rsp)
movsd  (%rsp),%xmm0
subsd  0x18(%rsp),%xmm0
mov    %r13,%rdi
call   *%r14
fldt   0x44(%rsp)
movapd 0xbe6(%rip),%xmm4
movsd  (%rsp),%xmm7
movapd 0x50(%rsp),%xmm3
movapd %xmm3,%xmm1
addsd  %xmm0,%xmm1
fldt   (%rbx,%r12,1)
movsd  %xmm1,0x190(%rsp)
movsd  0x20(%rsp),%xmm2
movsd  %xmm2,0x1a8(%rsp)
fld    %st(0)
fmull  0x190(%rsp)
faddl  0x1a8(%rsp)
fstpl  0x180(%rsp)
movsd  0x180(%rsp),%xmm10
movapd %xmm3,%xmm2
movapd %xmm3,%xmm6
andpd  %xmm4,%xmm2
movapd %xmm0,%xmm3
andpd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
movsd  %xmm3,0x188(%rsp)
movsd  0x8(%rsp),%xmm2
movsd  %xmm2,0x1a0(%rsp)
fmull  0x188(%rsp)
faddl  0x1a0(%rsp)
fstpl  0x178(%rsp)
movsd  0x178(%rsp),%xmm5
movsd  %xmm1,0x448(%rsp,%rbp,8)
movsd  %xmm6,0x370(%rsp,%rbp,8)
movsd  %xmm0,0x340(%rsp,%rbp,8)
add    $0x1,%rbp
add    $0x10,%rbx
cmp    $0x5,%rbp
jne    14b0 <dqng+0x3a0>
movapd %xmm10,%xmm0
mulsd  0xa1e(%rip),%xmm0
movapd 0x400(%rsp),%xmm1
subsd  %xmm0,%xmm1
movapd 0xaf8(%rip),%xmm8
andpd  %xmm8,%xmm1
movlpd %xmm1,0x170(%rsp)
fldl   0x170(%rsp)
fmull  0xa05(%rip)
fstpl  0x140(%rsp)
movsd  0x140(%rsp),%xmm9
movsd  0x3d0(%rsp),%xmm2
movsd  0x3d8(%rsp),%xmm1
subsd  %xmm0,%xmm2
andpd  %xmm8,%xmm2
movsd  0x3a0(%rsp),%xmm6
movsd  0x3a8(%rsp),%xmm3
subsd  %xmm0,%xmm6
andpd  %xmm8,%xmm6
addsd  %xmm2,%xmm6
movsd  %xmm6,0x160(%rsp)
fldl   0x160(%rsp)
movsd  0x370(%rsp),%xmm4
movsd  0x378(%rsp),%xmm2
subsd  %xmm0,%xmm4
andpd  %xmm8,%xmm4
movsd  0x340(%rsp),%xmm6
subsd  %xmm0,%xmm6
andpd  %xmm8,%xmm6
addsd  %xmm4,%xmm6
movsd  0x348(%rsp),%xmm4
movsd  %xmm6,0x168(%rsp)
fldl   0x168(%rsp)
fmull  0x9b2(%rip)
fxch   %st(1)
fmull  0x9b2(%rip)
movsd  %xmm9,0x138(%rsp)
faddp  %st,%st(1)
faddl  0x138(%rsp)
fstpl  0x130(%rsp)
subsd  %xmm0,%xmm1
andpd  %xmm8,%xmm1
subsd  %xmm0,%xmm3
andpd  %xmm8,%xmm3
addsd  %xmm1,%xmm3
movsd  0x130(%rsp),%xmm1
movsd  %xmm3,0x158(%rsp)
fldl   0x158(%rsp)
subsd  %xmm0,%xmm2
andpd  %xmm8,%xmm2
subsd  %xmm0,%xmm4
andpd  %xmm8,%xmm4
addsd  %xmm2,%xmm4
movsd  %xmm4,0x150(%rsp)
fldl   0x150(%rsp)
fmull  0x945(%rip)
fxch   %st(1)
fmull  0x945(%rip)
faddp  %st,%st(1)
movsd  %xmm1,0x100(%rsp)
faddl  0x100(%rsp)
fstpl  0xf8(%rsp)
movsd  0xf8(%rsp),%xmm2
movapd 0x3e0(%rsp),%xmm3
movhpd 0x3b0(%rsp),%xmm3
movapd %xmm0,%xmm1
unpcklpd %xmm0,%xmm1
subpd  %xmm1,%xmm3
andpd  %xmm8,%xmm3
pshufd $0xee,%xmm3,%xmm4
addsd  %xmm3,%xmm4
movsd  %xmm4,0x128(%rsp)
movsd  0x380(%rsp),%xmm3
subsd  %xmm0,%xmm3
movsd  0x350(%rsp),%xmm4
subsd  %xmm0,%xmm4
fldl   0x128(%rsp)
andpd  %xmm8,%xmm3
andpd  %xmm8,%xmm4
addsd  %xmm3,%xmm4
movsd  %xmm4,0x148(%rsp)
fldl   0x148(%rsp)
fmull  0x8b1(%rip)
fxch   %st(1)
fmull  0x8b1(%rip)
faddp  %st,%st(1)
movsd  %xmm2,0xf0(%rsp)
faddl  0xf0(%rsp)
fstpl  0xe8(%rsp)
movsd  0xe8(%rsp),%xmm0
movupd 0x3e8(%rsp),%xmm2
movhpd 0x3b8(%rsp),%xmm2
subpd  %xmm1,%xmm2
andpd  %xmm8,%xmm2
pshufd $0xee,%xmm2,%xmm3
addsd  %xmm2,%xmm3
movsd  %xmm3,0x118(%rsp)
movupd 0x388(%rsp),%xmm2
movhpd 0x358(%rsp),%xmm2
subpd  %xmm1,%xmm2
andpd  %xmm8,%xmm2
pshufd $0xee,%xmm2,%xmm3
addsd  %xmm2,%xmm3
fldl   0x118(%rsp)
movsd  %xmm3,0x120(%rsp)
fldl   0x120(%rsp)
fmull  0x829(%rip)
fxch   %st(1)
fmull  0x829(%rip)
faddp  %st,%st(1)
movsd  %xmm0,0xe0(%rsp)
faddl  0xe0(%rsp)
fstpl  0xd8(%rsp)
movsd  0x3f0(%rsp),%xmm0
movhpd 0x3c0(%rsp),%xmm0
subpd  %xmm1,%xmm0
andpd  %xmm8,%xmm0
pshufd $0xee,%xmm0,%xmm2
addsd  %xmm0,%xmm2
movsd  0xd8(%rsp),%xmm0
movsd  %xmm2,0x108(%rsp)
movsd  0x390(%rsp),%xmm2
movhpd 0x360(%rsp),%xmm2
subpd  %xmm1,%xmm2
andpd  %xmm8,%xmm2
pshufd $0xee,%xmm2,%xmm1
addsd  %xmm2,%xmm1
fldl   0x108(%rsp)
movsd  %xmm1,0x110(%rsp)
fldl   0x110(%rsp)
movsd  %xmm0,0xd0(%rsp)
movapd %xmm10,%xmm0
subsd  0x30(%rsp),%xmm0
movapd 0x90(%rsp),%xmm1
movapd %xmm1,%xmm4
fmull  0x780(%rip)
fxch   %st(1)
fmull  0x780(%rip)
movsd  %xmm10,0x20(%rsp)
mulsd  %xmm10,%xmm4
faddp  %st,%st(1)
faddl  0xd0(%rsp)
fstpl  0xc8(%rsp)
movapd 0x410(%rsp),%xmm2
mulsd  %xmm2,%xmm5
mulsd  %xmm1,%xmm0
andpd  %xmm8,%xmm0
mov    0x70(%rsp),%rbx
movlpd %xmm0,(%rbx)
movsd  0xc8(%rsp),%xmm3
mulsd  %xmm2,%xmm3
mov    $0x9,%r12d
mov    0x80(%rsp),%rbp
lea    0xa7b(%rip),%rdx
lea    0xd24(%rip),%rsi
lea    0x8fd(%rip),%rdi
lea    0x846(%rip),%rcx
jmp    1e61 <dqng+0xd51>
nop
movsd  %xmm3,0x10(%rsp)
movsd  %xmm5,0x8(%rsp)
mov    0x68(%rsp),%rax
movl   $0x57,(%rax)
mov    $0x8,%eax
fldt   0x334(%rsp)
lea    0xb96(%rip),%rcx
nopw   0x0(%rax,%rax,1)
fstpl  0x2e8(%rsp)
movsd  0x2e8(%rsp),%xmm0
fldt   -0x10(%rcx,%rax,2)
movsd  %xmm0,0x2e0(%rsp)
fmull  0x418(%rsp,%rax,1)
faddl  0x2e0(%rsp)
fstpl  0x2d8(%rsp)
movsd  0x2d8(%rsp),%xmm1
cmp    $0xa8,%rax
je     1d50 <dqng+0xc40>
fldt   (%rcx,%rax,2)
movsd  %xmm1,0x2d0(%rsp)
fmull  0x420(%rsp,%rax,1)
faddl  0x2d0(%rsp)
add    $0x10,%rax
jmp    19e0 <dqng+0x8d0>
nopw   0x0(%rax,%rax,1)
movsd  %xmm3,0x10(%rsp)
movsd  %xmm5,0x8(%rsp)
mov    0x68(%rsp),%rax
movl   $0x2b,(%rax)
fldl   0x420(%rsp)
fmull  0x5ac(%rip)
fldt   0x328(%rsp)
faddp  %st,%st(1)
fstpl  0x2a8(%rsp)
movsd  0x2a8(%rsp),%xmm0
fldl   0x428(%rsp)
fmull  0x58e(%rip)
movsd  %xmm0,0x2a0(%rsp)
faddl  0x2a0(%rsp)
fstpl  0x298(%rsp)
movsd  0x298(%rsp),%xmm0
fldl   0x430(%rsp)
fmull  0x569(%rip)
movsd  %xmm0,0x290(%rsp)
faddl  0x290(%rsp)
fstpl  0x288(%rsp)
movsd  0x288(%rsp),%xmm0
fldl   0x438(%rsp)
fmull  0x544(%rip)
movsd  %xmm0,0x280(%rsp)
faddl  0x280(%rsp)
fstpl  0x278(%rsp)
movsd  0x278(%rsp),%xmm0
fldl   0x440(%rsp)
fmull  0x51f(%rip)
movsd  %xmm0,0x270(%rsp)
faddl  0x270(%rsp)
fstpl  0x268(%rsp)
movsd  0x268(%rsp),%xmm0
fldl   0x448(%rsp)
fmull  0x4fa(%rip)
movsd  %xmm0,0x260(%rsp)
faddl  0x260(%rsp)
fstpl  0x258(%rsp)
movsd  0x258(%rsp),%xmm0
fldl   0x450(%rsp)
fmull  0x4d5(%rip)
movsd  %xmm0,0x250(%rsp)
faddl  0x250(%rsp)
fstpl  0x248(%rsp)
movsd  0x248(%rsp),%xmm0
fldl   0x458(%rsp)
fmull  0x4b0(%rip)
movsd  %xmm0,0x240(%rsp)
faddl  0x240(%rsp)
fstpl  0x238(%rsp)
movsd  0x238(%rsp),%xmm0
fldl   0x460(%rsp)
fmull  0x48b(%rip)
movsd  %xmm0,0x230(%rsp)
faddl  0x230(%rsp)
fstpl  0x228(%rsp)
movsd  0x228(%rsp),%xmm0
fldl   0x468(%rsp)
fmull  0x466(%rip)
movsd  %xmm0,0x220(%rsp)
faddl  0x220(%rsp)
fstpl  0x218(%rsp)
movsd  0x218(%rsp),%xmm2
movslq %r12d,%rax
lea    0x428(%rsp),%rcx
lea    (%rcx,%rax,8),%rbx
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movsd  %xmm2,0x78(%rsp)
fldt   0x0(%rbp,%rdi,1)
fmulp  %st,%st(1)
fstpl  0x208(%rsp)
movsd  0x208(%rsp),%xmm1
movsd  %xmm1,0x50(%rsp)
movapd %xmm7,%xmm0
addsd  %xmm1,%xmm0
mov    %r13,%rdi
call   *%r14
movsd  %xmm0,0x30(%rsp)
movsd  (%rsp),%xmm0
subsd  0x50(%rsp),%xmm0
mov    %r13,%rdi
call   *%r14
lea    0x612(%rip),%rdi
fldt   0x44(%rsp)
movsd  (%rsp),%xmm7
addsd  0x30(%rsp),%xmm0
movsd  %xmm0,0x200(%rsp)
lea    0x6a3(%rip),%rax
fldt   0x0(%rbp,%rax,1)
movsd  0x78(%rsp),%xmm1
movsd  %xmm1,0x210(%rsp)
fmull  0x200(%rsp)
faddl  0x210(%rsp)
fstpl  0x1f8(%rsp)
movsd  0x1f8(%rsp),%xmm2
movsd  %xmm0,(%rbx)
add    $0x1,%r12d
add    $0x8,%rbx
add    $0x10,%rbp
cmp    $0xb0,%rbp
jne    1c40 <dqng+0xb30>
movapd 0x90(%rsp),%xmm1
movapd %xmm1,%xmm4
mulsd  %xmm2,%xmm4
movsd  %xmm2,0x78(%rsp)
movapd %xmm2,%xmm0
subsd  0x20(%rsp),%xmm0
mulsd  %xmm1,%xmm0
andpd  0x3c8(%rip),%xmm0
mov    0x70(%rsp),%rbx
movlpd %xmm0,(%rbx)
mov    0x80(%rsp),%rbp
lea    0x6d0(%rip),%rdx
lea    0x979(%rip),%rsi
jmp    1e4e <dqng+0xd3e>
nopl   0x0(%rax)
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movapd %xmm1,0x50(%rsp)
fldt   (%rbx,%rdx,1)
fmulp  %st,%st(1)
fstpl  0x2c0(%rsp)
movsd  0x2c0(%rsp),%xmm1
movsd  %xmm1,0xc0(%rsp)
fldt   (%rbx,%rsi,1)
fstpt  0x30(%rsp)
movapd %xmm7,%xmm0
addsd  %xmm1,%xmm0
mov    %r13,%rdi
call   *%r14
movsd  %xmm0,0x18(%rsp)
movsd  (%rsp),%xmm0
subsd  0xc0(%rsp),%xmm0
mov    %r13,%rdi
call   *%r14
lea    0x906(%rip),%rsi
lea    0x64f(%rip),%rdx
fldt   0x44(%rsp)
movsd  (%rsp),%xmm7
addsd  0x18(%rsp),%xmm0
movsd  %xmm0,0x2b8(%rsp)
movapd 0x50(%rsp),%xmm0
movsd  %xmm0,0x2c8(%rsp)
fldt   0x30(%rsp)
fmull  0x2b8(%rsp)
faddl  0x2c8(%rsp)
fstpl  0x2b0(%rsp)
movsd  0x2b0(%rsp),%xmm1
add    $0x10,%rbx
cmp    $0x160,%rbx
jne    1d60 <dqng+0xc50>
movapd 0x90(%rsp),%xmm0
movapd %xmm0,%xmm4
mulsd  %xmm1,%xmm4
subsd  0x78(%rsp),%xmm1
mulsd  %xmm0,%xmm1
andpd  0x2b2(%rip),%xmm1
mov    0x70(%rsp),%rbx
movlpd %xmm1,(%rbx)
lea    0x452(%rip),%rdi
lea    0x39b(%rip),%rcx
movsd  0x8(%rsp),%xmm5
movsd  0x10(%rsp),%xmm3
ucomisd 0x277(%rip),%xmm3
jne    1e71 <dqng+0xd61>
jnp    1f22 <dqng+0xe12>
movsd  (%rbx),%xmm0
ucomisd 0x263(%rip),%xmm0
jne    1e85 <dqng+0xd75>
jnp    1f22 <dqng+0xe12>
fstp   %st(0)
movapd %xmm4,0x30(%rsp)
movsd  %xmm5,0x8(%rsp)
mulsd  0x225(%rip),%xmm0
divsd  %xmm3,%xmm0
movsd  0x221(%rip),%xmm1
movsd  %xmm3,0x10(%rsp)
call   1030 <pow@plt>
movsd  0x216(%rip),%xmm1
ucomisd %xmm1,%xmm0
movapd %xmm1,%xmm0
ja     1ee3 <dqng+0xdd3>
movsd  (%rbx),%xmm0
mulsd  0x1f0(%rip),%xmm0
divsd  0x10(%rsp),%xmm0
movsd  0x1ea(%rip),%xmm1
call   1030 <pow@plt>
movsd  0x10(%rsp),%xmm3
mulsd  %xmm3,%xmm0
movsd  %xmm0,(%rbx)
movsd  (%rsp),%xmm7
fldt   0x44(%rsp)
lea    0x50f(%rip),%rdx
lea    0x7b8(%rip),%rsi
lea    0x391(%rip),%rdi
lea    0x2da(%rip),%rcx
movsd  0x8(%rsp),%xmm5
movapd 0x30(%rsp),%xmm4
mov    0x20af(%rip),%rax
movsd  (%rax),%xmm1
mov    0x20b4(%rip),%rax
movsd  (%rax),%xmm0
mulsd  0x198(%rip),%xmm0
divsd  %xmm0,%xmm1
ucomisd %xmm1,%xmm5
jbe    1f60 <dqng+0xe50>
mulsd  %xmm5,%xmm0
maxsd  (%rbx),%xmm0
movsd  %xmm0,(%rbx)
jmp    1f64 <dqng+0xe54>
nopl   0x0(%rax,%rax,1)
movsd  (%rbx),%xmm0
lea    0x1e5(%rip),%r15
mov    0x2c(%rsp),%eax
movapd %xmm4,%xmm1
andpd  0x175(%rip),%xmm1
mulsd  0x88(%rsp),%xmm1
movsd  0xb8(%rsp),%xmm2
maxsd  %xmm1,%xmm2
ucomisd %xmm0,%xmm2
jae    1fab <dqng+0xe9b>
cmpl   $0x0,0x0(%rbp)
je     1fb6 <dqng+0xea6>
add    $0x1,%eax
cmp    $0x4,%eax
jne    12f0 <dqng+0x1e0>
jmp    1fba <dqng+0xeaa>
fstp   %st(0)
movl   $0x0,0x0(%rbp)
jmp    1fb8 <dqng+0xea8>
fstp   %st(0)
fldz
fstp   %st(0)
movapd %xmm4,%xmm0
add    $0x4c8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@dqng.x1 = internal global [5 x x86_fp80] [x86_fp80 0xK3FFEF951F0315796C000, x86_fp80 0xK3FFEDD74CAF4E5979800, x86_fp80 0xK3FFEADEDC9146F0CC000, x86_fp80 0xK3FFDDDE600480B56E000, x86_fp80 0xK3FFC987283C48F13D000]
@dqng.w10 = internal global [5 x x86_fp80] [x86_fp80 0xK3FFB888AFC5B16E0F800, x86_fp80 0xK3FFC9909C643C77F2800, x86_fp80 0xK3FFCE0582CE805E18800, x86_fp80 0xK3FFD89DD53D2ACDFF000, x86_fp80 0xK3FFD974EF380A6B77800]
@dqng.x2 = internal global [5 x x86_fp80] [x86_fp80 0xK3FFEFEE3634939572800, x86_fp80 0xK3FFEEE1ECD25808E3000, x86_fp80 0xK3FFEC7E3ABA7D3631000, x86_fp80 0xK3FFE9010DA00FE090000, x86_fp80 0xK3FFD96BAA94AF509B800]
@dqng.w21a = internal global [5 x x86_fp80] [x86_fp80 0xK3FFA855BB5254A021000, x86_fp80 0xK3FFB99AE66A9B9172800, x86_fp80 0xK3FFBE0065FED440C7800, x86_fp80 0xK3FFC89F1368B4A46A000, x86_fp80 0xK3FFC9748EB7F90F5A800]
@dqng.w21b = internal global [6 x x86_fp80] [x86_fp80 0xK3FF8BF9ADEDE5441F800, x86_fp80 0xK3FFAE047B810CCCD1000, x86_fp80 0xK3FFBBEB88EEEE59C4800, x86_fp80 0xK3FFBFCE95C7AE96EF000, x86_fp80 0xK3FFC9233DB0B60702800, x86_fp80 0xK3FFC9908415BE6887800]
@dqng.x3 = internal global [11 x x86_fp80] [x86_fp80 0xK3FFEFFD44FA6E024E800, x86_fp80 0xK3FFEFCC86F7C77DE2000, x86_fp80 0xK3FFEF46E4AF5FD132800, x86_fp80 0xK3FFEE6702519C6B01800, x86_fp80 0xK3FFED340325F9118A000, x86_fp80 0xK3FFEBB6E13AA8734F000, x86_fp80 0xK3FFE9F72F6EFD6E99000, x86_fp80 0xK3FFDFFBBC9674F760000, x86_fp80 0xK3FFDBAD463FB7AB10000, x86_fp80 0xK3FFCE396CB2F432E4800, x86_fp80 0xK3FFB98E26C44FB97B000]
@dqng.w43a = internal global [10 x x86_fp80] [x86_fp80 0xK3FF98580BA99C874A800, x86_fp80 0xK3FFA99B1965CA7E92800, x86_fp80 0xK3FFAE007C2F991F0F800, x86_fp80 0xK3FFB89F1A2B7A65B6000, x86_fp80 0xK3FFB9749425C8F9CC800, x86_fp80 0xK3FF7BD0627CF98E89000, x86_fp80 0xK3FF9E03B03DDAFAAF000, x86_fp80 0xK3FFABEB690CDAE1D7000, x86_fp80 0xK3FFAFCE851F14F59D000, x86_fp80 0xK3FFB92337CD228A6C800]
@dqng.w43b = internal global [12 x x86_fp80] [x86_fp80 0xK3FF5F1C266492C3AE000, x86_fp80 0xK3FF8B0ECFCA71B9D3000, x86_fp80 0xK3FF9B35DE7F7E0E1D000, x86_fp80 0xK3FFA8584EB1B4E6E0000, x86_fp80 0xK3FFAACB341287444A800, x86_fp80 0xK3FFACFD6C7B1E4F77800, x86_fp80 0xK3FFAEF1F3BA9DA4ED800, x86_fp80 0xK3FFB8499C35E66777800, x86_fp80 0xK3FFB8E78B907866B6800, x86_fp80 0xK3FFB9524FB13C4964800, x86_fp80 0xK3FFB9897850F3C326000, x86_fp80 0xK3FFB9907ECDEFE39B800]
@dqng.x4 = internal global [22 x x86_fp80] [x86_fp80 0xK3FFEFFF9A43A84365000, x86_fp80 0xK3FFEFF7C440D00506800, x86_fp80 0xK3FFEFDFF36A334447800, x86_fp80 0xK3FFEFB3A49E235197800, x86_fp80 0xK3FFEF70E04353A2BD800, x86_fp80 0xK3FFEF1736EC50E34F000, x86_fp80 0xK3FFEEA724A088A908000, x86_fp80 0xK3FFEE21AD0873F284800, x86_fp80 0xK3FFED8807FE68591E800, x86_fp80 0xK3FFECDB5F465B62FE800, x86_fp80 0xK3FFEC1CB20A82DC50000, x86_fp80 0xK3FFEB4CE523213D6A800, x86_fp80 0xK3FFEA6CE91390A67D000, x86_fp80 0xK3FFE97DD7CAECD3D6000, x86_fp80 0xK3FFE880FF707AD868000, x86_fp80 0xK3FFDEEFBA43FDB1D9800, x86_fp80 0xK3FFDCC8169E587BDD800, x86_fp80 0xK3FFDA8E55C21E2DDB800, x86_fp80 0xK3FFD845A941958843800, x86_fp80 0xK3FFCBE26EF1D1D7DA000, x86_fp80 0xK3FFBE50D87BF5C157000, x86_fp80 0xK3FFA98FE8A46A822D800]
@dqng.w87a = internal global [21 x x86_fp80] [x86_fp80 0xK3FF88580C59858419000, x86_fp80 0xK3FF999B196700D69D800, x86_fp80 0xK3FF9E007C2FC7228B800, x86_fp80 0xK3FFA89F1A2B81FB93800, x86_fp80 0xK3FFA9749425CDA0B3000, x86_fp80 0xK3FF6BD1020BDAB011000, x86_fp80 0xK3FF8E03B04A545969800, x86_fp80 0xK3FF9BEB690D43B7DB800, x86_fp80 0xK3FF9FCE851F2D219A000, x86_fp80 0xK3FFA92337CD281E16000, x86_fp80 0xK3FF4EFEFA02309CF1000, x86_fp80 0xK3FF7B0EC71FB5EF3F000, x86_fp80 0xK3FF8B35DE576A62B3000, x86_fp80 0xK3FF98584EAF353CE4800, x86_fp80 0xK3FF9ACB3411DAE17A800, x86_fp80 0xK3FF9CFD6C7ADA7EF5000, x86_fp80 0xK3FF9EF1F3BA7D0633800, x86_fp80 0xK3FFA8499C35DD0941800, x86_fp80 0xK3FFA8E78B90720279000, x86_fp80 0xK3FFA9524FB1374482800, x86_fp80 0xK3FFA9897850EF5208000]
@dqng.w87b = internal global [23 x x86_fp80] [x86_fp80 0xK3FF38FBB31D87A126000, x86_fp80 0xK3FF5ECDD064AA4659000, x86_fp80 0xK3FF7863F07CAEF9E7000, x86_fp80 0xK3FF7DD74A55FF1CCB000, x86_fp80 0xK3FF89C776CF856AD6000, x86_fp80 0xK3FF8CA01739C6CB7D800, x86_fp80 0xK3FF8F5EE611CDE56F000, x86_fp80 0xK3FF98FC2DA728AFB3000, x86_fp80 0xK3FF9A3551887A7541800, x86_fp80 0xK3FF9B5D22782DC0DE800, x86_fp80 0xK3FF9C762E41D6609D000, x86_fp80 0xK3FF9D80F58C68E9DF800, x86_fp80 0xK3FF9E7B9F397C3B8E000, x86_fp80 0xK3FF9F630D4A3609FB800, x86_fp80 0xK3FFA81A00622A3BF9800, x86_fp80 0xK3FFA875FDECC21200800, x86_fp80 0xK3FFA8C4F134F36C3B000, x86_fp80 0xK3FFA906F51D274724800, x86_fp80 0xK3FFA93C577291852D000, x86_fp80 0xK3FFA965146A213481000, x86_fp80 0xK3FFA980BB791F9CE2000, x86_fp80 0xK3FFA98EBC6B82CD38000, x86_fp80 0xK3FFA9907ECDF4432E000]
@DBL_MIN = global double 0.000000e+00
@DBL_EPSILON = global double 0.000000e+00
define double @dqng(double (double, i8*)* %0, i8* %1, double %2, double %3, double %4, double %5, double* %6, i32* %7, i32* %8) {
%10 = alloca double
%11 = alloca double (double, i8*)*
%12 = alloca i8*
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca double
%17 = alloca double*
%18 = alloca i32*
%19 = alloca i32*
%20 = alloca [5 x double]
%21 = alloca [5 x double]
%22 = alloca [5 x double]
%23 = alloca [5 x double]
%24 = alloca [21 x double]
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = alloca double
%30 = alloca double
%31 = alloca double
%32 = alloca double
%33 = alloca double
%34 = alloca double
%35 = alloca double
%36 = alloca double
%37 = alloca double
%38 = alloca double
%39 = alloca double
%40 = alloca double
%41 = alloca i32
%42 = alloca i32
%43 = alloca i32
store double (double, i8*)* %0, double (double, i8*)** %11
store i8* %1, i8** %12
store double %2, double* %13
store double %3, double* %14
store double %4, double* %15
store double %5, double* %16
store double* %6, double** %17
store i32* %7, i32** %18
store i32* %8, i32** %19
store double 0.000000e+00, double* %33
%44 = load double*, double** %17
store double 0.000000e+00, double* %44
%45 = load i32*, i32** %18
store i32 0, i32* %45
%46 = load i32*, i32** %19
store i32 6, i32* %46
%47 = load double, double* %15
%48 = fcmp olt double %47, 0.000000e+00
br i1 %48, label %49, label %54
49: ; preds = %9
%50 = load double, double* %16
%51 = fcmp olt double %50, 0.000000e+00
br i1 %51, label %52, label %54
52: ; preds = %49
%53 = load double, double* %33
store double %53, double* %10
br label %559
54: ; preds = %49, %9
%55 = load double, double* %14
%56 = load double, double* %13
%57 = fsub double %55, %56
%58 = fmul double 5.000000e-01, %57
store double %58, double* %32
%59 = load double, double* %32
%60 = call double @llvm.fabs.f64(double %59)
store double %60, double* %27
%61 = load double, double* %13
%62 = load double, double* %14
%63 = fadd double %61, %62
%64 = fmul double 5.000000e-01, %63
store double %64, double* %26
%65 = load double (double, i8*)*, double (double, i8*)** %11
%66 = load double, double* %26
%67 = load i8*, i8** %12
%68 = call double %65(double %66, i8* %67)
store double %68, double* %28
%69 = load i32*, i32** %18
store i32 21, i32* %69
%70 = load i32*, i32** %19
store i32 1, i32* %70
store i32 1, i32* %43
br label %71
71: ; preds = %554, %54
%72 = load i32, i32* %43
%73 = icmp sle i32 %72, 3
br i1 %73, label %74, label %557
74: ; preds = %71
%75 = load i32, i32* %43
switch i32 %75, label %473 [
i32 1, label %76
i32 2, label %314
i32 3, label %397
]
76: ; preds = %74
store double 0.000000e+00, double* %34
%77 = load x86_fp80, x86_fp80* getelementptr inbounds ([6 x x86_fp80], [6 x x86_fp80]* @dqng.w21b, i64 0, i64 5)
%78 = load double, double* %28
%79 = fpext double %78 to x86_fp80
%80 = fmul x86_fp80 %77, %79
%81 = fptrunc x86_fp80 %80 to double
store double %81, double* %35
%82 = load x86_fp80, x86_fp80* getelementptr inbounds ([6 x x86_fp80], [6 x x86_fp80]* @dqng.w21b, i64 0, i64 5)
%83 = load double, double* %28
%84 = call double @llvm.fabs.f64(double %83)
%85 = fpext double %84 to x86_fp80
%86 = fmul x86_fp80 %82, %85
%87 = fptrunc x86_fp80 %86 to double
store double %87, double* %38
store i32 0, i32* %42
br label %88
88: ; preds = %161, %76
%89 = load i32, i32* %42
%90 = icmp slt i32 %89, 5
br i1 %90, label %91, label %164
91: ; preds = %88
%92 = load double, double* %32
%93 = fpext double %92 to x86_fp80
%94 = load i32, i32* %42
%95 = sext i32 %94 to i64
%96 = getelementptr inbounds [5 x x86_fp80], [5 x x86_fp80]* @dqng.x1, i64 0, i64 %95
%97 = load x86_fp80, x86_fp80* %96
%98 = fmul x86_fp80 %93, %97
%99 = fptrunc x86_fp80 %98 to double
store double %99, double* %25
%100 = load double (double, i8*)*, double (double, i8*)** %11
%101 = load double, double* %26
%102 = load double, double* %25
%103 = fadd double %101, %102
%104 = load i8*, i8** %12
%105 = call double %100(double %103, i8* %104)
store double %105, double* %30
%106 = load double (double, i8*)*, double (double, i8*)** %11
%107 = load double, double* %26
%108 = load double, double* %25
%109 = fsub double %107, %108
%110 = load i8*, i8** %12
%111 = call double %106(double %109, i8* %110)
store double %111, double* %31
%112 = load double, double* %30
%113 = load double, double* %31
%114 = fadd double %112, %113
store double %114, double* %29
%115 = load i32, i32* %42
%116 = sext i32 %115 to i64
%117 = getelementptr inbounds [5 x x86_fp80], [5 x x86_fp80]* @dqng.w10, i64 0, i64 %116
%118 = load x86_fp80, x86_fp80* %117
%119 = load double, double* %29
%120 = fpext double %119 to x86_fp80
%121 = load double, double* %34
%122 = fpext double %121 to x86_fp80
%123 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %118, x86_fp80 %120, x86_fp80 %122)
%124 = fptrunc x86_fp80 %123 to double
store double %124, double* %34
%125 = load i32, i32* %42
%126 = sext i32 %125 to i64
%127 = getelementptr inbounds [5 x x86_fp80], [5 x x86_fp80]* @dqng.w21a, i64 0, i64 %126
%128 = load x86_fp80, x86_fp80* %127
%129 = load double, double* %29
%130 = fpext double %129 to x86_fp80
%131 = load double, double* %35
%132 = fpext double %131 to x86_fp80
%133 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %128, x86_fp80 %130, x86_fp80 %132)
%134 = fptrunc x86_fp80 %133 to double
store double %134, double* %35
%135 = load i32, i32* %42
%136 = sext i32 %135 to i64
%137 = getelementptr inbounds [5 x x86_fp80], [5 x x86_fp80]* @dqng.w21a, i64 0, i64 %136
%138 = load x86_fp80, x86_fp80* %137
%139 = load double, double* %30
%140 = call double @llvm.fabs.f64(double %139)
%141 = load double, double* %31
%142 = call double @llvm.fabs.f64(double %141)
%143 = fadd double %140, %142
%144 = fpext double %143 to x86_fp80
%145 = load double, double* %38
%146 = fpext double %145 to x86_fp80
%147 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %138, x86_fp80 %144, x86_fp80 %146)
%148 = fptrunc x86_fp80 %147 to double
store double %148, double* %38
%149 = load double, double* %29
%150 = load i32, i32* %42
%151 = sext i32 %150 to i64
%152 = getelementptr inbounds [21 x double], [21 x double]* %24, i64 0, i64 %151
store double %149, double* %152
%153 = load double, double* %30
%154 = load i32, i32* %42
%155 = sext i32 %154 to i64
%156 = getelementptr inbounds [5 x double], [5 x double]* %20, i64 0, i64 %155
store double %153, double* %156
%157 = load double, double* %31
%158 = load i32, i32* %42
%159 = sext i32 %158 to i64
%160 = getelementptr inbounds [5 x double], [5 x double]* %21, i64 0, i64 %159
store double %157, double* %160
br label %161
161: ; preds = %91
%162 = load i32, i32* %42
%163 = add nsw i32 %162, 1
store i32 %163, i32* %42
br label %88
164: ; preds = %88
store i32 4, i32* %41
store i32 0, i32* %42
br label %165
165: ; preds = %230, %164
%166 = load i32, i32* %42
%167 = icmp slt i32 %166, 5
br i1 %167, label %168, label %233
168: ; preds = %165
%169 = load i32, i32* %41
%170 = add nsw i32 %169, 1
store i32 %170, i32* %41
%171 = load double, double* %32
%172 = fpext double %171 to x86_fp80
%173 = load i32, i32* %42
%174 = sext i32 %173 to i64
%175 = getelementptr inbounds [5 x x86_fp80], [5 x x86_fp80]* @dqng.x2, i64 0, i64 %174
%176 = load x86_fp80, x86_fp80* %175
%177 = fmul x86_fp80 %172, %176
%178 = fptrunc x86_fp80 %177 to double
store double %178, double* %25
%179 = load double (double, i8*)*, double (double, i8*)** %11
%180 = load double, double* %26
%181 = load double, double* %25
%182 = fadd double %180, %181
%183 = load i8*, i8** %12
%184 = call double %179(double %182, i8* %183)
store double %184, double* %30
%185 = load double (double, i8*)*, double (double, i8*)** %11
%186 = load double, double* %26
%187 = load double, double* %25
%188 = fsub double %186, %187
%189 = load i8*, i8** %12
%190 = call double %185(double %188, i8* %189)
store double %190, double* %31
%191 = load double, double* %30
%192 = load double, double* %31
%193 = fadd double %191, %192
store double %193, double* %29
%194 = load i32, i32* %42
%195 = sext i32 %194 to i64
%196 = getelementptr inbounds [6 x x86_fp80], [6 x x86_fp80]* @dqng.w21b, i64 0, i64 %195
%197 = load x86_fp80, x86_fp80* %196
%198 = load double, double* %29
%199 = fpext double %198 to x86_fp80
%200 = load double, double* %35
%201 = fpext double %200 to x86_fp80
%202 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %197, x86_fp80 %199, x86_fp80 %201)
%203 = fptrunc x86_fp80 %202 to double
store double %203, double* %35
%204 = load i32, i32* %42
%205 = sext i32 %204 to i64
%206 = getelementptr inbounds [6 x x86_fp80], [6 x x86_fp80]* @dqng.w21b, i64 0, i64 %205
%207 = load x86_fp80, x86_fp80* %206
%208 = load double, double* %30
%209 = call double @llvm.fabs.f64(double %208)
%210 = load double, double* %31
%211 = call double @llvm.fabs.f64(double %210)
%212 = fadd double %209, %211
%213 = fpext double %212 to x86_fp80
%214 = load double, double* %38
%215 = fpext double %214 to x86_fp80
%216 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %207, x86_fp80 %213, x86_fp80 %215)
%217 = fptrunc x86_fp80 %216 to double
store double %217, double* %38
%218 = load double, double* %29
%219 = load i32, i32* %41
%220 = sext i32 %219 to i64
%221 = getelementptr inbounds [21 x double], [21 x double]* %24, i64 0, i64 %220
store double %218, double* %221
%222 = load double, double* %30
%223 = load i32, i32* %42
%224 = sext i32 %223 to i64
%225 = getelementptr inbounds [5 x double], [5 x double]* %22, i64 0, i64 %224
store double %222, double* %225
%226 = load double, double* %31
%227 = load i32, i32* %42
%228 = sext i32 %227 to i64
%229 = getelementptr inbounds [5 x double], [5 x double]* %23, i64 0, i64 %228
store double %226, double* %229
br label %230
230: ; preds = %168
%231 = load i32, i32* %42
%232 = add nsw i32 %231, 1
store i32 %232, i32* %42
br label %165
233: ; preds = %165
%234 = load double, double* %35
%235 = load double, double* %32
%236 = fmul double %234, %235
store double %236, double* %33
%237 = load double, double* %27
%238 = load double, double* %38
%239 = fmul double %238, %237
store double %239, double* %38
%240 = load double, double* %35
%241 = fmul double 5.000000e-01, %240
store double %241, double* %40
%242 = load x86_fp80, x86_fp80* getelementptr inbounds ([6 x x86_fp80], [6 x x86_fp80]* @dqng.w21b, i64 0, i64 5)
%243 = load double, double* %28
%244 = load double, double* %40
%245 = fsub double %243, %244
%246 = call double @llvm.fabs.f64(double %245)
%247 = fpext double %246 to x86_fp80
%248 = fmul x86_fp80 %242, %247
%249 = fptrunc x86_fp80 %248 to double
store double %249, double* %39
store i32 0, i32* %42
br label %250
250: ; preds = %300, %233
%251 = load i32, i32* %42
%252 = icmp slt i32 %251, 5
br i1 %252, label %253, label %303
253: ; preds = %250
%254 = load i32, i32* %42
%255 = sext i32 %254 to i64
%256 = getelementptr inbounds [5 x x86_fp80], [5 x x86_fp80]* @dqng.w21a, i64 0, i64 %255
%257 = load x86_fp80, x86_fp80* %256
%258 = load i32, i32* %42
%259 = sext i32 %258 to i64
%260 = getelementptr inbounds [5 x double], [5 x double]* %20, i64 0, i64 %259
%261 = load double, double* %260
%262 = load double, double* %40
%263 = fsub double %261, %262
%264 = call double @llvm.fabs.f64(double %263)
%265 = load i32, i32* %42
%266 = sext i32 %265 to i64
%267 = getelementptr inbounds [5 x double], [5 x double]* %21, i64 0, i64 %266
%268 = load double, double* %267
%269 = load double, double* %40
%270 = fsub double %268, %269
%271 = call double @llvm.fabs.f64(double %270)
%272 = fadd double %264, %271
%273 = fpext double %272 to x86_fp80
%274 = load i32, i32* %42
%275 = sext i32 %274 to i64
%276 = getelementptr inbounds [6 x x86_fp80], [6 x x86_fp80]* @dqng.w21b, i64 0, i64 %275
%277 = load x86_fp80, x86_fp80* %276
%278 = load i32, i32* %42
%279 = sext i32 %278 to i64
%280 = getelementptr inbounds [5 x double], [5 x double]* %22, i64 0, i64 %279
%281 = load double, double* %280
%282 = load double, double* %40
%283 = fsub double %281, %282
%284 = call double @llvm.fabs.f64(double %283)
%285 = load i32, i32* %42
%286 = sext i32 %285 to i64
%287 = getelementptr inbounds [5 x double], [5 x double]* %23, i64 0, i64 %286
%288 = load double, double* %287
%289 = load double, double* %40
%290 = fsub double %288, %289
%291 = call double @llvm.fabs.f64(double %290)
%292 = fadd double %284, %291
%293 = fpext double %292 to x86_fp80
%294 = fmul x86_fp80 %277, %293
%295 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %257, x86_fp80 %273, x86_fp80 %294)
%296 = load double, double* %39
%297 = fpext double %296 to x86_fp80
%298 = fadd x86_fp80 %297, %295
%299 = fptrunc x86_fp80 %298 to double
store double %299, double* %39
br label %300
300: ; preds = %253
%301 = load i32, i32* %42
%302 = add nsw i32 %301, 1
store i32 %302, i32* %42
br label %250
303: ; preds = %250
%304 = load double, double* %35
%305 = load double, double* %34
%306 = fsub double %304, %305
%307 = load double, double* %32
%308 = fmul double %306, %307
%309 = call double @llvm.fabs.f64(double %308)
%310 = load double*, double** %17
store double %309, double* %310
%311 = load double, double* %27
%312 = load double, double* %39
%313 = fmul double %312, %311
store double %313, double* %39
br label %473
314: ; preds = %74
%315 = load x86_fp80, x86_fp80* getelementptr inbounds ([12 x x86_fp80], [12 x x86_fp80]* @dqng.w43b, i64 0, i64 11)
%316 = load double, double* %28
%317 = fpext double %316 to x86_fp80
%318 = fmul x86_fp80 %315, %317
%319 = fptrunc x86_fp80 %318 to double
store double %319, double* %36
%320 = load i32*, i32** %18
store i32 43, i32* %320
store i32 0, i32* %42
br label %321
321: ; preds = %338, %314
%322 = load i32, i32* %42
%323 = icmp slt i32 %322, 10
br i1 %323, label %324, label %341
324: ; preds = %321
%325 = load i32, i32* %42
%326 = sext i32 %325 to i64
%327 = getelementptr inbounds [21 x double], [21 x double]* %24, i64 0, i64 %326
%328 = load double, double* %327
%329 = fpext double %328 to x86_fp80
%330 = load i32, i32* %42
%331 = sext i32 %330 to i64
%332 = getelementptr inbounds [10 x x86_fp80], [10 x x86_fp80]* @dqng.w43a, i64 0, i64 %331
%333 = load x86_fp80, x86_fp80* %332
%334 = load double, double* %36
%335 = fpext double %334 to x86_fp80
%336 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %329, x86_fp80 %333, x86_fp80 %335)
%337 = fptrunc x86_fp80 %336 to double
store double %337, double* %36
br label %338
338: ; preds = %324
%339 = load i32, i32* %42
%340 = add nsw i32 %339, 1
store i32 %340, i32* %42
br label %321
341: ; preds = %321
store i32 0, i32* %42
br label %342
342: ; preds = %383, %341
%343 = load i32, i32* %42
%344 = icmp slt i32 %343, 11
br i1 %344, label %345, label %386
345: ; preds = %342
%346 = load i32, i32* %41
%347 = add nsw i32 %346, 1
store i32 %347, i32* %41
%348 = load double, double* %32
%349 = fpext double %348 to x86_fp80
%350 = load i32, i32* %42
%351 = sext i32 %350 to i64
%352 = getelementptr inbounds [11 x x86_fp80], [11 x x86_fp80]* @dqng.x3, i64 0, i64 %351
%353 = load x86_fp80, x86_fp80* %352
%354 = fmul x86_fp80 %349, %353
%355 = fptrunc x86_fp80 %354 to double
store double %355, double* %25
%356 = load double (double, i8*)*, double (double, i8*)** %11
%357 = load double, double* %26
%358 = load double, double* %25
%359 = fadd double %357, %358
%360 = load i8*, i8** %12
%361 = call double %356(double %359, i8* %360)
%362 = load double (double, i8*)*, double (double, i8*)** %11
%363 = load double, double* %26
%364 = load double, double* %25
%365 = fsub double %363, %364
%366 = load i8*, i8** %12
%367 = call double %362(double %365, i8* %366)
%368 = fadd double %361, %367
store double %368, double* %29
%369 = load double, double* %29
%370 = fpext double %369 to x86_fp80
%371 = load i32, i32* %42
%372 = sext i32 %371 to i64
%373 = getelementptr inbounds [12 x x86_fp80], [12 x x86_fp80]* @dqng.w43b, i64 0, i64 %372
%374 = load x86_fp80, x86_fp80* %373
%375 = load double, double* %36
%376 = fpext double %375 to x86_fp80
%377 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %370, x86_fp80 %374, x86_fp80 %376)
%378 = fptrunc x86_fp80 %377 to double
store double %378, double* %36
%379 = load double, double* %29
%380 = load i32, i32* %41
%381 = sext i32 %380 to i64
%382 = getelementptr inbounds [21 x double], [21 x double]* %24, i64 0, i64 %381
store double %379, double* %382
br label %383
383: ; preds = %345
%384 = load i32, i32* %42
%385 = add nsw i32 %384, 1
store i32 %385, i32* %42
br label %342
386: ; preds = %342
%387 = load double, double* %36
%388 = load double, double* %32
%389 = fmul double %387, %388
store double %389, double* %33
%390 = load double, double* %36
%391 = load double, double* %35
%392 = fsub double %390, %391
%393 = load double, double* %32
%394 = fmul double %392, %393
%395 = call double @llvm.fabs.f64(double %394)
%396 = load double*, double** %17
store double %395, double* %396
br label %473
397: ; preds = %74
%398 = load x86_fp80, x86_fp80* getelementptr inbounds ([23 x x86_fp80], [23 x x86_fp80]* @dqng.w87b, i64 0, i64 22)
%399 = load double, double* %28
%400 = fpext double %399 to x86_fp80
%401 = fmul x86_fp80 %398, %400
%402 = fptrunc x86_fp80 %401 to double
store double %402, double* %37
%403 = load i32*, i32** %18
store i32 87, i32* %403
store i32 0, i32* %42
br label %404
404: ; preds = %421, %397
%405 = load i32, i32* %42
%406 = icmp slt i32 %405, 21
br i1 %406, label %407, label %424
407: ; preds = %404
%408 = load i32, i32* %42
%409 = sext i32 %408 to i64
%410 = getelementptr inbounds [21 x double], [21 x double]* %24, i64 0, i64 %409
%411 = load double, double* %410
%412 = fpext double %411 to x86_fp80
%413 = load i32, i32* %42
%414 = sext i32 %413 to i64
%415 = getelementptr inbounds [21 x x86_fp80], [21 x x86_fp80]* @dqng.w87a, i64 0, i64 %414
%416 = load x86_fp80, x86_fp80* %415
%417 = load double, double* %37
%418 = fpext double %417 to x86_fp80
%419 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %412, x86_fp80 %416, x86_fp80 %418)
%420 = fptrunc x86_fp80 %419 to double
store double %420, double* %37
br label %421
421: ; preds = %407
%422 = load i32, i32* %42
%423 = add nsw i32 %422, 1
store i32 %423, i32* %42
br label %404
424: ; preds = %404
store i32 0, i32* %42
br label %425
425: ; preds = %459, %424
%426 = load i32, i32* %42
%427 = icmp slt i32 %426, 22
br i1 %427, label %428, label %462
428: ; preds = %425
%429 = load double, double* %32
%430 = fpext double %429 to x86_fp80
%431 = load i32, i32* %42
%432 = sext i32 %431 to i64
%433 = getelementptr inbounds [22 x x86_fp80], [22 x x86_fp80]* @dqng.x4, i64 0, i64 %432
%434 = load x86_fp80, x86_fp80* %433
%435 = fmul x86_fp80 %430, %434
%436 = fptrunc x86_fp80 %435 to double
store double %436, double* %25
%437 = load i32, i32* %42
%438 = sext i32 %437 to i64
%439 = getelementptr inbounds [23 x x86_fp80], [23 x x86_fp80]* @dqng.w87b, i64 0, i64 %438
%440 = load x86_fp80, x86_fp80* %439
%441 = load double (double, i8*)*, double (double, i8*)** %11
%442 = load double, double* %26
%443 = load double, double* %25
%444 = fadd double %442, %443
%445 = load i8*, i8** %12
%446 = call double %441(double %444, i8* %445)
%447 = load double (double, i8*)*, double (double, i8*)** %11
%448 = load double, double* %26
%449 = load double, double* %25
%450 = fsub double %448, %449
%451 = load i8*, i8** %12
%452 = call double %447(double %450, i8* %451)
%453 = fadd double %446, %452
%454 = fpext double %453 to x86_fp80
%455 = load double, double* %37
%456 = fpext double %455 to x86_fp80
%457 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %440, x86_fp80 %454, x86_fp80 %456)
%458 = fptrunc x86_fp80 %457 to double
store double %458, double* %37
br label %459
459: ; preds = %428
%460 = load i32, i32* %42
%461 = add nsw i32 %460, 1
store i32 %461, i32* %42
br label %425
462: ; preds = %425
%463 = load double, double* %37
%464 = load double, double* %32
%465 = fmul double %463, %464
store double %465, double* %33
%466 = load double, double* %37
%467 = load double, double* %36
%468 = fsub double %466, %467
%469 = load double, double* %32
%470 = fmul double %468, %469
%471 = call double @llvm.fabs.f64(double %470)
%472 = load double*, double** %17
store double %471, double* %472
br label %473
473: ; preds = %462, %74, %386, %303
%474 = load double, double* %39
%475 = fcmp une double %474, 0.000000e+00
br i1 %475, label %476, label %501
476: ; preds = %473
%477 = load double*, double** %17
%478 = load double, double* %477
%479 = fcmp une double %478, 0.000000e+00
br i1 %479, label %480, label %501
480: ; preds = %476
%481 = load double, double* %39
%482 = load double*, double** %17
%483 = load double, double* %482
%484 = fmul double 2.000000e+02, %483
%485 = load double, double* %39
%486 = fdiv double %484, %485
%487 = call double @pow(double %486, double 1.500000e+00)
%488 = fcmp olt double 1.000000e+00, %487
br i1 %488, label %489, label %490
489: ; preds = %480
br label %497
490: ; preds = %480
%491 = load double*, double** %17
%492 = load double, double* %491
%493 = fmul double 2.000000e+02, %492
%494 = load double, double* %39
%495 = fdiv double %493, %494
%496 = call double @pow(double %495, double 1.500000e+00)
br label %497
497: ; preds = %490, %489
%498 = phi double [ 1.000000e+00, %489 ], [ %496, %490 ]
%499 = fmul double %481, %498
%500 = load double*, double** %17
store double %499, double* %500
br label %501
501: ; preds = %497, %476, %473
%502 = load double, double* %38
%503 = load double, double* @DBL_MIN
%504 = load double, double* @DBL_EPSILON
%505 = fmul double 5.000000e+01, %504
%506 = fdiv double %503, %505
%507 = fcmp ogt double %502, %506
br i1 %507, label %508, label %527
508: ; preds = %501
%509 = load double, double* @DBL_EPSILON
%510 = fmul double %509, 5.000000e+01
%511 = load double, double* %38
%512 = fmul double %510, %511
%513 = load double*, double** %17
%514 = load double, double* %513
%515 = fcmp ogt double %512, %514
br i1 %515, label %516, label %521
516: ; preds = %508
%517 = load double, double* @DBL_EPSILON
%518 = fmul double %517, 5.000000e+01
%519 = load double, double* %38
%520 = fmul double %518, %519
br label %524
521: ; preds = %508
%522 = load double*, double** %17
%523 = load double, double* %522
br label %524
524: ; preds = %521, %516
%525 = phi double [ %520, %516 ], [ %523, %521 ]
%526 = load double*, double** %17
store double %525, double* %526
br label %527
527: ; preds = %524, %501
%528 = load double*, double** %17
%529 = load double, double* %528
%530 = load double, double* %15
%531 = load double, double* %16
%532 = load double, double* %33
%533 = call double @llvm.fabs.f64(double %532)
%534 = fmul double %531, %533
%535 = fcmp ogt double %530, %534
br i1 %535, label %536, label %538
536: ; preds = %527
%537 = load double, double* %15
br label %543
538: ; preds = %527
%539 = load double, double* %16
%540 = load double, double* %33
%541 = call double @llvm.fabs.f64(double %540)
%542 = fmul double %539, %541
br label %543
543: ; preds = %538, %536
%544 = phi double [ %537, %536 ], [ %542, %538 ]
%545 = fcmp ole double %529, %544
br i1 %545, label %546, label %548
546: ; preds = %543
%547 = load i32*, i32** %19
store i32 0, i32* %547
br label %548
548: ; preds = %546, %543
%549 = load i32*, i32** %19
%550 = load i32, i32* %549
%551 = icmp eq i32 %550, 0
br i1 %551, label %552, label %553
552: ; preds = %548
br label %557
553: ; preds = %548
br label %554
554: ; preds = %553
%555 = load i32, i32* %43
%556 = add nsw i32 %555, 1
store i32 %556, i32* %43
br label %71
557: ; preds = %552, %71
%558 = load double, double* %33
store double %558, double* %10
br label %559
559: ; preds = %557, %52
%560 = load double, double* %10
ret double %560
}

LLVM IR (-O2):
@dqng.x1 = internal unnamed_addr constant [5 x x86_fp80] [x86_fp80 0xK3FFEF951F0315796C000, x86_fp80 0xK3FFEDD74CAF4E5979800, x86_fp80 0xK3FFEADEDC9146F0CC000, x86_fp80 0xK3FFDDDE600480B56E000, x86_fp80 0xK3FFC987283C48F13D000]
@dqng.w10 = internal unnamed_addr constant [5 x x86_fp80] [x86_fp80 0xK3FFB888AFC5B16E0F800, x86_fp80 0xK3FFC9909C643C77F2800, x86_fp80 0xK3FFCE0582CE805E18800, x86_fp80 0xK3FFD89DD53D2ACDFF000, x86_fp80 0xK3FFD974EF380A6B77800]
@dqng.x2 = internal unnamed_addr constant [5 x x86_fp80] [x86_fp80 0xK3FFEFEE3634939572800, x86_fp80 0xK3FFEEE1ECD25808E3000, x86_fp80 0xK3FFEC7E3ABA7D3631000, x86_fp80 0xK3FFE9010DA00FE090000, x86_fp80 0xK3FFD96BAA94AF509B800]
@dqng.w21a = internal unnamed_addr constant [5 x x86_fp80] [x86_fp80 0xK3FFA855BB5254A021000, x86_fp80 0xK3FFB99AE66A9B9172800, x86_fp80 0xK3FFBE0065FED440C7800, x86_fp80 0xK3FFC89F1368B4A46A000, x86_fp80 0xK3FFC9748EB7F90F5A800]
@dqng.w21b = internal unnamed_addr constant [6 x x86_fp80] [x86_fp80 0xK3FF8BF9ADEDE5441F800, x86_fp80 0xK3FFAE047B810CCCD1000, x86_fp80 0xK3FFBBEB88EEEE59C4800, x86_fp80 0xK3FFBFCE95C7AE96EF000, x86_fp80 0xK3FFC9233DB0B60702800, x86_fp80 0xK3FFC9908415BE6887800]
@dqng.x3 = internal unnamed_addr constant [11 x x86_fp80] [x86_fp80 0xK3FFEFFD44FA6E024E800, x86_fp80 0xK3FFEFCC86F7C77DE2000, x86_fp80 0xK3FFEF46E4AF5FD132800, x86_fp80 0xK3FFEE6702519C6B01800, x86_fp80 0xK3FFED340325F9118A000, x86_fp80 0xK3FFEBB6E13AA8734F000, x86_fp80 0xK3FFE9F72F6EFD6E99000, x86_fp80 0xK3FFDFFBBC9674F760000, x86_fp80 0xK3FFDBAD463FB7AB10000, x86_fp80 0xK3FFCE396CB2F432E4800, x86_fp80 0xK3FFB98E26C44FB97B000]
@dqng.w43b = internal unnamed_addr constant [12 x x86_fp80] [x86_fp80 0xK3FF5F1C266492C3AE000, x86_fp80 0xK3FF8B0ECFCA71B9D3000, x86_fp80 0xK3FF9B35DE7F7E0E1D000, x86_fp80 0xK3FFA8584EB1B4E6E0000, x86_fp80 0xK3FFAACB341287444A800, x86_fp80 0xK3FFACFD6C7B1E4F77800, x86_fp80 0xK3FFAEF1F3BA9DA4ED800, x86_fp80 0xK3FFB8499C35E66777800, x86_fp80 0xK3FFB8E78B907866B6800, x86_fp80 0xK3FFB9524FB13C4964800, x86_fp80 0xK3FFB9897850F3C326000, x86_fp80 0xK3FFB9907ECDEFE39B800]
@dqng.x4 = internal unnamed_addr constant [22 x x86_fp80] [x86_fp80 0xK3FFEFFF9A43A84365000, x86_fp80 0xK3FFEFF7C440D00506800, x86_fp80 0xK3FFEFDFF36A334447800, x86_fp80 0xK3FFEFB3A49E235197800, x86_fp80 0xK3FFEF70E04353A2BD800, x86_fp80 0xK3FFEF1736EC50E34F000, x86_fp80 0xK3FFEEA724A088A908000, x86_fp80 0xK3FFEE21AD0873F284800, x86_fp80 0xK3FFED8807FE68591E800, x86_fp80 0xK3FFECDB5F465B62FE800, x86_fp80 0xK3FFEC1CB20A82DC50000, x86_fp80 0xK3FFEB4CE523213D6A800, x86_fp80 0xK3FFEA6CE91390A67D000, x86_fp80 0xK3FFE97DD7CAECD3D6000, x86_fp80 0xK3FFE880FF707AD868000, x86_fp80 0xK3FFDEEFBA43FDB1D9800, x86_fp80 0xK3FFDCC8169E587BDD800, x86_fp80 0xK3FFDA8E55C21E2DDB800, x86_fp80 0xK3FFD845A941958843800, x86_fp80 0xK3FFCBE26EF1D1D7DA000, x86_fp80 0xK3FFBE50D87BF5C157000, x86_fp80 0xK3FFA98FE8A46A822D800]
@dqng.w87a = internal unnamed_addr constant [21 x x86_fp80] [x86_fp80 0xK3FF88580C59858419000, x86_fp80 0xK3FF999B196700D69D800, x86_fp80 0xK3FF9E007C2FC7228B800, x86_fp80 0xK3FFA89F1A2B81FB93800, x86_fp80 0xK3FFA9749425CDA0B3000, x86_fp80 0xK3FF6BD1020BDAB011000, x86_fp80 0xK3FF8E03B04A545969800, x86_fp80 0xK3FF9BEB690D43B7DB800, x86_fp80 0xK3FF9FCE851F2D219A000, x86_fp80 0xK3FFA92337CD281E16000, x86_fp80 0xK3FF4EFEFA02309CF1000, x86_fp80 0xK3FF7B0EC71FB5EF3F000, x86_fp80 0xK3FF8B35DE576A62B3000, x86_fp80 0xK3FF98584EAF353CE4800, x86_fp80 0xK3FF9ACB3411DAE17A800, x86_fp80 0xK3FF9CFD6C7ADA7EF5000, x86_fp80 0xK3FF9EF1F3BA7D0633800, x86_fp80 0xK3FFA8499C35DD0941800, x86_fp80 0xK3FFA8E78B90720279000, x86_fp80 0xK3FFA9524FB1374482800, x86_fp80 0xK3FFA9897850EF5208000]
@dqng.w87b = internal unnamed_addr constant [23 x x86_fp80] [x86_fp80 0xK3FF38FBB31D87A126000, x86_fp80 0xK3FF5ECDD064AA4659000, x86_fp80 0xK3FF7863F07CAEF9E7000, x86_fp80 0xK3FF7DD74A55FF1CCB000, x86_fp80 0xK3FF89C776CF856AD6000, x86_fp80 0xK3FF8CA01739C6CB7D800, x86_fp80 0xK3FF8F5EE611CDE56F000, x86_fp80 0xK3FF98FC2DA728AFB3000, x86_fp80 0xK3FF9A3551887A7541800, x86_fp80 0xK3FF9B5D22782DC0DE800, x86_fp80 0xK3FF9C762E41D6609D000, x86_fp80 0xK3FF9D80F58C68E9DF800, x86_fp80 0xK3FF9E7B9F397C3B8E000, x86_fp80 0xK3FF9F630D4A3609FB800, x86_fp80 0xK3FFA81A00622A3BF9800, x86_fp80 0xK3FFA875FDECC21200800, x86_fp80 0xK3FFA8C4F134F36C3B000, x86_fp80 0xK3FFA906F51D274724800, x86_fp80 0xK3FFA93C577291852D000, x86_fp80 0xK3FFA965146A213481000, x86_fp80 0xK3FFA980BB791F9CE2000, x86_fp80 0xK3FFA98EBC6B82CD38000, x86_fp80 0xK3FFA9907ECDF4432E000]
@DBL_MIN = global double 0.000000e+00
@DBL_EPSILON = global double 0.000000e+00
define double @dqng(double (double, i8*)* nocapture %0, i8* %1, double %2, double %3, double %4, double %5, double* nocapture %6, i32* nocapture writeonly %7, i32* nocapture %8) {
%10 = alloca [5 x double]
%11 = alloca [5 x double]
%12 = alloca [5 x double]
%13 = alloca [5 x double]
%14 = alloca [21 x double]
%15 = bitcast [5 x double]* %10 to i8*
%16 = bitcast [5 x double]* %11 to i8*
%17 = bitcast [5 x double]* %12 to i8*
%18 = bitcast [5 x double]* %13 to i8*
%19 = bitcast [21 x double]* %14 to i8*
store double 0.000000e+00, double* %6
store i32 0, i32* %7
store i32 6, i32* %8
%20 = fcmp olt double %4, 0.000000e+00
%21 = fcmp olt double %5, 0.000000e+00
%22 = and i1 %20, %21
br i1 %22, label %460, label %23
23: ; preds = %9
%24 = fsub double %3, %2
%25 = fmul double %24, 5.000000e-01
%26 = tail call double @llvm.fabs.f64(double %25)
%27 = fadd double %2, %3
%28 = fmul double %27, 5.000000e-01
%29 = tail call double %0(double %28, i8* %1)
store i32 21, i32* %7
store i32 1, i32* %8
%30 = fpext double %29 to x86_fp80
%31 = fmul x86_fp80 %30, 0xK3FFA9907ECDF4432E000
%32 = fpext double %25 to x86_fp80
%33 = fmul x86_fp80 %30, 0xK3FFB9907ECDEFE39B800
%34 = fptrunc x86_fp80 %33 to double
%35 = fmul x86_fp80 %30, 0xK3FFC9908415BE6887800
%36 = tail call double @llvm.fabs.f64(double %29)
%37 = fpext double %36 to x86_fp80
%38 = fmul x86_fp80 %37, 0xK3FFC9908415BE6887800
%39 = fptrunc x86_fp80 %38 to double
%40 = fptrunc x86_fp80 %35 to double
%41 = getelementptr inbounds [21 x double], [21 x double]* %14, i64 0, i64 0
%42 = fpext double %34 to x86_fp80
%43 = getelementptr inbounds [21 x double], [21 x double]* %14, i64 0, i64 1
%44 = getelementptr inbounds [21 x double], [21 x double]* %14, i64 0, i64 2
%45 = getelementptr inbounds [21 x double], [21 x double]* %14, i64 0, i64 3
%46 = getelementptr inbounds [21 x double], [21 x double]* %14, i64 0, i64 4
%47 = getelementptr inbounds [21 x double], [21 x double]* %14, i64 0, i64 5
%48 = getelementptr inbounds [21 x double], [21 x double]* %14, i64 0, i64 6
%49 = getelementptr inbounds [21 x double], [21 x double]* %14, i64 0, i64 7
%50 = getelementptr inbounds [21 x double], [21 x double]* %14, i64 0, i64 8
%51 = getelementptr inbounds [21 x double], [21 x double]* %14, i64 0, i64 9
%52 = getelementptr inbounds [5 x double], [5 x double]* %10, i64 0, i64 0
%53 = getelementptr inbounds [5 x double], [5 x double]* %11, i64 0, i64 0
%54 = getelementptr inbounds [5 x double], [5 x double]* %12, i64 0, i64 0
%55 = getelementptr inbounds [5 x double], [5 x double]* %13, i64 0, i64 0
%56 = getelementptr inbounds [5 x double], [5 x double]* %10, i64 0, i64 1
%57 = getelementptr inbounds [5 x double], [5 x double]* %11, i64 0, i64 1
%58 = getelementptr inbounds [5 x double], [5 x double]* %12, i64 0, i64 1
%59 = getelementptr inbounds [5 x double], [5 x double]* %13, i64 0, i64 1
%60 = getelementptr inbounds [5 x double], [5 x double]* %10, i64 0, i64 2
%61 = getelementptr inbounds [5 x double], [5 x double]* %11, i64 0, i64 2
%62 = getelementptr inbounds [5 x double], [5 x double]* %12, i64 0, i64 2
%63 = getelementptr inbounds [5 x double], [5 x double]* %13, i64 0, i64 2
%64 = getelementptr inbounds [5 x double], [5 x double]* %10, i64 0, i64 3
%65 = getelementptr inbounds [5 x double], [5 x double]* %11, i64 0, i64 3
%66 = getelementptr inbounds [5 x double], [5 x double]* %12, i64 0, i64 3
%67 = getelementptr inbounds [5 x double], [5 x double]* %13, i64 0, i64 3
%68 = getelementptr inbounds [5 x double], [5 x double]* %10, i64 0, i64 4
%69 = getelementptr inbounds [5 x double], [5 x double]* %11, i64 0, i64 4
%70 = getelementptr inbounds [5 x double], [5 x double]* %12, i64 0, i64 4
%71 = getelementptr inbounds [5 x double], [5 x double]* %13, i64 0, i64 4
%72 = bitcast double* %60 to <2 x double>*
%73 = bitcast double* %64 to <2 x double>*
%74 = bitcast double* %66 to <2 x double>*
br label %75
75: ; preds = %454, %23
%76 = phi i32 [ 1, %23 ], [ %457, %454 ]
%77 = phi i32 [ undef, %23 ], [ %415, %454 ]
%78 = phi double [ undef, %23 ], [ %414, %454 ]
%79 = phi double [ undef, %23 ], [ %413, %454 ]
%80 = phi double [ undef, %23 ], [ %412, %454 ]
%81 = phi double [ undef, %23 ], [ %411, %454 ]
%82 = phi double [ 0.000000e+00, %23 ], [ %410, %454 ]
switch i32 %76, label %409 [
i32 1, label %83
i32 2, label %280
i32 3, label %360
]
83: ; preds = %75, %83
%84 = phi i64 [ %116, %83 ], [ 0, %75 ]
%85 = phi double [ %118, %83 ], [ %40, %75 ]
%86 = phi double [ %117, %83 ], [ %39, %75 ]
%87 = phi double [ %102, %83 ], [ 0.000000e+00, %75 ]
%88 = getelementptr inbounds [5 x x86_fp80], [5 x x86_fp80]* @dqng.x1, i64 0, i64 %84
%89 = load x86_fp80, x86_fp80* %88
%90 = fmul x86_fp80 %89, %32
%91 = fptrunc x86_fp80 %90 to double
%92 = fadd double %28, %91
%93 = tail call double %0(double %92, i8* %1)
%94 = fsub double %28, %91
%95 = tail call double %0(double %94, i8* %1)
%96 = fadd double %93, %95
%97 = getelementptr inbounds [5 x x86_fp80], [5 x x86_fp80]* @dqng.w10, i64 0, i64 %84
%98 = load x86_fp80, x86_fp80* %97
%99 = fpext double %96 to x86_fp80
%100 = fpext double %87 to x86_fp80
%101 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %98, x86_fp80 %99, x86_fp80 %100)
%102 = fptrunc x86_fp80 %101 to double
%103 = getelementptr inbounds [5 x x86_fp80], [5 x x86_fp80]* @dqng.w21a, i64 0, i64 %84
%104 = load x86_fp80, x86_fp80* %103
%105 = fpext double %85 to x86_fp80
%106 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %104, x86_fp80 %99, x86_fp80 %105)
%107 = tail call double @llvm.fabs.f64(double %93)
%108 = tail call double @llvm.fabs.f64(double %95)
%109 = fadd double %107, %108
%110 = fpext double %109 to x86_fp80
%111 = fpext double %86 to x86_fp80
%112 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %104, x86_fp80 %110, x86_fp80 %111)
%113 = getelementptr inbounds [21 x double], [21 x double]* %14, i64 0, i64 %84
store double %96, double* %113
%114 = getelementptr inbounds [5 x double], [5 x double]* %10, i64 0, i64 %84
store double %93, double* %114
%115 = getelementptr inbounds [5 x double], [5 x double]* %11, i64 0, i64 %84
store double %95, double* %115
%116 = add nuw nsw i64 %84, 1
%117 = fptrunc x86_fp80 %112 to double
%118 = fptrunc x86_fp80 %106 to double
%119 = icmp eq i64 %116, 5
br i1 %119, label %120, label %83
120: ; preds = %83, %120
%121 = phi i64 [ %125, %120 ], [ 4, %83 ]
%122 = phi i64 [ %151, %120 ], [ 0, %83 ]
%123 = phi double [ %147, %120 ], [ %117, %83 ]
%124 = phi double [ %140, %120 ], [ %118, %83 ]
%125 = add nuw nsw i64 %121, 1
%126 = getelementptr inbounds [5 x x86_fp80], [5 x x86_fp80]* @dqng.x2, i64 0, i64 %122
%127 = load x86_fp80, x86_fp80* %126
%128 = fmul x86_fp80 %127, %32
%129 = fptrunc x86_fp80 %128 to double
%130 = fadd double %28, %129
%131 = tail call double %0(double %130, i8* %1)
%132 = fsub double %28, %129
%133 = tail call double %0(double %132, i8* %1)
%134 = fadd double %131, %133
%135 = getelementptr inbounds [6 x x86_fp80], [6 x x86_fp80]* @dqng.w21b, i64 0, i64 %122
%136 = load x86_fp80, x86_fp80* %135
%137 = fpext double %134 to x86_fp80
%138 = fpext double %124 to x86_fp80
%139 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %136, x86_fp80 %137, x86_fp80 %138)
%140 = fptrunc x86_fp80 %139 to double
%141 = tail call double @llvm.fabs.f64(double %131)
%142 = tail call double @llvm.fabs.f64(double %133)
%143 = fadd double %141, %142
%144 = fpext double %143 to x86_fp80
%145 = fpext double %123 to x86_fp80
%146 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %136, x86_fp80 %144, x86_fp80 %145)
%147 = fptrunc x86_fp80 %146 to double
%148 = getelementptr inbounds [21 x double], [21 x double]* %14, i64 0, i64 %125
store double %134, double* %148
%149 = getelementptr inbounds [5 x double], [5 x double]* %12, i64 0, i64 %122
store double %131, double* %149
%150 = getelementptr inbounds [5 x double], [5 x double]* %13, i64 0, i64 %122
store double %133, double* %150
%151 = add nuw nsw i64 %122, 1
%152 = icmp eq i64 %151, 5
br i1 %152, label %153, label %120
153: ; preds = %120
%154 = fmul double %25, %140
%155 = fmul double %140, 5.000000e-01
%156 = fsub double %29, %155
%157 = tail call double @llvm.fabs.f64(double %156)
%158 = fpext double %157 to x86_fp80
%159 = fmul x86_fp80 %158, 0xK3FFC9908415BE6887800
%160 = fptrunc x86_fp80 %159 to double
%161 = load double, double* %52
%162 = fsub double %161, %155
%163 = tail call double @llvm.fabs.f64(double %162)
%164 = load double, double* %53
%165 = fsub double %164, %155
%166 = tail call double @llvm.fabs.f64(double %165)
%167 = fadd double %163, %166
%168 = fpext double %167 to x86_fp80
%169 = load double, double* %54
%170 = fsub double %169, %155
%171 = tail call double @llvm.fabs.f64(double %170)
%172 = load double, double* %55
%173 = fsub double %172, %155
%174 = tail call double @llvm.fabs.f64(double %173)
%175 = fadd double %171, %174
%176 = fpext double %175 to x86_fp80
%177 = fmul x86_fp80 %176, 0xK3FF8BF9ADEDE5441F800
%178 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %168, x86_fp80 0xK3FFA855BB5254A021000, x86_fp80 %177)
%179 = fpext double %160 to x86_fp80
%180 = fadd x86_fp80 %178, %179
%181 = fptrunc x86_fp80 %180 to double
%182 = load double, double* %56
%183 = fsub double %182, %155
%184 = tail call double @llvm.fabs.f64(double %183)
%185 = load double, double* %57
%186 = fsub double %185, %155
%187 = tail call double @llvm.fabs.f64(double %186)
%188 = fadd double %184, %187
%189 = fpext double %188 to x86_fp80
%190 = load double, double* %58
%191 = fsub double %190, %155
%192 = tail call double @llvm.fabs.f64(double %191)
%193 = load double, double* %59
%194 = fsub double %193, %155
%195 = tail call double @llvm.fabs.f64(double %194)
%196 = fadd double %192, %195
%197 = fpext double %196 to x86_fp80
%198 = fmul x86_fp80 %197, 0xK3FFAE047B810CCCD1000
%199 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %189, x86_fp80 0xK3FFB99AE66A9B9172800, x86_fp80 %198)
%200 = fpext double %181 to x86_fp80
%201 = fadd x86_fp80 %199, %200
%202 = fptrunc x86_fp80 %201 to double
%203 = load <2 x double>, <2 x double>* %72
%204 = load double, double* %61
%205 = insertelement <2 x double> %203, double %204, i64 1
%206 = insertelement <2 x double> poison, double %155, i64 0
%207 = shufflevector <2 x double> %206, <2 x double> poison, <2 x i32> zeroinitializer
%208 = fsub <2 x double> %205, %207
%209 = call <2 x double> @llvm.fabs.v2f64(<2 x double> %208)
%210 = shufflevector <2 x double> %209, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%211 = fadd <2 x double> %209, %210
%212 = extractelement <2 x double> %211, i64 0
%213 = fpext double %212 to x86_fp80
%214 = load double, double* %62
%215 = fsub double %214, %155
%216 = tail call double @llvm.fabs.f64(double %215)
%217 = load double, double* %63
%218 = fsub double %217, %155
%219 = tail call double @llvm.fabs.f64(double %218)
%220 = fadd double %216, %219
%221 = fpext double %220 to x86_fp80
%222 = fmul x86_fp80 %221, 0xK3FFBBEB88EEEE59C4800
%223 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %213, x86_fp80 0xK3FFBE0065FED440C7800, x86_fp80 %222)
%224 = fpext double %202 to x86_fp80
%225 = fadd x86_fp80 %223, %224
%226 = fptrunc x86_fp80 %225 to double
%227 = load <2 x double>, <2 x double>* %73
%228 = load double, double* %65
%229 = insertelement <2 x double> %227, double %228, i64 1
%230 = fsub <2 x double> %229, %207
%231 = call <2 x double> @llvm.fabs.v2f64(<2 x double> %230)
%232 = shufflevector <2 x double> %231, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%233 = fadd <2 x double> %231, %232
%234 = extractelement <2 x double> %233, i64 0
%235 = fpext double %234 to x86_fp80
%236 = load <2 x double>, <2 x double>* %74
%237 = load double, double* %67
%238 = insertelement <2 x double> %236, double %237, i64 1
%239 = fsub <2 x double> %238, %207
%240 = call <2 x double> @llvm.fabs.v2f64(<2 x double> %239)
%241 = shufflevector <2 x double> %240, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%242 = fadd <2 x double> %240, %241
%243 = extractelement <2 x double> %242, i64 0
%244 = fpext double %243 to x86_fp80
%245 = fmul x86_fp80 %244, 0xK3FFBFCE95C7AE96EF000
%246 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %235, x86_fp80 0xK3FFC89F1368B4A46A000, x86_fp80 %245)
%247 = fpext double %226 to x86_fp80
%248 = fadd x86_fp80 %246, %247
%249 = fptrunc x86_fp80 %248 to double
%250 = load double, double* %68
%251 = load double, double* %69
%252 = insertelement <2 x double> poison, double %250, i64 0
%253 = insertelement <2 x double> %252, double %251, i64 1
%254 = fsub <2 x double> %253, %207
%255 = call <2 x double> @llvm.fabs.v2f64(<2 x double> %254)
%256 = shufflevector <2 x double> %255, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%257 = fadd <2 x double> %255, %256
%258 = extractelement <2 x double> %257, i64 0
%259 = fpext double %258 to x86_fp80
%260 = load double, double* %70
%261 = load double, double* %71
%262 = insertelement <2 x double> poison, double %260, i64 0
%263 = insertelement <2 x double> %262, double %261, i64 1
%264 = fsub <2 x double> %263, %207
%265 = call <2 x double> @llvm.fabs.v2f64(<2 x double> %264)
%266 = shufflevector <2 x double> %265, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%267 = fadd <2 x double> %265, %266
%268 = extractelement <2 x double> %267, i64 0
%269 = fpext double %268 to x86_fp80
%270 = fmul x86_fp80 %269, 0xK3FFC9233DB0B60702800
%271 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %259, x86_fp80 0xK3FFC9748EB7F90F5A800, x86_fp80 %270)
%272 = fpext double %249 to x86_fp80
%273 = fadd x86_fp80 %271, %272
%274 = fptrunc x86_fp80 %273 to double
%275 = fmul double %26, %147
%276 = fsub double %140, %102
%277 = fmul double %25, %276
%278 = tail call double @llvm.fabs.f64(double %277)
store double %278, double* %6
%279 = fmul double %26, %274
br label %409
280: ; preds = %75
store i32 43, i32* %7
%281 = load double, double* %41
%282 = fpext double %281 to x86_fp80
%283 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %282, x86_fp80 0xK3FF98580BA99C874A800, x86_fp80 %42)
%284 = fptrunc x86_fp80 %283 to double
%285 = load double, double* %43
%286 = fpext double %285 to x86_fp80
%287 = fpext double %284 to x86_fp80
%288 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %286, x86_fp80 0xK3FFA99B1965CA7E92800, x86_fp80 %287)
%289 = fptrunc x86_fp80 %288 to double
%290 = load double, double* %44
%291 = fpext double %290 to x86_fp80
%292 = fpext double %289 to x86_fp80
%293 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %291, x86_fp80 0xK3FFAE007C2F991F0F800, x86_fp80 %292)
%294 = fptrunc x86_fp80 %293 to double
%295 = load double, double* %45
%296 = fpext double %295 to x86_fp80
%297 = fpext double %294 to x86_fp80
%298 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %296, x86_fp80 0xK3FFB89F1A2B7A65B6000, x86_fp80 %297)
%299 = fptrunc x86_fp80 %298 to double
%300 = load double, double* %46
%301 = fpext double %300 to x86_fp80
%302 = fpext double %299 to x86_fp80
%303 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %301, x86_fp80 0xK3FFB9749425C8F9CC800, x86_fp80 %302)
%304 = fptrunc x86_fp80 %303 to double
%305 = load double, double* %47
%306 = fpext double %305 to x86_fp80
%307 = fpext double %304 to x86_fp80
%308 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %306, x86_fp80 0xK3FF7BD0627CF98E89000, x86_fp80 %307)
%309 = fptrunc x86_fp80 %308 to double
%310 = load double, double* %48
%311 = fpext double %310 to x86_fp80
%312 = fpext double %309 to x86_fp80
%313 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %311, x86_fp80 0xK3FF9E03B03DDAFAAF000, x86_fp80 %312)
%314 = fptrunc x86_fp80 %313 to double
%315 = load double, double* %49
%316 = fpext double %315 to x86_fp80
%317 = fpext double %314 to x86_fp80
%318 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %316, x86_fp80 0xK3FFABEB690CDAE1D7000, x86_fp80 %317)
%319 = fptrunc x86_fp80 %318 to double
%320 = load double, double* %50
%321 = fpext double %320 to x86_fp80
%322 = fpext double %319 to x86_fp80
%323 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %321, x86_fp80 0xK3FFAFCE851F14F59D000, x86_fp80 %322)
%324 = fptrunc x86_fp80 %323 to double
%325 = load double, double* %51
%326 = fpext double %325 to x86_fp80
%327 = fpext double %324 to x86_fp80
%328 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %326, x86_fp80 0xK3FFB92337CD228A6C800, x86_fp80 %327)
%329 = fptrunc x86_fp80 %328 to double
%330 = sext i32 %77 to i64
br label %331
331: ; preds = %280, %331
%332 = phi i64 [ %330, %280 ], [ %335, %331 ]
%333 = phi i64 [ 0, %280 ], [ %352, %331 ]
%334 = phi double [ %329, %280 ], [ %350, %331 ]
%335 = add nsw i64 %332, 1
%336 = getelementptr inbounds [11 x x86_fp80], [11 x x86_fp80]* @dqng.x3, i64 0, i64 %333
%337 = load x86_fp80, x86_fp80* %336
%338 = fmul x86_fp80 %337, %32
%339 = fptrunc x86_fp80 %338 to double
%340 = fadd double %28, %339
%341 = tail call double %0(double %340, i8* %1)
%342 = fsub double %28, %339
%343 = tail call double %0(double %342, i8* %1)
%344 = fadd double %341, %343
%345 = fpext double %344 to x86_fp80
%346 = getelementptr inbounds [12 x x86_fp80], [12 x x86_fp80]* @dqng.w43b, i64 0, i64 %333
%347 = load x86_fp80, x86_fp80* %346
%348 = fpext double %334 to x86_fp80
%349 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %345, x86_fp80 %347, x86_fp80 %348)
%350 = fptrunc x86_fp80 %349 to double
%351 = getelementptr inbounds [21 x double], [21 x double]* %14, i64 0, i64 %335
store double %344, double* %351
%352 = add nuw nsw i64 %333, 1
%353 = icmp eq i64 %352, 11
br i1 %353, label %354, label %331
354: ; preds = %331
%355 = trunc i64 %335 to i32
%356 = fmul double %25, %350
%357 = fsub double %350, %81
%358 = fmul double %25, %357
%359 = tail call double @llvm.fabs.f64(double %358)
store double %359, double* %6
br label %409
360: ; preds = %75
store i32 87, i32* %7
br label %361
361: ; preds = %375, %360
%362 = phi i64 [ 0, %360 ], [ %383, %375 ]
%363 = phi x86_fp80 [ %31, %360 ], [ %382, %375 ]
%364 = fptrunc x86_fp80 %363 to double
%365 = getelementptr inbounds [21 x double], [21 x double]* %14, i64 0, i64 %362
%366 = load double, double* %365
%367 = fpext double %366 to x86_fp80
%368 = getelementptr inbounds [21 x x86_fp80], [21 x x86_fp80]* @dqng.w87a, i64 0, i64 %362
%369 = load x86_fp80, x86_fp80* %368
%370 = fpext double %364 to x86_fp80
%371 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %367, x86_fp80 %369, x86_fp80 %370)
%372 = or i64 %362, 1
%373 = fptrunc x86_fp80 %371 to double
%374 = icmp eq i64 %372, 21
br i1 %374, label %384, label %375
375: ; preds = %361
%376 = getelementptr inbounds [21 x double], [21 x double]* %14, i64 0, i64 %372
%377 = load double, double* %376
%378 = fpext double %377 to x86_fp80
%379 = getelementptr inbounds [21 x x86_fp80], [21 x x86_fp80]* @dqng.w87a, i64 0, i64 %372
%380 = load x86_fp80, x86_fp80* %379
%381 = fpext double %373 to x86_fp80
%382 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %378, x86_fp80 %380, x86_fp80 %381)
%383 = add nuw nsw i64 %362, 2
br label %361
384: ; preds = %361, %384
%385 = phi i64 [ %402, %384 ], [ 0, %361 ]
%386 = phi double [ %401, %384 ], [ %373, %361 ]
%387 = getelementptr inbounds [22 x x86_fp80], [22 x x86_fp80]* @dqng.x4, i64 0, i64 %385
%388 = load x86_fp80, x86_fp80* %387
%389 = fmul x86_fp80 %388, %32
%390 = fptrunc x86_fp80 %389 to double
%391 = getelementptr inbounds [23 x x86_fp80], [23 x x86_fp80]* @dqng.w87b, i64 0, i64 %385
%392 = load x86_fp80, x86_fp80* %391
%393 = fadd double %28, %390
%394 = tail call double %0(double %393, i8* %1)
%395 = fsub double %28, %390
%396 = tail call double %0(double %395, i8* %1)
%397 = fadd double %394, %396
%398 = fpext double %397 to x86_fp80
%399 = fpext double %386 to x86_fp80
%400 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %392, x86_fp80 %398, x86_fp80 %399)
%401 = fptrunc x86_fp80 %400 to double
%402 = add nuw nsw i64 %385, 1
%403 = icmp eq i64 %402, 22
br i1 %403, label %404, label %384
404: ; preds = %384
%405 = fmul double %25, %401
%406 = fsub double %401, %80
%407 = fmul double %25, %406
%408 = tail call double @llvm.fabs.f64(double %407)
store double %408, double* %6
br label %409
409: ; preds = %404, %75, %354, %153
%410 = phi double [ %82, %75 ], [ %405, %404 ], [ %356, %354 ], [ %154, %153 ]
%411 = phi double [ %81, %75 ], [ %81, %404 ], [ %81, %354 ], [ %140, %153 ]
%412 = phi double [ %80, %75 ], [ %80, %404 ], [ %350, %354 ], [ %80, %153 ]
%413 = phi double [ %79, %75 ], [ %79, %404 ], [ %79, %354 ], [ %275, %153 ]
%414 = phi double [ %78, %75 ], [ %78, %404 ], [ %78, %354 ], [ %279, %153 ]
%415 = phi i32 [ %77, %75 ], [ %77, %404 ], [ %355, %354 ], [ 9, %153 ]
%416 = fcmp une double %414, 0.000000e+00
br i1 %416, label %417, label %433
417: ; preds = %409
%418 = load double, double* %6
%419 = fcmp une double %418, 0.000000e+00
br i1 %419, label %420, label %433
420: ; preds = %417
%421 = fmul double %418, 2.000000e+02
%422 = fdiv double %421, %414
%423 = tail call double @pow(double %422, double 1.500000e+00)
%424 = fcmp ogt double %423, 1.000000e+00
br i1 %424, label %430, label %425
425: ; preds = %420
%426 = load double, double* %6
%427 = fmul double %426, 2.000000e+02
%428 = fdiv double %427, %414
%429 = tail call double @pow(double %428, double 1.500000e+00)
br label %430
430: ; preds = %420, %425
%431 = phi double [ %429, %425 ], [ 1.000000e+00, %420 ]
%432 = fmul double %414, %431
store double %432, double* %6
br label %433
433: ; preds = %430, %417, %409
%434 = load double, double* @DBL_MIN
%435 = load double, double* @DBL_EPSILON
%436 = fmul double %435, 5.000000e+01
%437 = fdiv double %434, %436
%438 = fcmp ogt double %413, %437
br i1 %438, label %441, label %439
439: ; preds = %433
%440 = load double, double* %6
br label %446
441: ; preds = %433
%442 = fmul double %413, %436
%443 = load double, double* %6
%444 = fcmp ogt double %442, %443
%445 = select i1 %444, double %442, double %443
store double %445, double* %6
br label %446
446: ; preds = %439, %441
%447 = phi double [ %440, %439 ], [ %445, %441 ]
%448 = tail call double @llvm.fabs.f64(double %410)
%449 = fmul double %448, %5
%450 = fcmp olt double %449, %4
%451 = select i1 %450, double %4, double %449
%452 = fcmp ugt double %447, %451
br i1 %452, label %454, label %453
453: ; preds = %446
store i32 0, i32* %8
br label %460
454: ; preds = %446
%455 = load i32, i32* %8
%456 = icmp eq i32 %455, 0
%457 = add nuw nsw i32 %76, 1
%458 = icmp eq i32 %457, 4
%459 = select i1 %456, i1 true, i1 %458
br i1 %459, label %460, label %75
460: ; preds = %454, %453, %9
%461 = phi double [ 0.000000e+00, %9 ], [ %410, %453 ], [ %410, %454 ]
ret double %461
}