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

```asm
<parse_dir>:
  endbr64
  push   %r13
  push   %r12
  mov    %rsi,%r12
  push   %rbp
  mov    %rdi,%rbp
  push   %rbx
  mov    %rdx,%rbx
  sub    $0x8,%rsp
  call   <urlpath_length@plt>
  test   %eax,%eax
  je     L174
  movslq %eax,%rcx
  mov    %rcx,%rdx
  jmp    L164
  nopl   0x0(%rax)
L145:
  sub    $0x1,%rdx
  test   %edx,%edx
  je     L174
L164:
  cmpb   $0x2f,0x0(%rbp,%rdx,1)
  lea    0x0(%rbp,%rdx,1),%rsi
  jne    L145
  lea    0x1(%rbp,%rdx,1),%r13
  cmpb   $0x2e,0x0(%r13)
  jne    L9
  movzbl 0x2(%rbp,%rdx,1),%eax
  test   %al,%al
  je     L211
  cmp    $0x3f,%al
  je     L211
  movzbl 0x3(%rbp,%rdx,1),%eax
  test   %al,%al
  je     L211
  cmp    $0x3f,%al
  je     L211
L9:
  mov    %rbp,%rdi
  call   <strdupdelim@plt>
  mov    %r13,%rdi
  mov    %rax,(%r12)
  call   <kstrdup@plt>
  mov    %rax,(%rbx)
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
  nopl   0x0(%rax)
L174:
  movzbl 0x0(%rbp),%edx
  cmp    $0x2f,%dl
  je     L33
  cmp    $0x2e,%dl
  jne    L148
  movzbl 0x1(%rbp),%edx
  test   %dl,%dl
  je     L119
  cmp    $0x3f,%dl
  je     L119
  movzbl 0x2(%rbp),%edx
  test   %dl,%dl
  je     L119
  cmp    $0x3f,%dl
  je     L119
L148:
  lea    D1(%rip),%rdi
  call   <kstrdup@plt>
  mov    %rbp,%rdi
  mov    %rax,(%r12)
  call   <kstrdup@plt>
  mov    %rax,(%rbx)
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
  nopw   0x0(%rax,%rax,1)
L33:
  cmpb   $0x2e,0x1(%rbp)
  jne    L83
  movzbl 0x2(%rbp),%edx
  test   %dl,%dl
  je     L119
  cmp    $0x3f,%dl
  je     L119
  movzbl 0x3(%rbp),%edx
  test   %dl,%dl
  je     L119
  cmp    $0x3f,%dl
  je     L119
L83:
  lea    D11(%rip),%rdi
  call   <kstrdup@plt>
  lea    0x1(%rbp),%rdi
  mov    %rax,(%r12)
  call   <kstrdup@plt>
  mov    %rax,(%rbx)
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
  nopw   0x0(%rax,%rax,1)
L119:
  cltq
  lea    0x0(%rbp,%rax,1),%r13
  mov    %r13,%rsi
  jmp    L9
  nop
L211:
  lea    0x0(%rbp,%rcx,1),%r13
  mov    %r13,%rsi
  jmp    L9
```

tool_calls: name: disassemble_data
arguments: data_label: D1
type_guessed: string
name: disassemble_data
arguments: data_label: D11
type_guessed: string

tool: 

tool: D11: /

assistant: ```c
void parse_dir(const char *path, char **dir, char **file) {
  int i, l;
  l = urlpath_length(path);
  for (i = l; i && path[i] != '/'; i--)
    ;
  if (!i && *path != '/') {
    if (((*(path) == '.') && (!*((path) + 1) || *((path) + 1) == '?')) || ((*(path) == '.') && (*(path) == '.') && (!*((path) + 2) || *((path) + 2) == '?'))) {
      *dir = strdupdelim(path, path + l);
      *file = kstrdup(path + l);
    } else {
      *dir = kstrdup("");
      *file = kstrdup(path);
    }
  } else if (!i) {
    if (((*(path + 1) == '.') && (!*((path + 1) + 1) || *((path + 1) + 1) == '?')) || ((*(path + 1) == '.') && (*(path + 1) == '.') && (!*((path + 1) + 2) || *((path + 1) + 2) == '?'))) {
      *dir = strdupdelim(path, path + l);
      *file = kstrdup(path + l);
    } else {
      *dir = kstrdup("/");
      *file = kstrdup(path + 1);
    }
  } else {
    if (((*(path + i + 1) == '.') && (!*((path + i + 1) + 1) || *((path + i + 1) + 1) == '?')) || ((*(path + i + 1) == '.') && (*(path + i + 1) == '.') && (!*((path + i + 1) + 2) || *((path + i + 1) + 2) == '?'))) {
      *dir = strdupdelim(path, path + l);
      *file = kstrdup(path + l);
    } else {
      *dir = strdupdelim(path, path + i);
      *file = kstrdup(path + i + 1);
    }
  }
}
```