HvpMapHiveImageFromViewMap
INT64 __fastcall HvpMapHiveImageFromViewMap(INT64 a1, INT64 a2, UINT64 a3){
int v4;
int v5;
_QWORD *v6;
char v7;
unsigned int v8;
unsigned int v9;
INT64 CellMap;
__int64 v11;
unsigned __int64 v12;
int v13;
INT64 v14;
unsigned __int64 v15;
__int64 v16;
v4 = a3;
v5 = a2;
CmpClaimGlobalQuota((unsigned int)a3, a2);
LODWORD(v6) = 0;
if( v7 )
{
v8 = 0;
v9 = v5 + v4;
if( v9 )
{
do
{
CellMap = HvpGetCellMap(a1, v8);
v12 = *(_QWORD *)v11;
v8 = v13 + 4096;
v14 = CellMap;
if( (*(_BYTE *)(v11 + 8) & 1) != 0 )
{
if( v12 )
v12 ^= v11;
else
v12 = (unsigned __int64)v6;
}
while( v12 )
{
if( v8 >= *(__int64 *)(v12 + 40) )
{
if( v8 < *(__int64 *)(v12 + 48) )
break;
v15 = *(_QWORD *)(v12 + 8);
}
else
{
v15 = *(_QWORD *)v12;
}
if( (*(_BYTE *)(v11 + 8) & 1) != 0 && v15 )
v12 ^= v15;
else
v12 = v15;
}
v16 = *(_QWORD *)(v12 + 56) - *(_QWORD *)(v12 + 24);
*(_QWORD *)v14 = v6;
*(_DWORD *)(v14 + 16) = 4096;
*(_QWORD *)(v14 + 8) = (v8 + v16) | 1;
}
while( v8 < v9 );
}
}
else
{
LODWORD(v6) = -1073741670;
}
return(unsigned int)v6;
}Referenced by:
HvpPerformLogFileRecovery