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