PopIdleWakeStopActiveIntervalAccounting

INT64 __stdcall PopIdleWakeStopActiveIntervalAccounting(INT64 result, INT64 a2){
  INT64 v2; 
  INT64 v5; 
  BYTE *WakeSource; 
  BYTE *v7; 
  UINT64 v8; 
  INT64 v9; 
  UINT64 v10; 
  UINT64 v11; 
  UINT64 v12; 
  UINT64 v13; 
  UINT64 *v14; 
  v2 = *(unsigned int *)result;
  if( (v2 & 0x10) != 0 )
  {
    v5 = a2 - *(_QWORD *)(result + 8);
    if( (v2 & 2) != 0 )
    {
      *(_QWORD *)(result + 16) += v5;
    }
    else if( (v2 & 1) != 0 )
    {
      *(_QWORD *)(result + 24) += v5;
    }
    else
    {
      *(_QWORD *)(result + 32) += v5;
    }
    if( (v2 & 8) == 0 )
    {
      LODWORD(v2) = v2 | 4;
      *(_DWORD *)result = v2;
    }
    WakeSource = PopIdleWakeFindOrAllocateWakeSource(result, *(unsigned int *)(result + 40), result + 48, (v2 & 4) != 0);
    v7 = WakeSource;
    ++*((_DWORD *)WakeSource + 78);
    *((_QWORD *)WakeSource + 42) += *(_QWORD *)(result + 192);
    v8 = *(_QWORD *)(result + 192);
    if( v8 < *((_QWORD *)WakeSource + 40) )
    {
      *((_QWORD *)WakeSource + 40) = v8;
      v8 = *(_QWORD *)(result + 192);
    }
    if( v8 > *((_QWORD *)WakeSource + 41) )
    {
      *((_QWORD *)WakeSource + 41) = v8;
      v8 = *(_QWORD *)(result + 192);
    }
    PopIdleWakeInsertTimeInterval(v8, 9ui64, (INT64)(WakeSource + 344), 0i64, &PopIdleWakeIdleAccountingBucketLimitsQpc);
    if( *((_DWORD *)v7 + 78) > 1u )
      PopIdleWakeInsertTimeInterval(
        a2 - *((_QWORD *)v7 + 53),
        (unsigned int)(v9 + 11),
        (INT64)(v7 + 380),
        v9,
        &PopIdleWakePeriodAccountingBucketLimitsQpc);
    *((_QWORD *)v7 + 53) = a2;
    KeAddProcessorAffinityEx((_WORD *)v7 + 72, *(_DWORD *)(result + 200));
    v10 = *(_QWORD *)(result + 16) + *(_QWORD *)(result + 24) + *(_QWORD *)(result + 32);
    *((_QWORD *)v7 + 54) += v10;
    PopIdleWakeInsertTimeInterval(
      v10,
      5ui64,
      (INT64)(v7 + 440),
      (INT64)(v7 + 464),
      &PopIdleWakeSourceActiveBucketLimitsQpc);
    *((_QWORD *)v7 + 63) += *(_QWORD *)(result + 16);
    PopIdleWakeInsertTimeInterval(
      *(_QWORD *)(result + 16),
      v11,
      (INT64)(v7 + 512),
      (INT64)(v7 + 536),
      &PopIdleWakeSourceActivatorBucketLimitsQpc);
    *((_QWORD *)v7 + 72) += *(_QWORD *)(result + 24);
    PopIdleWakeInsertTimeInterval(
      *(_QWORD *)(result + 24),
      v12,
      (INT64)(v7 + 584),
      (INT64)(v7 + 608),
      &PopIdleWakeSourceDeviceBucketLimitsQpc);
    *((_QWORD *)v7 + 81) += *(_QWORD *)(result + 32);
    PopIdleWakeInsertTimeInterval(*(_QWORD *)(result + 32), v13, (INT64)(v7 + 656), (INT64)(v7 + 672), v14);
    return memset(result, 0i64);
  }
  return v2;
}

Referenced by:

PopIdleWakeNotifyModernStandbyExit
PopIdleWakeNotifyWakeSource