user: 请从给定的汇编指令推导出C源代码:

```asm
<generateHelpMessage>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x380,%rsp
  mov    %rdi,-0x378(%rbp)
  mov    %rsi,-0x380(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movq   $0x0,-0x368(%rbp)
  lea    -0x360(%rbp),%rax
  lea    D8(%rip),%rdx
  mov    $0x6a,%ecx
  mov    %rax,%rdi
  mov    %rdx,%rsi
  rep movsq %ds:(%rsi),%es:(%rdi)
  mov    %rsi,%rdx
  mov    %rdi,%rax
  mov    (%rdx),%ecx
  mov    %ecx,(%rax)
  lea    0x4(%rax),%rax
  lea    0x4(%rdx),%rdx
  movzwl (%rdx),%ecx
  mov    %cx,(%rax)
  lea    0x2(%rax),%rax
  lea    0x2(%rdx),%rdx
  movzbl (%rdx),%ecx
  mov    %cl,(%rax)
  cmpq   $0x0,-0x378(%rbp)
  je     L8
  cmpq   $0x0,-0x380(%rbp)
  je     L8
  mov    -0x380(%rbp),%rax
  sub    $0x1,%rax
  mov    %rax,-0x368(%rbp)
  mov    -0x368(%rbp),%rdx
  lea    -0x360(%rbp),%rcx
  mov    -0x378(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  mov    -0x378(%rbp),%rdx
  mov    -0x368(%rbp),%rax
  add    %rdx,%rax
  movb   $0x0,(%rax)
L8:
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L16
  call   <__stack_chk_fail@plt>
L16:
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: data_tag: D8
data_type: string

tool: D8:                                                             
============================================================
                                                            
                Roman Numeral Calculator                    
                                                            
           $>romancalc  MMCCDLX    +    XXVII               
                       |_______|   ^   |_____|              
                          |        |      |                 
             numeral ------        |      |                 
                operand [+/-]-------      |                 
                   numeral ----------------                 
                                                            
============================================================
                                                            


assistant: ```c
extern void generateHelpMessage(char *helpMessage, const size_t helpMessageSizeInBytes) {
  size_t maxLength = 0;
  const char message[] = "                                                            \n"
                         "============================================================\n"
                         "                                                            \n"
                         "                Roman Numeral Calculator                    \n"
                         "                                                            \n"
                         "           $>romancalc  MMCCDLX    +    XXVII               \n"
                         "                       |_______|   ^   |_____|              \n"
                         "                          |        |      |                 \n"
                         "             numeral ------        |      |                 \n"
                         "                operand [+/-]-------      |                 \n"
                         "                   numeral ----------------                 \n"
                         "                                                            \n"
                         "============================================================\n"
                         "                                                            \n";
  if ((helpMessage != NULL) && (helpMessageSizeInBytes >= (1))) {
    maxLength = helpMessageSizeInBytes - sizeof(char);
    strncpy(helpMessage, message, maxLength);
    helpMessage[maxLength] = '\0';
  }
}
```