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