// File: attractivechaos[P]udb2/libcuckoo/./cuckoohash_map.hh
// Function: void cuckoohash_map<unsigned int, unsigned int, Hash32, std::equal_to<unsigned int>, std::allocator<std::pair<unsigned int const, unsigned int>>, 4ul>::parallel_exec<cuckoohash_map<unsigned int, unsigned int, Hash32, std::equal_to<unsigned int>, std::allocator<std::pair<unsigned int const, unsigned int>>, 4ul>::cuckoo_status cuckoohash_map<unsigned int, unsigned int, Hash32, std::equal_to<unsigned int>, std::allocator<std::pair<unsigned int const, unsigned int>>, 4ul>::cuckoo_fast_double<std::integral_constant<bool, false>, std::integral_constant<bool, true>>(unsigned long)::'lambda'(unsigned long, unsigned long, std::__exception_ptr::exception_ptr&)>(unsigned long, unsigned long, cuckoohash_map<unsigned int, unsigned int, Hash32, std::equal_to<unsigned int>, std::allocator<std::pair<unsigned int const, unsigned int>>, 4ul>::cuckoo_status cuckoohash_map<unsigned int, unsigned int, Hash32, std::equal_to<unsigned int>, std::allocator<std::pair<unsigned int const, unsigned int>>, 4ul>::cuckoo_fast_double<std::integral_constant<bool, false>, std::integral_constant<bool, true>>(unsigned long)::'lambda'(unsigned long, unsigned long, std::__exception_ptr::exception_ptr&))
void parallel_exec(size_type start, size_type end, F func) {
    static const size_type num_threads =
        std::max(std::thread::hardware_concurrency(), 1U);
    size_type work_per_thread = (end - start) / num_threads;
    std::vector<std::thread, rebind_alloc<std::thread>> threads(
        get_allocator());
    threads.reserve(num_threads);
    std::vector<std::exception_ptr, rebind_alloc<std::exception_ptr>> eptrs(
        num_threads, nullptr, get_allocator());
    for (size_type i = 0; i < num_threads - 1; ++i) {
      threads.emplace_back(func, start, start + work_per_thread,
                           std::ref(eptrs[i]));
      start += work_per_thread;
    }
    threads.emplace_back(func, start, end, std::ref(eptrs.back()));
    for (std::thread &t : threads) {
      t.join();
    }
    for (std::exception_ptr &eptr : eptrs) {
      if (eptr) {
        std::rethrow_exception(eptr);
      }
    }
  }

// Assembly:
subq $0x138, %rsp            # imm = 0x138
leaq 0x140(%rsp), %rax
movq %rax, 0x40(%rsp)
movq %rdi, 0x130(%rsp)
movq %rsi, 0x128(%rsp)
movq %rdx, 0x120(%rsp)
movq 0x130(%rsp), %rax
movq %rax, 0x48(%rsp)
cmpb $0x0, 0xd618(%rip)      # 0x16168
jne 0x8bb0
leaq 0xd60f(%rip), %rdi      # 0x16168
callq 0x2250
cmpl $0x0, %eax
je 0x8bb0
callq 0x21c0
movl %eax, 0x11c(%rsp)
movl $0x1, 0x118(%rsp)
leaq 0x11c(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0x9a40
movq %rax, 0x38(%rsp)
jmp 0x8b96
movq 0x38(%rsp), %rax
movl (%rax), %eax
movq %rax, 0xd5bc(%rip)      # 0x16160
leaq 0xd5bd(%rip), %rdi      # 0x16168
callq 0x2100
movq 0x48(%rsp), %rsi
movq 0x120(%rsp), %rax
movq 0x128(%rsp), %rcx
subq %rcx, %rax
movq 0xd591(%rip), %rcx      # 0x16160
xorl %edx, %edx
divq %rcx
movq %rax, 0x100(%rsp)
leaq 0xe6(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x3aa0
movq 0x28(%rsp), %rsi
leaq 0xe7(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x9a80
movq 0x20(%rsp), %rsi
leaq 0xe8(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0x9aa0
movq 0x20(%rsp), %rdi
callq 0x9ad0
movq 0x28(%rsp), %rdi
callq 0x2da0
movq 0x30(%rsp), %rdi
movq 0xd524(%rip), %rsi      # 0x16160
callq 0x9ae0
jmp 0x8c43
movq 0xd516(%rip), %rax      # 0x16160
movq %rax, 0x18(%rsp)
xorl %eax, %eax
movl %eax, %esi
leaq 0xc0(%rsp), %rdi
callq 0x9bf0
movq 0x48(%rsp), %rsi
leaq 0xbe(%rsp), %rdi
callq 0x3aa0
jmp 0x8c74
leaq 0xbf(%rsp), %rdi
movq %rdi, 0x10(%rsp)
leaq 0xbe(%rsp), %rsi
callq 0x9c10
movq 0x18(%rsp), %rsi
movq 0x10(%rsp), %rcx
leaq 0xc8(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x9c30
jmp 0x8caf
leaq 0xbf(%rsp), %rdi
callq 0x9cb0
leaq 0xbe(%rsp), %rdi
callq 0x2da0
leaq 0xc0(%rsp), %rdi
callq 0x9cc0
movq $0x0, 0xb0(%rsp)
movq 0xb0(%rsp), %rax
movq 0xd46f(%rip), %rcx      # 0x16160
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0x8e48
movq 0x128(%rsp), %rax
movq 0x100(%rsp), %rcx
addq %rcx, %rax
movq %rax, 0xa8(%rsp)
movq 0xb0(%rsp), %rsi
leaq 0xc8(%rsp), %rdi
callq 0x9dc0
movq %rax, %rdi
callq 0x9d90
movq 0x40(%rsp), %rsi
movq %rax, 0xa0(%rsp)
leaq 0xe8(%rsp), %rdi
leaq 0x128(%rsp), %rdx
leaq 0xa8(%rsp), %rcx
leaq 0xa0(%rsp), %r8
callq 0x9cf0
jmp 0x8d6a
movq 0x100(%rsp), %rax
addq 0x128(%rsp), %rax
movq %rax, 0x128(%rsp)
movq 0xb0(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb0(%rsp)
jmp 0x8ce2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x110(%rsp)
movl %eax, 0x10c(%rsp)
leaq 0xd3b2(%rip), %rdi      # 0x16168
callq 0x20f0
jmp 0x9001
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x110(%rsp)
movl %eax, 0x10c(%rsp)
jmp 0x8ff4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x110(%rsp)
movl %eax, 0x10c(%rsp)
jmp 0x8e1d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x110(%rsp)
movl %eax, 0x10c(%rsp)
leaq 0xbf(%rsp), %rdi
callq 0x9cb0
leaq 0xbe(%rsp), %rdi
callq 0x2da0
leaq 0xc0(%rsp), %rdi
callq 0x9cc0
jmp 0x8ff4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x110(%rsp)
movl %eax, 0x10c(%rsp)
jmp 0x8fe7
leaq 0xc8(%rsp), %rdi
callq 0x9e80
movq %rax, %rdi
callq 0x9d90
movq 0x40(%rsp), %rsi
movq %rax, 0x98(%rsp)
leaq 0xe8(%rsp), %rdi
leaq 0x128(%rsp), %rdx
leaq 0x120(%rsp), %rcx
leaq 0x98(%rsp), %r8
callq 0x9de0
jmp 0x8e91
leaq 0xe8(%rsp), %rax
movq %rax, 0x90(%rsp)
movq 0x90(%rsp), %rdi
callq 0x9ec0
movq %rax, 0x88(%rsp)
movq 0x90(%rsp), %rdi
callq 0x9ef0
movq %rax, 0x80(%rsp)
leaq 0x88(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x9f20
testb $0x1, %al
jne 0x8ee6
jmp 0x8f15
leaq 0x88(%rsp), %rdi
callq 0x9f60
movq %rax, 0x78(%rsp)
movq 0x78(%rsp), %rdi
callq 0x2220
jmp 0x8f04
jmp 0x8f06
leaq 0x88(%rsp), %rdi
callq 0x9f70
jmp 0x8ecb
leaq 0xc8(%rsp), %rax
movq %rax, 0x70(%rsp)
movq 0x70(%rsp), %rdi
callq 0x9f90
movq %rax, 0x68(%rsp)
movq 0x70(%rsp), %rdi
callq 0x9fc0
movq %rax, 0x60(%rsp)
leaq 0x68(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x9ff0
testb $0x1, %al
jne 0x8f55
jmp 0x8fc5
leaq 0x68(%rsp), %rdi
callq 0xa030
movq %rax, 0x58(%rsp)
movq 0x58(%rsp), %rdi
callq 0xa040
testb $0x1, %al
jne 0x8f74
jmp 0x8fb4
movq 0x58(%rsp), %rsi
leaq 0x50(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0xa060
movq 0x8(%rsp), %rdi
callq 0x2190
jmp 0x8f94
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x110(%rsp)
movl %eax, 0x10c(%rsp)
leaq 0x50(%rsp), %rdi
callq 0x9cc0
jmp 0x8fe7
jmp 0x8fb6
leaq 0x68(%rsp), %rdi
callq 0xa0a0
jmp 0x8f40
leaq 0xc8(%rsp), %rdi
callq 0xa0c0
leaq 0xe8(%rsp), %rdi
callq 0xa120
addq $0x138, %rsp            # imm = 0x138
retq
leaq 0xc8(%rsp), %rdi
callq 0xa0c0
leaq 0xe8(%rsp), %rdi
callq 0xa120
movq 0x110(%rsp), %rdi
callq 0x2240
nop