void seife_tid(double *x, int n, double dt, int nstep) {
  static double omega[6] = {1.93227, .92954, 2., 1.00274, 1.89567, .89293};
  static double zero = 0.;
  static double one = 1.;
  static double two = 2.;
  int i__1, i__2, i__3, i__4;
  double tdif, omeg[6];
  int ndim;
  double step, tint, omeg0, xgez1, xgez2, xgez3, a[169], c__[13], d__[13],
      e[13], f[13];
  int i__, j, k;
  double t;
  int nfreq, k2, k3;
  double tstep2;
  int jj;
  double rs[13], sx, dth;
  int nco;
  double cor[6], dur;
  --x;
  ndim = 13;
  dth = dt / two;
  if (nstep == 0) {
    nstep = (float)300. / dt;
  }
  nstep = nstep > 1 ? nstep : 1;
  step = (double)nstep;
  tstep2 = (step - one) * dth;
  tint = tstep2 + dth;
  dur = n * dt / 3600.;
  nfreq = 6;
  if (dur < 35.) {
    nfreq = 5;
  }
  if (dur < 18.) {
    nfreq = 4;
  }
  if (dur < 14.) {
    nfreq = 3;
  }
  if (dur < 5.) {
    nfreq = 2;
  }
  nco = (nfreq << 1) + 1;
  omeg0 = atan(one) * 8. / 86400.;
  i__1 = nfreq;
  for (i__ = 1; i__ <= i__1; ++i__) {
    omeg[i__ - 1] = omeg0 * omega[i__ - 1];
  }
  i__1 = nco;
  for (i__ = 1; i__ <= i__1; ++i__) {
    rs[i__ - 1] = 0.;
    i__2 = nco;
    for (k = 1; k <= i__2; ++k) {
      a[i__ + k * 13 - 14] = 0.;
    }
  }
  i__2 = nfreq;
  for (j = 1; j <= i__2; ++j) {
    cor[j - 1] = step * sin(omeg[j - 1] * dth) / sin(step * omeg[j - 1] * dth);
  }
  c__[0] = one;
  i__2 = n - nstep + 1;
  i__1 = nstep;
  for (j = 1; i__1 < 0 ? j >= i__2 : j <= i__2; j += i__1) {
    sx = zero;
    i__3 = j + nstep - 1;
    for (jj = j; jj <= i__3; ++jj) {
      sx += x[jj];
    }
    sx /= step;
    t = (j - 1) * dt + tstep2;
    i__3 = nfreq;
    for (k = 1; k <= i__3; ++k) {
      c__[(k << 1) - 1] = cos(omeg[k - 1] * t);
      c__[k * 2] = sin(omeg[k - 1] * t);
    }
    i__3 = nco;
    for (i__ = 1; i__ <= i__3; ++i__) {
      rs[i__ - 1] += sx * c__[i__ - 1];
      i__4 = nco;
      for (k = 1; k <= i__4; ++k) {
        a[i__ + k * 13 - 14] += c__[i__ - 1] * c__[k - 1];
      }
    }
  }
  seife_gauss(a, nco, ndim, rs, f);
  i__4 = n - nstep + 1;
  i__3 = nstep;
  for (j = 1; i__3 < 0 ? j >= i__4 : j <= i__4; j += i__3) {
    t = (j - 1) * dt + tstep2;
    i__1 = nfreq;
    for (k = 1; k <= i__1; ++k) {
      k2 = k << 1;
      k3 = k2 + 1;
      c__[k2 - 1] = cos(omeg[k - 1] * t);
      c__[k3 - 1] = sin(omeg[k - 1] * t);
      d__[k2 - 1] = -omeg[k - 1] * c__[k3 - 1];
      d__[k3 - 1] = omeg[k - 1] * c__[k2 - 1];
      e[k2 - 1] = -omeg[k - 1] * d__[k3 - 1];
      e[k3 - 1] = omeg[k - 1] * d__[k2 - 1];
    }
    xgez1 = f[0];
    xgez2 = zero;
    xgez3 = zero;
    i__1 = nfreq;
    for (k = 1; k <= i__1; ++k) {
      k2 = k << 1;
      k3 = k2 + 1;
      xgez1 += cor[k - 1] * (f[k2 - 1] * c__[k2 - 1] + f[k3 - 1] * c__[k3 - 1]);
      xgez2 += cor[k - 1] * (f[k2 - 1] * d__[k2 - 1] + f[k3 - 1] * d__[k3 - 1]);
      xgez3 +=
          cor[k - 1] * (f[k2 - 1] * e[k2 - 1] + f[k3 - 1] * e[k3 - 1]) / two;
    }
    if (j > n - (nstep << 1) + 1) {
      nstep = n + 1 - j;
    }
    i__1 = j + nstep - 1;
    for (jj = j; jj <= i__1; ++jj) {
      tdif = (jj - j) * dt - tstep2;
      x[jj] = x[jj] - xgez1 - xgez2 * tdif - xgez3 * tdif * tdif;
    }
  }
}


x86 assembly (clang, -O0):
<seife_tid>:
push   %rbp
mov    %rsp,%rbp
sub    $0x8d0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
movsd  %xmm0,-0x18(%rbp)
mov    %edx,-0x1c(%rbp)
mov    -0x8(%rbp),%rax
add    $0xfffffffffffffff8,%rax
mov    %rax,-0x8(%rbp)
movl   $0xd,-0x74(%rbp)
movsd  -0x18(%rbp),%xmm0
divsd  0x2f0e(%rip),%xmm0
movsd  %xmm0,-0x860(%rbp)
ff
cmpl   $0x0,-0x1c(%rbp)
jne    11a0 <seife_tid+0x60>
movsd  0xe6c(%rip),%xmm0
divsd  -0x18(%rbp),%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x1c(%rbp)
cmpl   $0x1,-0x1c(%rbp)
jle    11b8 <seife_tid+0x78>
mov    -0x1c(%rbp),%eax
mov    %eax,-0x8ac(%rbp)
jmp    11c8 <seife_tid+0x88>
mov    $0x1,%eax
mov    %eax,-0x8ac(%rbp)
jmp    11c8 <seife_tid+0x88>
mov    -0x8ac(%rbp),%eax
mov    %eax,-0x1c(%rbp)
cvtsi2sdl -0x1c(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
subsd  0x2e98(%rip),%xmm0
mulsd  -0x860(%rbp),%xmm0
ff
movsd  %xmm0,-0x7e0(%rbp)
ff
movsd  -0x7e0(%rbp),%xmm0
ff
addsd  -0x860(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
cvtsi2sdl -0xc(%rbp),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  0xdee(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x8a8(%rbp)
ff
movl   $0x6,-0x7cc(%rbp)
movsd  0xdc8(%rip),%xmm0
ucomisd -0x8a8(%rbp),%xmm0
ff
jbe    1258 <seife_tid+0x118>
movl   $0x5,-0x7cc(%rbp)
movsd  0xdb8(%rip),%xmm0
ucomisd -0x8a8(%rbp),%xmm0
ff
jbe    1278 <seife_tid+0x138>
movl   $0x4,-0x7cc(%rbp)
movsd  0xda0(%rip),%xmm0
ucomisd -0x8a8(%rbp),%xmm0
ff
jbe    1298 <seife_tid+0x158>
movl   $0x3,-0x7cc(%rbp)
movsd  0xd88(%rip),%xmm0
ucomisd -0x8a8(%rbp),%xmm0
ff
jbe    12b8 <seife_tid+0x178>
movl   $0x2,-0x7cc(%rbp)
mov    -0x7cc(%rbp),%eax
shl    $0x1,%eax
add    $0x1,%eax
mov    %eax,-0x864(%rbp)
movsd  0x2dae(%rip),%xmm0
call   1050 <atan@plt>
movsd  0xd59(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd45(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x7cc(%rbp),%eax
mov    %eax,-0x20(%rbp)
movl   $0x1,-0x7b4(%rbp)
mov    -0x7b4(%rbp),%eax
cmp    -0x20(%rbp),%eax
jg     135e <seife_tid+0x21e>
movsd  -0x90(%rbp),%xmm0
ff
mov    -0x7b4(%rbp),%eax
sub    $0x1,%eax
movslq %eax,%rcx
lea    0x2d1c(%rip),%rax
mulsd  (%rax,%rcx,8),%xmm0
mov    -0x7b4(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  %xmm0,-0x70(%rbp,%rax,8)
mov    -0x7b4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7b4(%rbp)
jmp    130a <seife_tid+0x1ca>
mov    -0x864(%rbp),%eax
mov    %eax,-0x20(%rbp)
movl   $0x1,-0x7b4(%rbp)
mov    -0x7b4(%rbp),%eax
cmp    -0x20(%rbp),%eax
jg     1406 <seife_tid+0x2c6>
mov    -0x7b4(%rbp),%eax
sub    $0x1,%eax
cltq
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x850(%rbp,%rax,8)
ff ff
mov    -0x864(%rbp),%eax
mov    %eax,-0x24(%rbp)
movl   $0x1,-0x7bc(%rbp)
mov    -0x7bc(%rbp),%eax
cmp    -0x24(%rbp),%eax
jg     13ed <seife_tid+0x2ad>
mov    -0x7b4(%rbp),%eax
imul   $0xd,-0x7bc(%rbp),%ecx
add    %ecx,%eax
sub    $0xe,%eax
cltq
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x5f0(%rbp,%rax,8)
ff ff
mov    -0x7bc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7bc(%rbp)
jmp    13aa <seife_tid+0x26a>
jmp    13f2 <seife_tid+0x2b2>
mov    -0x7b4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7b4(%rbp)
jmp    1371 <seife_tid+0x231>
mov    -0x7cc(%rbp),%eax
mov    %eax,-0x24(%rbp)
movl   $0x1,-0x7b8(%rbp)
mov    -0x7b8(%rbp),%eax
cmp    -0x24(%rbp),%eax
jg     14c4 <seife_tid+0x384>
movsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x8c0(%rbp)
ff
mov    -0x7b8(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x70(%rbp,%rax,8),%xmm0
mulsd  -0x860(%rbp),%xmm0
ff
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x8c0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x8b8(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
mov    -0x7b8(%rbp),%eax
sub    $0x1,%eax
cltq
mulsd  -0x70(%rbp,%rax,8),%xmm0
mulsd  -0x860(%rbp),%xmm0
ff
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x8b8(%rbp),%xmm0
ff
divsd  %xmm1,%xmm0
mov    -0x7b8(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  %xmm0,-0x8a0(%rbp,%rax,8)
ff ff
mov    -0x7b8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7b8(%rbp)
jmp    1419 <seife_tid+0x2d9>
movsd  0x2bb4(%rip),%xmm0
movsd  %xmm0,-0x660(%rbp)
ff
mov    -0xc(%rbp),%eax
sub    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x1c(%rbp),%eax
mov    %eax,-0x20(%rbp)
movl   $0x1,-0x7b8(%rbp)
cmpl   $0x0,-0x20(%rbp)
jge    1516 <seife_tid+0x3d6>
mov    -0x7b8(%rbp),%eax
cmp    -0x24(%rbp),%eax
setge  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x8c4(%rbp)
jmp    152d <seife_tid+0x3ed>
mov    -0x7b8(%rbp),%eax
cmp    -0x24(%rbp),%eax
setle  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x8c4(%rbp)
mov    -0x8c4(%rbp),%eax
cmp    $0x0,%eax
je     17ab <seife_tid+0x66b>
movsd  0x2b54(%rip),%xmm0
movsd  %xmm0,-0x858(%rbp)
ff
mov    -0x7b8(%rbp),%eax
add    -0x1c(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    -0x7b8(%rbp),%eax
mov    %eax,-0x7e4(%rbp)
mov    -0x7e4(%rbp),%eax
cmp    -0x28(%rbp),%eax
jg     15aa <seife_tid+0x46a>
mov    -0x8(%rbp),%rax
movslq -0x7e4(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
addsd  -0x858(%rbp),%xmm0
ff
movsd  %xmm0,-0x858(%rbp)
ff
mov    -0x7e4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7e4(%rbp)
jmp    1567 <seife_tid+0x427>
movsd  -0x80(%rbp),%xmm1
movsd  -0x858(%rbp),%xmm0
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x858(%rbp)
ff
mov    -0x7b8(%rbp),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm0
movsd  -0x18(%rbp),%xmm2
movsd  -0x7e0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x7c8(%rbp)
ff
mov    -0x7cc(%rbp),%eax
mov    %eax,-0x28(%rbp)
movl   $0x1,-0x7bc(%rbp)
mov    -0x7bc(%rbp),%eax
cmp    -0x28(%rbp),%eax
jg     168a <seife_tid+0x54a>
mov    -0x7bc(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x70(%rbp,%rax,8),%xmm0
mulsd  -0x7c8(%rbp),%xmm0
ff
call   1060 <cos@plt>
mov    -0x7bc(%rbp),%eax
shl    $0x1,%eax
sub    $0x1,%eax
cltq
movsd  %xmm0,-0x660(%rbp,%rax,8)
ff ff
mov    -0x7bc(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x70(%rbp,%rax,8),%xmm0
mulsd  -0x7c8(%rbp),%xmm0
ff
call   1040 <sin@plt>
mov    -0x7bc(%rbp),%eax
shl    $0x1,%eax
cltq
movsd  %xmm0,-0x660(%rbp,%rax,8)
ff ff
mov    -0x7bc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7bc(%rbp)
jmp    1600 <seife_tid+0x4c0>
mov    -0x864(%rbp),%eax
mov    %eax,-0x28(%rbp)
movl   $0x1,-0x7b4(%rbp)
mov    -0x7b4(%rbp),%eax
cmp    -0x28(%rbp),%eax
jg     1792 <seife_tid+0x652>
movsd  -0x858(%rbp),%xmm0
ff
mov    -0x7b4(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x660(%rbp,%rax,8),%xmm2
ff ff
mov    -0x7b4(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x850(%rbp,%rax,8),%xmm1
ff ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x850(%rbp,%rax,8)
ff ff
mov    -0x864(%rbp),%eax
mov    %eax,-0x2c(%rbp)
movl   $0x1,-0x7bc(%rbp)
mov    -0x7bc(%rbp),%eax
cmp    -0x2c(%rbp),%eax
jg     1779 <seife_tid+0x639>
mov    -0x7b4(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x660(%rbp,%rax,8),%xmm0
ff ff
mov    -0x7bc(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x660(%rbp,%rax,8),%xmm2
ff ff
mov    -0x7b4(%rbp),%eax
imul   $0xd,-0x7bc(%rbp),%ecx
add    %ecx,%eax
sub    $0xe,%eax
cltq
movsd  -0x5f0(%rbp,%rax,8),%xmm1
ff ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x5f0(%rbp,%rax,8)
ff ff
mov    -0x7bc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7bc(%rbp)
jmp    1700 <seife_tid+0x5c0>
jmp    177e <seife_tid+0x63e>
mov    -0x7b4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7b4(%rbp)
jmp    169d <seife_tid+0x55d>
jmp    1797 <seife_tid+0x657>
mov    -0x20(%rbp),%eax
add    -0x7b8(%rbp),%eax
mov    %eax,-0x7b8(%rbp)
jmp    14f0 <seife_tid+0x3b0>
lea    -0x5f0(%rbp),%rdi
mov    -0x864(%rbp),%esi
mov    -0x74(%rbp),%edx
lea    -0x850(%rbp),%rcx
lea    -0x7b0(%rbp),%r8
mov    $0x0,%al
call   1030 <seife_gauss@plt>
mov    -0xc(%rbp),%eax
sub    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x1c(%rbp),%eax
mov    %eax,-0x28(%rbp)
movl   $0x1,-0x7b8(%rbp)
cmpl   $0x0,-0x28(%rbp)
jge    1812 <seife_tid+0x6d2>
mov    -0x7b8(%rbp),%eax
cmp    -0x2c(%rbp),%eax
setge  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x8c8(%rbp)
jmp    1829 <seife_tid+0x6e9>
mov    -0x7b8(%rbp),%eax
cmp    -0x2c(%rbp),%eax
setle  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x8c8(%rbp)
mov    -0x8c8(%rbp),%eax
cmp    $0x0,%eax
je     1d88 <seife_tid+0xc48>
mov    -0x7b8(%rbp),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm0
movsd  -0x18(%rbp),%xmm2
movsd  -0x7e0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x7c8(%rbp)
ff
mov    -0x7cc(%rbp),%eax
mov    %eax,-0x20(%rbp)
movl   $0x1,-0x7bc(%rbp)
mov    -0x7bc(%rbp),%eax
cmp    -0x20(%rbp),%eax
jg     1a2c <seife_tid+0x8ec>
mov    -0x7bc(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0x7d0(%rbp)
mov    -0x7d0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7d4(%rbp)
mov    -0x7bc(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x70(%rbp,%rax,8),%xmm0
mulsd  -0x7c8(%rbp),%xmm0
ff
call   1060 <cos@plt>
mov    -0x7d0(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  %xmm0,-0x660(%rbp,%rax,8)
ff ff
mov    -0x7bc(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x70(%rbp,%rax,8),%xmm0
mulsd  -0x7c8(%rbp),%xmm0
ff
call   1040 <sin@plt>
mov    -0x7d4(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  %xmm0,-0x660(%rbp,%rax,8)
ff ff
mov    -0x7bc(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x70(%rbp,%rax,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x7d4(%rbp),%eax
sub    $0x1,%eax
cltq
mulsd  -0x660(%rbp,%rax,8),%xmm0
ff ff
mov    -0x7d0(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  %xmm0,-0x6d0(%rbp,%rax,8)
ff ff
mov    -0x7bc(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x70(%rbp,%rax,8),%xmm0
mov    -0x7d0(%rbp),%eax
sub    $0x1,%eax
cltq
mulsd  -0x660(%rbp,%rax,8),%xmm0
ff ff
mov    -0x7d4(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  %xmm0,-0x6d0(%rbp,%rax,8)
ff ff
mov    -0x7bc(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x70(%rbp,%rax,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x7d4(%rbp),%eax
sub    $0x1,%eax
cltq
mulsd  -0x6d0(%rbp,%rax,8),%xmm0
ff ff
mov    -0x7d0(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  %xmm0,-0x740(%rbp,%rax,8)
ff ff
mov    -0x7bc(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x70(%rbp,%rax,8),%xmm0
mov    -0x7d0(%rbp),%eax
sub    $0x1,%eax
cltq
mulsd  -0x6d0(%rbp,%rax,8),%xmm0
ff ff
mov    -0x7d4(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  %xmm0,-0x740(%rbp,%rax,8)
ff ff
mov    -0x7bc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7bc(%rbp)
jmp    1875 <seife_tid+0x735>
movsd  -0x7b0(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  0x2654(%rip),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  0x2644(%rip),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x7cc(%rbp),%eax
mov    %eax,-0x20(%rbp)
movl   $0x1,-0x7bc(%rbp)
mov    -0x7bc(%rbp),%eax
cmp    -0x20(%rbp),%eax
jg     1c40 <seife_tid+0xb00>
mov    -0x7bc(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0x7d0(%rbp)
mov    -0x7d0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7d4(%rbp)
mov    -0x7bc(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x8a0(%rbp,%rax,8),%xmm0
ff ff
mov    -0x7d0(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x7b0(%rbp,%rax,8),%xmm2
ff ff
mov    -0x7d0(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x660(%rbp,%rax,8),%xmm3
ff ff
mov    -0x7d4(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x7b0(%rbp,%rax,8),%xmm1
ff ff
mov    -0x7d4(%rbp),%eax
sub    $0x1,%eax
cltq
mulsd  -0x660(%rbp,%rax,8),%xmm1
ff ff
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x7bc(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x8a0(%rbp,%rax,8),%xmm0
ff ff
mov    -0x7d0(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x7b0(%rbp,%rax,8),%xmm2
ff ff
mov    -0x7d0(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x6d0(%rbp,%rax,8),%xmm3
ff ff
mov    -0x7d4(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x7b0(%rbp,%rax,8),%xmm1
ff ff
mov    -0x7d4(%rbp),%eax
sub    $0x1,%eax
cltq
mulsd  -0x6d0(%rbp,%rax,8),%xmm1
ff ff
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x7bc(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x8a0(%rbp,%rax,8),%xmm0
ff ff
mov    -0x7d0(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x7b0(%rbp,%rax,8),%xmm1
ff ff
mov    -0x7d0(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x740(%rbp,%rax,8),%xmm3
ff ff
mov    -0x7d4(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x7b0(%rbp,%rax,8),%xmm2
ff ff
mov    -0x7d4(%rbp),%eax
sub    $0x1,%eax
cltq
mulsd  -0x740(%rbp,%rax,8),%xmm2
ff ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
divsd  0x246c(%rip),%xmm0
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x7bc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7bc(%rbp)
jmp    1a6f <seife_tid+0x92f>
mov    -0x7b8(%rbp),%eax
mov    -0xc(%rbp),%ecx
mov    -0x1c(%rbp),%edx
shl    $0x1,%edx
sub    %edx,%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jle    1c6b <seife_tid+0xb2b>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
sub    -0x7b8(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x7b8(%rbp),%eax
add    -0x1c(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x7b8(%rbp),%eax
mov    %eax,-0x7e4(%rbp)
mov    -0x7e4(%rbp),%eax
cmp    -0x20(%rbp),%eax
jg     1d6f <seife_tid+0xc2f>
mov    -0x7e4(%rbp),%eax
sub    -0x7b8(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  -0x18(%rbp),%xmm2
movsd  -0x7e0(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x7e4(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
subsd  -0x98(%rbp),%xmm0
ff
movsd  -0xa0(%rbp),%xmm1
ff
movsd  -0x38(%rbp),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xa8(%rbp),%xmm0
ff
mulsd  -0x38(%rbp),%xmm0
movsd  -0x38(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
movslq -0x7e4(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x7e4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7e4(%rbp)
jmp    1c86 <seife_tid+0xb46>
jmp    1d74 <seife_tid+0xc34>
mov    -0x28(%rbp),%eax
add    -0x7b8(%rbp),%eax
mov    %eax,-0x7b8(%rbp)
jmp    17ec <seife_tid+0x6ac>
add    $0x8d0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<seife_tid>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x8c8,%rsp
mov    %esi,%r13d
mov    %rdi,%r12
test   %edx,%edx
jne    117b <seife_tid+0x2b>
movsd  0x1e95(%rip),%xmm1
divsd  %xmm0,%xmm1
cvttsd2si %xmm1,%edx
movsd  0x1e7d(%rip),%xmm1
test   %edx,%edx
mov    $0x1,%eax
cmovg  %edx,%eax
mov    %eax,0x64(%rsp)
cvtsi2sd %eax,%xmm3
cvtsi2sd %r13d,%xmm2
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%rsp)
movapd %xmm0,0x140(%rsp)
mulsd  %xmm0,%xmm2
divsd  0x1e5f(%rip),%xmm2
movsd  0x1e5f(%rip),%xmm1
xor    %eax,%eax
ucomisd %xmm2,%xmm1
movsd  0x1e41(%rip),%xmm0
seta   %al
mov    $0x6,%ecx
sub    %eax,%ecx
movsd  0x1e47(%rip),%xmm1
ucomisd %xmm2,%xmm1
mov    $0x4,%eax
cmovbe %ecx,%eax
movsd  %xmm3,0x30(%rsp)
addsd  %xmm3,%xmm0
movapd %xmm0,0xb0(%rsp)
movsd  0x1e28(%rip),%xmm1
ucomisd %xmm2,%xmm1
mov    $0x3,%ecx
cmovbe %eax,%ecx
movsd  0x1e1c(%rip),%xmm1
ucomisd %xmm2,%xmm1
mov    $0x2,%ebx
cmovbe %ecx,%ebx
lea    (%rbx,%rbx,1),%ebp
movsd  0x1e0d(%rip),%xmm0
call   1060 <atan@plt>
mov    $0x1,%eax
cmp    $0x4,%ebx
jb     126d <seife_tid+0x11d>
mov    %ebx,%eax
and    $0xfffffffc,%eax
movaps 0x1e02(%rip),%xmm0
movaps %xmm0,0x70(%rsp)
movapd 0x1e05(%rip),%xmm0
movapd %xmm0,0x80(%rsp)
cmp    %rax,%rbx
je     12a8 <seife_tid+0x158>
or     $0x1,%rax
lea    0x1(%rbx),%rcx
add    $0xffffffffffffffff,%rax
add    $0xffffffffffffffff,%rcx
lea    0x1e20(%rip),%rdx
movsd  0x1dc0(%rip),%xmm0
nopl   0x0(%rax,%rax,1)
movsd  (%rdx,%rax,8),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x70(%rsp,%rax,8)
add    $0x1,%rax
cmp    %rax,%rcx
jne    1290 <seife_tid+0x140>
movapd 0xb0(%rsp),%xmm0
mulsd  0x8(%rsp),%xmm0
movapd %xmm0,0xb0(%rsp)
lea    (%rbx,%rbx,1),%eax
add    $0x1,%eax
mov    %eax,0x14(%rsp)
mov    %ebp,%r14d
lea    0x2(%r14),%r15
mov    %ebx,%edx
shl    $0x4,%edx
or     $0x8,%edx
lea    0x2a0(%rsp),%rdi
xor    %esi,%esi
call   1030 <memset@plt>
lea    0x1(%r14),%rax
and    $0xfffffffffffffffc,%rax
neg    %rax
mov    %rbx,0x20(%rsp)
mov    %ebx,%ecx
and    $0x1,%ecx
imul   $0xd0,%rcx,%rcx
mov    $0x1,%edx
lea    0x380(%rsp),%rbp
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    $0x1,%edi
cmp    $0x3,%r14d
jb     137e <seife_tid+0x22e>
mov    $0x1,%edi
mov    %rbp,%rsi
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movq   $0x0,(%rsi)
movq   $0x0,0x68(%rsi)
movq   $0x0,0xd0(%rsi)
movq   $0x0,0x138(%rsi)
add    $0x1a0,%rsi
lea    (%rax,%rdi,1),%rbx
add    $0x4,%rbx
add    $0x4,%rdi
cmp    $0x1,%rbx
jne    1340 <seife_tid+0x1f0>
imul   $0x68,%rdi,%rsi
add    %rbp,%rsi
mov    $0xffffffffffffff98,%rdi
nopl   0x0(%rax)
movq   $0x0,(%rsi,%rdi,1)
add    $0x68,%rdi
cmp    %rdi,%rcx
jne    1390 <seife_tid+0x240>
add    $0x1,%rdx
add    $0x8,%rbp
cmp    %r15,%rdx
jne    1320 <seife_tid+0x1d0>
mov    0x20(%rsp),%rbx
cmp    $0x2,%ebx
mov    $0x1,%ebp
cmovae %ebx,%ebp
add    $0x1,%ebp
movsd  0x70(%rsp),%xmm1
movsd  %xmm1,0x18(%rsp)
movsd  0x8(%rsp),%xmm0
mulsd  %xmm1,%xmm0
call   1050 <sin@plt>
movsd  0x30(%rsp),%xmm2
mulsd  %xmm2,%xmm0
movsd  %xmm0,(%rsp)
movsd  0x18(%rsp),%xmm1
mulsd  %xmm2,%xmm1
mulsd  0x8(%rsp),%xmm1
movapd %xmm1,%xmm0
call   1050 <sin@plt>
movsd  (%rsp),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x170(%rsp)
cmp    $0x2,%ebp
je     1659 <seife_tid+0x509>
movsd  0x78(%rsp),%xmm1
movsd  %xmm1,0x18(%rsp)
movsd  0x8(%rsp),%xmm0
mulsd  %xmm1,%xmm0
call   1050 <sin@plt>
movsd  0x30(%rsp),%xmm2
mulsd  %xmm2,%xmm0
movsd  %xmm0,(%rsp)
movsd  0x18(%rsp),%xmm1
mulsd  %xmm2,%xmm1
mulsd  0x8(%rsp),%xmm1
movapd %xmm1,%xmm0
call   1050 <sin@plt>
movsd  (%rsp),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x178(%rsp)
cmp    $0x3,%ebp
je     1659 <seife_tid+0x509>
movsd  0x80(%rsp),%xmm1
movsd  %xmm1,0x18(%rsp)
movsd  0x8(%rsp),%xmm0
mulsd  %xmm1,%xmm0
call   1050 <sin@plt>
movsd  0x30(%rsp),%xmm2
mulsd  %xmm2,%xmm0
movsd  %xmm0,(%rsp)
movsd  0x18(%rsp),%xmm1
mulsd  %xmm2,%xmm1
mulsd  0x8(%rsp),%xmm1
movapd %xmm1,%xmm0
call   1050 <sin@plt>
movsd  (%rsp),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x180(%rsp)
cmp    $0x4,%ebp
je     1659 <seife_tid+0x509>
movsd  0x88(%rsp),%xmm1
movsd  %xmm1,0x18(%rsp)
movsd  0x8(%rsp),%xmm0
mulsd  %xmm1,%xmm0
call   1050 <sin@plt>
movsd  0x30(%rsp),%xmm2
mulsd  %xmm2,%xmm0
movsd  %xmm0,(%rsp)
movsd  0x18(%rsp),%xmm1
mulsd  %xmm2,%xmm1
mulsd  0x8(%rsp),%xmm1
movapd %xmm1,%xmm0
call   1050 <sin@plt>
movsd  (%rsp),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x188(%rsp)
cmp    $0x5,%ebp
je     1659 <seife_tid+0x509>
movsd  0x90(%rsp),%xmm1
movsd  %xmm1,0x18(%rsp)
movsd  0x8(%rsp),%xmm0
mulsd  %xmm1,%xmm0
call   1050 <sin@plt>
movsd  0x30(%rsp),%xmm2
mulsd  %xmm2,%xmm0
movsd  %xmm0,(%rsp)
movsd  0x18(%rsp),%xmm1
mulsd  %xmm2,%xmm1
mulsd  0x8(%rsp),%xmm1
movapd %xmm1,%xmm0
call   1050 <sin@plt>
movsd  (%rsp),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x190(%rsp)
cmp    $0x6,%ebp
je     1659 <seife_tid+0x509>
movsd  0x98(%rsp),%xmm1
movsd  %xmm1,0x18(%rsp)
movsd  0x8(%rsp),%xmm0
mulsd  %xmm1,%xmm0
call   1050 <sin@plt>
movsd  0x30(%rsp),%xmm2
mulsd  %xmm2,%xmm0
movsd  %xmm0,(%rsp)
movsd  0x18(%rsp),%xmm1
mulsd  %xmm2,%xmm1
mulsd  0x8(%rsp),%xmm1
movapd %xmm1,%xmm0
call   1050 <sin@plt>
movsd  (%rsp),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x198(%rsp)
cmp    $0x7,%ebp
je     1659 <seife_tid+0x509>
movsd  0xa0(%rsp),%xmm1
movsd  %xmm1,0x18(%rsp)
movsd  0x8(%rsp),%xmm0
mulsd  %xmm1,%xmm0
call   1050 <sin@plt>
movsd  0x30(%rsp),%xmm2
mulsd  %xmm2,%xmm0
movsd  %xmm0,(%rsp)
movsd  0x18(%rsp),%xmm1
mulsd  %xmm2,%xmm1
mulsd  0x8(%rsp),%xmm1
movapd %xmm1,%xmm0
call   1050 <sin@plt>
movsd  (%rsp),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x1a0(%rsp)
movabs $0x3ff0000000000000,%rax
mov    %rax,0xd0(%rsp)
mov    %r13d,%ecx
mov    0x64(%rsp),%eax
sub    %eax,%ecx
js     2261 <seife_tid+0x1111>
mov    %r13d,0x68(%rsp)
mov    %rcx,0x150(%rsp)
add    $0x1,%ecx
mov    %ecx,0x6c(%rsp)
mov    %eax,%eax
cmp    $0x2,%ebx
mov    $0x1,%edi
cmovae %ebx,%edi
add    $0x1,%edi
lea    0x1(%rax),%rbp
lea    -0x1(%rax),%rcx
mov    %rcx,0x50(%rsp)
mov    %eax,%r14d
and    $0x7,%r14d
mov    %rax,0x8(%rsp)
lea    0x0(,%rax,8),%rax
mov    %rax,0xc8(%rsp)
lea    -0x2(%r15),%r13
mov    $0x1,%ecx
mov    $0xffffffffffffffff,%rdx
mov    %r12,%rbx
movapd 0x140(%rsp),%xmm2
mov    %edi,0x48(%rsp)
nopw   0x0(%rax,%rax,1)
xorpd  %xmm0,%xmm0
test   %r14,%r14
je     1720 <seife_tid+0x5d0>
xor    %eax,%eax
nopl   0x0(%rax,%rax,1)
addsd  (%rbx,%rax,8),%xmm0
add    $0x1,%rax
cmp    %rax,%r14
jne    1700 <seife_tid+0x5b0>
sub    %rdx,%rax
jmp    1723 <seife_tid+0x5d3>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %rcx,%rax
mov    %rdx,0xa8(%rsp)
cmpq   $0x7,0x50(%rsp)
jb     1780 <seife_tid+0x630>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
addsd  -0x8(%r12,%rax,8),%xmm0
addsd  (%r12,%rax,8),%xmm0
addsd  0x8(%r12,%rax,8),%xmm0
addsd  0x10(%r12,%rax,8),%xmm0
addsd  0x18(%r12,%rax,8),%xmm0
addsd  0x20(%r12,%rax,8),%xmm0
addsd  0x28(%r12,%rax,8),%xmm0
addsd  0x30(%r12,%rax,8),%xmm0
add    $0x8,%rax
cmp    %rax,%rbp
jne    1740 <seife_tid+0x5f0>
movsd  %xmm0,0xa0(%rsp)
mov    %ecx,%eax
add    0x8(%rsp),%rcx
mov    %rcx,0x18(%rsp)
add    $0xffffffff,%eax
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
mulsd  %xmm2,%xmm1
addsd  0xb0(%rsp),%xmm1
movsd  0x70(%rsp),%xmm0
movsd  %xmm1,(%rsp)
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x28(%rsp)
call   1070 <cos@plt>
movsd  %xmm0,0xd8(%rsp)
movsd  0x28(%rsp),%xmm0
call   1050 <sin@plt>
movsd  %xmm0,0xe0(%rsp)
mov    0x48(%rsp),%edi
cmp    $0x2,%edi
je     1970 <seife_tid+0x820>
movsd  0x78(%rsp),%xmm0
mulsd  (%rsp),%xmm0
movsd  %xmm0,0x28(%rsp)
call   1070 <cos@plt>
movsd  %xmm0,0xe8(%rsp)
movsd  0x28(%rsp),%xmm0
call   1050 <sin@plt>
mov    0x48(%rsp),%edi
movsd  %xmm0,0xf0(%rsp)
cmp    $0x3,%edi
je     1970 <seife_tid+0x820>
movsd  0x80(%rsp),%xmm0
mulsd  (%rsp),%xmm0
movsd  %xmm0,0x28(%rsp)
call   1070 <cos@plt>
movsd  %xmm0,0xf8(%rsp)
movsd  0x28(%rsp),%xmm0
call   1050 <sin@plt>
mov    0x48(%rsp),%edi
movsd  %xmm0,0x100(%rsp)
cmp    $0x4,%edi
je     1970 <seife_tid+0x820>
movsd  0x88(%rsp),%xmm0
mulsd  (%rsp),%xmm0
movsd  %xmm0,0x28(%rsp)
call   1070 <cos@plt>
movsd  %xmm0,0x108(%rsp)
movsd  0x28(%rsp),%xmm0
call   1050 <sin@plt>
mov    0x48(%rsp),%edi
movsd  %xmm0,0x110(%rsp)
cmp    $0x5,%edi
je     1970 <seife_tid+0x820>
movsd  0x90(%rsp),%xmm0
mulsd  (%rsp),%xmm0
movsd  %xmm0,0x28(%rsp)
call   1070 <cos@plt>
movsd  %xmm0,0x118(%rsp)
movsd  0x28(%rsp),%xmm0
call   1050 <sin@plt>
mov    0x48(%rsp),%edi
movsd  %xmm0,0x120(%rsp)
cmp    $0x6,%edi
je     1970 <seife_tid+0x820>
movsd  0x98(%rsp),%xmm0
mulsd  (%rsp),%xmm0
movsd  %xmm0,0x28(%rsp)
call   1070 <cos@plt>
movsd  %xmm0,0x128(%rsp)
movsd  0x28(%rsp),%xmm0
call   1050 <sin@plt>
mov    0x48(%rsp),%edi
movsd  %xmm0,0x130(%rsp)
cmp    $0x7,%edi
je     1970 <seife_tid+0x820>
movsd  (%rsp),%xmm0
mulsd  0xa0(%rsp),%xmm0
movsd  %xmm0,(%rsp)
call   1070 <cos@plt>
movsd  %xmm0,0x138(%rsp)
movsd  (%rsp),%xmm0
call   1050 <sin@plt>
movsd  %xmm0,0x140(%rsp)
nopl   0x0(%rax,%rax,1)
movsd  0xa0(%rsp),%xmm3
divsd  0x30(%rsp),%xmm3
mov    $0x1,%eax
lea    0x380(%rsp),%rcx
movapd 0x140(%rsp),%xmm2
cs nopw 0x0(%rax,%rax,1)
nop
movsd  0xc8(%rsp,%rax,8),%xmm0
movapd %xmm3,%xmm1
mulsd  %xmm0,%xmm1
addsd  0x298(%rsp,%rax,8),%xmm1
movsd  %xmm1,0x298(%rsp,%rax,8)
mov    %rcx,%rdx
xor    %esi,%esi
nopl   0x0(%rax,%rax,1)
movsd  0xd0(%rsp,%rsi,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rdx),%xmm1
movsd  %xmm1,(%rdx)
movsd  0xd8(%rsp,%rsi,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  0x68(%rdx),%xmm1
movsd  %xmm1,0x68(%rdx)
add    $0x2,%rsi
add    $0xd0,%rdx
cmp    %rsi,%r13
jne    19d0 <seife_tid+0x880>
mulsd  0xd0(%rsp,%rsi,8),%xmm0
addsd  (%rdx),%xmm0
movsd  %xmm0,(%rdx)
add    $0x1,%rax
add    $0x8,%rcx
cmp    %r15,%rax
jne    19a0 <seife_tid+0x850>
mov    0x8(%rsp),%rax
add    %rax,%rbp
mov    0xa8(%rsp),%rdx
sub    %rax,%rdx
add    0xc8(%rsp),%rbx
mov    0x18(%rsp),%rcx
cmp    %ecx,0x6c(%rsp)
jge    16f0 <seife_tid+0x5a0>
lea    0x380(%rsp),%rdi
lea    0x2a0(%rsp),%rcx
lea    0x310(%rsp),%r8
mov    0x14(%rsp),%esi
mov    $0xd,%edx
xor    %eax,%eax
call   1040 <seife_gauss@plt>
xor    %edx,%edx
movapd 0x140(%rsp),%xmm10
cmpl   $0x0,0x150(%rsp)
mov    0x64(%rsp),%ecx
js     2289 <seife_tid+0x1139>
addl   $0x1,0x68(%rsp)
movdqa 0x15c4(%rip),%xmm11
pxor   0xb0(%rsp),%xmm11
mov    0x20(%rsp),%rax
cmp    $0x2,%eax
mov    $0x1,%ebp
cmovae %eax,%ebp
lea    0x1(%rbp),%r9d
shl    $0x3,%rbp
movapd %xmm10,%xmm12
unpcklpd %xmm10,%xmm12
pshufd $0x44,%xmm11,%xmm13
mov    %ecx,%eax
neg    %eax
mov    %rax,0x168(%rsp)
mov    $0x1,%ebx
mov    $0x2,%eax
mov    $0xfffffffe,%r11d
mov    $0xffffffffffffffff,%r14
mov    %r12,%r15
mov    %ecx,%r10d
movdqa %xmm11,0x150(%rsp)
mov    %r9d,0x14(%rsp)
movapd %xmm12,0x220(%rsp)
movdqa %xmm13,0x210(%rsp)
jmp    1b60 <seife_tid+0xa10>
nopl   0x0(%rax)
add    0x8(%rsp),%rbx
mov    0x18(%rsp),%rdx
add    $0x1,%edx
mov    0x64(%rsp),%ecx
add    %ecx,%eax
sub    %ecx,%r11d
add    0xc8(%rsp),%r15
add    0x168(%rsp),%r14
cmp    %ebx,0x6c(%rsp)
jl     2289 <seife_tid+0x1139>
mov    %r11d,0x28(%rsp)
mov    %eax,0xa8(%rsp)
mov    %r10,0x48(%rsp)
mov    %ecx,%r13d
mov    %rdx,0x18(%rsp)
imul   %edx,%r13d
mov    %rbx,0xa0(%rsp)
lea    -0x1(%rbx),%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  %xmm10,%xmm0
addsd  0xb0(%rsp),%xmm0
movsd  0x70(%rsp),%xmm1
movapd %xmm1,0x30(%rsp)
movsd  %xmm0,(%rsp)
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x20(%rsp)
call   1070 <cos@plt>
movapd %xmm0,0x50(%rsp)
movsd  %xmm0,0xd8(%rsp)
movsd  0x20(%rsp),%xmm0
call   1050 <sin@plt>
movapd 0x1491(%rip),%xmm2
mov    0x14(%rsp),%r9d
movsd  %xmm0,0xe0(%rsp)
movapd 0x30(%rsp),%xmm3
movapd %xmm3,%xmm1
xorpd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x1a8(%rsp)
movapd 0x50(%rsp),%xmm2
mulsd  %xmm3,%xmm2
movsd  %xmm2,0x1b0(%rsp)
unpcklpd %xmm3,%xmm2
unpcklpd %xmm0,%xmm1
mulpd  %xmm2,%xmm1
movupd %xmm1,0x238(%rsp)
cmp    $0x2,%r9d
je     1ff0 <seife_tid+0xea0>
movsd  0x78(%rsp),%xmm1
movapd %xmm1,0x30(%rsp)
movsd  (%rsp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x20(%rsp)
call   1070 <cos@plt>
movapd %xmm0,0x50(%rsp)
movsd  %xmm0,0xe8(%rsp)
movsd  0x20(%rsp),%xmm0
call   1050 <sin@plt>
movapd 0x13f4(%rip),%xmm2
mov    0x14(%rsp),%r9d
movsd  %xmm0,0xf0(%rsp)
movapd 0x30(%rsp),%xmm3
movapd %xmm3,%xmm1
xorpd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x1b8(%rsp)
movapd 0x50(%rsp),%xmm2
mulsd  %xmm3,%xmm2
movsd  %xmm2,0x1c0(%rsp)
unpcklpd %xmm3,%xmm2
unpcklpd %xmm0,%xmm1
mulpd  %xmm2,%xmm1
movupd %xmm1,0x248(%rsp)
cmp    $0x3,%r9d
je     1ff0 <seife_tid+0xea0>
movsd  0x80(%rsp),%xmm1
movapd %xmm1,0x30(%rsp)
movsd  (%rsp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x20(%rsp)
call   1070 <cos@plt>
movapd %xmm0,0x50(%rsp)
movsd  %xmm0,0xf8(%rsp)
movsd  0x20(%rsp),%xmm0
call   1050 <sin@plt>
movapd 0x1354(%rip),%xmm2
mov    0x14(%rsp),%r9d
movsd  %xmm0,0x100(%rsp)
movapd 0x30(%rsp),%xmm3
movapd %xmm3,%xmm1
xorpd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x1c8(%rsp)
movapd 0x50(%rsp),%xmm2
mulsd  %xmm3,%xmm2
movsd  %xmm2,0x1d0(%rsp)
unpcklpd %xmm3,%xmm2
unpcklpd %xmm0,%xmm1
mulpd  %xmm2,%xmm1
movupd %xmm1,0x258(%rsp)
cmp    $0x4,%r9d
je     1ff0 <seife_tid+0xea0>
movsd  0x88(%rsp),%xmm1
movapd %xmm1,0x30(%rsp)
movsd  (%rsp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x20(%rsp)
call   1070 <cos@plt>
movapd %xmm0,0x50(%rsp)
movsd  %xmm0,0x108(%rsp)
movsd  0x20(%rsp),%xmm0
call   1050 <sin@plt>
movapd 0x12b4(%rip),%xmm2
mov    0x14(%rsp),%r9d
movsd  %xmm0,0x110(%rsp)
movapd 0x30(%rsp),%xmm3
movapd %xmm3,%xmm1
xorpd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x1d8(%rsp)
movapd 0x50(%rsp),%xmm2
mulsd  %xmm3,%xmm2
movsd  %xmm2,0x1e0(%rsp)
unpcklpd %xmm3,%xmm2
unpcklpd %xmm0,%xmm1
mulpd  %xmm2,%xmm1
movupd %xmm1,0x268(%rsp)
cmp    $0x5,%r9d
je     1ff0 <seife_tid+0xea0>
movsd  0x90(%rsp),%xmm1
movapd %xmm1,0x30(%rsp)
movsd  (%rsp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x20(%rsp)
call   1070 <cos@plt>
movapd %xmm0,0x50(%rsp)
movsd  %xmm0,0x118(%rsp)
movsd  0x20(%rsp),%xmm0
call   1050 <sin@plt>
movapd 0x1214(%rip),%xmm2
mov    0x14(%rsp),%r9d
movsd  %xmm0,0x120(%rsp)
movapd 0x30(%rsp),%xmm3
movapd %xmm3,%xmm1
xorpd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x1e8(%rsp)
movapd 0x50(%rsp),%xmm2
mulsd  %xmm3,%xmm2
movsd  %xmm2,0x1f0(%rsp)
unpcklpd %xmm3,%xmm2
unpcklpd %xmm0,%xmm1
mulpd  %xmm2,%xmm1
movupd %xmm1,0x278(%rsp)
cmp    $0x6,%r9d
je     1ff0 <seife_tid+0xea0>
movsd  0x98(%rsp),%xmm1
movapd %xmm1,0x30(%rsp)
movsd  (%rsp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x20(%rsp)
call   1070 <cos@plt>
movapd %xmm0,0x50(%rsp)
movsd  %xmm0,0x128(%rsp)
movsd  0x20(%rsp),%xmm0
call   1050 <sin@plt>
movapd 0x1174(%rip),%xmm2
mov    0x14(%rsp),%r9d
movsd  %xmm0,0x130(%rsp)
movapd 0x30(%rsp),%xmm3
movapd %xmm3,%xmm1
xorpd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x1f8(%rsp)
movapd 0x50(%rsp),%xmm2
mulsd  %xmm3,%xmm2
movsd  %xmm2,0x200(%rsp)
unpcklpd %xmm3,%xmm2
unpcklpd %xmm0,%xmm1
mulpd  %xmm2,%xmm1
movupd %xmm1,0x288(%rsp)
cmp    $0x7,%r9d
je     1ff0 <seife_tid+0xea0>
movsd  0xa0(%rsp),%xmm1
movapd %xmm1,0x30(%rsp)
movsd  (%rsp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,(%rsp)
call   1070 <cos@plt>
movapd %xmm0,0x50(%rsp)
movsd  %xmm0,0x138(%rsp)
movsd  (%rsp),%xmm0
call   1050 <sin@plt>
movapd 0x10d6(%rip),%xmm2
movsd  %xmm0,0x140(%rsp)
movapd 0x30(%rsp),%xmm3
movapd %xmm3,%xmm1
xorpd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x208(%rsp)
movapd 0x50(%rsp),%xmm2
mulsd  %xmm3,%xmm2
movsd  %xmm2,0x210(%rsp)
unpcklpd %xmm3,%xmm2
unpcklpd %xmm0,%xmm1
mulpd  %xmm2,%xmm1
movupd %xmm1,0x298(%rsp)
cs nopw 0x0(%rax,%rax,1)
mov    $0xfffffffe,%esi
sub    %r13d,%esi
add    $0x2,%r13d
xorpd  %xmm0,%xmm0
movhpd 0x310(%rsp),%xmm0
xorpd  %xmm1,%xmm1
xor    %eax,%eax
movsd  0xfe8(%rip),%xmm8
nopl   0x0(%rax,%rax,1)
movsd  0x170(%rsp,%rax,1),%xmm3
movsd  0x318(%rsp,%rax,2),%xmm2
movsd  0x320(%rsp,%rax,2),%xmm4
movapd %xmm4,%xmm5
unpcklpd %xmm4,%xmm5
movsd  0x1b0(%rsp,%rax,2),%xmm6
movhpd 0xe0(%rsp,%rax,2),%xmm6
movsd  0x1a8(%rsp,%rax,2),%xmm7
mulpd  %xmm5,%xmm6
movapd %xmm2,%xmm5
movhpd 0xd8(%rsp,%rax,2),%xmm7
unpcklpd %xmm2,%xmm5
mulpd  %xmm5,%xmm7
mulsd  0x240(%rsp,%rax,2),%xmm4
addpd  %xmm6,%xmm7
mulsd  0x238(%rsp,%rax,2),%xmm2
addsd  %xmm4,%xmm2
mulsd  %xmm3,%xmm2
unpcklpd %xmm3,%xmm3
mulpd  %xmm7,%xmm3
addpd  %xmm3,%xmm0
mulsd  %xmm8,%xmm2
addsd  %xmm2,%xmm1
add    $0x8,%rax
cmp    %rax,%rbp
jne    2020 <seife_tid+0xed0>
mov    0x48(%rsp),%rdi
mov    0x68(%rsp),%edx
mov    %edx,%ecx
sub    %edi,%ecx
sub    %edi,%ecx
movslq %ecx,%rcx
mov    %edx,%r10d
mov    0xa0(%rsp),%rbx
sub    %ebx,%r10d
cmp    %rcx,%rbx
cmovle %edi,%r10d
test   %r10d,%r10d
movapd 0x140(%rsp),%xmm10
movapd 0x150(%rsp),%xmm11
movapd 0x220(%rsp),%xmm12
movapd 0x210(%rsp),%xmm13
mov    0xa8(%rsp),%eax
mov    0x28(%rsp),%r11d
movdqa 0xf72(%rip),%xmm14
jle    1b30 <seife_tid+0x9e0>
lea    (%r10,%rbx,1),%ecx
movapd %xmm0,%xmm8
movapd 0xf3b(%rip),%xmm2
xorpd  %xmm2,%xmm8
xorpd  %xmm2,%xmm1
cmp    %ecx,%r13d
cmovle %ecx,%r13d
unpckhpd %xmm0,%xmm0
mov    %rbx,%rdx
add    %esi,%r13d
je     2210 <seife_tid+0x10c0>
add    $0x1,%r13
mov    %r13,%r8
and    $0xfffffffffffffffe,%r8
lea    (%rbx,%r8,1),%rdx
movq   %rbx,%xmm3
pshufd $0x44,%xmm3,%xmm9
movdqa %xmm9,%xmm4
paddq  0xf04(%rip),%xmm4
movapd %xmm8,%xmm3
unpcklpd %xmm8,%xmm3
movapd %xmm1,%xmm6
unpcklpd %xmm1,%xmm6
lea    (%r10,%rbx,1),%edi
cmp    %edi,%eax
cmovg  %eax,%edi
add    %r11d,%edi
add    $0x1,%rdi
and    $0xfffffffffffffffe,%rdi
xor    %esi,%esi
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movdqa %xmm4,%xmm7
psubq  %xmm9,%xmm7
pshufd $0xe8,%xmm7,%xmm7
cvtdq2pd %xmm7,%xmm7
mulpd  %xmm12,%xmm7
addpd  %xmm13,%xmm7
movupd (%r15,%rsi,8),%xmm2
subpd  %xmm0,%xmm2
movapd %xmm3,%xmm5
mulpd  %xmm7,%xmm5
addpd  %xmm2,%xmm5
movapd %xmm7,%xmm2
mulpd  %xmm6,%xmm2
mulpd  %xmm7,%xmm2
addpd  %xmm5,%xmm2
movupd %xmm2,(%r15,%rsi,8)
add    $0x2,%rsi
paddq  %xmm14,%xmm4
cmp    %rsi,%rdi
jne    21b0 <seife_tid+0x1060>
cmp    %r8,%r13
je     1b30 <seife_tid+0x9e0>
nop
lea    (%r14,%rdx,1),%esi
xorps  %xmm2,%xmm2
cvtsi2sd %esi,%xmm2
mulsd  %xmm10,%xmm2
addsd  %xmm11,%xmm2
movsd  -0x8(%r12,%rdx,8),%xmm3
subsd  %xmm0,%xmm3
movapd %xmm8,%xmm4
mulsd  %xmm2,%xmm4
addsd  %xmm3,%xmm4
movapd %xmm2,%xmm3
mulsd  %xmm1,%xmm3
mulsd  %xmm2,%xmm3
addsd  %xmm4,%xmm3
movsd  %xmm3,-0x8(%r12,%rdx,8)
add    $0x1,%rdx
cmp    %edx,%ecx
jg     2210 <seife_tid+0x10c0>
jmp    1b30 <seife_tid+0x9e0>
lea    0x380(%rsp),%rdi
lea    0x2a0(%rsp),%rcx
lea    0x310(%rsp),%r8
mov    0x14(%rsp),%esi
mov    $0xd,%edx
xor    %eax,%eax
call   1040 <seife_gauss@plt>
add    $0x8c8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@seife_tid.omega = internal global [6 x double] [double 1.932270e+00, double 9.295400e-01, double 2.000000e+00, double 1.002740e+00, double 1.895670e+00, double 8.929300e-01]
@seife_tid.zero = internal global double 0.000000e+00
@seife_tid.one = internal global double 1.000000e+00
@seife_tid.two = internal global double 2.000000e+00
define void @seife_tid(double* %0, i32 %1, double %2, i32 %3) {
%5 = alloca double*
%6 = alloca i32
%7 = alloca double
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca double
%14 = alloca [6 x double]
%15 = alloca i32
%16 = alloca double
%17 = alloca double
%18 = alloca double
%19 = alloca double
%20 = alloca double
%21 = alloca double
%22 = alloca [169 x double]
%23 = alloca [13 x double]
%24 = alloca [13 x double]
%25 = alloca [13 x double]
%26 = alloca [13 x double]
%27 = alloca i32
%28 = alloca i32
%29 = alloca i32
%30 = alloca double
%31 = alloca i32
%32 = alloca i32
%33 = alloca i32
%34 = alloca double
%35 = alloca i32
%36 = alloca [13 x double]
%37 = alloca double
%38 = alloca double
%39 = alloca i32
%40 = alloca [6 x double]
%41 = alloca double
store double* %0, double** %5
store i32 %1, i32* %6
store double %2, double* %7
store i32 %3, i32* %8
%42 = load double*, double** %5
%43 = getelementptr inbounds double, double* %42, i32 -1
store double* %43, double** %5
store i32 13, i32* %15
%44 = load double, double* %7
%45 = load double, double* @seife_tid.two
%46 = fdiv double %44, %45
store double %46, double* %38
%47 = load i32, i32* %8
%48 = icmp eq i32 %47, 0
br i1 %48, label %49, label %53
49: ; preds = %4
%50 = load double, double* %7
%51 = fdiv double 3.000000e+02, %50
%52 = fptosi double %51 to i32
store i32 %52, i32* %8
br label %53
53: ; preds = %49, %4
%54 = load i32, i32* %8
%55 = icmp sgt i32 %54, 1
br i1 %55, label %56, label %58
56: ; preds = %53
%57 = load i32, i32* %8
br label %59
58: ; preds = %53
br label %59
59: ; preds = %58, %56
%60 = phi i32 [ %57, %56 ], [ 1, %58 ]
store i32 %60, i32* %8
%61 = load i32, i32* %8
%62 = sitofp i32 %61 to double
store double %62, double* %16
%63 = load double, double* %16
%64 = load double, double* @seife_tid.one
%65 = fsub double %63, %64
%66 = load double, double* %38
%67 = fmul double %65, %66
store double %67, double* %34
%68 = load double, double* %34
%69 = load double, double* %38
%70 = fadd double %68, %69
store double %70, double* %17
%71 = load i32, i32* %6
%72 = sitofp i32 %71 to double
%73 = load double, double* %7
%74 = fmul double %72, %73
%75 = fdiv double %74, 3.600000e+03
store double %75, double* %41
store i32 6, i32* %31
%76 = load double, double* %41
%77 = fcmp olt double %76, 3.500000e+01
br i1 %77, label %78, label %79
78: ; preds = %59
store i32 5, i32* %31
br label %79
79: ; preds = %78, %59
%80 = load double, double* %41
%81 = fcmp olt double %80, 1.800000e+01
br i1 %81, label %82, label %83
82: ; preds = %79
store i32 4, i32* %31
br label %83
83: ; preds = %82, %79
%84 = load double, double* %41
%85 = fcmp olt double %84, 1.400000e+01
br i1 %85, label %86, label %87
86: ; preds = %83
store i32 3, i32* %31
br label %87
87: ; preds = %86, %83
%88 = load double, double* %41
%89 = fcmp olt double %88, 5.000000e+00
br i1 %89, label %90, label %91
90: ; preds = %87
store i32 2, i32* %31
br label %91
91: ; preds = %90, %87
%92 = load i32, i32* %31
%93 = shl i32 %92, 1
%94 = add nsw i32 %93, 1
store i32 %94, i32* %39
%95 = load double, double* @seife_tid.one
%96 = call double @atan(double %95)
%97 = fmul double %96, 8.000000e+00
%98 = fdiv double %97, 8.640000e+04
store double %98, double* %18
%99 = load i32, i32* %31
store i32 %99, i32* %9
store i32 1, i32* %27
br label %100
100: ; preds = %116, %91
%101 = load i32, i32* %27
%102 = load i32, i32* %9
%103 = icmp sle i32 %101, %102
br i1 %103, label %104, label %119
104: ; preds = %100
%105 = load double, double* %18
%106 = load i32, i32* %27
%107 = sub nsw i32 %106, 1
%108 = sext i32 %107 to i64
%109 = getelementptr inbounds [6 x double], [6 x double]* @seife_tid.omega, i64 0, i64 %108
%110 = load double, double* %109
%111 = fmul double %105, %110
%112 = load i32, i32* %27
%113 = sub nsw i32 %112, 1
%114 = sext i32 %113 to i64
%115 = getelementptr inbounds [6 x double], [6 x double]* %14, i64 0, i64 %114
store double %111, double* %115
br label %116
116: ; preds = %104
%117 = load i32, i32* %27
%118 = add nsw i32 %117, 1
store i32 %118, i32* %27
br label %100
119: ; preds = %100
%120 = load i32, i32* %39
store i32 %120, i32* %9
store i32 1, i32* %27
br label %121
121: ; preds = %147, %119
%122 = load i32, i32* %27
%123 = load i32, i32* %9
%124 = icmp sle i32 %122, %123
br i1 %124, label %125, label %150
125: ; preds = %121
%126 = load i32, i32* %27
%127 = sub nsw i32 %126, 1
%128 = sext i32 %127 to i64
%129 = getelementptr inbounds [13 x double], [13 x double]* %36, i64 0, i64 %128
store double 0.000000e+00, double* %129
%130 = load i32, i32* %39
store i32 %130, i32* %10
store i32 1, i32* %29
br label %131
131: ; preds = %143, %125
%132 = load i32, i32* %29
%133 = load i32, i32* %10
%134 = icmp sle i32 %132, %133
br i1 %134, label %135, label %146
135: ; preds = %131
%136 = load i32, i32* %27
%137 = load i32, i32* %29
%138 = mul nsw i32 %137, 13
%139 = add nsw i32 %136, %138
%140 = sub nsw i32 %139, 14
%141 = sext i32 %140 to i64
%142 = getelementptr inbounds [169 x double], [169 x double]* %22, i64 0, i64 %141
store double 0.000000e+00, double* %142
br label %143
143: ; preds = %135
%144 = load i32, i32* %29
%145 = add nsw i32 %144, 1
store i32 %145, i32* %29
br label %131
146: ; preds = %131
br label %147
147: ; preds = %146
%148 = load i32, i32* %27
%149 = add nsw i32 %148, 1
store i32 %149, i32* %27
br label %121
150: ; preds = %121
%151 = load i32, i32* %31
store i32 %151, i32* %10
store i32 1, i32* %28
br label %152
152: ; preds = %182, %150
%153 = load i32, i32* %28
%154 = load i32, i32* %10
%155 = icmp sle i32 %153, %154
br i1 %155, label %156, label %185
156: ; preds = %152
%157 = load double, double* %16
%158 = load i32, i32* %28
%159 = sub nsw i32 %158, 1
%160 = sext i32 %159 to i64
%161 = getelementptr inbounds [6 x double], [6 x double]* %14, i64 0, i64 %160
%162 = load double, double* %161
%163 = load double, double* %38
%164 = fmul double %162, %163
%165 = call double @sin(double %164)
%166 = fmul double %157, %165
%167 = load double, double* %16
%168 = load i32, i32* %28
%169 = sub nsw i32 %168, 1
%170 = sext i32 %169 to i64
%171 = getelementptr inbounds [6 x double], [6 x double]* %14, i64 0, i64 %170
%172 = load double, double* %171
%173 = fmul double %167, %172
%174 = load double, double* %38
%175 = fmul double %173, %174
%176 = call double @sin(double %175)
%177 = fdiv double %166, %176
%178 = load i32, i32* %28
%179 = sub nsw i32 %178, 1
%180 = sext i32 %179 to i64
%181 = getelementptr inbounds [6 x double], [6 x double]* %40, i64 0, i64 %180
store double %177, double* %181
br label %182
182: ; preds = %156
%183 = load i32, i32* %28
%184 = add nsw i32 %183, 1
store i32 %184, i32* %28
br label %152
185: ; preds = %152
%186 = load double, double* @seife_tid.one
%187 = getelementptr inbounds [13 x double], [13 x double]* %23, i64 0, i64 0
store double %186, double* %187
%188 = load i32, i32* %6
%189 = load i32, i32* %8
%190 = sub nsw i32 %188, %189
%191 = add nsw i32 %190, 1
store i32 %191, i32* %10
%192 = load i32, i32* %8
store i32 %192, i32* %9
store i32 1, i32* %28
br label %193
193: ; preds = %327, %185
%194 = load i32, i32* %9
%195 = icmp slt i32 %194, 0
br i1 %195, label %196, label %201
196: ; preds = %193
%197 = load i32, i32* %28
%198 = load i32, i32* %10
%199 = icmp sge i32 %197, %198
%200 = zext i1 %199 to i32
br label %206
201: ; preds = %193
%202 = load i32, i32* %28
%203 = load i32, i32* %10
%204 = icmp sle i32 %202, %203
%205 = zext i1 %204 to i32
br label %206
206: ; preds = %201, %196
%207 = phi i32 [ %200, %196 ], [ %205, %201 ]
%208 = icmp ne i32 %207, 0
br i1 %208, label %209, label %331
209: ; preds = %206
%210 = load double, double* @seife_tid.zero
store double %210, double* %37
%211 = load i32, i32* %28
%212 = load i32, i32* %8
%213 = add nsw i32 %211, %212
%214 = sub nsw i32 %213, 1
store i32 %214, i32* %11
%215 = load i32, i32* %28
store i32 %215, i32* %35
br label %216
216: ; preds = %228, %209
%217 = load i32, i32* %35
%218 = load i32, i32* %11
%219 = icmp sle i32 %217, %218
br i1 %219, label %220, label %231
220: ; preds = %216
%221 = load double*, double** %5
%222 = load i32, i32* %35
%223 = sext i32 %222 to i64
%224 = getelementptr inbounds double, double* %221, i64 %223
%225 = load double, double* %224
%226 = load double, double* %37
%227 = fadd double %226, %225
store double %227, double* %37
br label %228
228: ; preds = %220
%229 = load i32, i32* %35
%230 = add nsw i32 %229, 1
store i32 %230, i32* %35
br label %216
231: ; preds = %216
%232 = load double, double* %16
%233 = load double, double* %37
%234 = fdiv double %233, %232
store double %234, double* %37
%235 = load i32, i32* %28
%236 = sub nsw i32 %235, 1
%237 = sitofp i32 %236 to double
%238 = load double, double* %7
%239 = load double, double* %34
%240 = call double @llvm.fmuladd.f64(double %237, double %238, double %239)
store double %240, double* %30
%241 = load i32, i32* %31
store i32 %241, i32* %11
store i32 1, i32* %29
br label %242
242: ; preds = %272, %231
%243 = load i32, i32* %29
%244 = load i32, i32* %11
%245 = icmp sle i32 %243, %244
br i1 %245, label %246, label %275
246: ; preds = %242
%247 = load i32, i32* %29
%248 = sub nsw i32 %247, 1
%249 = sext i32 %248 to i64
%250 = getelementptr inbounds [6 x double], [6 x double]* %14, i64 0, i64 %249
%251 = load double, double* %250
%252 = load double, double* %30
%253 = fmul double %251, %252
%254 = call double @cos(double %253)
%255 = load i32, i32* %29
%256 = shl i32 %255, 1
%257 = sub nsw i32 %256, 1
%258 = sext i32 %257 to i64
%259 = getelementptr inbounds [13 x double], [13 x double]* %23, i64 0, i64 %258
store double %254, double* %259
%260 = load i32, i32* %29
%261 = sub nsw i32 %260, 1
%262 = sext i32 %261 to i64
%263 = getelementptr inbounds [6 x double], [6 x double]* %14, i64 0, i64 %262
%264 = load double, double* %263
%265 = load double, double* %30
%266 = fmul double %264, %265
%267 = call double @sin(double %266)
%268 = load i32, i32* %29
%269 = mul nsw i32 %268, 2
%270 = sext i32 %269 to i64
%271 = getelementptr inbounds [13 x double], [13 x double]* %23, i64 0, i64 %270
store double %267, double* %271
br label %272
272: ; preds = %246
%273 = load i32, i32* %29
%274 = add nsw i32 %273, 1
store i32 %274, i32* %29
br label %242
275: ; preds = %242
%276 = load i32, i32* %39
store i32 %276, i32* %11
store i32 1, i32* %27
br label %277
277: ; preds = %323, %275
%278 = load i32, i32* %27
%279 = load i32, i32* %11
%280 = icmp sle i32 %278, %279
br i1 %280, label %281, label %326
281: ; preds = %277
%282 = load double, double* %37
%283 = load i32, i32* %27
%284 = sub nsw i32 %283, 1
%285 = sext i32 %284 to i64
%286 = getelementptr inbounds [13 x double], [13 x double]* %23, i64 0, i64 %285
%287 = load double, double* %286
%288 = load i32, i32* %27
%289 = sub nsw i32 %288, 1
%290 = sext i32 %289 to i64
%291 = getelementptr inbounds [13 x double], [13 x double]* %36, i64 0, i64 %290
%292 = load double, double* %291
%293 = call double @llvm.fmuladd.f64(double %282, double %287, double %292)
store double %293, double* %291
%294 = load i32, i32* %39
store i32 %294, i32* %12
store i32 1, i32* %29
br label %295
295: ; preds = %319, %281
%296 = load i32, i32* %29
%297 = load i32, i32* %12
%298 = icmp sle i32 %296, %297
br i1 %298, label %299, label %322
299: ; preds = %295
%300 = load i32, i32* %27
%301 = sub nsw i32 %300, 1
%302 = sext i32 %301 to i64
%303 = getelementptr inbounds [13 x double], [13 x double]* %23, i64 0, i64 %302
%304 = load double, double* %303
%305 = load i32, i32* %29
%306 = sub nsw i32 %305, 1
%307 = sext i32 %306 to i64
%308 = getelementptr inbounds [13 x double], [13 x double]* %23, i64 0, i64 %307
%309 = load double, double* %308
%310 = load i32, i32* %27
%311 = load i32, i32* %29
%312 = mul nsw i32 %311, 13
%313 = add nsw i32 %310, %312
%314 = sub nsw i32 %313, 14
%315 = sext i32 %314 to i64
%316 = getelementptr inbounds [169 x double], [169 x double]* %22, i64 0, i64 %315
%317 = load double, double* %316
%318 = call double @llvm.fmuladd.f64(double %304, double %309, double %317)
store double %318, double* %316
br label %319
319: ; preds = %299
%320 = load i32, i32* %29
%321 = add nsw i32 %320, 1
store i32 %321, i32* %29
br label %295
322: ; preds = %295
br label %323
323: ; preds = %322
%324 = load i32, i32* %27
%325 = add nsw i32 %324, 1
store i32 %325, i32* %27
br label %277
326: ; preds = %277
br label %327
327: ; preds = %326
%328 = load i32, i32* %9
%329 = load i32, i32* %28
%330 = add nsw i32 %329, %328
store i32 %330, i32* %28
br label %193
331: ; preds = %206
%332 = getelementptr inbounds [169 x double], [169 x double]* %22, i64 0, i64 0
%333 = load i32, i32* %39
%334 = load i32, i32* %15
%335 = getelementptr inbounds [13 x double], [13 x double]* %36, i64 0, i64 0
%336 = getelementptr inbounds [13 x double], [13 x double]* %26, i64 0, i64 0
%337 = call i32 (double*, i32, i32, double*, double*, ...) bitcast (i32 (...)* @seife_gauss to i32 (double*, i32, i32, double*, double*, ...)*)(double* %332, i32 %333, i32 %334, double* %335, double* %336)
%338 = load i32, i32* %6
%339 = load i32, i32* %8
%340 = sub nsw i32 %338, %339
%341 = add nsw i32 %340, 1
store i32 %341, i32* %12
%342 = load i32, i32* %8
store i32 %342, i32* %11
store i32 1, i32* %28
br label %343
343: ; preds = %630, %331
%344 = load i32, i32* %11
%345 = icmp slt i32 %344, 0
br i1 %345, label %346, label %351
346: ; preds = %343
%347 = load i32, i32* %28
%348 = load i32, i32* %12
%349 = icmp sge i32 %347, %348
%350 = zext i1 %349 to i32
br label %356
351: ; preds = %343
%352 = load i32, i32* %28
%353 = load i32, i32* %12
%354 = icmp sle i32 %352, %353
%355 = zext i1 %354 to i32
br label %356
356: ; preds = %351, %346
%357 = phi i32 [ %350, %346 ], [ %355, %351 ]
%358 = icmp ne i32 %357, 0
br i1 %358, label %359, label %634
359: ; preds = %356
%360 = load i32, i32* %28
%361 = sub nsw i32 %360, 1
%362 = sitofp i32 %361 to double
%363 = load double, double* %7
%364 = load double, double* %34
%365 = call double @llvm.fmuladd.f64(double %362, double %363, double %364)
store double %365, double* %30
%366 = load i32, i32* %31
store i32 %366, i32* %9
store i32 1, i32* %29
br label %367
367: ; preds = %462, %359
%368 = load i32, i32* %29
%369 = load i32, i32* %9
%370 = icmp sle i32 %368, %369
br i1 %370, label %371, label %465
371: ; preds = %367
%372 = load i32, i32* %29
%373 = shl i32 %372, 1
store i32 %373, i32* %32
%374 = load i32, i32* %32
%375 = add nsw i32 %374, 1
store i32 %375, i32* %33
%376 = load i32, i32* %29
%377 = sub nsw i32 %376, 1
%378 = sext i32 %377 to i64
%379 = getelementptr inbounds [6 x double], [6 x double]* %14, i64 0, i64 %378
%380 = load double, double* %379
%381 = load double, double* %30
%382 = fmul double %380, %381
%383 = call double @cos(double %382)
%384 = load i32, i32* %32
%385 = sub nsw i32 %384, 1
%386 = sext i32 %385 to i64
%387 = getelementptr inbounds [13 x double], [13 x double]* %23, i64 0, i64 %386
store double %383, double* %387
%388 = load i32, i32* %29
%389 = sub nsw i32 %388, 1
%390 = sext i32 %389 to i64
%391 = getelementptr inbounds [6 x double], [6 x double]* %14, i64 0, i64 %390
%392 = load double, double* %391
%393 = load double, double* %30
%394 = fmul double %392, %393
%395 = call double @sin(double %394)
%396 = load i32, i32* %33
%397 = sub nsw i32 %396, 1
%398 = sext i32 %397 to i64
%399 = getelementptr inbounds [13 x double], [13 x double]* %23, i64 0, i64 %398
store double %395, double* %399
%400 = load i32, i32* %29
%401 = sub nsw i32 %400, 1
%402 = sext i32 %401 to i64
%403 = getelementptr inbounds [6 x double], [6 x double]* %14, i64 0, i64 %402
%404 = load double, double* %403
%405 = fneg double %404
%406 = load i32, i32* %33
%407 = sub nsw i32 %406, 1
%408 = sext i32 %407 to i64
%409 = getelementptr inbounds [13 x double], [13 x double]* %23, i64 0, i64 %408
%410 = load double, double* %409
%411 = fmul double %405, %410
%412 = load i32, i32* %32
%413 = sub nsw i32 %412, 1
%414 = sext i32 %413 to i64
%415 = getelementptr inbounds [13 x double], [13 x double]* %24, i64 0, i64 %414
store double %411, double* %415
%416 = load i32, i32* %29
%417 = sub nsw i32 %416, 1
%418 = sext i32 %417 to i64
%419 = getelementptr inbounds [6 x double], [6 x double]* %14, i64 0, i64 %418
%420 = load double, double* %419
%421 = load i32, i32* %32
%422 = sub nsw i32 %421, 1
%423 = sext i32 %422 to i64
%424 = getelementptr inbounds [13 x double], [13 x double]* %23, i64 0, i64 %423
%425 = load double, double* %424
%426 = fmul double %420, %425
%427 = load i32, i32* %33
%428 = sub nsw i32 %427, 1
%429 = sext i32 %428 to i64
%430 = getelementptr inbounds [13 x double], [13 x double]* %24, i64 0, i64 %429
store double %426, double* %430
%431 = load i32, i32* %29
%432 = sub nsw i32 %431, 1
%433 = sext i32 %432 to i64
%434 = getelementptr inbounds [6 x double], [6 x double]* %14, i64 0, i64 %433
%435 = load double, double* %434
%436 = fneg double %435
%437 = load i32, i32* %33
%438 = sub nsw i32 %437, 1
%439 = sext i32 %438 to i64
%440 = getelementptr inbounds [13 x double], [13 x double]* %24, i64 0, i64 %439
%441 = load double, double* %440
%442 = fmul double %436, %441
%443 = load i32, i32* %32
%444 = sub nsw i32 %443, 1
%445 = sext i32 %444 to i64
%446 = getelementptr inbounds [13 x double], [13 x double]* %25, i64 0, i64 %445
store double %442, double* %446
%447 = load i32, i32* %29
%448 = sub nsw i32 %447, 1
%449 = sext i32 %448 to i64
%450 = getelementptr inbounds [6 x double], [6 x double]* %14, i64 0, i64 %449
%451 = load double, double* %450
%452 = load i32, i32* %32
%453 = sub nsw i32 %452, 1
%454 = sext i32 %453 to i64
%455 = getelementptr inbounds [13 x double], [13 x double]* %24, i64 0, i64 %454
%456 = load double, double* %455
%457 = fmul double %451, %456
%458 = load i32, i32* %33
%459 = sub nsw i32 %458, 1
%460 = sext i32 %459 to i64
%461 = getelementptr inbounds [13 x double], [13 x double]* %25, i64 0, i64 %460
store double %457, double* %461
br label %462
462: ; preds = %371
%463 = load i32, i32* %29
%464 = add nsw i32 %463, 1
store i32 %464, i32* %29
br label %367
465: ; preds = %367
%466 = getelementptr inbounds [13 x double], [13 x double]* %26, i64 0, i64 0
%467 = load double, double* %466
store double %467, double* %19
%468 = load double, double* @seife_tid.zero
store double %468, double* %20
%469 = load double, double* @seife_tid.zero
store double %469, double* %21
%470 = load i32, i32* %31
store i32 %470, i32* %9
store i32 1, i32* %29
br label %471
471: ; preds = %570, %465
%472 = load i32, i32* %29
%473 = load i32, i32* %9
%474 = icmp sle i32 %472, %473
br i1 %474, label %475, label %573
475: ; preds = %471
%476 = load i32, i32* %29
%477 = shl i32 %476, 1
store i32 %477, i32* %32
%478 = load i32, i32* %32
%479 = add nsw i32 %478, 1
store i32 %479, i32* %33
%480 = load i32, i32* %29
%481 = sub nsw i32 %480, 1
%482 = sext i32 %481 to i64
%483 = getelementptr inbounds [6 x double], [6 x double]* %40, i64 0, i64 %482
%484 = load double, double* %483
%485 = load i32, i32* %32
%486 = sub nsw i32 %485, 1
%487 = sext i32 %486 to i64
%488 = getelementptr inbounds [13 x double], [13 x double]* %26, i64 0, i64 %487
%489 = load double, double* %488
%490 = load i32, i32* %32
%491 = sub nsw i32 %490, 1
%492 = sext i32 %491 to i64
%493 = getelementptr inbounds [13 x double], [13 x double]* %23, i64 0, i64 %492
%494 = load double, double* %493
%495 = load i32, i32* %33
%496 = sub nsw i32 %495, 1
%497 = sext i32 %496 to i64
%498 = getelementptr inbounds [13 x double], [13 x double]* %26, i64 0, i64 %497
%499 = load double, double* %498
%500 = load i32, i32* %33
%501 = sub nsw i32 %500, 1
%502 = sext i32 %501 to i64
%503 = getelementptr inbounds [13 x double], [13 x double]* %23, i64 0, i64 %502
%504 = load double, double* %503
%505 = fmul double %499, %504
%506 = call double @llvm.fmuladd.f64(double %489, double %494, double %505)
%507 = load double, double* %19
%508 = call double @llvm.fmuladd.f64(double %484, double %506, double %507)
store double %508, double* %19
%509 = load i32, i32* %29
%510 = sub nsw i32 %509, 1
%511 = sext i32 %510 to i64
%512 = getelementptr inbounds [6 x double], [6 x double]* %40, i64 0, i64 %511
%513 = load double, double* %512
%514 = load i32, i32* %32
%515 = sub nsw i32 %514, 1
%516 = sext i32 %515 to i64
%517 = getelementptr inbounds [13 x double], [13 x double]* %26, i64 0, i64 %516
%518 = load double, double* %517
%519 = load i32, i32* %32
%520 = sub nsw i32 %519, 1
%521 = sext i32 %520 to i64
%522 = getelementptr inbounds [13 x double], [13 x double]* %24, i64 0, i64 %521
%523 = load double, double* %522
%524 = load i32, i32* %33
%525 = sub nsw i32 %524, 1
%526 = sext i32 %525 to i64
%527 = getelementptr inbounds [13 x double], [13 x double]* %26, i64 0, i64 %526
%528 = load double, double* %527
%529 = load i32, i32* %33
%530 = sub nsw i32 %529, 1
%531 = sext i32 %530 to i64
%532 = getelementptr inbounds [13 x double], [13 x double]* %24, i64 0, i64 %531
%533 = load double, double* %532
%534 = fmul double %528, %533
%535 = call double @llvm.fmuladd.f64(double %518, double %523, double %534)
%536 = load double, double* %20
%537 = call double @llvm.fmuladd.f64(double %513, double %535, double %536)
store double %537, double* %20
%538 = load i32, i32* %29
%539 = sub nsw i32 %538, 1
%540 = sext i32 %539 to i64
%541 = getelementptr inbounds [6 x double], [6 x double]* %40, i64 0, i64 %540
%542 = load double, double* %541
%543 = load i32, i32* %32
%544 = sub nsw i32 %543, 1
%545 = sext i32 %544 to i64
%546 = getelementptr inbounds [13 x double], [13 x double]* %26, i64 0, i64 %545
%547 = load double, double* %546
%548 = load i32, i32* %32
%549 = sub nsw i32 %548, 1
%550 = sext i32 %549 to i64
%551 = getelementptr inbounds [13 x double], [13 x double]* %25, i64 0, i64 %550
%552 = load double, double* %551
%553 = load i32, i32* %33
%554 = sub nsw i32 %553, 1
%555 = sext i32 %554 to i64
%556 = getelementptr inbounds [13 x double], [13 x double]* %26, i64 0, i64 %555
%557 = load double, double* %556
%558 = load i32, i32* %33
%559 = sub nsw i32 %558, 1
%560 = sext i32 %559 to i64
%561 = getelementptr inbounds [13 x double], [13 x double]* %25, i64 0, i64 %560
%562 = load double, double* %561
%563 = fmul double %557, %562
%564 = call double @llvm.fmuladd.f64(double %547, double %552, double %563)
%565 = fmul double %542, %564
%566 = load double, double* @seife_tid.two
%567 = fdiv double %565, %566
%568 = load double, double* %21
%569 = fadd double %568, %567
store double %569, double* %21
br label %570
570: ; preds = %475
%571 = load i32, i32* %29
%572 = add nsw i32 %571, 1
store i32 %572, i32* %29
br label %471
573: ; preds = %471
%574 = load i32, i32* %28
%575 = load i32, i32* %6
%576 = load i32, i32* %8
%577 = shl i32 %576, 1
%578 = sub nsw i32 %575, %577
%579 = add nsw i32 %578, 1
%580 = icmp sgt i32 %574, %579
br i1 %580, label %581, label %586
581: ; preds = %573
%582 = load i32, i32* %6
%583 = add nsw i32 %582, 1
%584 = load i32, i32* %28
%585 = sub nsw i32 %583, %584
store i32 %585, i32* %8
br label %586
586: ; preds = %581, %573
%587 = load i32, i32* %28
%588 = load i32, i32* %8
%589 = add nsw i32 %587, %588
%590 = sub nsw i32 %589, 1
store i32 %590, i32* %9
%591 = load i32, i32* %28
store i32 %591, i32* %35
br label %592
592: ; preds = %626, %586
%593 = load i32, i32* %35
%594 = load i32, i32* %9
%595 = icmp sle i32 %593, %594
br i1 %595, label %596, label %629
596: ; preds = %592
%597 = load i32, i32* %35
%598 = load i32, i32* %28
%599 = sub nsw i32 %597, %598
%600 = sitofp i32 %599 to double
%601 = load double, double* %7
%602 = load double, double* %34
%603 = fneg double %602
%604 = call double @llvm.fmuladd.f64(double %600, double %601, double %603)
store double %604, double* %13
%605 = load double*, double** %5
%606 = load i32, i32* %35
%607 = sext i32 %606 to i64
%608 = getelementptr inbounds double, double* %605, i64 %607
%609 = load double, double* %608
%610 = load double, double* %19
%611 = fsub double %609, %610
%612 = load double, double* %20
%613 = load double, double* %13
%614 = fneg double %612
%615 = call double @llvm.fmuladd.f64(double %614, double %613, double %611)
%616 = load double, double* %21
%617 = load double, double* %13
%618 = fmul double %616, %617
%619 = load double, double* %13
%620 = fneg double %618
%621 = call double @llvm.fmuladd.f64(double %620, double %619, double %615)
%622 = load double*, double** %5
%623 = load i32, i32* %35
%624 = sext i32 %623 to i64
%625 = getelementptr inbounds double, double* %622, i64 %624
store double %621, double* %625
br label %626
626: ; preds = %596
%627 = load i32, i32* %35
%628 = add nsw i32 %627, 1
store i32 %628, i32* %35
br label %592
629: ; preds = %592
br label %630
630: ; preds = %629
%631 = load i32, i32* %11
%632 = load i32, i32* %28
%633 = add nsw i32 %632, %631
store i32 %633, i32* %28
br label %343
634: ; preds = %356
ret void
}

LLVM IR (-O2):
@seife_tid.omega = internal unnamed_addr constant [6 x double] [double 1.932270e+00, double 9.295400e-01, double 2.000000e+00, double 1.002740e+00, double 1.895670e+00, double 8.929300e-01]
define void @seife_tid(double* nocapture %0, i32 %1, double %2, i32 %3) {
%5 = alloca [6 x double]
%6 = alloca [169 x double]
%7 = alloca [13 x double]
%8 = alloca [13 x double]
%9 = alloca [13 x double]
%10 = alloca [13 x double]
%11 = alloca [13 x double]
%12 = bitcast [13 x double]* %11 to i8*
%13 = alloca [6 x double]
%14 = bitcast [6 x double]* %5 to i8*
%15 = bitcast [169 x double]* %6 to i8*
%16 = bitcast [13 x double]* %7 to i8*
%17 = bitcast [13 x double]* %8 to i8*
%18 = bitcast [13 x double]* %9 to i8*
%19 = bitcast [13 x double]* %10 to i8*
%20 = bitcast [6 x double]* %13 to i8*
%21 = getelementptr inbounds double, double* %0, i64 -1
%22 = fmul double %2, 5.000000e-01
%23 = icmp eq i32 %3, 0
br i1 %23, label %24, label %27
24: ; preds = %4
%25 = fdiv double 3.000000e+02, %2
%26 = fptosi double %25 to i32
br label %27
27: ; preds = %4, %24
%28 = phi i32 [ %26, %24 ], [ %3, %4 ]
%29 = icmp sgt i32 %28, 1
%30 = select i1 %29, i32 %28, i32 1
%31 = sitofp i32 %30 to double
%32 = fadd double %31, -1.000000e+00
%33 = fmul double %22, %32
%34 = sitofp i32 %1 to double
%35 = fmul double %34, %2
%36 = fdiv double %35, 3.600000e+03
%37 = fcmp olt double %36, 3.500000e+01
%38 = select i1 %37, i32 5, i32 6
%39 = fcmp olt double %36, 1.800000e+01
%40 = select i1 %39, i32 4, i32 %38
%41 = fcmp olt double %36, 1.400000e+01
%42 = select i1 %41, i32 3, i32 %40
%43 = fcmp olt double %36, 5.000000e+00
%44 = select i1 %43, i32 2, i32 %42
%45 = shl nuw nsw i32 %44, 1
%46 = or i32 %45, 1
%47 = tail call double @atan(double 1.000000e+00)
%48 = add nuw nsw i32 %44, 1
%49 = zext i32 %48 to i64
%50 = add nsw i64 %49, -1
%51 = icmp ult i64 %50, 4
br i1 %51, label %59, label %52
52: ; preds = %27
%53 = and i64 %50, -4
%54 = or i64 %53, 1
%55 = bitcast [6 x double]* %5 to <2 x double>*
store <2 x double> <double 0x3F226B05ECA03FFD, double 0x3F11B86DC3FA9B9B>, <2 x double>* %55
%56 = getelementptr inbounds [6 x double], [6 x double]* %5, i64 0, i64 2
%57 = bitcast double* %56 to <2 x double>*
store <2 x double> <double 0x3F23104B57CF96A3, double 0x3F131DAA939F68E2>, <2 x double>* %57
%58 = icmp eq i64 %50, %53
br i1 %58, label %61, label %59
59: ; preds = %27, %52
%60 = phi i64 [ 1, %27 ], [ %54, %52 ]
br label %72
61: ; preds = %72, %52
%62 = add nuw nsw i32 %45, 2
%63 = shl nuw nsw i32 %44, 4
%64 = or i32 %63, 8
%65 = zext i32 %64 to i64
%66 = zext i32 %62 to i64
%67 = add nsw i64 %66, -2
%68 = add nsw i64 %66, -1
%69 = and i64 %68, 3
%70 = icmp ult i64 %67, 3
%71 = and i64 %68, -4
br label %95
72: ; preds = %59, %72
%73 = phi i64 [ %79, %72 ], [ %60, %59 ]
%74 = add nsw i64 %73, -1
%75 = getelementptr inbounds [6 x double], [6 x double]* @seife_tid.omega, i64 0, i64 %74
%76 = load double, double* %75
%77 = fmul double %76, 0x3F13104B57CF96A3
%78 = getelementptr inbounds [6 x double], [6 x double]* %5, i64 0, i64 %74
store double %77, double* %78
%79 = add nuw nsw i64 %73, 1
%80 = icmp eq i64 %79, %49
br i1 %80, label %61, label %72
81: ; preds = %130
%82 = call i32 @llvm.umax.i32(i32 %44, i32 1)
%83 = add nuw nsw i32 %82, 1
%84 = getelementptr inbounds [6 x double], [6 x double]* %5, i64 0, i64 0
%85 = load double, double* %84
%86 = fmul double %22, %85
%87 = tail call double @sin(double %86)
%88 = fmul double %87, %31
%89 = fmul double %85, %31
%90 = fmul double %22, %89
%91 = tail call double @sin(double %90)
%92 = fdiv double %88, %91
%93 = getelementptr inbounds [6 x double], [6 x double]* %13, i64 0, i64 0
store double %92, double* %93
%94 = icmp eq i32 %83, 2
br i1 %94, label %204, label %133
95: ; preds = %61, %130
%96 = phi i64 [ 1, %61 ], [ %131, %130 ]
%97 = add nsw i64 %96, -14
br i1 %70, label %119, label %98
98: ; preds = %95, %98
%99 = phi i64 [ %116, %98 ], [ 1, %95 ]
%100 = phi i64 [ %117, %98 ], [ 0, %95 ]
%101 = mul nuw nsw i64 %99, 13
%102 = add nsw i64 %97, %101
%103 = getelementptr inbounds [169 x double], [169 x double]* %6, i64 0, i64 %102
store double 0.000000e+00, double* %103
%104 = mul i64 %99, 13
%105 = add i64 %104, 13
%106 = add nsw i64 %97, %105
%107 = getelementptr inbounds [169 x double], [169 x double]* %6, i64 0, i64 %106
store double 0.000000e+00, double* %107
%108 = mul i64 %99, 13
%109 = add i64 %108, 26
%110 = add nsw i64 %97, %109
%111 = getelementptr inbounds [169 x double], [169 x double]* %6, i64 0, i64 %110
store double 0.000000e+00, double* %111
%112 = mul i64 %99, 13
%113 = add i64 %112, 39
%114 = add nsw i64 %97, %113
%115 = getelementptr inbounds [169 x double], [169 x double]* %6, i64 0, i64 %114
store double 0.000000e+00, double* %115
%116 = add nuw nsw i64 %99, 4
%117 = add i64 %100, 4
%118 = icmp eq i64 %117, %71
br i1 %118, label %119, label %98
119: ; preds = %95, %98
%120 = phi i64 [ 1, %95 ], [ %116, %98 ]
br label %121
121: ; preds = %121, %119
%122 = phi i64 [ %120, %119 ], [ %127, %121 ]
%123 = phi i64 [ 0, %119 ], [ %128, %121 ]
%124 = mul nuw nsw i64 %122, 13
%125 = add nsw i64 %97, %124
%126 = getelementptr inbounds [169 x double], [169 x double]* %6, i64 0, i64 %125
store double 0.000000e+00, double* %126
%127 = add nuw nsw i64 %122, 1
%128 = add i64 %123, 1
%129 = icmp eq i64 %128, %69
br i1 %129, label %130, label %121
130: ; preds = %121
%131 = add nuw nsw i64 %96, 1
%132 = icmp eq i64 %131, %66
br i1 %132, label %81, label %95
133: ; preds = %81
%134 = getelementptr inbounds [6 x double], [6 x double]* %5, i64 0, i64 1
%135 = load double, double* %134
%136 = fmul double %22, %135
%137 = tail call double @sin(double %136)
%138 = fmul double %137, %31
%139 = fmul double %135, %31
%140 = fmul double %22, %139
%141 = tail call double @sin(double %140)
%142 = fdiv double %138, %141
%143 = getelementptr inbounds [6 x double], [6 x double]* %13, i64 0, i64 1
store double %142, double* %143
%144 = icmp eq i32 %83, 3
br i1 %144, label %204, label %145
145: ; preds = %133
%146 = getelementptr inbounds [6 x double], [6 x double]* %5, i64 0, i64 2
%147 = load double, double* %146
%148 = fmul double %22, %147
%149 = tail call double @sin(double %148)
%150 = fmul double %149, %31
%151 = fmul double %147, %31
%152 = fmul double %22, %151
%153 = tail call double @sin(double %152)
%154 = fdiv double %150, %153
%155 = getelementptr inbounds [6 x double], [6 x double]* %13, i64 0, i64 2
store double %154, double* %155
%156 = icmp eq i32 %83, 4
br i1 %156, label %204, label %157
157: ; preds = %145
%158 = getelementptr inbounds [6 x double], [6 x double]* %5, i64 0, i64 3
%159 = load double, double* %158
%160 = fmul double %22, %159
%161 = tail call double @sin(double %160)
%162 = fmul double %161, %31
%163 = fmul double %159, %31
%164 = fmul double %22, %163
%165 = tail call double @sin(double %164)
%166 = fdiv double %162, %165
%167 = getelementptr inbounds [6 x double], [6 x double]* %13, i64 0, i64 3
store double %166, double* %167
%168 = icmp eq i32 %83, 5
br i1 %168, label %204, label %169
169: ; preds = %157
%170 = getelementptr inbounds [6 x double], [6 x double]* %5, i64 0, i64 4
%171 = load double, double* %170
%172 = fmul double %22, %171
%173 = tail call double @sin(double %172)
%174 = fmul double %173, %31
%175 = fmul double %171, %31
%176 = fmul double %22, %175
%177 = tail call double @sin(double %176)
%178 = fdiv double %174, %177
%179 = getelementptr inbounds [6 x double], [6 x double]* %13, i64 0, i64 4
store double %178, double* %179
%180 = icmp eq i32 %83, 6
br i1 %180, label %204, label %181
181: ; preds = %169
%182 = getelementptr inbounds [6 x double], [6 x double]* %5, i64 0, i64 5
%183 = load double, double* %182
%184 = fmul double %22, %183
%185 = tail call double @sin(double %184)
%186 = fmul double %185, %31
%187 = fmul double %183, %31
%188 = fmul double %22, %187
%189 = tail call double @sin(double %188)
%190 = fdiv double %186, %189
%191 = getelementptr inbounds [6 x double], [6 x double]* %13, i64 0, i64 5
store double %190, double* %191
%192 = icmp eq i32 %83, 7
br i1 %192, label %204, label %193
193: ; preds = %181
%194 = getelementptr inbounds [6 x double], [6 x double]* %5, i64 0, i64 6
%195 = load double, double* %194
%196 = fmul double %22, %195
%197 = tail call double @sin(double %196)
%198 = fmul double %197, %31
%199 = fmul double %195, %31
%200 = fmul double %22, %199
%201 = tail call double @sin(double %200)
%202 = fdiv double %198, %201
%203 = getelementptr inbounds [6 x double], [6 x double]* %13, i64 0, i64 6
store double %202, double* %203
br label %204
204: ; preds = %193, %181, %169, %157, %145, %133, %81
%205 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 0
store double 1.000000e+00, double* %205
%206 = sub nsw i32 %1, %30
%207 = add nsw i32 %206, 1
%208 = icmp slt i32 %206, 0
br i1 %208, label %209, label %214
209: ; preds = %204
%210 = getelementptr inbounds [169 x double], [169 x double]* %6, i64 0, i64 0
%211 = getelementptr inbounds [13 x double], [13 x double]* %11, i64 0, i64 0
%212 = getelementptr inbounds [13 x double], [13 x double]* %10, i64 0, i64 0
%213 = call i32 (double*, i32, i32, double*, double*, ...) bitcast (i32 (...)* @seife_gauss to i32 (double*, i32, i32, double*, double*, ...)*)(double* %210, i32 %46, i32 13, double* %211, double* %212)
br label %687
214: ; preds = %204
%215 = zext i32 %30 to i64
%216 = call i32 @llvm.umax.i32(i32 %44, i32 1)
%217 = add nuw nsw i32 %216, 1
%218 = add nuw nsw i64 %215, 1
%219 = add nsw i64 %215, -1
%220 = and i64 %215, 7
%221 = icmp eq i64 %220, 0
%222 = icmp ult i64 %219, 7
%223 = getelementptr inbounds [6 x double], [6 x double]* %5, i64 0, i64 0
%224 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 1
%225 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 2
%226 = icmp eq i32 %217, 2
%227 = getelementptr inbounds [6 x double], [6 x double]* %5, i64 0, i64 1
%228 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 3
%229 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 4
%230 = icmp eq i32 %217, 3
%231 = getelementptr inbounds [6 x double], [6 x double]* %5, i64 0, i64 2
%232 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 5
%233 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 6
%234 = icmp eq i32 %217, 4
%235 = getelementptr inbounds [6 x double], [6 x double]* %5, i64 0, i64 3
%236 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 7
%237 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 8
%238 = icmp eq i32 %217, 5
%239 = getelementptr inbounds [6 x double], [6 x double]* %5, i64 0, i64 4
%240 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 9
%241 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 10
%242 = icmp eq i32 %217, 6
%243 = getelementptr inbounds [6 x double], [6 x double]* %5, i64 0, i64 5
%244 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 11
%245 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 12
%246 = icmp eq i32 %217, 7
%247 = getelementptr inbounds [6 x double], [6 x double]* %5, i64 0, i64 6
%248 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 13
%249 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 14
%250 = add nsw i64 %66, -2
br label %254
251: ; preds = %381
%252 = icmp slt i32 %207, %310
%253 = add i64 %255, %215
br i1 %252, label %392, label %254
254: ; preds = %214, %251
%255 = phi i64 [ %218, %214 ], [ %253, %251 ]
%256 = phi i64 [ 1, %214 ], [ %309, %251 ]
%257 = trunc i64 %256 to i32
br i1 %221, label %268, label %258
258: ; preds = %254, %258
%259 = phi i64 [ %265, %258 ], [ %256, %254 ]
%260 = phi double [ %264, %258 ], [ 0.000000e+00, %254 ]
%261 = phi i64 [ %266, %258 ], [ 0, %254 ]
%262 = getelementptr inbounds double, double* %21, i64 %259
%263 = load double, double* %262
%264 = fadd double %260, %263
%265 = add nuw i64 %259, 1
%266 = add i64 %261, 1
%267 = icmp eq i64 %266, %220
br i1 %267, label %268, label %258
268: ; preds = %258, %254
%269 = phi double [ undef, %254 ], [ %264, %258 ]
%270 = phi i64 [ %256, %254 ], [ %265, %258 ]
%271 = phi double [ 0.000000e+00, %254 ], [ %264, %258 ]
br i1 %222, label %307, label %272
272: ; preds = %268, %272
%273 = phi i64 [ %305, %272 ], [ %270, %268 ]
%274 = phi double [ %304, %272 ], [ %271, %268 ]
%275 = getelementptr inbounds double, double* %21, i64 %273
%276 = load double, double* %275
%277 = fadd double %274, %276
%278 = getelementptr inbounds double, double* %0, i64 %273
%279 = load double, double* %278
%280 = fadd double %277, %279
%281 = add nuw i64 %273, 2
%282 = getelementptr inbounds double, double* %21, i64 %281
%283 = load double, double* %282
%284 = fadd double %280, %283
%285 = add nuw i64 %273, 3
%286 = getelementptr inbounds double, double* %21, i64 %285
%287 = load double, double* %286
%288 = fadd double %284, %287
%289 = add nuw i64 %273, 4
%290 = getelementptr inbounds double, double* %21, i64 %289
%291 = load double, double* %290
%292 = fadd double %288, %291
%293 = add nuw i64 %273, 5
%294 = getelementptr inbounds double, double* %21, i64 %293
%295 = load double, double* %294
%296 = fadd double %292, %295
%297 = add nuw i64 %273, 6
%298 = getelementptr inbounds double, double* %21, i64 %297
%299 = load double, double* %298
%300 = fadd double %296, %299
%301 = add nuw i64 %273, 7
%302 = getelementptr inbounds double, double* %21, i64 %301
%303 = load double, double* %302
%304 = fadd double %300, %303
%305 = add nuw i64 %273, 8
%306 = icmp eq i64 %305, %255
br i1 %306, label %307, label %272
307: ; preds = %272, %268
%308 = phi double [ %269, %268 ], [ %304, %272 ]
%309 = add i64 %256, %215
%310 = trunc i64 %309 to i32
%311 = fdiv double %308, %31
%312 = add nsw i32 %257, -1
%313 = sitofp i32 %312 to double
%314 = tail call double @llvm.fmuladd.f64(double %313, double %2, double %33)
%315 = load double, double* %223
%316 = fmul double %314, %315
%317 = tail call double @cos(double %316)
store double %317, double* %224
%318 = tail call double @sin(double %316)
store double %318, double* %225
br i1 %226, label %349, label %319
319: ; preds = %307
%320 = load double, double* %227
%321 = fmul double %314, %320
%322 = tail call double @cos(double %321)
store double %322, double* %228
%323 = tail call double @sin(double %321)
store double %323, double* %229
br i1 %230, label %349, label %324
324: ; preds = %319
%325 = load double, double* %231
%326 = fmul double %314, %325
%327 = tail call double @cos(double %326)
store double %327, double* %232
%328 = tail call double @sin(double %326)
store double %328, double* %233
br i1 %234, label %349, label %329
329: ; preds = %324
%330 = load double, double* %235
%331 = fmul double %314, %330
%332 = tail call double @cos(double %331)
store double %332, double* %236
%333 = tail call double @sin(double %331)
store double %333, double* %237
br i1 %238, label %349, label %334
334: ; preds = %329
%335 = load double, double* %239
%336 = fmul double %314, %335
%337 = tail call double @cos(double %336)
store double %337, double* %240
%338 = tail call double @sin(double %336)
store double %338, double* %241
br i1 %242, label %349, label %339
339: ; preds = %334
%340 = load double, double* %243
%341 = fmul double %314, %340
%342 = tail call double @cos(double %341)
store double %342, double* %244
%343 = tail call double @sin(double %341)
store double %343, double* %245
br i1 %246, label %349, label %344
344: ; preds = %339
%345 = load double, double* %247
%346 = fmul double %314, %345
%347 = tail call double @cos(double %346)
store double %347, double* %248
%348 = tail call double @sin(double %346)
store double %348, double* %249
br label %349
349: ; preds = %344, %339, %334, %329, %324, %319, %307
br label %350
350: ; preds = %349, %381
%351 = phi i64 [ %390, %381 ], [ 1, %349 ]
%352 = add nsw i64 %351, -1
%353 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 %352
%354 = load double, double* %353
%355 = getelementptr inbounds [13 x double], [13 x double]* %11, i64 0, i64 %352
%356 = load double, double* %355
%357 = tail call double @llvm.fmuladd.f64(double %311, double %354, double %356)
store double %357, double* %355
%358 = add nsw i64 %351, -14
br label %359
359: ; preds = %359, %350
%360 = phi i64 [ 1, %350 ], [ %378, %359 ]
%361 = phi i64 [ 0, %350 ], [ %379, %359 ]
%362 = add nsw i64 %360, -1
%363 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 %362
%364 = load double, double* %363
%365 = mul nuw nsw i64 %360, 13
%366 = add nsw i64 %358, %365
%367 = getelementptr inbounds [169 x double], [169 x double]* %6, i64 0, i64 %366
%368 = load double, double* %367
%369 = tail call double @llvm.fmuladd.f64(double %354, double %364, double %368)
store double %369, double* %367
%370 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 %360
%371 = load double, double* %370
%372 = mul i64 %360, 13
%373 = add i64 %372, 13
%374 = add nsw i64 %358, %373
%375 = getelementptr inbounds [169 x double], [169 x double]* %6, i64 0, i64 %374
%376 = load double, double* %375
%377 = tail call double @llvm.fmuladd.f64(double %354, double %371, double %376)
store double %377, double* %375
%378 = add nuw nsw i64 %360, 2
%379 = add i64 %361, 2
%380 = icmp eq i64 %379, %250
br i1 %380, label %381, label %359
381: ; preds = %359
%382 = add nsw i64 %378, -1
%383 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 %382
%384 = load double, double* %383
%385 = mul nuw nsw i64 %378, 13
%386 = add nsw i64 %358, %385
%387 = getelementptr inbounds [169 x double], [169 x double]* %6, i64 0, i64 %386
%388 = load double, double* %387
%389 = tail call double @llvm.fmuladd.f64(double %354, double %384, double %388)
store double %389, double* %387
%390 = add nuw nsw i64 %351, 1
%391 = icmp eq i64 %390, %66
br i1 %391, label %251, label %350
392: ; preds = %251
%393 = getelementptr inbounds [169 x double], [169 x double]* %6, i64 0, i64 0
%394 = getelementptr inbounds [13 x double], [13 x double]* %11, i64 0, i64 0
%395 = getelementptr inbounds [13 x double], [13 x double]* %10, i64 0, i64 0
%396 = call i32 (double*, i32, i32, double*, double*, ...) bitcast (i32 (...)* @seife_gauss to i32 (double*, i32, i32, double*, double*, ...)*)(double* %393, i32 %46, i32 13, double* %394, double* %395)
br i1 %208, label %687, label %397
397: ; preds = %392
%398 = add i32 %1, 1
%399 = fneg double %33
%400 = call i32 @llvm.umax.i32(i32 %44, i32 1)
%401 = add nuw nsw i32 %400, 1
%402 = zext i32 %30 to i64
%403 = zext i32 %401 to i64
%404 = getelementptr inbounds [6 x double], [6 x double]* %5, i64 0, i64 0
%405 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 1
%406 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 2
%407 = getelementptr inbounds [13 x double], [13 x double]* %8, i64 0, i64 1
%408 = getelementptr inbounds [13 x double], [13 x double]* %8, i64 0, i64 2
%409 = getelementptr inbounds [13 x double], [13 x double]* %9, i64 0, i64 1
%410 = bitcast double* %409 to <2 x double>*
%411 = icmp eq i32 %401, 2
%412 = getelementptr inbounds [6 x double], [6 x double]* %5, i64 0, i64 1
%413 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 3
%414 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 4
%415 = getelementptr inbounds [13 x double], [13 x double]* %8, i64 0, i64 3
%416 = getelementptr inbounds [13 x double], [13 x double]* %8, i64 0, i64 4
%417 = getelementptr inbounds [13 x double], [13 x double]* %9, i64 0, i64 3
%418 = bitcast double* %417 to <2 x double>*
%419 = icmp eq i32 %401, 3
%420 = getelementptr inbounds [6 x double], [6 x double]* %5, i64 0, i64 2
%421 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 5
%422 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 6
%423 = getelementptr inbounds [13 x double], [13 x double]* %8, i64 0, i64 5
%424 = getelementptr inbounds [13 x double], [13 x double]* %8, i64 0, i64 6
%425 = getelementptr inbounds [13 x double], [13 x double]* %9, i64 0, i64 5
%426 = bitcast double* %425 to <2 x double>*
%427 = icmp eq i32 %401, 4
%428 = getelementptr inbounds [6 x double], [6 x double]* %5, i64 0, i64 3
%429 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 7
%430 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 8
%431 = getelementptr inbounds [13 x double], [13 x double]* %8, i64 0, i64 7
%432 = getelementptr inbounds [13 x double], [13 x double]* %8, i64 0, i64 8
%433 = getelementptr inbounds [13 x double], [13 x double]* %9, i64 0, i64 7
%434 = bitcast double* %433 to <2 x double>*
%435 = icmp eq i32 %401, 5
%436 = getelementptr inbounds [6 x double], [6 x double]* %5, i64 0, i64 4
%437 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 9
%438 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 10
%439 = getelementptr inbounds [13 x double], [13 x double]* %8, i64 0, i64 9
%440 = getelementptr inbounds [13 x double], [13 x double]* %8, i64 0, i64 10
%441 = getelementptr inbounds [13 x double], [13 x double]* %9, i64 0, i64 9
%442 = bitcast double* %441 to <2 x double>*
%443 = icmp eq i32 %401, 6
%444 = getelementptr inbounds [6 x double], [6 x double]* %5, i64 0, i64 5
%445 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 11
%446 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 12
%447 = getelementptr inbounds [13 x double], [13 x double]* %8, i64 0, i64 11
%448 = getelementptr inbounds [13 x double], [13 x double]* %8, i64 0, i64 12
%449 = getelementptr inbounds [13 x double], [13 x double]* %9, i64 0, i64 11
%450 = bitcast double* %449 to <2 x double>*
%451 = icmp eq i32 %401, 7
%452 = getelementptr inbounds [6 x double], [6 x double]* %5, i64 0, i64 6
%453 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 13
%454 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 14
%455 = getelementptr inbounds [13 x double], [13 x double]* %8, i64 0, i64 13
%456 = getelementptr inbounds [13 x double], [13 x double]* %8, i64 0, i64 14
%457 = getelementptr inbounds [13 x double], [13 x double]* %9, i64 0, i64 13
%458 = bitcast double* %457 to <2 x double>*
%459 = insertelement <2 x double> poison, double %2, i64 0
%460 = shufflevector <2 x double> %459, <2 x double> poison, <2 x i32> zeroinitializer
%461 = insertelement <2 x double> poison, double %399, i64 0
%462 = shufflevector <2 x double> %461, <2 x double> poison, <2 x i32> zeroinitializer
br label %463
463: ; preds = %682, %397
%464 = phi i32 [ %686, %682 ], [ 0, %397 ]
%465 = phi i64 [ %683, %682 ], [ 1, %397 ]
%466 = phi i32 [ %620, %682 ], [ %30, %397 ]
%467 = mul i32 %30, %464
%468 = add i32 %467, 2
%469 = mul i32 %30, %464
%470 = sub i32 -2, %469
%471 = trunc i64 %465 to i32
%472 = add i32 %471, -1
%473 = sitofp i32 %472 to double
%474 = call double @llvm.fmuladd.f64(double %473, double %2, double %33)
%475 = load double, double* %404
%476 = fmul double %474, %475
%477 = call double @cos(double %476)
store double %477, double* %405
%478 = call double @sin(double %476)
store double %478, double* %406
%479 = fneg double %475
%480 = fmul double %478, %479
store double %480, double* %407
%481 = fmul double %475, %477
store double %481, double* %408
%482 = insertelement <2 x double> poison, double %481, i64 0
%483 = insertelement <2 x double> %482, double %475, i64 1
%484 = insertelement <2 x double> poison, double %479, i64 0
%485 = insertelement <2 x double> %484, double %480, i64 1
%486 = fmul <2 x double> %483, %485
store <2 x double> %486, <2 x double>* %410
br i1 %411, label %565, label %487
487: ; preds = %463
%488 = load double, double* %412
%489 = fmul double %474, %488
%490 = call double @cos(double %489)
store double %490, double* %413
%491 = call double @sin(double %489)
store double %491, double* %414
%492 = fneg double %488
%493 = fmul double %491, %492
store double %493, double* %415
%494 = fmul double %488, %490
store double %494, double* %416
%495 = insertelement <2 x double> poison, double %494, i64 0
%496 = insertelement <2 x double> %495, double %488, i64 1
%497 = insertelement <2 x double> poison, double %492, i64 0
%498 = insertelement <2 x double> %497, double %493, i64 1
%499 = fmul <2 x double> %496, %498
store <2 x double> %499, <2 x double>* %418
br i1 %419, label %565, label %500
500: ; preds = %487
%501 = load double, double* %420
%502 = fmul double %474, %501
%503 = call double @cos(double %502)
store double %503, double* %421
%504 = call double @sin(double %502)
store double %504, double* %422
%505 = fneg double %501
%506 = fmul double %504, %505
store double %506, double* %423
%507 = fmul double %501, %503
store double %507, double* %424
%508 = insertelement <2 x double> poison, double %507, i64 0
%509 = insertelement <2 x double> %508, double %501, i64 1
%510 = insertelement <2 x double> poison, double %505, i64 0
%511 = insertelement <2 x double> %510, double %506, i64 1
%512 = fmul <2 x double> %509, %511
store <2 x double> %512, <2 x double>* %426
br i1 %427, label %565, label %513
513: ; preds = %500
%514 = load double, double* %428
%515 = fmul double %474, %514
%516 = call double @cos(double %515)
store double %516, double* %429
%517 = call double @sin(double %515)
store double %517, double* %430
%518 = fneg double %514
%519 = fmul double %517, %518
store double %519, double* %431
%520 = fmul double %514, %516
store double %520, double* %432
%521 = insertelement <2 x double> poison, double %520, i64 0
%522 = insertelement <2 x double> %521, double %514, i64 1
%523 = insertelement <2 x double> poison, double %518, i64 0
%524 = insertelement <2 x double> %523, double %519, i64 1
%525 = fmul <2 x double> %522, %524
store <2 x double> %525, <2 x double>* %434
br i1 %435, label %565, label %526
526: ; preds = %513
%527 = load double, double* %436
%528 = fmul double %474, %527
%529 = call double @cos(double %528)
store double %529, double* %437
%530 = call double @sin(double %528)
store double %530, double* %438
%531 = fneg double %527
%532 = fmul double %530, %531
store double %532, double* %439
%533 = fmul double %527, %529
store double %533, double* %440
%534 = insertelement <2 x double> poison, double %533, i64 0
%535 = insertelement <2 x double> %534, double %527, i64 1
%536 = insertelement <2 x double> poison, double %531, i64 0
%537 = insertelement <2 x double> %536, double %532, i64 1
%538 = fmul <2 x double> %535, %537
store <2 x double> %538, <2 x double>* %442
br i1 %443, label %565, label %539
539: ; preds = %526
%540 = load double, double* %444
%541 = fmul double %474, %540
%542 = call double @cos(double %541)
store double %542, double* %445
%543 = call double @sin(double %541)
store double %543, double* %446
%544 = fneg double %540
%545 = fmul double %543, %544
store double %545, double* %447
%546 = fmul double %540, %542
store double %546, double* %448
%547 = insertelement <2 x double> poison, double %546, i64 0
%548 = insertelement <2 x double> %547, double %540, i64 1
%549 = insertelement <2 x double> poison, double %544, i64 0
%550 = insertelement <2 x double> %549, double %545, i64 1
%551 = fmul <2 x double> %548, %550
store <2 x double> %551, <2 x double>* %450
br i1 %451, label %565, label %552
552: ; preds = %539
%553 = load double, double* %452
%554 = fmul double %474, %553
%555 = call double @cos(double %554)
store double %555, double* %453
%556 = call double @sin(double %554)
store double %556, double* %454
%557 = fneg double %553
%558 = fmul double %556, %557
store double %558, double* %455
%559 = fmul double %553, %555
store double %559, double* %456
%560 = insertelement <2 x double> poison, double %559, i64 0
%561 = insertelement <2 x double> %560, double %553, i64 1
%562 = insertelement <2 x double> poison, double %557, i64 0
%563 = insertelement <2 x double> %562, double %558, i64 1
%564 = fmul <2 x double> %561, %563
store <2 x double> %564, <2 x double>* %458
br label %565
565: ; preds = %552, %539, %526, %513, %500, %487, %463
%566 = load double, double* %395
%567 = insertelement <2 x double> <double 0.000000e+00, double poison>, double %566, i64 1
br label %568
568: ; preds = %565, %568
%569 = phi i64 [ 1, %565 ], [ %611, %568 ]
%570 = phi double [ 0.000000e+00, %565 ], [ %610, %568 ]
%571 = phi <2 x double> [ %567, %565 ], [ %601, %568 ]
%572 = shl nuw i64 %569, 1
%573 = add nsw i64 %569, -1
%574 = getelementptr inbounds [6 x double], [6 x double]* %13, i64 0, i64 %573
%575 = load double, double* %574
%576 = add nsw i64 %572, -1
%577 = getelementptr inbounds [13 x double], [13 x double]* %10, i64 0, i64 %576
%578 = load double, double* %577
%579 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 %576
%580 = load double, double* %579
%581 = getelementptr inbounds [13 x double], [13 x double]* %10, i64 0, i64 %572
%582 = load double, double* %581
%583 = getelementptr inbounds [13 x double], [13 x double]* %7, i64 0, i64 %572
%584 = load double, double* %583
%585 = getelementptr inbounds [13 x double], [13 x double]* %8, i64 0, i64 %576
%586 = load double, double* %585
%587 = getelementptr inbounds [13 x double], [13 x double]* %8, i64 0, i64 %572
%588 = load double, double* %587
%589 = insertelement <2 x double> poison, double %582, i64 0
%590 = shufflevector <2 x double> %589, <2 x double> poison, <2 x i32> zeroinitializer
%591 = insertelement <2 x double> poison, double %588, i64 0
%592 = insertelement <2 x double> %591, double %584, i64 1
%593 = fmul <2 x double> %590, %592
%594 = insertelement <2 x double> poison, double %578, i64 0
%595 = shufflevector <2 x double> %594, <2 x double> poison, <2 x i32> zeroinitializer
%596 = insertelement <2 x double> poison, double %586, i64 0
%597 = insertelement <2 x double> %596, double %580, i64 1
%598 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %595, <2 x double> %597, <2 x double> %593)
%599 = insertelement <2 x double> poison, double %575, i64 0
%600 = shufflevector <2 x double> %599, <2 x double> poison, <2 x i32> zeroinitializer
%601 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %600, <2 x double> %598, <2 x double> %571)
%602 = getelementptr inbounds [13 x double], [13 x double]* %9, i64 0, i64 %576
%603 = load double, double* %602
%604 = getelementptr inbounds [13 x double], [13 x double]* %9, i64 0, i64 %572
%605 = load double, double* %604
%606 = fmul double %582, %605
%607 = call double @llvm.fmuladd.f64(double %578, double %603, double %606)
%608 = fmul double %575, %607
%609 = fmul double %608, 5.000000e-01
%610 = fadd double %570, %609
%611 = add nuw nsw i64 %569, 1
%612 = icmp eq i64 %611, %403
br i1 %612, label %613, label %568
613: ; preds = %568
%614 = mul i32 %466, -2
%615 = add i32 %398, %614
%616 = sext i32 %615 to i64
%617 = icmp sgt i64 %465, %616
%618 = trunc i64 %465 to i32
%619 = sub i32 %398, %618
%620 = select i1 %617, i32 %619, i32 %466
%621 = add i32 %620, %618
%622 = icmp sgt i32 %620, 0
br i1 %622, label %623, label %682
623: ; preds = %613
%624 = extractelement <2 x double> %601, i64 0
%625 = fneg double %624
%626 = fneg double %610
%627 = call i32 @llvm.smax.i32(i32 %468, i32 %621)
%628 = add i32 %627, %470
%629 = zext i32 %628 to i64
%630 = add nuw nsw i64 %629, 1
%631 = icmp eq i32 %628, 0
br i1 %631, label %664, label %632
632: ; preds = %623
%633 = and i64 %630, 8589934590
%634 = add i64 %465, %633
%635 = insertelement <2 x i64> poison, i64 %465, i64 0
%636 = shufflevector <2 x i64> %635, <2 x i64> poison, <2 x i32> zeroinitializer
%637 = add <2 x i64> %636, <i64 0, i64 1>
%638 = shufflevector <2 x double> %601, <2 x double> undef, <2 x i32> <i32 1, i32 1>
%639 = insertelement <2 x double> poison, double %625, i64 0
%640 = shufflevector <2 x double> %639, <2 x double> poison, <2 x i32> zeroinitializer
%641 = insertelement <2 x double> poison, double %626, i64 0
%642 = shufflevector <2 x double> %641, <2 x double> poison, <2 x i32> zeroinitializer
br label %643
643: ; preds = %643, %632
%644 = phi i64 [ 0, %632 ], [ %659, %643 ]
%645 = phi <2 x i64> [ %637, %632 ], [ %660, %643 ]
%646 = add i64 %465, %644
%647 = sub nuw nsw <2 x i64> %645, %636
%648 = trunc <2 x i64> %647 to <2 x i32>
%649 = sitofp <2 x i32> %648 to <2 x double>
%650 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %649, <2 x double> %460, <2 x double> %462)
%651 = getelementptr inbounds double, double* %21, i64 %646
%652 = bitcast double* %651 to <2 x double>*
%653 = load <2 x double>, <2 x double>* %652
%654 = fsub <2 x double> %653, %638
%655 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %640, <2 x double> %650, <2 x double> %654)
%656 = fmul <2 x double> %650, %642
%657 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %656, <2 x double> %650, <2 x double> %655)
%658 = bitcast double* %651 to <2 x double>*
store <2 x double> %657, <2 x double>* %658
%659 = add nuw i64 %644, 2
%660 = add <2 x i64> %645, <i64 2, i64 2>
%661 = icmp eq i64 %659, %633
br i1 %661, label %662, label %643
662: ; preds = %643
%663 = icmp eq i64 %630, %633
br i1 %663, label %682, label %664
664: ; preds = %623, %662
%665 = phi i64 [ %465, %623 ], [ %634, %662 ]
%666 = extractelement <2 x double> %601, i64 1
br label %667
667: ; preds = %664, %667
%668 = phi i64 [ %679, %667 ], [ %665, %664 ]
%669 = sub nuw nsw i64 %668, %465
%670 = trunc i64 %669 to i32
%671 = sitofp i32 %670 to double
%672 = call double @llvm.fmuladd.f64(double %671, double %2, double %399)
%673 = getelementptr inbounds double, double* %21, i64 %668
%674 = load double, double* %673
%675 = fsub double %674, %666
%676 = call double @llvm.fmuladd.f64(double %625, double %672, double %675)
%677 = fmul double %672, %626
%678 = call double @llvm.fmuladd.f64(double %677, double %672, double %676)
store double %678, double* %673
%679 = add nuw i64 %668, 1
%680 = trunc i64 %679 to i32
%681 = icmp sgt i32 %621, %680
br i1 %681, label %667, label %682
682: ; preds = %667, %662, %613
%683 = add i64 %465, %402
%684 = trunc i64 %683 to i32
%685 = icmp slt i32 %207, %684
%686 = add i32 %464, 1
br i1 %685, label %687, label %463
687: ; preds = %682, %209, %392
ret void
}