// File: attractivechaos[P]udb2/phmap/./phmap.h
// Function: phmap::container_internal::raw_hash_set<phmap::container_internal::FlatHashMapPolicy<unsigned int, unsigned int>, Hash32, phmap::EqualTo<unsigned int>, std::allocator<std::pair<unsigned int const, unsigned int>>>::resize(unsigned long)
void resize(size_t new_capacity) {
        assert(IsValidCapacity(new_capacity));
        auto* old_ctrl = ctrl_;
        auto* old_slots = slots_;
        const size_t old_capacity = capacity_;
        capacity_ = new_capacity;
        initialize_slots();

        for (size_t i = 0; i != old_capacity; ++i) {
            if (IsFull(old_ctrl[i])) {
                size_t hash = PolicyTraits::apply(HashElement{hash_ref()},
                                                  PolicyTraits::element(old_slots + i));
                auto target = find_first_non_full(hash);
                size_t new_i = target.offset;
                set_ctrl(new_i, H2(hash));
                PolicyTraits::transfer(&alloc_ref(), slots_ + new_i, old_slots + i);
            }
        }
        if (old_capacity) {
            SanitizerUnpoisonMemoryRegion(old_slots,
                                          sizeof(slot_type) * old_capacity);
            auto layout = MakeLayout(old_capacity);
            Deallocate<Layout::Alignment()>(&alloc_ref(), old_ctrl,
                                            layout.AllocSize());
        }
    }

// Assembly:
subq $0x88, %rsp
movq %rdi, 0x80(%rsp)
movq %rsi, 0x78(%rsp)
movq 0x80(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x78(%rsp), %rdi
callq 0x1cb0
testb $0x1, %al
jne 0x36d1
jmp 0x36d3
jmp 0x36f2
leaq 0x2eeb(%rip), %rdi      # 0x65c5
leaq 0x29d0(%rip), %rsi      # 0x60b1
movl $0x72e, %edx            # imm = 0x72E
leaq 0x2ef6(%rip), %rcx      # 0x65e3
callq 0x10a0
movq 0x18(%rsp), %rdi
movq (%rdi), %rax
movq %rax, 0x70(%rsp)
movq 0x8(%rdi), %rax
movq %rax, 0x68(%rsp)
movq 0x18(%rdi), %rax
movq %rax, 0x60(%rsp)
movq 0x78(%rsp), %rax
movq %rax, 0x18(%rdi)
callq 0x3c60
movq $0x0, 0x58(%rsp)
movq 0x58(%rsp), %rax
cmpq 0x60(%rsp), %rax
je 0x3821
movq 0x70(%rsp), %rax
movq 0x58(%rsp), %rcx
movsbl (%rax,%rcx), %edi
callq 0x1970
testb $0x1, %al
jne 0x3754
jmp 0x380c
movq 0x18(%rsp), %rdi
callq 0x27b0
movq %rax, 0x48(%rsp)
movq 0x68(%rsp), %rdi
movq 0x58(%rsp), %rax
shlq $0x3, %rax
addq %rax, %rdi
callq 0x2b30
movq %rax, %rsi
leaq 0x48(%rsp), %rdi
callq 0x3d50
movq 0x18(%rsp), %rdi
movq %rax, 0x50(%rsp)
movq 0x50(%rsp), %rsi
callq 0x3230
movq %rax, 0x38(%rsp)
movq %rdx, 0x40(%rsp)
movq 0x38(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x50(%rsp), %rdi
callq 0x2a60
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdi
movsbl %al, %edx
callq 0x3410
movq 0x18(%rsp), %rdi
callq 0x19c0
movq %rax, %rdi
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rsi
movq 0x30(%rsp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq 0x68(%rsp), %rdx
movq 0x58(%rsp), %rax
shlq $0x3, %rax
addq %rax, %rdx
callq 0x3d80
jmp 0x380e
movq 0x58(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x58(%rsp)
jmp 0x3728
cmpq $0x0, 0x60(%rsp)
je 0x3883
movq 0x68(%rsp), %rdi
movq 0x60(%rsp), %rsi
shlq $0x3, %rsi
callq 0x1a40
movq 0x60(%rsp), %rdi
callq 0x19e0
movq 0x18(%rsp), %rdi
movq %rax, 0x20(%rsp)
movq %rdx, 0x28(%rsp)
callq 0x19c0
movq %rax, (%rsp)
movq 0x70(%rsp), %rax
movq %rax, 0x8(%rsp)
leaq 0x20(%rsp), %rdi
callq 0x1b10
movq (%rsp), %rdi
movq 0x8(%rsp), %rsi
movq %rax, %rdx
callq 0x1a50
addq $0x88, %rsp
retq
nopl (%rax,%rax)