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

```asm
<print_help>:
  endbr64
  push   %rbp
  mov    %rdi,%rbp
  lea    D8(%rip),%rdi
  call   <puts@plt>
  lea    D0(%rip),%rdi
  call   <puts@plt>
  mov    %rbp,%rsi
  lea    D24(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  xor    %edi,%edi
  pop    %rbp
  jmp    1090 <exit@plt>
```

tool_calls: name: extract_symbolic_data
arguments: tag: D8
type_guessed: string
name: extract_symbolic_data
arguments: tag: D0
type_guessed: string
name: extract_symbolic_data
arguments: tag: D24
type_guessed: string

tool: D8: hlsdl v0.27

tool: D0: (c) 2017-2020 @selsta, samsamsam@o2.pl

tool: D24: Usage: %s [options] url

-b ... Automatically choose the best quality.
-W ... Choose largest width lower or equal than this.
-H ... Choose largest height lower or equal than this.
-A ... Select audio language.
-v ... Verbose more information.
-o ... Choose name of output file ("-" alias for stdout).
-u ... Set custom HTTP User-Agent header.
-h ... Set custom HTTP header.
-p ... Set proxy uri.
-k ... Allow to replace part of AES key uri - old.
-n ... Allow to replace part of AES key uri - new.
-f ... Force overwriting the output file.
-F ... Force ignore detection of DRM.
-K ... Force AES key value (hexstring)
-q ... Print less to the console.
-d ... Print the openssl decryption command.
-t ... Print the links to the .ts files.
-s ... Set live start offset in seconds.
-i ... Set live stream download duration in seconds.
-e ... Set refresh delay in seconds.
-r ... Set max retries at open.
-w ... Set max download segment retries.
-a ... Set additional url to the audio media playlist.
-c ... Treat HTTP code 206 as 200 even if request was made without range header.
-C ... the file name of file holding cookie data in the old Netscape / Mozilla cookie data format.


assistant: ```c
void print_help(const char *filename) {
  printf("hlsdl v0.27\n");
  printf("(c) 2017-2020 @selsta, samsamsam@o2.pl\n");
  printf("Usage: %s [options] url\n\n"
         "-b ... Automatically choose the best quality.\n"
         "-W ... Choose largest width lower or equal than this.\n"
         "-H ... Choose largest height lower or equal than this.\n"
         "-A ... Select audio language.\n"
         "-v ... Verbose more information.\n"
         "-o ... Choose name of output file (\"-\" alias for stdout).\n"
         "-u ... Set custom HTTP User-Agent header.\n"
         "-h ... Set custom HTTP header.\n"
         "-p ... Set proxy uri.\n"
         "-k ... Allow to replace part of AES key uri - old.\n"
         "-n ... Allow to replace part of AES key uri - new.\n"
         "-f ... Force overwriting the output file.\n"
         "-F ... Force ignore detection of DRM.\n"
         "-K ... Force AES key value (hexstring)\n"
         "-q ... Print less to the console.\n"
         "-d ... Print the openssl decryption command.\n"
         "-t ... Print the links to the .ts files.\n"
         "-s ... Set live start offset in seconds.\n"
         "-i ... Set live stream download duration in seconds.\n"
         "-e ... Set refresh delay in seconds.\n"
         "-r ... Set max retries at open.\n"
         "-w ... Set max download segment retries.\n"
         "-a ... Set additional url to the audio media playlist.\n"
         "-c ... Treat HTTP code 206 as 200 even if request was made without range header.\n"
         "-C ... the file name of file holding cookie data in the old Netscape / Mozilla cookie data format.\n",
         filename);
  exit(0);
}
```