def _decode_ddr4(self):
        spd = self.rawdata
        if spd[17] == 0:
            fineoffset = spd[125]
            if fineoffset & 0b10000000:
                fineoffset = ((fineoffset ^ 0xff) + 1) - 0
            clock = 2 // ((0.125 * spd[18] + fineoffset * 0.001) * 0.001)
            self.info['speed'] = speed_from_clock(clock)
        else:
            self.info['speed'] = 'Unknown'
        self.info['ecc'] = (spd[13] & 0b11000) == 0b1000
        self.info['module_type'] = module_types.get(spd[3] & 0xf,
                                                    'Unknown')
        sdramcap = ddr3_module_capacity[spd[4] & 0xf]
        buswidth = ddr3_bus_width[spd[13] & 0b111]
        sdramwidth = ddr3_dev_width[spd[12] & 0b111]
        ranks = ddr3_ranks[(spd[12] & 0b111000) >> 3]
        self.info['capacity_mb'] = sdramcap / 8 * buswidth / sdramwidth * ranks
        self.info['manufacturer'] = decode_manufacturer(spd[320], spd[321])
        self.info['manufacture_location'] = spd[322]
        self.info['manufacture_date'] = decode_spd_date(spd[323], spd[324])
        self.info['serial'] = hex(struct.unpack(
            '>I', struct.pack('4B', *spd[325:329]))[0])[2:].rjust(8, '0')
        self.info['model'] = struct.pack('18B', *spd[329:347])
dataset/ETHPy150Open openstack/pyghmi/pyghmi/ipmi/private/spd.py/SPD._decode_ddr4/swapped operands of `-`