user: Converte this assembly snippet into its equivalent C code:

```asm
<fill_argv>:
  endbr64
  push   %r15
  mov    $0x7d0,%r15d
  push   %r14
  mov    %rsi,%r14
  push   %r13
  mov    $0x1,%r13d
  push   %r12
  xor    %r12d,%r12d
  push   %rbp
  xor    %ebp,%ebp
  push   %rbx
  sub    $0x18,%rsp
  mov    %rdi,0x8(%rsp)
  mov    $0x7d0,%edi
  call   <malloc@plt>
  mov    %r14,%rdi
  movb   $0x0,(%rax)
  mov    %rax,%rbx
  call   <getc@plt>
  mov    %eax,%edx
  mov    %eax,%ecx
  nopw   0x0(%rax,%rax,1)
L215:
  mov    D28(%rip),%rsi
  mov    %r12,%rax
  cmp    %edx,(%rsi)
  je     L129
L246:
  cmp    $0xa,%cl
  je     L151
  test   %r13d,%r13d
  je     L174
  cmp    $0x20,%cl
  je     L305
  cmp    $0x9,%cl
  je     L305
  add    $0x1,%ebp
  mov    %cl,(%rbx,%r12,1)
  xor    %r13d,%r13d
  movslq %ebp,%r12
L305:
  mov    %r14,%rdi
  call   <getc@plt>
  mov    %eax,%edx
  mov    %eax,%ecx
  cmp    %ebp,%r15d
  jg     L215
  add    $0x7d0,%r15d
  mov    %rbx,%rdi
  mov    %al,0x7(%rsp)
  mov    %r15d,%esi
  mov    %eax,(%rsp)
  call   <realloc@plt>
  mov    D28(%rip),%rsi
  movzbl 0x7(%rsp),%ecx
  mov    %rax,%rbx
  mov    (%rsp),%edx
  mov    %r12,%rax
  cmp    %edx,(%rsi)
  jne    L246
L129:
  movb   $0x0,(%rbx,%r12,1)
  mov    $0x1,%r10d
L285:
  movzbl (%rbx),%ecx
  mov    0x8(%rsp),%r13
  xor    %eax,%eax
  xor    %r9d,%r9d
  xor    %edx,%edx
  lea    -0x1(%r15),%edi
L23:
  add    %rbx,%rdx
  test   %cl,%cl
  je     L218
  mov    %rdx,0x0(%r13)
  add    $0x1,%r9d
  add    $0x1,%eax
  cmpb   $0x22,(%rdx)
  je     L156
  cmp    %eax,%r15d
  jle    L181
  movslq %eax,%rcx
  add    %rbx,%rcx
  jmp    L333
  nopl   0x0(%rax)
L170:
  add    $0x1,%eax
  add    $0x1,%rcx
  cmp    %eax,%r15d
  je     L181
L333:
  movzbl (%rcx),%edx
  cmp    $0x20,%dl
  je     L238
  cmp    $0x9,%dl
  je     L238
  test   %dl,%dl
  jne    L170
L141:
  add    $0x18,%rsp
  mov    %r9d,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopw   0x0(%rax,%rax,1)
L238:
  movb   $0x0,(%rcx)
L181:
  add    $0x1,%eax
  add    $0x8,%r13
  movslq %eax,%rdx
  movzbl (%rbx,%rdx,1),%ecx
  test   %cl,%cl
  jne    L23
  jmp    L141
  nopw   0x0(%rax,%rax,1)
L151:
  test   %ebp,%ebp
  je     L93
  lea    -0x1(%rbx,%r12,1),%rcx
  movzbl (%rcx),%edx
  cmp    $0x5c,%dl
  je     L331
  cmp    $0x1,%ebp
  je     L290
  cmp    $0xd,%dl
  je     L71
L290:
  movb   $0x0,(%rbx,%rax,1)
  xor    %r10d,%r10d
  jmp    L285
  nopl   0x0(%rax,%rax,1)
L174:
  add    $0x1,%ebp
  mov    %cl,(%rbx,%r12,1)
  movslq %ebp,%r12
  jmp    L305
  nopw   0x0(%rax,%rax,1)
L156:
  cmp    %eax,%edi
  jle    L181
  movslq %eax,%rdx
  add    %rbx,%rdx
  jmp    L150
  nopl   0x0(%rax)
L377:
  test   %cl,%cl
  je     L141
  add    $0x1,%eax
  add    $0x1,%rdx
  cmp    %edi,%eax
  je     L181
L150:
  movzbl (%rdx),%ecx
  cmp    $0x22,%cl
  jne    L377
  add    $0x1,%eax
  movslq %eax,%rdx
  add    %rbx,%rdx
  cmpb   $0x0,(%rdx)
  je     L141
  cmp    %eax,%r15d
  jle    L181
  movb   $0x0,(%rdx)
  jmp    L181
  nopw   0x0(%rax,%rax,1)
L93:
  xor    %eax,%eax
  jmp    L290
L218:
  test   %r9d,%r9d
  jne    L141
  test   %r10d,%r10d
  je     L141
  mov    D28(%rip),%rax
  mov    (%rax),%r9d
  jmp    L141
L331:
  sub    $0x1,%ebp
  movb   $0x0,(%rcx)
  movslq %ebp,%r12
  jmp    L305
  xchg   %ax,%ax
L71:
  lea    -0x2(%rbx,%r12,1),%rdx
  cmpb   $0x5c,(%rdx)
  jne    L290
  sub    $0x2,%ebp
  movb   $0x0,(%rdx)
  movslq %ebp,%r12
  jmp    L305
```

assistant: ```c
int fill_argv(char **argv, FILE *describe_file, int max_args) {
  int argc, t, stop, s, e, eof = 0, start;
  int command_len = 0;
  char *command, c;
  int retC;
  int NNMAX_LINE = 2000;
  command = (char *)malloc(NNMAX_LINE);
  command_len = NNMAX_LINE;
  command[0] = '\0';
  stop = 0;
  start = 1;
  t = 0;
  while (stop == 0) {
    retC = getc(describe_file);
    c = (char)retC;
    if (t >= command_len) {
      command = (char *)realloc(command, command_len + NNMAX_LINE);
      command_len += NNMAX_LINE;
    }
    if (retC == EOF) {
      command[t] = '\0';
      stop = 1;
      eof = 1;
    } else if (c == '\n') {
      if (t > 0 && command[t - 1] == '\\') {
        command[t - 1] = '\0';
        t -= 2;
      } else if (t > 1 && command[t - 1] == '\r' && command[t - 2] == '\\') {
        command[t - 2] = '\0';
        t -= 3;
      } else {
        command[t] = '\0';
        stop = 1;
      }
    } else {
      if (start) {
        if (c == ' ' || c == '\t')
          t--;
        else {
          start = 0;
          command[t] = c;
        }
      } else {
        command[t] = c;
      }
    }
    t++;
  }
  argc = 0;
  s = 0;
  while (1) {
    if (command[s] == '\0') {
      goto finished;
    }
    argv[argc] = &command[s];
    if (argv[argc++][0] == '\"') {
      for (e = s + 1; e < command_len - 1; e++) {
        if (command[e] == '\"') {
          e++;
          if (command[e] == '\0')
            goto finished;
          if (e < command_len)
            command[e] = '\0';
          break;
        } else if (command[e] == '\0') {
          goto finished;
        }
      }
    } else {
      for (e = s + 1; e < command_len; e++) {
        if (command[e] == ' ' || command[e] == '\t') {
          command[e] = '\0';
          break;
        } else if (command[e] == '\0')
          goto finished;
      }
    }
    s = e + 1;
    if (command[s] == '\0')
      break;
  }
finished:
  if (argc == 0 && eof)
    return EOF;
  else
    return argc;
}
```