void radb4(int ido, int l1, const double cc[], double ch[], const double wa1[],
           const double wa2[], const double wa3[]) {
  static const double sqrt2 = 1.414213562373095;
  int i, k, ic;
  double ci2, ci3, ci4, cr2, cr3, cr4, ti1, ti2, ti3, ti4, tr1, tr2, tr3, tr4;
  for (k = 0; k < l1; k++) {
    tr1 = cc[4 * k * ido] - cc[ido - 1 + (4 * k + 3) * ido];
    tr2 = cc[4 * k * ido] + cc[ido - 1 + (4 * k + 3) * ido];
    tr3 = cc[ido - 1 + (4 * k + 1) * ido] + cc[ido - 1 + (4 * k + 1) * ido];
    tr4 = cc[(4 * k + 2) * ido] + cc[(4 * k + 2) * ido];
    ch[k * ido] = tr2 + tr3;
    ch[(k + l1) * ido] = tr1 - tr4;
    ch[(k + 2 * l1) * ido] = tr2 - tr3;
    ch[(k + 3 * l1) * ido] = tr1 + tr4;
  }
  if (ido < 2)
    return;
  if (ido != 2) {
    for (k = 0; k < l1; ++k) {
      for (i = 2; i < ido; i += 2) {
        ic = ido - i;
        ti1 = cc[i + 4 * k * ido] + cc[ic + (4 * k + 3) * ido];
        ti2 = cc[i + 4 * k * ido] - cc[ic + (4 * k + 3) * ido];
        ti3 = cc[i + (4 * k + 2) * ido] - cc[ic + (4 * k + 1) * ido];
        tr4 = cc[i + (4 * k + 2) * ido] + cc[ic + (4 * k + 1) * ido];
        tr1 = cc[i - 1 + 4 * k * ido] - cc[ic - 1 + (4 * k + 3) * ido];
        tr2 = cc[i - 1 + 4 * k * ido] + cc[ic - 1 + (4 * k + 3) * ido];
        ti4 = cc[i - 1 + (4 * k + 2) * ido] - cc[ic - 1 + (4 * k + 1) * ido];
        tr3 = cc[i - 1 + (4 * k + 2) * ido] + cc[ic - 1 + (4 * k + 1) * ido];
        ch[i - 1 + k * ido] = tr2 + tr3;
        cr3 = tr2 - tr3;
        ch[i + k * ido] = ti2 + ti3;
        ci3 = ti2 - ti3;
        cr2 = tr1 - tr4;
        cr4 = tr1 + tr4;
        ci2 = ti1 + ti4;
        ci4 = ti1 - ti4;
        ch[i - 1 + (k + l1) * ido] = wa1[i - 2] * cr2 - wa1[i - 1] * ci2;
        ch[i + (k + l1) * ido] = wa1[i - 2] * ci2 + wa1[i - 1] * cr2;
        ch[i - 1 + (k + 2 * l1) * ido] = wa2[i - 2] * cr3 - wa2[i - 1] * ci3;
        ch[i + (k + 2 * l1) * ido] = wa2[i - 2] * ci3 + wa2[i - 1] * cr3;
        ch[i - 1 + (k + 3 * l1) * ido] = wa3[i - 2] * cr4 - wa3[i - 1] * ci4;
        ch[i + (k + 3 * l1) * ido] = wa3[i - 2] * ci4 + wa3[i - 1] * cr4;
      }
    }
    if (ido % 2 == 1)
      return;
  }
  for (k = 0; k < l1; k++) {
    ti1 = cc[(4 * k + 1) * ido] + cc[(4 * k + 3) * ido];
    ti2 = cc[(4 * k + 3) * ido] - cc[(4 * k + 1) * ido];
    tr1 = cc[ido - 1 + 4 * k * ido] - cc[ido - 1 + (4 * k + 2) * ido];
    tr2 = cc[ido - 1 + 4 * k * ido] + cc[ido - 1 + (4 * k + 2) * ido];
    ch[ido - 1 + k * ido] = tr2 + tr2;
    ch[ido - 1 + (k + l1) * ido] = sqrt2 * (tr1 - ti1);
    ch[ido - 1 + (k + 2 * l1) * ido] = ti2 + ti2;
    ch[ido - 1 + (k + 3 * l1) * ido] = -sqrt2 * (tr1 + ti1);
  }
}


x86 assembly (clang, -O0):
<radb4>:
push   %rbp
mov    %rsp,%rbp
sub    $0x28,%rsp
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    12e2 <radb4+0x1e2>
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
shl    $0x2,%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
shl    $0x2,%edx
add    $0x3,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
shl    $0x2,%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
shl    $0x2,%edx
add    $0x3,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
shl    $0x2,%edx
add    $0x1,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
shl    $0x2,%edx
add    $0x1,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
shl    $0x2,%ecx
add    $0x2,%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
shl    $0x2,%ecx
add    $0x2,%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    -0x30(%rbp),%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x90(%rbp),%xmm0
ff
subsd  -0xa8(%rbp),%xmm0
ff
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  -0x98(%rbp),%xmm0
ff
subsd  -0xa0(%rbp),%xmm0
ff
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  -0x90(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
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)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1129 <radb4+0x29>
cmpl   $0x2,-0x4(%rbp)
jge    12f1 <radb4+0x1f1>
jmp    1a75 <radb4+0x975>
cmpl   $0x2,-0x4(%rbp)
je     188f <radb4+0x78f>
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1871 <radb4+0x771>
movl   $0x2,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    185e <radb4+0x75e>
mov    -0x4(%rbp),%eax
sub    -0x2c(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
mov    -0x30(%rbp),%edx
shl    $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
mov    -0x30(%rbp),%edx
shl    $0x2,%edx
add    $0x3,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
mov    -0x30(%rbp),%edx
shl    $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
mov    -0x30(%rbp),%edx
shl    $0x2,%edx
add    $0x3,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
mov    -0x30(%rbp),%edx
shl    $0x2,%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
mov    -0x30(%rbp),%edx
shl    $0x2,%edx
add    $0x1,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
mov    -0x30(%rbp),%edx
shl    $0x2,%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
mov    -0x30(%rbp),%edx
shl    $0x2,%edx
add    $0x1,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
shl    $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
mov    -0x30(%rbp),%edx
shl    $0x2,%edx
add    $0x3,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
shl    $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
mov    -0x30(%rbp),%edx
shl    $0x2,%edx
add    $0x3,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
shl    $0x2,%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
mov    -0x30(%rbp),%edx
shl    $0x2,%edx
add    $0x1,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
shl    $0x2,%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
mov    -0x30(%rbp),%edx
shl    $0x2,%edx
add    $0x1,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
addsd  -0xa0(%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)
movsd  -0x98(%rbp),%xmm0
ff
subsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0x60(%rbp)
movsd  -0x78(%rbp),%xmm0
addsd  -0x80(%rbp),%xmm0
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)
movsd  -0x78(%rbp),%xmm0
subsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x90(%rbp),%xmm0
ff
subsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x58(%rbp)
movsd  -0x90(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x68(%rbp)
movsd  -0x70(%rbp),%xmm0
addsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x40(%rbp)
movsd  -0x70(%rbp),%xmm0
subsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x58(%rbp),%xmm2
mov    -0x20(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  -0x40(%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  -0x40(%rbp),%xmm2
mov    -0x20(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  -0x58(%rbp),%xmm1
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  -0x60(%rbp),%xmm2
mov    -0x28(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  -0x48(%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  -0x48(%rbp),%xmm2
mov    -0x28(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  -0x60(%rbp),%xmm1
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  -0x68(%rbp),%xmm2
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  -0x50(%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  -0x50(%rbp),%xmm2
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  -0x68(%rbp),%xmm1
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    -0x2c(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x2c(%rbp)
jmp    1315 <radb4+0x215>
jmp    1863 <radb4+0x763>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1302 <radb4+0x202>
mov    -0x4(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
jne    188a <radb4+0x78a>
jmp    1a75 <radb4+0x975>
jmp    188f <radb4+0x78f>
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1a75 <radb4+0x975>
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
shl    $0x2,%ecx
add    $0x1,%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
shl    $0x2,%ecx
add    $0x3,%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
shl    $0x2,%ecx
add    $0x3,%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
shl    $0x2,%ecx
add    $0x1,%ecx
imul   -0x4(%rbp),%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
shl    $0x2,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
shl    $0x2,%edx
add    $0x2,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
shl    $0x2,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
shl    $0x2,%edx
add    $0x2,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x90(%rbp),%xmm1
ff
subsd  -0x70(%rbp),%xmm1
movsd  0x62a(%rip),%xmm0
mulsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
mov    -0x4(%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)
movsd  -0x78(%rbp),%xmm0
addsd  -0x78(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mov    -0x4(%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)
movsd  -0x90(%rbp),%xmm1
ff
addsd  -0x70(%rbp),%xmm1
movsd  0x5be(%rip),%xmm0
mulsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
mov    -0x4(%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    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1896 <radb4+0x796>
add    $0x28,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<radb4>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %rcx,%r13
mov    %rdx,%r15
test   %esi,%esi
jle    11f4 <radb4+0xf4>
lea    (%rsi,%rsi,1),%eax
lea    (%rsi,%rsi,2),%ecx
movslq %edi,%rdx
movslq %eax,%rbx
movslq %ecx,%rcx
mov    %esi,%eax
imul   %rdx,%rcx
lea    0x0(,%rcx,8),%r10
add    %r13,%r10
lea    0x0(,%rdx,8),%r11
imul   %rdx,%rbx
lea    0x0(,%rbx,8),%r12
add    %r13,%r12
mov    %rdx,%r14
mov    %rdi,-0x50(%rsp)
lea    (%rdx,%rdx,1),%rdi
add    $0xffffffffffffffff,%rdi
lea    (%rdx,%rdx,2),%rbx
lea    (%rdx,%rbx,1),%rcx
add    $0xffffffffffffffff,%rcx
imul   %rax,%rdx
lea    0x0(,%rdx,8),%rbp
add    %r13,%rbp
shl    $0x4,%r14
add    %r15,%r14
lea    (%r15,%rdi,8),%rbx
mov    -0x50(%rsp),%rdi
lea    (%r15,%rcx,8),%rcx
xor    %edx,%edx
movsd  (%r15,%rdx,4),%xmm0
movsd  (%rcx,%rdx,4),%xmm1
movapd %xmm0,%xmm2
subsd  %xmm1,%xmm2
addsd  %xmm1,%xmm0
movsd  (%rbx,%rdx,4),%xmm1
addsd  %xmm1,%xmm1
movsd  (%r14,%rdx,4),%xmm3
addsd  %xmm3,%xmm3
movapd %xmm0,%xmm4
addsd  %xmm1,%xmm4
movsd  %xmm4,0x0(%r13,%rdx,1)
movapd %xmm2,%xmm4
subsd  %xmm3,%xmm4
movsd  %xmm4,0x0(%rbp,%rdx,1)
subsd  %xmm1,%xmm0
movsd  %xmm0,(%r12,%rdx,1)
addsd  %xmm2,%xmm3
movsd  %xmm3,(%r10,%rdx,1)
add    %r11,%rdx
add    $0xffffffffffffffff,%rax
jne    1190 <radb4+0x90>
cmp    $0x2,%edi
jl     15a9 <radb4+0x4a9>
je     14a9 <radb4+0x3a9>
test   %esi,%esi
jle    15a9 <radb4+0x4a9>
mov    %r15,-0x38(%rsp)
mov    0x38(%rsp),%r15
lea    (%rsi,%rsi,1),%eax
lea    (%rsi,%rsi,2),%ecx
mov    %edi,%r10d
cltq
movslq %ecx,%rcx
mov    %rsi,-0x30(%rsp)
mov    %esi,%edx
imul   %r10,%rcx
lea    0x0(,%rcx,8),%r12
add    %r13,%r12
lea    0x0(,%r10,8),%rcx
mov    %rcx,-0x18(%rsp)
imul   %r10,%rax
lea    0x0(,%rax,8),%rax
add    %r13,%rax
mov    %rdx,-0x10(%rsp)
mov    %rdx,%rcx
imul   %r10,%rcx
lea    0x0(,%rcx,8),%rbx
add    %r13,%rbx
lea    (%rdi,%rdi,1),%r11d
lea    0x0(,%rdi,4),%ecx
mov    %ecx,-0x48(%rsp)
lea    (%rdi,%rdi,2),%esi
lea    -0x2(%r10),%rcx
mov    %rcx,-0x20(%rsp)
xor    %ebp,%ebp
mov    %rdi,-0x50(%rsp)
mov    %r13,-0x28(%rsp)
mov    %r13,%rcx
xor    %r14d,%r14d
nopl   0x0(%rax)
mov    %r11d,-0x3c(%rsp)
mov    %r11d,%edx
movslq %r11d,%rdx
mov    -0x38(%rsp),%r11
lea    (%r11,%rdx,8),%r13
mov    %rbp,-0x8(%rsp)
movslq %ebp,%rdx
lea    (%r11,%rdx,8),%rbp
mov    %esi,-0x40(%rsp)
movslq %esi,%rdx
lea    (%r11,%rdx,8),%rdx
mov    %edi,-0x44(%rsp)
movslq %edi,%rsi
lea    (%r11,%rsi,8),%r11
mov    $0x2,%esi
mov    -0x20(%rsp),%rdi
movsd  -0x8(%rbp,%rsi,8),%xmm3
movsd  0x0(%rbp,%rsi,8),%xmm2
movsd  -0x8(%rdx,%rdi,8),%xmm8
movsd  (%rdx,%rdi,8),%xmm1
movapd %xmm2,%xmm0
addsd  %xmm1,%xmm0
subsd  %xmm1,%xmm2
movsd  -0x8(%r13,%rsi,8),%xmm5
movsd  0x0(%r13,%rsi,8),%xmm6
movsd  -0x8(%r11,%rdi,8),%xmm9
movsd  (%r11,%rdi,8),%xmm1
movapd %xmm6,%xmm4
subsd  %xmm1,%xmm4
addsd  %xmm1,%xmm6
movapd %xmm3,%xmm10
subsd  %xmm8,%xmm10
addsd  %xmm8,%xmm3
movapd %xmm5,%xmm7
subsd  %xmm9,%xmm7
addsd  %xmm9,%xmm5
movapd %xmm3,%xmm1
addsd  %xmm5,%xmm1
movsd  %xmm1,-0x8(%rcx,%rsi,8)
subsd  %xmm5,%xmm3
movapd %xmm2,%xmm1
addsd  %xmm4,%xmm1
movsd  %xmm1,(%rcx,%rsi,8)
subsd  %xmm4,%xmm2
movapd %xmm10,%xmm1
subsd  %xmm6,%xmm1
addsd  %xmm6,%xmm10
movapd %xmm0,%xmm4
addsd  %xmm7,%xmm4
subsd  %xmm7,%xmm0
movsd  -0x8(%r8,%rsi,8),%xmm5
mulsd  %xmm4,%xmm5
movsd  -0x10(%r8,%rsi,8),%xmm6
mulsd  %xmm1,%xmm6
subsd  %xmm5,%xmm6
movsd  %xmm6,-0x8(%rbx,%rsi,8)
mulsd  -0x8(%r8,%rsi,8),%xmm1
mulsd  -0x10(%r8,%rsi,8),%xmm4
addsd  %xmm1,%xmm4
movsd  %xmm4,(%rbx,%rsi,8)
movsd  -0x8(%r9,%rsi,8),%xmm1
mulsd  %xmm2,%xmm1
movsd  -0x10(%r9,%rsi,8),%xmm4
mulsd  %xmm3,%xmm4
subsd  %xmm1,%xmm4
movsd  %xmm4,-0x8(%rax,%rsi,8)
mulsd  -0x8(%r9,%rsi,8),%xmm3
mulsd  -0x10(%r9,%rsi,8),%xmm2
addsd  %xmm3,%xmm2
movsd  %xmm2,(%rax,%rsi,8)
movsd  -0x8(%r15,%rsi,8),%xmm1
mulsd  %xmm0,%xmm1
movsd  -0x10(%r15,%rsi,8),%xmm2
mulsd  %xmm10,%xmm2
subsd  %xmm1,%xmm2
movsd  %xmm2,-0x8(%r12,%rsi,8)
mulsd  -0x8(%r15,%rsi,8),%xmm10
mulsd  -0x10(%r15,%rsi,8),%xmm0
addsd  %xmm10,%xmm0
movsd  %xmm0,(%r12,%rsi,8)
add    $0x2,%rsi
add    $0xfffffffffffffffe,%rdi
cmp    %r10,%rsi
jb     12e0 <radb4+0x1e0>
add    $0x1,%r14
mov    -0x18(%rsp),%rdx
add    %rdx,%r12
add    %rdx,%rax
add    %rdx,%rbx
add    %rdx,%rcx
mov    -0x3c(%rsp),%r11d
mov    -0x48(%rsp),%edx
add    %edx,%r11d
mov    -0x8(%rsp),%rbp
add    %edx,%ebp
mov    -0x40(%rsp),%esi
add    %edx,%esi
mov    -0x44(%rsp),%edi
add    %edx,%edi
cmp    -0x10(%rsp),%r14
jne    12a0 <radb4+0x1a0>
mov    -0x50(%rsp),%rdi
mov    %edi,%eax
shr    $0x1f,%eax
add    %edi,%eax
and    $0xfffffffe,%eax
mov    %edi,%ecx
sub    %eax,%ecx
cmp    $0x1,%ecx
mov    -0x38(%rsp),%r15
mov    -0x28(%rsp),%r13
mov    -0x30(%rsp),%rsi
je     15a9 <radb4+0x4a9>
test   %esi,%esi
jle    15a9 <radb4+0x4a9>
lea    (%rsi,%rsi,1),%eax
lea    (%rsi,%rsi,2),%ecx
movslq %edi,%rdx
movslq %eax,%rdi
movslq %ecx,%rcx
mov    %esi,%eax
imul   %rdx,%rcx
add    %rdx,%rcx
add    $0xffffffffffffffff,%rcx
lea    0x0(,%rcx,8),%r8
add    %r13,%r8
lea    0x0(,%rdx,8),%r9
imul   %rdx,%rdi
lea    (%rdi,%rdx,1),%rcx
add    $0xffffffffffffffff,%rcx
lea    0x0(,%rcx,8),%r10
add    %r13,%r10
mov    %rdx,%rcx
imul   %rax,%rcx
add    %rdx,%rcx
add    $0xffffffffffffffff,%rcx
lea    0x0(%r13,%rcx,8),%rdi
lea    -0x8(%r13,%rdx,8),%rbp
lea    -0x1(%rdx,%rdx,2),%rcx
lea    (%r15,%rcx,8),%rbx
lea    (%rdx,%rdx,2),%rcx
lea    (%r15,%rcx,8),%rcx
lea    (%r15,%rdx,8),%rdx
xor    %esi,%esi
movsd  0xad2(%rip),%xmm0
movsd  0xad2(%rip),%xmm1
cs nopw 0x0(%rax,%rax,1)
movsd  (%rdx,%rsi,4),%xmm2
movsd  (%rcx,%rsi,4),%xmm3
movapd %xmm2,%xmm4
addsd  %xmm3,%xmm4
subsd  %xmm2,%xmm3
movsd  -0x8(%rdx,%rsi,4),%xmm2
movsd  (%rbx,%rsi,4),%xmm5
movapd %xmm2,%xmm6
subsd  %xmm5,%xmm6
addsd  %xmm5,%xmm2
addsd  %xmm2,%xmm2
movsd  %xmm2,0x0(%rbp,%rsi,1)
movapd %xmm6,%xmm2
subsd  %xmm4,%xmm2
mulsd  %xmm0,%xmm2
movsd  %xmm2,(%rdi,%rsi,1)
addsd  %xmm3,%xmm3
movsd  %xmm3,(%r10,%rsi,1)
addsd  %xmm4,%xmm6
mulsd  %xmm1,%xmm6
movsd  %xmm6,(%r8,%rsi,1)
add    %r9,%rsi
add    $0xffffffffffffffff,%rax
jne    1540 <radb4+0x440>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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