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

```asm
<usage>:
  endbr64
  push   %rbx
  mov    %rdi,%rsi
  lea    D91(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D303(%rip),%rdi
  call   <puts@plt>
  lea    D248(%rip),%rdi
  call   <puts@plt>
  lea    D194(%rip),%rdi
  call   <puts@plt>
  lea    D88(%rip),%rdi
  call   <puts@plt>
  lea    D270(%rip),%rdi
  call   <puts@plt>
  lea    D132(%rip),%rdi
  call   <puts@plt>
  lea    D67(%rip),%rdi
  call   <puts@plt>
  lea    D163(%rip),%rdi
  call   <puts@plt>
  movsd  D143(%rip),%xmm3
  movsd  D260(%rip),%xmm2
  movsd  D48(%rip),%xmm1
  movsd  D71(%rip),%xmm0
  lea    D84(%rip),%rbx
  mov    %rbx,%rdi
  mov    $0x4,%eax
  call   <printf@plt>
  lea    D175(%rip),%rdi
  call   <puts@plt>
  lea    D177(%rip),%rdi
  call   <puts@plt>
  lea    D410(%rip),%rdi
  call   <puts@plt>
  lea    D290(%rip),%rdi
  call   <puts@plt>
  lea    D191(%rip),%rdi
  call   <puts@plt>
  lea    D282(%rip),%rdi
  call   <puts@plt>
  movsd  D326(%rip),%xmm1
  movapd %xmm1,%xmm3
  movsd  D400(%rip),%xmm2
  movsd  D138(%rip),%xmm0
  mov    %rbx,%rdi
  mov    $0x4,%eax
  call   <printf@plt>
  lea    D47(%rip),%rdi
  call   <puts@plt>
  mov    $0x96,%edx
  mov    $0x82,%esi
  lea    D249(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D201(%rip),%rdi
  call   <puts@plt>
  lea    D294(%rip),%rdi
  call   <puts@plt>
  lea    D356(%rip),%rdi
  call   <puts@plt>
  lea    D56(%rip),%rdi
  call   <puts@plt>
  lea    D302(%rip),%rdi
  call   <puts@plt>
  lea    D317(%rip),%rdi
  call   <puts@plt>
  lea    D363(%rip),%rdi
  call   <puts@plt>
  pxor   %xmm0,%xmm0
  lea    D7(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  lea    D17(%rip),%rdi
  call   <puts@plt>
  lea    D103(%rip),%rdi
  call   <puts@plt>
  lea    D316(%rip),%rdi
  call   <puts@plt>
  lea    D110(%rip),%rdi
  call   <puts@plt>
  lea    D131(%rip),%rdi
  call   <puts@plt>
  lea    D415(%rip),%rdi
  call   <puts@plt>
  lea    D411(%rip),%rdi
  call   <puts@plt>
  lea    D170(%rip),%rdi
  call   <puts@plt>
  lea    D406(%rip),%rdi
  call   <puts@plt>
  lea    D397(%rip),%rdi
  call   <puts@plt>
  mov    $0x1,%edi
  call   <exit@plt>
  pop    %rbx
  ret
```

tool_calls: name: unpack_data
arguments: label: D91
datatype: string
name: unpack_data
arguments: label: D303
datatype: string
name: unpack_data
arguments: label: D248
datatype: string
name: unpack_data
arguments: label: D194
datatype: string
name: unpack_data
arguments: label: D88
datatype: string
name: unpack_data
arguments: label: D270
datatype: string
name: unpack_data
arguments: label: D132
datatype: string
name: unpack_data
arguments: label: D67
datatype: string
name: unpack_data
arguments: label: D163
datatype: string
name: unpack_data
arguments: label: D143
datatype: f64
name: unpack_data
arguments: label: D260
datatype: f64
name: unpack_data
arguments: label: D48
datatype: f64
name: unpack_data
arguments: label: D71
datatype: f64
name: unpack_data
arguments: label: D84
datatype: string
name: unpack_data
arguments: label: D175
datatype: string
name: unpack_data
arguments: label: D177
datatype: string
name: unpack_data
arguments: label: D410
datatype: string
name: unpack_data
arguments: label: D290
datatype: string
name: unpack_data
arguments: label: D191
datatype: string
name: unpack_data
arguments: label: D282
datatype: string
name: unpack_data
arguments: label: D326
datatype: f64
name: unpack_data
arguments: label: D400
datatype: f64
name: unpack_data
arguments: label: D138
datatype: f64
name: unpack_data
arguments: label: D47
datatype: string
name: unpack_data
arguments: label: D249
datatype: string
name: unpack_data
arguments: label: D201
datatype: string
name: unpack_data
arguments: label: D294
datatype: string
name: unpack_data
arguments: label: D356
datatype: string
name: unpack_data
arguments: label: D56
datatype: string
name: unpack_data
arguments: label: D302
datatype: string
name: unpack_data
arguments: label: D317
datatype: string
name: unpack_data
arguments: label: D363
datatype: string
name: unpack_data
arguments: label: D7
datatype: string
name: unpack_data
arguments: label: D17
datatype: string
name: unpack_data
arguments: label: D103
datatype: string
name: unpack_data
arguments: label: D316
datatype: string
name: unpack_data
arguments: label: D110
datatype: string
name: unpack_data
arguments: label: D131
datatype: string
name: unpack_data
arguments: label: D415
datatype: string
name: unpack_data
arguments: label: D411
datatype: string
name: unpack_data
arguments: label: D170
datatype: string
name: unpack_data
arguments: label: D406
datatype: string
name: unpack_data
arguments: label: D397
datatype: string

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


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

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

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

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

tool: D270:   NORMALIZATION OPTIONS:

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

tool: D67:                               Defaults to "Yes".

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

tool: D143: 118

tool: D260: 64

tool: D48: 50

tool: D71: 65

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


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

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

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

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

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

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

tool: D326: 45

tool: D400: 100

tool: D138: 30

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

tool: D249:                               Defaults to %d, %d 


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

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

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

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

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

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

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

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


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

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

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

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

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

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

tool: D411:   OTHER OPTIONS:

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

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

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