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

```asm
<doxy_beautification>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x28(%rbp)
  mov    %esi,-0x2c(%rbp)
  mov    %rdx,-0x38(%rbp)
  mov    -0x38(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  movl   $0x0,-0x20(%rbp)
  movl   $0x0,-0x1c(%rbp)
  mov    -0x38(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L23
  mov    -0x28(%rbp),%rax
  movb   $0x0,(%rax)
  mov    $0x0,%eax
  jmp    L126
L212:
  addl   $0x1,-0x1c(%rbp)
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0xd,%al
  je     L264
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0xa,%al
  jne    L323
L264:
  movl   $0x0,-0x1c(%rbp)
L323:
  addq   $0x1,-0x10(%rbp)
L23:
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L297
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0xd,%al
  je     L212
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0xa,%al
  je     L212
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  je     L212
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x2a,%al
  je     L212
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x21,%al
  je     L212
  jmp    L297
L33:
  movl   $0x0,-0x18(%rbp)
  movl   $0x0,-0x14(%rbp)
  jmp    L112
L93:
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x3c,%al
  jne    L175
  mov    -0x10(%rbp),%rax
  sub    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x5c,%al
  je     L175
  movl   $0x1,-0x20(%rbp)
L175:
  cmpl   $0x0,-0x20(%rbp)
  jne    L41
  mov    -0x28(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x28(%rbp)
  mov    -0x10(%rbp),%rdx
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
L41:
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x3e,%al
  jne    L56
  mov    -0x10(%rbp),%rax
  sub    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x5c,%al
  je     L56
  movl   $0x0,-0x20(%rbp)
L56:
  addq   $0x1,-0x10(%rbp)
L112:
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L303
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0xd,%al
  je     L303
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0xa,%al
  jne    L93
L303:
  mov    -0x10(%rbp),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L200
L245:
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0xd,%al
  je     L187
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0xa,%al
  jne    L348
L187:
  movl   $0x0,-0x18(%rbp)
  mov    -0x8(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0xa,%al
  jne    L348
  addl   $0x1,-0x14(%rbp)
L348:
  addq   $0x1,-0x8(%rbp)
  mov    -0x18(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x18(%rbp)
  cmp    %eax,-0x1c(%rbp)
  jl     L200
  mov    -0x8(%rbp),%rax
  mov    %rax,-0x10(%rbp)
L200:
  mov    -0x8(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L207
  mov    -0x8(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0xd,%al
  je     L245
  mov    -0x8(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0xa,%al
  je     L245
  mov    -0x8(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  je     L245
  mov    -0x8(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x2a,%al
  je     L245
L207:
  mov    -0x8(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L114
  jmp    L332
L251:
  mov    -0x28(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x28(%rbp)
  movb   $0xa,(%rax)
  subl   $0x1,-0x14(%rbp)
L332:
  cmpl   $0x0,-0x14(%rbp)
  jg     L251
L297:
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L33
  jmp    L64
L114:
  nop
L64:
  mov    -0x28(%rbp),%rax
  movb   $0x0,(%rax)
  mov    $0x0,%eax
L126:
  pop    %rbp
  ret
```

assistant: ```c
int doxy_beautification(char *outbuf, int len, const char *doxygen) {
  const char *ch = doxygen;
  const char *p;
  int bracket = 0;
  int indentation = 0;
  if (!doxygen[0]) {
    *outbuf = '\0';
    return 0;
  }
  while (*ch && (*ch == '\r' || *ch == '\n' || *ch == ' ' || *ch == '*' || *ch == '!')) {
    indentation++;
    if (*ch == '\r' || *ch == '\n')
      indentation = 0;
    ch++;
  }
  while (*ch) {
    int ind = 0;
    int newlines = 0;
    while (*ch && *ch != '\r' && *ch != '\n') {
      if (*ch == '<' && *(ch - 1) != '\\')
        bracket = 1;
      if (!bracket)
        *outbuf++ = *ch;
      if (*ch == '>' && *(ch - 1) != '\\')
        bracket = 0;
      ch++;
    }
    p = ch;
    while (*p && (*p == '\r' || *p == '\n' || *p == ' ' || *p == '*')) {
      if (*ch == '\r' || *ch == '\n') {
        ind = 0;
        if (*p == '\n')
          newlines++;
      }
      p++;
      if (ind++ <= indentation)
        ch = p;
    }
    if (*p == '\0')
      break;
    for (; newlines > 0; newlines--)
      *outbuf++ = '\n';
  }
  *outbuf = '\0';
  return 0;
}
```