SdbpFindNextIndexedWildCardTag

__int64 __fastcall SdbpFindNextIndexedWildCardTag(void *a1, __int64 a2){
  PWCHAR v4; 
  INT64 Index; 
  __int64 v6; 
  UINT64 v7; 
  unsigned int v8; 
  unsigned int FirstTag; 
  WCHAR *StringTagPtr; 
  unsigned int v12; 
  CHAR szString[8]; 
  __int16 v14; 
  CHAR result[272]; 
  v12 = 0;
  memset((INT64)result, 0i64);
  *(_QWORD *)szString = 0i64;
  v14 = 0;
  if( AslStringUpcaseToMultiByteN(result, v4) >= 0 )
  {
    Index = SdbpGetIndex((__int64)a1, *(unsigned int *)a2, &v12);
    if( Index )
    {
      LODWORD(v6) = *(_DWORD *)(a2 + 16);
      while( 1 )
      {
        v6 = (unsigned int)(v6 + 1);
        if( (unsigned int)v6 >= v12 )
          break;
        v7 = *(_QWORD *)(Index + 12 * v6);
        if( (*(_DWORD *)(a2 + 20) & 2) != 0 )
        {
          SdbpKeyToAnsiString(v7, &szString[1]);
          szString[0] = 42;
        }
        else
        {
          SdbpKeyToAnsiString(v7, szString);
          LOBYTE(v14) = 42;
        }
        if( AslStringPatternMatchA(szString, result) )
        {
          v8 = *(_DWORD *)(Index + 12 * v6 + 8);
          FirstTag = SdbFindFirstTag((INT64)a1, v8, *(_WORD *)(a2 + 12));
          if( FirstTag )
          {
            StringTagPtr = (WCHAR *)SdbGetStringTagPtr((RTL_RUN_ONCE *)a1, FirstTag);
            if( StringTagPtr )
            {
              if( AslStringPatternMatchW(StringTagPtr, *(PWCHAR *)(a2 + 32)) )
              {
                *(_DWORD *)(a2 + 16) = v6;
                return v8;
              }
            }
          }
        }
      }
    }
  }
  return 0i64;
}

Referenced by:

SdbGetDatabaseMatchEx
SdbpSearchDB