PpmEventIdleDurationExpiration

VOID __stdcall PpmEventIdleDurationExpiration(_KAFFINITY_EX *WakeMask){
  unsigned __int16 Count; 
  unsigned __int16 v3; 
  unsigned __int16 v4; 
  __int64 v5; 
  __int64 v6; 
  ULONG UserDataCount; 
  __int64 *v8; 
  __int64 v9; 
  __int64 v10; 
  __int64 v11; 
  unsigned __int16 v12; 
  _EVENT_DATA_DESCRIPTOR UserData[41]; 
  __int64 v14[40]; 

  if( PpmEtwRegistered && EtwEventEnabled(PpmEtwHandle, &PPM_ETW_IDLE_DURATION_EXPIRATION) )
  {
    Count = WakeMask->Count;
    v3 = 0;
    v4 = 0;
    v12 = 0;
    do
    {
      v5 = 2i64 * v3;
      *(_OWORD *)&v14[v5] = 0i64;
      LOWORD(v14[v5 + 1]) = v4;
      if( v4 >= Count )
        v6 = 0i64;
      else
        v6 = WakeMask->Bitmap[v4];
      v14[2 * v3] = v6;
      if( v6 )
        ++v3;
      ++v4;
    }
    while( v4 < 0x14u );
    v12 = v3;
    UserData[0].Ptr = (unsigned __int64)&v12;
    *(_QWORD *)&UserData[0].Size = 2i64;
    UserDataCount = 1;
    if( v3 )
    {
      v8 = v14;
      v9 = v3;
      do
      {
        v10 = UserDataCount;
        UserData[v10].Ptr = (unsigned __int64)(v8 + 1);
        *(_QWORD *)&UserData[v10].Size = 2i64;
        v11 = UserDataCount + 1;
        UserDataCount += 2;
        UserData[v11].Ptr = (unsigned __int64)v8;
        v8 += 2;
        *(_QWORD *)&UserData[v11].Size = 8i64;
        --v9;
      }
      while( v9 );
    }
    EtwWriteEx(PpmEtwHandle, &PPM_ETW_IDLE_DURATION_EXPIRATION, 0i64, 0, 0, 0, UserDataCount, UserData);
  }
}

Referenced by:

PoExecuteIdleCheck