user: 请将以下的汇编代码转换成C语言代码：

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x60,%rsp
  mov    %edi,-0x54(%rbp)
  mov    %rsi,-0x60(%rbp)
  movl   $0x80,-0x30(%rbp)
  mov    -0x30(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,-0x2c(%rbp)
  mov    -0x2c(%rbp),%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x28(%rbp)
  mov    -0x2c(%rbp),%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x20(%rbp)
  mov    -0x2c(%rbp),%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x18(%rbp)
  mov    -0x2c(%rbp),%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x10(%rbp)
  mov    -0x2c(%rbp),%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x8(%rbp)
  movl   $0x0,-0x44(%rbp)
  jmp    L102
L516:
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  D44(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x44(%rbp)
L102:
  mov    -0x44(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L516
  movl   $0x0,-0x44(%rbp)
  jmp    L273
L16:
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x20(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x44(%rbp)
L273:
  mov    -0x44(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L16
  movl   $0x0,-0x44(%rbp)
  jmp    L556
L460:
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D44(%rip),%xmm0
  jp     L240
  ucomiss D44(%rip),%xmm0
  je     L173
L240:
  mov    $0x0,%eax
  call   <abort@plt>
L173:
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D44(%rip),%xmm0
  jp     L282
  ucomiss D44(%rip),%xmm0
  je     L595
L282:
  mov    $0x0,%eax
  call   <abort@plt>
L595:
  addl   $0x1,-0x44(%rbp)
L556:
  mov    -0x44(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L460
  movl   $0x0,-0x44(%rbp)
  jmp    L14
L435:
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  D106(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x44(%rbp)
L14:
  mov    -0x44(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L435
  movl   $0x0,-0x44(%rbp)
  jmp    L15
L520:
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x20(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x44(%rbp)
L15:
  mov    -0x44(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L520
  movl   $0x0,-0x44(%rbp)
  jmp    L587
L164:
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D106(%rip),%xmm0
  jp     L474
  ucomiss D106(%rip),%xmm0
  je     L471
L474:
  mov    $0x0,%eax
  call   <abort@plt>
L471:
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D106(%rip),%xmm0
  jp     L318
  ucomiss D106(%rip),%xmm0
  je     L307
L318:
  mov    $0x0,%eax
  call   <abort@plt>
L307:
  addl   $0x1,-0x44(%rbp)
L587:
  mov    -0x44(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L164
  movl   $0x0,-0x44(%rbp)
  jmp    L407
L97:
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  D44(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x44(%rbp)
L407:
  mov    -0x44(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L97
  movl   $0x0,-0x44(%rbp)
  jmp    L401
L56:
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm1
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mulss  %xmm1,%xmm0
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  divss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x44(%rbp)
L401:
  mov    -0x44(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L56
  movl   $0x0,-0x44(%rbp)
  jmp    L599
L291:
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  movaps %xmm0,%xmm1
  addss  %xmm0,%xmm1
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  addss  %xmm0,%xmm1
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  addss  %xmm1,%xmm0
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  divss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x44(%rbp)
L599:
  mov    -0x44(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L291
  movl   $0x0,-0x44(%rbp)
  jmp    L86
L137:
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm1
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  addss  %xmm1,%xmm0
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  divss  %xmm1,%xmm0
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  subss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x44(%rbp)
L86:
  mov    -0x44(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L137
  movl   $0x0,-0x44(%rbp)
  jmp    L440
L429:
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D44(%rip),%xmm0
  jp     L427
  ucomiss D44(%rip),%xmm0
  je     L78
L427:
  mov    $0x0,%eax
  call   <abort@plt>
L78:
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D25(%rip),%xmm0
  jp     L37
  ucomiss D25(%rip),%xmm0
  je     L193
L37:
  mov    $0x0,%eax
  call   <abort@plt>
L193:
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D297(%rip),%xmm0
  jp     L194
  ucomiss D297(%rip),%xmm0
  je     L245
L194:
  mov    $0x0,%eax
  call   <abort@plt>
L245:
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  movss  D187(%rip),%xmm1
  ucomiss %xmm1,%xmm0
  jp     L286
  movss  D187(%rip),%xmm1
  ucomiss %xmm1,%xmm0
  je     L6
L286:
  mov    $0x0,%eax
  call   <abort@plt>
L6:
  addl   $0x1,-0x44(%rbp)
L440:
  mov    -0x44(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L429
  movl   $0x0,-0x44(%rbp)
  jmp    L559
L11:
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  D106(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x44(%rbp)
L559:
  mov    -0x44(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L11
  movl   $0x0,-0x40(%rbp)
  jmp    L251
L479:
  mov    -0x40(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x40(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm1
  mov    -0x40(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mulss  %xmm1,%xmm0
  mov    -0x40(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x40(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  divss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x40(%rbp)
L251:
  mov    -0x40(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L479
  movl   $0x0,-0x3c(%rbp)
  jmp    L152
L265:
  mov    -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  movaps %xmm0,%xmm1
  addss  %xmm0,%xmm1
  mov    -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  addss  %xmm0,%xmm1
  mov    -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  addss  %xmm1,%xmm0
  mov    -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  divss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x3c(%rbp)
L152:
  mov    -0x3c(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L265
  movl   $0x0,-0x38(%rbp)
  jmp    L130
L94:
  mov    -0x38(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x38(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm1
  mov    -0x38(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  addss  %xmm1,%xmm0
  mov    -0x38(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  divss  %xmm1,%xmm0
  mov    -0x38(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x38(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  subss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x38(%rbp)
L130:
  mov    -0x38(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L94
  movl   $0x0,-0x34(%rbp)
  jmp    L542
L112:
  mov    -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  addss  %xmm0,%xmm1
  mov    -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  addss  %xmm0,%xmm1
  mov    -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mov    -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x34(%rbp)
L542:
  mov    -0x34(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L112
  movl   $0x0,-0x44(%rbp)
  jmp    L276
L149:
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D106(%rip),%xmm0
  jp     L352
  ucomiss D106(%rip),%xmm0
  je     L243
L352:
  mov    $0x0,%eax
  call   <abort@plt>
L243:
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D297(%rip),%xmm0
  jp     L428
  ucomiss D297(%rip),%xmm0
  je     L341
L428:
  mov    $0x0,%eax
  call   <abort@plt>
L341:
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D297(%rip),%xmm0
  jp     L374
  ucomiss D297(%rip),%xmm0
  je     L162
L374:
  mov    $0x0,%eax
  call   <abort@plt>
L162:
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  movss  D187(%rip),%xmm1
  ucomiss %xmm1,%xmm0
  jp     L38
  movss  D187(%rip),%xmm1
  ucomiss %xmm1,%xmm0
  je     L69
L38:
  mov    $0x0,%eax
  call   <abort@plt>
L69:
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  ucomiss D116(%rip),%xmm0
  jp     L337
  ucomiss D116(%rip),%xmm0
  je     L255
L337:
  mov    $0x0,%eax
  call   <abort@plt>
L255:
  addl   $0x1,-0x44(%rbp)
L276:
  mov    -0x44(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L149
  mov    $0x0,%eax
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: label: D44
type: f32
name: retrieve_data
arguments: label: D106
type: f32
name: retrieve_data
arguments: label: D25
type: f32
name: retrieve_data
arguments: label: D297
type: f32
name: retrieve_data
arguments: label: D187
type: f32
name: retrieve_data
arguments: label: D116
type: f32

tool: D44: 3

tool: D106: 2

tool: D25: 9

tool: D297: 4

tool: D187: 1

tool: D116: 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;
}
```