user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<usage>:
  endbr64
  push   %rbx
  mov    %rdi,%rsi
  lea    D51(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D243(%rip),%rdi
  call   <puts@plt>
  lea    D134(%rip),%rdi
  call   <puts@plt>
  lea    D211(%rip),%rdi
  call   <puts@plt>
  lea    D249(%rip),%rdi
  call   <puts@plt>
  lea    D58(%rip),%rdi
  call   <puts@plt>
  lea    D235(%rip),%rdi
  call   <puts@plt>
  lea    D36(%rip),%rdi
  call   <puts@plt>
  lea    D32(%rip),%rdi
  call   <puts@plt>
  lea    D78(%rip),%rdi
  call   <puts@plt>
  lea    D49(%rip),%rdi
  call   <puts@plt>
  lea    D97(%rip),%rdi
  call   <puts@plt>
  lea    D231(%rip),%rdi
  call   <puts@plt>
  movsd  D153(%rip),%xmm0
  lea    D101(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  lea    D267(%rip),%rdi
  call   <puts@plt>
  movsd  D24(%rip),%xmm0
  lea    D43(%rip),%rbx
  mov    %rbx,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  lea    D207(%rip),%rdi
  call   <puts@plt>
  movsd  D35(%rip),%xmm0
  mov    %rbx,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  lea    D107(%rip),%rdi
  call   <puts@plt>
  lea    D206(%rip),%rdi
  call   <puts@plt>
  lea    D71(%rip),%rdi
  call   <puts@plt>
  lea    D89(%rip),%rdi
  call   <puts@plt>
  lea    D220(%rip),%rdi
  call   <puts@plt>
  lea    D85(%rip),%rdi
  call   <puts@plt>
  lea    D73(%rip),%rdi
  call   <puts@plt>
  lea    D162(%rip),%rdi
  call   <puts@plt>
  lea    D50(%rip),%rdi
  call   <puts@plt>
  mov    $0x1,%edi
  call   <exit@plt>
  pop    %rbx
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D51
datatype: string
name: extract_symbolic_data
arguments: label: D243
datatype: string
name: extract_symbolic_data
arguments: label: D134
datatype: string
name: extract_symbolic_data
arguments: label: D211
datatype: string
name: extract_symbolic_data
arguments: label: D249
datatype: string
name: extract_symbolic_data
arguments: label: D58
datatype: string
name: extract_symbolic_data
arguments: label: D235
datatype: string
name: extract_symbolic_data
arguments: label: D36
datatype: string
name: extract_symbolic_data
arguments: label: D32
datatype: string
name: extract_symbolic_data
arguments: label: D78
datatype: string
name: extract_symbolic_data
arguments: label: D49
datatype: string
name: extract_symbolic_data
arguments: label: D97
datatype: string
name: extract_symbolic_data
arguments: label: D231
datatype: string
name: extract_symbolic_data
arguments: label: D153
datatype: f64
name: extract_symbolic_data
arguments: label: D101
datatype: string
name: extract_symbolic_data
arguments: label: D267
datatype: string
name: extract_symbolic_data
arguments: label: D24
datatype: f64
name: extract_symbolic_data
arguments: label: D43
datatype: string
name: extract_symbolic_data
arguments: label: D207
datatype: string
name: extract_symbolic_data
arguments: label: D35
datatype: f64
name: extract_symbolic_data
arguments: label: D107
datatype: string
name: extract_symbolic_data
arguments: label: D206
datatype: string
name: extract_symbolic_data
arguments: label: D71
datatype: string
name: extract_symbolic_data
arguments: label: D89
datatype: string
name: extract_symbolic_data
arguments: label: D220
datatype: string
name: extract_symbolic_data
arguments: label: D85
datatype: string
name: extract_symbolic_data
arguments: label: D73
datatype: string
name: extract_symbolic_data
arguments: label: D162
datatype: string
name: extract_symbolic_data
arguments: label: D50
datatype: string

tool: D51: Usage: %s [OPTIONS] training_images.[list/srt] training_output


tool: D243:   Parameters

tool: D134:     training_images: image names file

tool: D211:     trainName: training output file

tool: D249:   Options

tool: D58:     -lda:                enable lda training. (Must use srt file)
        DEFAULT = PCA Only

tool: D235:     -imDir <dir>:        image directory.
        DEFAULT = "."

tool: D36:     -vecLength <int>:    vector length.
        DEFAULT = "Auto"

tool: D32:     -dropNVectors <int>: Drops the first N vectors which are normally lighting effects.
        DEFAULT = 0

tool: D78:     -cutOffMode <mode>:  Selects the method for eigen vector selection after PCA trianing

tool: D49:                          and droping the first vectors.  DEFAULT = SIMPLE

tool: D97:          NONE            Retain eigenvectors.

tool: D231:          SIMPLE          Retain a percentage of the eigenvectors. 

tool: D153: 60

tool: D101:                          Expects value between 0.0 and 100.0, DEFAULT PERCENT = %f 


tool: D267:          ENERGY          Retain  eigenvectors accounting for a percentage of the total energy.

tool: D24: 90

tool: D43:                          Expects value between 0.0 and 100.0, DEFAULT PERCENT = %f


tool: D207:          STRETCH         Retains all eigenvectors greater than a percentage of the largest eigenvector.

tool: D35: 1

tool: D107:          CLASSES         Retains as many eigenvectors as there LDA Classes: use only with LDA.

tool: D206:                          Ignores cutOff value and uses number of classes instead

tool: D71:     -cutOff <percent>:   Percentage of eigen vectors to retain (see cutOffMode).
        DEFAULT = (See cutoff mode)

tool: D89:     -writeTextBasis:     Causes the program to print the basis vectors to text files.
        DEFAULT = No

tool: D220:     -writeTextValues:    Causes the program to print the basis values to text files.
        DEFAULT = No

tool: D85:     -writeTextInterm:    Causes the program to print intermediate matricies.
        DEFAULT = No

tool: D73:     -outputMatlabAscii:  Causes the program to print matricies in matlab format.
        DEFAULT = Octave format

tool: D162:     -quiet:              Turn off all messages.
        DEFAULT = messages on

tool: D50:     -debuglevel <int>:   Level of debug information to display (automatically sets quiet to no).
        DEFAULT = 0

assistant: ```c
void usage(char const *prog) {
  {
    printf((char const *__restrict)"Usage: %s [OPTIONS] training_images.[list/srt] training_output\n", prog);
    printf((char const *__restrict)"  Parameters\n");
    printf((char const *__restrict)"    training_images: image names file\n");
    printf((char const *__restrict)"    trainName: training output file\n");
    printf((char const *__restrict)"  Options\n");
    printf((char const *__restrict)"    -lda:                enable lda training. (Must use srt file)\n        DEFAULT = PCA Only\n");
    printf((char const *__restrict)"    -imDir <dir>:        image directory.\n        DEFAULT = \".\"\n");
    printf((char const *__restrict)"    -vecLength <int>:    vector length.\n        DEFAULT = \"Auto\"\n");
    printf((char const *__restrict)"    -dropNVectors <int>: Drops the first N vectors which are normally lighting effects.\n        DEFAULT = 0\n");
    printf((char const *__restrict)"    -cutOffMode <mode>:  Selects the method for eigen vector selection after PCA trianing\n");
    printf((char const *__restrict)"                         and droping the first vectors.  DEFAULT = SIMPLE\n");
    printf((char const *__restrict)"         NONE            Retain eigenvectors.\n");
    printf((char const *__restrict)"         SIMPLE          Retain a percentage of the eigenvectors. \n");
    printf((char const *__restrict)"                         Expects value between 0.0 and 100.0, DEFAULT PERCENT = %f \n", 60.0);
    printf((char const *__restrict)"         ENERGY          Retain  eigenvectors accounting for a percentage of the total energy.\n");
    printf((char const *__restrict)"                         Expects value between 0.0 and 100.0, DEFAULT PERCENT = %f\n", 90.0);
    printf((char const *__restrict)"         STRETCH         Retains all eigenvectors greater than a percentage of the largest eigenvector.\n");
    printf((char const *__restrict)"                         Expects value between 0.0 and 100.0, DEFAULT PERCENT = %f\n", 1.0);
    printf((char const *__restrict)"         CLASSES         Retains as many eigenvectors as there LDA Classes: use only with LDA.\n");
    printf((char const *__restrict)"                         Ignores cutOff value and uses number of classes instead\n");
    printf((char const *__restrict)"    -cutOff <percent>:   Percentage of eigen vectors to retain (see cutOffMode).\n        DEFAULT = (See cutoff mode)\n");
    printf((char const *__restrict)"    -writeTextBasis:     Causes the program to print the basis vectors to text files.\n        DEFAULT = No\n");
    printf((char const *__restrict)"    -writeTextValues:    Causes the program to print the basis values to text files.\n        DEFAULT = No\n");
    printf((char const *__restrict)"    -writeTextInterm:    Causes the program to print intermediate matricies.\n        DEFAULT = No\n");
    printf((char const *__restrict)"    -outputMatlabAscii:  Causes the program to print matricies in matlab format.\n        DEFAULT = Octave format\n");
    printf((char const *__restrict)"    -quiet:              Turn off all messages.\n        DEFAULT = messages on\n");
    printf((char const *__restrict)"    -debuglevel <int>:   Level of debug information to display (automatically sets quiet to no).\n        DEFAULT = 0\n");
    exit(1);
  }
}
```