MiAllocateHotPatchRecord

_DWORD *__fastcall MiAllocateHotPatchRecord(int a1, int a2, const VOID **a3){
  _DWORD *Pool; 
  _DWORD *v7; 

  Pool = MiAllocatePool(256i64, *(unsigned __int16 *)a3 + 48i64, 0x70486D4Dui64);
  v7 = Pool;
  if( Pool )
  {
    Pool[6] = a1;
    Pool[7] = a2;
    *((_WORD *)Pool + 16) = *(_WORD *)a3;
    *((_WORD *)Pool + 17) = *(_WORD *)a3;
    *((_QWORD *)Pool + 5) = Pool + 12;
    memmove(Pool + 12, a3[1], *(unsigned __int16 *)a3);
  }
  return v7;
}

Referenced by:

MiLoadHotPatch
MiLoadHotPatchForUserSid
MmRegisterHotPatch