user: What would the C source look like for the assembly code provided here:

```asm
<normalizeURL>:
  endbr64
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  mov    %rdi,%rbp
  push   %rbx
  movzbl (%rdi),%eax
  test   %al,%al
  je     L330
  cmp    $0x2f,%al
  je     L357
  mov    $0x1,%edx
  jmp    L41
  nopl   0x0(%rax)
L174:
  test   %cl,%cl
  je     L304
L41:
  movzbl 0x0(%rbp,%rdx,1),%ecx
  mov    %edx,%r12d
  add    $0x1,%rdx
  cmp    $0x2f,%cl
  jne    L174
L304:
  xor    %ebx,%ebx
  jmp    L32
  nopl   0x0(%rax)
L202:
  cmp    $0x3a,%al
  jne    L351
  cmp    $0x5,%ecx
  jle    L351
  movzbl 0x1(%rbp,%rbx,1),%eax
  cmp    $0x38,%al
  je     L432
L8:
  cmp    $0x2f,%al
  je     L348
  xchg   %ax,%ax
L351:
  add    $0x1,%rbx
  movzbl 0x0(%rbp,%rbx,1),%eax
  test   %al,%al
  je     L330
L32:
  lea    0x0(%rbp,%rbx,1),%rdi
  mov    %ebx,%r13d
  cmp    $0x25,%al
  je     L30
L386:
  lea    -0x41(%rax),%edx
  mov    %ebx,%ecx
  cmp    $0x19,%dl
  ja     L247
  cmp    %ebx,%r12d
  jg     L232
L247:
  cmp    $0x23,%al
  jne    L202
  movb   $0x0,0x0(%rbp,%rbx,1)
  add    $0x1,%rbx
  movzbl 0x0(%rbp,%rbx,1),%eax
  test   %al,%al
  jne    L32
L330:
  movzbl 0x2(%rbp),%eax
  mov    $0x2,%ebx
  mov    $0x2,%edx
  test   %al,%al
  jne    L12
  jmp    L210
  nopl   (%rax)
L194:
  add    $0x1,%ebx
  movslq %ebx,%rdx
  lea    0x0(%rbp,%rdx,1),%rcx
  movzbl (%rcx),%eax
  test   %al,%al
  je     L58
L12:
  cmp    $0x2e,%al
  jne    L194
  cmpb   $0x2f,-0x1(%rbp,%rdx,1)
  jne    L194
  movzbl 0x1(%rbp,%rdx,1),%eax
  test   %al,%al
  je     L234
  movslq %ebx,%r12
  cmp    $0x2e,%al
  je     L136
L160:
  cmpb   $0x2f,0x1(%rbp,%r12,1)
  jne    L194
  mov    %ebx,%esi
  mov    %rbp,%rdi
  call   <str_del@plt>
L234:
  mov    %ebx,%esi
  mov    %rbp,%rdi
  call   <str_del@plt>
  jmp    L194
  nopl   0x0(%rax,%rax,1)
L232:
  add    $0x20,%eax
  mov    %al,0x0(%rbp,%rbx,1)
  jmp    L351
  nopl   0x0(%rax)
L30:
  call   <percent_encoding@plt>
  movzbl 0x0(%rbp,%rbx,1),%eax
  jmp    L386
  nop
L58:
  sub    $0x1,%rdx
L204:
  cmpb   $0x2f,0x0(%rbp,%rdx,1)
  je     L184
  movb   $0x0,(%rcx)
L184:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
  nopw   0x0(%rax,%rax,1)
L136:
  cmpb   $0x2f,0x2(%rbp,%rdx,1)
  jne    L160
  lea    -0x2(%rbx),%r13d
  movslq %r13d,%r12
  cmp    $0x1,%r13d
  jg     L207
  jmp    L66
  cs nopw 0x0(%rax,%rax,1)
L177:
  lea    -0x1(%r12),%r13d
  sub    $0x1,%r12
  cmp    $0x1,%r12
  je     L119
L207:
  cmpb   $0x2f,0x0(%rbp,%r12,1)
  mov    %r12d,%r13d
  jne    L177
L66:
  cmpb   $0x2f,-0x1(%rbp,%r12,1)
  je     L67
  lea    0x1(%rbx),%eax
  mov    %r13d,%r14d
  cmp    %eax,%r13d
  jg     L410
  nopl   (%rax)
L313:
  mov    %r13d,%esi
  mov    %rbp,%rdi
  call   <str_del@plt>
  mov    %r14d,%eax
  add    $0x1,%r14d
  cmp    %eax,%ebx
  jge    L313
L410:
  mov    %r13d,%ebx
  jmp    L160
  cs nopw 0x0(%rax,%rax,1)
L432:
  cmpb   $0x30,0x2(%rbp,%rbx,1)
  jne    L351
  mov    %r13d,%esi
  mov    %rbp,%rdi
  call   <str_del@plt>
  mov    %r13d,%esi
  mov    %rbp,%rdi
  call   <str_del@plt>
  mov    %r13d,%esi
  mov    %rbp,%rdi
  call   <str_del@plt>
  movzbl 0x1(%rbp,%rbx,1),%eax
  jmp    L8
  cs nopw 0x0(%rax,%rax,1)
L348:
  mov    %r13d,%esi
  mov    %rbp,%rdi
  call   <str_del@plt>
  jmp    L351
L210:
  lea    0x2(%rbp),%rcx
  mov    $0x1,%edx
  jmp    L204
L357:
  test   %al,%al
  je     L330
  xor    %r12d,%r12d
  jmp    L304
  xchg   %ax,%ax
L119:
  movslq %r13d,%r12
  jmp    L66
L67:
  mov    %ebx,%esi
  mov    %rbp,%rdi
  movslq %ebx,%r12
  call   <str_del@plt>
  jmp    L160
```

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';
  }
}
```