MiFreePatchTableProtos
NTSTATUS __stdcall MiFreePatchTableProtos(PVOID P){
unsigned __int64 v1;
unsigned __int64 *v3;
_BOOL4 v4;
__int64 v5;
__int64 v6;
unsigned __int64 Long;
int v8;
v1 = 0i64;
v3 = (unsigned __int64 *)P;
v4 = (dword_140C4C9F0 & 0xFFF) != 0;
v5 = ((unsigned int)dword_140C4C9F0 >> 12) + v4;
if( ((unsigned int)dword_140C4C9F0 >> 12) + v4 )
{
do
{
LODWORD(v6) = MI_READ_PTE_LOCK_FREE((INT64)v3);
if( !v6 )
break;
Long = ZeroPte.u.Long;
LOBYTE(v8) = MiPteInShadowRange((UINT64)v3);
if( v8 && (KeGetCurrentThread()->ApcState.Process->Flags3 & 0x1000) != 0 && (ZeroPte.u.Long & 1) != 0 )
Long = ZeroPte.u.Long | 0x8000000000000000ui64;
*v3++ = Long;
--v5;
}
while( v5 );
}
if( 8 * v5 )
{
do
{
MiUnlockPagedAddress((char *)P + v1);
v1 += 4096i64;
}
while( v1 < 8 * v5 );
}
return(unsigned int)ExFreePoolWithTag(P, 0);
}Referenced by:
MmLoadSystemImageEx