SdbpSearchDB
__int64 __fastcall SdbpSearchDB(__int64 a1, void *a2, __int64 a3, __int64 a4, _DWORD *a5, int a6){
_DWORD *v6;
unsigned int v9;
WCHAR *Str1;
INT64 v12;
__int64 v13;
__int64 v14;
unsigned int FirstStringIndexedTag;
unsigned int v16;
INT64 v17;
int v19;
unsigned int v20;
unsigned int i;
int v22;
unsigned int FirstTag;
UINT64 v24;
__int64 v25;
unsigned int FirstNamedTag;
int v27;
unsigned int v28;
unsigned int j;
int v30;
wchar_t *a4a;
INT64 a5a[2];
__int128 v33;
__int64 v34;
int v36;
__int64 v37;
v6 = a5;
LODWORD(v37) = 0;
a6 = 0;
v34 = 0i64;
v9 = 0;
v36 = 0;
*(_OWORD *)a5a = 0i64;
v33 = 0i64;
memset((INT64)a5, 0i64);
Str1 = *(WCHAR **)(a4 + 40);
a4a = Str1;
v13 = 16i64;
if( (unsigned int)SdbGetIndex(a2, 28679, 24587, 0i64) )
{
for( i = SdbpFindFirstIndexedWildCardTag((RTL_RUN_ONCE *)a2, 28679, v12, (INT64)Str1, (INT64)a5a);
i;
i = SdbpFindNextIndexedWildCardTag(a2, (__int64)a5a) )
{
v22 = SdbpCheckExe(a1, (__int64)a2, i, (unsigned int *)&v36, a4, 1, (__int64)&v37, v6);
v9 = v36;
if( v22 )
{
if( (_DWORD)v37 != 2 )
goto LABEL_7;
}
else if( (unsigned int)v36 > 0x10 )
{
goto LABEL_15;
}
}
}
if( (unsigned int)SdbGetIndex(a2, 28679, 24577, 0i64) )
{
v14 = 1i64;
FirstStringIndexedTag = SdbFindFirstStringIndexedTag((RTL_RUN_ONCE *)a2, 28679, 24577, Str1, (INT64)a5a);
goto LABEL_4;
}
v14 = 0i64;
FirstTag = SdbFindFirstTag((INT64)a2, 0i64, 28673);
a6 = FirstTag;
if( !FirstTag )
{
v24 = 3472i64;
LABEL_30:
AslLogCallPrintf(1ui64, "SdbpSearchDB", v24, "No DATABASE tag found");
goto LABEL_7;
}
FirstStringIndexedTag = SdbFindFirstNamedTag(a2, FirstTag, 28679, 24577, Str1);
LABEL_4:
while( 1 )
{
v16 = FirstStringIndexedTag;
if( !FirstStringIndexedTag )
break;
v19 = SdbpCheckExe(a1, (__int64)a2, FirstStringIndexedTag, (unsigned int *)&v36, a4, 0, (__int64)&v37, v6);
v9 = v36;
if( v19 )
{
if( (_DWORD)v37 != 2 )
goto LABEL_7;
}
else if( (unsigned int)v36 > 0x10 )
{
goto LABEL_15;
}
if( v14 )
FirstStringIndexedTag = SdbFindNextStringIndexedTag(a2, (unsigned int *)a5a);
else
FirstStringIndexedTag = SdbpFindNextNamedTag(a2, a6, v16, 24577, a4a);
}
if( *(_QWORD *)(a4 + 48) )
{
if( (unsigned int)SdbGetIndex(a2, 28679, 24608, 0i64) )
{
v25 = 1i64;
FirstNamedTag = SdbFindFirstStringIndexedTag((RTL_RUN_ONCE *)a2, 28679, 24608, *(WCHAR **)(a4 + 48), (INT64)a5a);
goto LABEL_44;
}
v25 = 0i64;
a6 = SdbFindFirstTag((INT64)a2, 0i64, 28673);
if( a6 )
{
v24 = 3544i64;
goto LABEL_30;
}
FirstNamedTag = SdbFindFirstNamedTag(a2, 0i64, 28679, 24608, *(wchar_t **)(a4 + 48));
LABEL_44:
while( 1 )
{
v28 = FirstNamedTag;
if( !FirstNamedTag )
break;
v27 = SdbpCheckExe(a1, (__int64)a2, FirstNamedTag, (unsigned int *)&v36, a4, 0, (__int64)&v37, v6);
v9 = v36;
if( v27 )
{
if( (_DWORD)v37 != 2 )
goto LABEL_7;
}
else if( (unsigned int)v36 > 0x10 )
{
goto LABEL_15;
}
if( v25 )
FirstNamedTag = SdbFindNextStringIndexedTag(a2, (unsigned int *)a5a);
else
FirstNamedTag = SdbpFindNextNamedTag(a2, a6, v28, 24608, *(wchar_t **)(a4 + 48));
}
}
if( (unsigned int)SdbGetIndex(a2, 28679, 24587, 0i64) )
{
for( j = SdbpFindFirstIndexedWildCardTag((RTL_RUN_ONCE *)a2, 28679, v17, (INT64)a4a, (INT64)a5a);
j;
j = SdbpFindNextIndexedWildCardTag(a2, (__int64)a5a) )
{
v30 = SdbpCheckExe(a1, (__int64)a2, j, (unsigned int *)&v36, a4, 2, (__int64)&v37, v6);
v9 = v36;
if( v30 )
{
if( (_DWORD)v37 != 2 )
break;
}
else if( (unsigned int)v36 > 0x10 )
{
goto LABEL_15;
}
}
}
LABEL_7:
if( v9 > 0x10 || (v13 = v9) != 0 )
{
do
{
LABEL_15:
v20 = SdbFindFirstTag((INT64)a2, (unsigned int)*v6, 24582);
if( v20 )
SdbGetStringTagPtr((RTL_RUN_ONCE *)a2, v20);
v6 += 2;
--v13;
}
while( v13 );
}
return v9;
}Referenced by:
SdbGetDatabaseMatch