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

```asm
<print_usage>:
  endbr64
  push   %rbp
  lea    D7(%rip),%rdi
  lea    D123(%rip),%rbp
  call   <printf@plt>
  lea    D153(%rip),%rdi
  call   <printf@plt>
  lea    D160(%rip),%rdi
  call   <printf@plt>
  lea    D86(%rip),%rdi
  call   <printf@plt>
  lea    D186(%rip),%rdi
  call   <printf@plt>
  lea    D47(%rip),%rdi
  call   <printf@plt>
  lea    D62(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D179(%rip),%rdi
  call   <printf@plt>
  lea    D182(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D167(%rip),%rdi
  call   <printf@plt>
  lea    D53(%rip),%rdi
  call   <printf@plt>
  lea    D174(%rip),%rdi
  call   <printf@plt>
  lea    D170(%rip),%rdi
  call   <printf@plt>
  lea    D116(%rip),%rdi
  call   <printf@plt>
  lea    D65(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D198(%rip),%rdi
  call   <printf@plt>
  lea    D138(%rip),%rdi
  call   <printf@plt>
  lea    D41(%rip),%rdi
  call   <printf@plt>
  lea    D45(%rip),%rdi
  pop    %rbp
  jmp    1050 <printf@plt>
```

tool_calls: name: read_data
arguments: tag: D7
datatype: string
name: read_data
arguments: tag: D123
datatype: string
name: read_data
arguments: tag: D153
datatype: string
name: read_data
arguments: tag: D160
datatype: string
name: read_data
arguments: tag: D86
datatype: string
name: read_data
arguments: tag: D186
datatype: string
name: read_data
arguments: tag: D47
datatype: string
name: read_data
arguments: tag: D62
datatype: string
name: read_data
arguments: tag: D179
datatype: string
name: read_data
arguments: tag: D182
datatype: string
name: read_data
arguments: tag: D167
datatype: string
name: read_data
arguments: tag: D53
datatype: string
name: read_data
arguments: tag: D174
datatype: string
name: read_data
arguments: tag: D170
datatype: string
name: read_data
arguments: tag: D116
datatype: string
name: read_data
arguments: tag: D65
datatype: string
name: read_data
arguments: tag: D198
datatype: string
name: read_data
arguments: tag: D138
datatype: string
name: read_data
arguments: tag: D41
datatype: string
name: read_data
arguments: tag: D45
datatype: string

tool: D7: plpc - plp c toolchain



tool: D123: 


tool: D153: usage: plpc <options> <input files>


tool: D160: global options:


tool: D86: -o <filename>		output filename


tool: D186: -d [0,1,2]		debug level (0=off (default), 1=on, 2=verbose)


tool: D47: -e 			do not stop on errors, even if crazy things happen


tool: D62: --nocleanup		leave intermediate files


tool: D179: preprocessor options:


tool: D182: --define		print defines


tool: D167: compiler options:


tool: D53: --symbol		print symbol table to <output name>.symbol


tool: D174: --parse			print parse tree to <output name>.parse


tool: D170: --graph			create a visual graph of the parse tree to <output name>.png


tool: D116: --front			run the front end only, do not call handle() on the parse tree


tool: D65: --noannotate		do not annotate output with original source


tool: D198: binary builder options:


tool: D138: --entry <filename>	use alternate entry point


tool: D41: --metafile <filename>	use alternate metafile


tool: D45: --builtin		print builtin entry point and metafile and exit


assistant: ```c
void print_usage(void) {
  printf("plpc - plp c toolchain\n\n");
  printf("usage: plpc <options> <input files>\n");
  printf("global options:\n");
  printf("-o <filename>		output filename\n");
  printf("-d [0,1,2]		debug level (0=off (default), 1=on, 2=verbose)\n");
  printf("-e 			do not stop on errors, even if crazy things happen\n");
  printf("--nocleanup		leave intermediate files\n");
  printf("\n");
  printf("preprocessor options:\n");
  printf("--define		print defines\n");
  printf("\n");
  printf("compiler options:\n");
  printf("--symbol		print symbol table to <output name>.symbol\n");
  printf("--parse			print parse tree to <output name>.parse\n");
  printf("--graph			create a visual graph of the parse tree to <output name>.png\n");
  printf("--front			run the front end only, do not call handle() on the parse tree\n");
  printf("--noannotate		do not annotate output with original source\n");
  printf("\n");
  printf("binary builder options:\n");
  printf("--entry <filename>	use alternate entry point\n");
  printf("--metafile <filename>	use alternate metafile\n");
  printf("--builtin		print builtin entry point and metafile and exit\n");
}
```