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

```asm
<__res_hnok>:
  endbr64
  lea    0x1(%rdi),%rcx
  movsbl (%rdi),%eax
  test   %eax,%eax
  je     L38
  mov    $0x2e,%esi
  jmp    L96
L38:
  mov    $0x1,%eax
  ret
L36:
  mov    %eax,%esi
  lea    -0x41(%rax),%edi
  cmp    $0x19,%edi
  jbe    L23
  lea    -0x61(%rax),%edi
  cmp    $0x19,%edi
  jbe    L23
  sub    $0x30,%esi
  cmp    $0x9,%esi
  jbe    L23
  mov    $0x0,%eax
  ret
L86:
  mov    %eax,%esi
  lea    -0x41(%rax),%edi
  cmp    $0x19,%edi
  jbe    L23
  lea    -0x61(%rax),%edi
  cmp    $0x19,%edi
  jbe    L23
  sub    $0x30,%esi
  cmp    $0x9,%esi
  ja     L7
L23:
  test   %edx,%edx
  je     L121
L100:
  mov    %eax,%esi
  mov    %edx,%eax
L96:
  add    $0x1,%rcx
  movsbl -0x1(%rcx),%edx
  cmp    $0x2e,%eax
  je     L23
  cmp    $0x2e,%esi
  je     L36
  test   %edx,%edx
  je     L86
  cmp    $0x2e,%edx
  je     L86
  mov    %eax,%esi
  lea    -0x41(%rax),%edi
  cmp    $0x19,%edi
  jbe    L100
  lea    -0x61(%rax),%edi
  cmp    $0x19,%edi
  jbe    L100
  sub    $0x30,%esi
  cmp    $0x9,%esi
  jbe    L100
  cmp    $0x2d,%eax
  je     L100
  mov    $0x0,%eax
  ret
L7:
  mov    $0x0,%eax
  ret
L121:
  mov    $0x1,%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);
  }
}
```