PopDirectedDripsStartDisengageTimer

NTSTATUS __stdcall PopDirectedDripsStartDisengageTimer(INT64 a1){
  UINT64 *v1; 
  unsigned __int64 v2; 
  NTSTATUS result; 
  _EXT_SET_PARAMETERS_V0 Parameters; 

  v1 = (UINT64 *)((char *)&stru_140C23628 + 160 * (int)a1 + 5256);
  *(_QWORD *)&Parameters.Version = 0i64;
  v2 = (unsigned __int8)KeAcquireSpinLockRaiseToDpc(v1 + 1);
  Parameters.NoWakeTolerance = -1i64;
  if( !KeCancelTimer2((INT64)(v1 + 3)) && ++*((_DWORD *)v1 + 5) == 1 )
    PopDirectedDripsSetDisengageReason(*(_DWORD *)v1);
  KeSetTimer2((INT64)(v1 + 3), -10000000i64 * *((unsigned int *)v1 + 1), 0i64, (INT64)&Parameters);
  ++*((_DWORD *)v1 + 4);
  KxReleaseSpinLock(v1 + 1);
  result = KiIrqlFlags;
  __writecr8(v2);
  return result;
}

Referenced by:

PoFxNotifySurprisePowerOn
PopRequestCompletion