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

```asm
<scan1tm>:
  endbr64
  push   %r14
  mov    %edx,%r14d
  push   %r13
  mov    %rsi,%r13
  push   %r12
  mov    %rdi,%r12
  push   %rbp
  push   %rbx
L112:
  mov    (%r12),%rax
  lea    0x1(%rax),%rbp
  jmp    L36
  nop
L212:
  call   <isspace@plt>
  test   %eax,%eax
  jne    L197
  test   %bl,%bl
  jne    L22
L197:
  add    $0x1,%rbp
  test   %bl,%bl
  je     L89
L36:
  mov    %rbp,(%r12)
  movsbl -0x1(%rbp),%edi
  mov    %edi,%ebx
  test   %dil,%dil
  jns    L212
L32:
  mov    %bl,0x0(%r13)
  lea    0x1(%r13),%rbp
  jmp    L83
  nopw   0x0(%rax,%rax,1)
L49:
  test   %r13b,%r13b
  je     L209
L116:
  lea    0x1(%rbx),%rax
  add    $0x1,%rbp
  mov    %rax,(%r12)
  movzbl (%rbx),%eax
  mov    %al,-0x1(%rbp)
L83:
  mov    (%r12),%rbx
  movzbl (%rbx),%r13d
  test   %r13b,%r13b
  js     L116
  movsbl %r13b,%edi
  call   <isspace@plt>
  test   %eax,%eax
  je     L49
L209:
  movb   $0x0,0x0(%rbp)
  mov    $0x1,%r12d
  cmp    $0x2,%r14d
  je     L196
L140:
  pop    %rbx
  mov    %r12d,%eax
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
  nopl   (%rax)
L22:
  cmp    $0x28,%bl
  je     L20
  cmp    $0x29,%bl
  jne    L142
  movb   $0x0,0x0(%r13)
  xor    %r12d,%r12d
  cmp    $0x1,%r14d
  jne    L109
L196:
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <ERRMOD@plt>
L109:
  pop    %rbx
  mov    %r12d,%eax
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
  nopl   0x0(%rax)
L142:
  cmp    $0x22,%bl
  jne    L32
  movb   $0x22,0x0(%r13)
  lea    0x1(%r13),%rbp
  jmp    L124
  nopl   0x0(%rax)
L242:
  cmp    $0x5c,%al
  je     L26
L124:
  mov    (%r12),%rax
  add    $0x1,%rbp
  lea    0x1(%rax),%rdx
  mov    %rdx,(%r12)
  movzbl (%rax),%eax
  mov    %al,-0x1(%rbp)
  cmp    $0x22,%al
  jne    L242
  jmp    L209
  nopl   0x0(%rax,%rax,1)
L89:
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <ERRMOD@plt>
  jmp    L112
  nopl   0x0(%rax)
L26:
  mov    (%r12),%rax
  add    $0x1,%rbp
  lea    0x1(%rax),%rdx
  mov    %rdx,(%r12)
  movzbl (%rax),%eax
  mov    %al,-0x1(%rbp)
  sub    $0x30,%eax
  cmp    $0x7,%al
  jbe    L26
  jmp    L124
  nopw   0x0(%rax,%rax,1)
L20:
  mov    $0x2028,%eax
  lea    0x2(%r13),%rbx
  mov    %ax,0x0(%r13)
L156:
  xor    %edx,%edx
  xor    %eax,%eax
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <scan1tm>
  test   %eax,%eax
  jne    L33
  jmp    L159
  nopl   0x0(%rax,%rax,1)
L194:
  add    $0x1,%rbx
L33:
  cmpb   $0x0,(%rbx)
  jne    L194
  movb   $0x20,(%rbx)
  add    $0x1,%rbx
  jmp    L156
  nopw   0x0(%rax,%rax,1)
L159:
  lea    0x1(%rbx),%rbp
  movb   $0x29,(%rbx)
  mov    $0x1,%r12d
  movb   $0x0,0x0(%rbp)
  cmp    $0x2,%r14d
  jne    L140
  jmp    L196
```

assistant: ```c
int scan1tm(socp, dest, flg)
char **socp, *dest;
int flg;
{
  register char c;
  register int retval = 1;
  while (c = *(*socp)++, (isascii(c) && (isspace(c) || (c) == '\0')))
    if (c == '\0')
      ERRMOD(6);
  switch (c) {
  case ')':
    retval = 0;
    break;
  case '(':
    *dest++ = c;
    *dest++ = ' ';
    while (scan1tm(socp, dest, 0)) {
      {
        while (*(dest))
          (dest)++;
      };
      *dest++ = ' ';
    }
    *dest++ = ')';
    break;
  case '"':
    *dest++ = c;
    while ((c = *dest++ = *(*socp)++) != '"') {
      if (c == '\\') {
        while (c = *dest++ = *(*socp)++, (isascii(c) && (isdigit(c) && (c) < '8')))
          ;
      }
    }
    break;
  default:
    *dest++ = c;
    while (!(isascii(**socp) && (isspace(**socp) || (**socp) == '\0')))
      *dest++ = *(*socp)++;
  }
  *dest = '\0';
  if (flg == 1 && retval == 0 || flg == 2 && retval == 1)
    ERRMOD(6);
  return (retval);
}
```