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

```asm
<print_usage>:
  endbr64
  sub    $0x8,%rsp
  lea    D107(%rip),%rdi
  call   <puts@plt>
  lea    D54(%rip),%rdi
  call   <puts@plt>
  lea    D157(%rip),%rdi
  call   <puts@plt>
  lea    D199(%rip),%rdi
  call   <puts@plt>
  lea    D48(%rip),%rdi
  call   <puts@plt>
  lea    D50(%rip),%rdi
  call   <puts@plt>
  lea    D241(%rip),%rdi
  call   <puts@plt>
  lea    D192(%rip),%rdi
  call   <puts@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D24(%rip),%rdi
  call   <puts@plt>
  lea    D59(%rip),%rdi
  call   <puts@plt>
  lea    D80(%rip),%rdi
  call   <puts@plt>
  lea    D22(%rip),%rdi
  call   <puts@plt>
  lea    D236(%rip),%rdi
  call   <puts@plt>
  lea    D263(%rip),%rdi
  call   <puts@plt>
  lea    D45(%rip),%rdi
  call   <puts@plt>
  lea    D229(%rip),%rdi
  call   <puts@plt>
  lea    D136(%rip),%rdi
  call   <puts@plt>
  lea    D28(%rip),%rdi
  call   <puts@plt>
  lea    D240(%rip),%rdi
  call   <puts@plt>
  lea    D8(%rip),%rdi
  call   <puts@plt>
  lea    D36(%rip),%rdi
  call   <puts@plt>
  lea    D214(%rip),%rdi
  call   <puts@plt>
  lea    D42(%rip),%rdi
  call   <puts@plt>
  lea    D81(%rip),%rdi
  call   <puts@plt>
  lea    D75(%rip),%rdi
  call   <puts@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D230(%rip),%rdx
  lea    D160(%rip),%rsi
  xor    %eax,%eax
  lea    D86(%rip),%rdi
  add    $0x8,%rsp
  jmp    1090 <printf@plt>
```

tool_calls: name: read_data
arguments: data_label: D107
data_type: string
name: read_data
arguments: data_label: D54
data_type: string
name: read_data
arguments: data_label: D157
data_type: string
name: read_data
arguments: data_label: D199
data_type: string
name: read_data
arguments: data_label: D48
data_type: string
name: read_data
arguments: data_label: D50
data_type: string
name: read_data
arguments: data_label: D241
data_type: string
name: read_data
arguments: data_label: D192
data_type: string
name: read_data
arguments: data_label: D24
data_type: string
name: read_data
arguments: data_label: D59
data_type: string
name: read_data
arguments: data_label: D80
data_type: string
name: read_data
arguments: data_label: D22
data_type: string
name: read_data
arguments: data_label: D236
data_type: string
name: read_data
arguments: data_label: D263
data_type: string
name: read_data
arguments: data_label: D45
data_type: string
name: read_data
arguments: data_label: D229
data_type: string
name: read_data
arguments: data_label: D136
data_type: string
name: read_data
arguments: data_label: D28
data_type: string
name: read_data
arguments: data_label: D240
data_type: string
name: read_data
arguments: data_label: D8
data_type: string
name: read_data
arguments: data_label: D36
data_type: string
name: read_data
arguments: data_label: D214
data_type: string
name: read_data
arguments: data_label: D42
data_type: string
name: read_data
arguments: data_label: D81
data_type: string
name: read_data
arguments: data_label: D75
data_type: string
name: read_data
arguments: data_label: D230
data_type: string
name: read_data
arguments: data_label: D160
data_type: string
name: read_data
arguments: data_label: D86
data_type: string

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


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

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

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

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

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

tool: D241: option) any later version.


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

tool: D24: Behaviour:

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

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

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

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

tool: D263:   -u  skip identical existing files

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

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

tool: D136: Output control:

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

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

tool: D8:   -q  do not print progress indicators

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

tool: D214: General options:

tool: D42:   -h  print usage and license information

tool: D81:   -v  be verbose

tool: D75:   -D  print debugging messages

tool: D230: 14:28:13

tool: D160: Mar 16 2022

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