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

```asm
<usage>:
  endbr64
  sub    $0x8,%rsp
  mov    %rdi,%rsi
  test   %rdi,%rdi
  lea    D143(%rip),%rax
  lea    D95(%rip),%rdi
  cmove  %rax,%rsi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D72(%rip),%rdi
  call   <puts@plt>
  lea    D137(%rip),%rdi
  call   <puts@plt>
  lea    D94(%rip),%rdi
  call   <puts@plt>
  lea    D111(%rip),%rdi
  call   <puts@plt>
  lea    D133(%rip),%rdi
  call   <puts@plt>
  lea    D119(%rip),%rdi
  call   <puts@plt>
  lea    D140(%rip),%rdi
  call   <puts@plt>
  lea    D123(%rip),%rdi
  call   <puts@plt>
  lea    D96(%rip),%rdi
  call   <puts@plt>
  lea    D131(%rip),%rdi
  call   <puts@plt>
  lea    D128(%rip),%rdi
  call   <puts@plt>
  lea    D47(%rip),%rdi
  call   <puts@plt>
  lea    D125(%rip),%rdi
  call   <puts@plt>
  lea    D6(%rip),%rdi
  call   <puts@plt>
  mov    $0x2,%edi
  add    $0x8,%rsp
  jmp    1090 <exit@plt>
```

tool_calls: name: parse_data
arguments: tag: D143
type_infered: string
name: parse_data
arguments: tag: D95
type_infered: string
name: parse_data
arguments: tag: D72
type_infered: string
name: parse_data
arguments: tag: D137
type_infered: string
name: parse_data
arguments: tag: D94
type_infered: string
name: parse_data
arguments: tag: D111
type_infered: string
name: parse_data
arguments: tag: D133
type_infered: string
name: parse_data
arguments: tag: D119
type_infered: string
name: parse_data
arguments: tag: D140
type_infered: string
name: parse_data
arguments: tag: D123
type_infered: string
name: parse_data
arguments: tag: D96
type_infered: string
name: parse_data
arguments: tag: D131
type_infered: string
name: parse_data
arguments: tag: D128
type_infered: string
name: parse_data
arguments: tag: D47
type_infered: string
name: parse_data
arguments: tag: D125
type_infered: string
name: parse_data
arguments: tag: D6
type_infered: string

tool: D143: a09

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


tool: D72: Available options are:

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

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

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

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

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

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

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

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

tool: D131:                      for TSC 6809 Assembler compatibility,

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

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

tool: D125: -W ................. suppress warnings

tool: D6: 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);
}
```