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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  movl   $0x1312d00,-0x2c(%rbp)
  mov    $0x4,%esi
  mov    $0x1312d00,%edi
  call   <calloc@plt>
  mov    %rax,-0x28(%rbp)
  mov    $0x4,%esi
  mov    $0x1312d00,%edi
  call   <calloc@plt>
  mov    %rax,-0x20(%rbp)
  movl   $0x0,-0x30(%rbp)
  jmp    L72
L119:
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movl   $0x1,(%rax)
  mov    -0x30(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,4),%rcx
  mov    -0x28(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rax),%eax
  mov    %eax,(%rdx)
  addl   $0x1,-0x30(%rbp)
L72:
  mov    -0x30(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L119
  mov    $0x0,%eax
  call   <omp_get_wtime@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x18(%rbp)
  movl   $0x0,-0x30(%rbp)
  jmp    L111
L101:
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rsi
  mov    -0x28(%rbp),%rax
  add    %rsi,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  addl   $0x1,-0x30(%rbp)
L111:
  mov    -0x30(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L101
  mov    $0x0,%eax
  call   <omp_get_wtime@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x10(%rbp)
  movsd  -0x10(%rbp),%xmm0
  subsd  -0x18(%rbp),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  mov    -0x8(%rbp),%rdx
  mov    -0x2c(%rbp),%eax
  movq   %rdx,%xmm0
  mov    %eax,%esi
  lea    D1(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x0,-0x30(%rbp)
  jmp    L79
L67:
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movl   $0x1,(%rax)
  mov    -0x30(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,4),%rcx
  mov    -0x28(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rax),%eax
  mov    %eax,(%rdx)
  addl   $0x1,-0x30(%rbp)
L79:
  mov    -0x30(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L67
  mov    $0x0,%eax
  call   <omp_get_wtime@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x18(%rbp)
  movl   $0x0,-0x30(%rbp)
  jmp    L36
L90:
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rsi
  mov    -0x28(%rbp),%rax
  add    %rsi,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  addl   $0x1,-0x30(%rbp)
L36:
  mov    -0x30(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L90
  mov    $0x0,%eax
  call   <omp_get_wtime@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x10(%rbp)
  movsd  -0x10(%rbp),%xmm0
  subsd  -0x18(%rbp),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  mov    -0x8(%rbp),%rdx
  mov    -0x2c(%rbp),%eax
  movq   %rdx,%xmm0
  mov    %eax,%esi
  lea    D15(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x0,-0x30(%rbp)
  jmp    L48
L19:
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movl   $0x1,(%rax)
  mov    -0x30(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,4),%rcx
  mov    -0x28(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rax),%eax
  mov    %eax,(%rdx)
  addl   $0x1,-0x30(%rbp)
L48:
  mov    -0x30(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L19
  mov    $0x0,%eax
  call   <omp_get_wtime@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x18(%rbp)
  movl   $0x0,-0x30(%rbp)
  jmp    L115
L94:
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rsi
  mov    -0x28(%rbp),%rax
  add    %rsi,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  addl   $0x1,-0x30(%rbp)
L115:
  mov    -0x30(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L94
  mov    $0x0,%eax
  call   <omp_get_wtime@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x10(%rbp)
  movsd  -0x10(%rbp),%xmm0
  subsd  -0x18(%rbp),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  mov    -0x8(%rbp),%rdx
  mov    -0x2c(%rbp),%eax
  movq   %rdx,%xmm0
  mov    %eax,%esi
  lea    D24(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: data_tag: D1
type_guessed: string
name: retrieve_data
arguments: data_tag: D15
type_guessed: string
name: retrieve_data
arguments: data_tag: D24
type_guessed: string

tool: D1: Soma de %d numeros e schedule(static) em tempo: %.4f segundos.


tool: D15: Soma de %d numeros e schedule(dynamic) em tempo: %.4f segundos.


tool: D24: Soma de %d numeros e schedule(auto) em tempo: %.4f segundos.


assistant: ```c
int main(void) {
  int N = 20000000;
  double t0, t1, tdelta;
  int *a, *b;
  int i;
  a = (int *)calloc(20000000, sizeof(int));
  b = (int *)calloc(20000000, sizeof(int));
#pragma omp parallel
#pragma omp for
  for (i = 0; i < N; i++)
    a[i] = b[i] = 1;
  t0 = omp_get_wtime();
#pragma omp parallel
#pragma omp for schedule(static)
  for (i = 0; i < N; i++)
    a[i] = a[i] + b[i];
  t1 = omp_get_wtime();
  tdelta = t1 - t0;
  printf("Soma de %d numeros e schedule(static) em tempo: %.4f segundos.\n", N, tdelta);
  for (i = 0; i < N; i++)
    a[i] = b[i] = 1;
  t0 = omp_get_wtime();
#pragma omp parallel
#pragma omp for schedule(dynamic)
  for (i = 0; i < N; i++)
    a[i] = a[i] + b[i];
  t1 = omp_get_wtime();
  tdelta = t1 - t0;
  printf("Soma de %d numeros e schedule(dynamic) em tempo: %.4f segundos.\n", N, tdelta);
  for (i = 0; i < N; i++)
    a[i] = b[i] = 1;
  t0 = omp_get_wtime();
#pragma omp parallel
#pragma omp for schedule(auto)
  for (i = 0; i < N; i++)
    a[i] = a[i] + b[i];
  t1 = omp_get_wtime();
  tdelta = t1 - t0;
  printf("Soma de %d numeros e schedule(auto) em tempo: %.4f segundos.\n", N, tdelta);
  return 0;
}
```