user: Demonstrate the C code that generates the assembly output below:

```asm
<html_unsafe_printf>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    %rdi,%r13
  test   %rsi,%rsi
  je     L128
  movb   $0x0,(%rdi)
  movzbl (%rsi),%ecx
  lea    -0x1(%rdx),%r12
  cmp    $0x1,%rdx
  je     L134
  test   %cl,%cl
  je     L134
  lea    0x1(%rsi),%rbp
  mov    $0x0,%ebx
  lea    D79(%rip),%r14
  lea    D52(%rip),%r15
  jmp    L94
  mov    %r12,%rdx
  sub    %rbx,%rdx
  lea    0x0(%r13,%rbx,1),%rdi
  lea    D26(%rip),%rsi
  call   <strncat@plt>
  add    $0x6,%rbx
L21:
  movzbl 0x0(%rbp),%ecx
  add    $0x1,%rbp
  cmp    %r12,%rbx
  jae    L18
  test   %cl,%cl
  je     L18
L94:
  lea    -0x20(%rcx),%eax
  cmp    $0x1e,%al
  ja     L65
  movzbl %al,%eax
  movslq (%r14,%rax,4),%rax
  add    %r14,%rax
  notrack jmp *%rax
  mov    %r12,%rdx
  sub    %rbx,%rdx
  lea    0x0(%r13,%rbx,1),%rdi
  lea    D28(%rip),%rsi
  call   <strncat@plt>
  add    $0x5,%rbx
  jmp    L21
  mov    %r12,%rdx
  sub    %rbx,%rdx
  lea    0x0(%r13,%rbx,1),%rdi
  lea    D72(%rip),%rsi
  call   <strncat@plt>
  add    $0x4,%rbx
  jmp    L21
  mov    %r12,%rdx
  sub    %rbx,%rdx
  lea    0x0(%r13,%rbx,1),%rdi
  lea    D68(%rip),%rsi
  call   <strncat@plt>
  add    $0x4,%rbx
  jmp    L21
  mov    %r12,%rdx
  sub    %rbx,%rdx
  lea    0x0(%r13,%rbx,1),%rdi
  lea    D3(%rip),%rsi
  call   <strncat@plt>
  add    $0x6,%rbx
  jmp    L21
  mov    %r12,%rdx
  sub    %rbx,%rdx
  lea    0x0(%r13,%rbx,1),%rdi
  lea    D44(%rip),%rsi
  call   <strncat@plt>
  add    $0x6,%rbx
  jmp    L21
  mov    %r12,%rdx
  sub    %rbx,%rdx
  lea    0x0(%r13,%rbx,1),%rdi
  mov    %r15,%rsi
  call   <strncat@plt>
  add    $0x6,%rbx
  jmp    L21
L65:
  mov    %cl,0x0(%r13,%rbx,1)
  add    $0x1,%rbx
  movb   $0x0,0x0(%r13,%rbx,1)
  jmp    L21
L134:
  mov    $0x0,%ebx
  jmp    L18
L128:
  movb   $0x0,(%rdi)
  lea    -0x1(%rdx),%r12
  mov    $0x0,%ebx
L18:
  cmp    %r12,%rbx
  cmova  %r12,%rbx
  movb   $0x0,0x0(%r13,%rbx,1)
  mov    %r13,%rax
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D52
type_guessed: string
name: disassemble_data
arguments: tag: D26
type_guessed: string
name: disassemble_data
arguments: tag: D28
type_guessed: string
name: disassemble_data
arguments: tag: D72
type_guessed: string
name: disassemble_data
arguments: tag: D68
type_guessed: string
name: disassemble_data
arguments: tag: D3
type_guessed: string
name: disassemble_data
arguments: tag: D44
type_guessed: string

tool: D52: &#x2F;

tool: D26: &nbsp;

tool: D28: &amp;

tool: D72: &lt;

tool: D68: &gt;

tool: D3: &quot;

tool: D44: &#x27;

assistant: ```c
const char *html_unsafe_printf(char *dst, const char *src, size_t len) {
  size_t i;
  size_t o;
  src = ((src)) ? src : "";
  dst[0] = '\0';
  len--;
  o = 0;
  for (i = 0; ((src[i] != '\0') && (o < len)); i++) {
    switch (src[i]) {
    case ' ':
      strncat(&dst[o], "&nbsp;", len - o);
      o += 6;
      break;
    case '&':
      strncat(&dst[o], "&amp;", len - o);
      o += 5;
      break;
    case '<':
      strncat(&dst[o], "&lt;", len - o);
      o += 4;
      break;
    case '>':
      strncat(&dst[o], "&gt;", len - o);
      o += 4;
      break;
    case '"':
      strncat(&dst[o], "&quot;", len - o);
      o += 6;
      break;
    case '\'':
      strncat(&dst[o], "&#x27;", len - o);
      o += 6;
      break;
    case '/':
      strncat(&dst[o], "&#x2F;", len - o);
      o += 6;
      break;
    default:
      dst[o + 0] = src[i];
      dst[o + 1] = '\0';
      o++;
      break;
    };
  };
  o = (o >= len) ? len : o;
  dst[o] = '\0';
  return (dst);
}
```