#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*/ QuadIT_ak1(int, int *, double, double, double *, double *,
                              double *, double *, double *, int, double *,
                              double *, double *, double *, double *, double *,
                              double *, double *, double *, double *, double *,
                              double *, double *);
int /*<<< orphan*/ QuadSD_ak1(int, double, double, double *, double *, double *,
                              double *);
int /*<<< orphan*/ RealIT_ak1(int *, int *, double *, int, double *, int,
                              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 *);
void Fxshfr_ak1(int L2, int *NZ, double sr, double bnd, double K[100 + 1],
                int N, double p[100 + 1], int NN, double qp[100 + 1],
                double *lzi, double *lzr, double *szi, double *szr) {
  int fflag, i, iFlag, j, spass, stry, tFlag, vpass, vtry;
  double a, a1, a3, a7, b, betas, betav, c, d, e, f, g, h, oss, ots, otv, ovv,
      s, ss, ts, tss, tv, tvv, u, ui, v, vi, vv;
  double qk[100 + 1], svk[100 + 1];
  *NZ = 0;
  betav = betas = 0.25;
  u = -(2.0 * sr);
  oss = sr;
  ovv = v = bnd;
  QuadSD_ak1(NN, u, v, p, qp, &a, &b);
  tFlag =
      calcSC_ak1(N, a, b, &a1, &a3, &a7, &c, &d, &e, &f, &g, &h, K, u, v, qk);
  for (j = 0; j < L2; j++) {
    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);
    vv = vi;
    ss = ((K[N - 1] != 0.0) ? -(p[N] / K[N - 1]) : 0.0);
    ts = tv = 1.0;
    if ((j != 0) && (tFlag != 3)) {
      tv = ((vv != 0.0) ? fabs((vv - ovv) / vv) : tv);
      ts = ((ss != 0.0) ? fabs((ss - oss) / ss) : ts);
      tvv = ((tv < otv) ? tv * otv : 1.0);
      tss = ((ts < ots) ? ts * ots : 1.0);
      vpass = ((tvv < betav) ? 1 : 0);
      spass = ((tss < betas) ? 1 : 0);
      if ((spass) || (vpass)) {
        for (i = 0; i < N; i++)
          svk[i] = K[i];
        s = ss;
        stry = vtry = 0;
        fflag = 1;
        do {
          iFlag = 1;
          if ((fflag && ((fflag = 0) == 0)) &&
              ((spass) && (!vpass || (tss < tvv)))) {
            ;
          } else {
            QuadIT_ak1(N, NZ, ui, vi, szr, szi, lzr, lzi, qp, NN, &a, &b, p, qk,
                       &a1, &a3, &a7, &d, &e, &f, &g, &h, K);
            if ((*NZ) > 0)
              return;
            vtry = 1;
            betav *= 0.25;
            if (stry || (!spass)) {
              iFlag = 0;
            } else {
              for (i = 0; i < N; i++)
                K[i] = svk[i];
            }
          }
          if (iFlag != 0) {
            RealIT_ak1(&iFlag, NZ, &s, N, p, NN, qp, szr, szi, K, qk);
            if ((*NZ) > 0)
              return;
            stry = 1;
            betas *= 0.25;
            if (iFlag != 0) {
              ui = -(s + s);
              vi = s * s;
              continue;
            }
          }
          for (i = 0; i < N; i++)
            K[i] = svk[i];
        } while (vpass && !vtry);
        QuadSD_ak1(NN, u, v, p, qp, &a, &b);
        tFlag = calcSC_ak1(N, a, b, &a1, &a3, &a7, &c, &d, &e, &f, &g, &h, K, u,
                           v, qk);
      }
    }
    ovv = vv;
    oss = ss;
    otv = tv;
    ots = ts;
  }
  return;
}


x86 assembly (clang, -O0):
<Fxshfr_ak1>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x878,%rsp
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %edi,-0x2c(%rbp)
mov    %rsi,-0x38(%rbp)
movsd  %xmm0,-0x40(%rbp)
movsd  %xmm1,-0x48(%rbp)
mov    %rdx,-0x50(%rbp)
mov    %ecx,-0x54(%rbp)
mov    %r8,-0x60(%rbp)
mov    %r9d,-0x64(%rbp)
mov    -0x38(%rbp),%rax
movl   $0x0,(%rax)
movsd  0xe4e(%rip),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  0xe3e(%rip),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  0xe26(%rip),%xmm0
mulsd  -0x40(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x64(%rbp),%edi
movsd  -0x148(%rbp),%xmm0
ff
movsd  -0x158(%rbp),%xmm1
ff
mov    -0x60(%rbp),%rsi
mov    0x10(%rbp),%rdx
lea    -0x90(%rbp),%rcx
lea    -0xb0(%rbp),%r8
call   1030 <QuadSD_ak1@plt>
mov    -0x54(%rbp),%edi
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm1
ff
mov    -0x50(%rbp),%r10
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x158(%rbp),%xmm3
ff
lea    -0x490(%rbp),%rax
lea    -0x98(%rbp),%rsi
lea    -0xa0(%rbp),%rdx
lea    -0xa8(%rbp),%rcx
lea    -0xc8(%rbp),%r8
lea    -0xd0(%rbp),%r9
lea    -0xd8(%rbp),%r15
lea    -0xe0(%rbp),%r14
lea    -0xe8(%rbp),%rbx
lea    -0xf0(%rbp),%r11
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,-0x80(%rbp)
movl   $0x0,-0x74(%rbp)
mov    -0x74(%rbp),%eax
cmp    -0x2c(%rbp),%eax
jge    1c27 <Fxshfr_ak1+0xac7>
mov    -0x54(%rbp),%edi
mov    -0x80(%rbp),%esi
movsd  -0x90(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm1
ff
movsd  -0x98(%rbp),%xmm2
ff
mov    -0x50(%rbp),%r8
lea    -0x490(%rbp),%r9
mov    0x10(%rbp),%rax
lea    -0xa0(%rbp),%rdx
lea    -0xa8(%rbp),%rcx
mov    %rax,(%rsp)
call   1080 <nextK_ak1@plt>
mov    -0x54(%rbp),%edi
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm1
ff
mov    -0x50(%rbp),%r10
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x158(%rbp),%xmm3
ff
lea    -0x490(%rbp),%rax
lea    -0x98(%rbp),%rsi
lea    -0xa0(%rbp),%rdx
lea    -0xa8(%rbp),%rcx
lea    -0xc8(%rbp),%r8
lea    -0xd0(%rbp),%r9
lea    -0xd8(%rbp),%r15
lea    -0xe0(%rbp),%r14
lea    -0xe8(%rbp),%rbx
lea    -0xf0(%rbp),%r11
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,-0x80(%rbp)
mov    -0x80(%rbp),%edi
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm1
ff
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm3
ff
movsd  -0xb0(%rbp),%xmm4
ff
movsd  -0xc8(%rbp),%xmm5
ff
movsd  -0xd0(%rbp),%xmm6
ff
movsd  -0xe0(%rbp),%xmm7
ff
movsd  -0xe8(%rbp),%xmm11
ff ff
movsd  -0xf0(%rbp),%xmm10
ff ff
movsd  -0x148(%rbp),%xmm9
ff ff
movsd  -0x158(%rbp),%xmm8
ff ff
mov    -0x50(%rbp),%rcx
mov    -0x54(%rbp),%r8d
mov    -0x60(%rbp),%r9
lea    -0x150(%rbp),%rsi
lea    -0x160(%rbp),%rdx
movsd  %xmm11,(%rsp)
movsd  %xmm10,0x8(%rsp)
movsd  %xmm9,0x10(%rsp)
movsd  %xmm8,0x18(%rsp)
call   1050 <newest_ak1@plt>
movsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x50(%rbp),%rax
mov    -0x54(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    14a4 <Fxshfr_ak1+0x344>
jp     14a4 <Fxshfr_ak1+0x344>
jmp    14e7 <Fxshfr_ak1+0x387>
mov    -0x60(%rbp),%rax
movslq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x50(%rbp),%rax
mov    -0x54(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x7c8(%rbp)
ff
jmp    14f7 <Fxshfr_ak1+0x397>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x7c8(%rbp)
ff
jmp    14f7 <Fxshfr_ak1+0x397>
movsd  -0x7c8(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  0xb01(%rip),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  0xaf1(%rip),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
cmpl   $0x0,-0x74(%rbp)
je     1bd9 <Fxshfr_ak1+0xa79>
cmpl   $0x3,-0x80(%rbp)
je     1bd9 <Fxshfr_ak1+0xa79>
movsd  -0x168(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    155b <Fxshfr_ak1+0x3fb>
jp     155b <Fxshfr_ak1+0x3fb>
jmp    158b <Fxshfr_ak1+0x42b>
movsd  -0x168(%rbp),%xmm0
ff
subsd  -0x110(%rbp),%xmm0
ff
divsd  -0x168(%rbp),%xmm0
ff
movaps 0xaa6(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x7d0(%rbp)
ff
jmp    159b <Fxshfr_ak1+0x43b>
movsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0x7d0(%rbp)
ff
movsd  -0x7d0(%rbp),%xmm0
ff
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x120(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    15cb <Fxshfr_ak1+0x46b>
jp     15cb <Fxshfr_ak1+0x46b>
jmp    15fb <Fxshfr_ak1+0x49b>
movsd  -0x120(%rbp),%xmm0
ff
subsd  -0xf8(%rbp),%xmm0
ff
divsd  -0x120(%rbp),%xmm0
ff
movaps 0xa36(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x7d8(%rbp)
ff
jmp    160b <Fxshfr_ak1+0x4ab>
movsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0x7d8(%rbp)
ff
movsd  -0x7d8(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x138(%rbp),%xmm1
ff
movsd  -0x108(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    1652 <Fxshfr_ak1+0x4f2>
movsd  -0x138(%rbp),%xmm0
ff
mulsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x7e0(%rbp)
ff
jmp    1667 <Fxshfr_ak1+0x507>
movsd  0x9b6(%rip),%xmm0
movsd  %xmm0,-0x7e0(%rbp)
ff
jmp    1667 <Fxshfr_ak1+0x507>
movsd  -0x7e0(%rbp),%xmm0
ff
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x128(%rbp),%xmm1
ff
movsd  -0x100(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    16ae <Fxshfr_ak1+0x54e>
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x7e8(%rbp)
ff
jmp    16c3 <Fxshfr_ak1+0x563>
movsd  0x95a(%rip),%xmm0
movsd  %xmm0,-0x7e8(%rbp)
ff
jmp    16c3 <Fxshfr_ak1+0x563>
movsd  -0x7e8(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x140(%rbp),%xmm1
ff
movsd  -0xc0(%rbp),%xmm0
ff
xor    %eax,%eax
mov    $0x1,%ecx
ucomisd %xmm1,%xmm0
cmova  %ecx,%eax
mov    %eax,-0x84(%rbp)
movsd  -0x130(%rbp),%xmm1
ff
movsd  -0xb8(%rbp),%xmm0
ff
xor    %eax,%eax
mov    $0x1,%ecx
ucomisd %xmm1,%xmm0
cmova  %ecx,%eax
mov    %eax,-0x78(%rbp)
cmpl   $0x0,-0x78(%rbp)
jne    172f <Fxshfr_ak1+0x5cf>
cmpl   $0x0,-0x84(%rbp)
je     1bd4 <Fxshfr_ak1+0xa74>
movl   $0x0,-0x6c(%rbp)
mov    -0x6c(%rbp),%eax
cmp    -0x54(%rbp),%eax
jge    176a <Fxshfr_ak1+0x60a>
mov    -0x50(%rbp),%rax
movslq -0x6c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movslq -0x6c(%rbp),%rax
movsd  %xmm0,-0x7c0(%rbp,%rax,8)
ff ff
mov    -0x6c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x6c(%rbp)
jmp    1736 <Fxshfr_ak1+0x5d6>
movsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movl   $0x0,-0x88(%rbp)
movl   $0x0,-0x7c(%rbp)
movl   $0x1,-0x68(%rbp)
movl   $0x1,-0x70(%rbp)
cmpl   $0x0,-0x68(%rbp)
je     17ef <Fxshfr_ak1+0x68f>
movl   $0x0,-0x68(%rbp)
mov    $0x1,%al
test   $0x1,%al
jne    17b9 <Fxshfr_ak1+0x659>
jmp    17ef <Fxshfr_ak1+0x68f>
cmpl   $0x0,-0x78(%rbp)
je     17ef <Fxshfr_ak1+0x68f>
cmpl   $0x0,-0x84(%rbp)
je     17ea <Fxshfr_ak1+0x68a>
movsd  -0x130(%rbp),%xmm1
ff
movsd  -0x140(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    17ef <Fxshfr_ak1+0x68f>
jmp    19bb <Fxshfr_ak1+0x85b>
mov    -0x54(%rbp),%edi
mov    -0x38(%rbp),%rsi
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm1
ff
mov    0x30(%rbp),%rdx
mov    0x28(%rbp),%rcx
mov    0x20(%rbp),%r8
mov    0x18(%rbp),%r9
mov    0x10(%rbp),%rax
mov    -0x64(%rbp),%r10d
mov    %r10d,-0x81c(%rbp)
mov    -0x60(%rbp),%r10
mov    %r10,-0x808(%rbp)
lea    -0x490(%rbp),%r10
mov    %r10,-0x800(%rbp)
mov    -0x50(%rbp),%r10
mov    %r10,-0x7f0(%rbp)
lea    -0x90(%rbp),%r10
mov    %r10,-0x818(%rbp)
lea    -0xb0(%rbp),%r10
mov    %r10,-0x810(%rbp)
lea    -0x98(%rbp),%r10
mov    %r10,-0x7f8(%rbp)
lea    -0xa0(%rbp),%r13
lea    -0xa8(%rbp),%r12
lea    -0xd0(%rbp),%r15
lea    -0xd8(%rbp),%r14
lea    -0xe0(%rbp),%rbx
lea    -0xe8(%rbp),%r11
lea    -0xf0(%rbp),%r10
mov    %rax,(%rsp)
mov    -0x81c(%rbp),%eax
mov    %eax,0x8(%rsp)
mov    -0x818(%rbp),%rax
mov    %rax,0x10(%rsp)
mov    -0x810(%rbp),%rax
mov    %rax,0x18(%rsp)
mov    -0x808(%rbp),%rax
mov    %rax,0x20(%rsp)
mov    -0x800(%rbp),%rax
mov    %rax,0x28(%rsp)
mov    -0x7f8(%rbp),%rax
mov    %rax,0x30(%rsp)
mov    -0x7f0(%rbp),%rax
mov    %r13,0x38(%rsp)
mov    %r12,0x40(%rsp)
mov    %r15,0x48(%rsp)
mov    %r14,0x50(%rsp)
mov    %rbx,0x58(%rsp)
mov    %r11,0x60(%rsp)
mov    %r10,0x68(%rsp)
mov    %rax,0x70(%rsp)
call   1060 <QuadIT_ak1@plt>
mov    -0x38(%rbp),%rax
cmpl   $0x0,(%rax)
jle    1934 <Fxshfr_ak1+0x7d4>
jmp    1c2c <Fxshfr_ak1+0xacc>
movl   $0x1,-0x88(%rbp)
movsd  0x6c2(%rip),%xmm0
mulsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
cmpl   $0x0,-0x7c(%rbp)
jne    196a <Fxshfr_ak1+0x80a>
cmpl   $0x0,-0x78(%rbp)
jne    1976 <Fxshfr_ak1+0x816>
movl   $0x0,-0x70(%rbp)
jmp    19b6 <Fxshfr_ak1+0x856>
movl   $0x0,-0x6c(%rbp)
mov    -0x6c(%rbp),%eax
cmp    -0x54(%rbp),%eax
jge    19b1 <Fxshfr_ak1+0x851>
movslq -0x6c(%rbp),%rax
movsd  -0x7c0(%rbp,%rax,8),%xmm0
ff ff
mov    -0x50(%rbp),%rax
movslq -0x6c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x6c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x6c(%rbp)
jmp    197d <Fxshfr_ak1+0x81d>
jmp    19b6 <Fxshfr_ak1+0x856>
jmp    19bb <Fxshfr_ak1+0x85b>
cmpl   $0x0,-0x70(%rbp)
je     1a9f <Fxshfr_ak1+0x93f>
mov    -0x38(%rbp),%rsi
mov    -0x54(%rbp),%ecx
mov    -0x60(%rbp),%r8
mov    -0x64(%rbp),%r9d
mov    0x10(%rbp),%r14
mov    0x30(%rbp),%rbx
mov    0x28(%rbp),%r11
mov    -0x50(%rbp),%r10
lea    -0x490(%rbp),%rax
lea    -0x70(%rbp),%rdi
lea    -0x118(%rbp),%rdx
mov    %r14,(%rsp)
mov    %rbx,0x8(%rsp)
mov    %r11,0x10(%rsp)
mov    %r10,0x18(%rsp)
mov    %rax,0x20(%rsp)
call   1070 <RealIT_ak1@plt>
mov    -0x38(%rbp),%rax
cmpl   $0x0,(%rax)
jle    1a25 <Fxshfr_ak1+0x8c5>
jmp    1c2c <Fxshfr_ak1+0xacc>
movl   $0x1,-0x7c(%rbp)
movsd  0x5d4(%rip),%xmm0
mulsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
cmpl   $0x0,-0x70(%rbp)
je     1a9a <Fxshfr_ak1+0x93a>
movsd  -0x118(%rbp),%xmm0
ff
addsd  -0x118(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
mulsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0x160(%rbp)
ff
jmp    1adf <Fxshfr_ak1+0x97f>
jmp    1a9f <Fxshfr_ak1+0x93f>
movl   $0x0,-0x6c(%rbp)
mov    -0x6c(%rbp),%eax
cmp    -0x54(%rbp),%eax
jge    1ada <Fxshfr_ak1+0x97a>
movslq -0x6c(%rbp),%rax
movsd  -0x7c0(%rbp,%rax,8),%xmm0
ff ff
mov    -0x50(%rbp),%rax
movslq -0x6c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x6c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x6c(%rbp)
jmp    1aa6 <Fxshfr_ak1+0x946>
jmp    1adf <Fxshfr_ak1+0x97f>
xor    %eax,%eax
cmpl   $0x0,-0x84(%rbp)
mov    %al,-0x81d(%rbp)
je     1b06 <Fxshfr_ak1+0x9a6>
cmpl   $0x0,-0x88(%rbp)
setne  %al
xor    $0xff,%al
mov    %al,-0x81d(%rbp)
mov    -0x81d(%rbp),%al
test   $0x1,%al
jne    1792 <Fxshfr_ak1+0x632>
mov    -0x64(%rbp),%edi
movsd  -0x148(%rbp),%xmm0
ff
movsd  -0x158(%rbp),%xmm1
ff
mov    -0x60(%rbp),%rsi
mov    0x10(%rbp),%rdx
lea    -0x90(%rbp),%rcx
lea    -0xb0(%rbp),%r8
call   1030 <QuadSD_ak1@plt>
mov    -0x54(%rbp),%edi
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm1
ff
mov    -0x50(%rbp),%r10
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x158(%rbp),%xmm3
ff
lea    -0x490(%rbp),%rax
lea    -0x98(%rbp),%rsi
lea    -0xa0(%rbp),%rdx
lea    -0xa8(%rbp),%rcx
lea    -0xc8(%rbp),%r8
lea    -0xd0(%rbp),%r9
lea    -0xd8(%rbp),%r15
lea    -0xe0(%rbp),%r14
lea    -0xe8(%rbp),%rbx
lea    -0xf0(%rbp),%r11
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,-0x80(%rbp)
jmp    1bd9 <Fxshfr_ak1+0xa79>
movsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
mov    -0x74(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x74(%rbp)
jmp    12e7 <Fxshfr_ak1+0x187>
jmp    1c2c <Fxshfr_ak1+0xacc>
add    $0x878,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<Fxshfr_ak1>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x7b8,%rsp
mov    %r8,%rax
mov    %ecx,%r13d
mov    %rdx,%r12
movsd  %xmm1,0x38(%rsp)
movapd %xmm0,0x100(%rsp)
mov    %rsi,%rbx
mov    %edi,%ebp
mov    0x7f0(%rsp),%rdx
movl   $0x0,(%rsi)
movsd  0xe4c(%rip),%xmm2
mulsd  %xmm0,%xmm2
movsd  %xmm2,0x58(%rsp)
lea    0x28(%rsp),%rcx
lea    0x20(%rsp),%r8
mov    %r9,0xb8(%rsp)
mov    %r9d,%edi
movapd %xmm2,%xmm0
mov    %rax,0x68(%rsp)
mov    %rax,%rsi
call   1030 <QuadSD_ak1@plt>
movsd  0x28(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
lea    0x160(%rsp),%rax
lea    0x70(%rsp),%r10
lea    0x78(%rsp),%r11
lea    0x80(%rsp),%r14
lea    0xc8(%rsp),%r15
lea    0x60(%rsp),%rsi
lea    0x98(%rsp),%rdx
lea    0x90(%rsp),%rcx
lea    0xd0(%rsp),%r8
lea    0x88(%rsp),%r9
mov    %r13d,%edi
movsd  0x58(%rsp),%xmm2
movsd  0x38(%rsp),%xmm3
push   %rax
push   %r12
push   %r10
push   %r11
push   %r14
push   %r15
call   1040 <calcSC_ak1@plt>
movapd 0x130(%rsp),%xmm1
add    $0x30,%rsp
mov    %ebp,0xdc(%rsp)
test   %ebp,%ebp
jle    1a0b <Fxshfr_ak1+0x89b>
mov    %eax,%r14d
lea    -0x1(%r13),%eax
cltq
mov    %rax,0x148(%rsp)
movslq %r13d,%rax
mov    %rax,0x140(%rsp)
mov    %r13d,%eax
shl    $0x3,%rax
mov    %rax,0xb0(%rsp)
movsd  0xd63(%rip),%xmm0
movl   $0x0,0x34(%rsp)
movsd  0x38(%rsp),%xmm2
movsd  %xmm0,0x18(%rsp)
movsd  %xmm0,0x10(%rsp)
jmp    1317 <Fxshfr_ak1+0x1a7>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movsd  0x10(%rsp),%xmm4
movsd  0x18(%rsp),%xmm5
movsd  0xd2c(%rip),%xmm0
movapd %xmm0,%xmm3
add    $0x1,%eax
movapd %xmm0,0xa0(%rsp)
movapd %xmm3,0x40(%rsp)
movsd  %xmm5,0x18(%rsp)
movsd  %xmm4,0x10(%rsp)
mov    %eax,0x34(%rsp)
cmp    0xdc(%rsp),%eax
je     1a0b <Fxshfr_ak1+0x89b>
mov    %rbx,%r15
movsd  %xmm1,0xe0(%rsp)
movsd  %xmm2,0x110(%rsp)
movsd  0x28(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
movsd  0x60(%rsp),%xmm2
sub    $0x8,%rsp
mov    %r13d,%edi
mov    %r14d,%esi
lea    0xa0(%rsp),%rbx
mov    %rbx,%rdx
lea    0x98(%rsp),%r14
mov    %r14,%rcx
mov    %r12,%r8
lea    0x168(%rsp),%rbp
mov    %rbp,%r9
push   0x7f8(%rsp)
call   1090 <nextK_ak1@plt>
add    $0x10,%rsp
movsd  0x28(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
mov    %r13d,%edi
lea    0x60(%rsp),%rsi
mov    %rbx,%rdx
mov    %r14,%rcx
lea    0xd0(%rsp),%r8
lea    0x88(%rsp),%r9
movsd  0x58(%rsp),%xmm2
movsd  0x38(%rsp),%xmm3
push   %rbp
push   %r12
lea    0x80(%rsp),%rax
push   %rax
lea    0x90(%rsp),%rax
push   %rax
lea    0xa0(%rsp),%rax
push   %rax
lea    0xf0(%rsp),%rax
push   %rax
call   1040 <calcSC_ak1@plt>
add    $0x30,%rsp
mov    %eax,%r14d
movsd  0x28(%rsp),%xmm0
movsd  0x60(%rsp),%xmm1
movsd  0x98(%rsp),%xmm2
movsd  0x90(%rsp),%xmm3
movsd  0x20(%rsp),%xmm4
movsd  0xd0(%rsp),%xmm5
movsd  0x88(%rsp),%xmm6
movsd  0x80(%rsp),%xmm7
movsd  0x78(%rsp),%xmm8
movsd  0x70(%rsp),%xmm9
sub    $0x20,%rsp
movsd  0x58(%rsp),%xmm10
movsd  %xmm10,0x18(%rsp)
movsd  0x78(%rsp),%xmm10
movsd  %xmm10,0x10(%rsp)
movsd  %xmm9,0x8(%rsp)
movsd  %xmm8,(%rsp)
mov    %eax,%edi
lea    0x110(%rsp),%rsi
lea    0xe0(%rsp),%rdx
mov    %r12,%rcx
mov    %r13d,%r8d
mov    0x88(%rsp),%rbp
mov    %rbp,%r9
call   1060 <newest_ak1@plt>
add    $0x20,%rsp
mov    0x148(%rsp),%rax
movsd  (%r12,%rax,8),%xmm0
ucomisd 0xb77(%rip),%xmm0
xorpd  %xmm1,%xmm1
jne    14a9 <Fxshfr_ak1+0x339>
jnp    14c3 <Fxshfr_ak1+0x353>
mov    0x140(%rsp),%rax
movsd  0x0(%rbp,%rax,8),%xmm1
xorpd  0xb61(%rip),%xmm1
divsd  %xmm0,%xmm1
movsd  0xc0(%rsp),%xmm2
mov    0x34(%rsp),%eax
test   %eax,%eax
mov    %r15,%rbx
je     12d0 <Fxshfr_ak1+0x160>
cmp    $0x3,%r14d
je     12d0 <Fxshfr_ak1+0x160>
ucomisd 0xb2b(%rip),%xmm2
movsd  0xb1b(%rip),%xmm0
jne    14f9 <Fxshfr_ak1+0x389>
jnp    1512 <Fxshfr_ak1+0x3a2>
movapd %xmm2,%xmm0
subsd  0x110(%rsp),%xmm0
divsd  %xmm2,%xmm0
andpd  0xb1e(%rip),%xmm0
movapd %xmm0,0x120(%rsp)
ucomisd 0xaf5(%rip),%xmm1
movsd  0xae5(%rip),%xmm0
movapd 0x40(%rsp),%xmm6
movapd 0xa0(%rsp),%xmm5
jne    153e <Fxshfr_ak1+0x3ce>
jnp    1557 <Fxshfr_ak1+0x3e7>
movapd %xmm1,%xmm0
subsd  0xe0(%rsp),%xmm0
divsd  %xmm1,%xmm0
andpd  0xad9(%rip),%xmm0
movapd %xmm0,%xmm3
movapd 0x120(%rsp),%xmm0
movapd %xmm0,%xmm4
cmpltsd %xmm5,%xmm4
mulsd  %xmm0,%xmm5
andpd  %xmm4,%xmm5
movsd  0xa93(%rip),%xmm0
andnpd %xmm0,%xmm4
orpd   %xmm5,%xmm4
movapd %xmm3,%xmm5
cmpltsd %xmm6,%xmm5
movapd %xmm3,0x150(%rsp)
mulsd  %xmm3,%xmm6
andpd  %xmm5,%xmm6
andnpd %xmm0,%xmm5
orpd   %xmm6,%xmm5
movsd  0x10(%rsp),%xmm0
movapd %xmm5,0x110(%rsp)
ucomisd %xmm5,%xmm0
ja     15f0 <Fxshfr_ak1+0x480>
movsd  0x18(%rsp),%xmm0
ucomisd %xmm4,%xmm0
ja     15f0 <Fxshfr_ak1+0x480>
movsd  0x10(%rsp),%xmm4
movsd  0x18(%rsp),%xmm5
movapd 0x120(%rsp),%xmm0
movapd 0x150(%rsp),%xmm3
jmp    12e8 <Fxshfr_ak1+0x178>
nopl   0x0(%rax,%rax,1)
movapd %xmm4,0xe0(%rsp)
test   %r13d,%r13d
movapd %xmm1,0x100(%rsp)
movsd  %xmm2,0x138(%rsp)
jle    1631 <Fxshfr_ak1+0x4c1>
lea    0x490(%rsp),%rdi
mov    %r12,%rsi
mov    0xb0(%rsp),%rdx
call   1050 <memcpy@plt>
movapd 0x100(%rsp),%xmm1
movsd  0x10(%rsp),%xmm2
movapd 0x110(%rsp),%xmm4
ucomisd %xmm4,%xmm2
setbe  %al
movsd  0x18(%rsp),%xmm0
movapd 0xe0(%rsp),%xmm3
ucomisd %xmm3,%xmm0
seta   %cl
movsd  %xmm1,0xf8(%rsp)
ucomisd %xmm4,%xmm3
setbe  %bpl
and    %cl,%bpl
xor    %r15d,%r15d
movsd  %xmm2,0xa0(%rsp)
movapd %xmm0,%xmm2
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
or     %bpl,%al
movl   $0x1,0xc(%rsp)
test   $0x1,%al
movsd  %xmm2,0x40(%rsp)
je     17e0 <Fxshfr_ak1+0x670>
movsd  0xf0(%rsp),%xmm0
movsd  0xc0(%rsp),%xmm1
sub    $0x8,%rsp
mov    %r13d,%edi
mov    %rbx,%rsi
mov    0x818(%rsp),%rdx
mov    0x810(%rsp),%rcx
mov    0x808(%rsp),%r8
mov    0x800(%rsp),%r9
push   %r12
lea    0x80(%rsp),%rax
push   %rax
lea    0x90(%rsp),%rax
push   %rax
lea    0xa0(%rsp),%rax
push   %rax
lea    0xf0(%rsp),%rax
push   %rax
lea    0xb8(%rsp),%rax
push   %rax
lea    0xc8(%rsp),%rax
push   %rax
lea    0xd8(%rsp),%rax
push   %rax
lea    0xa8(%rsp),%rax
push   %rax
lea    0x1b0(%rsp),%rax
push   %rax
push   0xc0(%rsp)
lea    0x80(%rsp),%rax
push   %rax
lea    0x90(%rsp),%rax
push   %rax
push   0x128(%rsp)
push   0x868(%rsp)
call   1070 <QuadIT_ak1@plt>
add    $0x80,%rsp
cmpl   $0x0,(%rbx)
jg     1a0b <Fxshfr_ak1+0x89b>
movsd  0x40(%rsp),%xmm2
mulsd  0x886(%rip),%xmm2
test   %r15d,%r15d
jne    18a0 <Fxshfr_ak1+0x730>
movsd  0x10(%rsp),%xmm0
ucomisd 0x110(%rsp),%xmm0
jbe    18a0 <Fxshfr_ak1+0x730>
test   %r13d,%r13d
movsd  %xmm2,0x40(%rsp)
jle    17c9 <Fxshfr_ak1+0x659>
mov    %r12,%rdi
lea    0x490(%rsp),%rsi
mov    0xb0(%rsp),%rdx
call   1050 <memcpy@plt>
movsd  0x40(%rsp),%xmm2
mov    $0x1,%r14d
cmpl   $0x0,0xc(%rsp)
jne    17e3 <Fxshfr_ak1+0x673>
xor    %r15d,%r15d
jmp    18ae <Fxshfr_ak1+0x73e>
xchg   %ax,%ax
xor    %r14d,%r14d
sub    $0x8,%rsp
lea    0x14(%rsp),%rdi
mov    %rbx,%rsi
lea    0x100(%rsp),%rdx
mov    %r13d,%ecx
mov    0x70(%rsp),%r8
mov    0xc0(%rsp),%r9
lea    0x168(%rsp),%rax
push   %rax
push   %r12
push   0x820(%rsp)
push   0x830(%rsp)
push   0x818(%rsp)
call   1080 <RealIT_ak1@plt>
add    $0x30,%rsp
cmpl   $0x0,(%rbx)
jg     1a0b <Fxshfr_ak1+0x89b>
movsd  0xa0(%rsp),%xmm0
mulsd  0x7be(%rip),%xmm0
cmpl   $0x0,0xc(%rsp)
je     18c0 <Fxshfr_ak1+0x750>
movsd  %xmm0,0xa0(%rsp)
movsd  0xf8(%rsp),%xmm0
movapd %xmm0,%xmm1
addsd  %xmm0,%xmm1
xorpd  0x7ad(%rip),%xmm1
movlpd %xmm1,0xf0(%rsp)
mulsd  %xmm0,%xmm0
movsd  %xmm0,0xc0(%rsp)
mov    $0x1,%r15d
jmp    18f8 <Fxshfr_ak1+0x788>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movl   $0x0,0xc(%rsp)
mov    $0x1,%r14d
movsd  0xa0(%rsp),%xmm0
jmp    18cc <Fxshfr_ak1+0x75c>
nopl   0x0(%rax)
mov    $0x1,%r15d
movsd  0x40(%rsp),%xmm2
test   %r13d,%r13d
movsd  %xmm0,0xa0(%rsp)
jle    18fe <Fxshfr_ak1+0x78e>
mov    %r12,%rdi
lea    0x490(%rsp),%rsi
mov    0xb0(%rsp),%rdx
movsd  %xmm2,0x40(%rsp)
call   1050 <memcpy@plt>
movsd  0x40(%rsp),%xmm2
movapd 0xe0(%rsp),%xmm1
movsd  0x18(%rsp),%xmm0
ucomisd %xmm1,%xmm0
jbe    191e <Fxshfr_ak1+0x7ae>
mov    $0x1,%al
test   %r14d,%r14d
je     1690 <Fxshfr_ak1+0x520>
mov    0xb8(%rsp),%rdi
movsd  0x58(%rsp),%xmm0
movsd  0x38(%rsp),%xmm1
mov    0x68(%rsp),%rsi
mov    0x7f0(%rsp),%rdx
lea    0x28(%rsp),%rcx
lea    0x20(%rsp),%r8
movsd  %xmm2,0x40(%rsp)
call   1030 <QuadSD_ak1@plt>
movsd  0x28(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
mov    %r13d,%edi
lea    0x60(%rsp),%rsi
lea    0x98(%rsp),%rdx
lea    0x90(%rsp),%rcx
lea    0xd0(%rsp),%r8
lea    0x88(%rsp),%r9
movsd  0x58(%rsp),%xmm2
movsd  0x38(%rsp),%xmm3
lea    0x160(%rsp),%rax
push   %rax
push   %r12
lea    0x80(%rsp),%rax
push   %rax
lea    0x90(%rsp),%rax
push   %rax
lea    0xa0(%rsp),%rax
push   %rax
lea    0xf0(%rsp),%rax
push   %rax
call   1040 <calcSC_ak1@plt>
movsd  0x70(%rsp),%xmm5
movsd  0x168(%rsp),%xmm2
movapd 0x130(%rsp),%xmm1
add    $0x30,%rsp
mov    %eax,%r14d
mov    0x34(%rsp),%eax
movapd 0x120(%rsp),%xmm0
movapd 0x150(%rsp),%xmm3
movsd  0xa0(%rsp),%xmm4
jmp    12e8 <Fxshfr_ak1+0x178>
add    $0x7b8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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