void xpose(float *indata, long iRsiz, float *outdata, long oRsiz, long Nrows,
           long Ncols) {
  float *irow;
  float *ocol;
  float *idata;
  float *odata;
  long RowCnt;
  long ColCnt;
  float T0;
  float T1;
  float T2;
  float T3;
  float T4;
  float T5;
  float T6;
  float T7;
  const long inRsizd1 = iRsiz;
  const long inRsizd2 = 2 * iRsiz;
  const long inRsizd3 = inRsizd2 + iRsiz;
  const long inRsizd4 = 4 * iRsiz;
  const long inRsizd5 = inRsizd3 + inRsizd2;
  const long inRsizd6 = inRsizd4 + inRsizd2;
  const long inRsizd7 = inRsizd4 + inRsizd3;
  const long inRsizd8 = 8 * iRsiz;
  ocol = outdata;
  irow = indata;
  for (RowCnt = Nrows / 8; RowCnt > 0; RowCnt--) {
    idata = irow;
    odata = ocol;
    for (ColCnt = Ncols; ColCnt > 0; ColCnt--) {
      T0 = *idata;
      T1 = *(idata + inRsizd1);
      T2 = *(idata + inRsizd2);
      T3 = *(idata + inRsizd3);
      T4 = *(idata + inRsizd4);
      T5 = *(idata + inRsizd5);
      T6 = *(idata + inRsizd6);
      T7 = *(idata + inRsizd7);
      *odata = T0;
      *(odata + 1) = T1;
      *(odata + 2) = T2;
      *(odata + 3) = T3;
      *(odata + 4) = T4;
      *(odata + 5) = T5;
      *(odata + 6) = T6;
      *(odata + 7) = T7;
      idata++;
      odata += oRsiz;
    }
    irow += inRsizd8;
    ocol += 8;
  }
  if (Nrows % 8 != 0) {
    for (ColCnt = Ncols; ColCnt > 0; ColCnt--) {
      idata = irow++;
      odata = ocol;
      ocol += oRsiz;
      for (RowCnt = Nrows % 8; RowCnt > 0; RowCnt--) {
        T0 = *idata;
        *odata++ = T0;
        idata += iRsiz;
      }
    }
  }
}


x86 assembly (clang, -O0):
<xpose>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x88(%rbp)
mov    -0x10(%rbp),%rax
shl    $0x1,%rax
mov    %rax,-0x90(%rbp)
mov    -0x90(%rbp),%rax
add    -0x10(%rbp),%rax
mov    %rax,-0x98(%rbp)
mov    -0x10(%rbp),%rax
shl    $0x2,%rax
mov    %rax,-0xa0(%rbp)
mov    -0x98(%rbp),%rax
add    -0x90(%rbp),%rax
mov    %rax,-0xa8(%rbp)
mov    -0xa0(%rbp),%rax
add    -0x90(%rbp),%rax
mov    %rax,-0xb0(%rbp)
mov    -0xa0(%rbp),%rax
add    -0x98(%rbp),%rax
mov    %rax,-0xb8(%rbp)
mov    -0x10(%rbp),%rax
shl    $0x3,%rax
mov    %rax,-0xc0(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x28(%rbp),%rax
mov    $0x8,%ecx
cqto
idiv   %rcx
mov    %rax,-0x58(%rbp)
cmpq   $0x0,-0x58(%rbp)
jle    1365 <xpose+0x265>
mov    -0x38(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x30(%rbp),%rax
mov    %rax,-0x60(%rbp)
cmpq   $0x0,-0x60(%rbp)
jle    1335 <xpose+0x235>
mov    -0x48(%rbp),%rax
movss  (%rax),%xmm0
movss  %xmm0,-0x64(%rbp)
mov    -0x48(%rbp),%rax
mov    -0x88(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x68(%rbp)
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x6c(%rbp)
mov    -0x48(%rbp),%rax
mov    -0x98(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x70(%rbp)
mov    -0x48(%rbp),%rax
mov    -0xa0(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x74(%rbp)
mov    -0x48(%rbp),%rax
mov    -0xa8(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x78(%rbp)
mov    -0x48(%rbp),%rax
mov    -0xb0(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x7c(%rbp)
mov    -0x48(%rbp),%rax
mov    -0xb8(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x64(%rbp),%xmm0
mov    -0x50(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x68(%rbp),%xmm0
mov    -0x50(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0x6c(%rbp),%xmm0
mov    -0x50(%rbp),%rax
movss  %xmm0,0x8(%rax)
movss  -0x70(%rbp),%xmm0
mov    -0x50(%rbp),%rax
movss  %xmm0,0xc(%rax)
movss  -0x74(%rbp),%xmm0
mov    -0x50(%rbp),%rax
movss  %xmm0,0x10(%rax)
movss  -0x78(%rbp),%xmm0
mov    -0x50(%rbp),%rax
movss  %xmm0,0x14(%rax)
movss  -0x7c(%rbp),%xmm0
mov    -0x50(%rbp),%rax
movss  %xmm0,0x18(%rax)
movss  -0x80(%rbp),%xmm0
mov    -0x50(%rbp),%rax
movss  %xmm0,0x1c(%rax)
mov    -0x48(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x48(%rbp)
mov    -0x20(%rbp),%rax
shl    $0x2,%rax
add    -0x50(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x60(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x60(%rbp)
jmp    11ee <xpose+0xee>
mov    -0xc0(%rbp),%rax
shl    $0x2,%rax
add    -0x38(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x40(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x40(%rbp)
mov    -0x58(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x58(%rbp)
jmp    11cb <xpose+0xcb>
mov    -0x28(%rbp),%rax
mov    $0x8,%ecx
cqto
idiv   %rcx
cmp    $0x0,%rdx
je     1439 <xpose+0x339>
mov    -0x30(%rbp),%rax
mov    %rax,-0x60(%rbp)
cmpq   $0x0,-0x60(%rbp)
jle    1434 <xpose+0x334>
mov    -0x38(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x38(%rbp)
mov    %rax,-0x48(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x20(%rbp),%rax
shl    $0x2,%rax
add    -0x40(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x28(%rbp),%rax
mov    $0x8,%ecx
cqto
idiv   %rcx
mov    %rdx,-0x58(%rbp)
cmpq   $0x0,-0x58(%rbp)
jle    141e <xpose+0x31e>
mov    -0x48(%rbp),%rax
movss  (%rax),%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x64(%rbp),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x50(%rbp)
movss  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
shl    $0x2,%rax
add    -0x48(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x58(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x58(%rbp)
jmp    13cd <xpose+0x2cd>
jmp    1423 <xpose+0x323>
mov    -0x60(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x60(%rbp)
jmp    1385 <xpose+0x285>
jmp    1439 <xpose+0x339>
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<xpose>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
lea    0x0(,%rsi,4),%r13
cmp    $0x8,%r8
mov    %rcx,-0x10(%rsp)
jl     11ff <xpose+0xff>
lea    0x0(,%rsi,8),%r10
mov    %r8,%r15
shr    $0x3,%r15
lea    0x1c(%rdx),%r11
lea    0x0(,%rcx,4),%r12
lea    0x1(%r9),%rax
mov    %rax,-0x8(%rsp)
jmp    116d <xpose+0x6d>
nopw   0x0(%rax,%rax,1)
lea    (%rdi,%r10,4),%rdi
add    $0x20,%rdx
lea    -0x1(%r15),%rax
add    $0x20,%r11
cmp    $0x1,%r15
mov    %rax,%r15
jle    11ff <xpose+0xff>
test   %r9,%r9
jle    1150 <xpose+0x50>
mov    -0x8(%rsp),%rbx
mov    %r11,%rax
mov    %rdi,%rbp
nopl   (%rax)
movss  0x0(%rbp),%xmm0
mov    %rbp,%r14
add    %r13,%r14
movss  0x0(%rbp,%rsi,4),%xmm1
add    %r13,%r14
movss  0x0(%rbp,%rsi,8),%xmm2
lea    (%r14,%r13,1),%rcx
movss  (%r14,%rsi,4),%xmm3
add    %r13,%rcx
movss  (%r14,%rsi,8),%xmm4
movss  (%rcx,%rsi,4),%xmm5
add    %r13,%rcx
movss  (%rcx,%rsi,4),%xmm6
add    %r13,%rcx
movss  (%rcx,%rsi,4),%xmm7
movss  %xmm0,-0x1c(%rax)
movss  %xmm1,-0x18(%rax)
movss  %xmm2,-0x14(%rax)
movss  %xmm3,-0x10(%rax)
movss  %xmm4,-0xc(%rax)
movss  %xmm5,-0x8(%rax)
movss  %xmm6,-0x4(%rax)
movss  %xmm7,(%rax)
add    $0x4,%rbp
add    %r12,%rax
add    $0xffffffffffffffff,%rbx
cmp    $0x1,%rbx
ja     1180 <xpose+0x80>
jmp    1150 <xpose+0x50>
lea    0x7(%r8),%rax
test   %r8,%r8
cmovns %r8,%rax
and    $0xfffffffffffffff8,%rax
sub    %rax,%r8
mov    -0x10(%rsp),%rcx
je     133a <xpose+0x23a>
test   %r9,%r9
jle    133a <xpose+0x23a>
lea    -0x1(%r8),%r10
mov    %r8d,%r11d
and    $0x7,%r11d
jmp    1259 <xpose+0x159>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
add    $0x4,%rdi
lea    (%rdx,%rcx,4),%rdx
lea    -0x1(%r9),%rax
cmp    $0x1,%r9
mov    %rax,%r9
jle    133a <xpose+0x23a>
test   %r8,%r8
jle    1240 <xpose+0x140>
mov    %rdi,%rsi
mov    %rdx,%rbx
mov    %r8,%r14
test   %r11,%r11
je     129e <xpose+0x19e>
mov    %rdi,%rsi
mov    %rdx,%rbx
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movss  (%rsi),%xmm0
movss  %xmm0,(%rbx)
add    $0x4,%rbx
add    $0x1,%rax
add    %r13,%rsi
cmp    %rax,%r11
jne    1280 <xpose+0x180>
mov    %r8,%r14
sub    %rax,%r14
cmp    $0x7,%r10
jb     1240 <xpose+0x140>
add    $0xffffffffffffffff,%r14
nopl   0x0(%rax,%rax,1)
movss  (%rsi),%xmm0
movss  %xmm0,(%rbx)
movss  (%rsi,%r13,1),%xmm0
add    %r13,%rsi
movss  %xmm0,0x4(%rbx)
movss  0x0(%r13,%rsi,1),%xmm0
add    %r13,%rsi
movss  %xmm0,0x8(%rbx)
movss  0x0(%r13,%rsi,1),%xmm0
add    %r13,%rsi
movss  %xmm0,0xc(%rbx)
movss  0x0(%r13,%rsi,1),%xmm0
add    %r13,%rsi
movss  %xmm0,0x10(%rbx)
movss  0x0(%r13,%rsi,1),%xmm0
add    %r13,%rsi
movss  %xmm0,0x14(%rbx)
movss  0x0(%r13,%rsi,1),%xmm0
add    %r13,%rsi
movss  %xmm0,0x18(%rbx)
movss  0x0(%r13,%rsi,1),%xmm0
add    %r13,%rsi
movss  %xmm0,0x1c(%rbx)
add    $0xfffffffffffffff8,%r14
add    %r13,%rsi
add    $0x20,%rbx
cmp    $0xfffffffffffffffe,%r14
jb     12b0 <xpose+0x1b0>
jmp    1240 <xpose+0x140>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @xpose(float* %0, i64 %1, float* %2, i64 %3, i64 %4, i64 %5) {
%7 = alloca float*
%8 = alloca i64
%9 = alloca float*
%10 = alloca i64
%11 = alloca i64
%12 = alloca i64
%13 = alloca float*
%14 = alloca float*
%15 = alloca float*
%16 = alloca float*
%17 = alloca i64
%18 = alloca i64
%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 i64
%28 = alloca i64
%29 = alloca i64
%30 = alloca i64
%31 = alloca i64
%32 = alloca i64
%33 = alloca i64
%34 = alloca i64
store float* %0, float** %7
store i64 %1, i64* %8
store float* %2, float** %9
store i64 %3, i64* %10
store i64 %4, i64* %11
store i64 %5, i64* %12
%35 = load i64, i64* %8
store i64 %35, i64* %27
%36 = load i64, i64* %8
%37 = mul nsw i64 2, %36
store i64 %37, i64* %28
%38 = load i64, i64* %28
%39 = load i64, i64* %8
%40 = add nsw i64 %38, %39
store i64 %40, i64* %29
%41 = load i64, i64* %8
%42 = mul nsw i64 4, %41
store i64 %42, i64* %30
%43 = load i64, i64* %29
%44 = load i64, i64* %28
%45 = add nsw i64 %43, %44
store i64 %45, i64* %31
%46 = load i64, i64* %30
%47 = load i64, i64* %28
%48 = add nsw i64 %46, %47
store i64 %48, i64* %32
%49 = load i64, i64* %30
%50 = load i64, i64* %29
%51 = add nsw i64 %49, %50
store i64 %51, i64* %33
%52 = load i64, i64* %8
%53 = mul nsw i64 8, %52
store i64 %53, i64* %34
%54 = load float*, float** %9
store float* %54, float** %14
%55 = load float*, float** %7
store float* %55, float** %13
%56 = load i64, i64* %11
%57 = sdiv i64 %56, 8
store i64 %57, i64* %17
br label %58
58: ; preds = %136, %6
%59 = load i64, i64* %17
%60 = icmp sgt i64 %59, 0
br i1 %60, label %61, label %139
61: ; preds = %58
%62 = load float*, float** %13
store float* %62, float** %15
%63 = load float*, float** %14
store float* %63, float** %16
%64 = load i64, i64* %12
store i64 %64, i64* %18
br label %65
65: ; preds = %127, %61
%66 = load i64, i64* %18
%67 = icmp sgt i64 %66, 0
br i1 %67, label %68, label %130
68: ; preds = %65
%69 = load float*, float** %15
%70 = load float, float* %69
store float %70, float* %19
%71 = load float*, float** %15
%72 = load i64, i64* %27
%73 = getelementptr inbounds float, float* %71, i64 %72
%74 = load float, float* %73
store float %74, float* %20
%75 = load float*, float** %15
%76 = load i64, i64* %28
%77 = getelementptr inbounds float, float* %75, i64 %76
%78 = load float, float* %77
store float %78, float* %21
%79 = load float*, float** %15
%80 = load i64, i64* %29
%81 = getelementptr inbounds float, float* %79, i64 %80
%82 = load float, float* %81
store float %82, float* %22
%83 = load float*, float** %15
%84 = load i64, i64* %30
%85 = getelementptr inbounds float, float* %83, i64 %84
%86 = load float, float* %85
store float %86, float* %23
%87 = load float*, float** %15
%88 = load i64, i64* %31
%89 = getelementptr inbounds float, float* %87, i64 %88
%90 = load float, float* %89
store float %90, float* %24
%91 = load float*, float** %15
%92 = load i64, i64* %32
%93 = getelementptr inbounds float, float* %91, i64 %92
%94 = load float, float* %93
store float %94, float* %25
%95 = load float*, float** %15
%96 = load i64, i64* %33
%97 = getelementptr inbounds float, float* %95, i64 %96
%98 = load float, float* %97
store float %98, float* %26
%99 = load float, float* %19
%100 = load float*, float** %16
store float %99, float* %100
%101 = load float, float* %20
%102 = load float*, float** %16
%103 = getelementptr inbounds float, float* %102, i64 1
store float %101, float* %103
%104 = load float, float* %21
%105 = load float*, float** %16
%106 = getelementptr inbounds float, float* %105, i64 2
store float %104, float* %106
%107 = load float, float* %22
%108 = load float*, float** %16
%109 = getelementptr inbounds float, float* %108, i64 3
store float %107, float* %109
%110 = load float, float* %23
%111 = load float*, float** %16
%112 = getelementptr inbounds float, float* %111, i64 4
store float %110, float* %112
%113 = load float, float* %24
%114 = load float*, float** %16
%115 = getelementptr inbounds float, float* %114, i64 5
store float %113, float* %115
%116 = load float, float* %25
%117 = load float*, float** %16
%118 = getelementptr inbounds float, float* %117, i64 6
store float %116, float* %118
%119 = load float, float* %26
%120 = load float*, float** %16
%121 = getelementptr inbounds float, float* %120, i64 7
store float %119, float* %121
%122 = load float*, float** %15
%123 = getelementptr inbounds float, float* %122, i32 1
store float* %123, float** %15
%124 = load i64, i64* %10
%125 = load float*, float** %16
%126 = getelementptr inbounds float, float* %125, i64 %124
store float* %126, float** %16
br label %127
127: ; preds = %68
%128 = load i64, i64* %18
%129 = add nsw i64 %128, -1
store i64 %129, i64* %18
br label %65
130: ; preds = %65
%131 = load i64, i64* %34
%132 = load float*, float** %13
%133 = getelementptr inbounds float, float* %132, i64 %131
store float* %133, float** %13
%134 = load float*, float** %14
%135 = getelementptr inbounds float, float* %134, i64 8
store float* %135, float** %14
br label %136
136: ; preds = %130
%137 = load i64, i64* %17
%138 = add nsw i64 %137, -1
store i64 %138, i64* %17
br label %58
139: ; preds = %58
%140 = load i64, i64* %11
%141 = srem i64 %140, 8
%142 = icmp ne i64 %141, 0
br i1 %142, label %143, label %177
143: ; preds = %139
%144 = load i64, i64* %12
store i64 %144, i64* %18
br label %145
145: ; preds = %173, %143
%146 = load i64, i64* %18
%147 = icmp sgt i64 %146, 0
br i1 %147, label %148, label %176
148: ; preds = %145
%149 = load float*, float** %13
%150 = getelementptr inbounds float, float* %149, i32 1
store float* %150, float** %13
store float* %149, float** %15
%151 = load float*, float** %14
store float* %151, float** %16
%152 = load i64, i64* %10
%153 = load float*, float** %14
%154 = getelementptr inbounds float, float* %153, i64 %152
store float* %154, float** %14
%155 = load i64, i64* %11
%156 = srem i64 %155, 8
store i64 %156, i64* %17
br label %157
157: ; preds = %169, %148
%158 = load i64, i64* %17
%159 = icmp sgt i64 %158, 0
br i1 %159, label %160, label %172
160: ; preds = %157
%161 = load float*, float** %15
%162 = load float, float* %161
store float %162, float* %19
%163 = load float, float* %19
%164 = load float*, float** %16
%165 = getelementptr inbounds float, float* %164, i32 1
store float* %165, float** %16
store float %163, float* %164
%166 = load i64, i64* %8
%167 = load float*, float** %15
%168 = getelementptr inbounds float, float* %167, i64 %166
store float* %168, float** %15
br label %169
169: ; preds = %160
%170 = load i64, i64* %17
%171 = add nsw i64 %170, -1
store i64 %171, i64* %17
br label %157
172: ; preds = %157
br label %173
173: ; preds = %172
%174 = load i64, i64* %18
%175 = add nsw i64 %174, -1
store i64 %175, i64* %18
br label %145
176: ; preds = %145
br label %177
177: ; preds = %176, %139
ret void
}

LLVM IR (-O2):
define void @xpose(float* nocapture %0, i64 %1, float* nocapture writeonly %2, i64 %3, i64 %4, i64 %5) {
%7 = shl nsw i64 %1, 1
%8 = mul nsw i64 %1, 3
%9 = shl nsw i64 %1, 2
%10 = mul nsw i64 %1, 5
%11 = mul nsw i64 %1, 6
%12 = mul nsw i64 %1, 7
%13 = shl nsw i64 %1, 3
%14 = icmp sgt i64 %4, 7
br i1 %14, label %15, label %57
15: ; preds = %6
%16 = lshr i64 %4, 3
%17 = icmp sgt i64 %5, 0
br label %18
18: ; preds = %15, %52
%19 = phi float* [ %0, %15 ], [ %53, %52 ]
%20 = phi float* [ %2, %15 ], [ %54, %52 ]
%21 = phi i64 [ %16, %15 ], [ %55, %52 ]
br i1 %17, label %22, label %52
22: ; preds = %18, %22
%23 = phi float* [ %48, %22 ], [ %19, %18 ]
%24 = phi float* [ %49, %22 ], [ %20, %18 ]
%25 = phi i64 [ %50, %22 ], [ %5, %18 ]
%26 = load float, float* %23
%27 = getelementptr inbounds float, float* %23, i64 %1
%28 = load float, float* %27
%29 = getelementptr inbounds float, float* %23, i64 %7
%30 = load float, float* %29
%31 = getelementptr inbounds float, float* %23, i64 %8
%32 = load float, float* %31
%33 = getelementptr inbounds float, float* %23, i64 %9
%34 = load float, float* %33
%35 = getelementptr inbounds float, float* %23, i64 %10
%36 = load float, float* %35
%37 = getelementptr inbounds float, float* %23, i64 %11
%38 = load float, float* %37
%39 = getelementptr inbounds float, float* %23, i64 %12
%40 = load float, float* %39
store float %26, float* %24
%41 = getelementptr inbounds float, float* %24, i64 1
store float %28, float* %41
%42 = getelementptr inbounds float, float* %24, i64 2
store float %30, float* %42
%43 = getelementptr inbounds float, float* %24, i64 3
store float %32, float* %43
%44 = getelementptr inbounds float, float* %24, i64 4
store float %34, float* %44
%45 = getelementptr inbounds float, float* %24, i64 5
store float %36, float* %45
%46 = getelementptr inbounds float, float* %24, i64 6
store float %38, float* %46
%47 = getelementptr inbounds float, float* %24, i64 7
store float %40, float* %47
%48 = getelementptr inbounds float, float* %23, i64 1
%49 = getelementptr inbounds float, float* %24, i64 %3
%50 = add nsw i64 %25, -1
%51 = icmp ugt i64 %25, 1
br i1 %51, label %22, label %52
52: ; preds = %22, %18
%53 = getelementptr inbounds float, float* %19, i64 %13
%54 = getelementptr inbounds float, float* %20, i64 8
%55 = add nsw i64 %21, -1
%56 = icmp sgt i64 %21, 1
br i1 %56, label %18, label %57
57: ; preds = %52, %6
%58 = phi float* [ %2, %6 ], [ %54, %52 ]
%59 = phi float* [ %0, %6 ], [ %53, %52 ]
%60 = srem i64 %4, 8
%61 = icmp ne i64 %60, 0
%62 = icmp sgt i64 %5, 0
%63 = and i1 %61, %62
br i1 %63, label %64, label %126
64: ; preds = %57
%65 = icmp sgt i64 %60, 0
%66 = add nsw i64 %60, -1
%67 = and i64 %60, 7
%68 = icmp eq i64 %67, 0
%69 = icmp ult i64 %66, 7
br label %70
70: ; preds = %64, %123
%71 = phi float* [ %59, %64 ], [ %74, %123 ]
%72 = phi float* [ %58, %64 ], [ %75, %123 ]
%73 = phi i64 [ %5, %64 ], [ %124, %123 ]
%74 = getelementptr inbounds float, float* %71, i64 1
%75 = getelementptr inbounds float, float* %72, i64 %3
br i1 %65, label %76, label %123
76: ; preds = %70
br i1 %68, label %88, label %77
77: ; preds = %76, %77
%78 = phi float* [ %84, %77 ], [ %71, %76 ]
%79 = phi float* [ %83, %77 ], [ %72, %76 ]
%80 = phi i64 [ %85, %77 ], [ %60, %76 ]
%81 = phi i64 [ %86, %77 ], [ 0, %76 ]
%82 = load float, float* %78
%83 = getelementptr inbounds float, float* %79, i64 1
store float %82, float* %79
%84 = getelementptr inbounds float, float* %78, i64 %1
%85 = add nsw i64 %80, -1
%86 = add i64 %81, 1
%87 = icmp eq i64 %86, %67
br i1 %87, label %88, label %77
88: ; preds = %77, %76
%89 = phi float* [ %71, %76 ], [ %84, %77 ]
%90 = phi float* [ %72, %76 ], [ %83, %77 ]
%91 = phi i64 [ %60, %76 ], [ %85, %77 ]
br i1 %69, label %123, label %92
92: ; preds = %88, %92
%93 = phi float* [ %119, %92 ], [ %89, %88 ]
%94 = phi float* [ %118, %92 ], [ %90, %88 ]
%95 = phi i64 [ %120, %92 ], [ %91, %88 ]
%96 = load float, float* %93
%97 = getelementptr inbounds float, float* %94, i64 1
store float %96, float* %94
%98 = getelementptr inbounds float, float* %93, i64 %1
%99 = load float, float* %98
%100 = getelementptr inbounds float, float* %94, i64 2
store float %99, float* %97
%101 = getelementptr inbounds float, float* %98, i64 %1
%102 = load float, float* %101
%103 = getelementptr inbounds float, float* %94, i64 3
store float %102, float* %100
%104 = getelementptr inbounds float, float* %101, i64 %1
%105 = load float, float* %104
%106 = getelementptr inbounds float, float* %94, i64 4
store float %105, float* %103
%107 = getelementptr inbounds float, float* %104, i64 %1
%108 = load float, float* %107
%109 = getelementptr inbounds float, float* %94, i64 5
store float %108, float* %106
%110 = getelementptr inbounds float, float* %107, i64 %1
%111 = load float, float* %110
%112 = getelementptr inbounds float, float* %94, i64 6
store float %111, float* %109
%113 = getelementptr inbounds float, float* %110, i64 %1
%114 = load float, float* %113
%115 = getelementptr inbounds float, float* %94, i64 7
store float %114, float* %112
%116 = getelementptr inbounds float, float* %113, i64 %1
%117 = load float, float* %116
%118 = getelementptr inbounds float, float* %94, i64 8
store float %117, float* %115
%119 = getelementptr inbounds float, float* %116, i64 %1
%120 = add nsw i64 %95, -8
%121 = add i64 %95, -9
%122 = icmp ult i64 %121, -2
br i1 %122, label %92, label %123
123: ; preds = %88, %92, %70
%124 = add nsw i64 %73, -1
%125 = icmp sgt i64 %73, 1
br i1 %125, label %70, label %126
126: ; preds = %123, %57
ret void
}