user: Demonstrate the C code that generates the assembly output below:

```asm
<help>:
  endbr64
  push   %rbx
  mov    $0x0,%eax
  call   <setup_screen@plt>
  mov    $0x0,%esi
  mov    $0x4,%edi
  call   <move@plt>
  lea    D1(%rip),%rsi
  lea    D74(%rip),%rbx
  mov    %rbx,%rdi
  call   <printw@plt>
  lea    D88(%rip),%rsi
  mov    %rbx,%rdi
  call   <printw@plt>
  lea    D38(%rip),%rsi
  mov    %rbx,%rdi
  call   <printw@plt>
  lea    D9(%rip),%rsi
  mov    %rbx,%rdi
  call   <printw@plt>
  lea    D69(%rip),%rsi
  lea    D84(%rip),%rdi
  call   <printw@plt>
  lea    D110(%rip),%rsi
  mov    %rbx,%rdi
  call   <printw@plt>
  lea    D70(%rip),%rsi
  mov    %rbx,%rdi
  call   <printw@plt>
  lea    D56(%rip),%rsi
  mov    %rbx,%rdi
  call   <printw@plt>
  mov    $0x5,%esi
  mov    $0xe,%edi
  call   <move@plt>
  lea    D81(%rip),%rsi
  lea    D107(%rip),%rdi
  call   <printw@plt>
  mov    $0x0,%eax
  call   <refresh@plt>
  mov    $0x0,%eax
  call   <cbreak@plt>
  mov    $0x0,%eax
  call   <getch@plt>
  movsbl %al,%edi
  call   <tolower@plt>
  cmp    $0x68,%al
  je     L3
L14:
  pop    %rbx
  ret
L3:
  mov    $0x0,%eax
  call   <general_help@plt>
  jmp    L14
```

tool_calls: name: parse_data
arguments: data_label: D1
data_type: string
name: parse_data
arguments: data_label: D74
data_type: string
name: parse_data
arguments: data_label: D88
data_type: string
name: parse_data
arguments: data_label: D38
data_type: string
name: parse_data
arguments: data_label: D9
data_type: string
name: parse_data
arguments: data_label: D69
data_type: string
name: parse_data
arguments: data_label: D84
data_type: string
name: parse_data
arguments: data_label: D110
data_type: string
name: parse_data
arguments: data_label: D70
data_type: string
name: parse_data
arguments: data_label: D56
data_type: string
name: parse_data
arguments: data_label: D81
data_type: string
name: parse_data
arguments: data_label: D107
data_type: string

tool: D1: This is the main bibcursed screen. You can choose from four main

tool: D74: %s


tool: D88: options. Press 's' to search for key words in your BibTeX file.

tool: D38: You will be given a list of entry names containing the search

tool: D9: term. You can then display these by using the 'C' option on

tool: D69: this screen.

tool: D84: %s



tool: D110: The Add option will ask you for details about your new

tool: D70: reference, then add it to the database. The delete option will

tool: D56: remove a reference with the ID you supply from the database.

tool: D81: Press a key to continue, or H for more help

tool: D107: %s

assistant: ```c
help() {
  char tmp_char, lch;
  setup_screen();
  move(4, 0);
  printw("%s\n", "This is the main bibcursed screen. You can choose from four main");
  printw("%s\n", "options. Press 's' to search for key words in your BibTeX file.");
  printw("%s\n", "You will be given a list of entry names containing the search");
  printw("%s\n", "term. You can then display these by using the 'C' option on");
  printw("%s\n\n", "this screen.");
  printw("%s\n", "The Add option will ask you for details about your new");
  printw("%s\n", "reference, then add it to the database. The delete option will");
  printw("%s\n", "remove a reference with the ID you supply from the database.");
  move(14, 5);
  printw("%s", "Press a key to continue, or H for more help");
  refresh();
  cbreak();
  tmp_char = getch();
  lch = tolower(tmp_char);
  if (lch == 'h')
    general_help();
}
```