user: What would the C source look like for the assembly code provided here:

```asm
<main>:
  endbr64
  push   %r15
  mov    $0x200,%edi
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x58,%rsp
  call   <malloc@plt>
  mov    $0x200,%edi
  mov    %rax,%rbx
  call   <malloc@plt>
  mov    $0x200,%edi
  lea    0x200(%rbx),%rbp
  mov    %rax,%r15
  call   <malloc@plt>
  mov    $0x200,%edi
  mov    %rax,%r12
  call   <malloc@plt>
  mov    $0x200,%edi
  mov    %rax,0x8(%rsp)
  call   <malloc@plt>
  mov    %rax,0x18(%rsp)
  lea    0x4(%rbx),%rax
  mov    %rax,%rcx
  mov    %rax,0x30(%rsp)
  mov    %r15,%rax
  sub    %rcx,%rax
  cmp    $0x8,%rax
  mov    %rax,0x10(%rsp)
  mov    %rbx,%rax
  jbe    L566
  mov    %r15,%rdx
  movaps D199(%rip),%xmm1
  pxor   %xmm0,%xmm0
  sub    %rbx,%rdx
  nopl   0x0(%rax,%rax,1)
L661:
  movups %xmm1,(%rax)
  movups %xmm0,(%rdx,%rax,1)
  add    $0x10,%rax
  cmp    %rbp,%rax
  jne    L661
  mov    %r15,%rdx
  mov    %rbx,%rax
  sub    %rbx,%rdx
  nopl   0x0(%rax)
L905:
  movups (%rax),%xmm4
  movups %xmm4,(%rdx,%rax,1)
  add    $0x10,%rax
  cmp    %rbp,%rax
  jne    L905
L806:
  mov    %r15,%r13
  mov    %rbx,%r14
  sub    %rbx,%r13
  jmp    L265
  nopl   0x0(%rax,%rax,1)
L158:
  movss  (%r14,%r13,1),%xmm0
  ucomiss D199(%rip),%xmm0
  jp     L749
L61:
  jne    L749
  add    $0x4,%r14
  cmp    %rbp,%r14
  je     L114
L265:
  movss  (%r14),%xmm0
  ucomiss D199(%rip),%xmm0
  jp     L622
  je     L158
L622:
  xor    %eax,%eax
  call   <abort@plt>
  movss  (%r14,%r13,1),%xmm0
  ucomiss D199(%rip),%xmm0
  jnp    L61
  nopl   0x0(%rax,%rax,1)
L749:
  xor    %eax,%eax
  add    $0x4,%r14
  call   <abort@plt>
  cmp    %rbp,%r14
  jne    L265
L114:
  cmpq   $0x8,0x10(%rsp)
  mov    %rbx,%rax
  jbe    L320
  movaps D137(%rip),%xmm1
  pxor   %xmm0,%xmm0
  nopw   0x0(%rax,%rax,1)
L933:
  movups %xmm1,(%rax)
  add    $0x10,%rax
  movups %xmm0,-0x10(%rax,%r13,1)
  cmp    %rbp,%rax
  jne    L933
  mov    %rbx,%rax
  nopl   (%rax)
L651:
  movups (%rax),%xmm5
  add    $0x10,%rax
  movups %xmm5,-0x10(%rax,%r13,1)
  cmp    %rbp,%rax
  jne    L651
L533:
  mov    %rbx,%r14
  jmp    L849
  nop
L386:
  movss  (%r14,%r13,1),%xmm0
  ucomiss D137(%rip),%xmm0
  jp     L364
L516:
  jne    L364
  add    $0x4,%r14
  cmp    %rbp,%r14
  je     L593
L849:
  movss  (%r14),%xmm0
  ucomiss D137(%rip),%xmm0
  jp     L461
  je     L386
L461:
  xor    %eax,%eax
  call   <abort@plt>
  movss  (%r14,%r13,1),%xmm0
  ucomiss D137(%rip),%xmm0
  jnp    L516
L364:
  xor    %eax,%eax
  add    $0x4,%r14
  call   <abort@plt>
  cmp    %rbp,%r14
  jne    L849
L593:
  mov    0x8(%rsp),%rcx
  mov    0x30(%rsp),%rax
  mov    %r12,%rsi
  lea    0x4(%r12),%r11
  mov    %r11,0x48(%rsp)
  mov    %rcx,%rdi
  sub    %rax,%rsi
  sub    %rax,%rdi
  cmpq   $0x8,0x10(%rsp)
  mov    %rsi,0x20(%rsp)
  seta   %al
  cmp    $0x8,%rsi
  mov    %rdi,0x28(%rsp)
  lea    0x4(%r15),%rsi
  seta   %dl
  mov    %rsi,0x40(%rsp)
  and    %edx,%eax
  cmp    $0x8,%rdi
  seta   %dl
  and    %edx,%eax
  mov    %eax,%edi
  mov    %al,0x3f(%rsp)
  mov    %r12,%rax
  sub    %rsi,%rax
  cmp    $0x8,%rax
  mov    %rcx,%rax
  seta   0x3c(%rsp)
  sub    %rsi,%rax
  movzbl 0x3c(%rsp),%edx
  cmp    $0x8,%rax
  mov    %rcx,%rax
  seta   0x3d(%rsp)
  sub    %r11,%rax
  movzbl 0x3d(%rsp),%esi
  cmp    $0x8,%rax
  mov    %edi,%eax
  seta   0x3e(%rsp)
  and    %edx,%eax
  movzbl 0x3e(%rsp),%r11d
  test   %al,%sil
  mov    %rbx,%rax
  je     L134
  test   %r11b,%r11b
  je     L134
  mov    %r12,%rsi
  sub    %rbx,%rcx
  movaps D199(%rip),%xmm1
  pxor   %xmm0,%xmm0
  sub    %rbx,%rsi
  mov    %rcx,%rdx
  nopl   0x0(%rax)
L750:
  movups %xmm1,(%rax)
  movups %xmm0,(%rax,%r13,1)
  movups %xmm0,(%rsi,%rax,1)
  movups %xmm0,(%rdx,%rax,1)
  add    $0x10,%rax
  cmp    %rbp,%rax
  jne    L750
L694:
  cmpq   $0x8,0x10(%rsp)
  mov    %rbx,%rax
  jbe    L416
L557:
  movups (%rax),%xmm1
  add    $0x10,%rax
  movaps %xmm1,%xmm0
  mulps  %xmm1,%xmm0
  mulps  %xmm1,%xmm0
  divps  %xmm1,%xmm0
  movups %xmm0,-0x10(%rax,%r13,1)
  cmp    %rbp,%rax
  jne    L557
L381:
  mov    %r12,%rdx
  mov    %rbx,%rax
  sub    %rbx,%rdx
  cmpq   $0x8,0x20(%rsp)
  jbe    L97
  nopl   0x0(%rax,%rax,1)
L927:
  movups (%rax),%xmm1
  movaps %xmm1,%xmm0
  addps  %xmm1,%xmm0
  addps  %xmm1,%xmm0
  addps  %xmm1,%xmm0
  divps  %xmm1,%xmm0
  movups %xmm0,(%rdx,%rax,1)
  add    $0x10,%rax
  cmp    %rbp,%rax
  jne    L927
L730:
  mov    0x8(%rsp),%rdx
  mov    %rbx,%rax
  sub    %rbx,%rdx
  cmpq   $0x8,0x28(%rsp)
  jbe    L290
  xchg   %ax,%ax
L963:
  movups (%rax),%xmm1
  movaps %xmm1,%xmm0
  mulps  %xmm1,%xmm0
  addps  %xmm1,%xmm0
  divps  %xmm1,%xmm0
  subps  %xmm1,%xmm0
  movups %xmm0,(%rdx,%rax,1)
  add    $0x10,%rax
  cmp    %rbp,%rax
  jne    L963
L244:
  mov    0x8(%rsp),%r15
  mov    %rbx,%r14
  sub    %rbx,%r12
  jmp    L258
  nopl   0x0(%rax)
L494:
  movss  (%r14,%r13,1),%xmm0
  ucomiss D132(%rip),%xmm0
  jp     L224
L237:
  jne    L224
  movss  (%r14,%r12,1),%xmm0
  ucomiss D232(%rip),%xmm0
  jp     L541
L969:
  jne    L541
L967:
  mov    %r15,%rdx
  movss  D126(%rip),%xmm2
  sub    %rbx,%rdx
  ucomiss (%rdx,%r14,1),%xmm2
  jp     L811
  jne    L811
  add    $0x4,%r14
  cmp    %rbp,%r14
  je     L633
L258:
  movss  (%r14),%xmm0
  ucomiss D199(%rip),%xmm0
  jp     L194
  je     L494
L194:
  xor    %eax,%eax
  call   <abort@plt>
  movss  (%r14,%r13,1),%xmm0
  ucomiss D132(%rip),%xmm0
  jnp    L237
  nopl   0x0(%rax)
L224:
  xor    %eax,%eax
  call   <abort@plt>
  movss  (%r14,%r12,1),%xmm0
  ucomiss D232(%rip),%xmm0
  jnp    L969
  xchg   %ax,%ax
L541:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L967
  nopl   0x0(%rax)
L416:
  movss  (%rax),%xmm1
  add    $0x4,%rax
  movaps %xmm1,%xmm0
  mulss  %xmm1,%xmm0
  mulss  %xmm1,%xmm0
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x4(%rax,%r13,1)
  cmp    %rbp,%rax
  jne    L416
  jmp    L381
  nopl   0x0(%rax,%rax,1)
L97:
  movss  (%rax),%xmm1
  movaps %xmm1,%xmm0
  addss  %xmm1,%xmm0
  addss  %xmm1,%xmm0
  addss  %xmm1,%xmm0
  divss  %xmm1,%xmm0
  movss  %xmm0,(%rdx,%rax,1)
  add    $0x4,%rax
  cmp    %rbp,%rax
  jne    L97
  jmp    L730
  nopw   0x0(%rax,%rax,1)
L290:
  movss  (%rax),%xmm1
  movaps %xmm1,%xmm0
  mulss  %xmm1,%xmm0
  addss  %xmm1,%xmm0
  divss  %xmm1,%xmm0
  subss  %xmm1,%xmm0
  movss  %xmm0,(%rdx,%rax,1)
  add    $0x4,%rax
  cmp    %rbp,%rax
  jne    L290
  jmp    L244
  nopw   0x0(%rax,%rax,1)
L811:
  xor    %eax,%eax
  add    $0x4,%r14
  mov    %rdx,(%rsp)
  call   <abort@plt>
  mov    (%rsp),%rdx
  cmp    %rbp,%r14
  jne    L258
L633:
  mov    0x18(%rsp),%rsi
  mov    %rdx,%r15
  mov    0x8(%rsp),%rcx
  mov    %rsi,%rax
  sub    0x30(%rsp),%rax
  cmp    $0x8,%rax
  mov    %rsi,%rax
  seta   %dl
  sub    0x40(%rsp),%rax
  cmp    $0x8,%rax
  mov    %rsi,%rax
  seta   %r8b
  sub    0x48(%rsp),%rax
  cmp    $0x8,%rax
  mov    %rsi,%rax
  seta   %dil
  add    $0x4,%rcx
  sub    %rcx,%rax
  cmp    $0x8,%rax
  movzbl 0x3f(%rsp),%eax
  seta   %r9b
  and    %edx,%eax
  and    0x3c(%rsp),%al
  and    0x3d(%rsp),%al
  and    %r8d,%eax
  and    0x3e(%rsp),%al
  test   %dil,%al
  mov    %rbx,%rax
  je     L663
  test   %r9b,%r9b
  je     L663
  sub    %rbx,%rsi
  movaps D137(%rip),%xmm1
  pxor   %xmm0,%xmm0
  mov    %rsi,%r10
  cs nopw 0x0(%rax,%rax,1)
L19:
  movups %xmm1,(%rax)
  movups %xmm0,(%rax,%r13,1)
  movups %xmm0,(%rax,%r12,1)
  movups %xmm0,(%r15,%rax,1)
  movups %xmm0,(%r10,%rax,1)
  add    $0x10,%rax
  cmp    %rbp,%rax
  jne    L19
L532:
  cmpq   $0x8,0x10(%rsp)
  mov    %rbx,%rax
  jbe    L414
  nop
L218:
  movups (%rax),%xmm1
  add    $0x10,%rax
  movaps %xmm1,%xmm0
  mulps  %xmm1,%xmm0
  mulps  %xmm1,%xmm0
  divps  %xmm1,%xmm0
  movups %xmm0,-0x10(%rax,%r13,1)
  cmp    %rbp,%rax
  jne    L218
L672:
  cmpq   $0x8,0x20(%rsp)
  mov    %rbx,%rax
  jbe    L506
  nopl   (%rax)
L243:
  movups (%rax),%xmm1
  add    $0x10,%rax
  movaps %xmm1,%xmm0
  addps  %xmm1,%xmm0
  addps  %xmm1,%xmm0
  addps  %xmm1,%xmm0
  divps  %xmm1,%xmm0
  movups %xmm0,-0x10(%rax,%r12,1)
  cmp    %rbp,%rax
  jne    L243
L478:
  cmpq   $0x8,0x28(%rsp)
  mov    %rbx,%rax
  jbe    L652
L146:
  movups (%rax),%xmm1
  add    $0x10,%rax
  movaps %xmm1,%xmm0
  mulps  %xmm1,%xmm0
  addps  %xmm1,%xmm0
  divps  %xmm1,%xmm0
  subps  %xmm1,%xmm0
  movups %xmm0,-0x10(%rax,%r15,1)
  cmp    %rbp,%rax
  jne    L146
L857:
  and    %r8d,%edx
  test   %dil,%dl
  je     L29
  test   %r9b,%r9b
  je     L29
  mov    0x18(%rsp),%rdx
  mov    %rbx,%rax
  sub    %rbx,%rdx
  nopl   0x0(%rax)
L493:
  movups (%rax,%r13,1),%xmm0
  movups (%rax),%xmm6
  movups (%rax,%r12,1),%xmm7
  movups (%rax,%r15,1),%xmm4
  addps  %xmm6,%xmm0
  addps  %xmm7,%xmm0
  addps  %xmm4,%xmm0
  movups %xmm0,(%rdx,%rax,1)
  add    $0x10,%rax
  cmp    %rbp,%rax
  jne    L493
L365:
  mov    0x18(%rsp),%r14
  sub    %rbx,%r14
  jmp    L268
  nopw   0x0(%rax,%rax,1)
L495:
  movss  (%rbx,%r13,1),%xmm0
  ucomiss D232(%rip),%xmm0
  jp     L99
L156:
  jne    L99
  movss  (%rbx,%r12,1),%xmm0
  ucomiss D232(%rip),%xmm0
  jp     L162
L212:
  jne    L162
  movss  D126(%rip),%xmm3
  ucomiss (%r15,%rbx,1),%xmm3
  jp     L398
L759:
  jne    L398
  movss  (%r14,%rbx,1),%xmm0
  ucomiss D279(%rip),%xmm0
  jp     L150
L942:
  jne    L150
  add    $0x4,%rbx
  cmp    %rbp,%rbx
  je     L862
L268:
  movss  (%rbx),%xmm0
  ucomiss D137(%rip),%xmm0
  jp     L292
  je     L495
L292:
  xor    %eax,%eax
  call   <abort@plt>
  movss  (%rbx,%r13,1),%xmm0
  ucomiss D232(%rip),%xmm0
  jnp    L156
  nopw   0x0(%rax,%rax,1)
L99:
  xor    %eax,%eax
  call   <abort@plt>
  movss  (%rbx,%r12,1),%xmm0
  ucomiss D232(%rip),%xmm0
  jnp    L212
  nopw   0x0(%rax,%rax,1)
L162:
  xor    %eax,%eax
  call   <abort@plt>
  movss  D126(%rip),%xmm3
  ucomiss (%r15,%rbx,1),%xmm3
  jnp    L759
  nopw   0x0(%rax,%rax,1)
L398:
  xor    %eax,%eax
  call   <abort@plt>
  movss  (%r14,%rbx,1),%xmm0
  ucomiss D279(%rip),%xmm0
  jnp    L942
  nopw   0x0(%rax,%rax,1)
L150:
  xor    %eax,%eax
  add    $0x4,%rbx
  call   <abort@plt>
  cmp    %rbp,%rbx
  jne    L268
L862:
  add    $0x58,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   (%rax)
L414:
  movss  (%rax),%xmm1
  add    $0x4,%rax
  movaps %xmm1,%xmm0
  mulss  %xmm1,%xmm0
  mulss  %xmm1,%xmm0
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x4(%rax,%r13,1)
  cmp    %rbp,%rax
  jne    L414
  jmp    L672
L506:
  movss  (%rax),%xmm1
  add    $0x4,%rax
  movaps %xmm1,%xmm0
  addss  %xmm1,%xmm0
  addss  %xmm1,%xmm0
  addss  %xmm1,%xmm0
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x4(%rax,%r12,1)
  cmp    %rbp,%rax
  jne    L506
  jmp    L478
  nopl   0x0(%rax)
L652:
  movss  (%rax),%xmm1
  add    $0x4,%rax
  movaps %xmm1,%xmm0
  mulss  %xmm1,%xmm0
  addss  %xmm1,%xmm0
  divss  %xmm1,%xmm0
  subss  %xmm1,%xmm0
  movss  %xmm0,-0x4(%rax,%r15,1)
  cmp    %rbp,%rax
  jne    L652
  jmp    L857
L566:
  mov    %r15,%rdx
  movss  D199(%rip),%xmm0
  sub    %rbx,%rdx
  nopw   0x0(%rax,%rax,1)
L216:
  movss  %xmm0,(%rax)
  movl   $0x0,(%rdx,%rax,1)
  add    $0x4,%rax
  cmp    %rbp,%rax
  jne    L216
  mov    %r15,%rdx
  mov    %rbx,%rax
  sub    %rbx,%rdx
  nopl   (%rax)
L958:
  movss  (%rax),%xmm0
  movss  %xmm0,(%rdx,%rax,1)
  add    $0x4,%rax
  cmp    %rbp,%rax
  jne    L958
  jmp    L806
L29:
  mov    0x18(%rsp),%rdx
  mov    %rbx,%rax
  sub    %rbx,%rdx
  nopw   0x0(%rax,%rax,1)
L772:
  movss  (%rax,%r13,1),%xmm0
  addss  (%rax),%xmm0
  addss  (%rax,%r12,1),%xmm0
  addss  (%r15,%rax,1),%xmm0
  movss  %xmm0,(%rdx,%rax,1)
  add    $0x4,%rax
  cmp    %rbp,%rax
  jne    L772
  jmp    L365
L663:
  mov    0x18(%rsp),%r10
  movss  D137(%rip),%xmm0
  sub    %rbx,%r10
  nopl   0x0(%rax)
L23:
  movss  %xmm0,(%rax)
  movl   $0x0,(%rax,%r13,1)
  movl   $0x0,(%rax,%r12,1)
  movl   $0x0,(%rax,%r15,1)
  movl   $0x0,(%r10,%rax,1)
  add    $0x4,%rax
  cmp    %rbp,%rax
  jne    L23
  jmp    L532
L134:
  mov    0x8(%rsp),%rdx
  mov    %r12,%rsi
  movss  D199(%rip),%xmm0
  sub    %rbx,%rsi
  sub    %rbx,%rdx
L778:
  movss  %xmm0,(%rax)
  movl   $0x0,(%rax,%r13,1)
  movl   $0x0,(%rsi,%rax,1)
  movl   $0x0,(%rdx,%rax,1)
  add    $0x4,%rax
  cmp    %rbp,%rax
  jne    L778
  jmp    L694
L320:
  movss  D137(%rip),%xmm0
L64:
  movss  %xmm0,(%rax)
  add    $0x4,%rax
  movl   $0x0,-0x4(%rax,%r13,1)
  cmp    %rbp,%rax
  jne    L64
  mov    %rbx,%rax
  nopl   0x0(%rax)
L322:
  movss  (%rax),%xmm0
  add    $0x4,%rax
  movss  %xmm0,-0x4(%rax,%r13,1)
  cmp    %rbp,%rax
  jne    L322
  jmp    L533
```

tool_calls: name: unpack_data
arguments: data_tag: D199
type_infered: f32[4]
name: unpack_data
arguments: data_tag: D137
type_infered: f32[4]
name: unpack_data
arguments: data_tag: D132
type_infered: f32
name: unpack_data
arguments: data_tag: D232
type_infered: f32
name: unpack_data
arguments: data_tag: D126
type_infered: f32
name: unpack_data
arguments: data_tag: D279
type_infered: f32

tool: {"D199": [3.0,3.0,3.0,3.0]}

tool: {"D137": [2.0,2.0,2.0,2.0]}

tool: D132: 9

tool: D232: 4

tool: D126: 1

tool: D279: 11

assistant: ```c
int main(int argc, char **argv) {
  int N = 128;
  float *a, *b, *c, *d, *e;
  int i;
  int nbytes;
  nbytes = N * sizeof(float);
  a = (float *)malloc(nbytes);
  b = (float *)malloc(nbytes);
  c = (float *)malloc(nbytes);
  d = (float *)malloc(nbytes);
  e = (float *)malloc(nbytes);
  for (i = 0; i < N; i++) {
    a[i] = 3.0;
    b[i] = 0.0;
  }
#pragma acc enter data copyin(a [0:N]) copyin(b [0:N]) copyin(N) async
#pragma acc parallel async wait
#pragma acc loop
  for (i = 0; i < N; i++)
    b[i] = a[i];
#pragma acc update host(a [0:N], b [0:N]) async wait
#pragma acc wait
  for (i = 0; i < N; i++) {
    if (a[i] != 3.0)
      abort();
    if (b[i] != 3.0)
      abort();
  }
  for (i = 0; i < N; i++) {
    a[i] = 2.0;
    b[i] = 0.0;
  }
#pragma acc update device(a [0:N], b [0:N]) async(1)
#pragma acc parallel async(1)
#pragma acc loop
  for (i = 0; i < N; i++)
    b[i] = a[i];
#pragma acc update host(a [0:N], b [0:N]) async(1) wait(1)
#pragma acc wait(1)
  for (i = 0; i < N; i++) {
    if (a[i] != 2.0)
      abort();
    if (b[i] != 2.0)
      abort();
  }
  for (i = 0; i < N; i++) {
    a[i] = 3.0;
    b[i] = 0.0;
    c[i] = 0.0;
    d[i] = 0.0;
  }
#pragma acc update device(a [0:N]) async(1)
#pragma acc update device(b [0:N]) async(2)
#pragma acc enter data copyin(c [0:N], d [0:N]) async(3)
#pragma acc parallel async(1) wait(1, 2)
#pragma acc loop
  for (i = 0; i < N; i++)
    b[i] = (a[i] * a[i] * a[i]) / a[i];
#pragma acc parallel async(2) wait(1, 3)
#pragma acc loop
  for (i = 0; i < N; i++)
    c[i] = (a[i] + a[i] + a[i] + a[i]) / a[i];
#pragma acc parallel async(3) wait(1, 3)
#pragma acc loop
  for (i = 0; i < N; i++)
    d[i] = ((a[i] * a[i] + a[i]) / a[i]) - a[i];
#pragma acc update host(a [0:N], b [0:N], c [0:N], d [0:N]) async(1) wait(1, 2, 3)
#pragma acc wait(1)
  for (i = 0; i < N; i++) {
    if (a[i] != 3.0)
      abort();
    if (b[i] != 9.0)
      abort();
    if (c[i] != 4.0)
      abort();
    if (d[i] != 1.0)
      abort();
  }
  for (i = 0; i < N; i++) {
    a[i] = 2.0;
    b[i] = 0.0;
    c[i] = 0.0;
    d[i] = 0.0;
    e[i] = 0.0;
  }
#pragma acc update device(a [0:N], b [0:N], c [0:N], d [0:N]) async(1)
#pragma acc enter data copyin(e [0:N]) async(5)
#pragma acc parallel async(1) wait(1)
  for (int ii = 0; ii < N; ii++)
    b[ii] = (a[ii] * a[ii] * a[ii]) / a[ii];
#pragma acc parallel async(2) wait(1)
  for (int ii = 0; ii < N; ii++)
    c[ii] = (a[ii] + a[ii] + a[ii] + a[ii]) / a[ii];
#pragma acc parallel async(3) wait(1)
  for (int ii = 0; ii < N; ii++)
    d[ii] = ((a[ii] * a[ii] + a[ii]) / a[ii]) - a[ii];
#pragma acc parallel wait(1, 5) async(4)
  for (int ii = 0; ii < N; ii++)
    e[ii] = a[ii] + b[ii] + c[ii] + d[ii];
#pragma acc exit data copyout(a [0:N]) copyout(b [0:N]) copyout(c [0:N]) copyout(d [0:N]) copyout(e [0:N]) wait(1, 2, 3, 4) async(1)
#pragma acc exit data delete (N)
#pragma acc wait(1)
  for (i = 0; i < N; i++) {
    if (a[i] != 2.0)
      abort();
    if (b[i] != 4.0)
      abort();
    if (c[i] != 4.0)
      abort();
    if (d[i] != 1.0)
      abort();
    if (e[i] != 11.0)
      abort();
  }
  return 0;
}
```