// File: /workspace/github_c_makefile_star2_O0/FH0[P]tun_direct/lwip-2.1.2/src/core/ipv6/nd6.c
// Function: nd6_reachability_hint
void
nd6_reachability_hint(const ip6_addr_t *ip6addr)
{
  s8_t i;
  s16_t dst_idx;

  /* Find destination in cache. */
  if (ip6_addr_cmp(ip6addr, &(destination_cache[nd6_cached_destination_index].destination_addr))) {
    dst_idx = nd6_cached_destination_index;
    ND6_STATS_INC(nd6.cachehit);
  } else {
    dst_idx = nd6_find_destination_cache_entry(ip6addr);
  }
  if (dst_idx < 0) {
    return;
  }

  /* Find next hop neighbor in cache. */
  if (ip6_addr_cmp(&(destination_cache[dst_idx].next_hop_addr), &(neighbor_cache[nd6_cached_neighbor_index].next_hop_address))) {
    i = nd6_cached_neighbor_index;
    ND6_STATS_INC(nd6.cachehit);
  } else {
    i = nd6_find_neighbor_cache_entry(&(destination_cache[dst_idx].next_hop_addr));
  }
  if (i < 0) {
    return;
  }

  /* For safety: don't set as reachable if we don't have a LL address yet. Misuse protection. */
  if (neighbor_cache[i].state == ND6_INCOMPLETE || neighbor_cache[i].state == ND6_NO_ENTRY) {
    return;
  }

  /* Set reachability state. */
  neighbor_cache[i].state = ND6_REACHABLE;
  neighbor_cache[i].counter.reachable_time = reachable_time;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movl (%rax), %eax
movzbl 0xb598(%rip), %ecx      # 0x2ff51
movl %ecx, %edx
leaq 0xb3ae(%rip), %rcx      # 0x2fd70
imulq $0x30, %rdx, %rdx
addq %rdx, %rcx
cmpl (%rcx), %eax
jne 0x24a6e
movq -0x8(%rbp), %rax
movl 0x4(%rax), %eax
movzbl 0xb572(%rip), %ecx      # 0x2ff51
movl %ecx, %edx
leaq 0xb388(%rip), %rcx      # 0x2fd70
imulq $0x30, %rdx, %rdx
addq %rdx, %rcx
cmpl 0x4(%rcx), %eax
jne 0x24a6e
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
movzbl 0xb54f(%rip), %ecx      # 0x2ff51
movl %ecx, %edx
leaq 0xb365(%rip), %rcx      # 0x2fd70
imulq $0x30, %rdx, %rdx
addq %rdx, %rcx
cmpl 0x8(%rcx), %eax
jne 0x24a6e
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
movzbl 0xb52c(%rip), %ecx      # 0x2ff51
movl %ecx, %edx
leaq 0xb342(%rip), %rcx      # 0x2fd70
imulq $0x30, %rdx, %rdx
addq %rdx, %rcx
cmpl 0xc(%rcx), %eax
jne 0x24a6e
movq -0x8(%rbp), %rax
movzbl 0x10(%rax), %eax
movzbl 0xb508(%rip), %ecx      # 0x2ff51
movl %ecx, %edx
leaq 0xb31e(%rip), %rcx      # 0x2fd70
imulq $0x30, %rdx, %rdx
addq %rdx, %rcx
movzbl 0x10(%rcx), %ecx
cmpl %ecx, %eax
jne 0x24a6e
movzbl 0xb4e9(%rip), %eax      # 0x2ff51
movw %ax, -0xc(%rbp)
jmp 0x24a7b
movq -0x8(%rbp), %rdi
callq 0x227e0
movw %ax, -0xc(%rbp)
movswl -0xc(%rbp), %eax
cmpl $0x0, %eax
jge 0x24a89
jmp 0x24c30
movswq -0xc(%rbp), %rcx
leaq 0xb2db(%rip), %rax      # 0x2fd70
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movl 0x14(%rax), %eax
movzbl 0xb4ac(%rip), %ecx      # 0x2ff52
movl %ecx, %edx
leaq 0xaf71(%rip), %rcx      # 0x2fa20
imulq $0x38, %rdx, %rdx
addq %rdx, %rcx
cmpl (%rcx), %eax
jne 0x24b99
movswq -0xc(%rbp), %rcx
leaq 0xb2a6(%rip), %rax      # 0x2fd70
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movl 0x18(%rax), %eax
movzbl 0xb477(%rip), %ecx      # 0x2ff52
movl %ecx, %edx
leaq 0xaf3c(%rip), %rcx      # 0x2fa20
imulq $0x38, %rdx, %rdx
addq %rdx, %rcx
cmpl 0x4(%rcx), %eax
jne 0x24b99
movswq -0xc(%rbp), %rcx
leaq 0xb270(%rip), %rax      # 0x2fd70
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movl 0x1c(%rax), %eax
movzbl 0xb441(%rip), %ecx      # 0x2ff52
movl %ecx, %edx
leaq 0xaf06(%rip), %rcx      # 0x2fa20
imulq $0x38, %rdx, %rdx
addq %rdx, %rcx
cmpl 0x8(%rcx), %eax
jne 0x24b99
movswq -0xc(%rbp), %rcx
leaq 0xb23e(%rip), %rax      # 0x2fd70
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movl 0x20(%rax), %eax
movzbl 0xb40f(%rip), %ecx      # 0x2ff52
movl %ecx, %edx
leaq 0xaed4(%rip), %rcx      # 0x2fa20
imulq $0x38, %rdx, %rdx
addq %rdx, %rcx
cmpl 0xc(%rcx), %eax
jne 0x24b99
movswq -0xc(%rbp), %rcx
leaq 0xb20c(%rip), %rax      # 0x2fd70
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movzbl 0x24(%rax), %eax
movzbl 0xb3dc(%rip), %ecx      # 0x2ff52
movl %ecx, %edx
leaq 0xaea1(%rip), %rcx      # 0x2fa20
imulq $0x38, %rdx, %rdx
addq %rdx, %rcx
movzbl 0x10(%rcx), %ecx
cmpl %ecx, %eax
jne 0x24b99
movb 0xb3be(%rip), %al       # 0x2ff52
movb %al, -0x9(%rbp)
jmp 0x24bb8
movswq -0xc(%rbp), %rax
leaq 0xb1cb(%rip), %rdi      # 0x2fd70
imulq $0x30, %rax, %rax
addq %rax, %rdi
addq $0x14, %rdi
callq 0x210a0
movb %al, -0x9(%rbp)
movsbl -0x9(%rbp), %eax
cmpl $0x0, %eax
jge 0x24bc3
jmp 0x24c30
movsbq -0x9(%rbp), %rcx
leaq 0xae51(%rip), %rax      # 0x2fa20
imulq $0x38, %rcx, %rcx
addq %rcx, %rax
movzbl 0x30(%rax), %eax
cmpl $0x1, %eax
je 0x24bfb
movsbq -0x9(%rbp), %rcx
leaq 0xae35(%rip), %rax      # 0x2fa20
imulq $0x38, %rcx, %rcx
addq %rcx, %rax
movzbl 0x30(%rax), %eax
cmpl $0x0, %eax
jne 0x24bfd
jmp 0x24c30
movsbq -0x9(%rbp), %rcx
leaq 0xae17(%rip), %rax      # 0x2fa20
imulq $0x38, %rcx, %rcx
addq %rcx, %rax
movb $0x2, 0x30(%rax)
movl 0xa53a(%rip), %ecx      # 0x2f154
movsbq -0x9(%rbp), %rdx
leaq 0xadfa(%rip), %rax      # 0x2fa20
imulq $0x38, %rdx, %rdx
addq %rdx, %rax
movl %ecx, 0x34(%rax)
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)