#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();
int /*<<< orphan*/ acc_is_present(float *, int);
scalar_t__ acc_malloc(int);
int /*<<< orphan*/ acc_map_data(float *, float *, int);
scalar_t__ malloc(int);
int main(int argc, char **argv) {
  int N = 8;
  float *a, *b, *c;
  float *d_a, *d_b, *d_c;
  int i;
  a = (float *)malloc(N * sizeof(float));
  b = (float *)malloc(N * sizeof(float));
  c = (float *)malloc(N * sizeof(float));
  d_a = (float *)acc_malloc(N * sizeof(float));
  d_b = (float *)acc_malloc(N * sizeof(float));
  d_c = (float *)acc_malloc(N * sizeof(float));
  for (i = 0; i < N; i++) {
    a[i] = 3.0;
    b[i] = 0.0;
  }
  acc_map_data(a, d_a, N * sizeof(float));
  acc_map_data(b, d_b, N * sizeof(float));
  acc_map_data(c, d_c, N * sizeof(float));
#pragma acc update device(a [0:N], b [0:N])
#pragma acc parallel present(a [0:N], b [0:N])
  {
    int ii;
    for (ii = 0; ii < N; ii++)
      b[ii] = a[ii];
  }
#pragma acc update self(a [0:N], b [0:N])
  for (i = 0; i < N; i++) {
    if (a[i] != 3.0)
      abort();
    if (b[i] != 3.0)
      abort();
  }
  if (!acc_is_present(&a[0], (N * sizeof(float))))
    abort();
  if (!acc_is_present(&b[0], (N * sizeof(float))))
    abort();
  for (i = 0; i < N; i++) {
    a[i] = 5.0;
    b[i] = 1.0;
  }
#pragma acc update device(a [0:N], b [0:N])
#pragma acc parallel present(a [0:N], b [0:N])
  {
    int ii;
    for (ii = 0; ii < N; ii++)
      b[ii] = a[ii];
  }
#pragma acc update self(a [0:N], b [0:N])
  for (i = 0; i < N; i++) {
    if (a[i] != 5.0)
      abort();
    if (b[i] != 5.0)
      abort();
  }
  if (!acc_is_present(&a[0], (N * sizeof(float))))
    abort();
  if (!acc_is_present(&b[0], (N * sizeof(float))))
    abort();
  for (i = 0; i < N; i++) {
    a[i] = 5.0;
    b[i] = 1.0;
  }
#pragma acc update device(a [0:N], b [0:N])
#pragma acc parallel present(a [0:N], b [0:N])
  {
    int ii;
    for (ii = 0; ii < N; ii++)
      b[ii] = a[ii];
  }
#pragma acc update host(a [0:N], b [0:N])
  for (i = 0; i < N; i++) {
    if (a[i] != 5.0)
      abort();
    if (b[i] != 5.0)
      abort();
  }
  if (!acc_is_present(&a[0], (N * sizeof(float))))
    abort();
  if (!acc_is_present(&b[0], (N * sizeof(float))))
    abort();
  for (i = 0; i < N; i++) {
    a[i] = 6.0;
    b[i] = 0.0;
  }
#pragma acc update device(a [0:N], b [0:N])
  for (i = 0; i < N; i++) {
    a[i] = 9.0;
  }
#pragma acc parallel present(a [0:N], b [0:N])
  {
    int ii;
    for (ii = 0; ii < N; ii++)
      b[ii] = a[ii];
  }
#pragma acc update self(a [0:N], b [0:N])
  for (i = 0; i < N; i++) {
    if (a[i] != 6.0)
      abort();
    if (b[i] != 6.0)
      abort();
  }
  if (!acc_is_present(&a[0], (N * sizeof(float))))
    abort();
  if (!acc_is_present(&b[0], (N * sizeof(float))))
    abort();
  for (i = 0; i < N; i++) {
    a[i] = 7.0;
    b[i] = 2.0;
  }
#pragma acc update device(a [0:N], b [0:N])
  for (i = 0; i < N; i++) {
    a[i] = 9.0;
  }
#pragma acc parallel present(a [0:N], b [0:N])
  {
    int ii;
    for (ii = 0; ii < N; ii++)
      b[ii] = a[ii];
  }
#pragma acc update self(a [0:N], b [0:N])
  for (i = 0; i < N; i++) {
    if (a[i] != 7.0)
      abort();
    if (b[i] != 7.0)
      abort();
  }
  for (i = 0; i < N; i++) {
    a[i] = 9.0;
  }
#pragma acc update device(a [0:N])
#pragma acc parallel present(a [0:N], b [0:N])
  {
    int ii;
    for (ii = 0; ii < N; ii++)
      b[ii] = a[ii];
  }
#pragma acc update self(a [0:N], b [0:N])
  for (i = 0; i < N; i++) {
    if (a[i] != 9.0)
      abort();
    if (b[i] != 9.0)
      abort();
  }
  if (!acc_is_present(&a[0], (N * sizeof(float))))
    abort();
  if (!acc_is_present(&b[0], (N * sizeof(float))))
    abort();
  for (i = 0; i < N; i++) {
    a[i] = 5.0;
  }
#pragma acc update device(a [0:N])
  for (i = 0; i < N; i++) {
    a[i] = 6.0;
  }
#pragma acc update device(a [0:N >> 1])
#pragma acc parallel present(a [0:N], b [0:N])
  {
    int ii;
    for (ii = 0; ii < N; ii++)
      b[ii] = a[ii];
  }
#pragma acc update self(a [0:N], b [0:N])
  for (i = 0; i < (N >> 1); i++) {
    if (a[i] != 6.0)
      abort();
    if (b[i] != 6.0)
      abort();
  }
  for (i = (N >> 1); i < N; i++) {
    if (a[i] != 5.0)
      abort();
    if (b[i] != 5.0)
      abort();
  }
  if (!acc_is_present(&a[0], (N * sizeof(float))))
    abort();
  if (!acc_is_present(&b[0], (N * sizeof(float))))
    abort();
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x70,%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   1070 <malloc@plt>
mov    %rax,-0x20(%rbp)
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%edi
call   1070 <malloc@plt>
mov    %rax,-0x28(%rbp)
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%edi
call   1070 <malloc@plt>
mov    %rax,-0x30(%rbp)
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%edi
call   1040 <acc_malloc@plt>
mov    %rax,-0x38(%rbp)
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%edi
call   1040 <acc_malloc@plt>
mov    %rax,-0x40(%rbp)
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%edi
call   1040 <acc_malloc@plt>
mov    %rax,-0x48(%rbp)
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    1225 <main+0xd5>
mov    -0x20(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  0xe3e(%rip),%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x28(%rbp),%rax
movslq -0x4c(%rbp),%rcx
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    11e6 <main+0x96>
mov    -0x20(%rbp),%rdi
mov    -0x38(%rbp),%rsi
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%edx
call   1050 <acc_map_data@plt>
mov    -0x28(%rbp),%rdi
mov    -0x40(%rbp),%rsi
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%edx
call   1050 <acc_map_data@plt>
mov    -0x30(%rbp),%rdi
mov    -0x48(%rbp),%rsi
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%edx
call   1050 <acc_map_data@plt>
movl   $0x0,-0x50(%rbp)
mov    -0x50(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    12a5 <main+0x155>
mov    -0x20(%rbp),%rax
movslq -0x50(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x50(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x50(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x50(%rbp)
jmp    1271 <main+0x121>
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    1335 <main+0x1e5>
mov    -0x20(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xd4f(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    12e6 <main+0x196>
jp     12e6 <main+0x196>
jmp    12ed <main+0x19d>
mov    $0x0,%al
call   1030 <abort@plt>
mov    -0x28(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xd1a(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    131b <main+0x1cb>
jp     131b <main+0x1cb>
jmp    1322 <main+0x1d2>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    1327 <main+0x1d7>
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    12ac <main+0x15c>
mov    -0x20(%rbp),%rdi
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%esi
call   1060 <acc_is_present@plt>
cmp    $0x0,%eax
jne    1358 <main+0x208>
mov    $0x0,%al
call   1030 <abort@plt>
mov    -0x28(%rbp),%rdi
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%esi
call   1060 <acc_is_present@plt>
cmp    $0x0,%eax
jne    137b <main+0x22b>
mov    $0x0,%al
call   1030 <abort@plt>
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    13c6 <main+0x276>
mov    -0x20(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  0xc8e(%rip),%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x28(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  0xc89(%rip),%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    1382 <main+0x232>
movl   $0x0,-0x54(%rbp)
mov    -0x54(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    1401 <main+0x2b1>
mov    -0x20(%rbp),%rax
movslq -0x54(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x54(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    13cd <main+0x27d>
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    1491 <main+0x341>
mov    -0x20(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xbd3(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1442 <main+0x2f2>
jp     1442 <main+0x2f2>
jmp    1449 <main+0x2f9>
mov    $0x0,%al
call   1030 <abort@plt>
mov    -0x28(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xb9e(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1477 <main+0x327>
jp     1477 <main+0x327>
jmp    147e <main+0x32e>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    1483 <main+0x333>
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    1408 <main+0x2b8>
mov    -0x20(%rbp),%rdi
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%esi
call   1060 <acc_is_present@plt>
cmp    $0x0,%eax
jne    14b4 <main+0x364>
mov    $0x0,%al
call   1030 <abort@plt>
mov    -0x28(%rbp),%rdi
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%esi
call   1060 <acc_is_present@plt>
cmp    $0x0,%eax
jne    14d7 <main+0x387>
mov    $0x0,%al
call   1030 <abort@plt>
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    1522 <main+0x3d2>
mov    -0x20(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  0xb32(%rip),%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x28(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  0xb2d(%rip),%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    14de <main+0x38e>
movl   $0x0,-0x58(%rbp)
mov    -0x58(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    155d <main+0x40d>
mov    -0x20(%rbp),%rax
movslq -0x58(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x58(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
jmp    1529 <main+0x3d9>
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    15ed <main+0x49d>
mov    -0x20(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xa77(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    159e <main+0x44e>
jp     159e <main+0x44e>
jmp    15a5 <main+0x455>
mov    $0x0,%al
call   1030 <abort@plt>
mov    -0x28(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xa42(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    15d3 <main+0x483>
jp     15d3 <main+0x483>
jmp    15da <main+0x48a>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    15df <main+0x48f>
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    1564 <main+0x414>
mov    -0x20(%rbp),%rdi
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%esi
call   1060 <acc_is_present@plt>
cmp    $0x0,%eax
jne    1610 <main+0x4c0>
mov    $0x0,%al
call   1030 <abort@plt>
mov    -0x28(%rbp),%rdi
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%esi
call   1060 <acc_is_present@plt>
cmp    $0x0,%eax
jne    1633 <main+0x4e3>
mov    $0x0,%al
call   1030 <abort@plt>
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    1679 <main+0x529>
mov    -0x20(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  0x9d2(%rip),%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x28(%rbp),%rax
movslq -0x4c(%rbp),%rcx
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    163a <main+0x4ea>
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    16af <main+0x55f>
mov    -0x20(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  0x994(%rip),%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    1680 <main+0x530>
movl   $0x0,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    16ea <main+0x59a>
mov    -0x20(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    16b6 <main+0x566>
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    177a <main+0x62a>
mov    -0x20(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x8f2(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    172b <main+0x5db>
jp     172b <main+0x5db>
jmp    1732 <main+0x5e2>
mov    $0x0,%al
call   1030 <abort@plt>
mov    -0x28(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x8bd(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1760 <main+0x610>
jp     1760 <main+0x610>
jmp    1767 <main+0x617>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    176c <main+0x61c>
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    16f1 <main+0x5a1>
mov    -0x20(%rbp),%rdi
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%esi
call   1060 <acc_is_present@plt>
cmp    $0x0,%eax
jne    179d <main+0x64d>
mov    $0x0,%al
call   1030 <abort@plt>
mov    -0x28(%rbp),%rdi
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%esi
call   1060 <acc_is_present@plt>
cmp    $0x0,%eax
jne    17c0 <main+0x670>
mov    $0x0,%al
call   1030 <abort@plt>
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    180b <main+0x6bb>
mov    -0x20(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  0x855(%rip),%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x28(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  0x83c(%rip),%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    17c7 <main+0x677>
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    1841 <main+0x6f1>
mov    -0x20(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  0x802(%rip),%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    1812 <main+0x6c2>
movl   $0x0,-0x60(%rbp)
mov    -0x60(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    187c <main+0x72c>
mov    -0x20(%rbp),%rax
movslq -0x60(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x60(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x60(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x60(%rbp)
jmp    1848 <main+0x6f8>
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    190c <main+0x7bc>
mov    -0x20(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x770(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    18bd <main+0x76d>
jp     18bd <main+0x76d>
jmp    18c4 <main+0x774>
mov    $0x0,%al
call   1030 <abort@plt>
mov    -0x28(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x73b(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    18f2 <main+0x7a2>
jp     18f2 <main+0x7a2>
jmp    18f9 <main+0x7a9>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    18fe <main+0x7ae>
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    1883 <main+0x733>
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    1942 <main+0x7f2>
mov    -0x20(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  0x701(%rip),%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    1913 <main+0x7c3>
movl   $0x0,-0x64(%rbp)
mov    -0x64(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    197d <main+0x82d>
mov    -0x20(%rbp),%rax
movslq -0x64(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x64(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    1949 <main+0x7f9>
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    1a0d <main+0x8bd>
mov    -0x20(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x667(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    19be <main+0x86e>
jp     19be <main+0x86e>
jmp    19c5 <main+0x875>
mov    $0x0,%al
call   1030 <abort@plt>
mov    -0x28(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x632(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    19f3 <main+0x8a3>
jp     19f3 <main+0x8a3>
jmp    19fa <main+0x8aa>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    19ff <main+0x8af>
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    1984 <main+0x834>
mov    -0x20(%rbp),%rdi
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%esi
call   1060 <acc_is_present@plt>
cmp    $0x0,%eax
jne    1a30 <main+0x8e0>
mov    $0x0,%al
call   1030 <abort@plt>
mov    -0x28(%rbp),%rdi
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%esi
call   1060 <acc_is_present@plt>
cmp    $0x0,%eax
jne    1a53 <main+0x903>
mov    $0x0,%al
call   1030 <abort@plt>
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    1a89 <main+0x939>
mov    -0x20(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  0x5b6(%rip),%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    1a5a <main+0x90a>
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    1abf <main+0x96f>
mov    -0x20(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  0x57c(%rip),%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    1a90 <main+0x940>
movl   $0x0,-0x68(%rbp)
mov    -0x68(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    1afa <main+0x9aa>
mov    -0x20(%rbp),%rax
movslq -0x68(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x68(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x68(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x68(%rbp)
jmp    1ac6 <main+0x976>
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
mov    -0x14(%rbp),%ecx
sar    $0x1,%ecx
cmp    %ecx,%eax
jge    1b8f <main+0xa3f>
mov    -0x20(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x4dd(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1b40 <main+0x9f0>
jp     1b40 <main+0x9f0>
jmp    1b47 <main+0x9f7>
mov    $0x0,%al
call   1030 <abort@plt>
mov    -0x28(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x4a8(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1b75 <main+0xa25>
jp     1b75 <main+0xa25>
jmp    1b7c <main+0xa2c>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    1b81 <main+0xa31>
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    1b01 <main+0x9b1>
mov    -0x14(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    1c21 <main+0xad1>
mov    -0x20(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x443(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1bd2 <main+0xa82>
jp     1bd2 <main+0xa82>
jmp    1bd9 <main+0xa89>
mov    $0x0,%al
call   1030 <abort@plt>
mov    -0x28(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x40e(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1c07 <main+0xab7>
jp     1c07 <main+0xab7>
jmp    1c0e <main+0xabe>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    1c13 <main+0xac3>
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    1b98 <main+0xa48>
mov    -0x20(%rbp),%rdi
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%esi
call   1060 <acc_is_present@plt>
cmp    $0x0,%eax
jne    1c44 <main+0xaf4>
mov    $0x0,%al
call   1030 <abort@plt>
mov    -0x28(%rbp),%rdi
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%esi
call   1060 <acc_is_present@plt>
cmp    $0x0,%eax
jne    1c67 <main+0xb17>
mov    $0x0,%al
call   1030 <abort@plt>
xor    %eax,%eax
add    $0x70,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    $0x20,%edi
call   1070 <malloc@plt>
mov    %rax,%rbx
mov    $0x20,%edi
call   1070 <malloc@plt>
mov    %rax,%r14
mov    $0x20,%edi
call   1070 <malloc@plt>
mov    %rax,%r15
mov    $0x20,%edi
call   1040 <acc_malloc@plt>
mov    %rax,%r13
mov    $0x20,%edi
call   1040 <acc_malloc@plt>
mov    %rax,%rbp
mov    $0x20,%edi
call   1040 <acc_malloc@plt>
mov    %rax,%r12
movl   $0x40400000,(%rbx)
movl   $0x0,(%r14)
movl   $0x40400000,0x4(%rbx)
movl   $0x0,0x4(%r14)
movl   $0x40400000,0x8(%rbx)
movl   $0x0,0x8(%r14)
movl   $0x40400000,0xc(%rbx)
movl   $0x0,0xc(%r14)
movl   $0x40400000,0x10(%rbx)
movl   $0x0,0x10(%r14)
movl   $0x40400000,0x14(%rbx)
movl   $0x0,0x14(%r14)
movl   $0x40400000,0x18(%rbx)
movl   $0x0,0x18(%r14)
movl   $0x40400000,0x1c(%rbx)
movl   $0x0,0x1c(%r14)
mov    %rbx,%rdi
mov    %r13,%rsi
mov    $0x20,%edx
call   1050 <acc_map_data@plt>
mov    %r14,%rdi
mov    %rbp,%rsi
mov    $0x20,%edx
call   1050 <acc_map_data@plt>
mov    %r15,%rdi
mov    %r12,%rsi
mov    $0x20,%edx
call   1050 <acc_map_data@plt>
movss  (%rbx),%xmm7
movss  %xmm7,(%r14)
movss  0x4(%rbx),%xmm6
movss  %xmm6,0x4(%r14)
movss  0x8(%rbx),%xmm5
movss  %xmm5,0x8(%r14)
movss  0xc(%rbx),%xmm4
movss  %xmm4,0xc(%r14)
movss  0x10(%rbx),%xmm3
movss  %xmm3,0x10(%r14)
movss  0x14(%rbx),%xmm2
movss  %xmm2,0x14(%r14)
movss  0x18(%rbx),%xmm1
movss  %xmm1,0x18(%r14)
movss  0x1c(%rbx),%xmm8
movss  %xmm8,0x1c(%r14)
movss  (%rbx),%xmm0
ucomiss 0xd4f(%rip),%xmm0
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
ucomiss 0xd3c(%rip),%xmm7
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
movss  0x4(%rbx),%xmm0
ucomiss 0xd24(%rip),%xmm0
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
ucomiss 0xd11(%rip),%xmm6
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
movss  0x8(%rbx),%xmm0
ucomiss 0xcf9(%rip),%xmm0
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
ucomiss 0xce6(%rip),%xmm5
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
movss  0xc(%rbx),%xmm0
ucomiss 0xcce(%rip),%xmm0
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
ucomiss 0xcbb(%rip),%xmm4
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
movss  0x10(%rbx),%xmm0
ucomiss 0xca3(%rip),%xmm0
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
ucomiss 0xc90(%rip),%xmm3
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
movss  0x14(%rbx),%xmm0
ucomiss 0xc78(%rip),%xmm0
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
ucomiss 0xc65(%rip),%xmm2
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
movss  0x18(%rbx),%xmm0
ucomiss 0xc4d(%rip),%xmm0
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
ucomiss 0xc3a(%rip),%xmm1
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
movss  0x1c(%rbx),%xmm0
ucomiss 0xc22(%rip),%xmm0
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
ucomiss 0xc0e(%rip),%xmm8
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
mov    %rbx,%rdi
mov    $0x20,%esi
call   1060 <acc_is_present@plt>
test   %eax,%eax
je     193c <main+0x7ec>
mov    %r14,%rdi
mov    $0x20,%esi
call   1060 <acc_is_present@plt>
test   %eax,%eax
je     193c <main+0x7ec>
movl   $0x40a00000,(%rbx)
movl   $0x3f800000,(%r14)
movl   $0x40a00000,0x4(%rbx)
movl   $0x3f800000,0x4(%r14)
3f
movl   $0x40a00000,0x8(%rbx)
movl   $0x3f800000,0x8(%r14)
3f
movl   $0x40a00000,0xc(%rbx)
movl   $0x3f800000,0xc(%r14)
3f
movl   $0x40a00000,0x10(%rbx)
movl   $0x3f800000,0x10(%r14)
3f
movl   $0x40a00000,0x14(%rbx)
movl   $0x3f800000,0x14(%r14)
3f
movl   $0x40a00000,0x18(%rbx)
movl   $0x3f800000,0x18(%r14)
3f
movl   $0x40a00000,0x1c(%rbx)
movl   $0x3f800000,0x1c(%r14)
3f
movss  (%rbx),%xmm7
movss  %xmm7,(%r14)
movss  0x4(%rbx),%xmm6
movss  %xmm6,0x4(%r14)
movss  0x8(%rbx),%xmm5
movss  %xmm5,0x8(%r14)
movss  0xc(%rbx),%xmm4
movss  %xmm4,0xc(%r14)
movss  0x10(%rbx),%xmm3
movss  %xmm3,0x10(%r14)
movss  0x14(%rbx),%xmm2
movss  %xmm2,0x14(%r14)
movss  0x18(%rbx),%xmm1
movss  %xmm1,0x18(%r14)
movss  0x1c(%rbx),%xmm8
movss  %xmm8,0x1c(%r14)
movss  (%rbx),%xmm0
ucomiss 0xb04(%rip),%xmm0
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
ucomiss 0xaf1(%rip),%xmm7
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
movss  0x4(%rbx),%xmm0
ucomiss 0xad9(%rip),%xmm0
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
ucomiss 0xac6(%rip),%xmm6
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
movss  0x8(%rbx),%xmm0
ucomiss 0xaae(%rip),%xmm0
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
ucomiss 0xa9b(%rip),%xmm5
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
movss  0xc(%rbx),%xmm0
ucomiss 0xa83(%rip),%xmm0
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
ucomiss 0xa70(%rip),%xmm4
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
movss  0x10(%rbx),%xmm0
ucomiss 0xa58(%rip),%xmm0
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
ucomiss 0xa45(%rip),%xmm3
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
movss  0x14(%rbx),%xmm0
ucomiss 0xa2d(%rip),%xmm0
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
ucomiss 0xa1a(%rip),%xmm2
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
movss  0x18(%rbx),%xmm0
ucomiss 0xa02(%rip),%xmm0
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
ucomiss 0x9ef(%rip),%xmm1
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
movss  0x1c(%rbx),%xmm0
ucomiss 0x9d7(%rip),%xmm0
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
ucomiss 0x9c3(%rip),%xmm8
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
mov    %rbx,%rdi
mov    $0x20,%esi
call   1060 <acc_is_present@plt>
test   %eax,%eax
je     193c <main+0x7ec>
mov    %r14,%rdi
mov    $0x20,%esi
call   1060 <acc_is_present@plt>
test   %eax,%eax
je     193c <main+0x7ec>
movl   $0x40a00000,(%rbx)
movl   $0x3f800000,(%r14)
movl   $0x40a00000,0x4(%rbx)
movl   $0x3f800000,0x4(%r14)
3f
movl   $0x40a00000,0x8(%rbx)
movl   $0x3f800000,0x8(%r14)
3f
movl   $0x40a00000,0xc(%rbx)
movl   $0x3f800000,0xc(%r14)
3f
movl   $0x40a00000,0x10(%rbx)
movl   $0x3f800000,0x10(%r14)
3f
movl   $0x40a00000,0x14(%rbx)
movl   $0x3f800000,0x14(%r14)
3f
movl   $0x40a00000,0x18(%rbx)
movl   $0x3f800000,0x18(%r14)
3f
movl   $0x40a00000,0x1c(%rbx)
movl   $0x3f800000,0x1c(%r14)
3f
movss  (%rbx),%xmm7
movss  %xmm7,(%r14)
movss  0x4(%rbx),%xmm6
movss  %xmm6,0x4(%r14)
movss  0x8(%rbx),%xmm5
movss  %xmm5,0x8(%r14)
movss  0xc(%rbx),%xmm4
movss  %xmm4,0xc(%r14)
movss  0x10(%rbx),%xmm3
movss  %xmm3,0x10(%r14)
movss  0x14(%rbx),%xmm2
movss  %xmm2,0x14(%r14)
movss  0x18(%rbx),%xmm1
movss  %xmm1,0x18(%r14)
movss  0x1c(%rbx),%xmm8
movss  %xmm8,0x1c(%r14)
movss  (%rbx),%xmm0
ucomiss 0x8b5(%rip),%xmm0
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
ucomiss 0x8a2(%rip),%xmm7
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
movss  0x4(%rbx),%xmm0
ucomiss 0x88a(%rip),%xmm0
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
ucomiss 0x877(%rip),%xmm6
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
movss  0x8(%rbx),%xmm0
ucomiss 0x85f(%rip),%xmm0
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
ucomiss 0x84c(%rip),%xmm5
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
movss  0xc(%rbx),%xmm0
ucomiss 0x834(%rip),%xmm0
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
ucomiss 0x821(%rip),%xmm4
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
movss  0x10(%rbx),%xmm0
ucomiss 0x809(%rip),%xmm0
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
ucomiss 0x7f6(%rip),%xmm3
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
movss  0x14(%rbx),%xmm0
ucomiss 0x7de(%rip),%xmm0
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
ucomiss 0x7cb(%rip),%xmm2
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
movss  0x18(%rbx),%xmm0
ucomiss 0x7b3(%rip),%xmm0
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
ucomiss 0x7a0(%rip),%xmm1
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
movss  0x1c(%rbx),%xmm0
ucomiss 0x788(%rip),%xmm0
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
ucomiss 0x774(%rip),%xmm8
jne    193c <main+0x7ec>
jp     193c <main+0x7ec>
mov    %rbx,%rdi
mov    $0x20,%esi
call   1060 <acc_is_present@plt>
test   %eax,%eax
je     193c <main+0x7ec>
mov    %r14,%rdi
mov    $0x20,%esi
call   1060 <acc_is_present@plt>
test   %eax,%eax
je     193c <main+0x7ec>
xorps  %xmm0,%xmm0
movups %xmm0,0x4(%r14)
movq   $0x0,0x14(%r14)
movl   $0x0,0x1c(%r14)
movaps 0x72f(%rip),%xmm0
movups %xmm0,(%rbx)
movups %xmm0,0x10(%rbx)
movl   $0x41100000,(%r14)
movss  0x4(%rbx),%xmm0
movss  %xmm0,0x4(%r14)
movss  0x8(%rbx),%xmm0
movss  %xmm0,0x8(%r14)
movss  0xc(%rbx),%xmm0
movss  %xmm0,0xc(%r14)
movss  0x10(%rbx),%xmm0
movss  %xmm0,0x10(%r14)
movss  0x14(%rbx),%xmm0
movss  %xmm0,0x14(%r14)
movss  0x18(%rbx),%xmm0
movss  %xmm0,0x18(%r14)
movss  0x1c(%rbx),%xmm0
movss  %xmm0,0x1c(%r14)
xor    %eax,%eax
call   1030 <abort@plt>

LLVM IR (-O0):
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 float*
%12 = alloca float*
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
store i32 8, i32* %6
%21 = load i32, i32* %6
%22 = sext i32 %21 to i64
%23 = mul i64 %22, 4
%24 = trunc i64 %23 to i32
%25 = call i64 @malloc(i32 %24)
%26 = inttoptr i64 %25 to float*
store float* %26, float** %7
%27 = load i32, i32* %6
%28 = sext i32 %27 to i64
%29 = mul i64 %28, 4
%30 = trunc i64 %29 to i32
%31 = call i64 @malloc(i32 %30)
%32 = inttoptr i64 %31 to float*
store float* %32, float** %8
%33 = load i32, i32* %6
%34 = sext i32 %33 to i64
%35 = mul i64 %34, 4
%36 = trunc i64 %35 to i32
%37 = call i64 @malloc(i32 %36)
%38 = inttoptr i64 %37 to float*
store float* %38, float** %9
%39 = load i32, i32* %6
%40 = sext i32 %39 to i64
%41 = mul i64 %40, 4
%42 = trunc i64 %41 to i32
%43 = call i64 @acc_malloc(i32 %42)
%44 = inttoptr i64 %43 to float*
store float* %44, float** %10
%45 = load i32, i32* %6
%46 = sext i32 %45 to i64
%47 = mul i64 %46, 4
%48 = trunc i64 %47 to i32
%49 = call i64 @acc_malloc(i32 %48)
%50 = inttoptr i64 %49 to float*
store float* %50, float** %11
%51 = load i32, i32* %6
%52 = sext i32 %51 to i64
%53 = mul i64 %52, 4
%54 = trunc i64 %53 to i32
%55 = call i64 @acc_malloc(i32 %54)
%56 = inttoptr i64 %55 to float*
store float* %56, float** %12
store i32 0, i32* %13
br label %57
57: ; preds = %70, %2
%58 = load i32, i32* %13
%59 = load i32, i32* %6
%60 = icmp slt i32 %58, %59
br i1 %60, label %61, label %73
61: ; preds = %57
%62 = load float*, float** %7
%63 = load i32, i32* %13
%64 = sext i32 %63 to i64
%65 = getelementptr inbounds float, float* %62, i64 %64
store float 3.000000e+00, float* %65
%66 = load float*, float** %8
%67 = load i32, i32* %13
%68 = sext i32 %67 to i64
%69 = getelementptr inbounds float, float* %66, i64 %68
store float 0.000000e+00, float* %69
br label %70
70: ; preds = %61
%71 = load i32, i32* %13
%72 = add nsw i32 %71, 1
store i32 %72, i32* %13
br label %57
73: ; preds = %57
%74 = load float*, float** %7
%75 = load float*, float** %10
%76 = load i32, i32* %6
%77 = sext i32 %76 to i64
%78 = mul i64 %77, 4
%79 = trunc i64 %78 to i32
%80 = call i32 @acc_map_data(float* %74, float* %75, i32 %79)
%81 = load float*, float** %8
%82 = load float*, float** %11
%83 = load i32, i32* %6
%84 = sext i32 %83 to i64
%85 = mul i64 %84, 4
%86 = trunc i64 %85 to i32
%87 = call i32 @acc_map_data(float* %81, float* %82, i32 %86)
%88 = load float*, float** %9
%89 = load float*, float** %12
%90 = load i32, i32* %6
%91 = sext i32 %90 to i64
%92 = mul i64 %91, 4
%93 = trunc i64 %92 to i32
%94 = call i32 @acc_map_data(float* %88, float* %89, i32 %93)
store i32 0, i32* %14
br label %95
95: ; preds = %109, %73
%96 = load i32, i32* %14
%97 = load i32, i32* %6
%98 = icmp slt i32 %96, %97
br i1 %98, label %99, label %112
99: ; preds = %95
%100 = load float*, float** %7
%101 = load i32, i32* %14
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds float, float* %100, i64 %102
%104 = load float, float* %103
%105 = load float*, float** %8
%106 = load i32, i32* %14
%107 = sext i32 %106 to i64
%108 = getelementptr inbounds float, float* %105, i64 %107
store float %104, float* %108
br label %109
109: ; preds = %99
%110 = load i32, i32* %14
%111 = add nsw i32 %110, 1
store i32 %111, i32* %14
br label %95
112: ; preds = %95
store i32 0, i32* %13
br label %113
113: ; preds = %138, %112
%114 = load i32, i32* %13
%115 = load i32, i32* %6
%116 = icmp slt i32 %114, %115
br i1 %116, label %117, label %141
117: ; preds = %113
%118 = load float*, float** %7
%119 = load i32, i32* %13
%120 = sext i32 %119 to i64
%121 = getelementptr inbounds float, float* %118, i64 %120
%122 = load float, float* %121
%123 = fpext float %122 to double
%124 = fcmp une double %123, 3.000000e+00
br i1 %124, label %125, label %127
125: ; preds = %117
%126 = call i32 (...) @abort()
unreachable
127: ; preds = %117
%128 = load float*, float** %8
%129 = load i32, i32* %13
%130 = sext i32 %129 to i64
%131 = getelementptr inbounds float, float* %128, i64 %130
%132 = load float, float* %131
%133 = fpext float %132 to double
%134 = fcmp une double %133, 3.000000e+00
br i1 %134, label %135, label %137
135: ; preds = %127
%136 = call i32 (...) @abort()
unreachable
137: ; preds = %127
br label %138
138: ; preds = %137
%139 = load i32, i32* %13
%140 = add nsw i32 %139, 1
store i32 %140, i32* %13
br label %113
141: ; preds = %113
%142 = load float*, float** %7
%143 = getelementptr inbounds float, float* %142, i64 0
%144 = load i32, i32* %6
%145 = sext i32 %144 to i64
%146 = mul i64 %145, 4
%147 = trunc i64 %146 to i32
%148 = call i32 @acc_is_present(float* %143, i32 %147)
%149 = icmp ne i32 %148, 0
br i1 %149, label %152, label %150
150: ; preds = %141
%151 = call i32 (...) @abort()
unreachable
152: ; preds = %141
%153 = load float*, float** %8
%154 = getelementptr inbounds float, float* %153, i64 0
%155 = load i32, i32* %6
%156 = sext i32 %155 to i64
%157 = mul i64 %156, 4
%158 = trunc i64 %157 to i32
%159 = call i32 @acc_is_present(float* %154, i32 %158)
%160 = icmp ne i32 %159, 0
br i1 %160, label %163, label %161
161: ; preds = %152
%162 = call i32 (...) @abort()
unreachable
163: ; preds = %152
store i32 0, i32* %13
br label %164
164: ; preds = %177, %163
%165 = load i32, i32* %13
%166 = load i32, i32* %6
%167 = icmp slt i32 %165, %166
br i1 %167, label %168, label %180
168: ; preds = %164
%169 = load float*, float** %7
%170 = load i32, i32* %13
%171 = sext i32 %170 to i64
%172 = getelementptr inbounds float, float* %169, i64 %171
store float 5.000000e+00, float* %172
%173 = load float*, float** %8
%174 = load i32, i32* %13
%175 = sext i32 %174 to i64
%176 = getelementptr inbounds float, float* %173, i64 %175
store float 1.000000e+00, float* %176
br label %177
177: ; preds = %168
%178 = load i32, i32* %13
%179 = add nsw i32 %178, 1
store i32 %179, i32* %13
br label %164
180: ; preds = %164
store i32 0, i32* %15
br label %181
181: ; preds = %195, %180
%182 = load i32, i32* %15
%183 = load i32, i32* %6
%184 = icmp slt i32 %182, %183
br i1 %184, label %185, label %198
185: ; preds = %181
%186 = load float*, float** %7
%187 = load i32, i32* %15
%188 = sext i32 %187 to i64
%189 = getelementptr inbounds float, float* %186, i64 %188
%190 = load float, float* %189
%191 = load float*, float** %8
%192 = load i32, i32* %15
%193 = sext i32 %192 to i64
%194 = getelementptr inbounds float, float* %191, i64 %193
store float %190, float* %194
br label %195
195: ; preds = %185
%196 = load i32, i32* %15
%197 = add nsw i32 %196, 1
store i32 %197, i32* %15
br label %181
198: ; preds = %181
store i32 0, i32* %13
br label %199
199: ; preds = %224, %198
%200 = load i32, i32* %13
%201 = load i32, i32* %6
%202 = icmp slt i32 %200, %201
br i1 %202, label %203, label %227
203: ; preds = %199
%204 = load float*, float** %7
%205 = load i32, i32* %13
%206 = sext i32 %205 to i64
%207 = getelementptr inbounds float, float* %204, i64 %206
%208 = load float, float* %207
%209 = fpext float %208 to double
%210 = fcmp une double %209, 5.000000e+00
br i1 %210, label %211, label %213
211: ; preds = %203
%212 = call i32 (...) @abort()
unreachable
213: ; preds = %203
%214 = load float*, float** %8
%215 = load i32, i32* %13
%216 = sext i32 %215 to i64
%217 = getelementptr inbounds float, float* %214, i64 %216
%218 = load float, float* %217
%219 = fpext float %218 to double
%220 = fcmp une double %219, 5.000000e+00
br i1 %220, label %221, label %223
221: ; preds = %213
%222 = call i32 (...) @abort()
unreachable
223: ; preds = %213
br label %224
224: ; preds = %223
%225 = load i32, i32* %13
%226 = add nsw i32 %225, 1
store i32 %226, i32* %13
br label %199
227: ; preds = %199
%228 = load float*, float** %7
%229 = getelementptr inbounds float, float* %228, i64 0
%230 = load i32, i32* %6
%231 = sext i32 %230 to i64
%232 = mul i64 %231, 4
%233 = trunc i64 %232 to i32
%234 = call i32 @acc_is_present(float* %229, i32 %233)
%235 = icmp ne i32 %234, 0
br i1 %235, label %238, label %236
236: ; preds = %227
%237 = call i32 (...) @abort()
unreachable
238: ; preds = %227
%239 = load float*, float** %8
%240 = getelementptr inbounds float, float* %239, i64 0
%241 = load i32, i32* %6
%242 = sext i32 %241 to i64
%243 = mul i64 %242, 4
%244 = trunc i64 %243 to i32
%245 = call i32 @acc_is_present(float* %240, i32 %244)
%246 = icmp ne i32 %245, 0
br i1 %246, label %249, label %247
247: ; preds = %238
%248 = call i32 (...) @abort()
unreachable
249: ; preds = %238
store i32 0, i32* %13
br label %250
250: ; preds = %263, %249
%251 = load i32, i32* %13
%252 = load i32, i32* %6
%253 = icmp slt i32 %251, %252
br i1 %253, label %254, label %266
254: ; preds = %250
%255 = load float*, float** %7
%256 = load i32, i32* %13
%257 = sext i32 %256 to i64
%258 = getelementptr inbounds float, float* %255, i64 %257
store float 5.000000e+00, float* %258
%259 = load float*, float** %8
%260 = load i32, i32* %13
%261 = sext i32 %260 to i64
%262 = getelementptr inbounds float, float* %259, i64 %261
store float 1.000000e+00, float* %262
br label %263
263: ; preds = %254
%264 = load i32, i32* %13
%265 = add nsw i32 %264, 1
store i32 %265, i32* %13
br label %250
266: ; preds = %250
store i32 0, i32* %16
br label %267
267: ; preds = %281, %266
%268 = load i32, i32* %16
%269 = load i32, i32* %6
%270 = icmp slt i32 %268, %269
br i1 %270, label %271, label %284
271: ; preds = %267
%272 = load float*, float** %7
%273 = load i32, i32* %16
%274 = sext i32 %273 to i64
%275 = getelementptr inbounds float, float* %272, i64 %274
%276 = load float, float* %275
%277 = load float*, float** %8
%278 = load i32, i32* %16
%279 = sext i32 %278 to i64
%280 = getelementptr inbounds float, float* %277, i64 %279
store float %276, float* %280
br label %281
281: ; preds = %271
%282 = load i32, i32* %16
%283 = add nsw i32 %282, 1
store i32 %283, i32* %16
br label %267
284: ; preds = %267
store i32 0, i32* %13
br label %285
285: ; preds = %310, %284
%286 = load i32, i32* %13
%287 = load i32, i32* %6
%288 = icmp slt i32 %286, %287
br i1 %288, label %289, label %313
289: ; preds = %285
%290 = load float*, float** %7
%291 = load i32, i32* %13
%292 = sext i32 %291 to i64
%293 = getelementptr inbounds float, float* %290, i64 %292
%294 = load float, float* %293
%295 = fpext float %294 to double
%296 = fcmp une double %295, 5.000000e+00
br i1 %296, label %297, label %299
297: ; preds = %289
%298 = call i32 (...) @abort()
unreachable
299: ; preds = %289
%300 = load float*, float** %8
%301 = load i32, i32* %13
%302 = sext i32 %301 to i64
%303 = getelementptr inbounds float, float* %300, i64 %302
%304 = load float, float* %303
%305 = fpext float %304 to double
%306 = fcmp une double %305, 5.000000e+00
br i1 %306, label %307, label %309
307: ; preds = %299
%308 = call i32 (...) @abort()
unreachable
309: ; preds = %299
br label %310
310: ; preds = %309
%311 = load i32, i32* %13
%312 = add nsw i32 %311, 1
store i32 %312, i32* %13
br label %285
313: ; preds = %285
%314 = load float*, float** %7
%315 = getelementptr inbounds float, float* %314, i64 0
%316 = load i32, i32* %6
%317 = sext i32 %316 to i64
%318 = mul i64 %317, 4
%319 = trunc i64 %318 to i32
%320 = call i32 @acc_is_present(float* %315, i32 %319)
%321 = icmp ne i32 %320, 0
br i1 %321, label %324, label %322
322: ; preds = %313
%323 = call i32 (...) @abort()
unreachable
324: ; preds = %313
%325 = load float*, float** %8
%326 = getelementptr inbounds float, float* %325, i64 0
%327 = load i32, i32* %6
%328 = sext i32 %327 to i64
%329 = mul i64 %328, 4
%330 = trunc i64 %329 to i32
%331 = call i32 @acc_is_present(float* %326, i32 %330)
%332 = icmp ne i32 %331, 0
br i1 %332, label %335, label %333
333: ; preds = %324
%334 = call i32 (...) @abort()
unreachable
335: ; preds = %324
store i32 0, i32* %13
br label %336
336: ; preds = %349, %335
%337 = load i32, i32* %13
%338 = load i32, i32* %6
%339 = icmp slt i32 %337, %338
br i1 %339, label %340, label %352
340: ; preds = %336
%341 = load float*, float** %7
%342 = load i32, i32* %13
%343 = sext i32 %342 to i64
%344 = getelementptr inbounds float, float* %341, i64 %343
store float 6.000000e+00, float* %344
%345 = load float*, float** %8
%346 = load i32, i32* %13
%347 = sext i32 %346 to i64
%348 = getelementptr inbounds float, float* %345, i64 %347
store float 0.000000e+00, float* %348
br label %349
349: ; preds = %340
%350 = load i32, i32* %13
%351 = add nsw i32 %350, 1
store i32 %351, i32* %13
br label %336
352: ; preds = %336
store i32 0, i32* %13
br label %353
353: ; preds = %362, %352
%354 = load i32, i32* %13
%355 = load i32, i32* %6
%356 = icmp slt i32 %354, %355
br i1 %356, label %357, label %365
357: ; preds = %353
%358 = load float*, float** %7
%359 = load i32, i32* %13
%360 = sext i32 %359 to i64
%361 = getelementptr inbounds float, float* %358, i64 %360
store float 9.000000e+00, float* %361
br label %362
362: ; preds = %357
%363 = load i32, i32* %13
%364 = add nsw i32 %363, 1
store i32 %364, i32* %13
br label %353
365: ; preds = %353
store i32 0, i32* %17
br label %366
366: ; preds = %380, %365
%367 = load i32, i32* %17
%368 = load i32, i32* %6
%369 = icmp slt i32 %367, %368
br i1 %369, label %370, label %383
370: ; preds = %366
%371 = load float*, float** %7
%372 = load i32, i32* %17
%373 = sext i32 %372 to i64
%374 = getelementptr inbounds float, float* %371, i64 %373
%375 = load float, float* %374
%376 = load float*, float** %8
%377 = load i32, i32* %17
%378 = sext i32 %377 to i64
%379 = getelementptr inbounds float, float* %376, i64 %378
store float %375, float* %379
br label %380
380: ; preds = %370
%381 = load i32, i32* %17
%382 = add nsw i32 %381, 1
store i32 %382, i32* %17
br label %366
383: ; preds = %366
store i32 0, i32* %13
br label %384
384: ; preds = %409, %383
%385 = load i32, i32* %13
%386 = load i32, i32* %6
%387 = icmp slt i32 %385, %386
br i1 %387, label %388, label %412
388: ; preds = %384
%389 = load float*, float** %7
%390 = load i32, i32* %13
%391 = sext i32 %390 to i64
%392 = getelementptr inbounds float, float* %389, i64 %391
%393 = load float, float* %392
%394 = fpext float %393 to double
%395 = fcmp une double %394, 6.000000e+00
br i1 %395, label %396, label %398
396: ; preds = %388
%397 = call i32 (...) @abort()
unreachable
398: ; preds = %388
%399 = load float*, float** %8
%400 = load i32, i32* %13
%401 = sext i32 %400 to i64
%402 = getelementptr inbounds float, float* %399, i64 %401
%403 = load float, float* %402
%404 = fpext float %403 to double
%405 = fcmp une double %404, 6.000000e+00
br i1 %405, label %406, label %408
406: ; preds = %398
%407 = call i32 (...) @abort()
unreachable
408: ; preds = %398
br label %409
409: ; preds = %408
%410 = load i32, i32* %13
%411 = add nsw i32 %410, 1
store i32 %411, i32* %13
br label %384
412: ; preds = %384
%413 = load float*, float** %7
%414 = getelementptr inbounds float, float* %413, i64 0
%415 = load i32, i32* %6
%416 = sext i32 %415 to i64
%417 = mul i64 %416, 4
%418 = trunc i64 %417 to i32
%419 = call i32 @acc_is_present(float* %414, i32 %418)
%420 = icmp ne i32 %419, 0
br i1 %420, label %423, label %421
421: ; preds = %412
%422 = call i32 (...) @abort()
unreachable
423: ; preds = %412
%424 = load float*, float** %8
%425 = getelementptr inbounds float, float* %424, i64 0
%426 = load i32, i32* %6
%427 = sext i32 %426 to i64
%428 = mul i64 %427, 4
%429 = trunc i64 %428 to i32
%430 = call i32 @acc_is_present(float* %425, i32 %429)
%431 = icmp ne i32 %430, 0
br i1 %431, label %434, label %432
432: ; preds = %423
%433 = call i32 (...) @abort()
unreachable
434: ; preds = %423
store i32 0, i32* %13
br label %435
435: ; preds = %448, %434
%436 = load i32, i32* %13
%437 = load i32, i32* %6
%438 = icmp slt i32 %436, %437
br i1 %438, label %439, label %451
439: ; preds = %435
%440 = load float*, float** %7
%441 = load i32, i32* %13
%442 = sext i32 %441 to i64
%443 = getelementptr inbounds float, float* %440, i64 %442
store float 7.000000e+00, float* %443
%444 = load float*, float** %8
%445 = load i32, i32* %13
%446 = sext i32 %445 to i64
%447 = getelementptr inbounds float, float* %444, i64 %446
store float 2.000000e+00, float* %447
br label %448
448: ; preds = %439
%449 = load i32, i32* %13
%450 = add nsw i32 %449, 1
store i32 %450, i32* %13
br label %435
451: ; preds = %435
store i32 0, i32* %13
br label %452
452: ; preds = %461, %451
%453 = load i32, i32* %13
%454 = load i32, i32* %6
%455 = icmp slt i32 %453, %454
br i1 %455, label %456, label %464
456: ; preds = %452
%457 = load float*, float** %7
%458 = load i32, i32* %13
%459 = sext i32 %458 to i64
%460 = getelementptr inbounds float, float* %457, i64 %459
store float 9.000000e+00, float* %460
br label %461
461: ; preds = %456
%462 = load i32, i32* %13
%463 = add nsw i32 %462, 1
store i32 %463, i32* %13
br label %452
464: ; preds = %452
store i32 0, i32* %18
br label %465
465: ; preds = %479, %464
%466 = load i32, i32* %18
%467 = load i32, i32* %6
%468 = icmp slt i32 %466, %467
br i1 %468, label %469, label %482
469: ; preds = %465
%470 = load float*, float** %7
%471 = load i32, i32* %18
%472 = sext i32 %471 to i64
%473 = getelementptr inbounds float, float* %470, i64 %472
%474 = load float, float* %473
%475 = load float*, float** %8
%476 = load i32, i32* %18
%477 = sext i32 %476 to i64
%478 = getelementptr inbounds float, float* %475, i64 %477
store float %474, float* %478
br label %479
479: ; preds = %469
%480 = load i32, i32* %18
%481 = add nsw i32 %480, 1
store i32 %481, i32* %18
br label %465
482: ; preds = %465
store i32 0, i32* %13
br label %483
483: ; preds = %508, %482
%484 = load i32, i32* %13
%485 = load i32, i32* %6
%486 = icmp slt i32 %484, %485
br i1 %486, label %487, label %511
487: ; preds = %483
%488 = load float*, float** %7
%489 = load i32, i32* %13
%490 = sext i32 %489 to i64
%491 = getelementptr inbounds float, float* %488, i64 %490
%492 = load float, float* %491
%493 = fpext float %492 to double
%494 = fcmp une double %493, 7.000000e+00
br i1 %494, label %495, label %497
495: ; preds = %487
%496 = call i32 (...) @abort()
unreachable
497: ; preds = %487
%498 = load float*, float** %8
%499 = load i32, i32* %13
%500 = sext i32 %499 to i64
%501 = getelementptr inbounds float, float* %498, i64 %500
%502 = load float, float* %501
%503 = fpext float %502 to double
%504 = fcmp une double %503, 7.000000e+00
br i1 %504, label %505, label %507
505: ; preds = %497
%506 = call i32 (...) @abort()
unreachable
507: ; preds = %497
br label %508
508: ; preds = %507
%509 = load i32, i32* %13
%510 = add nsw i32 %509, 1
store i32 %510, i32* %13
br label %483
511: ; preds = %483
store i32 0, i32* %13
br label %512
512: ; preds = %521, %511
%513 = load i32, i32* %13
%514 = load i32, i32* %6
%515 = icmp slt i32 %513, %514
br i1 %515, label %516, label %524
516: ; preds = %512
%517 = load float*, float** %7
%518 = load i32, i32* %13
%519 = sext i32 %518 to i64
%520 = getelementptr inbounds float, float* %517, i64 %519
store float 9.000000e+00, float* %520
br label %521
521: ; preds = %516
%522 = load i32, i32* %13
%523 = add nsw i32 %522, 1
store i32 %523, i32* %13
br label %512
524: ; preds = %512
store i32 0, i32* %19
br label %525
525: ; preds = %539, %524
%526 = load i32, i32* %19
%527 = load i32, i32* %6
%528 = icmp slt i32 %526, %527
br i1 %528, label %529, label %542
529: ; preds = %525
%530 = load float*, float** %7
%531 = load i32, i32* %19
%532 = sext i32 %531 to i64
%533 = getelementptr inbounds float, float* %530, i64 %532
%534 = load float, float* %533
%535 = load float*, float** %8
%536 = load i32, i32* %19
%537 = sext i32 %536 to i64
%538 = getelementptr inbounds float, float* %535, i64 %537
store float %534, float* %538
br label %539
539: ; preds = %529
%540 = load i32, i32* %19
%541 = add nsw i32 %540, 1
store i32 %541, i32* %19
br label %525
542: ; preds = %525
store i32 0, i32* %13
br label %543
543: ; preds = %568, %542
%544 = load i32, i32* %13
%545 = load i32, i32* %6
%546 = icmp slt i32 %544, %545
br i1 %546, label %547, label %571
547: ; preds = %543
%548 = load float*, float** %7
%549 = load i32, i32* %13
%550 = sext i32 %549 to i64
%551 = getelementptr inbounds float, float* %548, i64 %550
%552 = load float, float* %551
%553 = fpext float %552 to double
%554 = fcmp une double %553, 9.000000e+00
br i1 %554, label %555, label %557
555: ; preds = %547
%556 = call i32 (...) @abort()
unreachable
557: ; preds = %547
%558 = load float*, float** %8
%559 = load i32, i32* %13
%560 = sext i32 %559 to i64
%561 = getelementptr inbounds float, float* %558, i64 %560
%562 = load float, float* %561
%563 = fpext float %562 to double
%564 = fcmp une double %563, 9.000000e+00
br i1 %564, label %565, label %567
565: ; preds = %557
%566 = call i32 (...) @abort()
unreachable
567: ; preds = %557
br label %568
568: ; preds = %567
%569 = load i32, i32* %13
%570 = add nsw i32 %569, 1
store i32 %570, i32* %13
br label %543
571: ; preds = %543
%572 = load float*, float** %7
%573 = getelementptr inbounds float, float* %572, i64 0
%574 = load i32, i32* %6
%575 = sext i32 %574 to i64
%576 = mul i64 %575, 4
%577 = trunc i64 %576 to i32
%578 = call i32 @acc_is_present(float* %573, i32 %577)
%579 = icmp ne i32 %578, 0
br i1 %579, label %582, label %580
580: ; preds = %571
%581 = call i32 (...) @abort()
unreachable
582: ; preds = %571
%583 = load float*, float** %8
%584 = getelementptr inbounds float, float* %583, i64 0
%585 = load i32, i32* %6
%586 = sext i32 %585 to i64
%587 = mul i64 %586, 4
%588 = trunc i64 %587 to i32
%589 = call i32 @acc_is_present(float* %584, i32 %588)
%590 = icmp ne i32 %589, 0
br i1 %590, label %593, label %591
591: ; preds = %582
%592 = call i32 (...) @abort()
unreachable
593: ; preds = %582
store i32 0, i32* %13
br label %594
594: ; preds = %603, %593
%595 = load i32, i32* %13
%596 = load i32, i32* %6
%597 = icmp slt i32 %595, %596
br i1 %597, label %598, label %606
598: ; preds = %594
%599 = load float*, float** %7
%600 = load i32, i32* %13
%601 = sext i32 %600 to i64
%602 = getelementptr inbounds float, float* %599, i64 %601
store float 5.000000e+00, float* %602
br label %603
603: ; preds = %598
%604 = load i32, i32* %13
%605 = add nsw i32 %604, 1
store i32 %605, i32* %13
br label %594
606: ; preds = %594
store i32 0, i32* %13
br label %607
607: ; preds = %616, %606
%608 = load i32, i32* %13
%609 = load i32, i32* %6
%610 = icmp slt i32 %608, %609
br i1 %610, label %611, label %619
611: ; preds = %607
%612 = load float*, float** %7
%613 = load i32, i32* %13
%614 = sext i32 %613 to i64
%615 = getelementptr inbounds float, float* %612, i64 %614
store float 6.000000e+00, float* %615
br label %616
616: ; preds = %611
%617 = load i32, i32* %13
%618 = add nsw i32 %617, 1
store i32 %618, i32* %13
br label %607
619: ; preds = %607
store i32 0, i32* %20
br label %620
620: ; preds = %634, %619
%621 = load i32, i32* %20
%622 = load i32, i32* %6
%623 = icmp slt i32 %621, %622
br i1 %623, label %624, label %637
624: ; preds = %620
%625 = load float*, float** %7
%626 = load i32, i32* %20
%627 = sext i32 %626 to i64
%628 = getelementptr inbounds float, float* %625, i64 %627
%629 = load float, float* %628
%630 = load float*, float** %8
%631 = load i32, i32* %20
%632 = sext i32 %631 to i64
%633 = getelementptr inbounds float, float* %630, i64 %632
store float %629, float* %633
br label %634
634: ; preds = %624
%635 = load i32, i32* %20
%636 = add nsw i32 %635, 1
store i32 %636, i32* %20
br label %620
637: ; preds = %620
store i32 0, i32* %13
br label %638
638: ; preds = %664, %637
%639 = load i32, i32* %13
%640 = load i32, i32* %6
%641 = ashr i32 %640, 1
%642 = icmp slt i32 %639, %641
br i1 %642, label %643, label %667
643: ; preds = %638
%644 = load float*, float** %7
%645 = load i32, i32* %13
%646 = sext i32 %645 to i64
%647 = getelementptr inbounds float, float* %644, i64 %646
%648 = load float, float* %647
%649 = fpext float %648 to double
%650 = fcmp une double %649, 6.000000e+00
br i1 %650, label %651, label %653
651: ; preds = %643
%652 = call i32 (...) @abort()
unreachable
653: ; preds = %643
%654 = load float*, float** %8
%655 = load i32, i32* %13
%656 = sext i32 %655 to i64
%657 = getelementptr inbounds float, float* %654, i64 %656
%658 = load float, float* %657
%659 = fpext float %658 to double
%660 = fcmp une double %659, 6.000000e+00
br i1 %660, label %661, label %663
661: ; preds = %653
%662 = call i32 (...) @abort()
unreachable
663: ; preds = %653
br label %664
664: ; preds = %663
%665 = load i32, i32* %13
%666 = add nsw i32 %665, 1
store i32 %666, i32* %13
br label %638
667: ; preds = %638
%668 = load i32, i32* %6
%669 = ashr i32 %668, 1
store i32 %669, i32* %13
br label %670
670: ; preds = %695, %667
%671 = load i32, i32* %13
%672 = load i32, i32* %6
%673 = icmp slt i32 %671, %672
br i1 %673, label %674, label %698
674: ; preds = %670
%675 = load float*, float** %7
%676 = load i32, i32* %13
%677 = sext i32 %676 to i64
%678 = getelementptr inbounds float, float* %675, i64 %677
%679 = load float, float* %678
%680 = fpext float %679 to double
%681 = fcmp une double %680, 5.000000e+00
br i1 %681, label %682, label %684
682: ; preds = %674
%683 = call i32 (...) @abort()
unreachable
684: ; preds = %674
%685 = load float*, float** %8
%686 = load i32, i32* %13
%687 = sext i32 %686 to i64
%688 = getelementptr inbounds float, float* %685, i64 %687
%689 = load float, float* %688
%690 = fpext float %689 to double
%691 = fcmp une double %690, 5.000000e+00
br i1 %691, label %692, label %694
692: ; preds = %684
%693 = call i32 (...) @abort()
unreachable
694: ; preds = %684
br label %695
695: ; preds = %694
%696 = load i32, i32* %13
%697 = add nsw i32 %696, 1
store i32 %697, i32* %13
br label %670
698: ; preds = %670
%699 = load float*, float** %7
%700 = getelementptr inbounds float, float* %699, i64 0
%701 = load i32, i32* %6
%702 = sext i32 %701 to i64
%703 = mul i64 %702, 4
%704 = trunc i64 %703 to i32
%705 = call i32 @acc_is_present(float* %700, i32 %704)
%706 = icmp ne i32 %705, 0
br i1 %706, label %709, label %707
707: ; preds = %698
%708 = call i32 (...) @abort()
unreachable
709: ; preds = %698
%710 = load float*, float** %8
%711 = getelementptr inbounds float, float* %710, i64 0
%712 = load i32, i32* %6
%713 = sext i32 %712 to i64
%714 = mul i64 %713, 4
%715 = trunc i64 %714 to i32
%716 = call i32 @acc_is_present(float* %711, i32 %715)
%717 = icmp ne i32 %716, 0
br i1 %717, label %720, label %718
718: ; preds = %709
%719 = call i32 (...) @abort()
unreachable
720: ; preds = %709
ret i32 0
}

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