/* Calculate the crc-16 (x^16 + x^15 + x^2 + 1) value for data. Note that this CRC is not equal to crc16_plain. */
guint16 crc16_8005_noreflect_noxor(const guint8 *data, guint64 data_len)
/* Calculate the crc-16 (x^16 + x^15 + x^2 + 1) value for data. Note that this CRC is not equal to crc16_plain. */
guint16 crc16_8005_noreflect_noxor(const guint8 *data, guint64 data_len)
{
    guint tbl_idx;
    guint16 crc = 0;
    while (data_len--) {
        tbl_idx = ((crc >> 8) ^ *data) & 0xff;
        crc = (crc16_table_8005_noreflect_noxor[tbl_idx] ^ (crc << 8)) & 0xffff;
        data++;
    }
    return crc & 0xffff;
}