user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<conf_parse_line>:
  endbr64
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rsi,%rbp
  mov    D20(%rip),%eax
  lea    0x1(%rax),%esi
  mov    %esi,D147(%rip)
  movzbl 0x0(%rbp),%eax
  cmp    $0x23,%al
  je     L211
  mov    %edi,%r13d
  mov    %rdx,%r12
  cmp    $0x3b,%al
  je     L211
  cmp    $0x5b,%al
  je     L24
  mov    $0x0,%ebx
  test   %rdx,%rdx
  je     L31
L59:
  cmpb   $0x3d,0x0(%rbp,%rbx,1)
  je     L15
  add    $0x1,%rbx
  cmp    %rbx,%r12
  jne    L59
L31:
  lea    D147(%rip),%rsi
  mov    %rbp,%rdi
  call   <strspn@plt>
  cltq
  cmpb   $0x0,0x0(%rbp,%rax,1)
  je     L211
  mov    D147(%rip),%esi
  lea    D66(%rip),%rdi
  mov    $0x0,%eax
  call   <warnx@plt>
  jmp    L211
L24:
  cmp    $0x1,%rdx
  jbe    L185
  mov    $0x1,%ebx
L124:
  cmpb   $0x5d,0x0(%rbp,%rbx,1)
  je     L196
  add    $0x1,%rbx
  cmp    %rbx,%r12
  jne    L124
  mov    D153(%rip),%rdi
  mov    %r12,%rbx
  test   %rdi,%rdi
  jne    L9
L101:
  mov    D147(%rip),%esi
  lea    D140(%rip),%rdi
  mov    $0x0,%eax
  call   <warnx@plt>
  movq   $0x0,D153(%rip)
  jmp    L211
L185:
  mov    $0x1,%ebx
L196:
  mov    D153(%rip),%rdi
  test   %rdi,%rdi
  je     L14
L9:
  call   <free@plt>
L14:
  cmp    %rbx,%r12
  je     L101
  mov    %rbx,%rdi
  call   <malloc@plt>
  mov    %rax,%rdi
  mov    %rax,D35(%rip)
  test   %rax,%rax
  je     L94
  lea    0x1(%rbp),%rsi
  mov    %rbx,%rdx
  call   <strlcpy@plt>
L211:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
L94:
  mov    %rbx,%rdx
  mov    D147(%rip),%esi
  lea    D35(%rip),%rdi
  mov    $0x0,%eax
  call   <warnx@plt>
  jmp    L211
L15:
  cmpq   $0x0,D35(%rip)
  je     L69
  lea    D170(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcspn@plt>
  movb   $0x0,0x0(%rbp,%rax,1)
  add    $0x1,%rbx
  lea    0x0(%rbp,%rbx,1),%rdi
  lea    D147(%rip),%rsi
  call   <strspn@plt>
  cltq
  add    %rbx,%rax
  lea    0x0(%rbp,%rax,1),%r14
  lea    -0x1(%r12),%edx
  sub    %eax,%edx
  test   %edx,%edx
  jle    L174
  movslq %edx,%rax
  lea    (%r14,%rax,1),%rbx
  lea    -0x1(%r14,%rax,1),%r12
  lea    -0x1(%rdx),%eax
  sub    %rax,%r12
L29:
  movsbl (%rbx),%edi
  call   <isspace@plt>
  test   %rax,%rax
  je     L174
  movb   $0x0,(%rbx)
  sub    $0x1,%rbx
  cmp    %r12,%rbx
  jne    L29
L174:
  mov    $0x0,%r9d
  mov    $0x0,%r8d
  mov    %r14,%rcx
  mov    %rbp,%rdx
  mov    D35(%rip),%rsi
  mov    %r13d,%edi
  call   <conf_set@plt>
  jmp    L211
L69:
  lea    D65(%rip),%rdi
  mov    $0x0,%eax
  call   <warnx@plt>
  jmp    L211
```

tool_calls: name: retrieve_data
arguments: data_label: D147
type_guessed: string
name: retrieve_data
arguments: data_label: D66
type_guessed: string
name: retrieve_data
arguments: data_label: D140
type_guessed: string
name: retrieve_data
arguments: data_label: D35
type_guessed: string
name: retrieve_data
arguments: data_label: D170
type_guessed: string
name: retrieve_data
arguments: data_label: D65
type_guessed: string

tool: D147:  	

tool: D66: conf_parse_line: %d: syntax error

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

tool: D35: conf_parse_line: %d: malloc (%lu) failed

tool: D170:  	=

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

assistant: ```c
void conf_parse_line(int trans, char *line, size_t sz) {
  char *val;
  size_t i;
  int j;
  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 (section)
      free(section);
    if (i == sz) {
      warnx("conf_parse_line: %d:"
            "non-matched ']', ignoring until next section",
            ln);
      section = 0;
      return;
    }
    section = malloc(i);
    if (!section) {
      warnx("conf_parse_line: %d: malloc (%lu) failed", ln, (unsigned long)i);
      return;
    }
    strlcpy(section, line + 1, i);
    return;
  }
  for (i = 0; i < sz; i++)
    if (line[i] == '=') {
      if (!section) {
        warnx("conf_parse_line: %d: ignoring line due to no section", ln);
        return;
      }
      line[strcspn(line, " \t=")] = '\0';
      val = line + i + 1 + strspn(line + i + 1, " \t");
      for (j = sz - (val - line) - 1; j > 0 && isspace(val[j]); j--)
        val[j] = '\0';
      conf_set(trans, section, line, val, 0, 0);
      return;
    }
  i = strspn(line, " \t");
  if (line[i])
    warnx("conf_parse_line: %d: syntax error", ln);
  return;
}
```