SdbGetDatabaseMatchEx
__int64 __fastcall SdbGetDatabaseMatchEx(
__int64 a1,
int a2,
const wchar_t *a3,
__int64 a4,
wchar_t *a5,
wchar_t *a6,
__int64 *a7){
RTL_RUN_ONCE *v7;
INT16 v10;
const wchar_t *v11;
WCHAR *v12;
WCHAR *v13;
unsigned int FirstStringIndexedTag;
INT64 v15;
__int64 v16;
__int64 *v17;
wchar_t *v18;
unsigned int v19;
unsigned int i;
__int64 v21;
unsigned int v22;
UINT64 v24;
INT64 v25[2];
__int128 v26;
__int64 v27;
unsigned int v28;
v7 = *(RTL_RUN_ONCE **)(a1 + 8);
*(_OWORD *)v25 = 0i64;
v26 = 0i64;
v27 = 0i64;
if( a2 )
{
v10 = 28698;
v11 = 0i64;
goto LABEL_10;
}
v10 = 28700;
v11 = a3;
v12 = wcsrchr(a3, 0x5Cu);
if( !v12 )
{
LABEL_10:
v13 = (WCHAR *)a3;
goto LABEL_4;
}
v13 = v12 + 1;
LABEL_4:
v28 = 0;
FirstStringIndexedTag = SdbFindFirstStringIndexedTag(v7, v10, 24577, v13, (INT64)v25);
v17 = a7;
v18 = a6;
while( 1 )
{
v19 = FirstStringIndexedTag;
if( !FirstStringIndexedTag )
{
for( i = SdbpFindFirstIndexedWildCardTag(v7, v10, v15, (INT64)v13, (INT64)v25);
;
i = SdbpFindNextIndexedWildCardTag(v7, (__int64)v25) )
{
v22 = i;
if( !i )
break;
if( (unsigned int)SdbpCheckKObject(a1, i, v11, v21, a5, v18, v17) )
{
if( (unsigned int)SdbTagIDToTagRef(a1, (__int64)v7, v22, &v28) )
return v28;
v24 = 5282i64;
goto LABEL_19;
}
}
return v28;
}
if( (unsigned int)SdbpCheckKObject(a1, FirstStringIndexedTag, v11, v16, a5, v18, v17) )
break;
FirstStringIndexedTag = SdbFindNextStringIndexedTag(v7, (unsigned int *)v25);
}
if( !(unsigned int)SdbTagIDToTagRef(a1, (__int64)v7, v19, &v28) )
{
v24 = 5258i64;
LABEL_19:
AslLogCallPrintf(1ui64, "SdbGetDatabaseMatchEx", v24, "Failed to convert tiKObject to trKObject");
}
return v28;
}Referenced by:
KsepDbCacheReadDeviceInternal
KsepDbGetDriverShimsInternal