user: 请将以下的汇编代码转换成C语言代码:

```asm
<check_host>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  cmpb   $0x40,(%rdi)
  je     L61
  mov    %rdi,%rbx
  mov    $0x2f,%esi
  mov    $0x0,%eax
  call   <split_at@plt>
  test   %eax,%eax
  jne    L181
  lea    D56(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L68
  lea    D80(%rip),%rdi
  call   <tcpd_warn@plt>
  lea    D47(%rip),%rdi
  mov    $0x0,%eax
  call   <tcpd_warn@plt>
  mov    $0x1,%eax
  jmp    L8
L61:
  lea    D22(%rip),%rdi
  mov    $0x0,%eax
  call   <tcpd_warn@plt>
  mov    $0x1,%eax
L8:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
L181:
  movslq %eax,%rbp
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <dot_quad_addr@plt>
  cmp    $0xffffffff,%eax
  je     L146
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <dot_quad_addr@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  cmp    $0xffffffff,%edx
  jne    L8
L146:
  mov    %rbp,%rdx
  mov    %rbx,%rsi
  lea    D0(%rip),%rdi
  mov    $0x0,%eax
  call   <tcpd_warn@plt>
  mov    $0x1,%eax
  jmp    L8
L68:
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <reserved_name@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  jne    L8
  lea    D68(%rip),%rsi
  mov    %rbx,%rdi
  call   <strspn@plt>
  cmpb   $0x0,(%rbx,%rax,1)
  je     L58
  mov    %rbx,%rdi
  call   <strlen@plt>
  cmpb   $0x2e,-0x1(%rbx,%rax,1)
  je     L111
  mov    $0x1,%eax
  cmpb   $0x2e,(%rbx)
  je     L8
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <check_dns@plt>
  jmp    L8
L111:
  mov    %rbx,%rsi
  lea    D31(%rip),%rdi
  mov    $0x0,%eax
  call   <tcpd_warn@plt>
  mov    $0x1,%eax
  jmp    L8
L58:
  lea    D84(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcasecmp@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  je     L8
  lea    D11(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcasecmp@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  je     L8
  cmpb   $0x2e,(%rbx)
  je     L27
  mov    %rbx,%rdi
  call   <strlen@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  cmpb   $0x2e,-0x1(%rbx,%rdx,1)
  je     L8
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <check_dns@plt>
  mov    $0x1,%eax
  jmp    L8
L27:
  mov    %rbx,%rsi
  lea    D62(%rip),%rdi
  mov    $0x0,%eax
  call   <tcpd_warn@plt>
  mov    $0x1,%eax
  jmp    L8
```

tool_calls: name: parse_data
arguments: tag: D56
type_infered: string
name: parse_data
arguments: tag: D80
type_infered: string
name: parse_data
arguments: tag: D47
type_infered: string
name: parse_data
arguments: tag: D22
type_infered: string
name: parse_data
arguments: tag: D0
type_infered: string
name: parse_data
arguments: tag: D68
type_infered: string
name: parse_data
arguments: tag: D31
type_infered: string
name: parse_data
arguments: tag: D84
type_infered: string
name: parse_data
arguments: tag: D11
type_infered: string
name: parse_data
arguments: tag: D62
type_infered: string

tool: D56: FAIL

tool: D80: FAIL is no longer recognized

tool: D47: (use EXCEPT or DENY instead)

tool: D22: netgroup support disabled

tool: D0: %s/%s: bad net/mask pattern

tool: D68: 01234567890./

tool: D31: %s: domain or host name ends in dot

tool: D84: 0.0.0.0

tool: D11: 255.255.255.255

tool: D62: %s: network number begins with dot

assistant: ```c
int check_host(pat)
char *pat;
{
  char *mask;
  int addr_count = 1;
  if (pat[0] == '@') {
    tcpd_warn("netgroup support disabled");
  } else if (mask = split_at(pat, '/')) {
    if (dot_quad_addr(pat) == (-1) || dot_quad_addr(mask) == (-1))
      tcpd_warn("%s/%s: bad net/mask pattern", pat, mask);
  } else if ((strcasecmp((pat), ("FAIL")) == 0)) {
    tcpd_warn("FAIL is no longer recognized");
    tcpd_warn("(use EXCEPT or DENY instead)");
  } else if (reserved_name(pat)) {
    ;
  } else if ((pat[strspn(pat, "01234567890./")] != 0)) {
    if (pat[strlen(pat) - 1] == '.') {
      tcpd_warn("%s: domain or host name ends in dot", pat);
    } else if (pat[0] != '.') {
      addr_count = check_dns(pat);
    }
  } else {
    if ((strcasecmp((pat), ("0.0.0.0")) == 0) || (strcasecmp((pat), ("255.255.255.255")) == 0)) {
      ;
    } else if (pat[0] == '.') {
      tcpd_warn("%s: network number begins with dot", pat);
    } else if (pat[strlen(pat) - 1] != '.') {
      check_dns(pat);
    }
  }
  return (addr_count);
}
```