#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_copyout(int *, int const);
int /*<<< orphan*/ acc_delete(int *, int const);
int acc_is_present(int *, int const);
scalar_t__ acc_pcopyin(int *, int const);
scalar_t__ acc_pcreate(int *, int const);
scalar_t__ acc_present_or_copyin(int *, int const);
scalar_t__ acc_present_or_create(int *, int const);
int /*<<< orphan*/ acc_update_self(int *, int const);
int /*<<< orphan*/ free(int *);
scalar_t__ malloc(int const);
int main(int argc, char **argv) {
  int *h, *d;
  const int N = 10000;
  const int S = N * sizeof *h;
  bool shared_mem;
  h = (int *)malloc(S);
  if (!h)
    abort();
  for (int i = 0; i < N; ++i)
    h[i] = i + 0;
  shared_mem = acc_is_present(h, S);
  d = (int *)acc_present_or_create(h, S);
  if (!d)
    abort();
  if (shared_mem)
    if (h != d)
      abort();
  if (!acc_is_present(h, S))
    abort();
#pragma acc parallel loop deviceptr(d)
  for (int i = 0; i < N; ++i) {
    d[i] = i + 1;
  }
  for (int i = 0; i < N; ++i) {
    if (h[i] != i + (shared_mem ? 1 : 0))
      abort();
    h[i] = i + 2;
  }
  {
    int *d_ = (int *)acc_present_or_create(h, S);
    if (d_ != d)
      abort();
  }
#pragma acc parallel loop deviceptr(d)
  for (int i = 0; i < N; ++i) {
    if (d[i] != i + (shared_mem ? 2 : 1))
      abort();
    d[i] = i + 3;
  }
  for (int i = 0; i < N; ++i) {
    if (h[i] != i + (shared_mem ? 3 : 2))
      abort();
    h[i] = i + 4;
  }
  {
    int *d_ = (int *)acc_pcreate(h, S);
    if (d_ != d)
      abort();
  }
#pragma acc parallel loop deviceptr(d)
  for (int i = 0; i < N; ++i) {
    if (d[i] != i + (shared_mem ? 4 : 3))
      abort();
    d[i] = i + 5;
  }
  for (int i = 0; i < N; ++i) {
    if (h[i] != i + (shared_mem ? 5 : 4))
      abort();
    h[i] = i + 6;
  }
  {
    int *d_ = (int *)acc_present_or_copyin(h, S);
    if (d_ != d)
      abort();
  }
#pragma acc parallel loop deviceptr(d)
  for (int i = 0; i < N; ++i) {
    if (d[i] != i + (shared_mem ? 6 : 5))
      abort();
    d[i] = i + 7;
  }
  for (int i = 0; i < N; ++i) {
    if (h[i] != i + (shared_mem ? 7 : 6))
      abort();
    h[i] = i + 8;
  }
  {
    int *d_ = (int *)acc_pcopyin(h, S);
    if (d_ != d)
      abort();
  }
#pragma acc parallel loop deviceptr(d)
  for (int i = 0; i < N; ++i) {
    if (d[i] != i + (shared_mem ? 8 : 7))
      abort();
    d[i] = i + 9;
  }
  for (int i = 0; i < N; ++i) {
    if (h[i] != i + (shared_mem ? 9 : 8))
      abort();
    h[i] = i + 10;
  }
  acc_copyout(h, S);
  d = NULL;
  if (!shared_mem)
    if (acc_is_present(h, S))
      abort();
  for (int i = 0; i < N; ++i) {
    if (h[i] != i + (shared_mem ? 10 : 9))
      abort();
  }
  d = (int *)acc_pcopyin(h, S);
  if (!d)
    abort();
  if (shared_mem)
    if (h != d)
      abort();
  if (!acc_is_present(h, S))
    abort();
#pragma acc parallel loop deviceptr(d)
  for (int i = 0; i < N; ++i) {
    if (d[i] != i + (shared_mem ? 10 : 9))
      abort();
    d[i] = i + 11;
  }
  for (int i = 0; i < N; ++i) {
    if (h[i] != i + (shared_mem ? 11 : 9))
      abort();
    h[i] = i + 12;
  }
  {
    int *d_ = (int *)acc_pcopyin(h, S);
    if (d_ != d)
      abort();
  }
#pragma acc parallel loop deviceptr(d)
  for (int i = 0; i < N; ++i) {
    if (d[i] != i + (shared_mem ? 12 : 11))
      abort();
    d[i] = i + 13;
  }
  for (int i = 0; i < N; ++i) {
    if (h[i] != i + (shared_mem ? 13 : 12))
      abort();
    h[i] = i + 14;
  }
  {
    int *d_ = (int *)acc_pcreate(h, S);
    if (d_ != d)
      abort();
  }
#pragma acc parallel loop deviceptr(d)
  for (int i = 0; i < N; ++i) {
    if (d[i] != i + (shared_mem ? 14 : 13))
      abort();
    d[i] = i + 15;
  }
  for (int i = 0; i < N; ++i) {
    if (h[i] != i + (shared_mem ? 15 : 14))
      abort();
    h[i] = i + 16;
  }
  {
    int *d_ = (int *)acc_pcreate(h, S);
    if (d_ != d)
      abort();
  }
#pragma acc parallel loop deviceptr(d)
  for (int i = 0; i < N; ++i) {
    if (d[i] != i + (shared_mem ? 16 : 15))
      abort();
    d[i] = i + 17;
  }
  for (int i = 0; i < N; ++i) {
    if (h[i] != i + (shared_mem ? 17 : 16))
      abort();
    h[i] = i + 18;
  }
  acc_update_self(h, S);
  if (!acc_is_present(h, S))
    abort();
  for (int i = 0; i < N; ++i) {
    if (h[i] != i + (shared_mem ? 18 : 17))
      abort();
  }
  acc_delete(h, S);
  d = NULL;
  if (!shared_mem)
    if (acc_is_present(h, S))
      abort();
  free(h);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xc0,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0x2710,-0x24(%rbp)
movl   $0x9c40,-0x28(%rbp)
mov    $0x9c40,%edi
call   1070 <malloc@plt>
mov    %rax,-0x18(%rbp)
cmpq   $0x0,-0x18(%rbp)
jne    11f7 <main+0x47>
mov    $0x0,%al
call   1040 <abort@plt>
movl   $0x0,-0x30(%rbp)
cmpl   $0x2710,-0x30(%rbp)
jge    122a <main+0x7a>
mov    -0x30(%rbp),%edx
add    $0x0,%edx
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    11fe <main+0x4e>
mov    -0x18(%rbp),%rdi
mov    $0x9c40,%esi
call   1060 <acc_is_present@plt>
mov    %eax,-0x2c(%rbp)
mov    -0x18(%rbp),%rdi
mov    $0x9c40,%esi
call   1050 <acc_present_or_create@plt>
mov    %rax,-0x20(%rbp)
cmpq   $0x0,-0x20(%rbp)
jne    125f <main+0xaf>
mov    $0x0,%al
call   1040 <abort@plt>
cmpl   $0x0,-0x2c(%rbp)
je     1283 <main+0xd3>
mov    -0x18(%rbp),%rax
cmp    -0x20(%rbp),%rax
je     127e <main+0xce>
mov    $0x0,%al
call   1040 <abort@plt>
jmp    1283 <main+0xd3>
mov    -0x18(%rbp),%rdi
mov    $0x9c40,%esi
call   1060 <acc_is_present@plt>
cmp    $0x0,%eax
jne    12a1 <main+0xf1>
mov    $0x0,%al
call   1040 <abort@plt>
movl   $0x0,-0x34(%rbp)
cmpl   $0x2710,-0x34(%rbp)
jge    12d4 <main+0x124>
mov    -0x34(%rbp),%edx
add    $0x1,%edx
mov    -0x20(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    12a8 <main+0xf8>
movl   $0x0,-0x38(%rbp)
cmpl   $0x2710,-0x38(%rbp)
jge    1336 <main+0x186>
mov    -0x18(%rbp),%rax
movslq -0x38(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x38(%rbp),%ecx
mov    -0x2c(%rbp),%edi
xor    %edx,%edx
mov    $0x1,%esi
cmp    $0x0,%edi
cmovne %esi,%edx
add    %edx,%ecx
cmp    %ecx,%eax
je     1317 <main+0x167>
mov    $0x0,%al
call   1040 <abort@plt>
mov    -0x38(%rbp),%edx
add    $0x2,%edx
mov    -0x18(%rbp),%rax
movslq -0x38(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    12db <main+0x12b>
mov    -0x18(%rbp),%rdi
mov    $0x9c40,%esi
call   1050 <acc_present_or_create@plt>
mov    %rax,-0x40(%rbp)
mov    -0x40(%rbp),%rax
cmp    -0x20(%rbp),%rax
je     135d <main+0x1ad>
mov    $0x0,%al
call   1040 <abort@plt>
movl   $0x0,-0x44(%rbp)
cmpl   $0x2710,-0x44(%rbp)
jge    13c2 <main+0x212>
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x44(%rbp),%ecx
mov    -0x2c(%rbp),%edi
mov    $0x1,%edx
mov    $0x2,%esi
cmp    $0x0,%edi
cmovne %esi,%edx
add    %edx,%ecx
cmp    %ecx,%eax
je     13a3 <main+0x1f3>
mov    $0x0,%al
call   1040 <abort@plt>
mov    -0x44(%rbp),%edx
add    $0x3,%edx
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    1364 <main+0x1b4>
movl   $0x0,-0x48(%rbp)
cmpl   $0x2710,-0x48(%rbp)
jge    1427 <main+0x277>
mov    -0x18(%rbp),%rax
movslq -0x48(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x48(%rbp),%ecx
mov    -0x2c(%rbp),%edi
mov    $0x2,%edx
mov    $0x3,%esi
cmp    $0x0,%edi
cmovne %esi,%edx
add    %edx,%ecx
cmp    %ecx,%eax
je     1408 <main+0x258>
mov    $0x0,%al
call   1040 <abort@plt>
mov    -0x48(%rbp),%edx
add    $0x4,%edx
mov    -0x18(%rbp),%rax
movslq -0x48(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    13c9 <main+0x219>
mov    -0x18(%rbp),%rdi
mov    $0x9c40,%esi
call   10b0 <acc_pcreate@plt>
mov    %rax,-0x50(%rbp)
mov    -0x50(%rbp),%rax
cmp    -0x20(%rbp),%rax
je     144e <main+0x29e>
mov    $0x0,%al
call   1040 <abort@plt>
movl   $0x0,-0x54(%rbp)
cmpl   $0x2710,-0x54(%rbp)
jge    14b3 <main+0x303>
mov    -0x20(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x54(%rbp),%ecx
mov    -0x2c(%rbp),%edi
mov    $0x3,%edx
mov    $0x4,%esi
cmp    $0x0,%edi
cmovne %esi,%edx
add    %edx,%ecx
cmp    %ecx,%eax
je     1494 <main+0x2e4>
mov    $0x0,%al
call   1040 <abort@plt>
mov    -0x54(%rbp),%edx
add    $0x5,%edx
mov    -0x20(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    1455 <main+0x2a5>
movl   $0x0,-0x58(%rbp)
cmpl   $0x2710,-0x58(%rbp)
jge    1518 <main+0x368>
mov    -0x18(%rbp),%rax
movslq -0x58(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x58(%rbp),%ecx
mov    -0x2c(%rbp),%edi
mov    $0x4,%edx
mov    $0x5,%esi
cmp    $0x0,%edi
cmovne %esi,%edx
add    %edx,%ecx
cmp    %ecx,%eax
je     14f9 <main+0x349>
mov    $0x0,%al
call   1040 <abort@plt>
mov    -0x58(%rbp),%edx
add    $0x6,%edx
mov    -0x18(%rbp),%rax
movslq -0x58(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
jmp    14ba <main+0x30a>
mov    -0x18(%rbp),%rdi
mov    $0x9c40,%esi
call   10d0 <acc_present_or_copyin@plt>
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rax
cmp    -0x20(%rbp),%rax
je     153f <main+0x38f>
mov    $0x0,%al
call   1040 <abort@plt>
movl   $0x0,-0x64(%rbp)
cmpl   $0x2710,-0x64(%rbp)
jge    15a4 <main+0x3f4>
mov    -0x20(%rbp),%rax
movslq -0x64(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x64(%rbp),%ecx
mov    -0x2c(%rbp),%edi
mov    $0x5,%edx
mov    $0x6,%esi
cmp    $0x0,%edi
cmovne %esi,%edx
add    %edx,%ecx
cmp    %ecx,%eax
je     1585 <main+0x3d5>
mov    $0x0,%al
call   1040 <abort@plt>
mov    -0x64(%rbp),%edx
add    $0x7,%edx
mov    -0x20(%rbp),%rax
movslq -0x64(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    1546 <main+0x396>
movl   $0x0,-0x68(%rbp)
cmpl   $0x2710,-0x68(%rbp)
jge    1609 <main+0x459>
mov    -0x18(%rbp),%rax
movslq -0x68(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x68(%rbp),%ecx
mov    -0x2c(%rbp),%edi
mov    $0x6,%edx
mov    $0x7,%esi
cmp    $0x0,%edi
cmovne %esi,%edx
add    %edx,%ecx
cmp    %ecx,%eax
je     15ea <main+0x43a>
mov    $0x0,%al
call   1040 <abort@plt>
mov    -0x68(%rbp),%edx
add    $0x8,%edx
mov    -0x18(%rbp),%rax
movslq -0x68(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x68(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x68(%rbp)
jmp    15ab <main+0x3fb>
mov    -0x18(%rbp),%rdi
mov    $0x9c40,%esi
call   10c0 <acc_pcopyin@plt>
mov    %rax,-0x70(%rbp)
mov    -0x70(%rbp),%rax
cmp    -0x20(%rbp),%rax
je     1630 <main+0x480>
mov    $0x0,%al
call   1040 <abort@plt>
movl   $0x0,-0x74(%rbp)
cmpl   $0x2710,-0x74(%rbp)
jge    1695 <main+0x4e5>
mov    -0x20(%rbp),%rax
movslq -0x74(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x74(%rbp),%ecx
mov    -0x2c(%rbp),%edi
mov    $0x7,%edx
mov    $0x8,%esi
cmp    $0x0,%edi
cmovne %esi,%edx
add    %edx,%ecx
cmp    %ecx,%eax
je     1676 <main+0x4c6>
mov    $0x0,%al
call   1040 <abort@plt>
mov    -0x74(%rbp),%edx
add    $0x9,%edx
mov    -0x20(%rbp),%rax
movslq -0x74(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x74(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x74(%rbp)
jmp    1637 <main+0x487>
movl   $0x0,-0x78(%rbp)
cmpl   $0x2710,-0x78(%rbp)
jge    16fa <main+0x54a>
mov    -0x18(%rbp),%rax
movslq -0x78(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x78(%rbp),%ecx
mov    -0x2c(%rbp),%edi
mov    $0x8,%edx
mov    $0x9,%esi
cmp    $0x0,%edi
cmovne %esi,%edx
add    %edx,%ecx
cmp    %ecx,%eax
je     16db <main+0x52b>
mov    $0x0,%al
call   1040 <abort@plt>
mov    -0x78(%rbp),%edx
add    $0xa,%edx
mov    -0x18(%rbp),%rax
movslq -0x78(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x78(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x78(%rbp)
jmp    169c <main+0x4ec>
mov    -0x18(%rbp),%rdi
mov    $0x9c40,%esi
call   1090 <acc_copyout@plt>
movq   $0x0,-0x20(%rbp)
cmpl   $0x0,-0x2c(%rbp)
jne    173d <main+0x58d>
mov    -0x18(%rbp),%rdi
mov    $0x9c40,%esi
call   1060 <acc_is_present@plt>
cmp    $0x0,%eax
je     1738 <main+0x588>
mov    $0x0,%al
call   1040 <abort@plt>
jmp    173d <main+0x58d>
movl   $0x0,-0x7c(%rbp)
cmpl   $0x2710,-0x7c(%rbp)
jge    1796 <main+0x5e6>
mov    -0x18(%rbp),%rax
movslq -0x7c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x7c(%rbp),%ecx
mov    -0x2c(%rbp),%edi
mov    $0x9,%edx
mov    $0xa,%esi
cmp    $0x0,%edi
cmovne %esi,%edx
add    %edx,%ecx
cmp    %ecx,%eax
je     1783 <main+0x5d3>
mov    $0x0,%al
call   1040 <abort@plt>
jmp    1788 <main+0x5d8>
mov    -0x7c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7c(%rbp)
jmp    1744 <main+0x594>
mov    -0x18(%rbp),%rdi
mov    $0x9c40,%esi
call   10c0 <acc_pcopyin@plt>
mov    %rax,-0x20(%rbp)
cmpq   $0x0,-0x20(%rbp)
jne    17ba <main+0x60a>
mov    $0x0,%al
call   1040 <abort@plt>
cmpl   $0x0,-0x2c(%rbp)
je     17de <main+0x62e>
mov    -0x18(%rbp),%rax
cmp    -0x20(%rbp),%rax
je     17d9 <main+0x629>
mov    $0x0,%al
call   1040 <abort@plt>
jmp    17de <main+0x62e>
mov    -0x18(%rbp),%rdi
mov    $0x9c40,%esi
call   1060 <acc_is_present@plt>
cmp    $0x0,%eax
jne    17fc <main+0x64c>
mov    $0x0,%al
call   1040 <abort@plt>
movl   $0x0,-0x80(%rbp)
cmpl   $0x2710,-0x80(%rbp)
jge    1861 <main+0x6b1>
mov    -0x20(%rbp),%rax
movslq -0x80(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x80(%rbp),%ecx
mov    -0x2c(%rbp),%edi
mov    $0x9,%edx
mov    $0xa,%esi
cmp    $0x0,%edi
cmovne %esi,%edx
add    %edx,%ecx
cmp    %ecx,%eax
je     1842 <main+0x692>
mov    $0x0,%al
call   1040 <abort@plt>
mov    -0x80(%rbp),%edx
add    $0xb,%edx
mov    -0x20(%rbp),%rax
movslq -0x80(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x80(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x80(%rbp)
jmp    1803 <main+0x653>
movl   $0x0,-0x84(%rbp)
cmpl   $0x2710,-0x84(%rbp)
jge    18de <main+0x72e>
mov    -0x18(%rbp),%rax
movslq -0x84(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x84(%rbp),%ecx
mov    -0x2c(%rbp),%edi
mov    $0x9,%edx
mov    $0xb,%esi
cmp    $0x0,%edi
cmovne %esi,%edx
add    %edx,%ecx
cmp    %ecx,%eax
je     18b3 <main+0x703>
mov    $0x0,%al
call   1040 <abort@plt>
mov    -0x84(%rbp),%edx
add    $0xc,%edx
mov    -0x18(%rbp),%rax
movslq -0x84(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x84(%rbp)
jmp    186b <main+0x6bb>
mov    -0x18(%rbp),%rdi
mov    $0x9c40,%esi
call   10c0 <acc_pcopyin@plt>
mov    %rax,-0x90(%rbp)
mov    -0x90(%rbp),%rax
cmp    -0x20(%rbp),%rax
je     190b <main+0x75b>
mov    $0x0,%al
call   1040 <abort@plt>
movl   $0x0,-0x94(%rbp)
cmpl   $0x2710,-0x94(%rbp)
jge    1988 <main+0x7d8>
mov    -0x20(%rbp),%rax
movslq -0x94(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x94(%rbp),%ecx
mov    -0x2c(%rbp),%edi
mov    $0xb,%edx
mov    $0xc,%esi
cmp    $0x0,%edi
cmovne %esi,%edx
add    %edx,%ecx
cmp    %ecx,%eax
je     195d <main+0x7ad>
mov    $0x0,%al
call   1040 <abort@plt>
mov    -0x94(%rbp),%edx
add    $0xd,%edx
mov    -0x20(%rbp),%rax
movslq -0x94(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x94(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x94(%rbp)
jmp    1915 <main+0x765>
movl   $0x0,-0x98(%rbp)
cmpl   $0x2710,-0x98(%rbp)
jge    1a05 <main+0x855>
mov    -0x18(%rbp),%rax
movslq -0x98(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x98(%rbp),%ecx
mov    -0x2c(%rbp),%edi
mov    $0xc,%edx
mov    $0xd,%esi
cmp    $0x0,%edi
cmovne %esi,%edx
add    %edx,%ecx
cmp    %ecx,%eax
je     19da <main+0x82a>
mov    $0x0,%al
call   1040 <abort@plt>
mov    -0x98(%rbp),%edx
add    $0xe,%edx
mov    -0x18(%rbp),%rax
movslq -0x98(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x98(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x98(%rbp)
jmp    1992 <main+0x7e2>
mov    -0x18(%rbp),%rdi
mov    $0x9c40,%esi
call   10b0 <acc_pcreate@plt>
mov    %rax,-0xa0(%rbp)
mov    -0xa0(%rbp),%rax
cmp    -0x20(%rbp),%rax
je     1a32 <main+0x882>
mov    $0x0,%al
call   1040 <abort@plt>
movl   $0x0,-0xa4(%rbp)
cmpl   $0x2710,-0xa4(%rbp)
jge    1aaf <main+0x8ff>
mov    -0x20(%rbp),%rax
movslq -0xa4(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0xa4(%rbp),%ecx
mov    -0x2c(%rbp),%edi
mov    $0xd,%edx
mov    $0xe,%esi
cmp    $0x0,%edi
cmovne %esi,%edx
add    %edx,%ecx
cmp    %ecx,%eax
je     1a84 <main+0x8d4>
mov    $0x0,%al
call   1040 <abort@plt>
mov    -0xa4(%rbp),%edx
add    $0xf,%edx
mov    -0x20(%rbp),%rax
movslq -0xa4(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0xa4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa4(%rbp)
jmp    1a3c <main+0x88c>
movl   $0x0,-0xa8(%rbp)
cmpl   $0x2710,-0xa8(%rbp)
jge    1b2c <main+0x97c>
mov    -0x18(%rbp),%rax
movslq -0xa8(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0xa8(%rbp),%ecx
mov    -0x2c(%rbp),%edi
mov    $0xe,%edx
mov    $0xf,%esi
cmp    $0x0,%edi
cmovne %esi,%edx
add    %edx,%ecx
cmp    %ecx,%eax
je     1b01 <main+0x951>
mov    $0x0,%al
call   1040 <abort@plt>
mov    -0xa8(%rbp),%edx
add    $0x10,%edx
mov    -0x18(%rbp),%rax
movslq -0xa8(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0xa8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa8(%rbp)
jmp    1ab9 <main+0x909>
mov    -0x18(%rbp),%rdi
mov    $0x9c40,%esi
call   10b0 <acc_pcreate@plt>
mov    %rax,-0xb0(%rbp)
mov    -0xb0(%rbp),%rax
cmp    -0x20(%rbp),%rax
je     1b59 <main+0x9a9>
mov    $0x0,%al
call   1040 <abort@plt>
movl   $0x0,-0xb4(%rbp)
cmpl   $0x2710,-0xb4(%rbp)
jge    1bd6 <main+0xa26>
mov    -0x20(%rbp),%rax
movslq -0xb4(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0xb4(%rbp),%ecx
mov    -0x2c(%rbp),%edi
mov    $0xf,%edx
mov    $0x10,%esi
cmp    $0x0,%edi
cmovne %esi,%edx
add    %edx,%ecx
cmp    %ecx,%eax
je     1bab <main+0x9fb>
mov    $0x0,%al
call   1040 <abort@plt>
mov    -0xb4(%rbp),%edx
add    $0x11,%edx
mov    -0x20(%rbp),%rax
movslq -0xb4(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0xb4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb4(%rbp)
jmp    1b63 <main+0x9b3>
movl   $0x0,-0xb8(%rbp)
cmpl   $0x2710,-0xb8(%rbp)
jge    1c53 <main+0xaa3>
mov    -0x18(%rbp),%rax
movslq -0xb8(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0xb8(%rbp),%ecx
mov    -0x2c(%rbp),%edi
mov    $0x10,%edx
mov    $0x11,%esi
cmp    $0x0,%edi
cmovne %esi,%edx
add    %edx,%ecx
cmp    %ecx,%eax
je     1c28 <main+0xa78>
mov    $0x0,%al
call   1040 <abort@plt>
mov    -0xb8(%rbp),%edx
add    $0x12,%edx
mov    -0x18(%rbp),%rax
movslq -0xb8(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0xb8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb8(%rbp)
jmp    1be0 <main+0xa30>
mov    -0x18(%rbp),%rdi
mov    $0x9c40,%esi
call   10a0 <acc_update_self@plt>
mov    -0x18(%rbp),%rdi
mov    $0x9c40,%esi
call   1060 <acc_is_present@plt>
cmp    $0x0,%eax
jne    1c7f <main+0xacf>
mov    $0x0,%al
call   1040 <abort@plt>
movl   $0x0,-0xbc(%rbp)
cmpl   $0x2710,-0xbc(%rbp)
jge    1cea <main+0xb3a>
mov    -0x18(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0xbc(%rbp),%ecx
mov    -0x2c(%rbp),%edi
mov    $0x11,%edx
mov    $0x12,%esi
cmp    $0x0,%edi
cmovne %esi,%edx
add    %edx,%ecx
cmp    %ecx,%eax
je     1cd1 <main+0xb21>
mov    $0x0,%al
call   1040 <abort@plt>
jmp    1cd6 <main+0xb26>
mov    -0xbc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xbc(%rbp)
jmp    1c89 <main+0xad9>
mov    -0x18(%rbp),%rdi
mov    $0x9c40,%esi
call   1080 <acc_delete@plt>
movq   $0x0,-0x20(%rbp)
cmpl   $0x0,-0x2c(%rbp)
jne    1d2d <main+0xb7d>
mov    -0x18(%rbp),%rdi
mov    $0x9c40,%esi
call   1060 <acc_is_present@plt>
cmp    $0x0,%eax
je     1d28 <main+0xb78>
mov    $0x0,%al
call   1040 <abort@plt>
jmp    1d2d <main+0xb7d>
mov    -0x18(%rbp),%rdi
call   1030 <free@plt>
xor    %eax,%eax
add    $0xc0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r14
push   %rbx
mov    $0x9c40,%edi
call   1070 <malloc@plt>
test   %rax,%rax
je     1c13 <main+0xa63>
mov    %rax,%rbx
movdqa 0xe2e(%rip),%xmm0
mov    $0x24,%eax
movdqa 0xe30(%rip),%xmm8
movdqa 0xe37(%rip),%xmm9
movdqa 0xe3e(%rip),%xmm10
movdqa 0xe45(%rip),%xmm11
movdqa 0xe4c(%rip),%xmm12
movdqa 0xe54(%rip),%xmm6
movdqa 0xe5c(%rip),%xmm7
movdqa 0xe64(%rip),%xmm1
movdqa 0xe6c(%rip),%xmm2
movdqa 0xe74(%rip),%xmm3
nopl   0x0(%rax)
movdqa %xmm0,%xmm4
paddd  %xmm8,%xmm4
movdqu %xmm0,-0x90(%rbx,%rax,4)
ff ff
movdqu %xmm4,-0x80(%rbx,%rax,4)
movdqa %xmm0,%xmm4
paddd  %xmm9,%xmm4
movdqa %xmm0,%xmm5
paddd  %xmm10,%xmm5
movdqu %xmm4,-0x70(%rbx,%rax,4)
movdqu %xmm5,-0x60(%rbx,%rax,4)
movdqa %xmm0,%xmm4
paddd  %xmm11,%xmm4
movdqa %xmm0,%xmm5
paddd  %xmm12,%xmm5
movdqu %xmm4,-0x50(%rbx,%rax,4)
movdqu %xmm5,-0x40(%rbx,%rax,4)
movdqa %xmm0,%xmm4
paddd  %xmm6,%xmm4
movdqa %xmm0,%xmm5
paddd  %xmm7,%xmm5
movdqu %xmm4,-0x30(%rbx,%rax,4)
movdqu %xmm5,-0x20(%rbx,%rax,4)
movdqa %xmm0,%xmm4
paddd  %xmm1,%xmm4
movdqa %xmm0,%xmm5
paddd  %xmm2,%xmm5
movdqu %xmm4,-0x10(%rbx,%rax,4)
movdqu %xmm5,(%rbx,%rax,4)
paddd  %xmm3,%xmm0
add    $0x28,%rax
cmp    $0x2734,%rax
jne    1230 <main+0x80>
mov    %rbx,%rdi
mov    $0x9c40,%esi
call   1060 <acc_is_present@plt>
mov    %eax,%r14d
mov    %rbx,%rdi
mov    $0x9c40,%esi
call   1050 <acc_present_or_create@plt>
test   %rax,%rax
je     1c13 <main+0xa63>
mov    %rax,%rbp
test   %r14d,%r14d
je     1306 <main+0x156>
cmp    %rbp,%rbx
jne    1c13 <main+0xa63>
mov    %rbx,%rdi
mov    $0x9c40,%esi
call   1060 <acc_is_present@plt>
test   %eax,%eax
je     1c13 <main+0xa63>
movaps 0xd8e(%rip),%xmm0
movaps 0xd97(%rip),%xmm1
mov    $0xc,%eax
pcmpeqd %xmm8,%xmm8
movdqa 0xd94(%rip),%xmm9
movdqa 0xd9c(%rip),%xmm4
movdqa 0xda4(%rip),%xmm5
movdqa 0xdac(%rip),%xmm6
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movaps %xmm1,%xmm7
shufps $0x88,%xmm0,%xmm7
movaps %xmm7,%xmm2
psubd  %xmm8,%xmm2
movaps %xmm7,%xmm3
paddd  %xmm9,%xmm3
movdqu %xmm2,-0x30(%rbp,%rax,4)
movdqu %xmm3,-0x20(%rbp,%rax,4)
movaps %xmm7,%xmm2
paddd  %xmm4,%xmm2
paddd  %xmm5,%xmm7
movdqu %xmm2,-0x10(%rbp,%rax,4)
movdqu %xmm7,0x0(%rbp,%rax,4)
paddq  %xmm6,%xmm1
paddq  %xmm6,%xmm0
add    $0x10,%rax
cmp    $0x271c,%rax
jne    1360 <main+0x1b0>
xor    %eax,%eax
test   %r14d,%r14d
setne  %al
mov    $0x1,%ecx
nopl   0x0(%rax,%rax,1)
lea    -0x1(%rcx),%rdx
mov    -0x4(%rbx,%rcx,4),%esi
or     %rax,%rdx
cmp    %rsi,%rdx
jne    1c13 <main+0xa63>
lea    0x1(%rcx),%edx
mov    %edx,-0x4(%rbx,%rcx,4)
mov    (%rbx,%rcx,4),%edx
lea    (%rax,%rcx,1),%rsi
cmp    %rdx,%rsi
jne    1c13 <main+0xa63>
lea    0x2(%rcx),%rdx
mov    %edx,(%rbx,%rcx,4)
mov    %rdx,%rcx
cmp    $0x2711,%rdx
jne    13c0 <main+0x210>
mov    %rbx,%rdi
mov    $0x9c40,%esi
call   1050 <acc_present_or_create@plt>
cmp    %rbp,%rax
jne    1c13 <main+0xa63>
cmp    $0x1,%r14d
mov    $0x2,%eax
sbb    $0x0,%rax
mov    $0x4,%ecx
mov    $0x4,%edx
nopl   0x0(%rax,%rax,1)
mov    -0x4(%rbp,%rcx,1),%esi
cmp    %rsi,%rax
jne    1c13 <main+0xa63>
lea    -0x1(%rdx),%esi
mov    %esi,-0x4(%rbp,%rcx,1)
mov    0x0(%rbp,%rcx,1),%esi
lea    0x1(%rax),%rdi
cmp    %rsi,%rdi
jne    1c13 <main+0xa63>
mov    %edx,0x0(%rbp,%rcx,1)
add    $0x8,%rcx
add    $0x2,%rax
add    $0x2,%edx
cmp    $0x9c44,%rcx
jne    1430 <main+0x280>
cmp    $0x1,%r14d
mov    $0x3,%eax
sbb    $0x0,%rax
mov    $0x4,%ecx
mov    $0x5,%edx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    -0x4(%rbx,%rcx,1),%esi
cmp    %rsi,%rax
jne    1c13 <main+0xa63>
lea    -0x1(%rdx),%esi
mov    %esi,-0x4(%rbx,%rcx,1)
mov    (%rbx,%rcx,1),%esi
lea    0x1(%rax),%rdi
cmp    %rsi,%rdi
jne    1c13 <main+0xa63>
mov    %edx,(%rbx,%rcx,1)
add    $0x8,%rcx
add    $0x2,%rax
add    $0x2,%edx
cmp    $0x9c44,%rcx
jne    1490 <main+0x2e0>
mov    %rbx,%rdi
mov    $0x9c40,%esi
call   10b0 <acc_pcreate@plt>
cmp    %rbp,%rax
jne    1c13 <main+0xa63>
cmp    $0x1,%r14d
mov    $0x4,%eax
mov    $0x4,%ecx
sbb    $0x0,%rcx
mov    $0x6,%edx
nopl   0x0(%rax,%rax,1)
mov    -0x4(%rbp,%rax,1),%esi
cmp    %rsi,%rcx
jne    1c13 <main+0xa63>
lea    -0x1(%rdx),%esi
mov    %esi,-0x4(%rbp,%rax,1)
mov    0x0(%rbp,%rax,1),%esi
lea    0x1(%rcx),%rdi
cmp    %rsi,%rdi
jne    1c13 <main+0xa63>
mov    %edx,0x0(%rbp,%rax,1)
add    $0x8,%rax
add    $0x2,%rcx
add    $0x2,%edx
cmp    $0x9c44,%rax
jne    1500 <main+0x350>
cmp    $0x1,%r14d
mov    $0x5,%eax
sbb    $0x0,%rax
mov    $0x4,%ecx
mov    $0x7,%edx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    -0x4(%rbx,%rcx,1),%esi
cmp    %rsi,%rax
jne    1c13 <main+0xa63>
lea    -0x1(%rdx),%esi
mov    %esi,-0x4(%rbx,%rcx,1)
mov    (%rbx,%rcx,1),%esi
lea    0x1(%rax),%rdi
cmp    %rsi,%rdi
jne    1c13 <main+0xa63>
mov    %edx,(%rbx,%rcx,1)
add    $0x8,%rcx
add    $0x2,%rax
add    $0x2,%edx
cmp    $0x9c44,%rcx
jne    1560 <main+0x3b0>
mov    %rbx,%rdi
mov    $0x9c40,%esi
call   10d0 <acc_present_or_copyin@plt>
cmp    %rbp,%rax
jne    1c13 <main+0xa63>
cmp    $0x1,%r14d
mov    $0x6,%eax
sbb    $0x0,%rax
mov    $0x4,%ecx
mov    $0x8,%edx
nopl   0x0(%rax,%rax,1)
mov    -0x4(%rbp,%rcx,1),%esi
cmp    %rsi,%rax
jne    1c13 <main+0xa63>
lea    -0x1(%rdx),%esi
mov    %esi,-0x4(%rbp,%rcx,1)
mov    0x0(%rbp,%rcx,1),%esi
lea    0x1(%rax),%rdi
cmp    %rsi,%rdi
jne    1c13 <main+0xa63>
mov    %edx,0x0(%rbp,%rcx,1)
add    $0x8,%rcx
add    $0x2,%rax
add    $0x2,%edx
cmp    $0x9c44,%rcx
jne    15d0 <main+0x420>
cmp    $0x1,%r14d
mov    $0x7,%eax
sbb    $0x0,%rax
mov    $0x4,%ecx
mov    $0x9,%edx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    -0x4(%rbx,%rcx,1),%esi
cmp    %rsi,%rax
jne    1c13 <main+0xa63>
lea    -0x1(%rdx),%esi
mov    %esi,-0x4(%rbx,%rcx,1)
mov    (%rbx,%rcx,1),%esi
lea    0x1(%rax),%rdi
cmp    %rsi,%rdi
jne    1c13 <main+0xa63>
mov    %edx,(%rbx,%rcx,1)
add    $0x8,%rcx
add    $0x2,%rax
add    $0x2,%edx
cmp    $0x9c44,%rcx
jne    1630 <main+0x480>
mov    %rbx,%rdi
mov    $0x9c40,%esi
call   10c0 <acc_pcopyin@plt>
cmp    %rbp,%rax
jne    1c13 <main+0xa63>
xor    %eax,%eax
test   %r14d,%r14d
sete   %al
mov    $0x8,%ecx
sub    %rax,%rcx
xor    $0x9,%rax
xor    %edx,%edx
nopw   0x0(%rax,%rax,1)
mov    0x0(%rbp,%rdx,4),%esi
lea    (%rcx,%rdx,1),%rdi
cmp    %rsi,%rdi
jne    1c13 <main+0xa63>
lea    0x9(%rdx),%esi
mov    %esi,0x0(%rbp,%rdx,4)
mov    0x4(%rbp,%rdx,4),%esi
lea    (%rax,%rdx,1),%rdi
cmp    %rsi,%rdi
jne    1c13 <main+0xa63>
lea    0xa(%rdx),%esi
mov    %esi,0x4(%rbp,%rdx,4)
add    $0x2,%rdx
cmp    $0x2710,%rdx
jne    16a0 <main+0x4f0>
cmp    $0x1,%r14d
mov    $0x9,%eax
sbb    $0x0,%rax
mov    $0x4,%ecx
mov    $0xb,%edx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    -0x4(%rbx,%rcx,1),%esi
cmp    %rsi,%rax
jne    1c13 <main+0xa63>
lea    -0x1(%rdx),%esi
mov    %esi,-0x4(%rbx,%rcx,1)
mov    (%rbx,%rcx,1),%esi
lea    0x1(%rax),%rdi
cmp    %rsi,%rdi
jne    1c13 <main+0xa63>
mov    %edx,(%rbx,%rcx,1)
add    $0x8,%rcx
add    $0x2,%rax
add    $0x2,%edx
cmp    $0x9c44,%rcx
jne    1700 <main+0x550>
mov    %rbx,%rdi
mov    $0x9c40,%esi
call   1090 <acc_copyout@plt>
mov    $0xa,%ecx
test   %r14d,%r14d
jne    176c <main+0x5bc>
mov    %rbx,%rdi
mov    $0x9c40,%esi
call   1060 <acc_is_present@plt>
mov    $0x9,%ecx
test   %eax,%eax
jne    1c13 <main+0xa63>
xor    %eax,%eax
xchg   %ax,%ax
mov    (%rbx,%rax,4),%edx
lea    (%rcx,%rax,1),%rsi
cmp    %rdx,%rsi
jne    1c13 <main+0xa63>
mov    0x4(%rbx,%rax,4),%edx
lea    (%rcx,%rax,1),%rsi
add    $0x1,%rsi
cmp    %rdx,%rsi
jne    1c13 <main+0xa63>
mov    0x8(%rbx,%rax,4),%edx
lea    (%rcx,%rax,1),%rsi
add    $0x2,%rsi
cmp    %rdx,%rsi
jne    1c13 <main+0xa63>
mov    0xc(%rbx,%rax,4),%edx
lea    (%rcx,%rax,1),%rsi
add    $0x3,%rsi
cmp    %rdx,%rsi
jne    1c13 <main+0xa63>
mov    0x10(%rbx,%rax,4),%edx
lea    (%rcx,%rax,1),%rsi
add    $0x4,%rsi
cmp    %rdx,%rsi
jne    1c13 <main+0xa63>
add    $0x5,%rax
cmp    $0x2710,%rax
jne    1770 <main+0x5c0>
mov    %rbx,%rdi
mov    $0x9c40,%esi
call   10c0 <acc_pcopyin@plt>
test   %rax,%rax
je     1c13 <main+0xa63>
mov    %rax,%rbp
test   %r14d,%r14d
je     1807 <main+0x657>
cmp    %rbp,%rbx
jne    1c13 <main+0xa63>
mov    %rbx,%rdi
mov    $0x9c40,%esi
call   1060 <acc_is_present@plt>
test   %eax,%eax
je     1c13 <main+0xa63>
cmp    $0x1,%r14d
mov    $0xa,%eax
sbb    $0x0,%rax
mov    $0x4,%ecx
mov    $0xc,%edx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    -0x4(%rbp,%rcx,1),%esi
cmp    %rsi,%rax
jne    1c13 <main+0xa63>
lea    -0x1(%rdx),%esi
mov    %esi,-0x4(%rbp,%rcx,1)
mov    0x0(%rbp,%rcx,1),%esi
lea    0x1(%rax),%rdi
cmp    %rsi,%rdi
jne    1c13 <main+0xa63>
mov    %edx,0x0(%rbp,%rcx,1)
add    $0x8,%rcx
add    $0x2,%rax
add    $0x2,%edx
cmp    $0x9c44,%rcx
jne    1840 <main+0x690>
xor    %eax,%eax
test   %r14d,%r14d
setne  %al
add    %rax,%rax
add    $0x9,%rax
mov    $0x4,%ecx
mov    $0xd,%edx
cs nopw 0x0(%rax,%rax,1)
mov    -0x4(%rbx,%rcx,1),%esi
cmp    %rsi,%rax
jne    1c13 <main+0xa63>
lea    -0x1(%rdx),%esi
mov    %esi,-0x4(%rbx,%rcx,1)
mov    (%rbx,%rcx,1),%esi
lea    0x1(%rax),%rdi
cmp    %rsi,%rdi
jne    1c13 <main+0xa63>
mov    %edx,(%rbx,%rcx,1)
add    $0x8,%rcx
add    $0x2,%rax
add    $0x2,%edx
cmp    $0x9c44,%rcx
jne    18a0 <main+0x6f0>
mov    %rbx,%rdi
mov    $0x9c40,%esi
call   10c0 <acc_pcopyin@plt>
cmp    %rbp,%rax
jne    1c13 <main+0xa63>
cmp    $0x1,%r14d
mov    $0xc,%eax
sbb    $0x0,%rax
mov    $0x4,%ecx
mov    $0xe,%edx
nopl   0x0(%rax,%rax,1)
mov    -0x4(%rbp,%rcx,1),%esi
cmp    %rsi,%rax
jne    1c13 <main+0xa63>
lea    -0x1(%rdx),%esi
mov    %esi,-0x4(%rbp,%rcx,1)
mov    0x0(%rbp,%rcx,1),%esi
lea    0x1(%rax),%rdi
cmp    %rsi,%rdi
jne    1c13 <main+0xa63>
mov    %edx,0x0(%rbp,%rcx,1)
add    $0x8,%rcx
add    $0x2,%rax
add    $0x2,%edx
cmp    $0x9c44,%rcx
jne    1910 <main+0x760>
cmp    $0x1,%r14d
mov    $0xd,%eax
sbb    $0x0,%rax
mov    $0x4,%ecx
mov    $0xf,%edx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    -0x4(%rbx,%rcx,1),%esi
cmp    %rsi,%rax
jne    1c13 <main+0xa63>
lea    -0x1(%rdx),%esi
mov    %esi,-0x4(%rbx,%rcx,1)
mov    (%rbx,%rcx,1),%esi
lea    0x1(%rax),%rdi
cmp    %rsi,%rdi
jne    1c13 <main+0xa63>
mov    %edx,(%rbx,%rcx,1)
add    $0x8,%rcx
add    $0x2,%rax
add    $0x2,%edx
cmp    $0x9c44,%rcx
jne    1970 <main+0x7c0>
mov    %rbx,%rdi
mov    $0x9c40,%esi
call   10b0 <acc_pcreate@plt>
cmp    %rbp,%rax
jne    1c13 <main+0xa63>
cmp    $0x1,%r14d
mov    $0xe,%eax
sbb    $0x0,%rax
mov    $0x4,%ecx
mov    $0x10,%edx
nopl   0x0(%rax,%rax,1)
mov    -0x4(%rbp,%rcx,1),%esi
cmp    %rsi,%rax
jne    1c13 <main+0xa63>
lea    -0x1(%rdx),%esi
mov    %esi,-0x4(%rbp,%rcx,1)
mov    0x0(%rbp,%rcx,1),%esi
lea    0x1(%rax),%rdi
cmp    %rsi,%rdi
jne    1c13 <main+0xa63>
mov    %edx,0x0(%rbp,%rcx,1)
add    $0x8,%rcx
add    $0x2,%rax
add    $0x2,%edx
cmp    $0x9c44,%rcx
jne    19e0 <main+0x830>
cmp    $0x1,%r14d
mov    $0xf,%eax
sbb    $0x0,%rax
mov    $0x4,%ecx
mov    $0x11,%edx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    -0x4(%rbx,%rcx,1),%esi
cmp    %rsi,%rax
jne    1c13 <main+0xa63>
lea    -0x1(%rdx),%esi
mov    %esi,-0x4(%rbx,%rcx,1)
mov    (%rbx,%rcx,1),%esi
lea    0x1(%rax),%rdi
cmp    %rsi,%rdi
jne    1c13 <main+0xa63>
mov    %edx,(%rbx,%rcx,1)
add    $0x8,%rcx
add    $0x2,%rax
add    $0x2,%edx
cmp    $0x9c44,%rcx
jne    1a40 <main+0x890>
mov    %rbx,%rdi
mov    $0x9c40,%esi
call   10b0 <acc_pcreate@plt>
cmp    %rbp,%rax
jne    1c13 <main+0xa63>
xor    %eax,%eax
test   %r14d,%r14d
sete   %al
mov    $0x10,%ecx
sub    %rax,%rcx
xor    $0x11,%rax
xor    %edx,%edx
nopw   0x0(%rax,%rax,1)
mov    0x0(%rbp,%rdx,4),%esi
lea    (%rcx,%rdx,1),%rdi
cmp    %rsi,%rdi
jne    1c13 <main+0xa63>
lea    0x11(%rdx),%esi
mov    %esi,0x0(%rbp,%rdx,4)
mov    0x4(%rbp,%rdx,4),%esi
lea    (%rax,%rdx,1),%rdi
cmp    %rsi,%rdi
jne    1c13 <main+0xa63>
lea    0x12(%rdx),%esi
mov    %esi,0x4(%rbp,%rdx,4)
add    $0x2,%rdx
cmp    $0x2710,%rdx
jne    1ab0 <main+0x900>
cmp    $0x1,%r14d
mov    $0x11,%eax
sbb    $0x0,%rax
mov    $0x4,%ecx
mov    $0x13,%edx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    -0x4(%rbx,%rcx,1),%esi
cmp    %rsi,%rax
jne    1c13 <main+0xa63>
lea    -0x1(%rdx),%esi
mov    %esi,-0x4(%rbx,%rcx,1)
mov    (%rbx,%rcx,1),%esi
lea    0x1(%rax),%rdi
cmp    %rsi,%rdi
jne    1c13 <main+0xa63>
mov    %edx,(%rbx,%rcx,1)
add    $0x8,%rcx
add    $0x2,%rax
add    $0x2,%edx
cmp    $0x9c44,%rcx
jne    1b10 <main+0x960>
mov    %rbx,%rdi
mov    $0x9c40,%esi
call   10a0 <acc_update_self@plt>
mov    %rbx,%rdi
mov    $0x9c40,%esi
call   1060 <acc_is_present@plt>
test   %eax,%eax
je     1c13 <main+0xa63>
cmp    $0x1,%r14d
mov    $0x12,%eax
sbb    $0x0,%rax
xor    %ecx,%ecx
nopl   0x0(%rax)
mov    (%rbx,%rcx,4),%edx
lea    (%rax,%rcx,1),%rsi
cmp    %rdx,%rsi
jne    1c13 <main+0xa63>
mov    0x4(%rbx,%rcx,4),%edx
lea    (%rax,%rcx,1),%rsi
add    $0x1,%rsi
cmp    %rdx,%rsi
jne    1c13 <main+0xa63>
mov    0x8(%rbx,%rcx,4),%edx
lea    (%rax,%rcx,1),%rsi
add    $0x2,%rsi
cmp    %rdx,%rsi
jne    1c13 <main+0xa63>
mov    0xc(%rbx,%rcx,4),%edx
lea    (%rax,%rcx,1),%rsi
add    $0x3,%rsi
cmp    %rdx,%rsi
jne    1c13 <main+0xa63>
mov    0x10(%rbx,%rcx,4),%edx
lea    (%rax,%rcx,1),%rsi
add    $0x4,%rsi
cmp    %rdx,%rsi
jne    1c13 <main+0xa63>
add    $0x5,%rcx
cmp    $0x2710,%rcx
jne    1b80 <main+0x9d0>
mov    %rbx,%rdi
mov    $0x9c40,%esi
call   1080 <acc_delete@plt>
test   %r14d,%r14d
jne    1c04 <main+0xa54>
mov    %rbx,%rdi
mov    $0x9c40,%esi
call   1060 <acc_is_present@plt>
test   %eax,%eax
jne    1c13 <main+0xa63>
mov    %rbx,%rdi
call   1030 <free@plt>
xor    %eax,%eax
pop    %rbx
pop    %r14
pop    %rbp
ret
xor    %eax,%eax
call   1040 <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 i32*
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32*
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32*
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32*
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32*
%24 = alloca i32
%25 = alloca i32
%26 = alloca i32
%27 = alloca i32
%28 = alloca i32
%29 = alloca i32*
%30 = alloca i32
%31 = alloca i32
%32 = alloca i32*
%33 = alloca i32
%34 = alloca i32
%35 = alloca i32*
%36 = alloca i32
%37 = alloca i32
%38 = alloca i32
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
store i32 10000, i32* %8
store i32 40000, i32* %9
%39 = call i64 @malloc(i32 40000)
%40 = inttoptr i64 %39 to i32*
store i32* %40, i32** %6
%41 = load i32*, i32** %6
%42 = icmp ne i32* %41, null
br i1 %42, label %45, label %43
43: ; preds = %2
%44 = call i32 (...) @abort()
unreachable
45: ; preds = %2
store i32 0, i32* %11
br label %46
46: ; preds = %56, %45
%47 = load i32, i32* %11
%48 = icmp slt i32 %47, 10000
br i1 %48, label %49, label %59
49: ; preds = %46
%50 = load i32, i32* %11
%51 = add nsw i32 %50, 0
%52 = load i32*, i32** %6
%53 = load i32, i32* %11
%54 = sext i32 %53 to i64
%55 = getelementptr inbounds i32, i32* %52, i64 %54
store i32 %51, i32* %55
br label %56
56: ; preds = %49
%57 = load i32, i32* %11
%58 = add nsw i32 %57, 1
store i32 %58, i32* %11
br label %46
59: ; preds = %46
%60 = load i32*, i32** %6
%61 = call i32 @acc_is_present(i32* %60, i32 40000)
store i32 %61, i32* %10
%62 = load i32*, i32** %6
%63 = call i64 @acc_present_or_create(i32* %62, i32 40000)
%64 = inttoptr i64 %63 to i32*
store i32* %64, i32** %7
%65 = load i32*, i32** %7
%66 = icmp ne i32* %65, null
br i1 %66, label %69, label %67
67: ; preds = %59
%68 = call i32 (...) @abort()
unreachable
69: ; preds = %59
%70 = load i32, i32* %10
%71 = icmp ne i32 %70, 0
br i1 %71, label %72, label %79
72: ; preds = %69
%73 = load i32*, i32** %6
%74 = load i32*, i32** %7
%75 = icmp ne i32* %73, %74
br i1 %75, label %76, label %78
76: ; preds = %72
%77 = call i32 (...) @abort()
unreachable
78: ; preds = %72
br label %79
79: ; preds = %78, %69
%80 = load i32*, i32** %6
%81 = call i32 @acc_is_present(i32* %80, i32 40000)
%82 = icmp ne i32 %81, 0
br i1 %82, label %85, label %83
83: ; preds = %79
%84 = call i32 (...) @abort()
unreachable
85: ; preds = %79
store i32 0, i32* %12
br label %86
86: ; preds = %96, %85
%87 = load i32, i32* %12
%88 = icmp slt i32 %87, 10000
br i1 %88, label %89, label %99
89: ; preds = %86
%90 = load i32, i32* %12
%91 = add nsw i32 %90, 1
%92 = load i32*, i32** %7
%93 = load i32, i32* %12
%94 = sext i32 %93 to i64
%95 = getelementptr inbounds i32, i32* %92, i64 %94
store i32 %91, i32* %95
br label %96
96: ; preds = %89
%97 = load i32, i32* %12
%98 = add nsw i32 %97, 1
store i32 %98, i32* %12
br label %86
99: ; preds = %86
store i32 0, i32* %13
br label %100
100: ; preds = %125, %99
%101 = load i32, i32* %13
%102 = icmp slt i32 %101, 10000
br i1 %102, label %103, label %128
103: ; preds = %100
%104 = load i32*, i32** %6
%105 = load i32, i32* %13
%106 = sext i32 %105 to i64
%107 = getelementptr inbounds i32, i32* %104, i64 %106
%108 = load i32, i32* %107
%109 = load i32, i32* %13
%110 = load i32, i32* %10
%111 = icmp ne i32 %110, 0
%112 = zext i1 %111 to i64
%113 = select i1 %111, i32 1, i32 0
%114 = add nsw i32 %109, %113
%115 = icmp ne i32 %108, %114
br i1 %115, label %116, label %118
116: ; preds = %103
%117 = call i32 (...) @abort()
unreachable
118: ; preds = %103
%119 = load i32, i32* %13
%120 = add nsw i32 %119, 2
%121 = load i32*, i32** %6
%122 = load i32, i32* %13
%123 = sext i32 %122 to i64
%124 = getelementptr inbounds i32, i32* %121, i64 %123
store i32 %120, i32* %124
br label %125
125: ; preds = %118
%126 = load i32, i32* %13
%127 = add nsw i32 %126, 1
store i32 %127, i32* %13
br label %100
128: ; preds = %100
%129 = load i32*, i32** %6
%130 = call i64 @acc_present_or_create(i32* %129, i32 40000)
%131 = inttoptr i64 %130 to i32*
store i32* %131, i32** %14
%132 = load i32*, i32** %14
%133 = load i32*, i32** %7
%134 = icmp ne i32* %132, %133
br i1 %134, label %135, label %137
135: ; preds = %128
%136 = call i32 (...) @abort()
unreachable
137: ; preds = %128
store i32 0, i32* %15
br label %138
138: ; preds = %163, %137
%139 = load i32, i32* %15
%140 = icmp slt i32 %139, 10000
br i1 %140, label %141, label %166
141: ; preds = %138
%142 = load i32*, i32** %7
%143 = load i32, i32* %15
%144 = sext i32 %143 to i64
%145 = getelementptr inbounds i32, i32* %142, i64 %144
%146 = load i32, i32* %145
%147 = load i32, i32* %15
%148 = load i32, i32* %10
%149 = icmp ne i32 %148, 0
%150 = zext i1 %149 to i64
%151 = select i1 %149, i32 2, i32 1
%152 = add nsw i32 %147, %151
%153 = icmp ne i32 %146, %152
br i1 %153, label %154, label %156
154: ; preds = %141
%155 = call i32 (...) @abort()
unreachable
156: ; preds = %141
%157 = load i32, i32* %15
%158 = add nsw i32 %157, 3
%159 = load i32*, i32** %7
%160 = load i32, i32* %15
%161 = sext i32 %160 to i64
%162 = getelementptr inbounds i32, i32* %159, i64 %161
store i32 %158, i32* %162
br label %163
163: ; preds = %156
%164 = load i32, i32* %15
%165 = add nsw i32 %164, 1
store i32 %165, i32* %15
br label %138
166: ; preds = %138
store i32 0, i32* %16
br label %167
167: ; preds = %192, %166
%168 = load i32, i32* %16
%169 = icmp slt i32 %168, 10000
br i1 %169, label %170, label %195
170: ; preds = %167
%171 = load i32*, i32** %6
%172 = load i32, i32* %16
%173 = sext i32 %172 to i64
%174 = getelementptr inbounds i32, i32* %171, i64 %173
%175 = load i32, i32* %174
%176 = load i32, i32* %16
%177 = load i32, i32* %10
%178 = icmp ne i32 %177, 0
%179 = zext i1 %178 to i64
%180 = select i1 %178, i32 3, i32 2
%181 = add nsw i32 %176, %180
%182 = icmp ne i32 %175, %181
br i1 %182, label %183, label %185
183: ; preds = %170
%184 = call i32 (...) @abort()
unreachable
185: ; preds = %170
%186 = load i32, i32* %16
%187 = add nsw i32 %186, 4
%188 = load i32*, i32** %6
%189 = load i32, i32* %16
%190 = sext i32 %189 to i64
%191 = getelementptr inbounds i32, i32* %188, i64 %190
store i32 %187, i32* %191
br label %192
192: ; preds = %185
%193 = load i32, i32* %16
%194 = add nsw i32 %193, 1
store i32 %194, i32* %16
br label %167
195: ; preds = %167
%196 = load i32*, i32** %6
%197 = call i64 @acc_pcreate(i32* %196, i32 40000)
%198 = inttoptr i64 %197 to i32*
store i32* %198, i32** %17
%199 = load i32*, i32** %17
%200 = load i32*, i32** %7
%201 = icmp ne i32* %199, %200
br i1 %201, label %202, label %204
202: ; preds = %195
%203 = call i32 (...) @abort()
unreachable
204: ; preds = %195
store i32 0, i32* %18
br label %205
205: ; preds = %230, %204
%206 = load i32, i32* %18
%207 = icmp slt i32 %206, 10000
br i1 %207, label %208, label %233
208: ; preds = %205
%209 = load i32*, i32** %7
%210 = load i32, i32* %18
%211 = sext i32 %210 to i64
%212 = getelementptr inbounds i32, i32* %209, i64 %211
%213 = load i32, i32* %212
%214 = load i32, i32* %18
%215 = load i32, i32* %10
%216 = icmp ne i32 %215, 0
%217 = zext i1 %216 to i64
%218 = select i1 %216, i32 4, i32 3
%219 = add nsw i32 %214, %218
%220 = icmp ne i32 %213, %219
br i1 %220, label %221, label %223
221: ; preds = %208
%222 = call i32 (...) @abort()
unreachable
223: ; preds = %208
%224 = load i32, i32* %18
%225 = add nsw i32 %224, 5
%226 = load i32*, i32** %7
%227 = load i32, i32* %18
%228 = sext i32 %227 to i64
%229 = getelementptr inbounds i32, i32* %226, i64 %228
store i32 %225, i32* %229
br label %230
230: ; preds = %223
%231 = load i32, i32* %18
%232 = add nsw i32 %231, 1
store i32 %232, i32* %18
br label %205
233: ; preds = %205
store i32 0, i32* %19
br label %234
234: ; preds = %259, %233
%235 = load i32, i32* %19
%236 = icmp slt i32 %235, 10000
br i1 %236, label %237, label %262
237: ; preds = %234
%238 = load i32*, i32** %6
%239 = load i32, i32* %19
%240 = sext i32 %239 to i64
%241 = getelementptr inbounds i32, i32* %238, i64 %240
%242 = load i32, i32* %241
%243 = load i32, i32* %19
%244 = load i32, i32* %10
%245 = icmp ne i32 %244, 0
%246 = zext i1 %245 to i64
%247 = select i1 %245, i32 5, i32 4
%248 = add nsw i32 %243, %247
%249 = icmp ne i32 %242, %248
br i1 %249, label %250, label %252
250: ; preds = %237
%251 = call i32 (...) @abort()
unreachable
252: ; preds = %237
%253 = load i32, i32* %19
%254 = add nsw i32 %253, 6
%255 = load i32*, i32** %6
%256 = load i32, i32* %19
%257 = sext i32 %256 to i64
%258 = getelementptr inbounds i32, i32* %255, i64 %257
store i32 %254, i32* %258
br label %259
259: ; preds = %252
%260 = load i32, i32* %19
%261 = add nsw i32 %260, 1
store i32 %261, i32* %19
br label %234
262: ; preds = %234
%263 = load i32*, i32** %6
%264 = call i64 @acc_present_or_copyin(i32* %263, i32 40000)
%265 = inttoptr i64 %264 to i32*
store i32* %265, i32** %20
%266 = load i32*, i32** %20
%267 = load i32*, i32** %7
%268 = icmp ne i32* %266, %267
br i1 %268, label %269, label %271
269: ; preds = %262
%270 = call i32 (...) @abort()
unreachable
271: ; preds = %262
store i32 0, i32* %21
br label %272
272: ; preds = %297, %271
%273 = load i32, i32* %21
%274 = icmp slt i32 %273, 10000
br i1 %274, label %275, label %300
275: ; preds = %272
%276 = load i32*, i32** %7
%277 = load i32, i32* %21
%278 = sext i32 %277 to i64
%279 = getelementptr inbounds i32, i32* %276, i64 %278
%280 = load i32, i32* %279
%281 = load i32, i32* %21
%282 = load i32, i32* %10
%283 = icmp ne i32 %282, 0
%284 = zext i1 %283 to i64
%285 = select i1 %283, i32 6, i32 5
%286 = add nsw i32 %281, %285
%287 = icmp ne i32 %280, %286
br i1 %287, label %288, label %290
288: ; preds = %275
%289 = call i32 (...) @abort()
unreachable
290: ; preds = %275
%291 = load i32, i32* %21
%292 = add nsw i32 %291, 7
%293 = load i32*, i32** %7
%294 = load i32, i32* %21
%295 = sext i32 %294 to i64
%296 = getelementptr inbounds i32, i32* %293, i64 %295
store i32 %292, i32* %296
br label %297
297: ; preds = %290
%298 = load i32, i32* %21
%299 = add nsw i32 %298, 1
store i32 %299, i32* %21
br label %272
300: ; preds = %272
store i32 0, i32* %22
br label %301
301: ; preds = %326, %300
%302 = load i32, i32* %22
%303 = icmp slt i32 %302, 10000
br i1 %303, label %304, label %329
304: ; preds = %301
%305 = load i32*, i32** %6
%306 = load i32, i32* %22
%307 = sext i32 %306 to i64
%308 = getelementptr inbounds i32, i32* %305, i64 %307
%309 = load i32, i32* %308
%310 = load i32, i32* %22
%311 = load i32, i32* %10
%312 = icmp ne i32 %311, 0
%313 = zext i1 %312 to i64
%314 = select i1 %312, i32 7, i32 6
%315 = add nsw i32 %310, %314
%316 = icmp ne i32 %309, %315
br i1 %316, label %317, label %319
317: ; preds = %304
%318 = call i32 (...) @abort()
unreachable
319: ; preds = %304
%320 = load i32, i32* %22
%321 = add nsw i32 %320, 8
%322 = load i32*, i32** %6
%323 = load i32, i32* %22
%324 = sext i32 %323 to i64
%325 = getelementptr inbounds i32, i32* %322, i64 %324
store i32 %321, i32* %325
br label %326
326: ; preds = %319
%327 = load i32, i32* %22
%328 = add nsw i32 %327, 1
store i32 %328, i32* %22
br label %301
329: ; preds = %301
%330 = load i32*, i32** %6
%331 = call i64 @acc_pcopyin(i32* %330, i32 40000)
%332 = inttoptr i64 %331 to i32*
store i32* %332, i32** %23
%333 = load i32*, i32** %23
%334 = load i32*, i32** %7
%335 = icmp ne i32* %333, %334
br i1 %335, label %336, label %338
336: ; preds = %329
%337 = call i32 (...) @abort()
unreachable
338: ; preds = %329
store i32 0, i32* %24
br label %339
339: ; preds = %364, %338
%340 = load i32, i32* %24
%341 = icmp slt i32 %340, 10000
br i1 %341, label %342, label %367
342: ; preds = %339
%343 = load i32*, i32** %7
%344 = load i32, i32* %24
%345 = sext i32 %344 to i64
%346 = getelementptr inbounds i32, i32* %343, i64 %345
%347 = load i32, i32* %346
%348 = load i32, i32* %24
%349 = load i32, i32* %10
%350 = icmp ne i32 %349, 0
%351 = zext i1 %350 to i64
%352 = select i1 %350, i32 8, i32 7
%353 = add nsw i32 %348, %352
%354 = icmp ne i32 %347, %353
br i1 %354, label %355, label %357
355: ; preds = %342
%356 = call i32 (...) @abort()
unreachable
357: ; preds = %342
%358 = load i32, i32* %24
%359 = add nsw i32 %358, 9
%360 = load i32*, i32** %7
%361 = load i32, i32* %24
%362 = sext i32 %361 to i64
%363 = getelementptr inbounds i32, i32* %360, i64 %362
store i32 %359, i32* %363
br label %364
364: ; preds = %357
%365 = load i32, i32* %24
%366 = add nsw i32 %365, 1
store i32 %366, i32* %24
br label %339
367: ; preds = %339
store i32 0, i32* %25
br label %368
368: ; preds = %393, %367
%369 = load i32, i32* %25
%370 = icmp slt i32 %369, 10000
br i1 %370, label %371, label %396
371: ; preds = %368
%372 = load i32*, i32** %6
%373 = load i32, i32* %25
%374 = sext i32 %373 to i64
%375 = getelementptr inbounds i32, i32* %372, i64 %374
%376 = load i32, i32* %375
%377 = load i32, i32* %25
%378 = load i32, i32* %10
%379 = icmp ne i32 %378, 0
%380 = zext i1 %379 to i64
%381 = select i1 %379, i32 9, i32 8
%382 = add nsw i32 %377, %381
%383 = icmp ne i32 %376, %382
br i1 %383, label %384, label %386
384: ; preds = %371
%385 = call i32 (...) @abort()
unreachable
386: ; preds = %371
%387 = load i32, i32* %25
%388 = add nsw i32 %387, 10
%389 = load i32*, i32** %6
%390 = load i32, i32* %25
%391 = sext i32 %390 to i64
%392 = getelementptr inbounds i32, i32* %389, i64 %391
store i32 %388, i32* %392
br label %393
393: ; preds = %386
%394 = load i32, i32* %25
%395 = add nsw i32 %394, 1
store i32 %395, i32* %25
br label %368
396: ; preds = %368
%397 = load i32*, i32** %6
%398 = call i32 @acc_copyout(i32* %397, i32 40000)
store i32* null, i32** %7
%399 = load i32, i32* %10
%400 = icmp ne i32 %399, 0
br i1 %400, label %408, label %401
401: ; preds = %396
%402 = load i32*, i32** %6
%403 = call i32 @acc_is_present(i32* %402, i32 40000)
%404 = icmp ne i32 %403, 0
br i1 %404, label %405, label %407
405: ; preds = %401
%406 = call i32 (...) @abort()
unreachable
407: ; preds = %401
br label %408
408: ; preds = %407, %396
store i32 0, i32* %26
br label %409
409: ; preds = %428, %408
%410 = load i32, i32* %26
%411 = icmp slt i32 %410, 10000
br i1 %411, label %412, label %431
412: ; preds = %409
%413 = load i32*, i32** %6
%414 = load i32, i32* %26
%415 = sext i32 %414 to i64
%416 = getelementptr inbounds i32, i32* %413, i64 %415
%417 = load i32, i32* %416
%418 = load i32, i32* %26
%419 = load i32, i32* %10
%420 = icmp ne i32 %419, 0
%421 = zext i1 %420 to i64
%422 = select i1 %420, i32 10, i32 9
%423 = add nsw i32 %418, %422
%424 = icmp ne i32 %417, %423
br i1 %424, label %425, label %427
425: ; preds = %412
%426 = call i32 (...) @abort()
unreachable
427: ; preds = %412
br label %428
428: ; preds = %427
%429 = load i32, i32* %26
%430 = add nsw i32 %429, 1
store i32 %430, i32* %26
br label %409
431: ; preds = %409
%432 = load i32*, i32** %6
%433 = call i64 @acc_pcopyin(i32* %432, i32 40000)
%434 = inttoptr i64 %433 to i32*
store i32* %434, i32** %7
%435 = load i32*, i32** %7
%436 = icmp ne i32* %435, null
br i1 %436, label %439, label %437
437: ; preds = %431
%438 = call i32 (...) @abort()
unreachable
439: ; preds = %431
%440 = load i32, i32* %10
%441 = icmp ne i32 %440, 0
br i1 %441, label %442, label %449
442: ; preds = %439
%443 = load i32*, i32** %6
%444 = load i32*, i32** %7
%445 = icmp ne i32* %443, %444
br i1 %445, label %446, label %448
446: ; preds = %442
%447 = call i32 (...) @abort()
unreachable
448: ; preds = %442
br label %449
449: ; preds = %448, %439
%450 = load i32*, i32** %6
%451 = call i32 @acc_is_present(i32* %450, i32 40000)
%452 = icmp ne i32 %451, 0
br i1 %452, label %455, label %453
453: ; preds = %449
%454 = call i32 (...) @abort()
unreachable
455: ; preds = %449
store i32 0, i32* %27
br label %456
456: ; preds = %481, %455
%457 = load i32, i32* %27
%458 = icmp slt i32 %457, 10000
br i1 %458, label %459, label %484
459: ; preds = %456
%460 = load i32*, i32** %7
%461 = load i32, i32* %27
%462 = sext i32 %461 to i64
%463 = getelementptr inbounds i32, i32* %460, i64 %462
%464 = load i32, i32* %463
%465 = load i32, i32* %27
%466 = load i32, i32* %10
%467 = icmp ne i32 %466, 0
%468 = zext i1 %467 to i64
%469 = select i1 %467, i32 10, i32 9
%470 = add nsw i32 %465, %469
%471 = icmp ne i32 %464, %470
br i1 %471, label %472, label %474
472: ; preds = %459
%473 = call i32 (...) @abort()
unreachable
474: ; preds = %459
%475 = load i32, i32* %27
%476 = add nsw i32 %475, 11
%477 = load i32*, i32** %7
%478 = load i32, i32* %27
%479 = sext i32 %478 to i64
%480 = getelementptr inbounds i32, i32* %477, i64 %479
store i32 %476, i32* %480
br label %481
481: ; preds = %474
%482 = load i32, i32* %27
%483 = add nsw i32 %482, 1
store i32 %483, i32* %27
br label %456
484: ; preds = %456
store i32 0, i32* %28
br label %485
485: ; preds = %510, %484
%486 = load i32, i32* %28
%487 = icmp slt i32 %486, 10000
br i1 %487, label %488, label %513
488: ; preds = %485
%489 = load i32*, i32** %6
%490 = load i32, i32* %28
%491 = sext i32 %490 to i64
%492 = getelementptr inbounds i32, i32* %489, i64 %491
%493 = load i32, i32* %492
%494 = load i32, i32* %28
%495 = load i32, i32* %10
%496 = icmp ne i32 %495, 0
%497 = zext i1 %496 to i64
%498 = select i1 %496, i32 11, i32 9
%499 = add nsw i32 %494, %498
%500 = icmp ne i32 %493, %499
br i1 %500, label %501, label %503
501: ; preds = %488
%502 = call i32 (...) @abort()
unreachable
503: ; preds = %488
%504 = load i32, i32* %28
%505 = add nsw i32 %504, 12
%506 = load i32*, i32** %6
%507 = load i32, i32* %28
%508 = sext i32 %507 to i64
%509 = getelementptr inbounds i32, i32* %506, i64 %508
store i32 %505, i32* %509
br label %510
510: ; preds = %503
%511 = load i32, i32* %28
%512 = add nsw i32 %511, 1
store i32 %512, i32* %28
br label %485
513: ; preds = %485
%514 = load i32*, i32** %6
%515 = call i64 @acc_pcopyin(i32* %514, i32 40000)
%516 = inttoptr i64 %515 to i32*
store i32* %516, i32** %29
%517 = load i32*, i32** %29
%518 = load i32*, i32** %7
%519 = icmp ne i32* %517, %518
br i1 %519, label %520, label %522
520: ; preds = %513
%521 = call i32 (...) @abort()
unreachable
522: ; preds = %513
store i32 0, i32* %30
br label %523
523: ; preds = %548, %522
%524 = load i32, i32* %30
%525 = icmp slt i32 %524, 10000
br i1 %525, label %526, label %551
526: ; preds = %523
%527 = load i32*, i32** %7
%528 = load i32, i32* %30
%529 = sext i32 %528 to i64
%530 = getelementptr inbounds i32, i32* %527, i64 %529
%531 = load i32, i32* %530
%532 = load i32, i32* %30
%533 = load i32, i32* %10
%534 = icmp ne i32 %533, 0
%535 = zext i1 %534 to i64
%536 = select i1 %534, i32 12, i32 11
%537 = add nsw i32 %532, %536
%538 = icmp ne i32 %531, %537
br i1 %538, label %539, label %541
539: ; preds = %526
%540 = call i32 (...) @abort()
unreachable
541: ; preds = %526
%542 = load i32, i32* %30
%543 = add nsw i32 %542, 13
%544 = load i32*, i32** %7
%545 = load i32, i32* %30
%546 = sext i32 %545 to i64
%547 = getelementptr inbounds i32, i32* %544, i64 %546
store i32 %543, i32* %547
br label %548
548: ; preds = %541
%549 = load i32, i32* %30
%550 = add nsw i32 %549, 1
store i32 %550, i32* %30
br label %523
551: ; preds = %523
store i32 0, i32* %31
br label %552
552: ; preds = %577, %551
%553 = load i32, i32* %31
%554 = icmp slt i32 %553, 10000
br i1 %554, label %555, label %580
555: ; preds = %552
%556 = load i32*, i32** %6
%557 = load i32, i32* %31
%558 = sext i32 %557 to i64
%559 = getelementptr inbounds i32, i32* %556, i64 %558
%560 = load i32, i32* %559
%561 = load i32, i32* %31
%562 = load i32, i32* %10
%563 = icmp ne i32 %562, 0
%564 = zext i1 %563 to i64
%565 = select i1 %563, i32 13, i32 12
%566 = add nsw i32 %561, %565
%567 = icmp ne i32 %560, %566
br i1 %567, label %568, label %570
568: ; preds = %555
%569 = call i32 (...) @abort()
unreachable
570: ; preds = %555
%571 = load i32, i32* %31
%572 = add nsw i32 %571, 14
%573 = load i32*, i32** %6
%574 = load i32, i32* %31
%575 = sext i32 %574 to i64
%576 = getelementptr inbounds i32, i32* %573, i64 %575
store i32 %572, i32* %576
br label %577
577: ; preds = %570
%578 = load i32, i32* %31
%579 = add nsw i32 %578, 1
store i32 %579, i32* %31
br label %552
580: ; preds = %552
%581 = load i32*, i32** %6
%582 = call i64 @acc_pcreate(i32* %581, i32 40000)
%583 = inttoptr i64 %582 to i32*
store i32* %583, i32** %32
%584 = load i32*, i32** %32
%585 = load i32*, i32** %7
%586 = icmp ne i32* %584, %585
br i1 %586, label %587, label %589
587: ; preds = %580
%588 = call i32 (...) @abort()
unreachable
589: ; preds = %580
store i32 0, i32* %33
br label %590
590: ; preds = %615, %589
%591 = load i32, i32* %33
%592 = icmp slt i32 %591, 10000
br i1 %592, label %593, label %618
593: ; preds = %590
%594 = load i32*, i32** %7
%595 = load i32, i32* %33
%596 = sext i32 %595 to i64
%597 = getelementptr inbounds i32, i32* %594, i64 %596
%598 = load i32, i32* %597
%599 = load i32, i32* %33
%600 = load i32, i32* %10
%601 = icmp ne i32 %600, 0
%602 = zext i1 %601 to i64
%603 = select i1 %601, i32 14, i32 13
%604 = add nsw i32 %599, %603
%605 = icmp ne i32 %598, %604
br i1 %605, label %606, label %608
606: ; preds = %593
%607 = call i32 (...) @abort()
unreachable
608: ; preds = %593
%609 = load i32, i32* %33
%610 = add nsw i32 %609, 15
%611 = load i32*, i32** %7
%612 = load i32, i32* %33
%613 = sext i32 %612 to i64
%614 = getelementptr inbounds i32, i32* %611, i64 %613
store i32 %610, i32* %614
br label %615
615: ; preds = %608
%616 = load i32, i32* %33
%617 = add nsw i32 %616, 1
store i32 %617, i32* %33
br label %590
618: ; preds = %590
store i32 0, i32* %34
br label %619
619: ; preds = %644, %618
%620 = load i32, i32* %34
%621 = icmp slt i32 %620, 10000
br i1 %621, label %622, label %647
622: ; preds = %619
%623 = load i32*, i32** %6
%624 = load i32, i32* %34
%625 = sext i32 %624 to i64
%626 = getelementptr inbounds i32, i32* %623, i64 %625
%627 = load i32, i32* %626
%628 = load i32, i32* %34
%629 = load i32, i32* %10
%630 = icmp ne i32 %629, 0
%631 = zext i1 %630 to i64
%632 = select i1 %630, i32 15, i32 14
%633 = add nsw i32 %628, %632
%634 = icmp ne i32 %627, %633
br i1 %634, label %635, label %637
635: ; preds = %622
%636 = call i32 (...) @abort()
unreachable
637: ; preds = %622
%638 = load i32, i32* %34
%639 = add nsw i32 %638, 16
%640 = load i32*, i32** %6
%641 = load i32, i32* %34
%642 = sext i32 %641 to i64
%643 = getelementptr inbounds i32, i32* %640, i64 %642
store i32 %639, i32* %643
br label %644
644: ; preds = %637
%645 = load i32, i32* %34
%646 = add nsw i32 %645, 1
store i32 %646, i32* %34
br label %619
647: ; preds = %619
%648 = load i32*, i32** %6
%649 = call i64 @acc_pcreate(i32* %648, i32 40000)
%650 = inttoptr i64 %649 to i32*
store i32* %650, i32** %35
%651 = load i32*, i32** %35
%652 = load i32*, i32** %7
%653 = icmp ne i32* %651, %652
br i1 %653, label %654, label %656
654: ; preds = %647
%655 = call i32 (...) @abort()
unreachable
656: ; preds = %647
store i32 0, i32* %36
br label %657
657: ; preds = %682, %656
%658 = load i32, i32* %36
%659 = icmp slt i32 %658, 10000
br i1 %659, label %660, label %685
660: ; preds = %657
%661 = load i32*, i32** %7
%662 = load i32, i32* %36
%663 = sext i32 %662 to i64
%664 = getelementptr inbounds i32, i32* %661, i64 %663
%665 = load i32, i32* %664
%666 = load i32, i32* %36
%667 = load i32, i32* %10
%668 = icmp ne i32 %667, 0
%669 = zext i1 %668 to i64
%670 = select i1 %668, i32 16, i32 15
%671 = add nsw i32 %666, %670
%672 = icmp ne i32 %665, %671
br i1 %672, label %673, label %675
673: ; preds = %660
%674 = call i32 (...) @abort()
unreachable
675: ; preds = %660
%676 = load i32, i32* %36
%677 = add nsw i32 %676, 17
%678 = load i32*, i32** %7
%679 = load i32, i32* %36
%680 = sext i32 %679 to i64
%681 = getelementptr inbounds i32, i32* %678, i64 %680
store i32 %677, i32* %681
br label %682
682: ; preds = %675
%683 = load i32, i32* %36
%684 = add nsw i32 %683, 1
store i32 %684, i32* %36
br label %657
685: ; preds = %657
store i32 0, i32* %37
br label %686
686: ; preds = %711, %685
%687 = load i32, i32* %37
%688 = icmp slt i32 %687, 10000
br i1 %688, label %689, label %714
689: ; preds = %686
%690 = load i32*, i32** %6
%691 = load i32, i32* %37
%692 = sext i32 %691 to i64
%693 = getelementptr inbounds i32, i32* %690, i64 %692
%694 = load i32, i32* %693
%695 = load i32, i32* %37
%696 = load i32, i32* %10
%697 = icmp ne i32 %696, 0
%698 = zext i1 %697 to i64
%699 = select i1 %697, i32 17, i32 16
%700 = add nsw i32 %695, %699
%701 = icmp ne i32 %694, %700
br i1 %701, label %702, label %704
702: ; preds = %689
%703 = call i32 (...) @abort()
unreachable
704: ; preds = %689
%705 = load i32, i32* %37
%706 = add nsw i32 %705, 18
%707 = load i32*, i32** %6
%708 = load i32, i32* %37
%709 = sext i32 %708 to i64
%710 = getelementptr inbounds i32, i32* %707, i64 %709
store i32 %706, i32* %710
br label %711
711: ; preds = %704
%712 = load i32, i32* %37
%713 = add nsw i32 %712, 1
store i32 %713, i32* %37
br label %686
714: ; preds = %686
%715 = load i32*, i32** %6
%716 = call i32 @acc_update_self(i32* %715, i32 40000)
%717 = load i32*, i32** %6
%718 = call i32 @acc_is_present(i32* %717, i32 40000)
%719 = icmp ne i32 %718, 0
br i1 %719, label %722, label %720
720: ; preds = %714
%721 = call i32 (...) @abort()
unreachable
722: ; preds = %714
store i32 0, i32* %38
br label %723
723: ; preds = %742, %722
%724 = load i32, i32* %38
%725 = icmp slt i32 %724, 10000
br i1 %725, label %726, label %745
726: ; preds = %723
%727 = load i32*, i32** %6
%728 = load i32, i32* %38
%729 = sext i32 %728 to i64
%730 = getelementptr inbounds i32, i32* %727, i64 %729
%731 = load i32, i32* %730
%732 = load i32, i32* %38
%733 = load i32, i32* %10
%734 = icmp ne i32 %733, 0
%735 = zext i1 %734 to i64
%736 = select i1 %734, i32 18, i32 17
%737 = add nsw i32 %732, %736
%738 = icmp ne i32 %731, %737
br i1 %738, label %739, label %741
739: ; preds = %726
%740 = call i32 (...) @abort()
unreachable
741: ; preds = %726
br label %742
742: ; preds = %741
%743 = load i32, i32* %38
%744 = add nsw i32 %743, 1
store i32 %744, i32* %38
br label %723
745: ; preds = %723
%746 = load i32*, i32** %6
%747 = call i32 @acc_delete(i32* %746, i32 40000)
store i32* null, i32** %7
%748 = load i32, i32* %10
%749 = icmp ne i32 %748, 0
br i1 %749, label %757, label %750
750: ; preds = %745
%751 = load i32*, i32** %6
%752 = call i32 @acc_is_present(i32* %751, i32 40000)
%753 = icmp ne i32 %752, 0
br i1 %753, label %754, label %756
754: ; preds = %750
%755 = call i32 (...) @abort()
unreachable
756: ; preds = %750
br label %757
757: ; preds = %756, %745
%758 = load i32*, i32** %6
%759 = call i32 @free(i32* %758)
ret i32 0
}

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