#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */
typedef int uint32_t;

/* Variables and functions */
void ibfR4(float *ioptr, int M, int NDiffU) {
  unsigned int pos;
  unsigned int posi;
  unsigned int pinc;
  unsigned int pnext;
  unsigned int pnexti;
  unsigned int NSameU;
  unsigned int 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 = ((uint32_t)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    $0x28,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
movss  0xeea(%rip),%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  0xed9(%rip),%xmm0
movss  %xmm0,-0xa8(%rbp)
ff
mov    -0x10(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
shl    $0x2,%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
movl   $0x2,-0x14(%rbp)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0xc(%rbp),%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cltd
idivl  -0x10(%rbp)
mov    %eax,-0x28(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x38(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x38(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x48(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x50(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x40(%rbp),%rax
movss  (%rax),%xmm0
movss  %xmm0,-0x60(%rbp)
mov    -0x48(%rbp),%rax
movss  (%rax),%xmm0
movss  %xmm0,-0x68(%rbp)
mov    -0x50(%rbp),%rax
movss  (%rax),%xmm0
movss  %xmm0,-0x70(%rbp)
mov    -0x58(%rbp),%rax
movss  (%rax),%xmm0
movss  %xmm0,-0x78(%rbp)
mov    -0x40(%rbp),%rax
movss  0x4(%rax),%xmm0
movss  %xmm0,-0x64(%rbp)
mov    -0x48(%rbp),%rax
movss  0x4(%rax),%xmm0
movss  %xmm0,-0x6c(%rbp)
mov    -0x50(%rbp),%rax
movss  0x4(%rax),%xmm0
movss  %xmm0,-0x74(%rbp)
mov    -0x58(%rbp),%rax
movss  0x4(%rax),%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x60(%rbp),%xmm0
subss  -0x68(%rbp),%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x64(%rbp),%xmm0
subss  -0x6c(%rbp),%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x60(%rbp),%xmm0
addss  -0x68(%rbp),%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x64(%rbp),%xmm0
addss  -0x6c(%rbp),%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x70(%rbp),%xmm0
addss  -0x78(%rbp),%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x74(%rbp),%xmm0
addss  -0x7c(%rbp),%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x70(%rbp),%xmm0
subss  -0x78(%rbp),%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x74(%rbp),%xmm0
subss  -0x7c(%rbp),%xmm0
movss  %xmm0,-0x7c(%rbp)
mov    -0x28(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0x0,-0x2c(%rbp)
jbe    18cd <ibfR4+0x7cd>
movss  -0x88(%rbp),%xmm0
ff
addss  -0x7c(%rbp),%xmm0
movss  %xmm0,-0x98(%rbp)
ff
movss  -0x8c(%rbp),%xmm0
ff
subss  -0x78(%rbp),%xmm0
movss  %xmm0,-0x9c(%rbp)
ff
movss  -0x88(%rbp),%xmm0
ff
subss  -0x7c(%rbp),%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x8c(%rbp),%xmm0
ff
addss  -0x78(%rbp),%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x60(%rbp),%xmm0
addss  -0x90(%rbp),%xmm0
ff
movss  %xmm0,-0x80(%rbp)
movss  -0x64(%rbp),%xmm0
addss  -0x94(%rbp),%xmm0
ff
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x60(%rbp),%xmm0
subss  -0x90(%rbp),%xmm0
ff
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x64(%rbp),%xmm0
subss  -0x94(%rbp),%xmm0
ff
movss  %xmm0,-0x94(%rbp)
ff
mov    -0x50(%rbp),%rax
mov    -0x14(%rbp),%ecx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x70(%rbp)
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x74(%rbp)
mov    -0x48(%rbp),%rax
mov    -0x14(%rbp),%ecx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x68(%rbp)
mov    -0x48(%rbp),%rax
mov    -0x18(%rbp),%ecx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x6c(%rbp)
mov    -0x58(%rbp),%rax
mov    -0x18(%rbp),%ecx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x7c(%rbp)
mov    -0x40(%rbp),%rax
mov    -0x14(%rbp),%ecx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x60(%rbp)
mov    -0x58(%rbp),%rax
mov    -0x14(%rbp),%ecx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x78(%rbp)
mov    -0x40(%rbp),%rax
mov    -0x18(%rbp),%ecx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x98(%rbp),%xmm0
ff
mov    -0x58(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x80(%rbp),%xmm0
mov    -0x40(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x9c(%rbp),%xmm0
ff
mov    -0x58(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0x84(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0x88(%rbp),%xmm0
ff
mov    -0x48(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x90(%rbp),%xmm0
ff
mov    -0x50(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x8c(%rbp),%xmm0
ff
mov    -0x48(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0x94(%rbp),%xmm0
ff
mov    -0x50(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0x70(%rbp),%xmm0
addss  -0x7c(%rbp),%xmm0
movss  %xmm0,-0x98(%rbp)
ff
movss  -0x74(%rbp),%xmm0
subss  -0x78(%rbp),%xmm0
movss  %xmm0,-0x9c(%rbp)
ff
movss  -0x70(%rbp),%xmm0
subss  -0x7c(%rbp),%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x74(%rbp),%xmm0
addss  -0x78(%rbp),%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x60(%rbp),%xmm0
subss  -0x6c(%rbp),%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x64(%rbp),%xmm0
addss  -0x68(%rbp),%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x60(%rbp),%xmm0
addss  -0x6c(%rbp),%xmm0
movss  %xmm0,-0xa0(%rbp)
ff
movss  -0x64(%rbp),%xmm0
subss  -0x68(%rbp),%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa0(%rbp),%xmm0
ff
movss  -0x98(%rbp),%xmm1
movss  -0x5c(%rbp),%xmm2
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0x9c(%rbp),%xmm0
ff
movss  -0x5c(%rbp),%xmm2
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
movss  -0x98(%rbp),%xmm1
ff
movss  -0x5c(%rbp),%xmm2
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0x9c(%rbp),%xmm0
ff
movss  -0x5c(%rbp),%xmm2
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0xa0(%rbp),%xmm0
ff
movss  -0x88(%rbp),%xmm1
ff
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
addss  %xmm0,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x98(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
movss  -0x8c(%rbp),%xmm1
ff
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
addss  %xmm0,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x9c(%rbp)
ff
movss  -0x80(%rbp),%xmm0
movss  -0x70(%rbp),%xmm1
movss  -0x5c(%rbp),%xmm2
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0x74(%rbp),%xmm0
movss  -0x5c(%rbp),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
movss  -0x70(%rbp),%xmm1
movss  -0x5c(%rbp),%xmm2
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0x74(%rbp),%xmm0
movss  -0x5c(%rbp),%xmm2
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x80(%rbp),%xmm0
movss  -0x90(%rbp),%xmm1
ff
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
addss  %xmm0,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x84(%rbp),%xmm0
ff
movss  -0x94(%rbp),%xmm1
ff
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
addss  %xmm0,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
mov    -0x58(%rbp),%rax
mov    -0x20(%rbp),%ecx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x78(%rbp)
mov    -0x40(%rbp),%rax
mov    -0x20(%rbp),%ecx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x60(%rbp)
mov    -0x58(%rbp),%rax
mov    -0x24(%rbp),%ecx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x7c(%rbp)
mov    -0x40(%rbp),%rax
mov    -0x24(%rbp),%ecx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x64(%rbp)
mov    -0x50(%rbp),%rax
mov    -0x20(%rbp),%ecx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x70(%rbp)
mov    -0x50(%rbp),%rax
mov    -0x24(%rbp),%ecx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x74(%rbp)
mov    -0x48(%rbp),%rax
mov    -0x20(%rbp),%ecx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x68(%rbp)
mov    -0x48(%rbp),%rax
mov    -0x24(%rbp),%ecx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x90(%rbp),%xmm0
ff
mov    -0x50(%rbp),%rax
mov    -0x14(%rbp),%ecx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x88(%rbp),%xmm0
ff
mov    -0x48(%rbp),%rax
mov    -0x14(%rbp),%ecx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x94(%rbp),%xmm0
ff
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x8c(%rbp),%xmm0
ff
mov    -0x48(%rbp),%rax
mov    -0x18(%rbp),%ecx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x98(%rbp),%xmm0
ff
mov    -0x58(%rbp),%rax
mov    -0x14(%rbp),%ecx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x80(%rbp),%xmm0
mov    -0x40(%rbp),%rax
mov    -0x14(%rbp),%ecx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x9c(%rbp),%xmm0
ff
mov    -0x58(%rbp),%rax
mov    -0x18(%rbp),%ecx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x84(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
mov    -0x18(%rbp),%ecx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x70(%rbp),%xmm0
addss  -0x78(%rbp),%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x74(%rbp),%xmm0
addss  -0x7c(%rbp),%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x70(%rbp),%xmm0
subss  -0x78(%rbp),%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x74(%rbp),%xmm0
subss  -0x7c(%rbp),%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x60(%rbp),%xmm0
subss  -0x68(%rbp),%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x64(%rbp),%xmm0
subss  -0x6c(%rbp),%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x60(%rbp),%xmm0
addss  -0x68(%rbp),%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x64(%rbp),%xmm0
addss  -0x6c(%rbp),%xmm0
movss  %xmm0,-0x64(%rbp)
mov    -0x20(%rbp),%ecx
mov    -0x58(%rbp),%rax
mov    %ecx,%ecx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x20(%rbp),%ecx
mov    -0x40(%rbp),%rax
mov    %ecx,%ecx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x40(%rbp)
mov    -0x20(%rbp),%ecx
mov    -0x48(%rbp),%rax
mov    %ecx,%ecx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x20(%rbp),%ecx
mov    -0x50(%rbp),%rax
mov    %ecx,%ecx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    12b2 <ibfR4+0x1b2>
movss  -0x88(%rbp),%xmm0
ff
addss  -0x7c(%rbp),%xmm0
movss  %xmm0,-0x98(%rbp)
ff
movss  -0x8c(%rbp),%xmm0
ff
subss  -0x78(%rbp),%xmm0
movss  %xmm0,-0x9c(%rbp)
ff
movss  -0x88(%rbp),%xmm0
ff
subss  -0x7c(%rbp),%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x8c(%rbp),%xmm0
ff
addss  -0x78(%rbp),%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x60(%rbp),%xmm0
addss  -0x90(%rbp),%xmm0
ff
movss  %xmm0,-0x80(%rbp)
movss  -0x64(%rbp),%xmm0
addss  -0x94(%rbp),%xmm0
ff
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x60(%rbp),%xmm0
subss  -0x90(%rbp),%xmm0
ff
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x64(%rbp),%xmm0
subss  -0x94(%rbp),%xmm0
ff
movss  %xmm0,-0x94(%rbp)
ff
mov    -0x50(%rbp),%rax
mov    -0x14(%rbp),%ecx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x70(%rbp)
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x74(%rbp)
mov    -0x48(%rbp),%rax
mov    -0x14(%rbp),%ecx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x68(%rbp)
mov    -0x48(%rbp),%rax
mov    -0x18(%rbp),%ecx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x6c(%rbp)
mov    -0x58(%rbp),%rax
mov    -0x18(%rbp),%ecx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x7c(%rbp)
mov    -0x40(%rbp),%rax
mov    -0x14(%rbp),%ecx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x60(%rbp)
mov    -0x58(%rbp),%rax
mov    -0x14(%rbp),%ecx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x78(%rbp)
mov    -0x40(%rbp),%rax
mov    -0x18(%rbp),%ecx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x98(%rbp),%xmm0
ff
mov    -0x58(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x80(%rbp),%xmm0
mov    -0x40(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x9c(%rbp),%xmm0
ff
mov    -0x58(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0x84(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0x88(%rbp),%xmm0
ff
mov    -0x48(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x90(%rbp),%xmm0
ff
mov    -0x50(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x8c(%rbp),%xmm0
ff
mov    -0x48(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0x94(%rbp),%xmm0
ff
mov    -0x50(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0x70(%rbp),%xmm0
addss  -0x7c(%rbp),%xmm0
movss  %xmm0,-0x98(%rbp)
ff
movss  -0x74(%rbp),%xmm0
subss  -0x78(%rbp),%xmm0
movss  %xmm0,-0x9c(%rbp)
ff
movss  -0x70(%rbp),%xmm0
subss  -0x7c(%rbp),%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x74(%rbp),%xmm0
addss  -0x78(%rbp),%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x60(%rbp),%xmm0
subss  -0x6c(%rbp),%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x64(%rbp),%xmm0
addss  -0x68(%rbp),%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x60(%rbp),%xmm0
addss  -0x6c(%rbp),%xmm0
movss  %xmm0,-0xa0(%rbp)
ff
movss  -0x64(%rbp),%xmm0
subss  -0x68(%rbp),%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa0(%rbp),%xmm0
ff
movss  -0x98(%rbp),%xmm1
ff
movss  -0x5c(%rbp),%xmm2
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0x9c(%rbp),%xmm0
ff
movss  -0x5c(%rbp),%xmm2
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
movss  -0x98(%rbp),%xmm1
ff
movss  -0x5c(%rbp),%xmm2
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0x9c(%rbp),%xmm0
ff
movss  -0x5c(%rbp),%xmm2
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0xa0(%rbp),%xmm0
ff
movss  -0x88(%rbp),%xmm1
ff
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
addss  %xmm0,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x98(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
movss  -0x8c(%rbp),%xmm1
ff
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
addss  %xmm0,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x9c(%rbp)
ff
movss  -0x80(%rbp),%xmm0
movss  -0x70(%rbp),%xmm1
movss  -0x5c(%rbp),%xmm2
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0x74(%rbp),%xmm0
movss  -0x5c(%rbp),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
movss  -0x70(%rbp),%xmm1
movss  -0x5c(%rbp),%xmm2
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0x74(%rbp),%xmm0
movss  -0x5c(%rbp),%xmm2
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x80(%rbp),%xmm0
movss  -0x90(%rbp),%xmm1
ff
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
addss  %xmm0,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x84(%rbp),%xmm0
ff
movss  -0x94(%rbp),%xmm1
ff
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
addss  %xmm0,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x90(%rbp),%xmm0
ff
mov    -0x50(%rbp),%rax
mov    -0x14(%rbp),%ecx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x88(%rbp),%xmm0
ff
mov    -0x48(%rbp),%rax
mov    -0x14(%rbp),%ecx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x94(%rbp),%xmm0
ff
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x8c(%rbp),%xmm0
ff
mov    -0x48(%rbp),%rax
mov    -0x18(%rbp),%ecx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x98(%rbp),%xmm0
ff
mov    -0x58(%rbp),%rax
mov    -0x14(%rbp),%ecx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x80(%rbp),%xmm0
mov    -0x40(%rbp),%rax
mov    -0x14(%rbp),%ecx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x9c(%rbp),%xmm0
ff
mov    -0x58(%rbp),%rax
mov    -0x18(%rbp),%ecx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x84(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
mov    -0x18(%rbp),%ecx
movss  %xmm0,(%rax,%rcx,4)
add    $0x28,%rsp
pop    %rbp
ret

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

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