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

```asm
<usage>:
  endbr64
  sub    $0x8,%rsp
  lea    D76(%rip),%rdi
  call   <printf@plt>
  lea    D59(%rip),%rdi
  call   <printf@plt>
  lea    D119(%rip),%rdi
  call   <printf@plt>
  lea    D4(%rip),%rdi
  call   <printf@plt>
  lea    D106(%rip),%rdi
  call   <printf@plt>
  lea    D29(%rip),%rdi
  call   <printf@plt>
  lea    D68(%rip),%rdi
  call   <printf@plt>
  lea    D28(%rip),%rdi
  call   <printf@plt>
  lea    D1(%rip),%rdi
  call   <printf@plt>
  lea    D20(%rip),%rdi
  call   <printf@plt>
  lea    D58(%rip),%rdi
  call   <printf@plt>
  lea    D89(%rip),%rdi
  call   <printf@plt>
  lea    D83(%rip),%rdi
  add    $0x8,%rsp
  jmp    1050 <printf@plt>
```

tool_calls: name: retrieve_data
arguments: tag: D76
data_type: string
name: retrieve_data
arguments: tag: D59
data_type: string
name: retrieve_data
arguments: tag: D119
data_type: string
name: retrieve_data
arguments: tag: D4
data_type: string
name: retrieve_data
arguments: tag: D106
data_type: string
name: retrieve_data
arguments: tag: D29
data_type: string
name: retrieve_data
arguments: tag: D68
data_type: string
name: retrieve_data
arguments: tag: D28
data_type: string
name: retrieve_data
arguments: tag: D1
data_type: string
name: retrieve_data
arguments: tag: D20
data_type: string
name: retrieve_data
arguments: tag: D58
data_type: string
name: retrieve_data
arguments: tag: D89
data_type: string
name: retrieve_data
arguments: tag: D83
data_type: string

tool: D76: USAGE:


tool: D59:     piboot <options> <kernel>


tool: D119: 


tool: D4:     -h | --help             Show this screen.


tool: D106:     -p | --port <device>    Use specified serial port to communicate.


tool: D29:     -b | --beef-bss         Fill BSS section with 0xDEADBEEF instead of zeros.


tool: D68:     -m | --monitor          Start monitoring uart output after starting kernel


tool: D28:     -l | --load-addr <addr> Specify address where to load binary files.
       |                    Defaults to 0x8000, increases with each loaded file.
       |                    Has no effect when loading ELF files.


tool: D1:     -x | --exec-addr <addr> Address where to start executing. Defaults to
       |                    0x8000. When loading ELF, it's entrypoint address
       |                    is used instead.


tool: D20:     -s | --suspended        Do not start to execute right away.


tool: D58:     -w | --no-watchdog      Disable watchdog.


tool: D89:     -v | --verbose          Display what actions are performed.


tool: D83:     -r | --reboot           Reboot the Pi.


assistant: ```c
void usage(void) {
  printf("USAGE:\n");
  printf("    piboot <options> <kernel>\n");
  printf("\n");
  printf("    -h | --help             Show this screen.\n");
  printf("    -p | --port <device>    Use specified serial port to communicate.\n");
  printf("    -b | --beef-bss         Fill BSS section with 0xDEADBEEF instead of zeros.\n");
  printf("    -m | --monitor          Start monitoring uart output after starting kernel\n");
  printf("    -l | --load-addr <addr> Specify address where to load binary files.\n"
         "       |                    Defaults to 0x8000, increases with each loaded file.\n"
         "       |                    Has no effect when loading ELF files.\n");
  printf("    -x | --exec-addr <addr> Address where to start executing. Defaults to\n"
         "       |                    0x8000. When loading ELF, it's entrypoint address\n"
         "       |                    is used instead.\n");
  printf("    -s | --suspended        Do not start to execute right away.\n");
  printf("    -w | --no-watchdog      Disable watchdog.\n");
  printf("    -v | --verbose          Display what actions are performed.\n");
  printf("    -r | --reboot           Reboot the Pi.\n");
}
```