// File: benjibc[P]json-universal-container/./boost_file/boost/unordered/detail/unique.hpp
// Function: 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>>>>>::add_node(boost::unordered::detail::node_constructor<std::allocator<boost::unordered::detail::ptr_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, JSON>>>>&, unsigned long)
inline iterator add_node(
                node_constructor& a,
                std::size_t key_hash)
        {
            node_pointer n = a.release();
            n->hash_ = key_hash;
    
            bucket_pointer b = this->get_bucket(
                policy::to_bucket(this->bucket_count_, key_hash));

            if (!b->next_)
            {
                previous_pointer start_node = this->get_previous_start();
                
                if (start_node->next_) {
                    this->get_bucket(policy::to_bucket(this->bucket_count_,
                        static_cast<node_pointer>(start_node->next_)->hash_)
                    )->next_ = n;
                }

                b->next_ = start_node;
                n->next_ = start_node->next_;
                start_node->next_ = static_cast<link_pointer>(n);
            }
            else
            {
                n->next_ = b->next_->next_;
                b->next_->next_ = static_cast<link_pointer>(n);
            }

            ++this->size_;
            return iterator(n);
        }

// Assembly:
subq $0x98, %rsp
movq %rdi, 0x88(%rsp)
movq %rsi, 0x80(%rsp)
movq %rdx, 0x78(%rsp)
movq 0x88(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0x80(%rsp), %rdi
callq 0xd900
movq %rax, %rcx
movq 0x58(%rsp), %rax
movq %rcx, 0x70(%rsp)
movq 0x78(%rsp), %rdx
movq 0x70(%rsp), %rcx
movq %rdx, 0x58(%rcx)
movq 0x8(%rax), %rdi
movq 0x78(%rsp), %rsi
callq 0xbe70
movq 0x58(%rsp), %rdi
movq %rax, %rsi
callq 0xc010
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rax
cmpq $0x0, (%rax)
jne 0xb8a1
movq 0x58(%rsp), %rdi
callq 0xd0e0
movq %rax, 0x60(%rsp)
movq 0x60(%rsp), %rax
cmpq $0x0, (%rax)
je 0xb84f
movq 0x70(%rsp), %rcx
movq %rcx, 0x48(%rsp)
xorl %eax, %eax
cmpq $0x0, %rcx
movq %rax, 0x50(%rsp)
je 0xb7e3
movq 0x48(%rsp), %rax
addq $0x50, %rax
movq %rax, 0x50(%rsp)
movq 0x58(%rsp), %rax
movq 0x50(%rsp), %rcx
movq %rcx, 0x30(%rsp)
movq 0x8(%rax), %rax
movq %rax, 0x38(%rsp)
movq 0x60(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x40(%rsp)
cmpq $0x0, %rax
je 0xb81e
movq 0x40(%rsp), %rax
addq $-0x50, %rax
movq %rax, 0x28(%rsp)
jmp 0xb827
xorl %eax, %eax
movq %rax, 0x28(%rsp)
jmp 0xb827
movq 0x38(%rsp), %rdi
movq 0x28(%rsp), %rax
movq 0x58(%rax), %rsi
callq 0xbe70
movq 0x58(%rsp), %rdi
movq %rax, %rsi
callq 0xc010
movq 0x30(%rsp), %rcx
movq %rcx, (%rax)
movq 0x60(%rsp), %rcx
movq 0x68(%rsp), %rax
movq %rcx, (%rax)
movq 0x60(%rsp), %rax
movq (%rax), %rcx
movq 0x70(%rsp), %rax
movq %rcx, 0x50(%rax)
movq 0x70(%rsp), %rcx
movq %rcx, 0x18(%rsp)
xorl %eax, %eax
cmpq $0x0, %rcx
movq %rax, 0x20(%rsp)
je 0xb892
movq 0x18(%rsp), %rax
addq $0x50, %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rcx
movq 0x60(%rsp), %rax
movq %rcx, (%rax)
jmp 0xb8ea
movq 0x68(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rcx
movq 0x70(%rsp), %rax
movq %rcx, 0x50(%rax)
movq 0x70(%rsp), %rcx
movq %rcx, 0x8(%rsp)
xorl %eax, %eax
cmpq $0x0, %rcx
movq %rax, 0x10(%rsp)
je 0xb8da
movq 0x8(%rsp), %rax
addq $0x50, %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rcx
movq 0x68(%rsp), %rax
movq (%rax), %rax
movq %rcx, (%rax)
movq 0x58(%rsp), %rax
movq 0x10(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x10(%rax)
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0xbff0
movq 0x90(%rsp), %rax
addq $0x98, %rsp
retq
nopl (%rax)