MmRegisterHotPatch

NTSTATUS __stdcall MmRegisterHotPatch(PCUNICODE_STRING SourceString){
  unsigned int v1; 
  unsigned int v2; 
  unsigned int v3; 
  unsigned int v4; 
  int v6; 
  int HotPatch; 
  _ETHREAD *Lock; 
  CHAR *HotPatchRecord; 
  unsigned int v11; 
  unsigned int v12; 
  INT64 a3; 
  v12 = v2;
  v11 = v1;
  LODWORD(a3) = 0;
  v3 = v2;
  v4 = v1;
  v6 = 1;
  if( (MiFlags & 0x8000) != 0 )
  {
    HotPatch = VslDetermineHotPatchType(v1, v2, &a3);
    if( HotPatch < 0 )
    {
LABEL_12:
      MiLogHotPatchOperationStatus(v4, v3, (__int128 *)SourceString, HotPatch, 1);
      return HotPatch;
    }
    if( (a3 & 2) != 0 )
      return MiLoadHotPatch(SourceString);
  }
  Lock = MmAcquireLoadLock();
  HotPatchRecord = MiAllocateHotPatchRecord(v4, v3, (UINT8 **)SourceString);
  if( HotPatchRecord )
  {
    MiInsertHotPatchRecord(&MiGlobalHotPatchList, (RTL_BALANCED_NODE *)HotPatchRecord, 0i64);
    v6 = 0;
    if( (MiFlags & 0x8000) == 0
      || (int)MiApplyHotPatchToDriver(v4, v3, (UNICODE_STRING *)SourceString, 0i64) < 0
      || (v3 = v12, HotPatch = MiLoadHotPatch(SourceString), v4 = v11, HotPatch >= 0) )
    {
      HotPatch = 0;
    }
  }
  else
  {
    HotPatch = -1073741670;
  }
  MmReleaseLoadLock(Lock);
  if( v6 )
    goto LABEL_12;
  return HotPatch;
}

Referenced by:

IopLoadBootHotPatches