MiFreePatchTableProtos

INT64 __stdcall MiFreePatchTableProtos(PVOID P){
  unsigned __int64 v1; 
  _QWORD *v3; 
  BOOL v4; 
  __int64 v5; 
  INT64 result; 
  v1 = 0i64;
  v3 = P;
  v4 = (dword_140C4C9F0 & 0xFFF) != 0;
  v5 = ((unsigned int)dword_140C4C9F0 >> 12) + v4;
  if( ((unsigned int)dword_140C4C9F0 >> 12) + v4 )
  {
    do
    {
      if( !MI_READ_PTE_LOCK_FREE((INT64)v3) )
        break;
      *v3++ = ZeroPte;
      --v5;
    }
    while( v5 );
  }
  if( 8 * v5 )
  {
    do
    {
      MiUnlockPagedAddress((char *)P + v1);
      v1 += 4096i64;
    }
    while( v1 < 8 * v5 );
  }
  ExFreePoolWithTag(P, 0);
  return result;
}

Referenced by:

MiUnloadSystemImage
MmLoadSystemImageEx