#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ abort();
scalar_t__ acc_deviceptr(float *);
int /*<<< orphan*/ acc_free(float *);
scalar_t__ acc_is_present(float *, int);
scalar_t__ acc_malloc(int);
int /*<<< orphan*/ acc_map_data(float *, float *, int);
int /*<<< orphan*/ acc_unmap_data(float *);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *);
scalar_t__ malloc(int);
int /*<<< orphan*/ stderr;
int main(int argc, char **argv) {
  int N = 8;
  float *a, *b, *c, *d;
  int i;
  a = (float *)malloc(N * sizeof(float));
  b = (float *)malloc(N * sizeof(float));
  c = (float *)malloc(N * sizeof(float));
  for (i = 0; i < N; i++) {
    a[i] = 2.0;
    b[i] = 5.0;
  }
  d = (float *)acc_malloc(N * sizeof(float));
  acc_map_data(c, d, N * sizeof(float));
  fprintf(stderr, "CheCKpOInT\n");
#pragma acc parallel copyin(a [0:N]) present_or_create(c [0:N + 1])            \
    copyout(b [0:N])
  {
    int ii;
    for (ii = 0; ii < N; ii++) {
      c[ii] = a[ii];
      b[ii] = c[ii];
    }
  }
  for (i = 0; i < N; i++) {
    if (a[i] != 2.0)
      abort();
    if (b[i] != 2.0)
      abort();
  }
  if (acc_is_present(a, (N * sizeof(float))))
    abort();
  if (acc_is_present(b, (N * sizeof(float))))
    abort();
  if (!acc_is_present(c, (N * sizeof(float))))
    abort();
  d = (float *)acc_deviceptr(c);
  acc_unmap_data(c);
  acc_free(d);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0x8,-0x14(%rbp)
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%edi
call   1090 <malloc@plt>
mov    %rax,-0x20(%rbp)
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%edi
call   1090 <malloc@plt>
mov    %rax,-0x28(%rbp)
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%edi
call   1090 <malloc@plt>
mov    %rax,-0x30(%rbp)
movl   $0x0,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    1231 <main+0xa1>
mov    -0x20(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movss  0xe03(%rip),%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x28(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movss  0xdea(%rip),%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    11ed <main+0x5d>
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%edi
call   1040 <acc_malloc@plt>
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rdi
mov    -0x38(%rbp),%rsi
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%edx
call   1060 <acc_map_data@plt>
mov    0x2d7e(%rip),%rax
mov    (%rax),%edi
lea    0xda5(%rip),%rsi
call   1080 <fprintf@plt>
movl   $0x0,-0x40(%rbp)
mov    -0x40(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    12c5 <main+0x135>
mov    -0x20(%rbp),%rax
movslq -0x40(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x30(%rbp),%rax
movslq -0x40(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x30(%rbp),%rax
movslq -0x40(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x40(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
jmp    1277 <main+0xe7>
movl   $0x0,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    1355 <main+0x1c5>
mov    -0x20(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xd0f(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1306 <main+0x176>
jp     1306 <main+0x176>
jmp    130d <main+0x17d>
mov    $0x0,%al
call   1030 <abort@plt>
mov    -0x28(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xcda(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    133b <main+0x1ab>
jp     133b <main+0x1ab>
jmp    1342 <main+0x1b2>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    1347 <main+0x1b7>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    12cc <main+0x13c>
mov    -0x20(%rbp),%rdi
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%esi
call   1070 <acc_is_present@plt>
cmp    $0x0,%rax
je     1379 <main+0x1e9>
mov    $0x0,%al
call   1030 <abort@plt>
mov    -0x28(%rbp),%rdi
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%esi
call   1070 <acc_is_present@plt>
cmp    $0x0,%rax
je     139d <main+0x20d>
mov    $0x0,%al
call   1030 <abort@plt>
mov    -0x30(%rbp),%rdi
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%esi
call   1070 <acc_is_present@plt>
cmp    $0x0,%rax
jne    13c1 <main+0x231>
mov    $0x0,%al
call   1030 <abort@plt>
mov    -0x30(%rbp),%rdi
call   10a0 <acc_deviceptr@plt>
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rdi
call   1050 <acc_unmap_data@plt>
mov    -0x38(%rbp),%rdi
call   10b0 <acc_free@plt>
xor    %eax,%eax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r15
push   %r14
push   %rbx
mov    $0x20,%edi
call   1090 <malloc@plt>
mov    %rax,%rbx
mov    $0x20,%edi
call   1090 <malloc@plt>
mov    %rax,%r15
mov    $0x20,%edi
call   1090 <malloc@plt>
mov    %rax,%r14
movl   $0x40000000,(%rbx)
movl   $0x40a00000,(%r15)
movl   $0x40000000,0x4(%rbx)
movl   $0x40a00000,0x4(%r15)
40
movl   $0x40000000,0x8(%rbx)
movl   $0x40a00000,0x8(%r15)
40
movl   $0x40000000,0xc(%rbx)
movl   $0x40a00000,0xc(%r15)
40
movl   $0x40000000,0x10(%rbx)
movl   $0x40a00000,0x10(%r15)
40
movl   $0x40000000,0x14(%rbx)
movl   $0x40a00000,0x14(%r15)
40
movl   $0x40000000,0x18(%rbx)
movl   $0x40a00000,0x18(%r15)
40
movl   $0x40000000,0x1c(%rbx)
movl   $0x40a00000,0x1c(%r15)
40
mov    $0x20,%edi
call   1040 <acc_malloc@plt>
mov    %r14,%rdi
mov    %rax,%rsi
mov    $0x20,%edx
call   1060 <acc_map_data@plt>
mov    0x2d8d(%rip),%rax
mov    (%rax),%edi
lea    0xda8(%rip),%rsi
call   1080 <fprintf@plt>
movss  (%rbx),%xmm0
movss  %xmm0,(%r14)
movss  %xmm0,(%r15)
movss  0x4(%rbx),%xmm0
movss  %xmm0,0x4(%r14)
movss  %xmm0,0x4(%r15)
movss  0x8(%rbx),%xmm0
movss  %xmm0,0x8(%r14)
movss  %xmm0,0x8(%r15)
movss  0xc(%rbx),%xmm0
movss  %xmm0,0xc(%r14)
movss  %xmm0,0xc(%r15)
movss  0x10(%rbx),%xmm0
movss  %xmm0,0x10(%r14)
movss  %xmm0,0x10(%r15)
movss  0x14(%rbx),%xmm0
movss  %xmm0,0x14(%r14)
movss  %xmm0,0x14(%r15)
movss  0x18(%rbx),%xmm0
movss  %xmm0,0x18(%r14)
movss  %xmm0,0x18(%r15)
movss  0x1c(%rbx),%xmm0
movss  %xmm0,0x1c(%r14)
movss  %xmm0,0x1c(%r15)
movss  (%rbx),%xmm1
ucomiss 0xd0f(%rip),%xmm1
jne    14a7 <main+0x317>
jp     14a7 <main+0x317>
movss  (%r15),%xmm1
ucomiss 0xcf7(%rip),%xmm1
jne    14a7 <main+0x317>
jp     14a7 <main+0x317>
movss  0x4(%rbx),%xmm1
ucomiss 0xcdf(%rip),%xmm1
jne    14a7 <main+0x317>
jp     14a7 <main+0x317>
movss  0x4(%r15),%xmm1
ucomiss 0xcc6(%rip),%xmm1
jne    14a7 <main+0x317>
jp     14a7 <main+0x317>
movss  0x8(%rbx),%xmm1
ucomiss 0xcae(%rip),%xmm1
jne    14a7 <main+0x317>
jp     14a7 <main+0x317>
movss  0x8(%r15),%xmm1
ucomiss 0xc95(%rip),%xmm1
jne    14a7 <main+0x317>
jp     14a7 <main+0x317>
movss  0xc(%rbx),%xmm1
ucomiss 0xc7d(%rip),%xmm1
jne    14a7 <main+0x317>
jp     14a7 <main+0x317>
movss  0xc(%r15),%xmm1
ucomiss 0xc64(%rip),%xmm1
jne    14a7 <main+0x317>
jp     14a7 <main+0x317>
movss  0x10(%rbx),%xmm1
ucomiss 0xc4c(%rip),%xmm1
jne    14a7 <main+0x317>
jp     14a7 <main+0x317>
movss  0x10(%r15),%xmm1
ucomiss 0xc33(%rip),%xmm1
jne    14a7 <main+0x317>
jp     14a7 <main+0x317>
movss  0x14(%rbx),%xmm1
ucomiss 0xc1b(%rip),%xmm1
jne    14a7 <main+0x317>
jp     14a7 <main+0x317>
movss  0x14(%r15),%xmm1
ucomiss 0xc02(%rip),%xmm1
jne    14a7 <main+0x317>
jp     14a7 <main+0x317>
movss  0x18(%rbx),%xmm1
ucomiss 0xbea(%rip),%xmm1
jne    14a7 <main+0x317>
jp     14a7 <main+0x317>
movss  0x18(%r15),%xmm1
ucomiss 0xbd1(%rip),%xmm1
jne    14a7 <main+0x317>
jp     14a7 <main+0x317>
movss  0x1c(%rbx),%xmm1
ucomiss 0xbc1(%rip),%xmm1
jne    14a7 <main+0x317>
jp     14a7 <main+0x317>
ucomiss 0xbb6(%rip),%xmm0
jne    14a7 <main+0x317>
jp     14a7 <main+0x317>
mov    %rbx,%rdi
mov    $0x20,%esi
call   1070 <acc_is_present@plt>
test   %rax,%rax
jne    14a7 <main+0x317>
mov    %r15,%rdi
mov    $0x20,%esi
call   1070 <acc_is_present@plt>
test   %rax,%rax
jne    14a7 <main+0x317>
mov    %r14,%rdi
mov    $0x20,%esi
call   1070 <acc_is_present@plt>
test   %rax,%rax
je     14a7 <main+0x317>
mov    %r14,%rdi
call   10a0 <acc_deviceptr@plt>
mov    %rax,%rbx
mov    %r14,%rdi
call   1050 <acc_unmap_data@plt>
mov    %rbx,%rdi
call   10b0 <acc_free@plt>
xor    %eax,%eax
pop    %rbx
pop    %r14
pop    %r15
ret
xor    %eax,%eax
call   1030 <abort@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [12 x i8] c"CheCKpOInT\0A\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca i32
%7 = alloca float*
%8 = alloca float*
%9 = alloca float*
%10 = alloca float*
%11 = alloca i32
%12 = alloca i32
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
store i32 8, i32* %6
%13 = load i32, i32* %6
%14 = sext i32 %13 to i64
%15 = mul i64 %14, 4
%16 = trunc i64 %15 to i32
%17 = call i64 @malloc(i32 %16)
%18 = inttoptr i64 %17 to float*
store float* %18, float** %7
%19 = load i32, i32* %6
%20 = sext i32 %19 to i64
%21 = mul i64 %20, 4
%22 = trunc i64 %21 to i32
%23 = call i64 @malloc(i32 %22)
%24 = inttoptr i64 %23 to float*
store float* %24, float** %8
%25 = load i32, i32* %6
%26 = sext i32 %25 to i64
%27 = mul i64 %26, 4
%28 = trunc i64 %27 to i32
%29 = call i64 @malloc(i32 %28)
%30 = inttoptr i64 %29 to float*
store float* %30, float** %9
store i32 0, i32* %11
br label %31
31: ; preds = %44, %2
%32 = load i32, i32* %11
%33 = load i32, i32* %6
%34 = icmp slt i32 %32, %33
br i1 %34, label %35, label %47
35: ; preds = %31
%36 = load float*, float** %7
%37 = load i32, i32* %11
%38 = sext i32 %37 to i64
%39 = getelementptr inbounds float, float* %36, i64 %38
store float 2.000000e+00, float* %39
%40 = load float*, float** %8
%41 = load i32, i32* %11
%42 = sext i32 %41 to i64
%43 = getelementptr inbounds float, float* %40, i64 %42
store float 5.000000e+00, float* %43
br label %44
44: ; preds = %35
%45 = load i32, i32* %11
%46 = add nsw i32 %45, 1
store i32 %46, i32* %11
br label %31
47: ; preds = %31
%48 = load i32, i32* %6
%49 = sext i32 %48 to i64
%50 = mul i64 %49, 4
%51 = trunc i64 %50 to i32
%52 = call i64 @acc_malloc(i32 %51)
%53 = inttoptr i64 %52 to float*
store float* %53, float** %10
%54 = load float*, float** %9
%55 = load float*, float** %10
%56 = load i32, i32* %6
%57 = sext i32 %56 to i64
%58 = mul i64 %57, 4
%59 = trunc i64 %58 to i32
%60 = call i32 @acc_map_data(float* %54, float* %55, i32 %59)
%61 = load i32, i32* @stderr
%62 = call i32 @fprintf(i32 %61, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
store i32 0, i32* %12
br label %63
63: ; preds = %86, %47
%64 = load i32, i32* %12
%65 = load i32, i32* %6
%66 = icmp slt i32 %64, %65
br i1 %66, label %67, label %89
67: ; preds = %63
%68 = load float*, float** %7
%69 = load i32, i32* %12
%70 = sext i32 %69 to i64
%71 = getelementptr inbounds float, float* %68, i64 %70
%72 = load float, float* %71
%73 = load float*, float** %9
%74 = load i32, i32* %12
%75 = sext i32 %74 to i64
%76 = getelementptr inbounds float, float* %73, i64 %75
store float %72, float* %76
%77 = load float*, float** %9
%78 = load i32, i32* %12
%79 = sext i32 %78 to i64
%80 = getelementptr inbounds float, float* %77, i64 %79
%81 = load float, float* %80
%82 = load float*, float** %8
%83 = load i32, i32* %12
%84 = sext i32 %83 to i64
%85 = getelementptr inbounds float, float* %82, i64 %84
store float %81, float* %85
br label %86
86: ; preds = %67
%87 = load i32, i32* %12
%88 = add nsw i32 %87, 1
store i32 %88, i32* %12
br label %63
89: ; preds = %63
store i32 0, i32* %11
br label %90
90: ; preds = %115, %89
%91 = load i32, i32* %11
%92 = load i32, i32* %6
%93 = icmp slt i32 %91, %92
br i1 %93, label %94, label %118
94: ; preds = %90
%95 = load float*, float** %7
%96 = load i32, i32* %11
%97 = sext i32 %96 to i64
%98 = getelementptr inbounds float, float* %95, i64 %97
%99 = load float, float* %98
%100 = fpext float %99 to double
%101 = fcmp une double %100, 2.000000e+00
br i1 %101, label %102, label %104
102: ; preds = %94
%103 = call i32 (...) @abort()
unreachable
104: ; preds = %94
%105 = load float*, float** %8
%106 = load i32, i32* %11
%107 = sext i32 %106 to i64
%108 = getelementptr inbounds float, float* %105, i64 %107
%109 = load float, float* %108
%110 = fpext float %109 to double
%111 = fcmp une double %110, 2.000000e+00
br i1 %111, label %112, label %114
112: ; preds = %104
%113 = call i32 (...) @abort()
unreachable
114: ; preds = %104
br label %115
115: ; preds = %114
%116 = load i32, i32* %11
%117 = add nsw i32 %116, 1
store i32 %117, i32* %11
br label %90
118: ; preds = %90
%119 = load float*, float** %7
%120 = load i32, i32* %6
%121 = sext i32 %120 to i64
%122 = mul i64 %121, 4
%123 = trunc i64 %122 to i32
%124 = call i64 @acc_is_present(float* %119, i32 %123)
%125 = icmp ne i64 %124, 0
br i1 %125, label %126, label %128
126: ; preds = %118
%127 = call i32 (...) @abort()
unreachable
128: ; preds = %118
%129 = load float*, float** %8
%130 = load i32, i32* %6
%131 = sext i32 %130 to i64
%132 = mul i64 %131, 4
%133 = trunc i64 %132 to i32
%134 = call i64 @acc_is_present(float* %129, i32 %133)
%135 = icmp ne i64 %134, 0
br i1 %135, label %136, label %138
136: ; preds = %128
%137 = call i32 (...) @abort()
unreachable
138: ; preds = %128
%139 = load float*, float** %9
%140 = load i32, i32* %6
%141 = sext i32 %140 to i64
%142 = mul i64 %141, 4
%143 = trunc i64 %142 to i32
%144 = call i64 @acc_is_present(float* %139, i32 %143)
%145 = icmp ne i64 %144, 0
br i1 %145, label %148, label %146
146: ; preds = %138
%147 = call i32 (...) @abort()
unreachable
148: ; preds = %138
%149 = load float*, float** %9
%150 = call i64 @acc_deviceptr(float* %149)
%151 = inttoptr i64 %150 to float*
store float* %151, float** %10
%152 = load float*, float** %9
%153 = call i32 @acc_unmap_data(float* %152)
%154 = load float*, float** %10
%155 = call i32 @acc_free(float* %154)
ret i32 0
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [12 x i8] c"CheCKpOInT\0A\00"
define i32 @main(i32 %0, i8** nocapture readnone %1) {
%3 = tail call i64 @malloc(i32 32)
%4 = inttoptr i64 %3 to float*
%5 = tail call i64 @malloc(i32 32)
%6 = inttoptr i64 %5 to float*
%7 = tail call i64 @malloc(i32 32)
store float 2.000000e+00, float* %4
store float 5.000000e+00, float* %6
%8 = getelementptr inbounds float, float* %4, i64 1
store float 2.000000e+00, float* %8
%9 = getelementptr inbounds float, float* %6, i64 1
store float 5.000000e+00, float* %9
%10 = getelementptr inbounds float, float* %4, i64 2
store float 2.000000e+00, float* %10
%11 = getelementptr inbounds float, float* %6, i64 2
store float 5.000000e+00, float* %11
%12 = getelementptr inbounds float, float* %4, i64 3
store float 2.000000e+00, float* %12
%13 = getelementptr inbounds float, float* %6, i64 3
store float 5.000000e+00, float* %13
%14 = getelementptr inbounds float, float* %4, i64 4
store float 2.000000e+00, float* %14
%15 = getelementptr inbounds float, float* %6, i64 4
store float 5.000000e+00, float* %15
%16 = getelementptr inbounds float, float* %4, i64 5
store float 2.000000e+00, float* %16
%17 = getelementptr inbounds float, float* %6, i64 5
store float 5.000000e+00, float* %17
%18 = getelementptr inbounds float, float* %4, i64 6
store float 2.000000e+00, float* %18
%19 = getelementptr inbounds float, float* %6, i64 6
store float 5.000000e+00, float* %19
%20 = getelementptr inbounds float, float* %4, i64 7
store float 2.000000e+00, float* %20
%21 = getelementptr inbounds float, float* %6, i64 7
store float 5.000000e+00, float* %21
%22 = inttoptr i64 %7 to float*
%23 = tail call i64 @acc_malloc(i32 32)
%24 = inttoptr i64 %23 to float*
%25 = tail call i32 @acc_map_data(float* %22, float* %24, i32 32)
%26 = load i32, i32* @stderr
%27 = tail call i32 @fprintf(i32 %26, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
%28 = load float, float* %4
store float %28, float* %22
store float %28, float* %6
%29 = load float, float* %8
%30 = getelementptr inbounds float, float* %22, i64 1
store float %29, float* %30
store float %29, float* %9
%31 = load float, float* %10
%32 = getelementptr inbounds float, float* %22, i64 2
store float %31, float* %32
store float %31, float* %11
%33 = load float, float* %12
%34 = getelementptr inbounds float, float* %22, i64 3
store float %33, float* %34
store float %33, float* %13
%35 = load float, float* %14
%36 = getelementptr inbounds float, float* %22, i64 4
store float %35, float* %36
store float %35, float* %15
%37 = load float, float* %16
%38 = getelementptr inbounds float, float* %22, i64 5
store float %37, float* %38
store float %37, float* %17
%39 = load float, float* %18
%40 = getelementptr inbounds float, float* %22, i64 6
store float %39, float* %40
store float %39, float* %19
%41 = load float, float* %20
%42 = getelementptr inbounds float, float* %22, i64 7
store float %41, float* %42
store float %41, float* %21
%43 = load float, float* %4
%44 = fcmp une float %43, 2.000000e+00
br i1 %44, label %89, label %91
45: ; preds = %91
%46 = load float, float* %8
%47 = fcmp une float %46, 2.000000e+00
br i1 %47, label %89, label %48
48: ; preds = %45
%49 = load float, float* %9
%50 = fcmp une float %49, 2.000000e+00
br i1 %50, label %94, label %51
51: ; preds = %48
%52 = load float, float* %10
%53 = fcmp une float %52, 2.000000e+00
br i1 %53, label %89, label %54
54: ; preds = %51
%55 = load float, float* %11
%56 = fcmp une float %55, 2.000000e+00
br i1 %56, label %94, label %57
57: ; preds = %54
%58 = load float, float* %12
%59 = fcmp une float %58, 2.000000e+00
br i1 %59, label %89, label %60
60: ; preds = %57
%61 = load float, float* %13
%62 = fcmp une float %61, 2.000000e+00
br i1 %62, label %94, label %63
63: ; preds = %60
%64 = load float, float* %14
%65 = fcmp une float %64, 2.000000e+00
br i1 %65, label %89, label %66
66: ; preds = %63
%67 = load float, float* %15
%68 = fcmp une float %67, 2.000000e+00
br i1 %68, label %94, label %69
69: ; preds = %66
%70 = load float, float* %16
%71 = fcmp une float %70, 2.000000e+00
br i1 %71, label %89, label %72
72: ; preds = %69
%73 = load float, float* %17
%74 = fcmp une float %73, 2.000000e+00
br i1 %74, label %94, label %75
75: ; preds = %72
%76 = load float, float* %18
%77 = fcmp une float %76, 2.000000e+00
br i1 %77, label %89, label %78
78: ; preds = %75
%79 = load float, float* %19
%80 = fcmp une float %79, 2.000000e+00
br i1 %80, label %94, label %81
81: ; preds = %78
%82 = load float, float* %20
%83 = fcmp une float %82, 2.000000e+00
br i1 %83, label %89, label %84
84: ; preds = %81
%85 = fcmp une float %41, 2.000000e+00
br i1 %85, label %94, label %86
86: ; preds = %84
%87 = tail call i64 @acc_is_present(float* %4, i32 32)
%88 = icmp eq i64 %87, 0
br i1 %88, label %98, label %96
89: ; preds = %81, %75, %69, %63, %57, %51, %45, %2
%90 = tail call i32 (...) @abort()
unreachable
91: ; preds = %2
%92 = load float, float* %6
%93 = fcmp une float %92, 2.000000e+00
br i1 %93, label %94, label %45
94: ; preds = %84, %78, %72, %66, %60, %54, %48, %91
%95 = tail call i32 (...) @abort()
unreachable
96: ; preds = %86
%97 = tail call i32 (...) @abort()
unreachable
98: ; preds = %86
%99 = tail call i64 @acc_is_present(float* %6, i32 32)
%100 = icmp eq i64 %99, 0
br i1 %100, label %103, label %101
101: ; preds = %98
%102 = tail call i32 (...) @abort()
unreachable
103: ; preds = %98
%104 = tail call i64 @acc_is_present(float* %22, i32 32)
%105 = icmp eq i64 %104, 0
br i1 %105, label %106, label %108
106: ; preds = %103
%107 = tail call i32 (...) @abort()
unreachable
108: ; preds = %103
%109 = tail call i64 @acc_deviceptr(float* %22)
%110 = inttoptr i64 %109 to float*
%111 = tail call i32 @acc_unmap_data(float* %22)
%112 = tail call i32 @acc_free(float* %110)
ret i32 0
}