MiDeleteSessionDriverProtos

__int64 __fastcall MiDeleteSessionDriverProtos(__int64 *a1){
  __int64 v1; 
  __int64 *i; 
  __int64 SubsectionDriverProtos; 
  __int64 result; 
  v1 = *a1;
  for( i = a1 + 16; i; i = (__int64 *)i[2] )
  {
    if( (*((_BYTE *)i + 34) & 2) == 0 )
    {
      SubsectionDriverProtos = MiGetSubsectionDriverProtos(i);
      if( SubsectionDriverProtos )
      {
        i[3] = 0i64;
        *(_QWORD *)(SubsectionDriverProtos + 64) = i;
        MiDeletePerSessionProtos((_MI_PER_SESSION_PROTOS *)SubsectionDriverProtos);
      }
    }
  }
  result = 63487i64;
  *(_WORD *)(v1 + 12) &= ~0x800u;
  return result;
}

Referenced by:

MiCreateSessionDriverProtos
MiMapSystemImage
MiUnloadSystemImage