MiBeginPageAccessor

NTSTATUS __stdcall MiBeginPageAccessor(_RTL_BALANCED_NODE *Node, INT64 a2){
  INT64 *v4; 
  _RTL_BALANCED_NODE *CurrentThread; 
  BOOL v6; 
  char v7; 
  bool v8; 
  _RTL_BALANCED_NODE *v9; 
  _RTL_BALANCED_NODE *v10; 
  _RTL_BALANCED_NODE **v11; 
  _RTL_BALANCED_NODE *v12; 

  if( (*(_BYTE *)(a2 + 34) & 8) != 0 )
    return 0;
  Node[1].Children[0] = (_RTL_BALANCED_NODE *)a2;
  v4 = (INT64 *)((char *)&stru_140C4DB30 + 1920);
  CurrentThread = (_RTL_BALANCED_NODE *)KeGetCurrentThread();
  v6 = 0;
  Node[2].Children[1] = CurrentThread;
  v7 = *(_BYTE *)(a2 + 34);
  *(_QWORD *)(a2 + 16) = Node;
  *(_BYTE *)(a2 + 34) = v7 | 8;
  v8 = HIBYTE(Node[2].ParentValue) == 0;
  Node[1].Children[1] = 0i64;
  *(_WORD *)((char *)&Node[2].ParentValue + 5) = 0;
  if( !v8 )
    v4 = (INT64 *)((char *)&stru_140C4DB30 + 1904);
  ExAcquireSpinLockExclusiveAtDpcLevel(v4);
  if( HIBYTE(Node[2].ParentValue) )
  {
    v9 = (_RTL_BALANCED_NODE *)*(&stru_140C4DB30 + 239);
    if( *(&stru_140C4DB30 + 239) )
    {
      while( 1 )
      {
        if( CurrentThread >= v9[2].Children[1] )
        {
          v12 = v9->Children[1];
          if( !v12 )
          {
            v6 = 1;
            break;
          }
        }
        else
        {
          v12 = v9->Children[0];
          if( !v9->Children[0] )
            break;
        }
        v9 = v12;
      }
    }
    v11 = (_RTL_BALANCED_NODE **)((char *)&stru_140C4DB30 + 1912);
    goto LABEL_14;
  }
  v9 = (_RTL_BALANCED_NODE *)*(&stru_140C4DB30 + 241);
  if( !*(&stru_140C4DB30 + 241) )
    goto LABEL_13;
  while( Node < v9 )
  {
    v10 = v9->Children[0];
    if( !v9->Children[0] )
      goto LABEL_13;
LABEL_9:
    v9 = v10;
  }
  v10 = v9->Children[1];
  if( v10 )
    goto LABEL_9;
  v6 = 1;
LABEL_13:
  v11 = (_RTL_BALANCED_NODE **)((char *)&stru_140C4DB30 + 1928);
LABEL_14:
  RtlAvlInsertNodeEx(v11, (UINT64)v9, v6, Node);
  BYTE4(Node[2].ParentValue) = 1;
  ExReleaseSpinLockExclusiveFromDpcLevel(v4);
  return 1;
}

Referenced by:

MiGetSinglePageToZero
MiUnlinkNodeLargePages