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

```asm
<conf_parse_line>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rsi,%rbp
  mov    D94(%rip),%eax
  lea    0x1(%rax),%esi
  mov    %esi,D65(%rip)
  movzbl 0x0(%rbp),%eax
  cmp    $0x23,%al
  je     L145
  mov    %edi,%r12d
  cmp    $0x3b,%al
  je     L145
  cmp    $0x5b,%al
  je     L132
  mov    $0x0,%ebx
  test   %rdx,%rdx
  je     L162
L5:
  cmpb   $0x3d,0x0(%rbp,%rbx,1)
  je     L122
  add    $0x1,%rbx
  cmp    %rbx,%rdx
  jne    L5
L162:
  lea    D65(%rip),%rsi
  mov    %rbp,%rdi
  call   <strspn@plt>
  cltq
  cmpb   $0x0,0x0(%rbp,%rax,1)
  je     L145
  mov    D65(%rip),%esi
  lea    D32(%rip),%rdi
  call   <warnx@plt>
  jmp    L145
L132:
  cmp    $0x1,%rdx
  jbe    L96
  mov    $0x1,%ebx
L65:
  mov    %ebx,%r12d
  cmpb   $0x5d,0x0(%rbp,%rbx,1)
  je     L115
  add    $0x1,%rbx
  cmp    %rbx,%rdx
  jne    L65
L87:
  lea    D117(%rip),%rdi
  call   <warnx@plt>
  movq   $0x0,D13(%rip)
  jmp    L145
L96:
  mov    $0x1,%r12d
  mov    $0x1,%ebx
L115:
  cmp    %rbx,%rdx
  je     L87
  mov    D13(%rip),%rdi
  test   %rdi,%rdi
  je     L24
  call   <free@plt>
L24:
  mov    %r12d,%edi
  call   <malloc@plt>
  mov    %rax,%rdi
  mov    %rax,D38(%rip)
  lea    -0x1(%r12),%edx
  lea    0x1(%rbp),%rsi
  call   <strncpy@plt>
  mov    D38(%rip),%rax
  movb   $0x0,-0x1(%rax,%rbx,1)
L145:
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L122:
  cmpq   $0x0,D38(%rip)
  je     L25
  lea    D38(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcspn@plt>
  movb   $0x0,0x0(%rbp,%rax,1)
  add    $0x1,%rbx
  lea    0x0(%rbp,%rbx,1),%rdi
  lea    D65(%rip),%rsi
  call   <strspn@plt>
  movslq %eax,%rcx
  add    %rbx,%rcx
  add    %rbp,%rcx
  mov    $0x0,%r9d
  mov    $0x0,%r8d
  mov    %rbp,%rdx
  mov    D38(%rip),%rsi
  mov    %r12d,%edi
  call   <conf_set@plt>
  jmp    L145
L25:
  lea    D18(%rip),%rdi
  call   <warnx@plt>
  jmp    L145
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D65
type: string
name: extract_symbolic_data
arguments: data_label: D32
type: string
name: extract_symbolic_data
arguments: data_label: D117
type: string
name: extract_symbolic_data
arguments: data_label: D38
type: string
name: extract_symbolic_data
arguments: data_label: D18
type: string

tool: D65:  	

tool: D32: conf_parse_line: %d: syntax error

tool: D117: conf_parse_line: %d:non-matched ']', ignoring until next section

tool: D38:  	=

tool: D18: conf_parse_line: %d: ignoring line due to no section

assistant: ```c
void conf_parse_line(int trans, char *line, size_t sz) {
  char *cp = line;
  int i;
  static char *section = 0;
  static int ln = 0;
  ln++;
  if (*line == '#' || *line == ';')
    return;
  if (*line == '[') {
    for (i = 1; i < sz; i++)
      if (line[i] == ']')
        break;
    if (i == sz) {
      warnx("conf_parse_line: %d:"
            "non-matched ']', ignoring until next section",
            ln);
      section = 0;
      return;
    }
    if (section)
      free(section);
    section = malloc(i);
    strncpy(section, line + 1, i - 1);
    section[i - 1] = '\0';
    return;
  }
  for (i = 0; i < sz; i++)
    if (cp[i] == '=') {
      if (!section) {
        warnx("conf_parse_line: %d: ignoring line due to no section", ln);
        return;
      }
      line[strcspn(line, " \t=")] = '\0';
      conf_set(trans, section, line, line + i + 1 + strspn(line + i + 1, " \t"), 0, 0);
      return;
    }
  i = strspn(line, " \t");
  if (line[i])
    warnx("conf_parse_line: %d: syntax error", ln);
  return;
}
```