user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<__res_hnok>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x38(%rbp)
  movl   $0x0,-0x18(%rbp)
  movl   $0x2e,-0x20(%rbp)
  mov    -0x38(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  addq   $0x1,-0x38(%rbp)
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x22(%rbp)
  movsbl -0x22(%rbp),%eax
  mov    %eax,-0x1c(%rbp)
L166:
  cmpl   $0x0,-0x1c(%rbp)
  je     L377
  mov    -0x38(%rbp),%rax
  mov    %rax,-0x8(%rbp)
  addq   $0x1,-0x38(%rbp)
  mov    -0x8(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x21(%rbp)
  movsbl -0x21(%rbp),%eax
  mov    %eax,-0x14(%rbp)
  cmpl   $0x2e,-0x1c(%rbp)
  je     L64
  cmpl   $0x2e,-0x20(%rbp)
  jne    L80
  cmpl   $0x40,-0x1c(%rbp)
  jle    L201
  cmpl   $0x5a,-0x1c(%rbp)
  jle    L64
  jmp    L239
L201:
  nop
L239:
  cmpl   $0x60,-0x1c(%rbp)
  jle    L351
  cmpl   $0x7a,-0x1c(%rbp)
  jle    L64
  jmp    L38
L351:
  nop
L38:
  cmpl   $0x2f,-0x1c(%rbp)
  jle    L174
  cmpl   $0x39,-0x1c(%rbp)
  jle    L64
  mov    $0x0,%eax
  jmp    L212
L174:
  mov    $0x0,%eax
  jmp    L212
L80:
  cmpl   $0x2e,-0x14(%rbp)
  je     L1
  cmpl   $0x0,-0x14(%rbp)
  jne    L178
  jmp    L104
L1:
  nop
L104:
  cmpl   $0x40,-0x1c(%rbp)
  jle    L297
  cmpl   $0x5a,-0x1c(%rbp)
  jle    L64
  jmp    L330
L297:
  nop
L330:
  cmpl   $0x60,-0x1c(%rbp)
  jle    L77
  cmpl   $0x7a,-0x1c(%rbp)
  jle    L64
  jmp    L150
L77:
  nop
L150:
  cmpl   $0x2f,-0x1c(%rbp)
  jle    L299
  cmpl   $0x39,-0x1c(%rbp)
  jle    L64
  mov    $0x0,%eax
  jmp    L212
L299:
  mov    $0x0,%eax
  jmp    L212
L178:
  cmpl   $0x40,-0x1c(%rbp)
  jle    L119
  cmpl   $0x5a,-0x1c(%rbp)
  jle    L64
  jmp    L143
L119:
  nop
L143:
  cmpl   $0x60,-0x1c(%rbp)
  jle    L290
  cmpl   $0x7a,-0x1c(%rbp)
  jle    L64
  jmp    L368
L290:
  nop
L368:
  cmpl   $0x2f,-0x1c(%rbp)
  jle    L157
  cmpl   $0x39,-0x1c(%rbp)
  jle    L64
  jmp    L186
L157:
  nop
L186:
  cmpl   $0x2d,-0x1c(%rbp)
  je     L64
  mov    $0x0,%eax
  jmp    L212
L64:
  mov    -0x20(%rbp),%eax
  mov    %eax,-0x18(%rbp)
  mov    -0x1c(%rbp),%eax
  mov    %eax,-0x20(%rbp)
  mov    -0x14(%rbp),%eax
  mov    %eax,-0x1c(%rbp)
  jmp    L166
L377:
  nop
  mov    $0x1,%eax
L212:
  pop    %rbp
  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);
  }
}
```