user: 请从给定的汇编指令推导出C源代码:

```asm
<usage>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  lea    D200(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D22(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D160(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D421(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D320(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D251(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D396(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D65(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D220(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movsd  D393(%rip),%xmm2
  movsd  D429(%rip),%xmm1
  movsd  D357(%rip),%xmm0
  mov    D288(%rip),%rax
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  lea    D337(%rip),%rax
  mov    %rax,%rdi
  mov    $0x4,%eax
  call   <printf@plt>
  lea    D174(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D105(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D334(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D454(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D57(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D50(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movsd  D102(%rip),%xmm2
  movsd  D411(%rip),%xmm1
  movsd  D102(%rip),%xmm0
  mov    D307(%rip),%rax
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  lea    D337(%rip),%rax
  mov    %rax,%rdi
  mov    $0x4,%eax
  call   <printf@plt>
  lea    D293(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x96,%edx
  mov    $0x82,%esi
  lea    D72(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D292(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D286(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D123(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D413(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D201(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D127(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D134(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    D271(%rip),%rax
  movq   %rax,%xmm0
  lea    D218(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  lea    D140(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D405(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D241(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D84(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D62(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D279(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D326(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D155(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D215(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D176(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x1,%edi
  call   <exit@plt>
  nop
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_tag: D200
type_guessed: string
name: parse_data
arguments: data_tag: D22
type_guessed: string
name: parse_data
arguments: data_tag: D160
type_guessed: string
name: parse_data
arguments: data_tag: D421
type_guessed: string
name: parse_data
arguments: data_tag: D320
type_guessed: string
name: parse_data
arguments: data_tag: D251
type_guessed: string
name: parse_data
arguments: data_tag: D396
type_guessed: string
name: parse_data
arguments: data_tag: D65
type_guessed: string
name: parse_data
arguments: data_tag: D220
type_guessed: string
name: parse_data
arguments: data_tag: D393
type_guessed: f64
name: parse_data
arguments: data_tag: D429
type_guessed: f64
name: parse_data
arguments: data_tag: D357
type_guessed: f64
name: parse_data
arguments: data_tag: D288
type_guessed: f64
name: parse_data
arguments: data_tag: D337
type_guessed: string
name: parse_data
arguments: data_tag: D174
type_guessed: string
name: parse_data
arguments: data_tag: D105
type_guessed: string
name: parse_data
arguments: data_tag: D334
type_guessed: string
name: parse_data
arguments: data_tag: D454
type_guessed: string
name: parse_data
arguments: data_tag: D57
type_guessed: string
name: parse_data
arguments: data_tag: D50
type_guessed: string
name: parse_data
arguments: data_tag: D102
type_guessed: f64
name: parse_data
arguments: data_tag: D411
type_guessed: f64
name: parse_data
arguments: data_tag: D307
type_guessed: f64
name: parse_data
arguments: data_tag: D293
type_guessed: string
name: parse_data
arguments: data_tag: D72
type_guessed: string
name: parse_data
arguments: data_tag: D292
type_guessed: string
name: parse_data
arguments: data_tag: D286
type_guessed: string
name: parse_data
arguments: data_tag: D123
type_guessed: string
name: parse_data
arguments: data_tag: D413
type_guessed: string
name: parse_data
arguments: data_tag: D201
type_guessed: string
name: parse_data
arguments: data_tag: D127
type_guessed: string
name: parse_data
arguments: data_tag: D134
type_guessed: string
name: parse_data
arguments: data_tag: D271
type_guessed: f64
name: parse_data
arguments: data_tag: D218
type_guessed: string
name: parse_data
arguments: data_tag: D140
type_guessed: string
name: parse_data
arguments: data_tag: D405
type_guessed: string
name: parse_data
arguments: data_tag: D241
type_guessed: string
name: parse_data
arguments: data_tag: D84
type_guessed: string
name: parse_data
arguments: data_tag: D62
type_guessed: string
name: parse_data
arguments: data_tag: D279
type_guessed: string
name: parse_data
arguments: data_tag: D326
type_guessed: string
name: parse_data
arguments: data_tag: D155
type_guessed: string
name: parse_data
arguments: data_tag: D215
type_guessed: string
name: parse_data
arguments: data_tag: D176
type_guessed: string

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


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

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

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

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

tool: D251:   NORMALIZATION OPTIONS:

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

tool: D65:                               Defaults to "Yes".

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

tool: D393: 118

tool: D429: 64

tool: D357: 50

tool: D288: 65

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


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

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

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

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

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

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

tool: D102: 45

tool: D411: 100

tool: D307: 30

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

tool: D72:                               Defaults to %d, %d 


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

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

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

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

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

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

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

tool: D271: 0

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


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

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

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

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

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

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

tool: D326:   OTHER OPTIONS:

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

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

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