MiInitializeScrubPacket

__int64 __fastcall MiInitializeScrubPacket(__int64 a1){
  unsigned int v2; 
  unsigned int NextPageColor; 
  __int64 v5; 
  __int64 v6; 
  __int128 v7; 
  v2 = 0;
  v7 = 0i64;
  MiInitializePageColorBase(*((_QWORD *)KeGetCurrentThread() + 23) + 1664i64, 0i64, (INT64)&v7);
  NextPageColor = MiGetNextPageColor((INT64)&v7);
  if( !(unsigned int)MiCreateUltraThreadContext(a1 + 48, NextPageColor, 8i64) )
    return 3221225626i64;
  MiCreatePteCopyList(0x100ui64, 0x100ui64, a1 + 176);
  if( *(_DWORD *)(a1 + 180)
    && (v5 = *(_QWORD *)a1,
        *(_QWORD *)(a1 + 200) = 0i64,
        *(_QWORD *)(a1 + 216) = 0i64,
        *(_QWORD *)(a1 + 208) = 0i64,
        LODWORD(v6) = MiAllocatePool((struct _SLIST_ENTRY *)0x40),
        (*(_QWORD *)(a1 + 200) = v6) != 0i64) )
  {
    if( *(_DWORD *)(a1 + 8) != -1 )
      *(_QWORD *)(a1 + 216) = MiReferencePageRuns(*(_MI_PARTITION **)(v5 + 48), 1ui64);
  }
  else
  {
    MiReleaseScrubPacket(a1);
    return(unsigned int)-1073741670;
  }
  return v2;
}

Referenced by:

MiScrubMemoryWorker
MiScrubProcesses