text: #pragma once
  
  //
  // Native structures W8.1 x64
  //
  #pragma warning(disable : 4214 4201)
  #pragma pack(push, 1)
  
  typedef struct _MM_AVL_NODE // Size=24
  {
      struct _MM_AVL_NODE * LeftChild; // Size=8 Offset=0
      struct _MM_AVL_NODE * RightChild; // Size=8 Offset=8
  
      union ___unnamed1666 // Size=8
      {
          struct
          {
              __int64 Balance : 2; // Size=8 Offset=0 BitOffset=0 BitCount=2
          };
          struct _MM_AVL_NODE * Parent; // Size=8 Offset=0
      } u1;
  } MM_AVL_NODE, *PMM_AVL_NODE, *PMMADDRESS_NODE;
  
  typedef struct _RTL_AVL_TREE // Size=8
  {
      PMM_AVL_NODE BalancedRoot; // Size=8 Offset=0
      void * NodeHint; // Size=8 Offset=1504
      unsigned __int64 NumberGenericTableElements; // Size=8 Offset=1512
  } RTL_AVL_TREE, *PRTL_AVL_TREE, *PMM_AVL_TABLE;
  
  union _EX_PUSH_LOCK // Size=8
  {
      struct
      {
          unsigned __int64 Locked : 1; // Size=8 Offset=0 BitOffset=0 BitCount=1
          unsigned __int64 Waiting : 1; // Size=8 Offset=0 BitOffset=1 BitCount=1
          unsigned __int64 Waking : 1; // Size=8 Offset=0 BitOffset=2 BitCount=1
          unsigned __int64 MultipleShared : 1; // Size=8 Offset=0 BitOffset=3 BitCount=1
          unsigned __int64 Shared : 60; // Size=8 Offset=0 BitOffset=4 BitCount=60
      };
      unsigned __int64 Value; // Size=8 Offset=0
      void * Ptr; // Size=8 Offset=0
  };
  
  struct _MMVAD_FLAGS // Size=4
  {
      unsigned long VadType : 3; // Size=4 Offset=0 BitOffset=0 BitCount=3
      unsigned long Protection : 5; // Size=4 Offset=0 BitOffset=3 BitCount=5
      unsigned long PreferredNode : 6; // Size=4 Offset=0 BitOffset=8 BitCount=6
      unsigned long NoChange : 1; // Size=4 Offset=0 BitOffset=14 BitCount=1
      unsigned long PrivateMemory : 1; // Size=4 Offset=0 BitOffset=15 BitCount=1
      unsigned long Teb : 1; // Size=4 Offset=0 BitOffset=16 BitCount=1
      unsigned long PrivateFixup : 1; // Size=4 Offset=0 BitOffset=17 BitCount=1
      unsigned long Spare : 13; // Size=4 Offset=0 BitOffset=18 BitCount=13
      unsigned long DeleteInProgress : 1; // Size=4 Offset=0 BitOffset=31 BitCount=1
  };
  struct _MMVAD_FLAGS1 // Size=4
  {
      unsigned long CommitCharge : 31; // Size=4 Offset=0 BitOffset=0 BitCount=31
      unsigned long MemCommit : 1; // Size=4 Offset=0 BitOffset=31 BitCount=1
  };
  
  struct _MMVAD_FLAGS2 // Size=4
  {
      unsigned long FileOffset : 24; // Size=4 Offset=0 BitOffset=0 BitCount=24
      unsigned long Large : 1; // Size=4 Offset=0 BitOffset=24 BitCount=1
      unsigned long TrimBehind : 1; // Size=4 Offset=0 BitOffset=25 BitCount=1
      unsigned long Inherit : 1; // Size=4 Offset=0 BitOffset=26 BitCount=1
      unsigned long CopyOnWrite : 1; // Size=4 Offset=0 BitOffset=27 BitCount=1
      unsigned long NoValidationNeeded : 1; // Size=4 Offset=0 BitOffset=28 BitCount=1
      unsigned long Spare : 3; // Size=4 Offset=0 BitOffset=29 BitCount=3
  };
  
  struct _MI_VAD_SEQUENTIAL_INFO // Size=8
  {
      unsigned __int64 Length : 12; // Size=8 Offset=0 BitOffset=0 BitCount=12
      unsigned __int64 Vpn : 52; // Size=8 Offset=0 BitOffset=12 BitCount=52
  };
  
  union ___unnamed1859 // Size=4
  {
      unsigned long LongFlags; // Size=4 Offset=0
      struct _MMVAD_FLAGS VadFlags; // Size=4 Offset=0
  };
  union ___unnamed1860 // Size=4
  {
      unsigned long LongFlags1; // Size=4 Offset=0
      struct _MMVAD_FLAGS1 VadFlags1; // Size=4 Offset=0
  };
  
  union ___unnamed1956 // Size=4
  {
      unsigned long LongFlags2; // Size=4 Offset=0
      struct _MMVAD_FLAGS2 VadFlags2; // Size=4 Offset=0
  };
  
  union ___unnamed1957 // Size=8
  {
      struct _MI_VAD_SEQUENTIAL_INFO SequentialVa; // Size=8 Offset=0
      struct _MMEXTEND_INFO * ExtendedInfo; // Size=8 Offset=0
  };
  
  typedef struct _MMVAD_SHORT // Size=64
  {
      union
      {
          struct _MM_AVL_NODE VadNode; // Size=24 Offset=0
          struct _MMVAD_SHORT * NextVad; // Size=8 Offset=0
      };
      unsigned long StartingVpn; // Size=4 Offset=24
      unsigned long EndingVpn; // Size=4 Offset=28
      unsigned char StartingVpnHigh; // Size=1 Offset=32
      unsigned char EndingVpnHigh; // Size=1 Offset=33
      unsigned char CommitChargeHigh; // Size=1 Offset=34
      unsigned char LargeImageBias; // Size=1 Offset=35
      long ReferenceCount; // Size=4 Offset=36
      union _EX_PUSH_LOCK PushLock; // Size=8 Offset=40
      union ___unnamed1859 u; // Size=4 Offset=48
      union ___unnamed1860 u1; // Size=4 Offset=52
      struct _MI_VAD_EVENT_BLOCK * EventList; // Size=8 Offset=56
  } MMVAD_SHORT, *PMMVAD_SHORT;
  
  typedef struct _MMVAD // Size=128
  {
      struct _MMVAD_SHORT Core; // Size=64 Offset=0
      union ___unnamed1956 u2; // Size=4 Offset=64
      struct _SUBSECTION * Subsection; // Size=8 Offset=72
      struct _MMPTE * FirstPrototypePte; // Size=8 Offset=80
      struct _MMPTE * LastContiguousPte; // Size=8 Offset=88
      struct _LIST_ENTRY ViewLinks; // Size=16 Offset=96
      struct _EPROCESS * VadsProcess; // Size=8 Offset=112
      union ___unnamed1957 u4; // Size=8 Offset=120
  } MMVAD, *PMMVAD;
  
  typedef struct _POOL_HEADER // Size=16
  {
      union
      {
          struct
          {
              unsigned short PreviousSize : 8; // Size=2 Offset=0 BitOffset=0 BitCount=8
              unsigned short PoolIndex : 8; // Size=2 Offset=0 BitOffset=8 BitCount=8
          };
          unsigned long Ulong1; // Size=4 Offset=0
      };
      struct
      {
          unsigned short BlockSize : 8; // Size=2 Offset=2 BitOffset=0 BitCount=8
          unsigned short PoolType : 8; // Size=2 Offset=2 BitOffset=8 BitCount=8
      };
      unsigned long PoolTag; // Size=4 Offset=4
      union
      {
          struct _EPROCESS * ProcessBilled; // Size=8 Offset=8
          struct
          {
              unsigned short AllocatorBackTraceIndex; // Size=2 Offset=8
              unsigned short PoolTagHash; // Size=2 Offset=10
          };
      };
  } POOL_HEADER, *PPOOL_HEADER;
  #pragma pack(pop)
  
  typedef struct _HANDLE_TABLE
  {
      ULONG NextHandleNeedingPool;
      long ExtraInfoPages;
      LONG_PTR TableCode;
      PEPROCESS QuotaProcess; 
      LIST_ENTRY HandleTableList;
      // More fields here...
  } HANDLE_TABLE, *PHANDLE_TABLE;
  
  #pragma warning(default : 4214 4201)
  
  #define GET_VAD_ROOT(Table) Table->BalancedRoot