MiAllocateProcessVads

VOID __stdcall MiAllocateProcessVads(){
  __int64 v0; 
  __int64 v1; 
  __int64 v2; 
  __int64 v3; 
  _MMVAD_SHORT *Vad; 
  _MMVAD_SHORT *v5; 
  _MMVAD_SHORT *v6; 

  v2 = v0;
  v3 = v1;
  Vad = MiAllocateVad(&UKUSER_SHARED_DATA, &unk_7FFE0FFF);
  if( Vad )
  {
    if( *(&stru_140C4DB30 + 11) )
    {
      v5 = MiAllocateVad(*(&stru_140C4DB30 + 11), (VOID *)(*(&stru_140C4DB30 + 11) + 4095i64));
      if( !v5 )
      {
LABEL_8:
        MiReturnProcessVads(Vad);
        return;
      }
      v5->NextVad = Vad;
      Vad = v5;
    }
    if( !v2 )
      return;
    v6 = MiAllocateVad(*(VOID **)(v3 + 1496), (VOID *)(v2 - 1));
    if( v6 )
    {
      v6->NextVad = Vad;
      return;
    }
    goto LABEL_8;
  }
}

Referenced by:

MmInitializeHandBuiltProcess2
MmInitializeProcessAddressSpace