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