user: Please show me the C implementation that matches the assembly code listed below:

```asm
<__res_hnok>:
  endbr64
  movsbl (%rdi),%eax
  lea    0x1(%rdi),%rcx
  test   %eax,%eax
  je     L19
  mov    $0x2e,%esi
  nopl   0x0(%rax,%rax,1)
L3:
  add    $0x1,%rcx
  movsbl -0x1(%rcx),%edx
  cmp    $0x2e,%eax
  je     L148
  cmp    $0x2e,%esi
  je     L114
  lea    -0x41(%rax),%esi
  cmp    $0x2e,%edx
  je     L41
L55:
  test   %edx,%edx
  je     L41
  cmp    $0x19,%esi
  jbe    L66
  lea    -0x61(%rax),%esi
  cmp    $0x19,%esi
  jbe    L66
  lea    -0x30(%rax),%esi
  cmp    $0x9,%esi
  jbe    L66
  cmp    $0x2d,%eax
  jne    L71
  add    $0x1,%rcx
  mov    %edx,%eax
  movsbl -0x1(%rcx),%edx
  lea    -0x41(%rax),%esi
  cmp    $0x2e,%edx
  jne    L55
  nopw   0x0(%rax,%rax,1)
L41:
  cmp    $0x19,%esi
  jbe    L148
L34:
  lea    -0x61(%rax),%esi
  cmp    $0x19,%esi
  jbe    L148
  lea    -0x30(%rax),%esi
  cmp    $0x9,%esi
  ja     L71
L148:
  test   %edx,%edx
  je     L19
L66:
  mov    %eax,%esi
  mov    %edx,%eax
  jmp    L3
  nop
L114:
  lea    -0x41(%rax),%esi
  cmp    $0x19,%esi
  ja     L34
  test   %edx,%edx
  jne    L66
L19:
  mov    $0x1,%eax
  ret
L71:
  xor    %eax,%eax
  ret
```

assistant: ```c
int __res_hnok(char const *dn) {
  int ppch;
  int pch;
  int ch;
  char const *tmp;
  int nch;
  char const *tmp___0;
  char __cil_tmp8;
  char __cil_tmp9;
  {
    ppch = '\000';
    pch = 46;
    tmp = dn;
    dn = dn + 1;
    __cil_tmp8 = *tmp;
    ch = (int)__cil_tmp8;
    {
      while (1) {
      while_continue:;
        if (ch != 0) {
        } else {
          goto while_break;
        }
        tmp___0 = dn;
        dn = dn + 1;
        __cil_tmp9 = *tmp___0;
        nch = (int)__cil_tmp9;
        if (ch == 46) {
        } else if (pch == 46) {
          if (ch >= 65) {
            if (ch <= 90) {
            } else {
              goto _L___0;
            }
          } else
          _L___0:
            if (ch >= 97) {
              if (ch <= 122) {
              } else {
                goto _L;
              }
            } else
            _L:
              if (ch >= 48) {
                if (ch <= 57) {
                } else {
                  return (0);
                }
              } else {
                return (0);
              }
        } else if (nch == 46) {
          goto _L___6;
        } else if (nch == 0) {
        _L___6:
          if (ch >= 65) {
            if (ch <= 90) {
            } else {
              goto _L___2;
            }
          } else
          _L___2:
            if (ch >= 97) {
              if (ch <= 122) {
              } else {
                goto _L___1;
              }
            } else
            _L___1:
              if (ch >= 48) {
                if (ch <= 57) {
                } else {
                  return (0);
                }
              } else {
                return (0);
              }
        } else if (ch >= 65) {
          if (ch <= 90) {
          } else {
            goto _L___5;
          }
        } else
        _L___5:
          if (ch >= 97) {
            if (ch <= 122) {
            } else {
              goto _L___4;
            }
          } else
          _L___4:
            if (ch >= 48) {
              if (ch <= 57) {
              } else {
                goto _L___3;
              }
            } else
            _L___3:
              if (ch == 45) {
              } else {
                return (0);
              }
        ppch = pch;
        pch = ch;
        ch = nch;
      }
    while_break:;
    }
    return (1);
  }
}
```