SdbpCreateSearchPathPartsFromPath
NTSTATUS __stdcall SdbpCreateSearchPathPartsFromPath(WCHAR *pszPath, tagSEARCHPATH **ppSearchPathParts){
WCHAR *v3;
unsigned int v4;
WCHAR *v5;
__int64 v6;
WORD *v7;
VOID *v8;
INT64 v9;
tagSEARCHPATH *v10;
tagSEARCHPATH *v11;
__int64 v12;
WCHAR *i;
WCHAR v14;
INT8 *v16;
UINT64 v17;
__int64 v18;
v3 = pszPath;
v4 = 0;
v5 = 0i64;
if( pszPath )
{
v6 = *pszPath != 0;
while( 1 )
{
v7 = wcschr(pszPath, 59);
if( !v7 )
break;
LODWORD(v6) = v6 + 1;
pszPath = v7 + 1;
}
v10 = (tagSEARCHPATH *)AslAlloc(v8, 48 * ((int)v6 - 1) + 56, v9);
v11 = v10;
if( v10 )
{
*v10 = v6;
v12 = -1i64;
do
++v12;
while( v3[v12] );
for( i = &v3[v12]; ; --i )
{
if( i < v3 )
{
*ppSearchPathParts = v11;
return 1;
}
v14 = *i;
if( *i == 92 )
{
if( v5 )
{
LABEL_13:
if( v3 != i )
continue;
goto LABEL_8;
}
v5 = i;
}
if( v14 != 59 )
goto LABEL_13;
LABEL_8:
if( v5 )
{
if( v14 == 59 )
++i;
v18 = 6i64 * v4++;
v11[2 * v18 + 4] = v5 - i + 1;
v5 = 0i64;
*(_QWORD *)&v11[2 * v18 + 2] = i;
}
}
}
v16 = (INT8 *)"Failed to allocate search path parts";
v17 = 1417i64;
}
else
{
v16 = "Invalid argument";
v17 = 1388i64;
}
AslLogCallPrintf(1ui64, (INT8 *)"SdbpCreateSearchPathPartsFromPath", v17, v16);
return 0;
}Referenced by:
SdbpInitializeSearchDBContext