MiComputeProcessUserVa

NTSTATUS __stdcall MiComputeProcessUserVa(
        ULONG_PTR ProcessToInitialize,
        _EPROCESS *ProcessToClone,
        _SECTION *Section,
        _MMVAD_SHORT **VadList,
        VOID **NoAccessVa){
  __int64 v5; 
  __int64 v6; 
  _QWORD *v8; 
  unsigned __int64 v11; 
  __int64 v12; 
  __int64 v13; 
  NTSTATUS result; 
  __int16 v15; 

  v5 = *(_QWORD *)(*(_QWORD *)&ProcessToInitialize + 1680i64);
  v6 = *(_QWORD *)&ProcessToInitialize;
  *VadList = 0i64;
  v8 = (_QWORD *)(v5 + 320);
  v11 = 0x7FFFFFFF0000i64;
  v12 = 2i64;
  do
  {
    v8[1] = v8;
    *v8 = v8;
    v8 += 2;
    --v12;
  }
  while( v12 );
  if( !MiCreateSystemWsles() && (*(_DWORD *)(v6 + 2172) & 1) == 0 )
  {
    result = MiChargeFullProcessCommitment(v6, 4ui64);
    if( result < 0 )
      return result;
    MiUpdateChargedWsles(v6 + 1664);
  }
  if( !ProcessToClone && Section && (Section->u.LongFlags & 0x20) != 0 && (*(_DWORD *)(v6 + 1124) & 0x20000) == 0 )
  {
    if( (MiSectionControlArea(Section)->Segment->u2.ImageInformation->ExportedImageInformation.ImageCharacteristics & 0x20) != 0 )
    {
      v13 = *(_QWORD *)(v6 + 1408);
      if( v13 )
      {
        v15 = *(_WORD *)(v13 + 8);
        if( v15 == 332 || v15 == 452 )
        {
          v11 = 4294901760i64;
          *VadList = (_MMVAD_SHORT *)0x100000000i64;
          _InterlockedOr((volatile signed __int32 *)(v6 + 1124), 0x200u);
        }
      }
    }
    else
    {
      v11 = 2147418112i64;
      *VadList = (_MMVAD_SHORT *)0x100000000i64;
    }
  }
  if( dword_140CFA190 )
  {
    if( v11 > 0x80000000 )
      _InterlockedOr((volatile signed __int32 *)(v6 + 1124), 0x200000u);
  }
  *(_QWORD *)(v6 + 1496) = v11;
  return 0;
}

Referenced by:

MmInitializeProcessAddressSpace