PopEtEnergyTrackerCleanupAggregates

UINT64 __stdcall PopEtEnergyTrackerCleanupAggregates(INT64 a1){
  UINT64 *v1; 
  UINT64 *v3; 
  UINT64 v4; 
  UINT64 result; 
  UINT64 *v6; 
  UINT64 v7; 
  INT64 *v8; 
  UINT64 *i; 

  v1 = *(UINT64 **)(a1 + 56);
  v3 = v1;
  while( 1 )
  {
    if( !v3 )
      goto LABEL_6;
    v4 = *v3;
    result = *v3 & 0x8000000000000002ui64;
    if( result == 0x8000000000000002ui64 )
    {
      result = MEMORY[0];
      v4 = *v3;
    }
    if( (v4 & 1) == 0 )
    {
      v3 = (UINT64 *)v4;
    }
    else
    {
LABEL_6:
      v6 = v1 + 1;
      result = *(_QWORD *)(a1 + 56);
      v7 = result + 8 * ((unsigned __int64)*(unsigned int *)(a1 + 52) >> 5);
      while( (unsigned __int64)v6 < v7 )
      {
        result = *v6;
        if( (*v6 & 1) == 0 )
        {
          v3 = (UINT64 *)*v6;
          v1 = v6;
          v4 = *v6;
          goto LABEL_10;
        }
        ++v6;
      }
      v4 = 0i64;
    }
LABEL_10:
    if( !v4 )
      return result;
    v8 = (INT64 *)v3;
    for( i = v1; (*i & 1) == 0; i = (UINT64 *)*i )
    {
      if( (UINT64 *)*i == v3 )
      {
        *i = *v3;
        --*(_DWORD *)(a1 + 48);
        *v3 |= 0x8000000000000002ui64;
        v3 = i;
        goto LABEL_15;
      }
    }
    v8 = 0i64;
LABEL_15:
    if( v8 == (INT64 *)(a1 + 80) )
    {
      *(_DWORD *)(a1 + 636) &= ~4u;
      memset((VOID *)(a1 + 128), 0i64, 0x1C8u);
    }
    else
    {
      PopEtAggregateKeyCleanup(v8 + 2);
      ExFreePoolWithTag(v8, 0x54456F50u);
    }
  }
}

Referenced by:

PopEtEnergyTrackerCleanup
PopEtEnergyTrackerQuery