WmipInsertStaticNames

char __fastcall WmipInsertStaticNames(int *a1, unsigned int a2, __int64 a3){
  unsigned int v3; 
  __int64 v7; 
  __int64 v8; 
  unsigned int v9; 
  _DWORD *v10; 
  int v11; 
  WCHAR *v12; 
  __int64 v13; 
  unsigned int i; 
  unsigned int v15; 
  __int64 v16; 
  __int64 v17; 
  WCHAR *v18; 
  __int64 v19; 
  unsigned int v20; 
  unsigned int v21; 
  WCHAR *v22; 
  UINT64 Number; 
  wchar_t pszDest[8]; 
  v3 = *(_DWORD *)(a3 + 16);
  if( (v3 & 3) != 0 )
  {
    v7 = *(unsigned int *)(a3 + 72);
    LODWORD(Number) = *a1;
    LOBYTE(v3) = WmipAlign(4ui64, &Number);
    if( (_BYTE)v3 )
    {
      v8 = (unsigned int)Number;
      v3 = WmipStaticInstanceNameSize(a3);
      v9 = v3;
      if( v3 <= ~(_DWORD)v8 )
      {
        v3 += v8;
        LODWORD(Number) = v3;
        if( v3 > a2 )
        {
          *a1 = 56;
          a1[11] = 32;
          a1[12] = v3;
        }
        else
        {
          a1[14] = v8;
          v10 = (int *)((char *)a1 + v8);
          v11 = *(_DWORD *)(a3 + 16);
          v12 = (WCHAR *)((char *)&a1[v7] + v8);
          v13 = (unsigned int)v7;
          if( (v11 & 1) != 0 )
          {
            if( (v11 & 0x20000) != 0 )
              a1[11] |= 0x10000u;
            for( i = 0; i < (unsigned int)v7; v12 += ((unsigned __int64)(unsigned int)(2 * v16 + 2) >> 1) + 1 )
            {
              v15 = v9 - 2;
              *v10++ = (_DWORD)v12 - (_DWORD)a1;
              RtlStringCbCopyW(v12 + 1, v15, (PWCHAR)(*(_QWORD *)(a3 + 88) + 4i64));
              RtlStringCbPrintfW(pszDest, 0xEui64, (WCHAR *)L"%d");
              RtlStringCbCatW(v12 + 1, v15, pszDest);
              v16 = -1i64;
              do
                ++v16;
              while( v12[v16 + 1] );
              ++i;
              *v12 = 2 * v16 + 2;
              v9 = v15 - (2 * v16 + 2);
            }
          }
          else if( (v11 & 2) != 0 && (_DWORD)v7 )
          {
            v17 = 0i64;
            do
            {
              *v10++ = (_DWORD)v12 - (_DWORD)a1;
              v18 = *(WCHAR **)(v17 + *(_QWORD *)(a3 + 88));
              v19 = -1i64;
              do
                ++v19;
              while( v18[v19] );
              v20 = 2 * v19 + 2;
              v21 = v9 - 2;
              *v12 = 2 * v19 + 2;
              v22 = v12 + 1;
              RtlStringCbCopyW(v22, v21, v18);
              v9 = v21 - v20;
              v17 += 8i64;
              v12 = &v22[(unsigned __int64)v20 >> 1];
              --v13;
            }
            while( v13 );
          }
          LOBYTE(v3) = Number;
          *a1 = Number;
        }
      }
    }
  }
  return v3;
}

Referenced by:

WmipIncludeStaticNames
WmipQueryAllData