user: 这段汇编代码用C语言表示是什么样的：

```asm
<qfits_getcomment>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x18(%rbp)
  cmpq   $0x0,-0x18(%rbp)
  jne    L123
  mov    $0x0,%eax
  jmp    L214
L123:
  mov    -0x18(%rbp),%rax
  mov    $0x4,%edx
  lea    D26(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L70
  mov    $0x0,%eax
  jmp    L214
L70:
  mov    -0x18(%rbp),%rax
  mov    $0x8,%edx
  lea    D19(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L289
  mov    $0x0,%eax
  jmp    L214
L289:
  mov    -0x18(%rbp),%rax
  mov    $0x8,%edx
  lea    D9(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L166
  mov    $0x0,%eax
  jmp    L214
L166:
  mov    -0x18(%rbp),%rax
  mov    $0x8,%edx
  lea    D16(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L26
  mov    $0x0,%eax
  jmp    L214
L26:
  mov    $0x51,%edx
  mov    $0x0,%esi
  lea    D76(%rip),%rax
  mov    %rax,%rdi
  call   <memset@plt>
  movl   $0x0,-0x10(%rbp)
  jmp    L188
L40:
  addl   $0x1,-0x10(%rbp)
L188:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x3d,%al
  je     L128
  cmpl   $0x4f,-0x10(%rbp)
  jle    L40
L128:
  cmpl   $0x4f,-0x10(%rbp)
  jle    L271
  mov    $0x0,%eax
  jmp    L214
L271:
  addl   $0x1,-0x10(%rbp)
  movl   $0x0,-0x8(%rbp)
  jmp    L114
L73:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x27,%al
  jne    L83
  cmpl   $0x0,-0x8(%rbp)
  sete   %al
  movzbl %al,%eax
  mov    %eax,-0x8(%rbp)
L83:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jne    L180
  cmpl   $0x0,-0x8(%rbp)
  je     L172
L180:
  addl   $0x1,-0x10(%rbp)
L114:
  cmpl   $0x4f,-0x10(%rbp)
  jle    L73
  jmp    L93
L172:
  nop
L93:
  cmpl   $0x4f,-0x10(%rbp)
  jle    L273
  mov    $0x0,%eax
  jmp    L214
L273:
  addl   $0x1,-0x10(%rbp)
  jmp    L156
L205:
  addl   $0x1,-0x10(%rbp)
L156:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  je     L205
  mov    -0x10(%rbp),%eax
  mov    %eax,-0x4(%rbp)
  movl   $0x4f,-0xc(%rbp)
  jmp    L113
L250:
  subl   $0x1,-0xc(%rbp)
L113:
  mov    -0xc(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  je     L250
  mov    -0xc(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jge    L155
  mov    $0x0,%eax
  jmp    L214
L155:
  mov    -0xc(%rbp),%eax
  sub    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x4(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  mov    %rax,%rsi
  lea    D76(%rip),%rax
  mov    %rax,%rdi
  call   <strncpy@plt>
  mov    -0xc(%rbp),%eax
  sub    -0x4(%rbp),%eax
  add    $0x1,%eax
  cltq
  lea    D76(%rip),%rdx
  movb   $0x0,(%rax,%rdx,1)
  lea    D76(%rip),%rax
L214:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D26
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D19
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D9
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D16
type_infered: string

tool: D26: END 

tool: D19: HISTORY 

tool: D9: COMMENT 

tool: D16:         

assistant: ```c
char *qfits_getcomment(const char *line) {
  static char comment[81];
  int i;
  int from, to;
  int inq;
  if (line == NULL) {
    return NULL;
  }
  if (!strncmp(line, "END ", 4))
    return NULL;
  if (!strncmp(line, "HISTORY ", 8))
    return NULL;
  if (!strncmp(line, "COMMENT ", 8))
    return NULL;
  if (!strncmp(line, "        ", 8))
    return NULL;
  memset(comment, 0, 81);
  i = 0;
  while (line[i] != '=' && i < 80)
    i++;
  if (i >= 80) {
    return NULL;
  }
  i++;
  inq = 0;
  while (i < 80) {
    if (line[i] == '\'')
      inq = !inq;
    if (line[i] == '/')
      if (!inq)
        break;
    i++;
  }
  if (i >= 80) {
    return NULL;
  }
  i++;
  while (line[i] == ' ')
    i++;
  from = i;
  to = 79;
  while (line[to] == ' ')
    to--;
  if (to < from) {
    return NULL;
  }
  strncpy(comment, line + from, to - from + 1);
  comment[to - from + 1] = (char)0;
  return comment;
}
```