user: Translate the below assembly code into C programming language:

```asm
<usage>:
  endbr64
  push   %rbp
  mov    %rdi,%rsi
  xor    %eax,%eax
  lea    D138(%rip),%rdi
  lea    D144(%rip),%rbp
  call   <printf@plt>
  lea    D81(%rip),%rdi
  call   <puts@plt>
  lea    D105(%rip),%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  lea    D79(%rip),%rdi
  call   <puts@plt>
  lea    D115(%rip),%rdi
  call   <puts@plt>
  lea    D150(%rip),%rdi
  call   <puts@plt>
  lea    D156(%rip),%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  lea    D149(%rip),%rdi
  call   <puts@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D125(%rip),%rdi
  call   <puts@plt>
  lea    D15(%rip),%rdi
  call   <puts@plt>
  lea    D32(%rip),%rdi
  call   <puts@plt>
  lea    D78(%rip),%rdi
  call   <puts@plt>
  lea    D116(%rip),%rdi
  call   <puts@plt>
  lea    D90(%rip),%rdi
  call   <puts@plt>
  lea    D88(%rip),%rdi
  call   <puts@plt>
  lea    D28(%rip),%rdi
  call   <puts@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    $0x1,%edi
  pop    %rbp
  jmp    10b0 <exit@plt>
```

tool_calls: name: parse_data
arguments: tag: D138
type_infered: string
name: parse_data
arguments: tag: D144
type_infered: string
name: parse_data
arguments: tag: D81
type_infered: string
name: parse_data
arguments: tag: D105
type_infered: string
name: parse_data
arguments: tag: D79
type_infered: string
name: parse_data
arguments: tag: D115
type_infered: string
name: parse_data
arguments: tag: D150
type_infered: string
name: parse_data
arguments: tag: D156
type_infered: string
name: parse_data
arguments: tag: D149
type_infered: string
name: parse_data
arguments: tag: D125
type_infered: string
name: parse_data
arguments: tag: D15
type_infered: string
name: parse_data
arguments: tag: D32
type_infered: string
name: parse_data
arguments: tag: D78
type_infered: string
name: parse_data
arguments: tag: D116
type_infered: string
name: parse_data
arguments: tag: D90
type_infered: string
name: parse_data
arguments: tag: D88
type_infered: string
name: parse_data
arguments: tag: D28
type_infered: string

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



tool: D144: *                                                                   *

tool: D81: **************************** DISCRIPTION ****************************

tool: D105: * csuGaborFaceGraph                                                 *

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

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

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

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

tool: D149: *********************************************************************

tool: D125: Arguments:

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

tool: D32:                      face graphs.

tool: D78:   image_dir        - directory containing test imagry.

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

tool: D90:                      generated by csuGaborGraphFit.

tool: D88:   wavelet_file     - gabor wavelet discription file.

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