WmipInsertStaticNames
VOID __stdcall WmipInsertStaticNames(tagWNODE_ALL_DATA *Wnode, UINT64 MaxWnodeSize, tagInstanceSet *InstanceSet){
ULONG v4;
__int64 v6;
__int64 v7;
unsigned int v8;
unsigned int v9;
ULONG v10;
_DWORD *v11;
tagInstanceSet v12;
WCHAR *v13;
__int64 v14;
unsigned int i;
unsigned int v16;
__int64 v17;
__int64 v18;
WCHAR *v19;
__int64 v20;
unsigned int v21;
unsigned int v22;
WCHAR *v23;
UINT64 Number;
WCHAR pszDest[8];
v4 = MaxWnodeSize;
if( (InstanceSet[4] & 3) != 0 )
{
v6 = (unsigned int)InstanceSet[18];
LODWORD(Number) = Wnode->WnodeHeader.BufferSize;
if( WmipAlign(4ui64, &Number) )
{
v7 = (unsigned int)Number;
v8 = WmipStaticInstanceNameSize(InstanceSet);
v9 = v8;
if( v8 <= ~(_DWORD)v7 )
{
v10 = v7 + v8;
LODWORD(Number) = v10;
if( v10 > v4 )
{
Wnode->WnodeHeader.BufferSize = 56;
Wnode->WnodeHeader.Flags = 32;
Wnode->DataBlockOffset = v10;
}
else
{
Wnode->OffsetInstanceNameOffsets = v7;
v11 = (ULONG *)((char *)&Wnode->WnodeHeader.BufferSize + v7);
v12 = InstanceSet[4];
v13 = (WCHAR *)((char *)&Wnode->WnodeHeader.BufferSize + 4 * v6 + v7);
v14 = (unsigned int)v6;
if( (v12 & 1) != 0 )
{
if( (v12 & 0x20000) != 0 )
Wnode->WnodeHeader.Flags |= 0x10000u;
for( i = 0; i < (unsigned int)v6; v13 += ((unsigned __int64)(unsigned int)(2 * v17 + 2) >> 1) + 1 )
{
v16 = v9 - 2;
*v11++ = (_DWORD)v13 - (_DWORD)Wnode;
RtlStringCbCopyW(v13 + 1, v16, (WCHAR *)(*((_QWORD *)InstanceSet + 11) + 4i64));
RtlStringCbPrintfW(pszDest, 0xEui64, (WCHAR *)L"%d");
RtlStringCbCatW(v13 + 1, v16, pszDest);
v17 = -1i64;
do
++v17;
while( v13[v17 + 1] );
++i;
*v13 = 2 * v17 + 2;
v9 = v16 - (2 * v17 + 2);
}
}
else if( (v12 & 2) != 0 && (_DWORD)v6 )
{
v18 = 0i64;
do
{
*v11++ = (_DWORD)v13 - (_DWORD)Wnode;
v19 = *(WCHAR **)(v18 + *((_QWORD *)InstanceSet + 11));
v20 = -1i64;
do
++v20;
while( v19[v20] );
v21 = 2 * v20 + 2;
v22 = v9 - 2;
*v13 = 2 * v20 + 2;
v23 = v13 + 1;
RtlStringCbCopyW(v23, v22, v19);
v9 = v22 - v21;
v18 += 8i64;
v13 = &v23[(unsigned __int64)v21 >> 1];
--v14;
}
while( v14 );
}
Wnode->WnodeHeader.BufferSize = Number;
}
}
}
}
}Referenced by:
WmipIncludeStaticNames
WmipQueryAllData