PopEtEnergyValuesDeltaCalculate

NTSTATUS __fastcall PopEtEnergyValuesDeltaCalculate(__int64 a1, _QWORD *a2, __int64 a3, int *a4){
  _QWORD *v5; 
  int v6; 
  char *v7; 
  __int64 v8; 
  __int64 v11; 
  INT64 *v12; 
  __int64 v13; 
  __int64 v14; 
  INT64 *v15; 
  __int64 v16; 
  NTSTATUS result; 
  __int64 v18; 
  __int64 v19; 
  __int64 v20; 
  int v21; 
  __int64 v22; 
  __int64 v23; 
  __int64 v24; 
  __int64 v25; 
  __int64 v26; 
  __int64 v27; 

  v5 = a2;
  *(_QWORD *)(a3 + 64) = a2[8] - *(_QWORD *)(a1 + 64);
  v6 = 1;
  v7 = (char *)a2 - a1;
  *(_QWORD *)(a3 + 72) = a2[9] - *(_QWORD *)(a1 + 72);
  v8 = 3i64;
  *(_QWORD *)(a3 + 80) = a2[10] - *(_QWORD *)(a1 + 80);
  v11 = a2[11];
  v12 = (INT64 *)(a1 + 104);
  *(_QWORD *)(a3 + 88) = v11 - *(_QWORD *)(a1 + 88);
  *(_QWORD *)(a3 + 96) = v5[12] - *(_QWORD *)(a1 + 96);
  v13 = a3 - a1;
  do
  {
    RtlStateDurationDelta((INT64)v12 + v13, v12, (UINT64 *)((char *)v12 + (_QWORD)v7));
    v12 = (INT64 *)(v14 + 8);
    --v8;
  }
  while( v8 );
  v15 = (INT64 *)(a1 + 384);
  v16 = 5i64;
  do
  {
    result = RtlStateDurationDelta((INT64)v15 + v13, v15, (UINT64 *)&v7[(_QWORD)v15]);
    v15 = (INT64 *)(v18 + 8);
    --v16;
  }
  while( v16 );
  v19 = 4i64;
  *(_DWORD *)(a3 + 128) = *((_DWORD *)v5 + 32) - *(_DWORD *)(a1 + 128);
  v20 = 0i64;
  *(_DWORD *)(a3 + 132) = *((_DWORD *)v5 + 33) - *(_DWORD *)(a1 + 132);
  *(_DWORD *)(a3 + 136) = *((_DWORD *)v5 + 34) - *(_DWORD *)(a1 + 136);
  *(_DWORD *)(a3 + 424) = *((_DWORD *)v5 + 106) - *(_DWORD *)(a1 + 424);
  v21 = *((_DWORD *)v5 + 107) - *(_DWORD *)(a1 + 428);
  v22 = a1 - (_QWORD)v5;
  *(_DWORD *)(a3 + 428) = v21;
  v23 = a3 - (_QWORD)v5;
  *(_OWORD *)(a3 + 272) = *((_OWORD *)v5 + 17);
  *(_OWORD *)(a3 + 288) = *((_OWORD *)v5 + 18);
  *(_OWORD *)(a3 + 304) = *((_OWORD *)v5 + 19);
  *(_OWORD *)(a3 + 320) = *((_OWORD *)v5 + 20);
  *(_OWORD *)(a3 + 336) = *((_OWORD *)v5 + 21);
  *(_OWORD *)(a3 + 352) = *((_OWORD *)v5 + 22);
  *(_OWORD *)(a3 + 368) = *((_OWORD *)v5 + 23);
  do
  {
    v24 = 2i64;
    do
    {
      v25 = *v5 - *(_QWORD *)((char *)v5 + v22);
      v26 = v25 + v20;
      *(_QWORD *)((char *)v5 + v23) = v25;
      v27 = v5[18] - *(_QWORD *)((char *)v5 + v22 + 144);
      *(_QWORD *)((char *)v5 + v23 + 144) = v27;
      v20 = v27 + v26;
      *(_QWORD *)((char *)v5 + v23 + 208) = v5[26] - *(_QWORD *)((char *)v5 + v22 + 208);
      ++v5;
      --v24;
    }
    while( v24 );
    --v19;
  }
  while( v19 );
  if( v20
    || *(_QWORD *)(a3 + 64)
    || *(_QWORD *)(a3 + 72)
    || *(_QWORD *)(a3 + 80)
    || (*(_DWORD *)(a3 + 108) & 0x7FFFFFFF) != 0
    || (*(_DWORD *)(a3 + 116) & 0x7FFFFFFF) != 0
    || (*(_DWORD *)(a3 + 124) & 0x7FFFFFFF) != 0
    || (*(_DWORD *)(a3 + 388) & 0x7FFFFFFF) != 0
    || (*(_DWORD *)(a3 + 396) & 0x7FFFFFFF) != 0
    || (*(_DWORD *)(a3 + 404) & 0x7FFFFFFF) != 0
    || (*(_DWORD *)(a3 + 412) & 0x7FFFFFFF) != 0
    || (*(_DWORD *)(a3 + 420) & 0x7FFFFFFF) != 0
    || *(_DWORD *)(a3 + 128)
    || *(_DWORD *)(a3 + 132)
    || *(_DWORD *)(a3 + 136) )
  {
    v6 = 0;
  }
  *a4 = v6;
  return result;
}

Referenced by:

PopEtEnergyTrackerUpdateAggregate