#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 */
int /*<<< orphan*/ QuadSD_ak1(int, double, double, double *, double *, double *,
                              double *);
int /*<<< orphan*/ Quad_ak1(double, double, double, double *, double *,
                            double *, double *);
int calcSC_ak1(int, double, double, double *, double *, double *, double *,
               double *, double *, double *, double *, double *, double *,
               double, double, double *);
double fabs(double);
int /*<<< orphan*/ newest_ak1(int, double *, double *, double, double, double,
                              double, double, double, double, double, double,
                              double, double, double, double *, int, double *);
int /*<<< orphan*/ nextK_ak1(int, int, double, double, double, double *,
                             double *, double *, double *, double *);
double sqrt(double);
void QuadIT_ak1(int N, int *NZ, double uu, double vv, double *szr, double *szi,
                double *lzr, double *lzi, double qp[100 + 1], int NN, double *a,
                double *b, double p[100 + 1], double qk[100 + 1], double *a1,
                double *a3, double *a7, double *d, double *e, double *f,
                double *g, double *h, double K[100 + 1]) {
  int i, j = 0, tFlag, triedFlag = 0;
  double c, ee, mp, omp, relstp, t, u, ui, v, vi, zm;
  *NZ = 0;
  u = uu;
  v = vv;
  do {
    Quad_ak1(1.0, u, v, szr, szi, lzr, lzi);
    if (fabs(fabs(*szr) - fabs(*lzr)) > 0.01 * fabs(*lzr))
      break;
    QuadSD_ak1(NN, u, v, p, qp, a, b);
    mp = fabs(-((*szr) * (*b)) + (*a)) + fabs((*szi) * (*b));
    zm = sqrt(fabs(v));
    ee = 2.0 * fabs(qp[0]);
    t = -((*szr) * (*b));
    for (i = 1; i < N; i++)
      ee = ee * zm + fabs(qp[i]);
    ee = ee * zm + fabs((*a) + t);
    ee = (9.0 * ee + 2.0 * fabs(t) - 7.0 * (fabs((*a) + t) + zm * fabs((*b)))) *
         2.2204460492503131e-016;
    if (mp <= 20.0 * ee) {
      *NZ = 2;
      break;
    }
    j++;
    if (j > 20)
      break;
    if (j >= 2) {
      if ((relstp <= 0.01) && (mp >= omp) && (!triedFlag)) {
        relstp =
            ((relstp < 2.2204460492503131e-016) ? sqrt(2.2204460492503131e-016)
                                                : sqrt(relstp));
        u -= u * relstp;
        v += v * relstp;
        QuadSD_ak1(NN, u, v, p, qp, a, b);
        for (i = 0; i < 5; i++) {
          tFlag =
              calcSC_ak1(N, *a, *b, a1, a3, a7, &c, d, e, f, g, h, K, u, v, qk);
          nextK_ak1(N, tFlag, *a, *b, *a1, a3, a7, K, qk, qp);
        }
        triedFlag = 1;
        j = 0;
      }
    }
    omp = mp;
    tFlag = calcSC_ak1(N, *a, *b, a1, a3, a7, &c, d, e, f, g, h, K, u, v, qk);
    nextK_ak1(N, tFlag, *a, *b, *a1, a3, a7, K, qk, qp);
    tFlag = calcSC_ak1(N, *a, *b, a1, a3, a7, &c, d, e, f, g, h, K, u, v, qk);
    newest_ak1(tFlag, &ui, &vi, *a, *a1, *a3, *a7, *b, c, *d, *f, *g, *h, u, v,
               K, N, p);
    if (vi != 0) {
      relstp = fabs((-v + vi) / vi);
      u = ui;
      v = vi;
    }
  } while (vi != 0);
  return;
}


x86 assembly (clang, -O0):
<QuadIT_ak1>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %rbx
sub    $0xe8,%rsp
mov    0x80(%rbp),%rax
mov    0x78(%rbp),%rax
mov    0x70(%rbp),%rax
mov    0x68(%rbp),%rax
mov    0x60(%rbp),%rax
mov    0x58(%rbp),%rax
mov    0x50(%rbp),%rax
mov    0x48(%rbp),%rax
mov    0x40(%rbp),%rax
mov    0x38(%rbp),%rax
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%rax
mov    %edi,-0x1c(%rbp)
mov    %rsi,-0x28(%rbp)
movsd  %xmm0,-0x30(%rbp)
movsd  %xmm1,-0x38(%rbp)
mov    %rdx,-0x40(%rbp)
mov    %rcx,-0x48(%rbp)
mov    %r8,-0x50(%rbp)
mov    %r9,-0x58(%rbp)
movl   $0x0,-0x60(%rbp)
movl   $0x0,-0x68(%rbp)
mov    -0x28(%rbp),%rax
movl   $0x0,(%rax)
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0xb0(%rbp)
movsd  -0xa0(%rbp),%xmm1
ff
movsd  -0xb0(%rbp),%xmm2
ff
mov    -0x40(%rbp),%rdi
mov    -0x48(%rbp),%rsi
mov    -0x50(%rbp),%rdx
mov    -0x58(%rbp),%rcx
movsd  0xddf(%rip),%xmm0
call   1060 <Quad_ak1@plt>
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm0
movaps 0xe03(%rip),%xmm1
pand   %xmm1,%xmm0
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm1
movaps 0xdf0(%rip),%xmm2
pand   %xmm2,%xmm1
subsd  %xmm1,%xmm0
movaps 0xde1(%rip),%xmm1
pand   %xmm1,%xmm0
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm2
movaps 0xdce(%rip),%xmm1
pand   %xmm1,%xmm2
movsd  0xd82(%rip),%xmm1
mulsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
jbe    1291 <QuadIT_ak1+0x131>
jmp    196c <QuadIT_ak1+0x80c>
mov    0x18(%rbp),%edi
movsd  -0xa0(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm1
ff
mov    0x30(%rbp),%rsi
mov    0x10(%rbp),%rdx
mov    0x20(%rbp),%rcx
mov    0x28(%rbp),%r8
call   1030 <QuadSD_ak1@plt>
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x28(%rbp),%rax
mulsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    0x20(%rbp),%rax
addsd  (%rax),%xmm0
movaps 0xd51(%rip),%xmm1
pand   %xmm1,%xmm0
mov    -0x48(%rbp),%rax
movsd  (%rax),%xmm1
mov    0x28(%rbp),%rax
mulsd  (%rax),%xmm1
movaps 0xd36(%rip),%xmm2
pand   %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0xb0(%rbp),%xmm0
ff
movaps 0xd1a(%rip),%xmm1
pand   %xmm1,%xmm0
call   1070 <sqrt@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
mov    0x10(%rbp),%rax
movsd  (%rax),%xmm1
movaps 0xcfa(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0xcbe(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x28(%rbp),%rax
mulsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movl   $0x1,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    13dd <QuadIT_ak1+0x27d>
movsd  -0x78(%rbp),%xmm0
movsd  -0xc0(%rbp),%xmm2
ff
mov    0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movaps 0xc82(%rip),%xmm3
pand   %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    1391 <QuadIT_ak1+0x231>
movsd  -0x78(%rbp),%xmm0
movsd  -0xc0(%rbp),%xmm2
ff
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm1
addsd  -0x98(%rbp),%xmm1
ff
movaps 0xc3f(%rip),%xmm3
pand   %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm1
movsd  -0x98(%rbp),%xmm2
ff
movaps 0xc1a(%rip),%xmm0
pand   %xmm0,%xmm2
movsd  0xbde(%rip),%xmm0
mulsd  %xmm2,%xmm0
movsd  0xbf2(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm2
addsd  -0x98(%rbp),%xmm2
ff
movaps 0xbe3(%rip),%xmm0
pand   %xmm0,%xmm2
movsd  -0xc0(%rbp),%xmm0
ff
mov    0x28(%rbp),%rax
movsd  (%rax),%xmm3
movaps 0xbc8(%rip),%xmm4
pand   %xmm4,%xmm3
mulsd  %xmm3,%xmm0
addsd  %xmm2,%xmm0
movsd  0xb9c(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xb84(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x80(%rbp),%xmm1
movsd  0xb66(%rip),%xmm0
mulsd  -0x78(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jb     14d0 <QuadIT_ak1+0x370>
mov    -0x28(%rbp),%rax
movl   $0x2,(%rax)
jmp    196c <QuadIT_ak1+0x80c>
mov    -0x60(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x60(%rbp)
cmpl   $0x14,-0x60(%rbp)
jle    14e8 <QuadIT_ak1+0x388>
jmp    196c <QuadIT_ak1+0x80c>
cmpl   $0x2,-0x60(%rbp)
jl     16f0 <QuadIT_ak1+0x590>
movsd  0xb06(%rip),%xmm0
ucomisd -0x90(%rbp),%xmm0
ff
jb     16eb <QuadIT_ak1+0x58b>
movsd  -0x80(%rbp),%xmm0
ucomisd -0x88(%rbp),%xmm0
ff
jb     16eb <QuadIT_ak1+0x58b>
cmpl   $0x0,-0x68(%rbp)
jne    16eb <QuadIT_ak1+0x58b>
movsd  0xaf3(%rip),%xmm0
ucomisd -0x90(%rbp),%xmm0
ff
jbe    1555 <QuadIT_ak1+0x3f5>
movsd  0xadd(%rip),%xmm0
call   1070 <sqrt@plt>
movsd  %xmm0,-0xc8(%rbp)
ff
jmp    156a <QuadIT_ak1+0x40a>
movsd  -0x90(%rbp),%xmm0
ff
call   1070 <sqrt@plt>
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movsd  -0x90(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  -0x90(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x18(%rbp),%edi
movsd  -0xa0(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm1
ff
mov    0x30(%rbp),%rsi
mov    0x10(%rbp),%rdx
mov    0x20(%rbp),%rcx
mov    0x28(%rbp),%r8
call   1030 <QuadSD_ak1@plt>
movl   $0x0,-0x5c(%rbp)
cmpl   $0x5,-0x5c(%rbp)
jge    16dd <QuadIT_ak1+0x57d>
mov    -0x1c(%rbp),%edi
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x28(%rbp),%rax
movsd  (%rax),%xmm1
mov    0x40(%rbp),%rsi
mov    0x48(%rbp),%rdx
mov    0x50(%rbp),%rcx
mov    0x58(%rbp),%r9
mov    0x60(%rbp),%r15
mov    0x68(%rbp),%r14
mov    0x70(%rbp),%rbx
mov    0x78(%rbp),%r11
mov    0x80(%rbp),%r10
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm3
ff
mov    0x38(%rbp),%rax
lea    -0x70(%rbp),%r8
mov    %r15,(%rsp)
mov    %r14,0x8(%rsp)
mov    %rbx,0x10(%rsp)
mov    %r11,0x18(%rsp)
mov    %r10,0x20(%rsp)
mov    %rax,0x28(%rsp)
call   1040 <calcSC_ak1@plt>
mov    %eax,-0x64(%rbp)
mov    -0x1c(%rbp),%edi
mov    -0x64(%rbp),%esi
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x28(%rbp),%rax
movsd  (%rax),%xmm1
mov    0x40(%rbp),%rax
movsd  (%rax),%xmm2
mov    0x48(%rbp),%rdx
mov    0x50(%rbp),%rcx
mov    0x80(%rbp),%r8
mov    0x38(%rbp),%r9
mov    0x10(%rbp),%rax
mov    %rax,(%rsp)
call   1080 <nextK_ak1@plt>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    1610 <QuadIT_ak1+0x4b0>
movl   $0x1,-0x68(%rbp)
movl   $0x0,-0x60(%rbp)
jmp    16f0 <QuadIT_ak1+0x590>
movsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x1c(%rbp),%edi
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x28(%rbp),%rax
movsd  (%rax),%xmm1
mov    0x40(%rbp),%rsi
mov    0x48(%rbp),%rdx
mov    0x50(%rbp),%rcx
mov    0x58(%rbp),%r9
mov    0x60(%rbp),%r15
mov    0x68(%rbp),%r14
mov    0x70(%rbp),%rbx
mov    0x78(%rbp),%r11
mov    0x80(%rbp),%r10
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm3
ff
mov    0x38(%rbp),%rax
lea    -0x70(%rbp),%r8
mov    %r15,(%rsp)
mov    %r14,0x8(%rsp)
mov    %rbx,0x10(%rsp)
mov    %r11,0x18(%rsp)
mov    %r10,0x20(%rsp)
mov    %rax,0x28(%rsp)
call   1040 <calcSC_ak1@plt>
mov    %eax,-0x64(%rbp)
mov    -0x1c(%rbp),%edi
mov    -0x64(%rbp),%esi
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x28(%rbp),%rax
movsd  (%rax),%xmm1
mov    0x40(%rbp),%rax
movsd  (%rax),%xmm2
mov    0x48(%rbp),%rdx
mov    0x50(%rbp),%rcx
mov    0x80(%rbp),%r8
mov    0x38(%rbp),%r9
mov    0x10(%rbp),%rax
mov    %rax,(%rsp)
call   1080 <nextK_ak1@plt>
mov    -0x1c(%rbp),%edi
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x28(%rbp),%rax
movsd  (%rax),%xmm1
mov    0x40(%rbp),%rsi
mov    0x48(%rbp),%rdx
mov    0x50(%rbp),%rcx
mov    0x58(%rbp),%r9
mov    0x60(%rbp),%r15
mov    0x68(%rbp),%r14
mov    0x70(%rbp),%rbx
mov    0x78(%rbp),%r11
mov    0x80(%rbp),%r10
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm3
ff
mov    0x38(%rbp),%rax
lea    -0x70(%rbp),%r8
mov    %r15,(%rsp)
mov    %r14,0x8(%rsp)
mov    %rbx,0x10(%rsp)
mov    %r11,0x18(%rsp)
mov    %r10,0x20(%rsp)
mov    %rax,0x28(%rsp)
call   1040 <calcSC_ak1@plt>
mov    %eax,-0x64(%rbp)
mov    -0x64(%rbp),%edi
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x40(%rbp),%rax
movsd  (%rax),%xmm1
mov    0x48(%rbp),%rax
movsd  (%rax),%xmm2
mov    0x50(%rbp),%rax
movsd  (%rax),%xmm3
mov    0x28(%rbp),%rax
movsd  (%rax),%xmm4
movsd  -0x70(%rbp),%xmm5
mov    0x58(%rbp),%rax
movsd  (%rax),%xmm6
mov    0x68(%rbp),%rax
movsd  (%rax),%xmm7
mov    0x70(%rbp),%rax
movsd  (%rax),%xmm11
mov    0x78(%rbp),%rax
movsd  (%rax),%xmm10
movsd  -0xa0(%rbp),%xmm9
ff ff
movsd  -0xb0(%rbp),%xmm8
ff ff
mov    0x80(%rbp),%rcx
mov    -0x1c(%rbp),%r8d
mov    0x30(%rbp),%r9
lea    -0xa8(%rbp),%rsi
lea    -0xb8(%rbp),%rdx
movsd  %xmm11,(%rsp)
movsd  %xmm10,0x8(%rsp)
movsd  %xmm9,0x10(%rsp)
movsd  %xmm8,0x18(%rsp)
call   1050 <newest_ak1@plt>
movsd  -0xb8(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    18ea <QuadIT_ak1+0x78a>
jp     18ea <QuadIT_ak1+0x78a>
jmp    194c <QuadIT_ak1+0x7ec>
movsd  -0xb0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
addsd  -0xb8(%rbp),%xmm0
ff
divsd  -0xb8(%rbp),%xmm0
ff
movaps 0x720(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
jmp    1951 <QuadIT_ak1+0x7f1>
movsd  -0xb8(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1201 <QuadIT_ak1+0xa1>
jp     1201 <QuadIT_ak1+0xa1>
add    $0xe8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<QuadIT_ak1>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xd8,%rsp
mov    %r9,0x90(%rsp)
mov    %r8,0x88(%rsp)
mov    %rcx,0x58(%rsp)
mov    %rdx,0x38(%rsp)
movapd %xmm1,%xmm2
movapd %xmm0,%xmm1
mov    %rsi,0x70(%rsp)
movl   $0x0,(%rsi)
mov    %edi,0x4(%rsp)
mov    %edi,%eax
lea    -0x1(%rax),%rcx
add    $0xfffffffffffffffe,%rax
mov    %rax,0x78(%rsp)
mov    %ecx,%eax
and    $0x3,%eax
mov    %rax,0x48(%rsp)
and    $0xfffffffffffffffc,%rcx
mov    %rcx,0x50(%rsp)
mov    0x140(%rsp),%r15
mov    0x130(%rsp),%r14
mov    0x120(%rsp),%r13
mov    0x110(%rsp),%rbp
xor    %eax,%eax
mov    %rax,0x40(%rsp)
xor    %eax,%eax
mov    %rax,0x10(%rsp)
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movapd %xmm2,0x20(%rsp)
movsd  0xdf2(%rip),%xmm0
movsd  %xmm1,0x8(%rsp)
mov    0x38(%rsp),%r12
mov    %r12,%rdi
mov    0x58(%rsp),%rsi
mov    0x88(%rsp),%rbx
mov    %rbx,%rdx
mov    0x90(%rsp),%rcx
call   1060 <Quad_ak1@plt>
movaps 0x20(%rsp),%xmm3
movsd  (%r12),%xmm0
movapd 0xdf4(%rip),%xmm2
andpd  %xmm2,%xmm0
movsd  (%rbx),%xmm1
andpd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
andpd  %xmm2,%xmm0
mulsd  0xda0(%rip),%xmm1
ucomisd %xmm1,%xmm0
mov    0x148(%rsp),%r12
mov    0x128(%rsp),%rbx
ja     1900 <QuadIT_ak1+0x7a0>
mov    0x118(%rsp),%edi
movsd  0x8(%rsp),%xmm0
movaps %xmm3,%xmm1
mov    %r14,%rsi
mov    %rbp,%rdx
mov    %r13,%rcx
mov    %rbx,%r8
call   1030 <QuadSD_ak1@plt>
movapd 0xd94(%rip),%xmm8
movsd  (%rbx),%xmm10
mov    0x38(%rsp),%rax
movsd  (%rax),%xmm12
mulsd  %xmm10,%xmm12
mov    0x58(%rsp),%rax
mulsd  (%rax),%xmm10
movsd  0x0(%r13),%xmm11
movapd 0x20(%rsp),%xmm0
andpd  %xmm8,%xmm0
ucomisd 0xd55(%rip),%xmm0
jb     12f0 <QuadIT_ak1+0x190>
sqrtsd %xmm0,%xmm0
jmp    1334 <QuadIT_ak1+0x1d4>
nopl   0x0(%rax,%rax,1)
movapd %xmm10,0x60(%rsp)
movapd %xmm11,0xb0(%rsp)
movsd  %xmm12,0x80(%rsp)
call   1070 <sqrt@plt>
movsd  0x80(%rsp),%xmm12
movapd 0xb0(%rsp),%xmm11
movapd 0x60(%rsp),%xmm10
movapd 0xd0c(%rip),%xmm8
mov    0x50(%rsp),%rcx
mov    0x48(%rsp),%rdx
movsd  0x0(%rbp),%xmm3
movapd 0xcf4(%rip),%xmm9
andpd  %xmm9,%xmm3
addsd  %xmm3,%xmm3
movsd  (%rbx),%xmm1
mov    0x38(%rsp),%rax
movsd  (%rax),%xmm4
cmpl   $0x2,0x4(%rsp)
jl     140b <QuadIT_ak1+0x2ab>
mov    $0x1,%eax
cmpq   $0x3,0x78(%rsp)
jb     13d9 <QuadIT_ak1+0x279>
xor    %eax,%eax
nopl   0x0(%rax)
movsd  0x8(%rbp,%rax,8),%xmm2
movsd  0x10(%rbp,%rax,8),%xmm5
movsd  0x18(%rbp,%rax,8),%xmm6
movsd  0x20(%rbp,%rax,8),%xmm7
andpd  %xmm8,%xmm2
mulsd  %xmm0,%xmm3
addsd  %xmm2,%xmm3
andpd  %xmm8,%xmm5
mulsd  %xmm0,%xmm3
addsd  %xmm5,%xmm3
andpd  %xmm8,%xmm6
mulsd  %xmm0,%xmm3
addsd  %xmm6,%xmm3
andpd  %xmm8,%xmm7
mulsd  %xmm0,%xmm3
addsd  %xmm7,%xmm3
add    $0x4,%rax
cmp    %rax,%rcx
jne    1380 <QuadIT_ak1+0x220>
add    $0x1,%rax
test   %rdx,%rdx
je     140b <QuadIT_ak1+0x2ab>
lea    0x0(,%rax,8),%rax
add    %rbp,%rax
xor    %ecx,%ecx
nopl   0x0(%rax,%rax,1)
movsd  (%rax,%rcx,8),%xmm2
andpd  %xmm9,%xmm2
mulsd  %xmm0,%xmm3
addsd  %xmm2,%xmm3
add    $0x1,%rcx
cmp    %rcx,%rdx
jne    13f0 <QuadIT_ak1+0x290>
subsd  %xmm12,%xmm11
andpd  %xmm8,%xmm11
andpd  %xmm8,%xmm10
addsd  %xmm11,%xmm10
xorpd  0xc29(%rip),%xmm4
mulsd  %xmm1,%xmm4
movsd  0x0(%r13),%xmm2
movapd %xmm4,%xmm5
addsd  %xmm2,%xmm5
andpd  %xmm8,%xmm5
mulsd  %xmm0,%xmm3
addsd  %xmm5,%xmm3
andpd  %xmm8,%xmm4
addsd  %xmm4,%xmm4
mulsd  0xbb9(%rip),%xmm3
addsd  %xmm4,%xmm3
movapd %xmm1,%xmm4
andpd  %xmm8,%xmm4
mulsd  %xmm0,%xmm4
addsd  %xmm5,%xmm4
mulsd  0xba4(%rip),%xmm4
addsd  %xmm3,%xmm4
mulsd  0xba0(%rip),%xmm4
mulsd  0xba0(%rip),%xmm4
ucomisd %xmm10,%xmm4
jae    18f5 <QuadIT_ak1+0x795>
cmpl   $0x13,0x10(%rsp)
movapd 0x20(%rsp),%xmm3
jg     1900 <QuadIT_ak1+0x7a0>
mov    0x10(%rsp),%rcx
lea    0x1(%rcx),%eax
test   %ecx,%ecx
movapd %xmm10,0x60(%rsp)
jle    1510 <QuadIT_ak1+0x3b0>
movsd  0xb49(%rip),%xmm0
movapd 0xc0(%rsp),%xmm4
ucomisd %xmm4,%xmm0
jb     1510 <QuadIT_ak1+0x3b0>
ucomisd 0x98(%rsp),%xmm10
jb     1510 <QuadIT_ak1+0x3b0>
cmpl   $0x0,0x40(%rsp)
jne    1510 <QuadIT_ak1+0x3b0>
movsd  0xb37(%rip),%xmm0
ucomisd %xmm4,%xmm0
movsd  0xb3b(%rip),%xmm1
movsd  0x8(%rsp),%xmm2
ja     1548 <QuadIT_ak1+0x3e8>
ucomisd 0xb33(%rip),%xmm4
jb     152f <QuadIT_ak1+0x3cf>
xorps  %xmm1,%xmm1
sqrtsd %xmm4,%xmm1
jmp    1548 <QuadIT_ak1+0x3e8>
mov    %rax,0x10(%rsp)
mov    0x150(%rsp),%rcx
lea    0x18(%rsp),%r8
mov    0x180(%rsp),%rbp
jmp    16bf <QuadIT_ak1+0x55f>
movapd %xmm4,%xmm0
call   1070 <sqrt@plt>
movapd 0x20(%rsp),%xmm3
movsd  0x8(%rsp),%xmm2
movapd %xmm0,%xmm1
movapd %xmm2,%xmm0
mulsd  %xmm1,%xmm0
subsd  %xmm0,%xmm2
movsd  %xmm2,0x8(%rsp)
mulsd  %xmm3,%xmm1
addsd  %xmm3,%xmm1
movsd  %xmm1,0x20(%rsp)
mov    0x118(%rsp),%edi
movapd %xmm2,%xmm0
mov    %r14,%rsi
mov    %rbp,%rdx
mov    %r13,%rcx
mov    %rbx,%r8
call   1030 <QuadSD_ak1@plt>
mov    $0x5,%ebx
nopl   0x0(%rax)
mov    0x120(%rsp),%r13
movsd  0x0(%r13),%xmm0
mov    0x128(%rsp),%rax
movsd  (%rax),%xmm1
mov    0x4(%rsp),%edi
mov    0x140(%rsp),%rbp
mov    %rbp,%rsi
mov    0x148(%rsp),%rdx
mov    0x150(%rsp),%r15
mov    %r15,%rcx
lea    0x18(%rsp),%r8
mov    0x158(%rsp),%r9
movsd  0x8(%rsp),%xmm2
movsd  0x20(%rsp),%xmm3
mov    0x138(%rsp),%r14
push   %r14
mov    0x188(%rsp),%r12
push   %r12
push   0x188(%rsp)
push   0x188(%rsp)
push   0x188(%rsp)
push   0x188(%rsp)
call   1040 <calcSC_ak1@plt>
add    $0x30,%rsp
movsd  0x0(%r13),%xmm0
mov    0x128(%rsp),%rcx
movsd  (%rcx),%xmm1
movsd  0x0(%rbp),%xmm2
sub    $0x8,%rsp
mov    0xc(%rsp),%edi
mov    %eax,%esi
mov    0x150(%rsp),%rdx
mov    %r15,%rcx
mov    %r12,%r8
mov    %r14,%r9
push   0x118(%rsp)
call   1080 <nextK_ak1@plt>
add    $0x10,%rsp
add    $0xffffffff,%ebx
jne    1590 <QuadIT_ak1+0x430>
mov    0x120(%rsp),%r13
movsd  0x0(%r13),%xmm2
mov    0x128(%rsp),%rax
movsd  (%rax),%xmm1
xor    %eax,%eax
mov    %rax,0x10(%rsp)
mov    $0x1,%eax
mov    %rax,0x40(%rsp)
mov    0x150(%rsp),%rcx
mov    0x148(%rsp),%r12
mov    0x140(%rsp),%r15
lea    0x18(%rsp),%r8
mov    0x180(%rsp),%rbp
movsd  0x20(%rsp),%xmm3
movsd  %xmm3,0x20(%rsp)
mov    0x4(%rsp),%edi
movapd %xmm2,%xmm0
mov    %r15,%rsi
mov    %r12,%rdx
mov    0x158(%rsp),%r9
movsd  0x8(%rsp),%xmm2
mov    0x138(%rsp),%r14
push   %r14
push   %rbp
mov    0x188(%rsp),%rax
push   %rax
mov    %r12,%r14
mov    0x188(%rsp),%r12
push   %r12
mov    0x188(%rsp),%r12
push   %r12
mov    0x188(%rsp),%rax
push   %rax
mov    %rbp,%r12
mov    %rcx,%rbx
call   1040 <calcSC_ak1@plt>
add    $0x30,%rsp
movsd  0x0(%r13),%xmm0
mov    0x128(%rsp),%r13
movsd  0x0(%r13),%xmm1
movsd  (%r15),%xmm2
sub    $0x8,%rsp
mov    0xc(%rsp),%r13d
mov    %r13d,%edi
mov    %eax,%esi
mov    %r14,%rdx
mov    %rbx,%rcx
mov    %rbp,%r8
mov    0x140(%rsp),%r9
mov    0x118(%rsp),%rbp
push   %rbp
call   1080 <nextK_ak1@plt>
add    $0x10,%rsp
mov    0x120(%rsp),%rax
movsd  (%rax),%xmm0
mov    0x128(%rsp),%rax
movsd  (%rax),%xmm1
mov    %r13d,%edi
mov    %r15,%rsi
mov    %r14,%rbp
mov    %r14,%rdx
mov    %rbx,%rcx
lea    0x18(%rsp),%r8
mov    0x158(%rsp),%r9
movsd  0x8(%rsp),%xmm2
movsd  0x20(%rsp),%xmm3
push   0x138(%rsp)
push   %r12
push   0x188(%rsp)
mov    0x188(%rsp),%r14
push   %r14
mov    0x188(%rsp),%r12
push   %r12
push   0x188(%rsp)
call   1040 <calcSC_ak1@plt>
add    $0x30,%rsp
mov    0x120(%rsp),%rcx
movsd  (%rcx),%xmm0
movsd  (%r15),%xmm1
movsd  0x0(%rbp),%xmm2
movsd  (%rbx),%xmm3
mov    0x110(%rsp),%rbp
mov    0x128(%rsp),%r13
movsd  0x0(%r13),%xmm4
mov    0x120(%rsp),%r13
movsd  0x18(%rsp),%xmm5
mov    0x158(%rsp),%rcx
movsd  (%rcx),%xmm6
movsd  (%r12),%xmm7
movsd  (%r14),%xmm8
mov    0x178(%rsp),%rcx
movsd  (%rcx),%xmm9
sub    $0x20,%rsp
movsd  0x40(%rsp),%xmm10
movsd  %xmm10,0x18(%rsp)
movsd  0x28(%rsp),%xmm10
movsd  %xmm10,0x10(%rsp)
movsd  %xmm9,0x8(%rsp)
movsd  %xmm8,(%rsp)
mov    %eax,%edi
lea    0xc8(%rsp),%rsi
lea    0xc0(%rsp),%rdx
mov    0x1a0(%rsp),%rcx
mov    0x24(%rsp),%r8d
mov    0x150(%rsp),%r14
mov    %r14,%r9
call   1050 <newest_ak1@plt>
add    $0x20,%rsp
movsd  0xa0(%rsp),%xmm2
ucomisd 0x783(%rip),%xmm2
movapd 0x60(%rsp),%xmm0
jne    18bf <QuadIT_ak1+0x75f>
jnp    1900 <QuadIT_ak1+0x7a0>
movapd %xmm2,%xmm1
subsd  0x20(%rsp),%xmm1
divsd  %xmm2,%xmm1
andpd  0x76b(%rip),%xmm1
movapd %xmm1,0xc0(%rsp)
movsd  0xa8(%rsp),%xmm1
movsd  %xmm0,0x98(%rsp)
jmp    1200 <QuadIT_ak1+0xa0>
mov    0x70(%rsp),%rax
movl   $0x2,(%rax)
add    $0xd8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @QuadIT_ak1(i32 %0, i32* %1, double %2, double %3, double* %4, double* %5, double* %6, double* %7, double* %8, i32 %9, double* %10, double* %11, double* %12, double* %13, double* %14, double* %15, double* %16, double* %17, double* %18, double* %19, double* %20, double* %21, double* %22) {
%24 = alloca i32
%25 = alloca i32*
%26 = alloca double
%27 = alloca double
%28 = alloca double*
%29 = alloca double*
%30 = alloca double*
%31 = alloca double*
%32 = alloca double*
%33 = alloca i32
%34 = alloca double*
%35 = alloca double*
%36 = alloca double*
%37 = alloca double*
%38 = alloca double*
%39 = alloca double*
%40 = alloca double*
%41 = alloca double*
%42 = alloca double*
%43 = alloca double*
%44 = alloca double*
%45 = alloca double*
%46 = alloca double*
%47 = alloca i32
%48 = alloca i32
%49 = alloca i32
%50 = alloca i32
%51 = alloca double
%52 = alloca double
%53 = alloca double
%54 = alloca double
%55 = alloca double
%56 = alloca double
%57 = alloca double
%58 = alloca double
%59 = alloca double
%60 = alloca double
%61 = alloca double
store i32 %0, i32* %24
store i32* %1, i32** %25
store double %2, double* %26
store double %3, double* %27
store double* %4, double** %28
store double* %5, double** %29
store double* %6, double** %30
store double* %7, double** %31
store double* %8, double** %32
store i32 %9, i32* %33
store double* %10, double** %34
store double* %11, double** %35
store double* %12, double** %36
store double* %13, double** %37
store double* %14, double** %38
store double* %15, double** %39
store double* %16, double** %40
store double* %17, double** %41
store double* %18, double** %42
store double* %19, double** %43
store double* %20, double** %44
store double* %21, double** %45
store double* %22, double** %46
store i32 0, i32* %48
store i32 0, i32* %50
%62 = load i32*, i32** %25
store i32 0, i32* %62
%63 = load double, double* %26
store double %63, double* %57
%64 = load double, double* %27
store double %64, double* %59
br label %65
65: ; preds = %354, %23
%66 = load double, double* %57
%67 = load double, double* %59
%68 = load double*, double** %28
%69 = load double*, double** %29
%70 = load double*, double** %30
%71 = load double*, double** %31
%72 = call i32 @Quad_ak1(double 1.000000e+00, double %66, double %67, double* %68, double* %69, double* %70, double* %71)
%73 = load double*, double** %28
%74 = load double, double* %73
%75 = call double @llvm.fabs.f64(double %74)
%76 = load double*, double** %30
%77 = load double, double* %76
%78 = call double @llvm.fabs.f64(double %77)
%79 = fsub double %75, %78
%80 = call double @llvm.fabs.f64(double %79)
%81 = load double*, double** %30
%82 = load double, double* %81
%83 = call double @llvm.fabs.f64(double %82)
%84 = fmul double 1.000000e-02, %83
%85 = fcmp ogt double %80, %84
br i1 %85, label %86, label %87
86: ; preds = %65
br label %357
87: ; preds = %65
%88 = load i32, i32* %33
%89 = load double, double* %57
%90 = load double, double* %59
%91 = load double*, double** %36
%92 = load double*, double** %32
%93 = load double*, double** %34
%94 = load double*, double** %35
%95 = call i32 @QuadSD_ak1(i32 %88, double %89, double %90, double* %91, double* %92, double* %93, double* %94)
%96 = load double*, double** %28
%97 = load double, double* %96
%98 = load double*, double** %35
%99 = load double, double* %98
%100 = fmul double %97, %99
%101 = fneg double %100
%102 = load double*, double** %34
%103 = load double, double* %102
%104 = fadd double %101, %103
%105 = call double @llvm.fabs.f64(double %104)
%106 = load double*, double** %29
%107 = load double, double* %106
%108 = load double*, double** %35
%109 = load double, double* %108
%110 = fmul double %107, %109
%111 = call double @llvm.fabs.f64(double %110)
%112 = fadd double %105, %111
store double %112, double* %53
%113 = load double, double* %59
%114 = call double @llvm.fabs.f64(double %113)
%115 = call double @sqrt(double %114)
store double %115, double* %61
%116 = load double*, double** %32
%117 = getelementptr inbounds double, double* %116, i64 0
%118 = load double, double* %117
%119 = call double @llvm.fabs.f64(double %118)
%120 = fmul double 2.000000e+00, %119
store double %120, double* %52
%121 = load double*, double** %28
%122 = load double, double* %121
%123 = load double*, double** %35
%124 = load double, double* %123
%125 = fmul double %122, %124
%126 = fneg double %125
store double %126, double* %56
store i32 1, i32* %47
br label %127
127: ; preds = %141, %87
%128 = load i32, i32* %47
%129 = load i32, i32* %24
%130 = icmp slt i32 %128, %129
br i1 %130, label %131, label %144
131: ; preds = %127
%132 = load double, double* %52
%133 = load double, double* %61
%134 = load double*, double** %32
%135 = load i32, i32* %47
%136 = sext i32 %135 to i64
%137 = getelementptr inbounds double, double* %134, i64 %136
%138 = load double, double* %137
%139 = call double @llvm.fabs.f64(double %138)
%140 = call double @llvm.fmuladd.f64(double %132, double %133, double %139)
store double %140, double* %52
br label %141
141: ; preds = %131
%142 = load i32, i32* %47
%143 = add nsw i32 %142, 1
store i32 %143, i32* %47
br label %127
144: ; preds = %127
%145 = load double, double* %52
%146 = load double, double* %61
%147 = load double*, double** %34
%148 = load double, double* %147
%149 = load double, double* %56
%150 = fadd double %148, %149
%151 = call double @llvm.fabs.f64(double %150)
%152 = call double @llvm.fmuladd.f64(double %145, double %146, double %151)
store double %152, double* %52
%153 = load double, double* %52
%154 = load double, double* %56
%155 = call double @llvm.fabs.f64(double %154)
%156 = fmul double 2.000000e+00, %155
%157 = call double @llvm.fmuladd.f64(double 9.000000e+00, double %153, double %156)
%158 = load double*, double** %34
%159 = load double, double* %158
%160 = load double, double* %56
%161 = fadd double %159, %160
%162 = call double @llvm.fabs.f64(double %161)
%163 = load double, double* %61
%164 = load double*, double** %35
%165 = load double, double* %164
%166 = call double @llvm.fabs.f64(double %165)
%167 = call double @llvm.fmuladd.f64(double %163, double %166, double %162)
%168 = call double @llvm.fmuladd.f64(double -7.000000e+00, double %167, double %157)
%169 = fmul double %168, 0x3CB0000000000000
store double %169, double* %52
%170 = load double, double* %53
%171 = load double, double* %52
%172 = fmul double 2.000000e+01, %171
%173 = fcmp ole double %170, %172
br i1 %173, label %174, label %176
174: ; preds = %144
%175 = load i32*, i32** %25
store i32 2, i32* %175
br label %357
176: ; preds = %144
%177 = load i32, i32* %48
%178 = add nsw i32 %177, 1
store i32 %178, i32* %48
%179 = load i32, i32* %48
%180 = icmp sgt i32 %179, 20
br i1 %180, label %181, label %182
181: ; preds = %176
br label %357
182: ; preds = %176
%183 = load i32, i32* %48
%184 = icmp sge i32 %183, 2
br i1 %184, label %185, label %263
185: ; preds = %182
%186 = load double, double* %55
%187 = fcmp ole double %186, 1.000000e-02
br i1 %187, label %188, label %262
188: ; preds = %185
%189 = load double, double* %53
%190 = load double, double* %54
%191 = fcmp oge double %189, %190
br i1 %191, label %192, label %262
192: ; preds = %188
%193 = load i32, i32* %50
%194 = icmp ne i32 %193, 0
br i1 %194, label %262, label %195
195: ; preds = %192
%196 = load double, double* %55
%197 = fcmp olt double %196, 0x3CB0000000000000
br i1 %197, label %198, label %200
198: ; preds = %195
%199 = call double @sqrt(double 0x3CB0000000000000)
br label %203
200: ; preds = %195
%201 = load double, double* %55
%202 = call double @sqrt(double %201)
br label %203
203: ; preds = %200, %198
%204 = phi double [ %199, %198 ], [ %202, %200 ]
store double %204, double* %55
%205 = load double, double* %57
%206 = load double, double* %55
%207 = load double, double* %57
%208 = fneg double %205
%209 = call double @llvm.fmuladd.f64(double %208, double %206, double %207)
store double %209, double* %57
%210 = load double, double* %59
%211 = load double, double* %55
%212 = load double, double* %59
%213 = call double @llvm.fmuladd.f64(double %210, double %211, double %212)
store double %213, double* %59
%214 = load i32, i32* %33
%215 = load double, double* %57
%216 = load double, double* %59
%217 = load double*, double** %36
%218 = load double*, double** %32
%219 = load double*, double** %34
%220 = load double*, double** %35
%221 = call i32 @QuadSD_ak1(i32 %214, double %215, double %216, double* %217, double* %218, double* %219, double* %220)
store i32 0, i32* %47
br label %222
222: ; preds = %258, %203
%223 = load i32, i32* %47
%224 = icmp slt i32 %223, 5
br i1 %224, label %225, label %261
225: ; preds = %222
%226 = load i32, i32* %24
%227 = load double*, double** %34
%228 = load double, double* %227
%229 = load double*, double** %35
%230 = load double, double* %229
%231 = load double*, double** %38
%232 = load double*, double** %39
%233 = load double*, double** %40
%234 = load double*, double** %41
%235 = load double*, double** %42
%236 = load double*, double** %43
%237 = load double*, double** %44
%238 = load double*, double** %45
%239 = load double*, double** %46
%240 = load double, double* %57
%241 = load double, double* %59
%242 = load double*, double** %37
%243 = call i32 @calcSC_ak1(i32 %226, double %228, double %230, double* %231, double* %232, double* %233, double* %51, double* %234, double* %235, double* %236, double* %237, double* %238, double* %239, double %240, double %241, double* %242)
store i32 %243, i32* %49
%244 = load i32, i32* %24
%245 = load i32, i32* %49
%246 = load double*, double** %34
%247 = load double, double* %246
%248 = load double*, double** %35
%249 = load double, double* %248
%250 = load double*, double** %38
%251 = load double, double* %250
%252 = load double*, double** %39
%253 = load double*, double** %40
%254 = load double*, double** %46
%255 = load double*, double** %37
%256 = load double*, double** %32
%257 = call i32 @nextK_ak1(i32 %244, i32 %245, double %247, double %249, double %251, double* %252, double* %253, double* %254, double* %255, double* %256)
br label %258
258: ; preds = %225
%259 = load i32, i32* %47
%260 = add nsw i32 %259, 1
store i32 %260, i32* %47
br label %222
261: ; preds = %222
store i32 1, i32* %50
store i32 0, i32* %48
br label %262
262: ; preds = %261, %192, %188, %185
br label %263
263: ; preds = %262, %182
%264 = load double, double* %53
store double %264, double* %54
%265 = load i32, i32* %24
%266 = load double*, double** %34
%267 = load double, double* %266
%268 = load double*, double** %35
%269 = load double, double* %268
%270 = load double*, double** %38
%271 = load double*, double** %39
%272 = load double*, double** %40
%273 = load double*, double** %41
%274 = load double*, double** %42
%275 = load double*, double** %43
%276 = load double*, double** %44
%277 = load double*, double** %45
%278 = load double*, double** %46
%279 = load double, double* %57
%280 = load double, double* %59
%281 = load double*, double** %37
%282 = call i32 @calcSC_ak1(i32 %265, double %267, double %269, double* %270, double* %271, double* %272, double* %51, double* %273, double* %274, double* %275, double* %276, double* %277, double* %278, double %279, double %280, double* %281)
store i32 %282, i32* %49
%283 = load i32, i32* %24
%284 = load i32, i32* %49
%285 = load double*, double** %34
%286 = load double, double* %285
%287 = load double*, double** %35
%288 = load double, double* %287
%289 = load double*, double** %38
%290 = load double, double* %289
%291 = load double*, double** %39
%292 = load double*, double** %40
%293 = load double*, double** %46
%294 = load double*, double** %37
%295 = load double*, double** %32
%296 = call i32 @nextK_ak1(i32 %283, i32 %284, double %286, double %288, double %290, double* %291, double* %292, double* %293, double* %294, double* %295)
%297 = load i32, i32* %24
%298 = load double*, double** %34
%299 = load double, double* %298
%300 = load double*, double** %35
%301 = load double, double* %300
%302 = load double*, double** %38
%303 = load double*, double** %39
%304 = load double*, double** %40
%305 = load double*, double** %41
%306 = load double*, double** %42
%307 = load double*, double** %43
%308 = load double*, double** %44
%309 = load double*, double** %45
%310 = load double*, double** %46
%311 = load double, double* %57
%312 = load double, double* %59
%313 = load double*, double** %37
%314 = call i32 @calcSC_ak1(i32 %297, double %299, double %301, double* %302, double* %303, double* %304, double* %51, double* %305, double* %306, double* %307, double* %308, double* %309, double* %310, double %311, double %312, double* %313)
store i32 %314, i32* %49
%315 = load i32, i32* %49
%316 = load double*, double** %34
%317 = load double, double* %316
%318 = load double*, double** %38
%319 = load double, double* %318
%320 = load double*, double** %39
%321 = load double, double* %320
%322 = load double*, double** %40
%323 = load double, double* %322
%324 = load double*, double** %35
%325 = load double, double* %324
%326 = load double, double* %51
%327 = load double*, double** %41
%328 = load double, double* %327
%329 = load double*, double** %43
%330 = load double, double* %329
%331 = load double*, double** %44
%332 = load double, double* %331
%333 = load double*, double** %45
%334 = load double, double* %333
%335 = load double, double* %57
%336 = load double, double* %59
%337 = load double*, double** %46
%338 = load i32, i32* %24
%339 = load double*, double** %36
%340 = call i32 @newest_ak1(i32 %315, double* %58, double* %60, double %317, double %319, double %321, double %323, double %325, double %326, double %328, double %330, double %332, double %334, double %335, double %336, double* %337, i32 %338, double* %339)
%341 = load double, double* %60
%342 = fcmp une double %341, 0.000000e+00
br i1 %342, label %343, label %353
343: ; preds = %263
%344 = load double, double* %59
%345 = fneg double %344
%346 = load double, double* %60
%347 = fadd double %345, %346
%348 = load double, double* %60
%349 = fdiv double %347, %348
%350 = call double @llvm.fabs.f64(double %349)
store double %350, double* %55
%351 = load double, double* %58
store double %351, double* %57
%352 = load double, double* %60
store double %352, double* %59
br label %353
353: ; preds = %343, %263
br label %354
354: ; preds = %353
%355 = load double, double* %60
%356 = fcmp une double %355, 0.000000e+00
br i1 %356, label %65, label %357
357: ; preds = %354, %181, %174, %86
ret void
}

LLVM IR (-O2):
define void @QuadIT_ak1(i32 %0, i32* nocapture writeonly %1, double %2, double %3, double* %4, double* %5, double* %6, double* %7, double* %8, i32 %9, double* %10, double* %11, double* %12, double* %13, double* %14, double* %15, double* %16, double* %17, double* %18, double* %19, double* %20, double* %21, double* %22) {
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = bitcast double* %24 to i8*
%28 = bitcast double* %25 to i8*
%29 = bitcast double* %26 to i8*
store i32 0, i32* %1
%30 = icmp sgt i32 %0, 1
%31 = zext i32 %0 to i64
%32 = add nsw i64 %31, -1
%33 = add nsw i64 %31, -2
%34 = and i64 %32, 3
%35 = icmp ult i64 %33, 3
%36 = and i64 %32, -4
%37 = icmp eq i64 %34, 0
br label %38
38: ; preds = %196, %23
%39 = phi i32 [ 0, %23 ], [ %171, %196 ]
%40 = phi double [ undef, %23 ], [ %65, %196 ]
%41 = phi double [ undef, %23 ], [ %199, %196 ]
%42 = phi i32 [ 0, %23 ], [ %172, %196 ]
%43 = phi double [ %2, %23 ], [ %200, %196 ]
%44 = phi double [ %3, %23 ], [ %194, %196 ]
%45 = call i32 @Quad_ak1(double 1.000000e+00, double %43, double %44, double* %4, double* %5, double* %6, double* %7)
%46 = load double, double* %4
%47 = call double @llvm.fabs.f64(double %46)
%48 = load double, double* %6
%49 = call double @llvm.fabs.f64(double %48)
%50 = fsub double %47, %49
%51 = call double @llvm.fabs.f64(double %50)
%52 = fmul double %49, 1.000000e-02
%53 = fcmp ogt double %51, %52
br i1 %53, label %201, label %54
54: ; preds = %38
%55 = call i32 @QuadSD_ak1(i32 %9, double %43, double %44, double* %12, double* %8, double* %10, double* %11)
%56 = load double, double* %4
%57 = load double, double* %11
%58 = load double, double* %10
%59 = fmul double %56, %57
%60 = fsub double %58, %59
%61 = call double @llvm.fabs.f64(double %60)
%62 = load double, double* %5
%63 = fmul double %57, %62
%64 = call double @llvm.fabs.f64(double %63)
%65 = fadd double %61, %64
%66 = call double @llvm.fabs.f64(double %44)
%67 = call double @sqrt(double %66)
%68 = load double, double* %8
%69 = call double @llvm.fabs.f64(double %68)
%70 = fmul double %69, 2.000000e+00
%71 = load double, double* %4
%72 = load double, double* %11
%73 = fneg double %71
%74 = fmul double %72, %73
br i1 %30, label %75, label %117
75: ; preds = %54
br i1 %35, label %102, label %76
76: ; preds = %75, %76
%77 = phi i64 [ %99, %76 ], [ 1, %75 ]
%78 = phi double [ %98, %76 ], [ %70, %75 ]
%79 = phi i64 [ %100, %76 ], [ 0, %75 ]
%80 = getelementptr inbounds double, double* %8, i64 %77
%81 = load double, double* %80
%82 = call double @llvm.fabs.f64(double %81)
%83 = call double @llvm.fmuladd.f64(double %78, double %67, double %82)
%84 = add nuw nsw i64 %77, 1
%85 = getelementptr inbounds double, double* %8, i64 %84
%86 = load double, double* %85
%87 = call double @llvm.fabs.f64(double %86)
%88 = call double @llvm.fmuladd.f64(double %83, double %67, double %87)
%89 = add nuw nsw i64 %77, 2
%90 = getelementptr inbounds double, double* %8, i64 %89
%91 = load double, double* %90
%92 = call double @llvm.fabs.f64(double %91)
%93 = call double @llvm.fmuladd.f64(double %88, double %67, double %92)
%94 = add nuw nsw i64 %77, 3
%95 = getelementptr inbounds double, double* %8, i64 %94
%96 = load double, double* %95
%97 = call double @llvm.fabs.f64(double %96)
%98 = call double @llvm.fmuladd.f64(double %93, double %67, double %97)
%99 = add nuw nsw i64 %77, 4
%100 = add i64 %79, 4
%101 = icmp eq i64 %100, %36
br i1 %101, label %102, label %76
102: ; preds = %76, %75
%103 = phi double [ undef, %75 ], [ %98, %76 ]
%104 = phi i64 [ 1, %75 ], [ %99, %76 ]
%105 = phi double [ %70, %75 ], [ %98, %76 ]
br i1 %37, label %117, label %106
106: ; preds = %102, %106
%107 = phi i64 [ %114, %106 ], [ %104, %102 ]
%108 = phi double [ %113, %106 ], [ %105, %102 ]
%109 = phi i64 [ %115, %106 ], [ 0, %102 ]
%110 = getelementptr inbounds double, double* %8, i64 %107
%111 = load double, double* %110
%112 = call double @llvm.fabs.f64(double %111)
%113 = call double @llvm.fmuladd.f64(double %108, double %67, double %112)
%114 = add nuw nsw i64 %107, 1
%115 = add i64 %109, 1
%116 = icmp eq i64 %115, %34
br i1 %116, label %117, label %106
117: ; preds = %102, %106, %54
%118 = phi double [ %70, %54 ], [ %103, %102 ], [ %113, %106 ]
%119 = load double, double* %10
%120 = fadd double %74, %119
%121 = call double @llvm.fabs.f64(double %120)
%122 = call double @llvm.fmuladd.f64(double %118, double %67, double %121)
%123 = call double @llvm.fabs.f64(double %74)
%124 = fmul double %123, 2.000000e+00
%125 = call double @llvm.fmuladd.f64(double %122, double 9.000000e+00, double %124)
%126 = call double @llvm.fabs.f64(double %72)
%127 = call double @llvm.fmuladd.f64(double %67, double %126, double %121)
%128 = call double @llvm.fmuladd.f64(double %127, double -7.000000e+00, double %125)
%129 = fmul double %128, 0x3CB0000000000000
%130 = fmul double %129, 2.000000e+01
%131 = fcmp ugt double %65, %130
br i1 %131, label %133, label %132
132: ; preds = %117
store i32 2, i32* %1
br label %201
133: ; preds = %117
%134 = add nsw i32 %42, 1
%135 = icmp sgt i32 %42, 19
br i1 %135, label %201, label %136
136: ; preds = %133
%137 = icmp sgt i32 %42, 0
%138 = fcmp ole double %41, 1.000000e-02
%139 = select i1 %137, i1 %138, i1 false
br i1 %139, label %140, label %168
140: ; preds = %136
%141 = fcmp ult double %65, %40
%142 = icmp ne i32 %39, 0
%143 = select i1 %141, i1 true, i1 %142
br i1 %143, label %168, label %144
144: ; preds = %140
%145 = fcmp olt double %41, 0x3CB0000000000000
br i1 %145, label %148, label %146
146: ; preds = %144
%147 = call double @sqrt(double %41)
br label %148
148: ; preds = %144, %146
%149 = phi double [ %147, %146 ], [ 0x3E50000000000000, %144 ]
%150 = fneg double %43
%151 = call double @llvm.fmuladd.f64(double %150, double %149, double %43)
%152 = call double @llvm.fmuladd.f64(double %44, double %149, double %44)
%153 = call i32 @QuadSD_ak1(i32 %9, double %151, double %152, double* %12, double* %8, double* %10, double* %11)
br label %154
154: ; preds = %148, %154
%155 = phi i32 [ 0, %148 ], [ %163, %154 ]
%156 = load double, double* %10
%157 = load double, double* %11
%158 = call i32 @calcSC_ak1(i32 %0, double %156, double %157, double* %14, double* %15, double* %16, double* %24, double* %17, double* %18, double* %19, double* %20, double* %21, double* %22, double %151, double %152, double* %13)
%159 = load double, double* %10
%160 = load double, double* %11
%161 = load double, double* %14
%162 = call i32 @nextK_ak1(i32 %0, i32 %158, double %159, double %160, double %161, double* %15, double* %16, double* %22, double* %13, double* %8)
%163 = add nuw nsw i32 %155, 1
%164 = icmp eq i32 %163, 5
br i1 %164, label %165, label %154
165: ; preds = %154
%166 = load double, double* %10
%167 = load double, double* %11
br label %168
168: ; preds = %165, %140, %136
%169 = phi double [ %72, %140 ], [ %72, %136 ], [ %167, %165 ]
%170 = phi double [ %119, %140 ], [ %119, %136 ], [ %166, %165 ]
%171 = phi i32 [ %39, %140 ], [ %39, %136 ], [ 1, %165 ]
%172 = phi i32 [ %134, %140 ], [ %134, %136 ], [ 0, %165 ]
%173 = phi double [ %43, %140 ], [ %43, %136 ], [ %151, %165 ]
%174 = phi double [ %44, %140 ], [ %44, %136 ], [ %152, %165 ]
%175 = call i32 @calcSC_ak1(i32 %0, double %170, double %169, double* %14, double* %15, double* %16, double* %24, double* %17, double* %18, double* %19, double* %20, double* %21, double* %22, double %173, double %174, double* %13)
%176 = load double, double* %10
%177 = load double, double* %11
%178 = load double, double* %14
%179 = call i32 @nextK_ak1(i32 %0, i32 %175, double %176, double %177, double %178, double* %15, double* %16, double* %22, double* %13, double* %8)
%180 = load double, double* %10
%181 = load double, double* %11
%182 = call i32 @calcSC_ak1(i32 %0, double %180, double %181, double* %14, double* %15, double* %16, double* %24, double* %17, double* %18, double* %19, double* %20, double* %21, double* %22, double %173, double %174, double* %13)
%183 = load double, double* %10
%184 = load double, double* %14
%185 = load double, double* %15
%186 = load double, double* %16
%187 = load double, double* %11
%188 = load double, double* %24
%189 = load double, double* %17
%190 = load double, double* %19
%191 = load double, double* %20
%192 = load double, double* %21
%193 = call i32 @newest_ak1(i32 %182, double* %25, double* %26, double %183, double %184, double %185, double %186, double %187, double %188, double %189, double %190, double %191, double %192, double %173, double %174, double* %22, i32 %0, double* %12)
%194 = load double, double* %26
%195 = fcmp une double %194, 0.000000e+00
br i1 %195, label %196, label %201
196: ; preds = %168
%197 = fsub double %194, %174
%198 = fdiv double %197, %194
%199 = call double @llvm.fabs.f64(double %198)
%200 = load double, double* %25
br label %38
201: ; preds = %168, %133, %38, %132
ret void
}