PopTransitionTelemetryOsState

INT64 __fastcall PopTransitionTelemetryOsState(INT64 a1, INT64 rdx0){
  int v2; 
  int v3; 
  unsigned int v4; 
  INT64 *v6; 
  int v7; 
  UINT64 v8; 
  UINT64 v9; 
  unsigned __int64 v10; 
  unsigned __int64 v11; 
  unsigned __int64 v12; 
  DWORD v13; 
  DWORD MaxCapacity; 
  __int16 v15; 
  __int16 v16; 
  int v17; 
  int v18; 
  int v19; 
  int v20; 
  int v21; 
  int a2; 
  unsigned int BootId; 
  int v24; 
  int v25; 
  unsigned int v26; 
  DWORD v27; 
  DWORD v28; 
  int v29; 
  int AcOnLine; 
  __int64 v31; 
  _DWORD v32[2]; 
  _DWORD v33[2]; 
  __int64 v34; 
  int v35; 
  int v36; 
  int v37; 
  int v38; 
  int v39; 
  int v40; 
  __int64 v41; 
  __int64 v42; 
  unsigned __int64 v43; 
  UINT64 v44; 
  INT64 v45; 
  __int64 v46; 
  INT64 rcx0a[2]; 
  SYSTEM_BATTERY_STATE PowerState; 
  struct _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; 
  v2 = rdx0;
  v3 = a1;
  v4 = 0;
  *(_OWORD *)&PowerState.AcOnLine = 0i64;
  *(_OWORD *)rcx0a = 0i64;
  if( !dword_140C021E8 || !tlgKeywordOn((__int64)&dword_140C021E8, 0x800000000000i64) || !byte_140C22C0C )
    return v4;
  switch( v3 )
  {
    case 2:
      if( v2 == 2 )
      {
        if( dword_140C0EDAC < KUSER_SHARED_DATA.TelemetryCoverageRound )
        {
          if( !dword_140C0EDA8 )
            dword_140C0EDA8 = TelemetryCoverageStringHashInternal(off_140C0EDA0, v32);
          v6 = (INT64 *)&off_140C0EDA0;
          goto LABEL_67;
        }
      }
      else if( dword_140C0ED64 < KUSER_SHARED_DATA.TelemetryCoverageRound )
      {
        if( !dword_140C0ED60 )
          dword_140C0ED60 = TelemetryCoverageStringHashInternal((_BYTE *)off_140C0ED58, v33);
        v6 = &off_140C0ED58;
        goto LABEL_67;
      }
      break;
    case 3:
      switch( v2 )
      {
        case 3:
          if( dword_140C0ED4C < KUSER_SHARED_DATA.TelemetryCoverageRound )
          {
            if( !dword_140C0ED48 )
              dword_140C0ED48 = TelemetryCoverageStringHashInternal(off_140C0ED40, &v37);
            v6 = (INT64 *)&off_140C0ED40;
            goto LABEL_67;
          }
          break;
        case 4:
          if( dword_140C0ED94 < KUSER_SHARED_DATA.TelemetryCoverageRound )
          {
            if( !dword_140C0ED90 )
              dword_140C0ED90 = TelemetryCoverageStringHashInternal(off_140C0ED88, &v36);
            v6 = (INT64 *)&off_140C0ED88;
            goto LABEL_67;
          }
          break;
        case 5:
          if( dword_140C0ED7C < KUSER_SHARED_DATA.TelemetryCoverageRound )
          {
            if( !dword_140C0ED78 )
              dword_140C0ED78 = TelemetryCoverageStringHashInternal(off_140C0ED70, &v35);
            v6 = (INT64 *)&off_140C0ED70;
            goto LABEL_67;
          }
          break;
        case 6:
          if( dword_140C0ED04 < KUSER_SHARED_DATA.TelemetryCoverageRound )
          {
            if( !dword_140C0ED00 )
              dword_140C0ED00 = TelemetryCoverageStringHashInternal(off_140C0ECF8, &v40);
            v6 = (INT64 *)&off_140C0ECF8;
            goto LABEL_67;
          }
          break;
        default:
          if( v2 == 8 && dword_140C0ECEC < KUSER_SHARED_DATA.TelemetryCoverageRound )
          {
            if( !dword_140C0ECE8 )
              dword_140C0ECE8 = TelemetryCoverageStringHashInternal(off_140C0ECE0, &v39);
            v6 = (INT64 *)&off_140C0ECE0;
            goto LABEL_67;
          }
          break;
      }
      break;
    case 4:
      switch( v2 )
      {
        case 3:
          if( dword_140C0ED34 < KUSER_SHARED_DATA.TelemetryCoverageRound )
          {
            if( !dword_140C0ED30 )
              dword_140C0ED30 = TelemetryCoverageStringHashInternal(off_140C0ED28, &v38);
            v6 = (INT64 *)&off_140C0ED28;
            goto LABEL_67;
          }
          break;
        case 4:
          if( dword_140C0ED1C < KUSER_SHARED_DATA.TelemetryCoverageRound )
          {
            if( !dword_140C0ED18 )
              dword_140C0ED18 = TelemetryCoverageStringHashInternal(off_140C0ED10, &v19);
            v6 = (INT64 *)&off_140C0ED10;
            goto LABEL_67;
          }
          break;
        case 5:
          if( dword_140C0ECBC < KUSER_SHARED_DATA.TelemetryCoverageRound )
          {
            if( !dword_140C0ECB8 )
              dword_140C0ECB8 = TelemetryCoverageStringHashInternal(off_140C0ECB0, &v20);
            v6 = (INT64 *)&off_140C0ECB0;
            goto LABEL_67;
          }
          break;
        case 6:
          if( dword_140C0ECA4 < KUSER_SHARED_DATA.TelemetryCoverageRound )
          {
            if( !dword_140C0ECA0 )
              dword_140C0ECA0 = TelemetryCoverageStringHashInternal(off_140C0EC98, &v21);
            v6 = (INT64 *)&off_140C0EC98;
            goto LABEL_67;
          }
          break;
        default:
          if( v2 == 8 && dword_140C0ECD4 < KUSER_SHARED_DATA.TelemetryCoverageRound )
          {
            if( !dword_140C0ECD0 )
              dword_140C0ECD0 = TelemetryCoverageStringHashInternal(off_140C0ECC8, &a2);
            v6 = (INT64 *)&off_140C0ECC8;
LABEL_67:
            EtwTelemetryCoverageReport((INT64)v6);
          }
          break;
      }
      break;
  }
  PopAcquireRwLockExclusive(&PopTelemetryOsState);
  v4 = dword_140C22C08;
  if( v3 != 5 || 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;
    *(_QWORD *)v33 = v10 - qword_140C22BF0;
    v12 = v10 - qword_140C22BF0;
    qword_140C22BF0 = v10;
    if( v9 <= v11 )
      v12 = v9;
    *(_QWORD *)v32 = v12;
    v21 = v7 + dword_140C22C00;
    dword_140C22C00 += v7;
    v19 = dword_140C22BD0;
    v20 = dword_140C22BD4;
    if( v3 != 5 )
    {
      dword_140C22C04 += v7;
      dword_140C22BD0 = v3;
      dword_140C22BD4 = v2;
    }
    if( v3 == v7 || v3 == 4 )
      dword_140C22C08 += v7;
    v4 = dword_140C22C08;
    a2 = dword_140C22C04;
    PopReleaseRwLock((UINT64)&PopTelemetryOsState);
    PopCurrentPowerState(&PowerState);
    v13 = 0;
    MaxCapacity = PowerState.MaxCapacity;
    if( PowerState.MaxCapacity )
      v13 = 100 * PowerState.RemainingCapacity / PowerState.MaxCapacity;
    PopMeasureEnergyChange((INT64)rcx0a, (INT64)&OsStateChangeEnergyCounter);
    v34 = qword_140C22BD8;
    if( (unsigned int)dword_140C021E8 > 5 && tlgKeywordOn((__int64)&dword_140C021E8, 0x800000000000i64) )
    {
      v15 = v3;
      v50 = &v15;
      v52 = &v16;
      v41 = *(_QWORD *)v33;
      v54 = &v41;
      v51 = 2i64;
      v16 = v2;
      v53 = 2i64;
      v55 = 8i64;
      BootId = KUSER_SHARED_DATA.BootId;
      p_BootId = &BootId;
      v58 = &v34;
      v42 = *(_QWORD *)v32;
      v60 = &v42;
      v62 = (__int64 *)&v43;
      v64 = (__int64 *)&v44;
      LOWORD(v17) = v19;
      v66 = &v17;
      LOWORD(v18) = v20;
      v68 = &v18;
      v24 = v21;
      v70 = &v24;
      v25 = a2;
      v72 = &v25;
      v74 = (int *)&v26;
      v76 = (int *)&v27;
      v78 = (int *)&v28;
      v45 = rcx0a[1];
      v80 = &v45;
      v29 = rcx0a[0];
      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)&dword_140C021E8,
        (unsigned __int8 *)byte_140026E0D,
        0i64,
        0i64,
        0x16u,
        &v49);
    }
  }
  else
  {
    PopReleaseRwLock((UINT64)&PopTelemetryOsState);
  }
  return v4;
}

Referenced by:

PopDiagInitialize
PopNotifyTelemetryOsState
PopPowerAggregatorActiveToScreenOffStateHandler
PopPowerAggregatorDisplayPoweringOnStateHandler