user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x350,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0x340(%rbp)
  movl   $0x0,-0x344(%rbp)
  jmp    L81
L137:
  mov    -0x344(%rbp),%eax
  cltq
  movl   $0xffffffff,-0x330(%rbp,%rax,4)
  mov    -0x344(%rbp),%eax
  cltq
  mov    -0x330(%rbp,%rax,4),%edx
  mov    -0x344(%rbp),%eax
  cltq
  mov    %edx,-0x1a0(%rbp,%rax,4)
  addl   $0x1,-0x344(%rbp)
L81:
  cmpl   $0x63,-0x344(%rbp)
  jle    L137
  movl   $0x0,-0x33c(%rbp)
  jmp    L2
L73:
  mov    -0x33c(%rbp),%eax
  cltq
  mov    -0x33c(%rbp),%edx
  mov    %edx,-0x330(%rbp,%rax,4)
  addl   $0x1,-0x33c(%rbp)
L2:
  cmpl   $0x63,-0x33c(%rbp)
  jle    L73
  movl   $0x0,-0x344(%rbp)
  jmp    L133
L120:
  mov    -0x344(%rbp),%eax
  cltq
  mov    -0x344(%rbp),%edx
  mov    %edx,-0x1a0(%rbp,%rax,4)
  addl   $0x1,-0x344(%rbp)
L133:
  cmpl   $0x63,-0x344(%rbp)
  jle    L120
  movl   $0xffffffff,-0x338(%rbp)
  movl   $0xffffffff,-0x334(%rbp)
  movl   $0x0,-0x344(%rbp)
  jmp    L10
L49:
  mov    -0x344(%rbp),%eax
  cltq
  mov    -0x330(%rbp,%rax,4),%edx
  mov    -0x344(%rbp),%eax
  cltq
  mov    -0x1a0(%rbp,%rax,4),%eax
  cmp    %eax,%edx
  je     L64
  cmpl   $0xffffffff,-0x338(%rbp)
  jne    L87
  mov    -0x344(%rbp),%eax
  mov    %eax,-0x338(%rbp)
L87:
  mov    -0x344(%rbp),%eax
  mov    %eax,-0x334(%rbp)
  addl   $0x1,-0x340(%rbp)
L64:
  addl   $0x1,-0x344(%rbp)
L10:
  cmpl   $0x63,-0x344(%rbp)
  jle    L49
  cmpl   $0x0,-0x340(%rbp)
  je     L78
  cmpl   $0x1,-0x340(%rbp)
  jne    L95
  mov    -0x338(%rbp),%eax
  cltq
  mov    -0x1a0(%rbp,%rax,4),%ecx
  mov    -0x338(%rbp),%eax
  cltq
  mov    -0x330(%rbp,%rax,4),%edx
  mov    -0x338(%rbp),%eax
  mov    %eax,%esi
  lea    D27(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L126
L95:
  mov    -0x338(%rbp),%eax
  cltq
  mov    -0x1a0(%rbp,%rax,4),%ecx
  mov    -0x338(%rbp),%eax
  cltq
  mov    -0x330(%rbp,%rax,4),%edx
  mov    -0x340(%rbp),%esi
  mov    -0x338(%rbp),%eax
  mov    %esi,%r8d
  mov    %eax,%esi
  lea    D22(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x334(%rbp),%eax
  cltq
  mov    -0x1a0(%rbp,%rax,4),%ecx
  mov    -0x334(%rbp),%eax
  cltq
  mov    -0x330(%rbp,%rax,4),%edx
  mov    -0x340(%rbp),%esi
  mov    -0x334(%rbp),%eax
  mov    %esi,%r8d
  mov    %eax,%esi
  lea    D7(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L126:
  mov    $0x0,%eax
  jmp    L91
L78:
  mov    -0x340(%rbp),%eax
  mov    %eax,%esi
  lea    D24(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x340(%rbp),%eax
L91:
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L63
  call   <__stack_chk_fail@plt>
L63:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D27
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D22
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D7
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D24
type_infered: string

tool: D27: one mismatch: [index:%d]: a %d != %d


tool: D22: first mismatch: [index:%d]: a %d != %d (total errors: %d)


tool: D7: last mismatch: [index:%d]: a %d != %d (total errors %d)


tool: D24: Done with %d errors


assistant: ```c
int main() {
  int a[100], aa[100];
  int i, error = 0;
  for (i = 0; i < 100; i++)
    aa[i] = a[i] = -1;
#pragma omp target map(tofrom : a [0:100])
  {
    int k;
#pragma omp simd
    for (k = 0; k < 100; k++)
      a[k] = k;
  }
  for (i = 0; i < 100; i++)
    aa[i] = i;
  int first = -1;
  int last = -1;
  for (i = 0; i < 100; i++) {
    if (a[i] != aa[i]) {
      if (first == -1)
        first = i;
      last = i;
      ++error;
    }
  }
  if (error) {
    if (error == 1)
      printf("one mismatch: [index:%d]: a %d != %d\n", first, a[first], aa[first]);
    else {
      printf("first mismatch: [index:%d]: a %d != %d (total errors: %d)\n", first, a[first], aa[first], error);
      printf("last mismatch: [index:%d]: a %d != %d (total errors %d)\n", last, a[last], aa[last], error);
    }
    return 0;
  }
  printf("Done with %d errors\n", error);
  return error;
}
```