HvGetHiveLogFileStatus

char __fastcall HvGetHiveLogFileStatus(__int64 a1, unsigned int a2, int *a3){
  unsigned __int64 v4; 
  __int64 v6; 
  __int64 v7; 
  int v8; 
  unsigned __int64 v9; 
  __int64 v10; 
  unsigned __int64 v11; 
  int v12; 

  v4 = a2;
  v6 = (unsigned int)(*(_DWORD *)(a1 + 104) << 9)
     + 40i64
     + 8i64 * (unsigned int)HvpCountSetRangesInVector((_RTL_BITMAP *)(a1 + 88));
  if( RtlAreBitsClear((_RTL_BITMAP *)(a1 + 88), 0i64, 8ui64) )
    v6 += 4104i64;
  v7 = *(unsigned int *)(a1 + 176);
  v8 = 0;
  *a3 = 0;
  v9 = v6 + v7;
  if( *(_BYTE *)(a1 + 191) )
  {
    v8 = 2;
    *a3 = 2;
  }
  if( v9 > 0x2000000 )
  {
    v8 |= 4u;
    *a3 = v8;
  }
  if( *(_DWORD *)(a1 + 168) == -1 )
  {
    v8 |= 8u;
    *a3 = v8;
  }
  if( v8 )
  {
    LOBYTE(v11) = PoIsInitializedStopWatch((_QWORD *)(a1 + 4248));
    if( (_BYTE)v11 )
    {
      v12 = v8 | 1;
      goto LABEL_14;
    }
  }
  v10 = *(unsigned int *)(a1 + 176);
  if( v10 + v6 >= v4 )
  {
    v8 |= 0x10u;
    *a3 = v8;
    LODWORD(v10) = *(_DWORD *)(a1 + 176);
  }
  v11 = v6 + (unsigned int)v10;
  if( v11 >= v4 )
  {
    v12 = v8 | 0x20;
LABEL_14:
    *a3 = v12;
  }
  return v11;
}

Referenced by:

CmpGenerateFlushControlData