// File: /workspace/github_cpp_makefile_star2_O2/attractivechaos[P]udb2/ska_flat_hash_map/./flat_hash_map.hpp
// Function: std::pair<ska::detailv3::sherwood_v3_table<std::pair<unsigned int, unsigned int>, unsigned int, Hash32, ska::detailv3::KeyOrValueHasher<unsigned int, std::pair<unsigned int, unsigned int>, Hash32>, std::equal_to<unsigned int>, ska::detailv3::KeyOrValueEquality<unsigned int, std::pair<unsigned int, unsigned int>, std::equal_to<unsigned int>>, std::allocator<std::pair<unsigned int, unsigned int>>, std::allocator<ska::detailv3::sherwood_v3_entry<std::pair<unsigned int, unsigned int>>>>::templated_iterator<std::pair<unsigned int, unsigned int>>, bool> ska::detailv3::sherwood_v3_table<std::pair<unsigned int, unsigned int>, unsigned int, Hash32, ska::detailv3::KeyOrValueHasher<unsigned int, std::pair<unsigned int, unsigned int>, Hash32>, std::equal_to<unsigned int>, ska::detailv3::KeyOrValueEquality<unsigned int, std::pair<unsigned int, unsigned int>, std::equal_to<unsigned int>>, std::allocator<std::pair<unsigned int, unsigned int>>, std::allocator<ska::detailv3::sherwood_v3_entry<std::pair<unsigned int, unsigned int>>>>::emplace_new_key<std::pair<unsigned int, unsigned int>>(signed char, ska::detailv3::sherwood_v3_entry<std::pair<unsigned int, unsigned int>>*, std::pair<unsigned int, unsigned int>&&)
emplace_new_key(int8_t distance_from_desired, EntryPointer current_entry, Key && key, Args &&... args)
    {
        using std::swap;
        if (num_slots_minus_one == 0 || distance_from_desired == max_lookups || num_elements + 1 > (num_slots_minus_one + 1) * static_cast<double>(_max_load_factor))
        {
            grow();
            return emplace(std::forward<Key>(key), std::forward<Args>(args)...);
        }
        else if (current_entry->is_empty())
        {
            current_entry->emplace(distance_from_desired, std::forward<Key>(key), std::forward<Args>(args)...);
            ++num_elements;
            return { { current_entry }, true };
        }
        value_type to_insert(std::forward<Key>(key), std::forward<Args>(args)...);
        swap(distance_from_desired, current_entry->distance_from_desired);
        swap(to_insert, current_entry->value);
        iterator result = { current_entry };
        for (++distance_from_desired, ++current_entry;; ++current_entry)
        {
            if (current_entry->is_empty())
            {
                current_entry->emplace(distance_from_desired, std::move(to_insert));
                ++num_elements;
                return { result, true };
            }
            else if (current_entry->distance_from_desired < distance_from_desired)
            {
                swap(distance_from_desired, current_entry->distance_from_desired);
                swap(to_insert, current_entry->value);
                ++distance_from_desired;
            }
            else
            {
                ++distance_from_desired;
                if (distance_from_desired == max_lookups)
                {
                    swap(to_insert, result.current->value);
                    grow();
                    return emplace(std::move(to_insert));
                }
            }
        }
    }

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rcx, %r14
movq %rdi, %rbx
movq 0x8(%rdi), %rcx
testq %rcx, %rcx
je 0x1810
cmpb %sil, 0x11(%rbx)
je 0x1810
movq %rdx, %rax
movq 0x18(%rbx), %rdx
incq %rdx
movq %rdx, %xmm0
movq 0x90a(%rip), %xmm1      # 0x2030
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x90e(%rip), %xmm2      # 0x2040
subpd %xmm2, %xmm0
movapd %xmm0, %xmm3
unpckhpd %xmm0, %xmm3            # xmm3 = xmm3[1],xmm0[1]
addsd %xmm0, %xmm3
incq %rcx
movq %rcx, %xmm0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
subpd %xmm2, %xmm0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
cvtss2sd 0x14(%rbx), %xmm2
addsd %xmm0, %xmm1
mulsd %xmm1, %xmm2
ucomisd %xmm2, %xmm3
ja 0x1810
movb (%rax), %dil
testb %dil, %dil
js 0x17da
movq (%r14), %r8
movq %r8, (%rsp)
movb %sil, (%rax)
movl 0x4(%rax), %edx
movl 0x8(%rax), %ecx
movl %r8d, 0x4(%rax)
shrq $0x20, %r8
movl %r8d, 0x8(%rax)
movq %rax, %rsi
incb %dil
movb 0x11(%rbx), %r9b
addq $0xc, %rsi
movl %edi, %r8d
movb (%rsi), %dil
testb %dil, %dil
js 0x17e6
cmpb %r8b, %dil
jl 0x17c1
incb %r8b
addq $0xc, %rsi
cmpb %r8b, %r9b
jne 0x17a6
jmp 0x1800
movb %r8b, (%rsi)
movl 0x4(%rsi), %r8d
movl 0x8(%rsi), %r9d
movl %edx, 0x4(%rsi)
movl %ecx, 0x8(%rsi)
movl %r9d, %ecx
movl %r8d, %edx
jmp 0x1798
movq (%r14), %rcx
movq %rcx, 0x4(%rax)
movb %sil, (%rax)
jmp 0x17f8
movl %edx, (%rsp)
movl %ecx, 0x4(%rsp)
movq (%rsp), %rcx
movq %rcx, 0x4(%rsi)
movb %r8b, (%rsi)
incq 0x18(%rbx)
movb $0x1, %dl
jmp 0x1823
movq 0x4(%rax), %rsi
movl %edx, 0x4(%rax)
movq %rsp, %r14
movq %rsi, (%r14)
movl %ecx, 0x8(%rax)
movq %rbx, %rdi
callq 0x182c
movq %rbx, %rdi
movq %r14, %rsi
callq 0x16a6
addq $0x8, %rsp
popq %rbx
popq %r14
retq
nop