#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 dqc25c(double (*)(double, void *), void *, double, double, double,
              double *, int *, int *);
int /*<<< orphan*/ dqsort(int, int, int *, double *, double *, int *, int *);
double fabs(double);
double dqawce(double f(double, void *), void *cbData, double a, double b,
              double c, double epsabs, double epsrel, double *abserr,
              int *neval, int *ier) {
  double aa, area, area1, area2, area12, a1, a2, bb, b1, b2;
  double errbnd, errmax, error1, error2, erro12, errsum, result;
  double alist[500], blist[500], rlist[500], elist[500];
  int iord[500], iroff1, iroff2, k, krule, last, maxerr, nrmax, nev;
  int limit;
  limit = 500 - 1;
  *ier = 6;
  *neval = 0;
  last = 0;
  alist[0] = a;
  blist[0] = b;
  rlist[0] = 0.0;
  elist[0] = 0.0;
  iord[0] = 0;
  result = 0.0;
  *abserr = 0.0;
  if ((c == a) || (c == b) || ((epsabs < 0.0) && (epsrel < 0.0)))
    goto _999;
  aa = a;
  bb = b;
  if (a <= b)
    goto _10;
  aa = b;
  bb = a;
_10:
  *ier = 0;
  krule = 1;
  result = dqc25c(f, cbData, aa, bb, c, abserr, &krule, neval);
  rlist[0] = result;
  elist[0] = *abserr;
  iord[0] = 0;
  alist[0] = a;
  blist[0] = b;
  errbnd = (((epsabs) > (epsrel * fabs(result))) ? (epsabs)
                                                 : (epsrel * fabs(result)));
  if (limit == 0)
    *ier = 1;
  if ((*abserr < (((1.0e-2 * fabs(result)) < (errbnd)) ? (1.0e-2 * fabs(result))
                                                       : (errbnd))) ||
      (*ier == 1))
    goto _70;
  alist[0] = aa;
  blist[0] = bb;
  rlist[0] = result;
  errmax = *abserr;
  maxerr = 0;
  area = result;
  errsum = *abserr;
  nrmax = 0;
  iroff1 = 0;
  iroff2 = 0;
  for (last = 1; last < limit; last++) {
    a1 = alist[maxerr];
    b1 = 0.5 * (alist[maxerr] + blist[maxerr]);
    b2 = blist[maxerr];
    if ((c <= b1) && (c > a1))
      b1 = 0.5 * (c + b2);
    if ((c > b1) && (c < b2))
      b1 = 0.5 * (a1 + c);
    a2 = b1;
    krule = 2;
    area1 = dqc25c(f, cbData, a1, b1, c, &error1, &krule, &nev);
    *neval = *neval + nev;
    area2 = dqc25c(f, cbData, a2, b2, c, &error2, &krule, &nev);
    *neval = *neval + nev;
    area12 = area1 + area2;
    erro12 = error1 + error2;
    errsum += (erro12 - errmax);
    area += (area12 - rlist[maxerr]);
    if (fabs(rlist[maxerr] - area12) < (1.0e-5 * fabs(area12)) &&
        (erro12 >= 0.99 * errmax) && (krule == 0))
      iroff1++;
    if ((last > 10) && (erro12 > errmax) && (krule == 0))
      iroff2++;
    rlist[maxerr] = area1;
    rlist[last] = area2;
    errbnd =
        (((epsabs) > (epsrel * fabs(area))) ? (epsabs) : (epsrel * fabs(area)));
    if (errsum <= errbnd)
      goto _15;
    if ((iroff1 >= 6) && (iroff2 > 20))
      *ier = 2;
    if (last == limit)
      *ier = 1;
    if ((((fabs(a1)) > (fabs(b2))) ? (fabs(a1)) : (fabs(b2))) <=
        (1.0 + 1.0e3 * DBL_EPSILON) * (fabs(a2) + 1.0e3 * DBL_MIN))
      *ier = 3;
  _15:
    if (error2 <= error1) {
      alist[last] = a2;
      blist[maxerr] = b1;
      blist[last] = b2;
      elist[maxerr] = error1;
      elist[last] = error2;
    } else {
      alist[maxerr] = a2;
      alist[last] = a1;
      blist[last] = b1;
      rlist[maxerr] = area2;
      rlist[last] = area1;
      elist[maxerr] = error2;
      elist[last] = error1;
    }
    dqsort(limit, last, &maxerr, &errmax, elist, iord, &nrmax);
    if ((*ier != 0) || (errsum <= errbnd))
      goto _50;
  }
_50:
  result = 0.0;
  for (k = 0; k <= last; k++) {
    result += rlist[k];
  }
  *abserr = errsum;
_70:
  if (aa == b)
    result = -result;
_999:
  return result;
}


x86 assembly (clang, -O0):
<dqawce>:
push   %rbp
mov    %rsp,%rbp
sub    $0x4790,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movsd  %xmm0,-0x18(%rbp)
movsd  %xmm1,-0x20(%rbp)
movsd  %xmm2,-0x28(%rbp)
movsd  %xmm3,-0x30(%rbp)
movsd  %xmm4,-0x38(%rbp)
mov    %rdx,-0x40(%rbp)
mov    %rcx,-0x48(%rbp)
mov    %r8,-0x50(%rbp)
movl   $0x1f3,-0x4754(%rbp)
mov    -0x50(%rbp),%rax
movl   $0x6,(%rax)
mov    -0x48(%rbp),%rax
movl   $0x0,(%rax)
movl   $0x0,-0x4744(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x1080(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x2020(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x2fc0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x3f60(%rbp)
ff
movl   $0x0,-0x4730(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x40(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jne    11eb <dqawce+0xcb>
jp     11eb <dqawce+0xcb>
jmp    1222 <dqawce+0x102>
movsd  -0x28(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    1206 <dqawce+0xe6>
jp     1206 <dqawce+0xe6>
jmp    1222 <dqawce+0x102>
xorps  %xmm0,%xmm0
ucomisd -0x30(%rbp),%xmm0
jbe    1227 <dqawce+0x107>
xorps  %xmm0,%xmm0
ucomisd -0x38(%rbp),%xmm0
jbe    1227 <dqawce+0x107>
jmp    1bcc <dqawce+0xaac>
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jb     1257 <dqawce+0x137>
jmp    126e <dqawce+0x14e>
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x50(%rbp),%rax
movl   $0x0,(%rax)
movl   $0x1,-0x4740(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
movsd  -0x58(%rbp),%xmm0
movsd  -0x90(%rbp),%xmm1
ff
movsd  -0x28(%rbp),%xmm2
mov    -0x40(%rbp),%rdx
mov    -0x48(%rbp),%r8
lea    -0x4740(%rbp),%rcx
call   1030 <dqc25c@plt>
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x2fc0(%rbp)
ff
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x3f60(%rbp)
ff
movl   $0x0,-0x4730(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x1080(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x2020(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x38(%rbp),%xmm1
movsd  -0xd8(%rbp),%xmm2
ff
movaps 0xceb(%rip),%xmm3
pand   %xmm3,%xmm2
mulsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
jbe    1339 <dqawce+0x219>
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x4760(%rbp)
ff
jmp    135d <dqawce+0x23d>
movsd  -0x38(%rbp),%xmm0
movsd  -0xd8(%rbp),%xmm1
ff
movaps 0xcb3(%rip),%xmm2
pand   %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x4760(%rbp)
ff
movsd  -0x4760(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
cmpl   $0x0,-0x4754(%rbp)
jne    1384 <dqawce+0x264>
mov    -0x50(%rbp),%rax
movl   $0x1,(%rax)
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x4768(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
movaps 0xc5d(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  0xc61(%rip),%xmm1
mulsd  %xmm0,%xmm1
movsd  -0xa8(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    13f1 <dqawce+0x2d1>
movsd  -0xd8(%rbp),%xmm1
ff
movaps 0xc2c(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0xc30(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x4770(%rbp)
ff
jmp    1401 <dqawce+0x2e1>
movsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x4770(%rbp)
movsd  -0x4768(%rbp),%xmm1
ff
movsd  -0x4770(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
ja     1428 <dqawce+0x308>
mov    -0x50(%rbp),%rax
cmpl   $0x1,(%rax)
jne    142d <dqawce+0x30d>
jmp    1b8a <dqawce+0xa6a>
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x1080(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x2020(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x2fc0(%rbp)
ff
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movl   $0x0,-0x4748(%rbp)
movsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x60(%rbp)
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movl   $0x0,-0x474c(%rbp)
movl   $0x0,-0x4734(%rbp)
movl   $0x0,-0x4738(%rbp)
movl   $0x1,-0x4744(%rbp)
mov    -0x4744(%rbp),%eax
cmp    -0x4754(%rbp),%eax
jge    1b1a <dqawce+0x9fa>
movslq -0x4748(%rbp),%rax
movsd  -0x1080(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x80(%rbp)
movslq -0x4748(%rbp),%rax
movsd  -0x1080(%rbp,%rax,8),%xmm1
ff ff
movslq -0x4748(%rbp),%rax
addsd  -0x2020(%rbp,%rax,8),%xmm1
ff ff
movsd  0xb10(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movslq -0x4748(%rbp),%rax
movsd  -0x2020(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x28(%rbp),%xmm1
movsd  -0x98(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     1574 <dqawce+0x454>
movsd  -0x28(%rbp),%xmm0
ucomisd -0x80(%rbp),%xmm0
jbe    1574 <dqawce+0x454>
movsd  -0x28(%rbp),%xmm1
addsd  -0xa0(%rbp),%xmm1
ff
movsd  0xab0(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
ucomisd -0x98(%rbp),%xmm0
ff
jbe    15bc <dqawce+0x49c>
movsd  -0x28(%rbp),%xmm1
movsd  -0xa0(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    15bc <dqawce+0x49c>
movsd  -0x80(%rbp),%xmm1
addsd  -0x28(%rbp),%xmm1
movsd  0xa68(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
movl   $0x2,-0x4740(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
movsd  -0x80(%rbp),%xmm0
movsd  -0x98(%rbp),%xmm1
ff
movsd  -0x28(%rbp),%xmm2
lea    -0xb8(%rbp),%rdx
lea    -0x4740(%rbp),%rcx
lea    -0x4750(%rbp),%r8
call   1030 <dqc25c@plt>
movsd  %xmm0,-0x68(%rbp)
mov    -0x48(%rbp),%rax
mov    (%rax),%ecx
add    -0x4750(%rbp),%ecx
mov    -0x48(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0xa0(%rbp),%xmm1
ff
movsd  -0x28(%rbp),%xmm2
lea    -0xc0(%rbp),%rdx
lea    -0x4740(%rbp),%rcx
lea    -0x4750(%rbp),%r8
call   1030 <dqc25c@plt>
movsd  %xmm0,-0x70(%rbp)
mov    -0x48(%rbp),%rax
mov    (%rax),%ecx
add    -0x4750(%rbp),%ecx
mov    -0x48(%rbp),%rax
mov    %ecx,(%rax)
movsd  -0x68(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
subsd  -0xb0(%rbp),%xmm0
ff
addsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movslq -0x4748(%rbp),%rax
subsd  -0x2fc0(%rbp,%rax,8),%xmm0
ff ff
addsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movslq -0x4748(%rbp),%rax
movsd  -0x2fc0(%rbp,%rax,8),%xmm1
ff ff
subsd  -0x78(%rbp),%xmm1
movaps 0x90f(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  -0x78(%rbp),%xmm2
movaps 0x8ff(%rip),%xmm0
pand   %xmm0,%xmm2
movsd  0x913(%rip),%xmm0
mulsd  %xmm2,%xmm0
ucomisd %xmm1,%xmm0
jbe    1759 <dqawce+0x639>
movsd  -0xc8(%rbp),%xmm0
ff
movsd  0x8fd(%rip),%xmm1
mulsd  -0xb0(%rbp),%xmm1
ff
ucomisd %xmm1,%xmm0
jb     1759 <dqawce+0x639>
cmpl   $0x0,-0x4740(%rbp)
jne    1759 <dqawce+0x639>
mov    -0x4734(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4734(%rbp)
cmpl   $0xa,-0x4744(%rbp)
jle    1798 <dqawce+0x678>
movsd  -0xc8(%rbp),%xmm0
ff
ucomisd -0xb0(%rbp),%xmm0
ff
jbe    1798 <dqawce+0x678>
cmpl   $0x0,-0x4740(%rbp)
jne    1798 <dqawce+0x678>
mov    -0x4738(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4738(%rbp)
movsd  -0x68(%rbp),%xmm0
movslq -0x4748(%rbp),%rax
movsd  %xmm0,-0x2fc0(%rbp,%rax,8)
ff ff
movsd  -0x70(%rbp),%xmm0
movslq -0x4744(%rbp),%rax
movsd  %xmm0,-0x2fc0(%rbp,%rax,8)
ff ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x38(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
movaps 0x828(%rip),%xmm3
pand   %xmm3,%xmm2
mulsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
jbe    17fc <dqawce+0x6dc>
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x4778(%rbp)
ff
jmp    181d <dqawce+0x6fd>
movsd  -0x38(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm1
movaps 0x7f3(%rip),%xmm2
pand   %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x4778(%rbp)
ff
movsd  -0x4778(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm1
ff
movsd  -0xa8(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     184c <dqawce+0x72c>
jmp    1967 <dqawce+0x847>
cmpl   $0x6,-0x4734(%rbp)
jl     1870 <dqawce+0x750>
cmpl   $0x14,-0x4738(%rbp)
jle    1870 <dqawce+0x750>
mov    -0x50(%rbp),%rax
movl   $0x2,(%rax)
mov    -0x4744(%rbp),%eax
cmp    -0x4754(%rbp),%eax
jne    188c <dqawce+0x76c>
mov    -0x50(%rbp),%rax
movl   $0x1,(%rax)
movsd  -0x80(%rbp),%xmm0
movaps 0x768(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  -0xa0(%rbp),%xmm1
ff
movaps 0x755(%rip),%xmm2
pand   %xmm2,%xmm1
ucomisd %xmm1,%xmm0
jbe    18d6 <dqawce+0x7b6>
movsd  -0x80(%rbp),%xmm0
movaps 0x73b(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x4780(%rbp)
ff
jmp    18f1 <dqawce+0x7d1>
movsd  -0xa0(%rbp),%xmm0
ff
movaps 0x71b(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x4780(%rbp)
ff
movsd  -0x4780(%rbp),%xmm1
ff
mov    0x26e8(%rip),%rax
movsd  (%rax),%xmm0
movsd  0x724(%rip),%xmm2
mulsd  %xmm2,%xmm0
movsd  0x720(%rip),%xmm2
addsd  %xmm2,%xmm0
movsd  -0x88(%rbp),%xmm3
ff
movaps 0x6d5(%rip),%xmm2
pand   %xmm2,%xmm3
mov    0x26a2(%rip),%rax
movsd  (%rax),%xmm2
movsd  0x6ee(%rip),%xmm4
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
ucomisd %xmm1,%xmm0
jb     1962 <dqawce+0x842>
mov    -0x50(%rbp),%rax
movl   $0x3,(%rax)
jmp    1967 <dqawce+0x847>
movsd  -0xc0(%rbp),%xmm1
ff
movsd  -0xb8(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     19fe <dqawce+0x8de>
movsd  -0x88(%rbp),%xmm0
ff
movslq -0x4744(%rbp),%rax
movsd  %xmm0,-0x1080(%rbp,%rax,8)
ff ff
movsd  -0x98(%rbp),%xmm0
ff
movslq -0x4748(%rbp),%rax
movsd  %xmm0,-0x2020(%rbp,%rax,8)
ff ff
movsd  -0xa0(%rbp),%xmm0
ff
movslq -0x4744(%rbp),%rax
movsd  %xmm0,-0x2020(%rbp,%rax,8)
ff ff
movsd  -0xb8(%rbp),%xmm0
ff
movslq -0x4748(%rbp),%rax
movsd  %xmm0,-0x3f60(%rbp,%rax,8)
ff ff
movsd  -0xc0(%rbp),%xmm0
ff
movslq -0x4744(%rbp),%rax
movsd  %xmm0,-0x3f60(%rbp,%rax,8)
ff ff
jmp    1a9d <dqawce+0x97d>
movsd  -0x88(%rbp),%xmm0
ff
movslq -0x4748(%rbp),%rax
movsd  %xmm0,-0x1080(%rbp,%rax,8)
ff ff
movsd  -0x80(%rbp),%xmm0
movslq -0x4744(%rbp),%rax
movsd  %xmm0,-0x1080(%rbp,%rax,8)
ff ff
movsd  -0x98(%rbp),%xmm0
ff
movslq -0x4744(%rbp),%rax
movsd  %xmm0,-0x2020(%rbp,%rax,8)
ff ff
movsd  -0x70(%rbp),%xmm0
movslq -0x4748(%rbp),%rax
movsd  %xmm0,-0x2fc0(%rbp,%rax,8)
ff ff
movsd  -0x68(%rbp),%xmm0
movslq -0x4744(%rbp),%rax
movsd  %xmm0,-0x2fc0(%rbp,%rax,8)
ff ff
movsd  -0xc0(%rbp),%xmm0
ff
movslq -0x4748(%rbp),%rax
movsd  %xmm0,-0x3f60(%rbp,%rax,8)
ff ff
movsd  -0xb8(%rbp),%xmm0
ff
movslq -0x4744(%rbp),%rax
movsd  %xmm0,-0x3f60(%rbp,%rax,8)
ff ff
mov    -0x4754(%rbp),%edi
mov    -0x4744(%rbp),%esi
lea    -0x3f60(%rbp),%r8
lea    -0x4730(%rbp),%r9
lea    -0x4748(%rbp),%rdx
lea    -0xb0(%rbp),%rcx
lea    -0x474c(%rbp),%rax
mov    %rax,(%rsp)
call   1040 <dqsort@plt>
mov    -0x50(%rbp),%rax
cmpl   $0x0,(%rax)
jne    1afc <dqawce+0x9dc>
movsd  -0xd0(%rbp),%xmm1
ff
movsd  -0xa8(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     1b01 <dqawce+0x9e1>
jmp    1b1f <dqawce+0x9ff>
jmp    1b06 <dqawce+0x9e6>
mov    -0x4744(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4744(%rbp)
jmp    14b9 <dqawce+0x399>
jmp    1b1f <dqawce+0x9ff>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movl   $0x0,-0x473c(%rbp)
mov    -0x473c(%rbp),%eax
cmp    -0x4744(%rbp),%eax
jg     1b7a <dqawce+0xa5a>
movslq -0x473c(%rbp),%rax
movsd  -0x2fc0(%rbp,%rax,8),%xmm0
ff ff
addsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x473c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x473c(%rbp)
jmp    1b34 <dqawce+0xa14>
movsd  -0xd0(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x58(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    1bc7 <dqawce+0xaa7>
jp     1bc7 <dqawce+0xaa7>
movsd  -0xd8(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
jmp    1bcc <dqawce+0xaac>
movsd  -0xd8(%rbp),%xmm0
ff
add    $0x4790,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<dqawce>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x4758,%rsp
mov    %rsi,0x70(%rsp)
mov    %rdi,0x68(%rsp)
movl   $0x6,(%r8)
mov    %rcx,0x60(%rsp)
movl   $0x0,(%rcx)
movq   $0x0,(%rdx)
ucomisd %xmm0,%xmm2
xorpd  %xmm5,%xmm5
jne    1164 <dqawce+0x44>
jnp    17a8 <dqawce+0x688>
ucomisd %xmm1,%xmm2
jne    1170 <dqawce+0x50>
jnp    17a8 <dqawce+0x688>
mov    %r8,%rbx
mov    %rdx,%rbp
xorpd  %xmm5,%xmm5
ucomisd %xmm3,%xmm5
jbe    118e <dqawce+0x6e>
xorpd  %xmm6,%xmm6
ucomisd %xmm4,%xmm6
ja     17a8 <dqawce+0x688>
movsd  %xmm3,0x50(%rsp)
movsd  %xmm4,0x58(%rsp)
ucomisd %xmm0,%xmm1
movapd %xmm0,%xmm4
cmpnlesd %xmm1,%xmm4
movapd %xmm4,%xmm3
andpd  %xmm0,%xmm3
andnpd %xmm1,%xmm4
orpd   %xmm3,%xmm4
movapd %xmm1,0x80(%rsp)
jb     11c6 <dqawce+0xa6>
movapd %xmm0,%xmm1
movl   $0x0,(%rbx)
movl   $0x1,0x10(%rsp)
lea    0x10(%rsp),%rcx
mov    0x68(%rsp),%rdi
mov    0x70(%rsp),%rsi
movsd  %xmm1,0x18(%rsp)
movapd %xmm1,%xmm0
movapd %xmm4,0x90(%rsp)
movapd %xmm4,%xmm1
movsd  %xmm2,0x38(%rsp)
mov    %rbp,%rdx
mov    0x60(%rsp),%r8
call   1030 <dqc25c@plt>
movapd %xmm0,%xmm5
movsd  0x0(%rbp),%xmm4
movsd  %xmm4,0x1870(%rsp)
andpd  0xdd9(%rip),%xmm0
movl   $0x0,0x10a0(%rsp)
movapd %xmm0,%xmm1
mulsd  0x58(%rsp),%xmm1
movsd  0x50(%rsp),%xmm2
mulsd  0xdf6(%rip),%xmm0
maxsd  %xmm1,%xmm2
minsd  %xmm2,%xmm0
movsd  %xmm4,0x20(%rsp)
ucomisd %xmm4,%xmm0
ja     1263 <dqawce+0x143>
cmpl   $0x1,(%rbx)
jne    1277 <dqawce+0x157>
movapd 0x80(%rsp),%xmm0
movsd  0x18(%rsp),%xmm1
jmp    1798 <dqawce+0x678>
mov    %rbx,0xa8(%rsp)
mov    %rbp,0x48(%rsp)
movsd  0x18(%rsp),%xmm0
movsd  %xmm0,0x37b0(%rsp)
movapd 0x90(%rsp),%xmm6
movsd  %xmm6,0x2810(%rsp)
movapd %xmm5,0xd0(%rsp)
movsd  %xmm5,0x100(%rsp)
movsd  0x20(%rsp),%xmm1
movsd  %xmm1,0x78(%rsp)
movl   $0x0,0x14(%rsp)
movl   $0x0,0x44(%rsp)
movl   $0x0,0x2c(%rsp)
mov    $0x1,%ebp
movl   $0x0,0x30(%rsp)
movsd  0x38(%rsp),%xmm4
mov    0x68(%rsp),%r15
mov    0x70(%rsp),%r13
nopl   0x0(%rax,%rax,1)
movapd %xmm6,0x90(%rsp)
movapd %xmm0,%xmm5
addsd  %xmm6,%xmm5
movsd  0xd2f(%rip),%xmm3
mulsd  %xmm3,%xmm5
movapd %xmm6,%xmm1
addsd  %xmm4,%xmm1
mulsd  %xmm3,%xmm1
movapd %xmm4,%xmm2
cmplesd %xmm5,%xmm2
andpd  %xmm2,%xmm1
andnpd %xmm5,%xmm2
orpd   %xmm1,%xmm2
movapd %xmm0,%xmm1
cmpltsd %xmm4,%xmm1
andpd  %xmm1,%xmm2
andnpd %xmm5,%xmm1
orpd   %xmm2,%xmm1
movapd %xmm0,%xmm5
addsd  %xmm4,%xmm5
mulsd  %xmm3,%xmm5
movapd %xmm1,%xmm2
cmpltsd %xmm4,%xmm2
movapd %xmm4,%xmm7
cmpltsd %xmm6,%xmm7
movapd %xmm7,%xmm3
andnpd %xmm1,%xmm3
andpd  %xmm5,%xmm7
orpd   %xmm3,%xmm7
andpd  %xmm2,%xmm7
andnpd %xmm1,%xmm2
orpd   %xmm2,%xmm7
movapd %xmm7,%xmm1
movapd %xmm7,0xe0(%rsp)
movl   $0x2,0x10(%rsp)
mov    %r15,%rdi
mov    %r13,%rsi
movapd %xmm0,0xf0(%rsp)
movapd %xmm4,%xmm2
lea    0xc8(%rsp),%rdx
lea    0x10(%rsp),%r14
mov    %r14,%rcx
lea    0x34(%rsp),%r12
mov    %r12,%r8
call   1030 <dqc25c@plt>
movsd  %xmm0,0xb8(%rsp)
mov    0x34(%rsp),%eax
mov    0x60(%rsp),%rbx
add    %eax,(%rbx)
mov    %r15,%rdi
mov    %r13,%rsi
movapd 0xe0(%rsp),%xmm0
movaps 0x90(%rsp),%xmm1
movsd  0x38(%rsp),%xmm2
lea    0xc0(%rsp),%rdx
mov    %r14,%rcx
mov    %r12,%r8
call   1030 <dqc25c@plt>
movsd  0xb8(%rsp),%xmm11
mov    0x34(%rsp),%eax
add    %eax,(%rbx)
movapd %xmm11,%xmm2
addsd  %xmm0,%xmm2
movsd  0xc8(%rsp),%xmm8
movsd  0xc0(%rsp),%xmm9
movapd %xmm8,%xmm4
addsd  %xmm9,%xmm4
movsd  0x78(%rsp),%xmm6
movslq 0x14(%rsp),%rax
movsd  0x100(%rsp,%rax,8),%xmm5
movapd %xmm5,%xmm7
subsd  %xmm2,%xmm7
movapd 0xb8f(%rip),%xmm1
andpd  %xmm1,%xmm7
movapd %xmm2,%xmm3
andpd  %xmm1,%xmm3
mulsd  0xbcb(%rip),%xmm3
ucomisd %xmm7,%xmm3
jbe    14af <dqawce+0x38f>
movapd %xmm6,%xmm3
mulsd  0xbc1(%rip),%xmm3
ucomisd %xmm3,%xmm4
setae  %cl
cmpl   $0x0,0x10(%rsp)
sete   %dl
and    %cl,%dl
movzbl %dl,%ecx
add    %ecx,0x30(%rsp)
cmp    $0xb,%rbp
mov    0xa8(%rsp),%rbx
movapd 0xf0(%rsp),%xmm10
movapd 0xe0(%rsp),%xmm7
jb     14e8 <dqawce+0x3c8>
ucomisd %xmm6,%xmm4
seta   %cl
cmpl   $0x0,0x10(%rsp)
sete   %dl
and    %cl,%dl
movzbl %dl,%ecx
add    %ecx,0x2c(%rsp)
subsd  %xmm6,%xmm4
movsd  0x20(%rsp),%xmm3
addsd  %xmm4,%xmm3
subsd  %xmm5,%xmm2
movapd 0xd0(%rsp),%xmm5
addsd  %xmm2,%xmm5
movsd  %xmm11,0x100(%rsp,%rax,8)
movsd  %xmm0,0x100(%rsp,%rbp,8)
movapd %xmm5,%xmm2
andpd  0xada(%rip),%xmm2
mulsd  0x58(%rsp),%xmm2
movsd  0x50(%rsp),%xmm1
maxsd  %xmm2,%xmm1
movsd  %xmm3,0x20(%rsp)
movsd  %xmm1,0xb0(%rsp)
ucomisd %xmm3,%xmm1
movapd 0x90(%rsp),%xmm6
jae    15d3 <dqawce+0x4b3>
cmpl   $0x6,0x30(%rsp)
jl     1568 <dqawce+0x448>
cmpl   $0x15,0x2c(%rsp)
jl     1568 <dqawce+0x448>
movl   $0x2,(%rbx)
movapd %xmm10,%xmm2
movapd 0xa8b(%rip),%xmm1
andpd  %xmm1,%xmm2
movapd %xmm6,%xmm3
andpd  %xmm1,%xmm3
maxsd  %xmm3,%xmm2
movapd %xmm7,%xmm3
andpd  %xmm1,%xmm3
movapd 0xa7b(%rip),%xmm4
unpcklpd %xmm3,%xmm4
mov    0x2a48(%rip),%rcx
movsd  (%rcx),%xmm3
mov    0x2a2d(%rip),%rcx
movhpd (%rcx),%xmm3
mulpd  0xa69(%rip),%xmm3
addpd  %xmm4,%xmm3
movapd %xmm3,%xmm4
unpckhpd %xmm3,%xmm4
mulsd  %xmm3,%xmm4
ucomisd %xmm2,%xmm4
jb     15d3 <dqawce+0x4b3>
movl   $0x3,(%rbx)
ucomisd %xmm9,%xmm8
movapd %xmm5,0xd0(%rsp)
jae    1610 <dqawce+0x4f0>
movsd  %xmm7,0x37b0(%rsp,%rax,8)
movsd  %xmm0,0x100(%rsp,%rax,8)
movsd  %xmm11,0x100(%rsp,%rbp,8)
movapd %xmm7,%xmm6
movapd %xmm9,%xmm0
movapd %xmm8,%xmm9
jmp    1623 <dqawce+0x503>
nop
movsd  %xmm7,0x2810(%rsp,%rax,8)
movapd %xmm7,%xmm10
movapd %xmm8,%xmm0
movsd  %xmm10,0x37b0(%rsp,%rbp,8)
movsd  %xmm6,0x2810(%rsp,%rbp,8)
movsd  %xmm0,0x1870(%rsp,%rax,8)
movsd  %xmm9,0x1870(%rsp,%rbp,8)
lea    0x44(%rsp),%rax
mov    %rax,(%rsp)
mov    $0x1f3,%edi
mov    %ebp,%esi
lea    0x14(%rsp),%rdx
lea    0x78(%rsp),%rcx
lea    0x1870(%rsp),%r8
lea    0x10a0(%rsp),%r9
call   1040 <dqsort@plt>
cmpl   $0x0,(%rbx)
jne    16cc <dqawce+0x5ac>
movsd  0xb0(%rsp),%xmm0
ucomisd 0x20(%rsp),%xmm0
movaps 0x80(%rsp),%xmm0
jae    16d5 <dqawce+0x5b5>
cmp    $0x1f2,%rbp
je     16c5 <dqawce+0x5a5>
movslq 0x14(%rsp),%rax
movsd  0x37b0(%rsp,%rax,8),%xmm0
movsd  0x2810(%rsp,%rax,8),%xmm6
add    $0x1,%rbp
movsd  0x38(%rsp),%xmm4
jmp    1300 <dqawce+0x1e0>
mov    $0x1f3,%ebp
jmp    16d5 <dqawce+0x5b5>
movapd 0x80(%rsp),%xmm0
lea    0x1(%rbp),%rdx
mov    %edx,%eax
and    $0x7,%eax
cmp    $0x7,%rbp
jae    16f7 <dqawce+0x5d7>
xorpd  %xmm5,%xmm5
xor    %ecx,%ecx
mov    0x48(%rsp),%rsi
movsd  0x18(%rsp),%xmm1
jmp    1761 <dqawce+0x641>
and    $0xfffffffffffffff8,%rdx
xorpd  %xmm5,%xmm5
xor    %ecx,%ecx
mov    0x48(%rsp),%rsi
movsd  0x18(%rsp),%xmm1
nopl   0x0(%rax)
addsd  0x100(%rsp,%rcx,8),%xmm5
addsd  0x108(%rsp,%rcx,8),%xmm5
addsd  0x110(%rsp,%rcx,8),%xmm5
addsd  0x118(%rsp,%rcx,8),%xmm5
addsd  0x120(%rsp,%rcx,8),%xmm5
addsd  0x128(%rsp,%rcx,8),%xmm5
addsd  0x130(%rsp,%rcx,8),%xmm5
addsd  0x138(%rsp,%rcx,8),%xmm5
add    $0x8,%rcx
cmp    %rcx,%rdx
jne    1710 <dqawce+0x5f0>
test   %rax,%rax
je     178e <dqawce+0x66e>
lea    (%rsp,%rcx,8),%rcx
add    $0x100,%rcx
xor    %edx,%edx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
addsd  (%rcx,%rdx,8),%xmm5
add    $0x1,%rdx
cmp    %rdx,%rax
jne    1780 <dqawce+0x660>
movsd  0x20(%rsp),%xmm2
movsd  %xmm2,(%rsi)
ucomisd %xmm0,%xmm1
jne    17a8 <dqawce+0x688>
jp     17a8 <dqawce+0x688>
xorpd  0x888(%rip),%xmm5
movapd %xmm5,%xmm0
add    $0x4758,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@DBL_EPSILON = global double 0.000000e+00
@DBL_MIN = global double 0.000000e+00
define double @dqawce(double (double, i8*)* %0, i8* %1, double %2, double %3, double %4, double %5, double %6, double* %7, i32* %8, i32* %9) {
%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 double*
%19 = alloca i32*
%20 = alloca i32*
%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 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 [500 x double]
%39 = alloca [500 x double]
%40 = alloca [500 x double]
%41 = alloca [500 x double]
%42 = alloca [500 x i32]
%43 = alloca i32
%44 = alloca i32
%45 = alloca i32
%46 = alloca i32
%47 = alloca i32
%48 = alloca i32
%49 = alloca i32
%50 = alloca i32
%51 = 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 double* %7, double** %18
store i32* %8, i32** %19
store i32* %9, i32** %20
store i32 499, i32* %51
%52 = load i32*, i32** %20
store i32 6, i32* %52
%53 = load i32*, i32** %19
store i32 0, i32* %53
store i32 0, i32* %47
%54 = load double, double* %13
%55 = getelementptr inbounds [500 x double], [500 x double]* %38, i64 0, i64 0
store double %54, double* %55
%56 = load double, double* %14
%57 = getelementptr inbounds [500 x double], [500 x double]* %39, i64 0, i64 0
store double %56, double* %57
%58 = getelementptr inbounds [500 x double], [500 x double]* %40, i64 0, i64 0
store double 0.000000e+00, double* %58
%59 = getelementptr inbounds [500 x double], [500 x double]* %41, i64 0, i64 0
store double 0.000000e+00, double* %59
%60 = getelementptr inbounds [500 x i32], [500 x i32]* %42, i64 0, i64 0
store i32 0, i32* %60
store double 0.000000e+00, double* %37
%61 = load double*, double** %18
store double 0.000000e+00, double* %61
%62 = load double, double* %15
%63 = load double, double* %13
%64 = fcmp oeq double %62, %63
br i1 %64, label %75, label %65
65: ; preds = %10
%66 = load double, double* %15
%67 = load double, double* %14
%68 = fcmp oeq double %66, %67
br i1 %68, label %75, label %69
69: ; preds = %65
%70 = load double, double* %16
%71 = fcmp olt double %70, 0.000000e+00
br i1 %71, label %72, label %76
72: ; preds = %69
%73 = load double, double* %17
%74 = fcmp olt double %73, 0.000000e+00
br i1 %74, label %75, label %76
75: ; preds = %72, %65, %10
br label %451
76: ; preds = %72, %69
%77 = load double, double* %13
store double %77, double* %21
%78 = load double, double* %14
store double %78, double* %28
%79 = load double, double* %13
%80 = load double, double* %14
%81 = fcmp ole double %79, %80
br i1 %81, label %82, label %83
82: ; preds = %76
br label %86
83: ; preds = %76
%84 = load double, double* %14
store double %84, double* %21
%85 = load double, double* %13
store double %85, double* %28
br label %86
86: ; preds = %83, %82
%87 = load i32*, i32** %20
store i32 0, i32* %87
store i32 1, i32* %46
%88 = load double (double, i8*)*, double (double, i8*)** %11
%89 = load i8*, i8** %12
%90 = load double, double* %21
%91 = load double, double* %28
%92 = load double, double* %15
%93 = load double*, double** %18
%94 = load i32*, i32** %19
%95 = call double @dqc25c(double (double, i8*)* %88, i8* %89, double %90, double %91, double %92, double* %93, i32* %46, i32* %94)
store double %95, double* %37
%96 = load double, double* %37
%97 = getelementptr inbounds [500 x double], [500 x double]* %40, i64 0, i64 0
store double %96, double* %97
%98 = load double*, double** %18
%99 = load double, double* %98
%100 = getelementptr inbounds [500 x double], [500 x double]* %41, i64 0, i64 0
store double %99, double* %100
%101 = getelementptr inbounds [500 x i32], [500 x i32]* %42, i64 0, i64 0
store i32 0, i32* %101
%102 = load double, double* %13
%103 = getelementptr inbounds [500 x double], [500 x double]* %38, i64 0, i64 0
store double %102, double* %103
%104 = load double, double* %14
%105 = getelementptr inbounds [500 x double], [500 x double]* %39, i64 0, i64 0
store double %104, double* %105
%106 = load double, double* %16
%107 = load double, double* %17
%108 = load double, double* %37
%109 = call double @llvm.fabs.f64(double %108)
%110 = fmul double %107, %109
%111 = fcmp ogt double %106, %110
br i1 %111, label %112, label %114
112: ; preds = %86
%113 = load double, double* %16
br label %119
114: ; preds = %86
%115 = load double, double* %17
%116 = load double, double* %37
%117 = call double @llvm.fabs.f64(double %116)
%118 = fmul double %115, %117
br label %119
119: ; preds = %114, %112
%120 = phi double [ %113, %112 ], [ %118, %114 ]
store double %120, double* %31
%121 = load i32, i32* %51
%122 = icmp eq i32 %121, 0
br i1 %122, label %123, label %125
123: ; preds = %119
%124 = load i32*, i32** %20
store i32 1, i32* %124
br label %125
125: ; preds = %123, %119
%126 = load double*, double** %18
%127 = load double, double* %126
%128 = load double, double* %37
%129 = call double @llvm.fabs.f64(double %128)
%130 = fmul double 1.000000e-02, %129
%131 = load double, double* %31
%132 = fcmp olt double %130, %131
br i1 %132, label %133, label %137
133: ; preds = %125
%134 = load double, double* %37
%135 = call double @llvm.fabs.f64(double %134)
%136 = fmul double 1.000000e-02, %135
br label %139
137: ; preds = %125
%138 = load double, double* %31
br label %139
139: ; preds = %137, %133
%140 = phi double [ %136, %133 ], [ %138, %137 ]
%141 = fcmp olt double %127, %140
br i1 %141, label %146, label %142
142: ; preds = %139
%143 = load i32*, i32** %20
%144 = load i32, i32* %143
%145 = icmp eq i32 %144, 1
br i1 %145, label %146, label %147
146: ; preds = %142, %139
br label %443
147: ; preds = %142
%148 = load double, double* %21
%149 = getelementptr inbounds [500 x double], [500 x double]* %38, i64 0, i64 0
store double %148, double* %149
%150 = load double, double* %28
%151 = getelementptr inbounds [500 x double], [500 x double]* %39, i64 0, i64 0
store double %150, double* %151
%152 = load double, double* %37
%153 = getelementptr inbounds [500 x double], [500 x double]* %40, i64 0, i64 0
store double %152, double* %153
%154 = load double*, double** %18
%155 = load double, double* %154
store double %155, double* %32
store i32 0, i32* %48
%156 = load double, double* %37
store double %156, double* %22
%157 = load double*, double** %18
%158 = load double, double* %157
store double %158, double* %36
store i32 0, i32* %49
store i32 0, i32* %43
store i32 0, i32* %44
store i32 1, i32* %47
br label %159
159: ; preds = %421, %147
%160 = load i32, i32* %47
%161 = load i32, i32* %51
%162 = icmp slt i32 %160, %161
br i1 %162, label %163, label %424
163: ; preds = %159
%164 = load i32, i32* %48
%165 = sext i32 %164 to i64
%166 = getelementptr inbounds [500 x double], [500 x double]* %38, i64 0, i64 %165
%167 = load double, double* %166
store double %167, double* %26
%168 = load i32, i32* %48
%169 = sext i32 %168 to i64
%170 = getelementptr inbounds [500 x double], [500 x double]* %38, i64 0, i64 %169
%171 = load double, double* %170
%172 = load i32, i32* %48
%173 = sext i32 %172 to i64
%174 = getelementptr inbounds [500 x double], [500 x double]* %39, i64 0, i64 %173
%175 = load double, double* %174
%176 = fadd double %171, %175
%177 = fmul double 5.000000e-01, %176
store double %177, double* %29
%178 = load i32, i32* %48
%179 = sext i32 %178 to i64
%180 = getelementptr inbounds [500 x double], [500 x double]* %39, i64 0, i64 %179
%181 = load double, double* %180
store double %181, double* %30
%182 = load double, double* %15
%183 = load double, double* %29
%184 = fcmp ole double %182, %183
br i1 %184, label %185, label %194
185: ; preds = %163
%186 = load double, double* %15
%187 = load double, double* %26
%188 = fcmp ogt double %186, %187
br i1 %188, label %189, label %194
189: ; preds = %185
%190 = load double, double* %15
%191 = load double, double* %30
%192 = fadd double %190, %191
%193 = fmul double 5.000000e-01, %192
store double %193, double* %29
br label %194
194: ; preds = %189, %185, %163
%195 = load double, double* %15
%196 = load double, double* %29
%197 = fcmp ogt double %195, %196
br i1 %197, label %198, label %207
198: ; preds = %194
%199 = load double, double* %15
%200 = load double, double* %30
%201 = fcmp olt double %199, %200
br i1 %201, label %202, label %207
202: ; preds = %198
%203 = load double, double* %26
%204 = load double, double* %15
%205 = fadd double %203, %204
%206 = fmul double 5.000000e-01, %205
store double %206, double* %29
br label %207
207: ; preds = %202, %198, %194
%208 = load double, double* %29
store double %208, double* %27
store i32 2, i32* %46
%209 = load double (double, i8*)*, double (double, i8*)** %11
%210 = load i8*, i8** %12
%211 = load double, double* %26
%212 = load double, double* %29
%213 = load double, double* %15
%214 = call double @dqc25c(double (double, i8*)* %209, i8* %210, double %211, double %212, double %213, double* %33, i32* %46, i32* %50)
store double %214, double* %23
%215 = load i32*, i32** %19
%216 = load i32, i32* %215
%217 = load i32, i32* %50
%218 = add nsw i32 %216, %217
%219 = load i32*, i32** %19
store i32 %218, i32* %219
%220 = load double (double, i8*)*, double (double, i8*)** %11
%221 = load i8*, i8** %12
%222 = load double, double* %27
%223 = load double, double* %30
%224 = load double, double* %15
%225 = call double @dqc25c(double (double, i8*)* %220, i8* %221, double %222, double %223, double %224, double* %34, i32* %46, i32* %50)
store double %225, double* %24
%226 = load i32*, i32** %19
%227 = load i32, i32* %226
%228 = load i32, i32* %50
%229 = add nsw i32 %227, %228
%230 = load i32*, i32** %19
store i32 %229, i32* %230
%231 = load double, double* %23
%232 = load double, double* %24
%233 = fadd double %231, %232
store double %233, double* %25
%234 = load double, double* %33
%235 = load double, double* %34
%236 = fadd double %234, %235
store double %236, double* %35
%237 = load double, double* %35
%238 = load double, double* %32
%239 = fsub double %237, %238
%240 = load double, double* %36
%241 = fadd double %240, %239
store double %241, double* %36
%242 = load double, double* %25
%243 = load i32, i32* %48
%244 = sext i32 %243 to i64
%245 = getelementptr inbounds [500 x double], [500 x double]* %40, i64 0, i64 %244
%246 = load double, double* %245
%247 = fsub double %242, %246
%248 = load double, double* %22
%249 = fadd double %248, %247
store double %249, double* %22
%250 = load i32, i32* %48
%251 = sext i32 %250 to i64
%252 = getelementptr inbounds [500 x double], [500 x double]* %40, i64 0, i64 %251
%253 = load double, double* %252
%254 = load double, double* %25
%255 = fsub double %253, %254
%256 = call double @llvm.fabs.f64(double %255)
%257 = load double, double* %25
%258 = call double @llvm.fabs.f64(double %257)
%259 = fmul double 1.000000e-05, %258
%260 = fcmp olt double %256, %259
br i1 %260, label %261, label %272
261: ; preds = %207
%262 = load double, double* %35
%263 = load double, double* %32
%264 = fmul double 0x3FEFAE147AE147AE, %263
%265 = fcmp oge double %262, %264
br i1 %265, label %266, label %272
266: ; preds = %261
%267 = load i32, i32* %46
%268 = icmp eq i32 %267, 0
br i1 %268, label %269, label %272
269: ; preds = %266
%270 = load i32, i32* %43
%271 = add nsw i32 %270, 1
store i32 %271, i32* %43
br label %272
272: ; preds = %269, %266, %261, %207
%273 = load i32, i32* %47
%274 = icmp sgt i32 %273, 10
br i1 %274, label %275, label %285
275: ; preds = %272
%276 = load double, double* %35
%277 = load double, double* %32
%278 = fcmp ogt double %276, %277
br i1 %278, label %279, label %285
279: ; preds = %275
%280 = load i32, i32* %46
%281 = icmp eq i32 %280, 0
br i1 %281, label %282, label %285
282: ; preds = %279
%283 = load i32, i32* %44
%284 = add nsw i32 %283, 1
store i32 %284, i32* %44
br label %285
285: ; preds = %282, %279, %275, %272
%286 = load double, double* %23
%287 = load i32, i32* %48
%288 = sext i32 %287 to i64
%289 = getelementptr inbounds [500 x double], [500 x double]* %40, i64 0, i64 %288
store double %286, double* %289
%290 = load double, double* %24
%291 = load i32, i32* %47
%292 = sext i32 %291 to i64
%293 = getelementptr inbounds [500 x double], [500 x double]* %40, i64 0, i64 %292
store double %290, double* %293
%294 = load double, double* %16
%295 = load double, double* %17
%296 = load double, double* %22
%297 = call double @llvm.fabs.f64(double %296)
%298 = fmul double %295, %297
%299 = fcmp ogt double %294, %298
br i1 %299, label %300, label %302
300: ; preds = %285
%301 = load double, double* %16
br label %307
302: ; preds = %285
%303 = load double, double* %17
%304 = load double, double* %22
%305 = call double @llvm.fabs.f64(double %304)
%306 = fmul double %303, %305
br label %307
307: ; preds = %302, %300
%308 = phi double [ %301, %300 ], [ %306, %302 ]
store double %308, double* %31
%309 = load double, double* %36
%310 = load double, double* %31
%311 = fcmp ole double %309, %310
br i1 %311, label %312, label %313
312: ; preds = %307
br label %352
313: ; preds = %307
%314 = load i32, i32* %43
%315 = icmp sge i32 %314, 6
br i1 %315, label %316, label %321
316: ; preds = %313
%317 = load i32, i32* %44
%318 = icmp sgt i32 %317, 20
br i1 %318, label %319, label %321
319: ; preds = %316
%320 = load i32*, i32** %20
store i32 2, i32* %320
br label %321
321: ; preds = %319, %316, %313
%322 = load i32, i32* %47
%323 = load i32, i32* %51
%324 = icmp eq i32 %322, %323
br i1 %324, label %325, label %327
325: ; preds = %321
%326 = load i32*, i32** %20
store i32 1, i32* %326
br label %327
327: ; preds = %325, %321
%328 = load double, double* %26
%329 = call double @llvm.fabs.f64(double %328)
%330 = load double, double* %30
%331 = call double @llvm.fabs.f64(double %330)
%332 = fcmp ogt double %329, %331
br i1 %332, label %333, label %336
333: ; preds = %327
%334 = load double, double* %26
%335 = call double @llvm.fabs.f64(double %334)
br label %339
336: ; preds = %327
%337 = load double, double* %30
%338 = call double @llvm.fabs.f64(double %337)
br label %339
339: ; preds = %336, %333
%340 = phi double [ %335, %333 ], [ %338, %336 ]
%341 = load double, double* @DBL_EPSILON
%342 = call double @llvm.fmuladd.f64(double 1.000000e+03, double %341, double 1.000000e+00)
%343 = load double, double* %27
%344 = call double @llvm.fabs.f64(double %343)
%345 = load double, double* @DBL_MIN
%346 = call double @llvm.fmuladd.f64(double 1.000000e+03, double %345, double %344)
%347 = fmul double %342, %346
%348 = fcmp ole double %340, %347
br i1 %348, label %349, label %351
349: ; preds = %339
%350 = load i32*, i32** %20
store i32 3, i32* %350
br label %351
351: ; preds = %349, %339
br label %352
352: ; preds = %351, %312
%353 = load double, double* %34
%354 = load double, double* %33
%355 = fcmp ole double %353, %354
br i1 %355, label %356, label %377
356: ; preds = %352
%357 = load double, double* %27
%358 = load i32, i32* %47
%359 = sext i32 %358 to i64
%360 = getelementptr inbounds [500 x double], [500 x double]* %38, i64 0, i64 %359
store double %357, double* %360
%361 = load double, double* %29
%362 = load i32, i32* %48
%363 = sext i32 %362 to i64
%364 = getelementptr inbounds [500 x double], [500 x double]* %39, i64 0, i64 %363
store double %361, double* %364
%365 = load double, double* %30
%366 = load i32, i32* %47
%367 = sext i32 %366 to i64
%368 = getelementptr inbounds [500 x double], [500 x double]* %39, i64 0, i64 %367
store double %365, double* %368
%369 = load double, double* %33
%370 = load i32, i32* %48
%371 = sext i32 %370 to i64
%372 = getelementptr inbounds [500 x double], [500 x double]* %41, i64 0, i64 %371
store double %369, double* %372
%373 = load double, double* %34
%374 = load i32, i32* %47
%375 = sext i32 %374 to i64
%376 = getelementptr inbounds [500 x double], [500 x double]* %41, i64 0, i64 %375
store double %373, double* %376
br label %406
377: ; preds = %352
%378 = load double, double* %27
%379 = load i32, i32* %48
%380 = sext i32 %379 to i64
%381 = getelementptr inbounds [500 x double], [500 x double]* %38, i64 0, i64 %380
store double %378, double* %381
%382 = load double, double* %26
%383 = load i32, i32* %47
%384 = sext i32 %383 to i64
%385 = getelementptr inbounds [500 x double], [500 x double]* %38, i64 0, i64 %384
store double %382, double* %385
%386 = load double, double* %29
%387 = load i32, i32* %47
%388 = sext i32 %387 to i64
%389 = getelementptr inbounds [500 x double], [500 x double]* %39, i64 0, i64 %388
store double %386, double* %389
%390 = load double, double* %24
%391 = load i32, i32* %48
%392 = sext i32 %391 to i64
%393 = getelementptr inbounds [500 x double], [500 x double]* %40, i64 0, i64 %392
store double %390, double* %393
%394 = load double, double* %23
%395 = load i32, i32* %47
%396 = sext i32 %395 to i64
%397 = getelementptr inbounds [500 x double], [500 x double]* %40, i64 0, i64 %396
store double %394, double* %397
%398 = load double, double* %34
%399 = load i32, i32* %48
%400 = sext i32 %399 to i64
%401 = getelementptr inbounds [500 x double], [500 x double]* %41, i64 0, i64 %400
store double %398, double* %401
%402 = load double, double* %33
%403 = load i32, i32* %47
%404 = sext i32 %403 to i64
%405 = getelementptr inbounds [500 x double], [500 x double]* %41, i64 0, i64 %404
store double %402, double* %405
br label %406
406: ; preds = %377, %356
%407 = load i32, i32* %51
%408 = load i32, i32* %47
%409 = getelementptr inbounds [500 x double], [500 x double]* %41, i64 0, i64 0
%410 = getelementptr inbounds [500 x i32], [500 x i32]* %42, i64 0, i64 0
%411 = call i32 @dqsort(i32 %407, i32 %408, i32* %48, double* %32, double* %409, i32* %410, i32* %49)
%412 = load i32*, i32** %20
%413 = load i32, i32* %412
%414 = icmp ne i32 %413, 0
br i1 %414, label %419, label %415
415: ; preds = %406
%416 = load double, double* %36
%417 = load double, double* %31
%418 = fcmp ole double %416, %417
br i1 %418, label %419, label %420
419: ; preds = %415, %406
br label %425
420: ; preds = %415
br label %421
421: ; preds = %420
%422 = load i32, i32* %47
%423 = add nsw i32 %422, 1
store i32 %423, i32* %47
br label %159
424: ; preds = %159
br label %425
425: ; preds = %424, %419
store double 0.000000e+00, double* %37
store i32 0, i32* %45
br label %426
426: ; preds = %437, %425
%427 = load i32, i32* %45
%428 = load i32, i32* %47
%429 = icmp sle i32 %427, %428
br i1 %429, label %430, label %440
430: ; preds = %426
%431 = load i32, i32* %45
%432 = sext i32 %431 to i64
%433 = getelementptr inbounds [500 x double], [500 x double]* %40, i64 0, i64 %432
%434 = load double, double* %433
%435 = load double, double* %37
%436 = fadd double %435, %434
store double %436, double* %37
br label %437
437: ; preds = %430
%438 = load i32, i32* %45
%439 = add nsw i32 %438, 1
store i32 %439, i32* %45
br label %426
440: ; preds = %426
%441 = load double, double* %36
%442 = load double*, double** %18
store double %441, double* %442
br label %443
443: ; preds = %440, %146
%444 = load double, double* %21
%445 = load double, double* %14
%446 = fcmp oeq double %444, %445
br i1 %446, label %447, label %450
447: ; preds = %443
%448 = load double, double* %37
%449 = fneg double %448
store double %449, double* %37
br label %450
450: ; preds = %447, %443
br label %451
451: ; preds = %450, %75
%452 = load double, double* %37
ret double %452
}

LLVM IR (-O2):
@DBL_EPSILON = global double 0.000000e+00
@DBL_MIN = global double 0.000000e+00
define double @dqawce(double (double, i8*)* %0, i8* %1, double %2, double %3, double %4, double %5, double %6, double* %7, i32* %8, i32* nocapture %9) {
%11 = alloca double
%12 = alloca double
%13 = alloca double
%14 = alloca [500 x double]
%15 = alloca [500 x double]
%16 = alloca [500 x double]
%17 = alloca [500 x double]
%18 = alloca [500 x i32]
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = bitcast double* %11 to i8*
%24 = bitcast double* %12 to i8*
%25 = bitcast double* %13 to i8*
%26 = bitcast [500 x double]* %14 to i8*
%27 = bitcast [500 x double]* %15 to i8*
%28 = bitcast [500 x double]* %16 to i8*
%29 = bitcast [500 x double]* %17 to i8*
%30 = bitcast [500 x i32]* %18 to i8*
%31 = bitcast i32* %19 to i8*
%32 = bitcast i32* %20 to i8*
%33 = bitcast i32* %21 to i8*
%34 = bitcast i32* %22 to i8*
store i32 6, i32* %9
store i32 0, i32* %8
%35 = getelementptr inbounds [500 x double], [500 x double]* %14, i64 0, i64 0
%36 = getelementptr inbounds [500 x double], [500 x double]* %15, i64 0, i64 0
%37 = getelementptr inbounds [500 x double], [500 x double]* %16, i64 0, i64 0
%38 = getelementptr inbounds [500 x double], [500 x double]* %17, i64 0, i64 0
%39 = getelementptr inbounds [500 x i32], [500 x i32]* %18, i64 0, i64 0
store double 0.000000e+00, double* %7
%40 = fcmp oeq double %4, %2
%41 = fcmp oeq double %4, %3
%42 = or i1 %40, %41
br i1 %42, label %258, label %43
43: ; preds = %10
%44 = fcmp olt double %5, 0.000000e+00
%45 = fcmp olt double %6, 0.000000e+00
%46 = and i1 %44, %45
br i1 %46, label %258, label %47
47: ; preds = %43
%48 = fcmp ugt double %2, %3
%49 = select i1 %48, double %2, double %3
%50 = select i1 %48, double %3, double %2
store i32 0, i32* %9
store i32 1, i32* %19
%51 = call double @dqc25c(double (double, i8*)* %0, i8* %1, double %50, double %49, double %4, double* %7, i32* %19, i32* %8)
%52 = load double, double* %7
store double %52, double* %38
store i32 0, i32* %39
%53 = call double @llvm.fabs.f64(double %51)
%54 = fmul double %53, %6
%55 = fcmp olt double %54, %5
%56 = select i1 %55, double %5, double %54
%57 = fmul double %53, 1.000000e-02
%58 = fcmp olt double %57, %56
%59 = select i1 %58, double %57, double %56
%60 = fcmp olt double %52, %59
br i1 %60, label %253, label %61
61: ; preds = %47
%62 = load i32, i32* %9
%63 = icmp eq i32 %62, 1
br i1 %63, label %253, label %64
64: ; preds = %61
store double %50, double* %35
store double %49, double* %36
store double %51, double* %37
store double %52, double* %11
store i32 0, i32* %20
store i32 0, i32* %21
br label %65
65: ; preds = %184, %64
%66 = phi double [ %49, %64 ], [ %190, %184 ]
%67 = phi double [ %50, %64 ], [ %188, %184 ]
%68 = phi i64 [ 1, %64 ], [ %182, %184 ]
%69 = phi i32 [ 0, %64 ], [ %132, %184 ]
%70 = phi i32 [ 0, %64 ], [ %122, %184 ]
%71 = phi double [ %52, %64 ], [ %101, %184 ]
%72 = phi double [ %51, %64 ], [ %107, %184 ]
%73 = fadd double %67, %66
%74 = fmul double %73, 5.000000e-01
%75 = fcmp oge double %74, %4
%76 = fcmp olt double %67, %4
%77 = and i1 %76, %75
%78 = fadd double %66, %4
%79 = fmul double %78, 5.000000e-01
%80 = select i1 %77, double %79, double %74
%81 = fcmp olt double %80, %4
%82 = fcmp ogt double %66, %4
%83 = select i1 %81, i1 %82, i1 false
%84 = fadd double %67, %4
%85 = fmul double %84, 5.000000e-01
%86 = select i1 %83, double %85, double %80
store i32 2, i32* %19
%87 = call double @dqc25c(double (double, i8*)* %0, i8* %1, double %67, double %86, double %4, double* %12, i32* %19, i32* %22)
%88 = load i32, i32* %8
%89 = load i32, i32* %22
%90 = add nsw i32 %89, %88
store i32 %90, i32* %8
%91 = call double @dqc25c(double (double, i8*)* %0, i8* %1, double %86, double %66, double %4, double* %13, i32* %19, i32* %22)
%92 = load i32, i32* %8
%93 = load i32, i32* %22
%94 = add nsw i32 %93, %92
store i32 %94, i32* %8
%95 = fadd double %87, %91
%96 = load double, double* %12
%97 = load double, double* %13
%98 = fadd double %96, %97
%99 = load double, double* %11
%100 = fsub double %98, %99
%101 = fadd double %71, %100
%102 = load i32, i32* %20
%103 = sext i32 %102 to i64
%104 = getelementptr inbounds [500 x double], [500 x double]* %16, i64 0, i64 %103
%105 = load double, double* %104
%106 = fsub double %95, %105
%107 = fadd double %72, %106
%108 = fsub double %105, %95
%109 = call double @llvm.fabs.f64(double %108)
%110 = call double @llvm.fabs.f64(double %95)
%111 = fmul double %110, 1.000000e-05
%112 = fcmp olt double %109, %111
br i1 %112, label %113, label %121
113: ; preds = %65
%114 = fmul double %99, 0x3FEFAE147AE147AE
%115 = fcmp oge double %98, %114
%116 = load i32, i32* %19
%117 = icmp eq i32 %116, 0
%118 = select i1 %115, i1 %117, i1 false
%119 = zext i1 %118 to i32
%120 = add nsw i32 %70, %119
br label %121
121: ; preds = %113, %65
%122 = phi i32 [ %70, %65 ], [ %120, %113 ]
%123 = icmp ugt i64 %68, 10
br i1 %123, label %124, label %131
124: ; preds = %121
%125 = fcmp ogt double %98, %99
%126 = load i32, i32* %19
%127 = icmp eq i32 %126, 0
%128 = select i1 %125, i1 %127, i1 false
%129 = zext i1 %128 to i32
%130 = add nsw i32 %69, %129
br label %131
131: ; preds = %124, %121
%132 = phi i32 [ %69, %121 ], [ %130, %124 ]
store double %87, double* %104
%133 = getelementptr inbounds [500 x double], [500 x double]* %16, i64 0, i64 %68
store double %91, double* %133
%134 = call double @llvm.fabs.f64(double %107)
%135 = fmul double %134, %6
%136 = fcmp olt double %135, %5
%137 = select i1 %136, double %5, double %135
%138 = fcmp ole double %101, %137
br i1 %138, label %161, label %139
139: ; preds = %131
%140 = icmp sgt i32 %122, 5
%141 = icmp sgt i32 %132, 20
%142 = select i1 %140, i1 %141, i1 false
br i1 %142, label %143, label %144
143: ; preds = %139
store i32 2, i32* %9
br label %144
144: ; preds = %139, %143
%145 = call double @llvm.fabs.f64(double %67)
%146 = call double @llvm.fabs.f64(double %66)
%147 = fcmp ogt double %145, %146
%148 = select i1 %147, double %145, double %146
%149 = load double, double* @DBL_EPSILON
%150 = call double @llvm.fabs.f64(double %86)
%151 = load double, double* @DBL_MIN
%152 = insertelement <2 x double> poison, double %149, i64 0
%153 = insertelement <2 x double> %152, double %151, i64 1
%154 = insertelement <2 x double> <double 1.000000e+00, double poison>, double %150, i64 1
%155 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %153, <2 x double> <double 1.000000e+03, double 1.000000e+03>, <2 x double> %154)
%156 = shufflevector <2 x double> %155, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%157 = fmul <2 x double> %155, %156
%158 = extractelement <2 x double> %157, i64 0
%159 = fcmp ugt double %148, %158
br i1 %159, label %161, label %160
160: ; preds = %144
store i32 3, i32* %9
br label %161
161: ; preds = %144, %160, %131
%162 = fcmp ugt double %97, %96
br i1 %162, label %165, label %163
163: ; preds = %161
%164 = getelementptr inbounds [500 x double], [500 x double]* %15, i64 0, i64 %103
store double %86, double* %164
br label %167
165: ; preds = %161
%166 = getelementptr inbounds [500 x double], [500 x double]* %14, i64 0, i64 %103
store double %86, double* %166
store double %91, double* %104
store double %87, double* %133
br label %167
167: ; preds = %165, %163
%168 = phi double [ %67, %165 ], [ %86, %163 ]
%169 = phi double [ %86, %165 ], [ %66, %163 ]
%170 = phi double [ %97, %165 ], [ %96, %163 ]
%171 = phi double [ %96, %165 ], [ %97, %163 ]
%172 = getelementptr inbounds [500 x double], [500 x double]* %14, i64 0, i64 %68
store double %168, double* %172
%173 = getelementptr inbounds [500 x double], [500 x double]* %15, i64 0, i64 %68
store double %169, double* %173
%174 = getelementptr inbounds [500 x double], [500 x double]* %17, i64 0, i64 %103
store double %170, double* %174
%175 = getelementptr inbounds [500 x double], [500 x double]* %17, i64 0, i64 %68
store double %171, double* %175
%176 = trunc i64 %68 to i32
%177 = call i32 @dqsort(i32 499, i32 %176, i32* %20, double* %11, double* %38, i32* %39, i32* %21)
%178 = load i32, i32* %9
%179 = icmp ne i32 %178, 0
%180 = select i1 %179, i1 true, i1 %138
br i1 %180, label %191, label %181
181: ; preds = %167
%182 = add nuw nsw i64 %68, 1
%183 = icmp eq i64 %182, 499
br i1 %183, label %191, label %184
184: ; preds = %181
%185 = load i32, i32* %20
%186 = sext i32 %185 to i64
%187 = getelementptr inbounds [500 x double], [500 x double]* %14, i64 0, i64 %186
%188 = load double, double* %187
%189 = getelementptr inbounds [500 x double], [500 x double]* %15, i64 0, i64 %186
%190 = load double, double* %189
br label %65
191: ; preds = %167, %181
%192 = phi i64 [ %68, %167 ], [ 499, %181 ]
%193 = add nuw i64 %192, 1
%194 = and i64 %193, 7
%195 = icmp ult i64 %192, 7
br i1 %195, label %236, label %196
196: ; preds = %191
%197 = and i64 %193, -8
br label %198
198: ; preds = %198, %196
%199 = phi i64 [ 0, %196 ], [ %233, %198 ]
%200 = phi double [ 0.000000e+00, %196 ], [ %232, %198 ]
%201 = phi i64 [ 0, %196 ], [ %234, %198 ]
%202 = getelementptr inbounds [500 x double], [500 x double]* %16, i64 0, i64 %199
%203 = load double, double* %202
%204 = fadd double %200, %203
%205 = or i64 %199, 1
%206 = getelementptr inbounds [500 x double], [500 x double]* %16, i64 0, i64 %205
%207 = load double, double* %206
%208 = fadd double %204, %207
%209 = or i64 %199, 2
%210 = getelementptr inbounds [500 x double], [500 x double]* %16, i64 0, i64 %209
%211 = load double, double* %210
%212 = fadd double %208, %211
%213 = or i64 %199, 3
%214 = getelementptr inbounds [500 x double], [500 x double]* %16, i64 0, i64 %213
%215 = load double, double* %214
%216 = fadd double %212, %215
%217 = or i64 %199, 4
%218 = getelementptr inbounds [500 x double], [500 x double]* %16, i64 0, i64 %217
%219 = load double, double* %218
%220 = fadd double %216, %219
%221 = or i64 %199, 5
%222 = getelementptr inbounds [500 x double], [500 x double]* %16, i64 0, i64 %221
%223 = load double, double* %222
%224 = fadd double %220, %223
%225 = or i64 %199, 6
%226 = getelementptr inbounds [500 x double], [500 x double]* %16, i64 0, i64 %225
%227 = load double, double* %226
%228 = fadd double %224, %227
%229 = or i64 %199, 7
%230 = getelementptr inbounds [500 x double], [500 x double]* %16, i64 0, i64 %229
%231 = load double, double* %230
%232 = fadd double %228, %231
%233 = add nuw nsw i64 %199, 8
%234 = add i64 %201, 8
%235 = icmp eq i64 %234, %197
br i1 %235, label %236, label %198
236: ; preds = %198, %191
%237 = phi double [ undef, %191 ], [ %232, %198 ]
%238 = phi i64 [ 0, %191 ], [ %233, %198 ]
%239 = phi double [ 0.000000e+00, %191 ], [ %232, %198 ]
%240 = icmp eq i64 %194, 0
br i1 %240, label %251, label %241
241: ; preds = %236, %241
%242 = phi i64 [ %248, %241 ], [ %238, %236 ]
%243 = phi double [ %247, %241 ], [ %239, %236 ]
%244 = phi i64 [ %249, %241 ], [ 0, %236 ]
%245 = getelementptr inbounds [500 x double], [500 x double]* %16, i64 0, i64 %242
%246 = load double, double* %245
%247 = fadd double %243, %246
%248 = add nuw nsw i64 %242, 1
%249 = add i64 %244, 1
%250 = icmp eq i64 %249, %194
br i1 %250, label %251, label %241
251: ; preds = %241, %236
%252 = phi double [ %237, %236 ], [ %247, %241 ]
store double %101, double* %7
br label %253
253: ; preds = %47, %61, %251
%254 = phi double [ %51, %47 ], [ %51, %61 ], [ %252, %251 ]
%255 = fcmp oeq double %50, %3
br i1 %255, label %256, label %258
256: ; preds = %253
%257 = fneg double %254
br label %258
258: ; preds = %253, %256, %10, %43
%259 = phi double [ 0.000000e+00, %10 ], [ 0.000000e+00, %43 ], [ %257, %256 ], [ %254, %253 ]
ret double %259
}