// File: /workspace/github_cpp_makefile_star2_O3/attractivechaos[P]udb2/sparsehash/./sparsehash/internal/sparsehashtable.h
// Function: google::sparse_hashtable<std::pair<unsigned int const, unsigned int>, unsigned int, Hash32, google::sparse_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::sparse_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>>>::move_from(google::sparse_hashtable<std::pair<unsigned int const, unsigned int>, unsigned int, Hash32, google::sparse_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::sparse_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>>>::MoveDontCopyT, google::sparse_hashtable<std::pair<unsigned int const, unsigned int>, unsigned int, Hash32, google::sparse_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::sparse_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>>>&, unsigned long)
void move_from(MoveDontCopyT mover, sparse_hashtable &ht,
                 size_type min_buckets_wanted) {
    clear();            // clear table, set num_deleted to 0

    // If we need to change the size of our table, do it now
    size_type resize_to;
    if ( mover == MoveDontGrow )
      resize_to = ht.bucket_count();         // keep same size as old ht
    else                                     // MoveDontCopy
      resize_to = settings.min_buckets(ht.size(), min_buckets_wanted);
    if ( resize_to > bucket_count() ) {      // we don't have enough buckets
      table.resize(resize_to);               // sets the number of buckets
      settings.reset_thresholds(bucket_count());
    }

    // We use a normal iterator to get non-deleted bcks from ht
    // We could use insert() here, but since we know there are
    // no duplicates and no deleted items, we can be more efficient
    assert( (bucket_count() & (bucket_count()-1)) == 0);      // a power of two
    // THIS IS THE MAJOR LINE THAT DIFFERS FROM COPY_FROM():
    for ( destructive_iterator it = ht.destructive_begin();
          it != ht.destructive_end(); ++it ) {
      size_type num_probes = 0;              // how many times we've probed
      size_type bucknum;
      for ( bucknum = hash(get_key(*it)) & (bucket_count()-1);  // h % buck_cnt
            table.test(bucknum);                          // not empty
            bucknum = (bucknum + JUMP_(key, num_probes)) & (bucket_count()-1) ) {
        ++num_probes;
        assert(num_probes < bucket_count()
               && "Hashtable is full: an error in key_equal<> or hash<>");
      }
      table.set(bucknum, *it);               // copies the value to here
    }
    settings.inc_num_ht_copies();
  }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x98, %rsp
movq %rcx, %r15
movq %rdx, %r14
movl %esi, %ebp
movq %rdi, %rbx
callq 0x25b2
cmpl $0x1, %ebp
jne 0x23bc
movq 0x48(%r14), %rax
jmp 0x23cf
movq 0x50(%r14), %rsi
subq 0x28(%r14), %rsi
movq %rbx, %rdi
movq %r15, %rdx
callq 0x190c
movq 0x48(%rbx), %rcx
cmpq %rcx, %rax
jbe 0x2466
leaq 0x30(%rbx), %rdi
movq %rax, %rsi
callq 0x2650
movq 0x48(%rbx), %rcx
testq %rcx, %rcx
js 0x23f8
cvtsi2ss %rcx, %xmm0
jmp 0x240f
movq %rcx, %rax
shrq %rax
movl %ecx, %edx
andl $0x1, %edx
orq %rax, %rdx
cvtsi2ss %rdx, %xmm0
addss %xmm0, %xmm0
movss 0x10(%rbx), %xmm1
mulss %xmm0, %xmm1
cvttss2si %xmm1, %rax
movq %rax, %rdx
sarq $0x3f, %rdx
movss 0x1c04(%rip), %xmm2     # 0x4030
subss %xmm2, %xmm1
cvttss2si %xmm1, %rsi
andq %rdx, %rsi
orq %rax, %rsi
movq %rsi, (%rbx)
mulss 0x14(%rbx), %xmm0
cvttss2si %xmm0, %rax
movq %rax, %rdx
sarq $0x3f, %rdx
subss %xmm2, %xmm0
cvttss2si %xmm0, %rsi
andq %rdx, %rsi
orq %rax, %rsi
movq %rsi, 0x8(%rbx)
movb $0x0, 0x18(%rbx)
leaq -0x1(%rcx), %rax
testq %rax, %rcx
jne 0x2593
leaq 0x50(%rsp), %rdi
movq %r14, %rsi
callq 0x2752
leaq 0x30(%rbx), %r12
xorl %r15d, %r15d
movq 0x30(%r14), %rax
movq 0x38(%r14), %rcx
movq %r14, 0x8(%rsp)
movq %rax, 0x10(%rsp)
movq %rcx, 0x18(%rsp)
movq %rcx, 0x20(%rsp)
movq %r15, 0x28(%rsp)
movq %rax, 0x30(%rsp)
movq %rcx, 0x38(%rsp)
movq %rcx, 0x40(%rsp)
movq %r15, 0x48(%rsp)
leaq 0x8(%rsp), %rdi
callq 0x2be2
movq 0x58(%rsp), %rax
cmpq 0x10(%rsp), %rax
jne 0x24ea
movq 0x60(%rsp), %rax
cmpq 0x18(%rsp), %rax
jne 0x24ea
movq 0x68(%rsp), %rcx
cmpq 0x20(%rsp), %rcx
je 0x254e
movq 0x70(%rsp), %rax
movl 0x48(%rbx), %ebp
decl %ebp
andl (%rax), %ebp
movq %r12, %rdi
movq %rbp, %rsi
callq 0x27f0
testb %al, %al
je 0x252f
movl $0x1, %r13d
movq 0x48(%rbx), %rax
cmpq %rax, %r13
jae 0x2574
addq %r13, %rbp
decq %rax
andq %rax, %rbp
movq %r12, %rdi
movq %rbp, %rsi
callq 0x27f0
incq %r13
testb %al, %al
jne 0x250b
movq 0x70(%rsp), %rdx
movq %r12, %rdi
movq %rbp, %rsi
callq 0x284a
leaq 0x50(%rsp), %rdi
callq 0x28c8
jmp 0x2487
cmpq %rax, %rcx
je 0x255f
movq 0x70(%rsp), %rax
cmpq 0x28(%rsp), %rax
jne 0x24ef
incl 0x1c(%rbx)
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x2222(%rip), %rdi      # 0x479d
leaq 0x1b87(%rip), %rsi      # 0x4109
leaq 0x1ec3(%rip), %rcx      # 0x444c
movl $0x2d4, %edx            # imm = 0x2D4
callq 0x10a0
leaq 0x1e87(%rip), %rdi      # 0x4421
leaq 0x1b68(%rip), %rsi      # 0x4109
leaq 0x1ea4(%rip), %rcx      # 0x444c
movl $0x2c9, %edx            # imm = 0x2C9
callq 0x10a0