MiAllocateHotPatchRecord

CHAR *__fastcall MiAllocateHotPatchRecord(INT64 a1, INT64 a2, UINT8 **a3){
  int v3; 
  int v5; 
  __int64 v6; 
  CHAR *v7; 
  v3 = a2;
  v5 = a1;
  LODWORD(v6) = MiAllocatePool((struct _SLIST_ENTRY *)0x100);
  v7 = (CHAR *)v6;
  if( v6 )
  {
    *(_DWORD *)(v6 + 24) = v5;
    *(_DWORD *)(v6 + 28) = v3;
    *(_WORD *)(v6 + 32) = *(_WORD *)a3;
    *(_WORD *)(v6 + 34) = *(_WORD *)a3;
    *(_QWORD *)(v6 + 40) = v6 + 48;
    memmove((UINT8 *)(v6 + 48), a3[1], *(unsigned __int16 *)a3);
  }
  return v7;
}

Referenced by:

MiLoadHotPatch
MiLoadHotPatchForUserSid
MmRegisterHotPatch