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

```asm
<help_message>:
  endbr64
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  lea    D170(%rip),%rdi
  call   <printf@plt>
  mov    $0x0,%ebx
  lea    D70(%rip),%rbp
  lea    D16(%rip),%r13
  lea    D145(%rip),%r12
  jmp    L48
L55:
  mov    %r13,%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
L57:
  add    $0x1,%ebx
  cmp    $0x1e,%ebx
  je     L24
L48:
  mov    %rbp,%rdi
  call   <printf@plt>
  mov    $0x1312d00,%eax
L26:
  sub    $0x1,%eax
  jne    L26
  cmp    $0xa,%ebx
  je     L55
  cmp    $0x14,%ebx
  jne    L57
  jmp    L55
L24:
  lea    D14(%rip),%rdi
  call   <printf@plt>
  lea    D55(%rip),%rdi
  call   <printf@plt>
  lea    D17(%rip),%rdi
  call   <printf@plt>
  lea    D9(%rip),%rdi
  call   <printf@plt>
  lea    D32(%rip),%rdi
  call   <printf@plt>
  lea    D182(%rip),%rdi
  call   <printf@plt>
  lea    D29(%rip),%rdi
  call   <printf@plt>
  lea    D163(%rip),%rdi
  call   <printf@plt>
  lea    D15(%rip),%rdi
  call   <printf@plt>
  lea    D177(%rip),%rdi
  call   <printf@plt>
  lea    D31(%rip),%rdi
  call   <printf@plt>
  lea    D114(%rip),%rdi
  call   <printf@plt>
  lea    D188(%rip),%rdi
  call   <printf@plt>
  lea    D68(%rip),%rdi
  call   <printf@plt>
  lea    D63(%rip),%rdi
  call   <printf@plt>
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D170
data_type: string
name: disassemble_data
arguments: data_tag: D70
data_type: string
name: disassemble_data
arguments: data_tag: D16
data_type: string
name: disassemble_data
arguments: data_tag: D145
data_type: string
name: disassemble_data
arguments: data_tag: D14
data_type: string
name: disassemble_data
arguments: data_tag: D55
data_type: string
name: disassemble_data
arguments: data_tag: D17
data_type: string
name: disassemble_data
arguments: data_tag: D9
data_type: string
name: disassemble_data
arguments: data_tag: D32
data_type: string
name: disassemble_data
arguments: data_tag: D182
data_type: string
name: disassemble_data
arguments: data_tag: D29
data_type: string
name: disassemble_data
arguments: data_tag: D163
data_type: string
name: disassemble_data
arguments: data_tag: D15
data_type: string
name: disassemble_data
arguments: data_tag: D177
data_type: string
name: disassemble_data
arguments: data_tag: D31
data_type: string
name: disassemble_data
arguments: data_tag: D114
data_type: string
name: disassemble_data
arguments: data_tag: D188
data_type: string
name: disassemble_data
arguments: data_tag: D68
data_type: string
name: disassemble_data
arguments: data_tag: D63
data_type: string

tool: D170: 
Stuck in a pickle? Give us a few minutes, a representative will be with you shortly!


tool: D70: .

tool: D16:            

tool: D145: 

tool: D14: 

JK ain't nobody got time for dat!


tool: D55: 
Here is a list of your options:


tool: D17: 	'a' - change the conditional code (case sensitive)


tool: D9: 	'c' - *change the value of a memory location


tool: D32: 	'd' - dumps out CPU


tool: D182: 	'f' - change running flag to 1


tool: D29: 	'h' or '?' - help menu (seems kinda redundant at this point)


tool: D163: 	'p' - *change the PC


tool: D15: 	'q' - quits the program


tool: D177: 	'r' - *change the value of a register


tool: D31: 	's' - *dumps a specific section of memory


tool: D114: 	an integer > 0 - executes N instruction cycles (don't get too crazy with this one!)


tool: D188: 	return - executes one instruction cycle


tool: D68: 		*(*YOU MUST ENTER A 4-DIGIT HEX VALUE OR ELSE!)


tool: D63: 			*this assumption was approved by Dr. Jim Sasaki


assistant: ```c
void help_message(void) {
  printf("\nStuck in a pickle? Give us a few minutes, a representative will be with you shortly!\n");
  for (int i = 0; i < 30; i++) {
    printf(".");
    int j = 0;
    while (j < 1e7 * 2) {
      j++;
    }
    if (i == 10 || i == 20) {
      printf("\r           ");
      printf("\r");
    }
  }
  printf("\n\nJK ain't nobody got time for dat!\n");
  printf("\nHere is a list of your options:\n");
  printf("\t'a' - change the conditional code (case sensitive)\n");
  printf("\t'c' - *change the value of a memory location\n");
  printf("\t'd' - dumps out CPU\n");
  printf("\t'f' - change running flag to 1\n");
  printf("\t'h' or '?' - help menu (seems kinda redundant at this point)\n");
  printf("\t'p' - *change the PC\n");
  printf("\t'q' - quits the program\n");
  printf("\t'r' - *change the value of a register\n");
  printf("\t's' - *dumps a specific section of memory\n");
  printf("\tan integer > 0 - executes N instruction cycles (don't get too crazy with this one!)\n");
  printf("\treturn - executes one instruction cycle\n");
  printf("\t\t*(*YOU MUST ENTER A 4-DIGIT HEX VALUE OR ELSE!)\n");
  printf("\t\t\t*this assumption was approved by Dr. Jim Sasaki\n");
}
```