MiMarkRetpolineBits
INT64 __fastcall MiMarkRetpolineBits(INT64 a1){
__int64 v1;
UINT64 v2;
__int64 v3;
UINT64 v4;
UINT64 v5;
UINT64 v6;
int v7;
v2 = MiAddressToRetpolineBit(a1);
v4 = MiAddressToRetpolineBit((v3 + v1 + 0xFFFF) & 0xFFFFFFFFFFFF0000ui64);
v5 = v4;
v6 = v4 - v2;
if( v7 || RtlAreBitsClearEx((INT64)&qword_140C4C998, v2, v4 - v2) )
{
if( !(unsigned int)MiSplitBitmapPages(5i64, (char *)qword_140C4C9A0 + (v2 >> 3), v5 + (v2 & 7) - v2) )
return 3221225495i64;
RtlSetBitsEx((INT64)&qword_140C4C998, v2, v6);
}
else
{
RtlClearBitsEx((INT64)&qword_140C4C998, v2, v6);
}
return 0i64;
}Referenced by:
MiInitializeRetpoline
MiMarkKernelImageRetpolineBits
MiReloadBootLoadedDrivers
MmMarkHypercallPageRetpolineBit