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

```asm
<getTok>:
  endbr64
  push   %r12
  xor    %r8d,%r8d
  mov    %rdi,%rsi
  mov    $0x2,%ecx
  push   %rbp
  lea    D2(%rip),%r10
  lea    D29(%rip),%r12
  push   %rbx
  mov    (%rdi),%rax
  lea    D19(%rip),%rbx
  lea    D59(%rip),%rdi
  lea    D41(%rip),%rbp
  lea    D67(%rip),%r9
  cmpb   $0x5c,(%rax)
  lea    D6(%rip),%r11
  ja     L234
L131:
  movzbl (%rax),%edx
  movslq (%rdi,%rdx,4),%rdx
  add    %rdi,%rdx
  notrack jmp *%rdx
  cmp    $0x1,%ecx
  je     L225
  cmp    $0x2,%ecx
  je     L93
  test   %ecx,%ecx
  je     L68
L285:
  add    $0x1,%rax
  mov    %rax,(%rsi)
  cmpb   $0x5c,(%rax)
  jbe    L131
L234:
  cmp    $0x2,%ecx
  jne    L285
  lea    0x1(%rax),%rdx
  mov    %rdx,(%rsi)
  cmpb   $0x5c,0x1(%rax)
  ja     L209
  movzbl 0x1(%rax),%ecx
  movslq (%r10,%rcx,4),%rcx
  add    %r10,%rcx
  notrack jmp *%rcx
  nop
  test   %ecx,%ecx
  je     L68
  cmp    $0x2,%ecx
  jne    L285
  lea    0x1(%rax),%rdx
  mov    %rax,%r8
  mov    %rdx,(%rsi)
  jmp    L68
  mov    %rax,%rdx
L273:
  lea    0x1(%rdx),%rax
  mov    %rax,(%rsi)
  cmpb   $0x0,0x1(%rdx)
  jne    L285
  nopl   (%rax)
L23:
  xor    %r8d,%r8d
L68:
  pop    %rbx
  mov    %r8,%rax
  pop    %rbp
  pop    %r12
  ret
  test   %ecx,%ecx
  je     L68
  cmp    $0x1,%ecx
  je     L12
  add    $0x1,%ecx
  jmp    L285
  cmp    $0x2,%ecx
  jg     L58
  cmp    $0x1,%ecx
  jne    L23
L247:
  add    $0x1,%rax
  mov    %rax,(%rsi)
  cmpb   $0x5c,(%rax)
  ja     L280
  movzbl (%rax),%edx
  movslq (%r9,%rdx,4),%rdx
  add    %r9,%rdx
  notrack jmp *%rdx
  nopl   0x0(%rax)
L58:
  sub    $0x1,%ecx
  jmp    L285
  mov    %rax,%r8
  mov    %rdx,%rax
  cs nopw 0x0(%rax,%rax,1)
L12:
  add    $0x1,%rax
  mov    %rax,(%rsi)
  cmpb   $0x5c,(%rax)
  ja     L280
  movzbl (%rax),%edx
  movslq (%r11,%rdx,4),%rdx
  add    %r11,%rdx
  notrack jmp *%rdx
  nopl   0x0(%rax)
L133:
  mov    %rax,%r8
  mov    %rdx,%rax
L280:
  mov    $0x1,%ecx
  jmp    L285
L93:
  lea    0x1(%rax),%rdx
  mov    %rdx,(%rsi)
  cmpb   $0x5c,0x1(%rax)
  ja     L133
  movzbl 0x1(%rax),%ecx
  movslq (%rbx,%rcx,4),%rcx
  add    %rbx,%rcx
  notrack jmp *%rcx
  nopl   0x0(%rax,%rax,1)
L209:
  mov    %rax,%r8
  xor    %ecx,%ecx
  mov    %rdx,%rax
  jmp    L285
  mov    %rax,%r8
  mov    %rdx,%rax
L225:
  add    $0x1,%rax
  pop    %rbx
  pop    %rbp
  mov    %rax,(%rsi)
  pop    %r12
  mov    %r8,%rax
  ret
  mov    %rax,%r8
  jmp    L68
  lea    0x2(%rax),%rdx
  mov    %rdx,(%rsi)
  cmpb   $0x5c,0x2(%rax)
  ja     L133
  movzbl 0x2(%rax),%ecx
  movslq 0x0(%rbp,%rcx,4),%rcx
  add    %rbp,%rcx
  notrack jmp *%rcx
  mov    %rax,%rdx
  mov    $0x1,%ecx
  jmp    L273
  mov    %rax,%r8
  xor    %ecx,%ecx
  jmp    L273
  lea    0x2(%rax),%rdx
  mov    %rdx,(%rsi)
  cmpb   $0x0,0x2(%rax)
  je     L23
  lea    0x3(%rax),%rdx
  mov    %rdx,(%rsi)
  cmpb   $0x5c,0x3(%rax)
  ja     L133
  movzbl 0x3(%rax),%ecx
  movslq (%r12,%rcx,4),%rcx
  add    %r12,%rcx
  notrack jmp *%rcx
  mov    %rax,%r8
  mov    %rdx,%rax
  jmp    L247
  mov    %rax,%r8
  mov    $0x1,%ecx
  jmp    L273
```

assistant: ```c
const char *getTok(const char **pp) {
  enum { inAtom, inString, init, inComment };
  int state = init;
  const char *tokStart = 0;
  for (;;) {
    switch (**pp) {
    case '\0':
      return 0;
    case ' ':
    case '\r':
    case '\t':
    case '\n':
      if (state == inAtom)
        return tokStart;
      break;
    case '(':
      if (state == inAtom)
        return tokStart;
      if (state != inString)
        state++;
      break;
    case ')':
      if (state > init)
        --state;
      else if (state != inString)
        return 0;
      break;
    case ';':
    case '/':
    case '=':
      if (state == inAtom)
        return tokStart;
      if (state == init)
        return (*pp)++;
      break;
    case '\\':
      ++*pp;
      if (**pp == '\0')
        return 0;
      break;
    case '"':
      switch (state) {
      case inString:
        ++*pp;
        return tokStart;
      case inAtom:
        return tokStart;
      case init:
        tokStart = *pp;
        state = inString;
        break;
      }
      break;
    default:
      if (state == init) {
        tokStart = *pp;
        state = inAtom;
      }
      break;
    }
    ++*pp;
  }
}
```