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

```asm
<quoted_printable_decode>:
  endbr64
  mov    (%rsi),%rdx
  mov    (%rdi),%rcx
  mov    %rdi,%r8
  movzbl (%rdx),%eax
  test   %al,%al
  je     L153
  mov    %rsi,%r9
  mov    $0x61,%r11d
  lea    -0x1(%rdx),%rsi
  mov    $0x41,%r10d
  jmp    L248
  nopl   0x0(%rax)
L290:
  movzbl (%rdx),%eax
  lea    0x1(%rdx),%rsi
  cmp    $0x3d,%al
  je     L112
  mov    %rdx,%rdi
L110:
  mov    %al,(%rcx)
  movzbl 0x1(%rdi),%eax
  add    $0x1,%rcx
  mov    %rdi,%rsi
L229:
  lea    0x1(%rsi),%rdx
  test   %al,%al
  je     L153
L248:
  cmp    $0x5f,%al
  je     L236
  cmp    $0x3f,%al
  jne    L290
  movzbl 0x2(%rsi),%eax
  lea    0x2(%rsi),%rdi
  test   %al,%al
  je     L324
  cmp    $0x3d,%al
  jne    L110
  add    $0x2,%rdx
L324:
  mov    %rdx,(%r9)
L153:
  mov    %rcx,(%r8)
  ret
  nopw   0x0(%rax,%rax,1)
L112:
  push   %rbp
  push   %rbx
L206:
  movsbl 0x1(%rdx),%ebx
  mov    %ebx,%edi
  test   %ebx,%ebx
  je     L218
  movzbl 0x2(%rdx),%eax
  test   %al,%al
  je     L218
  lea    -0x30(%rbx),%ebp
  cmp    $0x9,%ebp
  ja     L223
  sub    $0x30,%edi
L67:
  movsbl %dil,%edi
  lea    0x2(%rdx),%rsi
  shl    $0x4,%edi
  mov    %dil,(%rcx)
  movsbl 0x2(%rdx),%ebx
  lea    -0x30(%rbx),%ebp
  mov    %ebx,%eax
  cmp    $0x9,%ebp
  jbe    L167
  mov    %ebx,%ebp
  and    $0xffffffdf,%ebp
  sub    $0x41,%ebp
  cmp    $0x5,%bpl
  jbe    L278
  cmp    $0xa,%ebx
  je     L168
  cmp    $0xd,%ebx
  je     L168
  movb   $0x20,(%rcx)
  movzbl 0x3(%rdx),%eax
  cs nopw 0x0(%rax,%rax,1)
L21:
  lea    0x1(%rsi),%rdx
  test   %al,%al
  je     L218
L265:
  cmp    $0x5f,%al
  je     L242
  cmp    $0x3f,%al
  je     L306
  movzbl (%rdx),%eax
  lea    0x1(%rdx),%rsi
  cmp    $0x3d,%al
  je     L206
  mov    %rdx,%rdi
L256:
  mov    %al,(%rcx)
  movzbl 0x1(%rdi),%eax
  mov    %rdi,%rsi
  add    $0x1,%rcx
  lea    0x1(%rsi),%rdx
  test   %al,%al
  jne    L265
L218:
  pop    %rbx
  pop    %rbp
  mov    %rcx,(%r8)
  ret
  nopl   (%rax)
L306:
  movzbl 0x2(%rsi),%eax
  lea    0x2(%rsi),%rdi
  test   %al,%al
  je     L228
  cmp    $0x3d,%al
  jne    L256
  add    $0x2,%rdx
L228:
  mov    %rdx,(%r9)
  pop    %rbx
  mov    %rcx,(%r8)
  pop    %rbp
  ret
  nopl   (%rax)
L223:
  mov    %ebx,%ebp
  and    $0xffffffdf,%ebp
  sub    $0x41,%ebp
  cmp    $0x5,%bpl
  ja     L270
  cmp    $0x60,%ebx
  mov    %r10d,%eax
  cmovg  %r11d,%eax
  add    $0xa,%edi
  sub    %eax,%edi
  jmp    L67
  nopw   0x0(%rax,%rax,1)
L242:
  movb   $0x20,(%rcx)
  mov    %rdx,%rsi
  movzbl 0x1(%rdx),%eax
  add    $0x1,%rcx
  jmp    L21
  nopl   0x0(%rax,%rax,1)
L236:
  movb   $0x20,(%rcx)
  mov    %rdx,%rsi
  movzbl 0x1(%rdx),%eax
  add    $0x1,%rcx
  jmp    L229
  nopl   0x0(%rax,%rax,1)
L270:
  cmp    $0xa,%ebx
  je     L304
  cmp    $0xd,%ebx
  je     L304
  movb   $0x3d,(%rcx)
  add    $0x2,%rcx
  mov    %bl,-0x1(%rcx)
  movzbl 0x2(%rdx),%eax
  jmp    L21
  nopl   (%rax)
L167:
  lea    -0x30(%rbx,%rdi,1),%eax
L157:
  mov    %al,(%rcx)
  add    $0x1,%rcx
  movzbl 0x3(%rdx),%eax
  jmp    L21
  nopl   0x0(%rax,%rax,1)
L168:
  mov    %al,(%rcx)
  add    $0x1,%rcx
  movzbl 0x3(%rdx),%eax
  jmp    L21
  nop
L278:
  cmp    $0x60,%ebx
  mov    %r10d,%ebx
  lea    0xa(%rax,%rdi,1),%eax
  cmovg  %r11d,%ebx
  sub    %ebx,%eax
  jmp    L157
  nopw   0x0(%rax,%rax,1)
L304:
  add    $0x2,%rdx
  jmp    L265
```

assistant: ```c
void quoted_printable_decode(char **dest, char **src) {
  char *buf = *src;
  char *s = *dest;
  register int n = 0;
  buf--;
  while (*++buf) {
    if (*buf == '_') {
      *s++ = ' ';
      continue;
    };
    if (*buf == '?') {
      buf++;
      if (!*buf) {
        *src = --buf;
        break;
      } else if (*buf == '=') {
        *src = ++buf;
        break;
      }
    }
    if (*buf == '=') {
      n = *++buf;
      if (!n) {
        buf--;
        break;
      }
      if (!*(buf + 1))
        break;
      if ((n >= '0') && (n <= '9'))
        *s = (n - '0');
      else if (((n >= 'A') && (n <= 'F')) || ((n >= 'a') && (n <= 'f')))
        *s = 10 + n - ((n >= 'a') ? 'a' : 'A');
      else {
        if (n == '\n' || n == '\r')
          continue;
        *s++ = '=';
        *s++ = n;
        continue;
      };
      *s <<= 4;
      n = *++buf;
      if ((n >= '0') && (n <= '9'))
        *s += (n - '0');
      else if (((n >= 'A') && (n <= 'F')) || ((n >= 'a') && (n <= 'f')))
        *s += 10 + n - ((n >= 'a') ? 'a' : 'A');
      else {
        if (n == '\n' || n == '\r') {
          *s++ = n;
          continue;
        };
        *s = ' ';
        continue;
      };
      s++;
      continue;
    };
    *s++ = *buf;
  }
  *dest = s;
}
```