MiSessionInsertImage

__int64 __fastcall MiSessionInsertImage(unsigned __int64 a1, __int64 a2){
  unsigned int v3; 
  _MI_PARTITION *v4; 
  INT64 v5; 
  INT64 v6; 
  UINT64 v7; 
  __int64 v8; 
  int v9; 
  int v10; 
  INT64 *SharedVm; 
  __int64 v12; 
  bool v13; 
  __int64 v15; 
  NTSTATUS active; 
  __int64 SessionVm; 
  __int64 v18; 
  __int64 v19; 
  INT64 result[25]; 
  UINT8 OldIrql; 
  UINT8 v23; 
  v3 = 0;
  OldIrql = 0;
  memset((INT64)result, 0i64);
  v19 = *(_QWORD *)(*((_QWORD *)KeGetCurrentThread() + 23) + 1368i64);
  v4 = *(_MI_PARTITION **)(qword_140C4E388 + 8i64 * *(unsigned __int16 *)(v19 + 430));
  SessionVm = MiGetSessionVm();
  LODWORD(v5) = MiAllocatePool((struct _SLIST_ENTRY *)0x40);
  v6 = v5;
  if( !v5 )
    return 3221225495i64;
  v7 = *(unsigned int *)(*(_QWORD *)a2 + 8i64);
  if( *(_DWORD *)(*(_QWORD *)a2 + 8i64) && !(unsigned int)MiChargeCommit(v4, (unsigned int)v7, 0i64) )
  {
    active = -1073741670;
LABEL_25:
    ExFreePoolWithTag((PVOID)v6, 0);
    return(unsigned int)active;
  }
  LOBYTE(v8) = MiBytesToMapSystemImage((_FAST_MUTEX *)(v7 << 12));
  v18 = v8;
  v9 = MiControlAreaRequiresCharge(a2);
  v10 = v9;
  if( !v9 )
  {
    MiReturnCommit(v4, v7);
    active = -1073740277;
    goto LABEL_25;
  }
  if( v9 == 2 )
  {
    active = MiReferenceActiveSubsection(a2 + 128, 264, 0x11u);
    if( active < 0 )
    {
      MiReturnCommit(v4, v7);
      goto LABEL_25;
    }
  }
  SharedVm = MiGetSharedVm(SessionVm);
  v23 = ExAcquireSpinLockExclusive((PEX_SPIN_LOCK)SharedVm);
  *((_DWORD *)SharedVm + 1) = 0;
  MmLockLoadedModuleListExclusive(&OldIrql);
  v12 = *(_QWORD *)(v19 + 88);
  v13 = 0;
  if( !v12 )
  {
LABEL_7:
    memset(v6, 0i64);
    *(_QWORD *)(v6 + 40) = a1 | 3;
    *(_QWORD *)(v6 + 72) = v7;
    *(_QWORD *)(v6 + 48) = a1 + v18 - 1;
    *(_DWORD *)(v6 + 60) = 1;
    *(_DWORD *)(v6 + 56) = *(_DWORD *)(v19 + 8);
    *(_QWORD *)(v6 + 80) = a2;
    *(_QWORD *)(v6 + 88) = -2i64;
    if( v10 == 2 )
      *(_BYTE *)(v6 + 65) = 1;
    RtlAvlInsertNodeEx((unsigned __int64 *)(v19 + 88), v12, v13, (_QWORD *)v6);
    ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)PsLoadedModuleSpinLock);
    __writecr8(OldIrql);
    MiUnlockWorkingSetExclusive(SessionVm, v23);
    _InterlockedExchangeAdd64((volatile signed __int64 *)(v19 + 48), v7);
    result[0] = a2;
    MiManageSubsectionView(result, v6 + 24, 3i64);
    return v3;
  }
  while( a1 > *(_QWORD *)(v12 + 48) )
  {
    v15 = *(_QWORD *)(v12 + 8);
    if( !v15 )
    {
      v13 = 1;
      goto LABEL_7;
    }
LABEL_15:
    v12 = v15;
  }
  if( a1 < (*(_QWORD *)(v12 + 40) & 0xFFFFFFFFFFFFFFFCui64) )
  {
    v15 = *(_QWORD *)v12;
    if( !*(_QWORD *)v12 )
      goto LABEL_7;
    goto LABEL_15;
  }
  ++*(_DWORD *)(v12 + 60);
  ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)PsLoadedModuleSpinLock);
  __writecr8(OldIrql);
  MiUnlockWorkingSetExclusive(SessionVm, v23);
  v3 = 272;
  ExFreePoolWithTag((PVOID)v6, 0);
  MiReturnCommit(v4, v7);
  if( v10 == 2 )
    MiReturnCrossPartitionControlAreaCharges(a2);
  return v3;
}

Referenced by:

MiGetSystemAddressForImage
MmLoadSystemImageEx