CmpFindSubKeyByNumber

INT64 __fastcall CmpFindSubKeyByNumber(_HHIVE *Hive, _CM_KEY_NODE *Node, UINT64 Number, UINT *ChildCell){
  unsigned int v5; 
  unsigned int v6; 
  __int64 v8; 
  _CELL_DATA *v9; 
  _CELL_DATA *v10; 
  int v12; 
  int v13; 
  v12 = -1;
  v13 = 0;
  v5 = Node->SubKeyCounts[0];
  v6 = Number;
  *ChildCell = -1;
  if( (unsigned int)Number >= v5 )
  {
    if( Hive->StorageTypeCount <= 1 )
      return 0i64;
    v6 = Number - v5;
    if( (unsigned int)Number - v5 >= Node->SubKeyCounts[1] )
      return 0i64;
    v8 = Node->SubKeyLists[1];
  }
  else
  {
    v8 = Node->SubKeyLists[0];
  }
  v9 = Hive->GetCellRoutine(Hive, v8, &v12);
  v10 = v9;
  if( v9 )
  {
    *ChildCell = CmpDoFindSubKeyByNumber((INT64)Hive, (INT16 *)v9, v6);
    if( v10 )
      Hive->ReleaseCellRoutine(Hive, (_HV_GET_CELL_CONTEXT *)&v12);
    return 0i64;
  }
  return 3221225626i64;
}

Referenced by:

CmDeleteLayeredKey
CmSelectQualifiedInstallLanguage
CmpClearKeyAccessBits
CmpCopySyncTree2
CmpDeleteTree
CmpDoAccessCheckOnSubtree
CmpEnumerateLayeredKey
CmpFindDrivers
CmpFindSubKeyByNumberEx
CmpMarkAllChildrenDirty
CmpPreserveSystemHiveData
CmpSyncSubKeysAfterDelete
CmpUpdateParentForEachSon