SdbpCheckMatchingWildcardFiles
INT64 __fastcall SdbpCheckMatchingWildcardFiles(INT64 a1, INT64 a2, RTL_RUN_ONCE *a3, INT64 a4, UINT64 a5, INT64 a6){
_DWORD *v7;
unsigned int v8;
WCHAR *v9;
UINT64 v10;
unsigned int FirstTag;
WCHAR *StringTagPtr;
__int64 v13;
WCHAR *v14;
__int64 v15;
int *v16;
int v17;
unsigned __int64 v18;
int i;
void *v20;
INT64 v21;
void *v22;
INT64 result;
INT64 v24;
UINT64 v25;
UINT64 FileMappingHandleOut;
WCHAR *v27;
INT64 v28;
INT64 v29;
WCHAR *v30;
INT64 v31;
RTL_RUN_ONCE *v32;
int *v33;
wchar_t pszDest[264];
v29 = a2;
v32 = a3;
v7 = (_DWORD *)a1;
v31 = a1;
v8 = 0;
v9 = 0i64;
LODWORD(v25) = 0;
v10 = 0i64;
v27 = 0i64;
FileMappingHandleOut = 0i64;
v28 = 0i64;
if( *(_QWORD *)(a6 + 88) )
{
LODWORD(v25) = 1;
LABEL_30:
v8 = 1;
goto LABEL_31;
}
FirstTag = SdbFindFirstTag((INT64)a3, (unsigned int)a5, 24577);
if( !FirstTag )
goto LABEL_31;
StringTagPtr = (WCHAR *)SdbGetStringTagPtr(a3, FirstTag);
v30 = StringTagPtr;
v14 = StringTagPtr;
if( StringTagPtr )
{
v15 = -1i64;
do
++v15;
while( StringTagPtr[v15] );
if( (*(_DWORD *)a6 & 1) == 0 )
{
if( !(unsigned int)SdbpInitializeSearchDBContext(a6, v13, (INT64)StringTagPtr) )
{
AslLogCallPrintf(1ui64, "SdbpCheckMatchingWildcardFiles", 0xA61ui64, "Failed to initialize SEARCHDBCONTEXT");
goto LABEL_31;
}
v14 = v30;
}
v16 = *(int **)(a6 + 72);
v17 = 0;
v33 = v16;
if( *v16 <= 0 )
{
LABEL_29:
v7 = (_DWORD *)v31;
*(_DWORD *)(a6 + 80) = 1;
goto LABEL_30;
}
while( (unsigned int)SdbpResolveMatchingFile(v29, a6, v14, (unsigned int)v15, (INT64)&v16[12 * v17 + 2], &v27) )
{
AslPathWildcardFindClose(&v28);
memset((INT64)pszDest, 0i64);
v9 = v27;
for( i = AslPathWildcardFindFirst(pszDest, v18, v27, &v28);
;
i = AslPathWildcardFindNext(pszDest, v21, (UINT64 *)v28) )
{
v20 = 0i64;
if( i < 0 )
break;
if( v10 )
{
AslFileMappingDelete(v10);
FileMappingHandleOut = 0i64;
}
i = AslFileMappingCreate(&FileMappingHandleOut, pszDest, 0i64, 0i64, 0i64);
v10 = FileMappingHandleOut;
if( i < 0 )
break;
if( (int)SdbpCheckAllAttributes(&v25, v29, v32, (unsigned int)a5, FileMappingHandleOut) >= 0 )
goto LABEL_29;
}
if( i != -2147483642 )
{
LODWORD(v24) = i;
AslLogCallPrintf(
3ui64,
"SdbpCheckMatchingWildcardFiles",
0xAAFui64,
"AslPathWildcardFindFirst/Next failed to find a file [%x]",
v24);
}
if( v9 )
{
AslFree(v20);
v9 = 0i64;
v27 = 0i64;
}
v16 = v33;
if( ++v17 >= *v33 )
goto LABEL_29;
v14 = v30;
}
AslLogCallPrintf(1ui64, "SdbpCheckMatchingWildcardFiles", 0xA79ui64, "Failed to resolve matching file");
v9 = v27;
v7 = (_DWORD *)v31;
}
else
{
AslLogCallPrintf(1ui64, "SdbpCheckMatchingWildcardFiles", 0xA53ui64, "Failed to get the string from the database");
}
LABEL_31:
AslPathWildcardFindClose(&v28);
AslFileMappingDelete(v10);
if( v9 )
AslFree(v22);
result = v8;
*v7 = v25;
return result;
}Referenced by:
No references.