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

```asm
<fqdn_read>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rdi,%rbx
  mov    %rsi,%r12
  mov    $0x4,%edi
  mov    $0x0,%eax
  call   <alloc@plt>
  movslq %eax,%rbp
  mov    $0x4,%esi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <byte_zero@plt>
  movl   $0xff,0x0(%rbp)
  movzbl (%r12),%eax
  test   %al,%al
  je     L123
  lea    0x1(%r12),%rdx
  movsbl %al,%r10d
  mov    $0x20,%r9d
  mov    $0x0,%esi
  movabs $0x4000000001ff9,%r11
  jmp    L77
L123:
  movb   $0x2e,(%rbx)
  movl   $0x1,0x0(%rbp)
  mov    %rbx,%rax
  jmp    L61
L110:
  lea    -0x61(%rax),%edi
  cmp    $0x19,%dil
  jbe    L60
  lea    -0x2d(%rsi),%edi
  cmp    $0x32,%dil
  ja     L45
  bt     %rdi,%r11
  jae    L45
L60:
  movslq %ecx,%rsi
  mov    %al,(%rbx,%rsi,1)
  lea    0x1(%rcx),%ecx
L147:
  cmp    %r8,%rdx
  je     L69
L44:
  add    $0x1,%rdx
  movzbl -0x1(%rdx),%eax
  mov    %eax,%esi
  lea    -0x41(%rax),%edi
  cmp    $0x19,%dil
  ja     L110
  add    $0x20,%eax
  jmp    L60
L45:
  movslq %ecx,%rdi
  movb   $0x5c,(%rbx,%rdi,1)
  lea    0x1(%rcx),%edi
  movslq %edi,%rdi
  mov    %eax,%r12d
  sar    $0x6,%r12b
  and    $0x7,%r12d
  add    $0x30,%r12d
  mov    %r12b,0x1(%rbx,%rdi,1)
  sar    $0x3,%al
  and    $0x7,%eax
  add    $0x30,%eax
  mov    %al,0x2(%rbx,%rdi,1)
  and    $0x7,%esi
  add    $0x30,%esi
  mov    %sil,0x3(%rbx,%rdi,1)
  add    $0x5,%ecx
  jmp    L147
L15:
  mov    %esi,%ecx
  mov    %rdx,%r8
L69:
  cmpb   $0x0,(%r8)
  je     L14
  lea    0x1(%rcx),%esi
  movslq %ecx,%rcx
  movb   $0x2e,(%rbx,%rcx,1)
  sub    $0x1,%r9d
  je     L19
  lea    0x1(%r8),%rdx
  movzbl (%r8),%eax
  movsbl %al,%ecx
  lea    0x1(%r10,%rcx,1),%r10d
  cmp    $0xfe,%r10d
  jg     L5
L77:
  lea    -0x1(%rax),%ecx
  test   %al,%al
  je     L15
  movzbl %cl,%ecx
  lea    0x1(%rdx,%rcx,1),%r8
  mov    %esi,%ecx
  jmp    L44
L19:
  mov    %esi,%ecx
L14:
  movslq %ecx,%rcx
  movb   $0x0,(%rbx,%rcx,1)
  mov    %r10d,0x0(%rbp)
  mov    %rbx,%rax
L61:
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L5:
  mov    $0x0,%eax
  jmp    L61
```

assistant: ```c
char *fqdn_read(out, q)
char *out;
const char *q;
{
  int *len;
  int label_idx[32];
  char ch;
  int maxlen;
  char ch2;
  int cur_len = 0;
  register int i = 0;
  register int j = 0;
  len = alloc(4);
  byte_zero(len, 4);
  *len = 255;
  maxlen = *len;
  if (!*q) {
    out[0] = '.';
    label_idx[0] = -1;
    *len = 1;
    return out;
  } else {
    label_idx[0] = 0;
    for (;;) {
      ch = *q++;
      cur_len += ch;
      if (cur_len >= maxlen)
        return (char *)0;
      while (ch--) {
        ch2 = *q++;
        if ((ch2 >= 'A') && (ch2 <= 'Z'))
          ch2 += 32;
        if (((ch2 >= 'a') && (ch2 <= 'z')) || ((ch2 >= '0') && (ch2 <= '9')) || (ch2 == '-') || (ch2 == '_')) {
          out[j++] = ch2;
        } else {
          out[j] = '\\';
          j++;
          out[j + 1] = '0' + ((ch2 >> 6) & 7);
          out[j + 2] = '0' + ((ch2 >> 3) & 7);
          out[j + 3] = '0' + (ch2 & 7);
          j += 4;
        }
      }
      if (!*q)
        break;
      out[j++] = '.';
      i += 1;
      if (i == 32)
        break;
      label_idx[i] = j;
      cur_len += 1;
    }
  }
  out[j] = '\0';
  *len = cur_len;
  return out;
}
```