int main() {
  int array[100];
  int i, j;
  for (i = 0; i < 100; i++) {
    array[i] = i;
  }
  int sum = 0;
#pragma acc parallel loop reduction(+ : sum)
  for (i = 0; i < 100; i++) {
    sum += array[i];
  }
  if (sum != 4950)
    return 1;
  sum = 0;
#pragma acc parallel loop reduction(+ : sum) copy(sum)
  for (i = 0; i < 100; i++) {
    sum += array[i];
  }
  if (sum != 4950)
    return 2;
  sum = 0;
#pragma acc data copy(sum)
  {
#pragma acc parallel loop reduction(+ : sum)
    for (i = 0; i < 50; i++) {
      sum += array[i];
    }
  }
  if (sum != 1225)
    return 3;
  sum = 100;
#pragma acc data copy(sum)
  {
#pragma acc parallel loop reduction(+ : sum)
    for (i = 50; i < 100; i++) {
      sum += array[i];
    }
  }
  if (sum != 3825)
    return 4;
  sum = 50;
#pragma acc parallel loop reduction(+ : sum) vector_length(32)
  for (i = 0; i < 100; i++)
    sum += array[i];
  if (sum != 5000)
    return 5;
  sum = 50;
#pragma acc parallel loop reduction(+ : sum) vector_length(512)
  for (i = 0; i < 100; i++)
    sum += array[i];
  if (sum != 5000)
    return 6;
  sum = -1;
#pragma acc parallel loop reduction(+ : sum) async(3)
  for (i = 0; i < 50000; i++)
    sum += i;
#pragma acc wait(3)
  if (sum != 1249974999)
    return 7;
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x130,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x1a4(%rbp)
cmpl   $0x64,-0x1a4(%rbp)
jge    1151 <main+0x51>
mov    -0x1a4(%rbp),%ecx
movslq -0x1a4(%rbp),%rax
mov    %ecx,-0x1a0(%rbp,%rax,4)
mov    -0x1a4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1a4(%rbp)
jmp    111c <main+0x1c>
movl   $0x0,-0x1ac(%rbp)
movl   $0x0,-0x1a4(%rbp)
cmpl   $0x64,-0x1a4(%rbp)
jge    11a0 <main+0xa0>
movslq -0x1a4(%rbp),%rax
mov    -0x1a0(%rbp,%rax,4),%eax
add    -0x1ac(%rbp),%eax
mov    %eax,-0x1ac(%rbp)
mov    -0x1a4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1a4(%rbp)
jmp    1165 <main+0x65>
cmpl   $0x1356,-0x1ac(%rbp)
je     11bc <main+0xbc>
movl   $0x1,-0x4(%rbp)
jmp    1440 <main+0x340>
movl   $0x0,-0x1ac(%rbp)
movl   $0x0,-0x1a4(%rbp)
cmpl   $0x64,-0x1a4(%rbp)
jge    120b <main+0x10b>
movslq -0x1a4(%rbp),%rax
mov    -0x1a0(%rbp,%rax,4),%eax
add    -0x1ac(%rbp),%eax
mov    %eax,-0x1ac(%rbp)
mov    -0x1a4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1a4(%rbp)
jmp    11d0 <main+0xd0>
cmpl   $0x1356,-0x1ac(%rbp)
je     1227 <main+0x127>
movl   $0x2,-0x4(%rbp)
jmp    1440 <main+0x340>
movl   $0x0,-0x1ac(%rbp)
movl   $0x0,-0x1a4(%rbp)
cmpl   $0x32,-0x1a4(%rbp)
jge    1276 <main+0x176>
movslq -0x1a4(%rbp),%rax
mov    -0x1a0(%rbp,%rax,4),%eax
add    -0x1ac(%rbp),%eax
mov    %eax,-0x1ac(%rbp)
mov    -0x1a4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1a4(%rbp)
jmp    123b <main+0x13b>
cmpl   $0x4c9,-0x1ac(%rbp)
je     1292 <main+0x192>
movl   $0x3,-0x4(%rbp)
jmp    1440 <main+0x340>
movl   $0x64,-0x1ac(%rbp)
movl   $0x32,-0x1a4(%rbp)
cmpl   $0x64,-0x1a4(%rbp)
jge    12e1 <main+0x1e1>
movslq -0x1a4(%rbp),%rax
mov    -0x1a0(%rbp,%rax,4),%eax
add    -0x1ac(%rbp),%eax
mov    %eax,-0x1ac(%rbp)
mov    -0x1a4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1a4(%rbp)
jmp    12a6 <main+0x1a6>
cmpl   $0xef1,-0x1ac(%rbp)
je     12fd <main+0x1fd>
movl   $0x4,-0x4(%rbp)
jmp    1440 <main+0x340>
movl   $0x32,-0x1ac(%rbp)
movl   $0x0,-0x1a4(%rbp)
cmpl   $0x64,-0x1a4(%rbp)
jge    134c <main+0x24c>
movslq -0x1a4(%rbp),%rax
mov    -0x1a0(%rbp,%rax,4),%eax
add    -0x1ac(%rbp),%eax
mov    %eax,-0x1ac(%rbp)
mov    -0x1a4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1a4(%rbp)
jmp    1311 <main+0x211>
cmpl   $0x1388,-0x1ac(%rbp)
je     1368 <main+0x268>
movl   $0x5,-0x4(%rbp)
jmp    1440 <main+0x340>
movl   $0x32,-0x1ac(%rbp)
movl   $0x0,-0x1a4(%rbp)
cmpl   $0x64,-0x1a4(%rbp)
jge    13b7 <main+0x2b7>
movslq -0x1a4(%rbp),%rax
mov    -0x1a0(%rbp,%rax,4),%eax
add    -0x1ac(%rbp),%eax
mov    %eax,-0x1ac(%rbp)
mov    -0x1a4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1a4(%rbp)
jmp    137c <main+0x27c>
cmpl   $0x1388,-0x1ac(%rbp)
je     13d3 <main+0x2d3>
movl   $0x6,-0x4(%rbp)
jmp    1440 <main+0x340>
movl   $0xffffffff,-0x1ac(%rbp)
ff ff ff
movl   $0x0,-0x1a4(%rbp)
cmpl   $0xc350,-0x1a4(%rbp)
jge    141d <main+0x31d>
mov    -0x1a4(%rbp),%eax
add    -0x1ac(%rbp),%eax
mov    %eax,-0x1ac(%rbp)
mov    -0x1a4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1a4(%rbp)
jmp    13e7 <main+0x2e7>
cmpl   $0x4a811ad7,-0x1ac(%rbp)
1a 81 4a
je     1439 <main+0x339>
movl   $0x7,-0x4(%rbp)
jmp    1440 <main+0x340>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x130,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
sub    $0x118,%rsp
movaps 0xef2(%rip),%xmm0
movaps %xmm0,-0x80(%rsp)
movaps 0xef6(%rip),%xmm0
movaps %xmm0,-0x70(%rsp)
movaps 0xefa(%rip),%xmm0
movaps %xmm0,-0x60(%rsp)
movaps 0xefe(%rip),%xmm0
movaps %xmm0,-0x50(%rsp)
movaps 0xf02(%rip),%xmm0
movaps %xmm0,-0x40(%rsp)
movaps 0xf06(%rip),%xmm0
movaps %xmm0,-0x30(%rsp)
movaps 0xf0a(%rip),%xmm0
movaps %xmm0,-0x20(%rsp)
movaps 0xf0e(%rip),%xmm0
movaps %xmm0,-0x10(%rsp)
movaps 0xf12(%rip),%xmm0
movaps %xmm0,(%rsp)
movaps 0xf17(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps 0xf1b(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movaps 0xf1f(%rip),%xmm0
movaps %xmm0,0x30(%rsp)
movaps 0xf23(%rip),%xmm0
movaps %xmm0,0x40(%rsp)
movaps 0xf27(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
movaps 0xf2b(%rip),%xmm0
movaps %xmm0,0x60(%rsp)
movaps 0xf2f(%rip),%xmm0
movaps %xmm0,0x70(%rsp)
movaps 0xf33(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
movaps 0xf34(%rip),%xmm0
movaps %xmm0,0x90(%rsp)
movaps 0xf35(%rip),%xmm0
movaps %xmm0,0xa0(%rsp)
movaps 0xf36(%rip),%xmm0
movaps %xmm0,0xb0(%rsp)
movaps 0xf37(%rip),%xmm0
movaps %xmm0,0xc0(%rsp)
movaps 0xf38(%rip),%xmm0
movaps %xmm0,0xd0(%rsp)
movaps 0xf39(%rip),%xmm0
movaps %xmm0,0xe0(%rsp)
movaps 0xf3a(%rip),%xmm0
movaps %xmm0,0xf0(%rsp)
movaps 0xf3b(%rip),%xmm0
movaps %xmm0,0x100(%rsp)
movdqa -0x70(%rsp),%xmm0
paddd  -0x80(%rsp),%xmm0
paddd  -0x60(%rsp),%xmm0
paddd  -0x50(%rsp),%xmm0
paddd  -0x40(%rsp),%xmm0
paddd  -0x30(%rsp),%xmm0
paddd  0xf17(%rip),%xmm0
pshufd $0xee,%xmm0,%xmm1
paddd  %xmm0,%xmm1
pshufd $0x55,%xmm1,%xmm0
paddd  %xmm1,%xmm0
movd   %xmm0,%ecx
mov    $0x1,%eax
cmp    $0x1356,%ecx
jne    1672 <main+0x572>
movdqa -0x70(%rsp),%xmm0
paddd  -0x80(%rsp),%xmm0
paddd  -0x60(%rsp),%xmm0
paddd  -0x50(%rsp),%xmm0
paddd  -0x40(%rsp),%xmm0
paddd  -0x30(%rsp),%xmm0
paddd  -0x20(%rsp),%xmm0
paddd  -0x10(%rsp),%xmm0
paddd  (%rsp),%xmm0
paddd  0x10(%rsp),%xmm0
paddd  0x20(%rsp),%xmm0
paddd  0x30(%rsp),%xmm0
paddd  0x40(%rsp),%xmm0
paddd  0x50(%rsp),%xmm0
paddd  0x60(%rsp),%xmm0
paddd  0x70(%rsp),%xmm0
paddd  0x80(%rsp),%xmm0
paddd  0x90(%rsp),%xmm0
paddd  0xa0(%rsp),%xmm0
paddd  0xb0(%rsp),%xmm0
paddd  0xc0(%rsp),%xmm0
paddd  0xd0(%rsp),%xmm0
paddd  0xe0(%rsp),%xmm0
paddd  0xf0(%rsp),%xmm0
paddd  0x100(%rsp),%xmm0
pshufd $0xee,%xmm0,%xmm1
paddd  %xmm0,%xmm1
pshufd $0x55,%xmm1,%xmm0
paddd  %xmm1,%xmm0
movd   %xmm0,%ecx
mov    $0x2,%eax
cmp    $0x1356,%ecx
jne    1672 <main+0x572>
movdqa -0x70(%rsp),%xmm0
paddd  -0x80(%rsp),%xmm0
paddd  -0x60(%rsp),%xmm0
paddd  -0x50(%rsp),%xmm0
paddd  -0x40(%rsp),%xmm0
paddd  -0x30(%rsp),%xmm0
paddd  -0x20(%rsp),%xmm0
paddd  -0x10(%rsp),%xmm0
paddd  (%rsp),%xmm0
paddd  0x10(%rsp),%xmm0
paddd  0x20(%rsp),%xmm0
paddd  0x30(%rsp),%xmm0
pshufd $0xee,%xmm0,%xmm1
paddd  %xmm0,%xmm1
pshufd $0x55,%xmm1,%xmm0
paddd  %xmm1,%xmm0
movd   %xmm0,%ecx
add    0x40(%rsp),%ecx
add    0x44(%rsp),%ecx
mov    $0x3,%eax
cmp    $0x4c9,%ecx
jne    1672 <main+0x572>
movdqu 0xf8(%rsp),%xmm0
movdqu 0xe8(%rsp),%xmm1
movdqu 0xd8(%rsp),%xmm2
movdqu 0xc8(%rsp),%xmm3
movdqu 0xb8(%rsp),%xmm4
paddd  %xmm3,%xmm4
paddd  %xmm2,%xmm4
paddd  %xmm1,%xmm4
movdqu 0xa8(%rsp),%xmm1
movdqu 0x98(%rsp),%xmm2
movdqu 0x88(%rsp),%xmm3
paddd  %xmm2,%xmm3
paddd  %xmm1,%xmm3
movdqu 0x48(%rsp),%xmm1
movdqu 0x58(%rsp),%xmm2
paddd  %xmm1,%xmm2
movdqu 0x68(%rsp),%xmm1
movdqu 0x78(%rsp),%xmm5
paddd  %xmm1,%xmm5
paddd  %xmm2,%xmm5
paddd  %xmm3,%xmm5
paddd  %xmm4,%xmm5
paddd  %xmm0,%xmm5
paddd  0xd1f(%rip),%xmm5
pshufd $0xee,%xmm5,%xmm0
paddd  %xmm5,%xmm0
pshufd $0x55,%xmm0,%xmm1
paddd  %xmm0,%xmm1
movd   %xmm1,%ecx
add    0x108(%rsp),%ecx
add    0x10c(%rsp),%ecx
mov    $0x4,%eax
cmp    $0xef1,%ecx
jne    1672 <main+0x572>
movdqa -0x80(%rsp),%xmm0
paddd  -0x70(%rsp),%xmm0
paddd  -0x60(%rsp),%xmm0
paddd  -0x50(%rsp),%xmm0
paddd  -0x40(%rsp),%xmm0
paddd  -0x30(%rsp),%xmm0
paddd  -0x20(%rsp),%xmm0
paddd  -0x10(%rsp),%xmm0
paddd  (%rsp),%xmm0
paddd  0x10(%rsp),%xmm0
paddd  0x20(%rsp),%xmm0
paddd  0x30(%rsp),%xmm0
paddd  0x40(%rsp),%xmm0
paddd  0x50(%rsp),%xmm0
paddd  0x60(%rsp),%xmm0
paddd  0x70(%rsp),%xmm0
paddd  0x80(%rsp),%xmm0
paddd  0x90(%rsp),%xmm0
paddd  0xa0(%rsp),%xmm0
paddd  0xb0(%rsp),%xmm0
paddd  0xc0(%rsp),%xmm0
paddd  0xd0(%rsp),%xmm0
paddd  0xe0(%rsp),%xmm0
paddd  0xf0(%rsp),%xmm0
paddd  0x100(%rsp),%xmm0
paddd  0xc42(%rip),%xmm0
pshufd $0xee,%xmm0,%xmm1
paddd  %xmm0,%xmm1
pshufd $0x55,%xmm1,%xmm0
paddd  %xmm1,%xmm0
movd   %xmm0,%ecx
mov    $0x5,%eax
cmp    $0x1388,%ecx
jne    1672 <main+0x572>
movdqa -0x80(%rsp),%xmm0
paddd  -0x70(%rsp),%xmm0
paddd  -0x60(%rsp),%xmm0
paddd  -0x50(%rsp),%xmm0
paddd  -0x40(%rsp),%xmm0
paddd  -0x30(%rsp),%xmm0
paddd  -0x20(%rsp),%xmm0
paddd  -0x10(%rsp),%xmm0
paddd  (%rsp),%xmm0
paddd  0x10(%rsp),%xmm0
paddd  0x20(%rsp),%xmm0
paddd  0x30(%rsp),%xmm0
paddd  0x40(%rsp),%xmm0
paddd  0x50(%rsp),%xmm0
paddd  0x60(%rsp),%xmm0
paddd  0x70(%rsp),%xmm0
paddd  0x80(%rsp),%xmm0
paddd  0x90(%rsp),%xmm0
paddd  0xa0(%rsp),%xmm0
paddd  0xb0(%rsp),%xmm0
paddd  0xc0(%rsp),%xmm0
paddd  0xd0(%rsp),%xmm0
paddd  0xe0(%rsp),%xmm0
paddd  0xf0(%rsp),%xmm0
paddd  0x100(%rsp),%xmm0
paddd  0xb63(%rip),%xmm0
pshufd $0xee,%xmm0,%xmm1
paddd  %xmm0,%xmm1
pshufd $0x55,%xmm1,%xmm0
paddd  %xmm1,%xmm0
movd   %xmm0,%eax
xor    %ecx,%ecx
cmp    $0x1388,%eax
mov    $0x6,%eax
cmove  %ecx,%eax
add    $0x118,%rsp
ret

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

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