SdbpMatchList
NTSTATUS __stdcall SdbpMatchList(
INT64 *bMatchedOut,
VOID *hSDB,
_DB *pdb,
UINT64 tiList,
VOID *pContext,
INT64 bMatchOne,
INT64 bCheckRoot){
unsigned int v9;
unsigned int FirstChild;
__int64(__fastcall *v12)(INT64 *, VOID *, _DB *, _QWORD, unsigned int, VOID *, VOID *);
int v13;
NTSTATUS result;
VOID *ppMatcherContext;
ppMatcherContext = 0i64;
LODWORD(bCheckRoot) = 1;
v9 = tiList;
FirstChild = SdbGetFirstChild(pdb, (unsigned int)tiList);
if( FirstChild )
{
while( 1 )
{
LODWORD(v12) = SdbpFindMatcher(&ppMatcherContext, hSDB, pdb, FirstChild);
if( v12 )
{
result = v12(&bCheckRoot, hSDB, pdb, v9, FirstChild, pContext, ppMatcherContext);
if( !result )
return result;
if( (unsigned int)SdbFindFirstTag(pdb, FirstChild, 0x1003u) )
{
v13 = bCheckRoot == 0;
LODWORD(bCheckRoot) = v13;
}
else
{
v13 = bCheckRoot;
}
if( v13 == (_DWORD)bMatchOne )
break;
}
FirstChild = SdbGetNextChild(pdb, v9, FirstChild);
if( !FirstChild )
goto LABEL_4;
}
}
else
{
LABEL_4:
v13 = bCheckRoot;
}
*(_DWORD *)bMatchedOut = v13;
return 1;
}Referenced by:
SdbpCheckForMatch
SdbpMatchOne