user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<parseURL>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x50,%rsp
  mov    %rdi,-0x28(%rbp)
  mov    %esi,-0x2c(%rbp)
  mov    %rdx,-0x38(%rbp)
  mov    %rcx,-0x40(%rbp)
  mov    %r8,-0x48(%rbp)
  mov    %r9,-0x50(%rbp)
  mov    -0x28(%rbp),%rax
  add    $0x6,%rax
  mov    %rax,-0x18(%rbp)
  cmpl   $0x0,0x10(%rbp)
  jne    L30
  mov    -0x18(%rbp),%rax
  mov    $0x3a,%esi
  mov    %rax,%rdi
  call   <strchr@plt>
  mov    %rax,-0x10(%rbp)
  movl   $0x0,-0x20(%rbp)
  jmp    L61
L77:
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,(%rdx)
  addl   $0x1,-0x20(%rbp)
  addq   $0x1,-0x18(%rbp)
L61:
  mov    -0x18(%rbp),%rax
  cmp    -0x10(%rbp),%rax
  jne    L77
  addq   $0x1,-0x18(%rbp)
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movb   $0x0,(%rax)
  mov    -0x18(%rbp),%rax
  mov    $0x40,%esi
  mov    %rax,%rdi
  call   <strchr@plt>
  mov    %rax,-0x10(%rbp)
  movl   $0x0,-0x20(%rbp)
  jmp    L63
L6:
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x48(%rbp),%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,(%rdx)
  addl   $0x1,-0x20(%rbp)
  addq   $0x1,-0x18(%rbp)
L63:
  mov    -0x18(%rbp),%rax
  cmp    -0x10(%rbp),%rax
  jne    L6
  addq   $0x1,-0x18(%rbp)
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movb   $0x0,(%rax)
  jmp    L23
L30:
  mov    -0x40(%rbp),%rax
  mov    $0xa,%edx
  lea    D23(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  lea    D2(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    -0x48(%rbp),%rax
  mov    %rax,%rsi
  lea    D21(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
L23:
  mov    -0x18(%rbp),%rax
  mov    $0x2f,%esi
  mov    %rax,%rdi
  call   <strchr@plt>
  mov    %rax,-0x8(%rbp)
  movl   $0x0,-0x1c(%rbp)
  jmp    L22
L72:
  mov    -0x1c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,(%rdx)
  addl   $0x1,-0x1c(%rbp)
  addq   $0x1,-0x18(%rbp)
L22:
  mov    -0x18(%rbp),%rax
  cmp    -0x8(%rbp),%rax
  jne    L72
  addq   $0x1,-0x18(%rbp)
  mov    -0x1c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movb   $0x0,(%rax)
  mov    -0x18(%rbp),%rdx
  mov    -0x50(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  nop
  leave
  ret
```

tool_calls: name: parse_data
arguments: label: D23
type_infered: string
name: parse_data
arguments: label: D2
type_infered: string
name: parse_data
arguments: label: D21
type_infered: string

tool: D23: anonymous

tool: D2: Please specify your email address for authentication: 

tool: D21: %s

assistant: ```c
void parseURL(char *url, int size, char *host, char *user, char *password, char *path, int anon) {
  char *beg = url + 6;
  if (anon == 0) {
    char *end = strchr(beg, ':');
    int i = 0;
    while (beg != end) {
      user[i] = *beg;
      ++i;
      ++beg;
    }
    ++beg;
    user[i] = 0;
    end = strchr(beg, '@');
    i = 0;
    while (beg != end) {
      password[i] = *beg;
      ++i;
      ++beg;
    }
    ++beg;
    password[i] = 0;
  } else {
    strncpy(user, "anonymous", sizeof("anonymous"));
    printf("Please specify your email address for authentication: ");
    scanf("%s", password);
  }
  char *end = strchr(beg, '/');
  int i = 0;
  while (beg != end) {
    host[i] = *beg;
    ++i;
    ++beg;
  }
  ++beg;
  host[i] = 0;
  strcpy(path, beg);
}
```