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