user: What is the c source code of the assembly code below:

```asm
<buildargv>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x18,%rsp
  mov    %rsi,0x8(%rsp)
  cmp    $0x1,%edx
  jle    L245
  mov    %rsi,%r15
  lea    -0x1(%rdx),%eax
  mov    %eax,0x4(%rsp)
  mov    %rdi,%rbp
  movl   $0x0,(%rsp)
  mov    $0x0,%r12d
  mov    $0x1,%r14d
  jmp    L217
L245:
  mov    D7(%rip),%rax
  mov    (%rax),%edx
  mov    D2(%rip),%rax
  mov    %edx,(%rax)
  movl   $0xffffffff,(%rsp)
  jmp    L279
L61:
  cmpb   $0x0,(%rbx)
  je     L51
  addl   $0x1,(%rsp)
  mov    %rbx,(%r15)
  movzbl (%rbx),%edi
  test   %dil,%dil
  je     L97
  mov    %rbx,%rbp
  mov    %r12d,%eax
  mov    %r12d,%r13d
  mov    %r12d,%edx
  jmp    L91
L195:
  cmp    $0x5c,%dil
  je     L13
  test   %edx,%edx
  je     L250
  cmp    $0x27,%dil
  je     L63
  mov    %dil,0x0(%rbp)
  lea    0x1(%rbp),%rbp
  jmp    L218
L250:
  test   %r13d,%r13d
  je     L104
  cmp    $0x22,%dil
  je     L161
  mov    %dil,0x0(%rbp)
  lea    0x1(%rbp),%rbp
  mov    %edx,%eax
  jmp    L218
L104:
  movsbl %dil,%edi
  call   <isspace@plt>
  test   %rax,%rax
  jne    L185
  movzbl (%rbx),%eax
  cmp    $0x27,%al
  je     L57
  cmp    $0x22,%al
  je     L86
  mov    %al,0x0(%rbp)
  lea    0x1(%rbp),%rbp
  mov    %r13d,%eax
  mov    %r13d,%edx
  jmp    L218
L13:
  mov    %r14d,%eax
L218:
  add    $0x1,%rbx
  movzbl (%rbx),%edi
  test   %dil,%dil
  je     L51
L91:
  test   %eax,%eax
  je     L195
  mov    %dil,0x0(%rbp)
  lea    0x1(%rbp),%rbp
  mov    %r12d,%eax
  jmp    L218
L63:
  mov    %eax,%edx
  jmp    L218
L161:
  mov    %edx,%eax
  mov    %edx,%r13d
  jmp    L218
L57:
  mov    %r13d,%eax
  mov    %r14d,%edx
  jmp    L218
L86:
  mov    %r13d,%eax
  mov    %r13d,%edx
  mov    %r14d,%r13d
  jmp    L218
L185:
  lea    0x1(%rbx),%rdi
  cmpb   $0x0,(%rbx)
  je     L51
  movb   $0x0,0x0(%rbp)
  add    $0x8,%r15
  mov    (%rsp),%ecx
  cmp    %ecx,0x4(%rsp)
  je     L245
L217:
  mov    %rdi,%rbx
L138:
  movsbl (%rbx),%edi
  call   <isspace@plt>
  test   %rax,%rax
  je     L61
  add    $0x1,%rbx
  jmp    L138
L97:
  mov    %rbx,%rbp
L51:
  movb   $0x0,0x0(%rbp)
  movslq (%rsp),%rax
  mov    0x8(%rsp),%rsi
  movq   $0x0,(%rsi,%rax,8)
L279:
  mov    (%rsp),%eax
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

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;
}
```