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

```asm
<print_usage>:
  endbr64
  sub    $0x8,%rsp
  lea    D196(%rip),%rdi
  call   <puts@plt>
  lea    D255(%rip),%rdi
  call   <puts@plt>
  lea    D128(%rip),%rdi
  call   <puts@plt>
  lea    D16(%rip),%rdi
  call   <puts@plt>
  lea    D59(%rip),%rdi
  call   <puts@plt>
  lea    D249(%rip),%rdi
  call   <puts@plt>
  lea    D79(%rip),%rdi
  call   <puts@plt>
  lea    D25(%rip),%rdi
  call   <puts@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D54(%rip),%rdi
  call   <puts@plt>
  lea    D48(%rip),%rdi
  call   <puts@plt>
  lea    D197(%rip),%rdi
  call   <puts@plt>
  lea    D86(%rip),%rdi
  call   <puts@plt>
  lea    D275(%rip),%rdi
  call   <puts@plt>
  lea    D114(%rip),%rdi
  call   <puts@plt>
  lea    D12(%rip),%rdi
  call   <puts@plt>
  lea    D124(%rip),%rdi
  call   <puts@plt>
  lea    D104(%rip),%rdi
  call   <puts@plt>
  lea    D34(%rip),%rdi
  call   <puts@plt>
  lea    D89(%rip),%rdi
  call   <puts@plt>
  lea    D88(%rip),%rdi
  call   <puts@plt>
  lea    D277(%rip),%rdi
  call   <puts@plt>
  lea    D207(%rip),%rdi
  call   <puts@plt>
  lea    D167(%rip),%rdi
  call   <puts@plt>
  lea    D0(%rip),%rdi
  call   <puts@plt>
  lea    D140(%rip),%rdi
  call   <puts@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D222(%rip),%rdx
  lea    D191(%rip),%rsi
  lea    D215(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  add    $0x8,%rsp
  ret
```

tool_calls: name: read_data
arguments: label: D196
type: string
name: read_data
arguments: label: D255
type: string
name: read_data
arguments: label: D128
type: string
name: read_data
arguments: label: D16
type: string
name: read_data
arguments: label: D59
type: string
name: read_data
arguments: label: D249
type: string
name: read_data
arguments: label: D79
type: string
name: read_data
arguments: label: D25
type: string
name: read_data
arguments: label: D54
type: string
name: read_data
arguments: label: D48
type: string
name: read_data
arguments: label: D197
type: string
name: read_data
arguments: label: D86
type: string
name: read_data
arguments: label: D275
type: string
name: read_data
arguments: label: D114
type: string
name: read_data
arguments: label: D12
type: string
name: read_data
arguments: label: D124
type: string
name: read_data
arguments: label: D104
type: string
name: read_data
arguments: label: D34
type: string
name: read_data
arguments: label: D89
type: string
name: read_data
arguments: label: D88
type: string
name: read_data
arguments: label: D277
type: string
name: read_data
arguments: label: D207
type: string
name: read_data
arguments: label: D167
type: string
name: read_data
arguments: label: D0
type: string
name: read_data
arguments: label: D140
type: string
name: read_data
arguments: label: D222
type: string
name: read_data
arguments: label: D191
type: string
name: read_data
arguments: label: D215
type: string

tool: D196: vcp  Copyright (C) 2009, 2010  lynix <lynix47@gmail.com>


tool: D255: This program comes with ABSOLUTELY NO WARRANTY, use at

tool: D128: own risk. This is free software, and you are welcome to

tool: D16: redistribute it under the terms of the GNU General

tool: D59: Public License as published by the Free Software

tool: D249: Foundation, either version 3 of the License, or (at your

tool: D79: option) any later version.


tool: D25: Usage:    vcp [OPTIONS] SOURCE(S) DESTINATION

tool: D54: Behaviour:

tool: D48:   -d  delete source(s) on success

tool: D197:   -f  overwrite existing files (default: ask)

tool: D86:   -k  skip all existing files (default: ask)

tool: D275:   -p  only show what would be done

tool: D114:   -u  skip identical existing files

tool: D12:   -s  ensure each file is synched to disk after write

tool: D124:   -t  ignore errors on preserving uid/gid

tool: D104: Output control:

tool: D34:   -b  display progress bars (default: text)

tool: D89:   -B  display progress bars only, no filenames

tool: D88:   -q  do not print progress indicators

tool: D277:   -Q  do not print progress indicators nor filenames

tool: D207: General options:

tool: D167:   -h  print usage and license information

tool: D0:   -v  be verbose

tool: D140:   -D  print debugging messages

tool: D222: 14:28:13

tool: D191: Mar 16 2022

tool: D215: This version of vcp was built on %s %s.


assistant: ```c
void print_usage() {
  printf("vcp  Copyright (C) 2009, 2010  lynix <lynix47@gmail.com>\n\n");
  printf("This program comes with ABSOLUTELY NO WARRANTY, use at\n");
  printf("own risk. This is free software, and you are welcome to\n");
  printf("redistribute it under the terms of the GNU General\n");
  printf("Public License as published by the Free Software\n");
  printf("Foundation, either version 3 of the License, or (at your\n");
  printf("option) any later version.\n\n");
  printf("Usage:    vcp [OPTIONS] SOURCE(S) DESTINATION\n");
  printf("\n");
  printf("Behaviour:\n");
  printf("  -d  delete source(s) on success\n");
  printf("  -f  overwrite existing files (default: ask)\n");
  printf("  -k  skip all existing files (default: ask)\n");
  printf("  -p  only show what would be done\n");
  printf("  -u  skip identical existing files\n");
  printf("  -s  ensure each file is synched to disk after write\n");
  printf("  -t  ignore errors on preserving uid/gid\n");
  printf("Output control:\n");
  printf("  -b  display progress bars (default: text)\n");
  printf("  -B  display progress bars only, no filenames\n");
  printf("  -q  do not print progress indicators\n");
  printf("  -Q  do not print progress indicators nor filenames\n");
  printf("General options:\n");
  printf("  -h  print usage and license information\n");
  printf("  -v  be verbose\n");
  printf("  -D  print debugging messages\n");
  printf("\n");
  printf("This version of vcp was built on %s %s.\n", "Mar 16 2022", "14:28:13");
  return;
}
```