user: Please show me the C implementation that matches the assembly code listed below:

```asm
<usage>:
  endbr64
  push   %rbx
  mov    %rdi,%rbx
  mov    %rdi,%rsi
  lea    D85(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D12(%rip),%rdi
  call   <puts@plt>
  lea    D100(%rip),%rdi
  call   <puts@plt>
  lea    D87(%rip),%rdi
  call   <puts@plt>
  lea    D84(%rip),%rdi
  call   <puts@plt>
  mov    $0x1,%esi
  lea    D67(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D127(%rip),%rdi
  call   <puts@plt>
  lea    D57(%rip),%rdi
  call   <puts@plt>
  lea    D4(%rip),%rdi
  call   <puts@plt>
  lea    D103(%rip),%rdi
  call   <puts@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D16(%rip),%rdi
  call   <puts@plt>
  mov    %rbx,%rsi
  lea    D8(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %rbx,%rsi
  lea    D40(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  pop    %rbx
  ret
```

tool_calls: name: unpack_data
arguments: tag: D85
type: string
name: unpack_data
arguments: tag: D12
type: string
name: unpack_data
arguments: tag: D100
type: string
name: unpack_data
arguments: tag: D87
type: string
name: unpack_data
arguments: tag: D84
type: string
name: unpack_data
arguments: tag: D67
type: string
name: unpack_data
arguments: tag: D127
type: string
name: unpack_data
arguments: tag: D57
type: string
name: unpack_data
arguments: tag: D4
type: string
name: unpack_data
arguments: tag: D103
type: string
name: unpack_data
arguments: tag: D16
type: string
name: unpack_data
arguments: tag: D8
type: string
name: unpack_data
arguments: tag: D40
type: string

tool: D85: Usage: %s [options]


tool: D12:  -b, --bootstatus    Get last boot status (Watchdog/POR)

tool: D100:  -d, --disable       Turn off the watchdog timer

tool: D87:  -e, --enable        Turn on the watchdog timer

tool: D84:  -h, --help          Print the help message

tool: D67:  -p, --pingrate=P    Set ping rate to P seconds (default %d)


tool: D127:  -t, --timeout=T     Set timeout to T seconds

tool: D57:  -T, --gettimeout    Get the timeout

tool: D4:  -n, --pretimeout=T  Set the pretimeout to T seconds

tool: D103:  -N, --getpretimeout Get the pretimeout

tool: D16: Parameters are parsed left-to-right in real-time.

tool: D8: Example: %s -d -t 10 -p 5 -e


tool: D40: Example: %s -t 12 -T -n 7 -N


assistant: ```c
void usage(char *progname) {
  printf("Usage: %s [options]\n", progname);
  printf(" -b, --bootstatus    Get last boot status (Watchdog/POR)\n");
  printf(" -d, --disable       Turn off the watchdog timer\n");
  printf(" -e, --enable        Turn on the watchdog timer\n");
  printf(" -h, --help          Print the help message\n");
  printf(" -p, --pingrate=P    Set ping rate to P seconds (default %d)\n", 1);
  printf(" -t, --timeout=T     Set timeout to T seconds\n");
  printf(" -T, --gettimeout    Get the timeout\n");
  printf(" -n, --pretimeout=T  Set the pretimeout to T seconds\n");
  printf(" -N, --getpretimeout Get the pretimeout\n");
  printf("\n");
  printf("Parameters are parsed left-to-right in real-time.\n");
  printf("Example: %s -d -t 10 -p 5 -e\n", progname);
  printf("Example: %s -t 12 -T -n 7 -N\n", progname);
}
```