HvpGenerateLogMetadata
NTSTATUS __fastcall HvpGenerateLogMetadata(_RTL_BITMAP *BitMapHeader, INT64 a2, UINT64 *a3){
NTSTATUS v3;
unsigned int v7;
unsigned int v8;
unsigned int v9;
unsigned int v10;
NTSTATUS NextForwardRunClear;
int v12;
UINT64 StartingRunIndex;
v3 = 0;
LODWORD(StartingRunIndex) = 0;
v7 = HvpCountSetRangesInVector(BitMapHeader);
v8 = v7;
if( a2 && *(_DWORD *)a3 >= v7 )
{
v9 = 0;
v10 = 0;
if( BitMapHeader->SizeOfBitMap )
{
while( 1 )
{
NextForwardRunClear = RtlFindNextForwardRunClear((INT64)BitMapHeader, v9, &StartingRunIndex);
if( !NextForwardRunClear )
break;
v12 = StartingRunIndex;
if( (_DWORD)StartingRunIndex != v9 )
{
*(_DWORD *)(a2 + 8i64 * v10) = v9 << 9;
*(_DWORD *)(a2 + 8i64 * v10++ + 4) = (v12 - v9) << 9;
}
v9 = v12 + NextForwardRunClear;
if( v12 + NextForwardRunClear >= BitMapHeader->SizeOfBitMap )
goto LABEL_10;
}
*(_DWORD *)(a2 + 8i64 * v10) = v9 << 9;
*(_DWORD *)(a2 + 8i64 * v10 + 4) = (BitMapHeader->SizeOfBitMap - v9) << 9;
}
}
else
{
v3 = -1073741789;
}
LABEL_10:
*(_DWORD *)a3 = v8;
return v3;
}Referenced by:
HvpApplyLegacyLogFile
HvpGenerateLogEntry
HvpGenerateLogEntryMetadata