user: Converte this assembly snippet into its equivalent C code:

```asm
<main>:
  endbr64
  push   %r13
  push   %r12
  mov    %rsi,%r12
  push   %rbp
  cmp    $0x1,%edi
  je     L91
  mov    0x8(%rsi),%r13
  mov    %edi,%ebp
  lea    D54(%rip),%rsi
  mov    %r13,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L118
  lea    D129(%rip),%rsi
  mov    %r13,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L58
L118:
  mov    %r12,%rsi
  mov    %ebp,%edi
  pop    %rbp
  pop    %r12
  pop    %r13
  jmp    1160 <command_generate@plt>
L58:
  lea    D59(%rip),%rsi
  mov    %r13,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L1
  lea    D76(%rip),%rsi
  mov    %r13,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L1
  lea    D45(%rip),%rsi
  mov    %r13,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L152
  lea    D14(%rip),%rsi
  mov    %r13,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L194
  lea    D171(%rip),%rsi
  mov    %r13,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L108
  lea    D159(%rip),%rsi
  mov    %r13,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L108
  lea    D60(%rip),%rsi
  mov    %r13,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L137
  lea    D37(%rip),%rsi
  mov    %r13,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L137
  lea    D114(%rip),%rsi
  mov    %r13,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L146
  lea    D152(%rip),%rsi
  mov    %r13,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L195
  lea    D107(%rip),%rsi
  mov    %r13,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L67
  lea    D19(%rip),%rsi
  mov    %r13,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L30
  lea    D151(%rip),%rsi
  mov    %r13,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L16
  lea    D30(%rip),%rsi
  mov    %r13,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L117
  lea    D58(%rip),%rsi
  mov    %r13,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L117
  lea    D112(%rip),%rsi
  mov    %r13,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L27
  lea    D144(%rip),%rsi
  mov    %r13,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L183
L27:
  mov    %r12,%rsi
  mov    %ebp,%edi
  pop    %rbp
  pop    %r12
  pop    %r13
  jmp    11c0 <command_version@plt>
L91:
  pop    %rbp
  mov    $0x1,%edi
  pop    %r12
  pop    %r13
  jmp    11e0 <command_undefined@plt>
L1:
  mov    %r12,%rsi
  mov    %ebp,%edi
  pop    %rbp
  pop    %r12
  pop    %r13
  jmp    1210 <command_sign@plt>
L194:
  mov    %r12,%rsi
  mov    %ebp,%edi
  pop    %rbp
  pop    %r12
  pop    %r13
  jmp    11b0 <command_crack@plt>
L152:
  mov    %r12,%rsi
  mov    %ebp,%edi
  pop    %rbp
  pop    %r12
  pop    %r13
  jmp    11a0 <command_verify@plt>
L108:
  mov    %r12,%rsi
  mov    %ebp,%edi
  pop    %rbp
  pop    %r12
  pop    %r13
  jmp    11f0 <command_benchmark@plt>
L137:
  mov    %r12,%rsi
  mov    %ebp,%edi
  pop    %rbp
  pop    %r12
  pop    %r13
  jmp    11d0 <command_test@plt>
L146:
  mov    %r12,%rsi
  mov    %ebp,%edi
  pop    %rbp
  pop    %r12
  pop    %r13
  jmp    1170 <command_test_generate@plt>
L195:
  mov    %r12,%rsi
  mov    %ebp,%edi
  pop    %rbp
  pop    %r12
  pop    %r13
  jmp    1140 <command_test_verify@plt>
L67:
  mov    %r12,%rsi
  mov    %ebp,%edi
  pop    %rbp
  pop    %r12
  pop    %r13
  jmp    1150 <command_test_compression@plt>
L117:
  mov    %r12,%rsi
  mov    %ebp,%edi
  pop    %rbp
  pop    %r12
  pop    %r13
  jmp    1130 <command_help@plt>
L30:
  mov    %r12,%rsi
  mov    %ebp,%edi
  pop    %rbp
  pop    %r12
  pop    %r13
  jmp    1180 <command_test_number_theory@plt>
L16:
  mov    %r12,%rsi
  mov    %ebp,%edi
  pop    %rbp
  pop    %r12
  pop    %r13
  jmp    1200 <command_test_self@plt>
L183:
  mov    %r12,%rsi
  mov    %ebp,%edi
  pop    %rbp
  pop    %r12
  pop    %r13
  jmp    11e0 <command_undefined@plt>
```

tool_calls: name: parse_data
arguments: label: D54
type_guessed: string
name: parse_data
arguments: label: D129
type_guessed: string
name: parse_data
arguments: label: D59
type_guessed: string
name: parse_data
arguments: label: D76
type_guessed: string
name: parse_data
arguments: label: D45
type_guessed: string
name: parse_data
arguments: label: D14
type_guessed: string
name: parse_data
arguments: label: D171
type_guessed: string
name: parse_data
arguments: label: D159
type_guessed: string
name: parse_data
arguments: label: D60
type_guessed: string
name: parse_data
arguments: label: D37
type_guessed: string
name: parse_data
arguments: label: D114
type_guessed: string
name: parse_data
arguments: label: D152
type_guessed: string
name: parse_data
arguments: label: D107
type_guessed: string
name: parse_data
arguments: label: D19
type_guessed: string
name: parse_data
arguments: label: D151
type_guessed: string
name: parse_data
arguments: label: D30
type_guessed: string
name: parse_data
arguments: label: D58
type_guessed: string
name: parse_data
arguments: label: D112
type_guessed: string
name: parse_data
arguments: label: D144
type_guessed: string

tool: D54: --generate

tool: D129: -g

tool: D59: --sign

tool: D76: -s

tool: D45: --verify

tool: D14: --crack

tool: D171: --benchmark

tool: D159: -b

tool: D60: --test

tool: D37: -t

tool: D114: --test-generate

tool: D152: --test-verify

tool: D107: --test-compression

tool: D19: --test-numbertheory

tool: D151: --test-self

tool: D30: --help

tool: D58: -h

tool: D112: --version

tool: D144: -v

assistant: ```c
int main(int argc, char *argv[]) {
  int return_value = 4;
  if (argc == 1) {
    return_value = command_undefined(argc, argv);
  } else if (!strcmp(argv[1], "--generate") || !strcmp(argv[1], "-g")) {
    return_value = command_generate(argc, argv);
  } else if (!strcmp(argv[1], "--sign") || !strcmp(argv[1], "-s")) {
    return_value = command_sign(argc, argv);
  } else if (!strcmp(argv[1], "--verify")) {
    return_value = command_verify(argc, argv);
  } else if (!strcmp(argv[1], "--crack")) {
    return_value = command_crack(argc, argv);
  } else if (!strcmp(argv[1], "--benchmark") || !strcmp(argv[1], "-b")) {
    return_value = command_benchmark(argc, argv);
  } else if (!strcmp(argv[1], "--test") || !strcmp(argv[1], "-t")) {
    return_value = command_test(argc, argv);
  } else if (!strcmp(argv[1], "--test-generate")) {
    return_value = command_test_generate(argc, argv);
  } else if (!strcmp(argv[1], "--test-verify")) {
    return_value = command_test_verify(argc, argv);
  } else if (!strcmp(argv[1], "--test-compression")) {
    return_value = command_test_compression(argc, argv);
  } else if (!strcmp(argv[1], "--test-numbertheory")) {
    return_value = command_test_number_theory(argc, argv);
  } else if (!strcmp(argv[1], "--test-self")) {
    return_value = command_test_self(argc, argv);
  } else if (!strcmp(argv[1], "--help") || !strcmp(argv[1], "-h")) {
    return_value = command_help(argc, argv);
  } else if (!strcmp(argv[1], "--version") || !strcmp(argv[1], "-v")) {
    return_value = command_version(argc, argv);
  } else {
    return_value = command_undefined(argc, argv);
  }
  return return_value;
}
```