user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<get_token_bool>:
  endbr64
  mov    (%rdx),%eax
  mov    %esi,%r9d
  cmp    %esi,%eax
  jge    L201
  mov    %rdx,%rsi
  movslq %eax,%rdx
  movzbl (%rdi,%rdx,1),%edx
  cmp    $0xa,%dl
  je     L201
  test   %dl,%dl
  je     L201
  add    $0x1,%eax
  mov    %rcx,%r10
  cltq
  jmp    L212
  nopw   0x0(%rax,%rax,1)
L118:
  test   %dl,%dl
  je     L24
L212:
  cmp    $0x20,%dl
  je     L7
  cmp    $0x9,%dl
  jne    L124
L7:
  mov    %eax,(%rsi)
  cmp    %eax,%r9d
  jle    L201
  movzbl (%rdi,%rax,1),%edx
  add    $0x1,%rax
  cmp    $0xa,%dl
  jne    L118
L201:
  mov    $0x65,%eax
  ret
  nopl   0x0(%rax,%rax,1)
L24:
  cmp    $0xa,%dl
  je     L201
  test   %dl,%dl
  je     L201
L124:
  lea    -0x7d(%rdx),%eax
  mov    %edx,%ecx
  cmp    $0x1,%al
  setbe  %al
  and    $0xffffffbf,%ecx
  cmp    $0x3b,%cl
  sete   %cl
  or     %cl,%al
  jne    L102
  cmp    $0x2c,%dl
  je     L102
  movl   $0x0,(%r8)
  movslq (%rsi),%rax
  mov    %rax,%rdx
  add    %rdi,%rax
  add    $0x1,%edx
  cmpb   $0x5c,(%rax)
  mov    %edx,(%rsi)
  movslq (%r8),%rdx
  lea    0x1(%rdx),%ecx
  mov    %ecx,(%r8)
  movzbl (%rax),%eax
  mov    %al,(%r10,%rdx,1)
  jne    L229
  movslq (%rsi),%rdx
  lea    0x1(%rdx),%eax
  mov    %eax,(%rsi)
  movslq (%r8),%rax
  lea    0x1(%rax),%ecx
  mov    %ecx,(%r8)
  movzbl (%rdi,%rdx,1),%edx
  mov    %dl,(%r10,%rax,1)
L229:
  mov    (%rsi),%eax
  cmp    %eax,%r9d
  jle    L57
  movabs $0xffffeffffffffbfe,%r11
  push   %rbx
  cs nopw 0x0(%rax,%rax,1)
L225:
  movslq %eax,%rdx
  add    %rdi,%rdx
  movzbl (%rdx),%ecx
  cmp    $0x2c,%cl
  ja     L127
  bt     %rcx,%r11
  jae    L109
  add    $0x1,%eax
L154:
  mov    %eax,(%rsi)
  movslq (%r8),%rax
  lea    0x1(%rax),%ecx
  mov    %ecx,(%r8)
  movzbl (%rdx),%edx
  mov    %dl,(%r10,%rax,1)
  mov    (%rsi),%eax
  cmp    %r9d,%eax
  jl     L225
L109:
  movslq (%r8),%rax
  movb   $0x0,(%r10,%rax,1)
  mov    $0x61,%eax
  pop    %rbx
  ret
  nop
L102:
  mov    %dl,(%r10)
  movl   $0x1,(%r8)
  movslq (%rsi),%rax
  lea    0x1(%rax),%edx
  mov    %edx,(%rsi)
  movzbl (%rdi,%rax,1),%eax
  ret
  nopw   0x0(%rax,%rax,1)
L127:
  mov    %ecx,%ebx
  and    $0xffffffbf,%ebx
  cmp    $0x3b,%bl
  je     L109
  lea    -0x7d(%rcx),%ebx
  cmp    $0x1,%bl
  jbe    L109
  add    $0x1,%eax
  cmp    $0x5c,%cl
  jne    L154
  mov    %eax,(%rsi)
  movslq (%r8),%rax
  lea    0x1(%rax),%ecx
  mov    %ecx,(%r8)
  movzbl (%rdx),%edx
  mov    %dl,(%r10,%rax,1)
  movslq (%rsi),%rdx
  lea    0x1(%rdx),%eax
  mov    %eax,(%rsi)
  movslq (%r8),%rax
  lea    0x1(%rax),%ecx
  mov    %ecx,(%r8)
  movzbl (%rdi,%rdx,1),%edx
  mov    %dl,(%r10,%rax,1)
  mov    (%rsi),%eax
  cmp    %eax,%r9d
  jg     L225
  jmp    L109
L57:
  movslq (%r8),%rax
  movb   $0x0,(%r10,%rax,1)
  mov    $0x61,%eax
  ret
```

assistant: ```c
int get_token_bool(buffer, len, ptr, tokenbuf, tokenlen)
unsigned char *buffer, *tokenbuf;
int len, *ptr, *tokenlen;
{
  if ((*ptr >= len) || (buffer[*ptr] == '\n') || (buffer[*ptr] == '\0'))
    return 'e';
  while ((*ptr < len) && (buffer[*ptr] != '\n') && (buffer[*ptr] != '\0') && ((buffer[*ptr] == ' ') || (buffer[*ptr] == '\t')))
    (*ptr)++;
  if ((*ptr >= len) || (buffer[*ptr] == '\n') || (buffer[*ptr] == '\0'))
    return 'e';
  if ((buffer[*ptr] == ',') || (buffer[*ptr] == ';') || (buffer[*ptr] == '~') || (buffer[*ptr] == '{') || (buffer[*ptr] == '}')) {
    tokenbuf[0] = buffer[*ptr];
    *tokenlen = 1;
    return buffer[(*ptr)++];
  }
  *tokenlen = 0;
  if (buffer[*ptr] == '\\') {
    tokenbuf[(*tokenlen)++] = buffer[(*ptr)++];
    tokenbuf[(*tokenlen)++] = buffer[(*ptr)++];
  } else
    tokenbuf[(*tokenlen)++] = buffer[(*ptr)++];
  while ((*ptr < len) && (buffer[*ptr] != '\n') && (buffer[*ptr] != '\0') && (buffer[*ptr] != ',') && (buffer[*ptr] != ';') && (buffer[*ptr] != '~') && (buffer[*ptr] != '{') && (buffer[*ptr] != '}')) {
    if (buffer[*ptr] == '\\') {
      tokenbuf[(*tokenlen)++] = buffer[(*ptr)++];
      tokenbuf[(*tokenlen)++] = buffer[(*ptr)++];
    } else
      tokenbuf[(*tokenlen)++] = buffer[(*ptr)++];
  }
  tokenbuf[*tokenlen] = '\0';
  return 'a';
}
```