void radf5(int ido, int l1, const double cc[], double ch[], const double wa1[],
           const double wa2[], const double wa3[], const double wa4[]) {
  static const double tr11 = 0.309016994374947;
  static const double ti11 = 0.951056516295154;
  static const double tr12 = -0.809016994374947;
  static const double ti12 = 0.587785252292473;
  int i, k, ic;
  double ci2, di2, ci4, ci5, di3, di4, di5, ci3, cr2, cr3, dr2, dr3, dr4, dr5,
      cr5, cr4, ti2, ti3, ti5, ti4, tr2, tr3, tr4, tr5;
  for (k = 0; k < l1; k++) {
    cr2 = cc[(k + 4 * l1) * ido] + cc[(k + l1) * ido];
    ci5 = cc[(k + 4 * l1) * ido] - cc[(k + l1) * ido];
    cr3 = cc[(k + 3 * l1) * ido] + cc[(k + 2 * l1) * ido];
    ci4 = cc[(k + 3 * l1) * ido] - cc[(k + 2 * l1) * ido];
    ch[5 * k * ido] = cc[k * ido] + cr2 + cr3;
    ch[ido - 1 + (5 * k + 1) * ido] = cc[k * ido] + tr11 * cr2 + tr12 * cr3;
    ch[(5 * k + 2) * ido] = ti11 * ci5 + ti12 * ci4;
    ch[ido - 1 + (5 * k + 3) * ido] = cc[k * ido] + tr12 * cr2 + tr11 * cr3;
    ch[(5 * k + 4) * ido] = ti12 * ci5 - ti11 * ci4;
  }
  if (ido == 1)
    return;
  for (k = 0; k < l1; ++k) {
    for (i = 2; i < ido; i += 2) {
      ic = ido - i;
      dr2 = wa1[i - 2] * cc[i - 1 + (k + l1) * ido] +
            wa1[i - 1] * cc[i + (k + l1) * ido];
      di2 = wa1[i - 2] * cc[i + (k + l1) * ido] -
            wa1[i - 1] * cc[i - 1 + (k + l1) * ido];
      dr3 = wa2[i - 2] * cc[i - 1 + (k + 2 * l1) * ido] +
            wa2[i - 1] * cc[i + (k + 2 * l1) * ido];
      di3 = wa2[i - 2] * cc[i + (k + 2 * l1) * ido] -
            wa2[i - 1] * cc[i - 1 + (k + 2 * l1) * ido];
      dr4 = wa3[i - 2] * cc[i - 1 + (k + 3 * l1) * ido] +
            wa3[i - 1] * cc[i + (k + 3 * l1) * ido];
      di4 = wa3[i - 2] * cc[i + (k + 3 * l1) * ido] -
            wa3[i - 1] * cc[i - 1 + (k + 3 * l1) * ido];
      dr5 = wa4[i - 2] * cc[i - 1 + (k + 4 * l1) * ido] +
            wa4[i - 1] * cc[i + (k + 4 * l1) * ido];
      di5 = wa4[i - 2] * cc[i + (k + 4 * l1) * ido] -
            wa4[i - 1] * cc[i - 1 + (k + 4 * l1) * ido];
      cr2 = dr2 + dr5;
      ci5 = dr5 - dr2;
      cr5 = di2 - di5;
      ci2 = di2 + di5;
      cr3 = dr3 + dr4;
      ci4 = dr4 - dr3;
      cr4 = di3 - di4;
      ci3 = di3 + di4;
      ch[i - 1 + 5 * k * ido] = cc[i - 1 + k * ido] + cr2 + cr3;
      ch[i + 5 * k * ido] = cc[i + k * ido] + ci2 + ci3;
      tr2 = cc[i - 1 + k * ido] + tr11 * cr2 + tr12 * cr3;
      ti2 = cc[i + k * ido] + tr11 * ci2 + tr12 * ci3;
      tr3 = cc[i - 1 + k * ido] + tr12 * cr2 + tr11 * cr3;
      ti3 = cc[i + k * ido] + tr12 * ci2 + tr11 * ci3;
      tr5 = ti11 * cr5 + ti12 * cr4;
      ti5 = ti11 * ci5 + ti12 * ci4;
      tr4 = ti12 * cr5 - ti11 * cr4;
      ti4 = ti12 * ci5 - ti11 * ci4;
      ch[i - 1 + (5 * k + 2) * ido] = tr2 + tr5;
      ch[ic - 1 + (5 * k + 1) * ido] = tr2 - tr5;
      ch[i + (5 * k + 2) * ido] = ti2 + ti5;
      ch[ic + (5 * k + 1) * ido] = ti5 - ti2;
      ch[i - 1 + (5 * k + 4) * ido] = tr3 + tr4;
      ch[ic - 1 + (5 * k + 3) * ido] = tr3 - tr4;
      ch[i + (5 * k + 4) * ido] = ti3 + ti4;
      ch[ic + (5 * k + 3) * ido] = ti4 - ti3;
    }
  }
}


x86 assembly (clang, -O0):
<radf5>:
push   %rbp
mov    %rsp,%rbp
sub    $0x78,%rsp
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %rdx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8,-0x20(%rbp)
mov    %r9,-0x28(%rbp)
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    13a3 <radf5+0x2a3>
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
mov    -0x8(%rbp),%edx
shl    $0x2,%edx
add    %edx,%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    -0x8(%rbp),%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
mov    -0x8(%rbp),%edx
shl    $0x2,%edx
add    %edx,%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    -0x8(%rbp),%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
imul   $0x3,-0x8(%rbp),%edx
add    %edx,%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
mov    -0x8(%rbp),%edx
shl    $0x1,%edx
add    %edx,%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
imul   $0x3,-0x8(%rbp),%edx
add    %edx,%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
mov    -0x8(%rbp),%edx
shl    $0x1,%edx
add    %edx,%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
addsd  -0x80(%rbp),%xmm0
addsd  -0x88(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
imul   $0x5,-0x30(%rbp),%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x80(%rbp),%xmm1
movsd  0xda2(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x88(%rbp),%xmm0
ff
movsd  0xd92(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
imul   $0x5,-0x30(%rbp),%edx
add    $0x1,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
movsd  0xd46(%rip),%xmm1
mulsd  -0x50(%rbp),%xmm1
movsd  0xd41(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
imul   $0x5,-0x30(%rbp),%ecx
add    $0x2,%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x80(%rbp),%xmm1
movsd  0xd12(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x88(%rbp),%xmm0
ff
movsd  0xcf2(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
imul   $0x5,-0x30(%rbp),%edx
add    $0x3,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
movsd  0xcb6(%rip),%xmm1
mulsd  -0x50(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0xc8a(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
imul   $0x5,-0x30(%rbp),%ecx
add    $0x4,%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    112d <radf5+0x2d>
cmpl   $0x1,-0x4(%rbp)
jne    13b2 <radf5+0x2b2>
jmp    1c88 <radf5+0xb88>
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1c88 <radf5+0xb88>
movl   $0x2,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    1c75 <radf5+0xb75>
mov    -0x4(%rbp),%eax
sub    -0x2c(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
add    -0x8(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    -0x20(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
mov    -0x30(%rbp),%edx
add    -0x8(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x20(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
mov    -0x30(%rbp),%edx
add    -0x8(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    -0x20(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
add    -0x8(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x28(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
mov    -0x8(%rbp),%esi
shl    $0x1,%esi
add    %esi,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    -0x28(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
mov    -0x30(%rbp),%edx
mov    -0x8(%rbp),%esi
shl    $0x1,%esi
add    %esi,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x28(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
mov    -0x30(%rbp),%edx
mov    -0x8(%rbp),%esi
shl    $0x1,%esi
add    %esi,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    -0x28(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
mov    -0x8(%rbp),%esi
shl    $0x1,%esi
add    %esi,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
imul   $0x3,-0x8(%rbp),%esi
add    %esi,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   $0x3,-0x8(%rbp),%esi
add    %esi,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   $0x3,-0x8(%rbp),%esi
add    %esi,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
imul   $0x3,-0x8(%rbp),%esi
add    %esi,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
mov    -0x8(%rbp),%esi
shl    $0x2,%esi
add    %esi,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
mov    -0x30(%rbp),%edx
mov    -0x8(%rbp),%esi
shl    $0x2,%esi
add    %esi,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
mov    -0x30(%rbp),%edx
mov    -0x8(%rbp),%esi
shl    $0x2,%esi
add    %esi,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
mov    -0x8(%rbp),%esi
shl    $0x2,%esi
add    %esi,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x90(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x80(%rbp)
movsd  -0xa8(%rbp),%xmm0
ff
subsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x58(%rbp)
movsd  -0x48(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x98(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
subsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x50(%rbp)
movsd  -0x60(%rbp),%xmm0
subsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
addsd  -0x80(%rbp),%xmm0
addsd  -0x88(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
imul   $0x5,-0x30(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
addsd  -0x40(%rbp),%xmm0
addsd  -0x78(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   $0x5,-0x30(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x80(%rbp),%xmm1
movsd  0x703(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x88(%rbp),%xmm0
ff
movsd  0x6f3(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x40(%rbp),%xmm1
movsd  0x6b6(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x78(%rbp),%xmm0
movsd  0x6a9(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x80(%rbp),%xmm1
movsd  0x671(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x88(%rbp),%xmm0
ff
movsd  0x651(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x40(%rbp),%xmm1
movsd  0x624(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x78(%rbp),%xmm0
movsd  0x607(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  0x5d7(%rip),%xmm1
mulsd  -0xb8(%rbp),%xmm1
ff
movsd  0x5cf(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  0x5aa(%rip),%xmm1
mulsd  -0x50(%rbp),%xmm1
movsd  0x5a5(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  0x585(%rip),%xmm1
mulsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0x556(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  0x541(%rip),%xmm1
mulsd  -0x50(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0x515(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
addsd  -0xf8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
imul   $0x5,-0x30(%rbp),%edx
add    $0x2,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xe0(%rbp),%xmm0
ff
subsd  -0xf8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
imul   $0x5,-0x30(%rbp),%edx
add    $0x1,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xd0(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   $0x5,-0x30(%rbp),%edx
add    $0x2,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xd0(%rbp),%xmm0
ff
subsd  -0xc0(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    -0x34(%rbp),%ecx
imul   $0x5,-0x30(%rbp),%edx
add    $0x1,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xe8(%rbp),%xmm0
ff
addsd  -0xf0(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
imul   $0x5,-0x30(%rbp),%edx
add    $0x4,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xe8(%rbp),%xmm0
ff
subsd  -0xf0(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
imul   $0x5,-0x30(%rbp),%edx
add    $0x3,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xd8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   $0x5,-0x30(%rbp),%edx
add    $0x4,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xd8(%rbp),%xmm0
ff
subsd  -0xc8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    -0x34(%rbp),%ecx
imul   $0x5,-0x30(%rbp),%edx
add    $0x3,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x2c(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x2c(%rbp)
jmp    13cc <radf5+0x2cc>
jmp    1c7a <radf5+0xb7a>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    13b9 <radf5+0x2b9>
add    $0x78,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<radf5>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %edi,-0x4c(%rsp)
test   %esi,%esi
jle    169b <radf5+0x59b>
lea    0x0(,%rsi,4),%eax
lea    (%rsi,%rsi,2),%ebp
lea    (%rsi,%rsi,1),%edi
movslq %eax,%r10
movslq -0x4c(%rsp),%rbx
movslq %ebp,%r14
movslq %edi,%rdi
mov    %rsi,-0x40(%rsp)
mov    %esi,%r11d
mov    %rbx,%r12
shl    $0x5,%r12
lea    0x0(,%rbx,8),%rax
mov    %rax,-0x30(%rsp)
lea    (%rax,%rax,4),%rax
mov    %rax,-0x38(%rsp)
lea    (%rbx,%rbx,2),%rax
lea    -0x8(,%rbx,8),%rsi
ff
lea    (%rsi,%rax,8),%r15
mov    %rbx,%r13
shl    $0x4,%r13
mov    %rbx,%rbp
mov    %rdi,%rax
mov    %rdi,-0x10(%rsp)
imul   %rdi,%rbp
imul   %rbx,%r14
mov    %rbx,%rax
imul   %r11,%rax
mov    %rbx,%rdi
mov    %r10,%rsi
mov    %r10,-0x8(%rsp)
imul   %r10,%rdi
movsd  0xe61(%rip),%xmm8
movsd  0xe60(%rip),%xmm10
movsd  0xe60(%rip),%xmm7
movsd  0xe5f(%rip),%xmm9
movsd  0xe5f(%rip),%xmm6
mov    %rbx,-0x20(%rsp)
lea    -0x1(%rbx,%rbx,1),%rbx
mov    %r11,%rsi
mov    %r11,-0x28(%rsp)
mov    %r11,%r10
mov    %rdx,%rsi
mov    %rcx,%r11
nopl   0x0(%rax)
movsd  (%rsi,%rdi,8),%xmm0
movsd  (%rsi,%rax,8),%xmm1
movapd %xmm0,%xmm2
addsd  %xmm1,%xmm2
subsd  %xmm1,%xmm0
movsd  (%rsi,%r14,8),%xmm1
movsd  (%rsi,%rbp,8),%xmm4
movapd %xmm1,%xmm3
addsd  %xmm4,%xmm3
subsd  %xmm4,%xmm1
movsd  (%rsi),%xmm4
addsd  %xmm2,%xmm4
addsd  %xmm3,%xmm4
movsd  %xmm4,(%r11)
movapd %xmm2,%xmm4
mulsd  %xmm8,%xmm4
addsd  (%rsi),%xmm4
movapd %xmm3,%xmm5
mulsd  %xmm10,%xmm5
addsd  %xmm4,%xmm5
movsd  %xmm5,(%r11,%rbx,8)
movapd %xmm1,%xmm4
mulsd  %xmm7,%xmm4
movapd %xmm0,%xmm5
mulsd  %xmm9,%xmm5
addsd  %xmm4,%xmm5
movsd  %xmm5,(%r11,%r13,1)
mulsd  %xmm10,%xmm2
addsd  (%rsi),%xmm2
mulsd  %xmm8,%xmm3
addsd  %xmm2,%xmm3
movsd  %xmm3,(%r11,%r15,1)
mulsd  %xmm6,%xmm1
mulsd  %xmm7,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%r11,%r12,1)
add    -0x38(%rsp),%r11
add    -0x30(%rsp),%rsi
add    $0xffffffffffffffff,%r10
jne    11e0 <radf5+0xe0>
cmpl   $0x1,-0x4c(%rsp)
mov    -0x20(%rsp),%rbp
mov    -0x40(%rsp),%rax
je     169b <radf5+0x59b>
test   %eax,%eax
jle    169b <radf5+0x59b>
lea    (%rax,%rax,2),%eax
cltq
mov    %rax,-0x18(%rsp)
xor    %eax,%eax
mov    %rax,-0x48(%rsp)
movsd  0xd32(%rip),%xmm11
movsd  0xd31(%rip),%xmm10
jmp    12fc <radf5+0x1fc>
nopl   0x0(%rax)
mov    -0x48(%rsp),%rsi
add    $0x1,%rsi
mov    %rsi,%rax
mov    %rsi,-0x48(%rsp)
cmp    -0x28(%rsp),%rsi
je     169b <radf5+0x59b>
cmpl   $0x3,-0x4c(%rsp)
jl     12e0 <radf5+0x1e0>
mov    -0x28(%rsp),%rax
mov    -0x48(%rsp),%rsi
add    %rsi,%rax
imul   %rbp,%rax
mov    %rax,-0x30(%rsp)
mov    -0x10(%rsp),%rax
add    %rsi,%rax
imul   %rbp,%rax
mov    %rax,-0x38(%rsp)
mov    -0x18(%rsp),%rax
add    %rsi,%rax
imul   %rbp,%rax
mov    %rax,-0x40(%rsp)
mov    -0x8(%rsp),%rax
lea    (%rsi,%rax,1),%r14
imul   %rbp,%r14
mov    %rsi,%r11
imul   %rbp,%r11
lea    (%rsi,%rsi,4),%r15
imul   %rbp,%r15
lea    (%rsi,%rsi,4),%rdi
add    $0x2,%rdi
imul   %rbp,%rdi
lea    (%rsi,%rsi,4),%r10
add    $0x1,%r10
imul   %rbp,%r10
lea    (%rsi,%rsi,4),%r13
add    $0x4,%r13
imul   %rbp,%r13
lea    (%rsi,%rsi,4),%r12
add    $0x3,%r12
imul   %rbp,%r12
mov    $0x2,%ebx
nopl   0x0(%rax)
mov    %r9,%rax
mov    -0x30(%rsp),%rbp
lea    (%rbx,%rbp,1),%r9
add    $0xffffffffffffffff,%r9
movsd  -0x10(%r8,%rbx,8),%xmm4
movsd  -0x8(%r8,%rbx,8),%xmm1
mov    %r8,%rsi
lea    (%rbx,%rbp,1),%r8
movsd  (%rdx,%r9,8),%xmm15
mov    %rax,%r9
movsd  (%rdx,%r8,8),%xmm3
mov    %rsi,%r8
movapd %xmm4,%xmm13
mulsd  %xmm15,%xmm13
mulsd  %xmm1,%xmm15
movapd %xmm1,%xmm6
mulsd  %xmm3,%xmm6
mov    -0x38(%rsp),%rsi
lea    -0x1(%rbx,%rsi,1),%rax
movsd  (%rdx,%rax,8),%xmm1
movsd  -0x10(%r9,%rbx,8),%xmm2
mulsd  %xmm3,%xmm4
movsd  -0x8(%r9,%rbx,8),%xmm3
lea    (%rbx,%rsi,1),%rax
movsd  (%rdx,%rax,8),%xmm5
movapd %xmm2,%xmm7
mulsd  %xmm1,%xmm7
mulsd  %xmm3,%xmm1
mulsd  %xmm5,%xmm3
mov    -0x40(%rsp),%rsi
lea    -0x1(%rbx,%rsi,1),%rax
mulsd  %xmm5,%xmm2
movsd  (%rdx,%rax,8),%xmm0
mov    0x38(%rsp),%rax
movsd  -0x10(%rax,%rbx,8),%xmm5
movsd  -0x8(%rax,%rbx,8),%xmm8
addsd  %xmm6,%xmm13
lea    (%rbx,%rsi,1),%rax
movsd  (%rdx,%rax,8),%xmm6
movapd %xmm5,%xmm14
mulsd  %xmm0,%xmm14
subsd  %xmm15,%xmm4
mulsd  %xmm8,%xmm0
mulsd  %xmm6,%xmm8
mulsd  %xmm6,%xmm5
addsd  %xmm3,%xmm7
lea    -0x1(%rbx,%r14,1),%rax
movsd  (%rdx,%rax,8),%xmm3
mov    0x40(%rsp),%rax
movsd  -0x10(%rax,%rbx,8),%xmm6
subsd  %xmm1,%xmm2
movsd  -0x8(%rax,%rbx,8),%xmm15
lea    (%rbx,%r14,1),%rax
movapd %xmm9,%xmm12
movsd  (%rdx,%rax,8),%xmm9
movapd %xmm6,%xmm1
addsd  %xmm8,%xmm14
mulsd  %xmm3,%xmm1
mulsd  %xmm15,%xmm3
mulsd  %xmm9,%xmm15
subsd  %xmm0,%xmm5
addsd  %xmm15,%xmm1
mulsd  %xmm9,%xmm6
subsd  %xmm3,%xmm6
movapd %xmm13,%xmm0
addsd  %xmm1,%xmm0
movapd %xmm4,%xmm15
subsd  %xmm6,%xmm15
addsd  %xmm4,%xmm6
movapd %xmm7,%xmm4
lea    -0x1(%rbx,%r11,1),%rax
addsd  %xmm14,%xmm4
movapd %xmm2,%xmm8
movsd  (%rdx,%rax,8),%xmm3
addsd  %xmm0,%xmm3
addsd  %xmm4,%xmm3
subsd  %xmm5,%xmm8
lea    -0x1(%rbx,%r15,1),%rbp
movsd  %xmm3,(%rcx,%rbp,8)
lea    (%rbx,%r11,1),%rbp
addsd  %xmm2,%xmm5
movsd  (%rdx,%rbp,8),%xmm2
addsd  %xmm6,%xmm2
addsd  %xmm5,%xmm2
lea    (%rbx,%r15,1),%rsi
movsd  %xmm2,(%rcx,%rsi,8)
subsd  %xmm13,%xmm1
subsd  %xmm7,%xmm14
movapd %xmm0,%xmm3
movsd  (%rdx,%rax,8),%xmm9
mulsd  %xmm11,%xmm3
addsd  %xmm9,%xmm3
movapd %xmm4,%xmm2
mulsd  %xmm10,%xmm2
addsd  %xmm3,%xmm2
movsd  (%rdx,%rbp,8),%xmm7
mov    -0x20(%rsp),%rbp
movapd %xmm6,%xmm3
mulsd  %xmm11,%xmm3
movapd %xmm5,%xmm13
mulsd  %xmm10,%xmm13
addsd  %xmm7,%xmm3
addsd  %xmm3,%xmm13
mulsd  %xmm10,%xmm0
addsd  %xmm9,%xmm0
movapd %xmm12,%xmm9
movsd  0xa7f(%rip),%xmm12
mulsd  %xmm11,%xmm4
mulsd  %xmm10,%xmm6
addsd  %xmm7,%xmm6
movsd  0xa79(%rip),%xmm7
mulsd  %xmm11,%xmm5
movapd %xmm8,%xmm3
addsd  %xmm0,%xmm4
mulsd  %xmm12,%xmm3
movapd %xmm15,%xmm0
mulsd  %xmm9,%xmm0
addsd  %xmm3,%xmm0
movapd %xmm14,%xmm3
addsd  %xmm6,%xmm5
mulsd  %xmm12,%xmm3
movapd %xmm1,%xmm6
mulsd  %xmm9,%xmm6
addsd  %xmm3,%xmm6
mulsd  %xmm7,%xmm8
mulsd  %xmm12,%xmm15
addsd  %xmm8,%xmm15
mulsd  %xmm7,%xmm14
mulsd  %xmm12,%xmm1
addsd  %xmm14,%xmm1
movapd %xmm0,%xmm3
addsd  %xmm2,%xmm3
lea    -0x1(%rbx,%rdi,1),%rax
movsd  %xmm3,(%rcx,%rax,8)
subsd  %xmm0,%xmm2
mov    %rbp,%rax
sub    %rbx,%rax
lea    (%rax,%r10,1),%rsi
add    $0xffffffffffffffff,%rsi
movsd  %xmm2,(%rcx,%rsi,8)
movapd %xmm6,%xmm0
addsd  %xmm13,%xmm0
subsd  %xmm13,%xmm6
lea    (%rbx,%rdi,1),%rsi
movsd  %xmm0,(%rcx,%rsi,8)
lea    (%rax,%r10,1),%rsi
movsd  %xmm6,(%rcx,%rsi,8)
movapd %xmm15,%xmm0
lea    -0x1(%rbx,%r13,1),%rsi
addsd  %xmm4,%xmm0
movsd  %xmm0,(%rcx,%rsi,8)
subsd  %xmm15,%xmm4
lea    -0x1(%rax,%r12,1),%rsi
movsd  %xmm4,(%rcx,%rsi,8)
movapd %xmm1,%xmm0
addsd  %xmm5,%xmm0
subsd  %xmm5,%xmm1
lea    (%rbx,%r13,1),%rsi
movsd  %xmm0,(%rcx,%rsi,8)
add    %r12,%rax
movsd  %xmm1,(%rcx,%rax,8)
add    $0x2,%rbx
cmp    %rbp,%rbx
jl     1390 <radf5+0x290>
jmp    12e0 <radf5+0x1e0>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@radf5.tr11 = internal constant double 0x3FD3C6EF372FE948
@radf5.ti11 = internal constant double 0x3FEE6F0E13445503
@radf5.tr12 = internal constant double 0xBFE9E3779B97F4A4
@radf5.ti12 = internal constant double 0x3FE2CF2304755A5D
define void @radf5(i32 %0, i32 %1, double* %2, double* %3, double* %4, double* %5, double* %6, double* %7) {
%9 = alloca i32
%10 = alloca i32
%11 = alloca double*
%12 = alloca double*
%13 = alloca double*
%14 = alloca double*
%15 = alloca double*
%16 = alloca double*
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = alloca double
%30 = alloca double
%31 = alloca double
%32 = alloca double
%33 = alloca double
%34 = alloca double
%35 = alloca double
%36 = alloca double
%37 = alloca double
%38 = alloca double
%39 = alloca double
%40 = alloca double
%41 = alloca double
%42 = alloca double
%43 = alloca double
store i32 %0, i32* %9
store i32 %1, i32* %10
store double* %2, double** %11
store double* %3, double** %12
store double* %4, double** %13
store double* %5, double** %14
store double* %6, double** %15
store double* %7, double** %16
store i32 0, i32* %18
br label %44
44: ; preds = %218, %8
%45 = load i32, i32* %18
%46 = load i32, i32* %10
%47 = icmp slt i32 %45, %46
br i1 %47, label %48, label %221
48: ; preds = %44
%49 = load double*, double** %11
%50 = load i32, i32* %18
%51 = load i32, i32* %10
%52 = mul nsw i32 4, %51
%53 = add nsw i32 %50, %52
%54 = load i32, i32* %9
%55 = mul nsw i32 %53, %54
%56 = sext i32 %55 to i64
%57 = getelementptr inbounds double, double* %49, i64 %56
%58 = load double, double* %57
%59 = load double*, double** %11
%60 = load i32, i32* %18
%61 = load i32, i32* %10
%62 = add nsw i32 %60, %61
%63 = load i32, i32* %9
%64 = mul nsw i32 %62, %63
%65 = sext i32 %64 to i64
%66 = getelementptr inbounds double, double* %59, i64 %65
%67 = load double, double* %66
%68 = fadd double %58, %67
store double %68, double* %28
%69 = load double*, double** %11
%70 = load i32, i32* %18
%71 = load i32, i32* %10
%72 = mul nsw i32 4, %71
%73 = add nsw i32 %70, %72
%74 = load i32, i32* %9
%75 = mul nsw i32 %73, %74
%76 = sext i32 %75 to i64
%77 = getelementptr inbounds double, double* %69, i64 %76
%78 = load double, double* %77
%79 = load double*, double** %11
%80 = load i32, i32* %18
%81 = load i32, i32* %10
%82 = add nsw i32 %80, %81
%83 = load i32, i32* %9
%84 = mul nsw i32 %82, %83
%85 = sext i32 %84 to i64
%86 = getelementptr inbounds double, double* %79, i64 %85
%87 = load double, double* %86
%88 = fsub double %78, %87
store double %88, double* %23
%89 = load double*, double** %11
%90 = load i32, i32* %18
%91 = load i32, i32* %10
%92 = mul nsw i32 3, %91
%93 = add nsw i32 %90, %92
%94 = load i32, i32* %9
%95 = mul nsw i32 %93, %94
%96 = sext i32 %95 to i64
%97 = getelementptr inbounds double, double* %89, i64 %96
%98 = load double, double* %97
%99 = load double*, double** %11
%100 = load i32, i32* %18
%101 = load i32, i32* %10
%102 = mul nsw i32 2, %101
%103 = add nsw i32 %100, %102
%104 = load i32, i32* %9
%105 = mul nsw i32 %103, %104
%106 = sext i32 %105 to i64
%107 = getelementptr inbounds double, double* %99, i64 %106
%108 = load double, double* %107
%109 = fadd double %98, %108
store double %109, double* %29
%110 = load double*, double** %11
%111 = load i32, i32* %18
%112 = load i32, i32* %10
%113 = mul nsw i32 3, %112
%114 = add nsw i32 %111, %113
%115 = load i32, i32* %9
%116 = mul nsw i32 %114, %115
%117 = sext i32 %116 to i64
%118 = getelementptr inbounds double, double* %110, i64 %117
%119 = load double, double* %118
%120 = load double*, double** %11
%121 = load i32, i32* %18
%122 = load i32, i32* %10
%123 = mul nsw i32 2, %122
%124 = add nsw i32 %121, %123
%125 = load i32, i32* %9
%126 = mul nsw i32 %124, %125
%127 = sext i32 %126 to i64
%128 = getelementptr inbounds double, double* %120, i64 %127
%129 = load double, double* %128
%130 = fsub double %119, %129
store double %130, double* %22
%131 = load double*, double** %11
%132 = load i32, i32* %18
%133 = load i32, i32* %9
%134 = mul nsw i32 %132, %133
%135 = sext i32 %134 to i64
%136 = getelementptr inbounds double, double* %131, i64 %135
%137 = load double, double* %136
%138 = load double, double* %28
%139 = fadd double %137, %138
%140 = load double, double* %29
%141 = fadd double %139, %140
%142 = load double*, double** %12
%143 = load i32, i32* %18
%144 = mul nsw i32 5, %143
%145 = load i32, i32* %9
%146 = mul nsw i32 %144, %145
%147 = sext i32 %146 to i64
%148 = getelementptr inbounds double, double* %142, i64 %147
store double %141, double* %148
%149 = load double*, double** %11
%150 = load i32, i32* %18
%151 = load i32, i32* %9
%152 = mul nsw i32 %150, %151
%153 = sext i32 %152 to i64
%154 = getelementptr inbounds double, double* %149, i64 %153
%155 = load double, double* %154
%156 = load double, double* %28
%157 = call double @llvm.fmuladd.f64(double 0x3FD3C6EF372FE948, double %156, double %155)
%158 = load double, double* %29
%159 = call double @llvm.fmuladd.f64(double 0xBFE9E3779B97F4A4, double %158, double %157)
%160 = load double*, double** %12
%161 = load i32, i32* %9
%162 = sub nsw i32 %161, 1
%163 = load i32, i32* %18
%164 = mul nsw i32 5, %163
%165 = add nsw i32 %164, 1
%166 = load i32, i32* %9
%167 = mul nsw i32 %165, %166
%168 = add nsw i32 %162, %167
%169 = sext i32 %168 to i64
%170 = getelementptr inbounds double, double* %160, i64 %169
store double %159, double* %170
%171 = load double, double* %23
%172 = load double, double* %22
%173 = fmul double 0x3FE2CF2304755A5D, %172
%174 = call double @llvm.fmuladd.f64(double 0x3FEE6F0E13445503, double %171, double %173)
%175 = load double*, double** %12
%176 = load i32, i32* %18
%177 = mul nsw i32 5, %176
%178 = add nsw i32 %177, 2
%179 = load i32, i32* %9
%180 = mul nsw i32 %178, %179
%181 = sext i32 %180 to i64
%182 = getelementptr inbounds double, double* %175, i64 %181
store double %174, double* %182
%183 = load double*, double** %11
%184 = load i32, i32* %18
%185 = load i32, i32* %9
%186 = mul nsw i32 %184, %185
%187 = sext i32 %186 to i64
%188 = getelementptr inbounds double, double* %183, i64 %187
%189 = load double, double* %188
%190 = load double, double* %28
%191 = call double @llvm.fmuladd.f64(double 0xBFE9E3779B97F4A4, double %190, double %189)
%192 = load double, double* %29
%193 = call double @llvm.fmuladd.f64(double 0x3FD3C6EF372FE948, double %192, double %191)
%194 = load double*, double** %12
%195 = load i32, i32* %9
%196 = sub nsw i32 %195, 1
%197 = load i32, i32* %18
%198 = mul nsw i32 5, %197
%199 = add nsw i32 %198, 3
%200 = load i32, i32* %9
%201 = mul nsw i32 %199, %200
%202 = add nsw i32 %196, %201
%203 = sext i32 %202 to i64
%204 = getelementptr inbounds double, double* %194, i64 %203
store double %193, double* %204
%205 = load double, double* %23
%206 = load double, double* %22
%207 = fmul double 0x3FEE6F0E13445503, %206
%208 = fneg double %207
%209 = call double @llvm.fmuladd.f64(double 0x3FE2CF2304755A5D, double %205, double %208)
%210 = load double*, double** %12
%211 = load i32, i32* %18
%212 = mul nsw i32 5, %211
%213 = add nsw i32 %212, 4
%214 = load i32, i32* %9
%215 = mul nsw i32 %213, %214
%216 = sext i32 %215 to i64
%217 = getelementptr inbounds double, double* %210, i64 %216
store double %209, double* %217
br label %218
218: ; preds = %48
%219 = load i32, i32* %18
%220 = add nsw i32 %219, 1
store i32 %220, i32* %18
br label %44
221: ; preds = %44
%222 = load i32, i32* %9
%223 = icmp eq i32 %222, 1
br i1 %223, label %224, label %225
224: ; preds = %221
br label %808
225: ; preds = %221
store i32 0, i32* %18
br label %226
226: ; preds = %805, %225
%227 = load i32, i32* %18
%228 = load i32, i32* %10
%229 = icmp slt i32 %227, %228
br i1 %229, label %230, label %808
230: ; preds = %226
store i32 2, i32* %17
br label %231
231: ; preds = %801, %230
%232 = load i32, i32* %17
%233 = load i32, i32* %9
%234 = icmp slt i32 %232, %233
br i1 %234, label %235, label %804
235: ; preds = %231
%236 = load i32, i32* %9
%237 = load i32, i32* %17
%238 = sub nsw i32 %236, %237
store i32 %238, i32* %19
%239 = load double*, double** %13
%240 = load i32, i32* %17
%241 = sub nsw i32 %240, 2
%242 = sext i32 %241 to i64
%243 = getelementptr inbounds double, double* %239, i64 %242
%244 = load double, double* %243
%245 = load double*, double** %11
%246 = load i32, i32* %17
%247 = sub nsw i32 %246, 1
%248 = load i32, i32* %18
%249 = load i32, i32* %10
%250 = add nsw i32 %248, %249
%251 = load i32, i32* %9
%252 = mul nsw i32 %250, %251
%253 = add nsw i32 %247, %252
%254 = sext i32 %253 to i64
%255 = getelementptr inbounds double, double* %245, i64 %254
%256 = load double, double* %255
%257 = load double*, double** %13
%258 = load i32, i32* %17
%259 = sub nsw i32 %258, 1
%260 = sext i32 %259 to i64
%261 = getelementptr inbounds double, double* %257, i64 %260
%262 = load double, double* %261
%263 = load double*, double** %11
%264 = load i32, i32* %17
%265 = load i32, i32* %18
%266 = load i32, i32* %10
%267 = add nsw i32 %265, %266
%268 = load i32, i32* %9
%269 = mul nsw i32 %267, %268
%270 = add nsw i32 %264, %269
%271 = sext i32 %270 to i64
%272 = getelementptr inbounds double, double* %263, i64 %271
%273 = load double, double* %272
%274 = fmul double %262, %273
%275 = call double @llvm.fmuladd.f64(double %244, double %256, double %274)
store double %275, double* %30
%276 = load double*, double** %13
%277 = load i32, i32* %17
%278 = sub nsw i32 %277, 2
%279 = sext i32 %278 to i64
%280 = getelementptr inbounds double, double* %276, i64 %279
%281 = load double, double* %280
%282 = load double*, double** %11
%283 = load i32, i32* %17
%284 = load i32, i32* %18
%285 = load i32, i32* %10
%286 = add nsw i32 %284, %285
%287 = load i32, i32* %9
%288 = mul nsw i32 %286, %287
%289 = add nsw i32 %283, %288
%290 = sext i32 %289 to i64
%291 = getelementptr inbounds double, double* %282, i64 %290
%292 = load double, double* %291
%293 = load double*, double** %13
%294 = load i32, i32* %17
%295 = sub nsw i32 %294, 1
%296 = sext i32 %295 to i64
%297 = getelementptr inbounds double, double* %293, i64 %296
%298 = load double, double* %297
%299 = load double*, double** %11
%300 = load i32, i32* %17
%301 = sub nsw i32 %300, 1
%302 = load i32, i32* %18
%303 = load i32, i32* %10
%304 = add nsw i32 %302, %303
%305 = load i32, i32* %9
%306 = mul nsw i32 %304, %305
%307 = add nsw i32 %301, %306
%308 = sext i32 %307 to i64
%309 = getelementptr inbounds double, double* %299, i64 %308
%310 = load double, double* %309
%311 = fmul double %298, %310
%312 = fneg double %311
%313 = call double @llvm.fmuladd.f64(double %281, double %292, double %312)
store double %313, double* %21
%314 = load double*, double** %14
%315 = load i32, i32* %17
%316 = sub nsw i32 %315, 2
%317 = sext i32 %316 to i64
%318 = getelementptr inbounds double, double* %314, i64 %317
%319 = load double, double* %318
%320 = load double*, double** %11
%321 = load i32, i32* %17
%322 = sub nsw i32 %321, 1
%323 = load i32, i32* %18
%324 = load i32, i32* %10
%325 = mul nsw i32 2, %324
%326 = add nsw i32 %323, %325
%327 = load i32, i32* %9
%328 = mul nsw i32 %326, %327
%329 = add nsw i32 %322, %328
%330 = sext i32 %329 to i64
%331 = getelementptr inbounds double, double* %320, i64 %330
%332 = load double, double* %331
%333 = load double*, double** %14
%334 = load i32, i32* %17
%335 = sub nsw i32 %334, 1
%336 = sext i32 %335 to i64
%337 = getelementptr inbounds double, double* %333, i64 %336
%338 = load double, double* %337
%339 = load double*, double** %11
%340 = load i32, i32* %17
%341 = load i32, i32* %18
%342 = load i32, i32* %10
%343 = mul nsw i32 2, %342
%344 = add nsw i32 %341, %343
%345 = load i32, i32* %9
%346 = mul nsw i32 %344, %345
%347 = add nsw i32 %340, %346
%348 = sext i32 %347 to i64
%349 = getelementptr inbounds double, double* %339, i64 %348
%350 = load double, double* %349
%351 = fmul double %338, %350
%352 = call double @llvm.fmuladd.f64(double %319, double %332, double %351)
store double %352, double* %31
%353 = load double*, double** %14
%354 = load i32, i32* %17
%355 = sub nsw i32 %354, 2
%356 = sext i32 %355 to i64
%357 = getelementptr inbounds double, double* %353, i64 %356
%358 = load double, double* %357
%359 = load double*, double** %11
%360 = load i32, i32* %17
%361 = load i32, i32* %18
%362 = load i32, i32* %10
%363 = mul nsw i32 2, %362
%364 = add nsw i32 %361, %363
%365 = load i32, i32* %9
%366 = mul nsw i32 %364, %365
%367 = add nsw i32 %360, %366
%368 = sext i32 %367 to i64
%369 = getelementptr inbounds double, double* %359, i64 %368
%370 = load double, double* %369
%371 = load double*, double** %14
%372 = load i32, i32* %17
%373 = sub nsw i32 %372, 1
%374 = sext i32 %373 to i64
%375 = getelementptr inbounds double, double* %371, i64 %374
%376 = load double, double* %375
%377 = load double*, double** %11
%378 = load i32, i32* %17
%379 = sub nsw i32 %378, 1
%380 = load i32, i32* %18
%381 = load i32, i32* %10
%382 = mul nsw i32 2, %381
%383 = add nsw i32 %380, %382
%384 = load i32, i32* %9
%385 = mul nsw i32 %383, %384
%386 = add nsw i32 %379, %385
%387 = sext i32 %386 to i64
%388 = getelementptr inbounds double, double* %377, i64 %387
%389 = load double, double* %388
%390 = fmul double %376, %389
%391 = fneg double %390
%392 = call double @llvm.fmuladd.f64(double %358, double %370, double %391)
store double %392, double* %24
%393 = load double*, double** %15
%394 = load i32, i32* %17
%395 = sub nsw i32 %394, 2
%396 = sext i32 %395 to i64
%397 = getelementptr inbounds double, double* %393, i64 %396
%398 = load double, double* %397
%399 = load double*, double** %11
%400 = load i32, i32* %17
%401 = sub nsw i32 %400, 1
%402 = load i32, i32* %18
%403 = load i32, i32* %10
%404 = mul nsw i32 3, %403
%405 = add nsw i32 %402, %404
%406 = load i32, i32* %9
%407 = mul nsw i32 %405, %406
%408 = add nsw i32 %401, %407
%409 = sext i32 %408 to i64
%410 = getelementptr inbounds double, double* %399, i64 %409
%411 = load double, double* %410
%412 = load double*, double** %15
%413 = load i32, i32* %17
%414 = sub nsw i32 %413, 1
%415 = sext i32 %414 to i64
%416 = getelementptr inbounds double, double* %412, i64 %415
%417 = load double, double* %416
%418 = load double*, double** %11
%419 = load i32, i32* %17
%420 = load i32, i32* %18
%421 = load i32, i32* %10
%422 = mul nsw i32 3, %421
%423 = add nsw i32 %420, %422
%424 = load i32, i32* %9
%425 = mul nsw i32 %423, %424
%426 = add nsw i32 %419, %425
%427 = sext i32 %426 to i64
%428 = getelementptr inbounds double, double* %418, i64 %427
%429 = load double, double* %428
%430 = fmul double %417, %429
%431 = call double @llvm.fmuladd.f64(double %398, double %411, double %430)
store double %431, double* %32
%432 = load double*, double** %15
%433 = load i32, i32* %17
%434 = sub nsw i32 %433, 2
%435 = sext i32 %434 to i64
%436 = getelementptr inbounds double, double* %432, i64 %435
%437 = load double, double* %436
%438 = load double*, double** %11
%439 = load i32, i32* %17
%440 = load i32, i32* %18
%441 = load i32, i32* %10
%442 = mul nsw i32 3, %441
%443 = add nsw i32 %440, %442
%444 = load i32, i32* %9
%445 = mul nsw i32 %443, %444
%446 = add nsw i32 %439, %445
%447 = sext i32 %446 to i64
%448 = getelementptr inbounds double, double* %438, i64 %447
%449 = load double, double* %448
%450 = load double*, double** %15
%451 = load i32, i32* %17
%452 = sub nsw i32 %451, 1
%453 = sext i32 %452 to i64
%454 = getelementptr inbounds double, double* %450, i64 %453
%455 = load double, double* %454
%456 = load double*, double** %11
%457 = load i32, i32* %17
%458 = sub nsw i32 %457, 1
%459 = load i32, i32* %18
%460 = load i32, i32* %10
%461 = mul nsw i32 3, %460
%462 = add nsw i32 %459, %461
%463 = load i32, i32* %9
%464 = mul nsw i32 %462, %463
%465 = add nsw i32 %458, %464
%466 = sext i32 %465 to i64
%467 = getelementptr inbounds double, double* %456, i64 %466
%468 = load double, double* %467
%469 = fmul double %455, %468
%470 = fneg double %469
%471 = call double @llvm.fmuladd.f64(double %437, double %449, double %470)
store double %471, double* %25
%472 = load double*, double** %16
%473 = load i32, i32* %17
%474 = sub nsw i32 %473, 2
%475 = sext i32 %474 to i64
%476 = getelementptr inbounds double, double* %472, i64 %475
%477 = load double, double* %476
%478 = load double*, double** %11
%479 = load i32, i32* %17
%480 = sub nsw i32 %479, 1
%481 = load i32, i32* %18
%482 = load i32, i32* %10
%483 = mul nsw i32 4, %482
%484 = add nsw i32 %481, %483
%485 = load i32, i32* %9
%486 = mul nsw i32 %484, %485
%487 = add nsw i32 %480, %486
%488 = sext i32 %487 to i64
%489 = getelementptr inbounds double, double* %478, i64 %488
%490 = load double, double* %489
%491 = load double*, double** %16
%492 = load i32, i32* %17
%493 = sub nsw i32 %492, 1
%494 = sext i32 %493 to i64
%495 = getelementptr inbounds double, double* %491, i64 %494
%496 = load double, double* %495
%497 = load double*, double** %11
%498 = load i32, i32* %17
%499 = load i32, i32* %18
%500 = load i32, i32* %10
%501 = mul nsw i32 4, %500
%502 = add nsw i32 %499, %501
%503 = load i32, i32* %9
%504 = mul nsw i32 %502, %503
%505 = add nsw i32 %498, %504
%506 = sext i32 %505 to i64
%507 = getelementptr inbounds double, double* %497, i64 %506
%508 = load double, double* %507
%509 = fmul double %496, %508
%510 = call double @llvm.fmuladd.f64(double %477, double %490, double %509)
store double %510, double* %33
%511 = load double*, double** %16
%512 = load i32, i32* %17
%513 = sub nsw i32 %512, 2
%514 = sext i32 %513 to i64
%515 = getelementptr inbounds double, double* %511, i64 %514
%516 = load double, double* %515
%517 = load double*, double** %11
%518 = load i32, i32* %17
%519 = load i32, i32* %18
%520 = load i32, i32* %10
%521 = mul nsw i32 4, %520
%522 = add nsw i32 %519, %521
%523 = load i32, i32* %9
%524 = mul nsw i32 %522, %523
%525 = add nsw i32 %518, %524
%526 = sext i32 %525 to i64
%527 = getelementptr inbounds double, double* %517, i64 %526
%528 = load double, double* %527
%529 = load double*, double** %16
%530 = load i32, i32* %17
%531 = sub nsw i32 %530, 1
%532 = sext i32 %531 to i64
%533 = getelementptr inbounds double, double* %529, i64 %532
%534 = load double, double* %533
%535 = load double*, double** %11
%536 = load i32, i32* %17
%537 = sub nsw i32 %536, 1
%538 = load i32, i32* %18
%539 = load i32, i32* %10
%540 = mul nsw i32 4, %539
%541 = add nsw i32 %538, %540
%542 = load i32, i32* %9
%543 = mul nsw i32 %541, %542
%544 = add nsw i32 %537, %543
%545 = sext i32 %544 to i64
%546 = getelementptr inbounds double, double* %535, i64 %545
%547 = load double, double* %546
%548 = fmul double %534, %547
%549 = fneg double %548
%550 = call double @llvm.fmuladd.f64(double %516, double %528, double %549)
store double %550, double* %26
%551 = load double, double* %30
%552 = load double, double* %33
%553 = fadd double %551, %552
store double %553, double* %28
%554 = load double, double* %33
%555 = load double, double* %30
%556 = fsub double %554, %555
store double %556, double* %23
%557 = load double, double* %21
%558 = load double, double* %26
%559 = fsub double %557, %558
store double %559, double* %34
%560 = load double, double* %21
%561 = load double, double* %26
%562 = fadd double %560, %561
store double %562, double* %20
%563 = load double, double* %31
%564 = load double, double* %32
%565 = fadd double %563, %564
store double %565, double* %29
%566 = load double, double* %32
%567 = load double, double* %31
%568 = fsub double %566, %567
store double %568, double* %22
%569 = load double, double* %24
%570 = load double, double* %25
%571 = fsub double %569, %570
store double %571, double* %35
%572 = load double, double* %24
%573 = load double, double* %25
%574 = fadd double %572, %573
store double %574, double* %27
%575 = load double*, double** %11
%576 = load i32, i32* %17
%577 = sub nsw i32 %576, 1
%578 = load i32, i32* %18
%579 = load i32, i32* %9
%580 = mul nsw i32 %578, %579
%581 = add nsw i32 %577, %580
%582 = sext i32 %581 to i64
%583 = getelementptr inbounds double, double* %575, i64 %582
%584 = load double, double* %583
%585 = load double, double* %28
%586 = fadd double %584, %585
%587 = load double, double* %29
%588 = fadd double %586, %587
%589 = load double*, double** %12
%590 = load i32, i32* %17
%591 = sub nsw i32 %590, 1
%592 = load i32, i32* %18
%593 = mul nsw i32 5, %592
%594 = load i32, i32* %9
%595 = mul nsw i32 %593, %594
%596 = add nsw i32 %591, %595
%597 = sext i32 %596 to i64
%598 = getelementptr inbounds double, double* %589, i64 %597
store double %588, double* %598
%599 = load double*, double** %11
%600 = load i32, i32* %17
%601 = load i32, i32* %18
%602 = load i32, i32* %9
%603 = mul nsw i32 %601, %602
%604 = add nsw i32 %600, %603
%605 = sext i32 %604 to i64
%606 = getelementptr inbounds double, double* %599, i64 %605
%607 = load double, double* %606
%608 = load double, double* %20
%609 = fadd double %607, %608
%610 = load double, double* %27
%611 = fadd double %609, %610
%612 = load double*, double** %12
%613 = load i32, i32* %17
%614 = load i32, i32* %18
%615 = mul nsw i32 5, %614
%616 = load i32, i32* %9
%617 = mul nsw i32 %615, %616
%618 = add nsw i32 %613, %617
%619 = sext i32 %618 to i64
%620 = getelementptr inbounds double, double* %612, i64 %619
store double %611, double* %620
%621 = load double*, double** %11
%622 = load i32, i32* %17
%623 = sub nsw i32 %622, 1
%624 = load i32, i32* %18
%625 = load i32, i32* %9
%626 = mul nsw i32 %624, %625
%627 = add nsw i32 %623, %626
%628 = sext i32 %627 to i64
%629 = getelementptr inbounds double, double* %621, i64 %628
%630 = load double, double* %629
%631 = load double, double* %28
%632 = call double @llvm.fmuladd.f64(double 0x3FD3C6EF372FE948, double %631, double %630)
%633 = load double, double* %29
%634 = call double @llvm.fmuladd.f64(double 0xBFE9E3779B97F4A4, double %633, double %632)
store double %634, double* %40
%635 = load double*, double** %11
%636 = load i32, i32* %17
%637 = load i32, i32* %18
%638 = load i32, i32* %9
%639 = mul nsw i32 %637, %638
%640 = add nsw i32 %636, %639
%641 = sext i32 %640 to i64
%642 = getelementptr inbounds double, double* %635, i64 %641
%643 = load double, double* %642
%644 = load double, double* %20
%645 = call double @llvm.fmuladd.f64(double 0x3FD3C6EF372FE948, double %644, double %643)
%646 = load double, double* %27
%647 = call double @llvm.fmuladd.f64(double 0xBFE9E3779B97F4A4, double %646, double %645)
store double %647, double* %36
%648 = load double*, double** %11
%649 = load i32, i32* %17
%650 = sub nsw i32 %649, 1
%651 = load i32, i32* %18
%652 = load i32, i32* %9
%653 = mul nsw i32 %651, %652
%654 = add nsw i32 %650, %653
%655 = sext i32 %654 to i64
%656 = getelementptr inbounds double, double* %648, i64 %655
%657 = load double, double* %656
%658 = load double, double* %28
%659 = call double @llvm.fmuladd.f64(double 0xBFE9E3779B97F4A4, double %658, double %657)
%660 = load double, double* %29
%661 = call double @llvm.fmuladd.f64(double 0x3FD3C6EF372FE948, double %660, double %659)
store double %661, double* %41
%662 = load double*, double** %11
%663 = load i32, i32* %17
%664 = load i32, i32* %18
%665 = load i32, i32* %9
%666 = mul nsw i32 %664, %665
%667 = add nsw i32 %663, %666
%668 = sext i32 %667 to i64
%669 = getelementptr inbounds double, double* %662, i64 %668
%670 = load double, double* %669
%671 = load double, double* %20
%672 = call double @llvm.fmuladd.f64(double 0xBFE9E3779B97F4A4, double %671, double %670)
%673 = load double, double* %27
%674 = call double @llvm.fmuladd.f64(double 0x3FD3C6EF372FE948, double %673, double %672)
store double %674, double* %37
%675 = load double, double* %34
%676 = load double, double* %35
%677 = fmul double 0x3FE2CF2304755A5D, %676
%678 = call double @llvm.fmuladd.f64(double 0x3FEE6F0E13445503, double %675, double %677)
store double %678, double* %43
%679 = load double, double* %23
%680 = load double, double* %22
%681 = fmul double 0x3FE2CF2304755A5D, %680
%682 = call double @llvm.fmuladd.f64(double 0x3FEE6F0E13445503, double %679, double %681)
store double %682, double* %38
%683 = load double, double* %34
%684 = load double, double* %35
%685 = fmul double 0x3FEE6F0E13445503, %684
%686 = fneg double %685
%687 = call double @llvm.fmuladd.f64(double 0x3FE2CF2304755A5D, double %683, double %686)
store double %687, double* %42
%688 = load double, double* %23
%689 = load double, double* %22
%690 = fmul double 0x3FEE6F0E13445503, %689
%691 = fneg double %690
%692 = call double @llvm.fmuladd.f64(double 0x3FE2CF2304755A5D, double %688, double %691)
store double %692, double* %39
%693 = load double, double* %40
%694 = load double, double* %43
%695 = fadd double %693, %694
%696 = load double*, double** %12
%697 = load i32, i32* %17
%698 = sub nsw i32 %697, 1
%699 = load i32, i32* %18
%700 = mul nsw i32 5, %699
%701 = add nsw i32 %700, 2
%702 = load i32, i32* %9
%703 = mul nsw i32 %701, %702
%704 = add nsw i32 %698, %703
%705 = sext i32 %704 to i64
%706 = getelementptr inbounds double, double* %696, i64 %705
store double %695, double* %706
%707 = load double, double* %40
%708 = load double, double* %43
%709 = fsub double %707, %708
%710 = load double*, double** %12
%711 = load i32, i32* %19
%712 = sub nsw i32 %711, 1
%713 = load i32, i32* %18
%714 = mul nsw i32 5, %713
%715 = add nsw i32 %714, 1
%716 = load i32, i32* %9
%717 = mul nsw i32 %715, %716
%718 = add nsw i32 %712, %717
%719 = sext i32 %718 to i64
%720 = getelementptr inbounds double, double* %710, i64 %719
store double %709, double* %720
%721 = load double, double* %36
%722 = load double, double* %38
%723 = fadd double %721, %722
%724 = load double*, double** %12
%725 = load i32, i32* %17
%726 = load i32, i32* %18
%727 = mul nsw i32 5, %726
%728 = add nsw i32 %727, 2
%729 = load i32, i32* %9
%730 = mul nsw i32 %728, %729
%731 = add nsw i32 %725, %730
%732 = sext i32 %731 to i64
%733 = getelementptr inbounds double, double* %724, i64 %732
store double %723, double* %733
%734 = load double, double* %38
%735 = load double, double* %36
%736 = fsub double %734, %735
%737 = load double*, double** %12
%738 = load i32, i32* %19
%739 = load i32, i32* %18
%740 = mul nsw i32 5, %739
%741 = add nsw i32 %740, 1
%742 = load i32, i32* %9
%743 = mul nsw i32 %741, %742
%744 = add nsw i32 %738, %743
%745 = sext i32 %744 to i64
%746 = getelementptr inbounds double, double* %737, i64 %745
store double %736, double* %746
%747 = load double, double* %41
%748 = load double, double* %42
%749 = fadd double %747, %748
%750 = load double*, double** %12
%751 = load i32, i32* %17
%752 = sub nsw i32 %751, 1
%753 = load i32, i32* %18
%754 = mul nsw i32 5, %753
%755 = add nsw i32 %754, 4
%756 = load i32, i32* %9
%757 = mul nsw i32 %755, %756
%758 = add nsw i32 %752, %757
%759 = sext i32 %758 to i64
%760 = getelementptr inbounds double, double* %750, i64 %759
store double %749, double* %760
%761 = load double, double* %41
%762 = load double, double* %42
%763 = fsub double %761, %762
%764 = load double*, double** %12
%765 = load i32, i32* %19
%766 = sub nsw i32 %765, 1
%767 = load i32, i32* %18
%768 = mul nsw i32 5, %767
%769 = add nsw i32 %768, 3
%770 = load i32, i32* %9
%771 = mul nsw i32 %769, %770
%772 = add nsw i32 %766, %771
%773 = sext i32 %772 to i64
%774 = getelementptr inbounds double, double* %764, i64 %773
store double %763, double* %774
%775 = load double, double* %37
%776 = load double, double* %39
%777 = fadd double %775, %776
%778 = load double*, double** %12
%779 = load i32, i32* %17
%780 = load i32, i32* %18
%781 = mul nsw i32 5, %780
%782 = add nsw i32 %781, 4
%783 = load i32, i32* %9
%784 = mul nsw i32 %782, %783
%785 = add nsw i32 %779, %784
%786 = sext i32 %785 to i64
%787 = getelementptr inbounds double, double* %778, i64 %786
store double %777, double* %787
%788 = load double, double* %39
%789 = load double, double* %37
%790 = fsub double %788, %789
%791 = load double*, double** %12
%792 = load i32, i32* %19
%793 = load i32, i32* %18
%794 = mul nsw i32 5, %793
%795 = add nsw i32 %794, 3
%796 = load i32, i32* %9
%797 = mul nsw i32 %795, %796
%798 = add nsw i32 %792, %797
%799 = sext i32 %798 to i64
%800 = getelementptr inbounds double, double* %791, i64 %799
store double %790, double* %800
br label %801
801: ; preds = %235
%802 = load i32, i32* %17
%803 = add nsw i32 %802, 2
store i32 %803, i32* %17
br label %231
804: ; preds = %231
br label %805
805: ; preds = %804
%806 = load i32, i32* %18
%807 = add nsw i32 %806, 1
store i32 %807, i32* %18
br label %226
808: ; preds = %224, %226
ret void
}

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