MiBeginPageAccessor

INT64 __stdcall MiBeginPageAccessor(RTL_BALANCED_NODE *Node, INT64 a2){
  LONG *v4; 
  _RTL_BALANCED_NODE *CurrentThread; 
  bool v6; 
  char v7; 
  bool v8; 
  RTL_BALANCED_NODE *v9; 
  RTL_BALANCED_NODE *v10; 
  unsigned __int64 *v11; 
  RTL_BALANCED_NODE *v12; 
  if( (*(_BYTE *)(a2 + 34) & 8) != 0 )
    return 0i64;
  Node[1].Children[0] = (_RTL_BALANCED_NODE *)a2;
  v4 = &dword_140C4E2B0;
  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 = &dword_140C4E2A0;
  ExAcquireSpinLockExclusiveAtDpcLevel((INT64 *)v4);
  if( HIBYTE(Node[2].ParentValue) )
  {
    v9 = (RTL_BALANCED_NODE *)qword_140C4E2A8;
    if( qword_140C4E2A8 )
    {
      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 = (unsigned __int64 *)&qword_140C4E2A8;
    goto LABEL_14;
  }
  v9 = RootPointer;
  if( !RootPointer )
    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 = (unsigned __int64 *)&RootPointer;
LABEL_14:
  RtlAvlInsertNodeEx(v11, (__int64)v9, v6, Node);
  BYTE4(Node[2].ParentValue) = 1;
  ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)v4);
  return 1i64;
}

Referenced by:

MiGetSinglePageToZero
MiUnlinkNodeLargePages