// File: /workspace/github_cpp_makefile_star2_O3/attractivechaos[P]udb2/libcuckoo/./cuckoohash_map.hh
// Function: cuckoohash_map<unsigned int, unsigned int, Hash32, std::equal_to<unsigned int>, std::allocator<std::pair<unsigned int const, unsigned int>>, 4ul>::b_slot cuckoohash_map<unsigned int, unsigned int, Hash32, std::equal_to<unsigned int>, std::allocator<std::pair<unsigned int const, unsigned int>>, 4ul>::slot_search<std::integral_constant<bool, false>>(unsigned long, unsigned long, unsigned long)
b_slot slot_search(const size_type hp, const size_type i1,
                     const size_type i2) {
    b_queue q;
    // The initial pathcode informs cuckoopath_search which bucket the path
    // starts on
    q.enqueue(b_slot(i1, 0, 0));
    q.enqueue(b_slot(i2, 1, 0));
    while (!q.empty()) {
      b_slot x = q.dequeue();
      auto lock_manager = lock_one(hp, x.bucket, TABLE_MODE());
      bucket &b = buckets_[x.bucket];
      // Picks a (sort-of) random slot to start from
      size_type starting_slot = x.pathcode % slot_per_bucket();
      for (size_type i = 0; i < slot_per_bucket(); ++i) {
        size_type slot = (starting_slot + i) % slot_per_bucket();
        if (!b.occupied(slot)) {
          // We can terminate the search here
          x.pathcode = x.pathcode * slot_per_bucket() + slot;
          return x;
        }

        // If x has less than the maximum number of path components,
        // create a new b_slot item, that represents the bucket we would
        // have come from if we kicked out the item at this slot.
        const partial_t partial = b.partial(slot);
        if (x.depth < MAX_BFS_PATH_LEN - 1) {
          assert(!q.full());
          b_slot y(alt_index(hp, partial, x.bucket),
                   x.pathcode * slot_per_bucket() + slot, x.depth + 1);
          q.enqueue(y);
        }
      }
    }
    // We didn't find a short-enough cuckoo path, so the search terminated.
    // Return a failure value.
    return b_slot(0, 0, -1);
  }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2ac8, %rsp           # imm = 0x2AC8
movq %rsi, %r15
movq %rdi, %rsi
leaq 0x18(%rsp), %rdi
movq $0x0, 0x2aa0(%rdi)
movq %rdx, (%rdi)
xorl %eax, %eax
movb %al, 0xa(%rdi)
movw $0x0, 0x8(%rdi)
movq $0x2, 0x2aa8(%rdi)
movq %rcx, 0x10(%rdi)
movq $-0x1, %rbx
movl %r15d, %ecx
shlq %cl, %rbx
movb %al, 0x1a(%rdi)
movw $0x1, 0x18(%rdi)
notq %rbx
movq %rsp, %rbp
movq %r15, 0x8(%rsp)
movq %rsi, 0x10(%rsp)
callq 0x3df6
movq %rax, %r13
movq %rdx, %r12
movl %r12d, %r14d
shrl $0x10, %r14d
movq %rbp, %rdi
movq 0x10(%rsp), %rbp
movq %rbp, %rsi
movq %r15, %rdx
movq %rax, %rcx
callq 0x3db0
leaq (,%r13,4), %rcx
addq %r13, %rcx
shlq $0x3, %rcx
addq 0x18(%rbp), %rcx
leal (,%r12,4), %eax
movzwl %ax, %eax
movl %r12d, %edx
addl $0x10000, %edx          # imm = 0x10000
andl $0xff0000, %edx         # imm = 0xFF0000
orl %eax, %edx
movl %edx, %esi
shrl $0x10, %esi
xorl %r8d, %r8d
movabsq $0x46a4a7935bd1e995, %r15 # imm = 0x46A4A7935BD1E995
leal (%r12,%r8), %edi
andl $0x3, %edi
cmpb $0x1, 0x24(%rcx,%rdi)
jne 0x3d60
cmpb $0x3, %r14b
jg 0x3d1d
movq 0x2ac0(%rsp), %r9
cmpq $0x2aa, %r9             # imm = 0x2AA
je 0x3d91
movzbl 0x20(%rcx,%rdi), %r10d
imulq %r15, %r10
addq %r15, %r10
xorq %r13, %r10
andq %rbx, %r10
orl %edx, %edi
leaq 0x1(%r9), %r11
movq %r11, 0x2ac0(%rsp)
shlq $0x4, %r9
movq %r10, 0x18(%rsp,%r9)
movb %sil, 0x22(%rsp,%r9)
movw %di, 0x20(%rsp,%r9)
incq %r8
cmpq $0x4, %r8
jne 0x3cbb
movq (%rsp), %rax
testq %rax, %rax
je 0x3d32
movb $0x0, (%rax)
movq 0x2ab8(%rsp), %rax
cmpq 0x2ac0(%rsp), %rax
movq 0x8(%rsp), %r15
leaq 0x18(%rsp), %rdi
movq %rsp, %rbp
jne 0x3c52
movl $0xff0000, %r12d        # imm = 0xFF0000
xorl %r13d, %r13d
jmp 0x3d79
movq (%rsp), %rcx
testq %rcx, %rcx
je 0x3d6c
movb $0x0, (%rcx)
andl $0xff0000, %r12d        # imm = 0xFF0000
orq %rax, %r12
orq %rdi, %r12
movq %r13, %rax
movq %r12, %rdx
addq $0x2ac8, %rsp           # imm = 0x2AC8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1e4a(%rip), %rdi      # 0x5be2
leaq 0x14df(%rip), %rsi      # 0x527e
leaq 0x1e46(%rip), %rcx      # 0x5bec
movl $0x605, %edx            # imm = 0x605
callq 0x20f0