#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*/ abort();
int main(void) {
  int i, j;
  int sum = 0;
  int A[100 * 100];
  int B[100 * 100];
  for (i = 0; i < 100; i++)
    for (j = 0; j < 100; j++) {
      A[i * 100 + j] = j;
      B[i * 100 + j] = j;
    }
  for (i = 0; i < 100; i++)
    for (j = 0; j < 100; j++)
      A[i * 100 + j] += B[j * 100 + i];
  for (i = 0; i < 100; i++)
    for (j = 0; j < 100; j++)
      sum += A[i * 100 + j];
  if (sum != 990000)
    abort();
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x13890,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x10(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x64,-0x8(%rbp)
jge    1192 <main+0x82>
movl   $0x0,-0xc(%rbp)
cmpl   $0x64,-0xc(%rbp)
jge    117f <main+0x6f>
mov    -0xc(%rbp),%ecx
imul   $0x64,-0x8(%rbp),%eax
add    -0xc(%rbp),%eax
cltq
mov    %ecx,-0x9c50(%rbp,%rax,4)
mov    -0xc(%rbp),%ecx
imul   $0x64,-0x8(%rbp),%eax
add    -0xc(%rbp),%eax
cltq
mov    %ecx,-0x13890(%rbp,%rax,4)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1141 <main+0x31>
jmp    1184 <main+0x74>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1130 <main+0x20>
movl   $0x0,-0x8(%rbp)
cmpl   $0x64,-0x8(%rbp)
jge    11fc <main+0xec>
movl   $0x0,-0xc(%rbp)
cmpl   $0x64,-0xc(%rbp)
jge    11e9 <main+0xd9>
imul   $0x64,-0xc(%rbp),%eax
add    -0x8(%rbp),%eax
cltq
mov    -0x13890(%rbp,%rax,4),%ecx
imul   $0x64,-0x8(%rbp),%eax
add    -0xc(%rbp),%eax
cltq
add    -0x9c50(%rbp,%rax,4),%ecx
mov    %ecx,-0x9c50(%rbp,%rax,4)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    11aa <main+0x9a>
jmp    11ee <main+0xde>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1199 <main+0x89>
movl   $0x0,-0x8(%rbp)
cmpl   $0x64,-0x8(%rbp)
jge    1255 <main+0x145>
movl   $0x0,-0xc(%rbp)
cmpl   $0x64,-0xc(%rbp)
jge    1242 <main+0x132>
imul   $0x64,-0x8(%rbp),%eax
add    -0xc(%rbp),%eax
cltq
mov    -0x9c50(%rbp,%rax,4),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1214 <main+0x104>
jmp    1247 <main+0x137>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1203 <main+0xf3>
cmpl   $0xf1b30,-0x10(%rbp)
je     1269 <main+0x159>
mov    $0x0,%al
call   1030 <abort@plt>
xor    %eax,%eax
add    $0x13890,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
sub    $0x13888,%rsp
mov    $0x180,%eax
movaps 0xf7d(%rip),%xmm2
movaps 0xf86(%rip),%xmm3
movaps 0xf8f(%rip),%xmm4
movaps 0xf98(%rip),%xmm5
movaps 0xfa1(%rip),%xmm6
movaps 0xfaa(%rip),%xmm7
movaps 0xfb2(%rip),%xmm8
movaps 0xfba(%rip),%xmm9
movaps 0xfc2(%rip),%xmm10
movaps 0xfca(%rip),%xmm11
movaps 0xfd2(%rip),%xmm12
movaps 0xfda(%rip),%xmm13
movaps 0xfe2(%rip),%xmm14
movaps 0xfea(%rip),%xmm15
movdqa 0xff2(%rip),%xmm0
xchg   %ax,%ax
movaps 0xe69(%rip),%xmm1
movaps %xmm1,-0x180(%rsp,%rax,1)
ff
movaps %xmm1,0x9ac0(%rsp,%rax,1)
movaps 0xe62(%rip),%xmm1
movaps %xmm1,-0x170(%rsp,%rax,1)
ff
movaps %xmm1,0x9ad0(%rsp,%rax,1)
movaps 0xe5b(%rip),%xmm1
movaps %xmm1,-0x160(%rsp,%rax,1)
ff
movaps %xmm1,0x9ae0(%rsp,%rax,1)
movaps 0xe54(%rip),%xmm1
movaps %xmm1,-0x150(%rsp,%rax,1)
ff
movaps %xmm1,0x9af0(%rsp,%rax,1)
movaps 0xe4d(%rip),%xmm1
movaps %xmm1,-0x140(%rsp,%rax,1)
ff
movaps %xmm1,0x9b00(%rsp,%rax,1)
movaps 0xe46(%rip),%xmm1
movaps %xmm1,-0x130(%rsp,%rax,1)
ff
movaps %xmm1,0x9b10(%rsp,%rax,1)
movaps 0xe3f(%rip),%xmm1
movaps %xmm1,-0x120(%rsp,%rax,1)
ff
movaps %xmm1,0x9b20(%rsp,%rax,1)
movaps 0xe38(%rip),%xmm1
movaps %xmm1,-0x110(%rsp,%rax,1)
ff
movaps %xmm1,0x9b30(%rsp,%rax,1)
movaps 0xe31(%rip),%xmm1
movaps %xmm1,-0x100(%rsp,%rax,1)
ff
movaps %xmm1,0x9b40(%rsp,%rax,1)
movdqa 0xe29(%rip),%xmm1
movdqa %xmm1,-0xf0(%rsp,%rax,1)
ff ff
movdqa %xmm1,0x9b50(%rsp,%rax,1)
movaps %xmm2,-0xe0(%rsp,%rax,1)
ff
movaps %xmm2,0x9b60(%rsp,%rax,1)
movaps %xmm3,-0xd0(%rsp,%rax,1)
ff
movaps %xmm3,0x9b70(%rsp,%rax,1)
movaps %xmm4,-0xc0(%rsp,%rax,1)
ff
movaps %xmm4,0x9b80(%rsp,%rax,1)
movaps %xmm5,-0xb0(%rsp,%rax,1)
ff
movaps %xmm5,0x9b90(%rsp,%rax,1)
movaps %xmm6,-0xa0(%rsp,%rax,1)
ff
movaps %xmm6,0x9ba0(%rsp,%rax,1)
movaps %xmm7,-0x90(%rsp,%rax,1)
ff
movaps %xmm7,0x9bb0(%rsp,%rax,1)
movaps %xmm8,-0x80(%rsp,%rax,1)
movaps %xmm8,0x9bc0(%rsp,%rax,1)
movaps %xmm9,-0x70(%rsp,%rax,1)
movaps %xmm9,0x9bd0(%rsp,%rax,1)
movaps %xmm10,-0x60(%rsp,%rax,1)
movaps %xmm10,0x9be0(%rsp,%rax,1)
movaps %xmm11,-0x50(%rsp,%rax,1)
movaps %xmm11,0x9bf0(%rsp,%rax,1)
movaps %xmm12,-0x40(%rsp,%rax,1)
movaps %xmm12,0x9c00(%rsp,%rax,1)
movaps %xmm13,-0x30(%rsp,%rax,1)
movaps %xmm13,0x9c10(%rsp,%rax,1)
movaps %xmm14,-0x20(%rsp,%rax,1)
movaps %xmm14,0x9c20(%rsp,%rax,1)
movaps %xmm15,-0x10(%rsp,%rax,1)
movaps %xmm15,0x9c30(%rsp,%rax,1)
movdqa %xmm0,(%rsp,%rax,1)
movdqa %xmm0,0x9c40(%rsp,%rax,1)
add    $0x190,%rax
cmp    $0x9dc0,%rax
jne    1190 <main+0x80>
lea    0x9c40(%rsp),%r8
mov    %rsp,%rcx
xor    %edx,%edx
xchg   %ax,%ax
mov    $0x1,%esi
mov    %r8,%rdi
nopl   0x0(%rax,%rax,1)
mov    (%rdi),%eax
add    %eax,-0x4(%rcx,%rsi,4)
mov    0x190(%rdi),%eax
add    %eax,(%rcx,%rsi,4)
add    $0x320,%rdi
add    $0x2,%rsi
cmp    $0x65,%rsi
jne    1390 <main+0x280>
add    $0x1,%rdx
add    $0x4,%r8
add    $0x190,%rcx
cmp    $0x64,%rdx
jne    1380 <main+0x270>
xor    %ecx,%ecx
mov    $0x180,%eax
nopl   0x0(%rax)
movd   %ecx,%xmm0
paddd  -0x180(%rsp,%rax,1),%xmm0
ff ff
paddd  -0x170(%rsp,%rax,1),%xmm0
ff ff
paddd  -0x160(%rsp,%rax,1),%xmm0
ff ff
paddd  -0x150(%rsp,%rax,1),%xmm0
ff ff
paddd  -0x140(%rsp,%rax,1),%xmm0
ff ff
paddd  -0x130(%rsp,%rax,1),%xmm0
ff ff
paddd  -0x120(%rsp,%rax,1),%xmm0
ff ff
paddd  -0x110(%rsp,%rax,1),%xmm0
ff ff
paddd  -0x100(%rsp,%rax,1),%xmm0
ff ff
paddd  -0xf0(%rsp,%rax,1),%xmm0
ff ff
paddd  -0xe0(%rsp,%rax,1),%xmm0
ff ff
paddd  -0xd0(%rsp,%rax,1),%xmm0
ff ff
paddd  -0xc0(%rsp,%rax,1),%xmm0
ff ff
paddd  -0xb0(%rsp,%rax,1),%xmm0
ff ff
paddd  -0xa0(%rsp,%rax,1),%xmm0
ff ff
paddd  -0x90(%rsp,%rax,1),%xmm0
ff ff
paddd  -0x80(%rsp,%rax,1),%xmm0
paddd  -0x70(%rsp,%rax,1),%xmm0
paddd  -0x60(%rsp,%rax,1),%xmm0
paddd  -0x50(%rsp,%rax,1),%xmm0
paddd  -0x40(%rsp,%rax,1),%xmm0
paddd  -0x30(%rsp,%rax,1),%xmm0
paddd  -0x20(%rsp,%rax,1),%xmm0
paddd  -0x10(%rsp,%rax,1),%xmm0
paddd  (%rsp,%rax,1),%xmm0
pshufd $0xee,%xmm0,%xmm1
paddd  %xmm0,%xmm1
pshufd $0x55,%xmm1,%xmm0
paddd  %xmm1,%xmm0
movd   %xmm0,%ecx
add    $0x190,%rax
cmp    $0x9dc0,%rax
jne    13d0 <main+0x2c0>
cmp    $0xf1b30,%ecx
jne    14d3 <main+0x3c3>
xor    %eax,%eax
add    $0x13888,%rsp
ret
xor    %eax,%eax
call   1030 <abort@plt>

LLVM IR (-O0):
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca [10000 x i32]
%6 = alloca [10000 x i32]
store i32 0, i32* %1
store i32 0, i32* %4
store i32 0, i32* %2
br label %7
7: ; preds = %33, %0
%8 = load i32, i32* %2
%9 = icmp slt i32 %8, 100
br i1 %9, label %10, label %36
10: ; preds = %7
store i32 0, i32* %3
br label %11
11: ; preds = %29, %10
%12 = load i32, i32* %3
%13 = icmp slt i32 %12, 100
br i1 %13, label %14, label %32
14: ; preds = %11
%15 = load i32, i32* %3
%16 = load i32, i32* %2
%17 = mul nsw i32 %16, 100
%18 = load i32, i32* %3
%19 = add nsw i32 %17, %18
%20 = sext i32 %19 to i64
%21 = getelementptr inbounds [10000 x i32], [10000 x i32]* %5, i64 0, i64 %20
store i32 %15, i32* %21
%22 = load i32, i32* %3
%23 = load i32, i32* %2
%24 = mul nsw i32 %23, 100
%25 = load i32, i32* %3
%26 = add nsw i32 %24, %25
%27 = sext i32 %26 to i64
%28 = getelementptr inbounds [10000 x i32], [10000 x i32]* %6, i64 0, i64 %27
store i32 %22, i32* %28
br label %29
29: ; preds = %14
%30 = load i32, i32* %3
%31 = add nsw i32 %30, 1
store i32 %31, i32* %3
br label %11
32: ; preds = %11
br label %33
33: ; preds = %32
%34 = load i32, i32* %2
%35 = add nsw i32 %34, 1
store i32 %35, i32* %2
br label %7
36: ; preds = %7
store i32 0, i32* %2
br label %37
37: ; preds = %64, %36
%38 = load i32, i32* %2
%39 = icmp slt i32 %38, 100
br i1 %39, label %40, label %67
40: ; preds = %37
store i32 0, i32* %3
br label %41
41: ; preds = %60, %40
%42 = load i32, i32* %3
%43 = icmp slt i32 %42, 100
br i1 %43, label %44, label %63
44: ; preds = %41
%45 = load i32, i32* %3
%46 = mul nsw i32 %45, 100
%47 = load i32, i32* %2
%48 = add nsw i32 %46, %47
%49 = sext i32 %48 to i64
%50 = getelementptr inbounds [10000 x i32], [10000 x i32]* %6, i64 0, i64 %49
%51 = load i32, i32* %50
%52 = load i32, i32* %2
%53 = mul nsw i32 %52, 100
%54 = load i32, i32* %3
%55 = add nsw i32 %53, %54
%56 = sext i32 %55 to i64
%57 = getelementptr inbounds [10000 x i32], [10000 x i32]* %5, i64 0, i64 %56
%58 = load i32, i32* %57
%59 = add nsw i32 %58, %51
store i32 %59, i32* %57
br label %60
60: ; preds = %44
%61 = load i32, i32* %3
%62 = add nsw i32 %61, 1
store i32 %62, i32* %3
br label %41
63: ; preds = %41
br label %64
64: ; preds = %63
%65 = load i32, i32* %2
%66 = add nsw i32 %65, 1
store i32 %66, i32* %2
br label %37
67: ; preds = %37
store i32 0, i32* %2
br label %68
68: ; preds = %89, %67
%69 = load i32, i32* %2
%70 = icmp slt i32 %69, 100
br i1 %70, label %71, label %92
71: ; preds = %68
store i32 0, i32* %3
br label %72
72: ; preds = %85, %71
%73 = load i32, i32* %3
%74 = icmp slt i32 %73, 100
br i1 %74, label %75, label %88
75: ; preds = %72
%76 = load i32, i32* %2
%77 = mul nsw i32 %76, 100
%78 = load i32, i32* %3
%79 = add nsw i32 %77, %78
%80 = sext i32 %79 to i64
%81 = getelementptr inbounds [10000 x i32], [10000 x i32]* %5, i64 0, i64 %80
%82 = load i32, i32* %81
%83 = load i32, i32* %4
%84 = add nsw i32 %83, %82
store i32 %84, i32* %4
br label %85
85: ; preds = %75
%86 = load i32, i32* %3
%87 = add nsw i32 %86, 1
store i32 %87, i32* %3
br label %72
88: ; preds = %72
br label %89
89: ; preds = %88
%90 = load i32, i32* %2
%91 = add nsw i32 %90, 1
store i32 %91, i32* %2
br label %68
92: ; preds = %68
%93 = load i32, i32* %4
%94 = icmp ne i32 %93, 990000
br i1 %94, label %95, label %97
95: ; preds = %92
%96 = call i32 (...) @abort()
unreachable
97: ; preds = %92
ret i32 0
}

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