user: 下面的汇编指令对应的C源代码是什么：

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  mov    %edi,-0x34(%rbp)
  mov    %rsi,-0x40(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0x30(%rbp)
  jmp    L27
L125:
  mov    -0x30(%rbp),%eax
  cltq
  movb   $0x0,-0x12(%rbp,%rax,1)
  addl   $0x1,-0x30(%rbp)
L27:
  cmpl   $0x9,-0x30(%rbp)
  jle    L125
  movl   $0x0,-0x2c(%rbp)
  jmp    L104
L365:
  mov    -0x2c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x2c(%rbp),%eax
  cltq
  mov    %dl,-0x12(%rbp,%rax,1)
  addl   $0x1,-0x2c(%rbp)
L104:
  cmpl   $0x9,-0x2c(%rbp)
  jle    L365
  movl   $0x0,-0x30(%rbp)
  jmp    L57
L22:
  mov    -0x30(%rbp),%eax
  cltq
  movzbl -0x12(%rbp,%rax,1),%eax
  movsbl %al,%eax
  cmp    %eax,-0x30(%rbp)
  je     L62
  mov    $0x0,%eax
  call   <abort@plt>
L62:
  addl   $0x1,-0x30(%rbp)
L57:
  cmpl   $0x9,-0x30(%rbp)
  jle    L22
  movl   $0x0,-0x30(%rbp)
  jmp    L279
L356:
  mov    -0x30(%rbp),%eax
  cltq
  movb   $0x0,-0x12(%rbp,%rax,1)
  addl   $0x1,-0x30(%rbp)
L279:
  cmpl   $0x9,-0x30(%rbp)
  jle    L356
  movl   $0x0,-0x28(%rbp)
  jmp    L70
L324:
  mov    -0x28(%rbp),%eax
  mov    %eax,%edx
  mov    -0x28(%rbp),%eax
  cltq
  mov    %dl,-0x12(%rbp,%rax,1)
  addl   $0x1,-0x28(%rbp)
L70:
  cmpl   $0x9,-0x28(%rbp)
  jle    L324
  movl   $0x0,-0x30(%rbp)
  jmp    L144
L265:
  mov    -0x30(%rbp),%eax
  cltq
  movzbl -0x12(%rbp,%rax,1),%eax
  movsbl %al,%eax
  cmp    %eax,-0x30(%rbp)
  je     L137
  mov    $0x0,%eax
  call   <abort@plt>
L137:
  addl   $0x1,-0x30(%rbp)
L144:
  cmpl   $0x9,-0x30(%rbp)
  jle    L265
  movl   $0x0,-0x30(%rbp)
  jmp    L35
L316:
  mov    -0x30(%rbp),%eax
  cltq
  movb   $0x0,-0x12(%rbp,%rax,1)
  addl   $0x1,-0x30(%rbp)
L35:
  cmpl   $0x9,-0x30(%rbp)
  jle    L316
  movl   $0x0,-0x24(%rbp)
  jmp    L322
L32:
  mov    -0x24(%rbp),%eax
  mov    %eax,%edx
  mov    -0x24(%rbp),%eax
  cltq
  mov    %dl,-0x12(%rbp,%rax,1)
  addl   $0x1,-0x24(%rbp)
L322:
  cmpl   $0x9,-0x24(%rbp)
  jle    L32
  movl   $0x0,-0x30(%rbp)
  jmp    L100
L164:
  mov    -0x30(%rbp),%eax
  cltq
  movzbl -0x12(%rbp,%rax,1),%eax
  movsbl %al,%eax
  cmp    %eax,-0x30(%rbp)
  je     L128
  mov    $0x0,%eax
  call   <abort@plt>
L128:
  addl   $0x1,-0x30(%rbp)
L100:
  cmpl   $0x9,-0x30(%rbp)
  jle    L164
  movl   $0x0,-0x20(%rbp)
  jmp    L244
L93:
  mov    -0x20(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%eax
  cltq
  mov    %dl,-0x12(%rbp,%rax,1)
  addl   $0x1,-0x20(%rbp)
L244:
  cmpl   $0x9,-0x20(%rbp)
  jle    L93
  movl   $0x0,-0x30(%rbp)
  jmp    L254
L88:
  mov    -0x30(%rbp),%eax
  cltq
  movzbl -0x12(%rbp,%rax,1),%eax
  movsbl %al,%eax
  cmp    %eax,-0x30(%rbp)
  je     L151
  mov    $0x0,%eax
  call   <abort@plt>
L151:
  addl   $0x1,-0x30(%rbp)
L254:
  cmpl   $0x9,-0x30(%rbp)
  jle    L88
  movl   $0x0,-0x30(%rbp)
  jmp    L371
L354:
  mov    -0x30(%rbp),%eax
  cltq
  movb   $0x0,-0x12(%rbp,%rax,1)
  addl   $0x1,-0x30(%rbp)
L371:
  cmpl   $0x9,-0x30(%rbp)
  jle    L354
  movl   $0x0,-0x1c(%rbp)
  jmp    L183
L381:
  mov    -0x1c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  cltq
  mov    %dl,-0x12(%rbp,%rax,1)
  addl   $0x1,-0x1c(%rbp)
L183:
  cmpl   $0x9,-0x1c(%rbp)
  jle    L381
  movl   $0x0,-0x30(%rbp)
  jmp    L382
L271:
  mov    -0x30(%rbp),%eax
  cltq
  movzbl -0x12(%rbp,%rax,1),%eax
  movsbl %al,%eax
  cmp    %eax,-0x30(%rbp)
  je     L386
  mov    $0x0,%eax
  call   <abort@plt>
L386:
  addl   $0x1,-0x30(%rbp)
L382:
  cmpl   $0x9,-0x30(%rbp)
  jle    L271
  movl   $0x0,-0x18(%rbp)
  jmp    L117
L154:
  mov    -0x18(%rbp),%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%eax
  cltq
  mov    %dl,-0x12(%rbp,%rax,1)
  addl   $0x1,-0x18(%rbp)
L117:
  cmpl   $0x9,-0x18(%rbp)
  jle    L154
  movl   $0x0,-0x30(%rbp)
  jmp    L278
L286:
  mov    -0x30(%rbp),%eax
  cltq
  movzbl -0x12(%rbp,%rax,1),%eax
  movsbl %al,%eax
  cmp    %eax,-0x30(%rbp)
  je     L202
  mov    $0x0,%eax
  call   <abort@plt>
L202:
  addl   $0x1,-0x30(%rbp)
L278:
  cmpl   $0x9,-0x30(%rbp)
  jle    L286
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L321
  call   <__stack_chk_fail@plt>
L321:
  leave
  ret
```

assistant: ```c
int main(int argc, char *argv[]) {
  char a[10];
  int i;
  for (i = 0; i < 10; ++i)
    a[i] = 0;
#pragma acc data copy(a)
  {
#pragma acc parallel present(a)
    {
      int j;
      for (j = 0; j < 10; ++j)
        a[j] = j;
    }
  }
  for (i = 0; i < 10; ++i) {
    if (a[i] != i)
      abort();
  }
  for (i = 0; i < 10; ++i)
    a[i] = 0;
#pragma acc data copy(a)
  {
#pragma acc kernels present(a)
    {
      int j;
      for (j = 0; j < 10; ++j)
        a[j] = j;
    }
  }
  for (i = 0; i < 10; ++i) {
    if (a[i] != i)
      abort();
  }
  for (i = 0; i < 10; ++i)
    a[i] = 0;
#pragma acc data copy(a)
  {
#pragma acc data present(a)
    {
#pragma acc parallel present(a)
      {
        int j;
        for (j = 0; j < 10; ++j)
          a[j] = j;
      }
    }
  }
  for (i = 0; i < 10; ++i) {
    if (a[i] != i)
      abort();
  }
#pragma acc data copy(a)
  {
#pragma acc data present(a)
    {
#pragma acc kernels present(a)
      {
        int j;
        for (j = 0; j < 10; ++j)
          a[j] = j;
      }
    }
  }
  for (i = 0; i < 10; ++i) {
    if (a[i] != i)
      abort();
  }
  for (i = 0; i < 10; ++i)
    a[i] = 0;
#pragma acc enter data copyin(a)
#pragma acc data present(a)
  {
#pragma acc parallel present(a)
    {
      int j;
      for (j = 0; j < 10; ++j)
        a[j] = j;
    }
  }
#pragma acc exit data copyout(a)
  for (i = 0; i < 10; ++i) {
    if (a[i] != i)
      abort();
  }
#pragma acc enter data copyin(a)
#pragma acc data present(a)
  {
#pragma acc kernels present(a)
    {
      int j;
      for (j = 0; j < 10; ++j)
        a[j] = j;
    }
  }
#pragma acc exit data copyout(a)
  for (i = 0; i < 10; ++i) {
    if (a[i] != i)
      abort();
  }
  return 0;
}
```