MiMapChildLargePageVads

NTSTATUS __stdcall MiMapChildLargePageVads(ULONG_PTR ProcessToInitialize, UINT64 LargePageVads){
  UINT64 v2; 
  _QWORD *v4; 
  _QWORD *i; 
  _QWORD **v6; 
  INT64 v7; 
  _QWORD *v8; 
  _QWORD *v9; 
  int v10; 
  __int64 v11; 
  _MMVAD *Address; 
  _MMVAD_SHORT *v13; 
  NTSTATUS result; 

  v2 = LargePageVads;
  if( LargePageVads )
  {
    v4 = *(_QWORD **)(*(_QWORD *)&ProcessToInitialize + 2008i64);
    i = 0i64;
    while( v4 )
    {
      i = v4;
      v4 = (_QWORD *)*v4;
    }
    while( i )
    {
      v6 = (_QWORD **)i[1];
      v7 = (INT64)i;
      v8 = i;
      if( v6 )
      {
        v9 = *v6;
        for( i = (_QWORD *)i[1]; v9; v9 = (_QWORD *)*v9 )
          i = v9;
      }
      else
      {
        while( 1 )
        {
          i = (_QWORD *)(i[2] & 0xFFFFFFFFFFFFFFFCui64);
          if( !i || (_QWORD *)*i == v8 )
            break;
          v8 = i;
        }
      }
      LOBYTE(v10) = MiIsVadLargePrivate(v7);
      if( v10 )
      {
        Address = MiLocateAddress((VOID *)((*(unsigned int *)(v11 + 24) | ((unsigned __int64)*(unsigned __int8 *)(v11 + 32) << 32)) << 12));
        result = MiCopyLargeVad(ProcessToInitialize, &Address->Core, v13);
        if( result < 0 )
          return result;
        if( !--v2 )
          break;
      }
    }
  }
  return 0;
}

Referenced by:

MiCloneProcessAddressSpace