CmpIsHiveEligibleForLazyReconcile
char __fastcall CmpIsHiveEligibleForLazyReconcile(unsigned int *a1){
unsigned int EffectiveLogSizeCapForHive;
unsigned int v2;
__int64 v3;
int v4;
unsigned int v5;
unsigned int v6;
__int64 v7;
UINT64 UnbiasedInterruptTime;
__int64 v9;
if( (a1[40] & 0x8001) != 0 || !a1[32] || CmpHoldLazyFlush )
return 0;
if( !CmpUserPresent )
return 1;
EffectiveLogSizeCapForHive = HvGetEffectiveLogSizeCapForHive((_HHIVE *)a1);
if( *(_DWORD *)(v3 + 176) >= EffectiveLogSizeCapForHive )
return 1;
v4 = *(_DWORD *)(v3 + 164);
v5 = v2;
if( v4 == 1 )
return 1;
v6 = v2;
v7 = v2;
do
{
if( v6 != v4 && *(_BYTE *)(v7 + v3 + 188) == (_BYTE)v2 )
++v5;
++v6;
++v7;
}
while( v6 < 2 );
if( v5
&& (UnbiasedInterruptTime = KiQueryUnbiasedInterruptTime(1u),
UnbiasedInterruptTime < *(_QWORD *)(v9 + 4184) + 10000000 * (unsigned __int64)(unsigned int)dword_140C004C0) )
{
return 0;
}
else
{
return 1;
}
}Referenced by:
CmpDoReconcileNextHive