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

```asm
<my_str2vect>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    %rdi,%rbx
  test   %rdi,%rdi
  je     L27
  mov    $0x0,%ecx
  cmpb   $0x0,(%rdi)
  jne    L141
L135:
  lea    0x1(,%rsi,8),%edi
  call   <xmalloc@plt>
  mov    %rax,%r12
  mov    $0x0,%r13d
  mov    $0x0,%r14d
L35:
  mov    %r13d,%edi
  jmp    L151
L265:
  add    $0x1,%ecx
  movslq %ecx,%rax
L245:
  mov    %eax,%ecx
  movzbl (%rbx,%rax,1),%edx
  add    $0x1,%rax
  cmp    $0x20,%dl
  je     L245
  cmp    $0x9,%dl
  je     L245
L124:
  cmp    $0x1,%dl
  sbb    $0xffffffff,%esi
  movslq %ecx,%rax
  movzbl (%rbx,%rax,1),%eax
  test   $0xdf,%al
  je     L259
  cmp    $0x9,%al
  setne  %dl
  lea    0x1(%rcx),%eax
  cltq
  test   %dl,%dl
  je     L259
L236:
  mov    %eax,%ecx
  movzbl (%rbx,%rax,1),%edx
  add    $0x1,%rax
  test   $0xdf,%dl
  je     L259
  cmp    $0x9,%dl
  jne    L236
L259:
  movslq %ecx,%rax
  cmpb   $0x0,(%rbx,%rax,1)
  je     L135
L141:
  movslq %ecx,%rax
  movzbl (%rbx,%rax,1),%edx
  cmp    $0x20,%dl
  je     L265
  cmp    $0x9,%dl
  je     L265
  jmp    L124
L255:
  lea    0x1(%rbx,%rdx,1),%rdx
  mov    %rdx,%rax
  lea    0x1(%r14),%ecx
  sub    %edx,%ecx
L162:
  lea    (%rcx,%rax,1),%esi
  mov    %rax,%rbp
  movzbl (%rax),%edx
  add    $0x1,%rax
  cmp    $0x20,%dl
  je     L162
  cmp    $0x9,%dl
  je     L162
  test   %dl,%dl
  jne    L200
  mov    %esi,%r14d
L151:
  movslq %r14d,%rdx
  lea    (%rbx,%rdx,1),%rbp
  movzbl 0x0(%rbp),%eax
  test   %al,%al
  je     L227
  cmp    $0x20,%al
  je     L255
  cmp    $0x9,%al
  je     L255
L99:
  movslq %r14d,%rax
  movzbl (%rbx,%rax,1),%eax
  test   $0xdf,%al
  je     L266
  cmp    $0x9,%al
  je     L266
  lea    0x1(%r14),%eax
  cltq
  mov    $0x0,%r15d
L191:
  add    $0x1,%r15d
  mov    %eax,%r14d
  movzbl (%rbx,%rax,1),%edx
  add    $0x1,%rax
  test   $0xdf,%dl
  je     L29
  cmp    $0x9,%dl
  jne    L191
L29:
  lea    0x1(%r15),%edi
  call   <xmalloc@plt>
  mov    %rax,%rdi
  mov    %rax,(%r12,%r13,8)
  mov    %r15d,%edx
  mov    %rbp,%rsi
  call   <my_strncpy@plt>
  movslq %r15d,%r15
  mov    (%r12,%r13,8),%rax
  movb   $0x0,(%rax,%r15,1)
  add    $0x1,%r13
  jmp    L35
L200:
  mov    %esi,%r14d
  jmp    L99
L266:
  mov    $0x0,%r15d
  jmp    L29
L227:
  movslq %edi,%rdi
  movq   $0x0,(%r12,%rdi,8)
L131:
  mov    %r12,%rax
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L27:
  mov    %rdi,%r12
  jmp    L131
```

assistant: ```c
char **my_str2vect(char *str) {
  int vectS;
  int strLen;
  int i;
  char **vect = ((void *)0);
  char *substringStart = ((void *)0);
  i = 0;
  if (str) {
    while (str[i]) {
      for (; str[i] == ' ' || str[i] == '\t'; ++i)
        ;
      if (str[i])
        ++vectS;
      for (; str[i] != ' ' && str[i] != '\t' && str[i]; ++i)
        ;
    }
    vect = (char **)xmalloc((vectS * sizeof(char *)) + 1);
    i = 0;
    vectS = 0;
    while (str[i]) {
      for (; str[i] == ' ' || str[i] == '\t'; ++i)
        ;
      if (str[i]) {
        substringStart = &(str[i]);
        for (strLen = 0; str[i] != ' ' && str[i] != '\t' && str[i]; ++i)
          ++strLen;
        vect[vectS] = xmalloc((strLen * sizeof(char)) + 1);
        my_strncpy(vect[vectS], substringStart, strLen);
        vect[vectS][strLen] = '\0';
        ++vectS;
      }
    }
    vect[vectS] = ((void *)0);
  }
  return vect;
}
```