VfCtxInit
VOID __fastcall VfCtxInit(INT64 a1, UINT64 a2){
XSTATE_CONTEXT *v2;
__int64 v3;
if( (MmVerifierData & 0x800) != 0 )
{
if( (KeFeatureBits & 0x800000) != 0 && KUSER_SHARED_DATA.XState.EnabledFeatures )
{
ViCtxXStateEnabledMask = KUSER_SHARED_DATA.XState.EnabledFeatures;
LODWORD(ViCtxXStateSize) = KUSER_SHARED_DATA.XState.Size;
}
v2 = &stru_140D4BC30;
v3 = 16i64;
do
{
if( ViCtxXStateEnabledMask && (int)KeAllocateXStateContext(v2 - 1, a2) >= 0 )
{
if( (int)KeAllocateXStateContext(v2, a2) >= 0 )
{
memset((INT64)v2[-1].Area, 0i64);
memset((INT64)v2->Area, 0i64);
HIDWORD(v2[-2].Area) |= 1u;
}
else
{
KeFreeXStateContext(v2);
}
}
_InterlockedIncrement(&ViCtxInitializedIsrStateBlocks);
v2 = (XSTATE_CONTEXT *)((char *)v2 + 80);
--v3;
}
while( v3 );
}
}Referenced by:
VfInitVerifierComponents