user: 下面的汇编指令对应的C源代码是什么：

```asm
<display_help>:
  endbr64
  push   %r14
  lea    D9(%rip),%rsi
  mov    $0x2a,%ecx
  lea    D32(%rip),%r14
  push   %r13
  lea    D5(%rip),%r13
  push   %r12
  push   %rbp
  lea    D3(%rip),%rbp
  push   %rbx
  sub    $0x160,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x158(%rsp)
  xor    %eax,%eax
  mov    %rsp,%rdi
  mov    %rsp,%rbx
  rep movsq %ds:(%rsi),%es:(%rdi)
  call   <erase@plt>
  xor    %esi,%esi
  xor    %edi,%edi
  call   <move@plt>
  jmp    L48
L0:
  mov    %r12,%rdx
  mov    %r13,%rsi
  xor    %edi,%edi
  xor    %eax,%eax
  call   <fp_printf@plt>
L8:
  add    $0x8,%rbx
L48:
  mov    (%rbx),%r12
  mov    %rbp,%rsi
  mov    %r12,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L27
  cmpb   $0x0,(%r12)
  jne    L0
  mov    %r14,%rsi
  xor    %edi,%edi
  xor    %eax,%eax
  call   <fp_printf@plt>
  jmp    L8
  nopl   0x0(%rax,%rax,1)
L27:
  mov    0x158(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L39
  add    $0x160,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  jmp    10c0 <menuContinue@plt>
L39:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D32
data_type: string
name: extract_symbolic_data
arguments: data_tag: D5
data_type: string
name: extract_symbolic_data
arguments: data_tag: D3
data_type: string

tool: D32: 


tool: D5: %s


tool: D3: EOHS!

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();
}
```