int main() {
  signed long long int a[10][10];
  signed long long int b[10][10];
  signed long long int c[10][10];
  unsigned char i, j, k;
  unsigned char error = 0;
  for (i = 0; i < 10; i++)
    for (j = 0; j < 10; j++) {
      if (i == j)
        a[i][j] = 1;
      else
        a[i][j] = 0;
    }
  for (i = 0; i < 10; i++)
    for (j = 0; j < 10; j++)
      b[i][j] = ((signed long long int)i + (signed long long int)j);
  for (i = 0; i < 10; i++)
    for (j = 0; j < 10; j++)
      c[i][j] = 0;
  for (i = 0; i < 10; i++)
    for (j = 0; j < 10; j++)
      for (k = 0; k < 10; k++)
        c[i][j] = c[i][j] + (a[i][k] * b[k][j]);
  for (i = 0; i < 10; i++)
    for (j = 0; j < 10; j++)
      if (b[i][j] != c[i][j])
        error = 1;
  error = 0;
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x900,%rsp
movl   $0x0,-0x4(%rbp)
movb   $0x0,-0x974(%rbp)
movb   $0x0,-0x971(%rbp)
movzbl -0x971(%rbp),%eax
cmp    $0xa,%eax
jge    11de <main+0xde>
movb   $0x0,-0x972(%rbp)
movzbl -0x972(%rbp),%eax
cmp    $0xa,%eax
jge    11c6 <main+0xc6>
movzbl -0x971(%rbp),%eax
movzbl -0x972(%rbp),%ecx
cmp    %ecx,%eax
jne    1188 <main+0x88>
movzbl -0x971(%rbp),%eax
mov    %eax,%ecx
lea    -0x330(%rbp),%rax
imul   $0x50,%rcx,%rcx
add    %rcx,%rax
movzbl -0x972(%rbp),%ecx
movq   $0x1,(%rax,%rcx,8)
jmp    11ae <main+0xae>
movzbl -0x971(%rbp),%eax
mov    %eax,%ecx
lea    -0x330(%rbp),%rax
imul   $0x50,%rcx,%rcx
add    %rcx,%rax
movzbl -0x972(%rbp),%ecx
movq   $0x0,(%rax,%rcx,8)
jmp    11b3 <main+0xb3>
mov    -0x972(%rbp),%al
add    $0x1,%al
mov    %al,-0x972(%rbp)
jmp    1137 <main+0x37>
jmp    11cb <main+0xcb>
mov    -0x971(%rbp),%al
add    $0x1,%al
mov    %al,-0x971(%rbp)
jmp    1120 <main+0x20>
movb   $0x0,-0x971(%rbp)
movzbl -0x971(%rbp),%eax
cmp    $0xa,%eax
jge    126c <main+0x16c>
movb   $0x0,-0x972(%rbp)
movzbl -0x972(%rbp),%eax
cmp    $0xa,%eax
jge    1254 <main+0x154>
movzbl -0x971(%rbp),%eax
mov    %eax,%edx
movzbl -0x972(%rbp),%eax
add    %rax,%rdx
movzbl -0x971(%rbp),%eax
mov    %eax,%ecx
lea    -0x650(%rbp),%rax
imul   $0x50,%rcx,%rcx
add    %rcx,%rax
movzbl -0x972(%rbp),%ecx
mov    %rdx,(%rax,%rcx,8)
mov    -0x972(%rbp),%al
add    $0x1,%al
mov    %al,-0x972(%rbp)
jmp    11fc <main+0xfc>
jmp    1259 <main+0x159>
mov    -0x971(%rbp),%al
add    $0x1,%al
mov    %al,-0x971(%rbp)
jmp    11e5 <main+0xe5>
movb   $0x0,-0x971(%rbp)
movzbl -0x971(%rbp),%eax
cmp    $0xa,%eax
jge    12eb <main+0x1eb>
movb   $0x0,-0x972(%rbp)
movzbl -0x972(%rbp),%eax
cmp    $0xa,%eax
jge    12d3 <main+0x1d3>
movzbl -0x971(%rbp),%eax
mov    %eax,%ecx
lea    -0x970(%rbp),%rax
imul   $0x50,%rcx,%rcx
add    %rcx,%rax
movzbl -0x972(%rbp),%ecx
movq   $0x0,(%rax,%rcx,8)
mov    -0x972(%rbp),%al
add    $0x1,%al
mov    %al,-0x972(%rbp)
jmp    128a <main+0x18a>
jmp    12d8 <main+0x1d8>
mov    -0x971(%rbp),%al
add    $0x1,%al
mov    %al,-0x971(%rbp)
jmp    1273 <main+0x173>
movb   $0x0,-0x971(%rbp)
movzbl -0x971(%rbp),%eax
cmp    $0xa,%eax
jge    13ff <main+0x2ff>
movb   $0x0,-0x972(%rbp)
movzbl -0x972(%rbp),%eax
cmp    $0xa,%eax
jge    13e7 <main+0x2e7>
movb   $0x0,-0x973(%rbp)
movzbl -0x973(%rbp),%eax
cmp    $0xa,%eax
jge    13cf <main+0x2cf>
movzbl -0x971(%rbp),%eax
mov    %eax,%ecx
lea    -0x970(%rbp),%rax
imul   $0x50,%rcx,%rcx
add    %rcx,%rax
movzbl -0x972(%rbp),%ecx
mov    (%rax,%rcx,8),%rdx
movzbl -0x971(%rbp),%eax
mov    %eax,%ecx
lea    -0x330(%rbp),%rax
imul   $0x50,%rcx,%rcx
add    %rcx,%rax
movzbl -0x973(%rbp),%ecx
mov    (%rax,%rcx,8),%rax
movzbl -0x973(%rbp),%ecx
mov    %ecx,%esi
lea    -0x650(%rbp),%rcx
imul   $0x50,%rsi,%rsi
add    %rsi,%rcx
movzbl -0x972(%rbp),%esi
imul   (%rcx,%rsi,8),%rax
add    %rax,%rdx
movzbl -0x971(%rbp),%eax
mov    %eax,%ecx
lea    -0x970(%rbp),%rax
imul   $0x50,%rcx,%rcx
add    %rcx,%rax
movzbl -0x972(%rbp),%ecx
mov    %rdx,(%rax,%rcx,8)
mov    -0x973(%rbp),%al
add    $0x1,%al
mov    %al,-0x973(%rbp)
jmp    1320 <main+0x220>
jmp    13d4 <main+0x2d4>
mov    -0x972(%rbp),%al
add    $0x1,%al
mov    %al,-0x972(%rbp)
jmp    1309 <main+0x209>
jmp    13ec <main+0x2ec>
mov    -0x971(%rbp),%al
add    $0x1,%al
mov    %al,-0x971(%rbp)
jmp    12f2 <main+0x1f2>
movb   $0x0,-0x971(%rbp)
movzbl -0x971(%rbp),%eax
cmp    $0xa,%eax
jge    14ae <main+0x3ae>
movb   $0x0,-0x972(%rbp)
movzbl -0x972(%rbp),%eax
cmp    $0xa,%eax
jge    1496 <main+0x396>
movzbl -0x971(%rbp),%eax
mov    %eax,%ecx
lea    -0x650(%rbp),%rax
imul   $0x50,%rcx,%rcx
add    %rcx,%rax
movzbl -0x972(%rbp),%ecx
mov    (%rax,%rcx,8),%rax
movzbl -0x971(%rbp),%ecx
mov    %ecx,%edx
lea    -0x970(%rbp),%rcx
imul   $0x50,%rdx,%rdx
add    %rdx,%rcx
movzbl -0x972(%rbp),%edx
cmp    (%rcx,%rdx,8),%rax
je     147e <main+0x37e>
movb   $0x1,-0x974(%rbp)
jmp    1483 <main+0x383>
mov    -0x972(%rbp),%al
add    $0x1,%al
mov    %al,-0x972(%rbp)
jmp    141d <main+0x31d>
jmp    149b <main+0x39b>
mov    -0x971(%rbp),%al
add    $0x1,%al
mov    %al,-0x971(%rbp)
jmp    1406 <main+0x306>
movb   $0x0,-0x974(%rbp)
xor    %eax,%eax
add    $0x900,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x968,%rsp
lea    0x368(%rsp),%rax
xor    %edx,%edx
xor    %ecx,%ecx
jmp    1176 <main+0x66>
nop
movq   $0x1,-0x48(%rax)
xor    %edx,%edx
mov    %rdx,-0x40(%rax)
xor    %esi,%esi
mov    %rsi,-0x38(%rax)
xor    %esi,%esi
mov    %rsi,-0x30(%rax)
xor    %esi,%esi
mov    %rsi,-0x28(%rax)
xor    %esi,%esi
mov    %rsi,-0x20(%rax)
xor    %esi,%esi
mov    %rsi,-0x18(%rax)
xor    %esi,%esi
mov    %rsi,-0x10(%rax)
xor    %esi,%esi
mov    %rsi,-0x8(%rax)
movq   $0x0,(%rax)
add    $0x50,%rax
mov    %rcx,%rdx
sub    $0x1,%rcx
jb     1130 <main+0x20>
movq   $0x0,-0x48(%rax)
cmp    $0xffffffffffffffff,%rdx
je     1237 <main+0x127>
movq   $0x0,-0x40(%rax)
mov    $0x1,%esi
cmp    $0xfffffffffffffffe,%rdx
je     1140 <main+0x30>
movq   $0x0,-0x38(%rax)
mov    $0x1,%esi
cmp    $0xfffffffffffffffd,%rdx
je     1146 <main+0x36>
movq   $0x0,-0x30(%rax)
mov    $0x1,%esi
cmp    $0xfffffffffffffffc,%rdx
je     114c <main+0x3c>
movq   $0x0,-0x28(%rax)
mov    $0x1,%esi
cmp    $0xfffffffffffffffb,%rdx
je     1152 <main+0x42>
movq   $0x0,-0x20(%rax)
mov    $0x1,%esi
cmp    $0xfffffffffffffffa,%rdx
je     1158 <main+0x48>
movq   $0x0,-0x18(%rax)
mov    $0x1,%esi
cmp    $0xfffffffffffffff9,%rdx
je     115e <main+0x4e>
movq   $0x0,-0x10(%rax)
mov    $0x1,%esi
cmp    $0xfffffffffffffff8,%rdx
je     1164 <main+0x54>
movq   $0x0,-0x8(%rax)
cmp    $0xfffffffffffffff7,%rdx
jne    1168 <main+0x58>
jmp    1241 <main+0x131>
mov    $0x1,%edx
jmp    113a <main+0x2a>
movq   $0x1,(%rax)
lea    0x40(%rsp),%rax
xor    %ecx,%ecx
movdqa 0xda9(%rip),%xmm0
movdqa 0xdb1(%rip),%xmm1
movdqa 0xdb9(%rip),%xmm2
movdqa 0xdc1(%rip),%xmm3
nop
mov    %rcx,-0x40(%rax)
movq   %rcx,%xmm4
lea    0x1(%rcx),%rdx
mov    %rdx,-0x38(%rax)
pshufd $0x44,%xmm4,%xmm4
movdqa %xmm4,%xmm5
paddq  %xmm0,%xmm5
movdqa %xmm5,-0x30(%rax)
movdqa %xmm4,%xmm5
paddq  %xmm1,%xmm5
movdqa %xmm5,-0x20(%rax)
movdqa %xmm4,%xmm5
paddq  %xmm2,%xmm5
movdqa %xmm5,-0x10(%rax)
paddq  %xmm3,%xmm4
movdqa %xmm4,(%rax)
add    $0x50,%rax
mov    %rdx,%rcx
cmp    $0xa,%rdx
jne    1270 <main+0x160>
lea    0x640(%rsp),%rbx
xor    %r14d,%r14d
mov    $0x320,%edx
mov    %rbx,%rdi
xor    %esi,%esi
call   1030 <memset@plt>
nopl   0x0(%rax)
lea    (%r14,%r14,4),%rax
shl    $0x4,%rax
mov    0x320(%rsp,%rax,1),%r8
mov    0x328(%rsp,%rax,1),%r9
mov    0x330(%rsp,%rax,1),%r10
mov    0x338(%rsp,%rax,1),%r11
mov    0x340(%rsp,%rax,1),%r15
mov    0x348(%rsp,%rax,1),%r12
mov    0x350(%rsp,%rax,1),%r13
mov    0x358(%rsp,%rax,1),%rdx
mov    0x360(%rsp,%rax,1),%rsi
mov    0x368(%rsp,%rax,1),%rdi
xor    %eax,%eax
nopw   0x0(%rax,%rax,1)
mov    (%rsp,%rax,8),%rcx
imul   %r8,%rcx
add    (%rbx,%rax,8),%rcx
mov    0x50(%rsp,%rax,8),%rbp
imul   %r9,%rbp
add    %rcx,%rbp
mov    0xa0(%rsp,%rax,8),%rcx
imul   %r10,%rcx
add    %rbp,%rcx
mov    0xf0(%rsp,%rax,8),%rbp
imul   %r11,%rbp
add    %rcx,%rbp
mov    0x140(%rsp,%rax,8),%rcx
imul   %r15,%rcx
add    %rbp,%rcx
mov    0x190(%rsp,%rax,8),%rbp
imul   %r12,%rbp
add    %rcx,%rbp
mov    0x1e0(%rsp,%rax,8),%rcx
imul   %r13,%rcx
add    %rbp,%rcx
mov    0x230(%rsp,%rax,8),%rbp
imul   %rdx,%rbp
add    %rcx,%rbp
mov    0x280(%rsp,%rax,8),%rcx
imul   %rsi,%rcx
add    %rbp,%rcx
mov    0x2d0(%rsp,%rax,8),%rbp
imul   %rdi,%rbp
add    %rcx,%rbp
mov    %rbp,(%rbx,%rax,8)
add    $0x1,%rax
cmp    $0xa,%rax
jne    1340 <main+0x230>
add    $0x1,%r14
add    $0x50,%rbx
cmp    $0xa,%r14
jne    12e0 <main+0x1d0>
xor    %eax,%eax
add    $0x968,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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