HvlpSlowFlushListTb
void __fastcall HvlpSlowFlushListTb(__int64 a1, char a2, char a3, unsigned int a4, UINT64 *a5, unsigned int a6){
char v9;
_QWORD *v10;
INT64 v11;
__int64 v12;
__int64 v13;
PHYSICAL_ADDRESS PageInfo[2];
INT64 v16[2];
char StackBuffer[48];
v9 = 1;
*(_OWORD *)&PageInfo[0].anonymous_0.LowPart = 0i64;
*(_OWORD *)v16 = 0i64;
v10 = HvlpAcquireHypercallPage(PageInfo, 1ui64, StackBuffer, 0x18ui64);
v11 = (INT64)v10;
if( a6 > 0x1FD || (PageInfo[0].anonymous_0.LowPart & 2) != 0 )
{
if( a3 )
{
v13 = *(_QWORD *)(a1 + 16);
*(_OWORD *)v10 = *(_OWORD *)a1;
v10[2] = v13;
}
}
else
{
HvlpCopyFlushVaList(a4, 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(v16[1], v11, a6, 0x18ui64);
}
if( a3 )
HvcallInitiateHypercall();
HvlpReleaseHypercallPage((_HVLP_HYPERCALL_PAGE_INFO *)PageInfo);
}Referenced by:
HvlpFlushRangeListTb