user: What would the C source look like for the assembly code provided here:

```asm
<symbol>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    D73(%rip),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  js     L36
  mov    D73(%rip),%rax
  mov    (%rax),%eax
  mov    %eax,-0x10(%rbp)
  mov    D73(%rip),%rax
  movl   $0xffffffff,(%rax)
  mov    -0x10(%rbp),%eax
  jmp    L443
L36:
  mov    D252(%rip),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L227
  mov    D252(%rip),%rax
  mov    (%rax),%eax
  mov    %eax,-0x10(%rbp)
  mov    D252(%rip),%rax
  movl   $0x0,(%rax)
  jmp    L465
L227:
  mov    D125(%rip),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L394
  mov    $0x0,%eax
  jmp    L443
L394:
  mov    $0x0,%eax
  call   <xread@plt>
  mov    %eax,-0x10(%rbp)
L465:
  mov    D83(%rip),%rax
  mov    -0x10(%rbp),%edx
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%eax
  mov    %eax,-0xc(%rbp)
  cmpl   $0x0,-0xc(%rbp)
  jne    L94
  mov    D125(%rip),%rax
  movl   $0x1,(%rax)
  mov    $0x0,%eax
  jmp    L443
L94:
  cmpl   $0x7e,-0xc(%rbp)
  jne    L95
  cmpl   $0xa,-0x10(%rbp)
  jne    L506
  mov    D199(%rip),%rax
  mov    (%rax),%eax
  lea    0x1(%rax),%edx
  mov    D199(%rip),%rax
  mov    %edx,(%rax)
L506:
  mov    $0x0,%eax
  call   <xread@plt>
  mov    %eax,-0x10(%rbp)
  jmp    L465
L95:
  cmpl   $0x3d,-0x10(%rbp)
  jne    L247
  mov    $0x3c,%edx
  mov    $0x50,%esi
  mov    $0x3d,%edi
  mov    $0x0,%eax
  call   <subseq@plt>
  jmp    L443
L247:
  cmpl   $0x3c,-0x10(%rbp)
  jne    L457
  mov    $0x3e,%edx
  mov    $0x3f,%esi
  mov    $0x3d,%edi
  mov    $0x0,%eax
  call   <subseq@plt>
  jmp    L443
L457:
  cmpl   $0x3e,-0x10(%rbp)
  jne    L308
  mov    $0x40,%edx
  mov    $0x41,%esi
  mov    $0x3d,%edi
  mov    $0x0,%eax
  call   <subseq@plt>
  jmp    L443
L308:
  cmpl   $0x21,-0x10(%rbp)
  jne    L82
  mov    $0x3d,%edx
  mov    $0x22,%esi
  mov    $0x3d,%edi
  mov    $0x0,%eax
  call   <subseq@plt>
  jmp    L443
L82:
  cmpl   $0x24,-0x10(%rbp)
  jne    L412
  mov    $0x1,%edx
  mov    $0x0,%esi
  mov    $0x28,%edi
  mov    $0x0,%eax
  call   <subseq@plt>
  test   %eax,%eax
  je     L332
  mov    $0x2,%eax
  jmp    L443
L332:
  mov    $0x1,%edx
  mov    $0x0,%esi
  mov    $0x29,%edi
  mov    $0x0,%eax
  call   <subseq@plt>
  test   %eax,%eax
  je     L412
  mov    $0x3,%eax
  jmp    L443
L412:
  cmpl   $0x2f,-0x10(%rbp)
  jne    L511
  mov    $0x0,%edx
  mov    $0x1,%esi
  mov    $0x2a,%edi
  mov    $0x0,%eax
  call   <subseq@plt>
  test   %eax,%eax
  je     L201
  mov    $0x2b,%eax
  jmp    L443
L201:
  nop
L463:
  mov    $0x0,%eax
  call   <xread@plt>
  mov    %eax,-0x10(%rbp)
L440:
  cmpl   $0x4,-0x10(%rbp)
  jne    L178
  mov    D125(%rip),%rax
  movl   $0x1,(%rax)
  mov    $0x2a2f,%edi
  mov    $0x0,%eax
  call   <error@plt>
  mov    $0x0,%eax
  jmp    L443
L178:
  cmpl   $0xa,-0x10(%rbp)
  jne    L209
  mov    D199(%rip),%rax
  mov    (%rax),%eax
  lea    0x1(%rax),%edx
  mov    D199(%rip),%rax
  mov    %edx,(%rax)
L209:
  cmpl   $0x2a,-0x10(%rbp)
  je     L43
  jmp    L463
L43:
  mov    $0x0,%eax
  call   <xread@plt>
  mov    %eax,-0x10(%rbp)
  cmpl   $0x2f,-0x10(%rbp)
  je     L335
  jmp    L440
L335:
  mov    $0x0,%eax
  call   <xread@plt>
  mov    %eax,-0x10(%rbp)
  jmp    L465
L511:
  cmpl   $0x7c,-0xc(%rbp)
  jne    L158
  mov    D87(%rip),%rax
  movl   $0x0,(%rax)
  cmpl   $0x30,-0x10(%rbp)
  jne    L378
  movl   $0x8,-0x14(%rbp)
  jmp    L35
L378:
  movl   $0xa,-0x14(%rbp)
  jmp    L35
L407:
  mov    D87(%rip),%rax
  mov    (%rax),%eax
  imul   -0x14(%rbp),%eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  lea    -0x30(%rax),%edx
  mov    D87(%rip),%rax
  mov    %edx,(%rax)
  mov    $0x0,%eax
  call   <xread@plt>
  mov    %eax,-0x10(%rbp)
L35:
  cmpl   $0x2f,-0x10(%rbp)
  setg   %dl
  cmpl   $0x39,-0x10(%rbp)
  setle  %al
  and    %edx,%eax
  test   %al,%al
  jne    L407
  mov    D252(%rip),%rax
  mov    -0x10(%rbp),%edx
  mov    %edx,(%rax)
  mov    $0x15,%eax
  jmp    L443
L158:
  cmpl   $0x27,-0x10(%rbp)
  jne    L164
  mov    $0x0,%eax
  call   <getcc@plt>
  mov    $0x15,%eax
  jmp    L443
L164:
  cmpl   $0x7b,-0xc(%rbp)
  jne    L14
  mov    D211(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L453
L149:
  mov    D211(%rip),%rax
  lea    0x24(%rax),%rax
  cmp    %rax,-0x8(%rbp)
  jae    L78
  mov    -0x8(%rbp),%rax
  mov    -0x10(%rbp),%edx
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
L78:
  mov    $0x0,%eax
  call   <xread@plt>
  mov    %eax,-0x10(%rbp)
  mov    D83(%rip),%rax
  mov    -0x10(%rbp),%edx
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%eax
  mov    %eax,-0xc(%rbp)
L453:
  cmpl   $0x7b,-0xc(%rbp)
  sete   %dl
  cmpl   $0x7c,-0xc(%rbp)
  sete   %al
  or     %edx,%eax
  test   %al,%al
  jne    L149
  mov    -0x8(%rbp),%rax
  movl   $0x0,(%rax)
  mov    D252(%rip),%rax
  mov    -0x10(%rbp),%edx
  mov    %edx,(%rax)
  mov    $0x0,%eax
  call   <lookup@plt>
  cltq
  mov    %rax,%rdx
  mov    D213(%rip),%rax
  mov    %rdx,(%rax)
  mov    D213(%rip),%rax
  mov    (%rax),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L210
  mov    D213(%rip),%rax
  mov    (%rax),%rax
  mov    0x4(%rax),%edx
  mov    D87(%rip),%rax
  mov    %edx,(%rax)
  mov    $0x13,%eax
  jmp    L443
L210:
  mov    $0x14,%eax
  jmp    L443
L14:
  cmpl   $0x7f,-0xc(%rbp)
  jne    L103
  mov    $0x7379,%edi
  mov    $0x0,%eax
  call   <error@plt>
  mov    $0x0,%eax
  call   <xread@plt>
  mov    %eax,-0x10(%rbp)
  jmp    L465
L103:
  mov    D83(%rip),%rax
  mov    -0x10(%rbp),%edx
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%eax
L443:
  leave
  ret
```

assistant: ```c
symbol() {
  extern symbuf[], ctab[], peeksym, peekc, xeof, line, *csym, cval;
  auto b, c, ct, *sp;
  if (peeksym >= 0) {
    c = peeksym;
    peeksym = -1;
    return (c);
  }
  if (peekc) {
    c = peekc;
    peekc = 0;
  } else {
    if (xeof)
      return (0);
    c = xread();
  }
loop:
  ct = ctab[c];
  if (ct == 0) {
    xeof = 1;
    return (0);
  }
  if (ct == 126) {
    if (c == '\n')
      line = line + 1;
    c = xread();
    goto loop;
  }
  if (c == '=')
    return (subseq('=', 80, 60));
  if (c == '<')
    return (subseq('=', 63, 62));
  if (c == '>')
    return (subseq('=', 65, 64));
  if (c == '!')
    return (subseq('=', 34, 61));
  if (c == '$') {
    if (subseq('(', 0, 1))
      return (2);
    if (subseq(')', 0, 1))
      return (3);
  }
  if (c == '/') {
    if (subseq('*', 1, 0))
      return (43);
  com:
    c = xread();
  com1:
    if (c == 4) {
      xeof = 1;
      error('*/');
      return (0);
    }
    if (c == '\n')
      line = line + 1;
    if (c != '*')
      goto com;
    c = xread();
    if (c != '/')
      goto com1;
    c = xread();
    goto loop;
  }
  if (ct == 124) {
    cval = 0;
    if (c == '0')
      b = 8;
    else
      b = 10;
    while (c >= '0' & c <= '9') {
      cval = cval * b + c - '0';
      c = xread();
    }
    peekc = c;
    return (21);
  }
  if (c == '\'') {
    getcc();
    return (21);
  }
  if (ct == 123) {
    sp = symbuf;
    while (ct == 123 | ct == 124) {
      if (sp < symbuf + 9) {
        *sp = c;
        sp = sp + 1;
      }
      ct = ctab[c = xread()];
    }
    *sp = 0;
    peekc = c;
    csym = lookup();
    if (csym[0] == 1) {
      cval = csym[1];
      return (19);
    }
    return (20);
  }
  if (ct == 127) {
    error('sy');
    c = xread();
    goto loop;
  }
  return (ctab[c]);
}
```