// File: /workspace/github_cpp_makefile_star2_O1/nurseiit[P]cpp-server/./include/asio/detail/reactive_socket_service_base.hpp
// Function: void asio::detail::reactive_socket_service_base::async_send<asio::const_buffers_1, asio::detail::write_op<asio::basic_stream_socket<asio::ip::tcp, asio::executor>, asio::const_buffers_1, asio::const_buffer const*, asio::detail::transfer_all_t, Session::read_next_line(std::shared_ptr<Session>)::'lambda'(std::error_code const&, unsigned long)::operator()(std::error_code const&, unsigned long) const::'lambda'(std::error_code const&, unsigned long)>, asio::detail::io_object_executor<asio::executor>>(asio::detail::reactive_socket_service_base::base_implementation_type&, asio::const_buffers_1 const&, int, asio::detail::write_op<asio::basic_stream_socket<asio::ip::tcp, asio::executor>, asio::const_buffers_1, asio::const_buffer const*, asio::detail::transfer_all_t, Session::read_next_line(std::shared_ptr<Session>)::'lambda'(std::error_code const&, unsigned long)::operator()(std::error_code const&, unsigned long) const::'lambda'(std::error_code const&, unsigned long)>&, asio::detail::io_object_executor<asio::executor> const&)
void async_send(base_implementation_type& impl,
      const ConstBufferSequence& buffers, socket_base::message_flags flags,
      Handler& handler, const IoExecutor& io_ex)
  {
    bool is_continuation =
      asio_handler_cont_helpers::is_continuation(handler);

    // Allocate and construct an operation to wrap the handler.
    typedef reactive_socket_send_op<
        ConstBufferSequence, Handler, IoExecutor> op;
    typename op::ptr p = { asio::detail::addressof(handler),
      op::ptr::allocate(handler), 0 };
    p.p = new (p.v) op(impl.socket_, impl.state_,
        buffers, flags, handler, io_ex);

    ASIO_HANDLER_CREATION((reactor_.context(), *p.p, "socket",
          &impl, impl.socket_, "async_send"));

    start_op(impl, reactor::write_op, p.p, is_continuation, true,
        ((impl.state_ & socket_ops::stream_oriented)
          && buffer_sequence_adapter<asio::const_buffer,
            ConstBufferSequence>::all_empty(buffers)));
    p.v = p.p = 0;
  }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %r9, %r14
movq %r8, %r13
movl %ecx, %ebp
movq %rdx, %r15
movq %rsi, %rbx
movq %rdi, 0x30(%rsp)
movl 0x20(%r8), %eax
movl %eax, 0x14(%rsp)
movq %r8, 0x18(%rsp)
movq %fs:-0x8, %rax
testq %rax, %rax
je 0xecce
movq 0x8(%rax), %rdi
jmp 0xecd0
xorl %edi, %edi
movl $0xb0, %esi
callq 0xa188
movq %rax, %r12
movq %rax, 0x20(%rsp)
movq $0x0, 0x28(%rsp)
movl (%rbx), %esi
movzbl 0x4(%rbx), %edx
movq %r14, (%rsp)
movq %rax, %rdi
movq %r15, %rcx
movl %ebp, %r8d
movq %r13, %r9
callq 0xed8c
xorl %r8d, %r8d
cmpl $0x0, 0x14(%rsp)
sete %r8b
movq %r12, 0x28(%rsp)
movb 0x4(%rbx), %al
shrb $0x4, %al
cmpq $0x0, 0x8(%r15)
sete %cl
andb %al, %cl
movzbl %cl, %eax
movl %eax, (%rsp)
movq 0x30(%rsp), %rdi
movq %rbx, %rsi
movl $0x1, %edx
movq %r12, %rcx
movl $0x1, %r9d
callq 0xbca2
leaq 0x20(%rsp), %rax
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
leaq 0x18(%rsp), %rdi
callq 0xf090
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xed83
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0xf090
movq %rbx, %rdi
callq 0x55d0
movq %rax, %rdi
callq 0x6e80
nop