void s_cvt_tran_mat2pmat(int row, int col, int offset, int bs_dummy, float *A,
                         int lda, float *pA, int sda) {
  const int bs = 4;
  int i, ii, j, row0, row1, row2;
  row0 = (bs - offset % bs) % bs;
  if (row0 > col)
    row0 = col;
  row1 = col - row0;
  ii = 0;
  if (row0 > 0) {
    for (j = 0; j < row; j++) {
      for (i = 0; i < row0; i++) {
        pA[i + j * bs + ii * sda] = A[j + (i + ii) * lda];
      }
    }
    A += row0 * lda;
    pA += row0 + bs * (sda - 1);
  }
  ii = 0;
  for (; ii < row1 - 3; ii += bs) {
    j = 0;
    for (; j < row - 3; j += 4) {
      pA[0 + (j + 0) * bs + ii * sda] = A[j + 0 + (ii + 0) * lda];
      pA[1 + (j + 0) * bs + ii * sda] = A[j + 0 + (ii + 1) * lda];
      pA[2 + (j + 0) * bs + ii * sda] = A[j + 0 + (ii + 2) * lda];
      pA[3 + (j + 0) * bs + ii * sda] = A[j + 0 + (ii + 3) * lda];
      pA[0 + (j + 1) * bs + ii * sda] = A[j + 1 + (ii + 0) * lda];
      pA[1 + (j + 1) * bs + ii * sda] = A[j + 1 + (ii + 1) * lda];
      pA[2 + (j + 1) * bs + ii * sda] = A[j + 1 + (ii + 2) * lda];
      pA[3 + (j + 1) * bs + ii * sda] = A[j + 1 + (ii + 3) * lda];
      pA[0 + (j + 2) * bs + ii * sda] = A[j + 2 + (ii + 0) * lda];
      pA[1 + (j + 2) * bs + ii * sda] = A[j + 2 + (ii + 1) * lda];
      pA[2 + (j + 2) * bs + ii * sda] = A[j + 2 + (ii + 2) * lda];
      pA[3 + (j + 2) * bs + ii * sda] = A[j + 2 + (ii + 3) * lda];
      pA[0 + (j + 3) * bs + ii * sda] = A[j + 3 + (ii + 0) * lda];
      pA[1 + (j + 3) * bs + ii * sda] = A[j + 3 + (ii + 1) * lda];
      pA[2 + (j + 3) * bs + ii * sda] = A[j + 3 + (ii + 2) * lda];
      pA[3 + (j + 3) * bs + ii * sda] = A[j + 3 + (ii + 3) * lda];
    }
    for (; j < row; j++) {
      pA[0 + (j + 0) * bs + ii * sda] = A[j + 0 + (ii + 0) * lda];
      pA[1 + (j + 0) * bs + ii * sda] = A[j + 0 + (ii + 1) * lda];
      pA[2 + (j + 0) * bs + ii * sda] = A[j + 0 + (ii + 2) * lda];
      pA[3 + (j + 0) * bs + ii * sda] = A[j + 0 + (ii + 3) * lda];
    }
  }
  if (ii < row1) {
    row2 = row1 - ii;
    if (bs < row2)
      row2 = bs;
    for (j = 0; j < row; j++) {
      for (i = 0; i < row2; i++) {
        pA[i + j * bs + ii * sda] = A[j + (i + ii) * lda];
      }
    }
  }
}


x86 assembly (clang, -O0):
<s_cvt_tran_mat2pmat>:
push   %rbp
mov    %rsp,%rbp
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%rax
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %ecx,-0x10(%rbp)
mov    %r8,-0x18(%rbp)
mov    %r9d,-0x1c(%rbp)
movl   $0x4,-0x20(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    $0x4,%eax
sub    %edx,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %edx,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x8(%rbp),%eax
jle    1155 <s_cvt_tran_mat2pmat+0x55>
mov    -0x8(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x8(%rbp),%eax
sub    -0x30(%rbp),%eax
mov    %eax,-0x34(%rbp)
movl   $0x0,-0x28(%rbp)
cmpl   $0x0,-0x30(%rbp)
jle    122a <s_cvt_tran_mat2pmat+0x12a>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    11f1 <s_cvt_tran_mat2pmat+0xf1>
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x30(%rbp),%eax
jge    11de <s_cvt_tran_mat2pmat+0xde>
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
mov    -0x24(%rbp),%edx
add    -0x28(%rbp),%edx
imul   -0x1c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
mov    -0x2c(%rbp),%edx
shl    $0x2,%edx
add    %edx,%ecx
mov    -0x28(%rbp),%edx
imul   0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1189 <s_cvt_tran_mat2pmat+0x89>
jmp    11e3 <s_cvt_tran_mat2pmat+0xe3>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1176 <s_cvt_tran_mat2pmat+0x76>
mov    -0x30(%rbp),%ecx
imul   -0x1c(%rbp),%ecx
mov    -0x18(%rbp),%rax
movslq %ecx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x18(%rbp)
mov    -0x30(%rbp),%ecx
mov    0x18(%rbp),%eax
sub    $0x1,%eax
shl    $0x2,%eax
add    %eax,%ecx
mov    0x10(%rbp),%rax
movslq %ecx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,0x10(%rbp)
movl   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%eax
mov    -0x34(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jge    1786 <s_cvt_tran_mat2pmat+0x686>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jge    1658 <s_cvt_tran_mat2pmat+0x558>
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x0,%ecx
mov    -0x28(%rbp),%edx
add    $0x0,%edx
imul   -0x1c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x0,%ecx
shl    $0x2,%ecx
add    $0x0,%ecx
mov    -0x28(%rbp),%edx
imul   0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x0,%ecx
mov    -0x28(%rbp),%edx
add    $0x1,%edx
imul   -0x1c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x0,%ecx
shl    $0x2,%ecx
add    $0x1,%ecx
mov    -0x28(%rbp),%edx
imul   0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x0,%ecx
mov    -0x28(%rbp),%edx
add    $0x2,%edx
imul   -0x1c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x0,%ecx
shl    $0x2,%ecx
add    $0x2,%ecx
mov    -0x28(%rbp),%edx
imul   0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x0,%ecx
mov    -0x28(%rbp),%edx
add    $0x3,%edx
imul   -0x1c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x0,%ecx
shl    $0x2,%ecx
add    $0x3,%ecx
mov    -0x28(%rbp),%edx
imul   0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
mov    -0x28(%rbp),%edx
add    $0x0,%edx
imul   -0x1c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
shl    $0x2,%ecx
add    $0x0,%ecx
mov    -0x28(%rbp),%edx
imul   0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
mov    -0x28(%rbp),%edx
add    $0x1,%edx
imul   -0x1c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
shl    $0x2,%ecx
add    $0x1,%ecx
mov    -0x28(%rbp),%edx
imul   0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
mov    -0x28(%rbp),%edx
add    $0x2,%edx
imul   -0x1c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
shl    $0x2,%ecx
add    $0x2,%ecx
mov    -0x28(%rbp),%edx
imul   0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
mov    -0x28(%rbp),%edx
add    $0x3,%edx
imul   -0x1c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
shl    $0x2,%ecx
add    $0x3,%ecx
mov    -0x28(%rbp),%edx
imul   0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x2,%ecx
mov    -0x28(%rbp),%edx
add    $0x0,%edx
imul   -0x1c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x2,%ecx
shl    $0x2,%ecx
add    $0x0,%ecx
mov    -0x28(%rbp),%edx
imul   0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x2,%ecx
mov    -0x28(%rbp),%edx
add    $0x1,%edx
imul   -0x1c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x2,%ecx
shl    $0x2,%ecx
add    $0x1,%ecx
mov    -0x28(%rbp),%edx
imul   0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x2,%ecx
mov    -0x28(%rbp),%edx
add    $0x2,%edx
imul   -0x1c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x2,%ecx
shl    $0x2,%ecx
add    $0x2,%ecx
mov    -0x28(%rbp),%edx
imul   0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x2,%ecx
mov    -0x28(%rbp),%edx
add    $0x3,%edx
imul   -0x1c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x2,%ecx
shl    $0x2,%ecx
add    $0x3,%ecx
mov    -0x28(%rbp),%edx
imul   0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x3,%ecx
mov    -0x28(%rbp),%edx
add    $0x0,%edx
imul   -0x1c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x3,%ecx
shl    $0x2,%ecx
add    $0x0,%ecx
mov    -0x28(%rbp),%edx
imul   0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x3,%ecx
mov    -0x28(%rbp),%edx
add    $0x1,%edx
imul   -0x1c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x3,%ecx
shl    $0x2,%ecx
add    $0x1,%ecx
mov    -0x28(%rbp),%edx
imul   0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x3,%ecx
mov    -0x28(%rbp),%edx
add    $0x2,%edx
imul   -0x1c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x3,%ecx
shl    $0x2,%ecx
add    $0x2,%ecx
mov    -0x28(%rbp),%edx
imul   0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x3,%ecx
mov    -0x28(%rbp),%edx
add    $0x3,%edx
imul   -0x1c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x3,%ecx
shl    $0x2,%ecx
add    $0x3,%ecx
mov    -0x28(%rbp),%edx
imul   0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x2c(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x2c(%rbp)
jmp    1249 <s_cvt_tran_mat2pmat+0x149>
jmp    165d <s_cvt_tran_mat2pmat+0x55d>
mov    -0x2c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    1773 <s_cvt_tran_mat2pmat+0x673>
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x0,%ecx
mov    -0x28(%rbp),%edx
add    $0x0,%edx
imul   -0x1c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x0,%ecx
shl    $0x2,%ecx
add    $0x0,%ecx
mov    -0x28(%rbp),%edx
imul   0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x0,%ecx
mov    -0x28(%rbp),%edx
add    $0x1,%edx
imul   -0x1c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x0,%ecx
shl    $0x2,%ecx
add    $0x1,%ecx
mov    -0x28(%rbp),%edx
imul   0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x0,%ecx
mov    -0x28(%rbp),%edx
add    $0x2,%edx
imul   -0x1c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x0,%ecx
shl    $0x2,%ecx
add    $0x2,%ecx
mov    -0x28(%rbp),%edx
imul   0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x0,%ecx
mov    -0x28(%rbp),%edx
add    $0x3,%edx
imul   -0x1c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x0,%ecx
shl    $0x2,%ecx
add    $0x3,%ecx
mov    -0x28(%rbp),%edx
imul   0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    165d <s_cvt_tran_mat2pmat+0x55d>
jmp    1778 <s_cvt_tran_mat2pmat+0x678>
mov    -0x28(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x28(%rbp)
jmp    1231 <s_cvt_tran_mat2pmat+0x131>
mov    -0x28(%rbp),%eax
cmp    -0x34(%rbp),%eax
jge    1837 <s_cvt_tran_mat2pmat+0x737>
mov    -0x34(%rbp),%eax
sub    -0x28(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    $0x4,%eax
cmp    -0x38(%rbp),%eax
jge    17b0 <s_cvt_tran_mat2pmat+0x6b0>
movl   $0x4,-0x38(%rbp)
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    1832 <s_cvt_tran_mat2pmat+0x732>
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x38(%rbp),%eax
jge    181f <s_cvt_tran_mat2pmat+0x71f>
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
mov    -0x24(%rbp),%edx
add    -0x28(%rbp),%edx
imul   -0x1c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
mov    -0x2c(%rbp),%edx
shl    $0x2,%edx
add    %edx,%ecx
mov    -0x28(%rbp),%edx
imul   0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    17ca <s_cvt_tran_mat2pmat+0x6ca>
jmp    1824 <s_cvt_tran_mat2pmat+0x724>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    17b7 <s_cvt_tran_mat2pmat+0x6b7>
jmp    1837 <s_cvt_tran_mat2pmat+0x737>
pop    %rbp
ret

x86 assembly (clang, -O2):
<s_cvt_tran_mat2pmat>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    %r9d,-0x7c(%rsp)
mov    %r8,-0x78(%rsp)
mov    %edi,%r12d
mov    0x58(%rsp),%edi
mov    0x50(%rsp),%rcx
neg    %edx
and    $0x3,%edx
cmp    %esi,%edx
cmovg  %esi,%edx
sub    %edx,%esi
test   %edx,%edx
mov    %r12,-0x70(%rsp)
jle    1237 <s_cvt_tran_mat2pmat+0x137>
test   %r12d,%r12d
jle    120b <s_cvt_tran_mat2pmat+0x10b>
movslq -0x7c(%rsp),%r15
mov    -0x70(%rsp),%r8d
mov    %edx,%r9d
mov    %r9d,%r12d
and    $0xfffffffe,%r12d
lea    0x0(,%r15,8),%r13
mov    $0x1,%r10d
xor    %r14d,%r14d
mov    -0x78(%rsp),%r11
jmp    1191 <s_cvt_tran_mat2pmat+0x91>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
add    $0x1,%r14
add    $0x4,%r11
add    $0x4,%r10
cmp    %r8,%r14
je     120b <s_cvt_tran_mat2pmat+0x10b>
cmp    $0x1,%edx
jne    11a0 <s_cvt_tran_mat2pmat+0xa0>
xor    %ebx,%ebx
jmp    11dc <s_cvt_tran_mat2pmat+0xdc>
nopw   0x0(%rax,%rax,1)
mov    %r10,%rbp
mov    %r11,%rax
xor    %ebx,%ebx
nopl   0x0(%rax,%rax,1)
movss  (%rax),%xmm0
lea    -0x1(%rbp),%edi
and    $0xfffffffe,%edi
movss  %xmm0,(%rcx,%rdi,4)
movss  (%rax,%r15,4),%xmm0
mov    %ebp,%edi
movss  %xmm0,(%rcx,%rdi,4)
add    $0x2,%rbx
add    %r13,%rax
add    $0x2,%rbp
cmp    %rbx,%r12
jne    11b0 <s_cvt_tran_mat2pmat+0xb0>
test   $0x1,%r9b
je     1180 <s_cvt_tran_mat2pmat+0x80>
lea    0x0(,%r14,4),%rax
mov    %rbx,%rdi
imul   %r15,%rdi
add    %r14,%rdi
mov    -0x78(%rsp),%rbp
movss  0x0(%rbp,%rdi,4),%xmm0
add    %eax,%ebx
movss  %xmm0,(%rcx,%rbx,4)
jmp    1180 <s_cvt_tran_mat2pmat+0x80>
mov    %edx,%eax
imul   -0x7c(%rsp),%eax
cltq
mov    -0x78(%rsp),%rdi
lea    (%rdi,%rax,4),%rdi
mov    %rdi,-0x78(%rsp)
mov    0x58(%rsp),%edi
lea    (%rdx,%rdi,4),%eax
add    $0xfffffffc,%eax
cltq
lea    (%rcx,%rax,4),%rcx
mov    -0x70(%rsp),%r12
xor    %ebp,%ebp
cmp    $0x4,%esi
jl     1580 <s_cvt_tran_mat2pmat+0x480>
mov    %rsi,-0x40(%rsp)
lea    -0x3(%rsi),%eax
mov    %rax,(%rsp)
lea    -0x3(%r12),%eax
movslq %eax,%rdx
movslq -0x7c(%rsp),%rax
movslq %edi,%r10
mov    %r12d,%esi
mov    %rsi,-0x38(%rsp)
lea    (%rax,%rax,2),%rsi
mov    -0x78(%rsp),%r8
mov    %rsi,-0x58(%rsp)
lea    (%r8,%rsi,4),%rbx
add    $0xc,%rbx
mov    %rax,%rsi
shl    $0x4,%rsi
mov    %rsi,-0x10(%rsp)
lea    (%rax,%rax,1),%rsi
mov    %rsi,-0x60(%rsp)
lea    (%r8,%rax,8),%r9
add    $0xc,%r9
lea    0xc(%r8,%rax,4),%r14
lea    0xc(%r8),%r15
lea    0x0(,%rdi,4),%esi
mov    %rsi,-0x18(%rsp)
lea    0x30(%rcx),%rsi
mov    %r10,-0x30(%rsp)
shl    $0x4,%r10
mov    %r10,-0x20(%rsp)
mov    %rax,-0x50(%rsp)
lea    0x0(,%rax,4),%rax
mov    %rax,-0x28(%rsp)
xor    %r11d,%r11d
mov    %r8,-0x68(%rsp)
xor    %ebp,%ebp
mov    %rdx,-0x8(%rsp)
jmp    1341 <s_cvt_tran_mat2pmat+0x241>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    -0x48(%rsp),%rbp
add    $0x4,%rbp
mov    -0x10(%rsp),%rax
add    %rax,%rbx
add    %rax,%r9
add    %rax,%r14
add    %rax,%r15
add    -0x18(%rsp),%r11
add    -0x20(%rsp),%rsi
mov    -0x28(%rsp),%rdx
add    %rdx,-0x58(%rsp)
add    %rdx,-0x60(%rsp)
add    %rdx,-0x50(%rsp)
add    %rax,-0x68(%rsp)
cmp    (%rsp),%rbp
mov    -0x70(%rsp),%r12
mov    -0x8(%rsp),%rdx
jae    1577 <s_cvt_tran_mat2pmat+0x477>
mov    $0x0,%edi
cmp    $0x4,%r12d
jl     148c <s_cvt_tran_mat2pmat+0x38c>
xor    %r13d,%r13d
xor    %edi,%edi
cs nopw 0x0(%rax,%rax,1)
nop
movss  -0xc(%r15,%r13,1),%xmm0
movss  %xmm0,-0x30(%rsi,%r13,4)
movss  -0xc(%r14,%r13,1),%xmm0
lea    (%r11,%r13,1),%eax
add    $0x1,%eax
cltq
movss  %xmm0,(%rcx,%rax,4)
movss  -0xc(%r9,%r13,1),%xmm0
lea    0x2(%r11,%r13,1),%eax
cltq
movss  %xmm0,(%rcx,%rax,4)
movss  -0xc(%rbx,%r13,1),%xmm0
lea    0x3(%r11,%r13,1),%eax
cltq
movss  %xmm0,(%rcx,%rax,4)
movss  -0x8(%r15,%r13,1),%xmm0
movss  %xmm0,-0x20(%rsi,%r13,4)
movss  -0x8(%r14,%r13,1),%xmm0
lea    0x5(%r11,%r13,1),%eax
cltq
movss  %xmm0,(%rcx,%rax,4)
movss  -0x8(%r9,%r13,1),%xmm0
lea    0x6(%r11,%r13,1),%eax
cltq
movss  %xmm0,(%rcx,%rax,4)
movss  -0x8(%rbx,%r13,1),%xmm0
lea    0x7(%r11,%r13,1),%eax
cltq
movss  %xmm0,(%rcx,%rax,4)
movss  -0x4(%r15,%r13,1),%xmm0
movss  %xmm0,-0x10(%rsi,%r13,4)
movss  -0x4(%r14,%r13,1),%xmm0
lea    0x9(%r11,%r13,1),%eax
cltq
movss  %xmm0,(%rcx,%rax,4)
movss  -0x4(%r9,%r13,1),%xmm0
lea    0xa(%r11,%r13,1),%eax
cltq
movss  %xmm0,(%rcx,%rax,4)
movss  -0x4(%rbx,%r13,1),%xmm0
lea    0xb(%r11,%r13,1),%eax
cltq
movss  %xmm0,(%rcx,%rax,4)
movss  (%r15,%r13,1),%xmm0
movss  %xmm0,(%rsi,%r13,4)
movss  (%r14,%r13,1),%xmm0
lea    0xd(%r11,%r13,1),%eax
cltq
movss  %xmm0,(%rcx,%rax,4)
movss  (%r9,%r13,1),%xmm0
lea    0xe(%r11,%r13,1),%eax
cltq
movss  %xmm0,(%rcx,%rax,4)
movss  (%rbx,%r13,1),%xmm0
lea    (%r11,%r13,1),%eax
add    $0xf,%eax
cltq
movss  %xmm0,(%rcx,%rax,4)
add    $0x4,%rdi
add    $0x10,%r13
cmp    %rdx,%rdi
jl     1360 <s_cvt_tran_mat2pmat+0x260>
mov    %rbp,-0x48(%rsp)
cmp    %r12d,%edi
jge    12f0 <s_cvt_tran_mat2pmat+0x1f0>
mov    -0x48(%rsp),%rax
imul   -0x30(%rsp),%rax
mov    %rax,0x10(%rsp)
mov    %edi,%r13d
lea    0x0(,%rdi,4),%eax
mov    %rax,0x8(%rsp)
lea    (%r11,%rdi,4),%edi
mov    -0x58(%rsp),%rax
add    %r13,%rax
mov    -0x78(%rsp),%r8
lea    (%r8,%rax,4),%rax
mov    -0x60(%rsp),%rdx
add    %r13,%rdx
lea    (%r8,%rdx,4),%rdx
mov    -0x50(%rsp),%rbp
add    %r13,%rbp
lea    (%r8,%rbp,4),%r8
mov    -0x68(%rsp),%rbp
lea    0x0(,%r13,4),%r12
add    %rbp,%r12
mov    -0x38(%rsp),%r10
sub    %r13,%r10
xor    %r13d,%r13d
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movss  (%r12,%r13,1),%xmm0
mov    0x8(%rsp),%rbp
add    %r13d,%ebp
movslq %ebp,%rbp
add    0x10(%rsp),%rbp
movss  %xmm0,(%rcx,%rbp,4)
movss  (%r8,%r13,1),%xmm0
lea    (%rdi,%r13,1),%ebp
add    $0x1,%ebp
movslq %ebp,%rbp
movss  %xmm0,(%rcx,%rbp,4)
movss  (%rdx,%r13,1),%xmm0
lea    0x2(%rdi,%r13,1),%ebp
movslq %ebp,%rbp
movss  %xmm0,(%rcx,%rbp,4)
movss  (%rax,%r13,1),%xmm0
lea    (%rdi,%r13,1),%ebp
add    $0x3,%ebp
movslq %ebp,%rbp
movss  %xmm0,(%rcx,%rbp,4)
add    $0x4,%r13
add    $0xffffffffffffffff,%r10
jne    1510 <s_cvt_tran_mat2pmat+0x410>
jmp    12f0 <s_cvt_tran_mat2pmat+0x1f0>
mov    -0x40(%rsp),%rsi
mov    0x58(%rsp),%edi
sub    %ebp,%esi
jle    166d <s_cvt_tran_mat2pmat+0x56d>
test   %r12d,%r12d
jle    166d <s_cvt_tran_mat2pmat+0x56d>
cmp    $0x4,%esi
mov    $0x4,%r15d
cmovl  %esi,%r15d
imul   %ebp,%edi
movslq %ebp,%rbx
movslq -0x7c(%rsp),%rax
cmp    $0x2,%r15d
mov    $0x1,%r14d
cmovge %r15d,%r14d
mov    %r12d,%edx
mov    %rbx,%r10
imul   %rax,%r10
lea    0x1(%rbx),%r11
imul   %rax,%r11
lea    0x2(%rbx),%rbp
imul   %rax,%rbp
add    $0x3,%rbx
imul   %rax,%rbx
mov    -0x78(%rsp),%rax
lea    (%rax,%rbx,4),%r8
lea    (%rax,%rbp,4),%r9
lea    (%rax,%r11,4),%r11
lea    (%rax,%r10,4),%rax
shl    $0x2,%rdx
xor    %ebp,%ebp
jmp    1609 <s_cvt_tran_mat2pmat+0x509>
cs nopw 0x0(%rax,%rax,1)
add    $0x4,%rbp
cmp    %rbp,%rdx
je     166d <s_cvt_tran_mat2pmat+0x56d>
test   %esi,%esi
jle    1600 <s_cvt_tran_mat2pmat+0x500>
lea    (%rdi,%rbp,1),%ebx
movss  (%rax,%rbp,1),%xmm0
movslq %ebx,%rbx
movss  %xmm0,(%rcx,%rbx,4)
cmp    $0x2,%r15d
jl     1600 <s_cvt_tran_mat2pmat+0x500>
movss  (%r11,%rbp,1),%xmm0
lea    (%rdi,%rbp,1),%ebx
add    $0x1,%ebx
movslq %ebx,%rbx
movss  %xmm0,(%rcx,%rbx,4)
cmp    $0x2,%r14d
je     1600 <s_cvt_tran_mat2pmat+0x500>
movss  (%r9,%rbp,1),%xmm0
lea    (%rdi,%rbp,1),%ebx
add    $0x2,%ebx
movslq %ebx,%rbx
movss  %xmm0,(%rcx,%rbx,4)
cmp    $0x3,%r14d
je     1600 <s_cvt_tran_mat2pmat+0x500>
movss  (%r8,%rbp,1),%xmm0
lea    (%rdi,%rbp,1),%ebx
add    $0x3,%ebx
movslq %ebx,%rbx
movss  %xmm0,(%rcx,%rbx,4)
jmp    1600 <s_cvt_tran_mat2pmat+0x500>
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @s_cvt_tran_mat2pmat(i32 %0, i32 %1, i32 %2, i32 %3, float* %4, i32 %5, float* writeonly %6, i32 %7) {
%9 = sub i32 0, %2
%10 = and i32 %9, 3
%11 = icmp sgt i32 %10, %1
%12 = select i1 %11, i32 %1, i32 %10
%13 = sub nsw i32 %1, %12
%14 = icmp sgt i32 %12, 0
br i1 %14, label %15, label %71
15: ; preds = %8
%16 = icmp sgt i32 %0, 0
br i1 %16, label %17, label %62
17: ; preds = %15
%18 = sext i32 %5 to i64
%19 = zext i32 %0 to i64
%20 = zext i32 %12 to i64
%21 = and i64 %20, 1
%22 = icmp eq i32 %12, 1
%23 = and i64 %20, 4294967294
%24 = icmp eq i64 %21, 0
br label %25
25: ; preds = %59, %17
%26 = phi i64 [ 0, %17 ], [ %60, %59 ]
%27 = shl i64 %26, 2
br i1 %22, label %49, label %28
28: ; preds = %25, %28
%29 = phi i64 [ %46, %28 ], [ 0, %25 ]
%30 = phi i64 [ %47, %28 ], [ 0, %25 ]
%31 = mul nsw i64 %29, %18
%32 = add nsw i64 %31, %26
%33 = getelementptr inbounds float, float* %4, i64 %32
%34 = load float, float* %33
%35 = add i64 %29, %27
%36 = and i64 %35, 4294967294
%37 = getelementptr inbounds float, float* %6, i64 %36
store float %34, float* %37
%38 = or i64 %29, 1
%39 = mul nsw i64 %38, %18
%40 = add nsw i64 %39, %26
%41 = getelementptr inbounds float, float* %4, i64 %40
%42 = load float, float* %41
%43 = add i64 %38, %27
%44 = and i64 %43, 4294967295
%45 = getelementptr inbounds float, float* %6, i64 %44
store float %42, float* %45
%46 = add nuw nsw i64 %29, 2
%47 = add i64 %30, 2
%48 = icmp eq i64 %47, %23
br i1 %48, label %49, label %28
49: ; preds = %28, %25
%50 = phi i64 [ 0, %25 ], [ %46, %28 ]
br i1 %24, label %59, label %51
51: ; preds = %49
%52 = mul nsw i64 %50, %18
%53 = add nsw i64 %52, %26
%54 = getelementptr inbounds float, float* %4, i64 %53
%55 = load float, float* %54
%56 = add i64 %50, %27
%57 = and i64 %56, 4294967295
%58 = getelementptr inbounds float, float* %6, i64 %57
store float %55, float* %58
br label %59
59: ; preds = %49, %51
%60 = add nuw nsw i64 %26, 1
%61 = icmp eq i64 %60, %19
br i1 %61, label %62, label %25
62: ; preds = %59, %15
%63 = mul nsw i32 %12, %5
%64 = sext i32 %63 to i64
%65 = getelementptr inbounds float, float* %4, i64 %64
%66 = shl i32 %7, 2
%67 = add i32 %12, -4
%68 = add i32 %67, %66
%69 = sext i32 %68 to i64
%70 = getelementptr inbounds float, float* %6, i64 %69
br label %71
71: ; preds = %62, %8
%72 = phi float* [ %70, %62 ], [ %6, %8 ]
%73 = phi float* [ %65, %62 ], [ %4, %8 ]
%74 = icmp sgt i32 %13, 3
br i1 %74, label %75, label %260
75: ; preds = %71
%76 = add nsw i32 %13, -3
%77 = add nsw i32 %0, -3
%78 = icmp sgt i32 %0, 3
%79 = sext i32 %77 to i64
%80 = sext i32 %5 to i64
%81 = sext i32 %7 to i64
%82 = zext i32 %76 to i64
%83 = zext i32 %0 to i64
br label %84
84: ; preds = %75, %255
%85 = phi i64 [ 0, %75 ], [ %256, %255 ]
br i1 %78, label %86, label %101
86: ; preds = %84
%87 = mul nsw i64 %85, %80
%88 = mul nsw i64 %85, %81
%89 = or i64 %85, 1
%90 = mul nsw i64 %89, %80
%91 = trunc i64 %88 to i32
%92 = or i32 %91, 1
%93 = or i64 %85, 2
%94 = mul nsw i64 %93, %80
%95 = or i32 %91, 2
%96 = or i64 %85, 3
%97 = mul nsw i64 %96, %80
%98 = or i32 %91, 3
br label %118
99: ; preds = %118
%100 = trunc i64 %223 to i32
br label %101
101: ; preds = %99, %84
%102 = phi i32 [ 0, %84 ], [ %100, %99 ]
%103 = icmp slt i32 %102, %0
br i1 %103, label %104, label %255
104: ; preds = %101
%105 = mul nsw i64 %85, %80
%106 = mul nsw i64 %85, %81
%107 = or i64 %85, 1
%108 = mul nsw i64 %107, %80
%109 = trunc i64 %106 to i32
%110 = or i32 %109, 1
%111 = or i64 %85, 2
%112 = mul nsw i64 %111, %80
%113 = or i32 %109, 2
%114 = or i64 %85, 3
%115 = mul nsw i64 %114, %80
%116 = or i32 %109, 3
%117 = zext i32 %102 to i64
br label %225
118: ; preds = %86, %118
%119 = phi i64 [ 0, %86 ], [ %223, %118 ]
%120 = add nsw i64 %119, %87
%121 = getelementptr inbounds float, float* %73, i64 %120
%122 = load float, float* %121
%123 = shl nsw i64 %119, 2
%124 = add nsw i64 %123, %88
%125 = getelementptr inbounds float, float* %72, i64 %124
store float %122, float* %125
%126 = add nsw i64 %119, %90
%127 = getelementptr inbounds float, float* %73, i64 %126
%128 = load float, float* %127
%129 = trunc i64 %123 to i32
%130 = add i32 %92, %129
%131 = sext i32 %130 to i64
%132 = getelementptr inbounds float, float* %72, i64 %131
store float %128, float* %132
%133 = add nsw i64 %119, %94
%134 = getelementptr inbounds float, float* %73, i64 %133
%135 = load float, float* %134
%136 = add i32 %95, %129
%137 = sext i32 %136 to i64
%138 = getelementptr inbounds float, float* %72, i64 %137
store float %135, float* %138
%139 = add nsw i64 %119, %97
%140 = getelementptr inbounds float, float* %73, i64 %139
%141 = load float, float* %140
%142 = add i32 %98, %129
%143 = sext i32 %142 to i64
%144 = getelementptr inbounds float, float* %72, i64 %143
store float %141, float* %144
%145 = or i64 %119, 1
%146 = add nsw i64 %145, %87
%147 = getelementptr inbounds float, float* %73, i64 %146
%148 = load float, float* %147
%149 = shl nsw i64 %145, 2
%150 = add nsw i64 %149, %88
%151 = getelementptr inbounds float, float* %72, i64 %150
store float %148, float* %151
%152 = add nsw i64 %145, %90
%153 = getelementptr inbounds float, float* %73, i64 %152
%154 = load float, float* %153
%155 = trunc i64 %149 to i32
%156 = add i32 %92, %155
%157 = sext i32 %156 to i64
%158 = getelementptr inbounds float, float* %72, i64 %157
store float %154, float* %158
%159 = add nsw i64 %145, %94
%160 = getelementptr inbounds float, float* %73, i64 %159
%161 = load float, float* %160
%162 = add i32 %95, %155
%163 = sext i32 %162 to i64
%164 = getelementptr inbounds float, float* %72, i64 %163
store float %161, float* %164
%165 = add nsw i64 %145, %97
%166 = getelementptr inbounds float, float* %73, i64 %165
%167 = load float, float* %166
%168 = add i32 %98, %155
%169 = sext i32 %168 to i64
%170 = getelementptr inbounds float, float* %72, i64 %169
store float %167, float* %170
%171 = or i64 %119, 2
%172 = add nsw i64 %171, %87
%173 = getelementptr inbounds float, float* %73, i64 %172
%174 = load float, float* %173
%175 = shl nsw i64 %171, 2
%176 = add nsw i64 %175, %88
%177 = getelementptr inbounds float, float* %72, i64 %176
store float %174, float* %177
%178 = add nsw i64 %171, %90
%179 = getelementptr inbounds float, float* %73, i64 %178
%180 = load float, float* %179
%181 = trunc i64 %175 to i32
%182 = add i32 %92, %181
%183 = sext i32 %182 to i64
%184 = getelementptr inbounds float, float* %72, i64 %183
store float %180, float* %184
%185 = add nsw i64 %171, %94
%186 = getelementptr inbounds float, float* %73, i64 %185
%187 = load float, float* %186
%188 = add i32 %95, %181
%189 = sext i32 %188 to i64
%190 = getelementptr inbounds float, float* %72, i64 %189
store float %187, float* %190
%191 = add nsw i64 %171, %97
%192 = getelementptr inbounds float, float* %73, i64 %191
%193 = load float, float* %192
%194 = add i32 %98, %181
%195 = sext i32 %194 to i64
%196 = getelementptr inbounds float, float* %72, i64 %195
store float %193, float* %196
%197 = or i64 %119, 3
%198 = add nsw i64 %197, %87
%199 = getelementptr inbounds float, float* %73, i64 %198
%200 = load float, float* %199
%201 = shl nsw i64 %197, 2
%202 = add nsw i64 %201, %88
%203 = getelementptr inbounds float, float* %72, i64 %202
store float %200, float* %203
%204 = add nsw i64 %197, %90
%205 = getelementptr inbounds float, float* %73, i64 %204
%206 = load float, float* %205
%207 = trunc i64 %201 to i32
%208 = add i32 %92, %207
%209 = sext i32 %208 to i64
%210 = getelementptr inbounds float, float* %72, i64 %209
store float %206, float* %210
%211 = add nsw i64 %197, %94
%212 = getelementptr inbounds float, float* %73, i64 %211
%213 = load float, float* %212
%214 = add i32 %95, %207
%215 = sext i32 %214 to i64
%216 = getelementptr inbounds float, float* %72, i64 %215
store float %213, float* %216
%217 = add nsw i64 %197, %97
%218 = getelementptr inbounds float, float* %73, i64 %217
%219 = load float, float* %218
%220 = add i32 %98, %207
%221 = sext i32 %220 to i64
%222 = getelementptr inbounds float, float* %72, i64 %221
store float %219, float* %222
%223 = add nuw nsw i64 %119, 4
%224 = icmp slt i64 %223, %79
br i1 %224, label %118, label %99
225: ; preds = %104, %225
%226 = phi i64 [ %117, %104 ], [ %253, %225 ]
%227 = trunc i64 %226 to i32
%228 = add nsw i64 %226, %105
%229 = getelementptr inbounds float, float* %73, i64 %228
%230 = load float, float* %229
%231 = shl nsw i32 %227, 2
%232 = sext i32 %231 to i64
%233 = add nsw i64 %106, %232
%234 = getelementptr inbounds float, float* %72, i64 %233
store float %230, float* %234
%235 = add nsw i64 %226, %108
%236 = getelementptr inbounds float, float* %73, i64 %235
%237 = load float, float* %236
%238 = add i32 %110, %231
%239 = sext i32 %238 to i64
%240 = getelementptr inbounds float, float* %72, i64 %239
store float %237, float* %240
%241 = add nsw i64 %226, %112
%242 = getelementptr inbounds float, float* %73, i64 %241
%243 = load float, float* %242
%244 = add i32 %113, %231
%245 = sext i32 %244 to i64
%246 = getelementptr inbounds float, float* %72, i64 %245
store float %243, float* %246
%247 = add nsw i64 %226, %115
%248 = getelementptr inbounds float, float* %73, i64 %247
%249 = load float, float* %248
%250 = add i32 %116, %231
%251 = sext i32 %250 to i64
%252 = getelementptr inbounds float, float* %72, i64 %251
store float %249, float* %252
%253 = add nuw nsw i64 %226, 1
%254 = icmp eq i64 %253, %83
br i1 %254, label %255, label %225
255: ; preds = %225, %101
%256 = add nuw nsw i64 %85, 4
%257 = icmp ult i64 %256, %82
br i1 %257, label %84, label %258
258: ; preds = %255
%259 = trunc i64 %256 to i32
br label %260
260: ; preds = %258, %71
%261 = phi i32 [ 0, %71 ], [ %259, %258 ]
%262 = icmp sgt i32 %13, %261
br i1 %262, label %263, label %320
263: ; preds = %260
%264 = sub nsw i32 %13, %261
%265 = icmp sgt i32 %0, 0
br i1 %265, label %266, label %320
266: ; preds = %263
%267 = icmp slt i32 %264, 4
%268 = select i1 %267, i32 %264, i32 4
%269 = icmp sgt i32 %264, 0
%270 = mul nsw i32 %261, %7
%271 = sext i32 %261 to i64
%272 = sext i32 %5 to i64
%273 = call i32 @llvm.smax.i32(i32 %268, i32 1)
%274 = zext i32 %0 to i64
%275 = mul nsw i64 %271, %272
%276 = icmp slt i32 %268, 2
%277 = add nuw nsw i64 %271, 1
%278 = mul nsw i64 %277, %272
%279 = icmp eq i32 %273, 2
%280 = add nuw nsw i64 %271, 2
%281 = mul nsw i64 %280, %272
%282 = icmp eq i32 %273, 3
%283 = add nuw nsw i64 %271, 3
%284 = mul nsw i64 %283, %272
br label %285
285: ; preds = %266, %317
%286 = phi i64 [ 0, %266 ], [ %318, %317 ]
br i1 %269, label %287, label %317
287: ; preds = %285
%288 = trunc i64 %286 to i32
%289 = shl nsw i32 %288, 2
%290 = add i32 %289, %270
%291 = add nsw i64 %275, %286
%292 = getelementptr inbounds float, float* %73, i64 %291
%293 = load float, float* %292
%294 = sext i32 %290 to i64
%295 = getelementptr inbounds float, float* %72, i64 %294
store float %293, float* %295
br i1 %276, label %317, label %296
296: ; preds = %287
%297 = add nsw i64 %278, %286
%298 = getelementptr inbounds float, float* %73, i64 %297
%299 = load float, float* %298
%300 = add i32 %290, 1
%301 = sext i32 %300 to i64
%302 = getelementptr inbounds float, float* %72, i64 %301
store float %299, float* %302
br i1 %279, label %317, label %303
303: ; preds = %296
%304 = add nsw i64 %281, %286
%305 = getelementptr inbounds float, float* %73, i64 %304
%306 = load float, float* %305
%307 = add i32 %290, 2
%308 = sext i32 %307 to i64
%309 = getelementptr inbounds float, float* %72, i64 %308
store float %306, float* %309
br i1 %282, label %317, label %310
310: ; preds = %303
%311 = add nsw i64 %284, %286
%312 = getelementptr inbounds float, float* %73, i64 %311
%313 = load float, float* %312
%314 = add i32 %290, 3
%315 = sext i32 %314 to i64
%316 = getelementptr inbounds float, float* %72, i64 %315
store float %313, float* %316
br label %317
317: ; preds = %287, %296, %303, %310, %285
%318 = add nuw nsw i64 %286, 1
%319 = icmp eq i64 %318, %274
br i1 %319, label %320, label %285
320: ; preds = %317, %263, %260
ret void
}