// File: 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
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x28(%rbp), %rdi
callq 0x15a40
movb %al, -0x31(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x28(%rbp), %rdi
callq 0x15a60
movq %rax, -0x48(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x48(%rbp), %rdi
movq %rdi, -0x68(%rbp)
movq -0x10(%rbp), %rax
movl (%rax), %esi
movzbl 0x4(%rax), %edx
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %r8d
movq -0x28(%rbp), %r9
movq -0x30(%rbp), %r10
movq %rsp, %rax
movq %r10, (%rax)
callq 0x15ab0
jmp 0x15932
movq -0x68(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x90(%rbp)
movl -0x1c(%rbp), %edx
andl $0x1, %edx
xorl %eax, %eax
movl $0x2, %ecx
cmpl $0x0, %edx
cmovnel %ecx, %eax
movl %eax, -0x84(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x80(%rbp)
movb -0x31(%rbp), %al
movb %al, -0x73(%rbp)
movl -0x1c(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
sete %al
movb %al, -0x72(%rbp)
movq -0x10(%rbp), %rax
movzbl 0x4(%rax), %ecx
andl $0x10, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x71(%rbp)
je 0x159ac
movq -0x18(%rbp), %rdi
callq 0x15c50
movb %al, -0x91(%rbp)
jmp 0x159a1
movb -0x91(%rbp), %al
movb %al, -0x71(%rbp)
jmp 0x159ac
movq -0x80(%rbp), %rcx
movl -0x84(%rbp), %edx
movq -0x90(%rbp), %rsi
movq -0x70(%rbp), %rdi
movb -0x72(%rbp), %al
movb -0x73(%rbp), %r8b
movb -0x71(%rbp), %r9b
movzbl %r9b, %r10d
andl $0x1, %r10d
movq %rsp, %r9
movl %r10d, (%r9)
movzbl %r8b, %r8d
andl $0x1, %r8d
movzbl %al, %r9d
andl $0x1, %r9d
callq 0x15b60
jmp 0x159f1
movq $0x0, -0x40(%rbp)
movq $0x0, -0x48(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x15c80
addq $0xa0, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x15c80
movq -0x58(%rbp), %rdi
callq 0x6700
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)