PopPlNotifyDeviceFState
INT64 __fastcall PopPlNotifyDeviceFState(INT64 a1, UINT64 a2, UINT64 r8_0, UINT64 r9_0, CHAR a5){
int v6;
INT64 result;
bool v8;
__int64 v9;
__int64 v10;
char v11;
int v12;
int v13;
INT64 v14;
unsigned int v15;
const CHAR *v16;
__int64 v17;
int v18;
__int64 v19;
int v20;
__int64 v21;
ULONG v22;
unsigned __int64 v23;
int v24;
int v25;
__int16 v26;
int a4;
UINT64 a3;
int v29;
unsigned int v30;
int v31;
unsigned int v32;
INT64 v33;
__int64 v34[8];
char v35[16];
int *v36;
__int64 v37;
int *v38;
__int64 v39;
int *v40;
__int64 v41;
int *v42;
__int64 v43;
INT64 *v44;
__int64 v45;
int *v46;
__int64 v47;
__int64 v48;
int v49[2];
a4 = a2;
v6 = r9_0;
LODWORD(a3) = r9_0;
result = *(_QWORD *)(*(_QWORD *)(a1 + 832) + 8i64 * (unsigned int)a2);
v33 = result;
if( *(_QWORD *)(result + 432) )
{
v8 = (unsigned int)r9_0 < (unsigned int)r8_0;
if( (unsigned int)r9_0 > (unsigned int)r8_0 )
{
if( !a5 )
return result;
v8 = (unsigned int)r9_0 < (unsigned int)r8_0;
}
if( !v8 || !a5 )
{
v9 = *(_QWORD *)(a1 + 1184);
v10 = *(_QWORD *)(v9 + 16);
KeAcquireSpinLockRaiseToDpc((UINT64 *)(v10 + 16), a2);
*(_BYTE *)(v10 + 24) = v11;
v12 = *(_DWORD *)(v9 + 32);
v13 = PopPlCalculateDevicePowerDraw(a1, 0i64, &a3, &a4);
*(_DWORD *)(v9 + 32) = v13;
v15 = v13 - v12;
if( (unsigned int)dword_140C021E8 > 5 )
{
v26 = 1;
v34[4] = (__int64)&v26;
v16 = "Beginning";
v34[6] = v33;
v34[5] = 2i64;
if( a5 )
v16 = "Completed";
v34[7] = 16i64;
tlgCreate1Sz_char((__int64)v35, v16);
v29 = v6;
v36 = &v29;
v37 = 4i64;
v38 = (int *)&v30;
v31 = *(_DWORD *)(v9 + 32);
v40 = &v31;
v42 = (int *)&v32;
v17 = *(_QWORD *)(v9 + 16);
v30 = v15;
v39 = 4i64;
v41 = 4i64;
v32 = v15;
v43 = 4i64;
v18 = *(_DWORD *)(v17 + 28);
v44 = &v33;
v19 = *(_QWORD *)(a1 + 224);
LODWORD(v33) = v15 + v18;
v20 = *(unsigned __int16 *)(a1 + 216);
v48 = v19;
v46 = v49;
v49[0] = v20;
v45 = 4i64;
v47 = 2i64;
v49[1] = v21;
tlgWriteEx_EtwWriteEx(
(__int64)&dword_140C021E8,
(unsigned __int8 *)&dword_1400294EC,
v21,
v22,
v24,
v25,
0xCu,
(__int64)v34);
}
PopPlPublishSystemPowerChange((UINT16 *)v10, v15, v14);
v23 = *(unsigned __int8 *)(v10 + 24);
KxReleaseSpinLock((UINT64 *)(v10 + 16));
result = (unsigned int)KiIrqlFlags;
__writecr8(v23);
}
}
return result;
}Referenced by:
PopPepCompleteComponentIdleState
PopPepNotifyIdleState
PopPepStartComponentIdleStateChangeActivity