MiLockAndMapEntireDriver

NTSTATUS __stdcall MiLockAndMapEntireDriver(INT64 a1, INT64 *a2, _MDL **a3){
  _MDL *v6; 
  INT64 v7; 
  int v8; 
  UINT64 v9; 
  unsigned int v10; 
  _MDL *Mdl; 
  _MDL *v12; 
  _MMSUPPORT_INSTANCE *AnyMultiplexedVm; 
  UINT64 v14; 
  UINT64 v15; 
  INT64 v17; 
  INT64 a6; 

  LODWORD(a6) = 0;
  v6 = 0i64;
  v7 = 0i64;
  v8 = MiPrepareDriverPatchState((INT64)a2);
  if( v8 >= 0 )
  {
    v9 = *(unsigned int *)(a1 + 64);
    v10 = (*(_DWORD *)(a1 + 64) >> 12) + ((*(_DWORD *)(a1 + 64) & 0xFFF) != 0);
    if( a3 )
    {
      Mdl = IoAllocateMdl(*(VOID **)(a1 + 48), v9, 0, 0, 0i64);
      v6 = Mdl;
      if( !Mdl )
        return -1073741670;
      v7 = (INT64)&Mdl[1];
      if( v10 )
      {
        v12 = Mdl + 1;
        v9 = v10;
        do
        {
          v12->Next = (_MDL *)*(&stru_140C4DB30 + 497);
          v12 = (_MDL *)((char *)v12 + 8);
          --v9;
        }
        while( v9 );
      }
    }
    AnyMultiplexedVm = MiGetAnyMultiplexedVm(MiWorkingSetTypeSystemViews, (VOID *)v9);
    v8 = MiLockDriverPageRange(a2, (INT64)AnyMultiplexedVm, 0i64, v14, 2, (INT64)v6);
    if( v8 >= 0 && a3 )
    {
      v15 = (UINT64)MiReservePtes((_MI_SYSTEM_PTE_TYPE *)((char *)&stru_140C4DB30 + 4432), v10);
      if( v15 )
      {
        LODWORD(v17) = 4;
        v8 = MiFillSystemPtes(v15, v10, v7, 4ui64, v17, (INT64)&a6);
        v6->MdlFlags |= 1u;
        v6->MappedSystemVa = (void *)((__int64)((v15 << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16);
        *a3 = v6;
        v6 = 0i64;
      }
      else
      {
        v8 = -1073741670;
      }
    }
    if( v6 )
      IoFreeMdl(v6);
  }
  return v8;
}

Referenced by:

MmRemoveImportOptimizationForDriverVerifier