MiAddPrivateFixupEntryForSystemImage

__int64 __fastcall MiAddPrivateFixupEntryForSystemImage(__int64 a1, unsigned __int64 a2){
  struct _RTL_BITMAP *v4; 
  struct _RTL_BITMAP *v5; 
  _QWORD *v6; 
  _QWORD *v7; 
  struct _RTL_BITMAP *v8; 
  unsigned __int64 v9; 
  _QWORD *v10; 
  LODWORD(v4) = MiAllocatePool((struct _SLIST_ENTRY *)0x40);
  v5 = v4;
  if( !v4 )
    return 0i64;
  LODWORD(v6) = MiAllocatePool((struct _SLIST_ENTRY *)0x40);
  v7 = v6;
  v8 = v5;
  if( !v6 )
  {
LABEL_6:
    ExFreePoolWithTag(v8, 0);
    return 0i64;
  }
  MiInitializePrivateFixupBitmap(v5, (_QWORD *)a1);
  v7[5] = v5;
  v7[6] = a1;
  v7[2] = a2;
  v7[3] = a2 + (unsigned int)((*(_DWORD *)(*(_QWORD *)a1 + 8i64) << 12) - 1);
  v7[4] = *(_QWORD *)(*(_QWORD *)a1 + 32i64);
  if( (unsigned int)MiGetSystemRegionType(a2) == 1
    && (*(_DWORD *)(a1 + 56) & 0x800) == 0
    && !(unsigned int)MiCreateSessionDriverProtos((__int64 *)a1, a2, (__int64)v7) )
  {
    ExFreePoolWithTag(v7, 0);
    v8 = v5;
    goto LABEL_6;
  }
  v9 = ExAcquireSpinLockExclusive(&dword_140C4CA24);
  v10 = (_QWORD *)qword_140C4CA08;
  if( *(__int64 **)qword_140C4CA08 != &qword_140C4CA00 )
    __fastfail(3u);
  *v7 = &qword_140C4CA00;
  v7[1] = v10;
  *v10 = v7;
  qword_140C4CA08 = (__int64)v7;
  ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)&dword_140C4CA24);
  __writecr8(v9);
  return 1i64;
}

Referenced by:

MiGetSystemAddressForImage