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