int main() {
  int i;
  int a[100];
  for (i = 0; i < 100; i++)
    a[i] = i + 1;
#pragma acc data copy(a)
  {
#pragma acc kernels if (0)
    for (i = 0; i < 100; i++) {
      a[i] = 1;
    }
  }
  for (i = 0; i < 100; i++)
    if (a[i] != i + 1)
      return 1;
#pragma acc data copy(a)
  {
#pragma acc kernels
#pragma acc loop
    for (i = 0; i < 100; i++) {
      a[i] = i;
    }
  }
  for (i = 0; i < 100; i++)
    if (a[i] != i)
      return 2;
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x120,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x64,-0x8(%rbp)
jge    1142 <main+0x42>
mov    -0x8(%rbp),%ecx
add    $0x1,%ecx
movslq -0x8(%rbp),%rax
mov    %ecx,-0x1a0(%rbp,%rax,4)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1119 <main+0x19>
movl   $0x0,-0x8(%rbp)
cmpl   $0x64,-0x8(%rbp)
jge    1170 <main+0x70>
movslq -0x8(%rbp),%rax
movl   $0x1,-0x1a0(%rbp,%rax,4)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1149 <main+0x49>
movl   $0x0,-0x8(%rbp)
cmpl   $0x64,-0x8(%rbp)
jge    11b9 <main+0xb9>
movslq -0x8(%rbp),%rax
mov    -0x1a0(%rbp,%rax,4),%eax
mov    -0x8(%rbp),%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
je     11a6 <main+0xa6>
movl   $0x1,-0x4(%rbp)
jmp    1231 <main+0x131>
jmp    11ab <main+0xab>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1177 <main+0x77>
movl   $0x0,-0x8(%rbp)
cmpl   $0x64,-0x8(%rbp)
jge    11e6 <main+0xe6>
mov    -0x8(%rbp),%ecx
movslq -0x8(%rbp),%rax
mov    %ecx,-0x1a0(%rbp,%rax,4)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    11c0 <main+0xc0>
movl   $0x0,-0x8(%rbp)
cmpl   $0x64,-0x8(%rbp)
jge    122a <main+0x12a>
movslq -0x8(%rbp),%rax
mov    -0x1a0(%rbp,%rax,4),%eax
cmp    -0x8(%rbp),%eax
je     1217 <main+0x117>
movl   $0x2,-0x4(%rbp)
jmp    1231 <main+0x131>
jmp    121c <main+0x11c>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    11ed <main+0xed>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x120,%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,-0x80(%rsp)
movaps %xmm0,-0x70(%rsp)
movaps %xmm0,-0x60(%rsp)
movaps %xmm0,-0x50(%rsp)
movaps %xmm0,-0x40(%rsp)
movaps %xmm0,-0x30(%rsp)
movaps %xmm0,-0x20(%rsp)
movaps %xmm0,-0x10(%rsp)
movaps %xmm0,(%rsp)
movaps %xmm0,0x10(%rsp)
movaps %xmm0,0x20(%rsp)
movaps %xmm0,0x30(%rsp)
movaps %xmm0,0x40(%rsp)
movaps %xmm0,0x50(%rsp)
movaps %xmm0,0x60(%rsp)
movaps %xmm0,0x70(%rsp)
movaps %xmm0,0x80(%rsp)
movaps %xmm0,0x90(%rsp)
movaps %xmm0,0xa0(%rsp)
movaps %xmm0,0xb0(%rsp)
movaps %xmm0,0xc0(%rsp)
movaps %xmm0,0xd0(%rsp)
movaps %xmm0,0xe0(%rsp)
movaps %xmm0,0xf0(%rsp)
movaps %xmm0,0x100(%rsp)
mov    $0x3,%ecx
xor    %edx,%edx
mov    $0x1,%eax
nopl   (%rax)
cmp    $0x67,%rcx
je     12f8 <main+0x1f8>
mov    -0x8c(%rsp,%rcx,4),%esi
mov    %rdx,%rdi
or     $0x1,%rdi
cmp    %rsi,%rdi
jne    12f0 <main+0x1f0>
mov    -0x88(%rsp,%rcx,4),%esi
mov    %rdx,%rdi
or     $0x2,%rdi
cmp    %rsi,%rdi
jne    12f0 <main+0x1f0>
mov    -0x84(%rsp,%rcx,4),%esi
mov    %rdx,%rdi
or     $0x3,%rdi
cmp    %rsi,%rdi
jne    12f0 <main+0x1f0>
mov    -0x80(%rsp,%rcx,4),%esi
add    $0x4,%rdx
add    $0x4,%rcx
cmp    %rsi,%rdx
je     12a0 <main+0x1a0>
add    $0x118,%rsp
ret
movaps 0xe41(%rip),%xmm0
movaps %xmm0,-0x80(%rsp)
movaps 0xe45(%rip),%xmm0
movaps %xmm0,-0x70(%rsp)
movaps 0xe49(%rip),%xmm0
movaps %xmm0,-0x60(%rsp)
movaps 0xe4d(%rip),%xmm0
movaps %xmm0,-0x50(%rsp)
movaps 0xe51(%rip),%xmm0
movaps %xmm0,-0x40(%rsp)
movaps 0xe55(%rip),%xmm0
movaps %xmm0,-0x30(%rsp)
movaps 0xe59(%rip),%xmm0
movaps %xmm0,-0x20(%rsp)
movaps 0xe5d(%rip),%xmm0
movaps %xmm0,-0x10(%rsp)
movaps 0xe61(%rip),%xmm0
movaps %xmm0,(%rsp)
movaps 0xe66(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps 0xe6a(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movaps 0xe6e(%rip),%xmm0
movaps %xmm0,0x30(%rsp)
movaps 0xe72(%rip),%xmm0
movaps %xmm0,0x40(%rsp)
movaps 0xe76(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
movaps 0xe7a(%rip),%xmm0
movaps %xmm0,0x60(%rsp)
movaps 0xe7e(%rip),%xmm0
movaps %xmm0,0x70(%rsp)
movaps 0xe82(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
movaps 0xe83(%rip),%xmm0
movaps %xmm0,0x90(%rsp)
movaps 0xe84(%rip),%xmm0
movaps %xmm0,0xa0(%rsp)
movaps 0xe85(%rip),%xmm0
movaps %xmm0,0xb0(%rsp)
movaps 0xe86(%rip),%xmm0
movaps %xmm0,0xc0(%rsp)
movaps 0xe87(%rip),%xmm0
movaps %xmm0,0xd0(%rsp)
movaps 0xe88(%rip),%xmm0
movaps %xmm0,0xe0(%rsp)
movaps 0xe89(%rip),%xmm0
movaps %xmm0,0xf0(%rsp)
movaps 0xe8a(%rip),%xmm0
movaps %xmm0,0x100(%rsp)
xor    %ecx,%ecx
mov    $0x2,%eax
cs nopw 0x0(%rax,%rax,1)
nop
mov    -0x80(%rsp,%rcx,4),%edx
cmp    %rdx,%rcx
jne    12f0 <main+0x1f0>
mov    -0x7c(%rsp,%rcx,4),%esi
lea    0x1(%rcx),%rdx
cmp    %rsi,%rdx
jne    12f0 <main+0x1f0>
mov    -0x78(%rsp,%rcx,4),%esi
add    $0x1,%rdx
cmp    %rsi,%rdx
jne    12f0 <main+0x1f0>
mov    -0x74(%rsp,%rcx,4),%esi
add    $0x1,%rdx
cmp    %rsi,%rdx
jne    12f0 <main+0x1f0>
mov    -0x70(%rsp,%rcx,4),%ecx
add    $0x1,%rdx
cmp    %rcx,%rdx
jne    12f0 <main+0x1f0>
add    $0x1,%rdx
mov    %rdx,%rcx
cmp    $0x64,%rdx
jne    1450 <main+0x350>
xor    %eax,%eax
add    $0x118,%rsp
ret

LLVM IR (-O0):
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca [100 x i32]
store i32 0, i32* %1
store i32 0, i32* %2
br label %4
4: ; preds = %13, %0
%5 = load i32, i32* %2
%6 = icmp slt i32 %5, 100
br i1 %6, label %7, label %16
7: ; preds = %4
%8 = load i32, i32* %2
%9 = add nsw i32 %8, 1
%10 = load i32, i32* %2
%11 = sext i32 %10 to i64
%12 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %11
store i32 %9, i32* %12
br label %13
13: ; preds = %7
%14 = load i32, i32* %2
%15 = add nsw i32 %14, 1
store i32 %15, i32* %2
br label %4
16: ; preds = %4
store i32 0, i32* %2
br label %17
17: ; preds = %24, %16
%18 = load i32, i32* %2
%19 = icmp slt i32 %18, 100
br i1 %19, label %20, label %27
20: ; preds = %17
%21 = load i32, i32* %2
%22 = sext i32 %21 to i64
%23 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %22
store i32 1, i32* %23
br label %24
24: ; preds = %20
%25 = load i32, i32* %2
%26 = add nsw i32 %25, 1
store i32 %26, i32* %2
br label %17
27: ; preds = %17
store i32 0, i32* %2
br label %28
28: ; preds = %41, %27
%29 = load i32, i32* %2
%30 = icmp slt i32 %29, 100
br i1 %30, label %31, label %44
31: ; preds = %28
%32 = load i32, i32* %2
%33 = sext i32 %32 to i64
%34 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %33
%35 = load i32, i32* %34
%36 = load i32, i32* %2
%37 = add nsw i32 %36, 1
%38 = icmp ne i32 %35, %37
br i1 %38, label %39, label %40
39: ; preds = %31
store i32 1, i32* %1
br label %73
40: ; preds = %31
br label %41
41: ; preds = %40
%42 = load i32, i32* %2
%43 = add nsw i32 %42, 1
store i32 %43, i32* %2
br label %28
44: ; preds = %28
store i32 0, i32* %2
br label %45
45: ; preds = %53, %44
%46 = load i32, i32* %2
%47 = icmp slt i32 %46, 100
br i1 %47, label %48, label %56
48: ; preds = %45
%49 = load i32, i32* %2
%50 = load i32, i32* %2
%51 = sext i32 %50 to i64
%52 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %51
store i32 %49, i32* %52
br label %53
53: ; preds = %48
%54 = load i32, i32* %2
%55 = add nsw i32 %54, 1
store i32 %55, i32* %2
br label %45
56: ; preds = %45
store i32 0, i32* %2
br label %57
57: ; preds = %69, %56
%58 = load i32, i32* %2
%59 = icmp slt i32 %58, 100
br i1 %59, label %60, label %72
60: ; preds = %57
%61 = load i32, i32* %2
%62 = sext i32 %61 to i64
%63 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %62
%64 = load i32, i32* %63
%65 = load i32, i32* %2
%66 = icmp ne i32 %64, %65
br i1 %66, label %67, label %68
67: ; preds = %60
store i32 2, i32* %1
br label %73
68: ; preds = %60
br label %69
69: ; preds = %68
%70 = load i32, i32* %2
%71 = add nsw i32 %70, 1
store i32 %71, i32* %2
br label %57
72: ; preds = %57
store i32 0, i32* %1
br label %73
73: ; preds = %72, %67, %39
%74 = load i32, i32* %1
ret i32 %74
}

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