user: Please show me the C implementation that matches the assembly code listed below:

```asm
<help>:
  endbr64
  push   %rbx
  lea    D121(%rip),%rbx
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D111(%rip),%rdi
  call   <printf@plt>
  lea    D101(%rip),%rdi
  call   <printf@plt>
  lea    D102(%rip),%rdi
  call   <printf@plt>
  lea    D60(%rip),%rdi
  call   <printf@plt>
  lea    D83(%rip),%rdi
  call   <printf@plt>
  lea    D9(%rip),%rdi
  call   <printf@plt>
  lea    D117(%rip),%rdi
  call   <printf@plt>
  lea    D104(%rip),%rdi
  call   <printf@plt>
  lea    D2(%rip),%rdi
  call   <printf@plt>
  lea    D93(%rip),%rdi
  call   <printf@plt>
  lea    D88(%rip),%rdi
  call   <printf@plt>
  lea    D81(%rip),%rdi
  call   <printf@plt>
  lea    D109(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  pop    %rbx
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D121
type_guessed: string
name: disassemble_data
arguments: tag: D111
type_guessed: string
name: disassemble_data
arguments: tag: D101
type_guessed: string
name: disassemble_data
arguments: tag: D102
type_guessed: string
name: disassemble_data
arguments: tag: D60
type_guessed: string
name: disassemble_data
arguments: tag: D83
type_guessed: string
name: disassemble_data
arguments: tag: D9
type_guessed: string
name: disassemble_data
arguments: tag: D117
type_guessed: string
name: disassemble_data
arguments: tag: D104
type_guessed: string
name: disassemble_data
arguments: tag: D2
type_guessed: string
name: disassemble_data
arguments: tag: D93
type_guessed: string
name: disassemble_data
arguments: tag: D88
type_guessed: string
name: disassemble_data
arguments: tag: D81
type_guessed: string
name: disassemble_data
arguments: tag: D109
type_guessed: string

tool: D121: |---------------------------------|


tool: D111: | ls: list the files.             |


tool: D101: | cd: move in directories.        |


tool: D102: | cat: see the content of a file. |


tool: D60: | touch: create a blank file.     |


tool: D83: | clear: clean the screen.        |


tool: D9: | help: show this message.        |


tool: D117: | exit: exit from the shell.      |


tool: D104: | rm: remove a file.              |


tool: D2: | rename: rename a file.          |


tool: D93: | pwd: show current directory.    |


tool: D88: | whoami: show the current user.  |


tool: D81: | mkdir: make a new directory.    |


tool: D109: | sp: show permissions.           |


assistant: ```c
void help(void) {
  printf("|---------------------------------|\n");
  printf("| ls: list the files.             |\n");
  printf("| cd: move in directories.        |\n");
  printf("| cat: see the content of a file. |\n");
  printf("| touch: create a blank file.     |\n");
  printf("| clear: clean the screen.        |\n");
  printf("| help: show this message.        |\n");
  printf("| exit: exit from the shell.      |\n");
  printf("| rm: remove a file.              |\n");
  printf("| rename: rename a file.          |\n");
  printf("| pwd: show current directory.    |\n");
  printf("| whoami: show the current user.  |\n");
  printf("| mkdir: make a new directory.    |\n");
  printf("| sp: show permissions.           |\n");
  printf("|---------------------------------|\n");
}
```