PiDevCfgBuildDriverNodeStrongName

NTSTATUS __stdcall PiDevCfgBuildDriverNodeStrongName(
        PI_DEVCFG_DRIVER_NODE *DriverNode,
        _UNICODE_STRING *DeviceManufacturer,
        _UNICODE_STRING *DeviceDescription,
        _UNICODE_STRING *DriverNodeStrongName){
  int v7; 
  int v8; 
  unsigned int v9; 
  int v10; 
  UINT64 v12; 
  _UNICODE_STRING DestinationString; 
  UINT64 HashValue; 

  *(_QWORD *)&DestinationString.Length = 0i64;
  DestinationString.Buffer = 0i64;
  LODWORD(HashValue) = 0;
  v7 = *((unsigned __int16 *)DriverNode + 44);
  v8 = *((unsigned __int16 *)DriverNode + 36);
  LODWORD(v12) = 0;
  v9 = v7 + *((unsigned __int16 *)DriverNode + 20) + v8 + 90;
  if( (unsigned __int64)v9 + 2 > 0xFFFE )
  {
    v10 = -1073741562;
  }
  else
  {
    DestinationString.Length = v9;
    DestinationString.MaximumLength = v9 + 2;
    DestinationString.Buffer = (wchar_t *)ExpAllocateStringRoutine((unsigned __int16)(v9 + 2));
    if( DestinationString.Buffer )
    {
      if( DeviceManufacturer->Buffer )
        RtlHashUnicodeString(DeviceManufacturer, 1u, 0i64, &HashValue);
      if( DeviceDescription->Buffer )
        RtlHashUnicodeString(DeviceDescription, 1u, 0i64, &v12);
      v10 = RtlUnicodeStringPrintf(&DestinationString, (WCHAR *)L"%wZ:%08x%08x:%wZ:%u.%u.%u.%u:%wZ");
      if( v10 >= 0 )
      {
        *DriverNodeStrongName = DestinationString;
        DestinationString = 0i64;
      }
    }
    else
    {
      v10 = -1073741670;
    }
  }
  RtlFreeAnsiString(&DestinationString);
  return v10;
}

Referenced by:

PiDevCfgConfigureDevice