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

```asm
<ipv4_net_to_type>:
  endbr64
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    %edi,%ebx
  call   <ntohl@plt>
  shr    $0x18,%eax
  mov    %eax,%ebp
  mov    %ebx,%edi
  call   <ntohl@plt>
  mov    %eax,%r12d
  mov    %ebx,%edi
  call   <ntohl@plt>
  mov    %eax,%r13d
  mov    %ebx,%edi
  call   <ntohl@plt>
  mov    %eax,%edx
  lea    D95(%rip),%rax
  test   %ebp,%ebp
  je     L99
  lea    D134(%rip),%rax
  cmp    $0xa,%ebp
  je     L99
  sar    $0x10,%r12d
  cmp    $0x64,%ebp
  je     L318
  lea    D169(%rip),%rax
  cmp    $0x7f,%ebp
  je     L99
  movzbl %r12b,%ecx
  cmp    $0xa9,%ebp
  jne    L132
  lea    D146(%rip),%rax
  cmp    $0xfe,%ecx
  jne    L132
L99:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L318:
  mov    %r12d,%ecx
  and    $0xc0,%ecx
  lea    D111(%rip),%rax
  cmp    $0x40,%ecx
  je     L99
  movzbl %r12b,%ecx
L132:
  mov    %r13d,%eax
  sar    $0x8,%eax
  mov    %r13d,%ebx
  movzbl %bh,%esi
  cmp    $0xac,%ebp
  je     L151
  cmp    $0xc0,%ebp
  sete   %dil
  test   %ecx,%ecx
  sete   %r9b
  test   %esi,%esi
  sete   %r8b
  or     %r12d,%eax
  test   %al,%al
  jne    L213
  lea    D147(%rip),%rax
  test   %dil,%dil
  jne    L99
L213:
  cmp    $0x2,%ecx
  jne    L156
  lea    D152(%rip),%rax
  test   %r8b,%dil
  je     L156
  jmp    L99
L151:
  mov    %r12d,%edi
  and    $0xf0,%edi
  lea    D134(%rip),%rax
  cmp    $0x10,%edi
  je     L99
  test   %ecx,%ecx
  sete   %r9b
  mov    $0x0,%edi
L156:
  cmp    $0x33,%ecx
  sete   %r8b
  cmp    $0x64,%esi
  sete   %al
  test   %al,%r8b
  je     L36
  lea    D96(%rip),%rax
  test   %dil,%dil
  jne    L99
L36:
  cmp    $0xcb,%ebp
  sete   %r8b
  cmp    $0x71,%esi
  sete   %al
  test   %al,%r8b
  je     L273
  lea    D3(%rip),%rax
  test   %r9b,%r9b
  jne    L99
L273:
  cmp    $0x58,%ecx
  sete   %r8b
  cmp    $0x63,%esi
  sete   %al
  test   %al,%r8b
  je     L206
  lea    D90(%rip),%rax
  test   %dil,%dil
  jne    L99
L206:
  cmp    $0x34,%ecx
  sete   %r8b
  cmp    $0xc1,%esi
  sete   %al
  test   %al,%r8b
  je     L93
  lea    D180(%rip),%rax
  test   %dil,%dil
  jne    L99
L93:
  cmp    $0xa8,%ecx
  jne    L116
  lea    D134(%rip),%rax
  test   %dil,%dil
  jne    L99
L116:
  cmp    $0xff,%ebp
  jne    L265
  cmp    $0xff,%ecx
  jne    L265
  cmp    $0xff,%dl
  jne    L315
  lea    D167(%rip),%rax
  cmp    $0xff,%esi
  je     L99
L315:
  and    $0xf0,%ebp
  cmp    $0xf0,%ebp
  lea    D42(%rip),%rax
  lea    D33(%rip),%rdx
  cmove  %rdx,%rax
  jmp    L99
L265:
  cmp    $0xc6,%ebp
  jne    L105
  and    $0xfe,%r12d
  cmp    $0x12,%r12d
  lea    D42(%rip),%rax
  lea    D100(%rip),%rdx
  cmove  %rdx,%rax
  jmp    L99
L105:
  lea    -0xe0(%rbp),%eax
  cmp    $0xf,%eax
  ja     L315
  lea    D66(%rip),%rax
  jmp    L99
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D95
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D134
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D169
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D146
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D111
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D147
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D152
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D96
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D3
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D90
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D180
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D167
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D42
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D33
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D100
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D66
type_infered: string

tool: D95: This host on this network

tool: D134: Private Use

tool: D169: Loopback

tool: D146: Link Local

tool: D111: Shared Address Space

tool: D147: IETF Protocol Assignments

tool: D152: Documentation (TEST-NET-1)

tool: D96: Documentation (TEST-NET-2)

tool: D3: Documentation (TEST-NET-3)

tool: D90: 6 to 4 Relay Anycast (Deprecated)

tool: D180: AMT

tool: D167: Limited Broadcast

tool: D42: Internet

tool: D33: Reserved

tool: D100: Benchmarking

tool: D66: Multicast

assistant: ```c
const char *ipv4_net_to_type(struct in_addr net) {
  unsigned byte1 = (ntohl(net.s_addr) >> 24) & 0xff;
  unsigned byte2 = (ntohl(net.s_addr) >> 16) & 0xff;
  unsigned byte3 = (ntohl(net.s_addr) >> 8) & 0xff;
  unsigned byte4 = (ntohl(net.s_addr)) & 0xff;
  if (byte1 == 0) {
    return "This host on this network";
  }
  if (byte1 == 10) {
    return "Private Use";
  }
  if (byte1 == 100 && (byte2 & 0xc0) == 64) {
    return "Shared Address Space";
  }
  if (byte1 == 127) {
    return "Loopback";
  }
  if (byte1 == 169 && byte2 == 254) {
    return "Link Local";
  }
  if (byte1 == 172 && (byte2 & 0xf0) == 16) {
    return "Private Use";
  }
  if (byte1 == 192 && byte2 == 0 && byte3 == 0) {
    return "IETF Protocol Assignments";
  }
  if (byte1 == 192 && byte2 == 2 && byte3 == 0) {
    return "Documentation (TEST-NET-1)";
  }
  if (byte1 == 192 && byte2 == 51 && byte3 == 100) {
    return "Documentation (TEST-NET-2)";
  }
  if (byte1 == 203 && byte2 == 0 && byte3 == 113) {
    return "Documentation (TEST-NET-3)";
  }
  if (byte1 == 192 && byte2 == 88 && byte3 == 99) {
    return "6 to 4 Relay Anycast (Deprecated)";
  }
  if (byte1 == 192 && byte2 == 52 && byte3 == 193) {
    return "AMT";
  }
  if (byte1 == 192 && byte2 == 168) {
    return "Private Use";
  }
  if (byte1 == 255 && byte2 == 255 && byte3 == 255 && byte4 == 255) {
    return "Limited Broadcast";
  }
  if (byte1 == 198 && (byte2 & 0xfe) == 18) {
    return "Benchmarking";
  }
  if (byte1 >= 224 && byte1 <= 239) {
    return "Multicast";
  }
  if ((byte1 & 0xf0) == 240) {
    return "Reserved";
  }
  return "Internet";
}
```