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