// File: attractivechaos[P]udb2/tsl_robin_map/./robin_hash.h
// Function: tsl::detail_robin_hash::robin_hash<std::pair<unsigned int, unsigned int>, tsl::robin_map<unsigned int, unsigned int, Hash32, std::equal_to<unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>, false, tsl::rh::power_of_two_growth_policy<2ul>>::KeySelect, tsl::robin_map<unsigned int, unsigned int, Hash32, std::equal_to<unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>, false, tsl::rh::power_of_two_growth_policy<2ul>>::ValueSelect, Hash32, std::equal_to<unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>, false, tsl::rh::power_of_two_growth_policy<2ul>>::robin_hash(unsigned long, Hash32 const&, std::equal_to<unsigned int> const&, std::allocator<std::pair<unsigned int, unsigned int>> const&, float, float)
robin_hash(size_type bucket_count, 
               const Hash& hash,
               const KeyEqual& equal,
               const Allocator& alloc,
               float min_load_factor = DEFAULT_MIN_LOAD_FACTOR,
               float max_load_factor = DEFAULT_MAX_LOAD_FACTOR): 
                                       Hash(hash), 
                                       KeyEqual(equal),
                                       GrowthPolicy(bucket_count),
                                       m_buckets_data(alloc), 
                                       m_buckets(static_empty_bucket_ptr()), 
                                       m_bucket_count(bucket_count),
                                       m_nb_elements(0), 
                                       m_grow_on_next_insert(false),
                                       m_try_skrink_on_next_insert(false)
    {
        if(bucket_count > max_bucket_count()) {
            TSL_RH_THROW_OR_TERMINATE(std::length_error, "The map exceeds its maxmimum bucket count.");
        }
        
        if(m_bucket_count > 0) {
            m_buckets_data.resize(m_bucket_count);
            m_buckets = m_buckets_data.data();
            
            tsl_rh_assert(!m_buckets_data.empty());
            m_buckets_data.back().set_as_last_bucket();
        }
        
        this->min_load_factor(min_load_factor);
        this->max_load_factor(max_load_factor);
    }

// Assembly:
subq $0x88, %rsp
movq %rdi, 0x80(%rsp)
movq %rsi, 0x78(%rsp)
movq %rdx, 0x70(%rsp)
movq %rcx, 0x68(%rsp)
movq %r8, 0x60(%rsp)
movss %xmm0, 0x5c(%rsp)
movss %xmm1, 0x58(%rsp)
movq 0x80(%rsp), %rdi
movq %rdi, 0x28(%rsp)
leaq 0x78(%rsp), %rsi
callq 0x1f20
movq 0x28(%rsp), %rax
addq $0x8, %rax
movq %rax, 0x18(%rsp)
movq 0x60(%rsp), %rsi
leaq 0x57(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x2000
movq 0x18(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x2020
movq 0x20(%rsp), %rdi
callq 0x2050
movq 0x28(%rsp), %rdi
movq %rdi, %rax
addq $0x20, %rax
movq %rax, 0x30(%rsp)
callq 0x2060
movq %rax, 0x38(%rsp)
jmp 0x1dce
movq 0x28(%rsp), %rdi
movq 0x30(%rsp), %rax
movq 0x38(%rsp), %rcx
movq %rcx, (%rax)
movq 0x78(%rsp), %rax
movq %rax, 0x28(%rdi)
movq $0x0, 0x30(%rdi)
movb $0x0, 0x44(%rdi)
movb $0x0, 0x4c(%rdi)
movq 0x78(%rsp), %rax
movq %rax, 0x8(%rsp)
callq 0x20c0
movq %rax, 0x10(%rsp)
jmp 0x1e0f
movq 0x8(%rsp), %rax
movq 0x10(%rsp), %rcx
cmpq %rcx, %rax
jbe 0x1e88
movl $0x10, %edi
callq 0x1080
movq %rax, %rdi
movq %rdi, %rax
movq %rax, (%rsp)
leaq 0x326a(%rip), %rsi      # 0x50a3
callq 0x1120
jmp 0x1e40
movq (%rsp), %rdi
movq 0x6195(%rip), %rsi      # 0x7fe0
movq 0x617e(%rip), %rdx      # 0x7fd0
callq 0x1180
jmp 0x1f13
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x48(%rsp)
movl %eax, 0x44(%rsp)
jmp 0x1eff
movq (%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x48(%rsp)
movl %eax, 0x44(%rsp)
callq 0x10d0
jmp 0x1eff
movq 0x28(%rsp), %rax
cmpq $0x0, 0x28(%rax)
jbe 0x1ed3
movq 0x28(%rsp), %rax
movq %rax, %rdi
addq $0x8, %rdi
movq 0x28(%rax), %rsi
callq 0x2110
jmp 0x1eab
movq 0x28(%rsp), %rdi
addq $0x8, %rdi
callq 0x21b0
movq 0x28(%rsp), %rdi
movq %rax, 0x20(%rdi)
addq $0x8, %rdi
callq 0x21d0
movq %rax, %rdi
callq 0x2210
movq 0x28(%rsp), %rdi
movss 0x5c(%rsp), %xmm0
callq 0x2220
jmp 0x1ee5
movq 0x28(%rsp), %rdi
movss 0x58(%rsp), %xmm0
callq 0x2280
jmp 0x1ef7
addq $0x88, %rsp
retq
movq 0x18(%rsp), %rdi
callq 0x19e0
movq 0x48(%rsp), %rdi
callq 0x1190
nopw %cs:(%rax,%rax)
nopl (%rax)