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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %edi,-0x14(%rbp)
  mov    %rsi,-0x20(%rbp)
  cmpl   $0x2,-0x14(%rbp)
  jne    L105
  mov    -0x20(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  lea    D4(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L105
  movl   $0x0,-0x8(%rbp)
  jmp    L203
L105:
  movl   $0x1,-0x8(%rbp)
  lea    D7(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L203:
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  call   <md5_self_test@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  je     L28
  mov    -0x4(%rbp),%eax
  jmp    L297
L28:
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  call   <sha1_self_test@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  je     L232
  mov    -0x4(%rbp),%eax
  jmp    L297
L232:
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  call   <sha2_self_test@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  je     L29
  mov    -0x4(%rbp),%eax
  jmp    L297
L29:
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  call   <sha4_self_test@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  je     L76
  mov    -0x4(%rbp),%eax
  jmp    L297
L76:
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  call   <arc4_self_test@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  je     L220
  mov    -0x4(%rbp),%eax
  jmp    L297
L220:
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  call   <des_self_test@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  je     L231
  mov    -0x4(%rbp),%eax
  jmp    L297
L231:
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  call   <aes_self_test@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  je     L247
  mov    -0x4(%rbp),%eax
  jmp    L297
L247:
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  call   <base64_self_test@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  je     L264
  mov    -0x4(%rbp),%eax
  jmp    L297
L264:
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  call   <mpi_self_test@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  je     L293
  mov    -0x4(%rbp),%eax
  jmp    L297
L293:
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  call   <rsa_self_test@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  je     L252
  mov    -0x4(%rbp),%eax
  jmp    L297
L252:
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  call   <x509_self_test@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  je     L22
  mov    -0x4(%rbp),%eax
  jmp    L297
L22:
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  call   <xtea_self_test@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  je     L41
  mov    -0x4(%rbp),%eax
  jmp    L297
L41:
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  call   <camellia_self_test@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  je     L68
  mov    -0x4(%rbp),%eax
  jmp    L297
L68:
  cmpl   $0x0,-0x8(%rbp)
  je     L106
  lea    D24(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L106:
  mov    -0x4(%rbp),%eax
L297:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_label: D4
datatype: string
name: disassemble_data
arguments: data_label: D7
datatype: string
name: disassemble_data
arguments: data_label: D24
datatype: string

tool: D4: -quiet

tool: D7: 


tool: D24:   [ All tests passed ]



assistant: ```c
int main(int argc, char *argv[]) {
  int ret, v;
  if (argc == 2 && strcmp(argv[1], "-quiet") == 0)
    v = 0;
  else {
    v = 1;
    printf("\n");
  }
  if ((ret = md5_self_test(v)) != 0)
    return (ret);
  if ((ret = sha1_self_test(v)) != 0)
    return (ret);
  if ((ret = sha2_self_test(v)) != 0)
    return (ret);
  if ((ret = sha4_self_test(v)) != 0)
    return (ret);
  if ((ret = arc4_self_test(v)) != 0)
    return (ret);
  if ((ret = des_self_test(v)) != 0)
    return (ret);
  if ((ret = aes_self_test(v)) != 0)
    return (ret);
  if ((ret = base64_self_test(v)) != 0)
    return (ret);
  if ((ret = mpi_self_test(v)) != 0)
    return (ret);
  if ((ret = rsa_self_test(v)) != 0)
    return (ret);
  if ((ret = x509_self_test(v)) != 0)
    return (ret);
  if ((ret = xtea_self_test(v)) != 0)
    return (ret);
  if ((ret = camellia_self_test(v)) != 0)
    return (ret);
  if (v != 0) {
    printf("  [ All tests passed ]\n\n");
  }
  return (ret);
}
```