from __future__ import division

import os
import re


def generate():
    """Generates a dictionary of all the known CRC formats from:
    http://reveng.sourceforge.net/crc-catalogue/all.htm

    See pwnlib/data/crcsum.txt for more information.
    """

    curdir, _ = os.path.split(__file__)
    path = os.path.join(curdir, '..', '..', 'data', 'crcsums.txt')
    with open(path) as fd:
        data = fd.read()
    out = {}

    def fixup(s):
        if s == 'true':
            return True
        elif s == 'false':
            return False
        elif s.startswith('"'):
            assert re.match('"[^"]+"', s)
            return s[1:-1]
        elif s.startswith('0x'):
            assert re.match('0x[0-9a-fA-F]+', s)
            return int(s[2:], 16)
        else:
            assert re.match('[0-9]+', s)
            return int(s, 10)

    for l in data.strip().split('\n'):
        if not l or l[0] == '#':
            continue

        ref, l = l.split(' ', 1)

        cur = {}
        cur['link'] = 'http://reveng.sourceforge.net/crc-catalogue/all.htm#' + ref
        for key in ['width', 'poly', 'init', 'refin', 'refout', 'xorout', 'check', 'name']:
            cur[key] = fixup(re.findall(r'%s=(\S+)' % key, l)[0])

        cur['name'] = cur['name'].lower().replace('/', '_').replace('-', '_')
        assert cur['name'] not in out
        out[cur['name']] = cur

    return out


all_crcs = \
    {'arc': {'check': 47933,
             'init': 0,
             'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.16',
             'name': 'arc',
             'poly': 32773,
             'refin': True,
             'refout': True,
             'width': 16,
             'xorout': 0},
     'crc_10': {'check': 409,
                'init': 0,
                'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.10',
                'name': 'crc_10',
                'poly': 563,
                'refin': False,
                'refout': False,
                'width': 10,
                'xorout': 0},
     'crc_10_cdma2000': {'check': 563,
                         'init': 1023,
                         'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-10-cdma2000',
                         'name': 'crc_10_cdma2000',
                         'poly': 985,
                         'refin': False,
                         'refout': False,
                         'width': 10,
                         'xorout': 0},
     'crc_10_gsm': {'check': 298,
                    'init': 0,
                    'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-10-gsm',
                    'name': 'crc_10_gsm',
                    'poly': 373,
                    'refin': False,
                    'refout': False,
                    'width': 10,
                    'xorout': 1023},
     'crc_11': {'check': 1443,
                'init': 26,
                'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.11',
                'name': 'crc_11',
                'poly': 901,
                'refin': False,
                'refout': False,
                'width': 11,
                'xorout': 0},
     'crc_11_umts': {'check': 97,
                     'init': 0,
                     'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-11-umts',
                     'name': 'crc_11_umts',
                     'poly': 775,
                     'refin': False,
                     'refout': False,
                     'width': 11,
                     'xorout': 0},
     'crc_12_cdma2000': {'check': 3405,
                         'init': 4095,
                         'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.12',
                         'name': 'crc_12_cdma2000',
                         'poly': 3859,
                         'refin': False,
                         'refout': False,
                         'width': 12,
                         'xorout': 0},
     'crc_12_dect': {'check': 3931,
                     'init': 0,
                     'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-12-dect',
                     'name': 'crc_12_dect',
                     'poly': 2063,
                     'refin': False,
                     'refout': False,
                     'width': 12,
                     'xorout': 0},
     'crc_12_gsm': {'check': 2868,
                    'init': 0,
                    'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-12-gsm',
                    'name': 'crc_12_gsm',
                    'poly': 3377,
                    'refin': False,
                    'refout': False,
                    'width': 12,
                    'xorout': 4095},
     'crc_12_umts': {'check': 3503,
                     'init': 0,
                     'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-12-umts',
                     'name': 'crc_12_umts',
                     'poly': 2063,
                     'refin': False,
                     'refout': True,
                     'width': 12,
                     'xorout': 0},
     'crc_13_bbc': {'check': 1274,
                    'init': 0,
                    'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.13',
                    'name': 'crc_13_bbc',
                    'poly': 7413,
                    'refin': False,
                    'refout': False,
                    'width': 13,
                    'xorout': 0},
     'crc_14_darc': {'check': 2093,
                     'init': 0,
                     'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.14',
                     'name': 'crc_14_darc',
                     'poly': 2053,
                     'refin': True,
                     'refout': True,
                     'width': 14,
                     'xorout': 0},
     'crc_14_gsm': {'check': 12462,
                    'init': 0,
                    'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-14-gsm',
                    'name': 'crc_14_gsm',
                    'poly': 8237,
                    'refin': False,
                    'refout': False,
                    'width': 14,
                    'xorout': 16383},
     'crc_15': {'check': 1438,
                'init': 0,
                'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.15',
                'name': 'crc_15',
                'poly': 17817,
                'refin': False,
                'refout': False,
                'width': 15,
                'xorout': 0},
     'crc_15_mpt1327': {'check': 9574,
                        'init': 0,
                        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-15-mpt1327',
                        'name': 'crc_15_mpt1327',
                        'poly': 26645,
                        'refin': False,
                        'refout': False,
                        'width': 15,
                        'xorout': 1},
     'crc_16_aug_ccitt': {'check': 58828,
                          'init': 7439,
                          'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-aug-ccitt',
                          'name': 'crc_16_aug_ccitt',
                          'poly': 4129,
                          'refin': False,
                          'refout': False,
                          'width': 16,
                          'xorout': 0},
     'crc_16_buypass': {'check': 65256,
                        'init': 0,
                        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-buypass',
                        'name': 'crc_16_buypass',
                        'poly': 32773,
                        'refin': False,
                        'refout': False,
                        'width': 16,
                        'xorout': 0},
     'crc_16_ccitt_false': {'check': 10673,
                            'init': 65535,
                            'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-ccitt-false',
                            'name': 'crc_16_ccitt_false',
                            'poly': 4129,
                            'refin': False,
                            'refout': False,
                            'width': 16,
                            'xorout': 0},
     'crc_16_cdma2000': {'check': 19462,
                         'init': 65535,
                         'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-cdma2000',
                         'name': 'crc_16_cdma2000',
                         'poly': 51303,
                         'refin': False,
                         'refout': False,
                         'width': 16,
                         'xorout': 0},
     'crc_16_cms': {'check': 44775,
                    'init': 65535,
                    'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-cms',
                    'name': 'crc_16_cms',
                    'poly': 32773,
                    'refin': False,
                    'refout': False,
                    'width': 16,
                    'xorout': 0},
     'crc_16_dds_110': {'check': 40655,
                        'init': 32781,
                        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-dds-110',
                        'name': 'crc_16_dds_110',
                        'poly': 32773,
                        'refin': False,
                        'refout': False,
                        'width': 16,
                        'xorout': 0},
     'crc_16_dect_r': {'check': 126,
                       'init': 0,
                       'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-dect-r',
                       'name': 'crc_16_dect_r',
                       'poly': 1417,
                       'refin': False,
                       'refout': False,
                       'width': 16,
                       'xorout': 1},
     'crc_16_dect_x': {'check': 127,
                       'init': 0,
                       'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-dect-x',
                       'name': 'crc_16_dect_x',
                       'poly': 1417,
                       'refin': False,
                       'refout': False,
                       'width': 16,
                       'xorout': 0},
     'crc_16_dnp': {'check': 60034,
                    'init': 0,
                    'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-dnp',
                    'name': 'crc_16_dnp',
                    'poly': 15717,
                    'refin': True,
                    'refout': True,
                    'width': 16,
                    'xorout': 65535},
     'crc_16_en_13757': {'check': 49847,
                         'init': 0,
                         'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-en-13757',
                         'name': 'crc_16_en_13757',
                         'poly': 15717,
                         'refin': False,
                         'refout': False,
                         'width': 16,
                         'xorout': 65535},
     'crc_16_genibus': {'check': 54862,
                        'init': 65535,
                        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-genibus',
                        'name': 'crc_16_genibus',
                        'poly': 4129,
                        'refin': False,
                        'refout': False,
                        'width': 16,
                        'xorout': 65535},
     'crc_16_gsm': {'check': 52796,
                    'init': 0,
                    'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-gsm',
                    'name': 'crc_16_gsm',
                    'poly': 4129,
                    'refin': False,
                    'refout': False,
                    'width': 16,
                    'xorout': 65535},
     'crc_16_lj1200': {'check': 48628,
                       'init': 0,
                       'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-lj1200',
                       'name': 'crc_16_lj1200',
                       'poly': 28515,
                       'refin': False,
                       'refout': False,
                       'width': 16,
                       'xorout': 0},
     'crc_16_maxim': {'check': 17602,
                      'init': 0,
                      'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-maxim',
                      'name': 'crc_16_maxim',
                      'poly': 32773,
                      'refin': True,
                      'refout': True,
                      'width': 16,
                      'xorout': 65535},
     'crc_16_mcrf4xx': {'check': 28561,
                        'init': 65535,
                        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-mcrf4xx',
                        'name': 'crc_16_mcrf4xx',
                        'poly': 4129,
                        'refin': True,
                        'refout': True,
                        'width': 16,
                        'xorout': 0},
     'crc_16_opensafety_a': {'check': 23864,
                             'init': 0,
                             'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-opensafety-a',
                             'name': 'crc_16_opensafety_a',
                             'poly': 22837,
                             'refin': False,
                             'refout': False,
                             'width': 16,
                             'xorout': 0},
     'crc_16_opensafety_b': {'check': 8446,
                             'init': 0,
                             'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-opensafety-a',
                             'name': 'crc_16_opensafety_b',
                             'poly': 30043,
                             'refin': False,
                             'refout': False,
                             'width': 16,
                             'xorout': 0},
     'crc_16_profibus': {'check': 43033,
                         'init': 65535,
                         'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-profibus',
                         'name': 'crc_16_profibus',
                         'poly': 7631,
                         'refin': False,
                         'refout': False,
                         'width': 16,
                         'xorout': 65535},
     'crc_16_riello': {'check': 25552,
                       'init': 45738,
                       'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-riello',
                       'name': 'crc_16_riello',
                       'poly': 4129,
                       'refin': True,
                       'refout': True,
                       'width': 16,
                       'xorout': 0},
     'crc_16_t10_dif': {'check': 53467,
                        'init': 0,
                        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-t10-dif',
                        'name': 'crc_16_t10_dif',
                        'poly': 35767,
                        'refin': False,
                        'refout': False,
                        'width': 16,
                        'xorout': 0},
     'crc_16_teledisk': {'check': 4019,
                         'init': 0,
                         'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-teledisk',
                         'name': 'crc_16_teledisk',
                         'poly': 41111,
                         'refin': False,
                         'refout': False,
                         'width': 16,
                         'xorout': 0},
     'crc_16_tms37157': {'check': 9905,
                         'init': 35308,
                         'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-tms37157',
                         'name': 'crc_16_tms37157',
                         'poly': 4129,
                         'refin': True,
                         'refout': True,
                         'width': 16,
                         'xorout': 0},
     'crc_16_usb': {'check': 46280,
                    'init': 65535,
                    'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-usb',
                    'name': 'crc_16_usb',
                    'poly': 32773,
                    'refin': True,
                    'refout': True,
                    'width': 16,
                    'xorout': 65535},
     'crc_24': {'check': 2215682,
                'init': 11994318,
                'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.24',
                'name': 'crc_24',
                'poly': 8801531,
                'refin': False,
                'refout': False,
                'width': 24,
                'xorout': 0},
     'crc_24_ble': {'check': 12737110,
                    'init': 5592405,
                    'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-24-ble',
                    'name': 'crc_24_ble',
                    'poly': 1627,
                    'refin': True,
                    'refout': True,
                    'width': 24,
                    'xorout': 0},
     'crc_24_flexray_a': {'check': 7961021,
                          'init': 16702650,
                          'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-24-flexray-a',
                          'name': 'crc_24_flexray_a',
                          'poly': 6122955,
                          'refin': False,
                          'refout': False,
                          'width': 24,
                          'xorout': 0},
     'crc_24_flexray_b': {'check': 2040760,
                          'init': 11259375,
                          'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-24-flexray-b',
                          'name': 'crc_24_flexray_b',
                          'poly': 6122955,
                          'refin': False,
                          'refout': False,
                          'width': 24,
                          'xorout': 0},
     'crc_24_interlaken': {'check': 11858918,
                           'init': 16777215,
                           'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-24-interlaken',
                           'name': 'crc_24_interlaken',
                           'poly': 3312483,
                           'refin': False,
                           'refout': False,
                           'width': 24,
                           'xorout': 16777215},
     'crc_24_lte_a': {'check': 13494019,
                      'init': 0,
                      'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-24-lte-a',
                      'name': 'crc_24_lte_a',
                      'poly': 8801531,
                      'refin': False,
                      'refout': False,
                      'width': 24,
                      'xorout': 0},
     'crc_24_lte_b': {'check': 2355026,
                      'init': 0,
                      'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-24-lte-b',
                      'name': 'crc_24_lte_b',
                      'poly': 8388707,
                      'refin': False,
                      'refout': False,
                      'width': 24,
                      'xorout': 0},
     'crc_30_cdma': {'check': 79907519,
                     'init': 1073741823,
                     'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.30',
                     'name': 'crc_30_cdma',
                     'poly': 540064199,
                     'refin': False,
                     'refout': False,
                     'width': 30,
                     'xorout': 1073741823},
     'crc_31_philips': {'check': 216654956,
                        'init': 2147483647,
                        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.31',
                        'name': 'crc_31_philips',
                        'poly': 79764919,
                        'refin': False,
                        'refout': False,
                        'width': 31,
                        'xorout': 2147483647},
     'crc_32': {'check': 3421780262,
                'init': 4294967295,
                'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.32',
                'name': 'crc_32',
                'poly': 79764919,
                'refin': True,
                'refout': True,
                'width': 32,
                'xorout': 4294967295},
     'crc_32_autosar': {'check': 379048042,
                        'init': 4294967295,
                        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-32-autosar',
                        'name': 'crc_32_autosar',
                        'poly': 4104977171,
                        'refin': True,
                        'refout': True,
                        'width': 32,
                        'xorout': 4294967295},
     'crc_32_bzip2': {'check': 4236843288,
                      'init': 4294967295,
                      'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-32-bzip2',
                      'name': 'crc_32_bzip2',
                      'poly': 79764919,
                      'refin': False,
                      'refout': False,
                      'width': 32,
                      'xorout': 4294967295},
     'crc_32_mpeg_2': {'check': 58124007,
                       'init': 4294967295,
                       'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-32-mpeg-2',
                       'name': 'crc_32_mpeg_2',
                       'poly': 79764919,
                       'refin': False,
                       'refout': False,
                       'width': 32,
                       'xorout': 0},
     'crc_32_posix': {'check': 1985902208,
                      'init': 0,
                      'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-32-posix',
                      'name': 'crc_32_posix',
                      'poly': 79764919,
                      'refin': False,
                      'refout': False,
                      'width': 32,
                      'xorout': 4294967295},
     'crc_32c': {'check': 3808858755,
                 'init': 4294967295,
                 'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-32c',
                 'name': 'crc_32c',
                 'poly': 517762881,
                 'refin': True,
                 'refout': True,
                 'width': 32,
                 'xorout': 4294967295},
     'crc_32d': {'check': 2268157302,
                 'init': 4294967295,
                 'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-32d',
                 'name': 'crc_32d',
                 'poly': 2821953579,
                 'refin': True,
                 'refout': True,
                 'width': 32,
                 'xorout': 4294967295},
     'crc_32q': {'check': 806403967,
                 'init': 0,
                 'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-32q',
                 'name': 'crc_32q',
                 'poly': 2168537515,
                 'refin': False,
                 'refout': False,
                 'width': 32,
                 'xorout': 0},
     'crc_3_gsm': {'check': 4,
                   'init': 0,
                   'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.3',
                   'name': 'crc_3_gsm',
                   'poly': 3,
                   'refin': False,
                   'refout': False,
                   'width': 3,
                   'xorout': 7},
     'crc_3_rohc': {'check': 6,
                    'init': 7,
                    'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-3-rohc',
                    'name': 'crc_3_rohc',
                    'poly': 3,
                    'refin': True,
                    'refout': True,
                    'width': 3,
                    'xorout': 0},
     'crc_40_gsm': {'check': 910907393606,
                    'init': 0,
                    'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.40',
                    'name': 'crc_40_gsm',
                    'poly': 75628553,
                    'refin': False,
                    'refout': False,
                    'width': 40,
                    'xorout': 1099511627775},
     'crc_4_interlaken': {'check': 11,
                          'init': 15,
                          'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.4',
                          'name': 'crc_4_interlaken',
                          'poly': 3,
                          'refin': False,
                          'refout': False,
                          'width': 4,
                          'xorout': 15},
     'crc_4_itu': {'check': 7,
                   'init': 0,
                   'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-4-itu',
                   'name': 'crc_4_itu',
                   'poly': 3,
                   'refin': True,
                   'refout': True,
                   'width': 4,
                   'xorout': 0},
     'crc_5_epc': {'check': 0,
                   'init': 9,
                   'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.5',
                   'name': 'crc_5_epc',
                   'poly': 9,
                   'refin': False,
                   'refout': False,
                   'width': 5,
                   'xorout': 0},
     'crc_5_itu': {'check': 7,
                   'init': 0,
                   'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-5-itu',
                   'name': 'crc_5_itu',
                   'poly': 21,
                   'refin': True,
                   'refout': True,
                   'width': 5,
                   'xorout': 0},
     'crc_5_usb': {'check': 25,
                   'init': 31,
                   'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-5-usb',
                   'name': 'crc_5_usb',
                   'poly': 5,
                   'refin': True,
                   'refout': True,
                   'width': 5,
                   'xorout': 31},
     'crc_64': {'check': 7800480153909949255,
                'init': 0,
                'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.64',
                'name': 'crc_64',
                'poly': 4823603603198064275,
                'refin': False,
                'refout': False,
                'width': 64,
                'xorout': 0},
     'crc_64_go_iso': {'check': 13333283586479230977,
                       'init': 18446744073709551615,
                       'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-64-go-iso',
                       'name': 'crc_64_go_iso',
                       'poly': 27,
                       'refin': True,
                       'refout': True,
                       'width': 64,
                       'xorout': 18446744073709551615},
     'crc_64_we': {'check': 7128171145767219210,
                   'init': 18446744073709551615,
                   'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-64-we',
                   'name': 'crc_64_we',
                   'poly': 4823603603198064275,
                   'refin': False,
                   'refout': False,
                   'width': 64,
                   'xorout': 18446744073709551615},
     'crc_64_xz': {'check': 11051210869376104954,
                   'init': 18446744073709551615,
                   'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-64-xz',
                   'name': 'crc_64_xz',
                   'poly': 4823603603198064275,
                   'refin': True,
                   'refout': True,
                   'width': 64,
                   'xorout': 18446744073709551615},
     'crc_6_cdma2000_a': {'check': 13,
                          'init': 63,
                          'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.6',
                          'name': 'crc_6_cdma2000_a',
                          'poly': 39,
                          'refin': False,
                          'refout': False,
                          'width': 6,
                          'xorout': 0},
     'crc_6_cdma2000_b': {'check': 59,
                          'init': 63,
                          'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-6-cdma2000-b',
                          'name': 'crc_6_cdma2000_b',
                          'poly': 7,
                          'refin': False,
                          'refout': False,
                          'width': 6,
                          'xorout': 0},
     'crc_6_darc': {'check': 38,
                    'init': 0,
                    'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-6-darc',
                    'name': 'crc_6_darc',
                    'poly': 25,
                    'refin': True,
                    'refout': True,
                    'width': 6,
                    'xorout': 0},
     'crc_6_gsm': {'check': 19,
                   'init': 0,
                   'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-6-gsm',
                   'name': 'crc_6_gsm',
                   'poly': 47,
                   'refin': False,
                   'refout': False,
                   'width': 6,
                   'xorout': 63},
     'crc_6_itu': {'check': 6,
                   'init': 0,
                   'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-6-itu',
                   'name': 'crc_6_itu',
                   'poly': 3,
                   'refin': True,
                   'refout': True,
                   'width': 6,
                   'xorout': 0},
     'crc_7': {'check': 117,
               'init': 0,
               'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.7',
               'name': 'crc_7',
               'poly': 9,
               'refin': False,
               'refout': False,
               'width': 7,
               'xorout': 0},
     'crc_7_rohc': {'check': 83,
                    'init': 127,
                    'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-7-rohc',
                    'name': 'crc_7_rohc',
                    'poly': 79,
                    'refin': True,
                    'refout': True,
                    'width': 7,
                    'xorout': 0},
     'crc_7_umts': {'check': 97,
                    'init': 0,
                    'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-7-umts',
                    'name': 'crc_7_umts',
                    'poly': 69,
                    'refin': False,
                    'refout': False,
                    'width': 7,
                    'xorout': 0},
     'crc_8': {'check': 244,
               'init': 0,
               'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.8',
               'name': 'crc_8',
               'poly': 7,
               'refin': False,
               'refout': False,
               'width': 8,
               'xorout': 0},
     'crc_82_darc': {'check': 749237524598872659187218,
                     'init': 0,
                     'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.82',
                     'name': 'crc_82_darc',
                     'poly': 229256212191916381701137,
                     'refin': True,
                     'refout': True,
                     'width': 82,
                     'xorout': 0},
     'crc_8_autosar': {'check': 223,
                       'init': 255,
                       'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-8-autosar',
                       'name': 'crc_8_autosar',
                       'poly': 47,
                       'refin': False,
                       'refout': False,
                       'width': 8,
                       'xorout': 255},
     'crc_8_cdma2000': {'check': 218,
                        'init': 255,
                        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-8-cdma2000',
                        'name': 'crc_8_cdma2000',
                        'poly': 155,
                        'refin': False,
                        'refout': False,
                        'width': 8,
                        'xorout': 0},
     'crc_8_darc': {'check': 21,
                    'init': 0,
                    'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-8-darc',
                    'name': 'crc_8_darc',
                    'poly': 57,
                    'refin': True,
                    'refout': True,
                    'width': 8,
                    'xorout': 0},
     'crc_8_dvb_s2': {'check': 188,
                      'init': 0,
                      'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-8-dvb-s2',
                      'name': 'crc_8_dvb_s2',
                      'poly': 213,
                      'refin': False,
                      'refout': False,
                      'width': 8,
                      'xorout': 0},
     'crc_8_ebu': {'check': 151,
                   'init': 255,
                   'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-8-ebu',
                   'name': 'crc_8_ebu',
                   'poly': 29,
                   'refin': True,
                   'refout': True,
                   'width': 8,
                   'xorout': 0},
     'crc_8_gsm_a': {'check': 55,
                     'init': 0,
                     'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-8-gsm-a',
                     'name': 'crc_8_gsm_a',
                     'poly': 29,
                     'refin': False,
                     'refout': False,
                     'width': 8,
                     'xorout': 0},
     'crc_8_gsm_b': {'check': 148,
                     'init': 0,
                     'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-8-gsm-b',
                     'name': 'crc_8_gsm_b',
                     'poly': 73,
                     'refin': False,
                     'refout': False,
                     'width': 8,
                     'xorout': 255},
     'crc_8_i_code': {'check': 126,
                      'init': 253,
                      'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-8-i-code',
                      'name': 'crc_8_i_code',
                      'poly': 29,
                      'refin': False,
                      'refout': False,
                      'width': 8,
                      'xorout': 0},
     'crc_8_itu': {'check': 161,
                   'init': 0,
                   'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-8-itu',
                   'name': 'crc_8_itu',
                   'poly': 7,
                   'refin': False,
                   'refout': False,
                   'width': 8,
                   'xorout': 85},
     'crc_8_lte': {'check': 234,
                   'init': 0,
                   'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-8-lte',
                   'name': 'crc_8_lte',
                   'poly': 155,
                   'refin': False,
                   'refout': False,
                   'width': 8,
                   'xorout': 0},
     'crc_8_maxim': {'check': 161,
                     'init': 0,
                     'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-8-maxim',
                     'name': 'crc_8_maxim',
                     'poly': 49,
                     'refin': True,
                     'refout': True,
                     'width': 8,
                     'xorout': 0},
     'crc_8_opensafety': {'check': 62,
                          'init': 0,
                          'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-8-opensafety',
                          'name': 'crc_8_opensafety',
                          'poly': 47,
                          'refin': False,
                          'refout': False,
                          'width': 8,
                          'xorout': 0},
     'crc_8_rohc': {'check': 208,
                    'init': 255,
                    'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-8-rohc',
                    'name': 'crc_8_rohc',
                    'poly': 7,
                    'refin': True,
                    'refout': True,
                    'width': 8,
                    'xorout': 0},
     'crc_8_sae_j1850': {'check': 75,
                         'init': 255,
                         'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-8-sae-j1850',
                         'name': 'crc_8_sae_j1850',
                         'poly': 29,
                         'refin': False,
                         'refout': False,
                         'width': 8,
                         'xorout': 255},
     'crc_8_wcdma': {'check': 37,
                     'init': 0,
                     'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-8-wdcma',
                     'name': 'crc_8_wcdma',
                     'poly': 155,
                     'refin': True,
                     'refout': True,
                     'width': 8,
                     'xorout': 0},
     'crc_a': {'check': 48901,
               'init': 50886,
               'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-a',
               'name': 'crc_a',
               'poly': 4129,
               'refin': True,
               'refout': True,
               'width': 16,
               'xorout': 0},
     'jamcrc': {'check': 873187033,
                'init': 4294967295,
                'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.jamcrc',
                'name': 'jamcrc',
                'poly': 79764919,
                'refin': True,
                'refout': True,
                'width': 32,
                'xorout': 0},
     'kermit': {'check': 8585,
                'init': 0,
                'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.kermit',
                'name': 'kermit',
                'poly': 4129,
                'refin': True,
                'refout': True,
                'width': 16,
                'xorout': 0},
     'modbus': {'check': 19255,
                'init': 65535,
                'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.modbus',
                'name': 'modbus',
                'poly': 32773,
                'refin': True,
                'refout': True,
                'width': 16,
                'xorout': 0},
     'x_25': {'check': 36974,
              'init': 65535,
              'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.x-25',
              'name': 'x_25',
              'poly': 4129,
              'refin': True,
              'refout': True,
              'width': 16,
              'xorout': 65535},
     'xfer': {'check': 3171672888,
              'init': 0,
              'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.xfer',
              'name': 'xfer',
              'poly': 175,
              'refin': False,
              'refout': False,
              'width': 32,
              'xorout': 0},
     'xmodem': {'check': 12739,
                'init': 0,
                'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.xmodem',
                'name': 'xmodem',
                'poly': 4129,
                'refin': False,
                'refout': False,
                'width': 16,
                'xorout': 0}}
