#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*/ check(int *, int *);
int main() {
  int i, a[100], b[100];
#pragma acc kernels copy(a)
  {
#pragma acc loop auto
    for (i = 0; i < 100; i++)
      a[i] = i;
  }
  for (i = 0; i < 100; i++)
    b[i] = i;
  check(a, b);
#pragma acc kernels copyout(a)
  {
#pragma acc loop independent
    for (i = 0; i < 100; i++)
      a[i] = i;
  }
  check(a, b);
#pragma acc kernels present_or_copy(a)
  {
#pragma acc loop seq
    for (i = 0; i < 100; i++)
      a[i] = i;
  }
  check(a, b);
#pragma acc kernels pcopyout(a) present_or_copyin(b)
  {
#pragma acc loop seq
    for (i = 0; i < 100; i++)
      a[i] = b[i];
  }
  check(a, b);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x330,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x64,-0x8(%rbp)
jge    114f <main+0x3f>
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    1129 <main+0x19>
movl   $0x0,-0x8(%rbp)
cmpl   $0x64,-0x8(%rbp)
jge    117c <main+0x6c>
mov    -0x8(%rbp),%ecx
movslq -0x8(%rbp),%rax
mov    %ecx,-0x330(%rbp,%rax,4)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1156 <main+0x46>
lea    -0x1a0(%rbp),%rdi
lea    -0x330(%rbp),%rsi
call   1030 <check@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x64,-0x8(%rbp)
jge    11bc <main+0xac>
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    1196 <main+0x86>
lea    -0x1a0(%rbp),%rdi
lea    -0x330(%rbp),%rsi
call   1030 <check@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x64,-0x8(%rbp)
jge    11fc <main+0xec>
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    11d6 <main+0xc6>
lea    -0x1a0(%rbp),%rdi
lea    -0x330(%rbp),%rsi
call   1030 <check@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x64,-0x8(%rbp)
jge    1244 <main+0x134>
movslq -0x8(%rbp),%rax
mov    -0x330(%rbp,%rax,4),%ecx
movslq -0x8(%rbp),%rax
mov    %ecx,-0x1a0(%rbp,%rax,4)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1216 <main+0x106>
lea    -0x1a0(%rbp),%rdi
lea    -0x330(%rbp),%rsi
call   1030 <check@plt>
xor    %eax,%eax
add    $0x330,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r14
push   %rbx
sub    $0x328,%rsp
movaps 0xecf(%rip),%xmm0
movaps %xmm0,(%rsp)
movaps 0xed4(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps 0xed8(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movaps 0xedc(%rip),%xmm0
movaps %xmm0,0x30(%rsp)
movaps 0xee0(%rip),%xmm0
movaps %xmm0,0x40(%rsp)
movaps 0xee4(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
movaps 0xee8(%rip),%xmm0
movaps %xmm0,0x60(%rsp)
movaps 0xeec(%rip),%xmm0
movaps %xmm0,0x70(%rsp)
movaps 0xef0(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
movaps 0xef1(%rip),%xmm0
movaps %xmm0,0x90(%rsp)
movaps 0xef2(%rip),%xmm0
movaps %xmm0,0xa0(%rsp)
movaps 0xef2(%rip),%xmm14
movaps %xmm14,0xb0(%rsp)
movaps 0xef1(%rip),%xmm13
movaps %xmm13,0xc0(%rsp)
movaps 0xef0(%rip),%xmm12
movaps %xmm12,0xd0(%rsp)
movaps 0xeef(%rip),%xmm11
movaps %xmm11,0xe0(%rsp)
movaps 0xeee(%rip),%xmm10
movaps %xmm10,0xf0(%rsp)
movaps 0xeed(%rip),%xmm9
movaps %xmm9,0x100(%rsp)
movaps 0xeec(%rip),%xmm8
movaps %xmm8,0x110(%rsp)
movaps 0xeec(%rip),%xmm6
movaps %xmm6,0x120(%rsp)
movaps 0xeed(%rip),%xmm5
movaps %xmm5,0x130(%rsp)
movaps 0xeee(%rip),%xmm4
movaps %xmm4,0x140(%rsp)
movaps 0xeef(%rip),%xmm3
movaps %xmm3,0x150(%rsp)
movaps 0xef0(%rip),%xmm2
movaps %xmm2,0x160(%rsp)
movaps 0xef1(%rip),%xmm1
movaps %xmm1,0x170(%rsp)
movaps 0xef2(%rip),%xmm0
movaps %xmm0,0x180(%rsp)
movaps 0xd62(%rip),%xmm15
movaps %xmm15,0x190(%rsp)
movaps 0xd62(%rip),%xmm7
movaps %xmm7,0x1a0(%rsp)
movaps 0xd63(%rip),%xmm7
movaps %xmm7,0x1b0(%rsp)
movaps 0xd64(%rip),%xmm7
movaps %xmm7,0x1c0(%rsp)
movaps 0xd65(%rip),%xmm7
movaps %xmm7,0x1d0(%rsp)
movaps 0xd66(%rip),%xmm7
movaps %xmm7,0x1e0(%rsp)
movaps 0xd67(%rip),%xmm7
movaps %xmm7,0x1f0(%rsp)
movaps 0xd68(%rip),%xmm7
movaps %xmm7,0x200(%rsp)
movaps 0xd69(%rip),%xmm7
movaps %xmm7,0x210(%rsp)
movaps 0xd6a(%rip),%xmm7
movaps %xmm7,0x220(%rsp)
movaps 0xd6b(%rip),%xmm7
movaps %xmm7,0x230(%rsp)
movaps %xmm14,0x240(%rsp)
movaps %xmm13,0x250(%rsp)
movaps %xmm12,0x260(%rsp)
movaps %xmm11,0x270(%rsp)
movaps %xmm10,0x280(%rsp)
movaps %xmm9,0x290(%rsp)
movaps %xmm8,0x2a0(%rsp)
movaps %xmm6,0x2b0(%rsp)
movaps %xmm5,0x2c0(%rsp)
movaps %xmm4,0x2d0(%rsp)
movaps %xmm3,0x2e0(%rsp)
movaps %xmm2,0x2f0(%rsp)
movaps %xmm1,0x300(%rsp)
movaps %xmm0,0x310(%rsp)
mov    %rsp,%rbx
lea    0x190(%rsp),%r14
mov    %rbx,%rdi
mov    %r14,%rsi
call   1040 <check@plt>
movaps 0xc2f(%rip),%xmm0
movaps %xmm0,(%rsp)
movaps 0xc34(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps 0xc38(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movaps 0xc3c(%rip),%xmm0
movaps %xmm0,0x30(%rsp)
movaps 0xc40(%rip),%xmm0
movaps %xmm0,0x40(%rsp)
movaps 0xc44(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
movaps 0xc48(%rip),%xmm0
movaps %xmm0,0x60(%rsp)
movaps 0xc4c(%rip),%xmm0
movaps %xmm0,0x70(%rsp)
movaps 0xc50(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
movaps 0xc51(%rip),%xmm0
movaps %xmm0,0x90(%rsp)
movaps 0xc52(%rip),%xmm0
movaps %xmm0,0xa0(%rsp)
movaps 0xc53(%rip),%xmm0
movaps %xmm0,0xb0(%rsp)
movaps 0xc54(%rip),%xmm0
movaps %xmm0,0xc0(%rsp)
movaps 0xc55(%rip),%xmm0
movaps %xmm0,0xd0(%rsp)
movaps 0xc56(%rip),%xmm0
movaps %xmm0,0xe0(%rsp)
movaps 0xc57(%rip),%xmm0
movaps %xmm0,0xf0(%rsp)
movaps 0xc58(%rip),%xmm0
movaps %xmm0,0x100(%rsp)
movaps 0xc59(%rip),%xmm0
movaps %xmm0,0x110(%rsp)
movaps 0xc5a(%rip),%xmm0
movaps %xmm0,0x120(%rsp)
movaps 0xc5b(%rip),%xmm0
movaps %xmm0,0x130(%rsp)
movaps 0xc5c(%rip),%xmm0
movaps %xmm0,0x140(%rsp)
movaps 0xc5d(%rip),%xmm0
movaps %xmm0,0x150(%rsp)
movaps 0xc5e(%rip),%xmm0
movaps %xmm0,0x160(%rsp)
movaps 0xc5f(%rip),%xmm0
movaps %xmm0,0x170(%rsp)
movaps 0xc60(%rip),%xmm0
movaps %xmm0,0x180(%rsp)
mov    %rbx,%rdi
mov    %r14,%rsi
call   1040 <check@plt>
movaps 0xac6(%rip),%xmm0
movaps %xmm0,(%rsp)
movaps 0xacb(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps 0xacf(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movaps 0xad3(%rip),%xmm0
movaps %xmm0,0x30(%rsp)
movaps 0xad7(%rip),%xmm0
movaps %xmm0,0x40(%rsp)
movaps 0xadb(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
movaps 0xadf(%rip),%xmm0
movaps %xmm0,0x60(%rsp)
movaps 0xae3(%rip),%xmm0
movaps %xmm0,0x70(%rsp)
movaps 0xae7(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
movaps 0xae8(%rip),%xmm0
movaps %xmm0,0x90(%rsp)
movaps 0xae9(%rip),%xmm0
movaps %xmm0,0xa0(%rsp)
movaps 0xaea(%rip),%xmm0
movaps %xmm0,0xb0(%rsp)
movaps 0xaeb(%rip),%xmm0
movaps %xmm0,0xc0(%rsp)
movaps 0xaec(%rip),%xmm0
movaps %xmm0,0xd0(%rsp)
movaps 0xaed(%rip),%xmm0
movaps %xmm0,0xe0(%rsp)
movaps 0xaee(%rip),%xmm0
movaps %xmm0,0xf0(%rsp)
movaps 0xaef(%rip),%xmm0
movaps %xmm0,0x100(%rsp)
movaps 0xaf0(%rip),%xmm0
movaps %xmm0,0x110(%rsp)
movaps 0xaf1(%rip),%xmm0
movaps %xmm0,0x120(%rsp)
movaps 0xaf2(%rip),%xmm0
movaps %xmm0,0x130(%rsp)
movaps 0xaf3(%rip),%xmm0
movaps %xmm0,0x140(%rsp)
movaps 0xaf4(%rip),%xmm0
movaps %xmm0,0x150(%rsp)
movaps 0xaf5(%rip),%xmm0
movaps %xmm0,0x160(%rsp)
movaps 0xaf6(%rip),%xmm0
movaps %xmm0,0x170(%rsp)
movaps 0xaf7(%rip),%xmm0
movaps %xmm0,0x180(%rsp)
mov    %rbx,%rdi
mov    %r14,%rsi
call   1040 <check@plt>
mov    $0x190,%edx
mov    %rbx,%rdi
mov    %r14,%rsi
call   1030 <memcpy@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
call   1040 <check@plt>
xor    %eax,%eax
add    $0x328,%rsp
pop    %rbx
pop    %r14
ret

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

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