SmKmEtwAppendProductName

VOID __fastcall SmKmEtwAppendProductName(INT64 a1, INT64 a2){
  UINT64 v2; 
  DEVICE_OBJECT *v4; 
  FILE_OBJECT *v5; 
  __int64 v6; 
  WCHAR *v7; 
  unsigned int v8; 
  UINT64 v9; 
  VOID *v10; 
  int UniqueId; 
  __int64 v12; 
  __int64 v13; 
  WCHAR *v14; 
  __int64 v15; 
  unsigned int v16; 
  __int64 v17; 
  unsigned int v18; 
  __int64 v19; 
  __int64 v20; 
  int v21; 
  unsigned int v22; 
  __int64 v23; 
  __int64 v24; 
  DEVICE_OBJECT *DeviceObject; 
  FILE_OBJECT *v26; 
  v4 = *(DEVICE_OBJECT **)(a2 + 24);
  v26 = 0i64;
  v5 = 0i64;
  DeviceObject = v4;
  if( !v4 )
  {
    SmKmStoreFileOpenVolume(*(FILE_OBJECT **)(a2 + 8), &v26, &DeviceObject);
    v4 = DeviceObject;
    v5 = v26;
  }
  v6 = *(_QWORD *)(a1 + 8) + *(unsigned int *)(a1 + 24);
  v7 = (WCHAR *)((v6 + 1) & 0xFFFFFFFFFFFFFFFEui64);
  v8 = v6 + *(_DWORD *)(a1 + 28) - *(_DWORD *)(a1 + 24) - (_DWORD)v7;
  if( v4 )
  {
    v9 = 256i64;
    v10 = (VOID *)((v6 + 1) & 0xFFFFFFFFFFFFFFFEui64);
    if( v8 < 0x100 )
      v9 = v8;
    UniqueId = SmKmVolumeQueryUniqueId(v4, v10, v9, v2);
  }
  else
  {
    UniqueId = -1073741275;
  }
  if( UniqueId < 0 )
    *v7 = 0;
  v12 = -1i64;
  v13 = -1i64;
  do
    ++v13;
  while( v7[v13] );
  v14 = &v7[(unsigned int)v13 + 1];
  if( SmUniqueIdParseProductName(v7, v14, v8 - 2 * (_DWORD)v13 - 2) < 0 )
  {
    LODWORD(v12) = 0;
  }
  else
  {
    do
      ++v12;
    while( v14[v12] );
  }
  v15 = *(unsigned int *)(a1 + 24);
  v16 = 2 * v12;
  v17 = *(_QWORD *)(a1 + 8);
  v18 = *(_DWORD *)(a1 + 16);
  v19 = *(_QWORD *)a1;
  v20 = 2i64 * v18;
  v21 = v15 + 2;
  *(_WORD *)(v15 + v17) = v12;
  v22 = v18 + 1;
  v23 = v17 + (unsigned int)(v15 + 2);
  *(_QWORD *)(v19 + 8 * v20) = v15 + v17;
  *(_QWORD *)(v19 + 8 * v20 + 8) = 2i64;
  if( v14 )
    memmove((UINT8 *)(v17 + (unsigned int)(v15 + 2)), (UINT8 *)v14, v16);
  v24 = v19 + 16i64 * v22;
  *(_DWORD *)(v24 + 12) = 0;
  *(_QWORD *)v24 = v23;
  *(_DWORD *)(v24 + 8) = v16;
  *(_DWORD *)(a1 + 16) = v22 + 1;
  *(_DWORD *)(a1 + 24) = v16 + v21;
  if( v5 )
    ObfDereferenceObjectWithTag(v5, 0x746C6644ui64);
}

Referenced by:

SmKmStoreTerminateWorker