// File: benjibc[P]json-universal-container/./boost_file/boost/unordered/detail/unique.hpp
// Function: boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, JSON>>*, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, JSON>> boost::unordered::detail::table_impl<boost::unordered::detail::map<std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, JSON>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, JSON, boost::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>::find_node_impl<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>(unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>> const&) const
iterator find_node_impl(
                std::size_t key_hash,
                Key const& k,
                Pred const& eq) const
        {
            std::size_t bucket_index =
                policy::to_bucket(this->bucket_count_, key_hash);
            iterator n = this->get_start(bucket_index);

            for (;;)
            {
                if (!n.node_) return n;

                std::size_t node_hash = n.node_->hash_;
                if (key_hash == node_hash)
                {
                    if (eq(k, this->get_key(*n)))
                        return n;
                }
                else
                {
                    if (policy::to_bucket(this->bucket_count_, node_hash)
                            != bucket_index)
                        return iterator();
                }

                ++n;
            }
        }

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x48(%rsp)
movq %rsi, 0x40(%rsp)
movq %rdx, 0x38(%rsp)
movq %rcx, 0x30(%rsp)
movq 0x48(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x8(%rax), %rdi
movq 0x40(%rsp), %rsi
callq 0xbe70
movq 0x10(%rsp), %rdi
movq %rax, 0x28(%rsp)
movq 0x28(%rsp), %rsi
callq 0xbe90
movq %rax, 0x20(%rsp)
cmpq $0x0, 0x20(%rsp)
jne 0xbda0
movq 0x20(%rsp), %rax
movq %rax, 0x50(%rsp)
jmp 0xbe40
movq 0x20(%rsp), %rax
movq 0x58(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x40(%rsp), %rax
cmpq 0x18(%rsp), %rax
jne 0xbe09
movq 0x30(%rsp), %rax
movq %rax, (%rsp)
movq 0x38(%rsp), %rax
movq %rax, 0x8(%rsp)
leaq 0x20(%rsp), %rdi
callq 0xb3c0
movq 0x10(%rsp), %rdi
movq %rax, %rsi
callq 0xbf50
movq (%rsp), %rdi
movq 0x8(%rsp), %rsi
movq %rax, %rdx
callq 0xbf20
testb $0x1, %al
jne 0xbdfb
jmp 0xbe07
movq 0x20(%rsp), %rax
movq %rax, 0x50(%rsp)
jmp 0xbe40
jmp 0xbe31
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x18(%rsp), %rsi
callq 0xbe70
cmpq 0x28(%rsp), %rax
je 0xbe2f
leaq 0x50(%rsp), %rdi
callq 0xbd20
jmp 0xbe40
jmp 0xbe31
leaq 0x20(%rsp), %rdi
callq 0xbf70
jmp 0xbd89
movq 0x50(%rsp), %rax
addq $0x58, %rsp
retq
nopw (%rax,%rax)