user: 下面的汇编指令对应的C源代码是什么:

```asm
<xml_parse_tag_only>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  mov    %edx,%r13d
  push   %r12
  mov    %rsi,%r12
  push   %rbp
  mov    %rdi,%rbp
  push   %rbx
  sub    $0x18,%rsp
  mov    %rcx,0x8(%rsp)
  jmp    L99
  nopw   0x0(%rax,%rax,1)
L287:
  test   %eax,%eax
  jne    L262
L99:
  mov    %rbp,%rdi
  call   <getc@plt>
  mov    %eax,%ebx
  cmp    $0xa,%al
  jne    L176
  mov    0x8(%rsp),%rax
  addl   $0x1,(%rax)
L176:
  mov    %rbp,%rdi
  call   <feof@plt>
  cmp    $0x3c,%bl
  jne    L287
L262:
  xor    %ebx,%ebx
  xor    %r15d,%r15d
  jmp    L293
  cs nopw 0x0(%rax,%rax,1)
L31:
  mov    %al,(%r14)
  cmp    $0xd,%al
  je     L34
L221:
  add    $0x1,%ebx
  cmp    $0x3,%ebx
  je     L148
L82:
  mov    %rbp,%rdi
  call   <feof@plt>
  cmp    %r13d,%ebx
  jge    L10
  test   %eax,%eax
  jne    L10
  movslq %ebx,%r15
  cmpb   $0x3e,-0x1(%r12,%r15,1)
  je     L10
L293:
  mov    %rbp,%rdi
  lea    (%r12,%r15,1),%r14
  call   <getc@plt>
  cmp    $0xa,%al
  jne    L31
  add    $0x1,%ebx
  movb   $0x20,(%r14)
  cmp    $0x3,%ebx
  jne    L82
L148:
  cmpb   $0x21,(%r12)
  jne    L82
  cmpb   $0x2d,0x1(%r12)
  jne    L82
  cmpb   $0x2d,0x2(%r12)
  jne    L82
  xor    %ebx,%ebx
L139:
  mov    %rbp,%rdi
  call   <getc@plt>
  cmp    $0x2d,%al
  je     L180
L78:
  mov    %rbp,%rdi
  cmp    $0x3e,%al
  jne    L210
  cmp    $0x1,%ebx
  je     L210
  call   <feof@plt>
  test   %eax,%eax
  jne    L161
  cmp    $0x1,%ebx
  jg     L161
  mov    %rbp,%rdi
  call   <getc@plt>
  cmp    $0x2d,%al
  jne    L78
L180:
  mov    %rbp,%rdi
  add    $0x1,%ebx
  call   <feof@plt>
  test   %eax,%eax
  je     L139
  jmp    L161
  nopl   0x0(%rax,%rax,1)
L34:
  mov    %rbp,%rdi
  call   <feof@plt>
  test   %eax,%eax
  je     L293
  jmp    L221
  nopl   (%rax)
L10:
  mov    %r12,%rax
  test   %ebx,%ebx
  je     L194
  movslq %ebx,%rbx
  lea    -0x1(%r12,%rbx,1),%rax
L194:
  movb   $0x0,(%rax)
  add    $0x18,%rsp
  mov    %r12,%rdi
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1070 <xml_remove_leading_trailing_spaces@plt>
L230:
  test   %eax,%eax
  jne    L297
L161:
  mov    %rbp,%rdi
  call   <getc@plt>
  mov    %eax,%ebx
  cmp    $0xa,%al
  jne    L89
  mov    0x8(%rsp),%rax
  addl   $0x1,(%rax)
L89:
  mov    %rbp,%rdi
  call   <feof@plt>
  cmp    $0x3c,%bl
  jne    L230
L297:
  xor    %ebx,%ebx
  jmp    L82
  xchg   %ax,%ax
L210:
  call   <feof@plt>
  mov    %eax,%ebx
  test   %eax,%eax
  je     L139
  jmp    L161
```

assistant: ```c
void xml_parse_tag_only(FILE *fileptr, char *tag, int maxlen, int *lnn) {
  int i;
  char ch;
  do {
    ch = getc(fileptr);
    if (ch == '\n')
      (*lnn)++;
  } while ((!feof(fileptr)) && (ch != '<'));
  i = 0;
  do {
    do {
      tag[i] = getc(fileptr);
      if (tag[i] == '\n')
        tag[i] = ' ';
    } while ((tag[i] == '\r') && (!feof(fileptr)));
    i = i + 1;
    if ((i == 3) && (tag[0] == '!') && (tag[1] == '-') && (tag[2] == '-')) {
      i = 0;
      do {
        ch = getc(fileptr);
        if (ch == '-')
          i = i + 1;
        else if ((ch != '>') || (i == 1))
          i = 0;
      } while ((!feof(fileptr)) && ((i < 2) || (ch != '>')));
      do {
        ch = getc(fileptr);
        if (ch == '\n')
          (*lnn)++;
      } while ((!feof(fileptr)) && (ch != '<'));
      i = 0;
    }
  } while ((!feof(fileptr)) && (i < maxlen) && (tag[i - 1] != '>'));
  if (i == 0)
    i = 1;
  tag[i - 1] = '\0';
  xml_remove_leading_trailing_spaces(tag);
}
```