// File: attractivechaos[P]udb2/tsl_hopscotch_map/./hopscotch_hash.h
// Function: tsl::detail_hopscotch_hash::hopscotch_hash<std::pair<unsigned int const, unsigned int>, tsl::bhopscotch_map<unsigned int, unsigned int, Hash32, std::equal_to<unsigned int>, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, unsigned int>>, 62u, false, tsl::hh::power_of_two_growth_policy<2ul>>::KeySelect, tsl::bhopscotch_map<unsigned int, unsigned int, Hash32, std::equal_to<unsigned int>, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, unsigned int>>, 62u, false, tsl::hh::power_of_two_growth_policy<2ul>>::ValueSelect, Hash32, std::equal_to<unsigned int>, std::allocator<std::pair<unsigned int const, unsigned int>>, 62u, false, tsl::hh::power_of_two_growth_policy<2ul>, std::map<unsigned int, unsigned int, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, unsigned int>>>>::will_neighborhood_change_on_rehash(unsigned long) const
bool will_neighborhood_change_on_rehash(size_t ibucket_neighborhood_check) const {
        std::size_t expand_bucket_count = GrowthPolicy::next_bucket_count();
        GrowthPolicy expand_growth_policy(expand_bucket_count);
        
        const bool use_stored_hash = USE_STORED_HASH_ON_REHASH(expand_bucket_count);
        for(size_t ibucket = ibucket_neighborhood_check; 
            ibucket < m_buckets_data.size() && (ibucket - ibucket_neighborhood_check) < NeighborhoodSize; 
            ++ibucket)
        {
            tsl_hh_assert(!m_buckets[ibucket].empty());
            
            const size_t hash = use_stored_hash?
                                    m_buckets[ibucket].truncated_bucket_hash():
                                    hash_key(KeySelect()(m_buckets[ibucket].value()));
            if(bucket_for_hash(hash) != expand_growth_policy.bucket_for_hash(hash)) {
                return true;
            }
        }
        
        return false;
    }

// Assembly:
subq $0x78, %rsp
movq %rdi, 0x68(%rsp)
movq %rsi, 0x60(%rsp)
movq 0x68(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x55b0
movq %rax, 0x58(%rsp)
leaq 0x50(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x6ee0
movq 0x58(%rsp), %rdi
callq 0x6350
andb $0x1, %al
movb %al, 0x4f(%rsp)
movq 0x60(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x28(%rsp), %rdi
movq 0x40(%rsp), %rax
movq %rax, 0x18(%rsp)
addq $0x8, %rdi
callq 0x3ab0
movq 0x18(%rsp), %rcx
movq %rax, %rdx
xorl %eax, %eax
cmpq %rdx, %rcx
movb %al, 0x27(%rsp)
jae 0x5a3b
movq 0x40(%rsp), %rax
subq 0x60(%rsp), %rax
cmpq $0x3e, %rax
setb %al
movb %al, 0x27(%rsp)
movb 0x27(%rsp), %al
testb $0x1, %al
jne 0x5a48
jmp 0x5b01
testb $0x1, 0x4f(%rsp)
je 0x5a72
movq 0x28(%rsp), %rax
movq 0x50(%rax), %rdi
movq 0x40(%rsp), %rax
shlq $0x4, %rax
addq %rax, %rdi
callq 0x63b0
movl %eax, %eax
movq %rax, 0x10(%rsp)
jmp 0x5aab
movq 0x28(%rsp), %rax
movq 0x50(%rax), %rdi
movq 0x40(%rsp), %rax
shlq $0x4, %rax
addq %rax, %rdi
callq 0x2f00
movq %rax, %rsi
leaq 0x37(%rsp), %rdi
callq 0x4790
movq 0x28(%rsp), %rdi
movq %rax, %rsi
callq 0x4760
movq %rax, 0x10(%rsp)
movq 0x28(%rsp), %rdi
movq 0x10(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rsi
callq 0x47a0
movq %rax, 0x8(%rsp)
movq 0x38(%rsp), %rsi
leaq 0x50(%rsp), %rdi
callq 0x4d00
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq %rcx, %rax
je 0x5aec
movb $0x1, 0x77(%rsp)
jmp 0x5b06
jmp 0x5aee
movq 0x40(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x40(%rsp)
jmp 0x59fb
movb $0x0, 0x77(%rsp)
movb 0x77(%rsp), %al
andb $0x1, %al
addq $0x78, %rsp
retq
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)