MiUpdatePartitionLargePfnBitMap

NTSTATUS __stdcall MiUpdatePartitionLargePfnBitMap(_MI_PARTITION *TargetPartition, _RTL_AVL_TREE *PageRoot){
  _ETHREAD *CurrentThread; 
  NTSTATUS v4; 
  _RTL_BALANCED_NODE *Root; 
  _QWORD *Children; 
  _QWORD **v8; 
  __int64 v9; 
  _QWORD *v10; 
  _QWORD *v11; 
  __int128 v13; 
  __int128 v14; 
  __int128 v15; 
  __int64 v16; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v13 = 0i64;
  v14 = 0i64;
  v4 = 0;
  v15 = 0i64;
  v16 = 0i64;
  *(_QWORD *)&v13 = TargetPartition;
  MiLockDynamicMemoryExclusive(TargetPartition, CurrentThread);
  Root = PageRoot->Root;
  Children = 0i64;
  while( Root )
  {
    Children = Root->Children;
    Root = Root->Children[0];
  }
  while( Children )
  {
    v8 = (_QWORD **)Children[1];
    v9 = (__int64)Children;
    v10 = Children;
    if( v8 )
    {
      v11 = *v8;
      for( Children = (_QWORD *)Children[1]; v11; v11 = (_QWORD *)*v11 )
        Children = v11;
    }
    else
    {
      while( 1 )
      {
        Children = (_QWORD *)(Children[2] & 0xFFFFFFFFFFFFFFFCui64);
        if( !Children || (_QWORD *)*Children == v10 )
          break;
        v10 = Children;
      }
    }
    MiActOnPartitionNodePages(v9, 3u, (_RTL_AVL_TREE **)&v13);
    if( (SDWORD1(v14) & 0x80000000) != 0 )
    {
      v4 = DWORD1(v14);
      break;
    }
  }
  MiUnlockDynamicMemoryExclusive(TargetPartition, CurrentThread);
  return v4;
}

Referenced by:

MiAllocatePartitionPhysicalPages
MiHotAddPartitionMemory