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

```asm
<potency_escape_xml>:
  endbr64
  push   %r15
  mov    %rdi,%r15
  push   %r14
  lea    D8(%rip),%r14
  push   %r13
  lea    -0x7(%rdx),%r13
  push   %r12
  mov    %rsi,%r12
  push   %rbp
  xor    %ebp,%ebp
  push   %rbx
  xor    %ebx,%ebx
  sub    $0x8,%rsp
  nopw   0x0(%rax,%rax,1)
L16:
  mov    %r15,%rdi
  call   <strlen@plt>
  lea    (%r12,%rbx,1),%rdx
  cmp    %rbp,%rax
  jbe    L71
  cmp    %rbx,%r13
  jbe    L71
  movzbl (%r15,%rbp,1),%esi
  lea    0x1(%rbx),%rcx
  lea    (%r12,%rcx,1),%rdi
  lea    -0x22(%rsi),%eax
  cmp    $0x1c,%al
  ja     L11
  movzbl %al,%eax
  movslq (%r14,%rax,4),%rax
  add    %r14,%rax
  notrack jmp *%rax
  nop
L11:
  mov    %sil,(%rdx)
  mov    %rcx,%rbx
  cs nopw 0x0(%rax,%rax,1)
L77:
  add    $0x1,%rbp
  jmp    L16
  cs nopw 0x0(%rax,%rax,1)
  lea    0x3(%rbx),%rax
  movb   $0x26,(%rdx)
  movb   $0x67,(%rdi)
  movb   $0x74,0x2(%r12,%rbx,1)
  add    $0x4,%rbx
  movb   $0x3b,(%r12,%rax,1)
  jmp    L77
  nopl   0x0(%rax,%rax,1)
  lea    0x3(%rbx),%rax
  movb   $0x26,(%rdx)
  movb   $0x6c,(%rdi)
  movb   $0x74,0x2(%r12,%rbx,1)
  add    $0x4,%rbx
  movb   $0x3b,(%r12,%rax,1)
  jmp    L77
  nopl   0x0(%rax,%rax,1)
  lea    0x5(%rbx),%rax
  movb   $0x26,(%rdx)
  movb   $0x61,(%rdi)
  movb   $0x70,0x2(%r12,%rbx,1)
  movb   $0x6f,0x3(%r12,%rbx,1)
  movb   $0x73,0x4(%r12,%rbx,1)
  add    $0x6,%rbx
  movb   $0x3b,(%r12,%rax,1)
  jmp    L77
  nopw   0x0(%rax,%rax,1)
  lea    0x4(%rbx),%rax
  movb   $0x26,(%rdx)
  movb   $0x61,(%rdi)
  movb   $0x6d,0x2(%r12,%rbx,1)
  movb   $0x70,0x3(%r12,%rbx,1)
  add    $0x5,%rbx
  movb   $0x3b,(%r12,%rax,1)
  jmp    L77
  nopl   0x0(%rax)
  lea    0x5(%rbx),%rax
  movb   $0x26,(%rdx)
  movb   $0x71,(%rdi)
  movb   $0x75,0x2(%r12,%rbx,1)
  movb   $0x6f,0x3(%r12,%rbx,1)
  movb   $0x74,0x4(%r12,%rbx,1)
  add    $0x6,%rbx
  movb   $0x3b,(%r12,%rax,1)
  jmp    L77
  nopw   0x0(%rax,%rax,1)
L71:
  movb   $0x0,(%rdx)
  add    $0x8,%rsp
  mov    %r12,%rax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

assistant: ```c
char *potency_escape_xml(const char *unescaped, char *escaped, const size_t escapedLength) {
  size_t i = 0;
  size_t j = 0;
  for (i = 0; (i < strlen(unescaped)) && (j < (escapedLength - 7)); i++) {
    switch (unescaped[i]) {
    case '<':
      escaped[j++] = '&';
      escaped[j++] = 'l';
      escaped[j++] = 't';
      escaped[j++] = ';';
      break;
    case '>':
      escaped[j++] = '&';
      escaped[j++] = 'g';
      escaped[j++] = 't';
      escaped[j++] = ';';
      break;
    case '&':
      escaped[j++] = '&';
      escaped[j++] = 'a';
      escaped[j++] = 'm';
      escaped[j++] = 'p';
      escaped[j++] = ';';
      break;
    case '"':
      escaped[j++] = '&';
      escaped[j++] = 'q';
      escaped[j++] = 'u';
      escaped[j++] = 'o';
      escaped[j++] = 't';
      escaped[j++] = ';';
      break;
    case '\'':
      escaped[j++] = '&';
      escaped[j++] = 'a';
      escaped[j++] = 'p';
      escaped[j++] = 'o';
      escaped[j++] = 's';
      escaped[j++] = ';';
      break;
    default:
      escaped[j++] = unescaped[i];
    }
  }
  escaped[j] = 0;
  return escaped;
}
```