void ibfR4(float *ioptr, long M, long NDiffU) {
  unsigned long pos;
  unsigned long posi;
  unsigned long pinc;
  unsigned long pnext;
  unsigned long pnexti;
  unsigned long NSameU;
  unsigned long SameUCnt;
  float *pstrt;
  float *p0r, *p1r, *p2r, *p3r;
  float w1r = 1.0 / 1.414213562373095048801688724209698078569;
  float f0r, f0i, f1r, f1i, f2r, f2i, f3r, f3i;
  float f4r, f4i, f5r, f5i, f6r, f6i, f7r, f7i;
  float t1r, t1i;
  const float Two = 2.0;
  pinc = NDiffU * 2;
  pnext = pinc * 4;
  pnexti = pnext + 1;
  pos = 2;
  posi = pos + 1;
  NSameU = ((unsigned long)1 << (M)) / 4 / NDiffU;
  pstrt = ioptr;
  p0r = pstrt;
  p1r = pstrt + pinc;
  p2r = p1r + pinc;
  p3r = p2r + pinc;
  f0r = *p0r;
  f1r = *p1r;
  f2r = *p2r;
  f3r = *p3r;
  f0i = *(p0r + 1);
  f1i = *(p1r + 1);
  f2i = *(p2r + 1);
  f3i = *(p3r + 1);
  f5r = f0r - f1r;
  f5i = f0i - f1i;
  f0r = f0r + f1r;
  f0i = f0i + f1i;
  f6r = f2r + f3r;
  f6i = f2i + f3i;
  f3r = f2r - f3r;
  f3i = f2i - f3i;
  for (SameUCnt = NSameU - 1; SameUCnt > 0; SameUCnt--) {
    f7r = f5r + f3i;
    f7i = f5i - f3r;
    f5r = f5r - f3i;
    f5i = f5i + f3r;
    f4r = f0r + f6r;
    f4i = f0i + f6i;
    f6r = f0r - f6r;
    f6i = f0i - f6i;
    f2r = *(p2r + pos);
    f2i = *(p2r + posi);
    f1r = *(p1r + pos);
    f1i = *(p1r + posi);
    f3i = *(p3r + posi);
    f0r = *(p0r + pos);
    f3r = *(p3r + pos);
    f0i = *(p0r + posi);
    *p3r = f7r;
    *p0r = f4r;
    *(p3r + 1) = f7i;
    *(p0r + 1) = f4i;
    *p1r = f5r;
    *p2r = f6r;
    *(p1r + 1) = f5i;
    *(p2r + 1) = f6i;
    f7r = f2r + f3i;
    f7i = f2i - f3r;
    f2r = f2r - f3i;
    f2i = f2i + f3r;
    f4r = f0r - f1i;
    f4i = f0i + f1r;
    t1r = f0r + f1i;
    t1i = f0i - f1r;
    f5r = t1r - f7r * w1r - f7i * w1r;
    f5i = t1i + f7r * w1r - f7i * w1r;
    f7r = t1r * Two - f5r;
    f7i = t1i * Two - f5i;
    f6r = f4r - f2r * w1r + f2i * w1r;
    f6i = f4i - f2r * w1r - f2i * w1r;
    f4r = f4r * Two - f6r;
    f4i = f4i * Two - f6i;
    f3r = *(p3r + pnext);
    f0r = *(p0r + pnext);
    f3i = *(p3r + pnexti);
    f0i = *(p0r + pnexti);
    f2r = *(p2r + pnext);
    f2i = *(p2r + pnexti);
    f1r = *(p1r + pnext);
    f1i = *(p1r + pnexti);
    *(p2r + pos) = f6r;
    *(p1r + pos) = f5r;
    *(p2r + posi) = f6i;
    *(p1r + posi) = f5i;
    *(p3r + pos) = f7r;
    *(p0r + pos) = f4r;
    *(p3r + posi) = f7i;
    *(p0r + posi) = f4i;
    f6r = f2r + f3r;
    f6i = f2i + f3i;
    f3r = f2r - f3r;
    f3i = f2i - f3i;
    f5r = f0r - f1r;
    f5i = f0i - f1i;
    f0r = f0r + f1r;
    f0i = f0i + f1i;
    p3r += pnext;
    p0r += pnext;
    p1r += pnext;
    p2r += pnext;
  }
  f7r = f5r + f3i;
  f7i = f5i - f3r;
  f5r = f5r - f3i;
  f5i = f5i + f3r;
  f4r = f0r + f6r;
  f4i = f0i + f6i;
  f6r = f0r - f6r;
  f6i = f0i - f6i;
  f2r = *(p2r + pos);
  f2i = *(p2r + posi);
  f1r = *(p1r + pos);
  f1i = *(p1r + posi);
  f3i = *(p3r + posi);
  f0r = *(p0r + pos);
  f3r = *(p3r + pos);
  f0i = *(p0r + posi);
  *p3r = f7r;
  *p0r = f4r;
  *(p3r + 1) = f7i;
  *(p0r + 1) = f4i;
  *p1r = f5r;
  *p2r = f6r;
  *(p1r + 1) = f5i;
  *(p2r + 1) = f6i;
  f7r = f2r + f3i;
  f7i = f2i - f3r;
  f2r = f2r - f3i;
  f2i = f2i + f3r;
  f4r = f0r - f1i;
  f4i = f0i + f1r;
  t1r = f0r + f1i;
  t1i = f0i - f1r;
  f5r = t1r - f7r * w1r - f7i * w1r;
  f5i = t1i + f7r * w1r - f7i * w1r;
  f7r = t1r * Two - f5r;
  f7i = t1i * Two - f5i;
  f6r = f4r - f2r * w1r + f2i * w1r;
  f6i = f4i - f2r * w1r - f2i * w1r;
  f4r = f4r * Two - f6r;
  f4i = f4i * Two - f6i;
  *(p2r + pos) = f6r;
  *(p1r + pos) = f5r;
  *(p2r + posi) = f6i;
  *(p1r + posi) = f5i;
  *(p3r + pos) = f7r;
  *(p0r + pos) = f4r;
  *(p3r + posi) = f7i;
  *(p0r + posi) = f4i;
}


x86 assembly (clang, -O0):
<ibfR4>:
push   %rbp
mov    %rsp,%rbp
sub    $0x48,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
movss  0xee8(%rip),%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  0xed7(%rip),%xmm0
movss  %xmm0,-0xc8(%rbp)
ff
mov    -0x18(%rbp),%rax
shl    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
shl    $0x2,%rax
mov    %rax,-0x38(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x40(%rbp)
movq   $0x2,-0x20(%rbp)
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
mov    -0x10(%rbp),%rcx
mov    $0x1,%eax
shl    %cl,%rax
shr    $0x2,%rax
xor    %ecx,%ecx
mov    %ecx,%edx
divq   -0x18(%rbp)
mov    %rax,-0x48(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x58(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
mov    -0x30(%rbp),%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rax
mov    -0x30(%rbp),%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x70(%rbp)
mov    -0x70(%rbp),%rax
mov    -0x30(%rbp),%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x78(%rbp)
mov    -0x60(%rbp),%rax
movss  (%rax),%xmm0
movss  %xmm0,-0x80(%rbp)
mov    -0x68(%rbp),%rax
movss  (%rax),%xmm0
movss  %xmm0,-0x88(%rbp)
ff
mov    -0x70(%rbp),%rax
movss  (%rax),%xmm0
movss  %xmm0,-0x90(%rbp)
ff
mov    -0x78(%rbp),%rax
movss  (%rax),%xmm0
movss  %xmm0,-0x98(%rbp)
ff
mov    -0x60(%rbp),%rax
movss  0x4(%rax),%xmm0
movss  %xmm0,-0x84(%rbp)
ff
mov    -0x68(%rbp),%rax
movss  0x4(%rax),%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
mov    -0x70(%rbp),%rax
movss  0x4(%rax),%xmm0
movss  %xmm0,-0x94(%rbp)
ff
mov    -0x78(%rbp),%rax
movss  0x4(%rax),%xmm0
movss  %xmm0,-0x9c(%rbp)
ff
movss  -0x80(%rbp),%xmm0
subss  -0x88(%rbp),%xmm0
ff
movss  %xmm0,-0xa8(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
subss  -0x8c(%rbp),%xmm0
ff
movss  %xmm0,-0xac(%rbp)
ff
movss  -0x80(%rbp),%xmm0
addss  -0x88(%rbp),%xmm0
ff
movss  %xmm0,-0x80(%rbp)
movss  -0x84(%rbp),%xmm0
ff
addss  -0x8c(%rbp),%xmm0
ff
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x90(%rbp),%xmm0
ff
addss  -0x98(%rbp),%xmm0
ff
movss  %xmm0,-0xb0(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
addss  -0x9c(%rbp),%xmm0
ff
movss  %xmm0,-0xb4(%rbp)
ff
movss  -0x90(%rbp),%xmm0
ff
subss  -0x98(%rbp),%xmm0
ff
movss  %xmm0,-0x98(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
subss  -0x9c(%rbp),%xmm0
ff
movss  %xmm0,-0x9c(%rbp)
ff
mov    -0x48(%rbp),%rax
sub    $0x1,%rax
mov    %rax,-0x50(%rbp)
cmpq   $0x0,-0x50(%rbp)
jbe    19f9 <ibfR4+0x8f9>
movss  -0xa8(%rbp),%xmm0
ff
addss  -0x9c(%rbp),%xmm0
ff
movss  %xmm0,-0xb8(%rbp)
ff
movss  -0xac(%rbp),%xmm0
ff
subss  -0x98(%rbp),%xmm0
ff
movss  %xmm0,-0xbc(%rbp)
ff
movss  -0xa8(%rbp),%xmm0
ff
subss  -0x9c(%rbp),%xmm0
ff
movss  %xmm0,-0xa8(%rbp)
ff
movss  -0xac(%rbp),%xmm0
ff
addss  -0x98(%rbp),%xmm0
ff
movss  %xmm0,-0xac(%rbp)
ff
movss  -0x80(%rbp),%xmm0
addss  -0xb0(%rbp),%xmm0
ff
movss  %xmm0,-0xa0(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
addss  -0xb4(%rbp),%xmm0
ff
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0x80(%rbp),%xmm0
subss  -0xb0(%rbp),%xmm0
ff
movss  %xmm0,-0xb0(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
subss  -0xb4(%rbp),%xmm0
ff
movss  %xmm0,-0xb4(%rbp)
ff
mov    -0x70(%rbp),%rax
mov    -0x20(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x90(%rbp)
ff
mov    -0x70(%rbp),%rax
mov    -0x28(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x94(%rbp)
mov    -0x68(%rbp),%rax
mov    -0x20(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x88(%rbp)
ff
mov    -0x68(%rbp),%rax
mov    -0x28(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
mov    -0x78(%rbp),%rax
mov    -0x28(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x9c(%rbp)
ff
mov    -0x60(%rbp),%rax
mov    -0x20(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x80(%rbp)
mov    -0x78(%rbp),%rax
mov    -0x20(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x98(%rbp)
ff
mov    -0x60(%rbp),%rax
mov    -0x28(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0xb8(%rbp),%xmm0
ff
mov    -0x78(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0xa0(%rbp),%xmm0
ff
mov    -0x60(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0xbc(%rbp),%xmm0
ff
mov    -0x78(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0xa4(%rbp),%xmm0
ff
mov    -0x60(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0xa8(%rbp),%xmm0
ff
mov    -0x68(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0xb0(%rbp),%xmm0
ff
mov    -0x70(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0xac(%rbp),%xmm0
ff
mov    -0x68(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0xb4(%rbp),%xmm0
ff
mov    -0x70(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0x90(%rbp),%xmm0
ff
addss  -0x9c(%rbp),%xmm0
ff
movss  %xmm0,-0xb8(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
subss  -0x98(%rbp),%xmm0
ff
movss  %xmm0,-0xbc(%rbp)
ff
movss  -0x90(%rbp),%xmm0
ff
subss  -0x9c(%rbp),%xmm0
ff
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
addss  -0x98(%rbp),%xmm0
ff
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x80(%rbp),%xmm0
subss  -0x8c(%rbp),%xmm0
ff
movss  %xmm0,-0xa0(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
addss  -0x88(%rbp),%xmm0
ff
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0x80(%rbp),%xmm0
addss  -0x8c(%rbp),%xmm0
ff
movss  %xmm0,-0xc0(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
subss  -0x88(%rbp),%xmm0
ff
movss  %xmm0,-0xc4(%rbp)
ff
movss  -0xc0(%rbp),%xmm0
ff
movss  -0xb8(%rbp),%xmm1
ff
movss  -0x7c(%rbp),%xmm2
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0xbc(%rbp),%xmm0
ff
movss  -0x7c(%rbp),%xmm2
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0xa8(%rbp)
ff
movss  -0xc4(%rbp),%xmm0
ff
movss  -0xb8(%rbp),%xmm1
ff
movss  -0x7c(%rbp),%xmm2
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0xbc(%rbp),%xmm0
ff
movss  -0x7c(%rbp),%xmm2
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0xac(%rbp)
ff
movss  -0xc0(%rbp),%xmm0
ff
movss  -0xa8(%rbp),%xmm1
ff
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
addss  %xmm0,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0xb8(%rbp)
ff
movss  -0xc4(%rbp),%xmm0
ff
movss  -0xac(%rbp),%xmm1
ff
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
addss  %xmm0,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0xbc(%rbp)
ff
movss  -0xa0(%rbp),%xmm0
ff
movss  -0x90(%rbp),%xmm1
ff
movss  -0x7c(%rbp),%xmm2
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0x94(%rbp),%xmm0
ff
movss  -0x7c(%rbp),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0xb0(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
movss  -0x90(%rbp),%xmm1
ff
movss  -0x7c(%rbp),%xmm2
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0x94(%rbp),%xmm0
ff
movss  -0x7c(%rbp),%xmm2
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0xb4(%rbp)
ff
movss  -0xa0(%rbp),%xmm0
ff
movss  -0xb0(%rbp),%xmm1
ff
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
addss  %xmm0,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0xa0(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
movss  -0xb4(%rbp),%xmm1
ff
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
addss  %xmm0,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
mov    -0x78(%rbp),%rax
mov    -0x38(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x98(%rbp)
ff
mov    -0x60(%rbp),%rax
mov    -0x38(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x80(%rbp)
mov    -0x78(%rbp),%rax
mov    -0x40(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x9c(%rbp)
ff
mov    -0x60(%rbp),%rax
mov    -0x40(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x84(%rbp)
ff
mov    -0x70(%rbp),%rax
mov    -0x38(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x90(%rbp)
ff
mov    -0x70(%rbp),%rax
mov    -0x40(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x94(%rbp)
ff
mov    -0x68(%rbp),%rax
mov    -0x38(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x88(%rbp)
ff
mov    -0x68(%rbp),%rax
mov    -0x40(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0xb0(%rbp),%xmm0
ff
mov    -0x70(%rbp),%rax
mov    -0x20(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0xa8(%rbp),%xmm0
ff
mov    -0x68(%rbp),%rax
mov    -0x20(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0xb4(%rbp),%xmm0
ff
mov    -0x70(%rbp),%rax
mov    -0x28(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0xac(%rbp),%xmm0
ff
mov    -0x68(%rbp),%rax
mov    -0x28(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0xb8(%rbp),%xmm0
ff
mov    -0x78(%rbp),%rax
mov    -0x20(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0xa0(%rbp),%xmm0
ff
mov    -0x60(%rbp),%rax
mov    -0x20(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0xbc(%rbp),%xmm0
ff
mov    -0x78(%rbp),%rax
mov    -0x28(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0xa4(%rbp),%xmm0
ff
mov    -0x60(%rbp),%rax
mov    -0x28(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x90(%rbp),%xmm0
ff
addss  -0x98(%rbp),%xmm0
movss  %xmm0,-0xb0(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
addss  -0x9c(%rbp),%xmm0
ff
movss  %xmm0,-0xb4(%rbp)
ff
movss  -0x90(%rbp),%xmm0
ff
subss  -0x98(%rbp),%xmm0
ff
movss  %xmm0,-0x98(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
subss  -0x9c(%rbp),%xmm0
ff
movss  %xmm0,-0x9c(%rbp)
ff
movss  -0x80(%rbp),%xmm0
subss  -0x88(%rbp),%xmm0
ff
movss  %xmm0,-0xa8(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
subss  -0x8c(%rbp),%xmm0
ff
movss  %xmm0,-0xac(%rbp)
ff
movss  -0x80(%rbp),%xmm0
addss  -0x88(%rbp),%xmm0
ff
movss  %xmm0,-0x80(%rbp)
movss  -0x84(%rbp),%xmm0
ff
addss  -0x8c(%rbp),%xmm0
ff
movss  %xmm0,-0x84(%rbp)
ff
mov    -0x38(%rbp),%rax
shl    $0x2,%rax
add    -0x78(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    -0x38(%rbp),%rax
shl    $0x2,%rax
add    -0x60(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x38(%rbp),%rax
shl    $0x2,%rax
add    -0x68(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x38(%rbp),%rax
shl    $0x2,%rax
add    -0x70(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x50(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x50(%rbp)
jmp    1312 <ibfR4+0x212>
movss  -0xa8(%rbp),%xmm0
addss  -0x9c(%rbp),%xmm0
ff
movss  %xmm0,-0xb8(%rbp)
ff
movss  -0xac(%rbp),%xmm0
ff
subss  -0x98(%rbp),%xmm0
ff
movss  %xmm0,-0xbc(%rbp)
ff
movss  -0xa8(%rbp),%xmm0
ff
subss  -0x9c(%rbp),%xmm0
ff
movss  %xmm0,-0xa8(%rbp)
ff
movss  -0xac(%rbp),%xmm0
ff
addss  -0x98(%rbp),%xmm0
ff
movss  %xmm0,-0xac(%rbp)
ff
movss  -0x80(%rbp),%xmm0
addss  -0xb0(%rbp),%xmm0
ff
movss  %xmm0,-0xa0(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
addss  -0xb4(%rbp),%xmm0
ff
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0x80(%rbp),%xmm0
subss  -0xb0(%rbp),%xmm0
ff
movss  %xmm0,-0xb0(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
subss  -0xb4(%rbp),%xmm0
ff
movss  %xmm0,-0xb4(%rbp)
ff
mov    -0x70(%rbp),%rax
mov    -0x20(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x90(%rbp)
ff
mov    -0x70(%rbp),%rax
mov    -0x28(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x94(%rbp)
ff
mov    -0x68(%rbp),%rax
mov    -0x20(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x88(%rbp)
ff
mov    -0x68(%rbp),%rax
mov    -0x28(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
mov    -0x78(%rbp),%rax
mov    -0x28(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x9c(%rbp)
ff
mov    -0x60(%rbp),%rax
mov    -0x20(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x80(%rbp)
mov    -0x78(%rbp),%rax
mov    -0x20(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x98(%rbp)
ff
mov    -0x60(%rbp),%rax
mov    -0x28(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0xb8(%rbp),%xmm0
ff
mov    -0x78(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0xa0(%rbp),%xmm0
ff
mov    -0x60(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0xbc(%rbp),%xmm0
ff
mov    -0x78(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0xa4(%rbp),%xmm0
ff
mov    -0x60(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0xa8(%rbp),%xmm0
ff
mov    -0x68(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0xb0(%rbp),%xmm0
ff
mov    -0x70(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0xac(%rbp),%xmm0
ff
mov    -0x68(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0xb4(%rbp),%xmm0
ff
mov    -0x70(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0x90(%rbp),%xmm0
ff
addss  -0x9c(%rbp),%xmm0
ff
movss  %xmm0,-0xb8(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
subss  -0x98(%rbp),%xmm0
ff
movss  %xmm0,-0xbc(%rbp)
ff
movss  -0x90(%rbp),%xmm0
ff
subss  -0x9c(%rbp),%xmm0
ff
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
addss  -0x98(%rbp),%xmm0
ff
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x80(%rbp),%xmm0
subss  -0x8c(%rbp),%xmm0
ff
movss  %xmm0,-0xa0(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
addss  -0x88(%rbp),%xmm0
ff
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0x80(%rbp),%xmm0
addss  -0x8c(%rbp),%xmm0
ff
movss  %xmm0,-0xc0(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
subss  -0x88(%rbp),%xmm0
ff
movss  %xmm0,-0xc4(%rbp)
ff
movss  -0xc0(%rbp),%xmm0
ff
movss  -0xb8(%rbp),%xmm1
ff
movss  -0x7c(%rbp),%xmm2
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0xbc(%rbp),%xmm0
ff
movss  -0x7c(%rbp),%xmm2
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0xa8(%rbp)
ff
movss  -0xc4(%rbp),%xmm0
ff
movss  -0xb8(%rbp),%xmm1
ff
movss  -0x7c(%rbp),%xmm2
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0xbc(%rbp),%xmm0
ff
movss  -0x7c(%rbp),%xmm2
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0xac(%rbp)
ff
movss  -0xc0(%rbp),%xmm0
ff
movss  -0xa8(%rbp),%xmm1
ff
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
addss  %xmm0,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0xb8(%rbp)
ff
movss  -0xc4(%rbp),%xmm0
ff
movss  -0xac(%rbp),%xmm1
ff
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
addss  %xmm0,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0xbc(%rbp)
ff
movss  -0xa0(%rbp),%xmm0
ff
movss  -0x90(%rbp),%xmm1
ff
movss  -0x7c(%rbp),%xmm2
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0x94(%rbp),%xmm0
ff
movss  -0x7c(%rbp),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0xb0(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
movss  -0x90(%rbp),%xmm1
ff
movss  -0x7c(%rbp),%xmm2
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0x94(%rbp),%xmm0
ff
movss  -0x7c(%rbp),%xmm2
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0xb4(%rbp)
ff
movss  -0xa0(%rbp),%xmm0
ff
movss  -0xb0(%rbp),%xmm1
ff
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
addss  %xmm0,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0xa0(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
movss  -0xb4(%rbp),%xmm1
ff
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
addss  %xmm0,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xb0(%rbp),%xmm0
ff
mov    -0x70(%rbp),%rax
mov    -0x20(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0xa8(%rbp),%xmm0
ff
mov    -0x68(%rbp),%rax
mov    -0x20(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0xb4(%rbp),%xmm0
ff
mov    -0x70(%rbp),%rax
mov    -0x28(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0xac(%rbp),%xmm0
ff
mov    -0x68(%rbp),%rax
mov    -0x28(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0xb8(%rbp),%xmm0
ff
mov    -0x78(%rbp),%rax
mov    -0x20(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0xa0(%rbp),%xmm0
ff
mov    -0x60(%rbp),%rax
mov    -0x20(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0xbc(%rbp),%xmm0
ff
mov    -0x78(%rbp),%rax
mov    -0x28(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0xa4(%rbp),%xmm0
ff
mov    -0x60(%rbp),%rax
mov    -0x28(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
add    $0x48,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<ibfR4>:
mov    %rdx,%r8
mov    %rsi,%rcx
mov    $0x1,%eax
shl    %cl,%rax
lea    (%rdx,%rdx,1),%rsi
shr    $0x2,%rax
mov    %rax,%rcx
or     %rdx,%rcx
shr    $0x20,%rcx
je     1129 <ibfR4+0x29>
xor    %edx,%edx
div    %r8
jmp    112e <ibfR4+0x2e>
xor    %edx,%edx
div    %r8d
push   %rbx
lea    (%rdi,%rsi,4),%rcx
lea    (%rcx,%rsi,4),%rdx
movss  (%rdi),%xmm11
movss  0x4(%rdi),%xmm10
movss  (%rdi,%rsi,4),%xmm0
movss  0x4(%rdi,%rsi,4),%xmm1
movss  (%rcx,%rsi,4),%xmm12
movss  0x4(%rcx,%rsi,4),%xmm6
movss  (%rdx,%rsi,4),%xmm5
movss  0x4(%rdx,%rsi,4),%xmm8
movaps %xmm11,%xmm3
subss  %xmm0,%xmm3
movaps %xmm10,%xmm4
subss  %xmm1,%xmm4
addss  %xmm0,%xmm11
addss  %xmm1,%xmm10
movaps %xmm12,%xmm7
addss  %xmm5,%xmm7
movaps %xmm6,%xmm2
addss  %xmm8,%xmm2
subss  %xmm5,%xmm12
subss  %xmm8,%xmm6
add    $0xffffffffffffffff,%rax
je     13c4 <ibfR4+0x2c4>
lea    0x0(,%r8,8),%rcx
mov    %r8,%r9
shl    $0x5,%r9
lea    (%rcx,%rcx,2),%rsi
imul   $0x38,%r8,%r10
mov    %r8,%rdx
shl    $0x4,%rdx
lea    (%rdx,%rdx,2),%r11
lea    (%rcx,%rcx,4),%rbx
nopl   0x0(%rax)
movaps %xmm6,%xmm13
addss  %xmm3,%xmm13
movaps %xmm4,%xmm1
subss  %xmm12,%xmm1
subss  %xmm6,%xmm3
addss  %xmm4,%xmm12
movaps %xmm11,%xmm5
addss  %xmm7,%xmm5
movaps %xmm10,%xmm0
addss  %xmm2,%xmm0
subss  %xmm7,%xmm11
subss  %xmm2,%xmm10
movss  0x8(%rdi,%rdx,1),%xmm4
movss  0xc(%rdi,%rdx,1),%xmm14
movss  0x8(%rdi,%rcx,1),%xmm6
movss  0xc(%rdi,%rcx,1),%xmm2
movss  0x8(%rdi,%rsi,1),%xmm15
movss  0xc(%rdi,%rsi,1),%xmm8
movss  0x8(%rdi),%xmm9
movss  0xc(%rdi),%xmm7
movss  %xmm13,(%rdi,%rsi,1)
movss  %xmm5,(%rdi)
movss  %xmm1,0x4(%rdi,%rsi,1)
movss  %xmm0,0x4(%rdi)
movss  %xmm3,(%rdi,%rcx,1)
movss  %xmm11,(%rdi,%rdx,1)
movss  %xmm12,0x4(%rdi,%rcx,1)
movss  %xmm10,0x4(%rdi,%rdx,1)
movaps %xmm4,%xmm3
addss  %xmm8,%xmm3
movaps %xmm14,%xmm5
subss  %xmm15,%xmm5
subss  %xmm8,%xmm4
addss  %xmm15,%xmm14
movaps %xmm9,%xmm0
subss  %xmm2,%xmm0
movaps %xmm6,%xmm1
addss  %xmm7,%xmm1
addss  %xmm9,%xmm2
subss  %xmm6,%xmm7
movss  0xd60(%rip),%xmm9
mulss  %xmm9,%xmm3
movaps %xmm2,%xmm8
subss  %xmm3,%xmm8
movaps 0xd5b(%rip),%xmm6
xorps  %xmm6,%xmm5
mulss  %xmm9,%xmm5
addss  %xmm5,%xmm8
addss  %xmm7,%xmm3
addss  %xmm5,%xmm3
xorps  %xmm6,%xmm4
mulss  %xmm9,%xmm4
movaps %xmm4,%xmm5
addss  %xmm0,%xmm5
mulss  %xmm9,%xmm14
addss  %xmm14,%xmm5
addss  %xmm1,%xmm4
subss  %xmm14,%xmm4
addss  %xmm0,%xmm0
subss  %xmm5,%xmm0
movss  (%rdi,%r10,1),%xmm9
movss  0x4(%rdi,%r10,1),%xmm13
movss  (%rdi,%r9,1),%xmm11
movss  0x4(%rdi,%r9,1),%xmm10
movss  (%rdi,%r11,1),%xmm12
movss  0x4(%rdi,%r11,1),%xmm6
movss  (%rdi,%rbx,1),%xmm14
movss  0x4(%rdi,%rbx,1),%xmm15
movss  %xmm5,0x8(%rdi,%rdx,1)
addss  %xmm2,%xmm2
subss  %xmm8,%xmm2
movss  %xmm8,0x8(%rdi,%rcx,1)
addss  %xmm1,%xmm1
subss  %xmm4,%xmm1
movss  %xmm4,0xc(%rdi,%rdx,1)
addss  %xmm7,%xmm7
subss  %xmm3,%xmm7
movss  %xmm3,0xc(%rdi,%rcx,1)
movss  %xmm2,0x8(%rdi,%rsi,1)
movss  %xmm0,0x8(%rdi)
movss  %xmm7,0xc(%rdi,%rsi,1)
movss  %xmm1,0xc(%rdi)
movaps %xmm9,%xmm7
addss  %xmm12,%xmm7
subss  %xmm9,%xmm12
movaps %xmm13,%xmm2
addss  %xmm6,%xmm2
subss  %xmm13,%xmm6
movaps %xmm11,%xmm3
subss  %xmm14,%xmm3
addss  %xmm14,%xmm11
movaps %xmm10,%xmm4
subss  %xmm15,%xmm4
addss  %xmm15,%xmm10
add    %r9,%rdi
add    $0xffffffffffffffff,%rax
jne    11d0 <ibfR4+0xd0>
lea    (%r8,%r8,2),%rax
lea    (%rdi,%rax,8),%rax
add    %rdi,%rdx
add    %rdi,%rcx
jmp    13c8 <ibfR4+0x2c8>
lea    (%rdx,%rsi,4),%rax
movaps %xmm6,%xmm8
addss  %xmm3,%xmm8
movaps %xmm4,%xmm9
subss  %xmm12,%xmm9
subss  %xmm6,%xmm3
addss  %xmm4,%xmm12
movaps %xmm11,%xmm0
addss  %xmm7,%xmm0
movaps %xmm10,%xmm1
addss  %xmm2,%xmm1
subss  %xmm7,%xmm11
subss  %xmm2,%xmm10
movss  0x8(%rdx),%xmm4
movss  0xc(%rdx),%xmm7
movss  0x8(%rcx),%xmm13
movss  0xc(%rcx),%xmm5
movss  0x8(%rax),%xmm14
movss  0xc(%rax),%xmm2
movss  0x8(%rdi),%xmm15
movss  0xc(%rdi),%xmm6
movss  %xmm8,(%rax)
movss  %xmm0,(%rdi)
movss  %xmm9,0x4(%rax)
movss  %xmm1,0x4(%rdi)
movss  %xmm3,(%rcx)
movss  %xmm11,(%rdx)
movss  %xmm12,0x4(%rcx)
movss  %xmm10,0x4(%rdx)
movaps %xmm4,%xmm0
addss  %xmm2,%xmm0
movaps %xmm7,%xmm3
subss  %xmm14,%xmm3
subss  %xmm2,%xmm4
addss  %xmm14,%xmm7
movaps %xmm15,%xmm1
subss  %xmm5,%xmm1
movaps %xmm13,%xmm2
addss  %xmm6,%xmm2
addss  %xmm15,%xmm5
subss  %xmm13,%xmm6
movss  0xb74(%rip),%xmm9
mulss  %xmm9,%xmm0
movaps %xmm5,%xmm8
subss  %xmm0,%xmm8
movaps 0xb6e(%rip),%xmm10
xorps  %xmm10,%xmm3
mulss  %xmm9,%xmm3
addss  %xmm3,%xmm8
addss  %xmm6,%xmm0
addss  %xmm3,%xmm0
addss  %xmm5,%xmm5
subss  %xmm8,%xmm5
addss  %xmm6,%xmm6
subss  %xmm0,%xmm6
xorps  %xmm10,%xmm4
mulss  %xmm9,%xmm4
movaps %xmm4,%xmm3
addss  %xmm1,%xmm3
mulss  %xmm9,%xmm7
addss  %xmm7,%xmm3
addss  %xmm2,%xmm4
subss  %xmm7,%xmm4
addss  %xmm1,%xmm1
subss  %xmm3,%xmm1
addss  %xmm2,%xmm2
subss  %xmm4,%xmm2
movss  %xmm3,0x8(%rdx)
movss  %xmm8,0x8(%rcx)
movss  %xmm4,0xc(%rdx)
movss  %xmm0,0xc(%rcx)
movss  %xmm5,0x8(%rax)
movss  %xmm1,0x8(%rdi)
movss  %xmm6,0xc(%rax)
movss  %xmm2,0xc(%rdi)
pop    %rbx
ret

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

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