user: 请将以下的汇编代码转换成C语言代码：

```asm
<usage>:
  endbr64
  push   %rbp
  mov    %rdi,%rsi
  xor    %eax,%eax
  lea    D405(%rip),%rdi
  lea    D45(%rip),%rbp
  call   <printf@plt>
  lea    D278(%rip),%rdi
  call   <puts@plt>
  lea    D1(%rip),%rdi
  call   <puts@plt>
  lea    D62(%rip),%rdi
  call   <puts@plt>
  lea    D408(%rip),%rdi
  call   <puts@plt>
  lea    D32(%rip),%rdi
  call   <puts@plt>
  lea    D219(%rip),%rdi
  call   <puts@plt>
  lea    D314(%rip),%rdi
  call   <puts@plt>
  lea    D109(%rip),%rdi
  call   <puts@plt>
  movsd  D117(%rip),%xmm3
  mov    %rbp,%rdi
  movsd  D82(%rip),%xmm2
  movsd  D54(%rip),%xmm1
  movsd  D115(%rip),%xmm0
  mov    $0x4,%eax
  call   <printf@plt>
  lea    D343(%rip),%rdi
  call   <puts@plt>
  lea    D93(%rip),%rdi
  call   <puts@plt>
  lea    D326(%rip),%rdi
  call   <puts@plt>
  lea    D282(%rip),%rdi
  call   <puts@plt>
  lea    D51(%rip),%rdi
  call   <puts@plt>
  lea    D268(%rip),%rdi
  call   <puts@plt>
  movsd  D121(%rip),%xmm1
  mov    %rbp,%rdi
  mov    $0x4,%eax
  movsd  D142(%rip),%xmm2
  movsd  D327(%rip),%xmm0
  movapd %xmm1,%xmm3
  call   <printf@plt>
  lea    D198(%rip),%rdi
  call   <puts@plt>
  mov    $0x96,%edx
  mov    $0x82,%esi
  xor    %eax,%eax
  lea    D344(%rip),%rdi
  call   <printf@plt>
  lea    D350(%rip),%rdi
  call   <puts@plt>
  lea    D107(%rip),%rdi
  call   <puts@plt>
  lea    D53(%rip),%rdi
  call   <puts@plt>
  lea    D95(%rip),%rdi
  call   <puts@plt>
  lea    D243(%rip),%rdi
  call   <puts@plt>
  lea    D417(%rip),%rdi
  call   <puts@plt>
  lea    D170(%rip),%rdi
  call   <puts@plt>
  pxor   %xmm0,%xmm0
  mov    $0x1,%eax
  lea    D118(%rip),%rdi
  call   <printf@plt>
  lea    D138(%rip),%rdi
  call   <puts@plt>
  lea    D341(%rip),%rdi
  call   <puts@plt>
  lea    D190(%rip),%rdi
  call   <puts@plt>
  lea    D355(%rip),%rdi
  call   <puts@plt>
  lea    D42(%rip),%rdi
  call   <puts@plt>
  lea    D8(%rip),%rdi
  call   <puts@plt>
  lea    D192(%rip),%rdi
  call   <puts@plt>
  lea    D258(%rip),%rdi
  call   <puts@plt>
  lea    D213(%rip),%rdi
  call   <puts@plt>
  lea    D134(%rip),%rdi
  call   <puts@plt>
  mov    $0x1,%edi
  pop    %rbp
  jmp    1090 <exit@plt>
```

tool_calls: name: parse_data
arguments: label: D405
type: string
name: parse_data
arguments: label: D45
type: string
name: parse_data
arguments: label: D278
type: string
name: parse_data
arguments: label: D1
type: string
name: parse_data
arguments: label: D62
type: string
name: parse_data
arguments: label: D408
type: string
name: parse_data
arguments: label: D32
type: string
name: parse_data
arguments: label: D219
type: string
name: parse_data
arguments: label: D314
type: string
name: parse_data
arguments: label: D109
type: string
name: parse_data
arguments: label: D117
type: f64
name: parse_data
arguments: label: D82
type: f64
name: parse_data
arguments: label: D54
type: f64
name: parse_data
arguments: label: D115
type: f64
name: parse_data
arguments: label: D343
type: string
name: parse_data
arguments: label: D93
type: string
name: parse_data
arguments: label: D326
type: string
name: parse_data
arguments: label: D282
type: string
name: parse_data
arguments: label: D51
type: string
name: parse_data
arguments: label: D268
type: string
name: parse_data
arguments: label: D121
type: f64
name: parse_data
arguments: label: D142
type: f64
name: parse_data
arguments: label: D327
type: f64
name: parse_data
arguments: label: D198
type: string
name: parse_data
arguments: label: D344
type: string
name: parse_data
arguments: label: D350
type: string
name: parse_data
arguments: label: D107
type: string
name: parse_data
arguments: label: D53
type: string
name: parse_data
arguments: label: D95
type: string
name: parse_data
arguments: label: D243
type: string
name: parse_data
arguments: label: D417
type: string
name: parse_data
arguments: label: D170
type: string
name: parse_data
arguments: label: D118
type: string
name: parse_data
arguments: label: D138
type: string
name: parse_data
arguments: label: D341
type: string
name: parse_data
arguments: label: D190
type: string
name: parse_data
arguments: label: D355
type: string
name: parse_data
arguments: label: D42
type: string
name: parse_data
arguments: label: D8
type: string
name: parse_data
arguments: label: D192
type: string
name: parse_data
arguments: label: D258
type: string
name: parse_data
arguments: label: D213
type: string
name: parse_data
arguments: label: D134
type: string

tool: D405: Usage: %s [OPTIONS] eye_coordinate_file input_dir


tool: D45:                               Defaults to FERET Standard, %0.1f, %0.1f, %0.1f, %0.1f 


tool: D278:   OUTPUT OPTIONS:  (You must specify at least one output directory)

tool: D1:     -nrm <DIR_NAME>         - Directory to store images in nrm format (feret
                              compatible)

tool: D62:     -sfi <DIR_NAME>         - Directory to store images in raw format (gabor
                              compatible)

tool: D408:     -pgm <DIR_NAME>         - Directory to store images in pgm format ()

tool: D32:   NORMALIZATION OPTIONS:

tool: D219:     -mask <YES/NO>          - Specify an ellipse that defines a mask.

tool: D314:                               Defaults to "Yes".

tool: D109:     -mask-param x y a b     - Specify an ellipse that defines a mask. 

tool: D117: 118

tool: D82: 64

tool: D54: 50

tool: D115: 65

tool: D343:     -hist <TYPE>            - Select the type of histogram equalization.

tool: D93:                               Default is "POST", Options are "PRE", "POST", "NONE". 

tool: D326:                               "PRE"  - equalize raw 0-255 pixels, like original NIST code.

tool: D282:                               "POST" - pixels under mask only after geometric normalization.

tool: D51:     -geometric <YES/NO>     - Turns on/off geometric normalization. Defaults to "Yes".

tool: D268:     -eye-target lx ly rx ry - Choose the target eye coordinates.

tool: D121: 45

tool: D142: 100

tool: D327: 30

tool: D198:     -size width height      - Choose the target size for the images.

tool: D344:                               Defaults to %d, %d 


tool: D350:     -pixelNorm <YES/NO>     - Turns on/off pixel value normalization. Defaults to "Yes"

tool: D107:     -postNorm <YES/NO>      - Turns on/off pixel value normalization. Defaults to "Yes"

tool: D53:     -preNorm <YES/NO>       - Turns on a pixel normalization before geometric normalization. Defaults to "NO"

tool: D95:     -preEdge <INT>          - Blends the edge of the image (INT pixels wide) before geometric normalization. Defaults to "0"

tool: D243:     -postEdge <INT>         - Blends the edge of the image (INT pixels wide) after normalization. Defaults to "NO"

tool: D417:     -noise <double>         - Add zero mean Gausian noise to each pixel.

tool: D170:                               The Standard Deviation is set to argument value times the dynamic

tool: D118:                               range of the image. Defaults to %f indicating zero noise added.


tool: D138:     -reflect <YES/NO>       - Reflect the image down the center of the face.

tool: D341:     -half                   - Easy way to produce half sized images.

tool: D190:     -scale f                - Easy way to produce scaled images.

tool: D355:     -shift dx dy            - Shift all eye targets by dx and dy.

tool: D42: 							  Default is no shift, i.e. 0 0.

tool: D8:                               Postive dx moves the face to the left. Postive dy moves the face up.

tool: D192:   OTHER OPTIONS:

tool: D258:     -configSuffix           - Normalization configuration encoded in new image file names.

tool: D213:     -quiet                  - Turns off all messages.

tool: D134:     -debuglevel <int>       - Turns turns on debuging output.

assistant: ```c
void usage(char const *name) {
  {
    printf((char const *__restrict)"Usage: %s [OPTIONS] eye_coordinate_file input_dir\n", name);
    printf((char const *__restrict)"  OUTPUT OPTIONS:  (You must specify at least one output directory)\n");
    printf((char const *__restrict)"    -nrm <DIR_NAME>         - Directory to store images in nrm format (feret\n                              compatible)\n");
    printf((char const *__restrict)"    -sfi <DIR_NAME>         - Directory to store images in raw format (gabor\n                              compatible)\n");
    printf((char const *__restrict)"    -pgm <DIR_NAME>         - Directory to store images in pgm format ()\n");
    printf((char const *__restrict)"  NORMALIZATION OPTIONS:\n");
    printf((char const *__restrict)"    -mask <YES/NO>          - Specify an ellipse that defines a mask.\n");
    printf((char const *__restrict)"                              Defaults to \"Yes\".\n");
    printf((char const *__restrict)"    -mask-param x y a b     - Specify an ellipse that defines a mask. \n");
    printf((char const *__restrict)"                              Defaults to FERET Standard, %0.1f, %0.1f, %0.1f, %0.1f \n", 65.0, 50.0, 64.0, 118.0);
    printf((char const *__restrict)"    -hist <TYPE>            - Select the type of histogram equalization.\n");
    printf((char const *__restrict)"                              Default is \"POST\", Options are \"PRE\", \"POST\", \"NONE\". \n");
    printf((char const *__restrict)"                              \"PRE\"  - equalize raw 0-255 pixels, like original NIST code.\n");
    printf((char const *__restrict)"                              \"POST\" - pixels under mask only after geometric normalization.\n");
    printf((char const *__restrict)"    -geometric <YES/NO>     - Turns on/off geometric normalization. Defaults to \"Yes\".\n");
    printf((char const *__restrict)"    -eye-target lx ly rx ry - Choose the target eye coordinates.\n");
    printf((char const *__restrict)"                              Defaults to FERET Standard, %0.1f, %0.1f, %0.1f, %0.1f \n", 30.0, 45.0, 100.0, 45.0);
    printf((char const *__restrict)"    -size width height      - Choose the target size for the images.\n");
    printf((char const *__restrict)"                              Defaults to %d, %d \n", 130, 150);
    printf((char const *__restrict)"    -pixelNorm <YES/NO>     - Turns on/off pixel value normalization. Defaults to \"Yes\"\n");
    printf((char const *__restrict)"    -postNorm <YES/NO>      - Turns on/off pixel value normalization. Defaults to \"Yes\"\n");
    printf((char const *__restrict)"    -preNorm <YES/NO>       - Turns on a pixel normalization before geometric normalization. Defaults to \"NO\"\n");
    printf((char const *__restrict)"    -preEdge <INT>          - Blends the edge of the image (INT pixels wide) before geometric normalization. Defaults to \"0\"\n");
    printf((char const *__restrict)"    -postEdge <INT>         - Blends the edge of the image (INT pixels wide) after normalization. Defaults to \"NO\"\n");
    printf((char const *__restrict)"    -noise <double>         - Add zero mean Gausian noise to each pixel.\n");
    printf((char const *__restrict)"                              The Standard Deviation is set to argument value times the dynamic\n");
    printf((char const *__restrict)"                              range of the image. Defaults to %f indicating zero noise added.\n", 0.0);
    printf((char const *__restrict)"    -reflect <YES/NO>       - Reflect the image down the center of the face.\n");
    printf((char const *__restrict)"    -half                   - Easy way to produce half sized images.\n");
    printf((char const *__restrict)"    -scale f                - Easy way to produce scaled images.\n");
    printf((char const *__restrict)"    -shift dx dy            - Shift all eye targets by dx and dy.\n");
    printf((char const *__restrict)"\t\t\t\t\t\t\t  Default is no shift, i.e. 0 0.\n");
    printf((char const *__restrict)"                              Postive dx moves the face to the left. Postive dy moves the face up.\n");
    printf((char const *__restrict)"  OTHER OPTIONS:\n");
    printf((char const *__restrict)"    -configSuffix           - Normalization configuration encoded in new image file names.\n");
    printf((char const *__restrict)"    -quiet                  - Turns off all messages.\n");
    printf((char const *__restrict)"    -debuglevel <int>       - Turns turns on debuging output.\n");
    exit(1);
  }
}
```