HvpViewMapCleanup
CHAR __fastcall HvpViewMapCleanup(INT64 a1){
INT64 v1;
bool v3;
unsigned __int64 v4;
CHAR result;
int v6;
_QWORD *v7;
__int64 v8;
unsigned __int64 v9;
unsigned __int64 v10;
v1 = a1 + 40;
v3 = (*(_BYTE *)(a1 + 48) & 1) == 0;
v4 = *(_QWORD *)(a1 + 40);
if( !v3 && v4 )
v4 ^= v1;
result = *(_BYTE *)(v1 + 8);
v6 = result & 1;
if( v4 )
{
while( 1 )
{
while( 1 )
{
while( *(_QWORD *)v4 )
{
v7 = (_QWORD *)v4;
if( v6 )
v4 ^= *(_QWORD *)v4;
else
v4 = *(_QWORD *)v4;
*v7 = 0i64;
}
v8 = *(_QWORD *)(v4 + 8);
if( !v8 )
break;
v9 = v4;
if( v6 )
v4 ^= v8;
else
v4 = *(_QWORD *)(v4 + 8);
*(_QWORD *)(v9 + 8) = 0i64;
}
v10 = *(_QWORD *)(v4 + 16) & 0xFFFFFFFFFFFFFFFCui64;
if( v6 && v10 )
v10 ^= v4;
HvpViewMapDeleteViewTreeNode((PPRIVILEGE_SET)v4);
if( !v10 )
break;
v4 = v10;
}
result = *(_BYTE *)(v1 + 8);
}
*(_QWORD *)v1 = 0i64;
*(_QWORD *)(v1 + 8) = 0i64;
if( (result & 1) != 0 )
*(_BYTE *)(v1 + 8) = 1;
if( *(_QWORD *)a1 )
return CmSiCloseSection(*(VOID **)a1);
return result;
}Referenced by:
HvHiveCleanup