CmpGetSubKeyCountForKeyNodeStack

INT64 __fastcall CmpGetSubKeyCountForKeyNodeStack(INT64 rcx0, INT64 *a2){
  INT16 i; 
  __int16 v5; 
  int j; 
  int v7; 
  int v9; 
  __int16 a1[176]; 

  memset(a1, 0i64, sizeof(a1));
  CmpKeyEnumStackInitialize(a1);
  for( i = *(_WORD *)rcx0; ; i = v5 - 1 )
  {
    if( i <= 0 )
    {
      j = *(_DWORD *)(*(_QWORD *)(rcx0 + 24) + 20i64) + *(_DWORD *)(*(_QWORD *)(rcx0 + 24) + 24i64);
LABEL_6:
      *(_DWORD *)a2 = j;
      v7 = 0;
      goto LABEL_7;
    }
    if( *(_QWORD *)(CmpKeyNodeStackGetEntryAtLayerHeight(rcx0, i) + 16) )
      break;
  }
  v7 = CmpKeyEnumStackStartFromKeyNodeStack(a1, (INT16 *)rcx0);
  if( v7 >= 0 )
  {
    for( j = 0; ; ++j )
    {
      v9 = CmpKeyEnumStackAdvance(a1);
      v7 = v9;
      if( v9 == -2147483622 )
        break;
      if( v9 < 0 )
        goto LABEL_7;
    }
    goto LABEL_6;
  }
LABEL_7:
  CmpKeyEnumStackCleanup((INT64)a1);
  return(unsigned int)v7;
}

Referenced by:

CmpGetSubKeyCountForKcbStack
CmpQueryKeyDataFromKeyNodeStack