user: Demonstrate the C code that generates the assembly output below:

```asm
<line_parser_old>:
  endbr64
  cmpb   $0x0,(%rdi)
  mov    %rdi,%r8
  je     L335
  mov    $0x1,%eax
  nopl   (%rax)
L333:
  mov    %eax,%ecx
  add    $0x1,%rax
  cmpb   $0x0,-0x1(%r8,%rax,1)
  jne    L333
L321:
  movabs $0xf7ffffffffffdbff,%rsi
  xor    %eax,%eax
  nopw   0x0(%rax,%rax,1)
L117:
  movzbl (%r8,%rax,1),%edx
  cmp    $0x3b,%dl
  ja     L270
  bt     %rdx,%rsi
  jb     L270
  movb   $0x20,(%r8,%rax,1)
L270:
  add    $0x1,%rax
  cmp    %eax,%ecx
  jg     L117
  xor    %eax,%eax
  jmp    L69
  nopl   0x0(%rax)
L77:
  sub    $0x2a,%esi
  cmp    $0x5,%sil
  ja     L22
  movzbl 0x1(%r8,%rdi,1),%esi
  sub    $0x30,%esi
  cmp    $0x9,%sil
  jbe    L227
L22:
  add    $0x1,%eax
  cmp    %ecx,%eax
  jge    L352
L69:
  movslq %eax,%rdi
  lea    (%r8,%rdi,1),%rdx
  movzbl (%rdx),%esi
  cmp    $0x27,%sil
  je     L46
  lea    -0x30(%rsi),%r9d
  cmp    $0x9,%r9b
  ja     L77
  movzbl -0x1(%r8,%rdi,1),%esi
  and    $0xffffffdf,%esi
  sub    $0x41,%esi
  cmp    $0x19,%sil
  jbe    L22
L227:
  mov    %eax,%esi
  nopl   0x0(%rax)
L329:
  movzbl (%rdx),%eax
  lea    -0x30(%rax),%edi
  cmp    $0x9,%dil
  setbe  %dil
  sub    $0x2c,%eax
  cmp    $0x2,%al
  setbe  %al
  or     %eax,%edi
  cmp    %ecx,%esi
  mov    %esi,%eax
  setl   %r9b
  lea    0x1(%rsi),%esi
  test   %r9b,%dil
  je     L22
  movb   $0x20,(%rdx)
  add    $0x1,%rdx
  cmp    %esi,%ecx
  jne    L329
  mov    %ecx,%eax
  add    $0x1,%eax
  cmp    %ecx,%eax
  jl     L69
  nopl   0x0(%rax)
L352:
  movzbl (%r8),%eax
  test   %al,%al
  je     L88
L281:
  mov    $0x1,%edx
  nopl   0x0(%rax)
L9:
  mov    %edx,%edi
  add    $0x1,%rdx
  cmpb   $0x0,-0x1(%r8,%rdx,1)
  jne    L9
L113:
  xor    %esi,%esi
  xor    %ecx,%ecx
  jmp    L160
  nopl   0x0(%rax)
L67:
  movslq %esi,%rdx
  lea    -0x41(%rax),%r9d
  add    %r8,%rdx
  cmp    $0x19,%r9b
  ja     L298
  add    $0x20,%eax
L298:
  add    $0x1,%ecx
  mov    %al,(%rdx)
  add    $0x1,%esi
  cmp    %edi,%ecx
  jge    L225
  movslq %ecx,%rax
  movzbl (%r8,%rax,1),%eax
L160:
  cmp    $0x20,%al
  jne    L67
  test   %ecx,%ecx
  je     L112
  lea    0x1(%rsi),%edx
  movslq %ecx,%rax
  movslq %esi,%rsi
  movb   $0x20,(%r8,%rsi,1)
  movzbl (%r8,%rax,1),%eax
  mov    %edx,%esi
  cmp    $0x20,%al
  jne    L67
  cmp    %edi,%ecx
  jge    L67
L169:
  lea    0x1(%rcx),%edx
  movslq %edx,%rdx
  nopw   0x0(%rax,%rax,1)
L49:
  movzbl (%r8,%rdx,1),%eax
  mov    %edx,%ecx
  cmp    $0x20,%al
  sete   %r10b
  cmp    %edx,%edi
  setg   %r9b
  add    $0x1,%rdx
  test   %r9b,%r10b
  jne    L49
  jmp    L67
  cs nopw 0x0(%rax,%rax,1)
L46:
  add    $0x1,%eax
  movb   $0x20,(%rdx)
  cmp    %eax,%ecx
  je     L352
  movslq %eax,%rdx
  add    %r8,%rdx
  jmp    L246
  cs nopw 0x0(%rax,%rax,1)
L209:
  cmp    %ecx,%eax
  jge    L322
  add    $0x1,%eax
  add    $0x1,%rdx
  cmp    %ecx,%eax
  je     L0
L246:
  cmpb   $0x27,(%rdx)
  movb   $0x20,(%rdx)
  jne    L209
L322:
  cmp    %ecx,%eax
  jne    L22
  jmp    L352
  nopl   0x0(%rax)
L225:
  movslq %esi,%rax
  lea    -0x2(%r8,%rax,1),%rdx
  cmpb   $0x20,(%rdx)
  jne    L375
  movb   $0x0,(%rdx)
L375:
  cmp    %edi,%esi
  jge    L107
  movb   $0x0,(%r8,%rax,1)
L107:
  mov    %r8,%rax
  ret
  nopl   (%rax)
L112:
  test   %edi,%edi
  jg     L169
  movslq %esi,%rdx
  add    %r8,%rdx
  jmp    L298
  nopl   0x0(%rax,%rax,1)
L0:
  cltq
  movb   $0x20,(%r8,%rax,1)
  movzbl (%r8),%eax
  test   %al,%al
  jne    L281
L88:
  xor    %edi,%edi
  jmp    L113
L335:
  xor    %ecx,%ecx
  jmp    L321
```

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);
}
```