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

```asm
<normalizeURL>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %rdi,-0x28(%rbp)
  movl   $0x0,-0x8(%rbp)
  movl   $0x0,-0x4(%rbp)
  jmp    L303
L288:
  addl   $0x1,-0x8(%rbp)
L303:
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  je     L293
  cmpl   $0x3,-0x4(%rbp)
  jg     L293
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L288
L293:
  movl   $0x0,-0x14(%rbp)
  jmp    L270
L102:
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x25,%al
  jne    L70
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,%rdi
  call   <percent_encoding@plt>
L70:
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x40,%al
  jle    L316
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x5a,%al
  jg     L316
  mov    -0x14(%rbp),%eax
  cmp    -0x8(%rbp),%eax
  jge    L316
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  lea    0x20(%rax),%ecx
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    %ecx,%edx
  mov    %dl,(%rax)
L316:
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x23,%al
  jne    L194
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movb   $0x0,(%rax)
L194:
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x3a,%al
  jne    L121
  cmpl   $0x5,-0x14(%rbp)
  jle    L121
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x1(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x38,%al
  jne    L310
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x2(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x30,%al
  jne    L310
  mov    -0x14(%rbp),%edx
  mov    -0x28(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <str_del@plt>
  mov    -0x14(%rbp),%edx
  mov    -0x28(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <str_del@plt>
  mov    -0x14(%rbp),%edx
  mov    -0x28(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <str_del@plt>
L310:
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x1(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jne    L121
  mov    -0x14(%rbp),%edx
  mov    -0x28(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <str_del@plt>
L121:
  addl   $0x1,-0x14(%rbp)
L270:
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L102
  movl   $0x2,-0x14(%rbp)
  jmp    L266
L298:
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x2e,%al
  jne    L13
  mov    -0x14(%rbp),%eax
  cltq
  lea    -0x1(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jne    L13
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x1(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L306
  mov    -0x14(%rbp),%edx
  mov    -0x28(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <str_del@plt>
  jmp    L13
L306:
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x1(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x2e,%al
  jne    L291
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x2(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jne    L291
  mov    -0x14(%rbp),%eax
  sub    $0x2,%eax
  mov    %eax,-0x10(%rbp)
  jmp    L175
L148:
  subl   $0x1,-0x10(%rbp)
L175:
  cmpl   $0x1,-0x10(%rbp)
  jle    L103
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jne    L148
L103:
  mov    -0x10(%rbp),%eax
  cltq
  lea    -0x1(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jne    L54
  mov    -0x14(%rbp),%edx
  mov    -0x28(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <str_del@plt>
  jmp    L291
L54:
  mov    -0x10(%rbp),%eax
  mov    %eax,-0xc(%rbp)
  jmp    L123
L22:
  mov    -0x10(%rbp),%edx
  mov    -0x28(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <str_del@plt>
  addl   $0x1,-0xc(%rbp)
L123:
  mov    -0x14(%rbp),%eax
  add    $0x1,%eax
  cmp    %eax,-0xc(%rbp)
  jle    L22
  mov    -0x10(%rbp),%eax
  mov    %eax,-0x14(%rbp)
L291:
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x1(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jne    L13
  mov    -0x14(%rbp),%edx
  mov    -0x28(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <str_del@plt>
  mov    -0x14(%rbp),%edx
  mov    -0x28(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <str_del@plt>
L13:
  addl   $0x1,-0x14(%rbp)
L266:
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L298
  mov    -0x14(%rbp),%eax
  cltq
  lea    -0x1(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  je     L141
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movb   $0x0,(%rax)
L141:
  nop
  leave
  ret
```

assistant: ```c
void normalizeURL(char *url) {
  int i, j, k;
  int pos_sl = 0;
  int nb = 0;
  while (url[pos_sl] != '/' && nb <= 3 && url[pos_sl] != '\0')
    pos_sl++;
  i = 0;
  while (url[i] != '\0') {
    if (url[i] == '%') {
      percent_encoding(&url[i]);
    }
    if (url[i] >= 'A' && url[i] <= 'Z' && i < pos_sl)
      url[i] += 32;
    if (url[i] == '#')
      url[i] = '\0';
    if (url[i] == ':' && i > 5) {
      if (url[i + 1] == '8' && url[i + 2] == '0') {
        str_del(url, i);
        str_del(url, i);
        str_del(url, i);
      }
      if (url[i + 1] == '/')
        str_del(url, i);
    }
    i++;
  }
  i = 2;
  while (url[i] != '\0') {
    if (url[i] == '.' && url[i - 1] == '/') {
      if (url[i + 1] == '\0')
        str_del(url, i);
      else {
        if (url[i + 1] == '.' && url[i + 2] == '/') {
          j = i - 2;
          while (j > 1 && url[j] != '/')
            j--;
          if (url[j - 1] == '/')
            str_del(url, i);
          else {
            for (k = j; k < i + 2; k++) {
              str_del(url, j);
            }
            i -= i - j;
          }
        }
        if (url[i + 1] == '/') {
          str_del(url, i);
          str_del(url, i);
        }
      }
    }
    i++;
  }
  if (url[i - 1] != '/') {
    url[i] = '\0';
  }
}
```