MiCompactServiceTable

_VERIFIER_TRIAGE_RULE *__fastcall MiCompactServiceTable(
        _VERIFIER_TRIAGE_RULE *Rules,
        UINT64 RulesSize,
        UINT64 CrashCode){
  VOID *ExportedRoutineByName; 
  _DWORD *v5; 
  VOID *v6; 
  VOID *v7; 
  _DWORD *v8; 
  VOID *v9; 
  unsigned int v10; 
  unsigned int NumberOfBytes; 

  ExportedRoutineByName = RtlFindExportedRoutineByName(*(VOID **)&Rules[6], (INT8 *)"W32pServiceTable");
  if( !ExportedRoutineByName )
    return(_VERIFIER_TRIAGE_RULE *)3221225594i64;
  v5 = RtlFindExportedRoutineByName(*(VOID **)&Rules[6], (INT8 *)"W32pServiceLimit");
  if( !v5 )
    return(_VERIFIER_TRIAGE_RULE *)3221225594i64;
  v6 = RtlFindExportedRoutineByName(*(VOID **)&Rules[6], (INT8 *)"W32pArgumentTable");
  if( !v6 )
    return(_VERIFIER_TRIAGE_RULE *)3221225594i64;
  v7 = RtlFindExportedRoutineByName(*(VOID **)&Rules[6], (INT8 *)"W32pServiceTableFilter");
  if( !v7 )
    return(_VERIFIER_TRIAGE_RULE *)3221225594i64;
  v8 = RtlFindExportedRoutineByName(*(VOID **)&Rules[6], (INT8 *)"W32pServiceLimitFilter");
  if( !v8 )
    return(_VERIFIER_TRIAGE_RULE *)3221225594i64;
  v9 = RtlFindExportedRoutineByName(*(VOID **)&Rules[6], (INT8 *)"W32pArgumentTableFilter");
  if( !v9 )
    return(_VERIFIER_TRIAGE_RULE *)3221225594i64;
  v10 = 4 * *v5;
  MiSetImageProtection((_KLDR_DATA_TABLE_ENTRY *)Rules, ExportedRoutineByName, v10, 4ui64);
  NumberOfBytes = 4 * *v8;
  MiSetImageProtection((_KLDR_DATA_TABLE_ENTRY *)Rules, v7, NumberOfBytes, 4ui64);
  KeCompactServiceTable(v7, v9, (unsigned int)*v8, 3ui64, *(_QWORD *)&Rules[6]);
  KeCompactServiceTable(ExportedRoutineByName, v6, (unsigned int)*v5, 1ui64, *(_QWORD *)&Rules[6]);
  if( *(_QWORD *)&MiSectionControlArea(*(_SECTION **)&Rules[14])[1].gap8[8] )
  {
    MiSetImageProtection((_KLDR_DATA_TABLE_ENTRY *)Rules, ExportedRoutineByName, v10, 0x100ui64);
    MiSetImageProtection((_KLDR_DATA_TABLE_ENTRY *)Rules, v7, NumberOfBytes, 0x100ui64);
  }
  return 0i64;
}

Referenced by:

MmLoadSystemImageEx