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

```asm
<rq_tokenizer_get_token>:
  endbr64
  push   %r15
  mov    %rdi,%r15
  push   %r14
  mov    %edx,%r14d
  push   %r13
  mov    %r9,%r13
  push   %r12
  mov    %rcx,%r12
  push   %rbp
  mov    %rsi,%rbp
  push   %rbx
  mov    %r8,%rbx
  sub    $0x18,%rsp
  mov    (%rdi),%rax
  jmp    L213
  nopl   0x0(%rax)
L237:
  cmpb   $0x0,(%rax)
  je     L145
  add    $0x1,%rax
  mov    %rax,(%r15)
L213:
  movsbl (%rax),%esi
  mov    %rbx,%rdi
  call   <strchr@plt>
  test   %rax,%rax
  mov    (%r15),%rax
  jne    L237
  movsbl (%rax),%esi
  test   %sil,%sil
  je     L145
  lea    -0x1(%r14),%eax
  mov    %eax,0xc(%rsp)
  test   %r13,%r13
  je     L12
  mov    %r13,%rdi
  call   <strchr@plt>
  test   %rax,%rax
  je     L12
  mov    (%r15),%rax
  mov    0xc(%rsp),%edx
  add    $0x1,%rax
  mov    %rax,(%r15)
  test   %edx,%edx
  jle    L96
  lea    -0x2(%r14),%edx
  mov    %rbp,%rbx
  mov    $0x1,%r12d
  lea    0x1(%rbp,%rdx,1),%r14
  jmp    L259
  nopl   0x0(%rax,%rax,1)
L3:
  mov    %r13,%rdi
  call   <strchr@plt>
  test   %rax,%rax
  jne    L180
  mov    (%r15),%rax
  movzbl (%rax),%eax
  mov    %al,(%rbx)
  mov    %r12d,%eax
  sub    %ebp,%eax
  lea    (%rax,%rbx,1),%edx
  mov    (%r15),%rax
  add    $0x1,%rbx
  add    $0x1,%rax
  mov    %rax,(%r15)
  cmp    %rbx,%r14
  je     L55
L259:
  movsbl (%rax),%esi
  test   %sil,%sil
  jne    L3
L155:
  movb   $0x0,(%rbx)
  add    $0x18,%rsp
  mov    %rbp,%rax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   (%rax)
L12:
  mov    0xc(%rsp),%ecx
  test   %ecx,%ecx
  jle    L148
  mov    (%r15),%rax
  mov    %rbp,%r13
  xor    %r14d,%r14d
  jmp    L118
  nop
L111:
  mov    %r12,%rdi
  call   <strchr@plt>
  test   %rax,%rax
  jne    L144
  mov    (%r15),%rax
  lea    0x1(%r14),%edx
  add    $0x1,%r13
  movzbl (%rax),%eax
  mov    %al,-0x1(%r13)
  mov    (%r15),%rax
  add    $0x1,%rax
  mov    %rax,(%r15)
  cmp    0xc(%rsp),%edx
  je     L68
  movslq %edx,%r14
L118:
  movsbl (%rax),%esi
  test   %sil,%sil
  jne    L111
  lea    -0x1(%r14),%eax
L219:
  movb   $0x0,0x0(%rbp,%r14,1)
  test   %eax,%eax
  jle    L127
  movslq %eax,%rdx
  sub    $0x1,%eax
  lea    -0x1(%rbp,%rdx,1),%r13
  lea    0x0(%rbp,%rdx,1),%r12
  sub    %rax,%r13
  jmp    L24
  nopl   (%rax)
L158:
  movb   $0x0,(%r12)
  sub    $0x1,%r12
  cmp    %r12,%r13
  je     L127
L24:
  movsbl (%r12),%esi
  mov    %rbx,%rdi
  call   <strchr@plt>
  test   %rax,%rax
  jne    L158
L127:
  add    $0x18,%rsp
  mov    %rbp,%rax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopw   0x0(%rax,%rax,1)
L145:
  add    $0x18,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L144:
  addq   $0x1,(%r15)
  lea    -0x1(%r14),%eax
  jmp    L219
  nopw   0x0(%rax,%rax,1)
L68:
  mov    %r14d,%eax
  movslq 0xc(%rsp),%r14
  jmp    L219
L180:
  addq   $0x1,(%r15)
  jmp    L155
L55:
  movslq %edx,%rax
  lea    0x0(%rbp,%rax,1),%rbx
  jmp    L155
L148:
  movb   $0x0,0x0(%rbp)
  jmp    L127
L96:
  mov    %rbp,%rbx
  jmp    L155
```

assistant: ```c
const char *rq_tokenizer_get_token(const char **pptr, char *tok, int maxtoklen, const char *delims, const char *white, const char *quotes) {
  int in_quote = 0;
  while (strchr(white, **pptr))
    if (**pptr != '\0')
      (*pptr)++;
    else
      break;
  if (**pptr == '\0')
    return NULL;
  if (quotes)
    if (strchr(quotes, **pptr)) {
      (*pptr)++;
      in_quote = 1;
    }
  if (in_quote) {
    int i;
    for (i = 0; i < maxtoklen - 1; i++, (*pptr)++)
      if (**pptr == '\0')
        break;
      else if (strchr(quotes, **pptr)) {
        (*pptr)++;
        break;
      } else
        *(tok + i) = **pptr;
    *(tok + i) = '\0';
  } else {
    int i;
    for (i = 0; i < maxtoklen - 1; i++, (*pptr)++)
      if (**pptr == '\0')
        break;
      else if (strchr(delims, **pptr)) {
        (*pptr)++;
        break;
      } else
        *(tok + i) = **pptr;
    *(tok + i) = '\0';
    for (i--; i > 0; i--)
      if (strchr(white, *(tok + i)))
        *(tok + i) = '\0';
      else
        break;
  }
  return tok;
}
```