user: Please show me the C implementation that matches the assembly code listed below:

```asm
<display_usage>:
  endbr64
  sub    $0x8,%rsp
  lea    D4(%rip),%rdi
  call   <printf@plt>
  add    $0x8,%rsp
  ret
```

tool_calls: name: parse_data
arguments: data_label: D4
type: string

tool: D4: Usage: ppm [options]...
Apply filters to ppm images

Mandatory arguments to long options are mandatory for short options too.
  -i --input=FILE              Use FILE as input stream. Otherwise ppm uses stdin.
  -o --output=FILE             Outputs resulted image to FILE. Otherwise prints to stdout.
  -f --filter=F1,F2=1;7        Sets the filter to use on the input image. Where F1 represent 
                                 one of the filters listed bellow, F2=1 represent another with 1
                                 as an argument. Filters must be separated by commas. Arguments, 
                                 if more than one must be separated by semicolons.
  -c --custom=S,M=1;1;1...[,D] Runs a custom user defined convolution matrix where S is the matrix
                                 size (must be an odd number) and M defines the matrix values
                                 separated by semicolons. Optionally can be defined a divider to be
                                 applied to the sum.


The available filters are:
  INVERT       Inverts the image
  RGB=R[;G;B]  Color adjustment needs 1 or 3 integers ranging from -255 to 255 as parameter
  GREYSCALE    Converts a colored image to greyscale
  ROTATE=angle Rotates the image, acceptable angles are 90, 180, 270 and 360
  FLIP         Inverts the image upside down
  MIRROR       Inverts the image sideways
  BLUR[=S]     Blurs the image using a S size pixel matrix as sample
  BORDER       Border detection
  SHARP        Sharpens the image



assistant: ```c
void display_usage() {
  printf("Usage: ppm [options]...\n"
         "Apply filters to ppm images\n"
         "\n"
         "Mandatory arguments to long options are mandatory for short options too.\n"
         "  -i --input=FILE              Use FILE as input stream. Otherwise ppm uses stdin.\n"
         "  -o --output=FILE             Outputs resulted image to FILE. Otherwise prints to stdout.\n"
         "  -f --filter=F1,F2=1;7        Sets the filter to use on the input image. Where F1 represent \n"
         "                                 one of the filters listed bellow, F2=1 represent another with 1\n"
         "                                 as an argument. Filters must be separated by commas. Arguments, \n"
         "                                 if more than one must be separated by semicolons.\n"
         "  -c --custom=S,M=1;1;1...[,D] Runs a custom user defined convolution matrix where S is the matrix\n"
         "                                 size (must be an odd number) and M defines the matrix values\n"
         "                                 separated by semicolons. Optionally can be defined a divider to be\n"
         "                                 applied to the sum.\n"
         "\n"
         "\n"
         "The available filters are:\n"
         "  INVERT       Inverts the image\n"
         "  RGB=R[;G;B]  Color adjustment needs 1 or 3 integers ranging from -255 to 255 as parameter\n"
         "  GREYSCALE    Converts a colored image to greyscale\n"
         "  ROTATE=angle Rotates the image, acceptable angles are 90, 180, 270 and 360\n"
         "  FLIP         Inverts the image upside down\n"
         "  MIRROR       Inverts the image sideways\n"
         "  BLUR[=S]     Blurs the image using a S size pixel matrix as sample\n"
         "  BORDER       Border detection\n"
         "  SHARP        Sharpens the image\n"
         "\n");
}
```