void TransformArray(int outArray[8][8], const int inArray[64]) {
  int cc = 0;
  for (int y = 0; y < 8; y++) {
    for (int x = 0; x < 8; x++) {
      outArray[x][y] = inArray[cc];
      cc++;
    }
  }
}


x86 assembly (clang, -O0):
<TransformArray>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0x0,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
cmpl   $0x8,-0x18(%rbp)
jge    1180 <TransformArray+0x80>
movl   $0x0,-0x1c(%rbp)
cmpl   $0x8,-0x1c(%rbp)
jge    116d <TransformArray+0x6d>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
shl    $0x5,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    112b <TransformArray+0x2b>
jmp    1172 <TransformArray+0x72>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    111a <TransformArray+0x1a>
pop    %rbp
ret

x86 assembly (clang, -O2):
<TransformArray>:
mov    (%rsi),%eax
mov    %eax,(%rdi)
mov    0x4(%rsi),%eax
mov    %eax,0x20(%rdi)
mov    0x8(%rsi),%eax
mov    %eax,0x40(%rdi)
mov    0xc(%rsi),%eax
mov    %eax,0x60(%rdi)
mov    0x10(%rsi),%eax
mov    %eax,0x80(%rdi)
mov    0x14(%rsi),%eax
mov    %eax,0xa0(%rdi)
mov    0x18(%rsi),%eax
mov    %eax,0xc0(%rdi)
mov    0x1c(%rsi),%eax
mov    %eax,0xe0(%rdi)
mov    0x20(%rsi),%eax
mov    %eax,0x4(%rdi)
mov    0x24(%rsi),%eax
mov    %eax,0x24(%rdi)
mov    0x28(%rsi),%eax
mov    %eax,0x44(%rdi)
mov    0x2c(%rsi),%eax
mov    %eax,0x64(%rdi)
mov    0x30(%rsi),%eax
mov    %eax,0x84(%rdi)
mov    0x34(%rsi),%eax
mov    %eax,0xa4(%rdi)
mov    0x38(%rsi),%eax
mov    %eax,0xc4(%rdi)
mov    0x3c(%rsi),%eax
mov    %eax,0xe4(%rdi)
mov    0x40(%rsi),%eax
mov    %eax,0x8(%rdi)
mov    0x44(%rsi),%eax
mov    %eax,0x28(%rdi)
mov    0x48(%rsi),%eax
mov    %eax,0x48(%rdi)
mov    0x4c(%rsi),%eax
mov    %eax,0x68(%rdi)
mov    0x50(%rsi),%eax
mov    %eax,0x88(%rdi)
mov    0x54(%rsi),%eax
mov    %eax,0xa8(%rdi)
mov    0x58(%rsi),%eax
mov    %eax,0xc8(%rdi)
mov    0x5c(%rsi),%eax
mov    %eax,0xe8(%rdi)
mov    0x60(%rsi),%eax
mov    %eax,0xc(%rdi)
mov    0x64(%rsi),%eax
mov    %eax,0x2c(%rdi)
mov    0x68(%rsi),%eax
mov    %eax,0x4c(%rdi)
mov    0x6c(%rsi),%eax
mov    %eax,0x6c(%rdi)
mov    0x70(%rsi),%eax
mov    %eax,0x8c(%rdi)
mov    0x74(%rsi),%eax
mov    %eax,0xac(%rdi)
mov    0x78(%rsi),%eax
mov    %eax,0xcc(%rdi)
mov    0x7c(%rsi),%eax
mov    %eax,0xec(%rdi)
mov    0x80(%rsi),%eax
mov    %eax,0x10(%rdi)
mov    0x84(%rsi),%eax
mov    %eax,0x30(%rdi)
mov    0x88(%rsi),%eax
mov    %eax,0x50(%rdi)
mov    0x8c(%rsi),%eax
mov    %eax,0x70(%rdi)
mov    0x90(%rsi),%eax
mov    %eax,0x90(%rdi)
mov    0x94(%rsi),%eax
mov    %eax,0xb0(%rdi)
mov    0x98(%rsi),%eax
mov    %eax,0xd0(%rdi)
mov    0x9c(%rsi),%eax
mov    %eax,0xf0(%rdi)
mov    0xa0(%rsi),%eax
mov    %eax,0x14(%rdi)
mov    0xa4(%rsi),%eax
mov    %eax,0x34(%rdi)
mov    0xa8(%rsi),%eax
mov    %eax,0x54(%rdi)
mov    0xac(%rsi),%eax
mov    %eax,0x74(%rdi)
mov    0xb0(%rsi),%eax
mov    %eax,0x94(%rdi)
mov    0xb4(%rsi),%eax
mov    %eax,0xb4(%rdi)
mov    0xb8(%rsi),%eax
mov    %eax,0xd4(%rdi)
mov    0xbc(%rsi),%eax
mov    %eax,0xf4(%rdi)
mov    0xc0(%rsi),%eax
mov    %eax,0x18(%rdi)
mov    0xc4(%rsi),%eax
mov    %eax,0x38(%rdi)
mov    0xc8(%rsi),%eax
mov    %eax,0x58(%rdi)
mov    0xcc(%rsi),%eax
mov    %eax,0x78(%rdi)
mov    0xd0(%rsi),%eax
mov    %eax,0x98(%rdi)
mov    0xd4(%rsi),%eax
mov    %eax,0xb8(%rdi)
mov    0xd8(%rsi),%eax
mov    %eax,0xd8(%rdi)
mov    0xdc(%rsi),%eax
mov    %eax,0xf8(%rdi)
mov    0xe0(%rsi),%eax
mov    %eax,0x1c(%rdi)
mov    0xe4(%rsi),%eax
mov    %eax,0x3c(%rdi)
mov    0xe8(%rsi),%eax
mov    %eax,0x5c(%rdi)
mov    0xec(%rsi),%eax
mov    %eax,0x7c(%rdi)
mov    0xf0(%rsi),%eax
mov    %eax,0x9c(%rdi)
mov    0xf4(%rsi),%eax
mov    %eax,0xbc(%rdi)
mov    0xf8(%rsi),%eax
mov    %eax,0xdc(%rdi)
mov    0xfc(%rsi),%eax
mov    %eax,0xfc(%rdi)
ret

LLVM IR (-O0):
define void @TransformArray([8 x i32]* %0, i32* %1) {
%3 = alloca [8 x i32]*
%4 = alloca i32*
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
store [8 x i32]* %0, [8 x i32]** %3
store i32* %1, i32** %4
store i32 0, i32* %5
store i32 0, i32* %6
br label %8
8: ; preds = %34, %2
%9 = load i32, i32* %6
%10 = icmp slt i32 %9, 8
br i1 %10, label %11, label %37
11: ; preds = %8
store i32 0, i32* %7
br label %12
12: ; preds = %30, %11
%13 = load i32, i32* %7
%14 = icmp slt i32 %13, 8
br i1 %14, label %15, label %33
15: ; preds = %12
%16 = load i32*, i32** %4
%17 = load i32, i32* %5
%18 = sext i32 %17 to i64
%19 = getelementptr inbounds i32, i32* %16, i64 %18
%20 = load i32, i32* %19
%21 = load [8 x i32]*, [8 x i32]** %3
%22 = load i32, i32* %7
%23 = sext i32 %22 to i64
%24 = getelementptr inbounds [8 x i32], [8 x i32]* %21, i64 %23
%25 = load i32, i32* %6
%26 = sext i32 %25 to i64
%27 = getelementptr inbounds [8 x i32], [8 x i32]* %24, i64 0, i64 %26
store i32 %20, i32* %27
%28 = load i32, i32* %5
%29 = add nsw i32 %28, 1
store i32 %29, i32* %5
br label %30
30: ; preds = %15
%31 = load i32, i32* %7
%32 = add nsw i32 %31, 1
store i32 %32, i32* %7
br label %12
33: ; preds = %12
br label %34
34: ; preds = %33
%35 = load i32, i32* %6
%36 = add nsw i32 %35, 1
store i32 %36, i32* %6
br label %8
37: ; preds = %8
ret void
}

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