CmGetVisibleSubkeyCount

INT64 __fastcall CmGetVisibleSubkeyCount(LIST_ENTRY *a1, INT64 a2, INT64 a3){
  unsigned int v4; 
  LIST_ENTRY *v6; 
  __int64 v7; 
  __int64 v8; 
  int v9; 
  LIST_ENTRY *ListIterator; 
  v4 = *(_DWORD *)(a2 + 20) + *(_DWORD *)(a2 + 24);
  ListIterator = 0i64;
  if( a1 && a3 )
  {
    v6 = a1 + 13;
    while( 1 )
    {
      LODWORD(v7) = CmListGetNextElement(v6, &ListIterator, 32i64);
      v8 = v7;
      if( !v7 )
        break;
      if( CmEqualTrans(*(_QWORD *)(v7 + 56), a3) )
      {
        v9 = *(_DWORD *)(v8 + 68);
        if( v9 == 1 )
        {
          ++v4;
        }
        else if( v9 == 3 )
        {
          --v4;
        }
      }
    }
  }
  return v4;
}

Referenced by:

CmpQueryKeyDataFromCache
CmpQueryKeyDataFromNode