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

```asm
<help_message>:
  endbr64
  push   %r14
  lea    D64(%rip),%rdi
  lea    D86(%rip),%r14
  push   %r13
  lea    D145(%rip),%r13
  push   %r12
  mov    $0x80200,%r12d
  push   %rbp
  lea    D140(%rip),%rbp
  push   %rbx
  xor    %ebx,%ebx
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  nopl   (%rax)
L10:
  mov    %rbp,%rdi
  call   <printf@plt>
  bt     %rbx,%r12
  jae    L12
  mov    %r14,%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  call   <printf@plt>
L12:
  add    $0x1,%ebx
  cmp    $0x1d,%ebx
  jne    L10
  lea    D77(%rip),%rdi
  call   <printf@plt>
  lea    D114(%rip),%rdi
  call   <printf@plt>
  lea    D142(%rip),%rdi
  call   <printf@plt>
  lea    D14(%rip),%rdi
  call   <printf@plt>
  lea    D137(%rip),%rdi
  call   <printf@plt>
  lea    D63(%rip),%rdi
  call   <printf@plt>
  lea    D136(%rip),%rdi
  call   <printf@plt>
  lea    D61(%rip),%rdi
  call   <printf@plt>
  lea    D186(%rip),%rdi
  call   <printf@plt>
  lea    D183(%rip),%rdi
  call   <printf@plt>
  lea    D143(%rip),%rdi
  call   <printf@plt>
  lea    D6(%rip),%rdi
  call   <printf@plt>
  lea    D70(%rip),%rdi
  call   <printf@plt>
  lea    D164(%rip),%rdi
  call   <printf@plt>
  pop    %rbx
  lea    D152(%rip),%rdi
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  jmp    1050 <printf@plt>
```

tool_calls: name: parse_data
arguments: data_tag: D64
data_type: string
name: parse_data
arguments: data_tag: D86
data_type: string
name: parse_data
arguments: data_tag: D145
data_type: string
name: parse_data
arguments: data_tag: D140
data_type: string
name: parse_data
arguments: data_tag: D77
data_type: string
name: parse_data
arguments: data_tag: D114
data_type: string
name: parse_data
arguments: data_tag: D142
data_type: string
name: parse_data
arguments: data_tag: D14
data_type: string
name: parse_data
arguments: data_tag: D137
data_type: string
name: parse_data
arguments: data_tag: D63
data_type: string
name: parse_data
arguments: data_tag: D136
data_type: string
name: parse_data
arguments: data_tag: D61
data_type: string
name: parse_data
arguments: data_tag: D186
data_type: string
name: parse_data
arguments: data_tag: D183
data_type: string
name: parse_data
arguments: data_tag: D143
data_type: string
name: parse_data
arguments: data_tag: D6
data_type: string
name: parse_data
arguments: data_tag: D70
data_type: string
name: parse_data
arguments: data_tag: D164
data_type: string
name: parse_data
arguments: data_tag: D152
data_type: string

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


tool: D86:            

tool: D145: 

tool: D140: .

tool: D77: 

JK ain't nobody got time for dat!


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


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


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


tool: D137: 	'd' - dumps out CPU


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


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


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


tool: D186: 	'q' - quits the program


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


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


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


tool: D70: 	return - executes one instruction cycle


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


tool: D152: 			*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");
}
```