// File: /workspace/github_cpp_makefile_star2_O3/nurseiit[P]cpp-server/./include/asio/detail/reactive_socket_service_base.hpp
// Function: void asio::detail::reactive_socket_service_base::async_receive<asio::mutable_buffers_1, asio::detail::read_until_delim_op_v1<asio::basic_stream_socket<asio::ip::tcp, asio::executor>, asio::basic_streambuf_ref<std::allocator<char>>, Session::read_first_line(std::shared_ptr<Session>)::'lambda'(std::error_code const&, unsigned long)>, asio::detail::io_object_executor<asio::executor>>(asio::detail::reactive_socket_service_base::base_implementation_type&, asio::mutable_buffers_1 const&, int, asio::detail::read_until_delim_op_v1<asio::basic_stream_socket<asio::ip::tcp, asio::executor>, asio::basic_streambuf_ref<std::allocator<char>>, Session::read_first_line(std::shared_ptr<Session>)::'lambda'(std::error_code const&, unsigned long)>&, asio::detail::io_object_executor<asio::executor> const&)
void async_receive(base_implementation_type& impl,
      const MutableBufferSequence& 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_recv_op<
        MutableBufferSequence, 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_receive"));

    start_op(impl,
        (flags & socket_base::message_out_of_band)
          ? reactor::except_op : reactor::read_op,
        p.p, is_continuation,
        (flags & socket_base::message_out_of_band) == 0,
        ((impl.state_ & socket_ops::stream_oriented)
          && buffer_sequence_adapter<asio::mutable_buffer,
            MutableBufferSequence>::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, %rbp
movl %ecx, %r15d
movq %rdx, %r12
movq %rsi, %rbx
movq %rdi, 0x30(%rsp)
movl 0x14(%r8), %eax
movl %eax, 0x14(%rsp)
movq %r8, 0x18(%rsp)
movq %fs:-0x8, %rax
testq %rax, %rax
je 0xb99f
movq 0x8(%rax), %rdi
jmp 0xb9a1
xorl %edi, %edi
movl $0x98, %esi
callq 0xa076
movq %rax, %r13
movq %rax, 0x20(%rsp)
movq $0x0, 0x28(%rsp)
movl (%rbx), %esi
movzbl 0x4(%rbx), %edx
movq %r14, (%rsp)
movq %rax, %rdi
movq %r12, %rcx
movl %r15d, %r8d
movq %rbp, %r9
callq 0xba64
xorl %r8d, %r8d
cmpl $0x0, 0x14(%rsp)
sete %r8b
movq %r13, 0x28(%rsp)
andl $0x1, %r15d
xorl %r9d, %r9d
testl %r15d, %r15d
sete %r9b
movb 0x4(%rbx), %al
shrb $0x4, %al
cmpq $0x0, 0x8(%r12)
leal (%r15,%r15), %edx
sete %cl
andb %al, %cl
movzbl %cl, %eax
movl %eax, (%rsp)
movq 0x30(%rsp), %rdi
movq %rbx, %rsi
movq %r13, %rcx
callq 0xbb5c
leaq 0x20(%rsp), %rax
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
leaq 0x18(%rsp), %rdi
callq 0xbe12
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xba5c
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0xbe12
movq %rbx, %rdi
callq 0x55d0
movq %rax, %rdi
callq 0x6e5b