#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 */
scalar_t__ malloc(int);
int main(void) {
  int a[100];
  int b[200];
  int *c = (int *)malloc(sizeof(int) * 100000);
  int i;
  if (c == NULL) {
    return -1;
  }
#pragma acc enter data create(a)
#pragma acc parallel loop present(a)
  for (i = 0; i < 100; i++) {
    a[i] = i * 2;
  }
#pragma acc exit data copyout(a)
  for (i = 0; i < 100; i++) {
    if (a[i] != i * 2)
      return 1;
  }
  for (i = 0; i < 200; i++) {
    b[i] = i;
  }
#pragma acc enter data copyin(b)
#pragma acc parallel loop present(b)
  for (i = 0; i < 200; i++) {
    b[i] += i;
  }
#pragma acc exit data copyout(b)
  for (i = 0; i < 200; i++) {
    if (b[i] != i * 2)
      return 2;
  }
  for (i = 0; i < 100000; i++) {
    c[i] = i;
  }
#pragma acc enter data copyin(c [0:N]) async(5)
#pragma acc parallel loop present(c [0:N]) async(5)
  for (i = 0; i < 100000; i++) {
    c[i] += i;
  }
#pragma acc exit data copyout(c [0:N]) async(5)
#pragma acc wait(5)
  for (i = 0; i < 100000; i++) {
    if (c[i] != i * 2)
      return 3;
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x4d0,%rsp
movl   $0x0,-0x4(%rbp)
mov    $0x61a80,%edi
call   1030 <malloc@plt>
mov    %rax,-0x4c8(%rbp)
cmpq   $0x0,-0x4c8(%rbp)
jne    114d <main+0x3d>
movl   $0xffffffff,-0x4(%rbp)
jmp    13c8 <main+0x2b8>
movl   $0x0,-0x4cc(%rbp)
cmpl   $0x64,-0x4cc(%rbp)
jge    118f <main+0x7f>
mov    -0x4cc(%rbp),%ecx
shl    $0x1,%ecx
movslq -0x4cc(%rbp),%rax
mov    %ecx,-0x1a0(%rbp,%rax,4)
mov    -0x4cc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4cc(%rbp)
jmp    1157 <main+0x47>
movl   $0x0,-0x4cc(%rbp)
cmpl   $0x64,-0x4cc(%rbp)
jge    11ea <main+0xda>
movslq -0x4cc(%rbp),%rax
mov    -0x1a0(%rbp,%rax,4),%eax
mov    -0x4cc(%rbp),%ecx
shl    $0x1,%ecx
cmp    %ecx,%eax
je     11d1 <main+0xc1>
movl   $0x1,-0x4(%rbp)
jmp    13c8 <main+0x2b8>
jmp    11d6 <main+0xc6>
mov    -0x4cc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4cc(%rbp)
jmp    1199 <main+0x89>
movl   $0x0,-0x4cc(%rbp)
cmpl   $0xc8,-0x4cc(%rbp)
jge    122c <main+0x11c>
mov    -0x4cc(%rbp),%ecx
movslq -0x4cc(%rbp),%rax
mov    %ecx,-0x4c0(%rbp,%rax,4)
mov    -0x4cc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4cc(%rbp)
jmp    11f4 <main+0xe4>
movl   $0x0,-0x4cc(%rbp)
cmpl   $0xc8,-0x4cc(%rbp)
jge    1275 <main+0x165>
mov    -0x4cc(%rbp),%ecx
movslq -0x4cc(%rbp),%rax
add    -0x4c0(%rbp,%rax,4),%ecx
mov    %ecx,-0x4c0(%rbp,%rax,4)
mov    -0x4cc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4cc(%rbp)
jmp    1236 <main+0x126>
movl   $0x0,-0x4cc(%rbp)
cmpl   $0xc8,-0x4cc(%rbp)
jge    12d3 <main+0x1c3>
movslq -0x4cc(%rbp),%rax
mov    -0x4c0(%rbp,%rax,4),%eax
mov    -0x4cc(%rbp),%ecx
shl    $0x1,%ecx
cmp    %ecx,%eax
je     12ba <main+0x1aa>
movl   $0x2,-0x4(%rbp)
jmp    13c8 <main+0x2b8>
jmp    12bf <main+0x1af>
mov    -0x4cc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4cc(%rbp)
jmp    127f <main+0x16f>
movl   $0x0,-0x4cc(%rbp)
cmpl   $0x186a0,-0x4cc(%rbp)
jge    1318 <main+0x208>
mov    -0x4cc(%rbp),%edx
mov    -0x4c8(%rbp),%rax
movslq -0x4cc(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x4cc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4cc(%rbp)
jmp    12dd <main+0x1cd>
movl   $0x0,-0x4cc(%rbp)
cmpl   $0x186a0,-0x4cc(%rbp)
jge    1360 <main+0x250>
mov    -0x4cc(%rbp),%edx
mov    -0x4c8(%rbp),%rax
movslq -0x4cc(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x4cc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4cc(%rbp)
jmp    1322 <main+0x212>
movl   $0x0,-0x4cc(%rbp)
cmpl   $0x186a0,-0x4cc(%rbp)
jge    13c1 <main+0x2b1>
mov    -0x4c8(%rbp),%rax
movslq -0x4cc(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x4cc(%rbp),%ecx
shl    $0x1,%ecx
cmp    %ecx,%eax
je     13a8 <main+0x298>
movl   $0x3,-0x4(%rbp)
jmp    13c8 <main+0x2b8>
jmp    13ad <main+0x29d>
mov    -0x4cc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4cc(%rbp)
jmp    136a <main+0x25a>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x4d0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
sub    $0x4b8,%rsp
mov    $0x61a80,%edi
call   1030 <malloc@plt>
test   %rax,%rax
je     167e <main+0x56e>
movaps 0xecf(%rip),%xmm0
movaps %xmm0,0x320(%rsp)
movaps 0xed0(%rip),%xmm0
movaps %xmm0,0x330(%rsp)
movaps 0xed1(%rip),%xmm0
movaps %xmm0,0x340(%rsp)
movaps 0xed2(%rip),%xmm0
movaps %xmm0,0x350(%rsp)
movaps 0xed3(%rip),%xmm0
movaps %xmm0,0x360(%rsp)
movaps 0xed4(%rip),%xmm0
movaps %xmm0,0x370(%rsp)
movaps 0xed5(%rip),%xmm0
movaps %xmm0,0x380(%rsp)
movaps 0xed6(%rip),%xmm0
movaps %xmm0,0x390(%rsp)
movaps 0xed7(%rip),%xmm0
movaps %xmm0,0x3a0(%rsp)
movaps 0xed8(%rip),%xmm0
movaps %xmm0,0x3b0(%rsp)
movaps 0xed9(%rip),%xmm0
movaps %xmm0,0x3c0(%rsp)
movaps 0xeda(%rip),%xmm0
movaps %xmm0,0x3d0(%rsp)
movaps 0xedb(%rip),%xmm0
movaps %xmm0,0x3e0(%rsp)
movaps 0xedc(%rip),%xmm0
movaps %xmm0,0x3f0(%rsp)
movaps 0xedd(%rip),%xmm0
movaps %xmm0,0x400(%rsp)
movaps 0xede(%rip),%xmm0
movaps %xmm0,0x410(%rsp)
movaps 0xedf(%rip),%xmm0
movaps %xmm0,0x420(%rsp)
movaps 0xee0(%rip),%xmm0
movaps %xmm0,0x430(%rsp)
movaps 0xee1(%rip),%xmm0
movaps %xmm0,0x440(%rsp)
movaps 0xee2(%rip),%xmm0
movaps %xmm0,0x450(%rsp)
movaps 0xee3(%rip),%xmm0
movaps %xmm0,0x460(%rsp)
movaps 0xee4(%rip),%xmm0
movaps %xmm0,0x470(%rsp)
movaps 0xee5(%rip),%xmm0
movaps %xmm0,0x480(%rsp)
movaps 0xee6(%rip),%xmm0
movaps %xmm0,0x490(%rsp)
movdqa 0xee6(%rip),%xmm0
movdqa %xmm0,0x4a0(%rsp)
mov    $0x8,%edx
mov    $0x1,%ecx
nopl   (%rax)
mov    0x310(%rsp,%rdx,2),%esi
lea    -0x8(%rdx),%rdi
cmp    %rsi,%rdi
jne    1683 <main+0x573>
mov    0x314(%rsp,%rdx,2),%esi
lea    -0x6(%rdx),%rdi
cmp    %rsi,%rdi
jne    1683 <main+0x573>
mov    0x318(%rsp,%rdx,2),%esi
lea    -0x4(%rdx),%rdi
cmp    %rsi,%rdi
jne    1683 <main+0x573>
mov    0x31c(%rsp,%rdx,2),%esi
lea    -0x2(%rdx),%rdi
cmp    %rsi,%rdi
jne    1683 <main+0x573>
mov    0x320(%rsp,%rdx,2),%esi
cmp    %rsi,%rdx
jne    1683 <main+0x573>
add    $0xa,%rdx
cmp    $0xd0,%rdx
jne    12b0 <main+0x1a0>
movdqa 0xe6b(%rip),%xmm4
movdqa %xmm4,(%rsp)
movaps 0xe6f(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps 0xe73(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movaps 0xe77(%rip),%xmm0
movaps %xmm0,0x30(%rsp)
movaps 0xe7b(%rip),%xmm0
movaps %xmm0,0x40(%rsp)
movaps 0xe7f(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
movaps 0xe83(%rip),%xmm0
movaps %xmm0,0x60(%rsp)
movaps 0xe87(%rip),%xmm0
movaps %xmm0,0x70(%rsp)
movaps 0xe8b(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
movaps 0xe8c(%rip),%xmm0
movaps %xmm0,0x90(%rsp)
movaps 0xe8d(%rip),%xmm0
movaps %xmm0,0xa0(%rsp)
movaps 0xe8e(%rip),%xmm0
movaps %xmm0,0xb0(%rsp)
movaps 0xe8f(%rip),%xmm0
movaps %xmm0,0xc0(%rsp)
movaps 0xe90(%rip),%xmm0
movaps %xmm0,0xd0(%rsp)
movaps 0xe91(%rip),%xmm0
movaps %xmm0,0xe0(%rsp)
movaps 0xe92(%rip),%xmm0
movaps %xmm0,0xf0(%rsp)
movaps 0xe93(%rip),%xmm0
movaps %xmm0,0x100(%rsp)
movaps 0xe94(%rip),%xmm0
movaps %xmm0,0x110(%rsp)
movaps 0xe95(%rip),%xmm0
movaps %xmm0,0x120(%rsp)
movaps 0xe96(%rip),%xmm0
movaps %xmm0,0x130(%rsp)
movaps 0xe97(%rip),%xmm0
movaps %xmm0,0x140(%rsp)
movaps 0xe98(%rip),%xmm0
movaps %xmm0,0x150(%rsp)
movaps 0xe99(%rip),%xmm0
movaps %xmm0,0x160(%rsp)
movaps 0xe9a(%rip),%xmm0
movaps %xmm0,0x170(%rsp)
movaps 0xe9b(%rip),%xmm0
movaps %xmm0,0x180(%rsp)
movaps 0xe9c(%rip),%xmm0
movaps %xmm0,0x190(%rsp)
movaps 0xe9d(%rip),%xmm0
movaps %xmm0,0x1a0(%rsp)
movaps 0xe9e(%rip),%xmm0
movaps %xmm0,0x1b0(%rsp)
movaps 0xe9f(%rip),%xmm0
movaps %xmm0,0x1c0(%rsp)
movaps 0xea0(%rip),%xmm0
movaps %xmm0,0x1d0(%rsp)
movaps 0xea1(%rip),%xmm0
movaps %xmm0,0x1e0(%rsp)
movaps 0xea2(%rip),%xmm0
movaps %xmm0,0x1f0(%rsp)
movaps 0xea3(%rip),%xmm0
movaps %xmm0,0x200(%rsp)
movaps 0xea4(%rip),%xmm0
movaps %xmm0,0x210(%rsp)
movaps 0xea5(%rip),%xmm0
movaps %xmm0,0x220(%rsp)
movaps 0xea6(%rip),%xmm0
movaps %xmm0,0x230(%rsp)
movaps 0xea7(%rip),%xmm0
movaps %xmm0,0x240(%rsp)
movaps 0xea8(%rip),%xmm0
movaps %xmm0,0x250(%rsp)
movaps 0xea9(%rip),%xmm0
movaps %xmm0,0x260(%rsp)
movaps 0xeaa(%rip),%xmm0
movaps %xmm0,0x270(%rsp)
movaps 0xeab(%rip),%xmm0
movaps %xmm0,0x280(%rsp)
movaps 0xeac(%rip),%xmm0
movaps %xmm0,0x290(%rsp)
movaps 0xead(%rip),%xmm0
movaps %xmm0,0x2a0(%rsp)
movaps 0xeae(%rip),%xmm0
movaps %xmm0,0x2b0(%rsp)
movaps 0xeaf(%rip),%xmm0
movaps %xmm0,0x2c0(%rsp)
movaps 0xeb0(%rip),%xmm0
movaps %xmm0,0x2d0(%rsp)
movaps 0xeb1(%rip),%xmm0
movaps %xmm0,0x2e0(%rsp)
movaps 0xeb2(%rip),%xmm0
movaps %xmm0,0x2f0(%rsp)
movaps 0xeb3(%rip),%xmm0
movaps %xmm0,0x300(%rsp)
movaps 0xeb4(%rip),%xmm0
movaps %xmm0,0x310(%rsp)
mov    $0xc,%ecx
movdqa 0xeaf(%rip),%xmm0
movdqa 0xeb6(%rip),%xmm13
movdqa 0xebe(%rip),%xmm2
movdqa 0xec6(%rip),%xmm3
nopw   0x0(%rax,%rax,1)
movdqa -0x20(%rsp,%rcx,4),%xmm5
paddd  %xmm4,%xmm5
movdqa -0x30(%rsp,%rcx,4),%xmm6
paddd  %xmm4,%xmm6
paddd  %xmm0,%xmm5
movdqa %xmm6,-0x30(%rsp,%rcx,4)
movdqa %xmm5,-0x20(%rsp,%rcx,4)
cmp    $0xcc,%rcx
je     168d <main+0x57d>
movdqa -0x10(%rsp,%rcx,4),%xmm5
paddd  %xmm4,%xmm5
movdqa (%rsp,%rcx,4),%xmm6
paddd  %xmm4,%xmm6
paddd  %xmm13,%xmm5
paddd  %xmm2,%xmm6
movdqa %xmm5,-0x10(%rsp,%rcx,4)
movdqa %xmm6,(%rsp,%rcx,4)
paddd  %xmm3,%xmm4
add    $0x10,%rcx
jmp    1620 <main+0x510>
mov    $0xffffffff,%ecx
mov    %ecx,%eax
add    $0x4b8,%rsp
ret
mov    $0x8,%edx
mov    $0x2,%ecx
nopw   0x0(%rax,%rax,1)
mov    -0x10(%rsp,%rdx,2),%esi
lea    -0x8(%rdx),%rdi
cmp    %rsi,%rdi
jne    1683 <main+0x573>
mov    -0xc(%rsp,%rdx,2),%esi
lea    -0x6(%rdx),%rdi
cmp    %rsi,%rdi
jne    1683 <main+0x573>
mov    -0x8(%rsp,%rdx,2),%esi
lea    -0x4(%rdx),%rdi
cmp    %rsi,%rdi
jne    1683 <main+0x573>
mov    -0x4(%rsp,%rdx,2),%esi
lea    -0x2(%rdx),%rdi
cmp    %rsi,%rdi
jne    1683 <main+0x573>
mov    (%rsp,%rdx,2),%esi
cmp    %rsi,%rdx
jne    1683 <main+0x573>
add    $0xa,%rdx
cmp    $0x198,%rdx
jne    16a0 <main+0x590>
movdqa 0xa9f(%rip),%xmm4
mov    $0x24,%ecx
movdqa 0xdf1(%rip),%xmm8
movdqa 0xdf8(%rip),%xmm9
movdqa 0xdff(%rip),%xmm10
movdqa 0xe06(%rip),%xmm11
movdqa 0xe0d(%rip),%xmm12
movdqa 0xe15(%rip),%xmm7
nopl   0x0(%rax,%rax,1)
movdqa %xmm4,%xmm5
paddd  %xmm0,%xmm5
movdqu %xmm4,-0x90(%rax,%rcx,4)
ff ff
movdqu %xmm5,-0x80(%rax,%rcx,4)
movdqa %xmm4,%xmm5
paddd  %xmm13,%xmm5
movdqa %xmm4,%xmm6
paddd  %xmm2,%xmm6
movdqu %xmm5,-0x70(%rax,%rcx,4)
movdqu %xmm6,-0x60(%rax,%rcx,4)
movdqa %xmm4,%xmm5
paddd  %xmm3,%xmm5
movdqa %xmm4,%xmm6
paddd  %xmm8,%xmm6
movdqu %xmm5,-0x50(%rax,%rcx,4)
movdqu %xmm6,-0x40(%rax,%rcx,4)
movdqa %xmm4,%xmm5
paddd  %xmm9,%xmm5
movdqa %xmm4,%xmm6
paddd  %xmm10,%xmm6
movdqu %xmm5,-0x30(%rax,%rcx,4)
movdqu %xmm6,-0x20(%rax,%rcx,4)
movdqa %xmm4,%xmm5
paddd  %xmm11,%xmm5
movdqa %xmm4,%xmm6
paddd  %xmm12,%xmm6
movdqu %xmm5,-0x10(%rax,%rcx,4)
movdqu %xmm6,(%rax,%rcx,4)
paddd  %xmm7,%xmm4
add    $0x28,%rcx
cmp    $0x186c4,%rcx
jne    1730 <main+0x620>
movdqa 0x9b7(%rip),%xmm4
mov    $0xc,%ecx
xchg   %ax,%ax
movdqu -0x30(%rax,%rcx,4),%xmm5
movdqu -0x20(%rax,%rcx,4),%xmm6
movdqu -0x10(%rax,%rcx,4),%xmm7
movdqu (%rax,%rcx,4),%xmm1
paddd  %xmm4,%xmm6
paddd  %xmm4,%xmm5
paddd  %xmm0,%xmm6
movdqu %xmm5,-0x30(%rax,%rcx,4)
movdqu %xmm6,-0x20(%rax,%rcx,4)
paddd  %xmm4,%xmm7
paddd  %xmm4,%xmm1
paddd  %xmm13,%xmm7
paddd  %xmm2,%xmm1
movdqu %xmm7,-0x10(%rax,%rcx,4)
movdqu %xmm1,(%rax,%rcx,4)
paddd  %xmm3,%xmm4
add    $0x10,%rcx
cmp    $0x186ac,%rcx
jne    17e0 <main+0x6d0>
mov    $0x8,%edx
mov    -0x10(%rax,%rdx,2),%esi
lea    -0x8(%rdx),%rdi
mov    $0x3,%ecx
cmp    %rsi,%rdi
jne    1683 <main+0x573>
mov    -0xc(%rax,%rdx,2),%esi
lea    -0x6(%rdx),%rdi
cmp    %rsi,%rdi
jne    1683 <main+0x573>
mov    -0x8(%rax,%rdx,2),%esi
lea    -0x4(%rdx),%rdi
cmp    %rsi,%rdi
jne    1683 <main+0x573>
mov    -0x4(%rax,%rdx,2),%esi
lea    -0x2(%rdx),%rdi
cmp    %rsi,%rdi
jne    1683 <main+0x573>
mov    (%rax,%rdx,2),%esi
cmp    %rsi,%rdx
jne    1683 <main+0x573>
add    $0xa,%rdx
xor    %ecx,%ecx
cmp    $0x30d48,%rdx
jne    1841 <main+0x731>
jmp    1683 <main+0x573>

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

LLVM IR (-O2):
define i32 @main() {
%1 = alloca [100 x i32]
%2 = alloca [200 x i32]
%3 = bitcast [100 x i32]* %1 to i8*
%4 = bitcast [200 x i32]* %2 to i8*
%5 = tail call i64 @malloc(i32 400000)
%6 = inttoptr i64 %5 to i32*
%7 = icmp eq i64 %5, 0
br i1 %7, label %372, label %8
8: ; preds = %0
%9 = bitcast [100 x i32]* %1 to <4 x i32>*
store <4 x i32> <i32 0, i32 2, i32 4, i32 6>, <4 x i32>* %9
%10 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 4
%11 = bitcast i32* %10 to <4 x i32>*
store <4 x i32> <i32 8, i32 10, i32 12, i32 14>, <4 x i32>* %11
%12 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 8
%13 = bitcast i32* %12 to <4 x i32>*
store <4 x i32> <i32 16, i32 18, i32 20, i32 22>, <4 x i32>* %13
%14 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 12
%15 = bitcast i32* %14 to <4 x i32>*
store <4 x i32> <i32 24, i32 26, i32 28, i32 30>, <4 x i32>* %15
%16 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 16
%17 = bitcast i32* %16 to <4 x i32>*
store <4 x i32> <i32 32, i32 34, i32 36, i32 38>, <4 x i32>* %17
%18 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 20
%19 = bitcast i32* %18 to <4 x i32>*
store <4 x i32> <i32 40, i32 42, i32 44, i32 46>, <4 x i32>* %19
%20 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 24
%21 = bitcast i32* %20 to <4 x i32>*
store <4 x i32> <i32 48, i32 50, i32 52, i32 54>, <4 x i32>* %21
%22 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 28
%23 = bitcast i32* %22 to <4 x i32>*
store <4 x i32> <i32 56, i32 58, i32 60, i32 62>, <4 x i32>* %23
%24 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 32
%25 = bitcast i32* %24 to <4 x i32>*
store <4 x i32> <i32 64, i32 66, i32 68, i32 70>, <4 x i32>* %25
%26 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 36
%27 = bitcast i32* %26 to <4 x i32>*
store <4 x i32> <i32 72, i32 74, i32 76, i32 78>, <4 x i32>* %27
%28 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 40
%29 = bitcast i32* %28 to <4 x i32>*
store <4 x i32> <i32 80, i32 82, i32 84, i32 86>, <4 x i32>* %29
%30 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 44
%31 = bitcast i32* %30 to <4 x i32>*
store <4 x i32> <i32 88, i32 90, i32 92, i32 94>, <4 x i32>* %31
%32 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 48
%33 = bitcast i32* %32 to <4 x i32>*
store <4 x i32> <i32 96, i32 98, i32 100, i32 102>, <4 x i32>* %33
%34 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 52
%35 = bitcast i32* %34 to <4 x i32>*
store <4 x i32> <i32 104, i32 106, i32 108, i32 110>, <4 x i32>* %35
%36 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 56
%37 = bitcast i32* %36 to <4 x i32>*
store <4 x i32> <i32 112, i32 114, i32 116, i32 118>, <4 x i32>* %37
%38 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 60
%39 = bitcast i32* %38 to <4 x i32>*
store <4 x i32> <i32 120, i32 122, i32 124, i32 126>, <4 x i32>* %39
%40 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 64
%41 = bitcast i32* %40 to <4 x i32>*
store <4 x i32> <i32 128, i32 130, i32 132, i32 134>, <4 x i32>* %41
%42 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 68
%43 = bitcast i32* %42 to <4 x i32>*
store <4 x i32> <i32 136, i32 138, i32 140, i32 142>, <4 x i32>* %43
%44 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 72
%45 = bitcast i32* %44 to <4 x i32>*
store <4 x i32> <i32 144, i32 146, i32 148, i32 150>, <4 x i32>* %45
%46 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 76
%47 = bitcast i32* %46 to <4 x i32>*
store <4 x i32> <i32 152, i32 154, i32 156, i32 158>, <4 x i32>* %47
%48 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 80
%49 = bitcast i32* %48 to <4 x i32>*
store <4 x i32> <i32 160, i32 162, i32 164, i32 166>, <4 x i32>* %49
%50 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 84
%51 = bitcast i32* %50 to <4 x i32>*
store <4 x i32> <i32 168, i32 170, i32 172, i32 174>, <4 x i32>* %51
%52 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 88
%53 = bitcast i32* %52 to <4 x i32>*
store <4 x i32> <i32 176, i32 178, i32 180, i32 182>, <4 x i32>* %53
%54 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 92
%55 = bitcast i32* %54 to <4 x i32>*
store <4 x i32> <i32 184, i32 186, i32 188, i32 190>, <4 x i32>* %55
%56 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 96
%57 = bitcast i32* %56 to <4 x i32>*
store <4 x i32> <i32 192, i32 194, i32 196, i32 198>, <4 x i32>* %57
br label %189
58: ; preds = %189
%59 = add nuw nsw i64 %190, 1
%60 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 %59
%61 = load i32, i32* %60
%62 = shl nuw nsw i64 %59, 1
%63 = zext i32 %61 to i64
%64 = icmp eq i64 %62, %63
br i1 %64, label %65, label %372
65: ; preds = %58
%66 = add nuw nsw i64 %190, 2
%67 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 %66
%68 = load i32, i32* %67
%69 = shl nuw nsw i64 %66, 1
%70 = zext i32 %68 to i64
%71 = icmp eq i64 %69, %70
br i1 %71, label %72, label %372
72: ; preds = %65
%73 = add nuw nsw i64 %190, 3
%74 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 %73
%75 = load i32, i32* %74
%76 = shl nuw nsw i64 %73, 1
%77 = zext i32 %75 to i64
%78 = icmp eq i64 %76, %77
br i1 %78, label %79, label %372
79: ; preds = %72
%80 = add nuw nsw i64 %190, 4
%81 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 %80
%82 = load i32, i32* %81
%83 = shl nuw nsw i64 %80, 1
%84 = zext i32 %82 to i64
%85 = icmp eq i64 %83, %84
br i1 %85, label %86, label %372
86: ; preds = %79
%87 = add nuw nsw i64 %190, 5
%88 = icmp eq i64 %87, 100
br i1 %88, label %89, label %189
89: ; preds = %86
%90 = bitcast [200 x i32]* %2 to <4 x i32>*
store <4 x i32> <i32 0, i32 1, i32 2, i32 3>, <4 x i32>* %90
%91 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 4
%92 = bitcast i32* %91 to <4 x i32>*
store <4 x i32> <i32 4, i32 5, i32 6, i32 7>, <4 x i32>* %92
%93 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 8
%94 = bitcast i32* %93 to <4 x i32>*
store <4 x i32> <i32 8, i32 9, i32 10, i32 11>, <4 x i32>* %94
%95 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 12
%96 = bitcast i32* %95 to <4 x i32>*
store <4 x i32> <i32 12, i32 13, i32 14, i32 15>, <4 x i32>* %96
%97 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 16
%98 = bitcast i32* %97 to <4 x i32>*
store <4 x i32> <i32 16, i32 17, i32 18, i32 19>, <4 x i32>* %98
%99 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 20
%100 = bitcast i32* %99 to <4 x i32>*
store <4 x i32> <i32 20, i32 21, i32 22, i32 23>, <4 x i32>* %100
%101 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 24
%102 = bitcast i32* %101 to <4 x i32>*
store <4 x i32> <i32 24, i32 25, i32 26, i32 27>, <4 x i32>* %102
%103 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 28
%104 = bitcast i32* %103 to <4 x i32>*
store <4 x i32> <i32 28, i32 29, i32 30, i32 31>, <4 x i32>* %104
%105 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 32
%106 = bitcast i32* %105 to <4 x i32>*
store <4 x i32> <i32 32, i32 33, i32 34, i32 35>, <4 x i32>* %106
%107 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 36
%108 = bitcast i32* %107 to <4 x i32>*
store <4 x i32> <i32 36, i32 37, i32 38, i32 39>, <4 x i32>* %108
%109 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 40
%110 = bitcast i32* %109 to <4 x i32>*
store <4 x i32> <i32 40, i32 41, i32 42, i32 43>, <4 x i32>* %110
%111 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 44
%112 = bitcast i32* %111 to <4 x i32>*
store <4 x i32> <i32 44, i32 45, i32 46, i32 47>, <4 x i32>* %112
%113 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 48
%114 = bitcast i32* %113 to <4 x i32>*
store <4 x i32> <i32 48, i32 49, i32 50, i32 51>, <4 x i32>* %114
%115 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 52
%116 = bitcast i32* %115 to <4 x i32>*
store <4 x i32> <i32 52, i32 53, i32 54, i32 55>, <4 x i32>* %116
%117 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 56
%118 = bitcast i32* %117 to <4 x i32>*
store <4 x i32> <i32 56, i32 57, i32 58, i32 59>, <4 x i32>* %118
%119 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 60
%120 = bitcast i32* %119 to <4 x i32>*
store <4 x i32> <i32 60, i32 61, i32 62, i32 63>, <4 x i32>* %120
%121 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 64
%122 = bitcast i32* %121 to <4 x i32>*
store <4 x i32> <i32 64, i32 65, i32 66, i32 67>, <4 x i32>* %122
%123 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 68
%124 = bitcast i32* %123 to <4 x i32>*
store <4 x i32> <i32 68, i32 69, i32 70, i32 71>, <4 x i32>* %124
%125 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 72
%126 = bitcast i32* %125 to <4 x i32>*
store <4 x i32> <i32 72, i32 73, i32 74, i32 75>, <4 x i32>* %126
%127 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 76
%128 = bitcast i32* %127 to <4 x i32>*
store <4 x i32> <i32 76, i32 77, i32 78, i32 79>, <4 x i32>* %128
%129 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 80
%130 = bitcast i32* %129 to <4 x i32>*
store <4 x i32> <i32 80, i32 81, i32 82, i32 83>, <4 x i32>* %130
%131 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 84
%132 = bitcast i32* %131 to <4 x i32>*
store <4 x i32> <i32 84, i32 85, i32 86, i32 87>, <4 x i32>* %132
%133 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 88
%134 = bitcast i32* %133 to <4 x i32>*
store <4 x i32> <i32 88, i32 89, i32 90, i32 91>, <4 x i32>* %134
%135 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 92
%136 = bitcast i32* %135 to <4 x i32>*
store <4 x i32> <i32 92, i32 93, i32 94, i32 95>, <4 x i32>* %136
%137 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 96
%138 = bitcast i32* %137 to <4 x i32>*
store <4 x i32> <i32 96, i32 97, i32 98, i32 99>, <4 x i32>* %138
%139 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 100
%140 = bitcast i32* %139 to <4 x i32>*
store <4 x i32> <i32 100, i32 101, i32 102, i32 103>, <4 x i32>* %140
%141 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 104
%142 = bitcast i32* %141 to <4 x i32>*
store <4 x i32> <i32 104, i32 105, i32 106, i32 107>, <4 x i32>* %142
%143 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 108
%144 = bitcast i32* %143 to <4 x i32>*
store <4 x i32> <i32 108, i32 109, i32 110, i32 111>, <4 x i32>* %144
%145 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 112
%146 = bitcast i32* %145 to <4 x i32>*
store <4 x i32> <i32 112, i32 113, i32 114, i32 115>, <4 x i32>* %146
%147 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 116
%148 = bitcast i32* %147 to <4 x i32>*
store <4 x i32> <i32 116, i32 117, i32 118, i32 119>, <4 x i32>* %148
%149 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 120
%150 = bitcast i32* %149 to <4 x i32>*
store <4 x i32> <i32 120, i32 121, i32 122, i32 123>, <4 x i32>* %150
%151 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 124
%152 = bitcast i32* %151 to <4 x i32>*
store <4 x i32> <i32 124, i32 125, i32 126, i32 127>, <4 x i32>* %152
%153 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 128
%154 = bitcast i32* %153 to <4 x i32>*
store <4 x i32> <i32 128, i32 129, i32 130, i32 131>, <4 x i32>* %154
%155 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 132
%156 = bitcast i32* %155 to <4 x i32>*
store <4 x i32> <i32 132, i32 133, i32 134, i32 135>, <4 x i32>* %156
%157 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 136
%158 = bitcast i32* %157 to <4 x i32>*
store <4 x i32> <i32 136, i32 137, i32 138, i32 139>, <4 x i32>* %158
%159 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 140
%160 = bitcast i32* %159 to <4 x i32>*
store <4 x i32> <i32 140, i32 141, i32 142, i32 143>, <4 x i32>* %160
%161 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 144
%162 = bitcast i32* %161 to <4 x i32>*
store <4 x i32> <i32 144, i32 145, i32 146, i32 147>, <4 x i32>* %162
%163 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 148
%164 = bitcast i32* %163 to <4 x i32>*
store <4 x i32> <i32 148, i32 149, i32 150, i32 151>, <4 x i32>* %164
%165 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 152
%166 = bitcast i32* %165 to <4 x i32>*
store <4 x i32> <i32 152, i32 153, i32 154, i32 155>, <4 x i32>* %166
%167 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 156
%168 = bitcast i32* %167 to <4 x i32>*
store <4 x i32> <i32 156, i32 157, i32 158, i32 159>, <4 x i32>* %168
%169 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 160
%170 = bitcast i32* %169 to <4 x i32>*
store <4 x i32> <i32 160, i32 161, i32 162, i32 163>, <4 x i32>* %170
%171 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 164
%172 = bitcast i32* %171 to <4 x i32>*
store <4 x i32> <i32 164, i32 165, i32 166, i32 167>, <4 x i32>* %172
%173 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 168
%174 = bitcast i32* %173 to <4 x i32>*
store <4 x i32> <i32 168, i32 169, i32 170, i32 171>, <4 x i32>* %174
%175 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 172
%176 = bitcast i32* %175 to <4 x i32>*
store <4 x i32> <i32 172, i32 173, i32 174, i32 175>, <4 x i32>* %176
%177 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 176
%178 = bitcast i32* %177 to <4 x i32>*
store <4 x i32> <i32 176, i32 177, i32 178, i32 179>, <4 x i32>* %178
%179 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 180
%180 = bitcast i32* %179 to <4 x i32>*
store <4 x i32> <i32 180, i32 181, i32 182, i32 183>, <4 x i32>* %180
%181 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 184
%182 = bitcast i32* %181 to <4 x i32>*
store <4 x i32> <i32 184, i32 185, i32 186, i32 187>, <4 x i32>* %182
%183 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 188
%184 = bitcast i32* %183 to <4 x i32>*
store <4 x i32> <i32 188, i32 189, i32 190, i32 191>, <4 x i32>* %184
%185 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 192
%186 = bitcast i32* %185 to <4 x i32>*
store <4 x i32> <i32 192, i32 193, i32 194, i32 195>, <4 x i32>* %186
%187 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 196
%188 = bitcast i32* %187 to <4 x i32>*
store <4 x i32> <i32 196, i32 197, i32 198, i32 199>, <4 x i32>* %188
br label %196
189: ; preds = %86, %8
%190 = phi i64 [ 0, %8 ], [ %87, %86 ]
%191 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 %190
%192 = load i32, i32* %191
%193 = shl nuw nsw i64 %190, 1
%194 = zext i32 %192 to i64
%195 = icmp eq i64 %193, %194
br i1 %195, label %58, label %372
196: ; preds = %212, %89
%197 = phi i64 [ 0, %89 ], [ %225, %212 ]
%198 = phi <4 x i32> [ <i32 0, i32 1, i32 2, i32 3>, %89 ], [ %226, %212 ]
%199 = add <4 x i32> %198, <i32 4, i32 4, i32 4, i32 4>
%200 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 %197
%201 = bitcast i32* %200 to <4 x i32>*
%202 = load <4 x i32>, <4 x i32>* %201
%203 = getelementptr inbounds i32, i32* %200, i64 4
%204 = bitcast i32* %203 to <4 x i32>*
%205 = load <4 x i32>, <4 x i32>* %204
%206 = add nsw <4 x i32> %202, %198
%207 = add nsw <4 x i32> %205, %199
%208 = bitcast i32* %200 to <4 x i32>*
store <4 x i32> %206, <4 x i32>* %208
%209 = bitcast i32* %203 to <4 x i32>*
store <4 x i32> %207, <4 x i32>* %209
%210 = or i64 %197, 8
%211 = icmp eq i64 %210, 200
br i1 %211, label %297, label %212
212: ; preds = %196
%213 = add <4 x i32> %198, <i32 8, i32 8, i32 8, i32 8>
%214 = add <4 x i32> %198, <i32 12, i32 12, i32 12, i32 12>
%215 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 %210
%216 = bitcast i32* %215 to <4 x i32>*
%217 = load <4 x i32>, <4 x i32>* %216
%218 = getelementptr inbounds i32, i32* %215, i64 4
%219 = bitcast i32* %218 to <4 x i32>*
%220 = load <4 x i32>, <4 x i32>* %219
%221 = add nsw <4 x i32> %217, %213
%222 = add nsw <4 x i32> %220, %214
%223 = bitcast i32* %215 to <4 x i32>*
store <4 x i32> %221, <4 x i32>* %223
%224 = bitcast i32* %218 to <4 x i32>*
store <4 x i32> %222, <4 x i32>* %224
%225 = add nuw nsw i64 %197, 16
%226 = add <4 x i32> %198, <i32 16, i32 16, i32 16, i32 16>
br label %196
227: ; preds = %297
%228 = add nuw nsw i64 %298, 1
%229 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 %228
%230 = load i32, i32* %229
%231 = shl nuw nsw i64 %228, 1
%232 = zext i32 %230 to i64
%233 = icmp eq i64 %231, %232
br i1 %233, label %234, label %372
234: ; preds = %227
%235 = add nuw nsw i64 %298, 2
%236 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 %235
%237 = load i32, i32* %236
%238 = shl nuw nsw i64 %235, 1
%239 = zext i32 %237 to i64
%240 = icmp eq i64 %238, %239
br i1 %240, label %241, label %372
241: ; preds = %234
%242 = add nuw nsw i64 %298, 3
%243 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 %242
%244 = load i32, i32* %243
%245 = shl nuw nsw i64 %242, 1
%246 = zext i32 %244 to i64
%247 = icmp eq i64 %245, %246
br i1 %247, label %248, label %372
248: ; preds = %241
%249 = add nuw nsw i64 %298, 4
%250 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 %249
%251 = load i32, i32* %250
%252 = shl nuw nsw i64 %249, 1
%253 = zext i32 %251 to i64
%254 = icmp eq i64 %252, %253
br i1 %254, label %255, label %372
255: ; preds = %248
%256 = add nuw nsw i64 %298, 5
%257 = icmp eq i64 %256, 200
br i1 %257, label %258, label %297
258: ; preds = %255, %258
%259 = phi i64 [ %294, %258 ], [ 0, %255 ]
%260 = phi <4 x i32> [ %295, %258 ], [ <i32 0, i32 1, i32 2, i32 3>, %255 ]
%261 = add <4 x i32> %260, <i32 4, i32 4, i32 4, i32 4>
%262 = getelementptr inbounds i32, i32* %6, i64 %259
%263 = bitcast i32* %262 to <4 x i32>*
store <4 x i32> %260, <4 x i32>* %263
%264 = getelementptr inbounds i32, i32* %262, i64 4
%265 = bitcast i32* %264 to <4 x i32>*
store <4 x i32> %261, <4 x i32>* %265
%266 = add nuw nsw i64 %259, 8
%267 = add <4 x i32> %260, <i32 8, i32 8, i32 8, i32 8>
%268 = add <4 x i32> %260, <i32 12, i32 12, i32 12, i32 12>
%269 = getelementptr inbounds i32, i32* %6, i64 %266
%270 = bitcast i32* %269 to <4 x i32>*
store <4 x i32> %267, <4 x i32>* %270
%271 = getelementptr inbounds i32, i32* %269, i64 4
%272 = bitcast i32* %271 to <4 x i32>*
store <4 x i32> %268, <4 x i32>* %272
%273 = add nuw nsw i64 %259, 16
%274 = add <4 x i32> %260, <i32 16, i32 16, i32 16, i32 16>
%275 = add <4 x i32> %260, <i32 20, i32 20, i32 20, i32 20>
%276 = getelementptr inbounds i32, i32* %6, i64 %273
%277 = bitcast i32* %276 to <4 x i32>*
store <4 x i32> %274, <4 x i32>* %277
%278 = getelementptr inbounds i32, i32* %276, i64 4
%279 = bitcast i32* %278 to <4 x i32>*
store <4 x i32> %275, <4 x i32>* %279
%280 = add nuw nsw i64 %259, 24
%281 = add <4 x i32> %260, <i32 24, i32 24, i32 24, i32 24>
%282 = add <4 x i32> %260, <i32 28, i32 28, i32 28, i32 28>
%283 = getelementptr inbounds i32, i32* %6, i64 %280
%284 = bitcast i32* %283 to <4 x i32>*
store <4 x i32> %281, <4 x i32>* %284
%285 = getelementptr inbounds i32, i32* %283, i64 4
%286 = bitcast i32* %285 to <4 x i32>*
store <4 x i32> %282, <4 x i32>* %286
%287 = add nuw nsw i64 %259, 32
%288 = add <4 x i32> %260, <i32 32, i32 32, i32 32, i32 32>
%289 = add <4 x i32> %260, <i32 36, i32 36, i32 36, i32 36>
%290 = getelementptr inbounds i32, i32* %6, i64 %287
%291 = bitcast i32* %290 to <4 x i32>*
store <4 x i32> %288, <4 x i32>* %291
%292 = getelementptr inbounds i32, i32* %290, i64 4
%293 = bitcast i32* %292 to <4 x i32>*
store <4 x i32> %289, <4 x i32>* %293
%294 = add nuw nsw i64 %259, 40
%295 = add <4 x i32> %260, <i32 40, i32 40, i32 40, i32 40>
%296 = icmp eq i64 %294, 100000
br i1 %296, label %304, label %258
297: ; preds = %196, %255
%298 = phi i64 [ %256, %255 ], [ 0, %196 ]
%299 = getelementptr inbounds [200 x i32], [200 x i32]* %2, i64 0, i64 %298
%300 = load i32, i32* %299
%301 = shl nuw nsw i64 %298, 1
%302 = zext i32 %300 to i64
%303 = icmp eq i64 %301, %302
br i1 %303, label %227, label %372
304: ; preds = %258, %304
%305 = phi i64 [ %331, %304 ], [ 0, %258 ]
%306 = phi <4 x i32> [ %332, %304 ], [ <i32 0, i32 1, i32 2, i32 3>, %258 ]
%307 = add <4 x i32> %306, <i32 4, i32 4, i32 4, i32 4>
%308 = getelementptr inbounds i32, i32* %6, i64 %305
%309 = bitcast i32* %308 to <4 x i32>*
%310 = load <4 x i32>, <4 x i32>* %309
%311 = getelementptr inbounds i32, i32* %308, i64 4
%312 = bitcast i32* %311 to <4 x i32>*
%313 = load <4 x i32>, <4 x i32>* %312
%314 = add nsw <4 x i32> %310, %306
%315 = add nsw <4 x i32> %313, %307
%316 = bitcast i32* %308 to <4 x i32>*
store <4 x i32> %314, <4 x i32>* %316
%317 = bitcast i32* %311 to <4 x i32>*
store <4 x i32> %315, <4 x i32>* %317
%318 = or i64 %305, 8
%319 = add <4 x i32> %306, <i32 8, i32 8, i32 8, i32 8>
%320 = add <4 x i32> %306, <i32 12, i32 12, i32 12, i32 12>
%321 = getelementptr inbounds i32, i32* %6, i64 %318
%322 = bitcast i32* %321 to <4 x i32>*
%323 = load <4 x i32>, <4 x i32>* %322
%324 = getelementptr inbounds i32, i32* %321, i64 4
%325 = bitcast i32* %324 to <4 x i32>*
%326 = load <4 x i32>, <4 x i32>* %325
%327 = add nsw <4 x i32> %323, %319
%328 = add nsw <4 x i32> %326, %320
%329 = bitcast i32* %321 to <4 x i32>*
store <4 x i32> %327, <4 x i32>* %329
%330 = bitcast i32* %324 to <4 x i32>*
store <4 x i32> %328, <4 x i32>* %330
%331 = add nuw nsw i64 %305, 16
%332 = add <4 x i32> %306, <i32 16, i32 16, i32 16, i32 16>
%333 = icmp eq i64 %331, 100000
br i1 %333, label %365, label %304
334: ; preds = %365
%335 = add nuw nsw i64 %366, 1
%336 = getelementptr inbounds i32, i32* %6, i64 %335
%337 = load i32, i32* %336
%338 = shl nuw nsw i64 %335, 1
%339 = zext i32 %337 to i64
%340 = icmp eq i64 %338, %339
br i1 %340, label %341, label %372
341: ; preds = %334
%342 = add nuw nsw i64 %366, 2
%343 = getelementptr inbounds i32, i32* %6, i64 %342
%344 = load i32, i32* %343
%345 = shl nuw nsw i64 %342, 1
%346 = zext i32 %344 to i64
%347 = icmp eq i64 %345, %346
br i1 %347, label %348, label %372
348: ; preds = %341
%349 = add nuw nsw i64 %366, 3
%350 = getelementptr inbounds i32, i32* %6, i64 %349
%351 = load i32, i32* %350
%352 = shl nuw nsw i64 %349, 1
%353 = zext i32 %351 to i64
%354 = icmp eq i64 %352, %353
br i1 %354, label %355, label %372
355: ; preds = %348
%356 = add nuw nsw i64 %366, 4
%357 = getelementptr inbounds i32, i32* %6, i64 %356
%358 = load i32, i32* %357
%359 = shl nuw nsw i64 %356, 1
%360 = zext i32 %358 to i64
%361 = icmp eq i64 %359, %360
br i1 %361, label %362, label %372
362: ; preds = %355
%363 = add nuw nsw i64 %366, 5
%364 = icmp eq i64 %363, 100000
br i1 %364, label %372, label %365
365: ; preds = %304, %362
%366 = phi i64 [ %363, %362 ], [ 0, %304 ]
%367 = getelementptr inbounds i32, i32* %6, i64 %366
%368 = load i32, i32* %367
%369 = shl nuw nsw i64 %366, 1
%370 = zext i32 %368 to i64
%371 = icmp eq i64 %369, %370
br i1 %371, label %334, label %372
372: ; preds = %189, %58, %65, %72, %79, %297, %227, %234, %241, %248, %365, %334, %341, %348, %355, %362, %0
%373 = phi i32 [ -1, %0 ], [ 3, %365 ], [ 3, %334 ], [ 3, %341 ], [ 3, %348 ], [ 3, %355 ], [ 0, %362 ], [ 2, %248 ], [ 2, %241 ], [ 2, %234 ], [ 2, %227 ], [ 2, %297 ], [ 1, %79 ], [ 1, %72 ], [ 1, %65 ], [ 1, %58 ], [ 1, %189 ]
ret i32 %373
}