// File: nurseiit[P]cpp-server/./include/asio/detail/reactive_socket_accept_op.hpp
// Function: asio::detail::reactive_socket_accept_op<asio::basic_socket<asio::ip::tcp, asio::executor>, asio::ip::tcp, accept_and_run(asio::basic_socket_acceptor<asio::ip::tcp, asio::executor>&, asio::io_context&)::$_0, asio::detail::io_object_executor<asio::executor>>::do_complete(void*, asio::detail::scheduler_operation*, std::error_code const&, unsigned long)
static void do_complete(void* owner, operation* base,
      const asio::error_code& /*ec*/,
      std::size_t /*bytes_transferred*/)
  {
    // Take ownership of the handler object.
    reactive_socket_accept_op* o(static_cast<reactive_socket_accept_op*>(base));
    ptr p = { asio::detail::addressof(o->handler_), o, o };
    handler_work<Handler, IoExecutor> w(o->handler_, o->io_executor_);

    // On success, assign new connection to peer socket object.
    if (owner)
      o->do_assign();

    ASIO_HANDLER_COMPLETION((*o));

    // Make a copy of the handler so that the memory can be deallocated before
    // the upcall is made. Even if we're not about to make an upcall, a
    // sub-object of the handler may be the true owner of the memory associated
    // with the handler. Consequently, a local copy of the handler is required
    // to ensure that any owning sub-object remains valid until after we have
    // deallocated the memory here.
    detail::binder1<Handler, asio::error_code>
      handler(o->handler_, o->ec_);
    p.h = asio::detail::addressof(handler.handler_);
    p.reset();

    // Make the upcall if required.
    if (owner)
    {
      fenced_block b(fenced_block::half);
      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_));
      w.complete(handler, handler.handler_);
      ASIO_HANDLER_INVOCATION_END;
    }
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
addq $0x68, %rax
movq %rax, -0x40(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rsi
addq $0x68, %rsi
movq -0x28(%rbp), %rdx
addq $0x88, %rdx
leaq -0x60(%rbp), %rdi
callq 0x7590
cmpq $0x0, -0x8(%rbp)
je 0x7410
movq -0x28(%rbp), %rdi
callq 0x12df0
jmp 0x73fd
jmp 0x7410
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x74d8
movq -0x28(%rbp), %rdx
movq %rdx, %rsi
addq $0x68, %rsi
addq $0x18, %rdx
leaq -0xa0(%rbp), %rdi
callq 0x75e0
jmp 0x742d
leaq -0xa0(%rbp), %rax
movq %rax, -0x40(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x7630
jmp 0x7443
cmpq $0x0, -0x8(%rbp)
je 0x74a5
leaq -0xa1(%rbp), %rdi
xorl %esi, %esi
callq 0x11860
jmp 0x745a
leaq -0x60(%rbp), %rdi
leaq -0xa0(%rbp), %rdx
movq %rdx, %rsi
callq 0x76d0
jmp 0x746f
leaq -0xa1(%rbp), %rdi
callq 0x11240
jmp 0x74a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x74cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xa1(%rbp), %rdi
callq 0x11240
jmp 0x74cc
leaq -0xa0(%rbp), %rdi
callq 0x7720
leaq -0x60(%rbp), %rdi
callq 0x7740
leaq -0x40(%rbp), %rdi
callq 0x7230
addq $0xb0, %rsp
popq %rbp
retq
leaq -0xa0(%rbp), %rdi
callq 0x7720
leaq -0x60(%rbp), %rdi
callq 0x7740
leaq -0x40(%rbp), %rdi
callq 0x7230
movq -0x68(%rbp), %rdi
callq 0x6700
nopw %cs:(%rax,%rax)