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

```asm
<__itt_fsplit>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x28(%rbp)
  mov    %rsi,-0x30(%rbp)
  mov    %rdx,-0x38(%rbp)
  mov    %rcx,-0x40(%rbp)
  cmpq   $0x0,-0x28(%rbp)
  je     L123
  cmpq   $0x0,-0x30(%rbp)
  je     L123
  cmpq   $0x0,-0x38(%rbp)
  je     L123
  cmpq   $0x0,-0x40(%rbp)
  jne    L211
L123:
  mov    $0x0,%eax
  jmp    L301
L211:
  movl   $0x0,-0x14(%rbp)
  jmp    L288
L225:
  movl   $0x0,-0xc(%rbp)
  movl   $0x0,-0x10(%rbp)
  jmp    L69
L94:
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x10(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x30(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  cmp    %al,%dl
  jne    L97
  movl   $0x1,-0xc(%rbp)
  jmp    L150
L97:
  addl   $0x1,-0x10(%rbp)
L69:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L94
L150:
  cmpl   $0x0,-0xc(%rbp)
  je     L217
  addl   $0x1,-0x14(%rbp)
L288:
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L225
  jmp    L256
L217:
  nop
L256:
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L129
  mov    $0x0,%eax
  jmp    L301
L129:
  mov    -0x40(%rbp),%rax
  movl   $0x0,(%rax)
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x38(%rbp),%rax
  mov    %rdx,(%rax)
  jmp    L216
L161:
  movl   $0x0,-0x8(%rbp)
  movl   $0x0,-0x10(%rbp)
  jmp    L15
L185:
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x10(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x30(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  cmp    %al,%dl
  jne    L88
  movl   $0x1,-0x8(%rbp)
  jmp    L289
L88:
  addl   $0x1,-0x10(%rbp)
L15:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L185
L289:
  cmpl   $0x0,-0x8(%rbp)
  jne    L41
  addl   $0x1,-0x14(%rbp)
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  lea    0x1(%rax),%edx
  mov    -0x40(%rbp),%rax
  mov    %edx,(%rax)
L216:
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L161
  jmp    L234
L41:
  nop
  jmp    L234
L36:
  movl   $0x0,-0x4(%rbp)
  movl   $0x0,-0x10(%rbp)
  jmp    L80
L264:
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x10(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x30(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  cmp    %al,%dl
  jne    L227
  movl   $0x1,-0x4(%rbp)
  jmp    L213
L227:
  addl   $0x1,-0x10(%rbp)
L80:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L264
L213:
  cmpl   $0x0,-0x4(%rbp)
  je     L255
  addl   $0x1,-0x14(%rbp)
L234:
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L36
  jmp    L24
L255:
  nop
L24:
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
L301:
  pop    %rbp
  ret
```

assistant: ```c
const char *__itt_fsplit(const char *s, const char *sep, const char **out, int *len) {
  int i;
  int j;
  if (!s || !sep || !out || !len)
    return NULL;
  for (i = 0; s[i]; i++) {
    int b = 0;
    for (j = 0; sep[j]; j++)
      if (s[i] == sep[j]) {
        b = 1;
        break;
      }
    if (!b)
      break;
  }
  if (!s[i])
    return NULL;
  *len = 0;
  *out = &s[i];
  for (; s[i]; i++, (*len)++) {
    int b = 0;
    for (j = 0; sep[j]; j++)
      if (s[i] == sep[j]) {
        b = 1;
        break;
      }
    if (b)
      break;
  }
  for (; s[i]; i++) {
    int b = 0;
    for (j = 0; sep[j]; j++)
      if (s[i] == sep[j]) {
        b = 1;
        break;
      }
    if (!b)
      break;
  }
  return &s[i];
}
```