PopIdleWakeStopActiveIntervalAccounting

NTSTATUS __stdcall PopIdleWakeStopActiveIntervalAccounting(VOID *a1){
  __int64 v1; 
  NTSTATUS result; 
  __int64 v3; 
  __int64 v5; 
  _BYTE *WakeSource; 
  _BYTE *v7; 
  UINT64 v8; 
  INT64 v9; 
  UINT64 v10; 
  UINT64 v11; 
  UINT64 v12; 
  UINT64 v13; 
  UINT64 *v14; 

  result = *(_DWORD *)a1;
  v3 = v1;
  if( (*(_DWORD *)a1 & 0x10) != 0 )
  {
    v5 = v1 - *((_QWORD *)a1 + 1);
    if( (result & 2) != 0 )
    {
      *((_QWORD *)a1 + 2) += v5;
    }
    else if( (result & 1) != 0 )
    {
      *((_QWORD *)a1 + 3) += v5;
    }
    else
    {
      *((_QWORD *)a1 + 4) += v5;
    }
    if( (result & 8) == 0 )
    {
      result |= 4u;
      *(_DWORD *)a1 = result;
    }
    WakeSource = PopIdleWakeFindOrAllocateWakeSource(
                   (INT64)a1,
                   *((unsigned int *)a1 + 10),
                   (INT64)a1 + 48,
                   (result & 4) != 0);
    v7 = WakeSource;
    ++*((_DWORD *)WakeSource + 78);
    *((_QWORD *)WakeSource + 42) += *((_QWORD *)a1 + 24);
    v8 = *((_QWORD *)a1 + 24);
    if( v8 < *((_QWORD *)WakeSource + 40) )
    {
      *((_QWORD *)WakeSource + 40) = v8;
      v8 = *((_QWORD *)a1 + 24);
    }
    if( v8 > *((_QWORD *)WakeSource + 41) )
    {
      *((_QWORD *)WakeSource + 41) = v8;
      v8 = *((_QWORD *)a1 + 24);
    }
    PopIdleWakeInsertTimeInterval(v8, 9ui64, (INT64)(WakeSource + 344), 0i64, &PopIdleWakeIdleAccountingBucketLimitsQpc);
    if( *((_DWORD *)v7 + 78) > 1u )
      PopIdleWakeInsertTimeInterval(
        v3 - *((_QWORD *)v7 + 53),
        (unsigned int)(v9 + 11),
        (INT64)(v7 + 380),
        v9,
        &PopIdleWakePeriodAccountingBucketLimitsQpc);
    *((_QWORD *)v7 + 53) = v3;
    KeAddProcessorAffinityEx((UINT16 *)v7 + 72, *((unsigned int *)a1 + 50));
    v10 = *((_QWORD *)a1 + 2) + *((_QWORD *)a1 + 3) + *((_QWORD *)a1 + 4);
    *((_QWORD *)v7 + 54) += v10;
    PopIdleWakeInsertTimeInterval(
      v10,
      5ui64,
      (INT64)(v7 + 440),
      (INT64)(v7 + 464),
      &PopIdleWakeSourceActiveBucketLimitsQpc);
    *((_QWORD *)v7 + 63) += *((_QWORD *)a1 + 2);
    PopIdleWakeInsertTimeInterval(
      *((_QWORD *)a1 + 2),
      v11,
      (INT64)(v7 + 512),
      (INT64)(v7 + 536),
      &PopIdleWakeSourceActivatorBucketLimitsQpc);
    *((_QWORD *)v7 + 72) += *((_QWORD *)a1 + 3);
    PopIdleWakeInsertTimeInterval(
      *((_QWORD *)a1 + 3),
      v12,
      (INT64)(v7 + 584),
      (INT64)(v7 + 608),
      &PopIdleWakeSourceDeviceBucketLimitsQpc);
    *((_QWORD *)v7 + 81) += *((_QWORD *)a1 + 4);
    PopIdleWakeInsertTimeInterval(*((_QWORD *)a1 + 4), v13, (INT64)(v7 + 656), (INT64)(v7 + 672), v14);
    return(unsigned int)memset(a1, 0i64, 0xD0u);
  }
  return result;
}

Referenced by:

PopIdleWakeNotifyModernStandbyExit
PopIdleWakeNotifyWakeSource