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

```asm
<usage>:
  endbr64
  sub    $0x8,%rsp
  mov    %rdi,%rsi
  test   %rdi,%rdi
  lea    D120(%rip),%rax
  lea    D59(%rip),%rdi
  cmove  %rax,%rsi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D7(%rip),%rdi
  call   <puts@plt>
  lea    D46(%rip),%rdi
  call   <puts@plt>
  lea    D93(%rip),%rdi
  call   <puts@plt>
  lea    D65(%rip),%rdi
  call   <puts@plt>
  lea    D60(%rip),%rdi
  call   <puts@plt>
  lea    D101(%rip),%rdi
  call   <puts@plt>
  lea    D30(%rip),%rdi
  call   <puts@plt>
  lea    D84(%rip),%rdi
  call   <puts@plt>
  lea    D39(%rip),%rdi
  call   <puts@plt>
  lea    D108(%rip),%rdi
  call   <puts@plt>
  lea    D102(%rip),%rdi
  call   <puts@plt>
  lea    D92(%rip),%rdi
  call   <puts@plt>
  lea    D107(%rip),%rdi
  call   <puts@plt>
  lea    D24(%rip),%rdi
  call   <puts@plt>
  mov    $0x2,%edi
  add    $0x8,%rsp
  jmp    1090 <exit@plt>
```

tool_calls: name: retrieve_data
arguments: data_label: D120
type_guessed: string
name: retrieve_data
arguments: data_label: D59
type_guessed: string
name: retrieve_data
arguments: data_label: D7
type_guessed: string
name: retrieve_data
arguments: data_label: D46
type_guessed: string
name: retrieve_data
arguments: data_label: D93
type_guessed: string
name: retrieve_data
arguments: data_label: D65
type_guessed: string
name: retrieve_data
arguments: data_label: D60
type_guessed: string
name: retrieve_data
arguments: data_label: D101
type_guessed: string
name: retrieve_data
arguments: data_label: D30
type_guessed: string
name: retrieve_data
arguments: data_label: D84
type_guessed: string
name: retrieve_data
arguments: data_label: D39
type_guessed: string
name: retrieve_data
arguments: data_label: D108
type_guessed: string
name: retrieve_data
arguments: data_label: D102
type_guessed: string
name: retrieve_data
arguments: data_label: D92
type_guessed: string
name: retrieve_data
arguments: data_label: D107
type_guessed: string
name: retrieve_data
arguments: data_label: D24
type_guessed: string

tool: D120: a09

tool: D59: Usage: %s [-option*] srcname*


tool: D7: Available options are:

tool: D46: -B[objname] ........ output to binary file (default)

tool: D93: -F[objname] ........ output to FLEX binary file

tool: D65: -R[objname] ........ output to FLEX relocatable object file

tool: D60: -S[objname] ........ output to Motorola S51-09 file

tool: D101: -X[objname] ........ output to Intel Hex file

tool: D30: -L[listname] ....... create listing file 

tool: D84: -C ................. suppress code output

tool: D39: -Dsymbol[=value] ... predefines a symbol

tool: D108:                      for TSC 6809 Assembler compatibility,

tool: D102:                      you should only use symbols A through C

tool: D92: -Ooption ........... sets an option (as in OPT pseudoop)

tool: D107: -W ................. suppress warnings

tool: D24: srcname ............ source file name(s)

assistant: ```c
void usage(char *nm) {
  printf("Usage: %s [-option*] srcname*\n", nm ? nm : "a09");
  printf("Available options are:\n");
  printf("-B[objname] ........ output to binary file (default)\n");
  printf("-F[objname] ........ output to FLEX binary file\n");
  printf("-R[objname] ........ output to FLEX relocatable object file\n");
  printf("-S[objname] ........ output to Motorola S51-09 file\n");
  printf("-X[objname] ........ output to Intel Hex file\n");
  printf("-L[listname] ....... create listing file \n");
  printf("-C ................. suppress code output\n");
  printf("-Dsymbol[=value] ... predefines a symbol\n");
  printf("                     for TSC 6809 Assembler compatibility,\n");
  printf("                     you should only use symbols A through C\n");
  printf("-Ooption ........... sets an option (as in OPT pseudoop)\n");
  printf("-W ................. suppress warnings\n");
  printf("srcname ............ source file name(s)\n");
  exit(2);
}
```