// File: benjibc[P]json-universal-container/./boost_file/boost/unordered/detail/buckets.hpp
// Function: boost::unordered::detail::buckets<std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, JSON>>, boost::unordered::detail::ptr_bucket, boost::unordered::detail::ptr_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, JSON>>, boost::unordered::detail::mix64_policy<unsigned long>>::delete_buckets()
void delete_buckets()
        {
            if(this->buckets_) {
                previous_pointer prev = this->get_previous_start();

                while(prev->next_) {
                    node_pointer n = static_cast<node_pointer>(prev->next_);
                    prev->next_ = n->next_;
                    delete_node(iterator(n));
                }

                delete_extra_node(prev);

                bucket_pointer end = this->get_bucket(this->bucket_count_ + 1);
                for(bucket_pointer it = this->buckets_; it != end; ++it)
                {
                    bucket_allocator_traits::destroy(bucket_alloc(),
                        boost::addressof(*it));
                }

                bucket_allocator_traits::deallocate(bucket_alloc(),
                    this->buckets_, this->bucket_count_ + 1);
    
                this->buckets_ = bucket_pointer();
            }

            BOOST_ASSERT(!this->size_);
        }

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x50(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x18(%rsp)
cmpq $0x0, (%rax)
je 0xd774
movq 0x18(%rsp), %rdi
callq 0xd0e0
movq %rax, 0x48(%rsp)
movq 0x48(%rsp), %rax
cmpq $0x0, (%rax)
je 0xd6d0
movq 0x48(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, %rax
je 0xd67a
movq 0x10(%rsp), %rax
addq $-0x50, %rax
movq %rax, 0x8(%rsp)
jmp 0xd683
xorl %eax, %eax
movq %rax, 0x8(%rsp)
jmp 0xd683
movq 0x8(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rax
movq 0x50(%rax), %rcx
movq 0x48(%rsp), %rax
movq %rcx, (%rax)
leaq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0xbff0
leaq 0x38(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0xd850
movq 0x18(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0xd7e0
jmp 0xd64c
movq 0x18(%rsp), %rdi
movq 0x48(%rsp), %rsi
callq 0xd870
movq 0x18(%rsp), %rdi
movq 0x8(%rdi), %rsi
addq $0x1, %rsi
callq 0xc010
movq %rax, %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x28(%rsp)
movq (%rax), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
cmpq 0x28(%rsp), %rax
je 0xd746
movq 0x18(%rsp), %rdi
callq 0xcc60
movq %rax, (%rsp)
movq 0x20(%rsp), %rdi
callq 0xcf30
movq (%rsp), %rdi
movq %rax, %rsi
callq 0xcff0
movq 0x20(%rsp), %rax
addq $0x8, %rax
movq %rax, 0x20(%rsp)
jmp 0xd706
movq 0x18(%rsp), %rdi
callq 0xcc60
movq %rax, %rdi
movq 0x18(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq $0x1, %rdx
callq 0xd020
movq 0x18(%rsp), %rax
movq $0x0, (%rax)
movq 0x18(%rsp), %rax
cmpq $0x0, 0x10(%rax)
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0xd789
jmp 0xd78b
jmp 0xd7aa
leaq 0x5681(%rip), %rdi      # 0x12e13
leaq 0x4c5f(%rip), %rsi      # 0x123f8
movl $0x342, %edx            # imm = 0x342
leaq 0x567b(%rip), %rcx      # 0x12e20
callq 0x3160
addq $0x58, %rsp
retq
nop