MiReplaceSystemProtoPtesNode

NTSTATUS __stdcall MiReplaceSystemProtoPtesNode(_RTL_BALANCED_NODE *Node, _RTL_BALANCED_NODE *a2){
  unsigned __int64 v4; 
  unsigned __int64 v5; 
  BOOL v6; 
  _RTL_BALANCED_NODE *Root; 
  _RTL_BALANCED_NODE *v8; 
  NTSTATUS result; 
  __int64 v10; 
  __int64 v11; 

  v10 = 0i64;
  v4 = MiObtainProtoBaseFromNode(Node, &v10);
  v5 = (unsigned __int8)ExAcquireSpinLockExclusive(&qword_140C4C880);
  RtlAvlRemoveNode((UINT64 *)&RootPointer, (INT64 *)Node);
  Node[1].Children[0] = (_RTL_BALANCED_NODE *)((unsigned __int64)Node[1].Children[0] & ~8ui64);
  v6 = 0;
  Root = RootPointer.Root;
  if( RootPointer.Root )
  {
    while( 1 )
    {
      v11 = 0i64;
      if( v4 < MiObtainProtoBaseFromNode(Root, &v11) )
      {
        v8 = Root->Children[0];
        if( !Root->Children[0] )
        {
          v6 = 0;
          break;
        }
      }
      else
      {
        v8 = Root->Children[1];
        if( !v8 )
        {
          v6 = 1;
          break;
        }
      }
      Root = v8;
    }
  }
  RtlAvlInsertNodeEx(&RootPointer.Root, (UINT64)Root, v6, a2);
  a2[1].Children[0] = (_RTL_BALANCED_NODE *)((unsigned __int64)a2[1].Children[0] | 8);
  ExReleaseSpinLockExclusiveFromDpcLevel(&qword_140C4C880);
  result = KiIrqlFlags;
  __writecr8(v5);
  return result;
}

Referenced by:

MiAllocateFileExtents