PopDiagTraceControlCallback

VOID __stdcall PopDiagTraceControlCallback(
        _GUID *SourceId,
        UINT64 ControlCode,
        UINT8 Level,
        UINT64 MatchAnyKeyword,
        UINT64 MatchAllKeyword,
        _EVENT_FILTER_DESCRIPTOR *FilterData,
        PVOID CallbackContext){
  unsigned int v7; 
  EVENT_DESCRIPTOR *v8; 
  INT64 *i; 
  PVOID *v10; 
  __int64 v11; 
  unsigned int *v12; 
  UINT64 *v13; 
  UINT64 v14; 
  NTSTATUS v15; 
  PVOID v16; 
  unsigned int v17; 
  char *v18; 
  char *v19; 
  unsigned int v20; 
  EVENT_DESCRIPTOR *v21; 
  UINT64 v22; 
  EVENT_DESCRIPTOR *v23; 
  INT64 v24; 
  INT64 v25; 
  EVENT_DESCRIPTOR *v26; 
  EVENT_DESCRIPTOR *v27; 
  EVENT_DESCRIPTOR *v28; 
  UINT64 v29; 
  UINT64 v30; 
  unsigned __int64 v31; 
  unsigned __int64 v32; 
  unsigned __int64 v33; 
  __int64 v34; 
  DWORD MaxCapacity; 
  __int64 v36; 
  __int64 *v37; 
  __int64 v38; 
  DWORD v39; 
  UINT64 v40; 
  __int16 v41; 
  __int16 v42; 
  __int16 v43; 
  PVOID P; 
  unsigned int BootId; 
  int v46; 
  int v47; 
  int v48; 
  int v49; 
  int v50; 
  int v51; 
  DWORD v52; 
  DWORD v53; 
  int v54; 
  int AcOnLine; 
  int Discharging; 
  BOOL v57; 
  __int64 v58; 
  __int64 v59; 
  unsigned __int64 v60; 
  __int64 v61; 
  unsigned __int64 v62; 
  UINT64 v63; 
  INT64 v64; 
  __int64 v65; 
  INT64 rcx0[2]; 
  SYSTEM_BATTERY_STATE PowerState; 
  EVENT_DATA_DESCRIPTOR UserData; 
  EVENT_DATA_DESCRIPTOR v69; 
  EVENT_DATA_DESCRIPTOR v70; 
  int *v71; 
  __int64 v72; 
  EVENT_DATA_DESCRIPTOR v73; 
  int *v74; 
  __int64 v75; 
  EVENT_DATA_DESCRIPTOR v76; 
  __int64 *v77; 
  __int64 v78; 
  __int64 *v79; 
  __int64 v80; 
  struct _EVENT_DATA_DESCRIPTOR v81; 
  __int64 v82; 
  __int64 v83; 
  __int16 *v84; 
  __int64 v85; 
  __int64 *v86; 
  __int64 v87; 
  unsigned int *p_BootId; 
  __int64 v89; 
  __int64 *v90; 
  __int64 v91; 
  __int64 *v92; 
  __int64 v93; 
  __int64 *v94; 
  __int64 v95; 
  __int64 *v96; 
  __int64 v97; 
  __int16 *v98; 
  __int64 v99; 
  __int16 *v100; 
  __int64 v101; 
  int *v102; 
  __int64 v103; 
  int *v104; 
  __int64 v105; 
  int *v106; 
  __int64 v107; 
  int *v108; 
  __int64 v109; 
  int *v110; 
  __int64 v111; 
  INT64 *v112; 
  __int64 v113; 
  int *v114; 
  __int64 v115; 
  int *p_AcOnLine; 
  __int64 v117; 
  int *p_Discharging; 
  __int64 v119; 
  __int64 *v120; 
  __int64 v121; 
  if( (_DWORD)ControlCode == 2 )
  {
    v7 = 0;
    LODWORD(v40) = 0;
    if( CallbackContext == &dword_140C021E8 )
    {
      if( (MatchAnyKeyword & 0x800000000000i64) != 0 )
      {
        *(_OWORD *)&PowerState.AcOnLine = 0i64;
        v58 = 0i64;
        *(_OWORD *)rcx0 = 0i64;
        if( dword_140C021E8 )
        {
          if( tlgKeywordOn((__int64)&dword_140C021E8, 0x800000000000i64) && byte_140C22C0C )
          {
            PopAcquireRwLockExclusive(&PopTelemetryOsState);
            if( dword_140C22BD0 == 1 || (unsigned int)(dword_140C22BD0 - 4) <= 1 )
            {
              v30 = (KiQueryUnbiasedInterruptTime(1u) - qword_140C22BE8) / 0x2710;
              v31 = v30 - qword_140C22BF8;
              v32 = (*(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart - qword_140C22BE0) / 0x2710ui64;
              qword_140C22BF8 = v30;
              v33 = v32 - qword_140C22BF0;
              qword_140C22BF0 = v32;
              v34 = v33;
              if( v31 <= v33 )
                v34 = v31;
              v59 = v34;
              v47 = ++dword_140C22C00;
              LODWORD(v40) = dword_140C22BD0;
              v46 = dword_140C22BD4;
              v49 = dword_140C22C04;
              LODWORD(P) = dword_140C22C08;
              PopReleaseRwLock((UINT64)&PopTelemetryOsState);
              PopCurrentPowerState(&PowerState);
              v39 = 0;
              MaxCapacity = PowerState.MaxCapacity;
              if( PowerState.MaxCapacity )
                v39 = 100 * PowerState.RemainingCapacity / PowerState.MaxCapacity;
              PopMeasureEnergyChange((INT64)rcx0, (INT64)&OsStateChangeEnergyCounter);
              v58 = qword_140C22BD8;
              if( (unsigned int)dword_140C021E8 > 5 && tlgKeywordOn((__int64)&dword_140C021E8, 0x800000000000i64) )
              {
                WORD2(v40) = 5;
                v82 = (__int64)&v40 + 4;
                v84 = &v41;
                v86 = (__int64 *)&v60;
                v83 = 2i64;
                v41 = 1;
                v85 = 2i64;
                v60 = v33;
                v87 = 8i64;
                BootId = KUSER_SHARED_DATA.BootId;
                p_BootId = &BootId;
                v90 = &v58;
                v61 = v59;
                v92 = &v61;
                v94 = (__int64 *)&v62;
                v96 = (__int64 *)&v63;
                v42 = v40;
                v98 = &v42;
                v43 = v46;
                v100 = &v43;
                v48 = v47;
                v102 = &v48;
                v50 = v49;
                v104 = &v50;
                v51 = (int)P;
                v106 = &v51;
                v108 = (int *)&v52;
                v53 = v39;
                v110 = (int *)&v53;
                v64 = rcx0[1];
                v112 = &v64;
                v54 = rcx0[0];
                v114 = &v54;
                AcOnLine = PowerState.AcOnLine;
                p_AcOnLine = &AcOnLine;
                v89 = 4i64;
                v91 = 8i64;
                v93 = 8i64;
                v62 = v32;
                v95 = 8i64;
                v63 = v30;
                v97 = 8i64;
                v99 = 2i64;
                v101 = 2i64;
                v103 = 4i64;
                v105 = 4i64;
                v107 = 4i64;
                v52 = MaxCapacity;
                v109 = 4i64;
                v111 = 4i64;
                v113 = 8i64;
                v115 = 4i64;
                Discharging = PowerState.Discharging;
                v117 = 4i64;
                p_Discharging = &Discharging;
                v119 = 4i64;
                v120 = &v65;
                v65 = 0x1000000i64;
                v121 = 8i64;
                tlgWriteTransfer_EtwWriteTransfer(
                  (__int64)&dword_140C021E8,
                  (unsigned __int8 *)byte_140026E0D,
                  0i64,
                  0i64,
                  0x16u,
                  &v81);
              }
            }
            else
            {
              PopReleaseRwLock((UINT64)&PopTelemetryOsState);
            }
          }
        }
      }
      if( PopPowerPlane )
        PopPlTraceLogPowerPlane((UINT16 *)PopPowerPlane, ControlCode, Level);
    }
    else
    {
      ExTraceTimerResolution();
      PopDiagTraceSystemLatencyUpdate(1u, (unsigned int)PopFxSystemLatencyLimit);
      PopAcquirePowerRequestPushLock(0);
      for( i = (INT64 *)PopPowerRequestObjectList; i != &PopPowerRequestObjectList; i = (INT64 *)*i )
        PopDiagTracePowerRequestCreate(1, (INT64)i, v8);
      PopReleaseRwLock((UINT64)&PopPowerRequestLock);
      *(_QWORD *)&UserData.Size = 4i64;
      v57 = dword_140C23D0C == 0;
      UserData.Ptr = (unsigned __int64)&v57;
      EtwWrite(PopDiagHandle, (EVENT_DESCRIPTOR *)&POP_ETW_EVENT_ACDC_STATE_RUNDOWN, 0i64, 1ui64, &UserData);
      ExAcquireFastMutex(&PopSettingLock);
      v10 = (PVOID *)PopPowerSettings;
      if( PopPowerSettings != &PopPowerSettings )
      {
        v11 = dword_140C23D0C;
        do
        {
          v12 = (unsigned int *)v10[v11 + 8];
          if( v12 )
            PopDiagTracePowerSetting(1u, (GUID *)v10 + 2, v12[1], v12 + 3);
          v10 = (PVOID *)*v10;
        }
        while( v10 != &PopPowerSettings );
      }
      KeReleaseGuardedMutex(&PopSettingLock);
      PopThermalTraceRundownEvents(v14, v13);
      P = 0i64;
      PopAcquirePolicyLock();
      v15 = PopLoggingInformation(&P, &v40);
      PopReleasePolicyLock();
      v16 = P;
      if( v15 >= 0 )
      {
        v17 = *(_DWORD *)P;
        v18 = (char *)P + 4;
        if( *(_DWORD *)P )
        {
          v19 = (char *)P + (unsigned int)v40;
          do
          {
            if( v18 >= v19 )
              break;
            v20 = *((_DWORD *)v18 + 3);
            UserData.Reserved = 0;
            v20 += 16;
            UserData.Size = v20;
            UserData.Ptr = (unsigned __int64)v18;
            EtwWrite(
              PopDiagHandle,
              (EVENT_DESCRIPTOR *)&POP_ETW_EVENT_SLEEP_DISABLE_REASON_RUNDOWN,
              0i64,
              1ui64,
              &UserData);
            ++v7;
            v18 += v20;
          }
          while( v7 < v17 );
          v16 = P;
        }
      }
      if( v16 )
        ExFreePoolWithTag(v16, 0);
      if( !_InterlockedCompareExchange(&PopDiagDeviceRundownRequests, 1, 0) )
        ExQueueWorkItem(&PopDiagDeviceRundownWorkItem, DelayedWorkQueue);
      PopDiagTraceFxRundown();
      PopDiagTracePlatformRoleRundown();
      PopRundownThermalRequests();
      PopAcquirePolicyLock();
      if( PopDiagHandleRegistered )
      {
        v22 = PopDiagHandle;
        if( EtwEventEnabled(PopDiagHandle, (EVENT_DESCRIPTOR *)&POP_ETW_EVENT_STANDBY_CONNECTIVITY_RUNDOWN, v21) )
        {
          *(_QWORD *)&v70.Size = 4i64;
          v70.Ptr = (unsigned __int64)&PopNetStandbyState;
          v72 = 4i64;
          v71 = &PopNetStandbyReason;
          EtwWrite(v22, (EVENT_DESCRIPTOR *)&POP_ETW_EVENT_STANDBY_CONNECTIVITY_RUNDOWN, 0i64, 2ui64, &v70);
        }
        if( PopDiagHandleRegistered
          && EtwEventEnabled(PopDiagHandle, (EVENT_DESCRIPTOR *)&POP_ETW_EVENT_CS_COMPLIANCE_RUNDOWN, v23) )
        {
          v36 = 0i64;
          v39 = 0;
          do
          {
            *(_QWORD *)&v73.Size = 4i64;
            v73.Ptr = (unsigned __int64)&v39;
            v75 = 4i64;
            v74 = &PopCsDeviceCompliance[v36];
            EtwWrite(PopDiagHandle, (EVENT_DESCRIPTOR *)&POP_ETW_EVENT_CS_COMPLIANCE_RUNDOWN, 0i64, 2ui64, &v73);
            v36 = v39 + 1;
            v39 = v36;
          }
          while( (unsigned int)v36 < 5 );
        }
      }
      PopReleasePolicyLock();
      PopDiagTraceDynamicTickStatusRundown();
      PopDiagTraceDeepSleepConstraintRundown(v25, v24, v26);
      PopAcquireRwLockExclusive(&PopPowerEventLock);
      if( PopDiagHandleRegistered
        && EtwEventEnabled(PopDiagHandle, (EVENT_DESCRIPTOR *)&POP_ETW_EVENT_POWER_STATE_RUNDOWN, v27) )
      {
        v37 = qword_140D2CD90;
        v38 = 48i64;
        do
        {
          v76.Ptr = (unsigned __int64)(v37 - 4);
          *(_QWORD *)&v76.Size = 4i64;
          v77 = v37 - 2;
          v78 = 4i64;
          v79 = v37;
          v80 = 8i64;
          EtwWrite(PopDiagHandle, (EVENT_DESCRIPTOR *)&POP_ETW_EVENT_POWER_STATE_RUNDOWN, 0i64, 3ui64, &v76);
          v37 += 6;
          --v38;
        }
        while( v38 );
      }
      PopReleaseRwLock((UINT64)&PopPowerEventLock);
      PopAcquireRwLockExclusive(&PopSystemIdleLock);
      if( PopDiagHandleRegistered )
      {
        v29 = PopDiagHandle;
        if( EtwEventEnabled(PopDiagHandle, (EVENT_DESCRIPTOR *)&POP_ETW_EVENT_SYSTEM_IDLE_RUNDOWN, v28) )
        {
          *(_QWORD *)&v69.Size = 4i64;
          v69.Ptr = (unsigned __int64)&PopIdleScanInterval;
          EtwWrite(v29, (EVENT_DESCRIPTOR *)&POP_ETW_EVENT_SYSTEM_IDLE_RUNDOWN, 0i64, 1ui64, &v69);
        }
      }
      PopReleaseRwLock((UINT64)&PopSystemIdleLock);
    }
  }
}

Referenced by:

No references.