user: Please show me the C implementation that matches the assembly code listed below:

```asm
<parse>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  sub    $0x748,%rsp
  mov    %rdi,%rbx
  mov    %rsi,%r14
  mov    %fs:0x28,%rax
  mov    %rax,0x2738(%rsp)
  xor    %eax,%eax
  call   <strlen@plt>
  mov    %eax,%ebp
  mov    $0x0,%r11d
  mov    $0x0,%edi
  mov    $0x0,%r13d
  lea    0x20(%rsp),%r12
  test   %eax,%eax
  jg     L135
  mov    $0x0,%ebp
L87:
  movslq %ebp,%rbp
  movb   $0x0,(%r14,%rbp,1)
  mov    0x2738(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L107
  add    $0x2748,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L66:
  mov    %edi,%r8d
  mov    %r13d,%r10d
L99:
  lea    0x1(%r8),%edi
  cmp    %edi,%ebp
  jle    L85
L135:
  movslq %edi,%rsi
  add    %rbx,%rsi
  movzbl (%rsi),%edx
  lea    -0x9(%rdx),%eax
  cmp    $0x1,%al
  jbe    L66
  cmp    $0x20,%dl
  je     L66
  movslq %r11d,%rax
  lea    (%rax,%rax,4),%rax
  lea    (%rax,%rax,4),%rax
  lea    (%r12,%rax,4),%r9
  mov    $0x1,%eax
L14:
  mov    %eax,%r10d
  mov    %dl,-0x1(%r9,%rax,1)
  lea    (%rdi,%rax,1),%r8d
  movzbl (%rsi,%rax,1),%edx
  add    $0x1,%rax
  lea    -0x9(%rdx),%ecx
  cmp    $0x1,%cl
  jbe    L117
  cmp    $0x20,%dl
  jne    L14
L117:
  movslq %r10d,%rax
  movslq %r11d,%rdx
  lea    (%rdx,%rdx,4),%rdx
  lea    (%rdx,%rdx,4),%rdx
  lea    0x2740(%rsp,%rdx,4),%rdx
  movb   $0x0,-0x2720(%rax,%rdx,1)
  add    $0x1,%r11d
  jmp    L99
L85:
  movslq %r10d,%r10
  movslq %r11d,%rax
  lea    (%rax,%rax,4),%rax
  lea    (%rax,%rax,4),%rax
  lea    0x2740(%rsp,%rax,4),%rax
  movb   $0x0,-0x2720(%r10,%rax,1)
  test   %r11d,%r11d
  jle    L13
  mov    %r11d,%r11d
  lea    (%r11,%r11,4),%rax
  lea    (%rax,%rax,4),%rax
  shl    $0x2,%rax
  mov    %rax,0x10(%rsp)
  mov    $0x0,%r15d
  mov    $0x0,%ebp
  lea    0x20(%rsp),%rax
  mov    %rax,0x18(%rsp)
  jmp    L41
L27:
  movzbl -0x1(%r12,%rbx,1),%eax
  mov    %al,-0x1(%r14,%rbx,1)
L97:
  mov    %ebx,0xc(%rsp)
  mov    %r13,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  add    $0x1,%rbx
  mov    %ebx,%eax
  sub    %ebp,%eax
  sub    $0x1,%eax
  cmp    %eax,%edx
  jg     L27
  mov    0xc(%rsp),%eax
  lea    0x1(%rax),%ebp
  cltq
  movb   $0x20,(%r14,%rax,1)
  add    $0x64,%r15
  cmp    0x10(%rsp),%r15
  je     L87
L41:
  mov    0x18(%rsp),%rsi
  lea    (%rsi,%r15,1),%r13
  movslq %ebp,%rax
  mov    %rax,%rbx
  mov    %r15,%r12
  sub    %rax,%r12
  add    %rsi,%r12
  jmp    L97
L13:
  mov    $0x0,%ebp
  jmp    L87
L107:
  call   <__stack_chk_fail@plt>
```

assistant: ```c
void parse(char a[], char test[]) {
  int i, j;
  char sec_str[100][100];
  int sec_ptr = 0;
  int len = strlen(a);
  j = 0;
  for (i = 0; i < len; i++) {
    j = 0;
    int check = 0;
    while (a[i] != ' ' && a[i] != '\t' && a[i] != '\n') {
      sec_str[sec_ptr][j++] = a[i];
      i++;
      check = 1;
    }
    if (check == 1) {
      sec_str[sec_ptr][j] = '\0';
      sec_ptr++;
    }
  }
  sec_str[sec_ptr][j] = '\0';
  int test_ptr = 0;
  for (i = 0; i < sec_ptr; i++) {
    for (j = 0; j < strlen(sec_str[i]); j++) {
      test[test_ptr++] = sec_str[i][j];
    }
    test[test_ptr++] = ' ';
  }
  test[test_ptr] = '\0';
}
```