PopIdleWakeNotifyModernStandbyExit

NTSTATUS __stdcall PopIdleWakeNotifyModernStandbyExit(_OBJECT_ATTRIBUTES *TargetKey, UINT64 Flags){
  INT64 v2; 
  UINT64 v3; 
  PVOID v4; 
  unsigned __int8 v5; 
  unsigned __int64 v6; 
  NTSTATUS v7; 
  INT64 v8; 
  __int64 v9; 
  WCHAR v10; 
  unsigned int i; 
  __int16 v12; 
  __int16 v13; 
  INT64 a2; 
  INT64 v15; 
  __int64 v16; 
  _DWORD result[96]; 
  char v18; 
  PVOID P; 
  unsigned int v20; 
  PVOID v21[31]; 
  struct _EVENT_DATA_DESCRIPTOR v22; 
  __int64 *v23; 
  int v24; 
  int v25; 
  __int16 *v26; 
  int v27; 
  int v28; 
  __int64 v29; 
  int v30; 
  int v31; 
  __int16 *v32; 
  int v33; 
  int v34; 
  __int64 *v35; 
  int v36; 
  int v37; 
  __int64 *v38; 
  int v39; 
  int v40; 
  __int64 v41[6]; 
  v2 = PopWnfCsEnterScenarioId;
  a2 = 0i64;
  memset((INT64)result, 0i64);
  KeAcquireSpinLockRaiseToDpc(&PopIdleWakeContextLock, v3);
  v4 = PopIdleWakeContext;
  PopIdleWakeContext = 0i64;
  v6 = v5;
  KxReleaseSpinLock(&PopIdleWakeContextLock);
  v7 = KiIrqlFlags;
  __writecr8(v6);
  if( v4 )
  {
    RtlGetInterruptTimePrecise(&a2);
    PopIdleWakeStopActiveIntervalAccounting((INT64)v4, a2);
    PopIdleWakeConvertIntervalBucketsTo(6ui64, (INT64)v4 + 232, (UINT64 *)v41, 0x3E8ui64);
    if( (unsigned int)dword_140C021E8 > 5 && tlgKeywordOn((__int64)&dword_140C021E8, 0x400000000000i64) )
    {
      v25 = 0;
      v28 = 0;
      v31 = 0;
      v34 = 0;
      v37 = 0;
      v40 = 0;
      v23 = &v15;
      v26 = &v12;
      v29 = (__int64)v4 + 208;
      v32 = &v13;
      v35 = v41;
      v38 = &v16;
      v24 = 8;
      v39 = 8;
      v15 = v2;
      v12 = 6;
      v27 = 2;
      v30 = 24;
      v13 = 6;
      v33 = 2;
      v36 = 48;
      v16 = 0x1000000i64;
      tlgWriteTransfer_EtwWriteTransfer(
        (__int64)&dword_140C021E8,
        (unsigned __int8 *)byte_140028CA9,
        0i64,
        0i64,
        8u,
        &v22);
    }
    v8 = (INT64)v4 + 280;
    v9 = 25i64;
    do
    {
      if( *(_DWORD *)(v8 + 312) )
      {
        memset((INT64)result, 0i64);
        if( (int)PopIdleWakeSourceAccountingToDiagnostic(v8, result) >= 0 )
          PopIdleWakeTraceWakeSourceDiagnostic(v2, (INT64)result, v10);
        if( v18 )
          ExFreePoolWithTag(P, 0x67696450u);
        if( result[0] == 5 )
        {
          for( i = 0; i < v20; ++i )
            ExFreePoolWithTag(v21[2 * i], 0x67696450u);
        }
      }
      v8 += 696i64;
      --v9;
    }
    while( v9 );
    ExFreePoolWithTag(v4, 0x67696450u);
  }
  return v7;
}

Referenced by:

PopCaptureSleepStudyStatistics