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

```asm
<_DtHelpGetNxtToken>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  test   %rsi,%rsi
  je     L3
  movq   $0x0,(%rsi)
  mov    %rdi,%rbx
  mov    %rsi,%rbp
  test   %rdi,%rdi
  je     L3
  movsbl (%rdi),%edi
  test   %dil,%dil
  je     L3
  cmp    $0xa,%dil
  jne    L147
  jmp    L322
  nopl   0x0(%rax,%rax,1)
L64:
  movsbl 0x1(%rbx),%edi
  add    $0x1,%rbx
  test   %dil,%dil
  je     L328
  cmp    $0xa,%dil
  je     L328
L147:
  call   <isspace@plt>
  test   %rax,%rax
  jne    L64
  movzbl (%rbx),%edi
  mov    %rbx,%r12
  mov    %rbx,%r13
  test   %dil,%dil
  jne    L145
L335:
  mov    %r13,0x0(%rbp)
L121:
  add    $0x8,%rsp
  mov    %r12,%rax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L328:
  mov    %rbx,%r12
  mov    %rbx,%r13
  test   %dil,%dil
  je     L335
L145:
  cmp    $0xa,%dil
  je     L322
  mov    D10(%rip),%r13
  mov    0x0(%r13),%esi
  cmp    $0x1,%esi
  jne    L309
  cmp    $0x22,%dil
  je     L316
  mov    %rbx,%r14
  xor    %r15d,%r15d
  xor    %ebx,%ebx
L82:
  mov    %r14,%r12
  cmp    $0x1,%esi
  je     L14
  nopl   0x0(%rax,%rax,1)
L190:
  mov    %r12,%rdi
  call   <mblen@plt>
  cmp    $0x1,%eax
  mov    %eax,%ecx
  sete   %dl
  shr    $0x1f,%ecx
  or     %cl,%dl
  je     L136
L14:
  movsbl (%r12),%edi
  test   %bx,%bx
  jne    L79
L305:
  call   <isspace@plt>
  test   %rax,%rax
  jne    L35
  cmpb   $0xa,(%r12)
  je     L35
L26:
  cmpb   $0x0,0x1(%r12)
  lea    0x1(%r12),%rax
  je     L315
L98:
  mov    0x0(%r13),%esi
  mov    %rax,%r12
  cmp    $0x1,%esi
  jne    L190
  movsbl (%r12),%edi
  test   %bx,%bx
  je     L305
L79:
  cmp    $0x22,%dil
  jne    L26
L35:
  mov    %r12,%rbx
  sub    %r14,%rbx
  lea    0x1(%rbx),%edi
L112:
  call   <malloc@plt>
  mov    %rax,%r13
  test   %rax,%rax
  jne    L216
  mov    D14(%rip),%rax
  movl   $0xfffffff9,(%rax)
L127:
  test   %r15b,%r15b
  je     L335
  xor    %eax,%eax
  cmpb   $0x22,(%r12)
  sete   %al
  add    %rax,%r12
  jmp    L335
  nopl   (%rax)
L3:
  mov    D20(%rip),%rax
  xor    %r12d,%r12d
  mov    (%rax),%edx
  mov    D14(%rip),%rax
  mov    %edx,(%rax)
  jmp    L121
  nopw   0x0(%rax,%rax,1)
L309:
  mov    %rbx,%rdi
  call   <mblen@plt>
  cmp    $0x1,%eax
  movzbl (%rbx),%eax
  je     L267
L182:
  mov    %rbx,%r14
  xor    %r15d,%r15d
  xor    %ebx,%ebx
L242:
  test   %al,%al
  je     L186
  mov    0x0(%r13),%esi
  jmp    L82
  nopl   (%rax)
L136:
  cltq
  add    %r12,%rax
  cmpb   $0x0,(%rax)
  jne    L98
  mov    %rax,%rbx
  xor    %r15d,%r15d
  mov    %rax,%r12
  sub    %r14,%rbx
  lea    0x1(%rbx),%edi
  jmp    L112
  nopw   0x0(%rax,%rax,1)
L322:
  mov    %rbx,%r13
  lea    0x1(%rbx),%r12
  jmp    L335
  nopl   0x0(%rax)
L216:
  mov    %ebx,%edx
  mov    %r14,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  movb   $0x0,0x0(%r13,%rbx,1)
  jmp    L127
L315:
  mov    %rax,%rbx
  mov    %rax,%r12
  sub    %r14,%rbx
  lea    0x1(%rbx),%edi
  jmp    L112
L267:
  cmp    $0x22,%al
  jne    L182
L316:
  movzbl 0x1(%rbx),%eax
  lea    0x1(%rbx),%r14
  mov    $0x1,%r15d
  mov    $0x1,%ebx
  jmp    L242
L186:
  mov    %r14,%r12
  mov    $0x1,%edi
  xor    %ebx,%ebx
  jmp    L112
```

assistant: ```c
char *_DtHelpGetNxtToken(char *str, char **retToken) {
  int len = 1;
  char *start;
  char *token;
  short quote = 0;
  short done = 0;
  if (retToken)
    *retToken = 0;
  if (str == 0 || *str == '\0' || retToken == 0) {
    errno = EINVAL;
    return 0;
  }
  while (*str && (*str != '\n') && isspace(*str))
    str++;
  if (*str == '\0')
    token = str;
  else if (*str == '\n') {
    token = str;
    str++;
  } else {
    if ((MB_CUR_MAX == 1 || mblen(str, MB_CUR_MAX) == 1) && *str == '\"') {
      quote = 1;
      str++;
    }
    start = str;
    while (*str && !done) {
      len = 1;
      if (MB_CUR_MAX != 1) {
        len = mblen(str, MB_CUR_MAX);
        if (len < 0)
          len = 1;
      }
      if (len == 1) {
        if ((quote && *str == '\"') || (!quote && (isspace(*str) || *str == '\n')))
          done = 1;
        else
          str++;
      } else
        str += len;
    }
    token = (char *)malloc((str - start + 1) * sizeof(char));
    if (token) {
      strncpy(token, start, str - start);
      *(token + (str - start)) = '\0';
    } else
      errno = -7;
    if (quote && len == 1 && *str == '\"')
      str++;
  }
  *retToken = token;
  return (str);
}
```