HvlpSlowFlushListTbEx
INT32 *__stdcall HvlpSlowFlushListTbEx(){
_KAFFINITY_EX *v0;
unsigned __int64 *v1;
char v2;
char v3;
char v4;
unsigned __int64 *v5;
char v6;
__int64 v7;
_HV_GENERIC_SET *v8;
INT64 v9;
int v10;
INT32 *result;
char v12;
_KAFFINITY_EX *Affinity;
PHYSICAL_ADDRESS PageInfo[2];
INT64 v15[2];
char StackBuffer[64];
unsigned int v17;
UINT64 *v18;
unsigned int v19;
v12 = v2;
v4 = v3;
Affinity = v0;
v5 = v1;
v6 = 1;
v7 = 0i64;
*(_OWORD *)&PageInfo[0].anonymous_0.LowPart = 0i64;
*(_OWORD *)v15 = 0i64;
v8 = (_HV_GENERIC_SET *)HvlpAcquireHypercallPage(PageInfo, 1ui64, StackBuffer, 0x20ui64);
v9 = (INT64)v8;
if( (PageInfo[0].anonymous_0.LowPart & 2) != 0 )
{
if( v4 )
{
v8->Format = *v5;
v8->ValidBanksMask = v5[1];
HvlpAffinityToHvProcessorSet(0i64, (_HV_GENERIC_SET *)v8->BankContents, 0i64);
}
}
else
{
if( v4 )
{
v8->Format = *v5;
v8->ValidBanksMask = v5[1];
HvlpAffinityToHvProcessorSet(Affinity, (_HV_GENERIC_SET *)v8->BankContents, 0xFE0ui64);
v7 = (unsigned int)(v10 + 32);
}
if( v7 + 8 * (unsigned __int64)v19 <= 0x1000 )
{
HvlpCopyFlushVaList(v17, v18, (HvlpFlags & 0x2000) != 0, (INT64 *)(v9 + (unsigned int)v7));
if( v4 && (HvlpFlags & 0x2000) == 0 )
*(_QWORD *)(v9 + 8) |= 8ui64;
v6 = 0;
}
}
if( v12 )
{
if( v6 )
VslFlushSecureAddressSpace();
else
VslSlowFlushSecureRangeList(v15[1], v9, v19, (unsigned int)v7);
}
if( v4 )
HvcallInitiateHypercall();
HvlpReleaseHypercallPage((_HVLP_HYPERCALL_PAGE_INFO *)PageInfo);
return result;
}Referenced by:
HvlpFlushRangeListTbEx