PopPlNotifyDeviceDState
VOID __stdcall PopPlNotifyDeviceDState(INT64 a1, INT64 a2, INT64 a3, CHAR a4){
__int64 v4;
int v6;
bool v8;
__int64 v9;
int v10;
int v11;
INT64 v12;
unsigned int v13;
int v14;
__int64 v15;
const CHAR *v16;
int v17;
int v18;
const CHAR *v19;
__int64 v20;
INT64 v21;
int v22;
__int64 v23;
ULONG v24;
unsigned __int64 v25;
int v26;
int v27;
__int16 v28;
int v29;
unsigned int v30;
int v31;
unsigned int v32;
int v33;
__int64 v34[9];
int v35[2];
__int64 v36[2];
INT64 v37[10];
v4 = *(_QWORD *)(a1 + 1184);
v29 = a3;
v6 = a3;
if( v4 )
{
v8 = (int)a3 < (int)a2;
if( (int)a3 > (int)a2 )
{
if( !a4 )
return;
v8 = (int)a3 < (int)a2;
}
if( !v8 || !a4 )
{
v9 = *(_QWORD *)(v4 + 16);
*(_BYTE *)(v9 + 24) = KeAcquireSpinLockRaiseToDpc((UINT64 *)(v9 + 16));
v10 = *(_DWORD *)(v4 + 32);
v11 = PopPlCalculateDevicePowerDraw(a1, &v29, 0i64, 0i64);
*(_DWORD *)(v4 + 32) = v11;
v13 = v11 - v10;
if( *(&stru_140C00F40 + 1194) > 5u )
{
v14 = *(unsigned __int16 *)(a1 + 216);
v34[4] = (__int64)&v28;
v15 = *(_QWORD *)(a1 + 224);
v34[6] = (__int64)v35;
v34[8] = v15;
v16 = "Beginning";
v35[0] = v14;
if( a4 )
v16 = "Completed";
v28 = 1;
v34[5] = 2i64;
v34[7] = 2i64;
v35[1] = 0;
tlgCreate1Sz_char((INT64)v36, v16);
if( v6 )
{
if( v6 == v17 )
{
v19 = "PowerDeviceD0";
}
else if( v6 == v18 )
{
v19 = "PowerDeviceD1";
}
else if( v6 == 3 )
{
v19 = "PowerDeviceD2";
}
else if( v6 == v17 + 3 )
{
v19 = "PowerDeviceD3";
}
else
{
v19 = "PowerDeviceMaximum";
if( v6 != 5 )
v19 = "";
}
}
else
{
v19 = "PowerDeviceUnspecified";
}
tlgCreate1Sz_char((INT64)v37, v19);
v30 = v13;
v37[2] = (INT64)&v30;
v31 = *(_DWORD *)(v4 + 32);
v37[4] = (INT64)&v31;
v37[6] = (INT64)&v32;
v20 = *(_QWORD *)(v4 + 16);
v37[3] = v21;
v37[5] = v21;
v32 = v13;
v37[7] = v21;
v22 = *(_DWORD *)(v20 + 28);
v37[8] = (INT64)&v33;
v33 = v13 + v22;
v37[9] = v21;
tlgWriteEx_EtwWriteEx(
(__int64)&stru_140C00F40 + 4776,
(unsigned __int8 *)&byte_14002959B,
v23,
v24,
v26,
v27,
0xBu,
(__int64)v34);
}
PopPlPublishSystemPowerChange((UINT16 *)v9, v13, v12);
v25 = *(unsigned __int8 *)(v9 + 24);
KxReleaseSpinLock((UINT64 *)(v9 + 16));
__writecr8(v25);
}
}
}Referenced by:
PopPepDeviceDState