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

```asm
<line_parser_old>:
  endbr64
  movzbl (%rdi),%edx
  mov    %rdi,%r9
  test   %dl,%dl
  je     L159
  mov    $0x1,%eax
  nopw   0x0(%rax,%rax,1)
L204:
  mov    %eax,%r8d
  add    $0x1,%rax
  cmpb   $0x0,-0x1(%r9,%rax,1)
  jne    L204
L178:
  movabs $0xf7ffffffffffdbff,%rcx
  xor    %eax,%eax
  jmp    L267
  nopl   (%rax)
L281:
  movzbl (%r9,%rax,1),%edx
L267:
  cmp    $0x3b,%dl
  ja     L166
  bt     %rdx,%rcx
  jb     L166
  movb   $0x20,(%r9,%rax,1)
L166:
  add    $0x1,%rax
  cmp    %eax,%r8d
  jg     L281
  xor    %eax,%eax
  lea    0x1(%r8),%r10d
  jmp    L346
  cs nopw 0x0(%rax,%rax,1)
L188:
  lea    -0x2a(%rdx),%edi
  cmp    $0x5,%dil
  ja     L205
  movzbl 0x1(%r9,%rsi,1),%esi
  sub    $0x30,%esi
  cmp    $0x9,%sil
  jbe    L255
L205:
  lea    0x1(%rax),%esi
L249:
  mov    %esi,%eax
  cmp    %r8d,%esi
  jge    L80
L346:
  movslq %eax,%rsi
  lea    (%r9,%rsi,1),%rcx
  movzbl (%rcx),%edx
  cmp    $0x27,%dl
  je     L310
  lea    -0x30(%rdx),%edi
  cmp    $0x9,%dil
  ja     L188
  movzbl -0x1(%r9,%rsi,1),%edi
  lea    0x1(%rax),%esi
  and    $0xffffffdf,%edi
  sub    $0x41,%edi
  cmp    $0x19,%dil
  ja     L255
  mov    %esi,%eax
  cmp    %r8d,%esi
  jl     L346
L80:
  movzbl (%r9),%eax
  test   %al,%al
  je     L225
L214:
  mov    $0x1,%edx
  nopl   0x0(%rax,%rax,1)
L56:
  mov    %edx,%edi
  add    $0x1,%rdx
  cmpb   $0x0,-0x1(%r9,%rdx,1)
  jne    L56
L147:
  xor    %esi,%esi
  xor    %ecx,%ecx
  jmp    L250
  nopl   0x0(%rax)
L293:
  lea    -0x41(%rax),%r10d
  movslq %esi,%rdx
  lea    0x20(%rax),%r8d
  add    %r9,%rdx
  cmp    $0x1a,%r10b
  cmovb  %r8d,%eax
L130:
  add    $0x1,%ecx
  mov    %al,(%rdx)
  add    $0x1,%esi
  cmp    %edi,%ecx
  jge    L190
  movslq %ecx,%rax
  movzbl (%r9,%rax,1),%eax
L250:
  cmp    $0x20,%al
  jne    L293
  test   %ecx,%ecx
  je     L362
  lea    0x1(%rsi),%edx
  movslq %ecx,%rax
  movslq %esi,%rsi
  movb   $0x20,(%r9,%rsi,1)
  movzbl (%r9,%rax,1),%eax
  mov    %edx,%esi
  cmp    $0x20,%al
  jne    L293
  cmp    %edi,%ecx
  jge    L293
L368:
  lea    0x1(%rcx),%edx
  movslq %edx,%rdx
  nopl   (%rax)
L404:
  movzbl (%r9,%rdx,1),%eax
  mov    %edx,%ecx
  cmp    $0x20,%al
  sete   %r10b
  cmp    %edx,%edi
  setg   %r8b
  add    $0x1,%rdx
  test   %r8b,%r10b
  jne    L404
  jmp    L293
  xchg   %ax,%ax
L62:
  movzbl (%rcx),%edx
  mov    %esi,%eax
L255:
  lea    -0x30(%rdx),%edi
  lea    0x1(%rax),%esi
  cmp    $0x9,%dil
  setbe  %dil
  sub    $0x2c,%edx
  cmp    $0x2,%dl
  setbe  %dl
  or     %dl,%dil
  je     L249
  cmp    %r8d,%eax
  jge    L249
  movb   $0x20,(%rcx)
  add    $0x1,%rcx
  cmp    %esi,%r8d
  jne    L62
  mov    %r10d,%esi
  jmp    L249
  nopw   0x0(%rax,%rax,1)
L310:
  add    $0x1,%eax
  movb   $0x20,(%rcx)
  cmp    %eax,%r8d
  je     L80
  movslq %eax,%rdx
  add    %r9,%rdx
  jmp    L387
  nop
L3:
  cmp    %r8d,%eax
  jge    L163
  add    $0x1,%eax
  add    $0x1,%rdx
  cmp    %r8d,%eax
  je     L291
L387:
  cmpb   $0x27,(%rdx)
  movb   $0x20,(%rdx)
  jne    L3
L163:
  cmp    %r8d,%eax
  jne    L205
  jmp    L80
  nopw   0x0(%rax,%rax,1)
L190:
  movslq %esi,%rax
  lea    -0x2(%r9,%rax,1),%rdx
  cmpb   $0x20,(%rdx)
  jne    L383
  movb   $0x0,(%rdx)
L383:
  cmp    %edi,%esi
  jge    L219
  movb   $0x0,(%r9,%rax,1)
L219:
  mov    %r9,%rax
  ret
  nopl   (%rax)
L362:
  test   %edi,%edi
  jg     L368
  movslq %esi,%rdx
  add    %r9,%rdx
  jmp    L130
  nopl   0x0(%rax,%rax,1)
L291:
  cltq
  movb   $0x20,(%r9,%rax,1)
  movzbl (%r9),%eax
  test   %al,%al
  jne    L214
L225:
  xor    %edi,%edi
  jmp    L147
L159:
  xor    %r8d,%r8d
  jmp    L178
```

assistant: ```c
char *line_parser_old(char *file_line) {
  int size;
  int count;
  int pos;
  size = 0;
  while (*(file_line + size) != 0) {
    size++;
  }
  count = 0;
  do {
    if ((*(file_line + count) == 13) || (*(file_line + count) == 10) || (*(file_line + count) == ';')) {
      *(file_line + count) = ' ';
    }
    count++;
  } while (count < size);
  count = 0;
  do {
    {
      if (*(file_line + count) == '\'') {
        *(file_line + count) = ' ';
        count++;
        if (count == size) {
          break;
        }
        while (*(file_line + count) != '\'' && count < size) {
          *(file_line + count) = ' ';
          count++;
          if (count == size) {
            break;
          }
        }
        *(file_line + count) = ' ';
        if (count == size) {
          break;
        }
      } else {
        if (((*(file_line + count) >= '0') && (*(file_line + count) <= '9') && !((*(file_line + count - 1) >= 'a' && *(file_line + count - 1) <= 'z') || (*(file_line + count - 1) >= 'A' && *(file_line + count - 1) <= 'Z'))) || ((*(file_line + count) == '-' || *(file_line + count) == '+' || *(file_line + count) == '*' || *(file_line + count) == '/' || *(file_line + count) == '.' || *(file_line + count) == ',') && (*(file_line + count + 1) >= '0') && (*(file_line + count + 1) <= '9'))) {
          while ((((*(file_line + count) >= '0') && (*(file_line + count) <= '9')) || ((*(file_line + count) == '-' || *(file_line + count) == '.' || *(file_line + count) == ','))) && (count < size)) {
            *(file_line + count) = ' ';
            count++;
            if (count == size) {
              break;
            }
          }
        }
      }
    }
    count++;
  } while (count < size);
  size = 0;
  while (*(file_line + size) != 0) {
    size++;
  }
  pos = 0;
  count = 0;
  do {
    if (*(file_line + count) == ' ') {
      if (count > 0) {
        *(file_line + pos) = *(file_line + count);
        pos++;
      }
      while (*(file_line + count) == ' ' && count < size) {
        count++;
      }
    }
    if ((*(file_line + count) >= 'A') && (*(file_line + count) <= 'Z')) {
      *(file_line + pos) = *(file_line + count) + 32;
    } else {
      *(file_line + pos) = *(file_line + count);
    }
    pos++;
    count++;
  } while (count < size);
  if (*(file_line + pos - 2) == ' ') {
    *(file_line + pos - 2) = '\0';
  }
  for (count = pos; count < size; count++) {
    *(file_line + pos) = '\0';
  }
  return (file_line);
}
```