user: Translate the below assembly code into C programming language:

```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)
L218:
  cmpl   $0x0,-0x1c(%rbp)
  je     L99
  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     L321
  cmpl   $0x2e,-0x20(%rbp)
  jne    L236
  cmpl   $0x40,-0x1c(%rbp)
  jle    L165
  cmpl   $0x5a,-0x1c(%rbp)
  jle    L321
  jmp    L294
L165:
  nop
L294:
  cmpl   $0x60,-0x1c(%rbp)
  jle    L40
  cmpl   $0x7a,-0x1c(%rbp)
  jle    L321
  jmp    L279
L40:
  nop
L279:
  cmpl   $0x2f,-0x1c(%rbp)
  jle    L190
  cmpl   $0x39,-0x1c(%rbp)
  jle    L321
  mov    $0x0,%eax
  jmp    L43
L190:
  mov    $0x0,%eax
  jmp    L43
L236:
  cmpl   $0x2e,-0x14(%rbp)
  je     L275
  cmpl   $0x0,-0x14(%rbp)
  jne    L123
  jmp    L76
L275:
  nop
L76:
  cmpl   $0x40,-0x1c(%rbp)
  jle    L86
  cmpl   $0x5a,-0x1c(%rbp)
  jle    L321
  jmp    L323
L86:
  nop
L323:
  cmpl   $0x60,-0x1c(%rbp)
  jle    L28
  cmpl   $0x7a,-0x1c(%rbp)
  jle    L321
  jmp    L292
L28:
  nop
L292:
  cmpl   $0x2f,-0x1c(%rbp)
  jle    L100
  cmpl   $0x39,-0x1c(%rbp)
  jle    L321
  mov    $0x0,%eax
  jmp    L43
L100:
  mov    $0x0,%eax
  jmp    L43
L123:
  cmpl   $0x40,-0x1c(%rbp)
  jle    L56
  cmpl   $0x5a,-0x1c(%rbp)
  jle    L321
  jmp    L315
L56:
  nop
L315:
  cmpl   $0x60,-0x1c(%rbp)
  jle    L377
  cmpl   $0x7a,-0x1c(%rbp)
  jle    L321
  jmp    L179
L377:
  nop
L179:
  cmpl   $0x2f,-0x1c(%rbp)
  jle    L23
  cmpl   $0x39,-0x1c(%rbp)
  jle    L321
  jmp    L20
L23:
  nop
L20:
  cmpl   $0x2d,-0x1c(%rbp)
  je     L321
  mov    $0x0,%eax
  jmp    L43
L321:
  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    L218
L99:
  nop
  mov    $0x1,%eax
L43:
  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);
  }
}
```