void radb5(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, ci3, ci4, ci5, di3, di4, di5, di2, cr2, cr3, cr5, cr4, ti2, ti3,
      ti4, ti5, dr3, dr4, dr5, dr2, tr2, tr3, tr4, tr5;
  for (k = 0; k < l1; k++) {
    ti5 = 2 * cc[(5 * k + 2) * ido];
    ti4 = 2 * cc[(5 * k + 4) * ido];
    tr2 = 2 * cc[ido - 1 + (5 * k + 1) * ido];
    tr3 = 2 * cc[ido - 1 + (5 * k + 3) * ido];
    ch[k * ido] = cc[5 * k * ido] + tr2 + tr3;
    cr2 = cc[5 * k * ido] + tr11 * tr2 + tr12 * tr3;
    cr3 = cc[5 * k * ido] + tr12 * tr2 + tr11 * tr3;
    ci5 = ti11 * ti5 + ti12 * ti4;
    ci4 = ti12 * ti5 - ti11 * ti4;
    ch[(k + l1) * ido] = cr2 - ci5;
    ch[(k + 2 * l1) * ido] = cr3 - ci4;
    ch[(k + 3 * l1) * ido] = cr3 + ci4;
    ch[(k + 4 * l1) * ido] = cr2 + ci5;
  }
  if (ido == 1)
    return;
  for (k = 0; k < l1; ++k) {
    for (i = 2; i < ido; i += 2) {
      ic = ido - i;
      ti5 = cc[i + (5 * k + 2) * ido] + cc[ic + (5 * k + 1) * ido];
      ti2 = cc[i + (5 * k + 2) * ido] - cc[ic + (5 * k + 1) * ido];
      ti4 = cc[i + (5 * k + 4) * ido] + cc[ic + (5 * k + 3) * ido];
      ti3 = cc[i + (5 * k + 4) * ido] - cc[ic + (5 * k + 3) * ido];
      tr5 = cc[i - 1 + (5 * k + 2) * ido] - cc[ic - 1 + (5 * k + 1) * ido];
      tr2 = cc[i - 1 + (5 * k + 2) * ido] + cc[ic - 1 + (5 * k + 1) * ido];
      tr4 = cc[i - 1 + (5 * k + 4) * ido] - cc[ic - 1 + (5 * k + 3) * ido];
      tr3 = cc[i - 1 + (5 * k + 4) * ido] + cc[ic - 1 + (5 * k + 3) * ido];
      ch[i - 1 + k * ido] = cc[i - 1 + 5 * k * ido] + tr2 + tr3;
      ch[i + k * ido] = cc[i + 5 * k * ido] + ti2 + ti3;
      cr2 = cc[i - 1 + 5 * k * ido] + tr11 * tr2 + tr12 * tr3;
      ci2 = cc[i + 5 * k * ido] + tr11 * ti2 + tr12 * ti3;
      cr3 = cc[i - 1 + 5 * k * ido] + tr12 * tr2 + tr11 * tr3;
      ci3 = cc[i + 5 * k * ido] + tr12 * ti2 + tr11 * ti3;
      cr5 = ti11 * tr5 + ti12 * tr4;
      ci5 = ti11 * ti5 + ti12 * ti4;
      cr4 = ti12 * tr5 - ti11 * tr4;
      ci4 = ti12 * ti5 - ti11 * ti4;
      dr3 = cr3 - ci4;
      dr4 = cr3 + ci4;
      di3 = ci3 + cr4;
      di4 = ci3 - cr4;
      dr5 = cr2 + ci5;
      dr2 = cr2 - ci5;
      di5 = ci2 - cr5;
      di2 = ci2 + cr5;
      ch[i - 1 + (k + l1) * ido] = wa1[i - 2] * dr2 - wa1[i - 1] * di2;
      ch[i + (k + l1) * ido] = wa1[i - 2] * di2 + wa1[i - 1] * dr2;
      ch[i - 1 + (k + 2 * l1) * ido] = wa2[i - 2] * dr3 - wa2[i - 1] * di3;
      ch[i + (k + 2 * l1) * ido] = wa2[i - 2] * di3 + wa2[i - 1] * dr3;
      ch[i - 1 + (k + 3 * l1) * ido] = wa3[i - 2] * dr4 - wa3[i - 1] * di4;
      ch[i + (k + 3 * l1) * ido] = wa3[i - 2] * di4 + wa3[i - 1] * dr4;
      ch[i - 1 + (k + 4 * l1) * ido] = wa4[i - 2] * dr5 - wa4[i - 1] * di5;
      ch[i + (k + 4 * l1) * ido] = wa4[i - 2] * di5 + wa4[i - 1] * dr5;
    }
  }
}


x86 assembly (clang, -O0):
<radb5>:
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    13c3 <radb5+0x2c3>
mov    -0x10(%rbp),%rax
imul   $0x5,-0x30(%rbp),%ecx
add    $0x2,%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  0xecd(%rip),%xmm0
mulsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x10(%rbp),%rax
imul   $0x5,-0x30(%rbp),%ecx
add    $0x4,%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  0xea6(%rip),%xmm0
mulsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x10(%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  0xe77(%rip),%xmm0
mulsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x10(%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  0xe48(%rip),%xmm0
mulsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x10(%rbp),%rax
imul   $0x5,-0x30(%rbp),%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
addsd  -0xe0(%rbp),%xmm0
addsd  -0xe8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    -0x30(%rbp),%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
imul   $0x5,-0x30(%rbp),%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0xe0(%rbp),%xmm1
ff
movsd  0xdd0(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xe8(%rbp),%xmm0
ff
movsd  0xdc0(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
imul   $0x5,-0x30(%rbp),%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0xe0(%rbp),%xmm1
ff
movsd  0xd8f(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xe8(%rbp),%xmm0
ff
movsd  0xd6f(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
movsd  0xd3f(%rip),%xmm1
mulsd  -0xb0(%rbp),%xmm1
ff
movsd  0xd37(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0xb8(%rbp),%xmm0
ff
movsd  0xd1a(%rip),%xmm1
mulsd  -0xb0(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0xceb(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x80(%rbp),%xmm0
subsd  -0x58(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    -0x8(%rbp),%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x88(%rbp),%xmm0
ff
subsd  -0x50(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mov    -0x30(%rbp),%ecx
mov    -0x8(%rbp),%edx
shl    $0x1,%edx
add    %edx,%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x88(%rbp),%xmm0
ff
addsd  -0x50(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mov    -0x30(%rbp),%ecx
imul   $0x3,-0x8(%rbp),%edx
add    %edx,%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x80(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mov    -0x30(%rbp),%ecx
mov    -0x8(%rbp),%edx
shl    $0x2,%edx
add    %edx,%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 <radb5+0x2d>
cmpl   $0x1,-0x4(%rbp)
jne    13d2 <radb5+0x2d2>
jmp    1ca3 <radb5+0xba3>
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1ca3 <radb5+0xba3>
movl   $0x2,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    1c90 <radb5+0xb90>
mov    -0x4(%rbp),%eax
sub    -0x2c(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x10(%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  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
imul   $0x5,-0x30(%rbp),%edx
add    $0x1,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x10(%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  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
imul   $0x5,-0x30(%rbp),%edx
add    $0x1,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x10(%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  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
imul   $0x5,-0x30(%rbp),%edx
add    $0x3,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x10(%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  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
imul   $0x5,-0x30(%rbp),%edx
add    $0x3,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xa8(%rbp)
mov    -0x10(%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  (%rax,%rcx,8),%xmm0
mov    -0x10(%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
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x10(%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  (%rax,%rcx,8),%xmm0
mov    -0x10(%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
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x10(%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  (%rax,%rcx,8),%xmm0
mov    -0x10(%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
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x10(%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  (%rax,%rcx,8),%xmm0
mov    -0x10(%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
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x10(%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  (%rax,%rcx,8),%xmm0
addsd  -0xe0(%rbp),%xmm0
ff
addsd  -0xe8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
mov    -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
imul   $0x5,-0x30(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
addsd  -0xa0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
mov    -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
imul   $0x5,-0x30(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0xe0(%rbp),%xmm1
ff
movsd  0x943(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xe8(%rbp),%xmm0
ff
movsd  0x933(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   $0x5,-0x30(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0xa0(%rbp),%xmm1
ff
movsd  0x8f5(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xa8(%rbp),%xmm0
ff
movsd  0x8e5(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%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  (%rax,%rcx,8),%xmm0
movsd  -0xe0(%rbp),%xmm1
ff
movsd  0x8ac(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xe8(%rbp),%xmm0
ff
movsd  0x88c(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   $0x5,-0x30(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0xa0(%rbp),%xmm1
ff
movsd  0x85b(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xa8(%rbp),%xmm0
ff
movsd  0x83b(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0xf8(%rbp),%xmm0
ff
movsd  0x80e(%rip),%xmm1
mulsd  -0xf0(%rbp),%xmm1
ff
movsd  0x806(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
movsd  0x7de(%rip),%xmm1
mulsd  -0xb0(%rbp),%xmm1
ff
movsd  0x7d6(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0xf8(%rbp),%xmm0
ff
movsd  0x7b9(%rip),%xmm1
mulsd  -0xf0(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0x78a(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
movsd  0x772(%rip),%xmm1
mulsd  -0xb0(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0x743(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x88(%rbp),%xmm0
ff
subsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
addsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
addsd  -0x98(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x48(%rbp),%xmm0
subsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x68(%rbp)
movsd  -0x80(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
subsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
subsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x70(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x78(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0xd8(%rbp),%xmm2
ff
mov    -0x20(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  -0x78(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%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  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x78(%rbp),%xmm2
mov    -0x20(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%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  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0xc0(%rbp),%xmm2
ff
mov    -0x28(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  -0x60(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%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  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x60(%rbp),%xmm2
mov    -0x28(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%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  %xmm0,(%rax,%rcx,8)
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0xc8(%rbp),%xmm2
ff
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  -0x68(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%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  %xmm0,(%rax,%rcx,8)
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x68(%rbp),%xmm2
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%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  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0xd0(%rbp),%xmm2
ff
mov    0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  -0x70(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%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  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x70(%rbp),%xmm2
mov    0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%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  %xmm0,(%rax,%rcx,8)
mov    -0x2c(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x2c(%rbp)
jmp    13ec <radb5+0x2ec>
jmp    1c95 <radb5+0xb95>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    13d9 <radb5+0x2d9>
add    $0x78,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<radb5>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %edi,-0x74(%rsp)
test   %esi,%esi
jle    1709 <radb5+0x609>
lea    (%rsi,%rsi,1),%ebp
lea    (%rsi,%rsi,2),%eax
lea    0x0(,%rsi,4),%edi
movslq -0x74(%rsp),%rbx
movslq %ebp,%r11
movslq %eax,%rbp
movslq %edi,%rdi
mov    %rsi,-0x68(%rsp)
mov    %esi,%r10d
mov    %rbx,%rsi
mov    %rdi,%rax
mov    %rdi,-0x28(%rsp)
imul   %rdi,%rsi
mov    %rsi,-0x50(%rsp)
lea    0x0(,%rbx,8),%rsi
imul   %rbx,%rbp
mov    %rbp,-0x48(%rsp)
mov    %rbx,%r13
mov    %r11,%rax
mov    %r11,-0x20(%rsp)
imul   %r11,%r13
mov    %rbx,%r15
imul   %r10,%r15
mov    %rsi,-0x58(%rsp)
lea    (%rsi,%rsi,4),%rax
mov    %rax,-0x60(%rsp)
lea    (%rbx,%rbx,2),%rsi
lea    -0x8(,%rbx,8),%rdi
ff
lea    (%rdi,%rsi,8),%r12
mov    %rbx,%rbp
shl    $0x5,%rbp
mov    %rbx,%rdi
shl    $0x4,%rdi
movsd  0xe57(%rip),%xmm8
movsd  0xe56(%rip),%xmm10
movsd  0xe56(%rip),%xmm7
movsd  0xe55(%rip),%xmm9
mov    %rbx,-0x40(%rsp)
lea    -0x1(%rbx,%rbx,1),%rbx
mov    %r10,%rsi
mov    %r10,-0x38(%rsp)
mov    %rdx,%rsi
mov    %rcx,%r11
mov    -0x48(%rsp),%r14
mov    -0x50(%rsp),%rax
cs nopw 0x0(%rax,%rax,1)
nop
movsd  (%rsi,%rdi,1),%xmm0
addsd  %xmm0,%xmm0
movsd  (%rsi,%rbp,1),%xmm2
addsd  %xmm2,%xmm2
movsd  (%rsi,%rbx,8),%xmm4
addsd  %xmm4,%xmm4
movsd  (%rsi,%r12,1),%xmm1
addsd  %xmm1,%xmm1
movsd  (%rsi),%xmm3
addsd  %xmm4,%xmm3
addsd  %xmm1,%xmm3
movsd  %xmm3,(%r11)
movsd  (%rsi),%xmm5
movapd %xmm4,%xmm6
mulsd  %xmm8,%xmm6
addsd  %xmm5,%xmm6
movapd %xmm1,%xmm3
mulsd  %xmm10,%xmm3
addsd  %xmm6,%xmm3
mulsd  %xmm10,%xmm4
addsd  %xmm5,%xmm4
mulsd  %xmm8,%xmm1
addsd  %xmm4,%xmm1
movapd %xmm2,%xmm4
mulsd  %xmm7,%xmm4
movapd %xmm0,%xmm5
mulsd  %xmm9,%xmm5
addsd  %xmm4,%xmm5
mulsd  0xdad(%rip),%xmm2
mulsd  %xmm7,%xmm0
addsd  %xmm2,%xmm0
movapd %xmm3,%xmm2
subsd  %xmm5,%xmm2
movsd  %xmm2,(%r11,%r15,8)
movapd %xmm1,%xmm2
subsd  %xmm0,%xmm2
movsd  %xmm2,(%r11,%r13,8)
addsd  %xmm1,%xmm0
movsd  %xmm0,(%r11,%r14,8)
addsd  %xmm3,%xmm5
movsd  %xmm5,(%r11,%rax,8)
add    -0x58(%rsp),%r11
add    -0x60(%rsp),%rsi
add    $0xffffffffffffffff,%r10
jne    11f0 <radb5+0xf0>
cmpl   $0x1,-0x74(%rsp)
mov    -0x40(%rsp),%rbx
mov    -0x68(%rsp),%rax
je     1709 <radb5+0x609>
test   %eax,%eax
jle    1709 <radb5+0x609>
lea    (%rax,%rax,2),%eax
cltq
mov    %rax,-0x30(%rsp)
xor    %eax,%eax
mov    %rax,-0x70(%rsp)
movsd  0xd0a(%rip),%xmm11
movsd  0xd09(%rip),%xmm12
jmp    132c <radb5+0x22c>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    -0x70(%rsp),%rsi
add    $0x1,%rsi
mov    %rsi,%rax
mov    %rsi,-0x70(%rsp)
cmp    -0x38(%rsp),%rsi
je     1709 <radb5+0x609>
cmpl   $0x3,-0x74(%rsp)
mov    0x40(%rsp),%rdi
mov    0x38(%rsp),%rsi
jl     1310 <radb5+0x210>
mov    -0x70(%rsp),%rbp
lea    0x0(,%rbp,4),%r10
add    %rbp,%r10
lea    0x2(,%rbp,4),%rax
add    %rbp,%rax
imul   %rbx,%rax
mov    %rax,-0x50(%rsp)
lea    0x1(,%rbp,4),%rax
add    %rbp,%rax
imul   %rbx,%rax
mov    %rax,-0x58(%rsp)
lea    0x4(,%rbp,4),%rax
add    %rbp,%rax
imul   %rbx,%rax
mov    %rax,-0x60(%rsp)
lea    0x3(,%rbp,4),%rax
add    %rbp,%rax
imul   %rbx,%rax
mov    %rax,-0x68(%rsp)
imul   %rbx,%r10
mov    %r10,-0x48(%rsp)
mov    %rbp,%rax
imul   %rbx,%rax
mov    %rax,-0x8(%rsp)
mov    -0x38(%rsp),%rax
add    %rbp,%rax
imul   %rbx,%rax
mov    %rax,-0x10(%rsp)
mov    -0x20(%rsp),%rax
add    %rbp,%rax
imul   %rbx,%rax
mov    %rax,-0x18(%rsp)
mov    -0x30(%rsp),%rax
lea    (%rax,%rbp,1),%r10
imul   %rbx,%r10
mov    -0x28(%rsp),%rax
lea    (%rax,%rbp,1),%r11
imul   %rbx,%r11
mov    $0x2,%eax
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    -0x40(%rsp),%rbx
sub    %rax,%rbx
mov    -0x50(%rsp),%r14
lea    (%rax,%r14,1),%rbp
movsd  (%rdx,%rbp,8),%xmm5
mov    -0x58(%rsp),%r15
lea    (%rbx,%r15,1),%rbp
movsd  (%rdx,%rbp,8),%xmm2
movapd %xmm5,%xmm15
subsd  %xmm2,%xmm5
mov    -0x60(%rsp),%r12
lea    (%rax,%r12,1),%rbp
movsd  (%rdx,%rbp,8),%xmm6
mov    -0x68(%rsp),%r13
lea    (%rbx,%r13,1),%rbp
movsd  (%rdx,%rbp,8),%xmm3
movapd %xmm6,%xmm13
subsd  %xmm3,%xmm6
lea    -0x1(%rax,%r14,1),%rbp
movsd  (%rdx,%rbp,8),%xmm7
lea    -0x1(%rbx,%r15,1),%rbp
movsd  (%rdx,%rbp,8),%xmm4
movapd %xmm7,%xmm1
addsd  %xmm4,%xmm7
lea    -0x1(%rax,%r12,1),%rbp
movsd  (%rdx,%rbp,8),%xmm0
lea    -0x1(%rbx,%r13,1),%rbx
movsd  (%rdx,%rbx,8),%xmm8
movapd %xmm0,%xmm14
addsd  %xmm8,%xmm0
mov    -0x48(%rsp),%r14
lea    -0x1(%rax,%r14,1),%r15
movapd %xmm9,%xmm10
movsd  (%rdx,%r15,8),%xmm9
addsd  %xmm7,%xmm9
addsd  %xmm0,%xmm9
mov    -0x8(%rsp),%rbx
lea    -0x1(%rax,%rbx,1),%rbp
movsd  %xmm9,(%rcx,%rbp,8)
lea    (%rax,%r14,1),%rbp
movsd  (%rdx,%rbp,8),%xmm9
addsd  %xmm5,%xmm9
addsd  %xmm6,%xmm9
lea    (%rax,%rbx,1),%r14
movsd  %xmm9,(%rcx,%r14,8)
movsd  (%rdx,%r15,8),%xmm9
addsd  %xmm2,%xmm15
addsd  %xmm3,%xmm13
subsd  %xmm4,%xmm1
subsd  %xmm8,%xmm14
movapd %xmm7,%xmm2
mulsd  %xmm11,%xmm2
addsd  %xmm9,%xmm2
movapd %xmm0,%xmm4
mulsd  %xmm12,%xmm4
addsd  %xmm2,%xmm4
movsd  (%rdx,%rbp,8),%xmm8
movapd %xmm5,%xmm3
mulsd  %xmm11,%xmm3
addsd  %xmm8,%xmm3
movapd %xmm6,%xmm2
mulsd  %xmm12,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm12,%xmm7
addsd  %xmm9,%xmm7
movapd %xmm10,%xmm9
movsd  0xac9(%rip),%xmm10
mulsd  %xmm11,%xmm0
addsd  %xmm7,%xmm0
mulsd  %xmm12,%xmm5
addsd  %xmm8,%xmm5
mulsd  %xmm11,%xmm6
addsd  %xmm5,%xmm6
movapd %xmm14,%xmm3
mulsd  %xmm10,%xmm3
movapd %xmm1,%xmm5
mulsd  %xmm9,%xmm5
addsd  %xmm3,%xmm5
movapd %xmm13,%xmm3
mulsd  %xmm10,%xmm3
movapd %xmm15,%xmm7
mulsd  %xmm9,%xmm7
addsd  %xmm3,%xmm7
mulsd  0xa85(%rip),%xmm14
mulsd  %xmm10,%xmm1
addsd  %xmm14,%xmm1
movsd  0xa73(%rip),%xmm3
mulsd  %xmm3,%xmm13
mulsd  %xmm10,%xmm15
addsd  %xmm13,%xmm15
movapd %xmm0,%xmm8
subsd  %xmm15,%xmm8
addsd  %xmm0,%xmm15
movapd %xmm1,%xmm3
addsd  %xmm6,%xmm3
subsd  %xmm1,%xmm6
movapd %xmm7,%xmm0
addsd  %xmm4,%xmm0
subsd  %xmm7,%xmm4
movapd %xmm2,%xmm1
subsd  %xmm5,%xmm1
addsd  %xmm2,%xmm5
movsd  -0x8(%r8,%rax,8),%xmm2
mulsd  %xmm5,%xmm2
movsd  -0x10(%r8,%rax,8),%xmm7
mulsd  %xmm4,%xmm7
subsd  %xmm2,%xmm7
mov    -0x10(%rsp),%rbp
lea    -0x1(%rax,%rbp,1),%rbx
movsd  %xmm7,(%rcx,%rbx,8)
mulsd  -0x8(%r8,%rax,8),%xmm4
mulsd  -0x10(%r8,%rax,8),%xmm5
addsd  %xmm4,%xmm5
lea    (%rax,%rbp,1),%rbx
movsd  %xmm5,(%rcx,%rbx,8)
movsd  -0x8(%r9,%rax,8),%xmm2
mulsd  %xmm3,%xmm2
movsd  -0x10(%r9,%rax,8),%xmm4
mulsd  %xmm8,%xmm4
subsd  %xmm2,%xmm4
mov    -0x18(%rsp),%rbp
lea    -0x1(%rax,%rbp,1),%rbx
movsd  %xmm4,(%rcx,%rbx,8)
mulsd  -0x8(%r9,%rax,8),%xmm8
mulsd  -0x10(%r9,%rax,8),%xmm3
addsd  %xmm8,%xmm3
lea    (%rax,%rbp,1),%rbx
movsd  %xmm3,(%rcx,%rbx,8)
movsd  -0x8(%rsi,%rax,8),%xmm2
mulsd  %xmm6,%xmm2
movsd  -0x10(%rsi,%rax,8),%xmm3
mulsd  %xmm15,%xmm3
subsd  %xmm2,%xmm3
lea    -0x1(%rax,%r10,1),%rbx
movsd  %xmm3,(%rcx,%rbx,8)
mulsd  -0x8(%rsi,%rax,8),%xmm15
mulsd  -0x10(%rsi,%rax,8),%xmm6
addsd  %xmm15,%xmm6
lea    (%rax,%r10,1),%rbx
movsd  %xmm6,(%rcx,%rbx,8)
movsd  -0x8(%rdi,%rax,8),%xmm2
mulsd  %xmm1,%xmm2
movsd  -0x10(%rdi,%rax,8),%xmm3
mulsd  %xmm0,%xmm3
subsd  %xmm2,%xmm3
lea    -0x1(%rax,%r11,1),%rbx
movsd  %xmm3,(%rcx,%rbx,8)
mulsd  -0x8(%rdi,%rax,8),%xmm0
mulsd  -0x10(%rdi,%rax,8),%xmm1
addsd  %xmm0,%xmm1
lea    (%rax,%r11,1),%rbx
movsd  %xmm1,(%rcx,%rbx,8)
mov    -0x40(%rsp),%rbx
add    $0x2,%rax
cmp    %rbx,%rax
jl     1400 <radb5+0x300>
jmp    1310 <radb5+0x210>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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