user: Converte this assembly snippet into its equivalent C code:

```asm
<usage>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  lea    D75(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D130(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D170(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D145(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D132(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D169(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D152(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D170(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D102(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D2(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D113(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D117(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D6(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D9(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D171(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D139(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D109(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    $0x1,%edi
  call   <exit@plt>
  nop
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D75
type: string
name: extract_symbolic_data
arguments: data_label: D130
type: string
name: extract_symbolic_data
arguments: data_label: D64
type: string
name: extract_symbolic_data
arguments: data_label: D170
type: string
name: extract_symbolic_data
arguments: data_label: D145
type: string
name: extract_symbolic_data
arguments: data_label: D132
type: string
name: extract_symbolic_data
arguments: data_label: D169
type: string
name: extract_symbolic_data
arguments: data_label: D152
type: string
name: extract_symbolic_data
arguments: data_label: D102
type: string
name: extract_symbolic_data
arguments: data_label: D2
type: string
name: extract_symbolic_data
arguments: data_label: D113
type: string
name: extract_symbolic_data
arguments: data_label: D117
type: string
name: extract_symbolic_data
arguments: data_label: D6
type: string
name: extract_symbolic_data
arguments: data_label: D9
type: string
name: extract_symbolic_data
arguments: data_label: D171
type: string
name: extract_symbolic_data
arguments: data_label: D139
type: string
name: extract_symbolic_data
arguments: data_label: D109
type: string

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



tool: D130: **************************** DISCRIPTION ****************************

tool: D64: * csuGaborFaceGraph                                                 *

tool: D170: *                                                                   *

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

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

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

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

tool: D102: *********************************************************************

tool: D2: Arguments:

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

tool: D117:                      face graphs.

tool: D6:   image_dir        - directory containing test imagry.

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

tool: D171:                      generated by csuGaborGraphFit.

tool: D139:   wavelet_file     - gabor wavelet discription file.

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