PopTransitionTelemetryOsState

UINT64 __stdcall PopTransitionTelemetryOsState(
        POP_TELEMETRY_OS_STATE_TRANSITION TransitionType,
        POP_TELEMETRY_OS_STATE_SUBTRANSITION SubtransitionType){
  unsigned int v4; 
  char **v6; 
  int v7; 
  UINT64 v8; 
  unsigned __int64 v9; 
  unsigned __int64 v10; 
  unsigned __int64 v11; 
  __int64 v12; 
  unsigned int v13; 
  unsigned int MaxCapacity; 
  __int16 v15; 
  __int16 v16; 
  int v17; 
  int v18; 
  int v19; 
  int v20; 
  int v21; 
  int v22; 
  unsigned int BootId; 
  int v24; 
  int v25; 
  unsigned int v26; 
  unsigned int v27; 
  unsigned int v28; 
  int v29; 
  int AcOnLine; 
  __int64 v31; 
  __int64 v32; 
  unsigned __int64 v33; 
  __int64 v34; 
  int v35; 
  int v36; 
  int v37; 
  int v38; 
  int v39; 
  int v40; 
  unsigned __int64 v41; 
  __int64 v42; 
  unsigned __int64 v43; 
  UINT64 v44; 
  __int64 v45; 
  __int64 v46; 
  __int128 v47; 
  SYSTEM_BATTERY_STATE PowerState; 
  _EVENT_DATA_DESCRIPTOR v49; 
  __int16 *v50; 
  __int64 v51; 
  __int16 *v52; 
  __int64 v53; 
  __int64 *v54; 
  __int64 v55; 
  unsigned int *p_BootId; 
  __int64 v57; 
  __int64 *v58; 
  __int64 v59; 
  __int64 *v60; 
  __int64 v61; 
  __int64 *v62; 
  __int64 v63; 
  __int64 *v64; 
  __int64 v65; 
  int *v66; 
  __int64 v67; 
  int *v68; 
  __int64 v69; 
  int *v70; 
  __int64 v71; 
  int *v72; 
  __int64 v73; 
  int *v74; 
  __int64 v75; 
  int *v76; 
  __int64 v77; 
  int *v78; 
  __int64 v79; 
  __int64 *v80; 
  __int64 v81; 
  int *v82; 
  __int64 v83; 
  int *p_AcOnLine; 
  __int64 v85; 
  __int64 *v86; 
  __int64 v87; 
  __int64 *v88; 
  __int64 v89; 

  v4 = 0;
  *(_OWORD *)&PowerState.AcOnLine = 0i64;
  v47 = 0i64;
  if( !*(&stru_140C00F40 + 1194)
    || !tlgKeywordOn((__int64)&stru_140C00F40 + 4776, 0x800000000000i64)
    || !byte_140C22C0C )
  {
    return v4;
  }
  switch( TransitionType )
  {
    case PopTelemetryOsStateTransitionShutdown:
      if( SubtransitionType == PopTelemetryOsStateSubtransitionReboot )
      {
        if( dword_140C0EDAC < KUSER_SHARED_DATA.TelemetryCoverageRound )
        {
          if( !dword_140C0EDA8 )
            dword_140C0EDA8 = TelemetryCoverageStringHashInternal(off_140C0EDA0, &v32);
          v6 = &off_140C0EDA0;
          goto LABEL_67;
        }
      }
      else if( dword_140C0ED64 < KUSER_SHARED_DATA.TelemetryCoverageRound )
      {
        if( !dword_140C0ED60 )
          dword_140C0ED60 = TelemetryCoverageStringHashInternal((_BYTE *)off_140C0ED58, &v33);
        v6 = (char **)&off_140C0ED58;
        goto LABEL_67;
      }
      break;
    case PopTelemetryOsStateTransitionSuspend:
      switch( SubtransitionType )
      {
        case PopTelemetryOsStateSubtransitionHiberboot:
          if( dword_140C0ED4C < KUSER_SHARED_DATA.TelemetryCoverageRound )
          {
            if( !dword_140C0ED48 )
              dword_140C0ED48 = TelemetryCoverageStringHashInternal(off_140C0ED40, &v37);
            v6 = &off_140C0ED40;
            goto LABEL_67;
          }
          break;
        case PopTelemetryOsStateSubtransitionStandby:
          if( dword_140C0ED94 < KUSER_SHARED_DATA.TelemetryCoverageRound )
          {
            if( !dword_140C0ED90 )
              dword_140C0ED90 = TelemetryCoverageStringHashInternal(off_140C0ED88, &v36);
            v6 = &off_140C0ED88;
            goto LABEL_67;
          }
          break;
        case PopTelemetryOsStateSubtransitionHibernate:
          if( dword_140C0ED7C < KUSER_SHARED_DATA.TelemetryCoverageRound )
          {
            if( !dword_140C0ED78 )
              dword_140C0ED78 = TelemetryCoverageStringHashInternal(off_140C0ED70, &v35);
            v6 = &off_140C0ED70;
            goto LABEL_67;
          }
          break;
        case PopTelemetryOsStateSubtransitionConnectedStandby:
          if( dword_140C0ED04 < KUSER_SHARED_DATA.TelemetryCoverageRound )
          {
            if( !dword_140C0ED00 )
              dword_140C0ED00 = TelemetryCoverageStringHashInternal(off_140C0ECF8, &v40);
            v6 = &off_140C0ECF8;
            goto LABEL_67;
          }
          break;
        default:
          if( SubtransitionType == PopTelemetryOsStateSubtransitionHybridSleep
            && dword_140C0ECEC < KUSER_SHARED_DATA.TelemetryCoverageRound )
          {
            if( !dword_140C0ECE8 )
              dword_140C0ECE8 = TelemetryCoverageStringHashInternal(off_140C0ECE0, &v39);
            v6 = &off_140C0ECE0;
            goto LABEL_67;
          }
          break;
      }
      break;
    case PopTelemetryOsStateTransitionResume:
      switch( SubtransitionType )
      {
        case PopTelemetryOsStateSubtransitionHiberboot:
          if( dword_140C0ED34 < KUSER_SHARED_DATA.TelemetryCoverageRound )
          {
            if( !dword_140C0ED30 )
              dword_140C0ED30 = TelemetryCoverageStringHashInternal(off_140C0ED28, &v38);
            v6 = &off_140C0ED28;
            goto LABEL_67;
          }
          break;
        case PopTelemetryOsStateSubtransitionStandby:
          if( dword_140C0ED1C < KUSER_SHARED_DATA.TelemetryCoverageRound )
          {
            if( !dword_140C0ED18 )
              dword_140C0ED18 = TelemetryCoverageStringHashInternal(off_140C0ED10, &v19);
            v6 = &off_140C0ED10;
            goto LABEL_67;
          }
          break;
        case PopTelemetryOsStateSubtransitionHibernate:
          if( dword_140C0ECBC < KUSER_SHARED_DATA.TelemetryCoverageRound )
          {
            if( !dword_140C0ECB8 )
              dword_140C0ECB8 = TelemetryCoverageStringHashInternal(off_140C0ECB0, &v20);
            v6 = &off_140C0ECB0;
            goto LABEL_67;
          }
          break;
        case PopTelemetryOsStateSubtransitionConnectedStandby:
          if( dword_140C0ECA4 < KUSER_SHARED_DATA.TelemetryCoverageRound )
          {
            if( !dword_140C0ECA0 )
              dword_140C0ECA0 = TelemetryCoverageStringHashInternal(off_140C0EC98, &v21);
            v6 = &off_140C0EC98;
            goto LABEL_67;
          }
          break;
        default:
          if( SubtransitionType == PopTelemetryOsStateSubtransitionHybridSleep
            && dword_140C0ECD4 < KUSER_SHARED_DATA.TelemetryCoverageRound )
          {
            if( !dword_140C0ECD0 )
              dword_140C0ECD0 = TelemetryCoverageStringHashInternal(off_140C0ECC8, &v22);
            v6 = &off_140C0ECC8;
LABEL_67:
            EtwTelemetryCoverageReport((INT64)v6);
          }
          break;
      }
      break;
  }
  PopAcquireRwLockExclusive(&PopTelemetryOsState);
  v4 = dword_140C22C08;
  if( TransitionType != PopTelemetryOsStateTransitionHeartbeat
    || dword_140C22BD0 == 1
    || (unsigned int)(dword_140C22BD0 - 4) <= 1 )
  {
    v8 = (KiQueryUnbiasedInterruptTime(1u) - qword_140C22BE8) / 0x2710;
    v9 = v8 - qword_140C22BF8;
    v10 = (*(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart - qword_140C22BE0) / 0x2710ui64;
    qword_140C22BF8 = v8;
    v11 = v10 - qword_140C22BF0;
    v33 = v10 - qword_140C22BF0;
    v12 = v10 - qword_140C22BF0;
    qword_140C22BF0 = v10;
    if( v9 <= v11 )
      v12 = v9;
    v32 = v12;
    v21 = v7 + dword_140C22C00;
    dword_140C22C00 += v7;
    v19 = dword_140C22BD0;
    v20 = dword_140C22BD4;
    if( TransitionType != PopTelemetryOsStateTransitionHeartbeat )
    {
      dword_140C22C04 += v7;
      dword_140C22BD0 = TransitionType;
      dword_140C22BD4 = SubtransitionType;
    }
    if( TransitionType == v7 || TransitionType == PopTelemetryOsStateTransitionResume )
      dword_140C22C08 += v7;
    v4 = dword_140C22C08;
    v22 = dword_140C22C04;
    PopReleaseRwLock(&PopTelemetryOsState);
    PopCurrentPowerState(&PowerState);
    v13 = 0;
    MaxCapacity = PowerState.MaxCapacity;
    if( PowerState.MaxCapacity )
      v13 = 100 * PowerState.RemainingCapacity / PowerState.MaxCapacity;
    PopMeasureEnergyChange((__int64)&v47, (__int64)&OsStateChangeEnergyCounter);
    v34 = qword_140C22BD8;
    if( *(&stru_140C00F40 + 1194) > 5u && tlgKeywordOn((__int64)&stru_140C00F40 + 4776, 0x800000000000i64) )
    {
      v15 = TransitionType;
      v50 = &v15;
      v52 = &v16;
      v41 = v33;
      v54 = (__int64 *)&v41;
      v51 = 2i64;
      v16 = SubtransitionType;
      v53 = 2i64;
      v55 = 8i64;
      BootId = KUSER_SHARED_DATA.BootId;
      p_BootId = &BootId;
      v58 = &v34;
      v42 = v32;
      v60 = &v42;
      v62 = (__int64 *)&v43;
      v64 = (__int64 *)&v44;
      LOWORD(v17) = v19;
      v66 = &v17;
      LOWORD(v18) = v20;
      v68 = &v18;
      v24 = v21;
      v70 = &v24;
      v25 = v22;
      v72 = &v25;
      v74 = (int *)&v26;
      v76 = (int *)&v27;
      v78 = (int *)&v28;
      v45 = *((_QWORD *)&v47 + 1);
      v80 = &v45;
      v29 = v47;
      v82 = &v29;
      AcOnLine = PowerState.AcOnLine;
      p_AcOnLine = &AcOnLine;
      v57 = 4i64;
      v59 = 8i64;
      v61 = 8i64;
      v43 = v10;
      v63 = 8i64;
      v44 = v8;
      v65 = 8i64;
      v67 = 2i64;
      v69 = 2i64;
      v71 = 4i64;
      v73 = 4i64;
      v26 = v4;
      v75 = 4i64;
      v27 = MaxCapacity;
      v77 = 4i64;
      v28 = v13;
      v79 = 4i64;
      v81 = 8i64;
      v83 = 4i64;
      v85 = 4i64;
      LODWORD(v31) = PowerState.Discharging;
      v87 = 4i64;
      v86 = &v31;
      v46 = 0x1000000i64;
      v88 = &v46;
      v89 = 8i64;
      tlgWriteTransfer_EtwWriteTransfer(
        (__int64)&stru_140C00F40 + 4776,
        (unsigned __int8 *)byte_140026E0D,
        0i64,
        0i64,
        0x16u,
        &v49);
    }
  }
  else
  {
    PopReleaseRwLock(&PopTelemetryOsState);
  }
  return v4;
}

Referenced by:

PopDiagInitialize
PopNotifyTelemetryOsState
PopPowerAggregatorActiveToScreenOffStateHandler
PopPowerAggregatorDisplayPoweringOnStateHandler