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