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

```asm
<display_help_page>:
  endbr64
  push   %rbx
  mov    $0x0,%eax
  call   <show_gnu_banner@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D99(%rip),%rdi
  call   <puts@plt>
  lea    D2(%rip),%rdi
  call   <puts@plt>
  lea    D368(%rip),%rdi
  call   <puts@plt>
  lea    D218(%rip),%rdi
  call   <puts@plt>
  lea    D321(%rip),%rbx
  mov    %rbx,%rsi
  lea    D409(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %rbx,%rsi
  lea    D379(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D108(%rip),%rdi
  call   <puts@plt>
  lea    D115(%rip),%rdi
  call   <puts@plt>
  mov    %rbx,%rsi
  lea    D210(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D71(%rip),%rdi
  call   <puts@plt>
  lea    D235(%rip),%rdi
  call   <puts@plt>
  lea    D331(%rip),%rdi
  call   <puts@plt>
  lea    D121(%rip),%rdi
  call   <puts@plt>
  lea    D391(%rip),%rdi
  call   <puts@plt>
  lea    D136(%rip),%rdi
  call   <puts@plt>
  lea    D267(%rip),%rdi
  call   <puts@plt>
  lea    D80(%rip),%rdi
  call   <puts@plt>
  lea    D7(%rip),%rdi
  call   <puts@plt>
  lea    D92(%rip),%rdi
  call   <puts@plt>
  lea    D262(%rip),%rdi
  call   <puts@plt>
  lea    D404(%rip),%rdi
  call   <puts@plt>
  lea    D234(%rip),%rdi
  call   <puts@plt>
  lea    D350(%rip),%rdi
  call   <puts@plt>
  lea    D140(%rip),%rdi
  call   <puts@plt>
  lea    D378(%rip),%rdi
  call   <puts@plt>
  lea    D341(%rip),%rdi
  call   <puts@plt>
  lea    D347(%rip),%rdi
  call   <puts@plt>
  lea    D83(%rip),%rdi
  call   <puts@plt>
  lea    D327(%rip),%rdi
  call   <puts@plt>
  lea    D206(%rip),%rdi
  call   <puts@plt>
  lea    D237(%rip),%rdi
  call   <puts@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D380(%rip),%rdi
  call   <puts@plt>
  lea    D157(%rip),%rdi
  call   <puts@plt>
  lea    D47(%rip),%rdi
  call   <puts@plt>
  lea    D40(%rip),%rdi
  call   <puts@plt>
  lea    D248(%rip),%rdi
  call   <puts@plt>
  lea    D87(%rip),%rdi
  call   <puts@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D14(%rip),%rdi
  call   <puts@plt>
  lea    D361(%rip),%rdi
  call   <puts@plt>
  lea    D60(%rip),%rdi
  call   <puts@plt>
  lea    D205(%rip),%rdi
  call   <puts@plt>
  pop    %rbx
  ret
```

tool_calls: name: retrieve_data
arguments: data_tag: D99
datatype: string
name: retrieve_data
arguments: data_tag: D2
datatype: string
name: retrieve_data
arguments: data_tag: D368
datatype: string
name: retrieve_data
arguments: data_tag: D218
datatype: string
name: retrieve_data
arguments: data_tag: D321
datatype: string
name: retrieve_data
arguments: data_tag: D409
datatype: string
name: retrieve_data
arguments: data_tag: D379
datatype: string
name: retrieve_data
arguments: data_tag: D108
datatype: string
name: retrieve_data
arguments: data_tag: D115
datatype: string
name: retrieve_data
arguments: data_tag: D210
datatype: string
name: retrieve_data
arguments: data_tag: D71
datatype: string
name: retrieve_data
arguments: data_tag: D235
datatype: string
name: retrieve_data
arguments: data_tag: D331
datatype: string
name: retrieve_data
arguments: data_tag: D121
datatype: string
name: retrieve_data
arguments: data_tag: D391
datatype: string
name: retrieve_data
arguments: data_tag: D136
datatype: string
name: retrieve_data
arguments: data_tag: D267
datatype: string
name: retrieve_data
arguments: data_tag: D80
datatype: string
name: retrieve_data
arguments: data_tag: D7
datatype: string
name: retrieve_data
arguments: data_tag: D92
datatype: string
name: retrieve_data
arguments: data_tag: D262
datatype: string
name: retrieve_data
arguments: data_tag: D404
datatype: string
name: retrieve_data
arguments: data_tag: D234
datatype: string
name: retrieve_data
arguments: data_tag: D350
datatype: string
name: retrieve_data
arguments: data_tag: D140
datatype: string
name: retrieve_data
arguments: data_tag: D378
datatype: string
name: retrieve_data
arguments: data_tag: D341
datatype: string
name: retrieve_data
arguments: data_tag: D347
datatype: string
name: retrieve_data
arguments: data_tag: D83
datatype: string
name: retrieve_data
arguments: data_tag: D327
datatype: string
name: retrieve_data
arguments: data_tag: D206
datatype: string
name: retrieve_data
arguments: data_tag: D237
datatype: string
name: retrieve_data
arguments: data_tag: D380
datatype: string
name: retrieve_data
arguments: data_tag: D157
datatype: string
name: retrieve_data
arguments: data_tag: D47
datatype: string
name: retrieve_data
arguments: data_tag: D40
datatype: string
name: retrieve_data
arguments: data_tag: D248
datatype: string
name: retrieve_data
arguments: data_tag: D87
datatype: string
name: retrieve_data
arguments: data_tag: D14
datatype: string
name: retrieve_data
arguments: data_tag: D361
datatype: string
name: retrieve_data
arguments: data_tag: D60
datatype: string
name: retrieve_data
arguments: data_tag: D205
datatype: string

tool: D99: Syntax:

tool: D2: -------

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

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


tool: D321: DNSNINJA

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


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


tool: D108: Parameters:

tool: D115: -----------

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



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

tool: D235:                                            specified, a forward DNS lookup will

tool: D331:                                            be performed

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

tool: D391:                                            used as targets for DNS queries.

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

tool: D267:                                            used when doing forward DNS lookups

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

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

tool: D92:                                            ip addresses or host names, depending

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

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

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

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

tool: D140:                                            the results in other  tools.

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

tool: D341:                                            following levels are supported:

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

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

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

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

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

tool: D380: Bug Reports and Other Comments:

tool: D157: -------------------------------

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

tool: D40: by email or IM using Jabber:


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

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

tool: D14: Source Code:

tool: D361: ------------

tool: D60: Fetch the latest version from:

tool: D205: + 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");
}
```