KiInitializeForceIdle

NTSTATUS __stdcall KiInitializeForceIdle(INT64 a1){
  __int64 v2; 

  if( !*(_DWORD *)(a1 + 36) )
  {
    *(&KiSwapEvent + 21) = 0i64;
    KeInitializeDpc((PRKDPC)&KiSwapEvent + 3, KiForceIdleStartDpcRoutine, 0i64);
    KeInitializeDpc(&KiForceIdleStopDpc, KiForceIdleStopDpcRoutine, 0i64);
    *(&KiSwapEvent + 193) = 3;
    KiForceIdleStopDpc.Importance = 3;
    if( !KiSerializeTimerExpiration )
      KiForceIdleDisabled = 1;
  }
  KeInitializeDpc((PRKDPC)(a1 + 33304), KiForceIdleParkUnparkDpcRoutine, 0i64);
  *(_BYTE *)(a1 + 33305) = 3;
  v2 = *(_QWORD *)(a1 + 33360);
  if( !v2 )
  {
    LODWORD(v2) = 1280;
    *(_WORD *)(a1 + 33306) = *(_DWORD *)(a1 + 36) + 1280;
  }
  return v2;
}

Referenced by:

KeInitializeTimerTable