#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 */

/* Variables and functions */
int /*<<< orphan*/ BTIC2D_TransIWHT_Stride8(int *, int *, int, int);
void BTIC2D_TransIWHT8Stride(int *iblk, int *oblk, int ixstride, int iystride,
                             int oxstride, int oystride) {
  int s[64], t[64];
  int i, j;
  BTIC2D_TransIWHT_Stride8(iblk + ixstride * 0, s + 0, iystride, 8);
  BTIC2D_TransIWHT_Stride8(iblk + ixstride * 1, s + 1, iystride, 8);
  BTIC2D_TransIWHT_Stride8(iblk + ixstride * 2, s + 2, iystride, 8);
  BTIC2D_TransIWHT_Stride8(iblk + ixstride * 3, s + 3, iystride, 8);
  BTIC2D_TransIWHT_Stride8(iblk + ixstride * 4, s + 4, iystride, 8);
  BTIC2D_TransIWHT_Stride8(iblk + ixstride * 5, s + 5, iystride, 8);
  BTIC2D_TransIWHT_Stride8(iblk + ixstride * 6, s + 6, iystride, 8);
  BTIC2D_TransIWHT_Stride8(iblk + ixstride * 7, s + 7, iystride, 8);
  BTIC2D_TransIWHT_Stride8(s + 0 * 8, t + 0 * 8, 1, 1);
  BTIC2D_TransIWHT_Stride8(s + 1 * 8, t + 1 * 8, 1, 1);
  BTIC2D_TransIWHT_Stride8(s + 2 * 8, t + 2 * 8, 1, 1);
  BTIC2D_TransIWHT_Stride8(s + 3 * 8, t + 3 * 8, 1, 1);
  BTIC2D_TransIWHT_Stride8(s + 4 * 8, t + 4 * 8, 1, 1);
  BTIC2D_TransIWHT_Stride8(s + 5 * 8, t + 5 * 8, 1, 1);
  BTIC2D_TransIWHT_Stride8(s + 6 * 8, t + 6 * 8, 1, 1);
  BTIC2D_TransIWHT_Stride8(s + 7 * 8, t + 7 * 8, 1, 1);
  for (i = 0; i < 8; i++)
    for (j = 0; j < 8; j++) {
      oblk[i * oystride + j * oxstride] = t[i * 8 + j] + 128;
    }
}


x86 assembly (clang, -O0):
<BTIC2D_TransIWHT8Stride>:
push   %rbp
mov    %rsp,%rbp
sub    $0x230,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    %ecx,-0x18(%rbp)
mov    %r8d,-0x1c(%rbp)
mov    %r9d,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
imul   $0x0,-0x14(%rbp),%eax
cltq
shl    $0x2,%rax
add    %rax,%rdi
lea    -0x120(%rbp),%rsi
mov    -0x18(%rbp),%edx
mov    $0x8,%ecx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
mov    -0x8(%rbp),%rdi
mov    -0x14(%rbp),%eax
shl    $0x0,%eax
cltq
shl    $0x2,%rax
add    %rax,%rdi
lea    -0x120(%rbp),%rsi
add    $0x4,%rsi
mov    -0x18(%rbp),%edx
mov    $0x8,%ecx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
mov    -0x8(%rbp),%rdi
mov    -0x14(%rbp),%eax
shl    $0x1,%eax
cltq
shl    $0x2,%rax
add    %rax,%rdi
lea    -0x120(%rbp),%rsi
add    $0x8,%rsi
mov    -0x18(%rbp),%edx
mov    $0x8,%ecx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
mov    -0x8(%rbp),%rdi
imul   $0x3,-0x14(%rbp),%eax
cltq
shl    $0x2,%rax
add    %rax,%rdi
lea    -0x120(%rbp),%rsi
add    $0xc,%rsi
mov    -0x18(%rbp),%edx
mov    $0x8,%ecx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
mov    -0x8(%rbp),%rdi
mov    -0x14(%rbp),%eax
shl    $0x2,%eax
cltq
shl    $0x2,%rax
add    %rax,%rdi
lea    -0x120(%rbp),%rsi
add    $0x10,%rsi
mov    -0x18(%rbp),%edx
mov    $0x8,%ecx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
mov    -0x8(%rbp),%rdi
imul   $0x5,-0x14(%rbp),%eax
cltq
shl    $0x2,%rax
add    %rax,%rdi
lea    -0x120(%rbp),%rsi
add    $0x14,%rsi
mov    -0x18(%rbp),%edx
mov    $0x8,%ecx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
mov    -0x8(%rbp),%rdi
imul   $0x6,-0x14(%rbp),%eax
cltq
shl    $0x2,%rax
add    %rax,%rdi
lea    -0x120(%rbp),%rsi
add    $0x18,%rsi
mov    -0x18(%rbp),%edx
mov    $0x8,%ecx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
mov    -0x8(%rbp),%rdi
imul   $0x7,-0x14(%rbp),%eax
cltq
shl    $0x2,%rax
add    %rax,%rdi
lea    -0x120(%rbp),%rsi
add    $0x1c,%rsi
mov    -0x18(%rbp),%edx
mov    $0x8,%ecx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
lea    -0x120(%rbp),%rdi
lea    -0x220(%rbp),%rsi
mov    $0x1,%ecx
mov    %ecx,%edx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
lea    -0x120(%rbp),%rdi
add    $0x20,%rdi
lea    -0x220(%rbp),%rsi
add    $0x20,%rsi
mov    $0x1,%ecx
mov    %ecx,%edx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
lea    -0x120(%rbp),%rdi
add    $0x40,%rdi
lea    -0x220(%rbp),%rsi
add    $0x40,%rsi
mov    $0x1,%ecx
mov    %ecx,%edx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
lea    -0x120(%rbp),%rdi
add    $0x60,%rdi
lea    -0x220(%rbp),%rsi
add    $0x60,%rsi
mov    $0x1,%ecx
mov    %ecx,%edx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
lea    -0x120(%rbp),%rdi
add    $0x80,%rdi
lea    -0x220(%rbp),%rsi
add    $0x80,%rsi
mov    $0x1,%ecx
mov    %ecx,%edx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
lea    -0x120(%rbp),%rdi
add    $0xa0,%rdi
lea    -0x220(%rbp),%rsi
add    $0xa0,%rsi
mov    $0x1,%ecx
mov    %ecx,%edx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
lea    -0x120(%rbp),%rdi
add    $0xc0,%rdi
lea    -0x220(%rbp),%rsi
add    $0xc0,%rsi
mov    $0x1,%ecx
mov    %ecx,%edx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
lea    -0x120(%rbp),%rdi
add    $0xe0,%rdi
lea    -0x220(%rbp),%rsi
add    $0xe0,%rsi
mov    $0x1,%ecx
mov    %ecx,%edx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
movl   $0x0,-0x224(%rbp)
cmpl   $0x8,-0x224(%rbp)
jge    1434 <BTIC2D_TransIWHT8Stride+0x324>
movl   $0x0,-0x228(%rbp)
cmpl   $0x8,-0x228(%rbp)
jge    141b <BTIC2D_TransIWHT8Stride+0x30b>
mov    -0x224(%rbp),%eax
shl    $0x3,%eax
add    -0x228(%rbp),%eax
cltq
mov    -0x220(%rbp,%rax,4),%edx
add    $0x80,%edx
mov    -0x10(%rbp),%rax
mov    -0x224(%rbp),%ecx
imul   -0x20(%rbp),%ecx
mov    -0x228(%rbp),%esi
imul   -0x1c(%rbp),%esi
add    %esi,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x228(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x228(%rbp)
jmp    13bc <BTIC2D_TransIWHT8Stride+0x2ac>
jmp    1420 <BTIC2D_TransIWHT8Stride+0x310>
mov    -0x224(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x224(%rbp)
jmp    13a5 <BTIC2D_TransIWHT8Stride+0x295>
add    $0x230,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<BTIC2D_TransIWHT8Stride>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x218,%rsp
mov    %r9d,0xc(%rsp)
mov    %r8d,0x8(%rsp)
mov    %ecx,%r13d
mov    %edx,%r14d
mov    %rsi,%rbx
mov    %rdi,%rbp
lea    0x110(%rsp),%r12
mov    %r12,%rsi
mov    %ecx,%edx
mov    $0x8,%ecx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
movslq %r14d,%r14
lea    0x0(,%r14,4),%rdi
add    %rbp,%rdi
lea    0x114(%rsp),%rsi
mov    %r13d,%edx
mov    $0x8,%ecx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
lea    (%r14,%r14,1),%eax
movslq %eax,%r15
lea    0x0(,%r15,4),%rdi
add    %rbp,%rdi
lea    0x118(%rsp),%rsi
mov    %r13d,%edx
mov    $0x8,%ecx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
lea    (%r14,%r14,2),%eax
cltq
lea    0x0(,%rax,4),%rdi
add    %rbp,%rdi
lea    0x11c(%rsp),%rsi
mov    %r13d,%edx
mov    $0x8,%ecx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
lea    0x0(,%r14,4),%eax
cltq
lea    0x0(,%rax,4),%rdi
add    %rbp,%rdi
lea    0x120(%rsp),%rsi
mov    %r13d,%edx
mov    $0x8,%ecx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
lea    (%r14,%r14,4),%eax
cltq
lea    0x0(,%rax,4),%rdi
add    %rbp,%rdi
lea    0x124(%rsp),%rsi
mov    %r13d,%edx
mov    $0x8,%ecx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
lea    (%r15,%r15,2),%eax
cltq
lea    0x0(,%rax,4),%rdi
add    %rbp,%rdi
lea    0x128(%rsp),%rsi
mov    %r13d,%edx
mov    $0x8,%ecx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
lea    0x0(,%r14,8),%eax
sub    %r14d,%eax
cltq
lea    0x0(,%rax,4),%rdi
add    %rbp,%rdi
lea    0x12c(%rsp),%rsi
mov    %r13d,%edx
mov    $0x8,%ecx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
lea    0x10(%rsp),%rsi
mov    %r12,%rdi
mov    $0x1,%edx
mov    $0x1,%ecx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
lea    0x130(%rsp),%rdi
lea    0x30(%rsp),%rsi
mov    $0x1,%edx
mov    $0x1,%ecx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
lea    0x150(%rsp),%rdi
lea    0x50(%rsp),%rsi
mov    $0x1,%edx
mov    $0x1,%ecx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
lea    0x170(%rsp),%rdi
lea    0x70(%rsp),%rsi
mov    $0x1,%edx
mov    $0x1,%ecx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
lea    0x190(%rsp),%rdi
lea    0x90(%rsp),%rsi
mov    $0x1,%edx
mov    $0x1,%ecx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
lea    0x1b0(%rsp),%rdi
lea    0xb0(%rsp),%rsi
mov    $0x1,%edx
mov    $0x1,%ecx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
lea    0x1d0(%rsp),%rdi
lea    0xd0(%rsp),%rsi
mov    $0x1,%edx
mov    $0x1,%ecx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
lea    0x1f0(%rsp),%rdi
lea    0xf0(%rsp),%rsi
mov    $0x1,%edx
mov    $0x1,%ecx
call   1030 <BTIC2D_TransIWHT_Stride8@plt>
movslq 0x8(%rsp),%rax
movslq 0xc(%rsp),%r8
lea    0x0(,%rax,4),%rdx
shl    $0x2,%r8
xor    %esi,%esi
mov    0x10(%rsp,%rsi,1),%edi
sub    $0xffffff80,%edi
mov    %edi,(%rbx)
mov    0x14(%rsp,%rsi,1),%edi
sub    $0xffffff80,%edi
lea    (%rbx,%rdx,1),%rbp
mov    %edi,(%rbx,%rax,4)
mov    0x18(%rsp,%rsi,1),%edi
sub    $0xffffff80,%edi
add    %rdx,%rbp
mov    %edi,(%rbx,%rax,8)
mov    0x1c(%rsp,%rsi,1),%edi
sub    $0xffffff80,%edi
lea    (%rdx,%rbp,1),%rcx
mov    %edi,0x0(%rbp,%rax,4)
mov    0x20(%rsp,%rsi,1),%edi
sub    $0xffffff80,%edi
add    %rdx,%rcx
mov    %edi,0x0(%rbp,%rax,8)
mov    0x24(%rsp,%rsi,1),%edi
sub    $0xffffff80,%edi
mov    %edi,(%rcx,%rax,4)
add    %rdx,%rcx
mov    0x28(%rsp,%rsi,1),%edi
sub    $0xffffff80,%edi
mov    %edi,(%rcx,%rax,4)
add    %rdx,%rcx
mov    0x2c(%rsp,%rsi,1),%edi
sub    $0xffffff80,%edi
mov    %edi,(%rcx,%rax,4)
add    $0x20,%rsi
add    %r8,%rbx
cmp    $0x100,%rsi
jne    1360 <BTIC2D_TransIWHT8Stride+0x250>
add    $0x218,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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