MiSharedVaToPartition

UINT64 *__fastcall MiSharedVaToPartition(INT64 a1, UINT64 a2, UINT64 a3){
  UINT64 *v7; 
  INT64 v8; 
  UINT64 v9; 
  __int64 v10; 
  _QWORD *CloneAddress; 
  RTL_BALANCED_NODE *Address; 
  _RTL_BALANCED_NODE *v13; 
  char v14; 
  _MMSESSION *v15; 
  __int64 v16; 
  _MMSESSION *v17; 
  _RTL_BALANCED_NODE *Root; 
  unsigned __int64 v19; 
  RTL_BALANCED_NODE *v20; 
  if( !byte_140C4E39C )
    return &MiSystemPartition;
  v7 = *(UINT64 **)(qword_140C4E388 + 8i64 * *(unsigned __int16 *)(a1 + 174));
  v8 = MI_READ_PTE_LOCK_FREE((INT64)MmGetPteBase() + ((a2 >> 9) & 0x7FFFFFFFF8i64));
  v9 = v8;
  if( (v8 & 0x400) != 0 && MI_PROTO_FORMAT_COMBINED(v8) )
    return **(UINT64 ***)(((a3 - 48) & 0xFFFFFFFFFFFFF000ui64) + 0x10);
  if( a2 >= 0xFFFF800000000000ui64 )
  {
    v14 = *(_BYTE *)(a1 + 184) & 7;
    if( v14 == 4 )
    {
      v15 = &Session;
    }
    else
    {
      if( v14 != 1 )
        return v7;
      v16 = *((_QWORD *)KeGetCurrentThread() + 23);
      v17 = *(_MMSESSION **)(v16 + 1368);
      if( !v17 )
        return v7;
      if( (*(_DWORD *)(v16 + 2172) & 0x1000) != 0 )
        return v7;
      v15 = v17 + 6;
      if( !v15 )
        return v7;
    }
    Root = v15->ViewRoot.Root;
    while( Root )
    {
      v19 = Root[3].ParentValue & 0xFFFFFFFFFFFFF000ui64;
      if( (_RTL_BALANCED_NODE *)a2 >= (_RTL_BALANCED_NODE *)((char *)Root[1].Children[1] + v19) )
      {
        Root = Root->Children[1];
      }
      else
      {
        if( a2 >= v19 )
        {
          v13 = Root[2].Children[0];
          goto LABEL_31;
        }
        Root = Root->Children[0];
      }
    }
    v20 = MiSessionLookupImage(a2);
    if( !v20 )
      return v7;
    v13 = (RTL_BALANCED_NODE *)((char *)v20 + 80);
LABEL_31:
    if( v13->Children[0] )
      return *(UINT64 **)(qword_140C4E388 + 8i64 * (WORD2(v13->Children[0][2].Right) & 0x3FF));
    return v7;
  }
  if( MiIsPrototypePteVadLookup(v9) )
    goto LABEL_13;
  v10 = *((_QWORD *)KeGetCurrentThread() + 23);
  if( !*(_QWORD *)(v10 + 1264) || (CloneAddress = MiLocateCloneAddress(v10, a3)) == 0i64 )
  {
    v7 = 0i64;
    goto LABEL_13;
  }
  v7 = *(UINT64 **)(CloneAddress[7] + 24i64);
  if( !v7 )
  {
LABEL_13:
    Address = MiLocateAddress(a2);
    if( !Address )
      return v7;
    if( ((__int64)Address[2].Children[0] & 0x100000) != 0 )
      return v7;
    v13 = Address[3].Children[0];
    if( !v13 )
      return v7;
    goto LABEL_31;
  }
  return v7;
}

Referenced by:

MiActOnPte
MiCreateSharedZeroPages
MiResolvePageFileFault