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

```asm
<main>:
  endbr64
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x20,%rsp
  mov    %rsi,%rbx
  mov    %fs:0x28,%rax
  mov    %rax,0x18(%rsp)
  xor    %eax,%eax
  cmp    $0x2,%edi
  je     L182
  cmp    $0x3,%edi
  je     L188
L5:
  mov    (%rbx),%rsi
  mov    %rsi,%rcx
  mov    %rsi,%rdx
  lea    D68(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L85:
  mov    0x18(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L84
  mov    $0x0,%eax
  add    $0x20,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
L182:
  mov    0x8(%rsi),%rsi
  lea    D65(%rip),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L5
  call   <CorrectnessTest1@plt>
  mov    %eax,(%rsp)
  mov    $0x0,%eax
  call   <CorrectnessTest2@plt>
  mov    %eax,0x4(%rsp)
  mov    $0x0,%eax
  call   <CorrectnessTest3@plt>
  mov    %eax,0x8(%rsp)
  mov    $0x0,%eax
  call   <CorrectnessTest4@plt>
  mov    %eax,0xc(%rsp)
  mov    $0x0,%eax
  call   <CorrectnessTest5@plt>
  mov    %eax,0x10(%rsp)
  mov    $0x1,%ebx
  mov    %rsp,%r14
  lea    D19(%rip),%r13
  lea    D64(%rip),%r12
  lea    D62(%rip),%rbp
L192:
  cmpl   $0x0,-0x4(%r14,%rbx,4)
  mov    %r12,%rdx
  cmove  %r13,%rdx
  mov    %ebx,%esi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  add    $0x1,%rbx
  cmp    $0x6,%rbx
  jne    L192
  jmp    L85
L188:
  mov    0x8(%rsi),%rsi
  lea    D65(%rip),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L56
  mov    0x8(%rbx),%rsi
  lea    D42(%rip),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L5
  mov    0x10(%rbx),%rdi
  call   <atoi@plt>
  test   %eax,%eax
  jle    L85
  mov    %eax,%edi
  call   <PerformanceTest@plt>
  jmp    L85
L56:
  mov    0x10(%rbx),%rdi
  call   <atoi@plt>
  cmp    $0x1,%eax
  je     L31
  mov    0x10(%rbx),%rdi
  call   <atoi@plt>
  cmp    $0x2,%eax
  je     L198
  mov    0x10(%rbx),%rdi
  call   <atoi@plt>
  cmp    $0x3,%eax
  je     L190
  mov    0x10(%rbx),%rdi
  call   <atoi@plt>
  cmp    $0x4,%eax
  je     L127
  mov    0x10(%rbx),%rdi
  call   <atoi@plt>
  cmp    $0x5,%eax
  jne    L5
  mov    $0x0,%eax
  call   <CorrectnessTest5@plt>
  jmp    L85
L31:
  mov    $0x0,%eax
  call   <CorrectnessTest1@plt>
  jmp    L85
L198:
  mov    $0x0,%eax
  call   <CorrectnessTest2@plt>
  jmp    L85
L190:
  mov    $0x0,%eax
  call   <CorrectnessTest3@plt>
  jmp    L85
L127:
  mov    $0x0,%eax
  call   <CorrectnessTest4@plt>
  jmp    L85
L84:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: data_label: D68
data_type: string
name: unpack_data
arguments: data_label: D65
data_type: string
name: unpack_data
arguments: data_label: D19
data_type: string
name: unpack_data
arguments: data_label: D64
data_type: string
name: unpack_data
arguments: data_label: D62
data_type: string
name: unpack_data
arguments: data_label: D42
data_type: string

tool: D68: Usage:  %s -c      run all the correctness tests
        %s -c 3    run the correctness test 3 (1~5)
        %s -p 2000 run performance test with data set of 2000 users

tool: D65: -c

tool: D19: PASSED

tool: D64: FAILED

tool: D62: Test %d %s


tool: D42: -p

assistant: ```c
int main(int argc, const char *argv[]) {
  int res[5], i;
  if (argc == 2 && strcmp("-c", argv[1]) == 0) {
    res[0] = CorrectnessTest1();
    res[1] = CorrectnessTest2();
    res[2] = CorrectnessTest3();
    res[3] = CorrectnessTest4();
    res[4] = CorrectnessTest5();
    for (i = 0; i < 5; i++)
      printf("Test %d %s\n", i + 1, (res[i] == 0) ? "PASSED" : "FAILED");
    return 0;
  } else if (argc == 3 && strcmp("-c", argv[1]) == 0) {
    if (atoi(argv[2]) == 1)
      CorrectnessTest1();
    else if (atoi(argv[2]) == 2)
      CorrectnessTest2();
    else if (atoi(argv[2]) == 3)
      CorrectnessTest3();
    else if (atoi(argv[2]) == 4)
      CorrectnessTest4();
    else if (atoi(argv[2]) == 5)
      CorrectnessTest5();
    else
      goto error;
    return 0;
  } else if (argc == 3 && strcmp("-p", argv[1]) == 0) {
    int n = atoi(argv[2]);
    if (n > 0)
      PerformanceTest(n);
    return 0;
  }
error:
  printf("Usage:  %s -c      run all the correctness tests\n"
         "        %s -c 3    run the correctness test 3 (1~5)\n"
         "        %s -p 2000 run performance test with data set"
         " of 2000 users",
         argv[0], argv[0], argv[0]);
  return 0;
}
```