// File: /workspace/github_cpp_makefile_star2_O2/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:
pushq %r15
pushq %r14
pushq %rbx
subq $0x10, %rsp
movss %xmm1, 0x4(%rsp)
movss %xmm0, (%rsp)
movq %rdi, %r14
leaq 0x8(%rsp), %r15
movq %rsi, (%r15)
movq %r15, %rsi
callq 0x17a2
leaq 0x8(%r14), %rbx
xorps %xmm0, %xmm0
movups %xmm0, 0x8(%r14)
andq $0x0, 0x18(%r14)
movq %r14, %rdi
callq 0x1820
movq %rax, 0x20(%r14)
movq (%r15), %rsi
movq %rsi, 0x28(%r14)
andq $0x0, 0x30(%r14)
xorl %eax, %eax
movb %al, 0x44(%r14)
movb %al, 0x4c(%r14)
movabsq $0xaaaaaaaaaaaaaab, %rax # imm = 0xAAAAAAAAAAAAAAB
cmpq %rax, %rsi
jae 0x1752
testq %rsi, %rsi
je 0x1720
movq %rbx, %rdi
callq 0x187e
movq 0x8(%r14), %rax
movq 0x10(%r14), %rcx
movq %rax, 0x20(%r14)
movb $0x1, -0xa(%rcx)
xorps %xmm0, %xmm0
movss (%rsp), %xmm1
maxss %xmm0, %xmm1
minss 0x18f0(%rip), %xmm1     # 0x3024
movss %xmm1, 0x48(%r14)
movq %r14, %rdi
movss 0x4(%rsp), %xmm0
callq 0x18b4
addq $0x10, %rsp
popq %rbx
popq %r14
popq %r15
retq
pushq $0x10
popq %rdi
callq 0x1080
movq %rax, %r14
leaq 0x1947(%rip), %rsi      # 0x30ab
movq %rax, %rdi
callq 0x1120
movq 0x386d(%rip), %rsi      # 0x4fe0
movq 0x3856(%rip), %rdx      # 0x4fd0
movq %r14, %rdi
callq 0x1180
movq %rax, %r15
movq %r14, %rdi
callq 0x10d0
jmp 0x1792
movq %rax, %r15
movq %rbx, %rdi
callq 0x162e
movq %r15, %rdi
callq 0x1190