// File: /workspace/github_c_makefile_star2_O0/FH0[P]tun_direct/lwip-2.1.2/src/core/ipv6/nd6.c
// Function: nd6_is_prefix_in_netif
static int
nd6_is_prefix_in_netif(const ip6_addr_t *ip6addr, struct netif *netif)
{
  s8_t i;

  /* Check to see if the address matches an on-link prefix. */
  for (i = 0; i < LWIP_ND6_NUM_PREFIXES; i++) {
    if ((prefix_list[i].netif == netif) &&
        (prefix_list[i].invalidation_timer > 0) &&
        ip6_addr_netcmp(ip6addr, &(prefix_list[i].prefix))) {
      return 1;
    }
  }
  /* Check to see if address prefix matches a manually configured (= static)
   * address. Static addresses have an implied /64 subnet assignment. Dynamic
   * addresses (from autoconfiguration) have no implied subnet assignment, and
   * are thus effectively /128 assignments. See RFC 5942 for more on this. */
  for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
    if (ip6_addr_isvalid(netif_ip6_addr_state(netif, i)) &&
        netif_ip6_addr_isstatic(netif, i) &&
        ip6_addr_netcmp(ip6addr, netif_ip6_addr(netif, i))) {
      return 1;
    }
  }
  return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movb $0x0, -0x19(%rbp)
movsbl -0x19(%rbp), %eax
cmpl $0x5, %eax
jge 0x250a1
movsbq -0x19(%rbp), %rcx
leaq 0xaca7(%rip), %rax      # 0x2fca0
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
cmpq -0x18(%rbp), %rax
jne 0x25092
movsbq -0x19(%rbp), %rcx
leaq 0xac86(%rip), %rax      # 0x2fca0
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
cmpl $0x0, 0x20(%rax)
jbe 0x25092
movq -0x10(%rbp), %rax
movl (%rax), %eax
movsbq -0x19(%rbp), %rdx
leaq 0xac67(%rip), %rcx      # 0x2fca0
imulq $0x28, %rdx, %rdx
addq %rdx, %rcx
cmpl (%rcx), %eax
jne 0x25092
movq -0x10(%rbp), %rax
movl 0x4(%rax), %eax
movsbq -0x19(%rbp), %rdx
leaq 0xac49(%rip), %rcx      # 0x2fca0
imulq $0x28, %rdx, %rdx
addq %rdx, %rcx
cmpl 0x4(%rcx), %eax
jne 0x25092
movq -0x10(%rbp), %rax
movzbl 0x10(%rax), %eax
movsbq -0x19(%rbp), %rdx
leaq 0xac29(%rip), %rcx      # 0x2fca0
imulq $0x28, %rdx, %rdx
addq %rdx, %rcx
movzbl 0x10(%rcx), %ecx
cmpl %ecx, %eax
jne 0x25092
movl $0x1, -0x4(%rbp)
jmp 0x2517b
jmp 0x25094
movb -0x19(%rbp), %al
addb $0x1, %al
movb %al, -0x19(%rbp)
jmp 0x24fe0
movb $0x0, -0x19(%rbp)
movsbl -0x19(%rbp), %eax
cmpl $0x3, %eax
jge 0x25174
movq -0x18(%rbp), %rax
movsbq -0x19(%rbp), %rcx
movzbl 0x98(%rax,%rcx), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0x25165
cmpq $0x0, -0x18(%rbp)
je 0x250eb
movq -0x18(%rbp), %rax
movsbq -0x19(%rbp), %rcx
movl 0x9c(%rax,%rcx,4), %eax
movl %eax, -0x20(%rbp)
jmp 0x250f2
xorl %eax, %eax
movl %eax, -0x20(%rbp)
jmp 0x250f2
movl -0x20(%rbp), %eax
cmpl $0x0, %eax
jne 0x25165
movq -0x10(%rbp), %rax
movl (%rax), %eax
movq -0x18(%rbp), %rcx
addq $0x50, %rcx
movsbq -0x19(%rbp), %rdx
imulq $0x18, %rdx, %rdx
addq %rdx, %rcx
cmpl (%rcx), %eax
jne 0x25165
movq -0x10(%rbp), %rax
movl 0x4(%rax), %eax
movq -0x18(%rbp), %rcx
addq $0x50, %rcx
movsbq -0x19(%rbp), %rdx
imulq $0x18, %rdx, %rdx
addq %rdx, %rcx
cmpl 0x4(%rcx), %eax
jne 0x25165
movq -0x10(%rbp), %rax
movzbl 0x10(%rax), %eax
movq -0x18(%rbp), %rcx
addq $0x50, %rcx
movsbq -0x19(%rbp), %rdx
imulq $0x18, %rdx, %rdx
addq %rdx, %rcx
movzbl 0x10(%rcx), %ecx
cmpl %ecx, %eax
jne 0x25165
movl $0x1, -0x4(%rbp)
jmp 0x2517b
jmp 0x25167
movb -0x19(%rbp), %al
addb $0x1, %al
movb %al, -0x19(%rbp)
jmp 0x250a5
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
popq %rbp
retq