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