PopPublishAndPurgePowerRequestStats
NTSTATUS __stdcall PopPublishAndPurgePowerRequestStats(PVOID Buffer){
__int64 v1;
__int64 v3;
__int64 v4;
unsigned int v5;
_QWORD *v6;
INT64 v7;
__int64 v8;
__int64 v9;
const WCHAR *v10;
NTSTATUS result;
bool v12;
char v13;
unsigned __int64 v14;
int v15;
_BOOL4 v16;
UINT64 Seed;
unsigned __int64 v18;
__int64 v19;
__int128 v20;
__int128 v21;
__int128 v22;
_EVENT_DATA_DESCRIPTOR v23;
__int128 *v24;
__int64 v25;
int *v26;
__int64 v27;
__int64 v28;
int v29;
int v30;
__int128 *v31;
__int64 v32;
unsigned __int64 *v33;
__int64 v34;
__int64 *v35;
__int64 v36;
_EVENT_DATA_DESCRIPTOR v37;
const char *v38;
int v39;
int v40;
char v41[16];
unsigned __int64 *v42;
__int64 v43;
_BOOL4 *v44;
__int64 v45;
__int64 *v46;
__int64 v47;
__int64 v48;
v48 = v1;
v14 = 0i64;
v3 = *((_QWORD *)Buffer + 2);
v4 = -1i64;
v21 = 0i64;
do
++v4;
while( *(_WORD *)(v3 + 2 * v4) );
v13 = v1;
v23.Ptr = (unsigned __int64)&v13;
v15 = v4;
v28 = v3;
v26 = &v15;
*(_QWORD *)&v23.Size = 1i64;
v27 = 4i64;
v29 = 2 * v4;
v30 = 0;
v5 = 0;
v20 = (unsigned int)RtlRandomEx(&Seed);
v22 = v20;
v31 = &v22;
v32 = 16i64;
do
{
LODWORD(v6) = PopGetStopWatchByRequestType((INT64)Buffer, v5);
v7 = (INT64)v6;
if( v6 )
{
v12 = 0;
v14 = 0i64;
PoQueryStopWatch(v6, (__int64 *)&v14, &v12);
PoResetStopWatch(v7);
if( *(&stru_140C00F40 + 1194) > 5u )
{
v9 = -1i64;
do
++v9;
while( aSleepstudyBloc[v9] );
v10 = (const WCHAR *)*((_QWORD *)Buffer + 2);
v38 = "SleepStudy Blocker Event";
v39 = v9 + 1;
v40 = 0;
tlgCreate1Sz_wchar_t((__int64)v41, v10);
v43 = 8i64;
v45 = 4i64;
v47 = 8i64;
v42 = &v18;
v16 = v12;
v44 = &v16;
v19 = v48;
v46 = &v19;
v18 = v14 / 0xA / 0xF4240;
tlgWriteTransfer_EtwWriteTransfer(
(__int64)&stru_140C00F40 + 4776,
(unsigned __int8 *)&word_140028DB6,
0i64,
0i64,
7u,
&v37);
}
if( v14 )
{
v25 = 16i64;
v24 = &v21;
v34 = 8i64;
v33 = &v14;
v21 = 0i64;
LODWORD(v21) = -1428313379;
v35 = &v48;
BYTE4(v21) = 6;
v36 = 8i64;
PopDiagTraceSleepStudyBlocker(v8, &v23);
}
}
++v5;
}
while( v5 < 4 );
result = _InterlockedExchangeAdd((volatile signed __int32 *)Buffer, 0);
if( result <= 0 )
return PopAvlDeleteStatsForPowerRequest(Buffer);
return result;
}Referenced by:
PopStatsNotifyPowerRequestCsState