EncodeAttributeName
UINT64 __stdcall EncodeAttributeName(UINT8 *Value, UINT64 ValueSize, WCHAR **EncodedString){
unsigned int v3;
unsigned int v5;
UINT8 *v6;
unsigned int v7;
WCHAR *v8;
__int64 v9;
UINT8 v10;
WCHAR *v11;
__int64 v12;
v3 = 0;
v5 = ValueSize;
v6 = Value;
v7 = 0;
if( !Value || !(_DWORD)ValueSize || !EncodedString )
return 87i64;
if( (ValueSize & 1) != 0 )
{
return 1336;
}
else
{
v8 = (WCHAR *)SddlpAlloc((unsigned int)(5 * ValueSize) + 2i64, ValueSize, (UINT64)EncodedString);
*EncodedString = v8;
if( v8 )
{
v9 = v5 >> 1;
if( (_DWORD)v9 )
{
do
{
v10 = IsEncodedAttributeChar(*(_WORD *)v6);
v11 = *EncodedString;
v12 = v7;
if( v10 )
{
v11[v7] = 37;
v11[v7 + 1] = a0123456789abcd[(unsigned __int64)*(unsigned __int16 *)v6 >> 12];
v11[v7 + 2] = a0123456789abcd[v6[1] & 0xF];
v11[v7 + 3] = a0123456789abcd[(*(_WORD *)v6 >> 4) & 0xF];
v11[v7 + 4] = a0123456789abcd[*v6 & 0xF];
v7 += 5;
}
else
{
++v7;
v11[v12] = *(_WORD *)v6;
}
v6 += 2;
--v9;
}
while( v9 );
}
}
else
{
return 8;
}
}
return v3;
}Referenced by:
GetPrintableAttributeName
LocalGetStringForRelativeAttribute