// File: /workspace/github_cpp_makefile_star2_O1/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 %rdi, 0x10(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, 0x2ab8(%rsp)
movq 0x2ac0(%rsp), %rax
cmpq $0x2aa, %rax            # imm = 0x2AA
je 0x3e65
leaq 0x1(%rax), %rdi
movq %rdi, 0x2ac0(%rsp)
shlq $0x4, %rax
movq %rdx, 0x18(%rsp,%rax)
movb $0x0, 0x22(%rsp,%rax)
movw $0x0, 0x20(%rsp,%rax)
movq 0x2ac0(%rsp), %rax
cmpq $0x2aa, %rax            # imm = 0x2AA
je 0x3e65
leaq 0x1(%rax), %rdx
movq %rdx, 0x2ac0(%rsp)
shlq $0x4, %rax
movq %rcx, 0x18(%rsp,%rax)
movb $0x0, 0x22(%rsp,%rax)
movw $0x1, 0x20(%rsp,%rax)
movq 0x2ab8(%rsp), %rax
movl $0xff0000, %edx         # imm = 0xFF0000
cmpq 0x2ac0(%rsp), %rax
jne 0x3cbe
xorl %r12d, %r12d
jmp 0x3e12
movq $-0x1, %rbp
movl %esi, %ecx
shlq %cl, %rbp
notq %rbp
leaq 0x18(%rsp), %rdi
movq %rsp, %r15
movq %rsi, %rbx
movq %rsi, 0x8(%rsp)
callq 0x3eca
movq %rax, %r12
movq %rdx, %r13
movl %r13d, %r14d
shrl $0x10, %r14d
movq %r15, %rdi
movq 0x10(%rsp), %r15
movq %r15, %rsi
movq %rbx, %rdx
movq %rax, %rcx
callq 0x3e84
leaq (%r12,%r12,4), %rax
shlq $0x3, %rax
addq 0x18(%r15), %rax
leal 0x1(%r14), %edx
movzbl %dl, %esi
shll $0x10, %esi
movl %esi, %edi
shrl $0x10, %edi
xorl %r8d, %r8d
movl %r13d, %ecx
leal (%r8,%r13), %r10d
andl $0x3, %r10d
movb 0x24(%rax,%r10), %r9b
testb %r9b, %r9b
je 0x3daa
cmpb $0x3, %r14b
jg 0x3dae
movq 0x2ac0(%rsp), %r11
cmpq $0x2aa, %r11            # imm = 0x2AA
je 0x3e27
cmpb $0x5, %dl
jge 0x3e46
movzbl 0x20(%rax,%r10), %r15d
leal (,%rcx,4), %ebx
movzwl %bx, %ebx
orl %esi, %ebx
orl %ebx, %r10d
movabsq $0x46a4a7935bd1e995, %rbx # imm = 0x46A4A7935BD1E995
imulq %rbx, %r15
addq %rbx, %r15
xorq %r12, %r15
andq %rbp, %r15
leaq 0x1(%r11), %rbx
movq %rbx, 0x2ac0(%rsp)
shlq $0x4, %r11
movq %r15, 0x18(%rsp,%r11)
movb %dil, 0x22(%rsp,%r11)
movw %r10w, 0x20(%rsp,%r11)
jmp 0x3dae
leal (%r10,%rcx,4), %ecx
testb %r9b, %r9b
je 0x3df9
incq %r8
cmpq $0x4, %r8
jne 0x3d26
movq (%rsp), %rax
testq %rax, %rax
je 0x3dcc
movb $0x0, (%rax)
movq 0x2ab8(%rsp), %rax
cmpq 0x2ac0(%rsp), %rax
movq 0x8(%rsp), %rbx
leaq 0x18(%rsp), %rdi
movq %rsp, %r15
jne 0x3cdd
xorl %r12d, %r12d
movl $0xff0000, %edx         # imm = 0xFF0000
jmp 0x3e12
movq (%rsp), %rax
testq %rax, %rax
je 0x3e05
movb $0x0, (%rax)
andl $0xff0000, %r13d        # imm = 0xFF0000
movzwl %cx, %edx
orq %r13, %rdx
movq %r12, %rax
addq $0x2ac8, %rsp           # imm = 0x2AC8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1db4(%rip), %rdi      # 0x5be2
leaq 0x1449(%rip), %rsi      # 0x527e
leaq 0x1db0(%rip), %rcx      # 0x5bec
movl $0x605, %edx            # imm = 0x605
callq 0x20f0
leaq 0x201d(%rip), %rdi      # 0x5e6a
leaq 0x142a(%rip), %rsi      # 0x527e
leaq 0x2024(%rip), %rcx      # 0x5e7f
movl $0x5b2, %edx            # imm = 0x5B2
callq 0x20f0
leaq 0x1ee8(%rip), %rdi      # 0x5d54
leaq 0x140b(%rip), %rsi      # 0x527e
leaq 0x1ee2(%rip), %rcx      # 0x5d5c
movl $0x5bc, %edx            # imm = 0x5BC
callq 0x20f0