PopAddPagesToCompressedPageSet

char *__fastcall PopAddPagesToCompressedPageSet(
        __int64 a1,
        __int64 a2,
        unsigned int *a3,
        char *a4,
        char a5,
        int a6,
        __int64 a7){
  unsigned int v7; 
  char *v9; 
  unsigned int v11; 
  char *v13; 
  unsigned __int64 v14; 
  int v15; 
  int v16; 
  unsigned __int64 v17; 
  char *result; 
  unsigned int v19; 
  __int64 v20; 
  int v21; 
  unsigned int v22; 
  __int64 v23; 
  unsigned int v24; 
  v7 = 0;
  v24 = 0;
  v9 = *(char **)(a2 + 24);
  v11 = a6 << 12;
  if( v9 )
  {
    if( a5 )
    {
      v13 = *(char **)a2;
      memmove(*(UINT8 **)a2, (UINT8 *)a4, v11);
    }
    else
    {
      v13 = a4;
      v19 = *(_DWORD *)(a2 + 120);
      v20 = *(_QWORD *)(qword_140C234D8 + 40) - *(_QWORD *)(qword_140C234D8 + 56);
      if( v19 && (v21 = *(_DWORD *)(a2 + 124), (int)(100 * v21 / v19) <= dword_140C23484) )
      {
        v22 = *(_DWORD *)(qword_140C234D8 + 8);
        if( v20 >= (__int64)((unsigned __int64)v22 >> 1) )
        {
          *(_DWORD *)(a2 + 124) = v21 + 1;
          LOBYTE(v7) = v20 >= (__int64)((unsigned __int64)(3 * v22) >> 2);
          v7 += 2;
        }
      }
      else
      {
        LOBYTE(v7) = v20 >= (__int64)((unsigned __int64)*(unsigned int *)(qword_140C234D8 + 8) >> 1);
      }
      *(_DWORD *)(a2 + 120) = v19 + 1;
    }
    v14 = __rdtsc();
    RtlCompressBufferProgress(
      *((_WORD *)&PopCompressMethodMap + v7),
      v13,
      v11,
      v9,
      v23,
      &v24,
      *(_QWORD *)(a2 + 16),
      a7,
      a1);
    v16 = v15;
    v17 = __rdtsc();
    *(_QWORD *)(a2 + 40) += (((unsigned __int64)HIDWORD(v17) << 32) | (unsigned int)v17) - v14;
    if( v16 < 0 || v24 >= (7 * v11) >> 3 )
    {
      a4 = v13;
    }
    else
    {
      v11 = v24;
      a4 = v9;
    }
  }
  result = a4;
  *a3 = (v7 << 30) | ((v11 << 8) | (unsigned __int8)*a3) & 0x3FFFFFFF;
  return result;
}

Referenced by:

PopCompressHiberBlocks
PopWriteHiberImage