user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<parse_cfg_line>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    %edx,-0x24(%rbp)
  mov    %rcx,-0x30(%rbp)
  mov    %r8d,-0x28(%rbp)
  movb   $0x0,-0x5(%rbp)
  movl   $0x0,-0x4(%rbp)
  jmp    L142
L72:
  mov    -0x24(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x4(%rbp)
  jae    L250
  mov    -0x18(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  mov    -0x4(%rbp),%edx
  lea    0x1(%rdx),%ecx
  mov    %ecx,-0x4(%rbp)
  mov    %edx,%ecx
  mov    -0x20(%rbp),%rdx
  add    %rcx,%rdx
  movzbl (%rax),%eax
  mov    %al,(%rdx)
L142:
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x3d,%al
  je     L60
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  jne    L72
  jmp    L60
L250:
  nop
L60:
  mov    -0x4(%rbp),%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x0,(%rax)
  jmp    L114
L99:
  addq   $0x1,-0x18(%rbp)
L114:
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  je     L99
  jmp    L201
L200:
  addq   $0x1,-0x18(%rbp)
L201:
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x3d,%al
  je     L200
  jmp    L76
L32:
  addq   $0x1,-0x18(%rbp)
L76:
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  je     L32
  movl   $0x0,-0x4(%rbp)
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x27,%al
  je     L146
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x22,%al
  jne    L68
L146:
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x5(%rbp)
  addq   $0x1,-0x18(%rbp)
  jmp    L218
L247:
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  cmp    %al,-0x5(%rbp)
  je     L242
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x5c,%al
  jne    L204
  mov    -0x18(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    %al,-0x5(%rbp)
  jne    L204
  addq   $0x1,-0x18(%rbp)
L204:
  mov    -0x28(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x4(%rbp)
  jae    L9
  mov    -0x4(%rbp),%edx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,(%rdx)
  addq   $0x1,-0x18(%rbp)
  addl   $0x1,-0x4(%rbp)
L218:
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  cmp    %al,-0x5(%rbp)
  jne    L247
  jmp    L74
L242:
  nop
  jmp    L74
L9:
  nop
  jmp    L74
L68:
  movl   $0x0,-0x4(%rbp)
  jmp    L191
L126:
  mov    -0x28(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x4(%rbp)
  jae    L197
  mov    -0x4(%rbp),%edx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,(%rdx)
  addq   $0x1,-0x18(%rbp)
  addl   $0x1,-0x4(%rbp)
L191:
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  je     L74
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0xa,%al
  jne    L126
  jmp    L74
L197:
  nop
L74:
  mov    -0x4(%rbp),%edx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movb   $0x0,(%rax)
  nop
  pop    %rbp
  ret
```

assistant: ```c
void parse_cfg_line(char *line, char *lvalue, unsigned int lvalsz, char *rvalue, unsigned int rvalsz) {
  char longval = '\0';
  unsigned int i = 0;
  while (*line != '=' && *line != ' ') {
    if (i >= lvalsz - 1)
      break;
    *(lvalue + i++) = *line++;
  }
  *(lvalue + i) = '\0';
  while (*line == ' ')
    line++;
  while (*line == '=')
    line++;
  while (*line == ' ')
    line++;
  i = 0;
  if (*line == '\'' || *line == '"') {
    longval = *line;
    line++;
    while (*line != longval) {
      if (*line == longval)
        break;
      if (*line == '\\' && *(line + 1) == longval)
        line++;
      if (i >= rvalsz - 1)
        break;
      *(rvalue + i) = *line;
      line++;
      i++;
    }
  } else {
    i = 0;
    while (*line != ' ' && *line != '\n') {
      if (i >= rvalsz - 1)
        break;
      *(rvalue + i) = *line;
      line++;
      i++;
    }
  }
  *(rvalue + i) = '\0';
  return;
}
```