PnpFixupID
__int64 __fastcall PnpFixupID(int *a1, unsigned int a2, int a3, unsigned int a4, const VOID **a5){
unsigned int v7;
int *v8;
int *v9;
int *v10;
__int16 v11;
const VOID **v13;
unsigned __int64 *p_OutputLength;
size_t v15;
const VOID *v16[2];
unsigned int v17;
HIDWORD(v16[0]) = 0;
v7 = 0;
v8 = 0i64;
v9 = a1;
v10 = (int *)((char *)a1 + 2 * a2);
if( a1 < v10 )
{
while( 1 )
{
v11 = *(_WORD *)v9;
if( *(_WORD *)v9 )
{
if( v11 == 32 )
{
*(_WORD *)v9 = 95;
}
else
{
if( (unsigned __int16)(v11 - 32) > 0x5Fu || v11 == 44 )
{
v13 = a5;
if( !a5 )
return 0i64;
LODWORD(v16[0]) = 2359330;
p_OutputLength = &stru_1407D01E0.OutputLength;
v15 = 2;
LABEL_26:
v16[1] = p_OutputLength;
PnpLogEvent(v13, v16, -1073479624, v9, v15);
return 0i64;
}
if( v11 == 92 )
{
v17 = ++v7;
if( v7 > a4 )
{
v13 = a5;
if( !a5 )
return 0i64;
LODWORD(v16[0]) = 2621478;
p_OutputLength = &stru_1407D01E0._Rsi;
v15 = 4;
v9 = (int *)&v17;
goto LABEL_26;
}
}
}
}
else
{
if( !a3 || v8 && v9 == (int *)((char *)v8 + 2) )
{
LABEL_8:
if( v9 < v10 && (v7 == a4 || a4 == -1) )
return(unsigned int)(((char *)v9 - (char *)a1) >> 1) + 1;
break;
}
v8 = v9;
}
v9 = (int *)((char *)v9 + 2);
if( v9 >= v10 )
goto LABEL_8;
}
}
v13 = a5;
if( a5 )
{
LODWORD(v16[0]) = 7471216;
p_OutputLength = (unsigned __int64 *)L"not terminated, too long or invalid number of separators";
v15 = 0;
v9 = 0i64;
goto LABEL_26;
}
return 0i64;
}Referenced by:
PnpQueryID