MiCommitVadCfgBits

NTSTATUS __stdcall MiCommitVadCfgBits(_MMVAD *Vad, _MI_VA_PAIR *VaRange, UINT8 *FillSet){
  _SEGMENT *v3; 
  _EPROCESS *Process; 
  __int64 v5; 
  __int64 v6; 
  VOID *v7; 
  unsigned __int64 BitMapInfo; 
  _SEGMENT ***v9; 
  UINT8 *v10; 
  UINT8 *v11; 
  _MMVAD *v12; 
  _MI_CFG_MODE v13; 
  VOID *v14; 
  NTSTATUS result; 
  _EWOW64PROCESS *WoW64Process; 
  unsigned __int16 Machine; 
  _MMWSL_INSTANCE *VmWorkingSetList; 
  _MI_CFG_BITMAP_INFO *p_LockedEntries; 

  v3 = 0i64;
  Process = KeGetCurrentThread()->ApcState.Process;
  if( !MiIsProcessCfgEnabled() )
    return 0;
  v7 = (VOID *)((*(unsigned int *)(v6 + 24) | ((unsigned __int64)*(unsigned __int8 *)(v6 + 32) << 32)) << 12);
  BitMapInfo = ((*(unsigned int *)(v6 + 28) | ((unsigned __int64)*(unsigned __int8 *)(v6 + 33) << 32)) << 12) + 4096;
  if( v5 )
  {
    v7 = *(VOID **)v5;
    BitMapInfo = (*(_QWORD *)(v5 + 8) | 0xFFFi64) + 1;
  }
  else if( (*(_DWORD *)(v6 + 48) & 0x100000) == 0 )
  {
    v9 = *(_SEGMENT ****)(v6 + 72);
    if( ((_DWORD)(*v9)[7] & 0x20) != 0 )
      v3 = **v9;
  }
  LODWORD(v10) = MiSelectCfgBitMap(Process, v7, v3);
  v11 = v10;
  result = MiMarkProcessCfgBits(v13, v12, v14, v7, (_MI_CFG_BITMAP_INFO *)BitMapInfo, v10);
  WoW64Process = Process->WoW64Process;
  if( WoW64Process )
  {
    Machine = WoW64Process->Machine;
    if( (Machine == 332 || Machine == 452) && result >= 0 )
    {
      VmWorkingSetList = Process->Vm.Instance.VmWorkingSetList;
      p_LockedEntries = (_MI_CFG_BITMAP_INFO *)&VmWorkingSetList[11];
      if( v11 != (UINT8 *)&VmWorkingSetList[11] )
        return MiMarkPrivateOpenCfgBits(p_LockedEntries, v7, (VOID *)BitMapInfo, 0i64);
      p_LockedEntries = (_MI_CFG_BITMAP_INFO *)&VmWorkingSetList[11].LockedEntries;
      if( (unsigned __int64)v7 <= 0x100000000i64 )
      {
        if( BitMapInfo > 0x100000000i64 )
          BitMapInfo = 0x100000000i64;
        return MiMarkPrivateOpenCfgBits(p_LockedEntries, v7, (VOID *)BitMapInfo, 0i64);
      }
    }
  }
  return result;
}

Referenced by:

MiCfgInitializeProcess
MiMapViewOfDataSection
MiMapViewOfImageSection
MiMapViewOfPhysicalSection
MiReserveUserMemory
MmProtectVirtualMemory