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

```asm
<conf_check_line>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %rdi,-0x28(%rbp)
  movq   $0x0,-0x8(%rbp)
  movl   $0x0,-0x1c(%rbp)
  movl   $0x0,-0x18(%rbp)
  movl   $0x0,-0x14(%rbp)
  cmpq   $0x0,-0x28(%rbp)
  je     L239
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  cmp    $0x1,%eax
  jg     L227
L239:
  mov    $0xfffffffe,%eax
  jmp    L56
L227:
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  cltq
  lea    -0x2(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x5c,%al
  jne    L109
  movl   $0xffffffff,-0x1c(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  cltq
  lea    -0x2(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movb   $0x0,(%rax)
L109:
  mov    -0x28(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  jmp    L118
L61:
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <isblank@plt>
  test   %eax,%eax
  jne    L218
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x23,%al
  je     L218
  mov    -0x10(%rbp),%rax
  mov    %rax,-0x8(%rbp)
L218:
  cmpl   $0x0,-0x18(%rbp)
  je     L169
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x27,%al
  jne    L18
  mov    -0x10(%rbp),%rax
  sub    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x5c,%al
  je     L18
  movl   $0x0,-0x18(%rbp)
  jmp    L18
L169:
  cmpl   $0x0,-0x14(%rbp)
  je     L51
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x22,%al
  jne    L18
  mov    -0x10(%rbp),%rax
  sub    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x5c,%al
  je     L18
  movl   $0x0,-0x14(%rbp)
  jmp    L18
L51:
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x27,%al
  jne    L159
  movl   $0x1,-0x18(%rbp)
  jmp    L18
L159:
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x22,%al
  jne    L70
  movl   $0x1,-0x14(%rbp)
  jmp    L18
L70:
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x23,%al
  je     L27
L18:
  addq   $0x1,-0x10(%rbp)
L118:
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L212
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x5c,%al
  jne    L61
  mov    -0x10(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L61
  jmp    L212
L27:
  nop
L212:
  cmpq   $0x0,-0x8(%rbp)
  je     L16
  mov    -0x8(%rbp),%rax
  add    $0x1,%rax
  movb   $0x0,(%rax)
  jmp    L65
L16:
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x23,%al
  jne    L65
  movl   $0xfffffffe,-0x1c(%rbp)
L65:
  mov    -0x1c(%rbp),%eax
L56:
  leave
  ret
```

assistant: ```c
int conf_check_line(char *line) {
  char *r;
  char *last_non_space = NULL;
  int ret = 0;
  int in_quote = 0;
  int in_dquote = 0;
  if (line == NULL || strlen(line) < 2) {
    return -2;
  }
  if (line[strlen(line) - 2] == '\\') {
    ret = -1;
    line[strlen(line) - 2] = '\0';
  }
  r = line;
  while (*r && (*r != '\\' || *(r + 1) != '\0')) {
    if (!isblank(*r) && *r != '#') {
      last_non_space = r;
    }
    if (in_quote) {
      if (*r == '\'' && *(r - 1) != '\\') {
        in_quote = 0;
      }
    } else if (in_dquote) {
      if (*r == '"' && *(r - 1) != '\\') {
        in_dquote = 0;
      }
    } else if (*r == '\'') {
      in_quote = 1;
    } else if (*r == '"') {
      in_dquote = 1;
    } else if (*r == '#') {
      break;
    }
    r++;
  }
  if (last_non_space != NULL) {
    *(last_non_space + 1) = '\0';
  } else if (*r == '#') {
    ret = -2;
  }

  ;
  return ret;
}
```