// File: attractivechaos[P]udb2/sparsehash/./sparsehash/internal/densehashtable.h
// Function: std::pair<unsigned int const, unsigned int>& google::dense_hashtable<std::pair<unsigned int const, unsigned int>, unsigned int, Hash32, google::dense_hash_map<unsigned int, unsigned int, Hash32, std::equal_to<unsigned int>, google::libc_allocator_with_realloc<std::pair<unsigned int const, unsigned int>>>::SelectKey, google::dense_hash_map<unsigned int, unsigned int, Hash32, std::equal_to<unsigned int>, google::libc_allocator_with_realloc<std::pair<unsigned int const, unsigned int>>>::SetKey, std::equal_to<unsigned int>, google::libc_allocator_with_realloc<std::pair<unsigned int const, unsigned int>>>::find_or_insert<google::dense_hash_map<unsigned int, unsigned int, Hash32, std::equal_to<unsigned int>, google::libc_allocator_with_realloc<std::pair<unsigned int const, unsigned int>>>::DefaultValue>(unsigned int const&)
value_type& find_or_insert(const key_type& key) {
    // First, double-check we're not inserting emptykey or delkey
    assert((!settings.use_empty() || !equals(key, get_key(val_info.emptyval)))
           && "Inserting the empty key");
    assert((!settings.use_deleted() || !equals(key, key_info.delkey))
           && "Inserting the deleted key");
    const std::pair<size_type,size_type> pos = find_position(key);
    DefaultValue default_value;
    if ( pos.first != ILLEGAL_BUCKET) {  // object was already there
      return table[pos.first];
    } else if (resize_delta(1)) {        // needed to rehash to make room
      // Since we resized, we can't use pos, so recalculate where to insert.
      return *insert_noresize(default_value(key)).first;
    } else {                             // no need to rehash, insert right here
      return *insert_at(default_value(key), pos.second);
    }
  }

// Assembly:
subq $0x98, %rsp
movq %rdi, 0x88(%rsp)
movq %rsi, 0x80(%rsp)
movq 0x88(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0x2350
testb $0x1, %al
jne 0x359f
jmp 0x35dc
movq 0x18(%rsp), %rdi
movq 0x80(%rsp), %rax
movq %rax, 0x8(%rsp)
movq %rdi, %rsi
addq $0x40, %rsi
callq 0x23a0
movq 0x18(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq %rax, %rdx
callq 0x2370
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0x17(%rsp)
jne 0x35e4
movb $0x1, %al
movb %al, 0x17(%rsp)
jmp 0x35e4
movb 0x17(%rsp), %al
testb $0x1, %al
jne 0x35ee
jmp 0x35f0
jmp 0x360f
leaq 0x3f4c(%rip), %rdi      # 0x7543
leaq 0x1b1a(%rip), %rsi      # 0x5118
movl $0x3df, %edx            # imm = 0x3DF
leaq 0x3f9a(%rip), %rcx      # 0x75a4
callq 0x1090
movq 0x18(%rsp), %rdi
callq 0x2360
testb $0x1, %al
jne 0x361f
jmp 0x3645
movq 0x18(%rsp), %rdi
movq 0x80(%rsp), %rsi
movq %rdi, %rdx
addq $0x20, %rdx
callq 0x2370
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0x7(%rsp)
jne 0x364d
movb $0x1, %al
movb %al, 0x7(%rsp)
jmp 0x364d
movb 0x7(%rsp), %al
testb $0x1, %al
jne 0x3657
jmp 0x3659
jmp 0x3678
leaq 0x42b9(%rip), %rdi      # 0x7919
leaq 0x1ab1(%rip), %rsi      # 0x5118
movl $0x3e1, %edx            # imm = 0x3E1
leaq 0x3f31(%rip), %rcx      # 0x75a4
callq 0x1090
movq 0x18(%rsp), %rdi
movq 0x80(%rsp), %rsi
callq 0x3770
movq %rax, 0x70(%rsp)
movq %rdx, 0x78(%rsp)
cmpq $-0x1, 0x70(%rsp)
je 0x36be
movq 0x18(%rsp), %rax
movq 0x48(%rax), %rax
movq 0x70(%rsp), %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, 0x90(%rsp)
jmp 0x3754
movq 0x18(%rsp), %rdi
movl $0x1, %esi
callq 0x3930
testb $0x1, %al
jne 0x36d3
jmp 0x3712
movq 0x80(%rsp), %rsi
leaq 0x6f(%rsp), %rdi
callq 0x3e10
movq 0x18(%rsp), %rsi
movq %rax, 0x40(%rsp)
leaq 0x48(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x3c20
leaq 0x48(%rsp), %rdi
callq 0x3e60
movq %rax, 0x90(%rsp)
jmp 0x3754
movq 0x80(%rsp), %rsi
leaq 0x6f(%rsp), %rdi
callq 0x3e10
movq 0x18(%rsp), %rsi
movq %rax, 0x20(%rsp)
movq 0x78(%rsp), %rcx
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rdx
callq 0x3e70
leaq 0x28(%rsp), %rdi
callq 0x3e60
movq %rax, 0x90(%rsp)
movq 0x90(%rsp), %rax
addq $0x98, %rsp
retq
nopw %cs:(%rax,%rax)
nop