var FIELDS = [
  'rtsOpen',
  'rtsShorted',
  'rtsDisconnected',
  'heatsinkTempSensorOpen',
  'heatsinkTempSensorShorted',
  'highTemperatureCurrentLimit',
  'currentLimit',
  'currentOffset',
  'batterySense',
  'batterySenseDisconnected',
  'uncalibrated',
  'rtsMiswire',
  'highVoltageDisconnect',
  'undefined',
  'systemMiswire',
  'mosfetSOpen',
  'p12VoltageOutOfRange',
  'highArrayVCurrentLimit',
  'maxAdcValueReached',
  'controllerWasReset',
  'alarm21Internal',
  'p3VoltageOutOfRange',
  'derateLimit',
  'arrayCurrentOffset',
  'ee-i2cRetryLimit',
  'ethernetAlarm',
  'lvd',
  'software',
  'fp12VoltageOutOfRange',
  'extflashFault',
  'slaveControlFault',
  'alarm32Undefined'
];

var flags = parseInt(value.replace(/\\x20/g, ''), 16),
  result = [];

for (var i = 0, f = 1 << 31 >>> 0, l = FIELDS.length; i < l; i++, f >>>= 1) {
    if (flags & f) {
        result.push(FIELDS[i]);
    }
}

return result.length ? result.join('\\n') : 'No alarms';