HvlpSlowFlushListTb
PSLIST_ENTRY __fastcall HvlpSlowFlushListTb(INT64 a1, CHAR a2, CHAR a3, UINT64 a4, UINT64 *a5, UINT64 a6){
unsigned int v6;
char v9;
LONGLONG *v10;
INT64 v11;
__int64 v12;
LONGLONG v13;
__int128 v16;
INT64 v17[2];
char v18[48];
v6 = a4;
v9 = 1;
v16 = 0i64;
*(_OWORD *)v17 = 0i64;
v10 = HvlpAcquireHypercallPage((PHYSICAL_ADDRESS *)&v16, 1, (__int64)v18, 24i64);
v11 = (INT64)v10;
if( (unsigned int)a6 > 0x1FD || (v16 & 2) != 0 )
{
if( a3 )
{
v13 = *(_QWORD *)(a1 + 16);
*(_OWORD *)v10 = *(_OWORD *)a1;
v10[2] = v13;
}
}
else
{
HvlpCopyFlushVaList(v6, a5, (HvlpFlags & 0x2000) != 0, v10 + 3);
if( a3 )
{
v12 = *(_QWORD *)(a1 + 16);
*(_OWORD *)v11 = *(_OWORD *)a1;
*(_QWORD *)(v11 + 16) = v12;
if( (HvlpFlags & 0x2000) == 0 )
*(_QWORD *)(v11 + 8) |= 8ui64;
}
v9 = 0;
}
if( a2 )
{
if( v9 )
VslFlushSecureAddressSpace();
else
VslSlowFlushSecureRangeList(v17[1], v11, (unsigned int)a6, 0x18ui64);
}
if( a3 )
HvcallInitiateHypercall();
return HvlpReleaseHypercallPage((unsigned int *)&v16);
}Referenced by:
HvlpFlushRangeListTb