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

```asm
<main>:
  endbr64
  push   %r13
  xor    %edi,%edi
  lea    D93(%rip),%r13
  push   %r12
  lea    D89(%rip),%r12
  push   %rbp
  lea    D77(%rip),%rbp
  push   %rbx
  xor    %ebx,%ebx
  sub    $0x8,%rsp
  call   <time@plt>
  mov    %eax,%edi
  call   <srand@plt>
  xor    %eax,%eax
  call   <print_version@plt>
L53:
  mov    %rbp,%rsi
  mov    %r13,%rdi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <printf@plt>
  xor    %eax,%eax
  call   <benchmark1@plt>
  call   <print_results@plt>
  xor    %eax,%eax
  mov    %ebx,%esi
  mov    %r12,%rdi
  call   <printf@plt>
  cmp    $0x3,%ebx
  jne    L53
  lea    D92(%rip),%r13
L32:
  mov    %rbp,%rsi
  mov    %r13,%rdi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <printf@plt>
  xor    %eax,%eax
  call   <benchmark2@plt>
  call   <print_results@plt>
  xor    %eax,%eax
  mov    %ebx,%esi
  mov    %r12,%rdi
  call   <printf@plt>
  cmp    $0x6,%ebx
  jne    L32
  lea    D91(%rip),%r13
L12:
  mov    %rbp,%rsi
  mov    %r13,%rdi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <printf@plt>
  xor    %eax,%eax
  call   <benchmark3@plt>
  call   <print_results@plt>
  xor    %eax,%eax
  mov    %ebx,%esi
  mov    %r12,%rdi
  call   <printf@plt>
  cmp    $0x9,%ebx
  jne    L12
  lea    D37(%rip),%r13
L78:
  mov    %rbp,%rsi
  mov    %r13,%rdi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <printf@plt>
  xor    %eax,%eax
  call   <benchmark4@plt>
  call   <print_results@plt>
  xor    %eax,%eax
  mov    %ebx,%esi
  mov    %r12,%rdi
  call   <printf@plt>
  cmp    $0xc,%ebx
  jne    L78
  lea    D97(%rip),%r13
L54:
  mov    %rbp,%rsi
  mov    %r13,%rdi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <printf@plt>
  xor    %eax,%eax
  call   <benchmark5@plt>
  call   <print_results@plt>
  xor    %eax,%eax
  mov    %ebx,%esi
  mov    %r12,%rdi
  call   <printf@plt>
  cmp    $0xf,%ebx
  jne    L54
  lea    D1(%rip),%r13
L23:
  mov    %rbp,%rsi
  mov    %r13,%rdi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <printf@plt>
  xor    %eax,%eax
  call   <benchmark6@plt>
  call   <print_results@plt>
  xor    %eax,%eax
  mov    %ebx,%esi
  mov    %r12,%rdi
  call   <printf@plt>
  cmp    $0x12,%ebx
  jne    L23
  lea    D60(%rip),%r13
L47:
  mov    %rbp,%rsi
  mov    %r13,%rdi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <printf@plt>
  xor    %eax,%eax
  call   <benchmark7@plt>
  call   <print_results@plt>
  xor    %eax,%eax
  mov    %ebx,%esi
  mov    %r12,%rdi
  call   <printf@plt>
  cmp    $0x15,%ebx
  jne    L47
  lea    D13(%rip),%r13
L7:
  mov    %rbp,%rsi
  mov    %r13,%rdi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <printf@plt>
  xor    %eax,%eax
  call   <benchmark8@plt>
  call   <print_results@plt>
  xor    %eax,%eax
  mov    %ebx,%esi
  mov    %r12,%rdi
  call   <printf@plt>
  cmp    $0x18,%ebx
  jne    L7
  lea    D78(%rip),%r13
L87:
  mov    %rbp,%rsi
  mov    %r13,%rdi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <printf@plt>
  xor    %eax,%eax
  call   <benchmark9@plt>
  call   <print_results@plt>
  xor    %eax,%eax
  mov    %ebx,%esi
  mov    %r12,%rdi
  call   <printf@plt>
  cmp    $0x1b,%ebx
  jne    L87
  lea    D55(%rip),%r13
L59:
  mov    %rbp,%rsi
  mov    %r13,%rdi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <printf@plt>
  xor    %eax,%eax
  call   <benchmark10@plt>
  call   <print_results@plt>
  xor    %eax,%eax
  mov    %ebx,%esi
  mov    %r12,%rdi
  call   <printf@plt>
  cmp    $0x1e,%ebx
  jne    L59
  mov    $0x1e,%esi
  mov    $0x1e,%edi
  call   <print_summary@plt>
  add    $0x8,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D93
data_type: string
name: extract_symbolic_data
arguments: data_label: D89
data_type: string
name: extract_symbolic_data
arguments: data_label: D77
data_type: string
name: extract_symbolic_data
arguments: data_label: D92
data_type: string
name: extract_symbolic_data
arguments: data_label: D91
data_type: string
name: extract_symbolic_data
arguments: data_label: D37
data_type: string
name: extract_symbolic_data
arguments: data_label: D97
data_type: string
name: extract_symbolic_data
arguments: data_label: D1
data_type: string
name: extract_symbolic_data
arguments: data_label: D60
data_type: string
name: extract_symbolic_data
arguments: data_label: D13
data_type: string
name: extract_symbolic_data
arguments: data_label: D78
data_type: string
name: extract_symbolic_data
arguments: data_label: D55
data_type: string

tool: D93: # c::native::%s::next


tool: D89: ok %d benchmark finished


tool: D77: random/base

tool: D92: # c::native::%s::normalized


tool: D91: # c::native::%s::min


tool: D37: # c::native::%s::max


tool: D97: # c::native::%s::normalized_min


tool: D1: # c::native::%s::normalized_max


tool: D60: # c::native::%s::state_size


tool: D13: # c::native::%s::copy


tool: D78: # c::native::%s::copy_state


tool: D55: # c::native::%s::set


assistant: ```c
int main(void) {
  double elapsed;
  int count;
  int i;
  count = 0;
  srand(time(NULL));
  print_version();
  for (i = 0; i < 3; i++) {
    count += 1;
    printf("# c::native::%s::next\n", "random/base");
    elapsed = benchmark1();
    print_results(elapsed);
    printf("ok %d benchmark finished\n", count);
  }
  for (i = 0; i < 3; i++) {
    count += 1;
    printf("# c::native::%s::normalized\n", "random/base");
    elapsed = benchmark2();
    print_results(elapsed);
    printf("ok %d benchmark finished\n", count);
  }
  for (i = 0; i < 3; i++) {
    count += 1;
    printf("# c::native::%s::min\n", "random/base");
    elapsed = benchmark3();
    print_results(elapsed);
    printf("ok %d benchmark finished\n", count);
  }
  for (i = 0; i < 3; i++) {
    count += 1;
    printf("# c::native::%s::max\n", "random/base");
    elapsed = benchmark4();
    print_results(elapsed);
    printf("ok %d benchmark finished\n", count);
  }
  for (i = 0; i < 3; i++) {
    count += 1;
    printf("# c::native::%s::normalized_min\n", "random/base");
    elapsed = benchmark5();
    print_results(elapsed);
    printf("ok %d benchmark finished\n", count);
  }
  for (i = 0; i < 3; i++) {
    count += 1;
    printf("# c::native::%s::normalized_max\n", "random/base");
    elapsed = benchmark6();
    print_results(elapsed);
    printf("ok %d benchmark finished\n", count);
  }
  for (i = 0; i < 3; i++) {
    count += 1;
    printf("# c::native::%s::state_size\n", "random/base");
    elapsed = benchmark7();
    print_results(elapsed);
    printf("ok %d benchmark finished\n", count);
  }
  for (i = 0; i < 3; i++) {
    count += 1;
    printf("# c::native::%s::copy\n", "random/base");
    elapsed = benchmark8();
    print_results(elapsed);
    printf("ok %d benchmark finished\n", count);
  }
  for (i = 0; i < 3; i++) {
    count += 1;
    printf("# c::native::%s::copy_state\n", "random/base");
    elapsed = benchmark9();
    print_results(elapsed);
    printf("ok %d benchmark finished\n", count);
  }
  for (i = 0; i < 3; i++) {
    count += 1;
    printf("# c::native::%s::set\n", "random/base");
    elapsed = benchmark10();
    print_results(elapsed);
    printf("ok %d benchmark finished\n", count);
  }
  print_summary(count, count);
}
```