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

```asm
<display_help_page>:
  endbr64
  push   %rbp
  xor    %eax,%eax
  lea    D182(%rip),%rbp
  call   <show_gnu_banner@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D33(%rip),%rdi
  call   <puts@plt>
  lea    D170(%rip),%rdi
  call   <puts@plt>
  lea    D235(%rip),%rdi
  call   <puts@plt>
  lea    D106(%rip),%rdi
  call   <puts@plt>
  mov    %rbp,%rsi
  lea    D240(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbp,%rsi
  lea    D77(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D194(%rip),%rdi
  call   <puts@plt>
  lea    D316(%rip),%rdi
  call   <puts@plt>
  mov    %rbp,%rsi
  lea    D271(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D350(%rip),%rdi
  call   <puts@plt>
  lea    D28(%rip),%rdi
  call   <puts@plt>
  lea    D21(%rip),%rdi
  call   <puts@plt>
  lea    D319(%rip),%rdi
  call   <puts@plt>
  lea    D284(%rip),%rdi
  call   <puts@plt>
  lea    D76(%rip),%rdi
  call   <puts@plt>
  lea    D295(%rip),%rdi
  call   <puts@plt>
  lea    D1(%rip),%rdi
  call   <puts@plt>
  lea    D188(%rip),%rdi
  call   <puts@plt>
  lea    D415(%rip),%rdi
  call   <puts@plt>
  lea    D94(%rip),%rdi
  call   <puts@plt>
  lea    D13(%rip),%rdi
  call   <puts@plt>
  lea    D52(%rip),%rdi
  call   <puts@plt>
  lea    D393(%rip),%rdi
  call   <puts@plt>
  lea    D104(%rip),%rdi
  call   <puts@plt>
  lea    D302(%rip),%rdi
  call   <puts@plt>
  lea    D353(%rip),%rdi
  call   <puts@plt>
  lea    D365(%rip),%rdi
  call   <puts@plt>
  lea    D27(%rip),%rdi
  call   <puts@plt>
  lea    D306(%rip),%rdi
  call   <puts@plt>
  lea    D356(%rip),%rdi
  call   <puts@plt>
  lea    D54(%rip),%rdi
  call   <puts@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D156(%rip),%rdi
  call   <puts@plt>
  lea    D63(%rip),%rdi
  call   <puts@plt>
  lea    D390(%rip),%rdi
  call   <puts@plt>
  lea    D107(%rip),%rdi
  call   <puts@plt>
  lea    D349(%rip),%rdi
  call   <puts@plt>
  lea    D282(%rip),%rdi
  call   <puts@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D136(%rip),%rdi
  call   <puts@plt>
  lea    D98(%rip),%rdi
  call   <puts@plt>
  lea    D8(%rip),%rdi
  call   <puts@plt>
  lea    D125(%rip),%rdi
  pop    %rbp
  jmp    1090 <puts@plt>
```

tool_calls: name: retrieve_data
arguments: tag: D182
data_type: string
name: retrieve_data
arguments: tag: D33
data_type: string
name: retrieve_data
arguments: tag: D170
data_type: string
name: retrieve_data
arguments: tag: D235
data_type: string
name: retrieve_data
arguments: tag: D106
data_type: string
name: retrieve_data
arguments: tag: D240
data_type: string
name: retrieve_data
arguments: tag: D77
data_type: string
name: retrieve_data
arguments: tag: D194
data_type: string
name: retrieve_data
arguments: tag: D316
data_type: string
name: retrieve_data
arguments: tag: D271
data_type: string
name: retrieve_data
arguments: tag: D350
data_type: string
name: retrieve_data
arguments: tag: D28
data_type: string
name: retrieve_data
arguments: tag: D21
data_type: string
name: retrieve_data
arguments: tag: D319
data_type: string
name: retrieve_data
arguments: tag: D284
data_type: string
name: retrieve_data
arguments: tag: D76
data_type: string
name: retrieve_data
arguments: tag: D295
data_type: string
name: retrieve_data
arguments: tag: D1
data_type: string
name: retrieve_data
arguments: tag: D188
data_type: string
name: retrieve_data
arguments: tag: D415
data_type: string
name: retrieve_data
arguments: tag: D94
data_type: string
name: retrieve_data
arguments: tag: D13
data_type: string
name: retrieve_data
arguments: tag: D52
data_type: string
name: retrieve_data
arguments: tag: D393
data_type: string
name: retrieve_data
arguments: tag: D104
data_type: string
name: retrieve_data
arguments: tag: D302
data_type: string
name: retrieve_data
arguments: tag: D353
data_type: string
name: retrieve_data
arguments: tag: D365
data_type: string
name: retrieve_data
arguments: tag: D27
data_type: string
name: retrieve_data
arguments: tag: D306
data_type: string
name: retrieve_data
arguments: tag: D356
data_type: string
name: retrieve_data
arguments: tag: D54
data_type: string
name: retrieve_data
arguments: tag: D156
data_type: string
name: retrieve_data
arguments: tag: D63
data_type: string
name: retrieve_data
arguments: tag: D390
data_type: string
name: retrieve_data
arguments: tag: D107
data_type: string
name: retrieve_data
arguments: tag: D349
data_type: string
name: retrieve_data
arguments: tag: D282
data_type: string
name: retrieve_data
arguments: tag: D136
data_type: string
name: retrieve_data
arguments: tag: D98
data_type: string
name: retrieve_data
arguments: tag: D8
data_type: string
name: retrieve_data
arguments: tag: D125
data_type: string

tool: D182: DNSNINJA

tool: D33: Syntax:

tool: D170: -------

tool: D235: To perform forward DNS lookups the -i parameter must be specified. When reverse

tool: D106: DNS lookups shall be performed, the -r parameter must be specified additionally.


tool: D240: Forward DNS Lookups:     %s [OPTIONS] -i <file>


tool: D77: Reverse DNS lookups:     %s [OPTIONS] -r -i <file>


tool: D194: Parameters:

tool: D316: -----------

tool: D271: %s currently supports the following parameters:



tool: D350: --reverse, -r                              Do a reverse DNS lookup. If not

tool: D28:                                            specified, a forward DNS lookup will

tool: D21:                                            be performed

tool: D319: --server=<ip1,ip2,...>, -s <ip1,ip2,...>   List of DNS servers, which shall be

tool: D284:                                            used as targets for DNS queries.

tool: D76: --domain=<mydomain>, -d <mydomain>         Specify the domain to be queried. Only

tool: D295:                                            used when doing forward DNS lookups

tool: D1:                                            (e.g. -d foo.org).

tool: D188: --inputfile=<inputfile>, -i <inputfile>    The file containing either a list of

tool: D415:                                            ip addresses or host names, depending

tool: D94:                                            on the lookup mode (reverse, forward).

tool: D13: --outputfile=<outputfile>, -o <outputfile> Allows you to write the query results

tool: D52:                                            into a simple, comma-separated text

tool: D393:                                            file. This allows you to further process

tool: D104:                                            the results in other  tools.

tool: D302: --loglevel=<level>, -l <level>             Specifies the desired log level. The

tool: D353:                                            following levels are supported:

tool: D365:                                              1 = ERROR (Log errors only)

tool: D27:                                              2 = INFO (Log additional information)

tool: D306:                                              3 = DEBUG (Log debug level information)

tool: D356: --version, -v                              Displays version information.

tool: D54: --help, -h                                 Displays this help page.

tool: D156: Bug Reports and Other Comments:

tool: D63: -------------------------------

tool: D390: I'm glad to receive comments and bug reports on this tool. You can best reach me

tool: D107: by email or IM using Jabber:


tool: D349: + E-Mail:     andre.gasser@gmx.ch

tool: D282: + Jabber:     sh0ka@jabber.ccc.de

tool: D136: Source Code:

tool: D98: ------------

tool: D8: Fetch the latest version from:

tool: D125: + GitHub:     https://github.com/shoka/dnsninja


assistant: ```c
void display_help_page(void) {
  show_gnu_banner();
  printf("\n");
  printf("Syntax:\n");
  printf("-------\n");
  printf("To perform forward DNS lookups the -i parameter must be specified. When reverse\n");
  printf("DNS lookups shall be performed, the -r parameter must be specified additionally.\n\n");
  printf("Forward DNS Lookups:     %s [OPTIONS] -i <file>\n", "DNSNINJA");
  printf("Reverse DNS lookups:     %s [OPTIONS] -r -i <file>\n", "DNSNINJA");
  printf("\n");
  printf("Parameters:\n");
  printf("-----------\n");
  printf("%s currently supports the following parameters:\n\n", "DNSNINJA");
  printf("--reverse, -r                              Do a reverse DNS lookup. If not\n");
  printf("                                           specified, a forward DNS lookup will\n");
  printf("                                           be performed\n");
  printf("--server=<ip1,ip2,...>, -s <ip1,ip2,...>   List of DNS servers, which shall be\n");
  printf("                                           used as targets for DNS queries.\n");
  printf("--domain=<mydomain>, -d <mydomain>         Specify the domain to be queried. Only\n");
  printf("                                           used when doing forward DNS lookups\n");
  printf("                                           (e.g. -d foo.org).\n");
  printf("--inputfile=<inputfile>, -i <inputfile>    The file containing either a list of\n");
  printf("                                           ip addresses or host names, depending\n");
  printf("                                           on the lookup mode (reverse, forward).\n");
  printf("--outputfile=<outputfile>, -o <outputfile> Allows you to write the query results\n");
  printf("                                           into a simple, comma-separated text\n");
  printf("                                           file. This allows you to further process\n");
  printf("                                           the results in other  tools.\n");
  printf("--loglevel=<level>, -l <level>             Specifies the desired log level. The\n");
  printf("                                           following levels are supported:\n");
  printf("                                             1 = ERROR (Log errors only)\n");
  printf("                                             2 = INFO (Log additional information)\n");
  printf("                                             3 = DEBUG (Log debug level information)\n");
  printf("--version, -v                              Displays version information.\n");
  printf("--help, -h                                 Displays this help page.\n");
  printf("\n");
  printf("Bug Reports and Other Comments:\n");
  printf("-------------------------------\n");
  printf("I'm glad to receive comments and bug reports on this tool. You can best reach me\n");
  printf("by email or IM using Jabber:\n\n");
  printf("+ E-Mail:     andre.gasser@gmx.ch\n");
  printf("+ Jabber:     sh0ka@jabber.ccc.de\n");
  printf("\n");
  printf("Source Code:\n");
  printf("------------\n");
  printf("Fetch the latest version from:\n");
  printf("+ GitHub:     https://github.com/shoka/dnsninja\n\n");
}
```