user: 这段汇编代码用C语言表示是什么样的?

```asm
<scan_text>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x160,%rsp
  mov    %rdi,-0x148(%rbp)
  mov    %rsi,-0x150(%rbp)
  mov    %edx,-0x154(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    -0x148(%rbp),%rax
  mov    %rax,-0x128(%rbp)
  lea    -0x110(%rbp),%rax
  mov    %rax,-0x120(%rbp)
  jmp    L257
L210:
  addq   $0x1,-0x128(%rbp)
L257:
  mov    -0x128(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  je     L210
  mov    -0x128(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x9,%al
  je     L210
  mov    -0x128(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x28,%al
  jne    L174
  movl   $0x1,-0x134(%rbp)
  addq   $0x1,-0x128(%rbp)
L49:
  mov    -0x128(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x128(%rbp)
  mov    -0x120(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x120(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  movzbl (%rax),%eax
  movsbl %al,%eax
  cmp    $0x5c,%eax
  je     L287
  cmp    $0x5c,%eax
  jg     L49
  cmp    $0x29,%eax
  je     L217
  cmp    $0x29,%eax
  jg     L49
  test   %eax,%eax
  je     L132
  cmp    $0x28,%eax
  je     L10
  jmp    L49
L287:
  mov    -0x128(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x128(%rbp)
  movzbl (%rax),%eax
  movsbl %al,%eax
  cmp    $0x74,%eax
  jg     L164
  cmp    $0x62,%eax
  jge    L208
  test   %eax,%eax
  je     L292
  test   %eax,%eax
  js     L164
  sub    $0x30,%eax
  cmp    $0x7,%eax
  ja     L164
  jmp    L190
L208:
  sub    $0x62,%eax
  cmp    $0x12,%eax
  ja     L164
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D3(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D3(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  mov    -0x120(%rbp),%rax
  sub    $0x1,%rax
  movb   $0xa,(%rax)
  jmp    L170
  mov    -0x120(%rbp),%rax
  sub    $0x1,%rax
  movb   $0xd,(%rax)
  jmp    L170
  mov    -0x120(%rbp),%rax
  sub    $0x1,%rax
  movb   $0x9,(%rax)
  jmp    L170
  mov    -0x120(%rbp),%rax
  sub    $0x1,%rax
  movb   $0x8,(%rax)
  jmp    L170
  mov    -0x120(%rbp),%rax
  sub    $0x1,%rax
  movb   $0xc,(%rax)
  jmp    L170
L190:
  mov    -0x128(%rbp),%rax
  sub    $0x1,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  sub    $0x30,%eax
  mov    %eax,-0x130(%rbp)
  mov    -0x128(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,-0x12c(%rbp)
  cmpl   $0x2f,-0x12c(%rbp)
  jle    L328
  cmpl   $0x37,-0x12c(%rbp)
  jg     L328
  mov    -0x130(%rbp),%eax
  lea    0x0(,%rax,8),%edx
  mov    -0x12c(%rbp),%eax
  add    %edx,%eax
  sub    $0x30,%eax
  mov    %eax,-0x130(%rbp)
  addq   $0x1,-0x128(%rbp)
  mov    -0x128(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,-0x12c(%rbp)
  cmpl   $0x2f,-0x12c(%rbp)
  jle    L328
  cmpl   $0x37,-0x12c(%rbp)
  jg     L328
  mov    -0x130(%rbp),%eax
  lea    0x0(,%rax,8),%edx
  mov    -0x12c(%rbp),%eax
  add    %edx,%eax
  sub    $0x30,%eax
  mov    %eax,-0x130(%rbp)
  addq   $0x1,-0x128(%rbp)
L328:
  mov    -0x120(%rbp),%rax
  sub    $0x1,%rax
  mov    -0x130(%rbp),%edx
  mov    %dl,(%rax)
  jmp    L170
L292:
  subq   $0x1,-0x128(%rbp)
  jmp    L30
L164:
  mov    -0x128(%rbp),%rax
  sub    $0x1,%rax
  mov    -0x120(%rbp),%rdx
  sub    $0x1,%rdx
  movzbl (%rax),%eax
  mov    %al,(%rdx)
  jmp    L246
L170:
  jmp    L246
L10:
  addl   $0x1,-0x134(%rbp)
  jmp    L246
L217:
  subl   $0x1,-0x134(%rbp)
  cmpl   $0x0,-0x134(%rbp)
  je     L132
  nop
L246:
  jmp    L49
L132:
  nop
L30:
  subq   $0x1,-0x120(%rbp)
  jmp    L27
L169:
  mov    -0x128(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x128(%rbp)
  mov    -0x120(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x120(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
L174:
  mov    -0x128(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L87
  mov    -0x128(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0xa,%al
  je     L87
  cmpl   $0x0,-0x154(%rbp)
  jne    L169
  mov    -0x128(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  je     L87
  mov    -0x128(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x9,%al
  jne    L169
L87:
  lea    -0x110(%rbp),%rax
  cmp    %rax,-0x120(%rbp)
  jne    L27
  mov    $0x0,%eax
  jmp    L127
L27:
  mov    -0x120(%rbp),%rax
  movb   $0x0,(%rax)
  cmpq   $0x0,-0x150(%rbp)
  je     L399
  mov    -0x150(%rbp),%rax
  mov    -0x128(%rbp),%rdx
  mov    %rdx,(%rax)
L399:
  lea    -0x110(%rbp),%rdx
  mov    -0x120(%rbp),%rax
  sub    %rdx,%rax
  add    $0x1,%eax
  mov    %eax,%edi
  call   <dsc_malloc@plt>
  mov    %rax,-0x118(%rbp)
  lea    -0x110(%rbp),%rdx
  mov    -0x118(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  mov    -0x118(%rbp),%rax
L127:
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L99
  call   <__stack_chk_fail@plt>
L99:
  leave
  ret
```

assistant: ```c
const char *scan_text(const char *line, const char **endp, int rest) {
  char buf[258];
  const char *lp = line;
  char *bp = buf;
  char *arg;
  while (*lp == ' ' || *lp == '\t')
    lp++;
  if (*lp == '(') {
    int level = 1;
    lp++;
    for (;;)
      switch (*bp++ = *lp++) {
      case '\\':
        switch (*lp++) {
        case 'n':
          bp[-1] = '\n';
          break;
        case 'r':
          bp[-1] = '\r';
          break;
        case 't':
          bp[-1] = '\t';
          break;
        case 'b':
          bp[-1] = '\b';
          break;
        case 'f':
          bp[-1] = '\f';
          break;
        case '0':
        case '1':
        case '2':
        case '3':
        case '4':
        case '5':
        case '6':
        case '7': {
          int c = lp[-1] - '0';
          int d = *lp;
          if (d >= '0' && d <= '7') {
            c = (c << 3) + d - '0';
            d = *++lp;
            if (d >= '0' && d <= '7') {
              c = (c << 3) + d - '0';
              lp++;
            }
          }
          bp[-1] = c;
          break;
        }
        case 0:
          lp--;
          goto out;
        default:
          bp[-1] = lp[-1];
        }
        break;
      case '(':
        ++level;
        break;
      case ')':
        if (--level)
          break;
      case 0:
        goto out;
      default:;
      }
  out:
    --bp;
  } else {
    while (!(*lp == 0 || *lp == '\n' || (!rest && (*lp == ' ' || *lp == '\t'))))
      *bp++ = *lp++;
    if (bp == buf)
      return NULL;
  }
  *bp = 0;
  if (endp)
    *endp = lp;
  arg = dsc_malloc(bp - buf + 1);
  strcpy(arg, buf);
  return arg;
}
```