// File: /workspace/github_cpp_makefile_star2_O3/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 %r12
pushq %rbx
subq $0x28, %rsp
movaps %xmm1, 0x10(%rsp)
movss %xmm0, 0xc(%rsp)
movq %rdi, %rbx
leaq 0x20(%rsp), %r15
movq %rsi, (%r15)
movq %r15, %rsi
callq 0x1940
leaq 0x8(%rbx), %r14
xorl %r12d, %r12d
movq %r12, 0x18(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x8(%rbx)
movq %rbx, %rdi
callq 0x19e0
movq %rax, 0x20(%rbx)
movq (%r15), %rsi
movq %rsi, 0x28(%rbx)
movq %r12, 0x30(%rbx)
movb %r12b, 0x44(%rbx)
movb %r12b, 0x4c(%rbx)
movabsq $0xaaaaaaaaaaaaaab, %rax # imm = 0xAAAAAAAAAAAAAAB
cmpq %rax, %rsi
jae 0x18ee
xorps %xmm0, %xmm0
testq %rsi, %rsi
je 0x1886
movq %r14, %rdi
callq 0x19fe
movq 0x8(%rbx), %rax
movq 0x10(%rbx), %rcx
movq %rax, 0x20(%rbx)
movb $0x1, -0xa(%rcx)
movq 0x28(%rbx), %rax
testq %rax, %rax
js 0x186e
xorps %xmm0, %xmm0
cvtsi2ss %rax, %xmm0
jmp 0x1886
movq %rax, %rcx
shrq %rcx
andl $0x1, %eax
orq %rcx, %rax
xorps %xmm0, %xmm0
cvtsi2ss %rax, %xmm0
addss %xmm0, %xmm0
movss 0xc(%rsp), %xmm2
maxss 0x17a0(%rip), %xmm2     # 0x3034
minss 0x1788(%rip), %xmm2     # 0x3024
movaps 0x10(%rsp), %xmm1
maxss 0x177f(%rip), %xmm1     # 0x3028
movss %xmm2, 0x48(%rbx)
minss 0x1776(%rip), %xmm1     # 0x302c
movss %xmm1, 0x40(%rbx)
mulss %xmm0, %xmm1
cvttss2si %xmm1, %rax
movq %rax, %rcx
subss 0x1761(%rip), %xmm1     # 0x3030
cvttss2si %xmm1, %rdx
sarq $0x3f, %rcx
andq %rcx, %rdx
orq %rax, %rdx
movq %rdx, 0x38(%rbx)
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movl $0x10, %edi
callq 0x1060
movq %rax, %rbx
leaq 0x17ad(%rip), %rsi      # 0x30af
movq %rax, %rdi
callq 0x1100
movq 0x36cf(%rip), %rsi      # 0x4fe0
movq 0x36b8(%rip), %rdx      # 0x4fd0
movq %rbx, %rdi
callq 0x1140
movq %rax, %r15
movq %rbx, %rdi
callq 0x10b0
jmp 0x1930
movq %rax, %r15
movq %r14, %rdi
callq 0x1792
movq %r15, %rdi
callq 0x1150