HvlpSlowFlushListTbEx
PSLIST_ENTRY __fastcall HvlpSlowFlushListTbEx(_QWORD *a1, INT64 a2, CHAR a3, CHAR a4, UINT64 a5, INT64 a6, UINT64 a7){
char v9;
__int64 v10;
LONGLONG *v11;
INT64 v12;
__int128 v16;
INT64 v17[2];
char v18[64];
v9 = 1;
v10 = 0i64;
v16 = 0i64;
*(_OWORD *)v17 = 0i64;
v11 = HvlpAcquireHypercallPage((PHYSICAL_ADDRESS *)&v16, 1, (__int64)v18, 32i64);
v12 = (INT64)v11;
if( (v16 & 2) != 0 )
{
if( a4 )
{
*v11 = *a1;
v11[1] = a1[1];
HvlpAffinityToHvProcessorSet(0i64, v11 + 2, 0);
}
}
else
{
if( a4 )
{
*v11 = *a1;
v11[1] = a1[1];
v10 = (unsigned int)HvlpAffinityToHvProcessorSet(a2, v11 + 2, 0xFE0u) + 32;
}
if( v10 + 8 * (unsigned __int64)(unsigned int)a7 <= 0x1000 )
{
HvlpCopyFlushVaList((unsigned int)a5, (UINT64 *)a6, (HvlpFlags & 0x2000) != 0, (INT64 *)(v12 + (unsigned int)v10));
if( a4 && (HvlpFlags & 0x2000) == 0 )
*(_QWORD *)(v12 + 8) |= 8ui64;
v9 = 0;
}
}
if( a3 )
{
if( v9 )
VslFlushSecureAddressSpace();
else
VslSlowFlushSecureRangeList(v17[1], v12, (unsigned int)a7, (unsigned int)v10);
}
if( a4 )
HvcallInitiateHypercall();
return HvlpReleaseHypercallPage((unsigned int *)&v16);
}Referenced by:
HvlpFlushRangeListTbEx