user: 请将以下的汇编代码转换成C语言代码：

```asm
<prepName>:
  endbr64
  push   %r14
  push   %r13
  mov    %rdi,%r13
  push   %r12
  mov    %rsi,%r12
  push   %rbp
  push   %rbx
  call   <tokenLen@plt>
  mov    %r12,%rdi
  movslq %eax,%rbx
  call   <tokenLen@plt>
  mov    $0x1,%esi
  lea    0x2(%rbx,%rax,1),%edi
  mov    %eax,%ebp
  call   <calloc@plt>
  mov    %rax,%r8
  test   %ebx,%ebx
  jle    L330
  lea    0x1(%r13),%rsi
  mov    %r8,%rdx
  lea    0x1(%rbx),%r14d
  mov    %ebx,%ecx
  sub    %rsi,%rdx
  lea    -0x1(%rbx),%eax
  cmp    $0xe,%rdx
  jbe    L104
  cmp    $0x6,%eax
  jbe    L104
  cmp    $0xe,%eax
  jbe    L201
  mov    %ebx,%eax
  mov    %r13,%rdx
  shr    $0x4,%eax
  sub    %r8,%rdx
  sub    $0x1,%eax
  shl    $0x4,%rax
  lea    0x10(%r8,%rax,1),%rcx
  mov    %r8,%rax
  cs nopw 0x0(%rax,%rax,1)
L28:
  movdqu (%rax,%rdx,1),%xmm0
  add    $0x10,%rax
  movups %xmm0,-0x10(%rax)
  cmp    %rcx,%rax
  jne    L28
  mov    %ebx,%edx
  and    $0xfffffff0,%edx
  mov    %edx,%eax
  cmp    %edx,%ebx
  je     L197
  mov    %ebx,%ecx
  sub    %edx,%ecx
  lea    -0x1(%rcx),%esi
  cmp    $0x6,%esi
  jbe    L193
L180:
  mov    0x0(%r13,%rdx,1),%rsi
  mov    %rsi,(%r8,%rdx,1)
  mov    %ecx,%edx
  and    $0xfffffff8,%edx
  add    %edx,%eax
  cmp    %edx,%ecx
  je     L197
L193:
  movslq %eax,%rdx
  movzbl 0x0(%r13,%rdx,1),%ecx
  mov    %cl,(%r8,%rdx,1)
  lea    0x1(%rax),%edx
  cmp    %edx,%ebx
  jle    L197
  movslq %edx,%rdx
  movzbl 0x0(%r13,%rdx,1),%ecx
  mov    %cl,(%r8,%rdx,1)
  lea    0x2(%rax),%edx
  cmp    %edx,%ebx
  jle    L197
  movslq %edx,%rdx
  movzbl 0x0(%r13,%rdx,1),%ecx
  mov    %cl,(%r8,%rdx,1)
  lea    0x3(%rax),%edx
  cmp    %edx,%ebx
  jle    L197
  movslq %edx,%rdx
  movzbl 0x0(%r13,%rdx,1),%ecx
  mov    %cl,(%r8,%rdx,1)
  lea    0x4(%rax),%edx
  cmp    %edx,%ebx
  jle    L197
  movslq %edx,%rdx
  movzbl 0x0(%r13,%rdx,1),%ecx
  mov    %cl,(%r8,%rdx,1)
  lea    0x5(%rax),%edx
  cmp    %edx,%ebx
  jle    L197
  movslq %edx,%rdx
  add    $0x6,%eax
  movzbl 0x0(%r13,%rdx,1),%ecx
  mov    %cl,(%r8,%rdx,1)
  cmp    %eax,%ebx
  jle    L197
  cltq
  movzbl 0x0(%r13,%rax,1),%edx
  mov    %dl,(%r8,%rax,1)
L197:
  add    %r8,%rbx
  movslq %r14d,%rax
L186:
  movb   $0x2f,(%rbx)
  test   %ebp,%ebp
  jle    L345
  movslq %r14d,%rsi
  lea    0x1(%r12),%r9
  lea    -0x1(%rbp),%ecx
  lea    (%r8,%rsi,1),%rdx
  mov    %rdx,%rdi
  mov    %rdx,%rax
  sub    %r9,%rdi
  cmp    $0xe,%rdi
  jbe    L27
  cmp    $0x6,%ecx
  jbe    L27
  cmp    $0xe,%ecx
  jbe    L10
  mov    %ebp,%ecx
  mov    %r12,%rsi
  shr    $0x4,%ecx
  sub    %rdx,%rsi
  shl    $0x4,%rcx
  add    %rdx,%rcx
L17:
  movdqu (%rax,%rsi,1),%xmm1
  add    $0x10,%rax
  movups %xmm1,-0x10(%rax)
  cmp    %rax,%rcx
  jne    L17
  mov    %ebp,%eax
  and    $0xfffffff0,%eax
  mov    %eax,%ecx
  lea    (%r14,%rax,1),%esi
  cmp    %eax,%ebp
  je     L314
  mov    %ebp,%edi
  sub    %eax,%edi
  lea    -0x1(%rdi),%r9d
  cmp    $0x6,%r9d
  jbe    L69
L119:
  mov    (%r12,%rax,1),%r9
  mov    %r9,(%rdx,%rax,1)
  mov    %edi,%eax
  and    $0xfffffff8,%eax
  add    %eax,%esi
  add    %eax,%ecx
  cmp    %edi,%eax
  je     L314
L69:
  movslq %ecx,%rax
  movzbl (%r12,%rax,1),%edx
  movslq %esi,%rax
  mov    %dl,(%r8,%rax,1)
  lea    0x1(%rcx),%eax
  lea    0x1(%rsi),%edx
  cmp    %eax,%ebp
  jle    L314
  cltq
  movslq %edx,%rdx
  movzbl (%r12,%rax,1),%eax
  mov    %al,(%r8,%rdx,1)
  lea    0x2(%rcx),%eax
  lea    0x2(%rsi),%edx
  cmp    %eax,%ebp
  jle    L314
  cltq
  movslq %edx,%rdx
  movzbl (%r12,%rax,1),%eax
  mov    %al,(%r8,%rdx,1)
  lea    0x3(%rcx),%eax
  lea    0x3(%rsi),%edx
  cmp    %eax,%ebp
  jle    L314
  cltq
  movslq %edx,%rdx
  movzbl (%r12,%rax,1),%eax
  mov    %al,(%r8,%rdx,1)
  lea    0x4(%rcx),%eax
  lea    0x4(%rsi),%edx
  cmp    %eax,%ebp
  jle    L314
  cltq
  movslq %edx,%rdx
  movzbl (%r12,%rax,1),%eax
  mov    %al,(%r8,%rdx,1)
  lea    0x5(%rcx),%eax
  lea    0x5(%rsi),%edx
  cmp    %eax,%ebp
  jle    L314
  cltq
  movslq %edx,%rdx
  add    $0x6,%ecx
  add    $0x6,%esi
  movzbl (%r12,%rax,1),%eax
  mov    %al,(%r8,%rdx,1)
  cmp    %ecx,%ebp
  jle    L314
  movslq %ecx,%rcx
  movslq %esi,%rsi
  movzbl (%r12,%rcx,1),%eax
  mov    %al,(%r8,%rsi,1)
L314:
  add    %ebp,%r14d
  movslq %r14d,%rax
L345:
  movb   $0x0,(%r8,%rax,1)
  mov    %r8,%rax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
  nopw   0x0(%rax,%rax,1)
L27:
  lea    0x1(%r8,%rcx,1),%rcx
  mov    %rdx,%rax
  sub    %rdx,%r12
  add    %rsi,%rcx
  xchg   %ax,%ax
L62:
  movzbl (%r12,%rax,1),%edx
  add    $0x1,%rax
  mov    %dl,-0x1(%rax)
  cmp    %rax,%rcx
  jne    L62
  jmp    L314
  nopl   0x0(%rax,%rax,1)
L104:
  lea    0x1(%r8,%rax,1),%rcx
  sub    %r8,%r13
  mov    %r8,%rax
  nopl   0x0(%rax,%rax,1)
L340:
  movzbl 0x0(%r13,%rax,1),%edx
  add    $0x1,%rax
  mov    %dl,-0x1(%rax)
  cmp    %rcx,%rax
  jne    L340
  jmp    L197
  nop
L330:
  mov    %rax,%rbx
  mov    $0x1,%r14d
  mov    $0x1,%eax
  jmp    L186
L10:
  mov    %ebp,%edi
  mov    %r14d,%esi
  xor    %eax,%eax
  xor    %ecx,%ecx
  jmp    L119
L201:
  xor    %edx,%edx
  xor    %eax,%eax
  jmp    L180
```

assistant: ```c
char *prepName(char *currPath, char *argv0) {
  int curPathLength = tokenLen(currPath);
  int argLength = tokenLen(argv0);
  char *newName = (char *)calloc((curPathLength + 1 + argLength + 1), 1);
  int i = 0;
  int j = 0;
  while (j < curPathLength) {
    newName[i] = currPath[j];
    i++;
    j++;
  }
  newName[i] = '/';
  i++;
  j = 0;
  while (j < argLength) {
    newName[i] = argv0[j];
    i++;
    j++;
  }
  newName[i] = 0;
  return newName;
}
```