MiDereferenceSubsectionProtos

VOID __stdcall MiDereferenceSubsectionProtos(_SUBSECTION *Subsection, UINT64 a2, _MI_PER_SESSION_PROTOS **a3){
  _MI_PER_SESSION_PROTOS *SessionProtosInSubsection; 
  _CONTROL_AREA **v6; 
  _MI_PER_SESSION_PROTOS *v7; 

  if( (Subsection->u.SubsectionFlags._bf_2 & 2) != 0 )
  {
    SessionProtosInSubsection = MiLocateSessionProtosInSubsection(Subsection, a2);
    v7 = SessionProtosInSubsection;
    if( SessionProtosInSubsection->u2.ReferenceCount-- == 1 )
    {
      MiUpdatePerSessionProto(*v6, Subsection, SessionProtosInSubsection, 0i64);
      v7->u2.ReferenceCount = Subsection->PtesInSubsection;
      v7->SessionProtoNode.Children[0] = (_RTL_BALANCED_NODE *)*a3;
      v7->Subsection = Subsection;
      *a3 = v7;
    }
  }
}

Referenced by:

MiCreatePerSessionProtos
MiDereferencePerSessionProtos