user: Translate the below assembly code into C programming language:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  add    $0xffffffffffffff80,%rsp
  mov    %edi,-0x74(%rbp)
  mov    %rsi,-0x80(%rbp)
  movl   $0x8,-0x24(%rbp)
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x20(%rbp)
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x18(%rbp)
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x10(%rbp)
  movl   $0x0,-0x6c(%rbp)
  jmp    L1945
L789:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  D466(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x6c(%rbp)
L1945:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L789
  movl   $0x0,-0x68(%rbp)
  jmp    L1739
L1741:
  mov    -0x68(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x68(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x68(%rbp)
L1739:
  mov    -0x68(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L1741
  movl   $0x0,-0x6c(%rbp)
  jmp    L1378
L1888:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D466(%rip),%xmm0
  jp     L549
  ucomiss D466(%rip),%xmm0
  je     L1600
L549:
  mov    $0x0,%eax
  call   <abort@plt>
L1600:
  addl   $0x1,-0x6c(%rbp)
L1378:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L1888
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L1858
  mov    $0x0,%eax
  call   <abort@plt>
L1858:
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L1338
  mov    $0x0,%eax
  call   <abort@plt>
L1338:
  movl   $0x0,-0x6c(%rbp)
  jmp    L1528
L990:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  D295(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  D740(%rip),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x6c(%rbp)
L1528:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L990
  movl   $0x0,-0x64(%rbp)
  jmp    L1277
L1574:
  mov    -0x64(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x64(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x64(%rbp)
L1277:
  mov    -0x64(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L1574
  movl   $0x0,-0x6c(%rbp)
  jmp    L2001
L1336:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D295(%rip),%xmm0
  jp     L98
  ucomiss D295(%rip),%xmm0
  je     L762
L98:
  mov    $0x0,%eax
  call   <abort@plt>
L762:
  addl   $0x1,-0x6c(%rbp)
L2001:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L1336
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L710
  mov    $0x0,%eax
  call   <abort@plt>
L710:
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L1577
  mov    $0x0,%eax
  call   <abort@plt>
L1577:
  movl   $0x0,-0x6c(%rbp)
  jmp    L66
L1452:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  D132(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x6c(%rbp)
L66:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L1452
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_copyin@plt>
  mov    %rax,-0x8(%rbp)
  movl   $0x0,-0x6c(%rbp)
  jmp    L1808
L351:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  D532(%rip),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x6c(%rbp)
L1808:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L351
  movl   $0x0,-0x60(%rbp)
  jmp    L1080
L1181:
  mov    -0x60(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x60(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x60(%rbp)
L1080:
  mov    -0x60(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L1181
  movl   $0x0,-0x6c(%rbp)
  jmp    L102
L726:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D132(%rip),%xmm0
  jp     L2040
  ucomiss D132(%rip),%xmm0
  je     L816
L2040:
  mov    $0x0,%eax
  call   <abort@plt>
L816:
  addl   $0x1,-0x6c(%rbp)
L102:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L726
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  jne    L1339
  mov    $0x0,%eax
  call   <abort@plt>
L1339:
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L1616
  mov    $0x0,%eax
  call   <abort@plt>
L1616:
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdi
  call   <acc_free@plt>
  movl   $0x0,-0x6c(%rbp)
  jmp    L1445
L291:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  D132(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x6c(%rbp)
L1445:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L291
  movl   $0x0,-0x5c(%rbp)
  jmp    L1911
L153:
  mov    -0x5c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x5c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x5c(%rbp)
L1911:
  mov    -0x5c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L153
  movl   $0x0,-0x6c(%rbp)
  jmp    L477
L16:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D132(%rip),%xmm0
  jp     L1791
  ucomiss D132(%rip),%xmm0
  je     L787
L1791:
  mov    $0x0,%eax
  call   <abort@plt>
L787:
  addl   $0x1,-0x6c(%rbp)
L477:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L16
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L1169
  mov    $0x0,%eax
  call   <abort@plt>
L1169:
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L328
  mov    $0x0,%eax
  call   <abort@plt>
L328:
  movl   $0x0,-0x6c(%rbp)
  jmp    L1197
L648:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  D295(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  D861(%rip),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x6c(%rbp)
L1197:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L648
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_copyin@plt>
  mov    %rax,-0x8(%rbp)
  movl   $0x0,-0x58(%rbp)
  jmp    L900
L132:
  mov    -0x58(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x58(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x58(%rbp)
L900:
  mov    -0x58(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L132
  movl   $0x0,-0x6c(%rbp)
  jmp    L1362
L390:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D295(%rip),%xmm0
  jp     L353
  ucomiss D295(%rip),%xmm0
  je     L1572
L353:
  mov    $0x0,%eax
  call   <abort@plt>
L1572:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D861(%rip),%xmm0
  jp     L1344
  ucomiss D861(%rip),%xmm0
  je     L342
L1344:
  mov    $0x0,%eax
  call   <abort@plt>
L342:
  addl   $0x1,-0x6c(%rbp)
L1362:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L390
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L1441
  mov    $0x0,%eax
  call   <abort@plt>
L1441:
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  jne    L518
  mov    $0x0,%eax
  call   <abort@plt>
L518:
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdi
  call   <acc_free@plt>
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L241
  mov    $0x0,%eax
  call   <abort@plt>
L241:
  movl   $0x0,-0x6c(%rbp)
  jmp    L1064
L734:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  D466(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  D189(%rip),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x6c(%rbp)
L1064:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L734
  movl   $0x0,-0x54(%rbp)
  jmp    L571
L1901:
  mov    -0x54(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x54(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  D740(%rip),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x54(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x54(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  D861(%rip),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x54(%rbp)
L571:
  mov    -0x54(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L1901
  movl   $0x0,-0x6c(%rbp)
  jmp    L314
L1087:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D189(%rip),%xmm0
  jp     L1334
  ucomiss D189(%rip),%xmm0
  je     L109
L1334:
  mov    $0x0,%eax
  call   <abort@plt>
L109:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D132(%rip),%xmm0
  jp     L983
  ucomiss D132(%rip),%xmm0
  je     L1655
L983:
  mov    $0x0,%eax
  call   <abort@plt>
L1655:
  addl   $0x1,-0x6c(%rbp)
L314:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L1087
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L1536
  mov    $0x0,%eax
  call   <abort@plt>
L1536:
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L1778
  mov    $0x0,%eax
  call   <abort@plt>
L1778:
  movl   $0x0,-0x6c(%rbp)
  jmp    L1410
L1173:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  D189(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  D823(%rip),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x6c(%rbp)
L1410:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L1173
  movl   $0x0,-0x50(%rbp)
  jmp    L257
L652:
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  D740(%rip),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  D861(%rip),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x50(%rbp)
L257:
  mov    -0x50(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L652
  movl   $0x0,-0x6c(%rbp)
  jmp    L434
L1297:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D295(%rip),%xmm0
  jp     L150
  ucomiss D295(%rip),%xmm0
  je     L1887
L150:
  mov    $0x0,%eax
  call   <abort@plt>
L1887:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D532(%rip),%xmm0
  jp     L1307
  ucomiss D532(%rip),%xmm0
  je     L508
L1307:
  mov    $0x0,%eax
  call   <abort@plt>
L508:
  addl   $0x1,-0x6c(%rbp)
L434:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L1297
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L1435
  mov    $0x0,%eax
  call   <abort@plt>
L1435:
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L796
  mov    $0x0,%eax
  call   <abort@plt>
L796:
  movl   $0x0,-0x6c(%rbp)
  jmp    L830
L749:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  D466(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  D823(%rip),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x6c(%rbp)
L830:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L749
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_copyin@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_copyin@plt>
  mov    %rax,-0x8(%rbp)
  movl   $0x0,-0x4c(%rbp)
  jmp    L932
L423:
  mov    -0x4c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x4c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  D740(%rip),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x4c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x4c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  D861(%rip),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x4c(%rbp)
L932:
  mov    -0x4c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L423
  movl   $0x0,-0x6c(%rbp)
  jmp    L964
L1971:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D466(%rip),%xmm0
  jp     L1139
  ucomiss D466(%rip),%xmm0
  je     L969
L1139:
  mov    $0x0,%eax
  call   <abort@plt>
L969:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D823(%rip),%xmm0
  jp     L903
  ucomiss D823(%rip),%xmm0
  je     L435
L903:
  mov    $0x0,%eax
  call   <abort@plt>
L435:
  addl   $0x1,-0x6c(%rbp)
L964:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L1971
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  jne    L82
  mov    $0x0,%eax
  call   <abort@plt>
L82:
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  jne    L1218
  mov    $0x0,%eax
  call   <abort@plt>
L1218:
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <acc_deviceptr@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <acc_unmap_data@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdi
  call   <acc_free@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <acc_deviceptr@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <acc_unmap_data@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdi
  call   <acc_free@plt>
  movl   $0x0,-0x6c(%rbp)
  jmp    L775
L294:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  D466(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  D823(%rip),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x6c(%rbp)
L775:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L294
  movl   $0x0,-0x48(%rbp)
  jmp    L208
L1233:
  mov    -0x48(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x48(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x10(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x48(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x10(%rbp),%rax
  add    %rax,%rdx
  mov    -0x48(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x48(%rbp)
L208:
  mov    -0x48(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L1233
  movl   $0x0,-0x6c(%rbp)
  jmp    L1223
L663:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D466(%rip),%xmm0
  jp     L893
  ucomiss D466(%rip),%xmm0
  je     L1874
L893:
  mov    $0x0,%eax
  call   <abort@plt>
L1874:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D466(%rip),%xmm0
  jp     L1413
  ucomiss D466(%rip),%xmm0
  je     L1662
L1413:
  mov    $0x0,%eax
  call   <abort@plt>
L1662:
  addl   $0x1,-0x6c(%rbp)
L1223:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L663
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L1856
  mov    $0x0,%eax
  call   <abort@plt>
L1856:
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L1563
  mov    $0x0,%eax
  call   <abort@plt>
L1563:
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L2010
  mov    $0x0,%eax
  call   <abort@plt>
L2010:
  movl   $0x0,-0x6c(%rbp)
  jmp    L1775
L1387:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  D189(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  D893(%rip),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x6c(%rbp)
L1775:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L1387
  movl   $0x0,-0x44(%rbp)
  jmp    L1642
L1627:
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x10(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x10(%rbp),%rax
  add    %rax,%rdx
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x44(%rbp)
L1642:
  mov    -0x44(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L1627
  movl   $0x0,-0x6c(%rbp)
  jmp    L1947
L581:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D189(%rip),%xmm0
  jp     L1393
  ucomiss D189(%rip),%xmm0
  je     L1708
L1393:
  mov    $0x0,%eax
  call   <abort@plt>
L1708:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D189(%rip),%xmm0
  jp     L1389
  ucomiss D189(%rip),%xmm0
  je     L493
L1389:
  mov    $0x0,%eax
  call   <abort@plt>
L493:
  addl   $0x1,-0x6c(%rbp)
L1947:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L581
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L178
  mov    $0x0,%eax
  call   <abort@plt>
L178:
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L712
  mov    $0x0,%eax
  call   <abort@plt>
L712:
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L1950
  mov    $0x0,%eax
  call   <abort@plt>
L1950:
  movl   $0x0,-0x6c(%rbp)
  jmp    L206
L1010:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  D861(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  D295(%rip),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x6c(%rbp)
L206:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L1010
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edi
  call   <acc_malloc@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rcx
  mov    -0x10(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <acc_map_data@plt>
  movl   $0x0,-0x40(%rbp)
  jmp    L1674
L1348:
  mov    -0x40(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x40(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x10(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x10(%rbp),%rax
  add    %rax,%rdx
  mov    -0x40(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x40(%rbp)
L1674:
  mov    -0x40(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L1348
  movl   $0x0,-0x6c(%rbp)
  jmp    L1442
L857:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D861(%rip),%xmm0
  jp     L505
  ucomiss D861(%rip),%xmm0
  je     L1820
L505:
  mov    $0x0,%eax
  call   <abort@plt>
L1820:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D861(%rip),%xmm0
  jp     L782
  ucomiss D861(%rip),%xmm0
  je     L912
L782:
  mov    $0x0,%eax
  call   <abort@plt>
L912:
  addl   $0x1,-0x6c(%rbp)
L1442:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L857
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L819
  mov    $0x0,%eax
  call   <abort@plt>
L819:
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L597
  mov    $0x0,%eax
  call   <abort@plt>
L597:
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  jne    L1781
  mov    $0x0,%eax
  call   <abort@plt>
L1781:
  mov    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <acc_deviceptr@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <acc_unmap_data@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdi
  call   <acc_free@plt>
  movl   $0x0,-0x6c(%rbp)
  jmp    L1046
L106:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  D189(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  D893(%rip),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x6c(%rbp)
L1046:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L106
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edi
  call   <acc_malloc@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rcx
  mov    -0x10(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <acc_map_data@plt>
  movl   $0x0,-0x3c(%rbp)
  jmp    L540
L635:
  mov    -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x10(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x10(%rbp),%rax
  add    %rax,%rdx
  mov    -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x3c(%rbp)
L540:
  mov    -0x3c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L635
  movl   $0x0,-0x6c(%rbp)
  jmp    L2008
L1076:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D189(%rip),%xmm0
  jp     L1513
  ucomiss D189(%rip),%xmm0
  je     L411
L1513:
  mov    $0x0,%eax
  call   <abort@plt>
L411:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D189(%rip),%xmm0
  jp     L2000
  ucomiss D189(%rip),%xmm0
  je     L452
L2000:
  mov    $0x0,%eax
  call   <abort@plt>
L452:
  addl   $0x1,-0x6c(%rbp)
L2008:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L1076
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L165
  mov    $0x0,%eax
  call   <abort@plt>
L165:
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L200
  mov    $0x0,%eax
  call   <abort@plt>
L200:
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  jne    L879
  mov    $0x0,%eax
  call   <abort@plt>
L879:
  mov    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <acc_unmap_data@plt>
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L372
  mov    $0x0,%eax
  call   <abort@plt>
L372:
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdi
  call   <acc_free@plt>
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edi
  call   <acc_malloc@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rcx
  mov    -0x10(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <acc_map_data@plt>
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  jne    L527
  mov    $0x0,%eax
  call   <abort@plt>
L527:
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edi
  call   <acc_malloc@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rcx
  mov    -0x18(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <acc_map_data@plt>
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  jne    L408
  mov    $0x0,%eax
  call   <abort@plt>
L408:
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edi
  call   <acc_malloc@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rcx
  mov    -0x20(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <acc_map_data@plt>
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  jne    L1569
  mov    $0x0,%eax
  call   <abort@plt>
L1569:
  movl   $0x0,-0x38(%rbp)
  jmp    L1151
L844:
  mov    -0x38(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  D740(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x38(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movss  D861(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x38(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  D189(%rip),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x38(%rbp)
L1151:
  mov    -0x38(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L844
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  jne    L1472
  mov    $0x0,%eax
  call   <abort@plt>
L1472:
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  jne    L234
  mov    $0x0,%eax
  call   <abort@plt>
L234:
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  jne    L1831
  mov    $0x0,%eax
  call   <abort@plt>
L1831:
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_copyout@plt>
  movl   $0x0,-0x6c(%rbp)
  jmp    L1724
L919:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D189(%rip),%xmm0
  jp     L297
  ucomiss D189(%rip),%xmm0
  je     L1544
L297:
  mov    $0x0,%eax
  call   <abort@plt>
L1544:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D189(%rip),%xmm0
  jp     L255
  ucomiss D189(%rip),%xmm0
  je     L1970
L255:
  mov    $0x0,%eax
  call   <abort@plt>
L1970:
  addl   $0x1,-0x6c(%rbp)
L1724:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L919
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <acc_deviceptr@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <acc_unmap_data@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdi
  call   <acc_free@plt>
  mov    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <acc_deviceptr@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <acc_unmap_data@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdi
  call   <acc_free@plt>
  movl   $0x0,-0x6c(%rbp)
  jmp    L1163
L624:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  D466(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  D132(%rip),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x6c(%rbp)
L1163:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L624
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edi
  call   <acc_malloc@plt>
  mov    %rax,-0x8(%rbp)
  movl   $0x0,-0x34(%rbp)
  jmp    L951
L210:
  mov    -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x8(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x8(%rbp),%rax
  add    %rax,%rdx
  mov    -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x34(%rbp)
L951:
  mov    -0x34(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L210
  movl   $0x0,-0x6c(%rbp)
  jmp    L1916
L755:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D466(%rip),%xmm0
  jp     L714
  ucomiss D466(%rip),%xmm0
  je     L1495
L714:
  mov    $0x0,%eax
  call   <abort@plt>
L1495:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D466(%rip),%xmm0
  jp     L288
  ucomiss D466(%rip),%xmm0
  je     L1837
L288:
  mov    $0x0,%eax
  call   <abort@plt>
L1837:
  addl   $0x1,-0x6c(%rbp)
L1916:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L755
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L455
  mov    $0x0,%eax
  call   <abort@plt>
L455:
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L436
  mov    $0x0,%eax
  call   <abort@plt>
L436:
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdi
  call   <acc_free@plt>
  movl   $0x0,-0x6c(%rbp)
  jmp    L1651
L1131:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  D132(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x6c(%rbp)
L1651:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L1131
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_copyin@plt>
  mov    %rax,-0x8(%rbp)
  movl   $0x0,-0x6c(%rbp)
  jmp    L364
L1746:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  D532(%rip),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x6c(%rbp)
L364:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L1746
  movl   $0x0,-0x30(%rbp)
  jmp    L1070
L745:
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x30(%rbp)
L1070:
  mov    -0x30(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L745
  movl   $0x0,-0x6c(%rbp)
  jmp    L1319
L1678:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D132(%rip),%xmm0
  jp     L1951
  ucomiss D132(%rip),%xmm0
  je     L798
L1951:
  mov    $0x0,%eax
  call   <abort@plt>
L798:
  addl   $0x1,-0x6c(%rbp)
L1319:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L1678
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  jne    L479
  mov    $0x0,%eax
  call   <abort@plt>
L479:
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L535
  mov    $0x0,%eax
  call   <abort@plt>
L535:
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdi
  call   <acc_free@plt>
  movl   $0x0,-0x6c(%rbp)
  jmp    L2029
L1934:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  D132(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x6c(%rbp)
L2029:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L1934
  movl   $0x0,-0x2c(%rbp)
  jmp    L1650
L1526:
  mov    -0x2c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x2c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x2c(%rbp)
L1650:
  mov    -0x2c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L1526
  movl   $0x0,-0x6c(%rbp)
  jmp    L305
L546:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D132(%rip),%xmm0
  jp     L994
  ucomiss D132(%rip),%xmm0
  je     L2027
L994:
  mov    $0x0,%eax
  call   <abort@plt>
L2027:
  addl   $0x1,-0x6c(%rbp)
L305:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L546
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L1433
  mov    $0x0,%eax
  call   <abort@plt>
L1433:
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L1127
  mov    $0x0,%eax
  call   <abort@plt>
L1127:
  movl   $0x0,-0x6c(%rbp)
  jmp    L991
L856:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  D295(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  D823(%rip),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x6c(%rbp)
L991:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L856
  movl   $0x0,-0x28(%rbp)
  jmp    L664
L896:
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x10(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x10(%rbp),%rax
  add    %rax,%rdx
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x28(%rbp)
L664:
  mov    -0x28(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L896
  movl   $0x0,-0x6c(%rbp)
  jmp    L1565
L614:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D295(%rip),%xmm0
  jp     L1305
  ucomiss D295(%rip),%xmm0
  je     L1713
L1305:
  mov    $0x0,%eax
  call   <abort@plt>
L1713:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D295(%rip),%xmm0
  jp     L415
  ucomiss D295(%rip),%xmm0
  je     L629
L415:
  mov    $0x0,%eax
  call   <abort@plt>
L629:
  addl   $0x1,-0x6c(%rbp)
L1565:
  mov    -0x6c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L614
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L1185
  mov    $0x0,%eax
  call   <abort@plt>
L1185:
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L1004
  mov    $0x0,%eax
  call   <abort@plt>
L1004:
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <acc_is_present@plt>
  test   %rax,%rax
  je     L1280
  mov    $0x0,%eax
  call   <abort@plt>
L1280:
  mov    $0x0,%eax
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: label: D466
data_type: f32
name: disassemble_data
arguments: label: D295
data_type: f32
name: disassemble_data
arguments: label: D740
data_type: f32
name: disassemble_data
arguments: label: D132
data_type: f32
name: disassemble_data
arguments: label: D532
data_type: f32
name: disassemble_data
arguments: label: D861
data_type: f32
name: disassemble_data
arguments: label: D189
data_type: f32
name: disassemble_data
arguments: label: D823
data_type: f32
name: disassemble_data
arguments: label: D893
data_type: f32

tool: D466: 3

tool: D295: 5

tool: D740: 1

tool: D132: 6

tool: D532: 9

tool: D861: 2

tool: D189: 4

tool: D823: 7

tool: D893: 8

assistant: ```c
int main(int argc, char **argv) {
  int N = 8;
  float *a, *b, *c, *d;
  int i;
  a = (float *)malloc(N * sizeof(float));
  b = (float *)malloc(N * sizeof(float));
  c = (float *)malloc(N * sizeof(float));
  for (i = 0; i < N; i++) {
    a[i] = 3.0;
    b[i] = 0.0;
  }
#pragma acc data copyin(a [0:N]) copyout(b [0:N])
  {
#pragma acc parallel
    {
      int ii;
      for (ii = 0; ii < N; ii++)
        b[ii] = a[ii];
    }
  }
  for (i = 0; i < N; i++) {
    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 data copyin(a [0:N]) copyout(b [0:N])
  {
#pragma acc parallel
    {
      int ii;
      for (ii = 0; ii < N; ii++)
        b[ii] = a[ii];
    }
  }
  for (i = 0; i < N; i++) {
    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;
  }
  d = (float *)acc_copyin(&a[0], N * sizeof(float));
  for (i = 0; i < N; i++) {
    a[i] = 9.0;
  }
#pragma acc data present_or_copyin(a [0:N]) copyout(b [0:N])
  {
#pragma acc parallel
    {
      int ii;
      for (ii = 0; ii < N; ii++)
        b[ii] = a[ii];
    }
  }
  for (i = 0; i < N; i++) {
    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();
  acc_free(d);
  for (i = 0; i < N; i++) {
    a[i] = 6.0;
    b[i] = 0.0;
  }
#pragma acc data copyin(a [0:N]) present_or_copyout(b [0:N])
  {
#pragma acc parallel
    {
      int ii;
      for (ii = 0; ii < N; ii++)
        b[ii] = a[ii];
    }
  }
  for (i = 0; i < N; i++) {
    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] = 5.0;
    b[i] = 2.0;
  }
  d = (float *)acc_copyin(&b[0], N * sizeof(float));
#pragma acc data copyin(a [0:N]) present_or_copyout(b [0:N])
  {
#pragma acc parallel
    {
      int ii;
      for (ii = 0; ii < N; ii++)
        b[ii] = a[ii];
    }
  }
  for (i = 0; i < N; i++) {
    if (a[i] != 5.0)
      abort();
    if (b[i] != 2.0)
      abort();
  }
  if (acc_is_present(&a[0], (N * sizeof(float))))
    abort();
  if (!acc_is_present(&b[0], (N * sizeof(float))))
    abort();
  acc_free(d);
  if (acc_is_present(&b[0], (N * sizeof(float))))
    abort();
  for (i = 0; i < N; i++) {
    a[i] = 3.0;
    b[i] = 4.0;
  }
#pragma acc data copy(a [0:N]) copyout(b [0:N])
  {
#pragma acc parallel
    {
      int ii;
      for (ii = 0; ii < N; ii++) {
        a[ii] = a[ii] + 1;
        b[ii] = a[ii] + 2;
      }
    }
  }
  for (i = 0; i < N; i++) {
    if (a[i] != 4.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] = 4.0;
    b[i] = 7.0;
  }
#pragma acc data present_or_copy(a [0:N]) present_or_copy(b [0:N])
  {
#pragma acc parallel
    {
      int ii;
      for (ii = 0; ii < N; ii++) {
        a[ii] = a[ii] + 1;
        b[ii] = b[ii] + 2;
      }
    }
  }
  for (i = 0; i < N; i++) {
    if (a[i] != 5.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] = 3.0;
    b[i] = 7.0;
  }
  d = (float *)acc_copyin(&a[0], N * sizeof(float));
  d = (float *)acc_copyin(&b[0], N * sizeof(float));
#pragma acc data present_or_copy(a [0:N]) present_or_copy(b [0:N])
  {
#pragma acc parallel
    {
      int ii;
      for (ii = 0; ii < N; ii++) {
        a[ii] = a[ii] + 1;
        b[ii] = b[ii] + 2;
      }
    }
  }
  for (i = 0; i < N; i++) {
    if (a[i] != 3.0)
      abort();
    if (b[i] != 7.0)
      abort();
  }
  if (!acc_is_present(&a[0], (N * sizeof(float))))
    abort();
  if (!acc_is_present(&b[0], (N * sizeof(float))))
    abort();
  d = (float *)acc_deviceptr(&a[0]);
  acc_unmap_data(&a[0]);
  acc_free(d);
  d = (float *)acc_deviceptr(&b[0]);
  acc_unmap_data(&b[0]);
  acc_free(d);
  for (i = 0; i < N; i++) {
    a[i] = 3.0;
    b[i] = 7.0;
  }
#pragma acc data copyin(a [0:N]) create(c [0:N]) copyout(b [0:N])
  {
#pragma acc parallel
    {
      int ii;
      for (ii = 0; ii < N; ii++) {
        c[ii] = a[ii];
        b[ii] = c[ii];
      }
    }
  }
  for (i = 0; i < N; i++) {
    if (a[i] != 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();
  if (acc_is_present(&c[0], (N * sizeof(float))))
    abort();
  for (i = 0; i < N; i++) {
    a[i] = 4.0;
    b[i] = 8.0;
  }
#pragma acc data copyin(a [0:N]) present_or_create(c [0:N]) copyout(b [0:N])
  {
#pragma acc parallel
    {
      int ii;
      for (ii = 0; ii < N; ii++) {
        c[ii] = a[ii];
        b[ii] = c[ii];
      }
    }
  }
  for (i = 0; i < N; i++) {
    if (a[i] != 4.0)
      abort();
    if (b[i] != 4.0)
      abort();
  }
  if (acc_is_present(&a[0], (N * sizeof(float))))
    abort();
  if (acc_is_present(&b[0], (N * sizeof(float))))
    abort();
  if (acc_is_present(&c[0], (N * sizeof(float))))
    abort();
  for (i = 0; i < N; i++) {
    a[i] = 2.0;
    b[i] = 5.0;
  }
  d = (float *)acc_malloc(N * sizeof(float));
  acc_map_data(c, d, N * sizeof(float));
#pragma acc data copyin(a [0:N]) present_or_create(c [0:N]) copyout(b [0:N])
  {
#pragma acc parallel
    {
      int ii;
      for (ii = 0; ii < N; ii++) {
        c[ii] = a[ii];
        b[ii] = c[ii];
      }
    }
  }
  for (i = 0; i < N; i++) {
    if (a[i] != 2.0)
      abort();
    if (b[i] != 2.0)
      abort();
  }
  if (acc_is_present(a, (N * sizeof(float))))
    abort();
  if (acc_is_present(b, (N * sizeof(float))))
    abort();
  if (!acc_is_present(c, (N * sizeof(float))))
    abort();
  d = (float *)acc_deviceptr(c);
  acc_unmap_data(c);
  acc_free(d);
  for (i = 0; i < N; i++) {
    a[i] = 4.0;
    b[i] = 8.0;
  }
  d = (float *)acc_malloc(N * sizeof(float));
  acc_map_data(c, d, N * sizeof(float));
#pragma acc data copyin(a [0:N]) present(c [0:N]) copyout(b [0:N])
  {
#pragma acc parallel
    {
      int ii;
      for (ii = 0; ii < N; ii++) {
        c[ii] = a[ii];
        b[ii] = c[ii];
      }
    }
  }
  for (i = 0; i < N; i++) {
    if (a[i] != 4.0)
      abort();
    if (b[i] != 4.0)
      abort();
  }
  if (acc_is_present(a, (N * sizeof(float))))
    abort();
  if (acc_is_present(b, (N * sizeof(float))))
    abort();
  if (!acc_is_present(c, (N * sizeof(float))))
    abort();
  acc_unmap_data(c);
  if (acc_is_present(c, (N * sizeof(float))))
    abort();
  acc_free(d);
  d = (float *)acc_malloc(N * sizeof(float));
  acc_map_data(c, d, N * sizeof(float));
  if (!acc_is_present(c, (N * sizeof(float))))
    abort();
  d = (float *)acc_malloc(N * sizeof(float));
  acc_map_data(b, d, N * sizeof(float));
  if (!acc_is_present(b, (N * sizeof(float))))
    abort();
  d = (float *)acc_malloc(N * sizeof(float));
  acc_map_data(a, d, N * sizeof(float));
  if (!acc_is_present(a, (N * sizeof(float))))
    abort();
#pragma acc data present(a [0:N]) present(c [0:N]) present(b [0:N])
  {
#pragma acc parallel
    {
      int ii;
      for (ii = 0; ii < N; ii++) {
        a[ii] = 1.0;
        c[ii] = 2.0;
        b[ii] = 4.0;
      }
    }
  }
  if (!acc_is_present(a, (N * sizeof(float))))
    abort();
  if (!acc_is_present(b, (N * sizeof(float))))
    abort();
  if (!acc_is_present(c, (N * sizeof(float))))
    abort();
  acc_copyout(b, N * sizeof(float));
  for (i = 0; i < N; i++) {
    if (a[i] != 4.0)
      abort();
    if (b[i] != 4.0)
      abort();
  }
  d = (float *)acc_deviceptr(a);
  acc_unmap_data(a);
  acc_free(d);
  d = (float *)acc_deviceptr(c);
  acc_unmap_data(c);
  acc_free(d);
  for (i = 0; i < N; i++) {
    a[i] = 3.0;
    b[i] = 6.0;
  }
  d = (float *)acc_malloc(N * sizeof(float));
#pragma acc parallel copyin(a [0:N]) deviceptr(d) copyout(b [0:N])
  {
    int ii;
    for (ii = 0; ii < N; ii++) {
      d[ii] = a[ii];
      b[ii] = d[ii];
    }
  }
  for (i = 0; i < N; i++) {
    if (a[i] != 3.0)
      abort();
    if (b[i] != 3.0)
      abort();
  }
  if (acc_is_present(a, (N * sizeof(float))))
    abort();
  if (acc_is_present(b, (N * sizeof(float))))
    abort();
  acc_free(d);
  for (i = 0; i < N; i++) {
    a[i] = 6.0;
    b[i] = 0.0;
  }
  d = (float *)acc_copyin(&a[0], N * sizeof(float));
  for (i = 0; i < N; i++) {
    a[i] = 9.0;
  }
#pragma acc data pcopyin(a [0:N]) copyout(b [0:N])
  {
#pragma acc parallel
    {
      int ii;
      for (ii = 0; ii < N; ii++)
        b[ii] = a[ii];
    }
  }
  for (i = 0; i < N; i++) {
    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();
  acc_free(d);
  for (i = 0; i < N; i++) {
    a[i] = 6.0;
    b[i] = 0.0;
  }
#pragma acc data copyin(a [0:N]) pcopyout(b [0:N])
  {
#pragma acc parallel
    {
      int ii;
      for (ii = 0; ii < N; ii++)
        b[ii] = a[ii];
    }
  }
  for (i = 0; i < N; i++) {
    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] = 5.0;
    b[i] = 7.0;
  }
#pragma acc data copyin(a [0:N]) pcreate(c [0:N]) copyout(b [0:N])
  {
#pragma acc parallel
    {
      int ii;
      for (ii = 0; ii < N; ii++) {
        c[ii] = a[ii];
        b[ii] = c[ii];
      }
    }
  }
  for (i = 0; i < N; i++) {
    if (a[i] != 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();
  if (acc_is_present(&c[0], (N * sizeof(float))))
    abort();
  return 0;
}
```