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

```asm
<buildargv>:
  endbr64
  push   %r15
  lea    -0x1(%rdx),%eax
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x18,%rsp
  mov    %rsi,0x8(%rsp)
  mov    %eax,0x4(%rsp)
  test   %eax,%eax
  jle    L184
  mov    %rsi,%rbp
  mov    %rdi,%r15
  xor    %r12d,%r12d
  nop
L121:
  mov    %rdi,%rbx
  jmp    L135
  nopl   (%rax)
L71:
  add    $0x1,%rbx
L135:
  movsbl (%rbx),%edi
  call   <isspace@plt>
  test   %rax,%rax
  jne    L71
  cmpb   $0x0,(%rbx)
  je     L83
  mov    %rbx,0x0(%rbp)
  movsbl (%rbx),%edi
  add    $0x1,%r12d
  test   %dil,%dil
  je     L235
  mov    %rbx,%r15
  xor    %edx,%edx
  xor    %r13d,%r13d
  xor    %r14d,%r14d
  jmp    L137
  nopl   0x0(%rax,%rax,1)
L247:
  mov    %dil,(%rbx)
  xor    %edx,%edx
  add    $0x1,%rbx
L166:
  movsbl 0x1(%r15),%edi
  add    $0x1,%r15
  test   %dil,%dil
  je     L235
L137:
  test   %edx,%edx
  jne    L247
  cmp    $0x5c,%dil
  je     L84
  test   %r14d,%r14d
  je     L89
  cmp    $0x27,%dil
  je     L11
L123:
  add    $0x1,%r15
  mov    %dil,(%rbx)
  add    $0x1,%rbx
  movsbl (%r15),%edi
  test   %dil,%dil
  jne    L137
L235:
  mov    %rbx,%r15
L83:
  mov    0x8(%rsp),%rcx
  movslq %r12d,%rax
  movb   $0x0,(%r15)
  movq   $0x0,(%rcx,%rax,8)
L236:
  add    $0x18,%rsp
  mov    %r12d,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L84:
  mov    $0x1,%edx
  jmp    L166
  nopw   0x0(%rax,%rax,1)
L89:
  test   %r13d,%r13d
  je     L47
  cmp    $0x22,%dil
  jne    L123
  xor    %r13d,%r13d
  jmp    L166
  nopl   0x0(%rax,%rax,1)
L11:
  xor    %r14d,%r14d
  jmp    L166
L47:
  mov    %edx,(%rsp)
  call   <isspace@plt>
  test   %rax,%rax
  jne    L206
  movzbl (%r15),%eax
  mov    (%rsp),%edx
  cmp    $0x27,%al
  je     L12
  cmp    $0x22,%al
  je     L218
  mov    %al,(%rbx)
  add    $0x1,%rbx
  jmp    L166
L206:
  cmpb   $0x0,(%r15)
  lea    0x1(%r15),%rdi
  je     L235
  movb   $0x0,(%rbx)
  add    $0x8,%rbp
  cmp    0x4(%rsp),%r12d
  je     L184
  mov    %rbx,%r15
  jmp    L121
  nopl   0x0(%rax,%rax,1)
L12:
  mov    $0x1,%r14d
  jmp    L166
  nopl   0x0(%rax,%rax,1)
L218:
  mov    $0x1,%r13d
  jmp    L166
L184:
  mov    D17(%rip),%rax
  mov    $0xffffffff,%r12d
  mov    (%rax),%edx
  mov    D7(%rip),%rax
  mov    %edx,(%rax)
  jmp    L236
```

assistant: ```c
int buildargv(char *s, char *argv[], int maxargc) {
  bool squote = false;
  bool dquote = false;
  bool bsquote = false;
  char *arg = s;
  int argc = 0;
  for (;;) {
    if (argc >= maxargc - 1) {
      errno = E2BIG;
      return -1;
    }
    while (isspace((int)*s))
      s++;
    if (!*s)
      break;
    arg = s;
    argv[argc++] = arg;
    while (*s) {
      if (bsquote) {
        *arg++ = *s;
        bsquote = false;
      } else if (*s == '\\') {
        bsquote = true;
      } else if (squote) {
        if (*s == '\'')
          squote = false;
        else
          *arg++ = *s;
      } else if (dquote) {
        if (*s == '"')
          dquote = false;
        else
          *arg++ = *s;
      } else {
        if (isspace((int)*s))
          break;
        if (*s == '\'')
          squote = true;
        else if (*s == '"')
          dquote = true;
        else
          *arg++ = *s;
      }
      s++;
    }
    if (!*s++)
      break;
    *arg = 0;
  }
  *arg = 0;
  argv[argc] = NULL;
  return argc;
}
```