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

```asm
<usage>:
  endbr64
  push   %rbx
  mov    %rdi,%rsi
  lea    D82(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D64(%rip),%rdi
  call   <puts@plt>
  lea    D118(%rip),%rdi
  call   <puts@plt>
  lea    D119(%rip),%rbx
  mov    %rbx,%rdi
  call   <puts@plt>
  lea    D127(%rip),%rdi
  call   <puts@plt>
  lea    D126(%rip),%rdi
  call   <puts@plt>
  lea    D145(%rip),%rdi
  call   <puts@plt>
  lea    D78(%rip),%rdi
  call   <puts@plt>
  mov    %rbx,%rdi
  call   <puts@plt>
  lea    D56(%rip),%rdi
  call   <puts@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D164(%rip),%rdi
  call   <puts@plt>
  lea    D36(%rip),%rdi
  call   <puts@plt>
  lea    D115(%rip),%rdi
  call   <puts@plt>
  lea    D51(%rip),%rdi
  call   <puts@plt>
  lea    D110(%rip),%rdi
  call   <puts@plt>
  lea    D163(%rip),%rdi
  call   <puts@plt>
  lea    D23(%rip),%rdi
  call   <puts@plt>
  lea    D79(%rip),%rdi
  call   <puts@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    $0x1,%edi
  call   <exit@plt>
  pop    %rbx
  ret
```

tool_calls: name: parse_data
arguments: label: D82
type_infered: string
name: parse_data
arguments: label: D64
type_infered: string
name: parse_data
arguments: label: D118
type_infered: string
name: parse_data
arguments: label: D119
type_infered: string
name: parse_data
arguments: label: D127
type_infered: string
name: parse_data
arguments: label: D126
type_infered: string
name: parse_data
arguments: label: D145
type_infered: string
name: parse_data
arguments: label: D78
type_infered: string
name: parse_data
arguments: label: D56
type_infered: string
name: parse_data
arguments: label: D164
type_infered: string
name: parse_data
arguments: label: D36
type_infered: string
name: parse_data
arguments: label: D115
type_infered: string
name: parse_data
arguments: label: D51
type_infered: string
name: parse_data
arguments: label: D110
type_infered: string
name: parse_data
arguments: label: D163
type_infered: string
name: parse_data
arguments: label: D23
type_infered: string
name: parse_data
arguments: label: D79
type_infered: string

tool: D82: Usage: %s image_list.srt image_dir training_graph_dir gabor_file output_graph_dir



tool: D64: **************************** DISCRIPTION ****************************

tool: D118: * csuGaborFaceGraph                                                 *

tool: D119: *                                                                   *

tool: D127: * The purpose of this exicutable is to read a set of model images   *

tool: D126: * and their graph discription and build graph discriptions for      *

tool: D145: * novel images.  This program performes different variations of the *

tool: D78: * face bunch graph matching algorithm to locate points on a face.   *

tool: D56: *********************************************************************

tool: D164: Arguments:

tool: D36:   image_list.srt   - image list that contains all images that need

tool: D115:                      face graphs.

tool: D51:   image_dir        - directory containing test imagry.

tool: D110:   novel_graph_dir  - the directory that contains the graph

tool: D163:                      generated by csuGaborGraphFit.

tool: D23:   wavelet_file     - gabor wavelet discription file.

tool: D79:   facegraph_dir    - output directory where face graphs are stored.

assistant: ```c
void usage(char const *name) {
  {
    printf((char const *__restrict)"Usage: %s image_list.srt image_dir training_graph_dir gabor_file output_graph_dir\n\n", name);
    printf((char const *__restrict)"**************************** DISCRIPTION ****************************\n");
    printf((char const *__restrict)"* csuGaborFaceGraph                                                 *\n");
    printf((char const *__restrict)"*                                                                   *\n");
    printf((char const *__restrict)"* The purpose of this exicutable is to read a set of model images   *\n");
    printf((char const *__restrict)"* and their graph discription and build graph discriptions for      *\n");
    printf((char const *__restrict)"* novel images.  This program performes different variations of the *\n");
    printf((char const *__restrict)"* face bunch graph matching algorithm to locate points on a face.   *\n");
    printf((char const *__restrict)"*                                                                   *\n");
    printf((char const *__restrict)"*********************************************************************\n");
    printf((char const *__restrict)"\n");
    printf((char const *__restrict)"Arguments:\n");
    printf((char const *__restrict)"  image_list.srt   - image list that contains all images that need\n");
    printf((char const *__restrict)"                     face graphs.\n");
    printf((char const *__restrict)"  image_dir        - directory containing test imagry.\n");
    printf((char const *__restrict)"  novel_graph_dir  - the directory that contains the graph\n");
    printf((char const *__restrict)"                     generated by csuGaborGraphFit.\n");
    printf((char const *__restrict)"  wavelet_file     - gabor wavelet discription file.\n");
    printf((char const *__restrict)"  facegraph_dir    - output directory where face graphs are stored.\n");
    printf((char const *__restrict)"\n");
    exit(1);
  }
}
```