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