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     L200
  cmpq   $0x0,-0x30(%rbp)
  je     L200
  cmpq   $0x0,-0x38(%rbp)
  je     L200
  cmpq   $0x0,-0x40(%rbp)
  jne    L144
L200:
  mov    $0x0,%eax
  jmp    L132
L144:
  movl   $0x0,-0x14(%rbp)
  jmp    L177
L64:
  movl   $0x0,-0xc(%rbp)
  movl   $0x0,-0x10(%rbp)
  jmp    L214
L217:
  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    L48
  movl   $0x1,-0xc(%rbp)
  jmp    L143
L48:
  addl   $0x1,-0x10(%rbp)
L214:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L217
L143:
  cmpl   $0x0,-0xc(%rbp)
  je     L258
  addl   $0x1,-0x14(%rbp)
L177:
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L64
  jmp    L145
L258:
  nop
L145:
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L271
  mov    $0x0,%eax
  jmp    L132
L271:
  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    L309
L300:
  movl   $0x0,-0x8(%rbp)
  movl   $0x0,-0x10(%rbp)
  jmp    L0
L308:
  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    L81
  movl   $0x1,-0x8(%rbp)
  jmp    L199
L81:
  addl   $0x1,-0x10(%rbp)
L0:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L308
L199:
  cmpl   $0x0,-0x8(%rbp)
  jne    L118
  addl   $0x1,-0x14(%rbp)
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  lea    0x1(%rax),%edx
  mov    -0x40(%rbp),%rax
  mov    %edx,(%rax)
L309:
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L300
  jmp    L285
L118:
  nop
  jmp    L285
L156:
  movl   $0x0,-0x4(%rbp)
  movl   $0x0,-0x10(%rbp)
  jmp    L207
L140:
  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    L62
  movl   $0x1,-0x4(%rbp)
  jmp    L168
L62:
  addl   $0x1,-0x10(%rbp)
L207:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L140
L168:
  cmpl   $0x0,-0x4(%rbp)
  je     L218
  addl   $0x1,-0x14(%rbp)
L285:
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L156
  jmp    L110
L218:
  nop
L110:
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
L132:
  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 0;
  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 0;
  *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;
}
```