MmMapLockedPagesWithReservedMapping

NTSTATUS __stdcall MmMapLockedPagesWithReservedMapping(
        PVOID MappingAddress,
        UINT64 PoolTag,
        MDL *MemoryDescriptorList,
        MEMORY_CACHING_TYPE CacheType){
  ULONG_PTR v5; 
  unsigned __int64 v6; 
  KIRQL v8; 
  __int64 v9; 
  unsigned __int64 v10; 
  unsigned __int64 v11; 
  unsigned __int64 v12; 
  unsigned __int64 v13; 
  unsigned __int64 v14; 
  _MMPTE *v15; 
  ULONG_PTR v16; 
  ULONG_PTR BugCheckParameter4; 
  MDL *i; 
  _MDL *Next; 
  v5 = (unsigned int)PoolTag;
  v6 = (((LODWORD(MemoryDescriptorList->StartVa) + MemoryDescriptorList->ByteOffset) & 0xFFF)
      + (unsigned __int64)MemoryDescriptorList->ByteCount
      + 4095) >> 12;
  v8 = ExAcquireSpinLockShared(&dword_140C4E900);
  v9 = qword_140C4E908;
  v10 = (unsigned __int64)MappingAddress & 0xFFFFFFFFFFFFF000ui64;
  v11 = v8;
  while( 1 )
  {
    while( 1 )
    {
      if( !v9 )
        KeBugCheckEx(0xDAu, 0x106ui64, (ULONG_PTR)MappingAddress, v5, 1ui64);
      v12 = *(_QWORD *)(v9 + 24);
      if( v10 >= v12 )
        break;
      v9 = *(_QWORD *)v9;
    }
    if( v10 < v12 + (*(_QWORD *)(v9 + 32) << 12) )
      break;
    v9 = *(_QWORD *)(v9 + 8);
  }
  ExReleaseSpinLockSharedFromDpcLevel(&dword_140C4E900);
  __writecr8(v11);
  if( *(_DWORD *)(v9 + 40) != (_DWORD)v5 )
    KeBugCheckEx(0xDAu, 0x104ui64, (ULONG_PTR)MappingAddress, v5, *(unsigned int *)(v9 + 40));
  if( (*(_DWORD *)(v9 + 44) & 1) != 0 )
  {
    if( ((unsigned __int16)MappingAddress & 0xFFF) != 0 )
      return 0;
    v14 = v6;
    v13 = *(_QWORD *)(v9 + 32) - (((unsigned __int64)MappingAddress - *(_QWORD *)(v9 + 24)) >> 12);
  }
  else
  {
    v13 = *(_QWORD *)(v9 + 32);
    MappingAddress = *(PVOID *)(v9 + 24);
    v14 = v13;
  }
  if( v6 <= v13 )
  {
    v15 = (_MMPTE *)((char *)MmGetPteBase() + (((unsigned __int64)MappingAddress >> 9) & 0x7FFFFFFFF8i64));
    v16 = (ULONG_PTR)v15;
    BugCheckParameter4 = (ULONG_PTR)v15 + 8 * v14;
    if( (unsigned __int64)v15 < BugCheckParameter4 )
    {
      do
      {
        if( MI_READ_PTE_LOCK_FREE(v16) )
          KeBugCheckEx(0xDAu, 0x107ui64, (ULONG_PTR)MappingAddress, v16, BugCheckParameter4);
        v16 += 8i64;
      }
      while( v16 < BugCheckParameter4 );
    }
    for( i = MemoryDescriptorList + 1; ; i = (MDL *)((char *)i + 8) )
    {
      Next = i->Next;
      if( i->Next <= (_MDL *)0xFFFFFFFFFi64
        && (*((_QWORD *)MmGetPfnDb() + 6 * (_QWORD)Next + 5) & 0x4000000000000i64) != 0
        && (int)MiLegitimatePageForDriversToMap((INT64)MmGetPfnDb() + 48 * (_QWORD)Next) < 0 )
      {
        break;
      }
      if( !--v6 )
        return MiMapMdlCommon(MemoryDescriptorList, v15, 0i64, MmNonCachedUnordered);
    }
  }
  return 0;
}

Referenced by:

EtwpSavePersistedLogger
HalpDmaAcquireBufferMappings
HalpDmaFlushBufferWithEmergencyResources
HalpDmaSyncMapBuffersWithEmergencyResources
PnprCopyReservedMapping
PnprMapPhysicalPages
PspIumFreePhysicalPages
SmFpAllocate
sub_1403E91C0