user: What would the C source look like for the assembly code provided here?

```asm
<display_help>:
  endbr64
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x160,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x158(%rsp)
  xor    %eax,%eax
  mov    %rsp,%rdi
  lea    D12(%rip),%rsi
  mov    $0x2a,%ecx
  rep movsq %ds:(%rsi),%es:(%rdi)
  call   <erase@plt>
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <move@plt>
  mov    %rsp,%rbp
  lea    D11(%rip),%r12
  lea    D5(%rip),%r14
  lea    D4(%rip),%r13
  jmp    L25
L44:
  mov    %r14,%rsi
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <fp_printf@plt>
L15:
  add    $0x8,%rbp
L25:
  mov    0x0(%rbp),%rbx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L46
  cmpb   $0x0,(%rbx)
  je     L44
  mov    %rbx,%rdx
  mov    %r13,%rsi
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <fp_printf@plt>
  jmp    L15
L46:
  call   <menuContinue@plt>
  mov    0x158(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L49
  add    $0x160,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
L49:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: read_data
arguments: data_tag: D11
datatype: string
name: read_data
arguments: data_tag: D5
datatype: string
name: read_data
arguments: data_tag: D4
datatype: string

tool: D11: EOHS!

tool: D5: 


tool: D4: %s


assistant: ```c
void display_help(void) {
  char *help_text[] = {"Help Screen for cfdisk", "", "This is cfdisk, a curses based disk partitioning program, which", "allows you to create, delete and modify partitions on your hard", "disk drive.", "", "Copyright (C) 1994-1999 Kevin E. Martin & aeb", "", "Command      Meaning", "-------      -------", "  b          Toggle bootable flag of the current partition", "  d          Delete the current partition", "  g          Change cylinders, heads, sectors-per-track parameters", "             WARNING: This option should only be used by people who", "             know what they are doing.", "  h          Print this screen", "  m          Maximize disk usage of the current partition", "             Note: This may make the partition incompatible with", "             DOS, OS/2, ...", "  n          Create new partition from free space", "  p          Print partition table to the screen or to a file", "             There are several different formats for the partition", "             that you can choose from:", "                r - Raw data (exactly what would be written to disk)", "                s - Table ordered by sectors", "                t - Table in raw format", "  q          Quit program without writing partition table", "  t          Change the filesystem type", "  u          Change units of the partition size display", "             Rotates through MB, sectors and cylinders", "  W          Write partition table to disk (must enter upper case W)", "             Since this might destroy data on the disk, you must", "             either confirm or deny the write by entering `yes' or", "             `no'", "Up Arrow     Move cursor to the previous partition", "Down Arrow   Move cursor to the next partition", "CTRL-L       Redraws the screen", "  ?          Print this screen", "", "Note: All of the commands can be entered with either upper or lower", "case letters (except for Writes).", "EOHS!"};
  int cur_line = 0;
  FILE *fp = NULL;
  erase();
  move(0, 0);
  while (strcmp(help_text[cur_line], "EOHS!")) {
    if (help_text[cur_line][0])
      fp_printf(fp, "%s\n", help_text[cur_line]);
    else
      fp_printf(fp, "\n");
    cur_line++;
  }
  menuContinue();
}
```