From f93262bb91de052132b49afb64067721e5fa984d Mon Sep 17 00:00:00 2001 From: dearblue Date: Thu, 13 Jul 2023 23:25:42 +0900 Subject: [PATCH] Speeding up C implementation Switch from Sarwate's algorithm to byte-order free Slicing-by-16. Each table data file was generated by `ext/digest/gentable.rb`. In addition, the inspection string for rspec, which was previously 10 bytes, is extended to 19 bytes. This is to check the Slicing-by-16 loop, which processes in 16-byte units. --- ext/digest/crc12_3gpp/crc12_3gpp.c | 61 +- ext/digest/crc12_3gpp/crc12_3gpp_table.h | 558 +++++++++ ext/digest/crc15/crc15.c | 47 +- ext/digest/crc15/crc15_table.h | 558 +++++++++ ext/digest/crc16/crc16.c | 63 +- ext/digest/crc16/crc16_table.h | 558 +++++++++ ext/digest/crc16_ccitt/crc16_ccitt.c | 63 +- ext/digest/crc16_ccitt/crc16_ccitt_table.h | 558 +++++++++ ext/digest/crc16_dnp/crc16_dnp.c | 63 +- ext/digest/crc16_dnp/crc16_dnp_table.h | 558 +++++++++ ext/digest/crc16_genibus/crc16_genibus.c | 63 +- .../crc16_genibus/crc16_genibus_table.h | 558 +++++++++ ext/digest/crc16_kermit/crc16_kermit.c | 63 +- ext/digest/crc16_kermit/crc16_kermit_table.h | 558 +++++++++ ext/digest/crc16_modbus/crc16_modbus.c | 63 +- ext/digest/crc16_modbus/crc16_modbus_table.h | 558 +++++++++ ext/digest/crc16_usb/crc16_usb.c | 63 +- ext/digest/crc16_usb/crc16_usb_table.h | 558 +++++++++ ext/digest/crc16_x_25/crc16_x_25.c | 63 +- ext/digest/crc16_x_25/crc16_x_25_table.h | 558 +++++++++ ext/digest/crc16_xmodem/crc16_xmodem.c | 63 +- ext/digest/crc16_xmodem/crc16_xmodem_table.h | 558 +++++++++ ext/digest/crc16_zmodem/crc16_zmodem.c | 63 +- ext/digest/crc16_zmodem/crc16_zmodem_table.h | 558 +++++++++ ext/digest/crc24/crc24.c | 63 +- ext/digest/crc24/crc24_table.h | 1070 +++++++++++++++++ ext/digest/crc32/crc32.c | 63 +- ext/digest/crc32/crc32_table.h | 1070 +++++++++++++++++ ext/digest/crc32_bzip2/crc32_bzip2.c | 63 +- ext/digest/crc32_bzip2/crc32_bzip2_table.h | 1070 +++++++++++++++++ ext/digest/crc32_jam/crc32_jam.c | 63 +- ext/digest/crc32_jam/crc32_jam_table.h | 1070 +++++++++++++++++ ext/digest/crc32_mpeg/crc32_mpeg.c | 63 +- ext/digest/crc32_mpeg/crc32_mpeg_table.h | 1070 +++++++++++++++++ ext/digest/crc32_posix/crc32_posix.c | 63 +- ext/digest/crc32_posix/crc32_posix_table.h | 1070 +++++++++++++++++ ext/digest/crc32_xfer/crc32_xfer.c | 63 +- ext/digest/crc32_xfer/crc32_xfer_table.h | 1070 +++++++++++++++++ ext/digest/crc32c/crc32c.c | 63 +- ext/digest/crc32c/crc32c_table.h | 1070 +++++++++++++++++ ext/digest/crc5/crc5.c | 49 +- ext/digest/crc5/crc5_table.h | 558 +++++++++ ext/digest/crc64/crc64.c | 95 +- ext/digest/crc64/crc64_table.h | 1070 +++++++++++++++++ ext/digest/crc64_jones/crc64_jones.c | 95 +- ext/digest/crc64_jones/crc64_jones_table.h | 1070 +++++++++++++++++ ext/digest/crc64_xz/crc64_xz.c | 95 +- ext/digest/crc64_xz/crc64_xz_table.h | 1070 +++++++++++++++++ ext/digest/crc8/crc8.c | 49 +- ext/digest/crc8/crc8_table.h | 558 +++++++++ ext/digest/crc8_1wire/crc8_1wire.c | 49 +- ext/digest/crc8_1wire/crc8_1wire_table.h | 558 +++++++++ ext/digest/gentable.rb | 84 ++ ext/digest/table.h.erb | 21 + spec/crc15_spec.rb | 4 +- spec/crc16_ccitt_spec.rb | 4 +- spec/crc16_genibus_spec.rb | 4 +- spec/crc16_kermit_spec.rb | 4 +- spec/crc16_modbus_spec.rb | 4 +- spec/crc16_spec.rb | 4 +- spec/crc16_usb_spec.rb | 4 +- spec/crc16_x_25_spec.rb | 4 +- spec/crc16_xmodem_spec.rb | 4 +- spec/crc16_zmodem_spec.rb | 4 +- spec/crc1_spec.rb | 4 +- spec/crc24_spec.rb | 4 +- spec/crc32_bzip2_spec.rb | 4 +- spec/crc32_jam_spec.rb | 4 +- spec/crc32_mpeg_spec.rb | 4 +- spec/crc32_posix_spec.rb | 4 +- spec/crc32_spec.rb | 4 +- spec/crc32_xfer_spec.rb | 4 +- spec/crc32c_spec.rb | 4 +- spec/crc5_spec.rb | 4 +- spec/crc64_jones_spec.rb | 4 +- spec/crc64_spec.rb | 4 +- spec/crc64_xz_spec.rb | 4 +- spec/crc8_1wire_spec.rb | 4 +- spec/crc8_spec.rb | 4 +- 79 files changed, 20922 insertions(+), 1097 deletions(-) create mode 100644 ext/digest/crc12_3gpp/crc12_3gpp_table.h create mode 100644 ext/digest/crc15/crc15_table.h create mode 100644 ext/digest/crc16/crc16_table.h create mode 100644 ext/digest/crc16_ccitt/crc16_ccitt_table.h create mode 100644 ext/digest/crc16_dnp/crc16_dnp_table.h create mode 100644 ext/digest/crc16_genibus/crc16_genibus_table.h create mode 100644 ext/digest/crc16_kermit/crc16_kermit_table.h create mode 100644 ext/digest/crc16_modbus/crc16_modbus_table.h create mode 100644 ext/digest/crc16_usb/crc16_usb_table.h create mode 100644 ext/digest/crc16_x_25/crc16_x_25_table.h create mode 100644 ext/digest/crc16_xmodem/crc16_xmodem_table.h create mode 100644 ext/digest/crc16_zmodem/crc16_zmodem_table.h create mode 100644 ext/digest/crc24/crc24_table.h create mode 100644 ext/digest/crc32/crc32_table.h create mode 100644 ext/digest/crc32_bzip2/crc32_bzip2_table.h create mode 100644 ext/digest/crc32_jam/crc32_jam_table.h create mode 100644 ext/digest/crc32_mpeg/crc32_mpeg_table.h create mode 100644 ext/digest/crc32_posix/crc32_posix_table.h create mode 100644 ext/digest/crc32_xfer/crc32_xfer_table.h create mode 100644 ext/digest/crc32c/crc32c_table.h create mode 100644 ext/digest/crc5/crc5_table.h create mode 100644 ext/digest/crc64/crc64_table.h create mode 100644 ext/digest/crc64_jones/crc64_jones_table.h create mode 100644 ext/digest/crc64_xz/crc64_xz_table.h create mode 100644 ext/digest/crc8/crc8_table.h create mode 100644 ext/digest/crc8_1wire/crc8_1wire_table.h create mode 100644 ext/digest/gentable.rb create mode 100644 ext/digest/table.h.erb diff --git a/ext/digest/crc12_3gpp/crc12_3gpp.c b/ext/digest/crc12_3gpp/crc12_3gpp.c index 983229d..a4b1cd5 100644 --- a/ext/digest/crc12_3gpp/crc12_3gpp.c +++ b/ext/digest/crc12_3gpp/crc12_3gpp.c @@ -15,52 +15,39 @@ */ #include "crc12_3gpp.h" - -/** - * Static table used for the table_driven implementation. - */ -static const crc12_t crc12_table[256] = { - 0x000, 0x80f, 0x811, 0x01e, 0x82d, 0x022, 0x03c, 0x833, 0x855, 0x05a, 0x044, 0x84b, 0x078, 0x877, 0x869, 0x066, - 0x8a5, 0x0aa, 0x0b4, 0x8bb, 0x088, 0x887, 0x899, 0x096, 0x0f0, 0x8ff, 0x8e1, 0x0ee, 0x8dd, 0x0d2, 0x0cc, 0x8c3, - 0x945, 0x14a, 0x154, 0x95b, 0x168, 0x967, 0x979, 0x176, 0x110, 0x91f, 0x901, 0x10e, 0x93d, 0x132, 0x12c, 0x923, - 0x1e0, 0x9ef, 0x9f1, 0x1fe, 0x9cd, 0x1c2, 0x1dc, 0x9d3, 0x9b5, 0x1ba, 0x1a4, 0x9ab, 0x198, 0x997, 0x989, 0x186, - 0xa85, 0x28a, 0x294, 0xa9b, 0x2a8, 0xaa7, 0xab9, 0x2b6, 0x2d0, 0xadf, 0xac1, 0x2ce, 0xafd, 0x2f2, 0x2ec, 0xae3, - 0x220, 0xa2f, 0xa31, 0x23e, 0xa0d, 0x202, 0x21c, 0xa13, 0xa75, 0x27a, 0x264, 0xa6b, 0x258, 0xa57, 0xa49, 0x246, - 0x3c0, 0xbcf, 0xbd1, 0x3de, 0xbed, 0x3e2, 0x3fc, 0xbf3, 0xb95, 0x39a, 0x384, 0xb8b, 0x3b8, 0xbb7, 0xba9, 0x3a6, - 0xb65, 0x36a, 0x374, 0xb7b, 0x348, 0xb47, 0xb59, 0x356, 0x330, 0xb3f, 0xb21, 0x32e, 0xb1d, 0x312, 0x30c, 0xb03, - 0xd05, 0x50a, 0x514, 0xd1b, 0x528, 0xd27, 0xd39, 0x536, 0x550, 0xd5f, 0xd41, 0x54e, 0xd7d, 0x572, 0x56c, 0xd63, - 0x5a0, 0xdaf, 0xdb1, 0x5be, 0xd8d, 0x582, 0x59c, 0xd93, 0xdf5, 0x5fa, 0x5e4, 0xdeb, 0x5d8, 0xdd7, 0xdc9, 0x5c6, - 0x440, 0xc4f, 0xc51, 0x45e, 0xc6d, 0x462, 0x47c, 0xc73, 0xc15, 0x41a, 0x404, 0xc0b, 0x438, 0xc37, 0xc29, 0x426, - 0xce5, 0x4ea, 0x4f4, 0xcfb, 0x4c8, 0xcc7, 0xcd9, 0x4d6, 0x4b0, 0xcbf, 0xca1, 0x4ae, 0xc9d, 0x492, 0x48c, 0xc83, - 0x780, 0xf8f, 0xf91, 0x79e, 0xfad, 0x7a2, 0x7bc, 0xfb3, 0xfd5, 0x7da, 0x7c4, 0xfcb, 0x7f8, 0xff7, 0xfe9, 0x7e6, - 0xf25, 0x72a, 0x734, 0xf3b, 0x708, 0xf07, 0xf19, 0x716, 0x770, 0xf7f, 0xf61, 0x76e, 0xf5d, 0x752, 0x74c, 0xf43, - 0xec5, 0x6ca, 0x6d4, 0xedb, 0x6e8, 0xee7, 0xef9, 0x6f6, 0x690, 0xe9f, 0xe81, 0x68e, 0xebd, 0x6b2, 0x6ac, 0xea3, - 0x660, 0xe6f, 0xe71, 0x67e, 0xe4d, 0x642, 0x65c, 0xe53, 0xe35, 0x63a, 0x624, 0xe2b, 0x618, 0xe17, 0xe09, 0x606 -}; - -crc12_t crc_reflect(crc12_t data, size_t data_len) -{ - unsigned int i; - crc12_t ret = data & 0x01; - - for (i = 1; i < data_len; i++) - { - data >>= 1; - ret = (ret << 1) | (data & 0x01); - } - - return ret; -} +#include "crc12_3gpp_table.h" crc12_t crc12_3gpp_update(crc12_t crc, const void *data, size_t data_len) { const unsigned char *d = (const unsigned char *)data; unsigned int tbl_idx; + for (; data_len >= SLICE_SIZE; data_len -= SLICE_SIZE) + { + crc = crc12_3gpp_table[15][d[ 0] ^ ((crc >> 4) & 0xff)] ^ + crc12_3gpp_table[14][d[ 1] ^ ((crc << 4) & 0xff)] ^ + crc12_3gpp_table[13][d[ 2] ] ^ + crc12_3gpp_table[12][d[ 3] ] ^ + crc12_3gpp_table[11][d[ 4] ] ^ + crc12_3gpp_table[10][d[ 5] ] ^ + crc12_3gpp_table[ 9][d[ 6] ] ^ + crc12_3gpp_table[ 8][d[ 7] ] ^ + crc12_3gpp_table[ 7][d[ 8] ] ^ + crc12_3gpp_table[ 6][d[ 9] ] ^ + crc12_3gpp_table[ 5][d[10] ] ^ + crc12_3gpp_table[ 4][d[11] ] ^ + crc12_3gpp_table[ 3][d[12] ] ^ + crc12_3gpp_table[ 2][d[13] ] ^ + crc12_3gpp_table[ 1][d[14] ] ^ + crc12_3gpp_table[ 0][d[15] ]; + crc &= 0xfff; + d += SLICE_SIZE; + } + while (data_len--) { tbl_idx = ((crc >> 4) ^ *d) & 0xff; - crc = (crc12_table[tbl_idx] ^ (crc << 8)) & 0xfff; + crc = (crc12_3gpp_table[0][tbl_idx] ^ (crc << 8)) & 0xfff; d++; } diff --git a/ext/digest/crc12_3gpp/crc12_3gpp_table.h b/ext/digest/crc12_3gpp/crc12_3gpp_table.h new file mode 100644 index 0000000..5599662 --- /dev/null +++ b/ext/digest/crc12_3gpp/crc12_3gpp_table.h @@ -0,0 +1,558 @@ +/* + * bitwidth: 12 + * generator polynomial: 0x080f + * input bit direction: NORMAL + * slice bytes per iteration: 16 + * slide bits per table: 8 + * + * Generated by: gentable.rb of digest-crc + */ + +#define SLICE_SIZE 16 + +static const uint16_t crc12_3gpp_table[SLICE_SIZE][256] = { + { + 0x0000, 0x080f, 0x0811, 0x001e, 0x082d, 0x0022, 0x003c, 0x0833, + 0x0855, 0x005a, 0x0044, 0x084b, 0x0078, 0x0877, 0x0869, 0x0066, + 0x08a5, 0x00aa, 0x00b4, 0x08bb, 0x0088, 0x0887, 0x0899, 0x0096, + 0x00f0, 0x08ff, 0x08e1, 0x00ee, 0x08dd, 0x00d2, 0x00cc, 0x08c3, + 0x0945, 0x014a, 0x0154, 0x095b, 0x0168, 0x0967, 0x0979, 0x0176, + 0x0110, 0x091f, 0x0901, 0x010e, 0x093d, 0x0132, 0x012c, 0x0923, + 0x01e0, 0x09ef, 0x09f1, 0x01fe, 0x09cd, 0x01c2, 0x01dc, 0x09d3, + 0x09b5, 0x01ba, 0x01a4, 0x09ab, 0x0198, 0x0997, 0x0989, 0x0186, + 0x0a85, 0x028a, 0x0294, 0x0a9b, 0x02a8, 0x0aa7, 0x0ab9, 0x02b6, + 0x02d0, 0x0adf, 0x0ac1, 0x02ce, 0x0afd, 0x02f2, 0x02ec, 0x0ae3, + 0x0220, 0x0a2f, 0x0a31, 0x023e, 0x0a0d, 0x0202, 0x021c, 0x0a13, + 0x0a75, 0x027a, 0x0264, 0x0a6b, 0x0258, 0x0a57, 0x0a49, 0x0246, + 0x03c0, 0x0bcf, 0x0bd1, 0x03de, 0x0bed, 0x03e2, 0x03fc, 0x0bf3, + 0x0b95, 0x039a, 0x0384, 0x0b8b, 0x03b8, 0x0bb7, 0x0ba9, 0x03a6, + 0x0b65, 0x036a, 0x0374, 0x0b7b, 0x0348, 0x0b47, 0x0b59, 0x0356, + 0x0330, 0x0b3f, 0x0b21, 0x032e, 0x0b1d, 0x0312, 0x030c, 0x0b03, + 0x0d05, 0x050a, 0x0514, 0x0d1b, 0x0528, 0x0d27, 0x0d39, 0x0536, + 0x0550, 0x0d5f, 0x0d41, 0x054e, 0x0d7d, 0x0572, 0x056c, 0x0d63, + 0x05a0, 0x0daf, 0x0db1, 0x05be, 0x0d8d, 0x0582, 0x059c, 0x0d93, + 0x0df5, 0x05fa, 0x05e4, 0x0deb, 0x05d8, 0x0dd7, 0x0dc9, 0x05c6, + 0x0440, 0x0c4f, 0x0c51, 0x045e, 0x0c6d, 0x0462, 0x047c, 0x0c73, + 0x0c15, 0x041a, 0x0404, 0x0c0b, 0x0438, 0x0c37, 0x0c29, 0x0426, + 0x0ce5, 0x04ea, 0x04f4, 0x0cfb, 0x04c8, 0x0cc7, 0x0cd9, 0x04d6, + 0x04b0, 0x0cbf, 0x0ca1, 0x04ae, 0x0c9d, 0x0492, 0x048c, 0x0c83, + 0x0780, 0x0f8f, 0x0f91, 0x079e, 0x0fad, 0x07a2, 0x07bc, 0x0fb3, + 0x0fd5, 0x07da, 0x07c4, 0x0fcb, 0x07f8, 0x0ff7, 0x0fe9, 0x07e6, + 0x0f25, 0x072a, 0x0734, 0x0f3b, 0x0708, 0x0f07, 0x0f19, 0x0716, + 0x0770, 0x0f7f, 0x0f61, 0x076e, 0x0f5d, 0x0752, 0x074c, 0x0f43, + 0x0ec5, 0x06ca, 0x06d4, 0x0edb, 0x06e8, 0x0ee7, 0x0ef9, 0x06f6, + 0x0690, 0x0e9f, 0x0e81, 0x068e, 0x0ebd, 0x06b2, 0x06ac, 0x0ea3, + 0x0660, 0x0e6f, 0x0e71, 0x067e, 0x0e4d, 0x0642, 0x065c, 0x0e53, + 0x0e35, 0x063a, 0x0624, 0x0e2b, 0x0618, 0x0e17, 0x0e09, 0x0606, + }, + { + 0x0000, 0x0205, 0x040a, 0x060f, 0x0814, 0x0a11, 0x0c1e, 0x0e1b, + 0x0827, 0x0a22, 0x0c2d, 0x0e28, 0x0033, 0x0236, 0x0439, 0x063c, + 0x0841, 0x0a44, 0x0c4b, 0x0e4e, 0x0055, 0x0250, 0x045f, 0x065a, + 0x0066, 0x0263, 0x046c, 0x0669, 0x0872, 0x0a77, 0x0c78, 0x0e7d, + 0x088d, 0x0a88, 0x0c87, 0x0e82, 0x0099, 0x029c, 0x0493, 0x0696, + 0x00aa, 0x02af, 0x04a0, 0x06a5, 0x08be, 0x0abb, 0x0cb4, 0x0eb1, + 0x00cc, 0x02c9, 0x04c6, 0x06c3, 0x08d8, 0x0add, 0x0cd2, 0x0ed7, + 0x08eb, 0x0aee, 0x0ce1, 0x0ee4, 0x00ff, 0x02fa, 0x04f5, 0x06f0, + 0x0915, 0x0b10, 0x0d1f, 0x0f1a, 0x0101, 0x0304, 0x050b, 0x070e, + 0x0132, 0x0337, 0x0538, 0x073d, 0x0926, 0x0b23, 0x0d2c, 0x0f29, + 0x0154, 0x0351, 0x055e, 0x075b, 0x0940, 0x0b45, 0x0d4a, 0x0f4f, + 0x0973, 0x0b76, 0x0d79, 0x0f7c, 0x0167, 0x0362, 0x056d, 0x0768, + 0x0198, 0x039d, 0x0592, 0x0797, 0x098c, 0x0b89, 0x0d86, 0x0f83, + 0x09bf, 0x0bba, 0x0db5, 0x0fb0, 0x01ab, 0x03ae, 0x05a1, 0x07a4, + 0x09d9, 0x0bdc, 0x0dd3, 0x0fd6, 0x01cd, 0x03c8, 0x05c7, 0x07c2, + 0x01fe, 0x03fb, 0x05f4, 0x07f1, 0x09ea, 0x0bef, 0x0de0, 0x0fe5, + 0x0a25, 0x0820, 0x0e2f, 0x0c2a, 0x0231, 0x0034, 0x063b, 0x043e, + 0x0202, 0x0007, 0x0608, 0x040d, 0x0a16, 0x0813, 0x0e1c, 0x0c19, + 0x0264, 0x0061, 0x066e, 0x046b, 0x0a70, 0x0875, 0x0e7a, 0x0c7f, + 0x0a43, 0x0846, 0x0e49, 0x0c4c, 0x0257, 0x0052, 0x065d, 0x0458, + 0x02a8, 0x00ad, 0x06a2, 0x04a7, 0x0abc, 0x08b9, 0x0eb6, 0x0cb3, + 0x0a8f, 0x088a, 0x0e85, 0x0c80, 0x029b, 0x009e, 0x0691, 0x0494, + 0x0ae9, 0x08ec, 0x0ee3, 0x0ce6, 0x02fd, 0x00f8, 0x06f7, 0x04f2, + 0x02ce, 0x00cb, 0x06c4, 0x04c1, 0x0ada, 0x08df, 0x0ed0, 0x0cd5, + 0x0330, 0x0135, 0x073a, 0x053f, 0x0b24, 0x0921, 0x0f2e, 0x0d2b, + 0x0b17, 0x0912, 0x0f1d, 0x0d18, 0x0303, 0x0106, 0x0709, 0x050c, + 0x0b71, 0x0974, 0x0f7b, 0x0d7e, 0x0365, 0x0160, 0x076f, 0x056a, + 0x0356, 0x0153, 0x075c, 0x0559, 0x0b42, 0x0947, 0x0f48, 0x0d4d, + 0x0bbd, 0x09b8, 0x0fb7, 0x0db2, 0x03a9, 0x01ac, 0x07a3, 0x05a6, + 0x039a, 0x019f, 0x0790, 0x0595, 0x0b8e, 0x098b, 0x0f84, 0x0d81, + 0x03fc, 0x01f9, 0x07f6, 0x05f3, 0x0be8, 0x09ed, 0x0fe2, 0x0de7, + 0x0bdb, 0x09de, 0x0fd1, 0x0dd4, 0x03cf, 0x01ca, 0x07c5, 0x05c0, + }, + { + 0x0000, 0x0c45, 0x0085, 0x0cc0, 0x010a, 0x0d4f, 0x018f, 0x0dca, + 0x0214, 0x0e51, 0x0291, 0x0ed4, 0x031e, 0x0f5b, 0x039b, 0x0fde, + 0x0428, 0x086d, 0x04ad, 0x08e8, 0x0522, 0x0967, 0x05a7, 0x09e2, + 0x063c, 0x0a79, 0x06b9, 0x0afc, 0x0736, 0x0b73, 0x07b3, 0x0bf6, + 0x0850, 0x0415, 0x08d5, 0x0490, 0x095a, 0x051f, 0x09df, 0x059a, + 0x0a44, 0x0601, 0x0ac1, 0x0684, 0x0b4e, 0x070b, 0x0bcb, 0x078e, + 0x0c78, 0x003d, 0x0cfd, 0x00b8, 0x0d72, 0x0137, 0x0df7, 0x01b2, + 0x0e6c, 0x0229, 0x0ee9, 0x02ac, 0x0f66, 0x0323, 0x0fe3, 0x03a6, + 0x08af, 0x04ea, 0x082a, 0x046f, 0x09a5, 0x05e0, 0x0920, 0x0565, + 0x0abb, 0x06fe, 0x0a3e, 0x067b, 0x0bb1, 0x07f4, 0x0b34, 0x0771, + 0x0c87, 0x00c2, 0x0c02, 0x0047, 0x0d8d, 0x01c8, 0x0d08, 0x014d, + 0x0e93, 0x02d6, 0x0e16, 0x0253, 0x0f99, 0x03dc, 0x0f1c, 0x0359, + 0x00ff, 0x0cba, 0x007a, 0x0c3f, 0x01f5, 0x0db0, 0x0170, 0x0d35, + 0x02eb, 0x0eae, 0x026e, 0x0e2b, 0x03e1, 0x0fa4, 0x0364, 0x0f21, + 0x04d7, 0x0892, 0x0452, 0x0817, 0x05dd, 0x0998, 0x0558, 0x091d, + 0x06c3, 0x0a86, 0x0646, 0x0a03, 0x07c9, 0x0b8c, 0x074c, 0x0b09, + 0x0951, 0x0514, 0x09d4, 0x0591, 0x085b, 0x041e, 0x08de, 0x049b, + 0x0b45, 0x0700, 0x0bc0, 0x0785, 0x0a4f, 0x060a, 0x0aca, 0x068f, + 0x0d79, 0x013c, 0x0dfc, 0x01b9, 0x0c73, 0x0036, 0x0cf6, 0x00b3, + 0x0f6d, 0x0328, 0x0fe8, 0x03ad, 0x0e67, 0x0222, 0x0ee2, 0x02a7, + 0x0101, 0x0d44, 0x0184, 0x0dc1, 0x000b, 0x0c4e, 0x008e, 0x0ccb, + 0x0315, 0x0f50, 0x0390, 0x0fd5, 0x021f, 0x0e5a, 0x029a, 0x0edf, + 0x0529, 0x096c, 0x05ac, 0x09e9, 0x0423, 0x0866, 0x04a6, 0x08e3, + 0x073d, 0x0b78, 0x07b8, 0x0bfd, 0x0637, 0x0a72, 0x06b2, 0x0af7, + 0x01fe, 0x0dbb, 0x017b, 0x0d3e, 0x00f4, 0x0cb1, 0x0071, 0x0c34, + 0x03ea, 0x0faf, 0x036f, 0x0f2a, 0x02e0, 0x0ea5, 0x0265, 0x0e20, + 0x05d6, 0x0993, 0x0553, 0x0916, 0x04dc, 0x0899, 0x0459, 0x081c, + 0x07c2, 0x0b87, 0x0747, 0x0b02, 0x06c8, 0x0a8d, 0x064d, 0x0a08, + 0x09ae, 0x05eb, 0x092b, 0x056e, 0x08a4, 0x04e1, 0x0821, 0x0464, + 0x0bba, 0x07ff, 0x0b3f, 0x077a, 0x0ab0, 0x06f5, 0x0a35, 0x0670, + 0x0d86, 0x01c3, 0x0d03, 0x0146, 0x0c8c, 0x00c9, 0x0c09, 0x004c, + 0x0f92, 0x03d7, 0x0f17, 0x0352, 0x0e98, 0x02dd, 0x0e1d, 0x0258, + }, + { + 0x0000, 0x0aad, 0x0d55, 0x07f8, 0x02a5, 0x0808, 0x0ff0, 0x055d, + 0x054a, 0x0fe7, 0x081f, 0x02b2, 0x07ef, 0x0d42, 0x0aba, 0x0017, + 0x0a94, 0x0039, 0x07c1, 0x0d6c, 0x0831, 0x029c, 0x0564, 0x0fc9, + 0x0fde, 0x0573, 0x028b, 0x0826, 0x0d7b, 0x07d6, 0x002e, 0x0a83, + 0x0d27, 0x078a, 0x0072, 0x0adf, 0x0f82, 0x052f, 0x02d7, 0x087a, + 0x086d, 0x02c0, 0x0538, 0x0f95, 0x0ac8, 0x0065, 0x079d, 0x0d30, + 0x07b3, 0x0d1e, 0x0ae6, 0x004b, 0x0516, 0x0fbb, 0x0843, 0x02ee, + 0x02f9, 0x0854, 0x0fac, 0x0501, 0x005c, 0x0af1, 0x0d09, 0x07a4, + 0x0241, 0x08ec, 0x0f14, 0x05b9, 0x00e4, 0x0a49, 0x0db1, 0x071c, + 0x070b, 0x0da6, 0x0a5e, 0x00f3, 0x05ae, 0x0f03, 0x08fb, 0x0256, + 0x08d5, 0x0278, 0x0580, 0x0f2d, 0x0a70, 0x00dd, 0x0725, 0x0d88, + 0x0d9f, 0x0732, 0x00ca, 0x0a67, 0x0f3a, 0x0597, 0x026f, 0x08c2, + 0x0f66, 0x05cb, 0x0233, 0x089e, 0x0dc3, 0x076e, 0x0096, 0x0a3b, + 0x0a2c, 0x0081, 0x0779, 0x0dd4, 0x0889, 0x0224, 0x05dc, 0x0f71, + 0x05f2, 0x0f5f, 0x08a7, 0x020a, 0x0757, 0x0dfa, 0x0a02, 0x00af, + 0x00b8, 0x0a15, 0x0ded, 0x0740, 0x021d, 0x08b0, 0x0f48, 0x05e5, + 0x0482, 0x0e2f, 0x09d7, 0x037a, 0x0627, 0x0c8a, 0x0b72, 0x01df, + 0x01c8, 0x0b65, 0x0c9d, 0x0630, 0x036d, 0x09c0, 0x0e38, 0x0495, + 0x0e16, 0x04bb, 0x0343, 0x09ee, 0x0cb3, 0x061e, 0x01e6, 0x0b4b, + 0x0b5c, 0x01f1, 0x0609, 0x0ca4, 0x09f9, 0x0354, 0x04ac, 0x0e01, + 0x09a5, 0x0308, 0x04f0, 0x0e5d, 0x0b00, 0x01ad, 0x0655, 0x0cf8, + 0x0cef, 0x0642, 0x01ba, 0x0b17, 0x0e4a, 0x04e7, 0x031f, 0x09b2, + 0x0331, 0x099c, 0x0e64, 0x04c9, 0x0194, 0x0b39, 0x0cc1, 0x066c, + 0x067b, 0x0cd6, 0x0b2e, 0x0183, 0x04de, 0x0e73, 0x098b, 0x0326, + 0x06c3, 0x0c6e, 0x0b96, 0x013b, 0x0466, 0x0ecb, 0x0933, 0x039e, + 0x0389, 0x0924, 0x0edc, 0x0471, 0x012c, 0x0b81, 0x0c79, 0x06d4, + 0x0c57, 0x06fa, 0x0102, 0x0baf, 0x0ef2, 0x045f, 0x03a7, 0x090a, + 0x091d, 0x03b0, 0x0448, 0x0ee5, 0x0bb8, 0x0115, 0x06ed, 0x0c40, + 0x0be4, 0x0149, 0x06b1, 0x0c1c, 0x0941, 0x03ec, 0x0414, 0x0eb9, + 0x0eae, 0x0403, 0x03fb, 0x0956, 0x0c0b, 0x06a6, 0x015e, 0x0bf3, + 0x0170, 0x0bdd, 0x0c25, 0x0688, 0x03d5, 0x0978, 0x0e80, 0x042d, + 0x043a, 0x0e97, 0x096f, 0x03c2, 0x069f, 0x0c32, 0x0bca, 0x0167, + }, + { + 0x0000, 0x0904, 0x0a07, 0x0303, 0x0c01, 0x0505, 0x0606, 0x0f02, + 0x000d, 0x0909, 0x0a0a, 0x030e, 0x0c0c, 0x0508, 0x060b, 0x0f0f, + 0x001a, 0x091e, 0x0a1d, 0x0319, 0x0c1b, 0x051f, 0x061c, 0x0f18, + 0x0017, 0x0913, 0x0a10, 0x0314, 0x0c16, 0x0512, 0x0611, 0x0f15, + 0x0034, 0x0930, 0x0a33, 0x0337, 0x0c35, 0x0531, 0x0632, 0x0f36, + 0x0039, 0x093d, 0x0a3e, 0x033a, 0x0c38, 0x053c, 0x063f, 0x0f3b, + 0x002e, 0x092a, 0x0a29, 0x032d, 0x0c2f, 0x052b, 0x0628, 0x0f2c, + 0x0023, 0x0927, 0x0a24, 0x0320, 0x0c22, 0x0526, 0x0625, 0x0f21, + 0x0068, 0x096c, 0x0a6f, 0x036b, 0x0c69, 0x056d, 0x066e, 0x0f6a, + 0x0065, 0x0961, 0x0a62, 0x0366, 0x0c64, 0x0560, 0x0663, 0x0f67, + 0x0072, 0x0976, 0x0a75, 0x0371, 0x0c73, 0x0577, 0x0674, 0x0f70, + 0x007f, 0x097b, 0x0a78, 0x037c, 0x0c7e, 0x057a, 0x0679, 0x0f7d, + 0x005c, 0x0958, 0x0a5b, 0x035f, 0x0c5d, 0x0559, 0x065a, 0x0f5e, + 0x0051, 0x0955, 0x0a56, 0x0352, 0x0c50, 0x0554, 0x0657, 0x0f53, + 0x0046, 0x0942, 0x0a41, 0x0345, 0x0c47, 0x0543, 0x0640, 0x0f44, + 0x004b, 0x094f, 0x0a4c, 0x0348, 0x0c4a, 0x054e, 0x064d, 0x0f49, + 0x00d0, 0x09d4, 0x0ad7, 0x03d3, 0x0cd1, 0x05d5, 0x06d6, 0x0fd2, + 0x00dd, 0x09d9, 0x0ada, 0x03de, 0x0cdc, 0x05d8, 0x06db, 0x0fdf, + 0x00ca, 0x09ce, 0x0acd, 0x03c9, 0x0ccb, 0x05cf, 0x06cc, 0x0fc8, + 0x00c7, 0x09c3, 0x0ac0, 0x03c4, 0x0cc6, 0x05c2, 0x06c1, 0x0fc5, + 0x00e4, 0x09e0, 0x0ae3, 0x03e7, 0x0ce5, 0x05e1, 0x06e2, 0x0fe6, + 0x00e9, 0x09ed, 0x0aee, 0x03ea, 0x0ce8, 0x05ec, 0x06ef, 0x0feb, + 0x00fe, 0x09fa, 0x0af9, 0x03fd, 0x0cff, 0x05fb, 0x06f8, 0x0ffc, + 0x00f3, 0x09f7, 0x0af4, 0x03f0, 0x0cf2, 0x05f6, 0x06f5, 0x0ff1, + 0x00b8, 0x09bc, 0x0abf, 0x03bb, 0x0cb9, 0x05bd, 0x06be, 0x0fba, + 0x00b5, 0x09b1, 0x0ab2, 0x03b6, 0x0cb4, 0x05b0, 0x06b3, 0x0fb7, + 0x00a2, 0x09a6, 0x0aa5, 0x03a1, 0x0ca3, 0x05a7, 0x06a4, 0x0fa0, + 0x00af, 0x09ab, 0x0aa8, 0x03ac, 0x0cae, 0x05aa, 0x06a9, 0x0fad, + 0x008c, 0x0988, 0x0a8b, 0x038f, 0x0c8d, 0x0589, 0x068a, 0x0f8e, + 0x0081, 0x0985, 0x0a86, 0x0382, 0x0c80, 0x0584, 0x0687, 0x0f83, + 0x0096, 0x0992, 0x0a91, 0x0395, 0x0c97, 0x0593, 0x0690, 0x0f94, + 0x009b, 0x099f, 0x0a9c, 0x0398, 0x0c9a, 0x059e, 0x069d, 0x0f99, + }, + { + 0x0000, 0x01a0, 0x0340, 0x02e0, 0x0680, 0x0720, 0x05c0, 0x0460, + 0x0d00, 0x0ca0, 0x0e40, 0x0fe0, 0x0b80, 0x0a20, 0x08c0, 0x0960, + 0x020f, 0x03af, 0x014f, 0x00ef, 0x048f, 0x052f, 0x07cf, 0x066f, + 0x0f0f, 0x0eaf, 0x0c4f, 0x0def, 0x098f, 0x082f, 0x0acf, 0x0b6f, + 0x041e, 0x05be, 0x075e, 0x06fe, 0x029e, 0x033e, 0x01de, 0x007e, + 0x091e, 0x08be, 0x0a5e, 0x0bfe, 0x0f9e, 0x0e3e, 0x0cde, 0x0d7e, + 0x0611, 0x07b1, 0x0551, 0x04f1, 0x0091, 0x0131, 0x03d1, 0x0271, + 0x0b11, 0x0ab1, 0x0851, 0x09f1, 0x0d91, 0x0c31, 0x0ed1, 0x0f71, + 0x083c, 0x099c, 0x0b7c, 0x0adc, 0x0ebc, 0x0f1c, 0x0dfc, 0x0c5c, + 0x053c, 0x049c, 0x067c, 0x07dc, 0x03bc, 0x021c, 0x00fc, 0x015c, + 0x0a33, 0x0b93, 0x0973, 0x08d3, 0x0cb3, 0x0d13, 0x0ff3, 0x0e53, + 0x0733, 0x0693, 0x0473, 0x05d3, 0x01b3, 0x0013, 0x02f3, 0x0353, + 0x0c22, 0x0d82, 0x0f62, 0x0ec2, 0x0aa2, 0x0b02, 0x09e2, 0x0842, + 0x0122, 0x0082, 0x0262, 0x03c2, 0x07a2, 0x0602, 0x04e2, 0x0542, + 0x0e2d, 0x0f8d, 0x0d6d, 0x0ccd, 0x08ad, 0x090d, 0x0bed, 0x0a4d, + 0x032d, 0x028d, 0x006d, 0x01cd, 0x05ad, 0x040d, 0x06ed, 0x074d, + 0x0877, 0x09d7, 0x0b37, 0x0a97, 0x0ef7, 0x0f57, 0x0db7, 0x0c17, + 0x0577, 0x04d7, 0x0637, 0x0797, 0x03f7, 0x0257, 0x00b7, 0x0117, + 0x0a78, 0x0bd8, 0x0938, 0x0898, 0x0cf8, 0x0d58, 0x0fb8, 0x0e18, + 0x0778, 0x06d8, 0x0438, 0x0598, 0x01f8, 0x0058, 0x02b8, 0x0318, + 0x0c69, 0x0dc9, 0x0f29, 0x0e89, 0x0ae9, 0x0b49, 0x09a9, 0x0809, + 0x0169, 0x00c9, 0x0229, 0x0389, 0x07e9, 0x0649, 0x04a9, 0x0509, + 0x0e66, 0x0fc6, 0x0d26, 0x0c86, 0x08e6, 0x0946, 0x0ba6, 0x0a06, + 0x0366, 0x02c6, 0x0026, 0x0186, 0x05e6, 0x0446, 0x06a6, 0x0706, + 0x004b, 0x01eb, 0x030b, 0x02ab, 0x06cb, 0x076b, 0x058b, 0x042b, + 0x0d4b, 0x0ceb, 0x0e0b, 0x0fab, 0x0bcb, 0x0a6b, 0x088b, 0x092b, + 0x0244, 0x03e4, 0x0104, 0x00a4, 0x04c4, 0x0564, 0x0784, 0x0624, + 0x0f44, 0x0ee4, 0x0c04, 0x0da4, 0x09c4, 0x0864, 0x0a84, 0x0b24, + 0x0455, 0x05f5, 0x0715, 0x06b5, 0x02d5, 0x0375, 0x0195, 0x0035, + 0x0955, 0x08f5, 0x0a15, 0x0bb5, 0x0fd5, 0x0e75, 0x0c95, 0x0d35, + 0x065a, 0x07fa, 0x051a, 0x04ba, 0x00da, 0x017a, 0x039a, 0x023a, + 0x0b5a, 0x0afa, 0x081a, 0x09ba, 0x0dda, 0x0c7a, 0x0e9a, 0x0f3a, + }, + { + 0x0000, 0x08e1, 0x09cd, 0x012c, 0x0b95, 0x0374, 0x0258, 0x0ab9, + 0x0f25, 0x07c4, 0x06e8, 0x0e09, 0x04b0, 0x0c51, 0x0d7d, 0x059c, + 0x0645, 0x0ea4, 0x0f88, 0x0769, 0x0dd0, 0x0531, 0x041d, 0x0cfc, + 0x0960, 0x0181, 0x00ad, 0x084c, 0x02f5, 0x0a14, 0x0b38, 0x03d9, + 0x0c8a, 0x046b, 0x0547, 0x0da6, 0x071f, 0x0ffe, 0x0ed2, 0x0633, + 0x03af, 0x0b4e, 0x0a62, 0x0283, 0x083a, 0x00db, 0x01f7, 0x0916, + 0x0acf, 0x022e, 0x0302, 0x0be3, 0x015a, 0x09bb, 0x0897, 0x0076, + 0x05ea, 0x0d0b, 0x0c27, 0x04c6, 0x0e7f, 0x069e, 0x07b2, 0x0f53, + 0x011b, 0x09fa, 0x08d6, 0x0037, 0x0a8e, 0x026f, 0x0343, 0x0ba2, + 0x0e3e, 0x06df, 0x07f3, 0x0f12, 0x05ab, 0x0d4a, 0x0c66, 0x0487, + 0x075e, 0x0fbf, 0x0e93, 0x0672, 0x0ccb, 0x042a, 0x0506, 0x0de7, + 0x087b, 0x009a, 0x01b6, 0x0957, 0x03ee, 0x0b0f, 0x0a23, 0x02c2, + 0x0d91, 0x0570, 0x045c, 0x0cbd, 0x0604, 0x0ee5, 0x0fc9, 0x0728, + 0x02b4, 0x0a55, 0x0b79, 0x0398, 0x0921, 0x01c0, 0x00ec, 0x080d, + 0x0bd4, 0x0335, 0x0219, 0x0af8, 0x0041, 0x08a0, 0x098c, 0x016d, + 0x04f1, 0x0c10, 0x0d3c, 0x05dd, 0x0f64, 0x0785, 0x06a9, 0x0e48, + 0x0236, 0x0ad7, 0x0bfb, 0x031a, 0x09a3, 0x0142, 0x006e, 0x088f, + 0x0d13, 0x05f2, 0x04de, 0x0c3f, 0x0686, 0x0e67, 0x0f4b, 0x07aa, + 0x0473, 0x0c92, 0x0dbe, 0x055f, 0x0fe6, 0x0707, 0x062b, 0x0eca, + 0x0b56, 0x03b7, 0x029b, 0x0a7a, 0x00c3, 0x0822, 0x090e, 0x01ef, + 0x0ebc, 0x065d, 0x0771, 0x0f90, 0x0529, 0x0dc8, 0x0ce4, 0x0405, + 0x0199, 0x0978, 0x0854, 0x00b5, 0x0a0c, 0x02ed, 0x03c1, 0x0b20, + 0x08f9, 0x0018, 0x0134, 0x09d5, 0x036c, 0x0b8d, 0x0aa1, 0x0240, + 0x07dc, 0x0f3d, 0x0e11, 0x06f0, 0x0c49, 0x04a8, 0x0584, 0x0d65, + 0x032d, 0x0bcc, 0x0ae0, 0x0201, 0x08b8, 0x0059, 0x0175, 0x0994, + 0x0c08, 0x04e9, 0x05c5, 0x0d24, 0x079d, 0x0f7c, 0x0e50, 0x06b1, + 0x0568, 0x0d89, 0x0ca5, 0x0444, 0x0efd, 0x061c, 0x0730, 0x0fd1, + 0x0a4d, 0x02ac, 0x0380, 0x0b61, 0x01d8, 0x0939, 0x0815, 0x00f4, + 0x0fa7, 0x0746, 0x066a, 0x0e8b, 0x0432, 0x0cd3, 0x0dff, 0x051e, + 0x0082, 0x0863, 0x094f, 0x01ae, 0x0b17, 0x03f6, 0x02da, 0x0a3b, + 0x09e2, 0x0103, 0x002f, 0x08ce, 0x0277, 0x0a96, 0x0bba, 0x035b, + 0x06c7, 0x0e26, 0x0f0a, 0x07eb, 0x0d52, 0x05b3, 0x049f, 0x0c7e, + }, + { + 0x0000, 0x046c, 0x08d8, 0x0cb4, 0x09bf, 0x0dd3, 0x0167, 0x050b, + 0x0b71, 0x0f1d, 0x03a9, 0x07c5, 0x02ce, 0x06a2, 0x0a16, 0x0e7a, + 0x0eed, 0x0a81, 0x0635, 0x0259, 0x0752, 0x033e, 0x0f8a, 0x0be6, + 0x059c, 0x01f0, 0x0d44, 0x0928, 0x0c23, 0x084f, 0x04fb, 0x0097, + 0x05d5, 0x01b9, 0x0d0d, 0x0961, 0x0c6a, 0x0806, 0x04b2, 0x00de, + 0x0ea4, 0x0ac8, 0x067c, 0x0210, 0x071b, 0x0377, 0x0fc3, 0x0baf, + 0x0b38, 0x0f54, 0x03e0, 0x078c, 0x0287, 0x06eb, 0x0a5f, 0x0e33, + 0x0049, 0x0425, 0x0891, 0x0cfd, 0x09f6, 0x0d9a, 0x012e, 0x0542, + 0x0baa, 0x0fc6, 0x0372, 0x071e, 0x0215, 0x0679, 0x0acd, 0x0ea1, + 0x00db, 0x04b7, 0x0803, 0x0c6f, 0x0964, 0x0d08, 0x01bc, 0x05d0, + 0x0547, 0x012b, 0x0d9f, 0x09f3, 0x0cf8, 0x0894, 0x0420, 0x004c, + 0x0e36, 0x0a5a, 0x06ee, 0x0282, 0x0789, 0x03e5, 0x0f51, 0x0b3d, + 0x0e7f, 0x0a13, 0x06a7, 0x02cb, 0x07c0, 0x03ac, 0x0f18, 0x0b74, + 0x050e, 0x0162, 0x0dd6, 0x09ba, 0x0cb1, 0x08dd, 0x0469, 0x0005, + 0x0092, 0x04fe, 0x084a, 0x0c26, 0x092d, 0x0d41, 0x01f5, 0x0599, + 0x0be3, 0x0f8f, 0x033b, 0x0757, 0x025c, 0x0630, 0x0a84, 0x0ee8, + 0x0f5b, 0x0b37, 0x0783, 0x03ef, 0x06e4, 0x0288, 0x0e3c, 0x0a50, + 0x042a, 0x0046, 0x0cf2, 0x089e, 0x0d95, 0x09f9, 0x054d, 0x0121, + 0x01b6, 0x05da, 0x096e, 0x0d02, 0x0809, 0x0c65, 0x00d1, 0x04bd, + 0x0ac7, 0x0eab, 0x021f, 0x0673, 0x0378, 0x0714, 0x0ba0, 0x0fcc, + 0x0a8e, 0x0ee2, 0x0256, 0x063a, 0x0331, 0x075d, 0x0be9, 0x0f85, + 0x01ff, 0x0593, 0x0927, 0x0d4b, 0x0840, 0x0c2c, 0x0098, 0x04f4, + 0x0463, 0x000f, 0x0cbb, 0x08d7, 0x0ddc, 0x09b0, 0x0504, 0x0168, + 0x0f12, 0x0b7e, 0x07ca, 0x03a6, 0x06ad, 0x02c1, 0x0e75, 0x0a19, + 0x04f1, 0x009d, 0x0c29, 0x0845, 0x0d4e, 0x0922, 0x0596, 0x01fa, + 0x0f80, 0x0bec, 0x0758, 0x0334, 0x063f, 0x0253, 0x0ee7, 0x0a8b, + 0x0a1c, 0x0e70, 0x02c4, 0x06a8, 0x03a3, 0x07cf, 0x0b7b, 0x0f17, + 0x016d, 0x0501, 0x09b5, 0x0dd9, 0x08d2, 0x0cbe, 0x000a, 0x0466, + 0x0124, 0x0548, 0x09fc, 0x0d90, 0x089b, 0x0cf7, 0x0043, 0x042f, + 0x0a55, 0x0e39, 0x028d, 0x06e1, 0x03ea, 0x0786, 0x0b32, 0x0f5e, + 0x0fc9, 0x0ba5, 0x0711, 0x037d, 0x0676, 0x021a, 0x0eae, 0x0ac2, + 0x04b8, 0x00d4, 0x0c60, 0x080c, 0x0d07, 0x096b, 0x05df, 0x01b3, + }, + { + 0x0000, 0x06b9, 0x0d72, 0x0bcb, 0x02eb, 0x0452, 0x0f99, 0x0920, + 0x05d6, 0x036f, 0x08a4, 0x0e1d, 0x073d, 0x0184, 0x0a4f, 0x0cf6, + 0x0bac, 0x0d15, 0x06de, 0x0067, 0x0947, 0x0ffe, 0x0435, 0x028c, + 0x0e7a, 0x08c3, 0x0308, 0x05b1, 0x0c91, 0x0a28, 0x01e3, 0x075a, + 0x0f57, 0x09ee, 0x0225, 0x049c, 0x0dbc, 0x0b05, 0x00ce, 0x0677, + 0x0a81, 0x0c38, 0x07f3, 0x014a, 0x086a, 0x0ed3, 0x0518, 0x03a1, + 0x04fb, 0x0242, 0x0989, 0x0f30, 0x0610, 0x00a9, 0x0b62, 0x0ddb, + 0x012d, 0x0794, 0x0c5f, 0x0ae6, 0x03c6, 0x057f, 0x0eb4, 0x080d, + 0x06a1, 0x0018, 0x0bd3, 0x0d6a, 0x044a, 0x02f3, 0x0938, 0x0f81, + 0x0377, 0x05ce, 0x0e05, 0x08bc, 0x019c, 0x0725, 0x0cee, 0x0a57, + 0x0d0d, 0x0bb4, 0x007f, 0x06c6, 0x0fe6, 0x095f, 0x0294, 0x042d, + 0x08db, 0x0e62, 0x05a9, 0x0310, 0x0a30, 0x0c89, 0x0742, 0x01fb, + 0x09f6, 0x0f4f, 0x0484, 0x023d, 0x0b1d, 0x0da4, 0x066f, 0x00d6, + 0x0c20, 0x0a99, 0x0152, 0x07eb, 0x0ecb, 0x0872, 0x03b9, 0x0500, + 0x025a, 0x04e3, 0x0f28, 0x0991, 0x00b1, 0x0608, 0x0dc3, 0x0b7a, + 0x078c, 0x0135, 0x0afe, 0x0c47, 0x0567, 0x03de, 0x0815, 0x0eac, + 0x0d42, 0x0bfb, 0x0030, 0x0689, 0x0fa9, 0x0910, 0x02db, 0x0462, + 0x0894, 0x0e2d, 0x05e6, 0x035f, 0x0a7f, 0x0cc6, 0x070d, 0x01b4, + 0x06ee, 0x0057, 0x0b9c, 0x0d25, 0x0405, 0x02bc, 0x0977, 0x0fce, + 0x0338, 0x0581, 0x0e4a, 0x08f3, 0x01d3, 0x076a, 0x0ca1, 0x0a18, + 0x0215, 0x04ac, 0x0f67, 0x09de, 0x00fe, 0x0647, 0x0d8c, 0x0b35, + 0x07c3, 0x017a, 0x0ab1, 0x0c08, 0x0528, 0x0391, 0x085a, 0x0ee3, + 0x09b9, 0x0f00, 0x04cb, 0x0272, 0x0b52, 0x0deb, 0x0620, 0x0099, + 0x0c6f, 0x0ad6, 0x011d, 0x07a4, 0x0e84, 0x083d, 0x03f6, 0x054f, + 0x0be3, 0x0d5a, 0x0691, 0x0028, 0x0908, 0x0fb1, 0x047a, 0x02c3, + 0x0e35, 0x088c, 0x0347, 0x05fe, 0x0cde, 0x0a67, 0x01ac, 0x0715, + 0x004f, 0x06f6, 0x0d3d, 0x0b84, 0x02a4, 0x041d, 0x0fd6, 0x096f, + 0x0599, 0x0320, 0x08eb, 0x0e52, 0x0772, 0x01cb, 0x0a00, 0x0cb9, + 0x04b4, 0x020d, 0x09c6, 0x0f7f, 0x065f, 0x00e6, 0x0b2d, 0x0d94, + 0x0162, 0x07db, 0x0c10, 0x0aa9, 0x0389, 0x0530, 0x0efb, 0x0842, + 0x0f18, 0x09a1, 0x026a, 0x04d3, 0x0df3, 0x0b4a, 0x0081, 0x0638, + 0x0ace, 0x0c77, 0x07bc, 0x0105, 0x0825, 0x0e9c, 0x0557, 0x03ee, + }, + { + 0x0000, 0x028b, 0x0516, 0x079d, 0x0a2c, 0x08a7, 0x0f3a, 0x0db1, + 0x0c57, 0x0edc, 0x0941, 0x0bca, 0x067b, 0x04f0, 0x036d, 0x01e6, + 0x00a1, 0x022a, 0x05b7, 0x073c, 0x0a8d, 0x0806, 0x0f9b, 0x0d10, + 0x0cf6, 0x0e7d, 0x09e0, 0x0b6b, 0x06da, 0x0451, 0x03cc, 0x0147, + 0x0142, 0x03c9, 0x0454, 0x06df, 0x0b6e, 0x09e5, 0x0e78, 0x0cf3, + 0x0d15, 0x0f9e, 0x0803, 0x0a88, 0x0739, 0x05b2, 0x022f, 0x00a4, + 0x01e3, 0x0368, 0x04f5, 0x067e, 0x0bcf, 0x0944, 0x0ed9, 0x0c52, + 0x0db4, 0x0f3f, 0x08a2, 0x0a29, 0x0798, 0x0513, 0x028e, 0x0005, + 0x0284, 0x000f, 0x0792, 0x0519, 0x08a8, 0x0a23, 0x0dbe, 0x0f35, + 0x0ed3, 0x0c58, 0x0bc5, 0x094e, 0x04ff, 0x0674, 0x01e9, 0x0362, + 0x0225, 0x00ae, 0x0733, 0x05b8, 0x0809, 0x0a82, 0x0d1f, 0x0f94, + 0x0e72, 0x0cf9, 0x0b64, 0x09ef, 0x045e, 0x06d5, 0x0148, 0x03c3, + 0x03c6, 0x014d, 0x06d0, 0x045b, 0x09ea, 0x0b61, 0x0cfc, 0x0e77, + 0x0f91, 0x0d1a, 0x0a87, 0x080c, 0x05bd, 0x0736, 0x00ab, 0x0220, + 0x0367, 0x01ec, 0x0671, 0x04fa, 0x094b, 0x0bc0, 0x0c5d, 0x0ed6, + 0x0f30, 0x0dbb, 0x0a26, 0x08ad, 0x051c, 0x0797, 0x000a, 0x0281, + 0x0508, 0x0783, 0x001e, 0x0295, 0x0f24, 0x0daf, 0x0a32, 0x08b9, + 0x095f, 0x0bd4, 0x0c49, 0x0ec2, 0x0373, 0x01f8, 0x0665, 0x04ee, + 0x05a9, 0x0722, 0x00bf, 0x0234, 0x0f85, 0x0d0e, 0x0a93, 0x0818, + 0x09fe, 0x0b75, 0x0ce8, 0x0e63, 0x03d2, 0x0159, 0x06c4, 0x044f, + 0x044a, 0x06c1, 0x015c, 0x03d7, 0x0e66, 0x0ced, 0x0b70, 0x09fb, + 0x081d, 0x0a96, 0x0d0b, 0x0f80, 0x0231, 0x00ba, 0x0727, 0x05ac, + 0x04eb, 0x0660, 0x01fd, 0x0376, 0x0ec7, 0x0c4c, 0x0bd1, 0x095a, + 0x08bc, 0x0a37, 0x0daa, 0x0f21, 0x0290, 0x001b, 0x0786, 0x050d, + 0x078c, 0x0507, 0x029a, 0x0011, 0x0da0, 0x0f2b, 0x08b6, 0x0a3d, + 0x0bdb, 0x0950, 0x0ecd, 0x0c46, 0x01f7, 0x037c, 0x04e1, 0x066a, + 0x072d, 0x05a6, 0x023b, 0x00b0, 0x0d01, 0x0f8a, 0x0817, 0x0a9c, + 0x0b7a, 0x09f1, 0x0e6c, 0x0ce7, 0x0156, 0x03dd, 0x0440, 0x06cb, + 0x06ce, 0x0445, 0x03d8, 0x0153, 0x0ce2, 0x0e69, 0x09f4, 0x0b7f, + 0x0a99, 0x0812, 0x0f8f, 0x0d04, 0x00b5, 0x023e, 0x05a3, 0x0728, + 0x066f, 0x04e4, 0x0379, 0x01f2, 0x0c43, 0x0ec8, 0x0955, 0x0bde, + 0x0a38, 0x08b3, 0x0f2e, 0x0da5, 0x0014, 0x029f, 0x0502, 0x0789, + }, + { + 0x0000, 0x0a10, 0x0c2f, 0x063f, 0x0051, 0x0a41, 0x0c7e, 0x066e, + 0x00a2, 0x0ab2, 0x0c8d, 0x069d, 0x00f3, 0x0ae3, 0x0cdc, 0x06cc, + 0x0144, 0x0b54, 0x0d6b, 0x077b, 0x0115, 0x0b05, 0x0d3a, 0x072a, + 0x01e6, 0x0bf6, 0x0dc9, 0x07d9, 0x01b7, 0x0ba7, 0x0d98, 0x0788, + 0x0288, 0x0898, 0x0ea7, 0x04b7, 0x02d9, 0x08c9, 0x0ef6, 0x04e6, + 0x022a, 0x083a, 0x0e05, 0x0415, 0x027b, 0x086b, 0x0e54, 0x0444, + 0x03cc, 0x09dc, 0x0fe3, 0x05f3, 0x039d, 0x098d, 0x0fb2, 0x05a2, + 0x036e, 0x097e, 0x0f41, 0x0551, 0x033f, 0x092f, 0x0f10, 0x0500, + 0x0510, 0x0f00, 0x093f, 0x032f, 0x0541, 0x0f51, 0x096e, 0x037e, + 0x05b2, 0x0fa2, 0x099d, 0x038d, 0x05e3, 0x0ff3, 0x09cc, 0x03dc, + 0x0454, 0x0e44, 0x087b, 0x026b, 0x0405, 0x0e15, 0x082a, 0x023a, + 0x04f6, 0x0ee6, 0x08d9, 0x02c9, 0x04a7, 0x0eb7, 0x0888, 0x0298, + 0x0798, 0x0d88, 0x0bb7, 0x01a7, 0x07c9, 0x0dd9, 0x0be6, 0x01f6, + 0x073a, 0x0d2a, 0x0b15, 0x0105, 0x076b, 0x0d7b, 0x0b44, 0x0154, + 0x06dc, 0x0ccc, 0x0af3, 0x00e3, 0x068d, 0x0c9d, 0x0aa2, 0x00b2, + 0x067e, 0x0c6e, 0x0a51, 0x0041, 0x062f, 0x0c3f, 0x0a00, 0x0010, + 0x0a20, 0x0030, 0x060f, 0x0c1f, 0x0a71, 0x0061, 0x065e, 0x0c4e, + 0x0a82, 0x0092, 0x06ad, 0x0cbd, 0x0ad3, 0x00c3, 0x06fc, 0x0cec, + 0x0b64, 0x0174, 0x074b, 0x0d5b, 0x0b35, 0x0125, 0x071a, 0x0d0a, + 0x0bc6, 0x01d6, 0x07e9, 0x0df9, 0x0b97, 0x0187, 0x07b8, 0x0da8, + 0x08a8, 0x02b8, 0x0487, 0x0e97, 0x08f9, 0x02e9, 0x04d6, 0x0ec6, + 0x080a, 0x021a, 0x0425, 0x0e35, 0x085b, 0x024b, 0x0474, 0x0e64, + 0x09ec, 0x03fc, 0x05c3, 0x0fd3, 0x09bd, 0x03ad, 0x0592, 0x0f82, + 0x094e, 0x035e, 0x0561, 0x0f71, 0x091f, 0x030f, 0x0530, 0x0f20, + 0x0f30, 0x0520, 0x031f, 0x090f, 0x0f61, 0x0571, 0x034e, 0x095e, + 0x0f92, 0x0582, 0x03bd, 0x09ad, 0x0fc3, 0x05d3, 0x03ec, 0x09fc, + 0x0e74, 0x0464, 0x025b, 0x084b, 0x0e25, 0x0435, 0x020a, 0x081a, + 0x0ed6, 0x04c6, 0x02f9, 0x08e9, 0x0e87, 0x0497, 0x02a8, 0x08b8, + 0x0db8, 0x07a8, 0x0197, 0x0b87, 0x0de9, 0x07f9, 0x01c6, 0x0bd6, + 0x0d1a, 0x070a, 0x0135, 0x0b25, 0x0d4b, 0x075b, 0x0164, 0x0b74, + 0x0cfc, 0x06ec, 0x00d3, 0x0ac3, 0x0cad, 0x06bd, 0x0082, 0x0a92, + 0x0c5e, 0x064e, 0x0071, 0x0a61, 0x0c0f, 0x061f, 0x0020, 0x0a30, + }, + { + 0x0000, 0x0c4f, 0x0091, 0x0cde, 0x0122, 0x0d6d, 0x01b3, 0x0dfc, + 0x0244, 0x0e0b, 0x02d5, 0x0e9a, 0x0366, 0x0f29, 0x03f7, 0x0fb8, + 0x0488, 0x08c7, 0x0419, 0x0856, 0x05aa, 0x09e5, 0x053b, 0x0974, + 0x06cc, 0x0a83, 0x065d, 0x0a12, 0x07ee, 0x0ba1, 0x077f, 0x0b30, + 0x0910, 0x055f, 0x0981, 0x05ce, 0x0832, 0x047d, 0x08a3, 0x04ec, + 0x0b54, 0x071b, 0x0bc5, 0x078a, 0x0a76, 0x0639, 0x0ae7, 0x06a8, + 0x0d98, 0x01d7, 0x0d09, 0x0146, 0x0cba, 0x00f5, 0x0c2b, 0x0064, + 0x0fdc, 0x0393, 0x0f4d, 0x0302, 0x0efe, 0x02b1, 0x0e6f, 0x0220, + 0x0a2f, 0x0660, 0x0abe, 0x06f1, 0x0b0d, 0x0742, 0x0b9c, 0x07d3, + 0x086b, 0x0424, 0x08fa, 0x04b5, 0x0949, 0x0506, 0x09d8, 0x0597, + 0x0ea7, 0x02e8, 0x0e36, 0x0279, 0x0f85, 0x03ca, 0x0f14, 0x035b, + 0x0ce3, 0x00ac, 0x0c72, 0x003d, 0x0dc1, 0x018e, 0x0d50, 0x011f, + 0x033f, 0x0f70, 0x03ae, 0x0fe1, 0x021d, 0x0e52, 0x028c, 0x0ec3, + 0x017b, 0x0d34, 0x01ea, 0x0da5, 0x0059, 0x0c16, 0x00c8, 0x0c87, + 0x07b7, 0x0bf8, 0x0726, 0x0b69, 0x0695, 0x0ada, 0x0604, 0x0a4b, + 0x05f3, 0x09bc, 0x0562, 0x092d, 0x04d1, 0x089e, 0x0440, 0x080f, + 0x0c51, 0x001e, 0x0cc0, 0x008f, 0x0d73, 0x013c, 0x0de2, 0x01ad, + 0x0e15, 0x025a, 0x0e84, 0x02cb, 0x0f37, 0x0378, 0x0fa6, 0x03e9, + 0x08d9, 0x0496, 0x0848, 0x0407, 0x09fb, 0x05b4, 0x096a, 0x0525, + 0x0a9d, 0x06d2, 0x0a0c, 0x0643, 0x0bbf, 0x07f0, 0x0b2e, 0x0761, + 0x0541, 0x090e, 0x05d0, 0x099f, 0x0463, 0x082c, 0x04f2, 0x08bd, + 0x0705, 0x0b4a, 0x0794, 0x0bdb, 0x0627, 0x0a68, 0x06b6, 0x0af9, + 0x01c9, 0x0d86, 0x0158, 0x0d17, 0x00eb, 0x0ca4, 0x007a, 0x0c35, + 0x038d, 0x0fc2, 0x031c, 0x0f53, 0x02af, 0x0ee0, 0x023e, 0x0e71, + 0x067e, 0x0a31, 0x06ef, 0x0aa0, 0x075c, 0x0b13, 0x07cd, 0x0b82, + 0x043a, 0x0875, 0x04ab, 0x08e4, 0x0518, 0x0957, 0x0589, 0x09c6, + 0x02f6, 0x0eb9, 0x0267, 0x0e28, 0x03d4, 0x0f9b, 0x0345, 0x0f0a, + 0x00b2, 0x0cfd, 0x0023, 0x0c6c, 0x0190, 0x0ddf, 0x0101, 0x0d4e, + 0x0f6e, 0x0321, 0x0fff, 0x03b0, 0x0e4c, 0x0203, 0x0edd, 0x0292, + 0x0d2a, 0x0165, 0x0dbb, 0x01f4, 0x0c08, 0x0047, 0x0c99, 0x00d6, + 0x0be6, 0x07a9, 0x0b77, 0x0738, 0x0ac4, 0x068b, 0x0a55, 0x061a, + 0x09a2, 0x05ed, 0x0933, 0x057c, 0x0880, 0x04cf, 0x0811, 0x045e, + }, + { + 0x0000, 0x00ad, 0x015a, 0x01f7, 0x02b4, 0x0219, 0x03ee, 0x0343, + 0x0568, 0x05c5, 0x0432, 0x049f, 0x07dc, 0x0771, 0x0686, 0x062b, + 0x0ad0, 0x0a7d, 0x0b8a, 0x0b27, 0x0864, 0x08c9, 0x093e, 0x0993, + 0x0fb8, 0x0f15, 0x0ee2, 0x0e4f, 0x0d0c, 0x0da1, 0x0c56, 0x0cfb, + 0x0daf, 0x0d02, 0x0cf5, 0x0c58, 0x0f1b, 0x0fb6, 0x0e41, 0x0eec, + 0x08c7, 0x086a, 0x099d, 0x0930, 0x0a73, 0x0ade, 0x0b29, 0x0b84, + 0x077f, 0x07d2, 0x0625, 0x0688, 0x05cb, 0x0566, 0x0491, 0x043c, + 0x0217, 0x02ba, 0x034d, 0x03e0, 0x00a3, 0x000e, 0x01f9, 0x0154, + 0x0351, 0x03fc, 0x020b, 0x02a6, 0x01e5, 0x0148, 0x00bf, 0x0012, + 0x0639, 0x0694, 0x0763, 0x07ce, 0x048d, 0x0420, 0x05d7, 0x057a, + 0x0981, 0x092c, 0x08db, 0x0876, 0x0b35, 0x0b98, 0x0a6f, 0x0ac2, + 0x0ce9, 0x0c44, 0x0db3, 0x0d1e, 0x0e5d, 0x0ef0, 0x0f07, 0x0faa, + 0x0efe, 0x0e53, 0x0fa4, 0x0f09, 0x0c4a, 0x0ce7, 0x0d10, 0x0dbd, + 0x0b96, 0x0b3b, 0x0acc, 0x0a61, 0x0922, 0x098f, 0x0878, 0x08d5, + 0x042e, 0x0483, 0x0574, 0x05d9, 0x069a, 0x0637, 0x07c0, 0x076d, + 0x0146, 0x01eb, 0x001c, 0x00b1, 0x03f2, 0x035f, 0x02a8, 0x0205, + 0x06a2, 0x060f, 0x07f8, 0x0755, 0x0416, 0x04bb, 0x054c, 0x05e1, + 0x03ca, 0x0367, 0x0290, 0x023d, 0x017e, 0x01d3, 0x0024, 0x0089, + 0x0c72, 0x0cdf, 0x0d28, 0x0d85, 0x0ec6, 0x0e6b, 0x0f9c, 0x0f31, + 0x091a, 0x09b7, 0x0840, 0x08ed, 0x0bae, 0x0b03, 0x0af4, 0x0a59, + 0x0b0d, 0x0ba0, 0x0a57, 0x0afa, 0x09b9, 0x0914, 0x08e3, 0x084e, + 0x0e65, 0x0ec8, 0x0f3f, 0x0f92, 0x0cd1, 0x0c7c, 0x0d8b, 0x0d26, + 0x01dd, 0x0170, 0x0087, 0x002a, 0x0369, 0x03c4, 0x0233, 0x029e, + 0x04b5, 0x0418, 0x05ef, 0x0542, 0x0601, 0x06ac, 0x075b, 0x07f6, + 0x05f3, 0x055e, 0x04a9, 0x0404, 0x0747, 0x07ea, 0x061d, 0x06b0, + 0x009b, 0x0036, 0x01c1, 0x016c, 0x022f, 0x0282, 0x0375, 0x03d8, + 0x0f23, 0x0f8e, 0x0e79, 0x0ed4, 0x0d97, 0x0d3a, 0x0ccd, 0x0c60, + 0x0a4b, 0x0ae6, 0x0b11, 0x0bbc, 0x08ff, 0x0852, 0x09a5, 0x0908, + 0x085c, 0x08f1, 0x0906, 0x09ab, 0x0ae8, 0x0a45, 0x0bb2, 0x0b1f, + 0x0d34, 0x0d99, 0x0c6e, 0x0cc3, 0x0f80, 0x0f2d, 0x0eda, 0x0e77, + 0x028c, 0x0221, 0x03d6, 0x037b, 0x0038, 0x0095, 0x0162, 0x01cf, + 0x07e4, 0x0749, 0x06be, 0x0613, 0x0550, 0x05fd, 0x040a, 0x04a7, + }, + { + 0x0000, 0x0d44, 0x0287, 0x0fc3, 0x050e, 0x084a, 0x0789, 0x0acd, + 0x0a1c, 0x0758, 0x089b, 0x05df, 0x0f12, 0x0256, 0x0d95, 0x00d1, + 0x0c37, 0x0173, 0x0eb0, 0x03f4, 0x0939, 0x047d, 0x0bbe, 0x06fa, + 0x062b, 0x0b6f, 0x04ac, 0x09e8, 0x0325, 0x0e61, 0x01a2, 0x0ce6, + 0x0061, 0x0d25, 0x02e6, 0x0fa2, 0x056f, 0x082b, 0x07e8, 0x0aac, + 0x0a7d, 0x0739, 0x08fa, 0x05be, 0x0f73, 0x0237, 0x0df4, 0x00b0, + 0x0c56, 0x0112, 0x0ed1, 0x0395, 0x0958, 0x041c, 0x0bdf, 0x069b, + 0x064a, 0x0b0e, 0x04cd, 0x0989, 0x0344, 0x0e00, 0x01c3, 0x0c87, + 0x00c2, 0x0d86, 0x0245, 0x0f01, 0x05cc, 0x0888, 0x074b, 0x0a0f, + 0x0ade, 0x079a, 0x0859, 0x051d, 0x0fd0, 0x0294, 0x0d57, 0x0013, + 0x0cf5, 0x01b1, 0x0e72, 0x0336, 0x09fb, 0x04bf, 0x0b7c, 0x0638, + 0x06e9, 0x0bad, 0x046e, 0x092a, 0x03e7, 0x0ea3, 0x0160, 0x0c24, + 0x00a3, 0x0de7, 0x0224, 0x0f60, 0x05ad, 0x08e9, 0x072a, 0x0a6e, + 0x0abf, 0x07fb, 0x0838, 0x057c, 0x0fb1, 0x02f5, 0x0d36, 0x0072, + 0x0c94, 0x01d0, 0x0e13, 0x0357, 0x099a, 0x04de, 0x0b1d, 0x0659, + 0x0688, 0x0bcc, 0x040f, 0x094b, 0x0386, 0x0ec2, 0x0101, 0x0c45, + 0x0184, 0x0cc0, 0x0303, 0x0e47, 0x048a, 0x09ce, 0x060d, 0x0b49, + 0x0b98, 0x06dc, 0x091f, 0x045b, 0x0e96, 0x03d2, 0x0c11, 0x0155, + 0x0db3, 0x00f7, 0x0f34, 0x0270, 0x08bd, 0x05f9, 0x0a3a, 0x077e, + 0x07af, 0x0aeb, 0x0528, 0x086c, 0x02a1, 0x0fe5, 0x0026, 0x0d62, + 0x01e5, 0x0ca1, 0x0362, 0x0e26, 0x04eb, 0x09af, 0x066c, 0x0b28, + 0x0bf9, 0x06bd, 0x097e, 0x043a, 0x0ef7, 0x03b3, 0x0c70, 0x0134, + 0x0dd2, 0x0096, 0x0f55, 0x0211, 0x08dc, 0x0598, 0x0a5b, 0x071f, + 0x07ce, 0x0a8a, 0x0549, 0x080d, 0x02c0, 0x0f84, 0x0047, 0x0d03, + 0x0146, 0x0c02, 0x03c1, 0x0e85, 0x0448, 0x090c, 0x06cf, 0x0b8b, + 0x0b5a, 0x061e, 0x09dd, 0x0499, 0x0e54, 0x0310, 0x0cd3, 0x0197, + 0x0d71, 0x0035, 0x0ff6, 0x02b2, 0x087f, 0x053b, 0x0af8, 0x07bc, + 0x076d, 0x0a29, 0x05ea, 0x08ae, 0x0263, 0x0f27, 0x00e4, 0x0da0, + 0x0127, 0x0c63, 0x03a0, 0x0ee4, 0x0429, 0x096d, 0x06ae, 0x0bea, + 0x0b3b, 0x067f, 0x09bc, 0x04f8, 0x0e35, 0x0371, 0x0cb2, 0x01f6, + 0x0d10, 0x0054, 0x0f97, 0x02d3, 0x081e, 0x055a, 0x0a99, 0x07dd, + 0x070c, 0x0a48, 0x058b, 0x08cf, 0x0202, 0x0f46, 0x0085, 0x0dc1, + }, + { + 0x0000, 0x0308, 0x0610, 0x0518, 0x0c20, 0x0f28, 0x0a30, 0x0938, + 0x004f, 0x0347, 0x065f, 0x0557, 0x0c6f, 0x0f67, 0x0a7f, 0x0977, + 0x009e, 0x0396, 0x068e, 0x0586, 0x0cbe, 0x0fb6, 0x0aae, 0x09a6, + 0x00d1, 0x03d9, 0x06c1, 0x05c9, 0x0cf1, 0x0ff9, 0x0ae1, 0x09e9, + 0x013c, 0x0234, 0x072c, 0x0424, 0x0d1c, 0x0e14, 0x0b0c, 0x0804, + 0x0173, 0x027b, 0x0763, 0x046b, 0x0d53, 0x0e5b, 0x0b43, 0x084b, + 0x01a2, 0x02aa, 0x07b2, 0x04ba, 0x0d82, 0x0e8a, 0x0b92, 0x089a, + 0x01ed, 0x02e5, 0x07fd, 0x04f5, 0x0dcd, 0x0ec5, 0x0bdd, 0x08d5, + 0x0278, 0x0170, 0x0468, 0x0760, 0x0e58, 0x0d50, 0x0848, 0x0b40, + 0x0237, 0x013f, 0x0427, 0x072f, 0x0e17, 0x0d1f, 0x0807, 0x0b0f, + 0x02e6, 0x01ee, 0x04f6, 0x07fe, 0x0ec6, 0x0dce, 0x08d6, 0x0bde, + 0x02a9, 0x01a1, 0x04b9, 0x07b1, 0x0e89, 0x0d81, 0x0899, 0x0b91, + 0x0344, 0x004c, 0x0554, 0x065c, 0x0f64, 0x0c6c, 0x0974, 0x0a7c, + 0x030b, 0x0003, 0x051b, 0x0613, 0x0f2b, 0x0c23, 0x093b, 0x0a33, + 0x03da, 0x00d2, 0x05ca, 0x06c2, 0x0ffa, 0x0cf2, 0x09ea, 0x0ae2, + 0x0395, 0x009d, 0x0585, 0x068d, 0x0fb5, 0x0cbd, 0x09a5, 0x0aad, + 0x04f0, 0x07f8, 0x02e0, 0x01e8, 0x08d0, 0x0bd8, 0x0ec0, 0x0dc8, + 0x04bf, 0x07b7, 0x02af, 0x01a7, 0x089f, 0x0b97, 0x0e8f, 0x0d87, + 0x046e, 0x0766, 0x027e, 0x0176, 0x084e, 0x0b46, 0x0e5e, 0x0d56, + 0x0421, 0x0729, 0x0231, 0x0139, 0x0801, 0x0b09, 0x0e11, 0x0d19, + 0x05cc, 0x06c4, 0x03dc, 0x00d4, 0x09ec, 0x0ae4, 0x0ffc, 0x0cf4, + 0x0583, 0x068b, 0x0393, 0x009b, 0x09a3, 0x0aab, 0x0fb3, 0x0cbb, + 0x0552, 0x065a, 0x0342, 0x004a, 0x0972, 0x0a7a, 0x0f62, 0x0c6a, + 0x051d, 0x0615, 0x030d, 0x0005, 0x093d, 0x0a35, 0x0f2d, 0x0c25, + 0x0688, 0x0580, 0x0098, 0x0390, 0x0aa8, 0x09a0, 0x0cb8, 0x0fb0, + 0x06c7, 0x05cf, 0x00d7, 0x03df, 0x0ae7, 0x09ef, 0x0cf7, 0x0fff, + 0x0616, 0x051e, 0x0006, 0x030e, 0x0a36, 0x093e, 0x0c26, 0x0f2e, + 0x0659, 0x0551, 0x0049, 0x0341, 0x0a79, 0x0971, 0x0c69, 0x0f61, + 0x07b4, 0x04bc, 0x01a4, 0x02ac, 0x0b94, 0x089c, 0x0d84, 0x0e8c, + 0x07fb, 0x04f3, 0x01eb, 0x02e3, 0x0bdb, 0x08d3, 0x0dcb, 0x0ec3, + 0x072a, 0x0422, 0x013a, 0x0232, 0x0b0a, 0x0802, 0x0d1a, 0x0e12, + 0x0765, 0x046d, 0x0175, 0x027d, 0x0b45, 0x084d, 0x0d55, 0x0e5d, + }, + { + 0x0000, 0x09e0, 0x0bcf, 0x022f, 0x0f91, 0x0671, 0x045e, 0x0dbe, + 0x072d, 0x0ecd, 0x0ce2, 0x0502, 0x08bc, 0x015c, 0x0373, 0x0a93, + 0x0e5a, 0x07ba, 0x0595, 0x0c75, 0x01cb, 0x082b, 0x0a04, 0x03e4, + 0x0977, 0x0097, 0x02b8, 0x0b58, 0x06e6, 0x0f06, 0x0d29, 0x04c9, + 0x04bb, 0x0d5b, 0x0f74, 0x0694, 0x0b2a, 0x02ca, 0x00e5, 0x0905, + 0x0396, 0x0a76, 0x0859, 0x01b9, 0x0c07, 0x05e7, 0x07c8, 0x0e28, + 0x0ae1, 0x0301, 0x012e, 0x08ce, 0x0570, 0x0c90, 0x0ebf, 0x075f, + 0x0dcc, 0x042c, 0x0603, 0x0fe3, 0x025d, 0x0bbd, 0x0992, 0x0072, + 0x0976, 0x0096, 0x02b9, 0x0b59, 0x06e7, 0x0f07, 0x0d28, 0x04c8, + 0x0e5b, 0x07bb, 0x0594, 0x0c74, 0x01ca, 0x082a, 0x0a05, 0x03e5, + 0x072c, 0x0ecc, 0x0ce3, 0x0503, 0x08bd, 0x015d, 0x0372, 0x0a92, + 0x0001, 0x09e1, 0x0bce, 0x022e, 0x0f90, 0x0670, 0x045f, 0x0dbf, + 0x0dcd, 0x042d, 0x0602, 0x0fe2, 0x025c, 0x0bbc, 0x0993, 0x0073, + 0x0ae0, 0x0300, 0x012f, 0x08cf, 0x0571, 0x0c91, 0x0ebe, 0x075e, + 0x0397, 0x0a77, 0x0858, 0x01b8, 0x0c06, 0x05e6, 0x07c9, 0x0e29, + 0x04ba, 0x0d5a, 0x0f75, 0x0695, 0x0b2b, 0x02cb, 0x00e4, 0x0904, + 0x0ae3, 0x0303, 0x012c, 0x08cc, 0x0572, 0x0c92, 0x0ebd, 0x075d, + 0x0dce, 0x042e, 0x0601, 0x0fe1, 0x025f, 0x0bbf, 0x0990, 0x0070, + 0x04b9, 0x0d59, 0x0f76, 0x0696, 0x0b28, 0x02c8, 0x00e7, 0x0907, + 0x0394, 0x0a74, 0x085b, 0x01bb, 0x0c05, 0x05e5, 0x07ca, 0x0e2a, + 0x0e58, 0x07b8, 0x0597, 0x0c77, 0x01c9, 0x0829, 0x0a06, 0x03e6, + 0x0975, 0x0095, 0x02ba, 0x0b5a, 0x06e4, 0x0f04, 0x0d2b, 0x04cb, + 0x0002, 0x09e2, 0x0bcd, 0x022d, 0x0f93, 0x0673, 0x045c, 0x0dbc, + 0x072f, 0x0ecf, 0x0ce0, 0x0500, 0x08be, 0x015e, 0x0371, 0x0a91, + 0x0395, 0x0a75, 0x085a, 0x01ba, 0x0c04, 0x05e4, 0x07cb, 0x0e2b, + 0x04b8, 0x0d58, 0x0f77, 0x0697, 0x0b29, 0x02c9, 0x00e6, 0x0906, + 0x0dcf, 0x042f, 0x0600, 0x0fe0, 0x025e, 0x0bbe, 0x0991, 0x0071, + 0x0ae2, 0x0302, 0x012d, 0x08cd, 0x0573, 0x0c93, 0x0ebc, 0x075c, + 0x072e, 0x0ece, 0x0ce1, 0x0501, 0x08bf, 0x015f, 0x0370, 0x0a90, + 0x0003, 0x09e3, 0x0bcc, 0x022c, 0x0f92, 0x0672, 0x045d, 0x0dbd, + 0x0974, 0x0094, 0x02bb, 0x0b5b, 0x06e5, 0x0f05, 0x0d2a, 0x04ca, + 0x0e59, 0x07b9, 0x0596, 0x0c76, 0x01c8, 0x0828, 0x0a07, 0x03e7, + }, +}; diff --git a/ext/digest/crc15/crc15.c b/ext/digest/crc15/crc15.c index 1c0ea11..8045cfe 100644 --- a/ext/digest/crc15/crc15.c +++ b/ext/digest/crc15/crc15.c @@ -15,38 +15,39 @@ */ #include "crc15.h" - -/** - * Static table used for the table_driven implementation. - */ -static const crc15_t crc15_table[256] = { - 0x0000, 0x4599, 0x4eab, 0x0b32, 0x58cf, 0x1d56, 0x1664, 0x53fd, 0x7407, 0x319e, 0x3aac, 0x7f35, 0x2cc8, 0x6951, 0x6263, 0x27fa, - 0x2d97, 0x680e, 0x633c, 0x26a5, 0x7558, 0x30c1, 0x3bf3, 0x7e6a, 0x5990, 0x1c09, 0x173b, 0x52a2, 0x015f, 0x44c6, 0x4ff4, 0x0a6d, - 0x5b2e, 0x1eb7, 0x1585, 0x501c, 0x03e1, 0x4678, 0x4d4a, 0x08d3, 0x2f29, 0x6ab0, 0x6182, 0x241b, 0x77e6, 0x327f, 0x394d, 0x7cd4, - 0x76b9, 0x3320, 0x3812, 0x7d8b, 0x2e76, 0x6bef, 0x60dd, 0x2544, 0x02be, 0x4727, 0x4c15, 0x098c, 0x5a71, 0x1fe8, 0x14da, 0x5143, - 0x73c5, 0x365c, 0x3d6e, 0x78f7, 0x2b0a, 0x6e93, 0x65a1, 0x2038, 0x07c2, 0x425b, 0x4969, 0x0cf0, 0x5f0d, 0x1a94, 0x11a6, 0x543f, - 0x5e52, 0x1bcb, 0x10f9, 0x5560, 0x069d, 0x4304, 0x4836, 0x0daf, 0x2a55, 0x6fcc, 0x64fe, 0x2167, 0x729a, 0x3703, 0x3c31, 0x79a8, - 0x28eb, 0x6d72, 0x6640, 0x23d9, 0x7024, 0x35bd, 0x3e8f, 0x7b16, 0x5cec, 0x1975, 0x1247, 0x57de, 0x0423, 0x41ba, 0x4a88, 0x0f11, - 0x057c, 0x40e5, 0x4bd7, 0x0e4e, 0x5db3, 0x182a, 0x1318, 0x5681, 0x717b, 0x34e2, 0x3fd0, 0x7a49, 0x29b4, 0x6c2d, 0x671f, 0x2286, - 0x2213, 0x678a, 0x6cb8, 0x2921, 0x7adc, 0x3f45, 0x3477, 0x71ee, 0x5614, 0x138d, 0x18bf, 0x5d26, 0x0edb, 0x4b42, 0x4070, 0x05e9, - 0x0f84, 0x4a1d, 0x412f, 0x04b6, 0x574b, 0x12d2, 0x19e0, 0x5c79, 0x7b83, 0x3e1a, 0x3528, 0x70b1, 0x234c, 0x66d5, 0x6de7, 0x287e, - 0x793d, 0x3ca4, 0x3796, 0x720f, 0x21f2, 0x646b, 0x6f59, 0x2ac0, 0x0d3a, 0x48a3, 0x4391, 0x0608, 0x55f5, 0x106c, 0x1b5e, 0x5ec7, - 0x54aa, 0x1133, 0x1a01, 0x5f98, 0x0c65, 0x49fc, 0x42ce, 0x0757, 0x20ad, 0x6534, 0x6e06, 0x2b9f, 0x7862, 0x3dfb, 0x36c9, 0x7350, - 0x51d6, 0x144f, 0x1f7d, 0x5ae4, 0x0919, 0x4c80, 0x47b2, 0x022b, 0x25d1, 0x6048, 0x6b7a, 0x2ee3, 0x7d1e, 0x3887, 0x33b5, 0x762c, - 0x7c41, 0x39d8, 0x32ea, 0x7773, 0x248e, 0x6117, 0x6a25, 0x2fbc, 0x0846, 0x4ddf, 0x46ed, 0x0374, 0x5089, 0x1510, 0x1e22, 0x5bbb, - 0x0af8, 0x4f61, 0x4453, 0x01ca, 0x5237, 0x17ae, 0x1c9c, 0x5905, 0x7eff, 0x3b66, 0x3054, 0x75cd, 0x2630, 0x63a9, 0x689b, 0x2d02, - 0x276f, 0x62f6, 0x69c4, 0x2c5d, 0x7fa0, 0x3a39, 0x310b, 0x7492, 0x5368, 0x16f1, 0x1dc3, 0x585a, 0x0ba7, 0x4e3e, 0x450c, 0x0095 -}; +#include "crc15_table.h" crc15_t crc15_update(crc15_t crc, const void *data, size_t data_len) { const unsigned char *d = (const unsigned char *)data; unsigned int tbl_idx; + for (; data_len >= SLICE_SIZE; data_len -= SLICE_SIZE) + { + crc = crc15_table[15][d[ 0] ^ ((crc >> 7) & 0xff)] ^ + crc15_table[14][d[ 1] ^ ((crc << 1) & 0xff)] ^ + crc15_table[13][d[ 2] ] ^ + crc15_table[12][d[ 3] ] ^ + crc15_table[11][d[ 4] ] ^ + crc15_table[10][d[ 5] ] ^ + crc15_table[ 9][d[ 6] ] ^ + crc15_table[ 8][d[ 7] ] ^ + crc15_table[ 7][d[ 8] ] ^ + crc15_table[ 6][d[ 9] ] ^ + crc15_table[ 5][d[10] ] ^ + crc15_table[ 4][d[11] ] ^ + crc15_table[ 3][d[12] ] ^ + crc15_table[ 2][d[13] ] ^ + crc15_table[ 1][d[14] ] ^ + crc15_table[ 0][d[15] ]; + crc &= 0x7fff; + d += SLICE_SIZE; + } + while (data_len--) { tbl_idx = ((crc >> 7) ^ *d) & 0xff; - crc = (crc15_table[tbl_idx] ^ (crc << 8)) & 0x7fff; + crc = (crc15_table[0][tbl_idx] ^ (crc << 8)) & 0x7fff; d++; } diff --git a/ext/digest/crc15/crc15_table.h b/ext/digest/crc15/crc15_table.h new file mode 100644 index 0000000..fa65256 --- /dev/null +++ b/ext/digest/crc15/crc15_table.h @@ -0,0 +1,558 @@ +/* + * bitwidth: 15 + * generator polynomial: 0x4599 + * input bit direction: NORMAL + * slice bytes per iteration: 16 + * slide bits per table: 8 + * + * Generated by: gentable.rb of digest-crc + */ + +#define SLICE_SIZE 16 + +static const uint16_t crc15_table[SLICE_SIZE][256] = { + { + 0x0000, 0x4599, 0x4eab, 0x0b32, 0x58cf, 0x1d56, 0x1664, 0x53fd, + 0x7407, 0x319e, 0x3aac, 0x7f35, 0x2cc8, 0x6951, 0x6263, 0x27fa, + 0x2d97, 0x680e, 0x633c, 0x26a5, 0x7558, 0x30c1, 0x3bf3, 0x7e6a, + 0x5990, 0x1c09, 0x173b, 0x52a2, 0x015f, 0x44c6, 0x4ff4, 0x0a6d, + 0x5b2e, 0x1eb7, 0x1585, 0x501c, 0x03e1, 0x4678, 0x4d4a, 0x08d3, + 0x2f29, 0x6ab0, 0x6182, 0x241b, 0x77e6, 0x327f, 0x394d, 0x7cd4, + 0x76b9, 0x3320, 0x3812, 0x7d8b, 0x2e76, 0x6bef, 0x60dd, 0x2544, + 0x02be, 0x4727, 0x4c15, 0x098c, 0x5a71, 0x1fe8, 0x14da, 0x5143, + 0x73c5, 0x365c, 0x3d6e, 0x78f7, 0x2b0a, 0x6e93, 0x65a1, 0x2038, + 0x07c2, 0x425b, 0x4969, 0x0cf0, 0x5f0d, 0x1a94, 0x11a6, 0x543f, + 0x5e52, 0x1bcb, 0x10f9, 0x5560, 0x069d, 0x4304, 0x4836, 0x0daf, + 0x2a55, 0x6fcc, 0x64fe, 0x2167, 0x729a, 0x3703, 0x3c31, 0x79a8, + 0x28eb, 0x6d72, 0x6640, 0x23d9, 0x7024, 0x35bd, 0x3e8f, 0x7b16, + 0x5cec, 0x1975, 0x1247, 0x57de, 0x0423, 0x41ba, 0x4a88, 0x0f11, + 0x057c, 0x40e5, 0x4bd7, 0x0e4e, 0x5db3, 0x182a, 0x1318, 0x5681, + 0x717b, 0x34e2, 0x3fd0, 0x7a49, 0x29b4, 0x6c2d, 0x671f, 0x2286, + 0x2213, 0x678a, 0x6cb8, 0x2921, 0x7adc, 0x3f45, 0x3477, 0x71ee, + 0x5614, 0x138d, 0x18bf, 0x5d26, 0x0edb, 0x4b42, 0x4070, 0x05e9, + 0x0f84, 0x4a1d, 0x412f, 0x04b6, 0x574b, 0x12d2, 0x19e0, 0x5c79, + 0x7b83, 0x3e1a, 0x3528, 0x70b1, 0x234c, 0x66d5, 0x6de7, 0x287e, + 0x793d, 0x3ca4, 0x3796, 0x720f, 0x21f2, 0x646b, 0x6f59, 0x2ac0, + 0x0d3a, 0x48a3, 0x4391, 0x0608, 0x55f5, 0x106c, 0x1b5e, 0x5ec7, + 0x54aa, 0x1133, 0x1a01, 0x5f98, 0x0c65, 0x49fc, 0x42ce, 0x0757, + 0x20ad, 0x6534, 0x6e06, 0x2b9f, 0x7862, 0x3dfb, 0x36c9, 0x7350, + 0x51d6, 0x144f, 0x1f7d, 0x5ae4, 0x0919, 0x4c80, 0x47b2, 0x022b, + 0x25d1, 0x6048, 0x6b7a, 0x2ee3, 0x7d1e, 0x3887, 0x33b5, 0x762c, + 0x7c41, 0x39d8, 0x32ea, 0x7773, 0x248e, 0x6117, 0x6a25, 0x2fbc, + 0x0846, 0x4ddf, 0x46ed, 0x0374, 0x5089, 0x1510, 0x1e22, 0x5bbb, + 0x0af8, 0x4f61, 0x4453, 0x01ca, 0x5237, 0x17ae, 0x1c9c, 0x5905, + 0x7eff, 0x3b66, 0x3054, 0x75cd, 0x2630, 0x63a9, 0x689b, 0x2d02, + 0x276f, 0x62f6, 0x69c4, 0x2c5d, 0x7fa0, 0x3a39, 0x310b, 0x7492, + 0x5368, 0x16f1, 0x1dc3, 0x585a, 0x0ba7, 0x4e3e, 0x450c, 0x0095, + }, + { + 0x0000, 0x4426, 0x4dd5, 0x09f3, 0x5e33, 0x1a15, 0x13e6, 0x57c0, + 0x79ff, 0x3dd9, 0x342a, 0x700c, 0x27cc, 0x63ea, 0x6a19, 0x2e3f, + 0x3667, 0x7241, 0x7bb2, 0x3f94, 0x6854, 0x2c72, 0x2581, 0x61a7, + 0x4f98, 0x0bbe, 0x024d, 0x466b, 0x11ab, 0x558d, 0x5c7e, 0x1858, + 0x6cce, 0x28e8, 0x211b, 0x653d, 0x32fd, 0x76db, 0x7f28, 0x3b0e, + 0x1531, 0x5117, 0x58e4, 0x1cc2, 0x4b02, 0x0f24, 0x06d7, 0x42f1, + 0x5aa9, 0x1e8f, 0x177c, 0x535a, 0x049a, 0x40bc, 0x494f, 0x0d69, + 0x2356, 0x6770, 0x6e83, 0x2aa5, 0x7d65, 0x3943, 0x30b0, 0x7496, + 0x1c05, 0x5823, 0x51d0, 0x15f6, 0x4236, 0x0610, 0x0fe3, 0x4bc5, + 0x65fa, 0x21dc, 0x282f, 0x6c09, 0x3bc9, 0x7fef, 0x761c, 0x323a, + 0x2a62, 0x6e44, 0x67b7, 0x2391, 0x7451, 0x3077, 0x3984, 0x7da2, + 0x539d, 0x17bb, 0x1e48, 0x5a6e, 0x0dae, 0x4988, 0x407b, 0x045d, + 0x70cb, 0x34ed, 0x3d1e, 0x7938, 0x2ef8, 0x6ade, 0x632d, 0x270b, + 0x0934, 0x4d12, 0x44e1, 0x00c7, 0x5707, 0x1321, 0x1ad2, 0x5ef4, + 0x46ac, 0x028a, 0x0b79, 0x4f5f, 0x189f, 0x5cb9, 0x554a, 0x116c, + 0x3f53, 0x7b75, 0x7286, 0x36a0, 0x6160, 0x2546, 0x2cb5, 0x6893, + 0x380a, 0x7c2c, 0x75df, 0x31f9, 0x6639, 0x221f, 0x2bec, 0x6fca, + 0x41f5, 0x05d3, 0x0c20, 0x4806, 0x1fc6, 0x5be0, 0x5213, 0x1635, + 0x0e6d, 0x4a4b, 0x43b8, 0x079e, 0x505e, 0x1478, 0x1d8b, 0x59ad, + 0x7792, 0x33b4, 0x3a47, 0x7e61, 0x29a1, 0x6d87, 0x6474, 0x2052, + 0x54c4, 0x10e2, 0x1911, 0x5d37, 0x0af7, 0x4ed1, 0x4722, 0x0304, + 0x2d3b, 0x691d, 0x60ee, 0x24c8, 0x7308, 0x372e, 0x3edd, 0x7afb, + 0x62a3, 0x2685, 0x2f76, 0x6b50, 0x3c90, 0x78b6, 0x7145, 0x3563, + 0x1b5c, 0x5f7a, 0x5689, 0x12af, 0x456f, 0x0149, 0x08ba, 0x4c9c, + 0x240f, 0x6029, 0x69da, 0x2dfc, 0x7a3c, 0x3e1a, 0x37e9, 0x73cf, + 0x5df0, 0x19d6, 0x1025, 0x5403, 0x03c3, 0x47e5, 0x4e16, 0x0a30, + 0x1268, 0x564e, 0x5fbd, 0x1b9b, 0x4c5b, 0x087d, 0x018e, 0x45a8, + 0x6b97, 0x2fb1, 0x2642, 0x6264, 0x35a4, 0x7182, 0x7871, 0x3c57, + 0x48c1, 0x0ce7, 0x0514, 0x4132, 0x16f2, 0x52d4, 0x5b27, 0x1f01, + 0x313e, 0x7518, 0x7ceb, 0x38cd, 0x6f0d, 0x2b2b, 0x22d8, 0x66fe, + 0x7ea6, 0x3a80, 0x3373, 0x7755, 0x2095, 0x64b3, 0x6d40, 0x2966, + 0x0759, 0x437f, 0x4a8c, 0x0eaa, 0x596a, 0x1d4c, 0x14bf, 0x5099, + }, + { + 0x0000, 0x7014, 0x25b1, 0x55a5, 0x4b62, 0x3b76, 0x6ed3, 0x1ec7, + 0x535d, 0x2349, 0x76ec, 0x06f8, 0x183f, 0x682b, 0x3d8e, 0x4d9a, + 0x6323, 0x1337, 0x4692, 0x3686, 0x2841, 0x5855, 0x0df0, 0x7de4, + 0x307e, 0x406a, 0x15cf, 0x65db, 0x7b1c, 0x0b08, 0x5ead, 0x2eb9, + 0x03df, 0x73cb, 0x266e, 0x567a, 0x48bd, 0x38a9, 0x6d0c, 0x1d18, + 0x5082, 0x2096, 0x7533, 0x0527, 0x1be0, 0x6bf4, 0x3e51, 0x4e45, + 0x60fc, 0x10e8, 0x454d, 0x3559, 0x2b9e, 0x5b8a, 0x0e2f, 0x7e3b, + 0x33a1, 0x43b5, 0x1610, 0x6604, 0x78c3, 0x08d7, 0x5d72, 0x2d66, + 0x07be, 0x77aa, 0x220f, 0x521b, 0x4cdc, 0x3cc8, 0x696d, 0x1979, + 0x54e3, 0x24f7, 0x7152, 0x0146, 0x1f81, 0x6f95, 0x3a30, 0x4a24, + 0x649d, 0x1489, 0x412c, 0x3138, 0x2fff, 0x5feb, 0x0a4e, 0x7a5a, + 0x37c0, 0x47d4, 0x1271, 0x6265, 0x7ca2, 0x0cb6, 0x5913, 0x2907, + 0x0461, 0x7475, 0x21d0, 0x51c4, 0x4f03, 0x3f17, 0x6ab2, 0x1aa6, + 0x573c, 0x2728, 0x728d, 0x0299, 0x1c5e, 0x6c4a, 0x39ef, 0x49fb, + 0x6742, 0x1756, 0x42f3, 0x32e7, 0x2c20, 0x5c34, 0x0991, 0x7985, + 0x341f, 0x440b, 0x11ae, 0x61ba, 0x7f7d, 0x0f69, 0x5acc, 0x2ad8, + 0x0f7c, 0x7f68, 0x2acd, 0x5ad9, 0x441e, 0x340a, 0x61af, 0x11bb, + 0x5c21, 0x2c35, 0x7990, 0x0984, 0x1743, 0x6757, 0x32f2, 0x42e6, + 0x6c5f, 0x1c4b, 0x49ee, 0x39fa, 0x273d, 0x5729, 0x028c, 0x7298, + 0x3f02, 0x4f16, 0x1ab3, 0x6aa7, 0x7460, 0x0474, 0x51d1, 0x21c5, + 0x0ca3, 0x7cb7, 0x2912, 0x5906, 0x47c1, 0x37d5, 0x6270, 0x1264, + 0x5ffe, 0x2fea, 0x7a4f, 0x0a5b, 0x149c, 0x6488, 0x312d, 0x4139, + 0x6f80, 0x1f94, 0x4a31, 0x3a25, 0x24e2, 0x54f6, 0x0153, 0x7147, + 0x3cdd, 0x4cc9, 0x196c, 0x6978, 0x77bf, 0x07ab, 0x520e, 0x221a, + 0x08c2, 0x78d6, 0x2d73, 0x5d67, 0x43a0, 0x33b4, 0x6611, 0x1605, + 0x5b9f, 0x2b8b, 0x7e2e, 0x0e3a, 0x10fd, 0x60e9, 0x354c, 0x4558, + 0x6be1, 0x1bf5, 0x4e50, 0x3e44, 0x2083, 0x5097, 0x0532, 0x7526, + 0x38bc, 0x48a8, 0x1d0d, 0x6d19, 0x73de, 0x03ca, 0x566f, 0x267b, + 0x0b1d, 0x7b09, 0x2eac, 0x5eb8, 0x407f, 0x306b, 0x65ce, 0x15da, + 0x5840, 0x2854, 0x7df1, 0x0de5, 0x1322, 0x6336, 0x3693, 0x4687, + 0x683e, 0x182a, 0x4d8f, 0x3d9b, 0x235c, 0x5348, 0x06ed, 0x76f9, + 0x3b63, 0x4b77, 0x1ed2, 0x6ec6, 0x7001, 0x0015, 0x55b0, 0x25a4, + }, + { + 0x0000, 0x1ef8, 0x3df0, 0x2308, 0x7be0, 0x6518, 0x4610, 0x58e8, + 0x3259, 0x2ca1, 0x0fa9, 0x1151, 0x49b9, 0x5741, 0x7449, 0x6ab1, + 0x64b2, 0x7a4a, 0x5942, 0x47ba, 0x1f52, 0x01aa, 0x22a2, 0x3c5a, + 0x56eb, 0x4813, 0x6b1b, 0x75e3, 0x2d0b, 0x33f3, 0x10fb, 0x0e03, + 0x0cfd, 0x1205, 0x310d, 0x2ff5, 0x771d, 0x69e5, 0x4aed, 0x5415, + 0x3ea4, 0x205c, 0x0354, 0x1dac, 0x4544, 0x5bbc, 0x78b4, 0x664c, + 0x684f, 0x76b7, 0x55bf, 0x4b47, 0x13af, 0x0d57, 0x2e5f, 0x30a7, + 0x5a16, 0x44ee, 0x67e6, 0x791e, 0x21f6, 0x3f0e, 0x1c06, 0x02fe, + 0x19fa, 0x0702, 0x240a, 0x3af2, 0x621a, 0x7ce2, 0x5fea, 0x4112, + 0x2ba3, 0x355b, 0x1653, 0x08ab, 0x5043, 0x4ebb, 0x6db3, 0x734b, + 0x7d48, 0x63b0, 0x40b8, 0x5e40, 0x06a8, 0x1850, 0x3b58, 0x25a0, + 0x4f11, 0x51e9, 0x72e1, 0x6c19, 0x34f1, 0x2a09, 0x0901, 0x17f9, + 0x1507, 0x0bff, 0x28f7, 0x360f, 0x6ee7, 0x701f, 0x5317, 0x4def, + 0x275e, 0x39a6, 0x1aae, 0x0456, 0x5cbe, 0x4246, 0x614e, 0x7fb6, + 0x71b5, 0x6f4d, 0x4c45, 0x52bd, 0x0a55, 0x14ad, 0x37a5, 0x295d, + 0x43ec, 0x5d14, 0x7e1c, 0x60e4, 0x380c, 0x26f4, 0x05fc, 0x1b04, + 0x33f4, 0x2d0c, 0x0e04, 0x10fc, 0x4814, 0x56ec, 0x75e4, 0x6b1c, + 0x01ad, 0x1f55, 0x3c5d, 0x22a5, 0x7a4d, 0x64b5, 0x47bd, 0x5945, + 0x5746, 0x49be, 0x6ab6, 0x744e, 0x2ca6, 0x325e, 0x1156, 0x0fae, + 0x651f, 0x7be7, 0x58ef, 0x4617, 0x1eff, 0x0007, 0x230f, 0x3df7, + 0x3f09, 0x21f1, 0x02f9, 0x1c01, 0x44e9, 0x5a11, 0x7919, 0x67e1, + 0x0d50, 0x13a8, 0x30a0, 0x2e58, 0x76b0, 0x6848, 0x4b40, 0x55b8, + 0x5bbb, 0x4543, 0x664b, 0x78b3, 0x205b, 0x3ea3, 0x1dab, 0x0353, + 0x69e2, 0x771a, 0x5412, 0x4aea, 0x1202, 0x0cfa, 0x2ff2, 0x310a, + 0x2a0e, 0x34f6, 0x17fe, 0x0906, 0x51ee, 0x4f16, 0x6c1e, 0x72e6, + 0x1857, 0x06af, 0x25a7, 0x3b5f, 0x63b7, 0x7d4f, 0x5e47, 0x40bf, + 0x4ebc, 0x5044, 0x734c, 0x6db4, 0x355c, 0x2ba4, 0x08ac, 0x1654, + 0x7ce5, 0x621d, 0x4115, 0x5fed, 0x0705, 0x19fd, 0x3af5, 0x240d, + 0x26f3, 0x380b, 0x1b03, 0x05fb, 0x5d13, 0x43eb, 0x60e3, 0x7e1b, + 0x14aa, 0x0a52, 0x295a, 0x37a2, 0x6f4a, 0x71b2, 0x52ba, 0x4c42, + 0x4241, 0x5cb9, 0x7fb1, 0x6149, 0x39a1, 0x2759, 0x0451, 0x1aa9, + 0x7018, 0x6ee0, 0x4de8, 0x5310, 0x0bf8, 0x1500, 0x3608, 0x28f0, + }, + { + 0x0000, 0x67e8, 0x0a49, 0x6da1, 0x1492, 0x737a, 0x1edb, 0x7933, + 0x2924, 0x4ecc, 0x236d, 0x4485, 0x3db6, 0x5a5e, 0x37ff, 0x5017, + 0x5248, 0x35a0, 0x5801, 0x3fe9, 0x46da, 0x2132, 0x4c93, 0x2b7b, + 0x7b6c, 0x1c84, 0x7125, 0x16cd, 0x6ffe, 0x0816, 0x65b7, 0x025f, + 0x6109, 0x06e1, 0x6b40, 0x0ca8, 0x759b, 0x1273, 0x7fd2, 0x183a, + 0x482d, 0x2fc5, 0x4264, 0x258c, 0x5cbf, 0x3b57, 0x56f6, 0x311e, + 0x3341, 0x54a9, 0x3908, 0x5ee0, 0x27d3, 0x403b, 0x2d9a, 0x4a72, + 0x1a65, 0x7d8d, 0x102c, 0x77c4, 0x0ef7, 0x691f, 0x04be, 0x6356, + 0x078b, 0x6063, 0x0dc2, 0x6a2a, 0x1319, 0x74f1, 0x1950, 0x7eb8, + 0x2eaf, 0x4947, 0x24e6, 0x430e, 0x3a3d, 0x5dd5, 0x3074, 0x579c, + 0x55c3, 0x322b, 0x5f8a, 0x3862, 0x4151, 0x26b9, 0x4b18, 0x2cf0, + 0x7ce7, 0x1b0f, 0x76ae, 0x1146, 0x6875, 0x0f9d, 0x623c, 0x05d4, + 0x6682, 0x016a, 0x6ccb, 0x0b23, 0x7210, 0x15f8, 0x7859, 0x1fb1, + 0x4fa6, 0x284e, 0x45ef, 0x2207, 0x5b34, 0x3cdc, 0x517d, 0x3695, + 0x34ca, 0x5322, 0x3e83, 0x596b, 0x2058, 0x47b0, 0x2a11, 0x4df9, + 0x1dee, 0x7a06, 0x17a7, 0x704f, 0x097c, 0x6e94, 0x0335, 0x64dd, + 0x0f16, 0x68fe, 0x055f, 0x62b7, 0x1b84, 0x7c6c, 0x11cd, 0x7625, + 0x2632, 0x41da, 0x2c7b, 0x4b93, 0x32a0, 0x5548, 0x38e9, 0x5f01, + 0x5d5e, 0x3ab6, 0x5717, 0x30ff, 0x49cc, 0x2e24, 0x4385, 0x246d, + 0x747a, 0x1392, 0x7e33, 0x19db, 0x60e8, 0x0700, 0x6aa1, 0x0d49, + 0x6e1f, 0x09f7, 0x6456, 0x03be, 0x7a8d, 0x1d65, 0x70c4, 0x172c, + 0x473b, 0x20d3, 0x4d72, 0x2a9a, 0x53a9, 0x3441, 0x59e0, 0x3e08, + 0x3c57, 0x5bbf, 0x361e, 0x51f6, 0x28c5, 0x4f2d, 0x228c, 0x4564, + 0x1573, 0x729b, 0x1f3a, 0x78d2, 0x01e1, 0x6609, 0x0ba8, 0x6c40, + 0x089d, 0x6f75, 0x02d4, 0x653c, 0x1c0f, 0x7be7, 0x1646, 0x71ae, + 0x21b9, 0x4651, 0x2bf0, 0x4c18, 0x352b, 0x52c3, 0x3f62, 0x588a, + 0x5ad5, 0x3d3d, 0x509c, 0x3774, 0x4e47, 0x29af, 0x440e, 0x23e6, + 0x73f1, 0x1419, 0x79b8, 0x1e50, 0x6763, 0x008b, 0x6d2a, 0x0ac2, + 0x6994, 0x0e7c, 0x63dd, 0x0435, 0x7d06, 0x1aee, 0x774f, 0x10a7, + 0x40b0, 0x2758, 0x4af9, 0x2d11, 0x5422, 0x33ca, 0x5e6b, 0x3983, + 0x3bdc, 0x5c34, 0x3195, 0x567d, 0x2f4e, 0x48a6, 0x2507, 0x42ef, + 0x12f8, 0x7510, 0x18b1, 0x7f59, 0x066a, 0x6182, 0x0c23, 0x6bcb, + }, + { + 0x0000, 0x1e2c, 0x3c58, 0x2274, 0x78b0, 0x669c, 0x44e8, 0x5ac4, + 0x34f9, 0x2ad5, 0x08a1, 0x168d, 0x4c49, 0x5265, 0x7011, 0x6e3d, + 0x69f2, 0x77de, 0x55aa, 0x4b86, 0x1142, 0x0f6e, 0x2d1a, 0x3336, + 0x5d0b, 0x4327, 0x6153, 0x7f7f, 0x25bb, 0x3b97, 0x19e3, 0x07cf, + 0x167d, 0x0851, 0x2a25, 0x3409, 0x6ecd, 0x70e1, 0x5295, 0x4cb9, + 0x2284, 0x3ca8, 0x1edc, 0x00f0, 0x5a34, 0x4418, 0x666c, 0x7840, + 0x7f8f, 0x61a3, 0x43d7, 0x5dfb, 0x073f, 0x1913, 0x3b67, 0x254b, + 0x4b76, 0x555a, 0x772e, 0x6902, 0x33c6, 0x2dea, 0x0f9e, 0x11b2, + 0x2cfa, 0x32d6, 0x10a2, 0x0e8e, 0x544a, 0x4a66, 0x6812, 0x763e, + 0x1803, 0x062f, 0x245b, 0x3a77, 0x60b3, 0x7e9f, 0x5ceb, 0x42c7, + 0x4508, 0x5b24, 0x7950, 0x677c, 0x3db8, 0x2394, 0x01e0, 0x1fcc, + 0x71f1, 0x6fdd, 0x4da9, 0x5385, 0x0941, 0x176d, 0x3519, 0x2b35, + 0x3a87, 0x24ab, 0x06df, 0x18f3, 0x4237, 0x5c1b, 0x7e6f, 0x6043, + 0x0e7e, 0x1052, 0x3226, 0x2c0a, 0x76ce, 0x68e2, 0x4a96, 0x54ba, + 0x5375, 0x4d59, 0x6f2d, 0x7101, 0x2bc5, 0x35e9, 0x179d, 0x09b1, + 0x678c, 0x79a0, 0x5bd4, 0x45f8, 0x1f3c, 0x0110, 0x2364, 0x3d48, + 0x59f4, 0x47d8, 0x65ac, 0x7b80, 0x2144, 0x3f68, 0x1d1c, 0x0330, + 0x6d0d, 0x7321, 0x5155, 0x4f79, 0x15bd, 0x0b91, 0x29e5, 0x37c9, + 0x3006, 0x2e2a, 0x0c5e, 0x1272, 0x48b6, 0x569a, 0x74ee, 0x6ac2, + 0x04ff, 0x1ad3, 0x38a7, 0x268b, 0x7c4f, 0x6263, 0x4017, 0x5e3b, + 0x4f89, 0x51a5, 0x73d1, 0x6dfd, 0x3739, 0x2915, 0x0b61, 0x154d, + 0x7b70, 0x655c, 0x4728, 0x5904, 0x03c0, 0x1dec, 0x3f98, 0x21b4, + 0x267b, 0x3857, 0x1a23, 0x040f, 0x5ecb, 0x40e7, 0x6293, 0x7cbf, + 0x1282, 0x0cae, 0x2eda, 0x30f6, 0x6a32, 0x741e, 0x566a, 0x4846, + 0x750e, 0x6b22, 0x4956, 0x577a, 0x0dbe, 0x1392, 0x31e6, 0x2fca, + 0x41f7, 0x5fdb, 0x7daf, 0x6383, 0x3947, 0x276b, 0x051f, 0x1b33, + 0x1cfc, 0x02d0, 0x20a4, 0x3e88, 0x644c, 0x7a60, 0x5814, 0x4638, + 0x2805, 0x3629, 0x145d, 0x0a71, 0x50b5, 0x4e99, 0x6ced, 0x72c1, + 0x6373, 0x7d5f, 0x5f2b, 0x4107, 0x1bc3, 0x05ef, 0x279b, 0x39b7, + 0x578a, 0x49a6, 0x6bd2, 0x75fe, 0x2f3a, 0x3116, 0x1362, 0x0d4e, + 0x0a81, 0x14ad, 0x36d9, 0x28f5, 0x7231, 0x6c1d, 0x4e69, 0x5045, + 0x3e78, 0x2054, 0x0220, 0x1c0c, 0x46c8, 0x58e4, 0x7a90, 0x64bc, + }, + { + 0x0000, 0x7671, 0x297b, 0x5f0a, 0x52f6, 0x2487, 0x7b8d, 0x0dfc, + 0x6075, 0x1604, 0x490e, 0x3f7f, 0x3283, 0x44f2, 0x1bf8, 0x6d89, + 0x0573, 0x7302, 0x2c08, 0x5a79, 0x5785, 0x21f4, 0x7efe, 0x088f, + 0x6506, 0x1377, 0x4c7d, 0x3a0c, 0x37f0, 0x4181, 0x1e8b, 0x68fa, + 0x0ae6, 0x7c97, 0x239d, 0x55ec, 0x5810, 0x2e61, 0x716b, 0x071a, + 0x6a93, 0x1ce2, 0x43e8, 0x3599, 0x3865, 0x4e14, 0x111e, 0x676f, + 0x0f95, 0x79e4, 0x26ee, 0x509f, 0x5d63, 0x2b12, 0x7418, 0x0269, + 0x6fe0, 0x1991, 0x469b, 0x30ea, 0x3d16, 0x4b67, 0x146d, 0x621c, + 0x15cc, 0x63bd, 0x3cb7, 0x4ac6, 0x473a, 0x314b, 0x6e41, 0x1830, + 0x75b9, 0x03c8, 0x5cc2, 0x2ab3, 0x274f, 0x513e, 0x0e34, 0x7845, + 0x10bf, 0x66ce, 0x39c4, 0x4fb5, 0x4249, 0x3438, 0x6b32, 0x1d43, + 0x70ca, 0x06bb, 0x59b1, 0x2fc0, 0x223c, 0x544d, 0x0b47, 0x7d36, + 0x1f2a, 0x695b, 0x3651, 0x4020, 0x4ddc, 0x3bad, 0x64a7, 0x12d6, + 0x7f5f, 0x092e, 0x5624, 0x2055, 0x2da9, 0x5bd8, 0x04d2, 0x72a3, + 0x1a59, 0x6c28, 0x3322, 0x4553, 0x48af, 0x3ede, 0x61d4, 0x17a5, + 0x7a2c, 0x0c5d, 0x5357, 0x2526, 0x28da, 0x5eab, 0x01a1, 0x77d0, + 0x2b98, 0x5de9, 0x02e3, 0x7492, 0x796e, 0x0f1f, 0x5015, 0x2664, + 0x4bed, 0x3d9c, 0x6296, 0x14e7, 0x191b, 0x6f6a, 0x3060, 0x4611, + 0x2eeb, 0x589a, 0x0790, 0x71e1, 0x7c1d, 0x0a6c, 0x5566, 0x2317, + 0x4e9e, 0x38ef, 0x67e5, 0x1194, 0x1c68, 0x6a19, 0x3513, 0x4362, + 0x217e, 0x570f, 0x0805, 0x7e74, 0x7388, 0x05f9, 0x5af3, 0x2c82, + 0x410b, 0x377a, 0x6870, 0x1e01, 0x13fd, 0x658c, 0x3a86, 0x4cf7, + 0x240d, 0x527c, 0x0d76, 0x7b07, 0x76fb, 0x008a, 0x5f80, 0x29f1, + 0x4478, 0x3209, 0x6d03, 0x1b72, 0x168e, 0x60ff, 0x3ff5, 0x4984, + 0x3e54, 0x4825, 0x172f, 0x615e, 0x6ca2, 0x1ad3, 0x45d9, 0x33a8, + 0x5e21, 0x2850, 0x775a, 0x012b, 0x0cd7, 0x7aa6, 0x25ac, 0x53dd, + 0x3b27, 0x4d56, 0x125c, 0x642d, 0x69d1, 0x1fa0, 0x40aa, 0x36db, + 0x5b52, 0x2d23, 0x7229, 0x0458, 0x09a4, 0x7fd5, 0x20df, 0x56ae, + 0x34b2, 0x42c3, 0x1dc9, 0x6bb8, 0x6644, 0x1035, 0x4f3f, 0x394e, + 0x54c7, 0x22b6, 0x7dbc, 0x0bcd, 0x0631, 0x7040, 0x2f4a, 0x593b, + 0x31c1, 0x47b0, 0x18ba, 0x6ecb, 0x6337, 0x1546, 0x4a4c, 0x3c3d, + 0x51b4, 0x27c5, 0x78cf, 0x0ebe, 0x0342, 0x7533, 0x2a39, 0x5c48, + }, + { + 0x0000, 0x5730, 0x6bf9, 0x3cc9, 0x126b, 0x455b, 0x7992, 0x2ea2, + 0x24d6, 0x73e6, 0x4f2f, 0x181f, 0x36bd, 0x618d, 0x5d44, 0x0a74, + 0x49ac, 0x1e9c, 0x2255, 0x7565, 0x5bc7, 0x0cf7, 0x303e, 0x670e, + 0x6d7a, 0x3a4a, 0x0683, 0x51b3, 0x7f11, 0x2821, 0x14e8, 0x43d8, + 0x56c1, 0x01f1, 0x3d38, 0x6a08, 0x44aa, 0x139a, 0x2f53, 0x7863, + 0x7217, 0x2527, 0x19ee, 0x4ede, 0x607c, 0x374c, 0x0b85, 0x5cb5, + 0x1f6d, 0x485d, 0x7494, 0x23a4, 0x0d06, 0x5a36, 0x66ff, 0x31cf, + 0x3bbb, 0x6c8b, 0x5042, 0x0772, 0x29d0, 0x7ee0, 0x4229, 0x1519, + 0x681b, 0x3f2b, 0x03e2, 0x54d2, 0x7a70, 0x2d40, 0x1189, 0x46b9, + 0x4ccd, 0x1bfd, 0x2734, 0x7004, 0x5ea6, 0x0996, 0x355f, 0x626f, + 0x21b7, 0x7687, 0x4a4e, 0x1d7e, 0x33dc, 0x64ec, 0x5825, 0x0f15, + 0x0561, 0x5251, 0x6e98, 0x39a8, 0x170a, 0x403a, 0x7cf3, 0x2bc3, + 0x3eda, 0x69ea, 0x5523, 0x0213, 0x2cb1, 0x7b81, 0x4748, 0x1078, + 0x1a0c, 0x4d3c, 0x71f5, 0x26c5, 0x0867, 0x5f57, 0x639e, 0x34ae, + 0x7776, 0x2046, 0x1c8f, 0x4bbf, 0x651d, 0x322d, 0x0ee4, 0x59d4, + 0x53a0, 0x0490, 0x3859, 0x6f69, 0x41cb, 0x16fb, 0x2a32, 0x7d02, + 0x15af, 0x429f, 0x7e56, 0x2966, 0x07c4, 0x50f4, 0x6c3d, 0x3b0d, + 0x3179, 0x6649, 0x5a80, 0x0db0, 0x2312, 0x7422, 0x48eb, 0x1fdb, + 0x5c03, 0x0b33, 0x37fa, 0x60ca, 0x4e68, 0x1958, 0x2591, 0x72a1, + 0x78d5, 0x2fe5, 0x132c, 0x441c, 0x6abe, 0x3d8e, 0x0147, 0x5677, + 0x436e, 0x145e, 0x2897, 0x7fa7, 0x5105, 0x0635, 0x3afc, 0x6dcc, + 0x67b8, 0x3088, 0x0c41, 0x5b71, 0x75d3, 0x22e3, 0x1e2a, 0x491a, + 0x0ac2, 0x5df2, 0x613b, 0x360b, 0x18a9, 0x4f99, 0x7350, 0x2460, + 0x2e14, 0x7924, 0x45ed, 0x12dd, 0x3c7f, 0x6b4f, 0x5786, 0x00b6, + 0x7db4, 0x2a84, 0x164d, 0x417d, 0x6fdf, 0x38ef, 0x0426, 0x5316, + 0x5962, 0x0e52, 0x329b, 0x65ab, 0x4b09, 0x1c39, 0x20f0, 0x77c0, + 0x3418, 0x6328, 0x5fe1, 0x08d1, 0x2673, 0x7143, 0x4d8a, 0x1aba, + 0x10ce, 0x47fe, 0x7b37, 0x2c07, 0x02a5, 0x5595, 0x695c, 0x3e6c, + 0x2b75, 0x7c45, 0x408c, 0x17bc, 0x391e, 0x6e2e, 0x52e7, 0x05d7, + 0x0fa3, 0x5893, 0x645a, 0x336a, 0x1dc8, 0x4af8, 0x7631, 0x2101, + 0x62d9, 0x35e9, 0x0920, 0x5e10, 0x70b2, 0x2782, 0x1b4b, 0x4c7b, + 0x460f, 0x113f, 0x2df6, 0x7ac6, 0x5464, 0x0354, 0x3f9d, 0x68ad, + }, + { + 0x0000, 0x2b5e, 0x56bc, 0x7de2, 0x68e1, 0x43bf, 0x3e5d, 0x1503, + 0x145b, 0x3f05, 0x42e7, 0x69b9, 0x7cba, 0x57e4, 0x2a06, 0x0158, + 0x28b6, 0x03e8, 0x7e0a, 0x5554, 0x4057, 0x6b09, 0x16eb, 0x3db5, + 0x3ced, 0x17b3, 0x6a51, 0x410f, 0x540c, 0x7f52, 0x02b0, 0x29ee, + 0x516c, 0x7a32, 0x07d0, 0x2c8e, 0x398d, 0x12d3, 0x6f31, 0x446f, + 0x4537, 0x6e69, 0x138b, 0x38d5, 0x2dd6, 0x0688, 0x7b6a, 0x5034, + 0x79da, 0x5284, 0x2f66, 0x0438, 0x113b, 0x3a65, 0x4787, 0x6cd9, + 0x6d81, 0x46df, 0x3b3d, 0x1063, 0x0560, 0x2e3e, 0x53dc, 0x7882, + 0x6741, 0x4c1f, 0x31fd, 0x1aa3, 0x0fa0, 0x24fe, 0x591c, 0x7242, + 0x731a, 0x5844, 0x25a6, 0x0ef8, 0x1bfb, 0x30a5, 0x4d47, 0x6619, + 0x4ff7, 0x64a9, 0x194b, 0x3215, 0x2716, 0x0c48, 0x71aa, 0x5af4, + 0x5bac, 0x70f2, 0x0d10, 0x264e, 0x334d, 0x1813, 0x65f1, 0x4eaf, + 0x362d, 0x1d73, 0x6091, 0x4bcf, 0x5ecc, 0x7592, 0x0870, 0x232e, + 0x2276, 0x0928, 0x74ca, 0x5f94, 0x4a97, 0x61c9, 0x1c2b, 0x3775, + 0x1e9b, 0x35c5, 0x4827, 0x6379, 0x767a, 0x5d24, 0x20c6, 0x0b98, + 0x0ac0, 0x219e, 0x5c7c, 0x7722, 0x6221, 0x497f, 0x349d, 0x1fc3, + 0x0b1b, 0x2045, 0x5da7, 0x76f9, 0x63fa, 0x48a4, 0x3546, 0x1e18, + 0x1f40, 0x341e, 0x49fc, 0x62a2, 0x77a1, 0x5cff, 0x211d, 0x0a43, + 0x23ad, 0x08f3, 0x7511, 0x5e4f, 0x4b4c, 0x6012, 0x1df0, 0x36ae, + 0x37f6, 0x1ca8, 0x614a, 0x4a14, 0x5f17, 0x7449, 0x09ab, 0x22f5, + 0x5a77, 0x7129, 0x0ccb, 0x2795, 0x3296, 0x19c8, 0x642a, 0x4f74, + 0x4e2c, 0x6572, 0x1890, 0x33ce, 0x26cd, 0x0d93, 0x7071, 0x5b2f, + 0x72c1, 0x599f, 0x247d, 0x0f23, 0x1a20, 0x317e, 0x4c9c, 0x67c2, + 0x669a, 0x4dc4, 0x3026, 0x1b78, 0x0e7b, 0x2525, 0x58c7, 0x7399, + 0x6c5a, 0x4704, 0x3ae6, 0x11b8, 0x04bb, 0x2fe5, 0x5207, 0x7959, + 0x7801, 0x535f, 0x2ebd, 0x05e3, 0x10e0, 0x3bbe, 0x465c, 0x6d02, + 0x44ec, 0x6fb2, 0x1250, 0x390e, 0x2c0d, 0x0753, 0x7ab1, 0x51ef, + 0x50b7, 0x7be9, 0x060b, 0x2d55, 0x3856, 0x1308, 0x6eea, 0x45b4, + 0x3d36, 0x1668, 0x6b8a, 0x40d4, 0x55d7, 0x7e89, 0x036b, 0x2835, + 0x296d, 0x0233, 0x7fd1, 0x548f, 0x418c, 0x6ad2, 0x1730, 0x3c6e, + 0x1580, 0x3ede, 0x433c, 0x6862, 0x7d61, 0x563f, 0x2bdd, 0x0083, + 0x01db, 0x2a85, 0x5767, 0x7c39, 0x693a, 0x4264, 0x3f86, 0x14d8, + }, + { + 0x0000, 0x1636, 0x2c6c, 0x3a5a, 0x58d8, 0x4eee, 0x74b4, 0x6282, + 0x7429, 0x621f, 0x5845, 0x4e73, 0x2cf1, 0x3ac7, 0x009d, 0x16ab, + 0x2dcb, 0x3bfd, 0x01a7, 0x1791, 0x7513, 0x6325, 0x597f, 0x4f49, + 0x59e2, 0x4fd4, 0x758e, 0x63b8, 0x013a, 0x170c, 0x2d56, 0x3b60, + 0x5b96, 0x4da0, 0x77fa, 0x61cc, 0x034e, 0x1578, 0x2f22, 0x3914, + 0x2fbf, 0x3989, 0x03d3, 0x15e5, 0x7767, 0x6151, 0x5b0b, 0x4d3d, + 0x765d, 0x606b, 0x5a31, 0x4c07, 0x2e85, 0x38b3, 0x02e9, 0x14df, + 0x0274, 0x1442, 0x2e18, 0x382e, 0x5aac, 0x4c9a, 0x76c0, 0x60f6, + 0x72b5, 0x6483, 0x5ed9, 0x48ef, 0x2a6d, 0x3c5b, 0x0601, 0x1037, + 0x069c, 0x10aa, 0x2af0, 0x3cc6, 0x5e44, 0x4872, 0x7228, 0x641e, + 0x5f7e, 0x4948, 0x7312, 0x6524, 0x07a6, 0x1190, 0x2bca, 0x3dfc, + 0x2b57, 0x3d61, 0x073b, 0x110d, 0x738f, 0x65b9, 0x5fe3, 0x49d5, + 0x2923, 0x3f15, 0x054f, 0x1379, 0x71fb, 0x67cd, 0x5d97, 0x4ba1, + 0x5d0a, 0x4b3c, 0x7166, 0x6750, 0x05d2, 0x13e4, 0x29be, 0x3f88, + 0x04e8, 0x12de, 0x2884, 0x3eb2, 0x5c30, 0x4a06, 0x705c, 0x666a, + 0x70c1, 0x66f7, 0x5cad, 0x4a9b, 0x2819, 0x3e2f, 0x0475, 0x1243, + 0x20f3, 0x36c5, 0x0c9f, 0x1aa9, 0x782b, 0x6e1d, 0x5447, 0x4271, + 0x54da, 0x42ec, 0x78b6, 0x6e80, 0x0c02, 0x1a34, 0x206e, 0x3658, + 0x0d38, 0x1b0e, 0x2154, 0x3762, 0x55e0, 0x43d6, 0x798c, 0x6fba, + 0x7911, 0x6f27, 0x557d, 0x434b, 0x21c9, 0x37ff, 0x0da5, 0x1b93, + 0x7b65, 0x6d53, 0x5709, 0x413f, 0x23bd, 0x358b, 0x0fd1, 0x19e7, + 0x0f4c, 0x197a, 0x2320, 0x3516, 0x5794, 0x41a2, 0x7bf8, 0x6dce, + 0x56ae, 0x4098, 0x7ac2, 0x6cf4, 0x0e76, 0x1840, 0x221a, 0x342c, + 0x2287, 0x34b1, 0x0eeb, 0x18dd, 0x7a5f, 0x6c69, 0x5633, 0x4005, + 0x5246, 0x4470, 0x7e2a, 0x681c, 0x0a9e, 0x1ca8, 0x26f2, 0x30c4, + 0x266f, 0x3059, 0x0a03, 0x1c35, 0x7eb7, 0x6881, 0x52db, 0x44ed, + 0x7f8d, 0x69bb, 0x53e1, 0x45d7, 0x2755, 0x3163, 0x0b39, 0x1d0f, + 0x0ba4, 0x1d92, 0x27c8, 0x31fe, 0x537c, 0x454a, 0x7f10, 0x6926, + 0x09d0, 0x1fe6, 0x25bc, 0x338a, 0x5108, 0x473e, 0x7d64, 0x6b52, + 0x7df9, 0x6bcf, 0x5195, 0x47a3, 0x2521, 0x3317, 0x094d, 0x1f7b, + 0x241b, 0x322d, 0x0877, 0x1e41, 0x7cc3, 0x6af5, 0x50af, 0x4699, + 0x5032, 0x4604, 0x7c5e, 0x6a68, 0x08ea, 0x1edc, 0x2486, 0x32b0, + }, + { + 0x0000, 0x41e6, 0x4655, 0x07b3, 0x4933, 0x08d5, 0x0f66, 0x4e80, + 0x57ff, 0x1619, 0x11aa, 0x504c, 0x1ecc, 0x5f2a, 0x5899, 0x197f, + 0x6a67, 0x2b81, 0x2c32, 0x6dd4, 0x2354, 0x62b2, 0x6501, 0x24e7, + 0x3d98, 0x7c7e, 0x7bcd, 0x3a2b, 0x74ab, 0x354d, 0x32fe, 0x7318, + 0x1157, 0x50b1, 0x5702, 0x16e4, 0x5864, 0x1982, 0x1e31, 0x5fd7, + 0x46a8, 0x074e, 0x00fd, 0x411b, 0x0f9b, 0x4e7d, 0x49ce, 0x0828, + 0x7b30, 0x3ad6, 0x3d65, 0x7c83, 0x3203, 0x73e5, 0x7456, 0x35b0, + 0x2ccf, 0x6d29, 0x6a9a, 0x2b7c, 0x65fc, 0x241a, 0x23a9, 0x624f, + 0x22ae, 0x6348, 0x64fb, 0x251d, 0x6b9d, 0x2a7b, 0x2dc8, 0x6c2e, + 0x7551, 0x34b7, 0x3304, 0x72e2, 0x3c62, 0x7d84, 0x7a37, 0x3bd1, + 0x48c9, 0x092f, 0x0e9c, 0x4f7a, 0x01fa, 0x401c, 0x47af, 0x0649, + 0x1f36, 0x5ed0, 0x5963, 0x1885, 0x5605, 0x17e3, 0x1050, 0x51b6, + 0x33f9, 0x721f, 0x75ac, 0x344a, 0x7aca, 0x3b2c, 0x3c9f, 0x7d79, + 0x6406, 0x25e0, 0x2253, 0x63b5, 0x2d35, 0x6cd3, 0x6b60, 0x2a86, + 0x599e, 0x1878, 0x1fcb, 0x5e2d, 0x10ad, 0x514b, 0x56f8, 0x171e, + 0x0e61, 0x4f87, 0x4834, 0x09d2, 0x4752, 0x06b4, 0x0107, 0x40e1, + 0x455c, 0x04ba, 0x0309, 0x42ef, 0x0c6f, 0x4d89, 0x4a3a, 0x0bdc, + 0x12a3, 0x5345, 0x54f6, 0x1510, 0x5b90, 0x1a76, 0x1dc5, 0x5c23, + 0x2f3b, 0x6edd, 0x696e, 0x2888, 0x6608, 0x27ee, 0x205d, 0x61bb, + 0x78c4, 0x3922, 0x3e91, 0x7f77, 0x31f7, 0x7011, 0x77a2, 0x3644, + 0x540b, 0x15ed, 0x125e, 0x53b8, 0x1d38, 0x5cde, 0x5b6d, 0x1a8b, + 0x03f4, 0x4212, 0x45a1, 0x0447, 0x4ac7, 0x0b21, 0x0c92, 0x4d74, + 0x3e6c, 0x7f8a, 0x7839, 0x39df, 0x775f, 0x36b9, 0x310a, 0x70ec, + 0x6993, 0x2875, 0x2fc6, 0x6e20, 0x20a0, 0x6146, 0x66f5, 0x2713, + 0x67f2, 0x2614, 0x21a7, 0x6041, 0x2ec1, 0x6f27, 0x6894, 0x2972, + 0x300d, 0x71eb, 0x7658, 0x37be, 0x793e, 0x38d8, 0x3f6b, 0x7e8d, + 0x0d95, 0x4c73, 0x4bc0, 0x0a26, 0x44a6, 0x0540, 0x02f3, 0x4315, + 0x5a6a, 0x1b8c, 0x1c3f, 0x5dd9, 0x1359, 0x52bf, 0x550c, 0x14ea, + 0x76a5, 0x3743, 0x30f0, 0x7116, 0x3f96, 0x7e70, 0x79c3, 0x3825, + 0x215a, 0x60bc, 0x670f, 0x26e9, 0x6869, 0x298f, 0x2e3c, 0x6fda, + 0x1cc2, 0x5d24, 0x5a97, 0x1b71, 0x55f1, 0x1417, 0x13a4, 0x5242, + 0x4b3d, 0x0adb, 0x0d68, 0x4c8e, 0x020e, 0x43e8, 0x445b, 0x05bd, + }, + { + 0x0000, 0x4f21, 0x5bdb, 0x14fa, 0x722f, 0x3d0e, 0x29f4, 0x66d5, + 0x21c7, 0x6ee6, 0x7a1c, 0x353d, 0x53e8, 0x1cc9, 0x0833, 0x4712, + 0x438e, 0x0caf, 0x1855, 0x5774, 0x31a1, 0x7e80, 0x6a7a, 0x255b, + 0x6249, 0x2d68, 0x3992, 0x76b3, 0x1066, 0x5f47, 0x4bbd, 0x049c, + 0x4285, 0x0da4, 0x195e, 0x567f, 0x30aa, 0x7f8b, 0x6b71, 0x2450, + 0x6342, 0x2c63, 0x3899, 0x77b8, 0x116d, 0x5e4c, 0x4ab6, 0x0597, + 0x010b, 0x4e2a, 0x5ad0, 0x15f1, 0x7324, 0x3c05, 0x28ff, 0x67de, + 0x20cc, 0x6fed, 0x7b17, 0x3436, 0x52e3, 0x1dc2, 0x0938, 0x4619, + 0x4093, 0x0fb2, 0x1b48, 0x5469, 0x32bc, 0x7d9d, 0x6967, 0x2646, + 0x6154, 0x2e75, 0x3a8f, 0x75ae, 0x137b, 0x5c5a, 0x48a0, 0x0781, + 0x031d, 0x4c3c, 0x58c6, 0x17e7, 0x7132, 0x3e13, 0x2ae9, 0x65c8, + 0x22da, 0x6dfb, 0x7901, 0x3620, 0x50f5, 0x1fd4, 0x0b2e, 0x440f, + 0x0216, 0x4d37, 0x59cd, 0x16ec, 0x7039, 0x3f18, 0x2be2, 0x64c3, + 0x23d1, 0x6cf0, 0x780a, 0x372b, 0x51fe, 0x1edf, 0x0a25, 0x4504, + 0x4198, 0x0eb9, 0x1a43, 0x5562, 0x33b7, 0x7c96, 0x686c, 0x274d, + 0x605f, 0x2f7e, 0x3b84, 0x74a5, 0x1270, 0x5d51, 0x49ab, 0x068a, + 0x44bf, 0x0b9e, 0x1f64, 0x5045, 0x3690, 0x79b1, 0x6d4b, 0x226a, + 0x6578, 0x2a59, 0x3ea3, 0x7182, 0x1757, 0x5876, 0x4c8c, 0x03ad, + 0x0731, 0x4810, 0x5cea, 0x13cb, 0x751e, 0x3a3f, 0x2ec5, 0x61e4, + 0x26f6, 0x69d7, 0x7d2d, 0x320c, 0x54d9, 0x1bf8, 0x0f02, 0x4023, + 0x063a, 0x491b, 0x5de1, 0x12c0, 0x7415, 0x3b34, 0x2fce, 0x60ef, + 0x27fd, 0x68dc, 0x7c26, 0x3307, 0x55d2, 0x1af3, 0x0e09, 0x4128, + 0x45b4, 0x0a95, 0x1e6f, 0x514e, 0x379b, 0x78ba, 0x6c40, 0x2361, + 0x6473, 0x2b52, 0x3fa8, 0x7089, 0x165c, 0x597d, 0x4d87, 0x02a6, + 0x042c, 0x4b0d, 0x5ff7, 0x10d6, 0x7603, 0x3922, 0x2dd8, 0x62f9, + 0x25eb, 0x6aca, 0x7e30, 0x3111, 0x57c4, 0x18e5, 0x0c1f, 0x433e, + 0x47a2, 0x0883, 0x1c79, 0x5358, 0x358d, 0x7aac, 0x6e56, 0x2177, + 0x6665, 0x2944, 0x3dbe, 0x729f, 0x144a, 0x5b6b, 0x4f91, 0x00b0, + 0x46a9, 0x0988, 0x1d72, 0x5253, 0x3486, 0x7ba7, 0x6f5d, 0x207c, + 0x676e, 0x284f, 0x3cb5, 0x7394, 0x1541, 0x5a60, 0x4e9a, 0x01bb, + 0x0527, 0x4a06, 0x5efc, 0x11dd, 0x7708, 0x3829, 0x2cd3, 0x63f2, + 0x24e0, 0x6bc1, 0x7f3b, 0x301a, 0x56cf, 0x19ee, 0x0d14, 0x4235, + }, + { + 0x0000, 0x4ce7, 0x5c57, 0x10b0, 0x7d37, 0x31d0, 0x2160, 0x6d87, + 0x3ff7, 0x7310, 0x63a0, 0x2f47, 0x42c0, 0x0e27, 0x1e97, 0x5270, + 0x7fee, 0x3309, 0x23b9, 0x6f5e, 0x02d9, 0x4e3e, 0x5e8e, 0x1269, + 0x4019, 0x0cfe, 0x1c4e, 0x50a9, 0x3d2e, 0x71c9, 0x6179, 0x2d9e, + 0x3a45, 0x76a2, 0x6612, 0x2af5, 0x4772, 0x0b95, 0x1b25, 0x57c2, + 0x05b2, 0x4955, 0x59e5, 0x1502, 0x7885, 0x3462, 0x24d2, 0x6835, + 0x45ab, 0x094c, 0x19fc, 0x551b, 0x389c, 0x747b, 0x64cb, 0x282c, + 0x7a5c, 0x36bb, 0x260b, 0x6aec, 0x076b, 0x4b8c, 0x5b3c, 0x17db, + 0x748a, 0x386d, 0x28dd, 0x643a, 0x09bd, 0x455a, 0x55ea, 0x190d, + 0x4b7d, 0x079a, 0x172a, 0x5bcd, 0x364a, 0x7aad, 0x6a1d, 0x26fa, + 0x0b64, 0x4783, 0x5733, 0x1bd4, 0x7653, 0x3ab4, 0x2a04, 0x66e3, + 0x3493, 0x7874, 0x68c4, 0x2423, 0x49a4, 0x0543, 0x15f3, 0x5914, + 0x4ecf, 0x0228, 0x1298, 0x5e7f, 0x33f8, 0x7f1f, 0x6faf, 0x2348, + 0x7138, 0x3ddf, 0x2d6f, 0x6188, 0x0c0f, 0x40e8, 0x5058, 0x1cbf, + 0x3121, 0x7dc6, 0x6d76, 0x2191, 0x4c16, 0x00f1, 0x1041, 0x5ca6, + 0x0ed6, 0x4231, 0x5281, 0x1e66, 0x73e1, 0x3f06, 0x2fb6, 0x6351, + 0x2c8d, 0x606a, 0x70da, 0x3c3d, 0x51ba, 0x1d5d, 0x0ded, 0x410a, + 0x137a, 0x5f9d, 0x4f2d, 0x03ca, 0x6e4d, 0x22aa, 0x321a, 0x7efd, + 0x5363, 0x1f84, 0x0f34, 0x43d3, 0x2e54, 0x62b3, 0x7203, 0x3ee4, + 0x6c94, 0x2073, 0x30c3, 0x7c24, 0x11a3, 0x5d44, 0x4df4, 0x0113, + 0x16c8, 0x5a2f, 0x4a9f, 0x0678, 0x6bff, 0x2718, 0x37a8, 0x7b4f, + 0x293f, 0x65d8, 0x7568, 0x398f, 0x5408, 0x18ef, 0x085f, 0x44b8, + 0x6926, 0x25c1, 0x3571, 0x7996, 0x1411, 0x58f6, 0x4846, 0x04a1, + 0x56d1, 0x1a36, 0x0a86, 0x4661, 0x2be6, 0x6701, 0x77b1, 0x3b56, + 0x5807, 0x14e0, 0x0450, 0x48b7, 0x2530, 0x69d7, 0x7967, 0x3580, + 0x67f0, 0x2b17, 0x3ba7, 0x7740, 0x1ac7, 0x5620, 0x4690, 0x0a77, + 0x27e9, 0x6b0e, 0x7bbe, 0x3759, 0x5ade, 0x1639, 0x0689, 0x4a6e, + 0x181e, 0x54f9, 0x4449, 0x08ae, 0x6529, 0x29ce, 0x397e, 0x7599, + 0x6242, 0x2ea5, 0x3e15, 0x72f2, 0x1f75, 0x5392, 0x4322, 0x0fc5, + 0x5db5, 0x1152, 0x01e2, 0x4d05, 0x2082, 0x6c65, 0x7cd5, 0x3032, + 0x1dac, 0x514b, 0x41fb, 0x0d1c, 0x609b, 0x2c7c, 0x3ccc, 0x702b, + 0x225b, 0x6ebc, 0x7e0c, 0x32eb, 0x5f6c, 0x138b, 0x033b, 0x4fdc, + }, + { + 0x0000, 0x591a, 0x77ad, 0x2eb7, 0x2ac3, 0x73d9, 0x5d6e, 0x0474, + 0x5586, 0x0c9c, 0x222b, 0x7b31, 0x7f45, 0x265f, 0x08e8, 0x51f2, + 0x6e95, 0x378f, 0x1938, 0x4022, 0x4456, 0x1d4c, 0x33fb, 0x6ae1, + 0x3b13, 0x6209, 0x4cbe, 0x15a4, 0x11d0, 0x48ca, 0x667d, 0x3f67, + 0x18b3, 0x41a9, 0x6f1e, 0x3604, 0x3270, 0x6b6a, 0x45dd, 0x1cc7, + 0x4d35, 0x142f, 0x3a98, 0x6382, 0x67f6, 0x3eec, 0x105b, 0x4941, + 0x7626, 0x2f3c, 0x018b, 0x5891, 0x5ce5, 0x05ff, 0x2b48, 0x7252, + 0x23a0, 0x7aba, 0x540d, 0x0d17, 0x0963, 0x5079, 0x7ece, 0x27d4, + 0x3166, 0x687c, 0x46cb, 0x1fd1, 0x1ba5, 0x42bf, 0x6c08, 0x3512, + 0x64e0, 0x3dfa, 0x134d, 0x4a57, 0x4e23, 0x1739, 0x398e, 0x6094, + 0x5ff3, 0x06e9, 0x285e, 0x7144, 0x7530, 0x2c2a, 0x029d, 0x5b87, + 0x0a75, 0x536f, 0x7dd8, 0x24c2, 0x20b6, 0x79ac, 0x571b, 0x0e01, + 0x29d5, 0x70cf, 0x5e78, 0x0762, 0x0316, 0x5a0c, 0x74bb, 0x2da1, + 0x7c53, 0x2549, 0x0bfe, 0x52e4, 0x5690, 0x0f8a, 0x213d, 0x7827, + 0x4740, 0x1e5a, 0x30ed, 0x69f7, 0x6d83, 0x3499, 0x1a2e, 0x4334, + 0x12c6, 0x4bdc, 0x656b, 0x3c71, 0x3805, 0x611f, 0x4fa8, 0x16b2, + 0x62cc, 0x3bd6, 0x1561, 0x4c7b, 0x480f, 0x1115, 0x3fa2, 0x66b8, + 0x374a, 0x6e50, 0x40e7, 0x19fd, 0x1d89, 0x4493, 0x6a24, 0x333e, + 0x0c59, 0x5543, 0x7bf4, 0x22ee, 0x269a, 0x7f80, 0x5137, 0x082d, + 0x59df, 0x00c5, 0x2e72, 0x7768, 0x731c, 0x2a06, 0x04b1, 0x5dab, + 0x7a7f, 0x2365, 0x0dd2, 0x54c8, 0x50bc, 0x09a6, 0x2711, 0x7e0b, + 0x2ff9, 0x76e3, 0x5854, 0x014e, 0x053a, 0x5c20, 0x7297, 0x2b8d, + 0x14ea, 0x4df0, 0x6347, 0x3a5d, 0x3e29, 0x6733, 0x4984, 0x109e, + 0x416c, 0x1876, 0x36c1, 0x6fdb, 0x6baf, 0x32b5, 0x1c02, 0x4518, + 0x53aa, 0x0ab0, 0x2407, 0x7d1d, 0x7969, 0x2073, 0x0ec4, 0x57de, + 0x062c, 0x5f36, 0x7181, 0x289b, 0x2cef, 0x75f5, 0x5b42, 0x0258, + 0x3d3f, 0x6425, 0x4a92, 0x1388, 0x17fc, 0x4ee6, 0x6051, 0x394b, + 0x68b9, 0x31a3, 0x1f14, 0x460e, 0x427a, 0x1b60, 0x35d7, 0x6ccd, + 0x4b19, 0x1203, 0x3cb4, 0x65ae, 0x61da, 0x38c0, 0x1677, 0x4f6d, + 0x1e9f, 0x4785, 0x6932, 0x3028, 0x345c, 0x6d46, 0x43f1, 0x1aeb, + 0x258c, 0x7c96, 0x5221, 0x0b3b, 0x0f4f, 0x5655, 0x78e2, 0x21f8, + 0x700a, 0x2910, 0x07a7, 0x5ebd, 0x5ac9, 0x03d3, 0x2d64, 0x747e, + }, + { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, + 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, + 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, + 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, + 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff, + }, + { + 0x0000, 0x0100, 0x0200, 0x0300, 0x0400, 0x0500, 0x0600, 0x0700, + 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x0e00, 0x0f00, + 0x1000, 0x1100, 0x1200, 0x1300, 0x1400, 0x1500, 0x1600, 0x1700, + 0x1800, 0x1900, 0x1a00, 0x1b00, 0x1c00, 0x1d00, 0x1e00, 0x1f00, + 0x2000, 0x2100, 0x2200, 0x2300, 0x2400, 0x2500, 0x2600, 0x2700, + 0x2800, 0x2900, 0x2a00, 0x2b00, 0x2c00, 0x2d00, 0x2e00, 0x2f00, + 0x3000, 0x3100, 0x3200, 0x3300, 0x3400, 0x3500, 0x3600, 0x3700, + 0x3800, 0x3900, 0x3a00, 0x3b00, 0x3c00, 0x3d00, 0x3e00, 0x3f00, + 0x4000, 0x4100, 0x4200, 0x4300, 0x4400, 0x4500, 0x4600, 0x4700, + 0x4800, 0x4900, 0x4a00, 0x4b00, 0x4c00, 0x4d00, 0x4e00, 0x4f00, + 0x5000, 0x5100, 0x5200, 0x5300, 0x5400, 0x5500, 0x5600, 0x5700, + 0x5800, 0x5900, 0x5a00, 0x5b00, 0x5c00, 0x5d00, 0x5e00, 0x5f00, + 0x6000, 0x6100, 0x6200, 0x6300, 0x6400, 0x6500, 0x6600, 0x6700, + 0x6800, 0x6900, 0x6a00, 0x6b00, 0x6c00, 0x6d00, 0x6e00, 0x6f00, + 0x7000, 0x7100, 0x7200, 0x7300, 0x7400, 0x7500, 0x7600, 0x7700, + 0x7800, 0x7900, 0x7a00, 0x7b00, 0x7c00, 0x7d00, 0x7e00, 0x7f00, + 0x4599, 0x4499, 0x4799, 0x4699, 0x4199, 0x4099, 0x4399, 0x4299, + 0x4d99, 0x4c99, 0x4f99, 0x4e99, 0x4999, 0x4899, 0x4b99, 0x4a99, + 0x5599, 0x5499, 0x5799, 0x5699, 0x5199, 0x5099, 0x5399, 0x5299, + 0x5d99, 0x5c99, 0x5f99, 0x5e99, 0x5999, 0x5899, 0x5b99, 0x5a99, + 0x6599, 0x6499, 0x6799, 0x6699, 0x6199, 0x6099, 0x6399, 0x6299, + 0x6d99, 0x6c99, 0x6f99, 0x6e99, 0x6999, 0x6899, 0x6b99, 0x6a99, + 0x7599, 0x7499, 0x7799, 0x7699, 0x7199, 0x7099, 0x7399, 0x7299, + 0x7d99, 0x7c99, 0x7f99, 0x7e99, 0x7999, 0x7899, 0x7b99, 0x7a99, + 0x0599, 0x0499, 0x0799, 0x0699, 0x0199, 0x0099, 0x0399, 0x0299, + 0x0d99, 0x0c99, 0x0f99, 0x0e99, 0x0999, 0x0899, 0x0b99, 0x0a99, + 0x1599, 0x1499, 0x1799, 0x1699, 0x1199, 0x1099, 0x1399, 0x1299, + 0x1d99, 0x1c99, 0x1f99, 0x1e99, 0x1999, 0x1899, 0x1b99, 0x1a99, + 0x2599, 0x2499, 0x2799, 0x2699, 0x2199, 0x2099, 0x2399, 0x2299, + 0x2d99, 0x2c99, 0x2f99, 0x2e99, 0x2999, 0x2899, 0x2b99, 0x2a99, + 0x3599, 0x3499, 0x3799, 0x3699, 0x3199, 0x3099, 0x3399, 0x3299, + 0x3d99, 0x3c99, 0x3f99, 0x3e99, 0x3999, 0x3899, 0x3b99, 0x3a99, + }, +}; diff --git a/ext/digest/crc16/crc16.c b/ext/digest/crc16/crc16.c index 3378cca..a2ef86f 100644 --- a/ext/digest/crc16/crc16.c +++ b/ext/digest/crc16/crc16.c @@ -15,54 +15,39 @@ */ #include "crc16.h" - -/** - * Static table used for the table_driven implementation. - */ -static const crc16_t crc16_table[256] = { - 0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241, - 0xc601, 0x06c0, 0x0780, 0xc741, 0x0500, 0xc5c1, 0xc481, 0x0440, - 0xcc01, 0x0cc0, 0x0d80, 0xcd41, 0x0f00, 0xcfc1, 0xce81, 0x0e40, - 0x0a00, 0xcac1, 0xcb81, 0x0b40, 0xc901, 0x09c0, 0x0880, 0xc841, - 0xd801, 0x18c0, 0x1980, 0xd941, 0x1b00, 0xdbc1, 0xda81, 0x1a40, - 0x1e00, 0xdec1, 0xdf81, 0x1f40, 0xdd01, 0x1dc0, 0x1c80, 0xdc41, - 0x1400, 0xd4c1, 0xd581, 0x1540, 0xd701, 0x17c0, 0x1680, 0xd641, - 0xd201, 0x12c0, 0x1380, 0xd341, 0x1100, 0xd1c1, 0xd081, 0x1040, - 0xf001, 0x30c0, 0x3180, 0xf141, 0x3300, 0xf3c1, 0xf281, 0x3240, - 0x3600, 0xf6c1, 0xf781, 0x3740, 0xf501, 0x35c0, 0x3480, 0xf441, - 0x3c00, 0xfcc1, 0xfd81, 0x3d40, 0xff01, 0x3fc0, 0x3e80, 0xfe41, - 0xfa01, 0x3ac0, 0x3b80, 0xfb41, 0x3900, 0xf9c1, 0xf881, 0x3840, - 0x2800, 0xe8c1, 0xe981, 0x2940, 0xeb01, 0x2bc0, 0x2a80, 0xea41, - 0xee01, 0x2ec0, 0x2f80, 0xef41, 0x2d00, 0xedc1, 0xec81, 0x2c40, - 0xe401, 0x24c0, 0x2580, 0xe541, 0x2700, 0xe7c1, 0xe681, 0x2640, - 0x2200, 0xe2c1, 0xe381, 0x2340, 0xe101, 0x21c0, 0x2080, 0xe041, - 0xa001, 0x60c0, 0x6180, 0xa141, 0x6300, 0xa3c1, 0xa281, 0x6240, - 0x6600, 0xa6c1, 0xa781, 0x6740, 0xa501, 0x65c0, 0x6480, 0xa441, - 0x6c00, 0xacc1, 0xad81, 0x6d40, 0xaf01, 0x6fc0, 0x6e80, 0xae41, - 0xaa01, 0x6ac0, 0x6b80, 0xab41, 0x6900, 0xa9c1, 0xa881, 0x6840, - 0x7800, 0xb8c1, 0xb981, 0x7940, 0xbb01, 0x7bc0, 0x7a80, 0xba41, - 0xbe01, 0x7ec0, 0x7f80, 0xbf41, 0x7d00, 0xbdc1, 0xbc81, 0x7c40, - 0xb401, 0x74c0, 0x7580, 0xb541, 0x7700, 0xb7c1, 0xb681, 0x7640, - 0x7200, 0xb2c1, 0xb381, 0x7340, 0xb101, 0x71c0, 0x7080, 0xb041, - 0x5000, 0x90c1, 0x9181, 0x5140, 0x9301, 0x53c0, 0x5280, 0x9241, - 0x9601, 0x56c0, 0x5780, 0x9741, 0x5500, 0x95c1, 0x9481, 0x5440, - 0x9c01, 0x5cc0, 0x5d80, 0x9d41, 0x5f00, 0x9fc1, 0x9e81, 0x5e40, - 0x5a00, 0x9ac1, 0x9b81, 0x5b40, 0x9901, 0x59c0, 0x5880, 0x9841, - 0x8801, 0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81, 0x4a40, - 0x4e00, 0x8ec1, 0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41, - 0x4400, 0x84c1, 0x8581, 0x4540, 0x8701, 0x47c0, 0x4680, 0x8641, - 0x8201, 0x42c0, 0x4380, 0x8341, 0x4100, 0x81c1, 0x8081, 0x4040 -}; +#include "crc16_table.h" crc16_t crc16_update(crc16_t crc, const void *data, size_t data_len) { const unsigned char *d = (const unsigned char *)data; unsigned int tbl_idx; + for (; data_len >= SLICE_SIZE; data_len -= SLICE_SIZE) + { + crc = crc16_table[15][d[ 0] ^ ((crc >> 0) & 0xff)] ^ + crc16_table[14][d[ 1] ^ ((crc >> 8) & 0xff)] ^ + crc16_table[13][d[ 2] ] ^ + crc16_table[12][d[ 3] ] ^ + crc16_table[11][d[ 4] ] ^ + crc16_table[10][d[ 5] ] ^ + crc16_table[ 9][d[ 6] ] ^ + crc16_table[ 8][d[ 7] ] ^ + crc16_table[ 7][d[ 8] ] ^ + crc16_table[ 6][d[ 9] ] ^ + crc16_table[ 5][d[10] ] ^ + crc16_table[ 4][d[11] ] ^ + crc16_table[ 3][d[12] ] ^ + crc16_table[ 2][d[13] ] ^ + crc16_table[ 1][d[14] ] ^ + crc16_table[ 0][d[15] ]; + crc &= 0xffff; + d += SLICE_SIZE; + } + while (data_len--) { tbl_idx = (crc ^ *d) & 0xff; - crc = (crc16_table[tbl_idx] ^ (crc >> 8)) & 0xffff; + crc = (crc16_table[0][tbl_idx] ^ (crc >> 8)) & 0xffff; d++; } diff --git a/ext/digest/crc16/crc16_table.h b/ext/digest/crc16/crc16_table.h new file mode 100644 index 0000000..d148f98 --- /dev/null +++ b/ext/digest/crc16/crc16_table.h @@ -0,0 +1,558 @@ +/* + * bitwidth: 16 + * generator polynomial: 0x8005 + * input bit direction: REFLECT + * slice bytes per iteration: 16 + * slide bits per table: 8 + * + * Generated by: gentable.rb of digest-crc + */ + +#define SLICE_SIZE 16 + +static const uint16_t crc16_table[SLICE_SIZE][256] = { + { + 0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241, + 0xc601, 0x06c0, 0x0780, 0xc741, 0x0500, 0xc5c1, 0xc481, 0x0440, + 0xcc01, 0x0cc0, 0x0d80, 0xcd41, 0x0f00, 0xcfc1, 0xce81, 0x0e40, + 0x0a00, 0xcac1, 0xcb81, 0x0b40, 0xc901, 0x09c0, 0x0880, 0xc841, + 0xd801, 0x18c0, 0x1980, 0xd941, 0x1b00, 0xdbc1, 0xda81, 0x1a40, + 0x1e00, 0xdec1, 0xdf81, 0x1f40, 0xdd01, 0x1dc0, 0x1c80, 0xdc41, + 0x1400, 0xd4c1, 0xd581, 0x1540, 0xd701, 0x17c0, 0x1680, 0xd641, + 0xd201, 0x12c0, 0x1380, 0xd341, 0x1100, 0xd1c1, 0xd081, 0x1040, + 0xf001, 0x30c0, 0x3180, 0xf141, 0x3300, 0xf3c1, 0xf281, 0x3240, + 0x3600, 0xf6c1, 0xf781, 0x3740, 0xf501, 0x35c0, 0x3480, 0xf441, + 0x3c00, 0xfcc1, 0xfd81, 0x3d40, 0xff01, 0x3fc0, 0x3e80, 0xfe41, + 0xfa01, 0x3ac0, 0x3b80, 0xfb41, 0x3900, 0xf9c1, 0xf881, 0x3840, + 0x2800, 0xe8c1, 0xe981, 0x2940, 0xeb01, 0x2bc0, 0x2a80, 0xea41, + 0xee01, 0x2ec0, 0x2f80, 0xef41, 0x2d00, 0xedc1, 0xec81, 0x2c40, + 0xe401, 0x24c0, 0x2580, 0xe541, 0x2700, 0xe7c1, 0xe681, 0x2640, + 0x2200, 0xe2c1, 0xe381, 0x2340, 0xe101, 0x21c0, 0x2080, 0xe041, + 0xa001, 0x60c0, 0x6180, 0xa141, 0x6300, 0xa3c1, 0xa281, 0x6240, + 0x6600, 0xa6c1, 0xa781, 0x6740, 0xa501, 0x65c0, 0x6480, 0xa441, + 0x6c00, 0xacc1, 0xad81, 0x6d40, 0xaf01, 0x6fc0, 0x6e80, 0xae41, + 0xaa01, 0x6ac0, 0x6b80, 0xab41, 0x6900, 0xa9c1, 0xa881, 0x6840, + 0x7800, 0xb8c1, 0xb981, 0x7940, 0xbb01, 0x7bc0, 0x7a80, 0xba41, + 0xbe01, 0x7ec0, 0x7f80, 0xbf41, 0x7d00, 0xbdc1, 0xbc81, 0x7c40, + 0xb401, 0x74c0, 0x7580, 0xb541, 0x7700, 0xb7c1, 0xb681, 0x7640, + 0x7200, 0xb2c1, 0xb381, 0x7340, 0xb101, 0x71c0, 0x7080, 0xb041, + 0x5000, 0x90c1, 0x9181, 0x5140, 0x9301, 0x53c0, 0x5280, 0x9241, + 0x9601, 0x56c0, 0x5780, 0x9741, 0x5500, 0x95c1, 0x9481, 0x5440, + 0x9c01, 0x5cc0, 0x5d80, 0x9d41, 0x5f00, 0x9fc1, 0x9e81, 0x5e40, + 0x5a00, 0x9ac1, 0x9b81, 0x5b40, 0x9901, 0x59c0, 0x5880, 0x9841, + 0x8801, 0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81, 0x4a40, + 0x4e00, 0x8ec1, 0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41, + 0x4400, 0x84c1, 0x8581, 0x4540, 0x8701, 0x47c0, 0x4680, 0x8641, + 0x8201, 0x42c0, 0x4380, 0x8341, 0x4100, 0x81c1, 0x8081, 0x4040, + }, + { + 0x0000, 0x9001, 0x6001, 0xf000, 0xc002, 0x5003, 0xa003, 0x3002, + 0xc007, 0x5006, 0xa006, 0x3007, 0x0005, 0x9004, 0x6004, 0xf005, + 0xc00d, 0x500c, 0xa00c, 0x300d, 0x000f, 0x900e, 0x600e, 0xf00f, + 0x000a, 0x900b, 0x600b, 0xf00a, 0xc008, 0x5009, 0xa009, 0x3008, + 0xc019, 0x5018, 0xa018, 0x3019, 0x001b, 0x901a, 0x601a, 0xf01b, + 0x001e, 0x901f, 0x601f, 0xf01e, 0xc01c, 0x501d, 0xa01d, 0x301c, + 0x0014, 0x9015, 0x6015, 0xf014, 0xc016, 0x5017, 0xa017, 0x3016, + 0xc013, 0x5012, 0xa012, 0x3013, 0x0011, 0x9010, 0x6010, 0xf011, + 0xc031, 0x5030, 0xa030, 0x3031, 0x0033, 0x9032, 0x6032, 0xf033, + 0x0036, 0x9037, 0x6037, 0xf036, 0xc034, 0x5035, 0xa035, 0x3034, + 0x003c, 0x903d, 0x603d, 0xf03c, 0xc03e, 0x503f, 0xa03f, 0x303e, + 0xc03b, 0x503a, 0xa03a, 0x303b, 0x0039, 0x9038, 0x6038, 0xf039, + 0x0028, 0x9029, 0x6029, 0xf028, 0xc02a, 0x502b, 0xa02b, 0x302a, + 0xc02f, 0x502e, 0xa02e, 0x302f, 0x002d, 0x902c, 0x602c, 0xf02d, + 0xc025, 0x5024, 0xa024, 0x3025, 0x0027, 0x9026, 0x6026, 0xf027, + 0x0022, 0x9023, 0x6023, 0xf022, 0xc020, 0x5021, 0xa021, 0x3020, + 0xc061, 0x5060, 0xa060, 0x3061, 0x0063, 0x9062, 0x6062, 0xf063, + 0x0066, 0x9067, 0x6067, 0xf066, 0xc064, 0x5065, 0xa065, 0x3064, + 0x006c, 0x906d, 0x606d, 0xf06c, 0xc06e, 0x506f, 0xa06f, 0x306e, + 0xc06b, 0x506a, 0xa06a, 0x306b, 0x0069, 0x9068, 0x6068, 0xf069, + 0x0078, 0x9079, 0x6079, 0xf078, 0xc07a, 0x507b, 0xa07b, 0x307a, + 0xc07f, 0x507e, 0xa07e, 0x307f, 0x007d, 0x907c, 0x607c, 0xf07d, + 0xc075, 0x5074, 0xa074, 0x3075, 0x0077, 0x9076, 0x6076, 0xf077, + 0x0072, 0x9073, 0x6073, 0xf072, 0xc070, 0x5071, 0xa071, 0x3070, + 0x0050, 0x9051, 0x6051, 0xf050, 0xc052, 0x5053, 0xa053, 0x3052, + 0xc057, 0x5056, 0xa056, 0x3057, 0x0055, 0x9054, 0x6054, 0xf055, + 0xc05d, 0x505c, 0xa05c, 0x305d, 0x005f, 0x905e, 0x605e, 0xf05f, + 0x005a, 0x905b, 0x605b, 0xf05a, 0xc058, 0x5059, 0xa059, 0x3058, + 0xc049, 0x5048, 0xa048, 0x3049, 0x004b, 0x904a, 0x604a, 0xf04b, + 0x004e, 0x904f, 0x604f, 0xf04e, 0xc04c, 0x504d, 0xa04d, 0x304c, + 0x0044, 0x9045, 0x6045, 0xf044, 0xc046, 0x5047, 0xa047, 0x3046, + 0xc043, 0x5042, 0xa042, 0x3043, 0x0041, 0x9040, 0x6040, 0xf041, + }, + { + 0x0000, 0xc051, 0xc0a1, 0x00f0, 0xc141, 0x0110, 0x01e0, 0xc1b1, + 0xc281, 0x02d0, 0x0220, 0xc271, 0x03c0, 0xc391, 0xc361, 0x0330, + 0xc501, 0x0550, 0x05a0, 0xc5f1, 0x0440, 0xc411, 0xc4e1, 0x04b0, + 0x0780, 0xc7d1, 0xc721, 0x0770, 0xc6c1, 0x0690, 0x0660, 0xc631, + 0xca01, 0x0a50, 0x0aa0, 0xcaf1, 0x0b40, 0xcb11, 0xcbe1, 0x0bb0, + 0x0880, 0xc8d1, 0xc821, 0x0870, 0xc9c1, 0x0990, 0x0960, 0xc931, + 0x0f00, 0xcf51, 0xcfa1, 0x0ff0, 0xce41, 0x0e10, 0x0ee0, 0xceb1, + 0xcd81, 0x0dd0, 0x0d20, 0xcd71, 0x0cc0, 0xcc91, 0xcc61, 0x0c30, + 0xd401, 0x1450, 0x14a0, 0xd4f1, 0x1540, 0xd511, 0xd5e1, 0x15b0, + 0x1680, 0xd6d1, 0xd621, 0x1670, 0xd7c1, 0x1790, 0x1760, 0xd731, + 0x1100, 0xd151, 0xd1a1, 0x11f0, 0xd041, 0x1010, 0x10e0, 0xd0b1, + 0xd381, 0x13d0, 0x1320, 0xd371, 0x12c0, 0xd291, 0xd261, 0x1230, + 0x1e00, 0xde51, 0xdea1, 0x1ef0, 0xdf41, 0x1f10, 0x1fe0, 0xdfb1, + 0xdc81, 0x1cd0, 0x1c20, 0xdc71, 0x1dc0, 0xdd91, 0xdd61, 0x1d30, + 0xdb01, 0x1b50, 0x1ba0, 0xdbf1, 0x1a40, 0xda11, 0xdae1, 0x1ab0, + 0x1980, 0xd9d1, 0xd921, 0x1970, 0xd8c1, 0x1890, 0x1860, 0xd831, + 0xe801, 0x2850, 0x28a0, 0xe8f1, 0x2940, 0xe911, 0xe9e1, 0x29b0, + 0x2a80, 0xead1, 0xea21, 0x2a70, 0xebc1, 0x2b90, 0x2b60, 0xeb31, + 0x2d00, 0xed51, 0xeda1, 0x2df0, 0xec41, 0x2c10, 0x2ce0, 0xecb1, + 0xef81, 0x2fd0, 0x2f20, 0xef71, 0x2ec0, 0xee91, 0xee61, 0x2e30, + 0x2200, 0xe251, 0xe2a1, 0x22f0, 0xe341, 0x2310, 0x23e0, 0xe3b1, + 0xe081, 0x20d0, 0x2020, 0xe071, 0x21c0, 0xe191, 0xe161, 0x2130, + 0xe701, 0x2750, 0x27a0, 0xe7f1, 0x2640, 0xe611, 0xe6e1, 0x26b0, + 0x2580, 0xe5d1, 0xe521, 0x2570, 0xe4c1, 0x2490, 0x2460, 0xe431, + 0x3c00, 0xfc51, 0xfca1, 0x3cf0, 0xfd41, 0x3d10, 0x3de0, 0xfdb1, + 0xfe81, 0x3ed0, 0x3e20, 0xfe71, 0x3fc0, 0xff91, 0xff61, 0x3f30, + 0xf901, 0x3950, 0x39a0, 0xf9f1, 0x3840, 0xf811, 0xf8e1, 0x38b0, + 0x3b80, 0xfbd1, 0xfb21, 0x3b70, 0xfac1, 0x3a90, 0x3a60, 0xfa31, + 0xf601, 0x3650, 0x36a0, 0xf6f1, 0x3740, 0xf711, 0xf7e1, 0x37b0, + 0x3480, 0xf4d1, 0xf421, 0x3470, 0xf5c1, 0x3590, 0x3560, 0xf531, + 0x3300, 0xf351, 0xf3a1, 0x33f0, 0xf241, 0x3210, 0x32e0, 0xf2b1, + 0xf181, 0x31d0, 0x3120, 0xf171, 0x30c0, 0xf091, 0xf061, 0x3030, + }, + { + 0x0000, 0xfc01, 0xb801, 0x4400, 0x3001, 0xcc00, 0x8800, 0x7401, + 0x6002, 0x9c03, 0xd803, 0x2402, 0x5003, 0xac02, 0xe802, 0x1403, + 0xc004, 0x3c05, 0x7805, 0x8404, 0xf005, 0x0c04, 0x4804, 0xb405, + 0xa006, 0x5c07, 0x1807, 0xe406, 0x9007, 0x6c06, 0x2806, 0xd407, + 0xc00b, 0x3c0a, 0x780a, 0x840b, 0xf00a, 0x0c0b, 0x480b, 0xb40a, + 0xa009, 0x5c08, 0x1808, 0xe409, 0x9008, 0x6c09, 0x2809, 0xd408, + 0x000f, 0xfc0e, 0xb80e, 0x440f, 0x300e, 0xcc0f, 0x880f, 0x740e, + 0x600d, 0x9c0c, 0xd80c, 0x240d, 0x500c, 0xac0d, 0xe80d, 0x140c, + 0xc015, 0x3c14, 0x7814, 0x8415, 0xf014, 0x0c15, 0x4815, 0xb414, + 0xa017, 0x5c16, 0x1816, 0xe417, 0x9016, 0x6c17, 0x2817, 0xd416, + 0x0011, 0xfc10, 0xb810, 0x4411, 0x3010, 0xcc11, 0x8811, 0x7410, + 0x6013, 0x9c12, 0xd812, 0x2413, 0x5012, 0xac13, 0xe813, 0x1412, + 0x001e, 0xfc1f, 0xb81f, 0x441e, 0x301f, 0xcc1e, 0x881e, 0x741f, + 0x601c, 0x9c1d, 0xd81d, 0x241c, 0x501d, 0xac1c, 0xe81c, 0x141d, + 0xc01a, 0x3c1b, 0x781b, 0x841a, 0xf01b, 0x0c1a, 0x481a, 0xb41b, + 0xa018, 0x5c19, 0x1819, 0xe418, 0x9019, 0x6c18, 0x2818, 0xd419, + 0xc029, 0x3c28, 0x7828, 0x8429, 0xf028, 0x0c29, 0x4829, 0xb428, + 0xa02b, 0x5c2a, 0x182a, 0xe42b, 0x902a, 0x6c2b, 0x282b, 0xd42a, + 0x002d, 0xfc2c, 0xb82c, 0x442d, 0x302c, 0xcc2d, 0x882d, 0x742c, + 0x602f, 0x9c2e, 0xd82e, 0x242f, 0x502e, 0xac2f, 0xe82f, 0x142e, + 0x0022, 0xfc23, 0xb823, 0x4422, 0x3023, 0xcc22, 0x8822, 0x7423, + 0x6020, 0x9c21, 0xd821, 0x2420, 0x5021, 0xac20, 0xe820, 0x1421, + 0xc026, 0x3c27, 0x7827, 0x8426, 0xf027, 0x0c26, 0x4826, 0xb427, + 0xa024, 0x5c25, 0x1825, 0xe424, 0x9025, 0x6c24, 0x2824, 0xd425, + 0x003c, 0xfc3d, 0xb83d, 0x443c, 0x303d, 0xcc3c, 0x883c, 0x743d, + 0x603e, 0x9c3f, 0xd83f, 0x243e, 0x503f, 0xac3e, 0xe83e, 0x143f, + 0xc038, 0x3c39, 0x7839, 0x8438, 0xf039, 0x0c38, 0x4838, 0xb439, + 0xa03a, 0x5c3b, 0x183b, 0xe43a, 0x903b, 0x6c3a, 0x283a, 0xd43b, + 0xc037, 0x3c36, 0x7836, 0x8437, 0xf036, 0x0c37, 0x4837, 0xb436, + 0xa035, 0x5c34, 0x1834, 0xe435, 0x9034, 0x6c35, 0x2835, 0xd434, + 0x0033, 0xfc32, 0xb832, 0x4433, 0x3032, 0xcc33, 0x8833, 0x7432, + 0x6031, 0x9c30, 0xd830, 0x2431, 0x5030, 0xac31, 0xe831, 0x1430, + }, + { + 0x0000, 0xc03d, 0xc079, 0x0044, 0xc0f1, 0x00cc, 0x0088, 0xc0b5, + 0xc1e1, 0x01dc, 0x0198, 0xc1a5, 0x0110, 0xc12d, 0xc169, 0x0154, + 0xc3c1, 0x03fc, 0x03b8, 0xc385, 0x0330, 0xc30d, 0xc349, 0x0374, + 0x0220, 0xc21d, 0xc259, 0x0264, 0xc2d1, 0x02ec, 0x02a8, 0xc295, + 0xc781, 0x07bc, 0x07f8, 0xc7c5, 0x0770, 0xc74d, 0xc709, 0x0734, + 0x0660, 0xc65d, 0xc619, 0x0624, 0xc691, 0x06ac, 0x06e8, 0xc6d5, + 0x0440, 0xc47d, 0xc439, 0x0404, 0xc4b1, 0x048c, 0x04c8, 0xc4f5, + 0xc5a1, 0x059c, 0x05d8, 0xc5e5, 0x0550, 0xc56d, 0xc529, 0x0514, + 0xcf01, 0x0f3c, 0x0f78, 0xcf45, 0x0ff0, 0xcfcd, 0xcf89, 0x0fb4, + 0x0ee0, 0xcedd, 0xce99, 0x0ea4, 0xce11, 0x0e2c, 0x0e68, 0xce55, + 0x0cc0, 0xccfd, 0xccb9, 0x0c84, 0xcc31, 0x0c0c, 0x0c48, 0xcc75, + 0xcd21, 0x0d1c, 0x0d58, 0xcd65, 0x0dd0, 0xcded, 0xcda9, 0x0d94, + 0x0880, 0xc8bd, 0xc8f9, 0x08c4, 0xc871, 0x084c, 0x0808, 0xc835, + 0xc961, 0x095c, 0x0918, 0xc925, 0x0990, 0xc9ad, 0xc9e9, 0x09d4, + 0xcb41, 0x0b7c, 0x0b38, 0xcb05, 0x0bb0, 0xcb8d, 0xcbc9, 0x0bf4, + 0x0aa0, 0xca9d, 0xcad9, 0x0ae4, 0xca51, 0x0a6c, 0x0a28, 0xca15, + 0xde01, 0x1e3c, 0x1e78, 0xde45, 0x1ef0, 0xdecd, 0xde89, 0x1eb4, + 0x1fe0, 0xdfdd, 0xdf99, 0x1fa4, 0xdf11, 0x1f2c, 0x1f68, 0xdf55, + 0x1dc0, 0xddfd, 0xddb9, 0x1d84, 0xdd31, 0x1d0c, 0x1d48, 0xdd75, + 0xdc21, 0x1c1c, 0x1c58, 0xdc65, 0x1cd0, 0xdced, 0xdca9, 0x1c94, + 0x1980, 0xd9bd, 0xd9f9, 0x19c4, 0xd971, 0x194c, 0x1908, 0xd935, + 0xd861, 0x185c, 0x1818, 0xd825, 0x1890, 0xd8ad, 0xd8e9, 0x18d4, + 0xda41, 0x1a7c, 0x1a38, 0xda05, 0x1ab0, 0xda8d, 0xdac9, 0x1af4, + 0x1ba0, 0xdb9d, 0xdbd9, 0x1be4, 0xdb51, 0x1b6c, 0x1b28, 0xdb15, + 0x1100, 0xd13d, 0xd179, 0x1144, 0xd1f1, 0x11cc, 0x1188, 0xd1b5, + 0xd0e1, 0x10dc, 0x1098, 0xd0a5, 0x1010, 0xd02d, 0xd069, 0x1054, + 0xd2c1, 0x12fc, 0x12b8, 0xd285, 0x1230, 0xd20d, 0xd249, 0x1274, + 0x1320, 0xd31d, 0xd359, 0x1364, 0xd3d1, 0x13ec, 0x13a8, 0xd395, + 0xd681, 0x16bc, 0x16f8, 0xd6c5, 0x1670, 0xd64d, 0xd609, 0x1634, + 0x1760, 0xd75d, 0xd719, 0x1724, 0xd791, 0x17ac, 0x17e8, 0xd7d5, + 0x1540, 0xd57d, 0xd539, 0x1504, 0xd5b1, 0x158c, 0x15c8, 0xd5f5, + 0xd4a1, 0x149c, 0x14d8, 0xd4e5, 0x1450, 0xd46d, 0xd429, 0x1414, + }, + { + 0x0000, 0xd101, 0xe201, 0x3300, 0x8401, 0x5500, 0x6600, 0xb701, + 0x4801, 0x9900, 0xaa00, 0x7b01, 0xcc00, 0x1d01, 0x2e01, 0xff00, + 0x9002, 0x4103, 0x7203, 0xa302, 0x1403, 0xc502, 0xf602, 0x2703, + 0xd803, 0x0902, 0x3a02, 0xeb03, 0x5c02, 0x8d03, 0xbe03, 0x6f02, + 0x6007, 0xb106, 0x8206, 0x5307, 0xe406, 0x3507, 0x0607, 0xd706, + 0x2806, 0xf907, 0xca07, 0x1b06, 0xac07, 0x7d06, 0x4e06, 0x9f07, + 0xf005, 0x2104, 0x1204, 0xc305, 0x7404, 0xa505, 0x9605, 0x4704, + 0xb804, 0x6905, 0x5a05, 0x8b04, 0x3c05, 0xed04, 0xde04, 0x0f05, + 0xc00e, 0x110f, 0x220f, 0xf30e, 0x440f, 0x950e, 0xa60e, 0x770f, + 0x880f, 0x590e, 0x6a0e, 0xbb0f, 0x0c0e, 0xdd0f, 0xee0f, 0x3f0e, + 0x500c, 0x810d, 0xb20d, 0x630c, 0xd40d, 0x050c, 0x360c, 0xe70d, + 0x180d, 0xc90c, 0xfa0c, 0x2b0d, 0x9c0c, 0x4d0d, 0x7e0d, 0xaf0c, + 0xa009, 0x7108, 0x4208, 0x9309, 0x2408, 0xf509, 0xc609, 0x1708, + 0xe808, 0x3909, 0x0a09, 0xdb08, 0x6c09, 0xbd08, 0x8e08, 0x5f09, + 0x300b, 0xe10a, 0xd20a, 0x030b, 0xb40a, 0x650b, 0x560b, 0x870a, + 0x780a, 0xa90b, 0x9a0b, 0x4b0a, 0xfc0b, 0x2d0a, 0x1e0a, 0xcf0b, + 0xc01f, 0x111e, 0x221e, 0xf31f, 0x441e, 0x951f, 0xa61f, 0x771e, + 0x881e, 0x591f, 0x6a1f, 0xbb1e, 0x0c1f, 0xdd1e, 0xee1e, 0x3f1f, + 0x501d, 0x811c, 0xb21c, 0x631d, 0xd41c, 0x051d, 0x361d, 0xe71c, + 0x181c, 0xc91d, 0xfa1d, 0x2b1c, 0x9c1d, 0x4d1c, 0x7e1c, 0xaf1d, + 0xa018, 0x7119, 0x4219, 0x9318, 0x2419, 0xf518, 0xc618, 0x1719, + 0xe819, 0x3918, 0x0a18, 0xdb19, 0x6c18, 0xbd19, 0x8e19, 0x5f18, + 0x301a, 0xe11b, 0xd21b, 0x031a, 0xb41b, 0x651a, 0x561a, 0x871b, + 0x781b, 0xa91a, 0x9a1a, 0x4b1b, 0xfc1a, 0x2d1b, 0x1e1b, 0xcf1a, + 0x0011, 0xd110, 0xe210, 0x3311, 0x8410, 0x5511, 0x6611, 0xb710, + 0x4810, 0x9911, 0xaa11, 0x7b10, 0xcc11, 0x1d10, 0x2e10, 0xff11, + 0x9013, 0x4112, 0x7212, 0xa313, 0x1412, 0xc513, 0xf613, 0x2712, + 0xd812, 0x0913, 0x3a13, 0xeb12, 0x5c13, 0x8d12, 0xbe12, 0x6f13, + 0x6016, 0xb117, 0x8217, 0x5316, 0xe417, 0x3516, 0x0616, 0xd717, + 0x2817, 0xf916, 0xca16, 0x1b17, 0xac16, 0x7d17, 0x4e17, 0x9f16, + 0xf014, 0x2115, 0x1215, 0xc314, 0x7415, 0xa514, 0x9614, 0x4715, + 0xb815, 0x6914, 0x5a14, 0x8b15, 0x3c14, 0xed15, 0xde15, 0x0f14, + }, + { + 0x0000, 0xc010, 0xc023, 0x0033, 0xc045, 0x0055, 0x0066, 0xc076, + 0xc089, 0x0099, 0x00aa, 0xc0ba, 0x00cc, 0xc0dc, 0xc0ef, 0x00ff, + 0xc111, 0x0101, 0x0132, 0xc122, 0x0154, 0xc144, 0xc177, 0x0167, + 0x0198, 0xc188, 0xc1bb, 0x01ab, 0xc1dd, 0x01cd, 0x01fe, 0xc1ee, + 0xc221, 0x0231, 0x0202, 0xc212, 0x0264, 0xc274, 0xc247, 0x0257, + 0x02a8, 0xc2b8, 0xc28b, 0x029b, 0xc2ed, 0x02fd, 0x02ce, 0xc2de, + 0x0330, 0xc320, 0xc313, 0x0303, 0xc375, 0x0365, 0x0356, 0xc346, + 0xc3b9, 0x03a9, 0x039a, 0xc38a, 0x03fc, 0xc3ec, 0xc3df, 0x03cf, + 0xc441, 0x0451, 0x0462, 0xc472, 0x0404, 0xc414, 0xc427, 0x0437, + 0x04c8, 0xc4d8, 0xc4eb, 0x04fb, 0xc48d, 0x049d, 0x04ae, 0xc4be, + 0x0550, 0xc540, 0xc573, 0x0563, 0xc515, 0x0505, 0x0536, 0xc526, + 0xc5d9, 0x05c9, 0x05fa, 0xc5ea, 0x059c, 0xc58c, 0xc5bf, 0x05af, + 0x0660, 0xc670, 0xc643, 0x0653, 0xc625, 0x0635, 0x0606, 0xc616, + 0xc6e9, 0x06f9, 0x06ca, 0xc6da, 0x06ac, 0xc6bc, 0xc68f, 0x069f, + 0xc771, 0x0761, 0x0752, 0xc742, 0x0734, 0xc724, 0xc717, 0x0707, + 0x07f8, 0xc7e8, 0xc7db, 0x07cb, 0xc7bd, 0x07ad, 0x079e, 0xc78e, + 0xc881, 0x0891, 0x08a2, 0xc8b2, 0x08c4, 0xc8d4, 0xc8e7, 0x08f7, + 0x0808, 0xc818, 0xc82b, 0x083b, 0xc84d, 0x085d, 0x086e, 0xc87e, + 0x0990, 0xc980, 0xc9b3, 0x09a3, 0xc9d5, 0x09c5, 0x09f6, 0xc9e6, + 0xc919, 0x0909, 0x093a, 0xc92a, 0x095c, 0xc94c, 0xc97f, 0x096f, + 0x0aa0, 0xcab0, 0xca83, 0x0a93, 0xcae5, 0x0af5, 0x0ac6, 0xcad6, + 0xca29, 0x0a39, 0x0a0a, 0xca1a, 0x0a6c, 0xca7c, 0xca4f, 0x0a5f, + 0xcbb1, 0x0ba1, 0x0b92, 0xcb82, 0x0bf4, 0xcbe4, 0xcbd7, 0x0bc7, + 0x0b38, 0xcb28, 0xcb1b, 0x0b0b, 0xcb7d, 0x0b6d, 0x0b5e, 0xcb4e, + 0x0cc0, 0xccd0, 0xcce3, 0x0cf3, 0xcc85, 0x0c95, 0x0ca6, 0xccb6, + 0xcc49, 0x0c59, 0x0c6a, 0xcc7a, 0x0c0c, 0xcc1c, 0xcc2f, 0x0c3f, + 0xcdd1, 0x0dc1, 0x0df2, 0xcde2, 0x0d94, 0xcd84, 0xcdb7, 0x0da7, + 0x0d58, 0xcd48, 0xcd7b, 0x0d6b, 0xcd1d, 0x0d0d, 0x0d3e, 0xcd2e, + 0xcee1, 0x0ef1, 0x0ec2, 0xced2, 0x0ea4, 0xceb4, 0xce87, 0x0e97, + 0x0e68, 0xce78, 0xce4b, 0x0e5b, 0xce2d, 0x0e3d, 0x0e0e, 0xce1e, + 0x0ff0, 0xcfe0, 0xcfd3, 0x0fc3, 0xcfb5, 0x0fa5, 0x0f96, 0xcf86, + 0xcf79, 0x0f69, 0x0f5a, 0xcf4a, 0x0f3c, 0xcf2c, 0xcf1f, 0x0f0f, + }, + { + 0x0000, 0xccc1, 0xd981, 0x1540, 0xf301, 0x3fc0, 0x2a80, 0xe641, + 0xa601, 0x6ac0, 0x7f80, 0xb341, 0x5500, 0x99c1, 0x8c81, 0x4040, + 0x0c01, 0xc0c0, 0xd580, 0x1941, 0xff00, 0x33c1, 0x2681, 0xea40, + 0xaa00, 0x66c1, 0x7381, 0xbf40, 0x5901, 0x95c0, 0x8080, 0x4c41, + 0x1802, 0xd4c3, 0xc183, 0x0d42, 0xeb03, 0x27c2, 0x3282, 0xfe43, + 0xbe03, 0x72c2, 0x6782, 0xab43, 0x4d02, 0x81c3, 0x9483, 0x5842, + 0x1403, 0xd8c2, 0xcd82, 0x0143, 0xe702, 0x2bc3, 0x3e83, 0xf242, + 0xb202, 0x7ec3, 0x6b83, 0xa742, 0x4103, 0x8dc2, 0x9882, 0x5443, + 0x3004, 0xfcc5, 0xe985, 0x2544, 0xc305, 0x0fc4, 0x1a84, 0xd645, + 0x9605, 0x5ac4, 0x4f84, 0x8345, 0x6504, 0xa9c5, 0xbc85, 0x7044, + 0x3c05, 0xf0c4, 0xe584, 0x2945, 0xcf04, 0x03c5, 0x1685, 0xda44, + 0x9a04, 0x56c5, 0x4385, 0x8f44, 0x6905, 0xa5c4, 0xb084, 0x7c45, + 0x2806, 0xe4c7, 0xf187, 0x3d46, 0xdb07, 0x17c6, 0x0286, 0xce47, + 0x8e07, 0x42c6, 0x5786, 0x9b47, 0x7d06, 0xb1c7, 0xa487, 0x6846, + 0x2407, 0xe8c6, 0xfd86, 0x3147, 0xd706, 0x1bc7, 0x0e87, 0xc246, + 0x8206, 0x4ec7, 0x5b87, 0x9746, 0x7107, 0xbdc6, 0xa886, 0x6447, + 0x6008, 0xacc9, 0xb989, 0x7548, 0x9309, 0x5fc8, 0x4a88, 0x8649, + 0xc609, 0x0ac8, 0x1f88, 0xd349, 0x3508, 0xf9c9, 0xec89, 0x2048, + 0x6c09, 0xa0c8, 0xb588, 0x7949, 0x9f08, 0x53c9, 0x4689, 0x8a48, + 0xca08, 0x06c9, 0x1389, 0xdf48, 0x3909, 0xf5c8, 0xe088, 0x2c49, + 0x780a, 0xb4cb, 0xa18b, 0x6d4a, 0x8b0b, 0x47ca, 0x528a, 0x9e4b, + 0xde0b, 0x12ca, 0x078a, 0xcb4b, 0x2d0a, 0xe1cb, 0xf48b, 0x384a, + 0x740b, 0xb8ca, 0xad8a, 0x614b, 0x870a, 0x4bcb, 0x5e8b, 0x924a, + 0xd20a, 0x1ecb, 0x0b8b, 0xc74a, 0x210b, 0xedca, 0xf88a, 0x344b, + 0x500c, 0x9ccd, 0x898d, 0x454c, 0xa30d, 0x6fcc, 0x7a8c, 0xb64d, + 0xf60d, 0x3acc, 0x2f8c, 0xe34d, 0x050c, 0xc9cd, 0xdc8d, 0x104c, + 0x5c0d, 0x90cc, 0x858c, 0x494d, 0xaf0c, 0x63cd, 0x768d, 0xba4c, + 0xfa0c, 0x36cd, 0x238d, 0xef4c, 0x090d, 0xc5cc, 0xd08c, 0x1c4d, + 0x480e, 0x84cf, 0x918f, 0x5d4e, 0xbb0f, 0x77ce, 0x628e, 0xae4f, + 0xee0f, 0x22ce, 0x378e, 0xfb4f, 0x1d0e, 0xd1cf, 0xc48f, 0x084e, + 0x440f, 0x88ce, 0x9d8e, 0x514f, 0xb70e, 0x7bcf, 0x6e8f, 0xa24e, + 0xe20e, 0x2ecf, 0x3b8f, 0xf74e, 0x110f, 0xddce, 0xc88e, 0x044f, + }, + { + 0x0000, 0x900d, 0x6019, 0xf014, 0xc032, 0x503f, 0xa02b, 0x3026, + 0xc067, 0x506a, 0xa07e, 0x3073, 0x0055, 0x9058, 0x604c, 0xf041, + 0xc0cd, 0x50c0, 0xa0d4, 0x30d9, 0x00ff, 0x90f2, 0x60e6, 0xf0eb, + 0x00aa, 0x90a7, 0x60b3, 0xf0be, 0xc098, 0x5095, 0xa081, 0x308c, + 0xc199, 0x5194, 0xa180, 0x318d, 0x01ab, 0x91a6, 0x61b2, 0xf1bf, + 0x01fe, 0x91f3, 0x61e7, 0xf1ea, 0xc1cc, 0x51c1, 0xa1d5, 0x31d8, + 0x0154, 0x9159, 0x614d, 0xf140, 0xc166, 0x516b, 0xa17f, 0x3172, + 0xc133, 0x513e, 0xa12a, 0x3127, 0x0101, 0x910c, 0x6118, 0xf115, + 0xc331, 0x533c, 0xa328, 0x3325, 0x0303, 0x930e, 0x631a, 0xf317, + 0x0356, 0x935b, 0x634f, 0xf342, 0xc364, 0x5369, 0xa37d, 0x3370, + 0x03fc, 0x93f1, 0x63e5, 0xf3e8, 0xc3ce, 0x53c3, 0xa3d7, 0x33da, + 0xc39b, 0x5396, 0xa382, 0x338f, 0x03a9, 0x93a4, 0x63b0, 0xf3bd, + 0x02a8, 0x92a5, 0x62b1, 0xf2bc, 0xc29a, 0x5297, 0xa283, 0x328e, + 0xc2cf, 0x52c2, 0xa2d6, 0x32db, 0x02fd, 0x92f0, 0x62e4, 0xf2e9, + 0xc265, 0x5268, 0xa27c, 0x3271, 0x0257, 0x925a, 0x624e, 0xf243, + 0x0202, 0x920f, 0x621b, 0xf216, 0xc230, 0x523d, 0xa229, 0x3224, + 0xc661, 0x566c, 0xa678, 0x3675, 0x0653, 0x965e, 0x664a, 0xf647, + 0x0606, 0x960b, 0x661f, 0xf612, 0xc634, 0x5639, 0xa62d, 0x3620, + 0x06ac, 0x96a1, 0x66b5, 0xf6b8, 0xc69e, 0x5693, 0xa687, 0x368a, + 0xc6cb, 0x56c6, 0xa6d2, 0x36df, 0x06f9, 0x96f4, 0x66e0, 0xf6ed, + 0x07f8, 0x97f5, 0x67e1, 0xf7ec, 0xc7ca, 0x57c7, 0xa7d3, 0x37de, + 0xc79f, 0x5792, 0xa786, 0x378b, 0x07ad, 0x97a0, 0x67b4, 0xf7b9, + 0xc735, 0x5738, 0xa72c, 0x3721, 0x0707, 0x970a, 0x671e, 0xf713, + 0x0752, 0x975f, 0x674b, 0xf746, 0xc760, 0x576d, 0xa779, 0x3774, + 0x0550, 0x955d, 0x6549, 0xf544, 0xc562, 0x556f, 0xa57b, 0x3576, + 0xc537, 0x553a, 0xa52e, 0x3523, 0x0505, 0x9508, 0x651c, 0xf511, + 0xc59d, 0x5590, 0xa584, 0x3589, 0x05af, 0x95a2, 0x65b6, 0xf5bb, + 0x05fa, 0x95f7, 0x65e3, 0xf5ee, 0xc5c8, 0x55c5, 0xa5d1, 0x35dc, + 0xc4c9, 0x54c4, 0xa4d0, 0x34dd, 0x04fb, 0x94f6, 0x64e2, 0xf4ef, + 0x04ae, 0x94a3, 0x64b7, 0xf4ba, 0xc49c, 0x5491, 0xa485, 0x3488, + 0x0404, 0x9409, 0x641d, 0xf410, 0xc436, 0x543b, 0xa42f, 0x3422, + 0xc463, 0x546e, 0xa47a, 0x3477, 0x0451, 0x945c, 0x6448, 0xf445, + }, + { + 0x0000, 0xc551, 0xcaa1, 0x0ff0, 0xd541, 0x1010, 0x1fe0, 0xdab1, + 0xea81, 0x2fd0, 0x2020, 0xe571, 0x3fc0, 0xfa91, 0xf561, 0x3030, + 0x9501, 0x5050, 0x5fa0, 0x9af1, 0x4040, 0x8511, 0x8ae1, 0x4fb0, + 0x7f80, 0xbad1, 0xb521, 0x7070, 0xaac1, 0x6f90, 0x6060, 0xa531, + 0x6a01, 0xaf50, 0xa0a0, 0x65f1, 0xbf40, 0x7a11, 0x75e1, 0xb0b0, + 0x8080, 0x45d1, 0x4a21, 0x8f70, 0x55c1, 0x9090, 0x9f60, 0x5a31, + 0xff00, 0x3a51, 0x35a1, 0xf0f0, 0x2a41, 0xef10, 0xe0e0, 0x25b1, + 0x1581, 0xd0d0, 0xdf20, 0x1a71, 0xc0c0, 0x0591, 0x0a61, 0xcf30, + 0xd402, 0x1153, 0x1ea3, 0xdbf2, 0x0143, 0xc412, 0xcbe2, 0x0eb3, + 0x3e83, 0xfbd2, 0xf422, 0x3173, 0xebc2, 0x2e93, 0x2163, 0xe432, + 0x4103, 0x8452, 0x8ba2, 0x4ef3, 0x9442, 0x5113, 0x5ee3, 0x9bb2, + 0xab82, 0x6ed3, 0x6123, 0xa472, 0x7ec3, 0xbb92, 0xb462, 0x7133, + 0xbe03, 0x7b52, 0x74a2, 0xb1f3, 0x6b42, 0xae13, 0xa1e3, 0x64b2, + 0x5482, 0x91d3, 0x9e23, 0x5b72, 0x81c3, 0x4492, 0x4b62, 0x8e33, + 0x2b02, 0xee53, 0xe1a3, 0x24f2, 0xfe43, 0x3b12, 0x34e2, 0xf1b3, + 0xc183, 0x04d2, 0x0b22, 0xce73, 0x14c2, 0xd193, 0xde63, 0x1b32, + 0xe807, 0x2d56, 0x22a6, 0xe7f7, 0x3d46, 0xf817, 0xf7e7, 0x32b6, + 0x0286, 0xc7d7, 0xc827, 0x0d76, 0xd7c7, 0x1296, 0x1d66, 0xd837, + 0x7d06, 0xb857, 0xb7a7, 0x72f6, 0xa847, 0x6d16, 0x62e6, 0xa7b7, + 0x9787, 0x52d6, 0x5d26, 0x9877, 0x42c6, 0x8797, 0x8867, 0x4d36, + 0x8206, 0x4757, 0x48a7, 0x8df6, 0x5747, 0x9216, 0x9de6, 0x58b7, + 0x6887, 0xadd6, 0xa226, 0x6777, 0xbdc6, 0x7897, 0x7767, 0xb236, + 0x1707, 0xd256, 0xdda6, 0x18f7, 0xc246, 0x0717, 0x08e7, 0xcdb6, + 0xfd86, 0x38d7, 0x3727, 0xf276, 0x28c7, 0xed96, 0xe266, 0x2737, + 0x3c05, 0xf954, 0xf6a4, 0x33f5, 0xe944, 0x2c15, 0x23e5, 0xe6b4, + 0xd684, 0x13d5, 0x1c25, 0xd974, 0x03c5, 0xc694, 0xc964, 0x0c35, + 0xa904, 0x6c55, 0x63a5, 0xa6f4, 0x7c45, 0xb914, 0xb6e4, 0x73b5, + 0x4385, 0x86d4, 0x8924, 0x4c75, 0x96c4, 0x5395, 0x5c65, 0x9934, + 0x5604, 0x9355, 0x9ca5, 0x59f4, 0x8345, 0x4614, 0x49e4, 0x8cb5, + 0xbc85, 0x79d4, 0x7624, 0xb375, 0x69c4, 0xac95, 0xa365, 0x6634, + 0xc305, 0x0654, 0x09a4, 0xccf5, 0x1644, 0xd315, 0xdce5, 0x19b4, + 0x2984, 0xecd5, 0xe325, 0x2674, 0xfcc5, 0x3994, 0x3664, 0xf335, + }, + { + 0x0000, 0xfc04, 0xb80b, 0x440f, 0x3015, 0xcc11, 0x881e, 0x741a, + 0x602a, 0x9c2e, 0xd821, 0x2425, 0x503f, 0xac3b, 0xe834, 0x1430, + 0xc054, 0x3c50, 0x785f, 0x845b, 0xf041, 0x0c45, 0x484a, 0xb44e, + 0xa07e, 0x5c7a, 0x1875, 0xe471, 0x906b, 0x6c6f, 0x2860, 0xd464, + 0xc0ab, 0x3caf, 0x78a0, 0x84a4, 0xf0be, 0x0cba, 0x48b5, 0xb4b1, + 0xa081, 0x5c85, 0x188a, 0xe48e, 0x9094, 0x6c90, 0x289f, 0xd49b, + 0x00ff, 0xfcfb, 0xb8f4, 0x44f0, 0x30ea, 0xccee, 0x88e1, 0x74e5, + 0x60d5, 0x9cd1, 0xd8de, 0x24da, 0x50c0, 0xacc4, 0xe8cb, 0x14cf, + 0xc155, 0x3d51, 0x795e, 0x855a, 0xf140, 0x0d44, 0x494b, 0xb54f, + 0xa17f, 0x5d7b, 0x1974, 0xe570, 0x916a, 0x6d6e, 0x2961, 0xd565, + 0x0101, 0xfd05, 0xb90a, 0x450e, 0x3114, 0xcd10, 0x891f, 0x751b, + 0x612b, 0x9d2f, 0xd920, 0x2524, 0x513e, 0xad3a, 0xe935, 0x1531, + 0x01fe, 0xfdfa, 0xb9f5, 0x45f1, 0x31eb, 0xcdef, 0x89e0, 0x75e4, + 0x61d4, 0x9dd0, 0xd9df, 0x25db, 0x51c1, 0xadc5, 0xe9ca, 0x15ce, + 0xc1aa, 0x3dae, 0x79a1, 0x85a5, 0xf1bf, 0x0dbb, 0x49b4, 0xb5b0, + 0xa180, 0x5d84, 0x198b, 0xe58f, 0x9195, 0x6d91, 0x299e, 0xd59a, + 0xc2a9, 0x3ead, 0x7aa2, 0x86a6, 0xf2bc, 0x0eb8, 0x4ab7, 0xb6b3, + 0xa283, 0x5e87, 0x1a88, 0xe68c, 0x9296, 0x6e92, 0x2a9d, 0xd699, + 0x02fd, 0xfef9, 0xbaf6, 0x46f2, 0x32e8, 0xceec, 0x8ae3, 0x76e7, + 0x62d7, 0x9ed3, 0xdadc, 0x26d8, 0x52c2, 0xaec6, 0xeac9, 0x16cd, + 0x0202, 0xfe06, 0xba09, 0x460d, 0x3217, 0xce13, 0x8a1c, 0x7618, + 0x6228, 0x9e2c, 0xda23, 0x2627, 0x523d, 0xae39, 0xea36, 0x1632, + 0xc256, 0x3e52, 0x7a5d, 0x8659, 0xf243, 0x0e47, 0x4a48, 0xb64c, + 0xa27c, 0x5e78, 0x1a77, 0xe673, 0x9269, 0x6e6d, 0x2a62, 0xd666, + 0x03fc, 0xfff8, 0xbbf7, 0x47f3, 0x33e9, 0xcfed, 0x8be2, 0x77e6, + 0x63d6, 0x9fd2, 0xdbdd, 0x27d9, 0x53c3, 0xafc7, 0xebc8, 0x17cc, + 0xc3a8, 0x3fac, 0x7ba3, 0x87a7, 0xf3bd, 0x0fb9, 0x4bb6, 0xb7b2, + 0xa382, 0x5f86, 0x1b89, 0xe78d, 0x9397, 0x6f93, 0x2b9c, 0xd798, + 0xc357, 0x3f53, 0x7b5c, 0x8758, 0xf342, 0x0f46, 0x4b49, 0xb74d, + 0xa37d, 0x5f79, 0x1b76, 0xe772, 0x9368, 0x6f6c, 0x2b63, 0xd767, + 0x0303, 0xff07, 0xbb08, 0x470c, 0x3316, 0xcf12, 0x8b1d, 0x7719, + 0x6329, 0x9f2d, 0xdb22, 0x2726, 0x533c, 0xaf38, 0xeb37, 0x1733, + }, + { + 0x0000, 0xc3fd, 0xc7f9, 0x0404, 0xcff1, 0x0c0c, 0x0808, 0xcbf5, + 0xdfe1, 0x1c1c, 0x1818, 0xdbe5, 0x1010, 0xd3ed, 0xd7e9, 0x1414, + 0xffc1, 0x3c3c, 0x3838, 0xfbc5, 0x3030, 0xf3cd, 0xf7c9, 0x3434, + 0x2020, 0xe3dd, 0xe7d9, 0x2424, 0xefd1, 0x2c2c, 0x2828, 0xebd5, + 0xbf81, 0x7c7c, 0x7878, 0xbb85, 0x7070, 0xb38d, 0xb789, 0x7474, + 0x6060, 0xa39d, 0xa799, 0x6464, 0xaf91, 0x6c6c, 0x6868, 0xab95, + 0x4040, 0x83bd, 0x87b9, 0x4444, 0x8fb1, 0x4c4c, 0x4848, 0x8bb5, + 0x9fa1, 0x5c5c, 0x5858, 0x9ba5, 0x5050, 0x93ad, 0x97a9, 0x5454, + 0x3f01, 0xfcfc, 0xf8f8, 0x3b05, 0xf0f0, 0x330d, 0x3709, 0xf4f4, + 0xe0e0, 0x231d, 0x2719, 0xe4e4, 0x2f11, 0xecec, 0xe8e8, 0x2b15, + 0xc0c0, 0x033d, 0x0739, 0xc4c4, 0x0f31, 0xcccc, 0xc8c8, 0x0b35, + 0x1f21, 0xdcdc, 0xd8d8, 0x1b25, 0xd0d0, 0x132d, 0x1729, 0xd4d4, + 0x8080, 0x437d, 0x4779, 0x8484, 0x4f71, 0x8c8c, 0x8888, 0x4b75, + 0x5f61, 0x9c9c, 0x9898, 0x5b65, 0x9090, 0x536d, 0x5769, 0x9494, + 0x7f41, 0xbcbc, 0xb8b8, 0x7b45, 0xb0b0, 0x734d, 0x7749, 0xb4b4, + 0xa0a0, 0x635d, 0x6759, 0xa4a4, 0x6f51, 0xacac, 0xa8a8, 0x6b55, + 0x7e02, 0xbdff, 0xb9fb, 0x7a06, 0xb1f3, 0x720e, 0x760a, 0xb5f7, + 0xa1e3, 0x621e, 0x661a, 0xa5e7, 0x6e12, 0xadef, 0xa9eb, 0x6a16, + 0x81c3, 0x423e, 0x463a, 0x85c7, 0x4e32, 0x8dcf, 0x89cb, 0x4a36, + 0x5e22, 0x9ddf, 0x99db, 0x5a26, 0x91d3, 0x522e, 0x562a, 0x95d7, + 0xc183, 0x027e, 0x067a, 0xc587, 0x0e72, 0xcd8f, 0xc98b, 0x0a76, + 0x1e62, 0xdd9f, 0xd99b, 0x1a66, 0xd193, 0x126e, 0x166a, 0xd597, + 0x3e42, 0xfdbf, 0xf9bb, 0x3a46, 0xf1b3, 0x324e, 0x364a, 0xf5b7, + 0xe1a3, 0x225e, 0x265a, 0xe5a7, 0x2e52, 0xedaf, 0xe9ab, 0x2a56, + 0x4103, 0x82fe, 0x86fa, 0x4507, 0x8ef2, 0x4d0f, 0x490b, 0x8af6, + 0x9ee2, 0x5d1f, 0x591b, 0x9ae6, 0x5113, 0x92ee, 0x96ea, 0x5517, + 0xbec2, 0x7d3f, 0x793b, 0xbac6, 0x7133, 0xb2ce, 0xb6ca, 0x7537, + 0x6123, 0xa2de, 0xa6da, 0x6527, 0xaed2, 0x6d2f, 0x692b, 0xaad6, + 0xfe82, 0x3d7f, 0x397b, 0xfa86, 0x3173, 0xf28e, 0xf68a, 0x3577, + 0x2163, 0xe29e, 0xe69a, 0x2567, 0xee92, 0x2d6f, 0x296b, 0xea96, + 0x0143, 0xc2be, 0xc6ba, 0x0547, 0xceb2, 0x0d4f, 0x094b, 0xcab6, + 0xdea2, 0x1d5f, 0x195b, 0xdaa6, 0x1153, 0xd2ae, 0xd6aa, 0x1557, + }, + { + 0x0000, 0x8102, 0x4207, 0xc305, 0x840e, 0x050c, 0xc609, 0x470b, + 0x481f, 0xc91d, 0x0a18, 0x8b1a, 0xcc11, 0x4d13, 0x8e16, 0x0f14, + 0x903e, 0x113c, 0xd239, 0x533b, 0x1430, 0x9532, 0x5637, 0xd735, + 0xd821, 0x5923, 0x9a26, 0x1b24, 0x5c2f, 0xdd2d, 0x1e28, 0x9f2a, + 0x607f, 0xe17d, 0x2278, 0xa37a, 0xe471, 0x6573, 0xa676, 0x2774, + 0x2860, 0xa962, 0x6a67, 0xeb65, 0xac6e, 0x2d6c, 0xee69, 0x6f6b, + 0xf041, 0x7143, 0xb246, 0x3344, 0x744f, 0xf54d, 0x3648, 0xb74a, + 0xb85e, 0x395c, 0xfa59, 0x7b5b, 0x3c50, 0xbd52, 0x7e57, 0xff55, + 0xc0fe, 0x41fc, 0x82f9, 0x03fb, 0x44f0, 0xc5f2, 0x06f7, 0x87f5, + 0x88e1, 0x09e3, 0xcae6, 0x4be4, 0x0cef, 0x8ded, 0x4ee8, 0xcfea, + 0x50c0, 0xd1c2, 0x12c7, 0x93c5, 0xd4ce, 0x55cc, 0x96c9, 0x17cb, + 0x18df, 0x99dd, 0x5ad8, 0xdbda, 0x9cd1, 0x1dd3, 0xded6, 0x5fd4, + 0xa081, 0x2183, 0xe286, 0x6384, 0x248f, 0xa58d, 0x6688, 0xe78a, + 0xe89e, 0x699c, 0xaa99, 0x2b9b, 0x6c90, 0xed92, 0x2e97, 0xaf95, + 0x30bf, 0xb1bd, 0x72b8, 0xf3ba, 0xb4b1, 0x35b3, 0xf6b6, 0x77b4, + 0x78a0, 0xf9a2, 0x3aa7, 0xbba5, 0xfcae, 0x7dac, 0xbea9, 0x3fab, + 0xc1ff, 0x40fd, 0x83f8, 0x02fa, 0x45f1, 0xc4f3, 0x07f6, 0x86f4, + 0x89e0, 0x08e2, 0xcbe7, 0x4ae5, 0x0dee, 0x8cec, 0x4fe9, 0xceeb, + 0x51c1, 0xd0c3, 0x13c6, 0x92c4, 0xd5cf, 0x54cd, 0x97c8, 0x16ca, + 0x19de, 0x98dc, 0x5bd9, 0xdadb, 0x9dd0, 0x1cd2, 0xdfd7, 0x5ed5, + 0xa180, 0x2082, 0xe387, 0x6285, 0x258e, 0xa48c, 0x6789, 0xe68b, + 0xe99f, 0x689d, 0xab98, 0x2a9a, 0x6d91, 0xec93, 0x2f96, 0xae94, + 0x31be, 0xb0bc, 0x73b9, 0xf2bb, 0xb5b0, 0x34b2, 0xf7b7, 0x76b5, + 0x79a1, 0xf8a3, 0x3ba6, 0xbaa4, 0xfdaf, 0x7cad, 0xbfa8, 0x3eaa, + 0x0101, 0x8003, 0x4306, 0xc204, 0x850f, 0x040d, 0xc708, 0x460a, + 0x491e, 0xc81c, 0x0b19, 0x8a1b, 0xcd10, 0x4c12, 0x8f17, 0x0e15, + 0x913f, 0x103d, 0xd338, 0x523a, 0x1531, 0x9433, 0x5736, 0xd634, + 0xd920, 0x5822, 0x9b27, 0x1a25, 0x5d2e, 0xdc2c, 0x1f29, 0x9e2b, + 0x617e, 0xe07c, 0x2379, 0xa27b, 0xe570, 0x6472, 0xa777, 0x2675, + 0x2961, 0xa863, 0x6b66, 0xea64, 0xad6f, 0x2c6d, 0xef68, 0x6e6a, + 0xf140, 0x7042, 0xb347, 0x3245, 0x754e, 0xf44c, 0x3749, 0xb64b, + 0xb95f, 0x385d, 0xfb58, 0x7a5a, 0x3d51, 0xbc53, 0x7f56, 0xfe54, + }, + { + 0x0000, 0xc100, 0xc203, 0x0303, 0xc405, 0x0505, 0x0606, 0xc706, + 0xc809, 0x0909, 0x0a0a, 0xcb0a, 0x0c0c, 0xcd0c, 0xce0f, 0x0f0f, + 0xd011, 0x1111, 0x1212, 0xd312, 0x1414, 0xd514, 0xd617, 0x1717, + 0x1818, 0xd918, 0xda1b, 0x1b1b, 0xdc1d, 0x1d1d, 0x1e1e, 0xdf1e, + 0xe021, 0x2121, 0x2222, 0xe322, 0x2424, 0xe524, 0xe627, 0x2727, + 0x2828, 0xe928, 0xea2b, 0x2b2b, 0xec2d, 0x2d2d, 0x2e2e, 0xef2e, + 0x3030, 0xf130, 0xf233, 0x3333, 0xf435, 0x3535, 0x3636, 0xf736, + 0xf839, 0x3939, 0x3a3a, 0xfb3a, 0x3c3c, 0xfd3c, 0xfe3f, 0x3f3f, + 0x8041, 0x4141, 0x4242, 0x8342, 0x4444, 0x8544, 0x8647, 0x4747, + 0x4848, 0x8948, 0x8a4b, 0x4b4b, 0x8c4d, 0x4d4d, 0x4e4e, 0x8f4e, + 0x5050, 0x9150, 0x9253, 0x5353, 0x9455, 0x5555, 0x5656, 0x9756, + 0x9859, 0x5959, 0x5a5a, 0x9b5a, 0x5c5c, 0x9d5c, 0x9e5f, 0x5f5f, + 0x6060, 0xa160, 0xa263, 0x6363, 0xa465, 0x6565, 0x6666, 0xa766, + 0xa869, 0x6969, 0x6a6a, 0xab6a, 0x6c6c, 0xad6c, 0xae6f, 0x6f6f, + 0xb071, 0x7171, 0x7272, 0xb372, 0x7474, 0xb574, 0xb677, 0x7777, + 0x7878, 0xb978, 0xba7b, 0x7b7b, 0xbc7d, 0x7d7d, 0x7e7e, 0xbf7e, + 0x4081, 0x8181, 0x8282, 0x4382, 0x8484, 0x4584, 0x4687, 0x8787, + 0x8888, 0x4988, 0x4a8b, 0x8b8b, 0x4c8d, 0x8d8d, 0x8e8e, 0x4f8e, + 0x9090, 0x5190, 0x5293, 0x9393, 0x5495, 0x9595, 0x9696, 0x5796, + 0x5899, 0x9999, 0x9a9a, 0x5b9a, 0x9c9c, 0x5d9c, 0x5e9f, 0x9f9f, + 0xa0a0, 0x61a0, 0x62a3, 0xa3a3, 0x64a5, 0xa5a5, 0xa6a6, 0x67a6, + 0x68a9, 0xa9a9, 0xaaaa, 0x6baa, 0xacac, 0x6dac, 0x6eaf, 0xafaf, + 0x70b1, 0xb1b1, 0xb2b2, 0x73b2, 0xb4b4, 0x75b4, 0x76b7, 0xb7b7, + 0xb8b8, 0x79b8, 0x7abb, 0xbbbb, 0x7cbd, 0xbdbd, 0xbebe, 0x7fbe, + 0xc0c0, 0x01c0, 0x02c3, 0xc3c3, 0x04c5, 0xc5c5, 0xc6c6, 0x07c6, + 0x08c9, 0xc9c9, 0xcaca, 0x0bca, 0xcccc, 0x0dcc, 0x0ecf, 0xcfcf, + 0x10d1, 0xd1d1, 0xd2d2, 0x13d2, 0xd4d4, 0x15d4, 0x16d7, 0xd7d7, + 0xd8d8, 0x19d8, 0x1adb, 0xdbdb, 0x1cdd, 0xdddd, 0xdede, 0x1fde, + 0x20e1, 0xe1e1, 0xe2e2, 0x23e2, 0xe4e4, 0x25e4, 0x26e7, 0xe7e7, + 0xe8e8, 0x29e8, 0x2aeb, 0xebeb, 0x2ced, 0xeded, 0xeeee, 0x2fee, + 0xf0f0, 0x31f0, 0x32f3, 0xf3f3, 0x34f5, 0xf5f5, 0xf6f6, 0x37f6, + 0x38f9, 0xf9f9, 0xfafa, 0x3bfa, 0xfcfc, 0x3dfc, 0x3eff, 0xffff, + }, + { + 0x0000, 0x00c1, 0x0182, 0x0143, 0x0304, 0x03c5, 0x0286, 0x0247, + 0x0608, 0x06c9, 0x078a, 0x074b, 0x050c, 0x05cd, 0x048e, 0x044f, + 0x0c10, 0x0cd1, 0x0d92, 0x0d53, 0x0f14, 0x0fd5, 0x0e96, 0x0e57, + 0x0a18, 0x0ad9, 0x0b9a, 0x0b5b, 0x091c, 0x09dd, 0x089e, 0x085f, + 0x1820, 0x18e1, 0x19a2, 0x1963, 0x1b24, 0x1be5, 0x1aa6, 0x1a67, + 0x1e28, 0x1ee9, 0x1faa, 0x1f6b, 0x1d2c, 0x1ded, 0x1cae, 0x1c6f, + 0x1430, 0x14f1, 0x15b2, 0x1573, 0x1734, 0x17f5, 0x16b6, 0x1677, + 0x1238, 0x12f9, 0x13ba, 0x137b, 0x113c, 0x11fd, 0x10be, 0x107f, + 0x3040, 0x3081, 0x31c2, 0x3103, 0x3344, 0x3385, 0x32c6, 0x3207, + 0x3648, 0x3689, 0x37ca, 0x370b, 0x354c, 0x358d, 0x34ce, 0x340f, + 0x3c50, 0x3c91, 0x3dd2, 0x3d13, 0x3f54, 0x3f95, 0x3ed6, 0x3e17, + 0x3a58, 0x3a99, 0x3bda, 0x3b1b, 0x395c, 0x399d, 0x38de, 0x381f, + 0x2860, 0x28a1, 0x29e2, 0x2923, 0x2b64, 0x2ba5, 0x2ae6, 0x2a27, + 0x2e68, 0x2ea9, 0x2fea, 0x2f2b, 0x2d6c, 0x2dad, 0x2cee, 0x2c2f, + 0x2470, 0x24b1, 0x25f2, 0x2533, 0x2774, 0x27b5, 0x26f6, 0x2637, + 0x2278, 0x22b9, 0x23fa, 0x233b, 0x217c, 0x21bd, 0x20fe, 0x203f, + 0x6080, 0x6041, 0x6102, 0x61c3, 0x6384, 0x6345, 0x6206, 0x62c7, + 0x6688, 0x6649, 0x670a, 0x67cb, 0x658c, 0x654d, 0x640e, 0x64cf, + 0x6c90, 0x6c51, 0x6d12, 0x6dd3, 0x6f94, 0x6f55, 0x6e16, 0x6ed7, + 0x6a98, 0x6a59, 0x6b1a, 0x6bdb, 0x699c, 0x695d, 0x681e, 0x68df, + 0x78a0, 0x7861, 0x7922, 0x79e3, 0x7ba4, 0x7b65, 0x7a26, 0x7ae7, + 0x7ea8, 0x7e69, 0x7f2a, 0x7feb, 0x7dac, 0x7d6d, 0x7c2e, 0x7cef, + 0x74b0, 0x7471, 0x7532, 0x75f3, 0x77b4, 0x7775, 0x7636, 0x76f7, + 0x72b8, 0x7279, 0x733a, 0x73fb, 0x71bc, 0x717d, 0x703e, 0x70ff, + 0x50c0, 0x5001, 0x5142, 0x5183, 0x53c4, 0x5305, 0x5246, 0x5287, + 0x56c8, 0x5609, 0x574a, 0x578b, 0x55cc, 0x550d, 0x544e, 0x548f, + 0x5cd0, 0x5c11, 0x5d52, 0x5d93, 0x5fd4, 0x5f15, 0x5e56, 0x5e97, + 0x5ad8, 0x5a19, 0x5b5a, 0x5b9b, 0x59dc, 0x591d, 0x585e, 0x589f, + 0x48e0, 0x4821, 0x4962, 0x49a3, 0x4be4, 0x4b25, 0x4a66, 0x4aa7, + 0x4ee8, 0x4e29, 0x4f6a, 0x4fab, 0x4dec, 0x4d2d, 0x4c6e, 0x4caf, + 0x44f0, 0x4431, 0x4572, 0x45b3, 0x47f4, 0x4735, 0x4676, 0x46b7, + 0x42f8, 0x4239, 0x437a, 0x43bb, 0x41fc, 0x413d, 0x407e, 0x40bf, + }, + { + 0x0000, 0x90c1, 0x6181, 0xf140, 0xc302, 0x53c3, 0xa283, 0x3242, + 0xc607, 0x56c6, 0xa786, 0x3747, 0x0505, 0x95c4, 0x6484, 0xf445, + 0xcc0d, 0x5ccc, 0xad8c, 0x3d4d, 0x0f0f, 0x9fce, 0x6e8e, 0xfe4f, + 0x0a0a, 0x9acb, 0x6b8b, 0xfb4a, 0xc908, 0x59c9, 0xa889, 0x3848, + 0xd819, 0x48d8, 0xb998, 0x2959, 0x1b1b, 0x8bda, 0x7a9a, 0xea5b, + 0x1e1e, 0x8edf, 0x7f9f, 0xef5e, 0xdd1c, 0x4ddd, 0xbc9d, 0x2c5c, + 0x1414, 0x84d5, 0x7595, 0xe554, 0xd716, 0x47d7, 0xb697, 0x2656, + 0xd213, 0x42d2, 0xb392, 0x2353, 0x1111, 0x81d0, 0x7090, 0xe051, + 0xf031, 0x60f0, 0x91b0, 0x0171, 0x3333, 0xa3f2, 0x52b2, 0xc273, + 0x3636, 0xa6f7, 0x57b7, 0xc776, 0xf534, 0x65f5, 0x94b5, 0x0474, + 0x3c3c, 0xacfd, 0x5dbd, 0xcd7c, 0xff3e, 0x6fff, 0x9ebf, 0x0e7e, + 0xfa3b, 0x6afa, 0x9bba, 0x0b7b, 0x3939, 0xa9f8, 0x58b8, 0xc879, + 0x2828, 0xb8e9, 0x49a9, 0xd968, 0xeb2a, 0x7beb, 0x8aab, 0x1a6a, + 0xee2f, 0x7eee, 0x8fae, 0x1f6f, 0x2d2d, 0xbdec, 0x4cac, 0xdc6d, + 0xe425, 0x74e4, 0x85a4, 0x1565, 0x2727, 0xb7e6, 0x46a6, 0xd667, + 0x2222, 0xb2e3, 0x43a3, 0xd362, 0xe120, 0x71e1, 0x80a1, 0x1060, + 0xa061, 0x30a0, 0xc1e0, 0x5121, 0x6363, 0xf3a2, 0x02e2, 0x9223, + 0x6666, 0xf6a7, 0x07e7, 0x9726, 0xa564, 0x35a5, 0xc4e5, 0x5424, + 0x6c6c, 0xfcad, 0x0ded, 0x9d2c, 0xaf6e, 0x3faf, 0xceef, 0x5e2e, + 0xaa6b, 0x3aaa, 0xcbea, 0x5b2b, 0x6969, 0xf9a8, 0x08e8, 0x9829, + 0x7878, 0xe8b9, 0x19f9, 0x8938, 0xbb7a, 0x2bbb, 0xdafb, 0x4a3a, + 0xbe7f, 0x2ebe, 0xdffe, 0x4f3f, 0x7d7d, 0xedbc, 0x1cfc, 0x8c3d, + 0xb475, 0x24b4, 0xd5f4, 0x4535, 0x7777, 0xe7b6, 0x16f6, 0x8637, + 0x7272, 0xe2b3, 0x13f3, 0x8332, 0xb170, 0x21b1, 0xd0f1, 0x4030, + 0x5050, 0xc091, 0x31d1, 0xa110, 0x9352, 0x0393, 0xf2d3, 0x6212, + 0x9657, 0x0696, 0xf7d6, 0x6717, 0x5555, 0xc594, 0x34d4, 0xa415, + 0x9c5d, 0x0c9c, 0xfddc, 0x6d1d, 0x5f5f, 0xcf9e, 0x3ede, 0xae1f, + 0x5a5a, 0xca9b, 0x3bdb, 0xab1a, 0x9958, 0x0999, 0xf8d9, 0x6818, + 0x8849, 0x1888, 0xe9c8, 0x7909, 0x4b4b, 0xdb8a, 0x2aca, 0xba0b, + 0x4e4e, 0xde8f, 0x2fcf, 0xbf0e, 0x8d4c, 0x1d8d, 0xeccd, 0x7c0c, + 0x4444, 0xd485, 0x25c5, 0xb504, 0x8746, 0x1787, 0xe6c7, 0x7606, + 0x8243, 0x1282, 0xe3c2, 0x7303, 0x4141, 0xd180, 0x20c0, 0xb001, + }, +}; diff --git a/ext/digest/crc16_ccitt/crc16_ccitt.c b/ext/digest/crc16_ccitt/crc16_ccitt.c index 3c245cc..747d745 100644 --- a/ext/digest/crc16_ccitt/crc16_ccitt.c +++ b/ext/digest/crc16_ccitt/crc16_ccitt.c @@ -15,54 +15,39 @@ */ #include "crc16_ccitt.h" - -/** - * Static table used for the table_driven implementation. - */ -static const crc16_t crc16_ccitt_table[256] = { - 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, - 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, - 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, - 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, - 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, - 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, - 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, - 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, - 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, - 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, - 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, - 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, - 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, - 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, - 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, - 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, - 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, - 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, - 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, - 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, - 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, - 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, - 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, - 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, - 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, - 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, - 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, - 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, - 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, - 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, - 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, - 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0 -}; +#include "crc16_ccitt_table.h" crc16_t crc16_ccitt_update(crc16_t crc, const void *data, size_t data_len) { const unsigned char *d = (const unsigned char *)data; unsigned int tbl_idx; + for (; data_len >= SLICE_SIZE; data_len -= SLICE_SIZE) + { + crc = crc16_ccitt_table[15][d[ 0] ^ ((crc >> 8) & 0xff)] ^ + crc16_ccitt_table[14][d[ 1] ^ ((crc >> 0) & 0xff)] ^ + crc16_ccitt_table[13][d[ 2] ] ^ + crc16_ccitt_table[12][d[ 3] ] ^ + crc16_ccitt_table[11][d[ 4] ] ^ + crc16_ccitt_table[10][d[ 5] ] ^ + crc16_ccitt_table[ 9][d[ 6] ] ^ + crc16_ccitt_table[ 8][d[ 7] ] ^ + crc16_ccitt_table[ 7][d[ 8] ] ^ + crc16_ccitt_table[ 6][d[ 9] ] ^ + crc16_ccitt_table[ 5][d[10] ] ^ + crc16_ccitt_table[ 4][d[11] ] ^ + crc16_ccitt_table[ 3][d[12] ] ^ + crc16_ccitt_table[ 2][d[13] ] ^ + crc16_ccitt_table[ 1][d[14] ] ^ + crc16_ccitt_table[ 0][d[15] ]; + crc &= 0xffff; + d += SLICE_SIZE; + } + while (data_len--) { tbl_idx = ((crc >> 8) ^ *d) & 0xff; - crc = (crc16_ccitt_table[tbl_idx] ^ (crc << 8)) & 0xffff; + crc = (crc16_ccitt_table[0][tbl_idx] ^ (crc << 8)) & 0xffff; d++; } diff --git a/ext/digest/crc16_ccitt/crc16_ccitt_table.h b/ext/digest/crc16_ccitt/crc16_ccitt_table.h new file mode 100644 index 0000000..67ab380 --- /dev/null +++ b/ext/digest/crc16_ccitt/crc16_ccitt_table.h @@ -0,0 +1,558 @@ +/* + * bitwidth: 16 + * generator polynomial: 0x1021 + * input bit direction: NORMAL + * slice bytes per iteration: 16 + * slide bits per table: 8 + * + * Generated by: gentable.rb of digest-crc + */ + +#define SLICE_SIZE 16 + +static const uint16_t crc16_ccitt_table[SLICE_SIZE][256] = { + { + 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, + 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, + 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, + 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, + 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, + 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, + 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, + 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, + 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, + 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, + 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, + 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, + 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, + 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, + 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, + 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, + 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, + 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, + 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, + 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, + 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, + 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, + 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, + 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, + 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, + 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, + 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, + 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, + 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, + 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, + 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, + 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0, + }, + { + 0x0000, 0x3331, 0x6662, 0x5553, 0xccc4, 0xfff5, 0xaaa6, 0x9997, + 0x89a9, 0xba98, 0xefcb, 0xdcfa, 0x456d, 0x765c, 0x230f, 0x103e, + 0x0373, 0x3042, 0x6511, 0x5620, 0xcfb7, 0xfc86, 0xa9d5, 0x9ae4, + 0x8ada, 0xb9eb, 0xecb8, 0xdf89, 0x461e, 0x752f, 0x207c, 0x134d, + 0x06e6, 0x35d7, 0x6084, 0x53b5, 0xca22, 0xf913, 0xac40, 0x9f71, + 0x8f4f, 0xbc7e, 0xe92d, 0xda1c, 0x438b, 0x70ba, 0x25e9, 0x16d8, + 0x0595, 0x36a4, 0x63f7, 0x50c6, 0xc951, 0xfa60, 0xaf33, 0x9c02, + 0x8c3c, 0xbf0d, 0xea5e, 0xd96f, 0x40f8, 0x73c9, 0x269a, 0x15ab, + 0x0dcc, 0x3efd, 0x6bae, 0x589f, 0xc108, 0xf239, 0xa76a, 0x945b, + 0x8465, 0xb754, 0xe207, 0xd136, 0x48a1, 0x7b90, 0x2ec3, 0x1df2, + 0x0ebf, 0x3d8e, 0x68dd, 0x5bec, 0xc27b, 0xf14a, 0xa419, 0x9728, + 0x8716, 0xb427, 0xe174, 0xd245, 0x4bd2, 0x78e3, 0x2db0, 0x1e81, + 0x0b2a, 0x381b, 0x6d48, 0x5e79, 0xc7ee, 0xf4df, 0xa18c, 0x92bd, + 0x8283, 0xb1b2, 0xe4e1, 0xd7d0, 0x4e47, 0x7d76, 0x2825, 0x1b14, + 0x0859, 0x3b68, 0x6e3b, 0x5d0a, 0xc49d, 0xf7ac, 0xa2ff, 0x91ce, + 0x81f0, 0xb2c1, 0xe792, 0xd4a3, 0x4d34, 0x7e05, 0x2b56, 0x1867, + 0x1b98, 0x28a9, 0x7dfa, 0x4ecb, 0xd75c, 0xe46d, 0xb13e, 0x820f, + 0x9231, 0xa100, 0xf453, 0xc762, 0x5ef5, 0x6dc4, 0x3897, 0x0ba6, + 0x18eb, 0x2bda, 0x7e89, 0x4db8, 0xd42f, 0xe71e, 0xb24d, 0x817c, + 0x9142, 0xa273, 0xf720, 0xc411, 0x5d86, 0x6eb7, 0x3be4, 0x08d5, + 0x1d7e, 0x2e4f, 0x7b1c, 0x482d, 0xd1ba, 0xe28b, 0xb7d8, 0x84e9, + 0x94d7, 0xa7e6, 0xf2b5, 0xc184, 0x5813, 0x6b22, 0x3e71, 0x0d40, + 0x1e0d, 0x2d3c, 0x786f, 0x4b5e, 0xd2c9, 0xe1f8, 0xb4ab, 0x879a, + 0x97a4, 0xa495, 0xf1c6, 0xc2f7, 0x5b60, 0x6851, 0x3d02, 0x0e33, + 0x1654, 0x2565, 0x7036, 0x4307, 0xda90, 0xe9a1, 0xbcf2, 0x8fc3, + 0x9ffd, 0xaccc, 0xf99f, 0xcaae, 0x5339, 0x6008, 0x355b, 0x066a, + 0x1527, 0x2616, 0x7345, 0x4074, 0xd9e3, 0xead2, 0xbf81, 0x8cb0, + 0x9c8e, 0xafbf, 0xfaec, 0xc9dd, 0x504a, 0x637b, 0x3628, 0x0519, + 0x10b2, 0x2383, 0x76d0, 0x45e1, 0xdc76, 0xef47, 0xba14, 0x8925, + 0x991b, 0xaa2a, 0xff79, 0xcc48, 0x55df, 0x66ee, 0x33bd, 0x008c, + 0x13c1, 0x20f0, 0x75a3, 0x4692, 0xdf05, 0xec34, 0xb967, 0x8a56, + 0x9a68, 0xa959, 0xfc0a, 0xcf3b, 0x56ac, 0x659d, 0x30ce, 0x03ff, + }, + { + 0x0000, 0x3730, 0x6e60, 0x5950, 0xdcc0, 0xebf0, 0xb2a0, 0x8590, + 0xa9a1, 0x9e91, 0xc7c1, 0xf0f1, 0x7561, 0x4251, 0x1b01, 0x2c31, + 0x4363, 0x7453, 0x2d03, 0x1a33, 0x9fa3, 0xa893, 0xf1c3, 0xc6f3, + 0xeac2, 0xddf2, 0x84a2, 0xb392, 0x3602, 0x0132, 0x5862, 0x6f52, + 0x86c6, 0xb1f6, 0xe8a6, 0xdf96, 0x5a06, 0x6d36, 0x3466, 0x0356, + 0x2f67, 0x1857, 0x4107, 0x7637, 0xf3a7, 0xc497, 0x9dc7, 0xaaf7, + 0xc5a5, 0xf295, 0xabc5, 0x9cf5, 0x1965, 0x2e55, 0x7705, 0x4035, + 0x6c04, 0x5b34, 0x0264, 0x3554, 0xb0c4, 0x87f4, 0xdea4, 0xe994, + 0x1dad, 0x2a9d, 0x73cd, 0x44fd, 0xc16d, 0xf65d, 0xaf0d, 0x983d, + 0xb40c, 0x833c, 0xda6c, 0xed5c, 0x68cc, 0x5ffc, 0x06ac, 0x319c, + 0x5ece, 0x69fe, 0x30ae, 0x079e, 0x820e, 0xb53e, 0xec6e, 0xdb5e, + 0xf76f, 0xc05f, 0x990f, 0xae3f, 0x2baf, 0x1c9f, 0x45cf, 0x72ff, + 0x9b6b, 0xac5b, 0xf50b, 0xc23b, 0x47ab, 0x709b, 0x29cb, 0x1efb, + 0x32ca, 0x05fa, 0x5caa, 0x6b9a, 0xee0a, 0xd93a, 0x806a, 0xb75a, + 0xd808, 0xef38, 0xb668, 0x8158, 0x04c8, 0x33f8, 0x6aa8, 0x5d98, + 0x71a9, 0x4699, 0x1fc9, 0x28f9, 0xad69, 0x9a59, 0xc309, 0xf439, + 0x3b5a, 0x0c6a, 0x553a, 0x620a, 0xe79a, 0xd0aa, 0x89fa, 0xbeca, + 0x92fb, 0xa5cb, 0xfc9b, 0xcbab, 0x4e3b, 0x790b, 0x205b, 0x176b, + 0x7839, 0x4f09, 0x1659, 0x2169, 0xa4f9, 0x93c9, 0xca99, 0xfda9, + 0xd198, 0xe6a8, 0xbff8, 0x88c8, 0x0d58, 0x3a68, 0x6338, 0x5408, + 0xbd9c, 0x8aac, 0xd3fc, 0xe4cc, 0x615c, 0x566c, 0x0f3c, 0x380c, + 0x143d, 0x230d, 0x7a5d, 0x4d6d, 0xc8fd, 0xffcd, 0xa69d, 0x91ad, + 0xfeff, 0xc9cf, 0x909f, 0xa7af, 0x223f, 0x150f, 0x4c5f, 0x7b6f, + 0x575e, 0x606e, 0x393e, 0x0e0e, 0x8b9e, 0xbcae, 0xe5fe, 0xd2ce, + 0x26f7, 0x11c7, 0x4897, 0x7fa7, 0xfa37, 0xcd07, 0x9457, 0xa367, + 0x8f56, 0xb866, 0xe136, 0xd606, 0x5396, 0x64a6, 0x3df6, 0x0ac6, + 0x6594, 0x52a4, 0x0bf4, 0x3cc4, 0xb954, 0x8e64, 0xd734, 0xe004, + 0xcc35, 0xfb05, 0xa255, 0x9565, 0x10f5, 0x27c5, 0x7e95, 0x49a5, + 0xa031, 0x9701, 0xce51, 0xf961, 0x7cf1, 0x4bc1, 0x1291, 0x25a1, + 0x0990, 0x3ea0, 0x67f0, 0x50c0, 0xd550, 0xe260, 0xbb30, 0x8c00, + 0xe352, 0xd462, 0x8d32, 0xba02, 0x3f92, 0x08a2, 0x51f2, 0x66c2, + 0x4af3, 0x7dc3, 0x2493, 0x13a3, 0x9633, 0xa103, 0xf853, 0xcf63, + }, + { + 0x0000, 0x76b4, 0xed68, 0x9bdc, 0xcaf1, 0xbc45, 0x2799, 0x512d, + 0x85c3, 0xf377, 0x68ab, 0x1e1f, 0x4f32, 0x3986, 0xa25a, 0xd4ee, + 0x1ba7, 0x6d13, 0xf6cf, 0x807b, 0xd156, 0xa7e2, 0x3c3e, 0x4a8a, + 0x9e64, 0xe8d0, 0x730c, 0x05b8, 0x5495, 0x2221, 0xb9fd, 0xcf49, + 0x374e, 0x41fa, 0xda26, 0xac92, 0xfdbf, 0x8b0b, 0x10d7, 0x6663, + 0xb28d, 0xc439, 0x5fe5, 0x2951, 0x787c, 0x0ec8, 0x9514, 0xe3a0, + 0x2ce9, 0x5a5d, 0xc181, 0xb735, 0xe618, 0x90ac, 0x0b70, 0x7dc4, + 0xa92a, 0xdf9e, 0x4442, 0x32f6, 0x63db, 0x156f, 0x8eb3, 0xf807, + 0x6e9c, 0x1828, 0x83f4, 0xf540, 0xa46d, 0xd2d9, 0x4905, 0x3fb1, + 0xeb5f, 0x9deb, 0x0637, 0x7083, 0x21ae, 0x571a, 0xccc6, 0xba72, + 0x753b, 0x038f, 0x9853, 0xeee7, 0xbfca, 0xc97e, 0x52a2, 0x2416, + 0xf0f8, 0x864c, 0x1d90, 0x6b24, 0x3a09, 0x4cbd, 0xd761, 0xa1d5, + 0x59d2, 0x2f66, 0xb4ba, 0xc20e, 0x9323, 0xe597, 0x7e4b, 0x08ff, + 0xdc11, 0xaaa5, 0x3179, 0x47cd, 0x16e0, 0x6054, 0xfb88, 0x8d3c, + 0x4275, 0x34c1, 0xaf1d, 0xd9a9, 0x8884, 0xfe30, 0x65ec, 0x1358, + 0xc7b6, 0xb102, 0x2ade, 0x5c6a, 0x0d47, 0x7bf3, 0xe02f, 0x969b, + 0xdd38, 0xab8c, 0x3050, 0x46e4, 0x17c9, 0x617d, 0xfaa1, 0x8c15, + 0x58fb, 0x2e4f, 0xb593, 0xc327, 0x920a, 0xe4be, 0x7f62, 0x09d6, + 0xc69f, 0xb02b, 0x2bf7, 0x5d43, 0x0c6e, 0x7ada, 0xe106, 0x97b2, + 0x435c, 0x35e8, 0xae34, 0xd880, 0x89ad, 0xff19, 0x64c5, 0x1271, + 0xea76, 0x9cc2, 0x071e, 0x71aa, 0x2087, 0x5633, 0xcdef, 0xbb5b, + 0x6fb5, 0x1901, 0x82dd, 0xf469, 0xa544, 0xd3f0, 0x482c, 0x3e98, + 0xf1d1, 0x8765, 0x1cb9, 0x6a0d, 0x3b20, 0x4d94, 0xd648, 0xa0fc, + 0x7412, 0x02a6, 0x997a, 0xefce, 0xbee3, 0xc857, 0x538b, 0x253f, + 0xb3a4, 0xc510, 0x5ecc, 0x2878, 0x7955, 0x0fe1, 0x943d, 0xe289, + 0x3667, 0x40d3, 0xdb0f, 0xadbb, 0xfc96, 0x8a22, 0x11fe, 0x674a, + 0xa803, 0xdeb7, 0x456b, 0x33df, 0x62f2, 0x1446, 0x8f9a, 0xf92e, + 0x2dc0, 0x5b74, 0xc0a8, 0xb61c, 0xe731, 0x9185, 0x0a59, 0x7ced, + 0x84ea, 0xf25e, 0x6982, 0x1f36, 0x4e1b, 0x38af, 0xa373, 0xd5c7, + 0x0129, 0x779d, 0xec41, 0x9af5, 0xcbd8, 0xbd6c, 0x26b0, 0x5004, + 0x9f4d, 0xe9f9, 0x7225, 0x0491, 0x55bc, 0x2308, 0xb8d4, 0xce60, + 0x1a8e, 0x6c3a, 0xf7e6, 0x8152, 0xd07f, 0xa6cb, 0x3d17, 0x4ba3, + }, + { + 0x0000, 0xaa51, 0x4483, 0xeed2, 0x8906, 0x2357, 0xcd85, 0x67d4, + 0x022d, 0xa87c, 0x46ae, 0xecff, 0x8b2b, 0x217a, 0xcfa8, 0x65f9, + 0x045a, 0xae0b, 0x40d9, 0xea88, 0x8d5c, 0x270d, 0xc9df, 0x638e, + 0x0677, 0xac26, 0x42f4, 0xe8a5, 0x8f71, 0x2520, 0xcbf2, 0x61a3, + 0x08b4, 0xa2e5, 0x4c37, 0xe666, 0x81b2, 0x2be3, 0xc531, 0x6f60, + 0x0a99, 0xa0c8, 0x4e1a, 0xe44b, 0x839f, 0x29ce, 0xc71c, 0x6d4d, + 0x0cee, 0xa6bf, 0x486d, 0xe23c, 0x85e8, 0x2fb9, 0xc16b, 0x6b3a, + 0x0ec3, 0xa492, 0x4a40, 0xe011, 0x87c5, 0x2d94, 0xc346, 0x6917, + 0x1168, 0xbb39, 0x55eb, 0xffba, 0x986e, 0x323f, 0xdced, 0x76bc, + 0x1345, 0xb914, 0x57c6, 0xfd97, 0x9a43, 0x3012, 0xdec0, 0x7491, + 0x1532, 0xbf63, 0x51b1, 0xfbe0, 0x9c34, 0x3665, 0xd8b7, 0x72e6, + 0x171f, 0xbd4e, 0x539c, 0xf9cd, 0x9e19, 0x3448, 0xda9a, 0x70cb, + 0x19dc, 0xb38d, 0x5d5f, 0xf70e, 0x90da, 0x3a8b, 0xd459, 0x7e08, + 0x1bf1, 0xb1a0, 0x5f72, 0xf523, 0x92f7, 0x38a6, 0xd674, 0x7c25, + 0x1d86, 0xb7d7, 0x5905, 0xf354, 0x9480, 0x3ed1, 0xd003, 0x7a52, + 0x1fab, 0xb5fa, 0x5b28, 0xf179, 0x96ad, 0x3cfc, 0xd22e, 0x787f, + 0x22d0, 0x8881, 0x6653, 0xcc02, 0xabd6, 0x0187, 0xef55, 0x4504, + 0x20fd, 0x8aac, 0x647e, 0xce2f, 0xa9fb, 0x03aa, 0xed78, 0x4729, + 0x268a, 0x8cdb, 0x6209, 0xc858, 0xaf8c, 0x05dd, 0xeb0f, 0x415e, + 0x24a7, 0x8ef6, 0x6024, 0xca75, 0xada1, 0x07f0, 0xe922, 0x4373, + 0x2a64, 0x8035, 0x6ee7, 0xc4b6, 0xa362, 0x0933, 0xe7e1, 0x4db0, + 0x2849, 0x8218, 0x6cca, 0xc69b, 0xa14f, 0x0b1e, 0xe5cc, 0x4f9d, + 0x2e3e, 0x846f, 0x6abd, 0xc0ec, 0xa738, 0x0d69, 0xe3bb, 0x49ea, + 0x2c13, 0x8642, 0x6890, 0xc2c1, 0xa515, 0x0f44, 0xe196, 0x4bc7, + 0x33b8, 0x99e9, 0x773b, 0xdd6a, 0xbabe, 0x10ef, 0xfe3d, 0x546c, + 0x3195, 0x9bc4, 0x7516, 0xdf47, 0xb893, 0x12c2, 0xfc10, 0x5641, + 0x37e2, 0x9db3, 0x7361, 0xd930, 0xbee4, 0x14b5, 0xfa67, 0x5036, + 0x35cf, 0x9f9e, 0x714c, 0xdb1d, 0xbcc9, 0x1698, 0xf84a, 0x521b, + 0x3b0c, 0x915d, 0x7f8f, 0xd5de, 0xb20a, 0x185b, 0xf689, 0x5cd8, + 0x3921, 0x9370, 0x7da2, 0xd7f3, 0xb027, 0x1a76, 0xf4a4, 0x5ef5, + 0x3f56, 0x9507, 0x7bd5, 0xd184, 0xb650, 0x1c01, 0xf2d3, 0x5882, + 0x3d7b, 0x972a, 0x79f8, 0xd3a9, 0xb47d, 0x1e2c, 0xf0fe, 0x5aaf, + }, + { + 0x0000, 0x45a0, 0x8b40, 0xcee0, 0x06a1, 0x4301, 0x8de1, 0xc841, + 0x0d42, 0x48e2, 0x8602, 0xc3a2, 0x0be3, 0x4e43, 0x80a3, 0xc503, + 0x1a84, 0x5f24, 0x91c4, 0xd464, 0x1c25, 0x5985, 0x9765, 0xd2c5, + 0x17c6, 0x5266, 0x9c86, 0xd926, 0x1167, 0x54c7, 0x9a27, 0xdf87, + 0x3508, 0x70a8, 0xbe48, 0xfbe8, 0x33a9, 0x7609, 0xb8e9, 0xfd49, + 0x384a, 0x7dea, 0xb30a, 0xf6aa, 0x3eeb, 0x7b4b, 0xb5ab, 0xf00b, + 0x2f8c, 0x6a2c, 0xa4cc, 0xe16c, 0x292d, 0x6c8d, 0xa26d, 0xe7cd, + 0x22ce, 0x676e, 0xa98e, 0xec2e, 0x246f, 0x61cf, 0xaf2f, 0xea8f, + 0x6a10, 0x2fb0, 0xe150, 0xa4f0, 0x6cb1, 0x2911, 0xe7f1, 0xa251, + 0x6752, 0x22f2, 0xec12, 0xa9b2, 0x61f3, 0x2453, 0xeab3, 0xaf13, + 0x7094, 0x3534, 0xfbd4, 0xbe74, 0x7635, 0x3395, 0xfd75, 0xb8d5, + 0x7dd6, 0x3876, 0xf696, 0xb336, 0x7b77, 0x3ed7, 0xf037, 0xb597, + 0x5f18, 0x1ab8, 0xd458, 0x91f8, 0x59b9, 0x1c19, 0xd2f9, 0x9759, + 0x525a, 0x17fa, 0xd91a, 0x9cba, 0x54fb, 0x115b, 0xdfbb, 0x9a1b, + 0x459c, 0x003c, 0xcedc, 0x8b7c, 0x433d, 0x069d, 0xc87d, 0x8ddd, + 0x48de, 0x0d7e, 0xc39e, 0x863e, 0x4e7f, 0x0bdf, 0xc53f, 0x809f, + 0xd420, 0x9180, 0x5f60, 0x1ac0, 0xd281, 0x9721, 0x59c1, 0x1c61, + 0xd962, 0x9cc2, 0x5222, 0x1782, 0xdfc3, 0x9a63, 0x5483, 0x1123, + 0xcea4, 0x8b04, 0x45e4, 0x0044, 0xc805, 0x8da5, 0x4345, 0x06e5, + 0xc3e6, 0x8646, 0x48a6, 0x0d06, 0xc547, 0x80e7, 0x4e07, 0x0ba7, + 0xe128, 0xa488, 0x6a68, 0x2fc8, 0xe789, 0xa229, 0x6cc9, 0x2969, + 0xec6a, 0xa9ca, 0x672a, 0x228a, 0xeacb, 0xaf6b, 0x618b, 0x242b, + 0xfbac, 0xbe0c, 0x70ec, 0x354c, 0xfd0d, 0xb8ad, 0x764d, 0x33ed, + 0xf6ee, 0xb34e, 0x7dae, 0x380e, 0xf04f, 0xb5ef, 0x7b0f, 0x3eaf, + 0xbe30, 0xfb90, 0x3570, 0x70d0, 0xb891, 0xfd31, 0x33d1, 0x7671, + 0xb372, 0xf6d2, 0x3832, 0x7d92, 0xb5d3, 0xf073, 0x3e93, 0x7b33, + 0xa4b4, 0xe114, 0x2ff4, 0x6a54, 0xa215, 0xe7b5, 0x2955, 0x6cf5, + 0xa9f6, 0xec56, 0x22b6, 0x6716, 0xaf57, 0xeaf7, 0x2417, 0x61b7, + 0x8b38, 0xce98, 0x0078, 0x45d8, 0x8d99, 0xc839, 0x06d9, 0x4379, + 0x867a, 0xc3da, 0x0d3a, 0x489a, 0x80db, 0xc57b, 0x0b9b, 0x4e3b, + 0x91bc, 0xd41c, 0x1afc, 0x5f5c, 0x971d, 0xd2bd, 0x1c5d, 0x59fd, + 0x9cfe, 0xd95e, 0x17be, 0x521e, 0x9a5f, 0xdfff, 0x111f, 0x54bf, + }, + { + 0x0000, 0xb861, 0x60e3, 0xd882, 0xc1c6, 0x79a7, 0xa125, 0x1944, + 0x93ad, 0x2bcc, 0xf34e, 0x4b2f, 0x526b, 0xea0a, 0x3288, 0x8ae9, + 0x377b, 0x8f1a, 0x5798, 0xeff9, 0xf6bd, 0x4edc, 0x965e, 0x2e3f, + 0xa4d6, 0x1cb7, 0xc435, 0x7c54, 0x6510, 0xdd71, 0x05f3, 0xbd92, + 0x6ef6, 0xd697, 0x0e15, 0xb674, 0xaf30, 0x1751, 0xcfd3, 0x77b2, + 0xfd5b, 0x453a, 0x9db8, 0x25d9, 0x3c9d, 0x84fc, 0x5c7e, 0xe41f, + 0x598d, 0xe1ec, 0x396e, 0x810f, 0x984b, 0x202a, 0xf8a8, 0x40c9, + 0xca20, 0x7241, 0xaac3, 0x12a2, 0x0be6, 0xb387, 0x6b05, 0xd364, + 0xddec, 0x658d, 0xbd0f, 0x056e, 0x1c2a, 0xa44b, 0x7cc9, 0xc4a8, + 0x4e41, 0xf620, 0x2ea2, 0x96c3, 0x8f87, 0x37e6, 0xef64, 0x5705, + 0xea97, 0x52f6, 0x8a74, 0x3215, 0x2b51, 0x9330, 0x4bb2, 0xf3d3, + 0x793a, 0xc15b, 0x19d9, 0xa1b8, 0xb8fc, 0x009d, 0xd81f, 0x607e, + 0xb31a, 0x0b7b, 0xd3f9, 0x6b98, 0x72dc, 0xcabd, 0x123f, 0xaa5e, + 0x20b7, 0x98d6, 0x4054, 0xf835, 0xe171, 0x5910, 0x8192, 0x39f3, + 0x8461, 0x3c00, 0xe482, 0x5ce3, 0x45a7, 0xfdc6, 0x2544, 0x9d25, + 0x17cc, 0xafad, 0x772f, 0xcf4e, 0xd60a, 0x6e6b, 0xb6e9, 0x0e88, + 0xabf9, 0x1398, 0xcb1a, 0x737b, 0x6a3f, 0xd25e, 0x0adc, 0xb2bd, + 0x3854, 0x8035, 0x58b7, 0xe0d6, 0xf992, 0x41f3, 0x9971, 0x2110, + 0x9c82, 0x24e3, 0xfc61, 0x4400, 0x5d44, 0xe525, 0x3da7, 0x85c6, + 0x0f2f, 0xb74e, 0x6fcc, 0xd7ad, 0xcee9, 0x7688, 0xae0a, 0x166b, + 0xc50f, 0x7d6e, 0xa5ec, 0x1d8d, 0x04c9, 0xbca8, 0x642a, 0xdc4b, + 0x56a2, 0xeec3, 0x3641, 0x8e20, 0x9764, 0x2f05, 0xf787, 0x4fe6, + 0xf274, 0x4a15, 0x9297, 0x2af6, 0x33b2, 0x8bd3, 0x5351, 0xeb30, + 0x61d9, 0xd9b8, 0x013a, 0xb95b, 0xa01f, 0x187e, 0xc0fc, 0x789d, + 0x7615, 0xce74, 0x16f6, 0xae97, 0xb7d3, 0x0fb2, 0xd730, 0x6f51, + 0xe5b8, 0x5dd9, 0x855b, 0x3d3a, 0x247e, 0x9c1f, 0x449d, 0xfcfc, + 0x416e, 0xf90f, 0x218d, 0x99ec, 0x80a8, 0x38c9, 0xe04b, 0x582a, + 0xd2c3, 0x6aa2, 0xb220, 0x0a41, 0x1305, 0xab64, 0x73e6, 0xcb87, + 0x18e3, 0xa082, 0x7800, 0xc061, 0xd925, 0x6144, 0xb9c6, 0x01a7, + 0x8b4e, 0x332f, 0xebad, 0x53cc, 0x4a88, 0xf2e9, 0x2a6b, 0x920a, + 0x2f98, 0x97f9, 0x4f7b, 0xf71a, 0xee5e, 0x563f, 0x8ebd, 0x36dc, + 0xbc35, 0x0454, 0xdcd6, 0x64b7, 0x7df3, 0xc592, 0x1d10, 0xa571, + }, + { + 0x0000, 0x47d3, 0x8fa6, 0xc875, 0x0f6d, 0x48be, 0x80cb, 0xc718, + 0x1eda, 0x5909, 0x917c, 0xd6af, 0x11b7, 0x5664, 0x9e11, 0xd9c2, + 0x3db4, 0x7a67, 0xb212, 0xf5c1, 0x32d9, 0x750a, 0xbd7f, 0xfaac, + 0x236e, 0x64bd, 0xacc8, 0xeb1b, 0x2c03, 0x6bd0, 0xa3a5, 0xe476, + 0x7b68, 0x3cbb, 0xf4ce, 0xb31d, 0x7405, 0x33d6, 0xfba3, 0xbc70, + 0x65b2, 0x2261, 0xea14, 0xadc7, 0x6adf, 0x2d0c, 0xe579, 0xa2aa, + 0x46dc, 0x010f, 0xc97a, 0x8ea9, 0x49b1, 0x0e62, 0xc617, 0x81c4, + 0x5806, 0x1fd5, 0xd7a0, 0x9073, 0x576b, 0x10b8, 0xd8cd, 0x9f1e, + 0xf6d0, 0xb103, 0x7976, 0x3ea5, 0xf9bd, 0xbe6e, 0x761b, 0x31c8, + 0xe80a, 0xafd9, 0x67ac, 0x207f, 0xe767, 0xa0b4, 0x68c1, 0x2f12, + 0xcb64, 0x8cb7, 0x44c2, 0x0311, 0xc409, 0x83da, 0x4baf, 0x0c7c, + 0xd5be, 0x926d, 0x5a18, 0x1dcb, 0xdad3, 0x9d00, 0x5575, 0x12a6, + 0x8db8, 0xca6b, 0x021e, 0x45cd, 0x82d5, 0xc506, 0x0d73, 0x4aa0, + 0x9362, 0xd4b1, 0x1cc4, 0x5b17, 0x9c0f, 0xdbdc, 0x13a9, 0x547a, + 0xb00c, 0xf7df, 0x3faa, 0x7879, 0xbf61, 0xf8b2, 0x30c7, 0x7714, + 0xaed6, 0xe905, 0x2170, 0x66a3, 0xa1bb, 0xe668, 0x2e1d, 0x69ce, + 0xfd81, 0xba52, 0x7227, 0x35f4, 0xf2ec, 0xb53f, 0x7d4a, 0x3a99, + 0xe35b, 0xa488, 0x6cfd, 0x2b2e, 0xec36, 0xabe5, 0x6390, 0x2443, + 0xc035, 0x87e6, 0x4f93, 0x0840, 0xcf58, 0x888b, 0x40fe, 0x072d, + 0xdeef, 0x993c, 0x5149, 0x169a, 0xd182, 0x9651, 0x5e24, 0x19f7, + 0x86e9, 0xc13a, 0x094f, 0x4e9c, 0x8984, 0xce57, 0x0622, 0x41f1, + 0x9833, 0xdfe0, 0x1795, 0x5046, 0x975e, 0xd08d, 0x18f8, 0x5f2b, + 0xbb5d, 0xfc8e, 0x34fb, 0x7328, 0xb430, 0xf3e3, 0x3b96, 0x7c45, + 0xa587, 0xe254, 0x2a21, 0x6df2, 0xaaea, 0xed39, 0x254c, 0x629f, + 0x0b51, 0x4c82, 0x84f7, 0xc324, 0x043c, 0x43ef, 0x8b9a, 0xcc49, + 0x158b, 0x5258, 0x9a2d, 0xddfe, 0x1ae6, 0x5d35, 0x9540, 0xd293, + 0x36e5, 0x7136, 0xb943, 0xfe90, 0x3988, 0x7e5b, 0xb62e, 0xf1fd, + 0x283f, 0x6fec, 0xa799, 0xe04a, 0x2752, 0x6081, 0xa8f4, 0xef27, + 0x7039, 0x37ea, 0xff9f, 0xb84c, 0x7f54, 0x3887, 0xf0f2, 0xb721, + 0x6ee3, 0x2930, 0xe145, 0xa696, 0x618e, 0x265d, 0xee28, 0xa9fb, + 0x4d8d, 0x0a5e, 0xc22b, 0x85f8, 0x42e0, 0x0533, 0xcd46, 0x8a95, + 0x5357, 0x1484, 0xdcf1, 0x9b22, 0x5c3a, 0x1be9, 0xd39c, 0x944f, + }, + { + 0x0000, 0xeb23, 0xc667, 0x2d44, 0x9cef, 0x77cc, 0x5a88, 0xb1ab, + 0x29ff, 0xc2dc, 0xef98, 0x04bb, 0xb510, 0x5e33, 0x7377, 0x9854, + 0x53fe, 0xb8dd, 0x9599, 0x7eba, 0xcf11, 0x2432, 0x0976, 0xe255, + 0x7a01, 0x9122, 0xbc66, 0x5745, 0xe6ee, 0x0dcd, 0x2089, 0xcbaa, + 0xa7fc, 0x4cdf, 0x619b, 0x8ab8, 0x3b13, 0xd030, 0xfd74, 0x1657, + 0x8e03, 0x6520, 0x4864, 0xa347, 0x12ec, 0xf9cf, 0xd48b, 0x3fa8, + 0xf402, 0x1f21, 0x3265, 0xd946, 0x68ed, 0x83ce, 0xae8a, 0x45a9, + 0xddfd, 0x36de, 0x1b9a, 0xf0b9, 0x4112, 0xaa31, 0x8775, 0x6c56, + 0x5fd9, 0xb4fa, 0x99be, 0x729d, 0xc336, 0x2815, 0x0551, 0xee72, + 0x7626, 0x9d05, 0xb041, 0x5b62, 0xeac9, 0x01ea, 0x2cae, 0xc78d, + 0x0c27, 0xe704, 0xca40, 0x2163, 0x90c8, 0x7beb, 0x56af, 0xbd8c, + 0x25d8, 0xcefb, 0xe3bf, 0x089c, 0xb937, 0x5214, 0x7f50, 0x9473, + 0xf825, 0x1306, 0x3e42, 0xd561, 0x64ca, 0x8fe9, 0xa2ad, 0x498e, + 0xd1da, 0x3af9, 0x17bd, 0xfc9e, 0x4d35, 0xa616, 0x8b52, 0x6071, + 0xabdb, 0x40f8, 0x6dbc, 0x869f, 0x3734, 0xdc17, 0xf153, 0x1a70, + 0x8224, 0x6907, 0x4443, 0xaf60, 0x1ecb, 0xf5e8, 0xd8ac, 0x338f, + 0xbfb2, 0x5491, 0x79d5, 0x92f6, 0x235d, 0xc87e, 0xe53a, 0x0e19, + 0x964d, 0x7d6e, 0x502a, 0xbb09, 0x0aa2, 0xe181, 0xccc5, 0x27e6, + 0xec4c, 0x076f, 0x2a2b, 0xc108, 0x70a3, 0x9b80, 0xb6c4, 0x5de7, + 0xc5b3, 0x2e90, 0x03d4, 0xe8f7, 0x595c, 0xb27f, 0x9f3b, 0x7418, + 0x184e, 0xf36d, 0xde29, 0x350a, 0x84a1, 0x6f82, 0x42c6, 0xa9e5, + 0x31b1, 0xda92, 0xf7d6, 0x1cf5, 0xad5e, 0x467d, 0x6b39, 0x801a, + 0x4bb0, 0xa093, 0x8dd7, 0x66f4, 0xd75f, 0x3c7c, 0x1138, 0xfa1b, + 0x624f, 0x896c, 0xa428, 0x4f0b, 0xfea0, 0x1583, 0x38c7, 0xd3e4, + 0xe06b, 0x0b48, 0x260c, 0xcd2f, 0x7c84, 0x97a7, 0xbae3, 0x51c0, + 0xc994, 0x22b7, 0x0ff3, 0xe4d0, 0x557b, 0xbe58, 0x931c, 0x783f, + 0xb395, 0x58b6, 0x75f2, 0x9ed1, 0x2f7a, 0xc459, 0xe91d, 0x023e, + 0x9a6a, 0x7149, 0x5c0d, 0xb72e, 0x0685, 0xeda6, 0xc0e2, 0x2bc1, + 0x4797, 0xacb4, 0x81f0, 0x6ad3, 0xdb78, 0x305b, 0x1d1f, 0xf63c, + 0x6e68, 0x854b, 0xa80f, 0x432c, 0xf287, 0x19a4, 0x34e0, 0xdfc3, + 0x1469, 0xff4a, 0xd20e, 0x392d, 0x8886, 0x63a5, 0x4ee1, 0xa5c2, + 0x3d96, 0xd6b5, 0xfbf1, 0x10d2, 0xa179, 0x4a5a, 0x671e, 0x8c3d, + }, + { + 0x0000, 0x6f45, 0xde8a, 0xb1cf, 0xad35, 0xc270, 0x73bf, 0x1cfa, + 0x4a4b, 0x250e, 0x94c1, 0xfb84, 0xe77e, 0x883b, 0x39f4, 0x56b1, + 0x9496, 0xfbd3, 0x4a1c, 0x2559, 0x39a3, 0x56e6, 0xe729, 0x886c, + 0xdedd, 0xb198, 0x0057, 0x6f12, 0x73e8, 0x1cad, 0xad62, 0xc227, + 0x390d, 0x5648, 0xe787, 0x88c2, 0x9438, 0xfb7d, 0x4ab2, 0x25f7, + 0x7346, 0x1c03, 0xadcc, 0xc289, 0xde73, 0xb136, 0x00f9, 0x6fbc, + 0xad9b, 0xc2de, 0x7311, 0x1c54, 0x00ae, 0x6feb, 0xde24, 0xb161, + 0xe7d0, 0x8895, 0x395a, 0x561f, 0x4ae5, 0x25a0, 0x946f, 0xfb2a, + 0x721a, 0x1d5f, 0xac90, 0xc3d5, 0xdf2f, 0xb06a, 0x01a5, 0x6ee0, + 0x3851, 0x5714, 0xe6db, 0x899e, 0x9564, 0xfa21, 0x4bee, 0x24ab, + 0xe68c, 0x89c9, 0x3806, 0x5743, 0x4bb9, 0x24fc, 0x9533, 0xfa76, + 0xacc7, 0xc382, 0x724d, 0x1d08, 0x01f2, 0x6eb7, 0xdf78, 0xb03d, + 0x4b17, 0x2452, 0x959d, 0xfad8, 0xe622, 0x8967, 0x38a8, 0x57ed, + 0x015c, 0x6e19, 0xdfd6, 0xb093, 0xac69, 0xc32c, 0x72e3, 0x1da6, + 0xdf81, 0xb0c4, 0x010b, 0x6e4e, 0x72b4, 0x1df1, 0xac3e, 0xc37b, + 0x95ca, 0xfa8f, 0x4b40, 0x2405, 0x38ff, 0x57ba, 0xe675, 0x8930, + 0xe434, 0x8b71, 0x3abe, 0x55fb, 0x4901, 0x2644, 0x978b, 0xf8ce, + 0xae7f, 0xc13a, 0x70f5, 0x1fb0, 0x034a, 0x6c0f, 0xddc0, 0xb285, + 0x70a2, 0x1fe7, 0xae28, 0xc16d, 0xdd97, 0xb2d2, 0x031d, 0x6c58, + 0x3ae9, 0x55ac, 0xe463, 0x8b26, 0x97dc, 0xf899, 0x4956, 0x2613, + 0xdd39, 0xb27c, 0x03b3, 0x6cf6, 0x700c, 0x1f49, 0xae86, 0xc1c3, + 0x9772, 0xf837, 0x49f8, 0x26bd, 0x3a47, 0x5502, 0xe4cd, 0x8b88, + 0x49af, 0x26ea, 0x9725, 0xf860, 0xe49a, 0x8bdf, 0x3a10, 0x5555, + 0x03e4, 0x6ca1, 0xdd6e, 0xb22b, 0xaed1, 0xc194, 0x705b, 0x1f1e, + 0x962e, 0xf96b, 0x48a4, 0x27e1, 0x3b1b, 0x545e, 0xe591, 0x8ad4, + 0xdc65, 0xb320, 0x02ef, 0x6daa, 0x7150, 0x1e15, 0xafda, 0xc09f, + 0x02b8, 0x6dfd, 0xdc32, 0xb377, 0xaf8d, 0xc0c8, 0x7107, 0x1e42, + 0x48f3, 0x27b6, 0x9679, 0xf93c, 0xe5c6, 0x8a83, 0x3b4c, 0x5409, + 0xaf23, 0xc066, 0x71a9, 0x1eec, 0x0216, 0x6d53, 0xdc9c, 0xb3d9, + 0xe568, 0x8a2d, 0x3be2, 0x54a7, 0x485d, 0x2718, 0x96d7, 0xf992, + 0x3bb5, 0x54f0, 0xe53f, 0x8a7a, 0x9680, 0xf9c5, 0x480a, 0x274f, + 0x71fe, 0x1ebb, 0xaf74, 0xc031, 0xdccb, 0xb38e, 0x0241, 0x6d04, + }, + { + 0x0000, 0xd849, 0xa0b3, 0x78fa, 0x5147, 0x890e, 0xf1f4, 0x29bd, + 0xa28e, 0x7ac7, 0x023d, 0xda74, 0xf3c9, 0x2b80, 0x537a, 0x8b33, + 0x553d, 0x8d74, 0xf58e, 0x2dc7, 0x047a, 0xdc33, 0xa4c9, 0x7c80, + 0xf7b3, 0x2ffa, 0x5700, 0x8f49, 0xa6f4, 0x7ebd, 0x0647, 0xde0e, + 0xaa7a, 0x7233, 0x0ac9, 0xd280, 0xfb3d, 0x2374, 0x5b8e, 0x83c7, + 0x08f4, 0xd0bd, 0xa847, 0x700e, 0x59b3, 0x81fa, 0xf900, 0x2149, + 0xff47, 0x270e, 0x5ff4, 0x87bd, 0xae00, 0x7649, 0x0eb3, 0xd6fa, + 0x5dc9, 0x8580, 0xfd7a, 0x2533, 0x0c8e, 0xd4c7, 0xac3d, 0x7474, + 0x44d5, 0x9c9c, 0xe466, 0x3c2f, 0x1592, 0xcddb, 0xb521, 0x6d68, + 0xe65b, 0x3e12, 0x46e8, 0x9ea1, 0xb71c, 0x6f55, 0x17af, 0xcfe6, + 0x11e8, 0xc9a1, 0xb15b, 0x6912, 0x40af, 0x98e6, 0xe01c, 0x3855, + 0xb366, 0x6b2f, 0x13d5, 0xcb9c, 0xe221, 0x3a68, 0x4292, 0x9adb, + 0xeeaf, 0x36e6, 0x4e1c, 0x9655, 0xbfe8, 0x67a1, 0x1f5b, 0xc712, + 0x4c21, 0x9468, 0xec92, 0x34db, 0x1d66, 0xc52f, 0xbdd5, 0x659c, + 0xbb92, 0x63db, 0x1b21, 0xc368, 0xead5, 0x329c, 0x4a66, 0x922f, + 0x191c, 0xc155, 0xb9af, 0x61e6, 0x485b, 0x9012, 0xe8e8, 0x30a1, + 0x89aa, 0x51e3, 0x2919, 0xf150, 0xd8ed, 0x00a4, 0x785e, 0xa017, + 0x2b24, 0xf36d, 0x8b97, 0x53de, 0x7a63, 0xa22a, 0xdad0, 0x0299, + 0xdc97, 0x04de, 0x7c24, 0xa46d, 0x8dd0, 0x5599, 0x2d63, 0xf52a, + 0x7e19, 0xa650, 0xdeaa, 0x06e3, 0x2f5e, 0xf717, 0x8fed, 0x57a4, + 0x23d0, 0xfb99, 0x8363, 0x5b2a, 0x7297, 0xaade, 0xd224, 0x0a6d, + 0x815e, 0x5917, 0x21ed, 0xf9a4, 0xd019, 0x0850, 0x70aa, 0xa8e3, + 0x76ed, 0xaea4, 0xd65e, 0x0e17, 0x27aa, 0xffe3, 0x8719, 0x5f50, + 0xd463, 0x0c2a, 0x74d0, 0xac99, 0x8524, 0x5d6d, 0x2597, 0xfdde, + 0xcd7f, 0x1536, 0x6dcc, 0xb585, 0x9c38, 0x4471, 0x3c8b, 0xe4c2, + 0x6ff1, 0xb7b8, 0xcf42, 0x170b, 0x3eb6, 0xe6ff, 0x9e05, 0x464c, + 0x9842, 0x400b, 0x38f1, 0xe0b8, 0xc905, 0x114c, 0x69b6, 0xb1ff, + 0x3acc, 0xe285, 0x9a7f, 0x4236, 0x6b8b, 0xb3c2, 0xcb38, 0x1371, + 0x6705, 0xbf4c, 0xc7b6, 0x1fff, 0x3642, 0xee0b, 0x96f1, 0x4eb8, + 0xc58b, 0x1dc2, 0x6538, 0xbd71, 0x94cc, 0x4c85, 0x347f, 0xec36, + 0x3238, 0xea71, 0x928b, 0x4ac2, 0x637f, 0xbb36, 0xc3cc, 0x1b85, + 0x90b6, 0x48ff, 0x3005, 0xe84c, 0xc1f1, 0x19b8, 0x6142, 0xb90b, + }, + { + 0x0000, 0x0375, 0x06ea, 0x059f, 0x0dd4, 0x0ea1, 0x0b3e, 0x084b, + 0x1ba8, 0x18dd, 0x1d42, 0x1e37, 0x167c, 0x1509, 0x1096, 0x13e3, + 0x3750, 0x3425, 0x31ba, 0x32cf, 0x3a84, 0x39f1, 0x3c6e, 0x3f1b, + 0x2cf8, 0x2f8d, 0x2a12, 0x2967, 0x212c, 0x2259, 0x27c6, 0x24b3, + 0x6ea0, 0x6dd5, 0x684a, 0x6b3f, 0x6374, 0x6001, 0x659e, 0x66eb, + 0x7508, 0x767d, 0x73e2, 0x7097, 0x78dc, 0x7ba9, 0x7e36, 0x7d43, + 0x59f0, 0x5a85, 0x5f1a, 0x5c6f, 0x5424, 0x5751, 0x52ce, 0x51bb, + 0x4258, 0x412d, 0x44b2, 0x47c7, 0x4f8c, 0x4cf9, 0x4966, 0x4a13, + 0xdd40, 0xde35, 0xdbaa, 0xd8df, 0xd094, 0xd3e1, 0xd67e, 0xd50b, + 0xc6e8, 0xc59d, 0xc002, 0xc377, 0xcb3c, 0xc849, 0xcdd6, 0xcea3, + 0xea10, 0xe965, 0xecfa, 0xef8f, 0xe7c4, 0xe4b1, 0xe12e, 0xe25b, + 0xf1b8, 0xf2cd, 0xf752, 0xf427, 0xfc6c, 0xff19, 0xfa86, 0xf9f3, + 0xb3e0, 0xb095, 0xb50a, 0xb67f, 0xbe34, 0xbd41, 0xb8de, 0xbbab, + 0xa848, 0xab3d, 0xaea2, 0xadd7, 0xa59c, 0xa6e9, 0xa376, 0xa003, + 0x84b0, 0x87c5, 0x825a, 0x812f, 0x8964, 0x8a11, 0x8f8e, 0x8cfb, + 0x9f18, 0x9c6d, 0x99f2, 0x9a87, 0x92cc, 0x91b9, 0x9426, 0x9753, + 0xaaa1, 0xa9d4, 0xac4b, 0xaf3e, 0xa775, 0xa400, 0xa19f, 0xa2ea, + 0xb109, 0xb27c, 0xb7e3, 0xb496, 0xbcdd, 0xbfa8, 0xba37, 0xb942, + 0x9df1, 0x9e84, 0x9b1b, 0x986e, 0x9025, 0x9350, 0x96cf, 0x95ba, + 0x8659, 0x852c, 0x80b3, 0x83c6, 0x8b8d, 0x88f8, 0x8d67, 0x8e12, + 0xc401, 0xc774, 0xc2eb, 0xc19e, 0xc9d5, 0xcaa0, 0xcf3f, 0xcc4a, + 0xdfa9, 0xdcdc, 0xd943, 0xda36, 0xd27d, 0xd108, 0xd497, 0xd7e2, + 0xf351, 0xf024, 0xf5bb, 0xf6ce, 0xfe85, 0xfdf0, 0xf86f, 0xfb1a, + 0xe8f9, 0xeb8c, 0xee13, 0xed66, 0xe52d, 0xe658, 0xe3c7, 0xe0b2, + 0x77e1, 0x7494, 0x710b, 0x727e, 0x7a35, 0x7940, 0x7cdf, 0x7faa, + 0x6c49, 0x6f3c, 0x6aa3, 0x69d6, 0x619d, 0x62e8, 0x6777, 0x6402, + 0x40b1, 0x43c4, 0x465b, 0x452e, 0x4d65, 0x4e10, 0x4b8f, 0x48fa, + 0x5b19, 0x586c, 0x5df3, 0x5e86, 0x56cd, 0x55b8, 0x5027, 0x5352, + 0x1941, 0x1a34, 0x1fab, 0x1cde, 0x1495, 0x17e0, 0x127f, 0x110a, + 0x02e9, 0x019c, 0x0403, 0x0776, 0x0f3d, 0x0c48, 0x09d7, 0x0aa2, + 0x2e11, 0x2d64, 0x28fb, 0x2b8e, 0x23c5, 0x20b0, 0x252f, 0x265a, + 0x35b9, 0x36cc, 0x3353, 0x3026, 0x386d, 0x3b18, 0x3e87, 0x3df2, + }, + { + 0x0000, 0x4563, 0x8ac6, 0xcfa5, 0x05ad, 0x40ce, 0x8f6b, 0xca08, + 0x0b5a, 0x4e39, 0x819c, 0xc4ff, 0x0ef7, 0x4b94, 0x8431, 0xc152, + 0x16b4, 0x53d7, 0x9c72, 0xd911, 0x1319, 0x567a, 0x99df, 0xdcbc, + 0x1dee, 0x588d, 0x9728, 0xd24b, 0x1843, 0x5d20, 0x9285, 0xd7e6, + 0x2d68, 0x680b, 0xa7ae, 0xe2cd, 0x28c5, 0x6da6, 0xa203, 0xe760, + 0x2632, 0x6351, 0xacf4, 0xe997, 0x239f, 0x66fc, 0xa959, 0xec3a, + 0x3bdc, 0x7ebf, 0xb11a, 0xf479, 0x3e71, 0x7b12, 0xb4b7, 0xf1d4, + 0x3086, 0x75e5, 0xba40, 0xff23, 0x352b, 0x7048, 0xbfed, 0xfa8e, + 0x5ad0, 0x1fb3, 0xd016, 0x9575, 0x5f7d, 0x1a1e, 0xd5bb, 0x90d8, + 0x518a, 0x14e9, 0xdb4c, 0x9e2f, 0x5427, 0x1144, 0xdee1, 0x9b82, + 0x4c64, 0x0907, 0xc6a2, 0x83c1, 0x49c9, 0x0caa, 0xc30f, 0x866c, + 0x473e, 0x025d, 0xcdf8, 0x889b, 0x4293, 0x07f0, 0xc855, 0x8d36, + 0x77b8, 0x32db, 0xfd7e, 0xb81d, 0x7215, 0x3776, 0xf8d3, 0xbdb0, + 0x7ce2, 0x3981, 0xf624, 0xb347, 0x794f, 0x3c2c, 0xf389, 0xb6ea, + 0x610c, 0x246f, 0xebca, 0xaea9, 0x64a1, 0x21c2, 0xee67, 0xab04, + 0x6a56, 0x2f35, 0xe090, 0xa5f3, 0x6ffb, 0x2a98, 0xe53d, 0xa05e, + 0xb5a0, 0xf0c3, 0x3f66, 0x7a05, 0xb00d, 0xf56e, 0x3acb, 0x7fa8, + 0xbefa, 0xfb99, 0x343c, 0x715f, 0xbb57, 0xfe34, 0x3191, 0x74f2, + 0xa314, 0xe677, 0x29d2, 0x6cb1, 0xa6b9, 0xe3da, 0x2c7f, 0x691c, + 0xa84e, 0xed2d, 0x2288, 0x67eb, 0xade3, 0xe880, 0x2725, 0x6246, + 0x98c8, 0xddab, 0x120e, 0x576d, 0x9d65, 0xd806, 0x17a3, 0x52c0, + 0x9392, 0xd6f1, 0x1954, 0x5c37, 0x963f, 0xd35c, 0x1cf9, 0x599a, + 0x8e7c, 0xcb1f, 0x04ba, 0x41d9, 0x8bd1, 0xceb2, 0x0117, 0x4474, + 0x8526, 0xc045, 0x0fe0, 0x4a83, 0x808b, 0xc5e8, 0x0a4d, 0x4f2e, + 0xef70, 0xaa13, 0x65b6, 0x20d5, 0xeadd, 0xafbe, 0x601b, 0x2578, + 0xe42a, 0xa149, 0x6eec, 0x2b8f, 0xe187, 0xa4e4, 0x6b41, 0x2e22, + 0xf9c4, 0xbca7, 0x7302, 0x3661, 0xfc69, 0xb90a, 0x76af, 0x33cc, + 0xf29e, 0xb7fd, 0x7858, 0x3d3b, 0xf733, 0xb250, 0x7df5, 0x3896, + 0xc218, 0x877b, 0x48de, 0x0dbd, 0xc7b5, 0x82d6, 0x4d73, 0x0810, + 0xc942, 0x8c21, 0x4384, 0x06e7, 0xccef, 0x898c, 0x4629, 0x034a, + 0xd4ac, 0x91cf, 0x5e6a, 0x1b09, 0xd101, 0x9462, 0x5bc7, 0x1ea4, + 0xdff6, 0x9a95, 0x5530, 0x1053, 0xda5b, 0x9f38, 0x509d, 0x15fe, + }, + { + 0x0000, 0x7b61, 0xf6c2, 0x8da3, 0xfda5, 0x86c4, 0x0b67, 0x7006, + 0xeb6b, 0x900a, 0x1da9, 0x66c8, 0x16ce, 0x6daf, 0xe00c, 0x9b6d, + 0xc6f7, 0xbd96, 0x3035, 0x4b54, 0x3b52, 0x4033, 0xcd90, 0xb6f1, + 0x2d9c, 0x56fd, 0xdb5e, 0xa03f, 0xd039, 0xab58, 0x26fb, 0x5d9a, + 0x9dcf, 0xe6ae, 0x6b0d, 0x106c, 0x606a, 0x1b0b, 0x96a8, 0xedc9, + 0x76a4, 0x0dc5, 0x8066, 0xfb07, 0x8b01, 0xf060, 0x7dc3, 0x06a2, + 0x5b38, 0x2059, 0xadfa, 0xd69b, 0xa69d, 0xddfc, 0x505f, 0x2b3e, + 0xb053, 0xcb32, 0x4691, 0x3df0, 0x4df6, 0x3697, 0xbb34, 0xc055, + 0x2bbf, 0x50de, 0xdd7d, 0xa61c, 0xd61a, 0xad7b, 0x20d8, 0x5bb9, + 0xc0d4, 0xbbb5, 0x3616, 0x4d77, 0x3d71, 0x4610, 0xcbb3, 0xb0d2, + 0xed48, 0x9629, 0x1b8a, 0x60eb, 0x10ed, 0x6b8c, 0xe62f, 0x9d4e, + 0x0623, 0x7d42, 0xf0e1, 0x8b80, 0xfb86, 0x80e7, 0x0d44, 0x7625, + 0xb670, 0xcd11, 0x40b2, 0x3bd3, 0x4bd5, 0x30b4, 0xbd17, 0xc676, + 0x5d1b, 0x267a, 0xabd9, 0xd0b8, 0xa0be, 0xdbdf, 0x567c, 0x2d1d, + 0x7087, 0x0be6, 0x8645, 0xfd24, 0x8d22, 0xf643, 0x7be0, 0x0081, + 0x9bec, 0xe08d, 0x6d2e, 0x164f, 0x6649, 0x1d28, 0x908b, 0xebea, + 0x577e, 0x2c1f, 0xa1bc, 0xdadd, 0xaadb, 0xd1ba, 0x5c19, 0x2778, + 0xbc15, 0xc774, 0x4ad7, 0x31b6, 0x41b0, 0x3ad1, 0xb772, 0xcc13, + 0x9189, 0xeae8, 0x674b, 0x1c2a, 0x6c2c, 0x174d, 0x9aee, 0xe18f, + 0x7ae2, 0x0183, 0x8c20, 0xf741, 0x8747, 0xfc26, 0x7185, 0x0ae4, + 0xcab1, 0xb1d0, 0x3c73, 0x4712, 0x3714, 0x4c75, 0xc1d6, 0xbab7, + 0x21da, 0x5abb, 0xd718, 0xac79, 0xdc7f, 0xa71e, 0x2abd, 0x51dc, + 0x0c46, 0x7727, 0xfa84, 0x81e5, 0xf1e3, 0x8a82, 0x0721, 0x7c40, + 0xe72d, 0x9c4c, 0x11ef, 0x6a8e, 0x1a88, 0x61e9, 0xec4a, 0x972b, + 0x7cc1, 0x07a0, 0x8a03, 0xf162, 0x8164, 0xfa05, 0x77a6, 0x0cc7, + 0x97aa, 0xeccb, 0x6168, 0x1a09, 0x6a0f, 0x116e, 0x9ccd, 0xe7ac, + 0xba36, 0xc157, 0x4cf4, 0x3795, 0x4793, 0x3cf2, 0xb151, 0xca30, + 0x515d, 0x2a3c, 0xa79f, 0xdcfe, 0xacf8, 0xd799, 0x5a3a, 0x215b, + 0xe10e, 0x9a6f, 0x17cc, 0x6cad, 0x1cab, 0x67ca, 0xea69, 0x9108, + 0x0a65, 0x7104, 0xfca7, 0x87c6, 0xf7c0, 0x8ca1, 0x0102, 0x7a63, + 0x27f9, 0x5c98, 0xd13b, 0xaa5a, 0xda5c, 0xa13d, 0x2c9e, 0x57ff, + 0xcc92, 0xb7f3, 0x3a50, 0x4131, 0x3137, 0x4a56, 0xc7f5, 0xbc94, + }, + { + 0x0000, 0xaefc, 0x4dd9, 0xe325, 0x9bb2, 0x354e, 0xd66b, 0x7897, + 0x2745, 0x89b9, 0x6a9c, 0xc460, 0xbcf7, 0x120b, 0xf12e, 0x5fd2, + 0x4e8a, 0xe076, 0x0353, 0xadaf, 0xd538, 0x7bc4, 0x98e1, 0x361d, + 0x69cf, 0xc733, 0x2416, 0x8aea, 0xf27d, 0x5c81, 0xbfa4, 0x1158, + 0x9d14, 0x33e8, 0xd0cd, 0x7e31, 0x06a6, 0xa85a, 0x4b7f, 0xe583, + 0xba51, 0x14ad, 0xf788, 0x5974, 0x21e3, 0x8f1f, 0x6c3a, 0xc2c6, + 0xd39e, 0x7d62, 0x9e47, 0x30bb, 0x482c, 0xe6d0, 0x05f5, 0xab09, + 0xf4db, 0x5a27, 0xb902, 0x17fe, 0x6f69, 0xc195, 0x22b0, 0x8c4c, + 0x2a09, 0x84f5, 0x67d0, 0xc92c, 0xb1bb, 0x1f47, 0xfc62, 0x529e, + 0x0d4c, 0xa3b0, 0x4095, 0xee69, 0x96fe, 0x3802, 0xdb27, 0x75db, + 0x6483, 0xca7f, 0x295a, 0x87a6, 0xff31, 0x51cd, 0xb2e8, 0x1c14, + 0x43c6, 0xed3a, 0x0e1f, 0xa0e3, 0xd874, 0x7688, 0x95ad, 0x3b51, + 0xb71d, 0x19e1, 0xfac4, 0x5438, 0x2caf, 0x8253, 0x6176, 0xcf8a, + 0x9058, 0x3ea4, 0xdd81, 0x737d, 0x0bea, 0xa516, 0x4633, 0xe8cf, + 0xf997, 0x576b, 0xb44e, 0x1ab2, 0x6225, 0xccd9, 0x2ffc, 0x8100, + 0xded2, 0x702e, 0x930b, 0x3df7, 0x4560, 0xeb9c, 0x08b9, 0xa645, + 0x5412, 0xfaee, 0x19cb, 0xb737, 0xcfa0, 0x615c, 0x8279, 0x2c85, + 0x7357, 0xddab, 0x3e8e, 0x9072, 0xe8e5, 0x4619, 0xa53c, 0x0bc0, + 0x1a98, 0xb464, 0x5741, 0xf9bd, 0x812a, 0x2fd6, 0xccf3, 0x620f, + 0x3ddd, 0x9321, 0x7004, 0xdef8, 0xa66f, 0x0893, 0xebb6, 0x454a, + 0xc906, 0x67fa, 0x84df, 0x2a23, 0x52b4, 0xfc48, 0x1f6d, 0xb191, + 0xee43, 0x40bf, 0xa39a, 0x0d66, 0x75f1, 0xdb0d, 0x3828, 0x96d4, + 0x878c, 0x2970, 0xca55, 0x64a9, 0x1c3e, 0xb2c2, 0x51e7, 0xff1b, + 0xa0c9, 0x0e35, 0xed10, 0x43ec, 0x3b7b, 0x9587, 0x76a2, 0xd85e, + 0x7e1b, 0xd0e7, 0x33c2, 0x9d3e, 0xe5a9, 0x4b55, 0xa870, 0x068c, + 0x595e, 0xf7a2, 0x1487, 0xba7b, 0xc2ec, 0x6c10, 0x8f35, 0x21c9, + 0x3091, 0x9e6d, 0x7d48, 0xd3b4, 0xab23, 0x05df, 0xe6fa, 0x4806, + 0x17d4, 0xb928, 0x5a0d, 0xf4f1, 0x8c66, 0x229a, 0xc1bf, 0x6f43, + 0xe30f, 0x4df3, 0xaed6, 0x002a, 0x78bd, 0xd641, 0x3564, 0x9b98, + 0xc44a, 0x6ab6, 0x8993, 0x276f, 0x5ff8, 0xf104, 0x1221, 0xbcdd, + 0xad85, 0x0379, 0xe05c, 0x4ea0, 0x3637, 0x98cb, 0x7bee, 0xd512, + 0x8ac0, 0x243c, 0xc719, 0x69e5, 0x1172, 0xbf8e, 0x5cab, 0xf257, + }, + { + 0x0000, 0xa824, 0x4069, 0xe84d, 0x80d2, 0x28f6, 0xc0bb, 0x689f, + 0x1185, 0xb9a1, 0x51ec, 0xf9c8, 0x9157, 0x3973, 0xd13e, 0x791a, + 0x230a, 0x8b2e, 0x6363, 0xcb47, 0xa3d8, 0x0bfc, 0xe3b1, 0x4b95, + 0x328f, 0x9aab, 0x72e6, 0xdac2, 0xb25d, 0x1a79, 0xf234, 0x5a10, + 0x4614, 0xee30, 0x067d, 0xae59, 0xc6c6, 0x6ee2, 0x86af, 0x2e8b, + 0x5791, 0xffb5, 0x17f8, 0xbfdc, 0xd743, 0x7f67, 0x972a, 0x3f0e, + 0x651e, 0xcd3a, 0x2577, 0x8d53, 0xe5cc, 0x4de8, 0xa5a5, 0x0d81, + 0x749b, 0xdcbf, 0x34f2, 0x9cd6, 0xf449, 0x5c6d, 0xb420, 0x1c04, + 0x8c28, 0x240c, 0xcc41, 0x6465, 0x0cfa, 0xa4de, 0x4c93, 0xe4b7, + 0x9dad, 0x3589, 0xddc4, 0x75e0, 0x1d7f, 0xb55b, 0x5d16, 0xf532, + 0xaf22, 0x0706, 0xef4b, 0x476f, 0x2ff0, 0x87d4, 0x6f99, 0xc7bd, + 0xbea7, 0x1683, 0xfece, 0x56ea, 0x3e75, 0x9651, 0x7e1c, 0xd638, + 0xca3c, 0x6218, 0x8a55, 0x2271, 0x4aee, 0xe2ca, 0x0a87, 0xa2a3, + 0xdbb9, 0x739d, 0x9bd0, 0x33f4, 0x5b6b, 0xf34f, 0x1b02, 0xb326, + 0xe936, 0x4112, 0xa95f, 0x017b, 0x69e4, 0xc1c0, 0x298d, 0x81a9, + 0xf8b3, 0x5097, 0xb8da, 0x10fe, 0x7861, 0xd045, 0x3808, 0x902c, + 0x0871, 0xa055, 0x4818, 0xe03c, 0x88a3, 0x2087, 0xc8ca, 0x60ee, + 0x19f4, 0xb1d0, 0x599d, 0xf1b9, 0x9926, 0x3102, 0xd94f, 0x716b, + 0x2b7b, 0x835f, 0x6b12, 0xc336, 0xaba9, 0x038d, 0xebc0, 0x43e4, + 0x3afe, 0x92da, 0x7a97, 0xd2b3, 0xba2c, 0x1208, 0xfa45, 0x5261, + 0x4e65, 0xe641, 0x0e0c, 0xa628, 0xceb7, 0x6693, 0x8ede, 0x26fa, + 0x5fe0, 0xf7c4, 0x1f89, 0xb7ad, 0xdf32, 0x7716, 0x9f5b, 0x377f, + 0x6d6f, 0xc54b, 0x2d06, 0x8522, 0xedbd, 0x4599, 0xadd4, 0x05f0, + 0x7cea, 0xd4ce, 0x3c83, 0x94a7, 0xfc38, 0x541c, 0xbc51, 0x1475, + 0x8459, 0x2c7d, 0xc430, 0x6c14, 0x048b, 0xacaf, 0x44e2, 0xecc6, + 0x95dc, 0x3df8, 0xd5b5, 0x7d91, 0x150e, 0xbd2a, 0x5567, 0xfd43, + 0xa753, 0x0f77, 0xe73a, 0x4f1e, 0x2781, 0x8fa5, 0x67e8, 0xcfcc, + 0xb6d6, 0x1ef2, 0xf6bf, 0x5e9b, 0x3604, 0x9e20, 0x766d, 0xde49, + 0xc24d, 0x6a69, 0x8224, 0x2a00, 0x429f, 0xeabb, 0x02f6, 0xaad2, + 0xd3c8, 0x7bec, 0x93a1, 0x3b85, 0x531a, 0xfb3e, 0x1373, 0xbb57, + 0xe147, 0x4963, 0xa12e, 0x090a, 0x6195, 0xc9b1, 0x21fc, 0x89d8, + 0xf0c2, 0x58e6, 0xb0ab, 0x188f, 0x7010, 0xd834, 0x3079, 0x985d, + }, +}; diff --git a/ext/digest/crc16_dnp/crc16_dnp.c b/ext/digest/crc16_dnp/crc16_dnp.c index 240e62c..7da74c8 100644 --- a/ext/digest/crc16_dnp/crc16_dnp.c +++ b/ext/digest/crc16_dnp/crc16_dnp.c @@ -1,52 +1,37 @@ #include "crc16_dnp.h" - -/** - * Static table used for the table_driven implementation. - */ -static const crc16_t crc16_dnp_table[256] = { - 0x0000, 0x365e, 0x6cbc, 0x5ae2, 0xd978, 0xef26, 0xb5c4, 0x839a, - 0xff89, 0xc9d7, 0x9335, 0xa56b, 0x26f1, 0x10af, 0x4a4d, 0x7c13, - 0xb26b, 0x8435, 0xded7, 0xe889, 0x6b13, 0x5d4d, 0x07af, 0x31f1, - 0x4de2, 0x7bbc, 0x215e, 0x1700, 0x949a, 0xa2c4, 0xf826, 0xce78, - 0x29af, 0x1ff1, 0x4513, 0x734d, 0xf0d7, 0xc689, 0x9c6b, 0xaa35, - 0xd626, 0xe078, 0xba9a, 0x8cc4, 0x0f5e, 0x3900, 0x63e2, 0x55bc, - 0x9bc4, 0xad9a, 0xf778, 0xc126, 0x42bc, 0x74e2, 0x2e00, 0x185e, - 0x644d, 0x5213, 0x08f1, 0x3eaf, 0xbd35, 0x8b6b, 0xd189, 0xe7d7, - 0x535e, 0x6500, 0x3fe2, 0x09bc, 0x8a26, 0xbc78, 0xe69a, 0xd0c4, - 0xacd7, 0x9a89, 0xc06b, 0xf635, 0x75af, 0x43f1, 0x1913, 0x2f4d, - 0xe135, 0xd76b, 0x8d89, 0xbbd7, 0x384d, 0x0e13, 0x54f1, 0x62af, - 0x1ebc, 0x28e2, 0x7200, 0x445e, 0xc7c4, 0xf19a, 0xab78, 0x9d26, - 0x7af1, 0x4caf, 0x164d, 0x2013, 0xa389, 0x95d7, 0xcf35, 0xf96b, - 0x8578, 0xb326, 0xe9c4, 0xdf9a, 0x5c00, 0x6a5e, 0x30bc, 0x06e2, - 0xc89a, 0xfec4, 0xa426, 0x9278, 0x11e2, 0x27bc, 0x7d5e, 0x4b00, - 0x3713, 0x014d, 0x5baf, 0x6df1, 0xee6b, 0xd835, 0x82d7, 0xb489, - 0xa6bc, 0x90e2, 0xca00, 0xfc5e, 0x7fc4, 0x499a, 0x1378, 0x2526, - 0x5935, 0x6f6b, 0x3589, 0x03d7, 0x804d, 0xb613, 0xecf1, 0xdaaf, - 0x14d7, 0x2289, 0x786b, 0x4e35, 0xcdaf, 0xfbf1, 0xa113, 0x974d, - 0xeb5e, 0xdd00, 0x87e2, 0xb1bc, 0x3226, 0x0478, 0x5e9a, 0x68c4, - 0x8f13, 0xb94d, 0xe3af, 0xd5f1, 0x566b, 0x6035, 0x3ad7, 0x0c89, - 0x709a, 0x46c4, 0x1c26, 0x2a78, 0xa9e2, 0x9fbc, 0xc55e, 0xf300, - 0x3d78, 0x0b26, 0x51c4, 0x679a, 0xe400, 0xd25e, 0x88bc, 0xbee2, - 0xc2f1, 0xf4af, 0xae4d, 0x9813, 0x1b89, 0x2dd7, 0x7735, 0x416b, - 0xf5e2, 0xc3bc, 0x995e, 0xaf00, 0x2c9a, 0x1ac4, 0x4026, 0x7678, - 0x0a6b, 0x3c35, 0x66d7, 0x5089, 0xd313, 0xe54d, 0xbfaf, 0x89f1, - 0x4789, 0x71d7, 0x2b35, 0x1d6b, 0x9ef1, 0xa8af, 0xf24d, 0xc413, - 0xb800, 0x8e5e, 0xd4bc, 0xe2e2, 0x6178, 0x5726, 0x0dc4, 0x3b9a, - 0xdc4d, 0xea13, 0xb0f1, 0x86af, 0x0535, 0x336b, 0x6989, 0x5fd7, - 0x23c4, 0x159a, 0x4f78, 0x7926, 0xfabc, 0xcce2, 0x9600, 0xa05e, - 0x6e26, 0x5878, 0x029a, 0x34c4, 0xb75e, 0x8100, 0xdbe2, 0xedbc, - 0x91af, 0xa7f1, 0xfd13, 0xcb4d, 0x48d7, 0x7e89, 0x246b, 0x1235 -}; +#include "crc16_dnp_table.h" crc16_t crc16_dnp_update(crc16_t crc, const void *data, size_t data_len) { const unsigned char *d = (const unsigned char *)data; unsigned int tbl_idx; + for (; data_len >= SLICE_SIZE; data_len -= SLICE_SIZE) + { + crc = crc16_dnp_table[15][d[ 0] ^ ((crc >> 0) & 0xff)] ^ + crc16_dnp_table[14][d[ 1] ^ ((crc >> 8) & 0xff)] ^ + crc16_dnp_table[13][d[ 2] ] ^ + crc16_dnp_table[12][d[ 3] ] ^ + crc16_dnp_table[11][d[ 4] ] ^ + crc16_dnp_table[10][d[ 5] ] ^ + crc16_dnp_table[ 9][d[ 6] ] ^ + crc16_dnp_table[ 8][d[ 7] ] ^ + crc16_dnp_table[ 7][d[ 8] ] ^ + crc16_dnp_table[ 6][d[ 9] ] ^ + crc16_dnp_table[ 5][d[10] ] ^ + crc16_dnp_table[ 4][d[11] ] ^ + crc16_dnp_table[ 3][d[12] ] ^ + crc16_dnp_table[ 2][d[13] ] ^ + crc16_dnp_table[ 1][d[14] ] ^ + crc16_dnp_table[ 0][d[15] ]; + crc &= 0xffff; + d += SLICE_SIZE; + } + while (data_len--) { tbl_idx = (crc ^ *d) & 0xff; - crc = (crc << 8) ^ crc16_dnp_table[tbl_idx]; + crc = (crc16_dnp_table[0][tbl_idx] ^ (crc >> 8)) & 0xffff; d++; } diff --git a/ext/digest/crc16_dnp/crc16_dnp_table.h b/ext/digest/crc16_dnp/crc16_dnp_table.h new file mode 100644 index 0000000..ce10576 --- /dev/null +++ b/ext/digest/crc16_dnp/crc16_dnp_table.h @@ -0,0 +1,558 @@ +/* + * bitwidth: 16 + * generator polynomial: 0x3d65 + * input bit direction: REFLECT + * slice bytes per iteration: 16 + * slide bits per table: 8 + * + * Generated by: gentable.rb of digest-crc + */ + +#define SLICE_SIZE 16 + +static const uint16_t crc16_dnp_table[SLICE_SIZE][256] = { + { + 0x0000, 0x365e, 0x6cbc, 0x5ae2, 0xd978, 0xef26, 0xb5c4, 0x839a, + 0xff89, 0xc9d7, 0x9335, 0xa56b, 0x26f1, 0x10af, 0x4a4d, 0x7c13, + 0xb26b, 0x8435, 0xded7, 0xe889, 0x6b13, 0x5d4d, 0x07af, 0x31f1, + 0x4de2, 0x7bbc, 0x215e, 0x1700, 0x949a, 0xa2c4, 0xf826, 0xce78, + 0x29af, 0x1ff1, 0x4513, 0x734d, 0xf0d7, 0xc689, 0x9c6b, 0xaa35, + 0xd626, 0xe078, 0xba9a, 0x8cc4, 0x0f5e, 0x3900, 0x63e2, 0x55bc, + 0x9bc4, 0xad9a, 0xf778, 0xc126, 0x42bc, 0x74e2, 0x2e00, 0x185e, + 0x644d, 0x5213, 0x08f1, 0x3eaf, 0xbd35, 0x8b6b, 0xd189, 0xe7d7, + 0x535e, 0x6500, 0x3fe2, 0x09bc, 0x8a26, 0xbc78, 0xe69a, 0xd0c4, + 0xacd7, 0x9a89, 0xc06b, 0xf635, 0x75af, 0x43f1, 0x1913, 0x2f4d, + 0xe135, 0xd76b, 0x8d89, 0xbbd7, 0x384d, 0x0e13, 0x54f1, 0x62af, + 0x1ebc, 0x28e2, 0x7200, 0x445e, 0xc7c4, 0xf19a, 0xab78, 0x9d26, + 0x7af1, 0x4caf, 0x164d, 0x2013, 0xa389, 0x95d7, 0xcf35, 0xf96b, + 0x8578, 0xb326, 0xe9c4, 0xdf9a, 0x5c00, 0x6a5e, 0x30bc, 0x06e2, + 0xc89a, 0xfec4, 0xa426, 0x9278, 0x11e2, 0x27bc, 0x7d5e, 0x4b00, + 0x3713, 0x014d, 0x5baf, 0x6df1, 0xee6b, 0xd835, 0x82d7, 0xb489, + 0xa6bc, 0x90e2, 0xca00, 0xfc5e, 0x7fc4, 0x499a, 0x1378, 0x2526, + 0x5935, 0x6f6b, 0x3589, 0x03d7, 0x804d, 0xb613, 0xecf1, 0xdaaf, + 0x14d7, 0x2289, 0x786b, 0x4e35, 0xcdaf, 0xfbf1, 0xa113, 0x974d, + 0xeb5e, 0xdd00, 0x87e2, 0xb1bc, 0x3226, 0x0478, 0x5e9a, 0x68c4, + 0x8f13, 0xb94d, 0xe3af, 0xd5f1, 0x566b, 0x6035, 0x3ad7, 0x0c89, + 0x709a, 0x46c4, 0x1c26, 0x2a78, 0xa9e2, 0x9fbc, 0xc55e, 0xf300, + 0x3d78, 0x0b26, 0x51c4, 0x679a, 0xe400, 0xd25e, 0x88bc, 0xbee2, + 0xc2f1, 0xf4af, 0xae4d, 0x9813, 0x1b89, 0x2dd7, 0x7735, 0x416b, + 0xf5e2, 0xc3bc, 0x995e, 0xaf00, 0x2c9a, 0x1ac4, 0x4026, 0x7678, + 0x0a6b, 0x3c35, 0x66d7, 0x5089, 0xd313, 0xe54d, 0xbfaf, 0x89f1, + 0x4789, 0x71d7, 0x2b35, 0x1d6b, 0x9ef1, 0xa8af, 0xf24d, 0xc413, + 0xb800, 0x8e5e, 0xd4bc, 0xe2e2, 0x6178, 0x5726, 0x0dc4, 0x3b9a, + 0xdc4d, 0xea13, 0xb0f1, 0x86af, 0x0535, 0x336b, 0x6989, 0x5fd7, + 0x23c4, 0x159a, 0x4f78, 0x7926, 0xfabc, 0xcce2, 0x9600, 0xa05e, + 0x6e26, 0x5878, 0x029a, 0x34c4, 0xb75e, 0x8100, 0xdbe2, 0xedbc, + 0x91af, 0xa7f1, 0xfd13, 0xcb4d, 0x48d7, 0x7e89, 0x246b, 0x1235, + }, + { + 0x0000, 0xab4e, 0x1be5, 0xb0ab, 0x37ca, 0x9c84, 0x2c2f, 0x8761, + 0x6f94, 0xc4da, 0x7471, 0xdf3f, 0x585e, 0xf310, 0x43bb, 0xe8f5, + 0xdf28, 0x7466, 0xc4cd, 0x6f83, 0xe8e2, 0x43ac, 0xf307, 0x5849, + 0xb0bc, 0x1bf2, 0xab59, 0x0017, 0x8776, 0x2c38, 0x9c93, 0x37dd, + 0xf329, 0x5867, 0xe8cc, 0x4382, 0xc4e3, 0x6fad, 0xdf06, 0x7448, + 0x9cbd, 0x37f3, 0x8758, 0x2c16, 0xab77, 0x0039, 0xb092, 0x1bdc, + 0x2c01, 0x874f, 0x37e4, 0x9caa, 0x1bcb, 0xb085, 0x002e, 0xab60, + 0x4395, 0xe8db, 0x5870, 0xf33e, 0x745f, 0xdf11, 0x6fba, 0xc4f4, + 0xab2b, 0x0065, 0xb0ce, 0x1b80, 0x9ce1, 0x37af, 0x8704, 0x2c4a, + 0xc4bf, 0x6ff1, 0xdf5a, 0x7414, 0xf375, 0x583b, 0xe890, 0x43de, + 0x7403, 0xdf4d, 0x6fe6, 0xc4a8, 0x43c9, 0xe887, 0x582c, 0xf362, + 0x1b97, 0xb0d9, 0x0072, 0xab3c, 0x2c5d, 0x8713, 0x37b8, 0x9cf6, + 0x5802, 0xf34c, 0x43e7, 0xe8a9, 0x6fc8, 0xc486, 0x742d, 0xdf63, + 0x3796, 0x9cd8, 0x2c73, 0x873d, 0x005c, 0xab12, 0x1bb9, 0xb0f7, + 0x872a, 0x2c64, 0x9ccf, 0x3781, 0xb0e0, 0x1bae, 0xab05, 0x004b, + 0xe8be, 0x43f0, 0xf35b, 0x5815, 0xdf74, 0x743a, 0xc491, 0x6fdf, + 0x1b2f, 0xb061, 0x00ca, 0xab84, 0x2ce5, 0x87ab, 0x3700, 0x9c4e, + 0x74bb, 0xdff5, 0x6f5e, 0xc410, 0x4371, 0xe83f, 0x5894, 0xf3da, + 0xc407, 0x6f49, 0xdfe2, 0x74ac, 0xf3cd, 0x5883, 0xe828, 0x4366, + 0xab93, 0x00dd, 0xb076, 0x1b38, 0x9c59, 0x3717, 0x87bc, 0x2cf2, + 0xe806, 0x4348, 0xf3e3, 0x58ad, 0xdfcc, 0x7482, 0xc429, 0x6f67, + 0x8792, 0x2cdc, 0x9c77, 0x3739, 0xb058, 0x1b16, 0xabbd, 0x00f3, + 0x372e, 0x9c60, 0x2ccb, 0x8785, 0x00e4, 0xabaa, 0x1b01, 0xb04f, + 0x58ba, 0xf3f4, 0x435f, 0xe811, 0x6f70, 0xc43e, 0x7495, 0xdfdb, + 0xb004, 0x1b4a, 0xabe1, 0x00af, 0x87ce, 0x2c80, 0x9c2b, 0x3765, + 0xdf90, 0x74de, 0xc475, 0x6f3b, 0xe85a, 0x4314, 0xf3bf, 0x58f1, + 0x6f2c, 0xc462, 0x74c9, 0xdf87, 0x58e6, 0xf3a8, 0x4303, 0xe84d, + 0x00b8, 0xabf6, 0x1b5d, 0xb013, 0x3772, 0x9c3c, 0x2c97, 0x87d9, + 0x432d, 0xe863, 0x58c8, 0xf386, 0x74e7, 0xdfa9, 0x6f02, 0xc44c, + 0x2cb9, 0x87f7, 0x375c, 0x9c12, 0x1b73, 0xb03d, 0x0096, 0xabd8, + 0x9c05, 0x374b, 0x87e0, 0x2cae, 0xabcf, 0x0081, 0xb02a, 0x1b64, + 0xf391, 0x58df, 0xe874, 0x433a, 0xc45b, 0x6f15, 0xdfbe, 0x74f0, + }, + { + 0x0000, 0x19b8, 0x3370, 0x2ac8, 0x66e0, 0x7f58, 0x5590, 0x4c28, + 0xcdc0, 0xd478, 0xfeb0, 0xe708, 0xab20, 0xb298, 0x9850, 0x81e8, + 0xd6f9, 0xcf41, 0xe589, 0xfc31, 0xb019, 0xa9a1, 0x8369, 0x9ad1, + 0x1b39, 0x0281, 0x2849, 0x31f1, 0x7dd9, 0x6461, 0x4ea9, 0x5711, + 0xe08b, 0xf933, 0xd3fb, 0xca43, 0x866b, 0x9fd3, 0xb51b, 0xaca3, + 0x2d4b, 0x34f3, 0x1e3b, 0x0783, 0x4bab, 0x5213, 0x78db, 0x6163, + 0x3672, 0x2fca, 0x0502, 0x1cba, 0x5092, 0x492a, 0x63e2, 0x7a5a, + 0xfbb2, 0xe20a, 0xc8c2, 0xd17a, 0x9d52, 0x84ea, 0xae22, 0xb79a, + 0x8c6f, 0x95d7, 0xbf1f, 0xa6a7, 0xea8f, 0xf337, 0xd9ff, 0xc047, + 0x41af, 0x5817, 0x72df, 0x6b67, 0x274f, 0x3ef7, 0x143f, 0x0d87, + 0x5a96, 0x432e, 0x69e6, 0x705e, 0x3c76, 0x25ce, 0x0f06, 0x16be, + 0x9756, 0x8eee, 0xa426, 0xbd9e, 0xf1b6, 0xe80e, 0xc2c6, 0xdb7e, + 0x6ce4, 0x755c, 0x5f94, 0x462c, 0x0a04, 0x13bc, 0x3974, 0x20cc, + 0xa124, 0xb89c, 0x9254, 0x8bec, 0xc7c4, 0xde7c, 0xf4b4, 0xed0c, + 0xba1d, 0xa3a5, 0x896d, 0x90d5, 0xdcfd, 0xc545, 0xef8d, 0xf635, + 0x77dd, 0x6e65, 0x44ad, 0x5d15, 0x113d, 0x0885, 0x224d, 0x3bf5, + 0x55a7, 0x4c1f, 0x66d7, 0x7f6f, 0x3347, 0x2aff, 0x0037, 0x198f, + 0x9867, 0x81df, 0xab17, 0xb2af, 0xfe87, 0xe73f, 0xcdf7, 0xd44f, + 0x835e, 0x9ae6, 0xb02e, 0xa996, 0xe5be, 0xfc06, 0xd6ce, 0xcf76, + 0x4e9e, 0x5726, 0x7dee, 0x6456, 0x287e, 0x31c6, 0x1b0e, 0x02b6, + 0xb52c, 0xac94, 0x865c, 0x9fe4, 0xd3cc, 0xca74, 0xe0bc, 0xf904, + 0x78ec, 0x6154, 0x4b9c, 0x5224, 0x1e0c, 0x07b4, 0x2d7c, 0x34c4, + 0x63d5, 0x7a6d, 0x50a5, 0x491d, 0x0535, 0x1c8d, 0x3645, 0x2ffd, + 0xae15, 0xb7ad, 0x9d65, 0x84dd, 0xc8f5, 0xd14d, 0xfb85, 0xe23d, + 0xd9c8, 0xc070, 0xeab8, 0xf300, 0xbf28, 0xa690, 0x8c58, 0x95e0, + 0x1408, 0x0db0, 0x2778, 0x3ec0, 0x72e8, 0x6b50, 0x4198, 0x5820, + 0x0f31, 0x1689, 0x3c41, 0x25f9, 0x69d1, 0x7069, 0x5aa1, 0x4319, + 0xc2f1, 0xdb49, 0xf181, 0xe839, 0xa411, 0xbda9, 0x9761, 0x8ed9, + 0x3943, 0x20fb, 0x0a33, 0x138b, 0x5fa3, 0x461b, 0x6cd3, 0x756b, + 0xf483, 0xed3b, 0xc7f3, 0xde4b, 0x9263, 0x8bdb, 0xa113, 0xb8ab, + 0xefba, 0xf602, 0xdcca, 0xc572, 0x895a, 0x90e2, 0xba2a, 0xa392, + 0x227a, 0x3bc2, 0x110a, 0x08b2, 0x449a, 0x5d22, 0x77ea, 0x6e52, + }, + { + 0x0000, 0xc2e8, 0xc8a9, 0x0a41, 0xdc2b, 0x1ec3, 0x1482, 0xd66a, + 0xf52f, 0x37c7, 0x3d86, 0xff6e, 0x2904, 0xebec, 0xe1ad, 0x2345, + 0xa727, 0x65cf, 0x6f8e, 0xad66, 0x7b0c, 0xb9e4, 0xb3a5, 0x714d, + 0x5208, 0x90e0, 0x9aa1, 0x5849, 0x8e23, 0x4ccb, 0x468a, 0x8462, + 0x0337, 0xc1df, 0xcb9e, 0x0976, 0xdf1c, 0x1df4, 0x17b5, 0xd55d, + 0xf618, 0x34f0, 0x3eb1, 0xfc59, 0x2a33, 0xe8db, 0xe29a, 0x2072, + 0xa410, 0x66f8, 0x6cb9, 0xae51, 0x783b, 0xbad3, 0xb092, 0x727a, + 0x513f, 0x93d7, 0x9996, 0x5b7e, 0x8d14, 0x4ffc, 0x45bd, 0x8755, + 0x066e, 0xc486, 0xcec7, 0x0c2f, 0xda45, 0x18ad, 0x12ec, 0xd004, + 0xf341, 0x31a9, 0x3be8, 0xf900, 0x2f6a, 0xed82, 0xe7c3, 0x252b, + 0xa149, 0x63a1, 0x69e0, 0xab08, 0x7d62, 0xbf8a, 0xb5cb, 0x7723, + 0x5466, 0x968e, 0x9ccf, 0x5e27, 0x884d, 0x4aa5, 0x40e4, 0x820c, + 0x0559, 0xc7b1, 0xcdf0, 0x0f18, 0xd972, 0x1b9a, 0x11db, 0xd333, + 0xf076, 0x329e, 0x38df, 0xfa37, 0x2c5d, 0xeeb5, 0xe4f4, 0x261c, + 0xa27e, 0x6096, 0x6ad7, 0xa83f, 0x7e55, 0xbcbd, 0xb6fc, 0x7414, + 0x5751, 0x95b9, 0x9ff8, 0x5d10, 0x8b7a, 0x4992, 0x43d3, 0x813b, + 0x0cdc, 0xce34, 0xc475, 0x069d, 0xd0f7, 0x121f, 0x185e, 0xdab6, + 0xf9f3, 0x3b1b, 0x315a, 0xf3b2, 0x25d8, 0xe730, 0xed71, 0x2f99, + 0xabfb, 0x6913, 0x6352, 0xa1ba, 0x77d0, 0xb538, 0xbf79, 0x7d91, + 0x5ed4, 0x9c3c, 0x967d, 0x5495, 0x82ff, 0x4017, 0x4a56, 0x88be, + 0x0feb, 0xcd03, 0xc742, 0x05aa, 0xd3c0, 0x1128, 0x1b69, 0xd981, + 0xfac4, 0x382c, 0x326d, 0xf085, 0x26ef, 0xe407, 0xee46, 0x2cae, + 0xa8cc, 0x6a24, 0x6065, 0xa28d, 0x74e7, 0xb60f, 0xbc4e, 0x7ea6, + 0x5de3, 0x9f0b, 0x954a, 0x57a2, 0x81c8, 0x4320, 0x4961, 0x8b89, + 0x0ab2, 0xc85a, 0xc21b, 0x00f3, 0xd699, 0x1471, 0x1e30, 0xdcd8, + 0xff9d, 0x3d75, 0x3734, 0xf5dc, 0x23b6, 0xe15e, 0xeb1f, 0x29f7, + 0xad95, 0x6f7d, 0x653c, 0xa7d4, 0x71be, 0xb356, 0xb917, 0x7bff, + 0x58ba, 0x9a52, 0x9013, 0x52fb, 0x8491, 0x4679, 0x4c38, 0x8ed0, + 0x0985, 0xcb6d, 0xc12c, 0x03c4, 0xd5ae, 0x1746, 0x1d07, 0xdfef, + 0xfcaa, 0x3e42, 0x3403, 0xf6eb, 0x2081, 0xe269, 0xe828, 0x2ac0, + 0xaea2, 0x6c4a, 0x660b, 0xa4e3, 0x7289, 0xb061, 0xba20, 0x78c8, + 0x5b8d, 0x9965, 0x9324, 0x51cc, 0x87a6, 0x454e, 0x4f0f, 0x8de7, + }, + { + 0x0000, 0x2306, 0x460c, 0x650a, 0x8c18, 0xaf1e, 0xca14, 0xe912, + 0x5549, 0x764f, 0x1345, 0x3043, 0xd951, 0xfa57, 0x9f5d, 0xbc5b, + 0xaa92, 0x8994, 0xec9e, 0xcf98, 0x268a, 0x058c, 0x6086, 0x4380, + 0xffdb, 0xdcdd, 0xb9d7, 0x9ad1, 0x73c3, 0x50c5, 0x35cf, 0x16c9, + 0x185d, 0x3b5b, 0x5e51, 0x7d57, 0x9445, 0xb743, 0xd249, 0xf14f, + 0x4d14, 0x6e12, 0x0b18, 0x281e, 0xc10c, 0xe20a, 0x8700, 0xa406, + 0xb2cf, 0x91c9, 0xf4c3, 0xd7c5, 0x3ed7, 0x1dd1, 0x78db, 0x5bdd, + 0xe786, 0xc480, 0xa18a, 0x828c, 0x6b9e, 0x4898, 0x2d92, 0x0e94, + 0x30ba, 0x13bc, 0x76b6, 0x55b0, 0xbca2, 0x9fa4, 0xfaae, 0xd9a8, + 0x65f3, 0x46f5, 0x23ff, 0x00f9, 0xe9eb, 0xcaed, 0xafe7, 0x8ce1, + 0x9a28, 0xb92e, 0xdc24, 0xff22, 0x1630, 0x3536, 0x503c, 0x733a, + 0xcf61, 0xec67, 0x896d, 0xaa6b, 0x4379, 0x607f, 0x0575, 0x2673, + 0x28e7, 0x0be1, 0x6eeb, 0x4ded, 0xa4ff, 0x87f9, 0xe2f3, 0xc1f5, + 0x7dae, 0x5ea8, 0x3ba2, 0x18a4, 0xf1b6, 0xd2b0, 0xb7ba, 0x94bc, + 0x8275, 0xa173, 0xc479, 0xe77f, 0x0e6d, 0x2d6b, 0x4861, 0x6b67, + 0xd73c, 0xf43a, 0x9130, 0xb236, 0x5b24, 0x7822, 0x1d28, 0x3e2e, + 0x6174, 0x4272, 0x2778, 0x047e, 0xed6c, 0xce6a, 0xab60, 0x8866, + 0x343d, 0x173b, 0x7231, 0x5137, 0xb825, 0x9b23, 0xfe29, 0xdd2f, + 0xcbe6, 0xe8e0, 0x8dea, 0xaeec, 0x47fe, 0x64f8, 0x01f2, 0x22f4, + 0x9eaf, 0xbda9, 0xd8a3, 0xfba5, 0x12b7, 0x31b1, 0x54bb, 0x77bd, + 0x7929, 0x5a2f, 0x3f25, 0x1c23, 0xf531, 0xd637, 0xb33d, 0x903b, + 0x2c60, 0x0f66, 0x6a6c, 0x496a, 0xa078, 0x837e, 0xe674, 0xc572, + 0xd3bb, 0xf0bd, 0x95b7, 0xb6b1, 0x5fa3, 0x7ca5, 0x19af, 0x3aa9, + 0x86f2, 0xa5f4, 0xc0fe, 0xe3f8, 0x0aea, 0x29ec, 0x4ce6, 0x6fe0, + 0x51ce, 0x72c8, 0x17c2, 0x34c4, 0xddd6, 0xfed0, 0x9bda, 0xb8dc, + 0x0487, 0x2781, 0x428b, 0x618d, 0x889f, 0xab99, 0xce93, 0xed95, + 0xfb5c, 0xd85a, 0xbd50, 0x9e56, 0x7744, 0x5442, 0x3148, 0x124e, + 0xae15, 0x8d13, 0xe819, 0xcb1f, 0x220d, 0x010b, 0x6401, 0x4707, + 0x4993, 0x6a95, 0x0f9f, 0x2c99, 0xc58b, 0xe68d, 0x8387, 0xa081, + 0x1cda, 0x3fdc, 0x5ad6, 0x79d0, 0x90c2, 0xb3c4, 0xd6ce, 0xf5c8, + 0xe301, 0xc007, 0xa50d, 0x860b, 0x6f19, 0x4c1f, 0x2915, 0x0a13, + 0xb648, 0x954e, 0xf044, 0xd342, 0x3a50, 0x1956, 0x7c5c, 0x5f5a, + }, + { + 0x0000, 0xb5e7, 0x26b7, 0x9350, 0x4d6e, 0xf889, 0x6bd9, 0xde3e, + 0x9adc, 0x2f3b, 0xbc6b, 0x098c, 0xd7b2, 0x6255, 0xf105, 0x44e2, + 0x78c1, 0xcd26, 0x5e76, 0xeb91, 0x35af, 0x8048, 0x1318, 0xa6ff, + 0xe21d, 0x57fa, 0xc4aa, 0x714d, 0xaf73, 0x1a94, 0x89c4, 0x3c23, + 0xf182, 0x4465, 0xd735, 0x62d2, 0xbcec, 0x090b, 0x9a5b, 0x2fbc, + 0x6b5e, 0xdeb9, 0x4de9, 0xf80e, 0x2630, 0x93d7, 0x0087, 0xb560, + 0x8943, 0x3ca4, 0xaff4, 0x1a13, 0xc42d, 0x71ca, 0xe29a, 0x577d, + 0x139f, 0xa678, 0x3528, 0x80cf, 0x5ef1, 0xeb16, 0x7846, 0xcda1, + 0xae7d, 0x1b9a, 0x88ca, 0x3d2d, 0xe313, 0x56f4, 0xc5a4, 0x7043, + 0x34a1, 0x8146, 0x1216, 0xa7f1, 0x79cf, 0xcc28, 0x5f78, 0xea9f, + 0xd6bc, 0x635b, 0xf00b, 0x45ec, 0x9bd2, 0x2e35, 0xbd65, 0x0882, + 0x4c60, 0xf987, 0x6ad7, 0xdf30, 0x010e, 0xb4e9, 0x27b9, 0x925e, + 0x5fff, 0xea18, 0x7948, 0xccaf, 0x1291, 0xa776, 0x3426, 0x81c1, + 0xc523, 0x70c4, 0xe394, 0x5673, 0x884d, 0x3daa, 0xaefa, 0x1b1d, + 0x273e, 0x92d9, 0x0189, 0xb46e, 0x6a50, 0xdfb7, 0x4ce7, 0xf900, + 0xbde2, 0x0805, 0x9b55, 0x2eb2, 0xf08c, 0x456b, 0xd63b, 0x63dc, + 0x1183, 0xa464, 0x3734, 0x82d3, 0x5ced, 0xe90a, 0x7a5a, 0xcfbd, + 0x8b5f, 0x3eb8, 0xade8, 0x180f, 0xc631, 0x73d6, 0xe086, 0x5561, + 0x6942, 0xdca5, 0x4ff5, 0xfa12, 0x242c, 0x91cb, 0x029b, 0xb77c, + 0xf39e, 0x4679, 0xd529, 0x60ce, 0xbef0, 0x0b17, 0x9847, 0x2da0, + 0xe001, 0x55e6, 0xc6b6, 0x7351, 0xad6f, 0x1888, 0x8bd8, 0x3e3f, + 0x7add, 0xcf3a, 0x5c6a, 0xe98d, 0x37b3, 0x8254, 0x1104, 0xa4e3, + 0x98c0, 0x2d27, 0xbe77, 0x0b90, 0xd5ae, 0x6049, 0xf319, 0x46fe, + 0x021c, 0xb7fb, 0x24ab, 0x914c, 0x4f72, 0xfa95, 0x69c5, 0xdc22, + 0xbffe, 0x0a19, 0x9949, 0x2cae, 0xf290, 0x4777, 0xd427, 0x61c0, + 0x2522, 0x90c5, 0x0395, 0xb672, 0x684c, 0xddab, 0x4efb, 0xfb1c, + 0xc73f, 0x72d8, 0xe188, 0x546f, 0x8a51, 0x3fb6, 0xace6, 0x1901, + 0x5de3, 0xe804, 0x7b54, 0xceb3, 0x108d, 0xa56a, 0x363a, 0x83dd, + 0x4e7c, 0xfb9b, 0x68cb, 0xdd2c, 0x0312, 0xb6f5, 0x25a5, 0x9042, + 0xd4a0, 0x6147, 0xf217, 0x47f0, 0x99ce, 0x2c29, 0xbf79, 0x0a9e, + 0x36bd, 0x835a, 0x100a, 0xa5ed, 0x7bd3, 0xce34, 0x5d64, 0xe883, + 0xac61, 0x1986, 0x8ad6, 0x3f31, 0xe10f, 0x54e8, 0xc7b8, 0x725f, + }, + { + 0x0000, 0x5f62, 0xbec4, 0xe1a6, 0x30f1, 0x6f93, 0x8e35, 0xd157, + 0x61e2, 0x3e80, 0xdf26, 0x8044, 0x5113, 0x0e71, 0xefd7, 0xb0b5, + 0xc3c4, 0x9ca6, 0x7d00, 0x2262, 0xf335, 0xac57, 0x4df1, 0x1293, + 0xa226, 0xfd44, 0x1ce2, 0x4380, 0x92d7, 0xcdb5, 0x2c13, 0x7371, + 0xcaf1, 0x9593, 0x7435, 0x2b57, 0xfa00, 0xa562, 0x44c4, 0x1ba6, + 0xab13, 0xf471, 0x15d7, 0x4ab5, 0x9be2, 0xc480, 0x2526, 0x7a44, + 0x0935, 0x5657, 0xb7f1, 0xe893, 0x39c4, 0x66a6, 0x8700, 0xd862, + 0x68d7, 0x37b5, 0xd613, 0x8971, 0x5826, 0x0744, 0xe6e2, 0xb980, + 0xd89b, 0x87f9, 0x665f, 0x393d, 0xe86a, 0xb708, 0x56ae, 0x09cc, + 0xb979, 0xe61b, 0x07bd, 0x58df, 0x8988, 0xd6ea, 0x374c, 0x682e, + 0x1b5f, 0x443d, 0xa59b, 0xfaf9, 0x2bae, 0x74cc, 0x956a, 0xca08, + 0x7abd, 0x25df, 0xc479, 0x9b1b, 0x4a4c, 0x152e, 0xf488, 0xabea, + 0x126a, 0x4d08, 0xacae, 0xf3cc, 0x229b, 0x7df9, 0x9c5f, 0xc33d, + 0x7388, 0x2cea, 0xcd4c, 0x922e, 0x4379, 0x1c1b, 0xfdbd, 0xa2df, + 0xd1ae, 0x8ecc, 0x6f6a, 0x3008, 0xe15f, 0xbe3d, 0x5f9b, 0x00f9, + 0xb04c, 0xef2e, 0x0e88, 0x51ea, 0x80bd, 0xdfdf, 0x3e79, 0x611b, + 0xfc4f, 0xa32d, 0x428b, 0x1de9, 0xccbe, 0x93dc, 0x727a, 0x2d18, + 0x9dad, 0xc2cf, 0x2369, 0x7c0b, 0xad5c, 0xf23e, 0x1398, 0x4cfa, + 0x3f8b, 0x60e9, 0x814f, 0xde2d, 0x0f7a, 0x5018, 0xb1be, 0xeedc, + 0x5e69, 0x010b, 0xe0ad, 0xbfcf, 0x6e98, 0x31fa, 0xd05c, 0x8f3e, + 0x36be, 0x69dc, 0x887a, 0xd718, 0x064f, 0x592d, 0xb88b, 0xe7e9, + 0x575c, 0x083e, 0xe998, 0xb6fa, 0x67ad, 0x38cf, 0xd969, 0x860b, + 0xf57a, 0xaa18, 0x4bbe, 0x14dc, 0xc58b, 0x9ae9, 0x7b4f, 0x242d, + 0x9498, 0xcbfa, 0x2a5c, 0x753e, 0xa469, 0xfb0b, 0x1aad, 0x45cf, + 0x24d4, 0x7bb6, 0x9a10, 0xc572, 0x1425, 0x4b47, 0xaae1, 0xf583, + 0x4536, 0x1a54, 0xfbf2, 0xa490, 0x75c7, 0x2aa5, 0xcb03, 0x9461, + 0xe710, 0xb872, 0x59d4, 0x06b6, 0xd7e1, 0x8883, 0x6925, 0x3647, + 0x86f2, 0xd990, 0x3836, 0x6754, 0xb603, 0xe961, 0x08c7, 0x57a5, + 0xee25, 0xb147, 0x50e1, 0x0f83, 0xded4, 0x81b6, 0x6010, 0x3f72, + 0x8fc7, 0xd0a5, 0x3103, 0x6e61, 0xbf36, 0xe054, 0x01f2, 0x5e90, + 0x2de1, 0x7283, 0x9325, 0xcc47, 0x1d10, 0x4272, 0xa3d4, 0xfcb6, + 0x4c03, 0x1361, 0xf2c7, 0xada5, 0x7cf2, 0x2390, 0xc236, 0x9d54, + }, + { + 0x0000, 0x1612, 0x2c24, 0x3a36, 0x5848, 0x4e5a, 0x746c, 0x627e, + 0xb090, 0xa682, 0x9cb4, 0x8aa6, 0xe8d8, 0xfeca, 0xc4fc, 0xd2ee, + 0x2c59, 0x3a4b, 0x007d, 0x166f, 0x7411, 0x6203, 0x5835, 0x4e27, + 0x9cc9, 0x8adb, 0xb0ed, 0xa6ff, 0xc481, 0xd293, 0xe8a5, 0xfeb7, + 0x58b2, 0x4ea0, 0x7496, 0x6284, 0x00fa, 0x16e8, 0x2cde, 0x3acc, + 0xe822, 0xfe30, 0xc406, 0xd214, 0xb06a, 0xa678, 0x9c4e, 0x8a5c, + 0x74eb, 0x62f9, 0x58cf, 0x4edd, 0x2ca3, 0x3ab1, 0x0087, 0x1695, + 0xc47b, 0xd269, 0xe85f, 0xfe4d, 0x9c33, 0x8a21, 0xb017, 0xa605, + 0xb164, 0xa776, 0x9d40, 0x8b52, 0xe92c, 0xff3e, 0xc508, 0xd31a, + 0x01f4, 0x17e6, 0x2dd0, 0x3bc2, 0x59bc, 0x4fae, 0x7598, 0x638a, + 0x9d3d, 0x8b2f, 0xb119, 0xa70b, 0xc575, 0xd367, 0xe951, 0xff43, + 0x2dad, 0x3bbf, 0x0189, 0x179b, 0x75e5, 0x63f7, 0x59c1, 0x4fd3, + 0xe9d6, 0xffc4, 0xc5f2, 0xd3e0, 0xb19e, 0xa78c, 0x9dba, 0x8ba8, + 0x5946, 0x4f54, 0x7562, 0x6370, 0x010e, 0x171c, 0x2d2a, 0x3b38, + 0xc58f, 0xd39d, 0xe9ab, 0xffb9, 0x9dc7, 0x8bd5, 0xb1e3, 0xa7f1, + 0x751f, 0x630d, 0x593b, 0x4f29, 0x2d57, 0x3b45, 0x0173, 0x1761, + 0x2fb1, 0x39a3, 0x0395, 0x1587, 0x77f9, 0x61eb, 0x5bdd, 0x4dcf, + 0x9f21, 0x8933, 0xb305, 0xa517, 0xc769, 0xd17b, 0xeb4d, 0xfd5f, + 0x03e8, 0x15fa, 0x2fcc, 0x39de, 0x5ba0, 0x4db2, 0x7784, 0x6196, + 0xb378, 0xa56a, 0x9f5c, 0x894e, 0xeb30, 0xfd22, 0xc714, 0xd106, + 0x7703, 0x6111, 0x5b27, 0x4d35, 0x2f4b, 0x3959, 0x036f, 0x157d, + 0xc793, 0xd181, 0xebb7, 0xfda5, 0x9fdb, 0x89c9, 0xb3ff, 0xa5ed, + 0x5b5a, 0x4d48, 0x777e, 0x616c, 0x0312, 0x1500, 0x2f36, 0x3924, + 0xebca, 0xfdd8, 0xc7ee, 0xd1fc, 0xb382, 0xa590, 0x9fa6, 0x89b4, + 0x9ed5, 0x88c7, 0xb2f1, 0xa4e3, 0xc69d, 0xd08f, 0xeab9, 0xfcab, + 0x2e45, 0x3857, 0x0261, 0x1473, 0x760d, 0x601f, 0x5a29, 0x4c3b, + 0xb28c, 0xa49e, 0x9ea8, 0x88ba, 0xeac4, 0xfcd6, 0xc6e0, 0xd0f2, + 0x021c, 0x140e, 0x2e38, 0x382a, 0x5a54, 0x4c46, 0x7670, 0x6062, + 0xc667, 0xd075, 0xea43, 0xfc51, 0x9e2f, 0x883d, 0xb20b, 0xa419, + 0x76f7, 0x60e5, 0x5ad3, 0x4cc1, 0x2ebf, 0x38ad, 0x029b, 0x1489, + 0xea3e, 0xfc2c, 0xc61a, 0xd008, 0xb276, 0xa464, 0x9e52, 0x8840, + 0x5aae, 0x4cbc, 0x768a, 0x6098, 0x02e6, 0x14f4, 0x2ec2, 0x38d0, + }, + { + 0x0000, 0xdec1, 0xf0fb, 0x2e3a, 0xac8f, 0x724e, 0x5c74, 0x82b5, + 0x1467, 0xcaa6, 0xe49c, 0x3a5d, 0xb8e8, 0x6629, 0x4813, 0x96d2, + 0x28ce, 0xf60f, 0xd835, 0x06f4, 0x8441, 0x5a80, 0x74ba, 0xaa7b, + 0x3ca9, 0xe268, 0xcc52, 0x1293, 0x9026, 0x4ee7, 0x60dd, 0xbe1c, + 0x519c, 0x8f5d, 0xa167, 0x7fa6, 0xfd13, 0x23d2, 0x0de8, 0xd329, + 0x45fb, 0x9b3a, 0xb500, 0x6bc1, 0xe974, 0x37b5, 0x198f, 0xc74e, + 0x7952, 0xa793, 0x89a9, 0x5768, 0xd5dd, 0x0b1c, 0x2526, 0xfbe7, + 0x6d35, 0xb3f4, 0x9dce, 0x430f, 0xc1ba, 0x1f7b, 0x3141, 0xef80, + 0xa338, 0x7df9, 0x53c3, 0x8d02, 0x0fb7, 0xd176, 0xff4c, 0x218d, + 0xb75f, 0x699e, 0x47a4, 0x9965, 0x1bd0, 0xc511, 0xeb2b, 0x35ea, + 0x8bf6, 0x5537, 0x7b0d, 0xa5cc, 0x2779, 0xf9b8, 0xd782, 0x0943, + 0x9f91, 0x4150, 0x6f6a, 0xb1ab, 0x331e, 0xeddf, 0xc3e5, 0x1d24, + 0xf2a4, 0x2c65, 0x025f, 0xdc9e, 0x5e2b, 0x80ea, 0xaed0, 0x7011, + 0xe6c3, 0x3802, 0x1638, 0xc8f9, 0x4a4c, 0x948d, 0xbab7, 0x6476, + 0xda6a, 0x04ab, 0x2a91, 0xf450, 0x76e5, 0xa824, 0x861e, 0x58df, + 0xce0d, 0x10cc, 0x3ef6, 0xe037, 0x6282, 0xbc43, 0x9279, 0x4cb8, + 0x0b09, 0xd5c8, 0xfbf2, 0x2533, 0xa786, 0x7947, 0x577d, 0x89bc, + 0x1f6e, 0xc1af, 0xef95, 0x3154, 0xb3e1, 0x6d20, 0x431a, 0x9ddb, + 0x23c7, 0xfd06, 0xd33c, 0x0dfd, 0x8f48, 0x5189, 0x7fb3, 0xa172, + 0x37a0, 0xe961, 0xc75b, 0x199a, 0x9b2f, 0x45ee, 0x6bd4, 0xb515, + 0x5a95, 0x8454, 0xaa6e, 0x74af, 0xf61a, 0x28db, 0x06e1, 0xd820, + 0x4ef2, 0x9033, 0xbe09, 0x60c8, 0xe27d, 0x3cbc, 0x1286, 0xcc47, + 0x725b, 0xac9a, 0x82a0, 0x5c61, 0xded4, 0x0015, 0x2e2f, 0xf0ee, + 0x663c, 0xb8fd, 0x96c7, 0x4806, 0xcab3, 0x1472, 0x3a48, 0xe489, + 0xa831, 0x76f0, 0x58ca, 0x860b, 0x04be, 0xda7f, 0xf445, 0x2a84, + 0xbc56, 0x6297, 0x4cad, 0x926c, 0x10d9, 0xce18, 0xe022, 0x3ee3, + 0x80ff, 0x5e3e, 0x7004, 0xaec5, 0x2c70, 0xf2b1, 0xdc8b, 0x024a, + 0x9498, 0x4a59, 0x6463, 0xbaa2, 0x3817, 0xe6d6, 0xc8ec, 0x162d, + 0xf9ad, 0x276c, 0x0956, 0xd797, 0x5522, 0x8be3, 0xa5d9, 0x7b18, + 0xedca, 0x330b, 0x1d31, 0xc3f0, 0x4145, 0x9f84, 0xb1be, 0x6f7f, + 0xd163, 0x0fa2, 0x2198, 0xff59, 0x7dec, 0xa32d, 0x8d17, 0x53d6, + 0xc504, 0x1bc5, 0x35ff, 0xeb3e, 0x698b, 0xb74a, 0x9970, 0x47b1, + }, + { + 0x0000, 0xc362, 0xcbbd, 0x08df, 0xda03, 0x1961, 0x11be, 0xd2dc, + 0xf97f, 0x3a1d, 0x32c2, 0xf1a0, 0x237c, 0xe01e, 0xe8c1, 0x2ba3, + 0xbf87, 0x7ce5, 0x743a, 0xb758, 0x6584, 0xa6e6, 0xae39, 0x6d5b, + 0x46f8, 0x859a, 0x8d45, 0x4e27, 0x9cfb, 0x5f99, 0x5746, 0x9424, + 0x3277, 0xf115, 0xf9ca, 0x3aa8, 0xe874, 0x2b16, 0x23c9, 0xe0ab, + 0xcb08, 0x086a, 0x00b5, 0xc3d7, 0x110b, 0xd269, 0xdab6, 0x19d4, + 0x8df0, 0x4e92, 0x464d, 0x852f, 0x57f3, 0x9491, 0x9c4e, 0x5f2c, + 0x748f, 0xb7ed, 0xbf32, 0x7c50, 0xae8c, 0x6dee, 0x6531, 0xa653, + 0x64ee, 0xa78c, 0xaf53, 0x6c31, 0xbeed, 0x7d8f, 0x7550, 0xb632, + 0x9d91, 0x5ef3, 0x562c, 0x954e, 0x4792, 0x84f0, 0x8c2f, 0x4f4d, + 0xdb69, 0x180b, 0x10d4, 0xd3b6, 0x016a, 0xc208, 0xcad7, 0x09b5, + 0x2216, 0xe174, 0xe9ab, 0x2ac9, 0xf815, 0x3b77, 0x33a8, 0xf0ca, + 0x5699, 0x95fb, 0x9d24, 0x5e46, 0x8c9a, 0x4ff8, 0x4727, 0x8445, + 0xafe6, 0x6c84, 0x645b, 0xa739, 0x75e5, 0xb687, 0xbe58, 0x7d3a, + 0xe91e, 0x2a7c, 0x22a3, 0xe1c1, 0x331d, 0xf07f, 0xf8a0, 0x3bc2, + 0x1061, 0xd303, 0xdbdc, 0x18be, 0xca62, 0x0900, 0x01df, 0xc2bd, + 0xc9dc, 0x0abe, 0x0261, 0xc103, 0x13df, 0xd0bd, 0xd862, 0x1b00, + 0x30a3, 0xf3c1, 0xfb1e, 0x387c, 0xeaa0, 0x29c2, 0x211d, 0xe27f, + 0x765b, 0xb539, 0xbde6, 0x7e84, 0xac58, 0x6f3a, 0x67e5, 0xa487, + 0x8f24, 0x4c46, 0x4499, 0x87fb, 0x5527, 0x9645, 0x9e9a, 0x5df8, + 0xfbab, 0x38c9, 0x3016, 0xf374, 0x21a8, 0xe2ca, 0xea15, 0x2977, + 0x02d4, 0xc1b6, 0xc969, 0x0a0b, 0xd8d7, 0x1bb5, 0x136a, 0xd008, + 0x442c, 0x874e, 0x8f91, 0x4cf3, 0x9e2f, 0x5d4d, 0x5592, 0x96f0, + 0xbd53, 0x7e31, 0x76ee, 0xb58c, 0x6750, 0xa432, 0xaced, 0x6f8f, + 0xad32, 0x6e50, 0x668f, 0xa5ed, 0x7731, 0xb453, 0xbc8c, 0x7fee, + 0x544d, 0x972f, 0x9ff0, 0x5c92, 0x8e4e, 0x4d2c, 0x45f3, 0x8691, + 0x12b5, 0xd1d7, 0xd908, 0x1a6a, 0xc8b6, 0x0bd4, 0x030b, 0xc069, + 0xebca, 0x28a8, 0x2077, 0xe315, 0x31c9, 0xf2ab, 0xfa74, 0x3916, + 0x9f45, 0x5c27, 0x54f8, 0x979a, 0x4546, 0x8624, 0x8efb, 0x4d99, + 0x663a, 0xa558, 0xad87, 0x6ee5, 0xbc39, 0x7f5b, 0x7784, 0xb4e6, + 0x20c2, 0xe3a0, 0xeb7f, 0x281d, 0xfac1, 0x39a3, 0x317c, 0xf21e, + 0xd9bd, 0x1adf, 0x1200, 0xd162, 0x03be, 0xc0dc, 0xc803, 0x0b61, + }, + { + 0x0000, 0x168e, 0x2d1c, 0x3b92, 0x5a38, 0x4cb6, 0x7724, 0x61aa, + 0xb470, 0xa2fe, 0x996c, 0x8fe2, 0xee48, 0xf8c6, 0xc354, 0xd5da, + 0x2599, 0x3317, 0x0885, 0x1e0b, 0x7fa1, 0x692f, 0x52bd, 0x4433, + 0x91e9, 0x8767, 0xbcf5, 0xaa7b, 0xcbd1, 0xdd5f, 0xe6cd, 0xf043, + 0x4b32, 0x5dbc, 0x662e, 0x70a0, 0x110a, 0x0784, 0x3c16, 0x2a98, + 0xff42, 0xe9cc, 0xd25e, 0xc4d0, 0xa57a, 0xb3f4, 0x8866, 0x9ee8, + 0x6eab, 0x7825, 0x43b7, 0x5539, 0x3493, 0x221d, 0x198f, 0x0f01, + 0xdadb, 0xcc55, 0xf7c7, 0xe149, 0x80e3, 0x966d, 0xadff, 0xbb71, + 0x9664, 0x80ea, 0xbb78, 0xadf6, 0xcc5c, 0xdad2, 0xe140, 0xf7ce, + 0x2214, 0x349a, 0x0f08, 0x1986, 0x782c, 0x6ea2, 0x5530, 0x43be, + 0xb3fd, 0xa573, 0x9ee1, 0x886f, 0xe9c5, 0xff4b, 0xc4d9, 0xd257, + 0x078d, 0x1103, 0x2a91, 0x3c1f, 0x5db5, 0x4b3b, 0x70a9, 0x6627, + 0xdd56, 0xcbd8, 0xf04a, 0xe6c4, 0x876e, 0x91e0, 0xaa72, 0xbcfc, + 0x6926, 0x7fa8, 0x443a, 0x52b4, 0x331e, 0x2590, 0x1e02, 0x088c, + 0xf8cf, 0xee41, 0xd5d3, 0xc35d, 0xa2f7, 0xb479, 0x8feb, 0x9965, + 0x4cbf, 0x5a31, 0x61a3, 0x772d, 0x1687, 0x0009, 0x3b9b, 0x2d15, + 0x61b1, 0x773f, 0x4cad, 0x5a23, 0x3b89, 0x2d07, 0x1695, 0x001b, + 0xd5c1, 0xc34f, 0xf8dd, 0xee53, 0x8ff9, 0x9977, 0xa2e5, 0xb46b, + 0x4428, 0x52a6, 0x6934, 0x7fba, 0x1e10, 0x089e, 0x330c, 0x2582, + 0xf058, 0xe6d6, 0xdd44, 0xcbca, 0xaa60, 0xbcee, 0x877c, 0x91f2, + 0x2a83, 0x3c0d, 0x079f, 0x1111, 0x70bb, 0x6635, 0x5da7, 0x4b29, + 0x9ef3, 0x887d, 0xb3ef, 0xa561, 0xc4cb, 0xd245, 0xe9d7, 0xff59, + 0x0f1a, 0x1994, 0x2206, 0x3488, 0x5522, 0x43ac, 0x783e, 0x6eb0, + 0xbb6a, 0xade4, 0x9676, 0x80f8, 0xe152, 0xf7dc, 0xcc4e, 0xdac0, + 0xf7d5, 0xe15b, 0xdac9, 0xcc47, 0xaded, 0xbb63, 0x80f1, 0x967f, + 0x43a5, 0x552b, 0x6eb9, 0x7837, 0x199d, 0x0f13, 0x3481, 0x220f, + 0xd24c, 0xc4c2, 0xff50, 0xe9de, 0x8874, 0x9efa, 0xa568, 0xb3e6, + 0x663c, 0x70b2, 0x4b20, 0x5dae, 0x3c04, 0x2a8a, 0x1118, 0x0796, + 0xbce7, 0xaa69, 0x91fb, 0x8775, 0xe6df, 0xf051, 0xcbc3, 0xdd4d, + 0x0897, 0x1e19, 0x258b, 0x3305, 0x52af, 0x4421, 0x7fb3, 0x693d, + 0x997e, 0x8ff0, 0xb462, 0xa2ec, 0xc346, 0xd5c8, 0xee5a, 0xf8d4, + 0x2d0e, 0x3b80, 0x0012, 0x169c, 0x7736, 0x61b8, 0x5a2a, 0x4ca4, + }, + { + 0x0000, 0xece7, 0x94b7, 0x7850, 0x6417, 0x88f0, 0xf0a0, 0x1c47, + 0xc82e, 0x24c9, 0x5c99, 0xb07e, 0xac39, 0x40de, 0x388e, 0xd469, + 0xdd25, 0x31c2, 0x4992, 0xa575, 0xb932, 0x55d5, 0x2d85, 0xc162, + 0x150b, 0xf9ec, 0x81bc, 0x6d5b, 0x711c, 0x9dfb, 0xe5ab, 0x094c, + 0xf733, 0x1bd4, 0x6384, 0x8f63, 0x9324, 0x7fc3, 0x0793, 0xeb74, + 0x3f1d, 0xd3fa, 0xabaa, 0x474d, 0x5b0a, 0xb7ed, 0xcfbd, 0x235a, + 0x2a16, 0xc6f1, 0xbea1, 0x5246, 0x4e01, 0xa2e6, 0xdab6, 0x3651, + 0xe238, 0x0edf, 0x768f, 0x9a68, 0x862f, 0x6ac8, 0x1298, 0xfe7f, + 0xa31f, 0x4ff8, 0x37a8, 0xdb4f, 0xc708, 0x2bef, 0x53bf, 0xbf58, + 0x6b31, 0x87d6, 0xff86, 0x1361, 0x0f26, 0xe3c1, 0x9b91, 0x7776, + 0x7e3a, 0x92dd, 0xea8d, 0x066a, 0x1a2d, 0xf6ca, 0x8e9a, 0x627d, + 0xb614, 0x5af3, 0x22a3, 0xce44, 0xd203, 0x3ee4, 0x46b4, 0xaa53, + 0x542c, 0xb8cb, 0xc09b, 0x2c7c, 0x303b, 0xdcdc, 0xa48c, 0x486b, + 0x9c02, 0x70e5, 0x08b5, 0xe452, 0xf815, 0x14f2, 0x6ca2, 0x8045, + 0x8909, 0x65ee, 0x1dbe, 0xf159, 0xed1e, 0x01f9, 0x79a9, 0x954e, + 0x4127, 0xadc0, 0xd590, 0x3977, 0x2530, 0xc9d7, 0xb187, 0x5d60, + 0x0b47, 0xe7a0, 0x9ff0, 0x7317, 0x6f50, 0x83b7, 0xfbe7, 0x1700, + 0xc369, 0x2f8e, 0x57de, 0xbb39, 0xa77e, 0x4b99, 0x33c9, 0xdf2e, + 0xd662, 0x3a85, 0x42d5, 0xae32, 0xb275, 0x5e92, 0x26c2, 0xca25, + 0x1e4c, 0xf2ab, 0x8afb, 0x661c, 0x7a5b, 0x96bc, 0xeeec, 0x020b, + 0xfc74, 0x1093, 0x68c3, 0x8424, 0x9863, 0x7484, 0x0cd4, 0xe033, + 0x345a, 0xd8bd, 0xa0ed, 0x4c0a, 0x504d, 0xbcaa, 0xc4fa, 0x281d, + 0x2151, 0xcdb6, 0xb5e6, 0x5901, 0x4546, 0xa9a1, 0xd1f1, 0x3d16, + 0xe97f, 0x0598, 0x7dc8, 0x912f, 0x8d68, 0x618f, 0x19df, 0xf538, + 0xa858, 0x44bf, 0x3cef, 0xd008, 0xcc4f, 0x20a8, 0x58f8, 0xb41f, + 0x6076, 0x8c91, 0xf4c1, 0x1826, 0x0461, 0xe886, 0x90d6, 0x7c31, + 0x757d, 0x999a, 0xe1ca, 0x0d2d, 0x116a, 0xfd8d, 0x85dd, 0x693a, + 0xbd53, 0x51b4, 0x29e4, 0xc503, 0xd944, 0x35a3, 0x4df3, 0xa114, + 0x5f6b, 0xb38c, 0xcbdc, 0x273b, 0x3b7c, 0xd79b, 0xafcb, 0x432c, + 0x9745, 0x7ba2, 0x03f2, 0xef15, 0xf352, 0x1fb5, 0x67e5, 0x8b02, + 0x824e, 0x6ea9, 0x16f9, 0xfa1e, 0xe659, 0x0abe, 0x72ee, 0x9e09, + 0x4a60, 0xa687, 0xded7, 0x3230, 0x2e77, 0xc290, 0xbac0, 0x5627, + }, + { + 0x0000, 0x5f3b, 0xbe76, 0xe14d, 0x3195, 0x6eae, 0x8fe3, 0xd0d8, + 0x632a, 0x3c11, 0xdd5c, 0x8267, 0x52bf, 0x0d84, 0xecc9, 0xb3f2, + 0xc654, 0x996f, 0x7822, 0x2719, 0xf7c1, 0xa8fa, 0x49b7, 0x168c, + 0xa57e, 0xfa45, 0x1b08, 0x4433, 0x94eb, 0xcbd0, 0x2a9d, 0x75a6, + 0xc1d1, 0x9eea, 0x7fa7, 0x209c, 0xf044, 0xaf7f, 0x4e32, 0x1109, + 0xa2fb, 0xfdc0, 0x1c8d, 0x43b6, 0x936e, 0xcc55, 0x2d18, 0x7223, + 0x0785, 0x58be, 0xb9f3, 0xe6c8, 0x3610, 0x692b, 0x8866, 0xd75d, + 0x64af, 0x3b94, 0xdad9, 0x85e2, 0x553a, 0x0a01, 0xeb4c, 0xb477, + 0xcedb, 0x91e0, 0x70ad, 0x2f96, 0xff4e, 0xa075, 0x4138, 0x1e03, + 0xadf1, 0xf2ca, 0x1387, 0x4cbc, 0x9c64, 0xc35f, 0x2212, 0x7d29, + 0x088f, 0x57b4, 0xb6f9, 0xe9c2, 0x391a, 0x6621, 0x876c, 0xd857, + 0x6ba5, 0x349e, 0xd5d3, 0x8ae8, 0x5a30, 0x050b, 0xe446, 0xbb7d, + 0x0f0a, 0x5031, 0xb17c, 0xee47, 0x3e9f, 0x61a4, 0x80e9, 0xdfd2, + 0x6c20, 0x331b, 0xd256, 0x8d6d, 0x5db5, 0x028e, 0xe3c3, 0xbcf8, + 0xc95e, 0x9665, 0x7728, 0x2813, 0xf8cb, 0xa7f0, 0x46bd, 0x1986, + 0xaa74, 0xf54f, 0x1402, 0x4b39, 0x9be1, 0xc4da, 0x2597, 0x7aac, + 0xd0cf, 0x8ff4, 0x6eb9, 0x3182, 0xe15a, 0xbe61, 0x5f2c, 0x0017, + 0xb3e5, 0xecde, 0x0d93, 0x52a8, 0x8270, 0xdd4b, 0x3c06, 0x633d, + 0x169b, 0x49a0, 0xa8ed, 0xf7d6, 0x270e, 0x7835, 0x9978, 0xc643, + 0x75b1, 0x2a8a, 0xcbc7, 0x94fc, 0x4424, 0x1b1f, 0xfa52, 0xa569, + 0x111e, 0x4e25, 0xaf68, 0xf053, 0x208b, 0x7fb0, 0x9efd, 0xc1c6, + 0x7234, 0x2d0f, 0xcc42, 0x9379, 0x43a1, 0x1c9a, 0xfdd7, 0xa2ec, + 0xd74a, 0x8871, 0x693c, 0x3607, 0xe6df, 0xb9e4, 0x58a9, 0x0792, + 0xb460, 0xeb5b, 0x0a16, 0x552d, 0x85f5, 0xdace, 0x3b83, 0x64b8, + 0x1e14, 0x412f, 0xa062, 0xff59, 0x2f81, 0x70ba, 0x91f7, 0xcecc, + 0x7d3e, 0x2205, 0xc348, 0x9c73, 0x4cab, 0x1390, 0xf2dd, 0xade6, + 0xd840, 0x877b, 0x6636, 0x390d, 0xe9d5, 0xb6ee, 0x57a3, 0x0898, + 0xbb6a, 0xe451, 0x051c, 0x5a27, 0x8aff, 0xd5c4, 0x3489, 0x6bb2, + 0xdfc5, 0x80fe, 0x61b3, 0x3e88, 0xee50, 0xb16b, 0x5026, 0x0f1d, + 0xbcef, 0xe3d4, 0x0299, 0x5da2, 0x8d7a, 0xd241, 0x330c, 0x6c37, + 0x1991, 0x46aa, 0xa7e7, 0xf8dc, 0x2804, 0x773f, 0x9672, 0xc949, + 0x7abb, 0x2580, 0xc4cd, 0x9bf6, 0x4b2e, 0x1415, 0xf558, 0xaa63, + }, + { + 0x0000, 0x3ef0, 0x7de0, 0x4310, 0xfbc0, 0xc530, 0x8620, 0xb8d0, + 0xbaf9, 0x8409, 0xc719, 0xf9e9, 0x4139, 0x7fc9, 0x3cd9, 0x0229, + 0x388b, 0x067b, 0x456b, 0x7b9b, 0xc34b, 0xfdbb, 0xbeab, 0x805b, + 0x8272, 0xbc82, 0xff92, 0xc162, 0x79b2, 0x4742, 0x0452, 0x3aa2, + 0x7116, 0x4fe6, 0x0cf6, 0x3206, 0x8ad6, 0xb426, 0xf736, 0xc9c6, + 0xcbef, 0xf51f, 0xb60f, 0x88ff, 0x302f, 0x0edf, 0x4dcf, 0x733f, + 0x499d, 0x776d, 0x347d, 0x0a8d, 0xb25d, 0x8cad, 0xcfbd, 0xf14d, + 0xf364, 0xcd94, 0x8e84, 0xb074, 0x08a4, 0x3654, 0x7544, 0x4bb4, + 0xe22c, 0xdcdc, 0x9fcc, 0xa13c, 0x19ec, 0x271c, 0x640c, 0x5afc, + 0x58d5, 0x6625, 0x2535, 0x1bc5, 0xa315, 0x9de5, 0xdef5, 0xe005, + 0xdaa7, 0xe457, 0xa747, 0x99b7, 0x2167, 0x1f97, 0x5c87, 0x6277, + 0x605e, 0x5eae, 0x1dbe, 0x234e, 0x9b9e, 0xa56e, 0xe67e, 0xd88e, + 0x933a, 0xadca, 0xeeda, 0xd02a, 0x68fa, 0x560a, 0x151a, 0x2bea, + 0x29c3, 0x1733, 0x5423, 0x6ad3, 0xd203, 0xecf3, 0xafe3, 0x9113, + 0xabb1, 0x9541, 0xd651, 0xe8a1, 0x5071, 0x6e81, 0x2d91, 0x1361, + 0x1148, 0x2fb8, 0x6ca8, 0x5258, 0xea88, 0xd478, 0x9768, 0xa998, + 0x8921, 0xb7d1, 0xf4c1, 0xca31, 0x72e1, 0x4c11, 0x0f01, 0x31f1, + 0x33d8, 0x0d28, 0x4e38, 0x70c8, 0xc818, 0xf6e8, 0xb5f8, 0x8b08, + 0xb1aa, 0x8f5a, 0xcc4a, 0xf2ba, 0x4a6a, 0x749a, 0x378a, 0x097a, + 0x0b53, 0x35a3, 0x76b3, 0x4843, 0xf093, 0xce63, 0x8d73, 0xb383, + 0xf837, 0xc6c7, 0x85d7, 0xbb27, 0x03f7, 0x3d07, 0x7e17, 0x40e7, + 0x42ce, 0x7c3e, 0x3f2e, 0x01de, 0xb90e, 0x87fe, 0xc4ee, 0xfa1e, + 0xc0bc, 0xfe4c, 0xbd5c, 0x83ac, 0x3b7c, 0x058c, 0x469c, 0x786c, + 0x7a45, 0x44b5, 0x07a5, 0x3955, 0x8185, 0xbf75, 0xfc65, 0xc295, + 0x6b0d, 0x55fd, 0x16ed, 0x281d, 0x90cd, 0xae3d, 0xed2d, 0xd3dd, + 0xd1f4, 0xef04, 0xac14, 0x92e4, 0x2a34, 0x14c4, 0x57d4, 0x6924, + 0x5386, 0x6d76, 0x2e66, 0x1096, 0xa846, 0x96b6, 0xd5a6, 0xeb56, + 0xe97f, 0xd78f, 0x949f, 0xaa6f, 0x12bf, 0x2c4f, 0x6f5f, 0x51af, + 0x1a1b, 0x24eb, 0x67fb, 0x590b, 0xe1db, 0xdf2b, 0x9c3b, 0xa2cb, + 0xa0e2, 0x9e12, 0xdd02, 0xe3f2, 0x5b22, 0x65d2, 0x26c2, 0x1832, + 0x2290, 0x1c60, 0x5f70, 0x6180, 0xd950, 0xe7a0, 0xa4b0, 0x9a40, + 0x9869, 0xa699, 0xe589, 0xdb79, 0x63a9, 0x5d59, 0x1e49, 0x20b9, + }, + { + 0x0000, 0x6e18, 0xdc30, 0xb228, 0xf519, 0x9b01, 0x2929, 0x4731, + 0xa74b, 0xc953, 0x7b7b, 0x1563, 0x5252, 0x3c4a, 0x8e62, 0xe07a, + 0x03ef, 0x6df7, 0xdfdf, 0xb1c7, 0xf6f6, 0x98ee, 0x2ac6, 0x44de, + 0xa4a4, 0xcabc, 0x7894, 0x168c, 0x51bd, 0x3fa5, 0x8d8d, 0xe395, + 0x07de, 0x69c6, 0xdbee, 0xb5f6, 0xf2c7, 0x9cdf, 0x2ef7, 0x40ef, + 0xa095, 0xce8d, 0x7ca5, 0x12bd, 0x558c, 0x3b94, 0x89bc, 0xe7a4, + 0x0431, 0x6a29, 0xd801, 0xb619, 0xf128, 0x9f30, 0x2d18, 0x4300, + 0xa37a, 0xcd62, 0x7f4a, 0x1152, 0x5663, 0x387b, 0x8a53, 0xe44b, + 0x0fbc, 0x61a4, 0xd38c, 0xbd94, 0xfaa5, 0x94bd, 0x2695, 0x488d, + 0xa8f7, 0xc6ef, 0x74c7, 0x1adf, 0x5dee, 0x33f6, 0x81de, 0xefc6, + 0x0c53, 0x624b, 0xd063, 0xbe7b, 0xf94a, 0x9752, 0x257a, 0x4b62, + 0xab18, 0xc500, 0x7728, 0x1930, 0x5e01, 0x3019, 0x8231, 0xec29, + 0x0862, 0x667a, 0xd452, 0xba4a, 0xfd7b, 0x9363, 0x214b, 0x4f53, + 0xaf29, 0xc131, 0x7319, 0x1d01, 0x5a30, 0x3428, 0x8600, 0xe818, + 0x0b8d, 0x6595, 0xd7bd, 0xb9a5, 0xfe94, 0x908c, 0x22a4, 0x4cbc, + 0xacc6, 0xc2de, 0x70f6, 0x1eee, 0x59df, 0x37c7, 0x85ef, 0xebf7, + 0x1f78, 0x7160, 0xc348, 0xad50, 0xea61, 0x8479, 0x3651, 0x5849, + 0xb833, 0xd62b, 0x6403, 0x0a1b, 0x4d2a, 0x2332, 0x911a, 0xff02, + 0x1c97, 0x728f, 0xc0a7, 0xaebf, 0xe98e, 0x8796, 0x35be, 0x5ba6, + 0xbbdc, 0xd5c4, 0x67ec, 0x09f4, 0x4ec5, 0x20dd, 0x92f5, 0xfced, + 0x18a6, 0x76be, 0xc496, 0xaa8e, 0xedbf, 0x83a7, 0x318f, 0x5f97, + 0xbfed, 0xd1f5, 0x63dd, 0x0dc5, 0x4af4, 0x24ec, 0x96c4, 0xf8dc, + 0x1b49, 0x7551, 0xc779, 0xa961, 0xee50, 0x8048, 0x3260, 0x5c78, + 0xbc02, 0xd21a, 0x6032, 0x0e2a, 0x491b, 0x2703, 0x952b, 0xfb33, + 0x10c4, 0x7edc, 0xccf4, 0xa2ec, 0xe5dd, 0x8bc5, 0x39ed, 0x57f5, + 0xb78f, 0xd997, 0x6bbf, 0x05a7, 0x4296, 0x2c8e, 0x9ea6, 0xf0be, + 0x132b, 0x7d33, 0xcf1b, 0xa103, 0xe632, 0x882a, 0x3a02, 0x541a, + 0xb460, 0xda78, 0x6850, 0x0648, 0x4179, 0x2f61, 0x9d49, 0xf351, + 0x171a, 0x7902, 0xcb2a, 0xa532, 0xe203, 0x8c1b, 0x3e33, 0x502b, + 0xb051, 0xde49, 0x6c61, 0x0279, 0x4548, 0x2b50, 0x9978, 0xf760, + 0x14f5, 0x7aed, 0xc8c5, 0xa6dd, 0xe1ec, 0x8ff4, 0x3ddc, 0x53c4, + 0xb3be, 0xdda6, 0x6f8e, 0x0196, 0x46a7, 0x28bf, 0x9a97, 0xf48f, + }, + { + 0x0000, 0x4d8c, 0x9b18, 0xd694, 0x7b49, 0x36c5, 0xe051, 0xaddd, + 0xf692, 0xbb1e, 0x6d8a, 0x2006, 0x8ddb, 0xc057, 0x16c3, 0x5b4f, + 0xa05d, 0xedd1, 0x3b45, 0x76c9, 0xdb14, 0x9698, 0x400c, 0x0d80, + 0x56cf, 0x1b43, 0xcdd7, 0x805b, 0x2d86, 0x600a, 0xb69e, 0xfb12, + 0x0dc3, 0x404f, 0x96db, 0xdb57, 0x768a, 0x3b06, 0xed92, 0xa01e, + 0xfb51, 0xb6dd, 0x6049, 0x2dc5, 0x8018, 0xcd94, 0x1b00, 0x568c, + 0xad9e, 0xe012, 0x3686, 0x7b0a, 0xd6d7, 0x9b5b, 0x4dcf, 0x0043, + 0x5b0c, 0x1680, 0xc014, 0x8d98, 0x2045, 0x6dc9, 0xbb5d, 0xf6d1, + 0x1b86, 0x560a, 0x809e, 0xcd12, 0x60cf, 0x2d43, 0xfbd7, 0xb65b, + 0xed14, 0xa098, 0x760c, 0x3b80, 0x965d, 0xdbd1, 0x0d45, 0x40c9, + 0xbbdb, 0xf657, 0x20c3, 0x6d4f, 0xc092, 0x8d1e, 0x5b8a, 0x1606, + 0x4d49, 0x00c5, 0xd651, 0x9bdd, 0x3600, 0x7b8c, 0xad18, 0xe094, + 0x1645, 0x5bc9, 0x8d5d, 0xc0d1, 0x6d0c, 0x2080, 0xf614, 0xbb98, + 0xe0d7, 0xad5b, 0x7bcf, 0x3643, 0x9b9e, 0xd612, 0x0086, 0x4d0a, + 0xb618, 0xfb94, 0x2d00, 0x608c, 0xcd51, 0x80dd, 0x5649, 0x1bc5, + 0x408a, 0x0d06, 0xdb92, 0x961e, 0x3bc3, 0x764f, 0xa0db, 0xed57, + 0x370c, 0x7a80, 0xac14, 0xe198, 0x4c45, 0x01c9, 0xd75d, 0x9ad1, + 0xc19e, 0x8c12, 0x5a86, 0x170a, 0xbad7, 0xf75b, 0x21cf, 0x6c43, + 0x9751, 0xdadd, 0x0c49, 0x41c5, 0xec18, 0xa194, 0x7700, 0x3a8c, + 0x61c3, 0x2c4f, 0xfadb, 0xb757, 0x1a8a, 0x5706, 0x8192, 0xcc1e, + 0x3acf, 0x7743, 0xa1d7, 0xec5b, 0x4186, 0x0c0a, 0xda9e, 0x9712, + 0xcc5d, 0x81d1, 0x5745, 0x1ac9, 0xb714, 0xfa98, 0x2c0c, 0x6180, + 0x9a92, 0xd71e, 0x018a, 0x4c06, 0xe1db, 0xac57, 0x7ac3, 0x374f, + 0x6c00, 0x218c, 0xf718, 0xba94, 0x1749, 0x5ac5, 0x8c51, 0xc1dd, + 0x2c8a, 0x6106, 0xb792, 0xfa1e, 0x57c3, 0x1a4f, 0xccdb, 0x8157, + 0xda18, 0x9794, 0x4100, 0x0c8c, 0xa151, 0xecdd, 0x3a49, 0x77c5, + 0x8cd7, 0xc15b, 0x17cf, 0x5a43, 0xf79e, 0xba12, 0x6c86, 0x210a, + 0x7a45, 0x37c9, 0xe15d, 0xacd1, 0x010c, 0x4c80, 0x9a14, 0xd798, + 0x2149, 0x6cc5, 0xba51, 0xf7dd, 0x5a00, 0x178c, 0xc118, 0x8c94, + 0xd7db, 0x9a57, 0x4cc3, 0x014f, 0xac92, 0xe11e, 0x378a, 0x7a06, + 0x8114, 0xcc98, 0x1a0c, 0x5780, 0xfa5d, 0xb7d1, 0x6145, 0x2cc9, + 0x7786, 0x3a0a, 0xec9e, 0xa112, 0x0ccf, 0x4143, 0x97d7, 0xda5b, + }, +}; diff --git a/ext/digest/crc16_genibus/crc16_genibus.c b/ext/digest/crc16_genibus/crc16_genibus.c index 866a311..65dc9d8 100644 --- a/ext/digest/crc16_genibus/crc16_genibus.c +++ b/ext/digest/crc16_genibus/crc16_genibus.c @@ -15,54 +15,39 @@ */ #include "crc16_genibus.h" - -/** - * Static table used for the table_driven implementation. - */ -static const crc16_t crc16_genibus_table[256] = { - 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, - 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, - 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, - 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, - 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, - 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, - 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, - 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, - 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, - 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, - 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, - 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, - 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, - 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, - 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, - 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, - 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, - 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, - 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, - 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, - 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, - 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, - 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, - 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, - 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, - 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, - 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, - 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, - 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, - 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, - 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, - 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0 -}; +#include "crc16_genibus_table.h" crc16_t crc16_genibus_update(crc16_t crc, const void *data, size_t data_len) { const unsigned char *d = (const unsigned char *)data; unsigned int tbl_idx; + for (; data_len >= SLICE_SIZE; data_len -= SLICE_SIZE) + { + crc = crc16_genibus_table[15][d[ 0] ^ ((crc >> 8) & 0xff)] ^ + crc16_genibus_table[14][d[ 1] ^ ((crc >> 0) & 0xff)] ^ + crc16_genibus_table[13][d[ 2] ] ^ + crc16_genibus_table[12][d[ 3] ] ^ + crc16_genibus_table[11][d[ 4] ] ^ + crc16_genibus_table[10][d[ 5] ] ^ + crc16_genibus_table[ 9][d[ 6] ] ^ + crc16_genibus_table[ 8][d[ 7] ] ^ + crc16_genibus_table[ 7][d[ 8] ] ^ + crc16_genibus_table[ 6][d[ 9] ] ^ + crc16_genibus_table[ 5][d[10] ] ^ + crc16_genibus_table[ 4][d[11] ] ^ + crc16_genibus_table[ 3][d[12] ] ^ + crc16_genibus_table[ 2][d[13] ] ^ + crc16_genibus_table[ 1][d[14] ] ^ + crc16_genibus_table[ 0][d[15] ]; + crc &= 0xffff; + d += SLICE_SIZE; + } + while (data_len--) { tbl_idx = ((crc >> 8) ^ *d) & 0xff; - crc = (crc16_genibus_table[tbl_idx] ^ (crc << 8)) & 0xffff; + crc = (crc16_genibus_table[0][tbl_idx] ^ (crc << 8)) & 0xffff; d++; } diff --git a/ext/digest/crc16_genibus/crc16_genibus_table.h b/ext/digest/crc16_genibus/crc16_genibus_table.h new file mode 100644 index 0000000..a364c77 --- /dev/null +++ b/ext/digest/crc16_genibus/crc16_genibus_table.h @@ -0,0 +1,558 @@ +/* + * bitwidth: 16 + * generator polynomial: 0x1021 + * input bit direction: NORMAL + * slice bytes per iteration: 16 + * slide bits per table: 8 + * + * Generated by: gentable.rb of digest-crc + */ + +#define SLICE_SIZE 16 + +static const uint16_t crc16_genibus_table[SLICE_SIZE][256] = { + { + 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, + 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, + 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, + 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, + 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, + 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, + 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, + 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, + 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, + 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, + 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, + 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, + 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, + 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, + 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, + 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, + 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, + 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, + 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, + 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, + 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, + 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, + 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, + 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, + 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, + 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, + 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, + 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, + 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, + 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, + 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, + 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0, + }, + { + 0x0000, 0x3331, 0x6662, 0x5553, 0xccc4, 0xfff5, 0xaaa6, 0x9997, + 0x89a9, 0xba98, 0xefcb, 0xdcfa, 0x456d, 0x765c, 0x230f, 0x103e, + 0x0373, 0x3042, 0x6511, 0x5620, 0xcfb7, 0xfc86, 0xa9d5, 0x9ae4, + 0x8ada, 0xb9eb, 0xecb8, 0xdf89, 0x461e, 0x752f, 0x207c, 0x134d, + 0x06e6, 0x35d7, 0x6084, 0x53b5, 0xca22, 0xf913, 0xac40, 0x9f71, + 0x8f4f, 0xbc7e, 0xe92d, 0xda1c, 0x438b, 0x70ba, 0x25e9, 0x16d8, + 0x0595, 0x36a4, 0x63f7, 0x50c6, 0xc951, 0xfa60, 0xaf33, 0x9c02, + 0x8c3c, 0xbf0d, 0xea5e, 0xd96f, 0x40f8, 0x73c9, 0x269a, 0x15ab, + 0x0dcc, 0x3efd, 0x6bae, 0x589f, 0xc108, 0xf239, 0xa76a, 0x945b, + 0x8465, 0xb754, 0xe207, 0xd136, 0x48a1, 0x7b90, 0x2ec3, 0x1df2, + 0x0ebf, 0x3d8e, 0x68dd, 0x5bec, 0xc27b, 0xf14a, 0xa419, 0x9728, + 0x8716, 0xb427, 0xe174, 0xd245, 0x4bd2, 0x78e3, 0x2db0, 0x1e81, + 0x0b2a, 0x381b, 0x6d48, 0x5e79, 0xc7ee, 0xf4df, 0xa18c, 0x92bd, + 0x8283, 0xb1b2, 0xe4e1, 0xd7d0, 0x4e47, 0x7d76, 0x2825, 0x1b14, + 0x0859, 0x3b68, 0x6e3b, 0x5d0a, 0xc49d, 0xf7ac, 0xa2ff, 0x91ce, + 0x81f0, 0xb2c1, 0xe792, 0xd4a3, 0x4d34, 0x7e05, 0x2b56, 0x1867, + 0x1b98, 0x28a9, 0x7dfa, 0x4ecb, 0xd75c, 0xe46d, 0xb13e, 0x820f, + 0x9231, 0xa100, 0xf453, 0xc762, 0x5ef5, 0x6dc4, 0x3897, 0x0ba6, + 0x18eb, 0x2bda, 0x7e89, 0x4db8, 0xd42f, 0xe71e, 0xb24d, 0x817c, + 0x9142, 0xa273, 0xf720, 0xc411, 0x5d86, 0x6eb7, 0x3be4, 0x08d5, + 0x1d7e, 0x2e4f, 0x7b1c, 0x482d, 0xd1ba, 0xe28b, 0xb7d8, 0x84e9, + 0x94d7, 0xa7e6, 0xf2b5, 0xc184, 0x5813, 0x6b22, 0x3e71, 0x0d40, + 0x1e0d, 0x2d3c, 0x786f, 0x4b5e, 0xd2c9, 0xe1f8, 0xb4ab, 0x879a, + 0x97a4, 0xa495, 0xf1c6, 0xc2f7, 0x5b60, 0x6851, 0x3d02, 0x0e33, + 0x1654, 0x2565, 0x7036, 0x4307, 0xda90, 0xe9a1, 0xbcf2, 0x8fc3, + 0x9ffd, 0xaccc, 0xf99f, 0xcaae, 0x5339, 0x6008, 0x355b, 0x066a, + 0x1527, 0x2616, 0x7345, 0x4074, 0xd9e3, 0xead2, 0xbf81, 0x8cb0, + 0x9c8e, 0xafbf, 0xfaec, 0xc9dd, 0x504a, 0x637b, 0x3628, 0x0519, + 0x10b2, 0x2383, 0x76d0, 0x45e1, 0xdc76, 0xef47, 0xba14, 0x8925, + 0x991b, 0xaa2a, 0xff79, 0xcc48, 0x55df, 0x66ee, 0x33bd, 0x008c, + 0x13c1, 0x20f0, 0x75a3, 0x4692, 0xdf05, 0xec34, 0xb967, 0x8a56, + 0x9a68, 0xa959, 0xfc0a, 0xcf3b, 0x56ac, 0x659d, 0x30ce, 0x03ff, + }, + { + 0x0000, 0x3730, 0x6e60, 0x5950, 0xdcc0, 0xebf0, 0xb2a0, 0x8590, + 0xa9a1, 0x9e91, 0xc7c1, 0xf0f1, 0x7561, 0x4251, 0x1b01, 0x2c31, + 0x4363, 0x7453, 0x2d03, 0x1a33, 0x9fa3, 0xa893, 0xf1c3, 0xc6f3, + 0xeac2, 0xddf2, 0x84a2, 0xb392, 0x3602, 0x0132, 0x5862, 0x6f52, + 0x86c6, 0xb1f6, 0xe8a6, 0xdf96, 0x5a06, 0x6d36, 0x3466, 0x0356, + 0x2f67, 0x1857, 0x4107, 0x7637, 0xf3a7, 0xc497, 0x9dc7, 0xaaf7, + 0xc5a5, 0xf295, 0xabc5, 0x9cf5, 0x1965, 0x2e55, 0x7705, 0x4035, + 0x6c04, 0x5b34, 0x0264, 0x3554, 0xb0c4, 0x87f4, 0xdea4, 0xe994, + 0x1dad, 0x2a9d, 0x73cd, 0x44fd, 0xc16d, 0xf65d, 0xaf0d, 0x983d, + 0xb40c, 0x833c, 0xda6c, 0xed5c, 0x68cc, 0x5ffc, 0x06ac, 0x319c, + 0x5ece, 0x69fe, 0x30ae, 0x079e, 0x820e, 0xb53e, 0xec6e, 0xdb5e, + 0xf76f, 0xc05f, 0x990f, 0xae3f, 0x2baf, 0x1c9f, 0x45cf, 0x72ff, + 0x9b6b, 0xac5b, 0xf50b, 0xc23b, 0x47ab, 0x709b, 0x29cb, 0x1efb, + 0x32ca, 0x05fa, 0x5caa, 0x6b9a, 0xee0a, 0xd93a, 0x806a, 0xb75a, + 0xd808, 0xef38, 0xb668, 0x8158, 0x04c8, 0x33f8, 0x6aa8, 0x5d98, + 0x71a9, 0x4699, 0x1fc9, 0x28f9, 0xad69, 0x9a59, 0xc309, 0xf439, + 0x3b5a, 0x0c6a, 0x553a, 0x620a, 0xe79a, 0xd0aa, 0x89fa, 0xbeca, + 0x92fb, 0xa5cb, 0xfc9b, 0xcbab, 0x4e3b, 0x790b, 0x205b, 0x176b, + 0x7839, 0x4f09, 0x1659, 0x2169, 0xa4f9, 0x93c9, 0xca99, 0xfda9, + 0xd198, 0xe6a8, 0xbff8, 0x88c8, 0x0d58, 0x3a68, 0x6338, 0x5408, + 0xbd9c, 0x8aac, 0xd3fc, 0xe4cc, 0x615c, 0x566c, 0x0f3c, 0x380c, + 0x143d, 0x230d, 0x7a5d, 0x4d6d, 0xc8fd, 0xffcd, 0xa69d, 0x91ad, + 0xfeff, 0xc9cf, 0x909f, 0xa7af, 0x223f, 0x150f, 0x4c5f, 0x7b6f, + 0x575e, 0x606e, 0x393e, 0x0e0e, 0x8b9e, 0xbcae, 0xe5fe, 0xd2ce, + 0x26f7, 0x11c7, 0x4897, 0x7fa7, 0xfa37, 0xcd07, 0x9457, 0xa367, + 0x8f56, 0xb866, 0xe136, 0xd606, 0x5396, 0x64a6, 0x3df6, 0x0ac6, + 0x6594, 0x52a4, 0x0bf4, 0x3cc4, 0xb954, 0x8e64, 0xd734, 0xe004, + 0xcc35, 0xfb05, 0xa255, 0x9565, 0x10f5, 0x27c5, 0x7e95, 0x49a5, + 0xa031, 0x9701, 0xce51, 0xf961, 0x7cf1, 0x4bc1, 0x1291, 0x25a1, + 0x0990, 0x3ea0, 0x67f0, 0x50c0, 0xd550, 0xe260, 0xbb30, 0x8c00, + 0xe352, 0xd462, 0x8d32, 0xba02, 0x3f92, 0x08a2, 0x51f2, 0x66c2, + 0x4af3, 0x7dc3, 0x2493, 0x13a3, 0x9633, 0xa103, 0xf853, 0xcf63, + }, + { + 0x0000, 0x76b4, 0xed68, 0x9bdc, 0xcaf1, 0xbc45, 0x2799, 0x512d, + 0x85c3, 0xf377, 0x68ab, 0x1e1f, 0x4f32, 0x3986, 0xa25a, 0xd4ee, + 0x1ba7, 0x6d13, 0xf6cf, 0x807b, 0xd156, 0xa7e2, 0x3c3e, 0x4a8a, + 0x9e64, 0xe8d0, 0x730c, 0x05b8, 0x5495, 0x2221, 0xb9fd, 0xcf49, + 0x374e, 0x41fa, 0xda26, 0xac92, 0xfdbf, 0x8b0b, 0x10d7, 0x6663, + 0xb28d, 0xc439, 0x5fe5, 0x2951, 0x787c, 0x0ec8, 0x9514, 0xe3a0, + 0x2ce9, 0x5a5d, 0xc181, 0xb735, 0xe618, 0x90ac, 0x0b70, 0x7dc4, + 0xa92a, 0xdf9e, 0x4442, 0x32f6, 0x63db, 0x156f, 0x8eb3, 0xf807, + 0x6e9c, 0x1828, 0x83f4, 0xf540, 0xa46d, 0xd2d9, 0x4905, 0x3fb1, + 0xeb5f, 0x9deb, 0x0637, 0x7083, 0x21ae, 0x571a, 0xccc6, 0xba72, + 0x753b, 0x038f, 0x9853, 0xeee7, 0xbfca, 0xc97e, 0x52a2, 0x2416, + 0xf0f8, 0x864c, 0x1d90, 0x6b24, 0x3a09, 0x4cbd, 0xd761, 0xa1d5, + 0x59d2, 0x2f66, 0xb4ba, 0xc20e, 0x9323, 0xe597, 0x7e4b, 0x08ff, + 0xdc11, 0xaaa5, 0x3179, 0x47cd, 0x16e0, 0x6054, 0xfb88, 0x8d3c, + 0x4275, 0x34c1, 0xaf1d, 0xd9a9, 0x8884, 0xfe30, 0x65ec, 0x1358, + 0xc7b6, 0xb102, 0x2ade, 0x5c6a, 0x0d47, 0x7bf3, 0xe02f, 0x969b, + 0xdd38, 0xab8c, 0x3050, 0x46e4, 0x17c9, 0x617d, 0xfaa1, 0x8c15, + 0x58fb, 0x2e4f, 0xb593, 0xc327, 0x920a, 0xe4be, 0x7f62, 0x09d6, + 0xc69f, 0xb02b, 0x2bf7, 0x5d43, 0x0c6e, 0x7ada, 0xe106, 0x97b2, + 0x435c, 0x35e8, 0xae34, 0xd880, 0x89ad, 0xff19, 0x64c5, 0x1271, + 0xea76, 0x9cc2, 0x071e, 0x71aa, 0x2087, 0x5633, 0xcdef, 0xbb5b, + 0x6fb5, 0x1901, 0x82dd, 0xf469, 0xa544, 0xd3f0, 0x482c, 0x3e98, + 0xf1d1, 0x8765, 0x1cb9, 0x6a0d, 0x3b20, 0x4d94, 0xd648, 0xa0fc, + 0x7412, 0x02a6, 0x997a, 0xefce, 0xbee3, 0xc857, 0x538b, 0x253f, + 0xb3a4, 0xc510, 0x5ecc, 0x2878, 0x7955, 0x0fe1, 0x943d, 0xe289, + 0x3667, 0x40d3, 0xdb0f, 0xadbb, 0xfc96, 0x8a22, 0x11fe, 0x674a, + 0xa803, 0xdeb7, 0x456b, 0x33df, 0x62f2, 0x1446, 0x8f9a, 0xf92e, + 0x2dc0, 0x5b74, 0xc0a8, 0xb61c, 0xe731, 0x9185, 0x0a59, 0x7ced, + 0x84ea, 0xf25e, 0x6982, 0x1f36, 0x4e1b, 0x38af, 0xa373, 0xd5c7, + 0x0129, 0x779d, 0xec41, 0x9af5, 0xcbd8, 0xbd6c, 0x26b0, 0x5004, + 0x9f4d, 0xe9f9, 0x7225, 0x0491, 0x55bc, 0x2308, 0xb8d4, 0xce60, + 0x1a8e, 0x6c3a, 0xf7e6, 0x8152, 0xd07f, 0xa6cb, 0x3d17, 0x4ba3, + }, + { + 0x0000, 0xaa51, 0x4483, 0xeed2, 0x8906, 0x2357, 0xcd85, 0x67d4, + 0x022d, 0xa87c, 0x46ae, 0xecff, 0x8b2b, 0x217a, 0xcfa8, 0x65f9, + 0x045a, 0xae0b, 0x40d9, 0xea88, 0x8d5c, 0x270d, 0xc9df, 0x638e, + 0x0677, 0xac26, 0x42f4, 0xe8a5, 0x8f71, 0x2520, 0xcbf2, 0x61a3, + 0x08b4, 0xa2e5, 0x4c37, 0xe666, 0x81b2, 0x2be3, 0xc531, 0x6f60, + 0x0a99, 0xa0c8, 0x4e1a, 0xe44b, 0x839f, 0x29ce, 0xc71c, 0x6d4d, + 0x0cee, 0xa6bf, 0x486d, 0xe23c, 0x85e8, 0x2fb9, 0xc16b, 0x6b3a, + 0x0ec3, 0xa492, 0x4a40, 0xe011, 0x87c5, 0x2d94, 0xc346, 0x6917, + 0x1168, 0xbb39, 0x55eb, 0xffba, 0x986e, 0x323f, 0xdced, 0x76bc, + 0x1345, 0xb914, 0x57c6, 0xfd97, 0x9a43, 0x3012, 0xdec0, 0x7491, + 0x1532, 0xbf63, 0x51b1, 0xfbe0, 0x9c34, 0x3665, 0xd8b7, 0x72e6, + 0x171f, 0xbd4e, 0x539c, 0xf9cd, 0x9e19, 0x3448, 0xda9a, 0x70cb, + 0x19dc, 0xb38d, 0x5d5f, 0xf70e, 0x90da, 0x3a8b, 0xd459, 0x7e08, + 0x1bf1, 0xb1a0, 0x5f72, 0xf523, 0x92f7, 0x38a6, 0xd674, 0x7c25, + 0x1d86, 0xb7d7, 0x5905, 0xf354, 0x9480, 0x3ed1, 0xd003, 0x7a52, + 0x1fab, 0xb5fa, 0x5b28, 0xf179, 0x96ad, 0x3cfc, 0xd22e, 0x787f, + 0x22d0, 0x8881, 0x6653, 0xcc02, 0xabd6, 0x0187, 0xef55, 0x4504, + 0x20fd, 0x8aac, 0x647e, 0xce2f, 0xa9fb, 0x03aa, 0xed78, 0x4729, + 0x268a, 0x8cdb, 0x6209, 0xc858, 0xaf8c, 0x05dd, 0xeb0f, 0x415e, + 0x24a7, 0x8ef6, 0x6024, 0xca75, 0xada1, 0x07f0, 0xe922, 0x4373, + 0x2a64, 0x8035, 0x6ee7, 0xc4b6, 0xa362, 0x0933, 0xe7e1, 0x4db0, + 0x2849, 0x8218, 0x6cca, 0xc69b, 0xa14f, 0x0b1e, 0xe5cc, 0x4f9d, + 0x2e3e, 0x846f, 0x6abd, 0xc0ec, 0xa738, 0x0d69, 0xe3bb, 0x49ea, + 0x2c13, 0x8642, 0x6890, 0xc2c1, 0xa515, 0x0f44, 0xe196, 0x4bc7, + 0x33b8, 0x99e9, 0x773b, 0xdd6a, 0xbabe, 0x10ef, 0xfe3d, 0x546c, + 0x3195, 0x9bc4, 0x7516, 0xdf47, 0xb893, 0x12c2, 0xfc10, 0x5641, + 0x37e2, 0x9db3, 0x7361, 0xd930, 0xbee4, 0x14b5, 0xfa67, 0x5036, + 0x35cf, 0x9f9e, 0x714c, 0xdb1d, 0xbcc9, 0x1698, 0xf84a, 0x521b, + 0x3b0c, 0x915d, 0x7f8f, 0xd5de, 0xb20a, 0x185b, 0xf689, 0x5cd8, + 0x3921, 0x9370, 0x7da2, 0xd7f3, 0xb027, 0x1a76, 0xf4a4, 0x5ef5, + 0x3f56, 0x9507, 0x7bd5, 0xd184, 0xb650, 0x1c01, 0xf2d3, 0x5882, + 0x3d7b, 0x972a, 0x79f8, 0xd3a9, 0xb47d, 0x1e2c, 0xf0fe, 0x5aaf, + }, + { + 0x0000, 0x45a0, 0x8b40, 0xcee0, 0x06a1, 0x4301, 0x8de1, 0xc841, + 0x0d42, 0x48e2, 0x8602, 0xc3a2, 0x0be3, 0x4e43, 0x80a3, 0xc503, + 0x1a84, 0x5f24, 0x91c4, 0xd464, 0x1c25, 0x5985, 0x9765, 0xd2c5, + 0x17c6, 0x5266, 0x9c86, 0xd926, 0x1167, 0x54c7, 0x9a27, 0xdf87, + 0x3508, 0x70a8, 0xbe48, 0xfbe8, 0x33a9, 0x7609, 0xb8e9, 0xfd49, + 0x384a, 0x7dea, 0xb30a, 0xf6aa, 0x3eeb, 0x7b4b, 0xb5ab, 0xf00b, + 0x2f8c, 0x6a2c, 0xa4cc, 0xe16c, 0x292d, 0x6c8d, 0xa26d, 0xe7cd, + 0x22ce, 0x676e, 0xa98e, 0xec2e, 0x246f, 0x61cf, 0xaf2f, 0xea8f, + 0x6a10, 0x2fb0, 0xe150, 0xa4f0, 0x6cb1, 0x2911, 0xe7f1, 0xa251, + 0x6752, 0x22f2, 0xec12, 0xa9b2, 0x61f3, 0x2453, 0xeab3, 0xaf13, + 0x7094, 0x3534, 0xfbd4, 0xbe74, 0x7635, 0x3395, 0xfd75, 0xb8d5, + 0x7dd6, 0x3876, 0xf696, 0xb336, 0x7b77, 0x3ed7, 0xf037, 0xb597, + 0x5f18, 0x1ab8, 0xd458, 0x91f8, 0x59b9, 0x1c19, 0xd2f9, 0x9759, + 0x525a, 0x17fa, 0xd91a, 0x9cba, 0x54fb, 0x115b, 0xdfbb, 0x9a1b, + 0x459c, 0x003c, 0xcedc, 0x8b7c, 0x433d, 0x069d, 0xc87d, 0x8ddd, + 0x48de, 0x0d7e, 0xc39e, 0x863e, 0x4e7f, 0x0bdf, 0xc53f, 0x809f, + 0xd420, 0x9180, 0x5f60, 0x1ac0, 0xd281, 0x9721, 0x59c1, 0x1c61, + 0xd962, 0x9cc2, 0x5222, 0x1782, 0xdfc3, 0x9a63, 0x5483, 0x1123, + 0xcea4, 0x8b04, 0x45e4, 0x0044, 0xc805, 0x8da5, 0x4345, 0x06e5, + 0xc3e6, 0x8646, 0x48a6, 0x0d06, 0xc547, 0x80e7, 0x4e07, 0x0ba7, + 0xe128, 0xa488, 0x6a68, 0x2fc8, 0xe789, 0xa229, 0x6cc9, 0x2969, + 0xec6a, 0xa9ca, 0x672a, 0x228a, 0xeacb, 0xaf6b, 0x618b, 0x242b, + 0xfbac, 0xbe0c, 0x70ec, 0x354c, 0xfd0d, 0xb8ad, 0x764d, 0x33ed, + 0xf6ee, 0xb34e, 0x7dae, 0x380e, 0xf04f, 0xb5ef, 0x7b0f, 0x3eaf, + 0xbe30, 0xfb90, 0x3570, 0x70d0, 0xb891, 0xfd31, 0x33d1, 0x7671, + 0xb372, 0xf6d2, 0x3832, 0x7d92, 0xb5d3, 0xf073, 0x3e93, 0x7b33, + 0xa4b4, 0xe114, 0x2ff4, 0x6a54, 0xa215, 0xe7b5, 0x2955, 0x6cf5, + 0xa9f6, 0xec56, 0x22b6, 0x6716, 0xaf57, 0xeaf7, 0x2417, 0x61b7, + 0x8b38, 0xce98, 0x0078, 0x45d8, 0x8d99, 0xc839, 0x06d9, 0x4379, + 0x867a, 0xc3da, 0x0d3a, 0x489a, 0x80db, 0xc57b, 0x0b9b, 0x4e3b, + 0x91bc, 0xd41c, 0x1afc, 0x5f5c, 0x971d, 0xd2bd, 0x1c5d, 0x59fd, + 0x9cfe, 0xd95e, 0x17be, 0x521e, 0x9a5f, 0xdfff, 0x111f, 0x54bf, + }, + { + 0x0000, 0xb861, 0x60e3, 0xd882, 0xc1c6, 0x79a7, 0xa125, 0x1944, + 0x93ad, 0x2bcc, 0xf34e, 0x4b2f, 0x526b, 0xea0a, 0x3288, 0x8ae9, + 0x377b, 0x8f1a, 0x5798, 0xeff9, 0xf6bd, 0x4edc, 0x965e, 0x2e3f, + 0xa4d6, 0x1cb7, 0xc435, 0x7c54, 0x6510, 0xdd71, 0x05f3, 0xbd92, + 0x6ef6, 0xd697, 0x0e15, 0xb674, 0xaf30, 0x1751, 0xcfd3, 0x77b2, + 0xfd5b, 0x453a, 0x9db8, 0x25d9, 0x3c9d, 0x84fc, 0x5c7e, 0xe41f, + 0x598d, 0xe1ec, 0x396e, 0x810f, 0x984b, 0x202a, 0xf8a8, 0x40c9, + 0xca20, 0x7241, 0xaac3, 0x12a2, 0x0be6, 0xb387, 0x6b05, 0xd364, + 0xddec, 0x658d, 0xbd0f, 0x056e, 0x1c2a, 0xa44b, 0x7cc9, 0xc4a8, + 0x4e41, 0xf620, 0x2ea2, 0x96c3, 0x8f87, 0x37e6, 0xef64, 0x5705, + 0xea97, 0x52f6, 0x8a74, 0x3215, 0x2b51, 0x9330, 0x4bb2, 0xf3d3, + 0x793a, 0xc15b, 0x19d9, 0xa1b8, 0xb8fc, 0x009d, 0xd81f, 0x607e, + 0xb31a, 0x0b7b, 0xd3f9, 0x6b98, 0x72dc, 0xcabd, 0x123f, 0xaa5e, + 0x20b7, 0x98d6, 0x4054, 0xf835, 0xe171, 0x5910, 0x8192, 0x39f3, + 0x8461, 0x3c00, 0xe482, 0x5ce3, 0x45a7, 0xfdc6, 0x2544, 0x9d25, + 0x17cc, 0xafad, 0x772f, 0xcf4e, 0xd60a, 0x6e6b, 0xb6e9, 0x0e88, + 0xabf9, 0x1398, 0xcb1a, 0x737b, 0x6a3f, 0xd25e, 0x0adc, 0xb2bd, + 0x3854, 0x8035, 0x58b7, 0xe0d6, 0xf992, 0x41f3, 0x9971, 0x2110, + 0x9c82, 0x24e3, 0xfc61, 0x4400, 0x5d44, 0xe525, 0x3da7, 0x85c6, + 0x0f2f, 0xb74e, 0x6fcc, 0xd7ad, 0xcee9, 0x7688, 0xae0a, 0x166b, + 0xc50f, 0x7d6e, 0xa5ec, 0x1d8d, 0x04c9, 0xbca8, 0x642a, 0xdc4b, + 0x56a2, 0xeec3, 0x3641, 0x8e20, 0x9764, 0x2f05, 0xf787, 0x4fe6, + 0xf274, 0x4a15, 0x9297, 0x2af6, 0x33b2, 0x8bd3, 0x5351, 0xeb30, + 0x61d9, 0xd9b8, 0x013a, 0xb95b, 0xa01f, 0x187e, 0xc0fc, 0x789d, + 0x7615, 0xce74, 0x16f6, 0xae97, 0xb7d3, 0x0fb2, 0xd730, 0x6f51, + 0xe5b8, 0x5dd9, 0x855b, 0x3d3a, 0x247e, 0x9c1f, 0x449d, 0xfcfc, + 0x416e, 0xf90f, 0x218d, 0x99ec, 0x80a8, 0x38c9, 0xe04b, 0x582a, + 0xd2c3, 0x6aa2, 0xb220, 0x0a41, 0x1305, 0xab64, 0x73e6, 0xcb87, + 0x18e3, 0xa082, 0x7800, 0xc061, 0xd925, 0x6144, 0xb9c6, 0x01a7, + 0x8b4e, 0x332f, 0xebad, 0x53cc, 0x4a88, 0xf2e9, 0x2a6b, 0x920a, + 0x2f98, 0x97f9, 0x4f7b, 0xf71a, 0xee5e, 0x563f, 0x8ebd, 0x36dc, + 0xbc35, 0x0454, 0xdcd6, 0x64b7, 0x7df3, 0xc592, 0x1d10, 0xa571, + }, + { + 0x0000, 0x47d3, 0x8fa6, 0xc875, 0x0f6d, 0x48be, 0x80cb, 0xc718, + 0x1eda, 0x5909, 0x917c, 0xd6af, 0x11b7, 0x5664, 0x9e11, 0xd9c2, + 0x3db4, 0x7a67, 0xb212, 0xf5c1, 0x32d9, 0x750a, 0xbd7f, 0xfaac, + 0x236e, 0x64bd, 0xacc8, 0xeb1b, 0x2c03, 0x6bd0, 0xa3a5, 0xe476, + 0x7b68, 0x3cbb, 0xf4ce, 0xb31d, 0x7405, 0x33d6, 0xfba3, 0xbc70, + 0x65b2, 0x2261, 0xea14, 0xadc7, 0x6adf, 0x2d0c, 0xe579, 0xa2aa, + 0x46dc, 0x010f, 0xc97a, 0x8ea9, 0x49b1, 0x0e62, 0xc617, 0x81c4, + 0x5806, 0x1fd5, 0xd7a0, 0x9073, 0x576b, 0x10b8, 0xd8cd, 0x9f1e, + 0xf6d0, 0xb103, 0x7976, 0x3ea5, 0xf9bd, 0xbe6e, 0x761b, 0x31c8, + 0xe80a, 0xafd9, 0x67ac, 0x207f, 0xe767, 0xa0b4, 0x68c1, 0x2f12, + 0xcb64, 0x8cb7, 0x44c2, 0x0311, 0xc409, 0x83da, 0x4baf, 0x0c7c, + 0xd5be, 0x926d, 0x5a18, 0x1dcb, 0xdad3, 0x9d00, 0x5575, 0x12a6, + 0x8db8, 0xca6b, 0x021e, 0x45cd, 0x82d5, 0xc506, 0x0d73, 0x4aa0, + 0x9362, 0xd4b1, 0x1cc4, 0x5b17, 0x9c0f, 0xdbdc, 0x13a9, 0x547a, + 0xb00c, 0xf7df, 0x3faa, 0x7879, 0xbf61, 0xf8b2, 0x30c7, 0x7714, + 0xaed6, 0xe905, 0x2170, 0x66a3, 0xa1bb, 0xe668, 0x2e1d, 0x69ce, + 0xfd81, 0xba52, 0x7227, 0x35f4, 0xf2ec, 0xb53f, 0x7d4a, 0x3a99, + 0xe35b, 0xa488, 0x6cfd, 0x2b2e, 0xec36, 0xabe5, 0x6390, 0x2443, + 0xc035, 0x87e6, 0x4f93, 0x0840, 0xcf58, 0x888b, 0x40fe, 0x072d, + 0xdeef, 0x993c, 0x5149, 0x169a, 0xd182, 0x9651, 0x5e24, 0x19f7, + 0x86e9, 0xc13a, 0x094f, 0x4e9c, 0x8984, 0xce57, 0x0622, 0x41f1, + 0x9833, 0xdfe0, 0x1795, 0x5046, 0x975e, 0xd08d, 0x18f8, 0x5f2b, + 0xbb5d, 0xfc8e, 0x34fb, 0x7328, 0xb430, 0xf3e3, 0x3b96, 0x7c45, + 0xa587, 0xe254, 0x2a21, 0x6df2, 0xaaea, 0xed39, 0x254c, 0x629f, + 0x0b51, 0x4c82, 0x84f7, 0xc324, 0x043c, 0x43ef, 0x8b9a, 0xcc49, + 0x158b, 0x5258, 0x9a2d, 0xddfe, 0x1ae6, 0x5d35, 0x9540, 0xd293, + 0x36e5, 0x7136, 0xb943, 0xfe90, 0x3988, 0x7e5b, 0xb62e, 0xf1fd, + 0x283f, 0x6fec, 0xa799, 0xe04a, 0x2752, 0x6081, 0xa8f4, 0xef27, + 0x7039, 0x37ea, 0xff9f, 0xb84c, 0x7f54, 0x3887, 0xf0f2, 0xb721, + 0x6ee3, 0x2930, 0xe145, 0xa696, 0x618e, 0x265d, 0xee28, 0xa9fb, + 0x4d8d, 0x0a5e, 0xc22b, 0x85f8, 0x42e0, 0x0533, 0xcd46, 0x8a95, + 0x5357, 0x1484, 0xdcf1, 0x9b22, 0x5c3a, 0x1be9, 0xd39c, 0x944f, + }, + { + 0x0000, 0xeb23, 0xc667, 0x2d44, 0x9cef, 0x77cc, 0x5a88, 0xb1ab, + 0x29ff, 0xc2dc, 0xef98, 0x04bb, 0xb510, 0x5e33, 0x7377, 0x9854, + 0x53fe, 0xb8dd, 0x9599, 0x7eba, 0xcf11, 0x2432, 0x0976, 0xe255, + 0x7a01, 0x9122, 0xbc66, 0x5745, 0xe6ee, 0x0dcd, 0x2089, 0xcbaa, + 0xa7fc, 0x4cdf, 0x619b, 0x8ab8, 0x3b13, 0xd030, 0xfd74, 0x1657, + 0x8e03, 0x6520, 0x4864, 0xa347, 0x12ec, 0xf9cf, 0xd48b, 0x3fa8, + 0xf402, 0x1f21, 0x3265, 0xd946, 0x68ed, 0x83ce, 0xae8a, 0x45a9, + 0xddfd, 0x36de, 0x1b9a, 0xf0b9, 0x4112, 0xaa31, 0x8775, 0x6c56, + 0x5fd9, 0xb4fa, 0x99be, 0x729d, 0xc336, 0x2815, 0x0551, 0xee72, + 0x7626, 0x9d05, 0xb041, 0x5b62, 0xeac9, 0x01ea, 0x2cae, 0xc78d, + 0x0c27, 0xe704, 0xca40, 0x2163, 0x90c8, 0x7beb, 0x56af, 0xbd8c, + 0x25d8, 0xcefb, 0xe3bf, 0x089c, 0xb937, 0x5214, 0x7f50, 0x9473, + 0xf825, 0x1306, 0x3e42, 0xd561, 0x64ca, 0x8fe9, 0xa2ad, 0x498e, + 0xd1da, 0x3af9, 0x17bd, 0xfc9e, 0x4d35, 0xa616, 0x8b52, 0x6071, + 0xabdb, 0x40f8, 0x6dbc, 0x869f, 0x3734, 0xdc17, 0xf153, 0x1a70, + 0x8224, 0x6907, 0x4443, 0xaf60, 0x1ecb, 0xf5e8, 0xd8ac, 0x338f, + 0xbfb2, 0x5491, 0x79d5, 0x92f6, 0x235d, 0xc87e, 0xe53a, 0x0e19, + 0x964d, 0x7d6e, 0x502a, 0xbb09, 0x0aa2, 0xe181, 0xccc5, 0x27e6, + 0xec4c, 0x076f, 0x2a2b, 0xc108, 0x70a3, 0x9b80, 0xb6c4, 0x5de7, + 0xc5b3, 0x2e90, 0x03d4, 0xe8f7, 0x595c, 0xb27f, 0x9f3b, 0x7418, + 0x184e, 0xf36d, 0xde29, 0x350a, 0x84a1, 0x6f82, 0x42c6, 0xa9e5, + 0x31b1, 0xda92, 0xf7d6, 0x1cf5, 0xad5e, 0x467d, 0x6b39, 0x801a, + 0x4bb0, 0xa093, 0x8dd7, 0x66f4, 0xd75f, 0x3c7c, 0x1138, 0xfa1b, + 0x624f, 0x896c, 0xa428, 0x4f0b, 0xfea0, 0x1583, 0x38c7, 0xd3e4, + 0xe06b, 0x0b48, 0x260c, 0xcd2f, 0x7c84, 0x97a7, 0xbae3, 0x51c0, + 0xc994, 0x22b7, 0x0ff3, 0xe4d0, 0x557b, 0xbe58, 0x931c, 0x783f, + 0xb395, 0x58b6, 0x75f2, 0x9ed1, 0x2f7a, 0xc459, 0xe91d, 0x023e, + 0x9a6a, 0x7149, 0x5c0d, 0xb72e, 0x0685, 0xeda6, 0xc0e2, 0x2bc1, + 0x4797, 0xacb4, 0x81f0, 0x6ad3, 0xdb78, 0x305b, 0x1d1f, 0xf63c, + 0x6e68, 0x854b, 0xa80f, 0x432c, 0xf287, 0x19a4, 0x34e0, 0xdfc3, + 0x1469, 0xff4a, 0xd20e, 0x392d, 0x8886, 0x63a5, 0x4ee1, 0xa5c2, + 0x3d96, 0xd6b5, 0xfbf1, 0x10d2, 0xa179, 0x4a5a, 0x671e, 0x8c3d, + }, + { + 0x0000, 0x6f45, 0xde8a, 0xb1cf, 0xad35, 0xc270, 0x73bf, 0x1cfa, + 0x4a4b, 0x250e, 0x94c1, 0xfb84, 0xe77e, 0x883b, 0x39f4, 0x56b1, + 0x9496, 0xfbd3, 0x4a1c, 0x2559, 0x39a3, 0x56e6, 0xe729, 0x886c, + 0xdedd, 0xb198, 0x0057, 0x6f12, 0x73e8, 0x1cad, 0xad62, 0xc227, + 0x390d, 0x5648, 0xe787, 0x88c2, 0x9438, 0xfb7d, 0x4ab2, 0x25f7, + 0x7346, 0x1c03, 0xadcc, 0xc289, 0xde73, 0xb136, 0x00f9, 0x6fbc, + 0xad9b, 0xc2de, 0x7311, 0x1c54, 0x00ae, 0x6feb, 0xde24, 0xb161, + 0xe7d0, 0x8895, 0x395a, 0x561f, 0x4ae5, 0x25a0, 0x946f, 0xfb2a, + 0x721a, 0x1d5f, 0xac90, 0xc3d5, 0xdf2f, 0xb06a, 0x01a5, 0x6ee0, + 0x3851, 0x5714, 0xe6db, 0x899e, 0x9564, 0xfa21, 0x4bee, 0x24ab, + 0xe68c, 0x89c9, 0x3806, 0x5743, 0x4bb9, 0x24fc, 0x9533, 0xfa76, + 0xacc7, 0xc382, 0x724d, 0x1d08, 0x01f2, 0x6eb7, 0xdf78, 0xb03d, + 0x4b17, 0x2452, 0x959d, 0xfad8, 0xe622, 0x8967, 0x38a8, 0x57ed, + 0x015c, 0x6e19, 0xdfd6, 0xb093, 0xac69, 0xc32c, 0x72e3, 0x1da6, + 0xdf81, 0xb0c4, 0x010b, 0x6e4e, 0x72b4, 0x1df1, 0xac3e, 0xc37b, + 0x95ca, 0xfa8f, 0x4b40, 0x2405, 0x38ff, 0x57ba, 0xe675, 0x8930, + 0xe434, 0x8b71, 0x3abe, 0x55fb, 0x4901, 0x2644, 0x978b, 0xf8ce, + 0xae7f, 0xc13a, 0x70f5, 0x1fb0, 0x034a, 0x6c0f, 0xddc0, 0xb285, + 0x70a2, 0x1fe7, 0xae28, 0xc16d, 0xdd97, 0xb2d2, 0x031d, 0x6c58, + 0x3ae9, 0x55ac, 0xe463, 0x8b26, 0x97dc, 0xf899, 0x4956, 0x2613, + 0xdd39, 0xb27c, 0x03b3, 0x6cf6, 0x700c, 0x1f49, 0xae86, 0xc1c3, + 0x9772, 0xf837, 0x49f8, 0x26bd, 0x3a47, 0x5502, 0xe4cd, 0x8b88, + 0x49af, 0x26ea, 0x9725, 0xf860, 0xe49a, 0x8bdf, 0x3a10, 0x5555, + 0x03e4, 0x6ca1, 0xdd6e, 0xb22b, 0xaed1, 0xc194, 0x705b, 0x1f1e, + 0x962e, 0xf96b, 0x48a4, 0x27e1, 0x3b1b, 0x545e, 0xe591, 0x8ad4, + 0xdc65, 0xb320, 0x02ef, 0x6daa, 0x7150, 0x1e15, 0xafda, 0xc09f, + 0x02b8, 0x6dfd, 0xdc32, 0xb377, 0xaf8d, 0xc0c8, 0x7107, 0x1e42, + 0x48f3, 0x27b6, 0x9679, 0xf93c, 0xe5c6, 0x8a83, 0x3b4c, 0x5409, + 0xaf23, 0xc066, 0x71a9, 0x1eec, 0x0216, 0x6d53, 0xdc9c, 0xb3d9, + 0xe568, 0x8a2d, 0x3be2, 0x54a7, 0x485d, 0x2718, 0x96d7, 0xf992, + 0x3bb5, 0x54f0, 0xe53f, 0x8a7a, 0x9680, 0xf9c5, 0x480a, 0x274f, + 0x71fe, 0x1ebb, 0xaf74, 0xc031, 0xdccb, 0xb38e, 0x0241, 0x6d04, + }, + { + 0x0000, 0xd849, 0xa0b3, 0x78fa, 0x5147, 0x890e, 0xf1f4, 0x29bd, + 0xa28e, 0x7ac7, 0x023d, 0xda74, 0xf3c9, 0x2b80, 0x537a, 0x8b33, + 0x553d, 0x8d74, 0xf58e, 0x2dc7, 0x047a, 0xdc33, 0xa4c9, 0x7c80, + 0xf7b3, 0x2ffa, 0x5700, 0x8f49, 0xa6f4, 0x7ebd, 0x0647, 0xde0e, + 0xaa7a, 0x7233, 0x0ac9, 0xd280, 0xfb3d, 0x2374, 0x5b8e, 0x83c7, + 0x08f4, 0xd0bd, 0xa847, 0x700e, 0x59b3, 0x81fa, 0xf900, 0x2149, + 0xff47, 0x270e, 0x5ff4, 0x87bd, 0xae00, 0x7649, 0x0eb3, 0xd6fa, + 0x5dc9, 0x8580, 0xfd7a, 0x2533, 0x0c8e, 0xd4c7, 0xac3d, 0x7474, + 0x44d5, 0x9c9c, 0xe466, 0x3c2f, 0x1592, 0xcddb, 0xb521, 0x6d68, + 0xe65b, 0x3e12, 0x46e8, 0x9ea1, 0xb71c, 0x6f55, 0x17af, 0xcfe6, + 0x11e8, 0xc9a1, 0xb15b, 0x6912, 0x40af, 0x98e6, 0xe01c, 0x3855, + 0xb366, 0x6b2f, 0x13d5, 0xcb9c, 0xe221, 0x3a68, 0x4292, 0x9adb, + 0xeeaf, 0x36e6, 0x4e1c, 0x9655, 0xbfe8, 0x67a1, 0x1f5b, 0xc712, + 0x4c21, 0x9468, 0xec92, 0x34db, 0x1d66, 0xc52f, 0xbdd5, 0x659c, + 0xbb92, 0x63db, 0x1b21, 0xc368, 0xead5, 0x329c, 0x4a66, 0x922f, + 0x191c, 0xc155, 0xb9af, 0x61e6, 0x485b, 0x9012, 0xe8e8, 0x30a1, + 0x89aa, 0x51e3, 0x2919, 0xf150, 0xd8ed, 0x00a4, 0x785e, 0xa017, + 0x2b24, 0xf36d, 0x8b97, 0x53de, 0x7a63, 0xa22a, 0xdad0, 0x0299, + 0xdc97, 0x04de, 0x7c24, 0xa46d, 0x8dd0, 0x5599, 0x2d63, 0xf52a, + 0x7e19, 0xa650, 0xdeaa, 0x06e3, 0x2f5e, 0xf717, 0x8fed, 0x57a4, + 0x23d0, 0xfb99, 0x8363, 0x5b2a, 0x7297, 0xaade, 0xd224, 0x0a6d, + 0x815e, 0x5917, 0x21ed, 0xf9a4, 0xd019, 0x0850, 0x70aa, 0xa8e3, + 0x76ed, 0xaea4, 0xd65e, 0x0e17, 0x27aa, 0xffe3, 0x8719, 0x5f50, + 0xd463, 0x0c2a, 0x74d0, 0xac99, 0x8524, 0x5d6d, 0x2597, 0xfdde, + 0xcd7f, 0x1536, 0x6dcc, 0xb585, 0x9c38, 0x4471, 0x3c8b, 0xe4c2, + 0x6ff1, 0xb7b8, 0xcf42, 0x170b, 0x3eb6, 0xe6ff, 0x9e05, 0x464c, + 0x9842, 0x400b, 0x38f1, 0xe0b8, 0xc905, 0x114c, 0x69b6, 0xb1ff, + 0x3acc, 0xe285, 0x9a7f, 0x4236, 0x6b8b, 0xb3c2, 0xcb38, 0x1371, + 0x6705, 0xbf4c, 0xc7b6, 0x1fff, 0x3642, 0xee0b, 0x96f1, 0x4eb8, + 0xc58b, 0x1dc2, 0x6538, 0xbd71, 0x94cc, 0x4c85, 0x347f, 0xec36, + 0x3238, 0xea71, 0x928b, 0x4ac2, 0x637f, 0xbb36, 0xc3cc, 0x1b85, + 0x90b6, 0x48ff, 0x3005, 0xe84c, 0xc1f1, 0x19b8, 0x6142, 0xb90b, + }, + { + 0x0000, 0x0375, 0x06ea, 0x059f, 0x0dd4, 0x0ea1, 0x0b3e, 0x084b, + 0x1ba8, 0x18dd, 0x1d42, 0x1e37, 0x167c, 0x1509, 0x1096, 0x13e3, + 0x3750, 0x3425, 0x31ba, 0x32cf, 0x3a84, 0x39f1, 0x3c6e, 0x3f1b, + 0x2cf8, 0x2f8d, 0x2a12, 0x2967, 0x212c, 0x2259, 0x27c6, 0x24b3, + 0x6ea0, 0x6dd5, 0x684a, 0x6b3f, 0x6374, 0x6001, 0x659e, 0x66eb, + 0x7508, 0x767d, 0x73e2, 0x7097, 0x78dc, 0x7ba9, 0x7e36, 0x7d43, + 0x59f0, 0x5a85, 0x5f1a, 0x5c6f, 0x5424, 0x5751, 0x52ce, 0x51bb, + 0x4258, 0x412d, 0x44b2, 0x47c7, 0x4f8c, 0x4cf9, 0x4966, 0x4a13, + 0xdd40, 0xde35, 0xdbaa, 0xd8df, 0xd094, 0xd3e1, 0xd67e, 0xd50b, + 0xc6e8, 0xc59d, 0xc002, 0xc377, 0xcb3c, 0xc849, 0xcdd6, 0xcea3, + 0xea10, 0xe965, 0xecfa, 0xef8f, 0xe7c4, 0xe4b1, 0xe12e, 0xe25b, + 0xf1b8, 0xf2cd, 0xf752, 0xf427, 0xfc6c, 0xff19, 0xfa86, 0xf9f3, + 0xb3e0, 0xb095, 0xb50a, 0xb67f, 0xbe34, 0xbd41, 0xb8de, 0xbbab, + 0xa848, 0xab3d, 0xaea2, 0xadd7, 0xa59c, 0xa6e9, 0xa376, 0xa003, + 0x84b0, 0x87c5, 0x825a, 0x812f, 0x8964, 0x8a11, 0x8f8e, 0x8cfb, + 0x9f18, 0x9c6d, 0x99f2, 0x9a87, 0x92cc, 0x91b9, 0x9426, 0x9753, + 0xaaa1, 0xa9d4, 0xac4b, 0xaf3e, 0xa775, 0xa400, 0xa19f, 0xa2ea, + 0xb109, 0xb27c, 0xb7e3, 0xb496, 0xbcdd, 0xbfa8, 0xba37, 0xb942, + 0x9df1, 0x9e84, 0x9b1b, 0x986e, 0x9025, 0x9350, 0x96cf, 0x95ba, + 0x8659, 0x852c, 0x80b3, 0x83c6, 0x8b8d, 0x88f8, 0x8d67, 0x8e12, + 0xc401, 0xc774, 0xc2eb, 0xc19e, 0xc9d5, 0xcaa0, 0xcf3f, 0xcc4a, + 0xdfa9, 0xdcdc, 0xd943, 0xda36, 0xd27d, 0xd108, 0xd497, 0xd7e2, + 0xf351, 0xf024, 0xf5bb, 0xf6ce, 0xfe85, 0xfdf0, 0xf86f, 0xfb1a, + 0xe8f9, 0xeb8c, 0xee13, 0xed66, 0xe52d, 0xe658, 0xe3c7, 0xe0b2, + 0x77e1, 0x7494, 0x710b, 0x727e, 0x7a35, 0x7940, 0x7cdf, 0x7faa, + 0x6c49, 0x6f3c, 0x6aa3, 0x69d6, 0x619d, 0x62e8, 0x6777, 0x6402, + 0x40b1, 0x43c4, 0x465b, 0x452e, 0x4d65, 0x4e10, 0x4b8f, 0x48fa, + 0x5b19, 0x586c, 0x5df3, 0x5e86, 0x56cd, 0x55b8, 0x5027, 0x5352, + 0x1941, 0x1a34, 0x1fab, 0x1cde, 0x1495, 0x17e0, 0x127f, 0x110a, + 0x02e9, 0x019c, 0x0403, 0x0776, 0x0f3d, 0x0c48, 0x09d7, 0x0aa2, + 0x2e11, 0x2d64, 0x28fb, 0x2b8e, 0x23c5, 0x20b0, 0x252f, 0x265a, + 0x35b9, 0x36cc, 0x3353, 0x3026, 0x386d, 0x3b18, 0x3e87, 0x3df2, + }, + { + 0x0000, 0x4563, 0x8ac6, 0xcfa5, 0x05ad, 0x40ce, 0x8f6b, 0xca08, + 0x0b5a, 0x4e39, 0x819c, 0xc4ff, 0x0ef7, 0x4b94, 0x8431, 0xc152, + 0x16b4, 0x53d7, 0x9c72, 0xd911, 0x1319, 0x567a, 0x99df, 0xdcbc, + 0x1dee, 0x588d, 0x9728, 0xd24b, 0x1843, 0x5d20, 0x9285, 0xd7e6, + 0x2d68, 0x680b, 0xa7ae, 0xe2cd, 0x28c5, 0x6da6, 0xa203, 0xe760, + 0x2632, 0x6351, 0xacf4, 0xe997, 0x239f, 0x66fc, 0xa959, 0xec3a, + 0x3bdc, 0x7ebf, 0xb11a, 0xf479, 0x3e71, 0x7b12, 0xb4b7, 0xf1d4, + 0x3086, 0x75e5, 0xba40, 0xff23, 0x352b, 0x7048, 0xbfed, 0xfa8e, + 0x5ad0, 0x1fb3, 0xd016, 0x9575, 0x5f7d, 0x1a1e, 0xd5bb, 0x90d8, + 0x518a, 0x14e9, 0xdb4c, 0x9e2f, 0x5427, 0x1144, 0xdee1, 0x9b82, + 0x4c64, 0x0907, 0xc6a2, 0x83c1, 0x49c9, 0x0caa, 0xc30f, 0x866c, + 0x473e, 0x025d, 0xcdf8, 0x889b, 0x4293, 0x07f0, 0xc855, 0x8d36, + 0x77b8, 0x32db, 0xfd7e, 0xb81d, 0x7215, 0x3776, 0xf8d3, 0xbdb0, + 0x7ce2, 0x3981, 0xf624, 0xb347, 0x794f, 0x3c2c, 0xf389, 0xb6ea, + 0x610c, 0x246f, 0xebca, 0xaea9, 0x64a1, 0x21c2, 0xee67, 0xab04, + 0x6a56, 0x2f35, 0xe090, 0xa5f3, 0x6ffb, 0x2a98, 0xe53d, 0xa05e, + 0xb5a0, 0xf0c3, 0x3f66, 0x7a05, 0xb00d, 0xf56e, 0x3acb, 0x7fa8, + 0xbefa, 0xfb99, 0x343c, 0x715f, 0xbb57, 0xfe34, 0x3191, 0x74f2, + 0xa314, 0xe677, 0x29d2, 0x6cb1, 0xa6b9, 0xe3da, 0x2c7f, 0x691c, + 0xa84e, 0xed2d, 0x2288, 0x67eb, 0xade3, 0xe880, 0x2725, 0x6246, + 0x98c8, 0xddab, 0x120e, 0x576d, 0x9d65, 0xd806, 0x17a3, 0x52c0, + 0x9392, 0xd6f1, 0x1954, 0x5c37, 0x963f, 0xd35c, 0x1cf9, 0x599a, + 0x8e7c, 0xcb1f, 0x04ba, 0x41d9, 0x8bd1, 0xceb2, 0x0117, 0x4474, + 0x8526, 0xc045, 0x0fe0, 0x4a83, 0x808b, 0xc5e8, 0x0a4d, 0x4f2e, + 0xef70, 0xaa13, 0x65b6, 0x20d5, 0xeadd, 0xafbe, 0x601b, 0x2578, + 0xe42a, 0xa149, 0x6eec, 0x2b8f, 0xe187, 0xa4e4, 0x6b41, 0x2e22, + 0xf9c4, 0xbca7, 0x7302, 0x3661, 0xfc69, 0xb90a, 0x76af, 0x33cc, + 0xf29e, 0xb7fd, 0x7858, 0x3d3b, 0xf733, 0xb250, 0x7df5, 0x3896, + 0xc218, 0x877b, 0x48de, 0x0dbd, 0xc7b5, 0x82d6, 0x4d73, 0x0810, + 0xc942, 0x8c21, 0x4384, 0x06e7, 0xccef, 0x898c, 0x4629, 0x034a, + 0xd4ac, 0x91cf, 0x5e6a, 0x1b09, 0xd101, 0x9462, 0x5bc7, 0x1ea4, + 0xdff6, 0x9a95, 0x5530, 0x1053, 0xda5b, 0x9f38, 0x509d, 0x15fe, + }, + { + 0x0000, 0x7b61, 0xf6c2, 0x8da3, 0xfda5, 0x86c4, 0x0b67, 0x7006, + 0xeb6b, 0x900a, 0x1da9, 0x66c8, 0x16ce, 0x6daf, 0xe00c, 0x9b6d, + 0xc6f7, 0xbd96, 0x3035, 0x4b54, 0x3b52, 0x4033, 0xcd90, 0xb6f1, + 0x2d9c, 0x56fd, 0xdb5e, 0xa03f, 0xd039, 0xab58, 0x26fb, 0x5d9a, + 0x9dcf, 0xe6ae, 0x6b0d, 0x106c, 0x606a, 0x1b0b, 0x96a8, 0xedc9, + 0x76a4, 0x0dc5, 0x8066, 0xfb07, 0x8b01, 0xf060, 0x7dc3, 0x06a2, + 0x5b38, 0x2059, 0xadfa, 0xd69b, 0xa69d, 0xddfc, 0x505f, 0x2b3e, + 0xb053, 0xcb32, 0x4691, 0x3df0, 0x4df6, 0x3697, 0xbb34, 0xc055, + 0x2bbf, 0x50de, 0xdd7d, 0xa61c, 0xd61a, 0xad7b, 0x20d8, 0x5bb9, + 0xc0d4, 0xbbb5, 0x3616, 0x4d77, 0x3d71, 0x4610, 0xcbb3, 0xb0d2, + 0xed48, 0x9629, 0x1b8a, 0x60eb, 0x10ed, 0x6b8c, 0xe62f, 0x9d4e, + 0x0623, 0x7d42, 0xf0e1, 0x8b80, 0xfb86, 0x80e7, 0x0d44, 0x7625, + 0xb670, 0xcd11, 0x40b2, 0x3bd3, 0x4bd5, 0x30b4, 0xbd17, 0xc676, + 0x5d1b, 0x267a, 0xabd9, 0xd0b8, 0xa0be, 0xdbdf, 0x567c, 0x2d1d, + 0x7087, 0x0be6, 0x8645, 0xfd24, 0x8d22, 0xf643, 0x7be0, 0x0081, + 0x9bec, 0xe08d, 0x6d2e, 0x164f, 0x6649, 0x1d28, 0x908b, 0xebea, + 0x577e, 0x2c1f, 0xa1bc, 0xdadd, 0xaadb, 0xd1ba, 0x5c19, 0x2778, + 0xbc15, 0xc774, 0x4ad7, 0x31b6, 0x41b0, 0x3ad1, 0xb772, 0xcc13, + 0x9189, 0xeae8, 0x674b, 0x1c2a, 0x6c2c, 0x174d, 0x9aee, 0xe18f, + 0x7ae2, 0x0183, 0x8c20, 0xf741, 0x8747, 0xfc26, 0x7185, 0x0ae4, + 0xcab1, 0xb1d0, 0x3c73, 0x4712, 0x3714, 0x4c75, 0xc1d6, 0xbab7, + 0x21da, 0x5abb, 0xd718, 0xac79, 0xdc7f, 0xa71e, 0x2abd, 0x51dc, + 0x0c46, 0x7727, 0xfa84, 0x81e5, 0xf1e3, 0x8a82, 0x0721, 0x7c40, + 0xe72d, 0x9c4c, 0x11ef, 0x6a8e, 0x1a88, 0x61e9, 0xec4a, 0x972b, + 0x7cc1, 0x07a0, 0x8a03, 0xf162, 0x8164, 0xfa05, 0x77a6, 0x0cc7, + 0x97aa, 0xeccb, 0x6168, 0x1a09, 0x6a0f, 0x116e, 0x9ccd, 0xe7ac, + 0xba36, 0xc157, 0x4cf4, 0x3795, 0x4793, 0x3cf2, 0xb151, 0xca30, + 0x515d, 0x2a3c, 0xa79f, 0xdcfe, 0xacf8, 0xd799, 0x5a3a, 0x215b, + 0xe10e, 0x9a6f, 0x17cc, 0x6cad, 0x1cab, 0x67ca, 0xea69, 0x9108, + 0x0a65, 0x7104, 0xfca7, 0x87c6, 0xf7c0, 0x8ca1, 0x0102, 0x7a63, + 0x27f9, 0x5c98, 0xd13b, 0xaa5a, 0xda5c, 0xa13d, 0x2c9e, 0x57ff, + 0xcc92, 0xb7f3, 0x3a50, 0x4131, 0x3137, 0x4a56, 0xc7f5, 0xbc94, + }, + { + 0x0000, 0xaefc, 0x4dd9, 0xe325, 0x9bb2, 0x354e, 0xd66b, 0x7897, + 0x2745, 0x89b9, 0x6a9c, 0xc460, 0xbcf7, 0x120b, 0xf12e, 0x5fd2, + 0x4e8a, 0xe076, 0x0353, 0xadaf, 0xd538, 0x7bc4, 0x98e1, 0x361d, + 0x69cf, 0xc733, 0x2416, 0x8aea, 0xf27d, 0x5c81, 0xbfa4, 0x1158, + 0x9d14, 0x33e8, 0xd0cd, 0x7e31, 0x06a6, 0xa85a, 0x4b7f, 0xe583, + 0xba51, 0x14ad, 0xf788, 0x5974, 0x21e3, 0x8f1f, 0x6c3a, 0xc2c6, + 0xd39e, 0x7d62, 0x9e47, 0x30bb, 0x482c, 0xe6d0, 0x05f5, 0xab09, + 0xf4db, 0x5a27, 0xb902, 0x17fe, 0x6f69, 0xc195, 0x22b0, 0x8c4c, + 0x2a09, 0x84f5, 0x67d0, 0xc92c, 0xb1bb, 0x1f47, 0xfc62, 0x529e, + 0x0d4c, 0xa3b0, 0x4095, 0xee69, 0x96fe, 0x3802, 0xdb27, 0x75db, + 0x6483, 0xca7f, 0x295a, 0x87a6, 0xff31, 0x51cd, 0xb2e8, 0x1c14, + 0x43c6, 0xed3a, 0x0e1f, 0xa0e3, 0xd874, 0x7688, 0x95ad, 0x3b51, + 0xb71d, 0x19e1, 0xfac4, 0x5438, 0x2caf, 0x8253, 0x6176, 0xcf8a, + 0x9058, 0x3ea4, 0xdd81, 0x737d, 0x0bea, 0xa516, 0x4633, 0xe8cf, + 0xf997, 0x576b, 0xb44e, 0x1ab2, 0x6225, 0xccd9, 0x2ffc, 0x8100, + 0xded2, 0x702e, 0x930b, 0x3df7, 0x4560, 0xeb9c, 0x08b9, 0xa645, + 0x5412, 0xfaee, 0x19cb, 0xb737, 0xcfa0, 0x615c, 0x8279, 0x2c85, + 0x7357, 0xddab, 0x3e8e, 0x9072, 0xe8e5, 0x4619, 0xa53c, 0x0bc0, + 0x1a98, 0xb464, 0x5741, 0xf9bd, 0x812a, 0x2fd6, 0xccf3, 0x620f, + 0x3ddd, 0x9321, 0x7004, 0xdef8, 0xa66f, 0x0893, 0xebb6, 0x454a, + 0xc906, 0x67fa, 0x84df, 0x2a23, 0x52b4, 0xfc48, 0x1f6d, 0xb191, + 0xee43, 0x40bf, 0xa39a, 0x0d66, 0x75f1, 0xdb0d, 0x3828, 0x96d4, + 0x878c, 0x2970, 0xca55, 0x64a9, 0x1c3e, 0xb2c2, 0x51e7, 0xff1b, + 0xa0c9, 0x0e35, 0xed10, 0x43ec, 0x3b7b, 0x9587, 0x76a2, 0xd85e, + 0x7e1b, 0xd0e7, 0x33c2, 0x9d3e, 0xe5a9, 0x4b55, 0xa870, 0x068c, + 0x595e, 0xf7a2, 0x1487, 0xba7b, 0xc2ec, 0x6c10, 0x8f35, 0x21c9, + 0x3091, 0x9e6d, 0x7d48, 0xd3b4, 0xab23, 0x05df, 0xe6fa, 0x4806, + 0x17d4, 0xb928, 0x5a0d, 0xf4f1, 0x8c66, 0x229a, 0xc1bf, 0x6f43, + 0xe30f, 0x4df3, 0xaed6, 0x002a, 0x78bd, 0xd641, 0x3564, 0x9b98, + 0xc44a, 0x6ab6, 0x8993, 0x276f, 0x5ff8, 0xf104, 0x1221, 0xbcdd, + 0xad85, 0x0379, 0xe05c, 0x4ea0, 0x3637, 0x98cb, 0x7bee, 0xd512, + 0x8ac0, 0x243c, 0xc719, 0x69e5, 0x1172, 0xbf8e, 0x5cab, 0xf257, + }, + { + 0x0000, 0xa824, 0x4069, 0xe84d, 0x80d2, 0x28f6, 0xc0bb, 0x689f, + 0x1185, 0xb9a1, 0x51ec, 0xf9c8, 0x9157, 0x3973, 0xd13e, 0x791a, + 0x230a, 0x8b2e, 0x6363, 0xcb47, 0xa3d8, 0x0bfc, 0xe3b1, 0x4b95, + 0x328f, 0x9aab, 0x72e6, 0xdac2, 0xb25d, 0x1a79, 0xf234, 0x5a10, + 0x4614, 0xee30, 0x067d, 0xae59, 0xc6c6, 0x6ee2, 0x86af, 0x2e8b, + 0x5791, 0xffb5, 0x17f8, 0xbfdc, 0xd743, 0x7f67, 0x972a, 0x3f0e, + 0x651e, 0xcd3a, 0x2577, 0x8d53, 0xe5cc, 0x4de8, 0xa5a5, 0x0d81, + 0x749b, 0xdcbf, 0x34f2, 0x9cd6, 0xf449, 0x5c6d, 0xb420, 0x1c04, + 0x8c28, 0x240c, 0xcc41, 0x6465, 0x0cfa, 0xa4de, 0x4c93, 0xe4b7, + 0x9dad, 0x3589, 0xddc4, 0x75e0, 0x1d7f, 0xb55b, 0x5d16, 0xf532, + 0xaf22, 0x0706, 0xef4b, 0x476f, 0x2ff0, 0x87d4, 0x6f99, 0xc7bd, + 0xbea7, 0x1683, 0xfece, 0x56ea, 0x3e75, 0x9651, 0x7e1c, 0xd638, + 0xca3c, 0x6218, 0x8a55, 0x2271, 0x4aee, 0xe2ca, 0x0a87, 0xa2a3, + 0xdbb9, 0x739d, 0x9bd0, 0x33f4, 0x5b6b, 0xf34f, 0x1b02, 0xb326, + 0xe936, 0x4112, 0xa95f, 0x017b, 0x69e4, 0xc1c0, 0x298d, 0x81a9, + 0xf8b3, 0x5097, 0xb8da, 0x10fe, 0x7861, 0xd045, 0x3808, 0x902c, + 0x0871, 0xa055, 0x4818, 0xe03c, 0x88a3, 0x2087, 0xc8ca, 0x60ee, + 0x19f4, 0xb1d0, 0x599d, 0xf1b9, 0x9926, 0x3102, 0xd94f, 0x716b, + 0x2b7b, 0x835f, 0x6b12, 0xc336, 0xaba9, 0x038d, 0xebc0, 0x43e4, + 0x3afe, 0x92da, 0x7a97, 0xd2b3, 0xba2c, 0x1208, 0xfa45, 0x5261, + 0x4e65, 0xe641, 0x0e0c, 0xa628, 0xceb7, 0x6693, 0x8ede, 0x26fa, + 0x5fe0, 0xf7c4, 0x1f89, 0xb7ad, 0xdf32, 0x7716, 0x9f5b, 0x377f, + 0x6d6f, 0xc54b, 0x2d06, 0x8522, 0xedbd, 0x4599, 0xadd4, 0x05f0, + 0x7cea, 0xd4ce, 0x3c83, 0x94a7, 0xfc38, 0x541c, 0xbc51, 0x1475, + 0x8459, 0x2c7d, 0xc430, 0x6c14, 0x048b, 0xacaf, 0x44e2, 0xecc6, + 0x95dc, 0x3df8, 0xd5b5, 0x7d91, 0x150e, 0xbd2a, 0x5567, 0xfd43, + 0xa753, 0x0f77, 0xe73a, 0x4f1e, 0x2781, 0x8fa5, 0x67e8, 0xcfcc, + 0xb6d6, 0x1ef2, 0xf6bf, 0x5e9b, 0x3604, 0x9e20, 0x766d, 0xde49, + 0xc24d, 0x6a69, 0x8224, 0x2a00, 0x429f, 0xeabb, 0x02f6, 0xaad2, + 0xd3c8, 0x7bec, 0x93a1, 0x3b85, 0x531a, 0xfb3e, 0x1373, 0xbb57, + 0xe147, 0x4963, 0xa12e, 0x090a, 0x6195, 0xc9b1, 0x21fc, 0x89d8, + 0xf0c2, 0x58e6, 0xb0ab, 0x188f, 0x7010, 0xd834, 0x3079, 0x985d, + }, +}; diff --git a/ext/digest/crc16_kermit/crc16_kermit.c b/ext/digest/crc16_kermit/crc16_kermit.c index 2828671..4ade798 100644 --- a/ext/digest/crc16_kermit/crc16_kermit.c +++ b/ext/digest/crc16_kermit/crc16_kermit.c @@ -15,54 +15,39 @@ */ #include "crc16_kermit.h" - -/** - * Static table used for the table_driven implementation. - */ -static const crc16_t crc_table[256] = { - 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, - 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7, - 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e, - 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876, - 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd, - 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5, - 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c, - 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974, - 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb, - 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3, - 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a, - 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72, - 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9, - 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1, - 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738, - 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70, - 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7, - 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff, - 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036, - 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e, - 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5, - 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd, - 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134, - 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c, - 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3, - 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb, - 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232, - 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a, - 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1, - 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9, - 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330, - 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78 -}; +#include "crc16_kermit_table.h" crc16_t crc16_kermit_update(crc16_t crc, const void *data, size_t data_len) { const unsigned char *d = (const unsigned char *)data; unsigned int tbl_idx; + for (; data_len >= SLICE_SIZE; data_len -= SLICE_SIZE) + { + crc = crc16_kermit_table[15][d[ 0] ^ ((crc >> 0) & 0xff)] ^ + crc16_kermit_table[14][d[ 1] ^ ((crc >> 8) & 0xff)] ^ + crc16_kermit_table[13][d[ 2] ] ^ + crc16_kermit_table[12][d[ 3] ] ^ + crc16_kermit_table[11][d[ 4] ] ^ + crc16_kermit_table[10][d[ 5] ] ^ + crc16_kermit_table[ 9][d[ 6] ] ^ + crc16_kermit_table[ 8][d[ 7] ] ^ + crc16_kermit_table[ 7][d[ 8] ] ^ + crc16_kermit_table[ 6][d[ 9] ] ^ + crc16_kermit_table[ 5][d[10] ] ^ + crc16_kermit_table[ 4][d[11] ] ^ + crc16_kermit_table[ 3][d[12] ] ^ + crc16_kermit_table[ 2][d[13] ] ^ + crc16_kermit_table[ 1][d[14] ] ^ + crc16_kermit_table[ 0][d[15] ]; + crc &= 0xffff; + d += SLICE_SIZE; + } + while (data_len--) { tbl_idx = (crc ^ *d) & 0xff; - crc = (crc_table[tbl_idx] ^ (crc >> 8)) & 0xffff; + crc = (crc16_kermit_table[0][tbl_idx] ^ (crc >> 8)) & 0xffff; d++; } diff --git a/ext/digest/crc16_kermit/crc16_kermit_table.h b/ext/digest/crc16_kermit/crc16_kermit_table.h new file mode 100644 index 0000000..f7848cc --- /dev/null +++ b/ext/digest/crc16_kermit/crc16_kermit_table.h @@ -0,0 +1,558 @@ +/* + * bitwidth: 16 + * generator polynomial: 0x1021 + * input bit direction: REFLECT + * slice bytes per iteration: 16 + * slide bits per table: 8 + * + * Generated by: gentable.rb of digest-crc + */ + +#define SLICE_SIZE 16 + +static const uint16_t crc16_kermit_table[SLICE_SIZE][256] = { + { + 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, + 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7, + 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e, + 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876, + 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd, + 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5, + 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c, + 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974, + 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb, + 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3, + 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a, + 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72, + 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9, + 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1, + 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738, + 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70, + 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7, + 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff, + 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036, + 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e, + 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5, + 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd, + 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134, + 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c, + 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3, + 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb, + 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232, + 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a, + 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1, + 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9, + 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330, + 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78, + }, + { + 0x0000, 0x19d8, 0x33b0, 0x2a68, 0x6760, 0x7eb8, 0x54d0, 0x4d08, + 0xcec0, 0xd718, 0xfd70, 0xe4a8, 0xa9a0, 0xb078, 0x9a10, 0x83c8, + 0x9591, 0x8c49, 0xa621, 0xbff9, 0xf2f1, 0xeb29, 0xc141, 0xd899, + 0x5b51, 0x4289, 0x68e1, 0x7139, 0x3c31, 0x25e9, 0x0f81, 0x1659, + 0x2333, 0x3aeb, 0x1083, 0x095b, 0x4453, 0x5d8b, 0x77e3, 0x6e3b, + 0xedf3, 0xf42b, 0xde43, 0xc79b, 0x8a93, 0x934b, 0xb923, 0xa0fb, + 0xb6a2, 0xaf7a, 0x8512, 0x9cca, 0xd1c2, 0xc81a, 0xe272, 0xfbaa, + 0x7862, 0x61ba, 0x4bd2, 0x520a, 0x1f02, 0x06da, 0x2cb2, 0x356a, + 0x4666, 0x5fbe, 0x75d6, 0x6c0e, 0x2106, 0x38de, 0x12b6, 0x0b6e, + 0x88a6, 0x917e, 0xbb16, 0xa2ce, 0xefc6, 0xf61e, 0xdc76, 0xc5ae, + 0xd3f7, 0xca2f, 0xe047, 0xf99f, 0xb497, 0xad4f, 0x8727, 0x9eff, + 0x1d37, 0x04ef, 0x2e87, 0x375f, 0x7a57, 0x638f, 0x49e7, 0x503f, + 0x6555, 0x7c8d, 0x56e5, 0x4f3d, 0x0235, 0x1bed, 0x3185, 0x285d, + 0xab95, 0xb24d, 0x9825, 0x81fd, 0xccf5, 0xd52d, 0xff45, 0xe69d, + 0xf0c4, 0xe91c, 0xc374, 0xdaac, 0x97a4, 0x8e7c, 0xa414, 0xbdcc, + 0x3e04, 0x27dc, 0x0db4, 0x146c, 0x5964, 0x40bc, 0x6ad4, 0x730c, + 0x8ccc, 0x9514, 0xbf7c, 0xa6a4, 0xebac, 0xf274, 0xd81c, 0xc1c4, + 0x420c, 0x5bd4, 0x71bc, 0x6864, 0x256c, 0x3cb4, 0x16dc, 0x0f04, + 0x195d, 0x0085, 0x2aed, 0x3335, 0x7e3d, 0x67e5, 0x4d8d, 0x5455, + 0xd79d, 0xce45, 0xe42d, 0xfdf5, 0xb0fd, 0xa925, 0x834d, 0x9a95, + 0xafff, 0xb627, 0x9c4f, 0x8597, 0xc89f, 0xd147, 0xfb2f, 0xe2f7, + 0x613f, 0x78e7, 0x528f, 0x4b57, 0x065f, 0x1f87, 0x35ef, 0x2c37, + 0x3a6e, 0x23b6, 0x09de, 0x1006, 0x5d0e, 0x44d6, 0x6ebe, 0x7766, + 0xf4ae, 0xed76, 0xc71e, 0xdec6, 0x93ce, 0x8a16, 0xa07e, 0xb9a6, + 0xcaaa, 0xd372, 0xf91a, 0xe0c2, 0xadca, 0xb412, 0x9e7a, 0x87a2, + 0x046a, 0x1db2, 0x37da, 0x2e02, 0x630a, 0x7ad2, 0x50ba, 0x4962, + 0x5f3b, 0x46e3, 0x6c8b, 0x7553, 0x385b, 0x2183, 0x0beb, 0x1233, + 0x91fb, 0x8823, 0xa24b, 0xbb93, 0xf69b, 0xef43, 0xc52b, 0xdcf3, + 0xe999, 0xf041, 0xda29, 0xc3f1, 0x8ef9, 0x9721, 0xbd49, 0xa491, + 0x2759, 0x3e81, 0x14e9, 0x0d31, 0x4039, 0x59e1, 0x7389, 0x6a51, + 0x7c08, 0x65d0, 0x4fb8, 0x5660, 0x1b68, 0x02b0, 0x28d8, 0x3100, + 0xb2c8, 0xab10, 0x8178, 0x98a0, 0xd5a8, 0xcc70, 0xe618, 0xffc0, + }, + { + 0x0000, 0x5adc, 0xb5b8, 0xef64, 0x6361, 0x39bd, 0xd6d9, 0x8c05, + 0xc6c2, 0x9c1e, 0x737a, 0x29a6, 0xa5a3, 0xff7f, 0x101b, 0x4ac7, + 0x8595, 0xdf49, 0x302d, 0x6af1, 0xe6f4, 0xbc28, 0x534c, 0x0990, + 0x4357, 0x198b, 0xf6ef, 0xac33, 0x2036, 0x7aea, 0x958e, 0xcf52, + 0x033b, 0x59e7, 0xb683, 0xec5f, 0x605a, 0x3a86, 0xd5e2, 0x8f3e, + 0xc5f9, 0x9f25, 0x7041, 0x2a9d, 0xa698, 0xfc44, 0x1320, 0x49fc, + 0x86ae, 0xdc72, 0x3316, 0x69ca, 0xe5cf, 0xbf13, 0x5077, 0x0aab, + 0x406c, 0x1ab0, 0xf5d4, 0xaf08, 0x230d, 0x79d1, 0x96b5, 0xcc69, + 0x0676, 0x5caa, 0xb3ce, 0xe912, 0x6517, 0x3fcb, 0xd0af, 0x8a73, + 0xc0b4, 0x9a68, 0x750c, 0x2fd0, 0xa3d5, 0xf909, 0x166d, 0x4cb1, + 0x83e3, 0xd93f, 0x365b, 0x6c87, 0xe082, 0xba5e, 0x553a, 0x0fe6, + 0x4521, 0x1ffd, 0xf099, 0xaa45, 0x2640, 0x7c9c, 0x93f8, 0xc924, + 0x054d, 0x5f91, 0xb0f5, 0xea29, 0x662c, 0x3cf0, 0xd394, 0x8948, + 0xc38f, 0x9953, 0x7637, 0x2ceb, 0xa0ee, 0xfa32, 0x1556, 0x4f8a, + 0x80d8, 0xda04, 0x3560, 0x6fbc, 0xe3b9, 0xb965, 0x5601, 0x0cdd, + 0x461a, 0x1cc6, 0xf3a2, 0xa97e, 0x257b, 0x7fa7, 0x90c3, 0xca1f, + 0x0cec, 0x5630, 0xb954, 0xe388, 0x6f8d, 0x3551, 0xda35, 0x80e9, + 0xca2e, 0x90f2, 0x7f96, 0x254a, 0xa94f, 0xf393, 0x1cf7, 0x462b, + 0x8979, 0xd3a5, 0x3cc1, 0x661d, 0xea18, 0xb0c4, 0x5fa0, 0x057c, + 0x4fbb, 0x1567, 0xfa03, 0xa0df, 0x2cda, 0x7606, 0x9962, 0xc3be, + 0x0fd7, 0x550b, 0xba6f, 0xe0b3, 0x6cb6, 0x366a, 0xd90e, 0x83d2, + 0xc915, 0x93c9, 0x7cad, 0x2671, 0xaa74, 0xf0a8, 0x1fcc, 0x4510, + 0x8a42, 0xd09e, 0x3ffa, 0x6526, 0xe923, 0xb3ff, 0x5c9b, 0x0647, + 0x4c80, 0x165c, 0xf938, 0xa3e4, 0x2fe1, 0x753d, 0x9a59, 0xc085, + 0x0a9a, 0x5046, 0xbf22, 0xe5fe, 0x69fb, 0x3327, 0xdc43, 0x869f, + 0xcc58, 0x9684, 0x79e0, 0x233c, 0xaf39, 0xf5e5, 0x1a81, 0x405d, + 0x8f0f, 0xd5d3, 0x3ab7, 0x606b, 0xec6e, 0xb6b2, 0x59d6, 0x030a, + 0x49cd, 0x1311, 0xfc75, 0xa6a9, 0x2aac, 0x7070, 0x9f14, 0xc5c8, + 0x09a1, 0x537d, 0xbc19, 0xe6c5, 0x6ac0, 0x301c, 0xdf78, 0x85a4, + 0xcf63, 0x95bf, 0x7adb, 0x2007, 0xac02, 0xf6de, 0x19ba, 0x4366, + 0x8c34, 0xd6e8, 0x398c, 0x6350, 0xef55, 0xb589, 0x5aed, 0x0031, + 0x4af6, 0x102a, 0xff4e, 0xa592, 0x2997, 0x734b, 0x9c2f, 0xc6f3, + }, + { + 0x0000, 0x1cbb, 0x3976, 0x25cd, 0x72ec, 0x6e57, 0x4b9a, 0x5721, + 0xe5d8, 0xf963, 0xdcae, 0xc015, 0x9734, 0x8b8f, 0xae42, 0xb2f9, + 0xc3a1, 0xdf1a, 0xfad7, 0xe66c, 0xb14d, 0xadf6, 0x883b, 0x9480, + 0x2679, 0x3ac2, 0x1f0f, 0x03b4, 0x5495, 0x482e, 0x6de3, 0x7158, + 0x8f53, 0x93e8, 0xb625, 0xaa9e, 0xfdbf, 0xe104, 0xc4c9, 0xd872, + 0x6a8b, 0x7630, 0x53fd, 0x4f46, 0x1867, 0x04dc, 0x2111, 0x3daa, + 0x4cf2, 0x5049, 0x7584, 0x693f, 0x3e1e, 0x22a5, 0x0768, 0x1bd3, + 0xa92a, 0xb591, 0x905c, 0x8ce7, 0xdbc6, 0xc77d, 0xe2b0, 0xfe0b, + 0x16b7, 0x0a0c, 0x2fc1, 0x337a, 0x645b, 0x78e0, 0x5d2d, 0x4196, + 0xf36f, 0xefd4, 0xca19, 0xd6a2, 0x8183, 0x9d38, 0xb8f5, 0xa44e, + 0xd516, 0xc9ad, 0xec60, 0xf0db, 0xa7fa, 0xbb41, 0x9e8c, 0x8237, + 0x30ce, 0x2c75, 0x09b8, 0x1503, 0x4222, 0x5e99, 0x7b54, 0x67ef, + 0x99e4, 0x855f, 0xa092, 0xbc29, 0xeb08, 0xf7b3, 0xd27e, 0xcec5, + 0x7c3c, 0x6087, 0x454a, 0x59f1, 0x0ed0, 0x126b, 0x37a6, 0x2b1d, + 0x5a45, 0x46fe, 0x6333, 0x7f88, 0x28a9, 0x3412, 0x11df, 0x0d64, + 0xbf9d, 0xa326, 0x86eb, 0x9a50, 0xcd71, 0xd1ca, 0xf407, 0xe8bc, + 0x2d6e, 0x31d5, 0x1418, 0x08a3, 0x5f82, 0x4339, 0x66f4, 0x7a4f, + 0xc8b6, 0xd40d, 0xf1c0, 0xed7b, 0xba5a, 0xa6e1, 0x832c, 0x9f97, + 0xeecf, 0xf274, 0xd7b9, 0xcb02, 0x9c23, 0x8098, 0xa555, 0xb9ee, + 0x0b17, 0x17ac, 0x3261, 0x2eda, 0x79fb, 0x6540, 0x408d, 0x5c36, + 0xa23d, 0xbe86, 0x9b4b, 0x87f0, 0xd0d1, 0xcc6a, 0xe9a7, 0xf51c, + 0x47e5, 0x5b5e, 0x7e93, 0x6228, 0x3509, 0x29b2, 0x0c7f, 0x10c4, + 0x619c, 0x7d27, 0x58ea, 0x4451, 0x1370, 0x0fcb, 0x2a06, 0x36bd, + 0x8444, 0x98ff, 0xbd32, 0xa189, 0xf6a8, 0xea13, 0xcfde, 0xd365, + 0x3bd9, 0x2762, 0x02af, 0x1e14, 0x4935, 0x558e, 0x7043, 0x6cf8, + 0xde01, 0xc2ba, 0xe777, 0xfbcc, 0xaced, 0xb056, 0x959b, 0x8920, + 0xf878, 0xe4c3, 0xc10e, 0xddb5, 0x8a94, 0x962f, 0xb3e2, 0xaf59, + 0x1da0, 0x011b, 0x24d6, 0x386d, 0x6f4c, 0x73f7, 0x563a, 0x4a81, + 0xb48a, 0xa831, 0x8dfc, 0x9147, 0xc666, 0xdadd, 0xff10, 0xe3ab, + 0x5152, 0x4de9, 0x6824, 0x749f, 0x23be, 0x3f05, 0x1ac8, 0x0673, + 0x772b, 0x6b90, 0x4e5d, 0x52e6, 0x05c7, 0x197c, 0x3cb1, 0x200a, + 0x92f3, 0x8e48, 0xab85, 0xb73e, 0xe01f, 0xfca4, 0xd969, 0xc5d2, + }, + { + 0x0000, 0x0b44, 0x1688, 0x1dcc, 0x2d10, 0x2654, 0x3b98, 0x30dc, + 0x5a20, 0x5164, 0x4ca8, 0x47ec, 0x7730, 0x7c74, 0x61b8, 0x6afc, + 0xb440, 0xbf04, 0xa2c8, 0xa98c, 0x9950, 0x9214, 0x8fd8, 0x849c, + 0xee60, 0xe524, 0xf8e8, 0xf3ac, 0xc370, 0xc834, 0xd5f8, 0xdebc, + 0x6091, 0x6bd5, 0x7619, 0x7d5d, 0x4d81, 0x46c5, 0x5b09, 0x504d, + 0x3ab1, 0x31f5, 0x2c39, 0x277d, 0x17a1, 0x1ce5, 0x0129, 0x0a6d, + 0xd4d1, 0xdf95, 0xc259, 0xc91d, 0xf9c1, 0xf285, 0xef49, 0xe40d, + 0x8ef1, 0x85b5, 0x9879, 0x933d, 0xa3e1, 0xa8a5, 0xb569, 0xbe2d, + 0xc122, 0xca66, 0xd7aa, 0xdcee, 0xec32, 0xe776, 0xfaba, 0xf1fe, + 0x9b02, 0x9046, 0x8d8a, 0x86ce, 0xb612, 0xbd56, 0xa09a, 0xabde, + 0x7562, 0x7e26, 0x63ea, 0x68ae, 0x5872, 0x5336, 0x4efa, 0x45be, + 0x2f42, 0x2406, 0x39ca, 0x328e, 0x0252, 0x0916, 0x14da, 0x1f9e, + 0xa1b3, 0xaaf7, 0xb73b, 0xbc7f, 0x8ca3, 0x87e7, 0x9a2b, 0x916f, + 0xfb93, 0xf0d7, 0xed1b, 0xe65f, 0xd683, 0xddc7, 0xc00b, 0xcb4f, + 0x15f3, 0x1eb7, 0x037b, 0x083f, 0x38e3, 0x33a7, 0x2e6b, 0x252f, + 0x4fd3, 0x4497, 0x595b, 0x521f, 0x62c3, 0x6987, 0x744b, 0x7f0f, + 0x8a55, 0x8111, 0x9cdd, 0x9799, 0xa745, 0xac01, 0xb1cd, 0xba89, + 0xd075, 0xdb31, 0xc6fd, 0xcdb9, 0xfd65, 0xf621, 0xebed, 0xe0a9, + 0x3e15, 0x3551, 0x289d, 0x23d9, 0x1305, 0x1841, 0x058d, 0x0ec9, + 0x6435, 0x6f71, 0x72bd, 0x79f9, 0x4925, 0x4261, 0x5fad, 0x54e9, + 0xeac4, 0xe180, 0xfc4c, 0xf708, 0xc7d4, 0xcc90, 0xd15c, 0xda18, + 0xb0e4, 0xbba0, 0xa66c, 0xad28, 0x9df4, 0x96b0, 0x8b7c, 0x8038, + 0x5e84, 0x55c0, 0x480c, 0x4348, 0x7394, 0x78d0, 0x651c, 0x6e58, + 0x04a4, 0x0fe0, 0x122c, 0x1968, 0x29b4, 0x22f0, 0x3f3c, 0x3478, + 0x4b77, 0x4033, 0x5dff, 0x56bb, 0x6667, 0x6d23, 0x70ef, 0x7bab, + 0x1157, 0x1a13, 0x07df, 0x0c9b, 0x3c47, 0x3703, 0x2acf, 0x218b, + 0xff37, 0xf473, 0xe9bf, 0xe2fb, 0xd227, 0xd963, 0xc4af, 0xcfeb, + 0xa517, 0xae53, 0xb39f, 0xb8db, 0x8807, 0x8343, 0x9e8f, 0x95cb, + 0x2be6, 0x20a2, 0x3d6e, 0x362a, 0x06f6, 0x0db2, 0x107e, 0x1b3a, + 0x71c6, 0x7a82, 0x674e, 0x6c0a, 0x5cd6, 0x5792, 0x4a5e, 0x411a, + 0x9fa6, 0x94e2, 0x892e, 0x826a, 0xb2b6, 0xb9f2, 0xa43e, 0xaf7a, + 0xc586, 0xcec2, 0xd30e, 0xd84a, 0xe896, 0xe3d2, 0xfe1e, 0xf55a, + }, + { + 0x0000, 0x042b, 0x0856, 0x0c7d, 0x10ac, 0x1487, 0x18fa, 0x1cd1, + 0x2158, 0x2573, 0x290e, 0x2d25, 0x31f4, 0x35df, 0x39a2, 0x3d89, + 0x42b0, 0x469b, 0x4ae6, 0x4ecd, 0x521c, 0x5637, 0x5a4a, 0x5e61, + 0x63e8, 0x67c3, 0x6bbe, 0x6f95, 0x7344, 0x776f, 0x7b12, 0x7f39, + 0x8560, 0x814b, 0x8d36, 0x891d, 0x95cc, 0x91e7, 0x9d9a, 0x99b1, + 0xa438, 0xa013, 0xac6e, 0xa845, 0xb494, 0xb0bf, 0xbcc2, 0xb8e9, + 0xc7d0, 0xc3fb, 0xcf86, 0xcbad, 0xd77c, 0xd357, 0xdf2a, 0xdb01, + 0xe688, 0xe2a3, 0xeede, 0xeaf5, 0xf624, 0xf20f, 0xfe72, 0xfa59, + 0x02d1, 0x06fa, 0x0a87, 0x0eac, 0x127d, 0x1656, 0x1a2b, 0x1e00, + 0x2389, 0x27a2, 0x2bdf, 0x2ff4, 0x3325, 0x370e, 0x3b73, 0x3f58, + 0x4061, 0x444a, 0x4837, 0x4c1c, 0x50cd, 0x54e6, 0x589b, 0x5cb0, + 0x6139, 0x6512, 0x696f, 0x6d44, 0x7195, 0x75be, 0x79c3, 0x7de8, + 0x87b1, 0x839a, 0x8fe7, 0x8bcc, 0x971d, 0x9336, 0x9f4b, 0x9b60, + 0xa6e9, 0xa2c2, 0xaebf, 0xaa94, 0xb645, 0xb26e, 0xbe13, 0xba38, + 0xc501, 0xc12a, 0xcd57, 0xc97c, 0xd5ad, 0xd186, 0xddfb, 0xd9d0, + 0xe459, 0xe072, 0xec0f, 0xe824, 0xf4f5, 0xf0de, 0xfca3, 0xf888, + 0x05a2, 0x0189, 0x0df4, 0x09df, 0x150e, 0x1125, 0x1d58, 0x1973, + 0x24fa, 0x20d1, 0x2cac, 0x2887, 0x3456, 0x307d, 0x3c00, 0x382b, + 0x4712, 0x4339, 0x4f44, 0x4b6f, 0x57be, 0x5395, 0x5fe8, 0x5bc3, + 0x664a, 0x6261, 0x6e1c, 0x6a37, 0x76e6, 0x72cd, 0x7eb0, 0x7a9b, + 0x80c2, 0x84e9, 0x8894, 0x8cbf, 0x906e, 0x9445, 0x9838, 0x9c13, + 0xa19a, 0xa5b1, 0xa9cc, 0xade7, 0xb136, 0xb51d, 0xb960, 0xbd4b, + 0xc272, 0xc659, 0xca24, 0xce0f, 0xd2de, 0xd6f5, 0xda88, 0xdea3, + 0xe32a, 0xe701, 0xeb7c, 0xef57, 0xf386, 0xf7ad, 0xfbd0, 0xfffb, + 0x0773, 0x0358, 0x0f25, 0x0b0e, 0x17df, 0x13f4, 0x1f89, 0x1ba2, + 0x262b, 0x2200, 0x2e7d, 0x2a56, 0x3687, 0x32ac, 0x3ed1, 0x3afa, + 0x45c3, 0x41e8, 0x4d95, 0x49be, 0x556f, 0x5144, 0x5d39, 0x5912, + 0x649b, 0x60b0, 0x6ccd, 0x68e6, 0x7437, 0x701c, 0x7c61, 0x784a, + 0x8213, 0x8638, 0x8a45, 0x8e6e, 0x92bf, 0x9694, 0x9ae9, 0x9ec2, + 0xa34b, 0xa760, 0xab1d, 0xaf36, 0xb3e7, 0xb7cc, 0xbbb1, 0xbf9a, + 0xc0a3, 0xc488, 0xc8f5, 0xccde, 0xd00f, 0xd424, 0xd859, 0xdc72, + 0xe1fb, 0xe5d0, 0xe9ad, 0xed86, 0xf157, 0xf57c, 0xf901, 0xfd2a, + }, + { + 0x0000, 0x9fd5, 0x37bb, 0xa86e, 0x6f76, 0xf0a3, 0x58cd, 0xc718, + 0xdeec, 0x4139, 0xe957, 0x7682, 0xb19a, 0x2e4f, 0x8621, 0x19f4, + 0xb5c9, 0x2a1c, 0x8272, 0x1da7, 0xdabf, 0x456a, 0xed04, 0x72d1, + 0x6b25, 0xf4f0, 0x5c9e, 0xc34b, 0x0453, 0x9b86, 0x33e8, 0xac3d, + 0x6383, 0xfc56, 0x5438, 0xcbed, 0x0cf5, 0x9320, 0x3b4e, 0xa49b, + 0xbd6f, 0x22ba, 0x8ad4, 0x1501, 0xd219, 0x4dcc, 0xe5a2, 0x7a77, + 0xd64a, 0x499f, 0xe1f1, 0x7e24, 0xb93c, 0x26e9, 0x8e87, 0x1152, + 0x08a6, 0x9773, 0x3f1d, 0xa0c8, 0x67d0, 0xf805, 0x506b, 0xcfbe, + 0xc706, 0x58d3, 0xf0bd, 0x6f68, 0xa870, 0x37a5, 0x9fcb, 0x001e, + 0x19ea, 0x863f, 0x2e51, 0xb184, 0x769c, 0xe949, 0x4127, 0xdef2, + 0x72cf, 0xed1a, 0x4574, 0xdaa1, 0x1db9, 0x826c, 0x2a02, 0xb5d7, + 0xac23, 0x33f6, 0x9b98, 0x044d, 0xc355, 0x5c80, 0xf4ee, 0x6b3b, + 0xa485, 0x3b50, 0x933e, 0x0ceb, 0xcbf3, 0x5426, 0xfc48, 0x639d, + 0x7a69, 0xe5bc, 0x4dd2, 0xd207, 0x151f, 0x8aca, 0x22a4, 0xbd71, + 0x114c, 0x8e99, 0x26f7, 0xb922, 0x7e3a, 0xe1ef, 0x4981, 0xd654, + 0xcfa0, 0x5075, 0xf81b, 0x67ce, 0xa0d6, 0x3f03, 0x976d, 0x08b8, + 0x861d, 0x19c8, 0xb1a6, 0x2e73, 0xe96b, 0x76be, 0xded0, 0x4105, + 0x58f1, 0xc724, 0x6f4a, 0xf09f, 0x3787, 0xa852, 0x003c, 0x9fe9, + 0x33d4, 0xac01, 0x046f, 0x9bba, 0x5ca2, 0xc377, 0x6b19, 0xf4cc, + 0xed38, 0x72ed, 0xda83, 0x4556, 0x824e, 0x1d9b, 0xb5f5, 0x2a20, + 0xe59e, 0x7a4b, 0xd225, 0x4df0, 0x8ae8, 0x153d, 0xbd53, 0x2286, + 0x3b72, 0xa4a7, 0x0cc9, 0x931c, 0x5404, 0xcbd1, 0x63bf, 0xfc6a, + 0x5057, 0xcf82, 0x67ec, 0xf839, 0x3f21, 0xa0f4, 0x089a, 0x974f, + 0x8ebb, 0x116e, 0xb900, 0x26d5, 0xe1cd, 0x7e18, 0xd676, 0x49a3, + 0x411b, 0xdece, 0x76a0, 0xe975, 0x2e6d, 0xb1b8, 0x19d6, 0x8603, + 0x9ff7, 0x0022, 0xa84c, 0x3799, 0xf081, 0x6f54, 0xc73a, 0x58ef, + 0xf4d2, 0x6b07, 0xc369, 0x5cbc, 0x9ba4, 0x0471, 0xac1f, 0x33ca, + 0x2a3e, 0xb5eb, 0x1d85, 0x8250, 0x4548, 0xda9d, 0x72f3, 0xed26, + 0x2298, 0xbd4d, 0x1523, 0x8af6, 0x4dee, 0xd23b, 0x7a55, 0xe580, + 0xfc74, 0x63a1, 0xcbcf, 0x541a, 0x9302, 0x0cd7, 0xa4b9, 0x3b6c, + 0x9751, 0x0884, 0xa0ea, 0x3f3f, 0xf827, 0x67f2, 0xcf9c, 0x5049, + 0x49bd, 0xd668, 0x7e06, 0xe1d3, 0x26cb, 0xb91e, 0x1170, 0x8ea5, + }, + { + 0x0000, 0x81bf, 0x0b6f, 0x8ad0, 0x16de, 0x9761, 0x1db1, 0x9c0e, + 0x2dbc, 0xac03, 0x26d3, 0xa76c, 0x3b62, 0xbadd, 0x300d, 0xb1b2, + 0x5b78, 0xdac7, 0x5017, 0xd1a8, 0x4da6, 0xcc19, 0x46c9, 0xc776, + 0x76c4, 0xf77b, 0x7dab, 0xfc14, 0x601a, 0xe1a5, 0x6b75, 0xeaca, + 0xb6f0, 0x374f, 0xbd9f, 0x3c20, 0xa02e, 0x2191, 0xab41, 0x2afe, + 0x9b4c, 0x1af3, 0x9023, 0x119c, 0x8d92, 0x0c2d, 0x86fd, 0x0742, + 0xed88, 0x6c37, 0xe6e7, 0x6758, 0xfb56, 0x7ae9, 0xf039, 0x7186, + 0xc034, 0x418b, 0xcb5b, 0x4ae4, 0xd6ea, 0x5755, 0xdd85, 0x5c3a, + 0x65f1, 0xe44e, 0x6e9e, 0xef21, 0x732f, 0xf290, 0x7840, 0xf9ff, + 0x484d, 0xc9f2, 0x4322, 0xc29d, 0x5e93, 0xdf2c, 0x55fc, 0xd443, + 0x3e89, 0xbf36, 0x35e6, 0xb459, 0x2857, 0xa9e8, 0x2338, 0xa287, + 0x1335, 0x928a, 0x185a, 0x99e5, 0x05eb, 0x8454, 0x0e84, 0x8f3b, + 0xd301, 0x52be, 0xd86e, 0x59d1, 0xc5df, 0x4460, 0xceb0, 0x4f0f, + 0xfebd, 0x7f02, 0xf5d2, 0x746d, 0xe863, 0x69dc, 0xe30c, 0x62b3, + 0x8879, 0x09c6, 0x8316, 0x02a9, 0x9ea7, 0x1f18, 0x95c8, 0x1477, + 0xa5c5, 0x247a, 0xaeaa, 0x2f15, 0xb31b, 0x32a4, 0xb874, 0x39cb, + 0xcbe2, 0x4a5d, 0xc08d, 0x4132, 0xdd3c, 0x5c83, 0xd653, 0x57ec, + 0xe65e, 0x67e1, 0xed31, 0x6c8e, 0xf080, 0x713f, 0xfbef, 0x7a50, + 0x909a, 0x1125, 0x9bf5, 0x1a4a, 0x8644, 0x07fb, 0x8d2b, 0x0c94, + 0xbd26, 0x3c99, 0xb649, 0x37f6, 0xabf8, 0x2a47, 0xa097, 0x2128, + 0x7d12, 0xfcad, 0x767d, 0xf7c2, 0x6bcc, 0xea73, 0x60a3, 0xe11c, + 0x50ae, 0xd111, 0x5bc1, 0xda7e, 0x4670, 0xc7cf, 0x4d1f, 0xcca0, + 0x266a, 0xa7d5, 0x2d05, 0xacba, 0x30b4, 0xb10b, 0x3bdb, 0xba64, + 0x0bd6, 0x8a69, 0x00b9, 0x8106, 0x1d08, 0x9cb7, 0x1667, 0x97d8, + 0xae13, 0x2fac, 0xa57c, 0x24c3, 0xb8cd, 0x3972, 0xb3a2, 0x321d, + 0x83af, 0x0210, 0x88c0, 0x097f, 0x9571, 0x14ce, 0x9e1e, 0x1fa1, + 0xf56b, 0x74d4, 0xfe04, 0x7fbb, 0xe3b5, 0x620a, 0xe8da, 0x6965, + 0xd8d7, 0x5968, 0xd3b8, 0x5207, 0xce09, 0x4fb6, 0xc566, 0x44d9, + 0x18e3, 0x995c, 0x138c, 0x9233, 0x0e3d, 0x8f82, 0x0552, 0x84ed, + 0x355f, 0xb4e0, 0x3e30, 0xbf8f, 0x2381, 0xa23e, 0x28ee, 0xa951, + 0x439b, 0xc224, 0x48f4, 0xc94b, 0x5545, 0xd4fa, 0x5e2a, 0xdf95, + 0x6e27, 0xef98, 0x6548, 0xe4f7, 0x78f9, 0xf946, 0x7396, 0xf229, + }, + { + 0x0000, 0x4dfd, 0x9bfa, 0xd607, 0x3fe5, 0x7218, 0xa41f, 0xe9e2, + 0x7fca, 0x3237, 0xe430, 0xa9cd, 0x402f, 0x0dd2, 0xdbd5, 0x9628, + 0xff94, 0xb269, 0x646e, 0x2993, 0xc071, 0x8d8c, 0x5b8b, 0x1676, + 0x805e, 0xcda3, 0x1ba4, 0x5659, 0xbfbb, 0xf246, 0x2441, 0x69bc, + 0xf739, 0xbac4, 0x6cc3, 0x213e, 0xc8dc, 0x8521, 0x5326, 0x1edb, + 0x88f3, 0xc50e, 0x1309, 0x5ef4, 0xb716, 0xfaeb, 0x2cec, 0x6111, + 0x08ad, 0x4550, 0x9357, 0xdeaa, 0x3748, 0x7ab5, 0xacb2, 0xe14f, + 0x7767, 0x3a9a, 0xec9d, 0xa160, 0x4882, 0x057f, 0xd378, 0x9e85, + 0xe663, 0xab9e, 0x7d99, 0x3064, 0xd986, 0x947b, 0x427c, 0x0f81, + 0x99a9, 0xd454, 0x0253, 0x4fae, 0xa64c, 0xebb1, 0x3db6, 0x704b, + 0x19f7, 0x540a, 0x820d, 0xcff0, 0x2612, 0x6bef, 0xbde8, 0xf015, + 0x663d, 0x2bc0, 0xfdc7, 0xb03a, 0x59d8, 0x1425, 0xc222, 0x8fdf, + 0x115a, 0x5ca7, 0x8aa0, 0xc75d, 0x2ebf, 0x6342, 0xb545, 0xf8b8, + 0x6e90, 0x236d, 0xf56a, 0xb897, 0x5175, 0x1c88, 0xca8f, 0x8772, + 0xeece, 0xa333, 0x7534, 0x38c9, 0xd12b, 0x9cd6, 0x4ad1, 0x072c, + 0x9104, 0xdcf9, 0x0afe, 0x4703, 0xaee1, 0xe31c, 0x351b, 0x78e6, + 0xc4d7, 0x892a, 0x5f2d, 0x12d0, 0xfb32, 0xb6cf, 0x60c8, 0x2d35, + 0xbb1d, 0xf6e0, 0x20e7, 0x6d1a, 0x84f8, 0xc905, 0x1f02, 0x52ff, + 0x3b43, 0x76be, 0xa0b9, 0xed44, 0x04a6, 0x495b, 0x9f5c, 0xd2a1, + 0x4489, 0x0974, 0xdf73, 0x928e, 0x7b6c, 0x3691, 0xe096, 0xad6b, + 0x33ee, 0x7e13, 0xa814, 0xe5e9, 0x0c0b, 0x41f6, 0x97f1, 0xda0c, + 0x4c24, 0x01d9, 0xd7de, 0x9a23, 0x73c1, 0x3e3c, 0xe83b, 0xa5c6, + 0xcc7a, 0x8187, 0x5780, 0x1a7d, 0xf39f, 0xbe62, 0x6865, 0x2598, + 0xb3b0, 0xfe4d, 0x284a, 0x65b7, 0x8c55, 0xc1a8, 0x17af, 0x5a52, + 0x22b4, 0x6f49, 0xb94e, 0xf4b3, 0x1d51, 0x50ac, 0x86ab, 0xcb56, + 0x5d7e, 0x1083, 0xc684, 0x8b79, 0x629b, 0x2f66, 0xf961, 0xb49c, + 0xdd20, 0x90dd, 0x46da, 0x0b27, 0xe2c5, 0xaf38, 0x793f, 0x34c2, + 0xa2ea, 0xef17, 0x3910, 0x74ed, 0x9d0f, 0xd0f2, 0x06f5, 0x4b08, + 0xd58d, 0x9870, 0x4e77, 0x038a, 0xea68, 0xa795, 0x7192, 0x3c6f, + 0xaa47, 0xe7ba, 0x31bd, 0x7c40, 0x95a2, 0xd85f, 0x0e58, 0x43a5, + 0x2a19, 0x67e4, 0xb1e3, 0xfc1e, 0x15fc, 0x5801, 0x8e06, 0xc3fb, + 0x55d3, 0x182e, 0xce29, 0x83d4, 0x6a36, 0x27cb, 0xf1cc, 0xbc31, + }, + { + 0x0000, 0x2c27, 0x584e, 0x7469, 0xb09c, 0x9cbb, 0xe8d2, 0xc4f5, + 0x6929, 0x450e, 0x3167, 0x1d40, 0xd9b5, 0xf592, 0x81fb, 0xaddc, + 0xd252, 0xfe75, 0x8a1c, 0xa63b, 0x62ce, 0x4ee9, 0x3a80, 0x16a7, + 0xbb7b, 0x975c, 0xe335, 0xcf12, 0x0be7, 0x27c0, 0x53a9, 0x7f8e, + 0xacb5, 0x8092, 0xf4fb, 0xd8dc, 0x1c29, 0x300e, 0x4467, 0x6840, + 0xc59c, 0xe9bb, 0x9dd2, 0xb1f5, 0x7500, 0x5927, 0x2d4e, 0x0169, + 0x7ee7, 0x52c0, 0x26a9, 0x0a8e, 0xce7b, 0xe25c, 0x9635, 0xba12, + 0x17ce, 0x3be9, 0x4f80, 0x63a7, 0xa752, 0x8b75, 0xff1c, 0xd33b, + 0x517b, 0x7d5c, 0x0935, 0x2512, 0xe1e7, 0xcdc0, 0xb9a9, 0x958e, + 0x3852, 0x1475, 0x601c, 0x4c3b, 0x88ce, 0xa4e9, 0xd080, 0xfca7, + 0x8329, 0xaf0e, 0xdb67, 0xf740, 0x33b5, 0x1f92, 0x6bfb, 0x47dc, + 0xea00, 0xc627, 0xb24e, 0x9e69, 0x5a9c, 0x76bb, 0x02d2, 0x2ef5, + 0xfdce, 0xd1e9, 0xa580, 0x89a7, 0x4d52, 0x6175, 0x151c, 0x393b, + 0x94e7, 0xb8c0, 0xcca9, 0xe08e, 0x247b, 0x085c, 0x7c35, 0x5012, + 0x2f9c, 0x03bb, 0x77d2, 0x5bf5, 0x9f00, 0xb327, 0xc74e, 0xeb69, + 0x46b5, 0x6a92, 0x1efb, 0x32dc, 0xf629, 0xda0e, 0xae67, 0x8240, + 0xa2f6, 0x8ed1, 0xfab8, 0xd69f, 0x126a, 0x3e4d, 0x4a24, 0x6603, + 0xcbdf, 0xe7f8, 0x9391, 0xbfb6, 0x7b43, 0x5764, 0x230d, 0x0f2a, + 0x70a4, 0x5c83, 0x28ea, 0x04cd, 0xc038, 0xec1f, 0x9876, 0xb451, + 0x198d, 0x35aa, 0x41c3, 0x6de4, 0xa911, 0x8536, 0xf15f, 0xdd78, + 0x0e43, 0x2264, 0x560d, 0x7a2a, 0xbedf, 0x92f8, 0xe691, 0xcab6, + 0x676a, 0x4b4d, 0x3f24, 0x1303, 0xd7f6, 0xfbd1, 0x8fb8, 0xa39f, + 0xdc11, 0xf036, 0x845f, 0xa878, 0x6c8d, 0x40aa, 0x34c3, 0x18e4, + 0xb538, 0x991f, 0xed76, 0xc151, 0x05a4, 0x2983, 0x5dea, 0x71cd, + 0xf38d, 0xdfaa, 0xabc3, 0x87e4, 0x4311, 0x6f36, 0x1b5f, 0x3778, + 0x9aa4, 0xb683, 0xc2ea, 0xeecd, 0x2a38, 0x061f, 0x7276, 0x5e51, + 0x21df, 0x0df8, 0x7991, 0x55b6, 0x9143, 0xbd64, 0xc90d, 0xe52a, + 0x48f6, 0x64d1, 0x10b8, 0x3c9f, 0xf86a, 0xd44d, 0xa024, 0x8c03, + 0x5f38, 0x731f, 0x0776, 0x2b51, 0xefa4, 0xc383, 0xb7ea, 0x9bcd, + 0x3611, 0x1a36, 0x6e5f, 0x4278, 0x868d, 0xaaaa, 0xdec3, 0xf2e4, + 0x8d6a, 0xa14d, 0xd524, 0xf903, 0x3df6, 0x11d1, 0x65b8, 0x499f, + 0xe443, 0xc864, 0xbc0d, 0x902a, 0x54df, 0x78f8, 0x0c91, 0x20b6, + }, + { + 0x0000, 0x5591, 0xab22, 0xfeb3, 0x5e55, 0x0bc4, 0xf577, 0xa0e6, + 0xbcaa, 0xe93b, 0x1788, 0x4219, 0xe2ff, 0xb76e, 0x49dd, 0x1c4c, + 0x7145, 0x24d4, 0xda67, 0x8ff6, 0x2f10, 0x7a81, 0x8432, 0xd1a3, + 0xcdef, 0x987e, 0x66cd, 0x335c, 0x93ba, 0xc62b, 0x3898, 0x6d09, + 0xe28a, 0xb71b, 0x49a8, 0x1c39, 0xbcdf, 0xe94e, 0x17fd, 0x426c, + 0x5e20, 0x0bb1, 0xf502, 0xa093, 0x0075, 0x55e4, 0xab57, 0xfec6, + 0x93cf, 0xc65e, 0x38ed, 0x6d7c, 0xcd9a, 0x980b, 0x66b8, 0x3329, + 0x2f65, 0x7af4, 0x8447, 0xd1d6, 0x7130, 0x24a1, 0xda12, 0x8f83, + 0xcd05, 0x9894, 0x6627, 0x33b6, 0x9350, 0xc6c1, 0x3872, 0x6de3, + 0x71af, 0x243e, 0xda8d, 0x8f1c, 0x2ffa, 0x7a6b, 0x84d8, 0xd149, + 0xbc40, 0xe9d1, 0x1762, 0x42f3, 0xe215, 0xb784, 0x4937, 0x1ca6, + 0x00ea, 0x557b, 0xabc8, 0xfe59, 0x5ebf, 0x0b2e, 0xf59d, 0xa00c, + 0x2f8f, 0x7a1e, 0x84ad, 0xd13c, 0x71da, 0x244b, 0xdaf8, 0x8f69, + 0x9325, 0xc6b4, 0x3807, 0x6d96, 0xcd70, 0x98e1, 0x6652, 0x33c3, + 0x5eca, 0x0b5b, 0xf5e8, 0xa079, 0x009f, 0x550e, 0xabbd, 0xfe2c, + 0xe260, 0xb7f1, 0x4942, 0x1cd3, 0xbc35, 0xe9a4, 0x1717, 0x4286, + 0x921b, 0xc78a, 0x3939, 0x6ca8, 0xcc4e, 0x99df, 0x676c, 0x32fd, + 0x2eb1, 0x7b20, 0x8593, 0xd002, 0x70e4, 0x2575, 0xdbc6, 0x8e57, + 0xe35e, 0xb6cf, 0x487c, 0x1ded, 0xbd0b, 0xe89a, 0x1629, 0x43b8, + 0x5ff4, 0x0a65, 0xf4d6, 0xa147, 0x01a1, 0x5430, 0xaa83, 0xff12, + 0x7091, 0x2500, 0xdbb3, 0x8e22, 0x2ec4, 0x7b55, 0x85e6, 0xd077, + 0xcc3b, 0x99aa, 0x6719, 0x3288, 0x926e, 0xc7ff, 0x394c, 0x6cdd, + 0x01d4, 0x5445, 0xaaf6, 0xff67, 0x5f81, 0x0a10, 0xf4a3, 0xa132, + 0xbd7e, 0xe8ef, 0x165c, 0x43cd, 0xe32b, 0xb6ba, 0x4809, 0x1d98, + 0x5f1e, 0x0a8f, 0xf43c, 0xa1ad, 0x014b, 0x54da, 0xaa69, 0xfff8, + 0xe3b4, 0xb625, 0x4896, 0x1d07, 0xbde1, 0xe870, 0x16c3, 0x4352, + 0x2e5b, 0x7bca, 0x8579, 0xd0e8, 0x700e, 0x259f, 0xdb2c, 0x8ebd, + 0x92f1, 0xc760, 0x39d3, 0x6c42, 0xcca4, 0x9935, 0x6786, 0x3217, + 0xbd94, 0xe805, 0x16b6, 0x4327, 0xe3c1, 0xb650, 0x48e3, 0x1d72, + 0x013e, 0x54af, 0xaa1c, 0xff8d, 0x5f6b, 0x0afa, 0xf449, 0xa1d8, + 0xccd1, 0x9940, 0x67f3, 0x3262, 0x9284, 0xc715, 0x39a6, 0x6c37, + 0x707b, 0x25ea, 0xdb59, 0x8ec8, 0x2e2e, 0x7bbf, 0x850c, 0xd09d, + }, + { + 0x0000, 0x8555, 0x02bb, 0x87ee, 0x0576, 0x8023, 0x07cd, 0x8298, + 0x0aec, 0x8fb9, 0x0857, 0x8d02, 0x0f9a, 0x8acf, 0x0d21, 0x8874, + 0x15d8, 0x908d, 0x1763, 0x9236, 0x10ae, 0x95fb, 0x1215, 0x9740, + 0x1f34, 0x9a61, 0x1d8f, 0x98da, 0x1a42, 0x9f17, 0x18f9, 0x9dac, + 0x2bb0, 0xaee5, 0x290b, 0xac5e, 0x2ec6, 0xab93, 0x2c7d, 0xa928, + 0x215c, 0xa409, 0x23e7, 0xa6b2, 0x242a, 0xa17f, 0x2691, 0xa3c4, + 0x3e68, 0xbb3d, 0x3cd3, 0xb986, 0x3b1e, 0xbe4b, 0x39a5, 0xbcf0, + 0x3484, 0xb1d1, 0x363f, 0xb36a, 0x31f2, 0xb4a7, 0x3349, 0xb61c, + 0x5760, 0xd235, 0x55db, 0xd08e, 0x5216, 0xd743, 0x50ad, 0xd5f8, + 0x5d8c, 0xd8d9, 0x5f37, 0xda62, 0x58fa, 0xddaf, 0x5a41, 0xdf14, + 0x42b8, 0xc7ed, 0x4003, 0xc556, 0x47ce, 0xc29b, 0x4575, 0xc020, + 0x4854, 0xcd01, 0x4aef, 0xcfba, 0x4d22, 0xc877, 0x4f99, 0xcacc, + 0x7cd0, 0xf985, 0x7e6b, 0xfb3e, 0x79a6, 0xfcf3, 0x7b1d, 0xfe48, + 0x763c, 0xf369, 0x7487, 0xf1d2, 0x734a, 0xf61f, 0x71f1, 0xf4a4, + 0x6908, 0xec5d, 0x6bb3, 0xeee6, 0x6c7e, 0xe92b, 0x6ec5, 0xeb90, + 0x63e4, 0xe6b1, 0x615f, 0xe40a, 0x6692, 0xe3c7, 0x6429, 0xe17c, + 0xaec0, 0x2b95, 0xac7b, 0x292e, 0xabb6, 0x2ee3, 0xa90d, 0x2c58, + 0xa42c, 0x2179, 0xa697, 0x23c2, 0xa15a, 0x240f, 0xa3e1, 0x26b4, + 0xbb18, 0x3e4d, 0xb9a3, 0x3cf6, 0xbe6e, 0x3b3b, 0xbcd5, 0x3980, + 0xb1f4, 0x34a1, 0xb34f, 0x361a, 0xb482, 0x31d7, 0xb639, 0x336c, + 0x8570, 0x0025, 0x87cb, 0x029e, 0x8006, 0x0553, 0x82bd, 0x07e8, + 0x8f9c, 0x0ac9, 0x8d27, 0x0872, 0x8aea, 0x0fbf, 0x8851, 0x0d04, + 0x90a8, 0x15fd, 0x9213, 0x1746, 0x95de, 0x108b, 0x9765, 0x1230, + 0x9a44, 0x1f11, 0x98ff, 0x1daa, 0x9f32, 0x1a67, 0x9d89, 0x18dc, + 0xf9a0, 0x7cf5, 0xfb1b, 0x7e4e, 0xfcd6, 0x7983, 0xfe6d, 0x7b38, + 0xf34c, 0x7619, 0xf1f7, 0x74a2, 0xf63a, 0x736f, 0xf481, 0x71d4, + 0xec78, 0x692d, 0xeec3, 0x6b96, 0xe90e, 0x6c5b, 0xebb5, 0x6ee0, + 0xe694, 0x63c1, 0xe42f, 0x617a, 0xe3e2, 0x66b7, 0xe159, 0x640c, + 0xd210, 0x5745, 0xd0ab, 0x55fe, 0xd766, 0x5233, 0xd5dd, 0x5088, + 0xd8fc, 0x5da9, 0xda47, 0x5f12, 0xdd8a, 0x58df, 0xdf31, 0x5a64, + 0xc7c8, 0x429d, 0xc573, 0x4026, 0xc2be, 0x47eb, 0xc005, 0x4550, + 0xcd24, 0x4871, 0xcf9f, 0x4aca, 0xc852, 0x4d07, 0xcae9, 0x4fbc, + }, + { + 0x0000, 0x05ad, 0x0b5a, 0x0ef7, 0x16b4, 0x1319, 0x1dee, 0x1843, + 0x2d68, 0x28c5, 0x2632, 0x239f, 0x3bdc, 0x3e71, 0x3086, 0x352b, + 0x5ad0, 0x5f7d, 0x518a, 0x5427, 0x4c64, 0x49c9, 0x473e, 0x4293, + 0x77b8, 0x7215, 0x7ce2, 0x794f, 0x610c, 0x64a1, 0x6a56, 0x6ffb, + 0xb5a0, 0xb00d, 0xbefa, 0xbb57, 0xa314, 0xa6b9, 0xa84e, 0xade3, + 0x98c8, 0x9d65, 0x9392, 0x963f, 0x8e7c, 0x8bd1, 0x8526, 0x808b, + 0xef70, 0xeadd, 0xe42a, 0xe187, 0xf9c4, 0xfc69, 0xf29e, 0xf733, + 0xc218, 0xc7b5, 0xc942, 0xccef, 0xd4ac, 0xd101, 0xdff6, 0xda5b, + 0x6351, 0x66fc, 0x680b, 0x6da6, 0x75e5, 0x7048, 0x7ebf, 0x7b12, + 0x4e39, 0x4b94, 0x4563, 0x40ce, 0x588d, 0x5d20, 0x53d7, 0x567a, + 0x3981, 0x3c2c, 0x32db, 0x3776, 0x2f35, 0x2a98, 0x246f, 0x21c2, + 0x14e9, 0x1144, 0x1fb3, 0x1a1e, 0x025d, 0x07f0, 0x0907, 0x0caa, + 0xd6f1, 0xd35c, 0xddab, 0xd806, 0xc045, 0xc5e8, 0xcb1f, 0xceb2, + 0xfb99, 0xfe34, 0xf0c3, 0xf56e, 0xed2d, 0xe880, 0xe677, 0xe3da, + 0x8c21, 0x898c, 0x877b, 0x82d6, 0x9a95, 0x9f38, 0x91cf, 0x9462, + 0xa149, 0xa4e4, 0xaa13, 0xafbe, 0xb7fd, 0xb250, 0xbca7, 0xb90a, + 0xc6a2, 0xc30f, 0xcdf8, 0xc855, 0xd016, 0xd5bb, 0xdb4c, 0xdee1, + 0xebca, 0xee67, 0xe090, 0xe53d, 0xfd7e, 0xf8d3, 0xf624, 0xf389, + 0x9c72, 0x99df, 0x9728, 0x9285, 0x8ac6, 0x8f6b, 0x819c, 0x8431, + 0xb11a, 0xb4b7, 0xba40, 0xbfed, 0xa7ae, 0xa203, 0xacf4, 0xa959, + 0x7302, 0x76af, 0x7858, 0x7df5, 0x65b6, 0x601b, 0x6eec, 0x6b41, + 0x5e6a, 0x5bc7, 0x5530, 0x509d, 0x48de, 0x4d73, 0x4384, 0x4629, + 0x29d2, 0x2c7f, 0x2288, 0x2725, 0x3f66, 0x3acb, 0x343c, 0x3191, + 0x04ba, 0x0117, 0x0fe0, 0x0a4d, 0x120e, 0x17a3, 0x1954, 0x1cf9, + 0xa5f3, 0xa05e, 0xaea9, 0xab04, 0xb347, 0xb6ea, 0xb81d, 0xbdb0, + 0x889b, 0x8d36, 0x83c1, 0x866c, 0x9e2f, 0x9b82, 0x9575, 0x90d8, + 0xff23, 0xfa8e, 0xf479, 0xf1d4, 0xe997, 0xec3a, 0xe2cd, 0xe760, + 0xd24b, 0xd7e6, 0xd911, 0xdcbc, 0xc4ff, 0xc152, 0xcfa5, 0xca08, + 0x1053, 0x15fe, 0x1b09, 0x1ea4, 0x06e7, 0x034a, 0x0dbd, 0x0810, + 0x3d3b, 0x3896, 0x3661, 0x33cc, 0x2b8f, 0x2e22, 0x20d5, 0x2578, + 0x4a83, 0x4f2e, 0x41d9, 0x4474, 0x5c37, 0x599a, 0x576d, 0x52c0, + 0x67eb, 0x6246, 0x6cb1, 0x691c, 0x715f, 0x74f2, 0x7a05, 0x7fa8, + }, + { + 0x0000, 0x7eea, 0xfdd4, 0x833e, 0xf3b9, 0x8d53, 0x0e6d, 0x7087, + 0xef63, 0x9189, 0x12b7, 0x6c5d, 0x1cda, 0x6230, 0xe10e, 0x9fe4, + 0xd6d7, 0xa83d, 0x2b03, 0x55e9, 0x256e, 0x5b84, 0xd8ba, 0xa650, + 0x39b4, 0x475e, 0xc460, 0xba8a, 0xca0d, 0xb4e7, 0x37d9, 0x4933, + 0xa5bf, 0xdb55, 0x586b, 0x2681, 0x5606, 0x28ec, 0xabd2, 0xd538, + 0x4adc, 0x3436, 0xb708, 0xc9e2, 0xb965, 0xc78f, 0x44b1, 0x3a5b, + 0x7368, 0x0d82, 0x8ebc, 0xf056, 0x80d1, 0xfe3b, 0x7d05, 0x03ef, + 0x9c0b, 0xe2e1, 0x61df, 0x1f35, 0x6fb2, 0x1158, 0x9266, 0xec8c, + 0x436f, 0x3d85, 0xbebb, 0xc051, 0xb0d6, 0xce3c, 0x4d02, 0x33e8, + 0xac0c, 0xd2e6, 0x51d8, 0x2f32, 0x5fb5, 0x215f, 0xa261, 0xdc8b, + 0x95b8, 0xeb52, 0x686c, 0x1686, 0x6601, 0x18eb, 0x9bd5, 0xe53f, + 0x7adb, 0x0431, 0x870f, 0xf9e5, 0x8962, 0xf788, 0x74b6, 0x0a5c, + 0xe6d0, 0x983a, 0x1b04, 0x65ee, 0x1569, 0x6b83, 0xe8bd, 0x9657, + 0x09b3, 0x7759, 0xf467, 0x8a8d, 0xfa0a, 0x84e0, 0x07de, 0x7934, + 0x3007, 0x4eed, 0xcdd3, 0xb339, 0xc3be, 0xbd54, 0x3e6a, 0x4080, + 0xdf64, 0xa18e, 0x22b0, 0x5c5a, 0x2cdd, 0x5237, 0xd109, 0xafe3, + 0x86de, 0xf834, 0x7b0a, 0x05e0, 0x7567, 0x0b8d, 0x88b3, 0xf659, + 0x69bd, 0x1757, 0x9469, 0xea83, 0x9a04, 0xe4ee, 0x67d0, 0x193a, + 0x5009, 0x2ee3, 0xaddd, 0xd337, 0xa3b0, 0xdd5a, 0x5e64, 0x208e, + 0xbf6a, 0xc180, 0x42be, 0x3c54, 0x4cd3, 0x3239, 0xb107, 0xcfed, + 0x2361, 0x5d8b, 0xdeb5, 0xa05f, 0xd0d8, 0xae32, 0x2d0c, 0x53e6, + 0xcc02, 0xb2e8, 0x31d6, 0x4f3c, 0x3fbb, 0x4151, 0xc26f, 0xbc85, + 0xf5b6, 0x8b5c, 0x0862, 0x7688, 0x060f, 0x78e5, 0xfbdb, 0x8531, + 0x1ad5, 0x643f, 0xe701, 0x99eb, 0xe96c, 0x9786, 0x14b8, 0x6a52, + 0xc5b1, 0xbb5b, 0x3865, 0x468f, 0x3608, 0x48e2, 0xcbdc, 0xb536, + 0x2ad2, 0x5438, 0xd706, 0xa9ec, 0xd96b, 0xa781, 0x24bf, 0x5a55, + 0x1366, 0x6d8c, 0xeeb2, 0x9058, 0xe0df, 0x9e35, 0x1d0b, 0x63e1, + 0xfc05, 0x82ef, 0x01d1, 0x7f3b, 0x0fbc, 0x7156, 0xf268, 0x8c82, + 0x600e, 0x1ee4, 0x9dda, 0xe330, 0x93b7, 0xed5d, 0x6e63, 0x1089, + 0x8f6d, 0xf187, 0x72b9, 0x0c53, 0x7cd4, 0x023e, 0x8100, 0xffea, + 0xb6d9, 0xc833, 0x4b0d, 0x35e7, 0x4560, 0x3b8a, 0xb8b4, 0xc65e, + 0x59ba, 0x2750, 0xa46e, 0xda84, 0xaa03, 0xd4e9, 0x57d7, 0x293d, + }, + { + 0x0000, 0x482a, 0x9054, 0xd87e, 0x28b9, 0x6093, 0xb8ed, 0xf0c7, + 0x5172, 0x1958, 0xc126, 0x890c, 0x79cb, 0x31e1, 0xe99f, 0xa1b5, + 0xa2e4, 0xeace, 0x32b0, 0x7a9a, 0x8a5d, 0xc277, 0x1a09, 0x5223, + 0xf396, 0xbbbc, 0x63c2, 0x2be8, 0xdb2f, 0x9305, 0x4b7b, 0x0351, + 0x4dd9, 0x05f3, 0xdd8d, 0x95a7, 0x6560, 0x2d4a, 0xf534, 0xbd1e, + 0x1cab, 0x5481, 0x8cff, 0xc4d5, 0x3412, 0x7c38, 0xa446, 0xec6c, + 0xef3d, 0xa717, 0x7f69, 0x3743, 0xc784, 0x8fae, 0x57d0, 0x1ffa, + 0xbe4f, 0xf665, 0x2e1b, 0x6631, 0x96f6, 0xdedc, 0x06a2, 0x4e88, + 0x9bb2, 0xd398, 0x0be6, 0x43cc, 0xb30b, 0xfb21, 0x235f, 0x6b75, + 0xcac0, 0x82ea, 0x5a94, 0x12be, 0xe279, 0xaa53, 0x722d, 0x3a07, + 0x3956, 0x717c, 0xa902, 0xe128, 0x11ef, 0x59c5, 0x81bb, 0xc991, + 0x6824, 0x200e, 0xf870, 0xb05a, 0x409d, 0x08b7, 0xd0c9, 0x98e3, + 0xd66b, 0x9e41, 0x463f, 0x0e15, 0xfed2, 0xb6f8, 0x6e86, 0x26ac, + 0x8719, 0xcf33, 0x174d, 0x5f67, 0xafa0, 0xe78a, 0x3ff4, 0x77de, + 0x748f, 0x3ca5, 0xe4db, 0xacf1, 0x5c36, 0x141c, 0xcc62, 0x8448, + 0x25fd, 0x6dd7, 0xb5a9, 0xfd83, 0x0d44, 0x456e, 0x9d10, 0xd53a, + 0x3f75, 0x775f, 0xaf21, 0xe70b, 0x17cc, 0x5fe6, 0x8798, 0xcfb2, + 0x6e07, 0x262d, 0xfe53, 0xb679, 0x46be, 0x0e94, 0xd6ea, 0x9ec0, + 0x9d91, 0xd5bb, 0x0dc5, 0x45ef, 0xb528, 0xfd02, 0x257c, 0x6d56, + 0xcce3, 0x84c9, 0x5cb7, 0x149d, 0xe45a, 0xac70, 0x740e, 0x3c24, + 0x72ac, 0x3a86, 0xe2f8, 0xaad2, 0x5a15, 0x123f, 0xca41, 0x826b, + 0x23de, 0x6bf4, 0xb38a, 0xfba0, 0x0b67, 0x434d, 0x9b33, 0xd319, + 0xd048, 0x9862, 0x401c, 0x0836, 0xf8f1, 0xb0db, 0x68a5, 0x208f, + 0x813a, 0xc910, 0x116e, 0x5944, 0xa983, 0xe1a9, 0x39d7, 0x71fd, + 0xa4c7, 0xeced, 0x3493, 0x7cb9, 0x8c7e, 0xc454, 0x1c2a, 0x5400, + 0xf5b5, 0xbd9f, 0x65e1, 0x2dcb, 0xdd0c, 0x9526, 0x4d58, 0x0572, + 0x0623, 0x4e09, 0x9677, 0xde5d, 0x2e9a, 0x66b0, 0xbece, 0xf6e4, + 0x5751, 0x1f7b, 0xc705, 0x8f2f, 0x7fe8, 0x37c2, 0xefbc, 0xa796, + 0xe91e, 0xa134, 0x794a, 0x3160, 0xc1a7, 0x898d, 0x51f3, 0x19d9, + 0xb86c, 0xf046, 0x2838, 0x6012, 0x90d5, 0xd8ff, 0x0081, 0x48ab, + 0x4bfa, 0x03d0, 0xdbae, 0x9384, 0x6343, 0x2b69, 0xf317, 0xbb3d, + 0x1a88, 0x52a2, 0x8adc, 0xc2f6, 0x3231, 0x7a1b, 0xa265, 0xea4f, + }, + { + 0x0000, 0x8e10, 0x1431, 0x9a21, 0x2862, 0xa672, 0x3c53, 0xb243, + 0x50c4, 0xded4, 0x44f5, 0xcae5, 0x78a6, 0xf6b6, 0x6c97, 0xe287, + 0xa188, 0x2f98, 0xb5b9, 0x3ba9, 0x89ea, 0x07fa, 0x9ddb, 0x13cb, + 0xf14c, 0x7f5c, 0xe57d, 0x6b6d, 0xd92e, 0x573e, 0xcd1f, 0x430f, + 0x4b01, 0xc511, 0x5f30, 0xd120, 0x6363, 0xed73, 0x7752, 0xf942, + 0x1bc5, 0x95d5, 0x0ff4, 0x81e4, 0x33a7, 0xbdb7, 0x2796, 0xa986, + 0xea89, 0x6499, 0xfeb8, 0x70a8, 0xc2eb, 0x4cfb, 0xd6da, 0x58ca, + 0xba4d, 0x345d, 0xae7c, 0x206c, 0x922f, 0x1c3f, 0x861e, 0x080e, + 0x9602, 0x1812, 0x8233, 0x0c23, 0xbe60, 0x3070, 0xaa51, 0x2441, + 0xc6c6, 0x48d6, 0xd2f7, 0x5ce7, 0xeea4, 0x60b4, 0xfa95, 0x7485, + 0x378a, 0xb99a, 0x23bb, 0xadab, 0x1fe8, 0x91f8, 0x0bd9, 0x85c9, + 0x674e, 0xe95e, 0x737f, 0xfd6f, 0x4f2c, 0xc13c, 0x5b1d, 0xd50d, + 0xdd03, 0x5313, 0xc932, 0x4722, 0xf561, 0x7b71, 0xe150, 0x6f40, + 0x8dc7, 0x03d7, 0x99f6, 0x17e6, 0xa5a5, 0x2bb5, 0xb194, 0x3f84, + 0x7c8b, 0xf29b, 0x68ba, 0xe6aa, 0x54e9, 0xdaf9, 0x40d8, 0xcec8, + 0x2c4f, 0xa25f, 0x387e, 0xb66e, 0x042d, 0x8a3d, 0x101c, 0x9e0c, + 0x2415, 0xaa05, 0x3024, 0xbe34, 0x0c77, 0x8267, 0x1846, 0x9656, + 0x74d1, 0xfac1, 0x60e0, 0xeef0, 0x5cb3, 0xd2a3, 0x4882, 0xc692, + 0x859d, 0x0b8d, 0x91ac, 0x1fbc, 0xadff, 0x23ef, 0xb9ce, 0x37de, + 0xd559, 0x5b49, 0xc168, 0x4f78, 0xfd3b, 0x732b, 0xe90a, 0x671a, + 0x6f14, 0xe104, 0x7b25, 0xf535, 0x4776, 0xc966, 0x5347, 0xdd57, + 0x3fd0, 0xb1c0, 0x2be1, 0xa5f1, 0x17b2, 0x99a2, 0x0383, 0x8d93, + 0xce9c, 0x408c, 0xdaad, 0x54bd, 0xe6fe, 0x68ee, 0xf2cf, 0x7cdf, + 0x9e58, 0x1048, 0x8a69, 0x0479, 0xb63a, 0x382a, 0xa20b, 0x2c1b, + 0xb217, 0x3c07, 0xa626, 0x2836, 0x9a75, 0x1465, 0x8e44, 0x0054, + 0xe2d3, 0x6cc3, 0xf6e2, 0x78f2, 0xcab1, 0x44a1, 0xde80, 0x5090, + 0x139f, 0x9d8f, 0x07ae, 0x89be, 0x3bfd, 0xb5ed, 0x2fcc, 0xa1dc, + 0x435b, 0xcd4b, 0x576a, 0xd97a, 0x6b39, 0xe529, 0x7f08, 0xf118, + 0xf916, 0x7706, 0xed27, 0x6337, 0xd174, 0x5f64, 0xc545, 0x4b55, + 0xa9d2, 0x27c2, 0xbde3, 0x33f3, 0x81b0, 0x0fa0, 0x9581, 0x1b91, + 0x589e, 0xd68e, 0x4caf, 0xc2bf, 0x70fc, 0xfeec, 0x64cd, 0xeadd, + 0x085a, 0x864a, 0x1c6b, 0x927b, 0x2038, 0xae28, 0x3409, 0xba19, + }, +}; diff --git a/ext/digest/crc16_modbus/crc16_modbus.c b/ext/digest/crc16_modbus/crc16_modbus.c index 1830c59..bc1ef14 100644 --- a/ext/digest/crc16_modbus/crc16_modbus.c +++ b/ext/digest/crc16_modbus/crc16_modbus.c @@ -15,54 +15,39 @@ */ #include "crc16_modbus.h" - -/** - * Static table used for the table_driven implementation. - */ -static const crc16_t crc_table[256] = { - 0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241, - 0xc601, 0x06c0, 0x0780, 0xc741, 0x0500, 0xc5c1, 0xc481, 0x0440, - 0xcc01, 0x0cc0, 0x0d80, 0xcd41, 0x0f00, 0xcfc1, 0xce81, 0x0e40, - 0x0a00, 0xcac1, 0xcb81, 0x0b40, 0xc901, 0x09c0, 0x0880, 0xc841, - 0xd801, 0x18c0, 0x1980, 0xd941, 0x1b00, 0xdbc1, 0xda81, 0x1a40, - 0x1e00, 0xdec1, 0xdf81, 0x1f40, 0xdd01, 0x1dc0, 0x1c80, 0xdc41, - 0x1400, 0xd4c1, 0xd581, 0x1540, 0xd701, 0x17c0, 0x1680, 0xd641, - 0xd201, 0x12c0, 0x1380, 0xd341, 0x1100, 0xd1c1, 0xd081, 0x1040, - 0xf001, 0x30c0, 0x3180, 0xf141, 0x3300, 0xf3c1, 0xf281, 0x3240, - 0x3600, 0xf6c1, 0xf781, 0x3740, 0xf501, 0x35c0, 0x3480, 0xf441, - 0x3c00, 0xfcc1, 0xfd81, 0x3d40, 0xff01, 0x3fc0, 0x3e80, 0xfe41, - 0xfa01, 0x3ac0, 0x3b80, 0xfb41, 0x3900, 0xf9c1, 0xf881, 0x3840, - 0x2800, 0xe8c1, 0xe981, 0x2940, 0xeb01, 0x2bc0, 0x2a80, 0xea41, - 0xee01, 0x2ec0, 0x2f80, 0xef41, 0x2d00, 0xedc1, 0xec81, 0x2c40, - 0xe401, 0x24c0, 0x2580, 0xe541, 0x2700, 0xe7c1, 0xe681, 0x2640, - 0x2200, 0xe2c1, 0xe381, 0x2340, 0xe101, 0x21c0, 0x2080, 0xe041, - 0xa001, 0x60c0, 0x6180, 0xa141, 0x6300, 0xa3c1, 0xa281, 0x6240, - 0x6600, 0xa6c1, 0xa781, 0x6740, 0xa501, 0x65c0, 0x6480, 0xa441, - 0x6c00, 0xacc1, 0xad81, 0x6d40, 0xaf01, 0x6fc0, 0x6e80, 0xae41, - 0xaa01, 0x6ac0, 0x6b80, 0xab41, 0x6900, 0xa9c1, 0xa881, 0x6840, - 0x7800, 0xb8c1, 0xb981, 0x7940, 0xbb01, 0x7bc0, 0x7a80, 0xba41, - 0xbe01, 0x7ec0, 0x7f80, 0xbf41, 0x7d00, 0xbdc1, 0xbc81, 0x7c40, - 0xb401, 0x74c0, 0x7580, 0xb541, 0x7700, 0xb7c1, 0xb681, 0x7640, - 0x7200, 0xb2c1, 0xb381, 0x7340, 0xb101, 0x71c0, 0x7080, 0xb041, - 0x5000, 0x90c1, 0x9181, 0x5140, 0x9301, 0x53c0, 0x5280, 0x9241, - 0x9601, 0x56c0, 0x5780, 0x9741, 0x5500, 0x95c1, 0x9481, 0x5440, - 0x9c01, 0x5cc0, 0x5d80, 0x9d41, 0x5f00, 0x9fc1, 0x9e81, 0x5e40, - 0x5a00, 0x9ac1, 0x9b81, 0x5b40, 0x9901, 0x59c0, 0x5880, 0x9841, - 0x8801, 0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81, 0x4a40, - 0x4e00, 0x8ec1, 0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41, - 0x4400, 0x84c1, 0x8581, 0x4540, 0x8701, 0x47c0, 0x4680, 0x8641, - 0x8201, 0x42c0, 0x4380, 0x8341, 0x4100, 0x81c1, 0x8081, 0x4040 -}; +#include "crc16_modbus_table.h" crc16_t crc16_modbus_update(crc16_t crc, const void *data, size_t data_len) { const unsigned char *d = (const unsigned char *)data; unsigned int tbl_idx; + for (; data_len >= SLICE_SIZE; data_len -= SLICE_SIZE) + { + crc = crc16_modbus_table[15][d[ 0] ^ ((crc >> 0) & 0xff)] ^ + crc16_modbus_table[14][d[ 1] ^ ((crc >> 8) & 0xff)] ^ + crc16_modbus_table[13][d[ 2] ] ^ + crc16_modbus_table[12][d[ 3] ] ^ + crc16_modbus_table[11][d[ 4] ] ^ + crc16_modbus_table[10][d[ 5] ] ^ + crc16_modbus_table[ 9][d[ 6] ] ^ + crc16_modbus_table[ 8][d[ 7] ] ^ + crc16_modbus_table[ 7][d[ 8] ] ^ + crc16_modbus_table[ 6][d[ 9] ] ^ + crc16_modbus_table[ 5][d[10] ] ^ + crc16_modbus_table[ 4][d[11] ] ^ + crc16_modbus_table[ 3][d[12] ] ^ + crc16_modbus_table[ 2][d[13] ] ^ + crc16_modbus_table[ 1][d[14] ] ^ + crc16_modbus_table[ 0][d[15] ]; + crc &= 0xffff; + d += SLICE_SIZE; + } + while (data_len--) { tbl_idx = (crc ^ *d) & 0xff; - crc = (crc_table[tbl_idx] ^ (crc >> 8)) & 0xffff; + crc = (crc16_modbus_table[0][tbl_idx] ^ (crc >> 8)) & 0xffff; d++; } diff --git a/ext/digest/crc16_modbus/crc16_modbus_table.h b/ext/digest/crc16_modbus/crc16_modbus_table.h new file mode 100644 index 0000000..498a974 --- /dev/null +++ b/ext/digest/crc16_modbus/crc16_modbus_table.h @@ -0,0 +1,558 @@ +/* + * bitwidth: 16 + * generator polynomial: 0x8005 + * input bit direction: REFLECT + * slice bytes per iteration: 16 + * slide bits per table: 8 + * + * Generated by: gentable.rb of digest-crc + */ + +#define SLICE_SIZE 16 + +static const uint16_t crc16_modbus_table[SLICE_SIZE][256] = { + { + 0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241, + 0xc601, 0x06c0, 0x0780, 0xc741, 0x0500, 0xc5c1, 0xc481, 0x0440, + 0xcc01, 0x0cc0, 0x0d80, 0xcd41, 0x0f00, 0xcfc1, 0xce81, 0x0e40, + 0x0a00, 0xcac1, 0xcb81, 0x0b40, 0xc901, 0x09c0, 0x0880, 0xc841, + 0xd801, 0x18c0, 0x1980, 0xd941, 0x1b00, 0xdbc1, 0xda81, 0x1a40, + 0x1e00, 0xdec1, 0xdf81, 0x1f40, 0xdd01, 0x1dc0, 0x1c80, 0xdc41, + 0x1400, 0xd4c1, 0xd581, 0x1540, 0xd701, 0x17c0, 0x1680, 0xd641, + 0xd201, 0x12c0, 0x1380, 0xd341, 0x1100, 0xd1c1, 0xd081, 0x1040, + 0xf001, 0x30c0, 0x3180, 0xf141, 0x3300, 0xf3c1, 0xf281, 0x3240, + 0x3600, 0xf6c1, 0xf781, 0x3740, 0xf501, 0x35c0, 0x3480, 0xf441, + 0x3c00, 0xfcc1, 0xfd81, 0x3d40, 0xff01, 0x3fc0, 0x3e80, 0xfe41, + 0xfa01, 0x3ac0, 0x3b80, 0xfb41, 0x3900, 0xf9c1, 0xf881, 0x3840, + 0x2800, 0xe8c1, 0xe981, 0x2940, 0xeb01, 0x2bc0, 0x2a80, 0xea41, + 0xee01, 0x2ec0, 0x2f80, 0xef41, 0x2d00, 0xedc1, 0xec81, 0x2c40, + 0xe401, 0x24c0, 0x2580, 0xe541, 0x2700, 0xe7c1, 0xe681, 0x2640, + 0x2200, 0xe2c1, 0xe381, 0x2340, 0xe101, 0x21c0, 0x2080, 0xe041, + 0xa001, 0x60c0, 0x6180, 0xa141, 0x6300, 0xa3c1, 0xa281, 0x6240, + 0x6600, 0xa6c1, 0xa781, 0x6740, 0xa501, 0x65c0, 0x6480, 0xa441, + 0x6c00, 0xacc1, 0xad81, 0x6d40, 0xaf01, 0x6fc0, 0x6e80, 0xae41, + 0xaa01, 0x6ac0, 0x6b80, 0xab41, 0x6900, 0xa9c1, 0xa881, 0x6840, + 0x7800, 0xb8c1, 0xb981, 0x7940, 0xbb01, 0x7bc0, 0x7a80, 0xba41, + 0xbe01, 0x7ec0, 0x7f80, 0xbf41, 0x7d00, 0xbdc1, 0xbc81, 0x7c40, + 0xb401, 0x74c0, 0x7580, 0xb541, 0x7700, 0xb7c1, 0xb681, 0x7640, + 0x7200, 0xb2c1, 0xb381, 0x7340, 0xb101, 0x71c0, 0x7080, 0xb041, + 0x5000, 0x90c1, 0x9181, 0x5140, 0x9301, 0x53c0, 0x5280, 0x9241, + 0x9601, 0x56c0, 0x5780, 0x9741, 0x5500, 0x95c1, 0x9481, 0x5440, + 0x9c01, 0x5cc0, 0x5d80, 0x9d41, 0x5f00, 0x9fc1, 0x9e81, 0x5e40, + 0x5a00, 0x9ac1, 0x9b81, 0x5b40, 0x9901, 0x59c0, 0x5880, 0x9841, + 0x8801, 0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81, 0x4a40, + 0x4e00, 0x8ec1, 0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41, + 0x4400, 0x84c1, 0x8581, 0x4540, 0x8701, 0x47c0, 0x4680, 0x8641, + 0x8201, 0x42c0, 0x4380, 0x8341, 0x4100, 0x81c1, 0x8081, 0x4040, + }, + { + 0x0000, 0x9001, 0x6001, 0xf000, 0xc002, 0x5003, 0xa003, 0x3002, + 0xc007, 0x5006, 0xa006, 0x3007, 0x0005, 0x9004, 0x6004, 0xf005, + 0xc00d, 0x500c, 0xa00c, 0x300d, 0x000f, 0x900e, 0x600e, 0xf00f, + 0x000a, 0x900b, 0x600b, 0xf00a, 0xc008, 0x5009, 0xa009, 0x3008, + 0xc019, 0x5018, 0xa018, 0x3019, 0x001b, 0x901a, 0x601a, 0xf01b, + 0x001e, 0x901f, 0x601f, 0xf01e, 0xc01c, 0x501d, 0xa01d, 0x301c, + 0x0014, 0x9015, 0x6015, 0xf014, 0xc016, 0x5017, 0xa017, 0x3016, + 0xc013, 0x5012, 0xa012, 0x3013, 0x0011, 0x9010, 0x6010, 0xf011, + 0xc031, 0x5030, 0xa030, 0x3031, 0x0033, 0x9032, 0x6032, 0xf033, + 0x0036, 0x9037, 0x6037, 0xf036, 0xc034, 0x5035, 0xa035, 0x3034, + 0x003c, 0x903d, 0x603d, 0xf03c, 0xc03e, 0x503f, 0xa03f, 0x303e, + 0xc03b, 0x503a, 0xa03a, 0x303b, 0x0039, 0x9038, 0x6038, 0xf039, + 0x0028, 0x9029, 0x6029, 0xf028, 0xc02a, 0x502b, 0xa02b, 0x302a, + 0xc02f, 0x502e, 0xa02e, 0x302f, 0x002d, 0x902c, 0x602c, 0xf02d, + 0xc025, 0x5024, 0xa024, 0x3025, 0x0027, 0x9026, 0x6026, 0xf027, + 0x0022, 0x9023, 0x6023, 0xf022, 0xc020, 0x5021, 0xa021, 0x3020, + 0xc061, 0x5060, 0xa060, 0x3061, 0x0063, 0x9062, 0x6062, 0xf063, + 0x0066, 0x9067, 0x6067, 0xf066, 0xc064, 0x5065, 0xa065, 0x3064, + 0x006c, 0x906d, 0x606d, 0xf06c, 0xc06e, 0x506f, 0xa06f, 0x306e, + 0xc06b, 0x506a, 0xa06a, 0x306b, 0x0069, 0x9068, 0x6068, 0xf069, + 0x0078, 0x9079, 0x6079, 0xf078, 0xc07a, 0x507b, 0xa07b, 0x307a, + 0xc07f, 0x507e, 0xa07e, 0x307f, 0x007d, 0x907c, 0x607c, 0xf07d, + 0xc075, 0x5074, 0xa074, 0x3075, 0x0077, 0x9076, 0x6076, 0xf077, + 0x0072, 0x9073, 0x6073, 0xf072, 0xc070, 0x5071, 0xa071, 0x3070, + 0x0050, 0x9051, 0x6051, 0xf050, 0xc052, 0x5053, 0xa053, 0x3052, + 0xc057, 0x5056, 0xa056, 0x3057, 0x0055, 0x9054, 0x6054, 0xf055, + 0xc05d, 0x505c, 0xa05c, 0x305d, 0x005f, 0x905e, 0x605e, 0xf05f, + 0x005a, 0x905b, 0x605b, 0xf05a, 0xc058, 0x5059, 0xa059, 0x3058, + 0xc049, 0x5048, 0xa048, 0x3049, 0x004b, 0x904a, 0x604a, 0xf04b, + 0x004e, 0x904f, 0x604f, 0xf04e, 0xc04c, 0x504d, 0xa04d, 0x304c, + 0x0044, 0x9045, 0x6045, 0xf044, 0xc046, 0x5047, 0xa047, 0x3046, + 0xc043, 0x5042, 0xa042, 0x3043, 0x0041, 0x9040, 0x6040, 0xf041, + }, + { + 0x0000, 0xc051, 0xc0a1, 0x00f0, 0xc141, 0x0110, 0x01e0, 0xc1b1, + 0xc281, 0x02d0, 0x0220, 0xc271, 0x03c0, 0xc391, 0xc361, 0x0330, + 0xc501, 0x0550, 0x05a0, 0xc5f1, 0x0440, 0xc411, 0xc4e1, 0x04b0, + 0x0780, 0xc7d1, 0xc721, 0x0770, 0xc6c1, 0x0690, 0x0660, 0xc631, + 0xca01, 0x0a50, 0x0aa0, 0xcaf1, 0x0b40, 0xcb11, 0xcbe1, 0x0bb0, + 0x0880, 0xc8d1, 0xc821, 0x0870, 0xc9c1, 0x0990, 0x0960, 0xc931, + 0x0f00, 0xcf51, 0xcfa1, 0x0ff0, 0xce41, 0x0e10, 0x0ee0, 0xceb1, + 0xcd81, 0x0dd0, 0x0d20, 0xcd71, 0x0cc0, 0xcc91, 0xcc61, 0x0c30, + 0xd401, 0x1450, 0x14a0, 0xd4f1, 0x1540, 0xd511, 0xd5e1, 0x15b0, + 0x1680, 0xd6d1, 0xd621, 0x1670, 0xd7c1, 0x1790, 0x1760, 0xd731, + 0x1100, 0xd151, 0xd1a1, 0x11f0, 0xd041, 0x1010, 0x10e0, 0xd0b1, + 0xd381, 0x13d0, 0x1320, 0xd371, 0x12c0, 0xd291, 0xd261, 0x1230, + 0x1e00, 0xde51, 0xdea1, 0x1ef0, 0xdf41, 0x1f10, 0x1fe0, 0xdfb1, + 0xdc81, 0x1cd0, 0x1c20, 0xdc71, 0x1dc0, 0xdd91, 0xdd61, 0x1d30, + 0xdb01, 0x1b50, 0x1ba0, 0xdbf1, 0x1a40, 0xda11, 0xdae1, 0x1ab0, + 0x1980, 0xd9d1, 0xd921, 0x1970, 0xd8c1, 0x1890, 0x1860, 0xd831, + 0xe801, 0x2850, 0x28a0, 0xe8f1, 0x2940, 0xe911, 0xe9e1, 0x29b0, + 0x2a80, 0xead1, 0xea21, 0x2a70, 0xebc1, 0x2b90, 0x2b60, 0xeb31, + 0x2d00, 0xed51, 0xeda1, 0x2df0, 0xec41, 0x2c10, 0x2ce0, 0xecb1, + 0xef81, 0x2fd0, 0x2f20, 0xef71, 0x2ec0, 0xee91, 0xee61, 0x2e30, + 0x2200, 0xe251, 0xe2a1, 0x22f0, 0xe341, 0x2310, 0x23e0, 0xe3b1, + 0xe081, 0x20d0, 0x2020, 0xe071, 0x21c0, 0xe191, 0xe161, 0x2130, + 0xe701, 0x2750, 0x27a0, 0xe7f1, 0x2640, 0xe611, 0xe6e1, 0x26b0, + 0x2580, 0xe5d1, 0xe521, 0x2570, 0xe4c1, 0x2490, 0x2460, 0xe431, + 0x3c00, 0xfc51, 0xfca1, 0x3cf0, 0xfd41, 0x3d10, 0x3de0, 0xfdb1, + 0xfe81, 0x3ed0, 0x3e20, 0xfe71, 0x3fc0, 0xff91, 0xff61, 0x3f30, + 0xf901, 0x3950, 0x39a0, 0xf9f1, 0x3840, 0xf811, 0xf8e1, 0x38b0, + 0x3b80, 0xfbd1, 0xfb21, 0x3b70, 0xfac1, 0x3a90, 0x3a60, 0xfa31, + 0xf601, 0x3650, 0x36a0, 0xf6f1, 0x3740, 0xf711, 0xf7e1, 0x37b0, + 0x3480, 0xf4d1, 0xf421, 0x3470, 0xf5c1, 0x3590, 0x3560, 0xf531, + 0x3300, 0xf351, 0xf3a1, 0x33f0, 0xf241, 0x3210, 0x32e0, 0xf2b1, + 0xf181, 0x31d0, 0x3120, 0xf171, 0x30c0, 0xf091, 0xf061, 0x3030, + }, + { + 0x0000, 0xfc01, 0xb801, 0x4400, 0x3001, 0xcc00, 0x8800, 0x7401, + 0x6002, 0x9c03, 0xd803, 0x2402, 0x5003, 0xac02, 0xe802, 0x1403, + 0xc004, 0x3c05, 0x7805, 0x8404, 0xf005, 0x0c04, 0x4804, 0xb405, + 0xa006, 0x5c07, 0x1807, 0xe406, 0x9007, 0x6c06, 0x2806, 0xd407, + 0xc00b, 0x3c0a, 0x780a, 0x840b, 0xf00a, 0x0c0b, 0x480b, 0xb40a, + 0xa009, 0x5c08, 0x1808, 0xe409, 0x9008, 0x6c09, 0x2809, 0xd408, + 0x000f, 0xfc0e, 0xb80e, 0x440f, 0x300e, 0xcc0f, 0x880f, 0x740e, + 0x600d, 0x9c0c, 0xd80c, 0x240d, 0x500c, 0xac0d, 0xe80d, 0x140c, + 0xc015, 0x3c14, 0x7814, 0x8415, 0xf014, 0x0c15, 0x4815, 0xb414, + 0xa017, 0x5c16, 0x1816, 0xe417, 0x9016, 0x6c17, 0x2817, 0xd416, + 0x0011, 0xfc10, 0xb810, 0x4411, 0x3010, 0xcc11, 0x8811, 0x7410, + 0x6013, 0x9c12, 0xd812, 0x2413, 0x5012, 0xac13, 0xe813, 0x1412, + 0x001e, 0xfc1f, 0xb81f, 0x441e, 0x301f, 0xcc1e, 0x881e, 0x741f, + 0x601c, 0x9c1d, 0xd81d, 0x241c, 0x501d, 0xac1c, 0xe81c, 0x141d, + 0xc01a, 0x3c1b, 0x781b, 0x841a, 0xf01b, 0x0c1a, 0x481a, 0xb41b, + 0xa018, 0x5c19, 0x1819, 0xe418, 0x9019, 0x6c18, 0x2818, 0xd419, + 0xc029, 0x3c28, 0x7828, 0x8429, 0xf028, 0x0c29, 0x4829, 0xb428, + 0xa02b, 0x5c2a, 0x182a, 0xe42b, 0x902a, 0x6c2b, 0x282b, 0xd42a, + 0x002d, 0xfc2c, 0xb82c, 0x442d, 0x302c, 0xcc2d, 0x882d, 0x742c, + 0x602f, 0x9c2e, 0xd82e, 0x242f, 0x502e, 0xac2f, 0xe82f, 0x142e, + 0x0022, 0xfc23, 0xb823, 0x4422, 0x3023, 0xcc22, 0x8822, 0x7423, + 0x6020, 0x9c21, 0xd821, 0x2420, 0x5021, 0xac20, 0xe820, 0x1421, + 0xc026, 0x3c27, 0x7827, 0x8426, 0xf027, 0x0c26, 0x4826, 0xb427, + 0xa024, 0x5c25, 0x1825, 0xe424, 0x9025, 0x6c24, 0x2824, 0xd425, + 0x003c, 0xfc3d, 0xb83d, 0x443c, 0x303d, 0xcc3c, 0x883c, 0x743d, + 0x603e, 0x9c3f, 0xd83f, 0x243e, 0x503f, 0xac3e, 0xe83e, 0x143f, + 0xc038, 0x3c39, 0x7839, 0x8438, 0xf039, 0x0c38, 0x4838, 0xb439, + 0xa03a, 0x5c3b, 0x183b, 0xe43a, 0x903b, 0x6c3a, 0x283a, 0xd43b, + 0xc037, 0x3c36, 0x7836, 0x8437, 0xf036, 0x0c37, 0x4837, 0xb436, + 0xa035, 0x5c34, 0x1834, 0xe435, 0x9034, 0x6c35, 0x2835, 0xd434, + 0x0033, 0xfc32, 0xb832, 0x4433, 0x3032, 0xcc33, 0x8833, 0x7432, + 0x6031, 0x9c30, 0xd830, 0x2431, 0x5030, 0xac31, 0xe831, 0x1430, + }, + { + 0x0000, 0xc03d, 0xc079, 0x0044, 0xc0f1, 0x00cc, 0x0088, 0xc0b5, + 0xc1e1, 0x01dc, 0x0198, 0xc1a5, 0x0110, 0xc12d, 0xc169, 0x0154, + 0xc3c1, 0x03fc, 0x03b8, 0xc385, 0x0330, 0xc30d, 0xc349, 0x0374, + 0x0220, 0xc21d, 0xc259, 0x0264, 0xc2d1, 0x02ec, 0x02a8, 0xc295, + 0xc781, 0x07bc, 0x07f8, 0xc7c5, 0x0770, 0xc74d, 0xc709, 0x0734, + 0x0660, 0xc65d, 0xc619, 0x0624, 0xc691, 0x06ac, 0x06e8, 0xc6d5, + 0x0440, 0xc47d, 0xc439, 0x0404, 0xc4b1, 0x048c, 0x04c8, 0xc4f5, + 0xc5a1, 0x059c, 0x05d8, 0xc5e5, 0x0550, 0xc56d, 0xc529, 0x0514, + 0xcf01, 0x0f3c, 0x0f78, 0xcf45, 0x0ff0, 0xcfcd, 0xcf89, 0x0fb4, + 0x0ee0, 0xcedd, 0xce99, 0x0ea4, 0xce11, 0x0e2c, 0x0e68, 0xce55, + 0x0cc0, 0xccfd, 0xccb9, 0x0c84, 0xcc31, 0x0c0c, 0x0c48, 0xcc75, + 0xcd21, 0x0d1c, 0x0d58, 0xcd65, 0x0dd0, 0xcded, 0xcda9, 0x0d94, + 0x0880, 0xc8bd, 0xc8f9, 0x08c4, 0xc871, 0x084c, 0x0808, 0xc835, + 0xc961, 0x095c, 0x0918, 0xc925, 0x0990, 0xc9ad, 0xc9e9, 0x09d4, + 0xcb41, 0x0b7c, 0x0b38, 0xcb05, 0x0bb0, 0xcb8d, 0xcbc9, 0x0bf4, + 0x0aa0, 0xca9d, 0xcad9, 0x0ae4, 0xca51, 0x0a6c, 0x0a28, 0xca15, + 0xde01, 0x1e3c, 0x1e78, 0xde45, 0x1ef0, 0xdecd, 0xde89, 0x1eb4, + 0x1fe0, 0xdfdd, 0xdf99, 0x1fa4, 0xdf11, 0x1f2c, 0x1f68, 0xdf55, + 0x1dc0, 0xddfd, 0xddb9, 0x1d84, 0xdd31, 0x1d0c, 0x1d48, 0xdd75, + 0xdc21, 0x1c1c, 0x1c58, 0xdc65, 0x1cd0, 0xdced, 0xdca9, 0x1c94, + 0x1980, 0xd9bd, 0xd9f9, 0x19c4, 0xd971, 0x194c, 0x1908, 0xd935, + 0xd861, 0x185c, 0x1818, 0xd825, 0x1890, 0xd8ad, 0xd8e9, 0x18d4, + 0xda41, 0x1a7c, 0x1a38, 0xda05, 0x1ab0, 0xda8d, 0xdac9, 0x1af4, + 0x1ba0, 0xdb9d, 0xdbd9, 0x1be4, 0xdb51, 0x1b6c, 0x1b28, 0xdb15, + 0x1100, 0xd13d, 0xd179, 0x1144, 0xd1f1, 0x11cc, 0x1188, 0xd1b5, + 0xd0e1, 0x10dc, 0x1098, 0xd0a5, 0x1010, 0xd02d, 0xd069, 0x1054, + 0xd2c1, 0x12fc, 0x12b8, 0xd285, 0x1230, 0xd20d, 0xd249, 0x1274, + 0x1320, 0xd31d, 0xd359, 0x1364, 0xd3d1, 0x13ec, 0x13a8, 0xd395, + 0xd681, 0x16bc, 0x16f8, 0xd6c5, 0x1670, 0xd64d, 0xd609, 0x1634, + 0x1760, 0xd75d, 0xd719, 0x1724, 0xd791, 0x17ac, 0x17e8, 0xd7d5, + 0x1540, 0xd57d, 0xd539, 0x1504, 0xd5b1, 0x158c, 0x15c8, 0xd5f5, + 0xd4a1, 0x149c, 0x14d8, 0xd4e5, 0x1450, 0xd46d, 0xd429, 0x1414, + }, + { + 0x0000, 0xd101, 0xe201, 0x3300, 0x8401, 0x5500, 0x6600, 0xb701, + 0x4801, 0x9900, 0xaa00, 0x7b01, 0xcc00, 0x1d01, 0x2e01, 0xff00, + 0x9002, 0x4103, 0x7203, 0xa302, 0x1403, 0xc502, 0xf602, 0x2703, + 0xd803, 0x0902, 0x3a02, 0xeb03, 0x5c02, 0x8d03, 0xbe03, 0x6f02, + 0x6007, 0xb106, 0x8206, 0x5307, 0xe406, 0x3507, 0x0607, 0xd706, + 0x2806, 0xf907, 0xca07, 0x1b06, 0xac07, 0x7d06, 0x4e06, 0x9f07, + 0xf005, 0x2104, 0x1204, 0xc305, 0x7404, 0xa505, 0x9605, 0x4704, + 0xb804, 0x6905, 0x5a05, 0x8b04, 0x3c05, 0xed04, 0xde04, 0x0f05, + 0xc00e, 0x110f, 0x220f, 0xf30e, 0x440f, 0x950e, 0xa60e, 0x770f, + 0x880f, 0x590e, 0x6a0e, 0xbb0f, 0x0c0e, 0xdd0f, 0xee0f, 0x3f0e, + 0x500c, 0x810d, 0xb20d, 0x630c, 0xd40d, 0x050c, 0x360c, 0xe70d, + 0x180d, 0xc90c, 0xfa0c, 0x2b0d, 0x9c0c, 0x4d0d, 0x7e0d, 0xaf0c, + 0xa009, 0x7108, 0x4208, 0x9309, 0x2408, 0xf509, 0xc609, 0x1708, + 0xe808, 0x3909, 0x0a09, 0xdb08, 0x6c09, 0xbd08, 0x8e08, 0x5f09, + 0x300b, 0xe10a, 0xd20a, 0x030b, 0xb40a, 0x650b, 0x560b, 0x870a, + 0x780a, 0xa90b, 0x9a0b, 0x4b0a, 0xfc0b, 0x2d0a, 0x1e0a, 0xcf0b, + 0xc01f, 0x111e, 0x221e, 0xf31f, 0x441e, 0x951f, 0xa61f, 0x771e, + 0x881e, 0x591f, 0x6a1f, 0xbb1e, 0x0c1f, 0xdd1e, 0xee1e, 0x3f1f, + 0x501d, 0x811c, 0xb21c, 0x631d, 0xd41c, 0x051d, 0x361d, 0xe71c, + 0x181c, 0xc91d, 0xfa1d, 0x2b1c, 0x9c1d, 0x4d1c, 0x7e1c, 0xaf1d, + 0xa018, 0x7119, 0x4219, 0x9318, 0x2419, 0xf518, 0xc618, 0x1719, + 0xe819, 0x3918, 0x0a18, 0xdb19, 0x6c18, 0xbd19, 0x8e19, 0x5f18, + 0x301a, 0xe11b, 0xd21b, 0x031a, 0xb41b, 0x651a, 0x561a, 0x871b, + 0x781b, 0xa91a, 0x9a1a, 0x4b1b, 0xfc1a, 0x2d1b, 0x1e1b, 0xcf1a, + 0x0011, 0xd110, 0xe210, 0x3311, 0x8410, 0x5511, 0x6611, 0xb710, + 0x4810, 0x9911, 0xaa11, 0x7b10, 0xcc11, 0x1d10, 0x2e10, 0xff11, + 0x9013, 0x4112, 0x7212, 0xa313, 0x1412, 0xc513, 0xf613, 0x2712, + 0xd812, 0x0913, 0x3a13, 0xeb12, 0x5c13, 0x8d12, 0xbe12, 0x6f13, + 0x6016, 0xb117, 0x8217, 0x5316, 0xe417, 0x3516, 0x0616, 0xd717, + 0x2817, 0xf916, 0xca16, 0x1b17, 0xac16, 0x7d17, 0x4e17, 0x9f16, + 0xf014, 0x2115, 0x1215, 0xc314, 0x7415, 0xa514, 0x9614, 0x4715, + 0xb815, 0x6914, 0x5a14, 0x8b15, 0x3c14, 0xed15, 0xde15, 0x0f14, + }, + { + 0x0000, 0xc010, 0xc023, 0x0033, 0xc045, 0x0055, 0x0066, 0xc076, + 0xc089, 0x0099, 0x00aa, 0xc0ba, 0x00cc, 0xc0dc, 0xc0ef, 0x00ff, + 0xc111, 0x0101, 0x0132, 0xc122, 0x0154, 0xc144, 0xc177, 0x0167, + 0x0198, 0xc188, 0xc1bb, 0x01ab, 0xc1dd, 0x01cd, 0x01fe, 0xc1ee, + 0xc221, 0x0231, 0x0202, 0xc212, 0x0264, 0xc274, 0xc247, 0x0257, + 0x02a8, 0xc2b8, 0xc28b, 0x029b, 0xc2ed, 0x02fd, 0x02ce, 0xc2de, + 0x0330, 0xc320, 0xc313, 0x0303, 0xc375, 0x0365, 0x0356, 0xc346, + 0xc3b9, 0x03a9, 0x039a, 0xc38a, 0x03fc, 0xc3ec, 0xc3df, 0x03cf, + 0xc441, 0x0451, 0x0462, 0xc472, 0x0404, 0xc414, 0xc427, 0x0437, + 0x04c8, 0xc4d8, 0xc4eb, 0x04fb, 0xc48d, 0x049d, 0x04ae, 0xc4be, + 0x0550, 0xc540, 0xc573, 0x0563, 0xc515, 0x0505, 0x0536, 0xc526, + 0xc5d9, 0x05c9, 0x05fa, 0xc5ea, 0x059c, 0xc58c, 0xc5bf, 0x05af, + 0x0660, 0xc670, 0xc643, 0x0653, 0xc625, 0x0635, 0x0606, 0xc616, + 0xc6e9, 0x06f9, 0x06ca, 0xc6da, 0x06ac, 0xc6bc, 0xc68f, 0x069f, + 0xc771, 0x0761, 0x0752, 0xc742, 0x0734, 0xc724, 0xc717, 0x0707, + 0x07f8, 0xc7e8, 0xc7db, 0x07cb, 0xc7bd, 0x07ad, 0x079e, 0xc78e, + 0xc881, 0x0891, 0x08a2, 0xc8b2, 0x08c4, 0xc8d4, 0xc8e7, 0x08f7, + 0x0808, 0xc818, 0xc82b, 0x083b, 0xc84d, 0x085d, 0x086e, 0xc87e, + 0x0990, 0xc980, 0xc9b3, 0x09a3, 0xc9d5, 0x09c5, 0x09f6, 0xc9e6, + 0xc919, 0x0909, 0x093a, 0xc92a, 0x095c, 0xc94c, 0xc97f, 0x096f, + 0x0aa0, 0xcab0, 0xca83, 0x0a93, 0xcae5, 0x0af5, 0x0ac6, 0xcad6, + 0xca29, 0x0a39, 0x0a0a, 0xca1a, 0x0a6c, 0xca7c, 0xca4f, 0x0a5f, + 0xcbb1, 0x0ba1, 0x0b92, 0xcb82, 0x0bf4, 0xcbe4, 0xcbd7, 0x0bc7, + 0x0b38, 0xcb28, 0xcb1b, 0x0b0b, 0xcb7d, 0x0b6d, 0x0b5e, 0xcb4e, + 0x0cc0, 0xccd0, 0xcce3, 0x0cf3, 0xcc85, 0x0c95, 0x0ca6, 0xccb6, + 0xcc49, 0x0c59, 0x0c6a, 0xcc7a, 0x0c0c, 0xcc1c, 0xcc2f, 0x0c3f, + 0xcdd1, 0x0dc1, 0x0df2, 0xcde2, 0x0d94, 0xcd84, 0xcdb7, 0x0da7, + 0x0d58, 0xcd48, 0xcd7b, 0x0d6b, 0xcd1d, 0x0d0d, 0x0d3e, 0xcd2e, + 0xcee1, 0x0ef1, 0x0ec2, 0xced2, 0x0ea4, 0xceb4, 0xce87, 0x0e97, + 0x0e68, 0xce78, 0xce4b, 0x0e5b, 0xce2d, 0x0e3d, 0x0e0e, 0xce1e, + 0x0ff0, 0xcfe0, 0xcfd3, 0x0fc3, 0xcfb5, 0x0fa5, 0x0f96, 0xcf86, + 0xcf79, 0x0f69, 0x0f5a, 0xcf4a, 0x0f3c, 0xcf2c, 0xcf1f, 0x0f0f, + }, + { + 0x0000, 0xccc1, 0xd981, 0x1540, 0xf301, 0x3fc0, 0x2a80, 0xe641, + 0xa601, 0x6ac0, 0x7f80, 0xb341, 0x5500, 0x99c1, 0x8c81, 0x4040, + 0x0c01, 0xc0c0, 0xd580, 0x1941, 0xff00, 0x33c1, 0x2681, 0xea40, + 0xaa00, 0x66c1, 0x7381, 0xbf40, 0x5901, 0x95c0, 0x8080, 0x4c41, + 0x1802, 0xd4c3, 0xc183, 0x0d42, 0xeb03, 0x27c2, 0x3282, 0xfe43, + 0xbe03, 0x72c2, 0x6782, 0xab43, 0x4d02, 0x81c3, 0x9483, 0x5842, + 0x1403, 0xd8c2, 0xcd82, 0x0143, 0xe702, 0x2bc3, 0x3e83, 0xf242, + 0xb202, 0x7ec3, 0x6b83, 0xa742, 0x4103, 0x8dc2, 0x9882, 0x5443, + 0x3004, 0xfcc5, 0xe985, 0x2544, 0xc305, 0x0fc4, 0x1a84, 0xd645, + 0x9605, 0x5ac4, 0x4f84, 0x8345, 0x6504, 0xa9c5, 0xbc85, 0x7044, + 0x3c05, 0xf0c4, 0xe584, 0x2945, 0xcf04, 0x03c5, 0x1685, 0xda44, + 0x9a04, 0x56c5, 0x4385, 0x8f44, 0x6905, 0xa5c4, 0xb084, 0x7c45, + 0x2806, 0xe4c7, 0xf187, 0x3d46, 0xdb07, 0x17c6, 0x0286, 0xce47, + 0x8e07, 0x42c6, 0x5786, 0x9b47, 0x7d06, 0xb1c7, 0xa487, 0x6846, + 0x2407, 0xe8c6, 0xfd86, 0x3147, 0xd706, 0x1bc7, 0x0e87, 0xc246, + 0x8206, 0x4ec7, 0x5b87, 0x9746, 0x7107, 0xbdc6, 0xa886, 0x6447, + 0x6008, 0xacc9, 0xb989, 0x7548, 0x9309, 0x5fc8, 0x4a88, 0x8649, + 0xc609, 0x0ac8, 0x1f88, 0xd349, 0x3508, 0xf9c9, 0xec89, 0x2048, + 0x6c09, 0xa0c8, 0xb588, 0x7949, 0x9f08, 0x53c9, 0x4689, 0x8a48, + 0xca08, 0x06c9, 0x1389, 0xdf48, 0x3909, 0xf5c8, 0xe088, 0x2c49, + 0x780a, 0xb4cb, 0xa18b, 0x6d4a, 0x8b0b, 0x47ca, 0x528a, 0x9e4b, + 0xde0b, 0x12ca, 0x078a, 0xcb4b, 0x2d0a, 0xe1cb, 0xf48b, 0x384a, + 0x740b, 0xb8ca, 0xad8a, 0x614b, 0x870a, 0x4bcb, 0x5e8b, 0x924a, + 0xd20a, 0x1ecb, 0x0b8b, 0xc74a, 0x210b, 0xedca, 0xf88a, 0x344b, + 0x500c, 0x9ccd, 0x898d, 0x454c, 0xa30d, 0x6fcc, 0x7a8c, 0xb64d, + 0xf60d, 0x3acc, 0x2f8c, 0xe34d, 0x050c, 0xc9cd, 0xdc8d, 0x104c, + 0x5c0d, 0x90cc, 0x858c, 0x494d, 0xaf0c, 0x63cd, 0x768d, 0xba4c, + 0xfa0c, 0x36cd, 0x238d, 0xef4c, 0x090d, 0xc5cc, 0xd08c, 0x1c4d, + 0x480e, 0x84cf, 0x918f, 0x5d4e, 0xbb0f, 0x77ce, 0x628e, 0xae4f, + 0xee0f, 0x22ce, 0x378e, 0xfb4f, 0x1d0e, 0xd1cf, 0xc48f, 0x084e, + 0x440f, 0x88ce, 0x9d8e, 0x514f, 0xb70e, 0x7bcf, 0x6e8f, 0xa24e, + 0xe20e, 0x2ecf, 0x3b8f, 0xf74e, 0x110f, 0xddce, 0xc88e, 0x044f, + }, + { + 0x0000, 0x900d, 0x6019, 0xf014, 0xc032, 0x503f, 0xa02b, 0x3026, + 0xc067, 0x506a, 0xa07e, 0x3073, 0x0055, 0x9058, 0x604c, 0xf041, + 0xc0cd, 0x50c0, 0xa0d4, 0x30d9, 0x00ff, 0x90f2, 0x60e6, 0xf0eb, + 0x00aa, 0x90a7, 0x60b3, 0xf0be, 0xc098, 0x5095, 0xa081, 0x308c, + 0xc199, 0x5194, 0xa180, 0x318d, 0x01ab, 0x91a6, 0x61b2, 0xf1bf, + 0x01fe, 0x91f3, 0x61e7, 0xf1ea, 0xc1cc, 0x51c1, 0xa1d5, 0x31d8, + 0x0154, 0x9159, 0x614d, 0xf140, 0xc166, 0x516b, 0xa17f, 0x3172, + 0xc133, 0x513e, 0xa12a, 0x3127, 0x0101, 0x910c, 0x6118, 0xf115, + 0xc331, 0x533c, 0xa328, 0x3325, 0x0303, 0x930e, 0x631a, 0xf317, + 0x0356, 0x935b, 0x634f, 0xf342, 0xc364, 0x5369, 0xa37d, 0x3370, + 0x03fc, 0x93f1, 0x63e5, 0xf3e8, 0xc3ce, 0x53c3, 0xa3d7, 0x33da, + 0xc39b, 0x5396, 0xa382, 0x338f, 0x03a9, 0x93a4, 0x63b0, 0xf3bd, + 0x02a8, 0x92a5, 0x62b1, 0xf2bc, 0xc29a, 0x5297, 0xa283, 0x328e, + 0xc2cf, 0x52c2, 0xa2d6, 0x32db, 0x02fd, 0x92f0, 0x62e4, 0xf2e9, + 0xc265, 0x5268, 0xa27c, 0x3271, 0x0257, 0x925a, 0x624e, 0xf243, + 0x0202, 0x920f, 0x621b, 0xf216, 0xc230, 0x523d, 0xa229, 0x3224, + 0xc661, 0x566c, 0xa678, 0x3675, 0x0653, 0x965e, 0x664a, 0xf647, + 0x0606, 0x960b, 0x661f, 0xf612, 0xc634, 0x5639, 0xa62d, 0x3620, + 0x06ac, 0x96a1, 0x66b5, 0xf6b8, 0xc69e, 0x5693, 0xa687, 0x368a, + 0xc6cb, 0x56c6, 0xa6d2, 0x36df, 0x06f9, 0x96f4, 0x66e0, 0xf6ed, + 0x07f8, 0x97f5, 0x67e1, 0xf7ec, 0xc7ca, 0x57c7, 0xa7d3, 0x37de, + 0xc79f, 0x5792, 0xa786, 0x378b, 0x07ad, 0x97a0, 0x67b4, 0xf7b9, + 0xc735, 0x5738, 0xa72c, 0x3721, 0x0707, 0x970a, 0x671e, 0xf713, + 0x0752, 0x975f, 0x674b, 0xf746, 0xc760, 0x576d, 0xa779, 0x3774, + 0x0550, 0x955d, 0x6549, 0xf544, 0xc562, 0x556f, 0xa57b, 0x3576, + 0xc537, 0x553a, 0xa52e, 0x3523, 0x0505, 0x9508, 0x651c, 0xf511, + 0xc59d, 0x5590, 0xa584, 0x3589, 0x05af, 0x95a2, 0x65b6, 0xf5bb, + 0x05fa, 0x95f7, 0x65e3, 0xf5ee, 0xc5c8, 0x55c5, 0xa5d1, 0x35dc, + 0xc4c9, 0x54c4, 0xa4d0, 0x34dd, 0x04fb, 0x94f6, 0x64e2, 0xf4ef, + 0x04ae, 0x94a3, 0x64b7, 0xf4ba, 0xc49c, 0x5491, 0xa485, 0x3488, + 0x0404, 0x9409, 0x641d, 0xf410, 0xc436, 0x543b, 0xa42f, 0x3422, + 0xc463, 0x546e, 0xa47a, 0x3477, 0x0451, 0x945c, 0x6448, 0xf445, + }, + { + 0x0000, 0xc551, 0xcaa1, 0x0ff0, 0xd541, 0x1010, 0x1fe0, 0xdab1, + 0xea81, 0x2fd0, 0x2020, 0xe571, 0x3fc0, 0xfa91, 0xf561, 0x3030, + 0x9501, 0x5050, 0x5fa0, 0x9af1, 0x4040, 0x8511, 0x8ae1, 0x4fb0, + 0x7f80, 0xbad1, 0xb521, 0x7070, 0xaac1, 0x6f90, 0x6060, 0xa531, + 0x6a01, 0xaf50, 0xa0a0, 0x65f1, 0xbf40, 0x7a11, 0x75e1, 0xb0b0, + 0x8080, 0x45d1, 0x4a21, 0x8f70, 0x55c1, 0x9090, 0x9f60, 0x5a31, + 0xff00, 0x3a51, 0x35a1, 0xf0f0, 0x2a41, 0xef10, 0xe0e0, 0x25b1, + 0x1581, 0xd0d0, 0xdf20, 0x1a71, 0xc0c0, 0x0591, 0x0a61, 0xcf30, + 0xd402, 0x1153, 0x1ea3, 0xdbf2, 0x0143, 0xc412, 0xcbe2, 0x0eb3, + 0x3e83, 0xfbd2, 0xf422, 0x3173, 0xebc2, 0x2e93, 0x2163, 0xe432, + 0x4103, 0x8452, 0x8ba2, 0x4ef3, 0x9442, 0x5113, 0x5ee3, 0x9bb2, + 0xab82, 0x6ed3, 0x6123, 0xa472, 0x7ec3, 0xbb92, 0xb462, 0x7133, + 0xbe03, 0x7b52, 0x74a2, 0xb1f3, 0x6b42, 0xae13, 0xa1e3, 0x64b2, + 0x5482, 0x91d3, 0x9e23, 0x5b72, 0x81c3, 0x4492, 0x4b62, 0x8e33, + 0x2b02, 0xee53, 0xe1a3, 0x24f2, 0xfe43, 0x3b12, 0x34e2, 0xf1b3, + 0xc183, 0x04d2, 0x0b22, 0xce73, 0x14c2, 0xd193, 0xde63, 0x1b32, + 0xe807, 0x2d56, 0x22a6, 0xe7f7, 0x3d46, 0xf817, 0xf7e7, 0x32b6, + 0x0286, 0xc7d7, 0xc827, 0x0d76, 0xd7c7, 0x1296, 0x1d66, 0xd837, + 0x7d06, 0xb857, 0xb7a7, 0x72f6, 0xa847, 0x6d16, 0x62e6, 0xa7b7, + 0x9787, 0x52d6, 0x5d26, 0x9877, 0x42c6, 0x8797, 0x8867, 0x4d36, + 0x8206, 0x4757, 0x48a7, 0x8df6, 0x5747, 0x9216, 0x9de6, 0x58b7, + 0x6887, 0xadd6, 0xa226, 0x6777, 0xbdc6, 0x7897, 0x7767, 0xb236, + 0x1707, 0xd256, 0xdda6, 0x18f7, 0xc246, 0x0717, 0x08e7, 0xcdb6, + 0xfd86, 0x38d7, 0x3727, 0xf276, 0x28c7, 0xed96, 0xe266, 0x2737, + 0x3c05, 0xf954, 0xf6a4, 0x33f5, 0xe944, 0x2c15, 0x23e5, 0xe6b4, + 0xd684, 0x13d5, 0x1c25, 0xd974, 0x03c5, 0xc694, 0xc964, 0x0c35, + 0xa904, 0x6c55, 0x63a5, 0xa6f4, 0x7c45, 0xb914, 0xb6e4, 0x73b5, + 0x4385, 0x86d4, 0x8924, 0x4c75, 0x96c4, 0x5395, 0x5c65, 0x9934, + 0x5604, 0x9355, 0x9ca5, 0x59f4, 0x8345, 0x4614, 0x49e4, 0x8cb5, + 0xbc85, 0x79d4, 0x7624, 0xb375, 0x69c4, 0xac95, 0xa365, 0x6634, + 0xc305, 0x0654, 0x09a4, 0xccf5, 0x1644, 0xd315, 0xdce5, 0x19b4, + 0x2984, 0xecd5, 0xe325, 0x2674, 0xfcc5, 0x3994, 0x3664, 0xf335, + }, + { + 0x0000, 0xfc04, 0xb80b, 0x440f, 0x3015, 0xcc11, 0x881e, 0x741a, + 0x602a, 0x9c2e, 0xd821, 0x2425, 0x503f, 0xac3b, 0xe834, 0x1430, + 0xc054, 0x3c50, 0x785f, 0x845b, 0xf041, 0x0c45, 0x484a, 0xb44e, + 0xa07e, 0x5c7a, 0x1875, 0xe471, 0x906b, 0x6c6f, 0x2860, 0xd464, + 0xc0ab, 0x3caf, 0x78a0, 0x84a4, 0xf0be, 0x0cba, 0x48b5, 0xb4b1, + 0xa081, 0x5c85, 0x188a, 0xe48e, 0x9094, 0x6c90, 0x289f, 0xd49b, + 0x00ff, 0xfcfb, 0xb8f4, 0x44f0, 0x30ea, 0xccee, 0x88e1, 0x74e5, + 0x60d5, 0x9cd1, 0xd8de, 0x24da, 0x50c0, 0xacc4, 0xe8cb, 0x14cf, + 0xc155, 0x3d51, 0x795e, 0x855a, 0xf140, 0x0d44, 0x494b, 0xb54f, + 0xa17f, 0x5d7b, 0x1974, 0xe570, 0x916a, 0x6d6e, 0x2961, 0xd565, + 0x0101, 0xfd05, 0xb90a, 0x450e, 0x3114, 0xcd10, 0x891f, 0x751b, + 0x612b, 0x9d2f, 0xd920, 0x2524, 0x513e, 0xad3a, 0xe935, 0x1531, + 0x01fe, 0xfdfa, 0xb9f5, 0x45f1, 0x31eb, 0xcdef, 0x89e0, 0x75e4, + 0x61d4, 0x9dd0, 0xd9df, 0x25db, 0x51c1, 0xadc5, 0xe9ca, 0x15ce, + 0xc1aa, 0x3dae, 0x79a1, 0x85a5, 0xf1bf, 0x0dbb, 0x49b4, 0xb5b0, + 0xa180, 0x5d84, 0x198b, 0xe58f, 0x9195, 0x6d91, 0x299e, 0xd59a, + 0xc2a9, 0x3ead, 0x7aa2, 0x86a6, 0xf2bc, 0x0eb8, 0x4ab7, 0xb6b3, + 0xa283, 0x5e87, 0x1a88, 0xe68c, 0x9296, 0x6e92, 0x2a9d, 0xd699, + 0x02fd, 0xfef9, 0xbaf6, 0x46f2, 0x32e8, 0xceec, 0x8ae3, 0x76e7, + 0x62d7, 0x9ed3, 0xdadc, 0x26d8, 0x52c2, 0xaec6, 0xeac9, 0x16cd, + 0x0202, 0xfe06, 0xba09, 0x460d, 0x3217, 0xce13, 0x8a1c, 0x7618, + 0x6228, 0x9e2c, 0xda23, 0x2627, 0x523d, 0xae39, 0xea36, 0x1632, + 0xc256, 0x3e52, 0x7a5d, 0x8659, 0xf243, 0x0e47, 0x4a48, 0xb64c, + 0xa27c, 0x5e78, 0x1a77, 0xe673, 0x9269, 0x6e6d, 0x2a62, 0xd666, + 0x03fc, 0xfff8, 0xbbf7, 0x47f3, 0x33e9, 0xcfed, 0x8be2, 0x77e6, + 0x63d6, 0x9fd2, 0xdbdd, 0x27d9, 0x53c3, 0xafc7, 0xebc8, 0x17cc, + 0xc3a8, 0x3fac, 0x7ba3, 0x87a7, 0xf3bd, 0x0fb9, 0x4bb6, 0xb7b2, + 0xa382, 0x5f86, 0x1b89, 0xe78d, 0x9397, 0x6f93, 0x2b9c, 0xd798, + 0xc357, 0x3f53, 0x7b5c, 0x8758, 0xf342, 0x0f46, 0x4b49, 0xb74d, + 0xa37d, 0x5f79, 0x1b76, 0xe772, 0x9368, 0x6f6c, 0x2b63, 0xd767, + 0x0303, 0xff07, 0xbb08, 0x470c, 0x3316, 0xcf12, 0x8b1d, 0x7719, + 0x6329, 0x9f2d, 0xdb22, 0x2726, 0x533c, 0xaf38, 0xeb37, 0x1733, + }, + { + 0x0000, 0xc3fd, 0xc7f9, 0x0404, 0xcff1, 0x0c0c, 0x0808, 0xcbf5, + 0xdfe1, 0x1c1c, 0x1818, 0xdbe5, 0x1010, 0xd3ed, 0xd7e9, 0x1414, + 0xffc1, 0x3c3c, 0x3838, 0xfbc5, 0x3030, 0xf3cd, 0xf7c9, 0x3434, + 0x2020, 0xe3dd, 0xe7d9, 0x2424, 0xefd1, 0x2c2c, 0x2828, 0xebd5, + 0xbf81, 0x7c7c, 0x7878, 0xbb85, 0x7070, 0xb38d, 0xb789, 0x7474, + 0x6060, 0xa39d, 0xa799, 0x6464, 0xaf91, 0x6c6c, 0x6868, 0xab95, + 0x4040, 0x83bd, 0x87b9, 0x4444, 0x8fb1, 0x4c4c, 0x4848, 0x8bb5, + 0x9fa1, 0x5c5c, 0x5858, 0x9ba5, 0x5050, 0x93ad, 0x97a9, 0x5454, + 0x3f01, 0xfcfc, 0xf8f8, 0x3b05, 0xf0f0, 0x330d, 0x3709, 0xf4f4, + 0xe0e0, 0x231d, 0x2719, 0xe4e4, 0x2f11, 0xecec, 0xe8e8, 0x2b15, + 0xc0c0, 0x033d, 0x0739, 0xc4c4, 0x0f31, 0xcccc, 0xc8c8, 0x0b35, + 0x1f21, 0xdcdc, 0xd8d8, 0x1b25, 0xd0d0, 0x132d, 0x1729, 0xd4d4, + 0x8080, 0x437d, 0x4779, 0x8484, 0x4f71, 0x8c8c, 0x8888, 0x4b75, + 0x5f61, 0x9c9c, 0x9898, 0x5b65, 0x9090, 0x536d, 0x5769, 0x9494, + 0x7f41, 0xbcbc, 0xb8b8, 0x7b45, 0xb0b0, 0x734d, 0x7749, 0xb4b4, + 0xa0a0, 0x635d, 0x6759, 0xa4a4, 0x6f51, 0xacac, 0xa8a8, 0x6b55, + 0x7e02, 0xbdff, 0xb9fb, 0x7a06, 0xb1f3, 0x720e, 0x760a, 0xb5f7, + 0xa1e3, 0x621e, 0x661a, 0xa5e7, 0x6e12, 0xadef, 0xa9eb, 0x6a16, + 0x81c3, 0x423e, 0x463a, 0x85c7, 0x4e32, 0x8dcf, 0x89cb, 0x4a36, + 0x5e22, 0x9ddf, 0x99db, 0x5a26, 0x91d3, 0x522e, 0x562a, 0x95d7, + 0xc183, 0x027e, 0x067a, 0xc587, 0x0e72, 0xcd8f, 0xc98b, 0x0a76, + 0x1e62, 0xdd9f, 0xd99b, 0x1a66, 0xd193, 0x126e, 0x166a, 0xd597, + 0x3e42, 0xfdbf, 0xf9bb, 0x3a46, 0xf1b3, 0x324e, 0x364a, 0xf5b7, + 0xe1a3, 0x225e, 0x265a, 0xe5a7, 0x2e52, 0xedaf, 0xe9ab, 0x2a56, + 0x4103, 0x82fe, 0x86fa, 0x4507, 0x8ef2, 0x4d0f, 0x490b, 0x8af6, + 0x9ee2, 0x5d1f, 0x591b, 0x9ae6, 0x5113, 0x92ee, 0x96ea, 0x5517, + 0xbec2, 0x7d3f, 0x793b, 0xbac6, 0x7133, 0xb2ce, 0xb6ca, 0x7537, + 0x6123, 0xa2de, 0xa6da, 0x6527, 0xaed2, 0x6d2f, 0x692b, 0xaad6, + 0xfe82, 0x3d7f, 0x397b, 0xfa86, 0x3173, 0xf28e, 0xf68a, 0x3577, + 0x2163, 0xe29e, 0xe69a, 0x2567, 0xee92, 0x2d6f, 0x296b, 0xea96, + 0x0143, 0xc2be, 0xc6ba, 0x0547, 0xceb2, 0x0d4f, 0x094b, 0xcab6, + 0xdea2, 0x1d5f, 0x195b, 0xdaa6, 0x1153, 0xd2ae, 0xd6aa, 0x1557, + }, + { + 0x0000, 0x8102, 0x4207, 0xc305, 0x840e, 0x050c, 0xc609, 0x470b, + 0x481f, 0xc91d, 0x0a18, 0x8b1a, 0xcc11, 0x4d13, 0x8e16, 0x0f14, + 0x903e, 0x113c, 0xd239, 0x533b, 0x1430, 0x9532, 0x5637, 0xd735, + 0xd821, 0x5923, 0x9a26, 0x1b24, 0x5c2f, 0xdd2d, 0x1e28, 0x9f2a, + 0x607f, 0xe17d, 0x2278, 0xa37a, 0xe471, 0x6573, 0xa676, 0x2774, + 0x2860, 0xa962, 0x6a67, 0xeb65, 0xac6e, 0x2d6c, 0xee69, 0x6f6b, + 0xf041, 0x7143, 0xb246, 0x3344, 0x744f, 0xf54d, 0x3648, 0xb74a, + 0xb85e, 0x395c, 0xfa59, 0x7b5b, 0x3c50, 0xbd52, 0x7e57, 0xff55, + 0xc0fe, 0x41fc, 0x82f9, 0x03fb, 0x44f0, 0xc5f2, 0x06f7, 0x87f5, + 0x88e1, 0x09e3, 0xcae6, 0x4be4, 0x0cef, 0x8ded, 0x4ee8, 0xcfea, + 0x50c0, 0xd1c2, 0x12c7, 0x93c5, 0xd4ce, 0x55cc, 0x96c9, 0x17cb, + 0x18df, 0x99dd, 0x5ad8, 0xdbda, 0x9cd1, 0x1dd3, 0xded6, 0x5fd4, + 0xa081, 0x2183, 0xe286, 0x6384, 0x248f, 0xa58d, 0x6688, 0xe78a, + 0xe89e, 0x699c, 0xaa99, 0x2b9b, 0x6c90, 0xed92, 0x2e97, 0xaf95, + 0x30bf, 0xb1bd, 0x72b8, 0xf3ba, 0xb4b1, 0x35b3, 0xf6b6, 0x77b4, + 0x78a0, 0xf9a2, 0x3aa7, 0xbba5, 0xfcae, 0x7dac, 0xbea9, 0x3fab, + 0xc1ff, 0x40fd, 0x83f8, 0x02fa, 0x45f1, 0xc4f3, 0x07f6, 0x86f4, + 0x89e0, 0x08e2, 0xcbe7, 0x4ae5, 0x0dee, 0x8cec, 0x4fe9, 0xceeb, + 0x51c1, 0xd0c3, 0x13c6, 0x92c4, 0xd5cf, 0x54cd, 0x97c8, 0x16ca, + 0x19de, 0x98dc, 0x5bd9, 0xdadb, 0x9dd0, 0x1cd2, 0xdfd7, 0x5ed5, + 0xa180, 0x2082, 0xe387, 0x6285, 0x258e, 0xa48c, 0x6789, 0xe68b, + 0xe99f, 0x689d, 0xab98, 0x2a9a, 0x6d91, 0xec93, 0x2f96, 0xae94, + 0x31be, 0xb0bc, 0x73b9, 0xf2bb, 0xb5b0, 0x34b2, 0xf7b7, 0x76b5, + 0x79a1, 0xf8a3, 0x3ba6, 0xbaa4, 0xfdaf, 0x7cad, 0xbfa8, 0x3eaa, + 0x0101, 0x8003, 0x4306, 0xc204, 0x850f, 0x040d, 0xc708, 0x460a, + 0x491e, 0xc81c, 0x0b19, 0x8a1b, 0xcd10, 0x4c12, 0x8f17, 0x0e15, + 0x913f, 0x103d, 0xd338, 0x523a, 0x1531, 0x9433, 0x5736, 0xd634, + 0xd920, 0x5822, 0x9b27, 0x1a25, 0x5d2e, 0xdc2c, 0x1f29, 0x9e2b, + 0x617e, 0xe07c, 0x2379, 0xa27b, 0xe570, 0x6472, 0xa777, 0x2675, + 0x2961, 0xa863, 0x6b66, 0xea64, 0xad6f, 0x2c6d, 0xef68, 0x6e6a, + 0xf140, 0x7042, 0xb347, 0x3245, 0x754e, 0xf44c, 0x3749, 0xb64b, + 0xb95f, 0x385d, 0xfb58, 0x7a5a, 0x3d51, 0xbc53, 0x7f56, 0xfe54, + }, + { + 0x0000, 0xc100, 0xc203, 0x0303, 0xc405, 0x0505, 0x0606, 0xc706, + 0xc809, 0x0909, 0x0a0a, 0xcb0a, 0x0c0c, 0xcd0c, 0xce0f, 0x0f0f, + 0xd011, 0x1111, 0x1212, 0xd312, 0x1414, 0xd514, 0xd617, 0x1717, + 0x1818, 0xd918, 0xda1b, 0x1b1b, 0xdc1d, 0x1d1d, 0x1e1e, 0xdf1e, + 0xe021, 0x2121, 0x2222, 0xe322, 0x2424, 0xe524, 0xe627, 0x2727, + 0x2828, 0xe928, 0xea2b, 0x2b2b, 0xec2d, 0x2d2d, 0x2e2e, 0xef2e, + 0x3030, 0xf130, 0xf233, 0x3333, 0xf435, 0x3535, 0x3636, 0xf736, + 0xf839, 0x3939, 0x3a3a, 0xfb3a, 0x3c3c, 0xfd3c, 0xfe3f, 0x3f3f, + 0x8041, 0x4141, 0x4242, 0x8342, 0x4444, 0x8544, 0x8647, 0x4747, + 0x4848, 0x8948, 0x8a4b, 0x4b4b, 0x8c4d, 0x4d4d, 0x4e4e, 0x8f4e, + 0x5050, 0x9150, 0x9253, 0x5353, 0x9455, 0x5555, 0x5656, 0x9756, + 0x9859, 0x5959, 0x5a5a, 0x9b5a, 0x5c5c, 0x9d5c, 0x9e5f, 0x5f5f, + 0x6060, 0xa160, 0xa263, 0x6363, 0xa465, 0x6565, 0x6666, 0xa766, + 0xa869, 0x6969, 0x6a6a, 0xab6a, 0x6c6c, 0xad6c, 0xae6f, 0x6f6f, + 0xb071, 0x7171, 0x7272, 0xb372, 0x7474, 0xb574, 0xb677, 0x7777, + 0x7878, 0xb978, 0xba7b, 0x7b7b, 0xbc7d, 0x7d7d, 0x7e7e, 0xbf7e, + 0x4081, 0x8181, 0x8282, 0x4382, 0x8484, 0x4584, 0x4687, 0x8787, + 0x8888, 0x4988, 0x4a8b, 0x8b8b, 0x4c8d, 0x8d8d, 0x8e8e, 0x4f8e, + 0x9090, 0x5190, 0x5293, 0x9393, 0x5495, 0x9595, 0x9696, 0x5796, + 0x5899, 0x9999, 0x9a9a, 0x5b9a, 0x9c9c, 0x5d9c, 0x5e9f, 0x9f9f, + 0xa0a0, 0x61a0, 0x62a3, 0xa3a3, 0x64a5, 0xa5a5, 0xa6a6, 0x67a6, + 0x68a9, 0xa9a9, 0xaaaa, 0x6baa, 0xacac, 0x6dac, 0x6eaf, 0xafaf, + 0x70b1, 0xb1b1, 0xb2b2, 0x73b2, 0xb4b4, 0x75b4, 0x76b7, 0xb7b7, + 0xb8b8, 0x79b8, 0x7abb, 0xbbbb, 0x7cbd, 0xbdbd, 0xbebe, 0x7fbe, + 0xc0c0, 0x01c0, 0x02c3, 0xc3c3, 0x04c5, 0xc5c5, 0xc6c6, 0x07c6, + 0x08c9, 0xc9c9, 0xcaca, 0x0bca, 0xcccc, 0x0dcc, 0x0ecf, 0xcfcf, + 0x10d1, 0xd1d1, 0xd2d2, 0x13d2, 0xd4d4, 0x15d4, 0x16d7, 0xd7d7, + 0xd8d8, 0x19d8, 0x1adb, 0xdbdb, 0x1cdd, 0xdddd, 0xdede, 0x1fde, + 0x20e1, 0xe1e1, 0xe2e2, 0x23e2, 0xe4e4, 0x25e4, 0x26e7, 0xe7e7, + 0xe8e8, 0x29e8, 0x2aeb, 0xebeb, 0x2ced, 0xeded, 0xeeee, 0x2fee, + 0xf0f0, 0x31f0, 0x32f3, 0xf3f3, 0x34f5, 0xf5f5, 0xf6f6, 0x37f6, + 0x38f9, 0xf9f9, 0xfafa, 0x3bfa, 0xfcfc, 0x3dfc, 0x3eff, 0xffff, + }, + { + 0x0000, 0x00c1, 0x0182, 0x0143, 0x0304, 0x03c5, 0x0286, 0x0247, + 0x0608, 0x06c9, 0x078a, 0x074b, 0x050c, 0x05cd, 0x048e, 0x044f, + 0x0c10, 0x0cd1, 0x0d92, 0x0d53, 0x0f14, 0x0fd5, 0x0e96, 0x0e57, + 0x0a18, 0x0ad9, 0x0b9a, 0x0b5b, 0x091c, 0x09dd, 0x089e, 0x085f, + 0x1820, 0x18e1, 0x19a2, 0x1963, 0x1b24, 0x1be5, 0x1aa6, 0x1a67, + 0x1e28, 0x1ee9, 0x1faa, 0x1f6b, 0x1d2c, 0x1ded, 0x1cae, 0x1c6f, + 0x1430, 0x14f1, 0x15b2, 0x1573, 0x1734, 0x17f5, 0x16b6, 0x1677, + 0x1238, 0x12f9, 0x13ba, 0x137b, 0x113c, 0x11fd, 0x10be, 0x107f, + 0x3040, 0x3081, 0x31c2, 0x3103, 0x3344, 0x3385, 0x32c6, 0x3207, + 0x3648, 0x3689, 0x37ca, 0x370b, 0x354c, 0x358d, 0x34ce, 0x340f, + 0x3c50, 0x3c91, 0x3dd2, 0x3d13, 0x3f54, 0x3f95, 0x3ed6, 0x3e17, + 0x3a58, 0x3a99, 0x3bda, 0x3b1b, 0x395c, 0x399d, 0x38de, 0x381f, + 0x2860, 0x28a1, 0x29e2, 0x2923, 0x2b64, 0x2ba5, 0x2ae6, 0x2a27, + 0x2e68, 0x2ea9, 0x2fea, 0x2f2b, 0x2d6c, 0x2dad, 0x2cee, 0x2c2f, + 0x2470, 0x24b1, 0x25f2, 0x2533, 0x2774, 0x27b5, 0x26f6, 0x2637, + 0x2278, 0x22b9, 0x23fa, 0x233b, 0x217c, 0x21bd, 0x20fe, 0x203f, + 0x6080, 0x6041, 0x6102, 0x61c3, 0x6384, 0x6345, 0x6206, 0x62c7, + 0x6688, 0x6649, 0x670a, 0x67cb, 0x658c, 0x654d, 0x640e, 0x64cf, + 0x6c90, 0x6c51, 0x6d12, 0x6dd3, 0x6f94, 0x6f55, 0x6e16, 0x6ed7, + 0x6a98, 0x6a59, 0x6b1a, 0x6bdb, 0x699c, 0x695d, 0x681e, 0x68df, + 0x78a0, 0x7861, 0x7922, 0x79e3, 0x7ba4, 0x7b65, 0x7a26, 0x7ae7, + 0x7ea8, 0x7e69, 0x7f2a, 0x7feb, 0x7dac, 0x7d6d, 0x7c2e, 0x7cef, + 0x74b0, 0x7471, 0x7532, 0x75f3, 0x77b4, 0x7775, 0x7636, 0x76f7, + 0x72b8, 0x7279, 0x733a, 0x73fb, 0x71bc, 0x717d, 0x703e, 0x70ff, + 0x50c0, 0x5001, 0x5142, 0x5183, 0x53c4, 0x5305, 0x5246, 0x5287, + 0x56c8, 0x5609, 0x574a, 0x578b, 0x55cc, 0x550d, 0x544e, 0x548f, + 0x5cd0, 0x5c11, 0x5d52, 0x5d93, 0x5fd4, 0x5f15, 0x5e56, 0x5e97, + 0x5ad8, 0x5a19, 0x5b5a, 0x5b9b, 0x59dc, 0x591d, 0x585e, 0x589f, + 0x48e0, 0x4821, 0x4962, 0x49a3, 0x4be4, 0x4b25, 0x4a66, 0x4aa7, + 0x4ee8, 0x4e29, 0x4f6a, 0x4fab, 0x4dec, 0x4d2d, 0x4c6e, 0x4caf, + 0x44f0, 0x4431, 0x4572, 0x45b3, 0x47f4, 0x4735, 0x4676, 0x46b7, + 0x42f8, 0x4239, 0x437a, 0x43bb, 0x41fc, 0x413d, 0x407e, 0x40bf, + }, + { + 0x0000, 0x90c1, 0x6181, 0xf140, 0xc302, 0x53c3, 0xa283, 0x3242, + 0xc607, 0x56c6, 0xa786, 0x3747, 0x0505, 0x95c4, 0x6484, 0xf445, + 0xcc0d, 0x5ccc, 0xad8c, 0x3d4d, 0x0f0f, 0x9fce, 0x6e8e, 0xfe4f, + 0x0a0a, 0x9acb, 0x6b8b, 0xfb4a, 0xc908, 0x59c9, 0xa889, 0x3848, + 0xd819, 0x48d8, 0xb998, 0x2959, 0x1b1b, 0x8bda, 0x7a9a, 0xea5b, + 0x1e1e, 0x8edf, 0x7f9f, 0xef5e, 0xdd1c, 0x4ddd, 0xbc9d, 0x2c5c, + 0x1414, 0x84d5, 0x7595, 0xe554, 0xd716, 0x47d7, 0xb697, 0x2656, + 0xd213, 0x42d2, 0xb392, 0x2353, 0x1111, 0x81d0, 0x7090, 0xe051, + 0xf031, 0x60f0, 0x91b0, 0x0171, 0x3333, 0xa3f2, 0x52b2, 0xc273, + 0x3636, 0xa6f7, 0x57b7, 0xc776, 0xf534, 0x65f5, 0x94b5, 0x0474, + 0x3c3c, 0xacfd, 0x5dbd, 0xcd7c, 0xff3e, 0x6fff, 0x9ebf, 0x0e7e, + 0xfa3b, 0x6afa, 0x9bba, 0x0b7b, 0x3939, 0xa9f8, 0x58b8, 0xc879, + 0x2828, 0xb8e9, 0x49a9, 0xd968, 0xeb2a, 0x7beb, 0x8aab, 0x1a6a, + 0xee2f, 0x7eee, 0x8fae, 0x1f6f, 0x2d2d, 0xbdec, 0x4cac, 0xdc6d, + 0xe425, 0x74e4, 0x85a4, 0x1565, 0x2727, 0xb7e6, 0x46a6, 0xd667, + 0x2222, 0xb2e3, 0x43a3, 0xd362, 0xe120, 0x71e1, 0x80a1, 0x1060, + 0xa061, 0x30a0, 0xc1e0, 0x5121, 0x6363, 0xf3a2, 0x02e2, 0x9223, + 0x6666, 0xf6a7, 0x07e7, 0x9726, 0xa564, 0x35a5, 0xc4e5, 0x5424, + 0x6c6c, 0xfcad, 0x0ded, 0x9d2c, 0xaf6e, 0x3faf, 0xceef, 0x5e2e, + 0xaa6b, 0x3aaa, 0xcbea, 0x5b2b, 0x6969, 0xf9a8, 0x08e8, 0x9829, + 0x7878, 0xe8b9, 0x19f9, 0x8938, 0xbb7a, 0x2bbb, 0xdafb, 0x4a3a, + 0xbe7f, 0x2ebe, 0xdffe, 0x4f3f, 0x7d7d, 0xedbc, 0x1cfc, 0x8c3d, + 0xb475, 0x24b4, 0xd5f4, 0x4535, 0x7777, 0xe7b6, 0x16f6, 0x8637, + 0x7272, 0xe2b3, 0x13f3, 0x8332, 0xb170, 0x21b1, 0xd0f1, 0x4030, + 0x5050, 0xc091, 0x31d1, 0xa110, 0x9352, 0x0393, 0xf2d3, 0x6212, + 0x9657, 0x0696, 0xf7d6, 0x6717, 0x5555, 0xc594, 0x34d4, 0xa415, + 0x9c5d, 0x0c9c, 0xfddc, 0x6d1d, 0x5f5f, 0xcf9e, 0x3ede, 0xae1f, + 0x5a5a, 0xca9b, 0x3bdb, 0xab1a, 0x9958, 0x0999, 0xf8d9, 0x6818, + 0x8849, 0x1888, 0xe9c8, 0x7909, 0x4b4b, 0xdb8a, 0x2aca, 0xba0b, + 0x4e4e, 0xde8f, 0x2fcf, 0xbf0e, 0x8d4c, 0x1d8d, 0xeccd, 0x7c0c, + 0x4444, 0xd485, 0x25c5, 0xb504, 0x8746, 0x1787, 0xe6c7, 0x7606, + 0x8243, 0x1282, 0xe3c2, 0x7303, 0x4141, 0xd180, 0x20c0, 0xb001, + }, +}; diff --git a/ext/digest/crc16_usb/crc16_usb.c b/ext/digest/crc16_usb/crc16_usb.c index b6561a8..0219aa5 100644 --- a/ext/digest/crc16_usb/crc16_usb.c +++ b/ext/digest/crc16_usb/crc16_usb.c @@ -15,54 +15,39 @@ */ #include "crc16_usb.h" - -/** - * Static table used for the table_driven implementation. - */ -static const crc16_t crc_table[256] = { - 0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241, - 0xc601, 0x06c0, 0x0780, 0xc741, 0x0500, 0xc5c1, 0xc481, 0x0440, - 0xcc01, 0x0cc0, 0x0d80, 0xcd41, 0x0f00, 0xcfc1, 0xce81, 0x0e40, - 0x0a00, 0xcac1, 0xcb81, 0x0b40, 0xc901, 0x09c0, 0x0880, 0xc841, - 0xd801, 0x18c0, 0x1980, 0xd941, 0x1b00, 0xdbc1, 0xda81, 0x1a40, - 0x1e00, 0xdec1, 0xdf81, 0x1f40, 0xdd01, 0x1dc0, 0x1c80, 0xdc41, - 0x1400, 0xd4c1, 0xd581, 0x1540, 0xd701, 0x17c0, 0x1680, 0xd641, - 0xd201, 0x12c0, 0x1380, 0xd341, 0x1100, 0xd1c1, 0xd081, 0x1040, - 0xf001, 0x30c0, 0x3180, 0xf141, 0x3300, 0xf3c1, 0xf281, 0x3240, - 0x3600, 0xf6c1, 0xf781, 0x3740, 0xf501, 0x35c0, 0x3480, 0xf441, - 0x3c00, 0xfcc1, 0xfd81, 0x3d40, 0xff01, 0x3fc0, 0x3e80, 0xfe41, - 0xfa01, 0x3ac0, 0x3b80, 0xfb41, 0x3900, 0xf9c1, 0xf881, 0x3840, - 0x2800, 0xe8c1, 0xe981, 0x2940, 0xeb01, 0x2bc0, 0x2a80, 0xea41, - 0xee01, 0x2ec0, 0x2f80, 0xef41, 0x2d00, 0xedc1, 0xec81, 0x2c40, - 0xe401, 0x24c0, 0x2580, 0xe541, 0x2700, 0xe7c1, 0xe681, 0x2640, - 0x2200, 0xe2c1, 0xe381, 0x2340, 0xe101, 0x21c0, 0x2080, 0xe041, - 0xa001, 0x60c0, 0x6180, 0xa141, 0x6300, 0xa3c1, 0xa281, 0x6240, - 0x6600, 0xa6c1, 0xa781, 0x6740, 0xa501, 0x65c0, 0x6480, 0xa441, - 0x6c00, 0xacc1, 0xad81, 0x6d40, 0xaf01, 0x6fc0, 0x6e80, 0xae41, - 0xaa01, 0x6ac0, 0x6b80, 0xab41, 0x6900, 0xa9c1, 0xa881, 0x6840, - 0x7800, 0xb8c1, 0xb981, 0x7940, 0xbb01, 0x7bc0, 0x7a80, 0xba41, - 0xbe01, 0x7ec0, 0x7f80, 0xbf41, 0x7d00, 0xbdc1, 0xbc81, 0x7c40, - 0xb401, 0x74c0, 0x7580, 0xb541, 0x7700, 0xb7c1, 0xb681, 0x7640, - 0x7200, 0xb2c1, 0xb381, 0x7340, 0xb101, 0x71c0, 0x7080, 0xb041, - 0x5000, 0x90c1, 0x9181, 0x5140, 0x9301, 0x53c0, 0x5280, 0x9241, - 0x9601, 0x56c0, 0x5780, 0x9741, 0x5500, 0x95c1, 0x9481, 0x5440, - 0x9c01, 0x5cc0, 0x5d80, 0x9d41, 0x5f00, 0x9fc1, 0x9e81, 0x5e40, - 0x5a00, 0x9ac1, 0x9b81, 0x5b40, 0x9901, 0x59c0, 0x5880, 0x9841, - 0x8801, 0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81, 0x4a40, - 0x4e00, 0x8ec1, 0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41, - 0x4400, 0x84c1, 0x8581, 0x4540, 0x8701, 0x47c0, 0x4680, 0x8641, - 0x8201, 0x42c0, 0x4380, 0x8341, 0x4100, 0x81c1, 0x8081, 0x4040 -}; +#include "crc16_usb_table.h" crc16_t crc16_usb_update(crc16_t crc, const void *data, size_t data_len) { const unsigned char *d = (const unsigned char *)data; unsigned int tbl_idx; + for (; data_len >= SLICE_SIZE; data_len -= SLICE_SIZE) + { + crc = crc16_usb_table[15][d[ 0] ^ ((crc >> 0) & 0xff)] ^ + crc16_usb_table[14][d[ 1] ^ ((crc >> 8) & 0xff)] ^ + crc16_usb_table[13][d[ 2] ] ^ + crc16_usb_table[12][d[ 3] ] ^ + crc16_usb_table[11][d[ 4] ] ^ + crc16_usb_table[10][d[ 5] ] ^ + crc16_usb_table[ 9][d[ 6] ] ^ + crc16_usb_table[ 8][d[ 7] ] ^ + crc16_usb_table[ 7][d[ 8] ] ^ + crc16_usb_table[ 6][d[ 9] ] ^ + crc16_usb_table[ 5][d[10] ] ^ + crc16_usb_table[ 4][d[11] ] ^ + crc16_usb_table[ 3][d[12] ] ^ + crc16_usb_table[ 2][d[13] ] ^ + crc16_usb_table[ 1][d[14] ] ^ + crc16_usb_table[ 0][d[15] ]; + crc &= 0xffff; + d += SLICE_SIZE; + } + while (data_len--) { tbl_idx = (crc ^ *d) & 0xff; - crc = (crc_table[tbl_idx] ^ (crc >> 8)) & 0xffff; + crc = (crc16_usb_table[0][tbl_idx] ^ (crc >> 8)) & 0xffff; d++; } diff --git a/ext/digest/crc16_usb/crc16_usb_table.h b/ext/digest/crc16_usb/crc16_usb_table.h new file mode 100644 index 0000000..9e81b39 --- /dev/null +++ b/ext/digest/crc16_usb/crc16_usb_table.h @@ -0,0 +1,558 @@ +/* + * bitwidth: 16 + * generator polynomial: 0x8005 + * input bit direction: REFLECT + * slice bytes per iteration: 16 + * slide bits per table: 8 + * + * Generated by: gentable.rb of digest-crc + */ + +#define SLICE_SIZE 16 + +static const uint16_t crc16_usb_table[SLICE_SIZE][256] = { + { + 0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241, + 0xc601, 0x06c0, 0x0780, 0xc741, 0x0500, 0xc5c1, 0xc481, 0x0440, + 0xcc01, 0x0cc0, 0x0d80, 0xcd41, 0x0f00, 0xcfc1, 0xce81, 0x0e40, + 0x0a00, 0xcac1, 0xcb81, 0x0b40, 0xc901, 0x09c0, 0x0880, 0xc841, + 0xd801, 0x18c0, 0x1980, 0xd941, 0x1b00, 0xdbc1, 0xda81, 0x1a40, + 0x1e00, 0xdec1, 0xdf81, 0x1f40, 0xdd01, 0x1dc0, 0x1c80, 0xdc41, + 0x1400, 0xd4c1, 0xd581, 0x1540, 0xd701, 0x17c0, 0x1680, 0xd641, + 0xd201, 0x12c0, 0x1380, 0xd341, 0x1100, 0xd1c1, 0xd081, 0x1040, + 0xf001, 0x30c0, 0x3180, 0xf141, 0x3300, 0xf3c1, 0xf281, 0x3240, + 0x3600, 0xf6c1, 0xf781, 0x3740, 0xf501, 0x35c0, 0x3480, 0xf441, + 0x3c00, 0xfcc1, 0xfd81, 0x3d40, 0xff01, 0x3fc0, 0x3e80, 0xfe41, + 0xfa01, 0x3ac0, 0x3b80, 0xfb41, 0x3900, 0xf9c1, 0xf881, 0x3840, + 0x2800, 0xe8c1, 0xe981, 0x2940, 0xeb01, 0x2bc0, 0x2a80, 0xea41, + 0xee01, 0x2ec0, 0x2f80, 0xef41, 0x2d00, 0xedc1, 0xec81, 0x2c40, + 0xe401, 0x24c0, 0x2580, 0xe541, 0x2700, 0xe7c1, 0xe681, 0x2640, + 0x2200, 0xe2c1, 0xe381, 0x2340, 0xe101, 0x21c0, 0x2080, 0xe041, + 0xa001, 0x60c0, 0x6180, 0xa141, 0x6300, 0xa3c1, 0xa281, 0x6240, + 0x6600, 0xa6c1, 0xa781, 0x6740, 0xa501, 0x65c0, 0x6480, 0xa441, + 0x6c00, 0xacc1, 0xad81, 0x6d40, 0xaf01, 0x6fc0, 0x6e80, 0xae41, + 0xaa01, 0x6ac0, 0x6b80, 0xab41, 0x6900, 0xa9c1, 0xa881, 0x6840, + 0x7800, 0xb8c1, 0xb981, 0x7940, 0xbb01, 0x7bc0, 0x7a80, 0xba41, + 0xbe01, 0x7ec0, 0x7f80, 0xbf41, 0x7d00, 0xbdc1, 0xbc81, 0x7c40, + 0xb401, 0x74c0, 0x7580, 0xb541, 0x7700, 0xb7c1, 0xb681, 0x7640, + 0x7200, 0xb2c1, 0xb381, 0x7340, 0xb101, 0x71c0, 0x7080, 0xb041, + 0x5000, 0x90c1, 0x9181, 0x5140, 0x9301, 0x53c0, 0x5280, 0x9241, + 0x9601, 0x56c0, 0x5780, 0x9741, 0x5500, 0x95c1, 0x9481, 0x5440, + 0x9c01, 0x5cc0, 0x5d80, 0x9d41, 0x5f00, 0x9fc1, 0x9e81, 0x5e40, + 0x5a00, 0x9ac1, 0x9b81, 0x5b40, 0x9901, 0x59c0, 0x5880, 0x9841, + 0x8801, 0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81, 0x4a40, + 0x4e00, 0x8ec1, 0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41, + 0x4400, 0x84c1, 0x8581, 0x4540, 0x8701, 0x47c0, 0x4680, 0x8641, + 0x8201, 0x42c0, 0x4380, 0x8341, 0x4100, 0x81c1, 0x8081, 0x4040, + }, + { + 0x0000, 0x9001, 0x6001, 0xf000, 0xc002, 0x5003, 0xa003, 0x3002, + 0xc007, 0x5006, 0xa006, 0x3007, 0x0005, 0x9004, 0x6004, 0xf005, + 0xc00d, 0x500c, 0xa00c, 0x300d, 0x000f, 0x900e, 0x600e, 0xf00f, + 0x000a, 0x900b, 0x600b, 0xf00a, 0xc008, 0x5009, 0xa009, 0x3008, + 0xc019, 0x5018, 0xa018, 0x3019, 0x001b, 0x901a, 0x601a, 0xf01b, + 0x001e, 0x901f, 0x601f, 0xf01e, 0xc01c, 0x501d, 0xa01d, 0x301c, + 0x0014, 0x9015, 0x6015, 0xf014, 0xc016, 0x5017, 0xa017, 0x3016, + 0xc013, 0x5012, 0xa012, 0x3013, 0x0011, 0x9010, 0x6010, 0xf011, + 0xc031, 0x5030, 0xa030, 0x3031, 0x0033, 0x9032, 0x6032, 0xf033, + 0x0036, 0x9037, 0x6037, 0xf036, 0xc034, 0x5035, 0xa035, 0x3034, + 0x003c, 0x903d, 0x603d, 0xf03c, 0xc03e, 0x503f, 0xa03f, 0x303e, + 0xc03b, 0x503a, 0xa03a, 0x303b, 0x0039, 0x9038, 0x6038, 0xf039, + 0x0028, 0x9029, 0x6029, 0xf028, 0xc02a, 0x502b, 0xa02b, 0x302a, + 0xc02f, 0x502e, 0xa02e, 0x302f, 0x002d, 0x902c, 0x602c, 0xf02d, + 0xc025, 0x5024, 0xa024, 0x3025, 0x0027, 0x9026, 0x6026, 0xf027, + 0x0022, 0x9023, 0x6023, 0xf022, 0xc020, 0x5021, 0xa021, 0x3020, + 0xc061, 0x5060, 0xa060, 0x3061, 0x0063, 0x9062, 0x6062, 0xf063, + 0x0066, 0x9067, 0x6067, 0xf066, 0xc064, 0x5065, 0xa065, 0x3064, + 0x006c, 0x906d, 0x606d, 0xf06c, 0xc06e, 0x506f, 0xa06f, 0x306e, + 0xc06b, 0x506a, 0xa06a, 0x306b, 0x0069, 0x9068, 0x6068, 0xf069, + 0x0078, 0x9079, 0x6079, 0xf078, 0xc07a, 0x507b, 0xa07b, 0x307a, + 0xc07f, 0x507e, 0xa07e, 0x307f, 0x007d, 0x907c, 0x607c, 0xf07d, + 0xc075, 0x5074, 0xa074, 0x3075, 0x0077, 0x9076, 0x6076, 0xf077, + 0x0072, 0x9073, 0x6073, 0xf072, 0xc070, 0x5071, 0xa071, 0x3070, + 0x0050, 0x9051, 0x6051, 0xf050, 0xc052, 0x5053, 0xa053, 0x3052, + 0xc057, 0x5056, 0xa056, 0x3057, 0x0055, 0x9054, 0x6054, 0xf055, + 0xc05d, 0x505c, 0xa05c, 0x305d, 0x005f, 0x905e, 0x605e, 0xf05f, + 0x005a, 0x905b, 0x605b, 0xf05a, 0xc058, 0x5059, 0xa059, 0x3058, + 0xc049, 0x5048, 0xa048, 0x3049, 0x004b, 0x904a, 0x604a, 0xf04b, + 0x004e, 0x904f, 0x604f, 0xf04e, 0xc04c, 0x504d, 0xa04d, 0x304c, + 0x0044, 0x9045, 0x6045, 0xf044, 0xc046, 0x5047, 0xa047, 0x3046, + 0xc043, 0x5042, 0xa042, 0x3043, 0x0041, 0x9040, 0x6040, 0xf041, + }, + { + 0x0000, 0xc051, 0xc0a1, 0x00f0, 0xc141, 0x0110, 0x01e0, 0xc1b1, + 0xc281, 0x02d0, 0x0220, 0xc271, 0x03c0, 0xc391, 0xc361, 0x0330, + 0xc501, 0x0550, 0x05a0, 0xc5f1, 0x0440, 0xc411, 0xc4e1, 0x04b0, + 0x0780, 0xc7d1, 0xc721, 0x0770, 0xc6c1, 0x0690, 0x0660, 0xc631, + 0xca01, 0x0a50, 0x0aa0, 0xcaf1, 0x0b40, 0xcb11, 0xcbe1, 0x0bb0, + 0x0880, 0xc8d1, 0xc821, 0x0870, 0xc9c1, 0x0990, 0x0960, 0xc931, + 0x0f00, 0xcf51, 0xcfa1, 0x0ff0, 0xce41, 0x0e10, 0x0ee0, 0xceb1, + 0xcd81, 0x0dd0, 0x0d20, 0xcd71, 0x0cc0, 0xcc91, 0xcc61, 0x0c30, + 0xd401, 0x1450, 0x14a0, 0xd4f1, 0x1540, 0xd511, 0xd5e1, 0x15b0, + 0x1680, 0xd6d1, 0xd621, 0x1670, 0xd7c1, 0x1790, 0x1760, 0xd731, + 0x1100, 0xd151, 0xd1a1, 0x11f0, 0xd041, 0x1010, 0x10e0, 0xd0b1, + 0xd381, 0x13d0, 0x1320, 0xd371, 0x12c0, 0xd291, 0xd261, 0x1230, + 0x1e00, 0xde51, 0xdea1, 0x1ef0, 0xdf41, 0x1f10, 0x1fe0, 0xdfb1, + 0xdc81, 0x1cd0, 0x1c20, 0xdc71, 0x1dc0, 0xdd91, 0xdd61, 0x1d30, + 0xdb01, 0x1b50, 0x1ba0, 0xdbf1, 0x1a40, 0xda11, 0xdae1, 0x1ab0, + 0x1980, 0xd9d1, 0xd921, 0x1970, 0xd8c1, 0x1890, 0x1860, 0xd831, + 0xe801, 0x2850, 0x28a0, 0xe8f1, 0x2940, 0xe911, 0xe9e1, 0x29b0, + 0x2a80, 0xead1, 0xea21, 0x2a70, 0xebc1, 0x2b90, 0x2b60, 0xeb31, + 0x2d00, 0xed51, 0xeda1, 0x2df0, 0xec41, 0x2c10, 0x2ce0, 0xecb1, + 0xef81, 0x2fd0, 0x2f20, 0xef71, 0x2ec0, 0xee91, 0xee61, 0x2e30, + 0x2200, 0xe251, 0xe2a1, 0x22f0, 0xe341, 0x2310, 0x23e0, 0xe3b1, + 0xe081, 0x20d0, 0x2020, 0xe071, 0x21c0, 0xe191, 0xe161, 0x2130, + 0xe701, 0x2750, 0x27a0, 0xe7f1, 0x2640, 0xe611, 0xe6e1, 0x26b0, + 0x2580, 0xe5d1, 0xe521, 0x2570, 0xe4c1, 0x2490, 0x2460, 0xe431, + 0x3c00, 0xfc51, 0xfca1, 0x3cf0, 0xfd41, 0x3d10, 0x3de0, 0xfdb1, + 0xfe81, 0x3ed0, 0x3e20, 0xfe71, 0x3fc0, 0xff91, 0xff61, 0x3f30, + 0xf901, 0x3950, 0x39a0, 0xf9f1, 0x3840, 0xf811, 0xf8e1, 0x38b0, + 0x3b80, 0xfbd1, 0xfb21, 0x3b70, 0xfac1, 0x3a90, 0x3a60, 0xfa31, + 0xf601, 0x3650, 0x36a0, 0xf6f1, 0x3740, 0xf711, 0xf7e1, 0x37b0, + 0x3480, 0xf4d1, 0xf421, 0x3470, 0xf5c1, 0x3590, 0x3560, 0xf531, + 0x3300, 0xf351, 0xf3a1, 0x33f0, 0xf241, 0x3210, 0x32e0, 0xf2b1, + 0xf181, 0x31d0, 0x3120, 0xf171, 0x30c0, 0xf091, 0xf061, 0x3030, + }, + { + 0x0000, 0xfc01, 0xb801, 0x4400, 0x3001, 0xcc00, 0x8800, 0x7401, + 0x6002, 0x9c03, 0xd803, 0x2402, 0x5003, 0xac02, 0xe802, 0x1403, + 0xc004, 0x3c05, 0x7805, 0x8404, 0xf005, 0x0c04, 0x4804, 0xb405, + 0xa006, 0x5c07, 0x1807, 0xe406, 0x9007, 0x6c06, 0x2806, 0xd407, + 0xc00b, 0x3c0a, 0x780a, 0x840b, 0xf00a, 0x0c0b, 0x480b, 0xb40a, + 0xa009, 0x5c08, 0x1808, 0xe409, 0x9008, 0x6c09, 0x2809, 0xd408, + 0x000f, 0xfc0e, 0xb80e, 0x440f, 0x300e, 0xcc0f, 0x880f, 0x740e, + 0x600d, 0x9c0c, 0xd80c, 0x240d, 0x500c, 0xac0d, 0xe80d, 0x140c, + 0xc015, 0x3c14, 0x7814, 0x8415, 0xf014, 0x0c15, 0x4815, 0xb414, + 0xa017, 0x5c16, 0x1816, 0xe417, 0x9016, 0x6c17, 0x2817, 0xd416, + 0x0011, 0xfc10, 0xb810, 0x4411, 0x3010, 0xcc11, 0x8811, 0x7410, + 0x6013, 0x9c12, 0xd812, 0x2413, 0x5012, 0xac13, 0xe813, 0x1412, + 0x001e, 0xfc1f, 0xb81f, 0x441e, 0x301f, 0xcc1e, 0x881e, 0x741f, + 0x601c, 0x9c1d, 0xd81d, 0x241c, 0x501d, 0xac1c, 0xe81c, 0x141d, + 0xc01a, 0x3c1b, 0x781b, 0x841a, 0xf01b, 0x0c1a, 0x481a, 0xb41b, + 0xa018, 0x5c19, 0x1819, 0xe418, 0x9019, 0x6c18, 0x2818, 0xd419, + 0xc029, 0x3c28, 0x7828, 0x8429, 0xf028, 0x0c29, 0x4829, 0xb428, + 0xa02b, 0x5c2a, 0x182a, 0xe42b, 0x902a, 0x6c2b, 0x282b, 0xd42a, + 0x002d, 0xfc2c, 0xb82c, 0x442d, 0x302c, 0xcc2d, 0x882d, 0x742c, + 0x602f, 0x9c2e, 0xd82e, 0x242f, 0x502e, 0xac2f, 0xe82f, 0x142e, + 0x0022, 0xfc23, 0xb823, 0x4422, 0x3023, 0xcc22, 0x8822, 0x7423, + 0x6020, 0x9c21, 0xd821, 0x2420, 0x5021, 0xac20, 0xe820, 0x1421, + 0xc026, 0x3c27, 0x7827, 0x8426, 0xf027, 0x0c26, 0x4826, 0xb427, + 0xa024, 0x5c25, 0x1825, 0xe424, 0x9025, 0x6c24, 0x2824, 0xd425, + 0x003c, 0xfc3d, 0xb83d, 0x443c, 0x303d, 0xcc3c, 0x883c, 0x743d, + 0x603e, 0x9c3f, 0xd83f, 0x243e, 0x503f, 0xac3e, 0xe83e, 0x143f, + 0xc038, 0x3c39, 0x7839, 0x8438, 0xf039, 0x0c38, 0x4838, 0xb439, + 0xa03a, 0x5c3b, 0x183b, 0xe43a, 0x903b, 0x6c3a, 0x283a, 0xd43b, + 0xc037, 0x3c36, 0x7836, 0x8437, 0xf036, 0x0c37, 0x4837, 0xb436, + 0xa035, 0x5c34, 0x1834, 0xe435, 0x9034, 0x6c35, 0x2835, 0xd434, + 0x0033, 0xfc32, 0xb832, 0x4433, 0x3032, 0xcc33, 0x8833, 0x7432, + 0x6031, 0x9c30, 0xd830, 0x2431, 0x5030, 0xac31, 0xe831, 0x1430, + }, + { + 0x0000, 0xc03d, 0xc079, 0x0044, 0xc0f1, 0x00cc, 0x0088, 0xc0b5, + 0xc1e1, 0x01dc, 0x0198, 0xc1a5, 0x0110, 0xc12d, 0xc169, 0x0154, + 0xc3c1, 0x03fc, 0x03b8, 0xc385, 0x0330, 0xc30d, 0xc349, 0x0374, + 0x0220, 0xc21d, 0xc259, 0x0264, 0xc2d1, 0x02ec, 0x02a8, 0xc295, + 0xc781, 0x07bc, 0x07f8, 0xc7c5, 0x0770, 0xc74d, 0xc709, 0x0734, + 0x0660, 0xc65d, 0xc619, 0x0624, 0xc691, 0x06ac, 0x06e8, 0xc6d5, + 0x0440, 0xc47d, 0xc439, 0x0404, 0xc4b1, 0x048c, 0x04c8, 0xc4f5, + 0xc5a1, 0x059c, 0x05d8, 0xc5e5, 0x0550, 0xc56d, 0xc529, 0x0514, + 0xcf01, 0x0f3c, 0x0f78, 0xcf45, 0x0ff0, 0xcfcd, 0xcf89, 0x0fb4, + 0x0ee0, 0xcedd, 0xce99, 0x0ea4, 0xce11, 0x0e2c, 0x0e68, 0xce55, + 0x0cc0, 0xccfd, 0xccb9, 0x0c84, 0xcc31, 0x0c0c, 0x0c48, 0xcc75, + 0xcd21, 0x0d1c, 0x0d58, 0xcd65, 0x0dd0, 0xcded, 0xcda9, 0x0d94, + 0x0880, 0xc8bd, 0xc8f9, 0x08c4, 0xc871, 0x084c, 0x0808, 0xc835, + 0xc961, 0x095c, 0x0918, 0xc925, 0x0990, 0xc9ad, 0xc9e9, 0x09d4, + 0xcb41, 0x0b7c, 0x0b38, 0xcb05, 0x0bb0, 0xcb8d, 0xcbc9, 0x0bf4, + 0x0aa0, 0xca9d, 0xcad9, 0x0ae4, 0xca51, 0x0a6c, 0x0a28, 0xca15, + 0xde01, 0x1e3c, 0x1e78, 0xde45, 0x1ef0, 0xdecd, 0xde89, 0x1eb4, + 0x1fe0, 0xdfdd, 0xdf99, 0x1fa4, 0xdf11, 0x1f2c, 0x1f68, 0xdf55, + 0x1dc0, 0xddfd, 0xddb9, 0x1d84, 0xdd31, 0x1d0c, 0x1d48, 0xdd75, + 0xdc21, 0x1c1c, 0x1c58, 0xdc65, 0x1cd0, 0xdced, 0xdca9, 0x1c94, + 0x1980, 0xd9bd, 0xd9f9, 0x19c4, 0xd971, 0x194c, 0x1908, 0xd935, + 0xd861, 0x185c, 0x1818, 0xd825, 0x1890, 0xd8ad, 0xd8e9, 0x18d4, + 0xda41, 0x1a7c, 0x1a38, 0xda05, 0x1ab0, 0xda8d, 0xdac9, 0x1af4, + 0x1ba0, 0xdb9d, 0xdbd9, 0x1be4, 0xdb51, 0x1b6c, 0x1b28, 0xdb15, + 0x1100, 0xd13d, 0xd179, 0x1144, 0xd1f1, 0x11cc, 0x1188, 0xd1b5, + 0xd0e1, 0x10dc, 0x1098, 0xd0a5, 0x1010, 0xd02d, 0xd069, 0x1054, + 0xd2c1, 0x12fc, 0x12b8, 0xd285, 0x1230, 0xd20d, 0xd249, 0x1274, + 0x1320, 0xd31d, 0xd359, 0x1364, 0xd3d1, 0x13ec, 0x13a8, 0xd395, + 0xd681, 0x16bc, 0x16f8, 0xd6c5, 0x1670, 0xd64d, 0xd609, 0x1634, + 0x1760, 0xd75d, 0xd719, 0x1724, 0xd791, 0x17ac, 0x17e8, 0xd7d5, + 0x1540, 0xd57d, 0xd539, 0x1504, 0xd5b1, 0x158c, 0x15c8, 0xd5f5, + 0xd4a1, 0x149c, 0x14d8, 0xd4e5, 0x1450, 0xd46d, 0xd429, 0x1414, + }, + { + 0x0000, 0xd101, 0xe201, 0x3300, 0x8401, 0x5500, 0x6600, 0xb701, + 0x4801, 0x9900, 0xaa00, 0x7b01, 0xcc00, 0x1d01, 0x2e01, 0xff00, + 0x9002, 0x4103, 0x7203, 0xa302, 0x1403, 0xc502, 0xf602, 0x2703, + 0xd803, 0x0902, 0x3a02, 0xeb03, 0x5c02, 0x8d03, 0xbe03, 0x6f02, + 0x6007, 0xb106, 0x8206, 0x5307, 0xe406, 0x3507, 0x0607, 0xd706, + 0x2806, 0xf907, 0xca07, 0x1b06, 0xac07, 0x7d06, 0x4e06, 0x9f07, + 0xf005, 0x2104, 0x1204, 0xc305, 0x7404, 0xa505, 0x9605, 0x4704, + 0xb804, 0x6905, 0x5a05, 0x8b04, 0x3c05, 0xed04, 0xde04, 0x0f05, + 0xc00e, 0x110f, 0x220f, 0xf30e, 0x440f, 0x950e, 0xa60e, 0x770f, + 0x880f, 0x590e, 0x6a0e, 0xbb0f, 0x0c0e, 0xdd0f, 0xee0f, 0x3f0e, + 0x500c, 0x810d, 0xb20d, 0x630c, 0xd40d, 0x050c, 0x360c, 0xe70d, + 0x180d, 0xc90c, 0xfa0c, 0x2b0d, 0x9c0c, 0x4d0d, 0x7e0d, 0xaf0c, + 0xa009, 0x7108, 0x4208, 0x9309, 0x2408, 0xf509, 0xc609, 0x1708, + 0xe808, 0x3909, 0x0a09, 0xdb08, 0x6c09, 0xbd08, 0x8e08, 0x5f09, + 0x300b, 0xe10a, 0xd20a, 0x030b, 0xb40a, 0x650b, 0x560b, 0x870a, + 0x780a, 0xa90b, 0x9a0b, 0x4b0a, 0xfc0b, 0x2d0a, 0x1e0a, 0xcf0b, + 0xc01f, 0x111e, 0x221e, 0xf31f, 0x441e, 0x951f, 0xa61f, 0x771e, + 0x881e, 0x591f, 0x6a1f, 0xbb1e, 0x0c1f, 0xdd1e, 0xee1e, 0x3f1f, + 0x501d, 0x811c, 0xb21c, 0x631d, 0xd41c, 0x051d, 0x361d, 0xe71c, + 0x181c, 0xc91d, 0xfa1d, 0x2b1c, 0x9c1d, 0x4d1c, 0x7e1c, 0xaf1d, + 0xa018, 0x7119, 0x4219, 0x9318, 0x2419, 0xf518, 0xc618, 0x1719, + 0xe819, 0x3918, 0x0a18, 0xdb19, 0x6c18, 0xbd19, 0x8e19, 0x5f18, + 0x301a, 0xe11b, 0xd21b, 0x031a, 0xb41b, 0x651a, 0x561a, 0x871b, + 0x781b, 0xa91a, 0x9a1a, 0x4b1b, 0xfc1a, 0x2d1b, 0x1e1b, 0xcf1a, + 0x0011, 0xd110, 0xe210, 0x3311, 0x8410, 0x5511, 0x6611, 0xb710, + 0x4810, 0x9911, 0xaa11, 0x7b10, 0xcc11, 0x1d10, 0x2e10, 0xff11, + 0x9013, 0x4112, 0x7212, 0xa313, 0x1412, 0xc513, 0xf613, 0x2712, + 0xd812, 0x0913, 0x3a13, 0xeb12, 0x5c13, 0x8d12, 0xbe12, 0x6f13, + 0x6016, 0xb117, 0x8217, 0x5316, 0xe417, 0x3516, 0x0616, 0xd717, + 0x2817, 0xf916, 0xca16, 0x1b17, 0xac16, 0x7d17, 0x4e17, 0x9f16, + 0xf014, 0x2115, 0x1215, 0xc314, 0x7415, 0xa514, 0x9614, 0x4715, + 0xb815, 0x6914, 0x5a14, 0x8b15, 0x3c14, 0xed15, 0xde15, 0x0f14, + }, + { + 0x0000, 0xc010, 0xc023, 0x0033, 0xc045, 0x0055, 0x0066, 0xc076, + 0xc089, 0x0099, 0x00aa, 0xc0ba, 0x00cc, 0xc0dc, 0xc0ef, 0x00ff, + 0xc111, 0x0101, 0x0132, 0xc122, 0x0154, 0xc144, 0xc177, 0x0167, + 0x0198, 0xc188, 0xc1bb, 0x01ab, 0xc1dd, 0x01cd, 0x01fe, 0xc1ee, + 0xc221, 0x0231, 0x0202, 0xc212, 0x0264, 0xc274, 0xc247, 0x0257, + 0x02a8, 0xc2b8, 0xc28b, 0x029b, 0xc2ed, 0x02fd, 0x02ce, 0xc2de, + 0x0330, 0xc320, 0xc313, 0x0303, 0xc375, 0x0365, 0x0356, 0xc346, + 0xc3b9, 0x03a9, 0x039a, 0xc38a, 0x03fc, 0xc3ec, 0xc3df, 0x03cf, + 0xc441, 0x0451, 0x0462, 0xc472, 0x0404, 0xc414, 0xc427, 0x0437, + 0x04c8, 0xc4d8, 0xc4eb, 0x04fb, 0xc48d, 0x049d, 0x04ae, 0xc4be, + 0x0550, 0xc540, 0xc573, 0x0563, 0xc515, 0x0505, 0x0536, 0xc526, + 0xc5d9, 0x05c9, 0x05fa, 0xc5ea, 0x059c, 0xc58c, 0xc5bf, 0x05af, + 0x0660, 0xc670, 0xc643, 0x0653, 0xc625, 0x0635, 0x0606, 0xc616, + 0xc6e9, 0x06f9, 0x06ca, 0xc6da, 0x06ac, 0xc6bc, 0xc68f, 0x069f, + 0xc771, 0x0761, 0x0752, 0xc742, 0x0734, 0xc724, 0xc717, 0x0707, + 0x07f8, 0xc7e8, 0xc7db, 0x07cb, 0xc7bd, 0x07ad, 0x079e, 0xc78e, + 0xc881, 0x0891, 0x08a2, 0xc8b2, 0x08c4, 0xc8d4, 0xc8e7, 0x08f7, + 0x0808, 0xc818, 0xc82b, 0x083b, 0xc84d, 0x085d, 0x086e, 0xc87e, + 0x0990, 0xc980, 0xc9b3, 0x09a3, 0xc9d5, 0x09c5, 0x09f6, 0xc9e6, + 0xc919, 0x0909, 0x093a, 0xc92a, 0x095c, 0xc94c, 0xc97f, 0x096f, + 0x0aa0, 0xcab0, 0xca83, 0x0a93, 0xcae5, 0x0af5, 0x0ac6, 0xcad6, + 0xca29, 0x0a39, 0x0a0a, 0xca1a, 0x0a6c, 0xca7c, 0xca4f, 0x0a5f, + 0xcbb1, 0x0ba1, 0x0b92, 0xcb82, 0x0bf4, 0xcbe4, 0xcbd7, 0x0bc7, + 0x0b38, 0xcb28, 0xcb1b, 0x0b0b, 0xcb7d, 0x0b6d, 0x0b5e, 0xcb4e, + 0x0cc0, 0xccd0, 0xcce3, 0x0cf3, 0xcc85, 0x0c95, 0x0ca6, 0xccb6, + 0xcc49, 0x0c59, 0x0c6a, 0xcc7a, 0x0c0c, 0xcc1c, 0xcc2f, 0x0c3f, + 0xcdd1, 0x0dc1, 0x0df2, 0xcde2, 0x0d94, 0xcd84, 0xcdb7, 0x0da7, + 0x0d58, 0xcd48, 0xcd7b, 0x0d6b, 0xcd1d, 0x0d0d, 0x0d3e, 0xcd2e, + 0xcee1, 0x0ef1, 0x0ec2, 0xced2, 0x0ea4, 0xceb4, 0xce87, 0x0e97, + 0x0e68, 0xce78, 0xce4b, 0x0e5b, 0xce2d, 0x0e3d, 0x0e0e, 0xce1e, + 0x0ff0, 0xcfe0, 0xcfd3, 0x0fc3, 0xcfb5, 0x0fa5, 0x0f96, 0xcf86, + 0xcf79, 0x0f69, 0x0f5a, 0xcf4a, 0x0f3c, 0xcf2c, 0xcf1f, 0x0f0f, + }, + { + 0x0000, 0xccc1, 0xd981, 0x1540, 0xf301, 0x3fc0, 0x2a80, 0xe641, + 0xa601, 0x6ac0, 0x7f80, 0xb341, 0x5500, 0x99c1, 0x8c81, 0x4040, + 0x0c01, 0xc0c0, 0xd580, 0x1941, 0xff00, 0x33c1, 0x2681, 0xea40, + 0xaa00, 0x66c1, 0x7381, 0xbf40, 0x5901, 0x95c0, 0x8080, 0x4c41, + 0x1802, 0xd4c3, 0xc183, 0x0d42, 0xeb03, 0x27c2, 0x3282, 0xfe43, + 0xbe03, 0x72c2, 0x6782, 0xab43, 0x4d02, 0x81c3, 0x9483, 0x5842, + 0x1403, 0xd8c2, 0xcd82, 0x0143, 0xe702, 0x2bc3, 0x3e83, 0xf242, + 0xb202, 0x7ec3, 0x6b83, 0xa742, 0x4103, 0x8dc2, 0x9882, 0x5443, + 0x3004, 0xfcc5, 0xe985, 0x2544, 0xc305, 0x0fc4, 0x1a84, 0xd645, + 0x9605, 0x5ac4, 0x4f84, 0x8345, 0x6504, 0xa9c5, 0xbc85, 0x7044, + 0x3c05, 0xf0c4, 0xe584, 0x2945, 0xcf04, 0x03c5, 0x1685, 0xda44, + 0x9a04, 0x56c5, 0x4385, 0x8f44, 0x6905, 0xa5c4, 0xb084, 0x7c45, + 0x2806, 0xe4c7, 0xf187, 0x3d46, 0xdb07, 0x17c6, 0x0286, 0xce47, + 0x8e07, 0x42c6, 0x5786, 0x9b47, 0x7d06, 0xb1c7, 0xa487, 0x6846, + 0x2407, 0xe8c6, 0xfd86, 0x3147, 0xd706, 0x1bc7, 0x0e87, 0xc246, + 0x8206, 0x4ec7, 0x5b87, 0x9746, 0x7107, 0xbdc6, 0xa886, 0x6447, + 0x6008, 0xacc9, 0xb989, 0x7548, 0x9309, 0x5fc8, 0x4a88, 0x8649, + 0xc609, 0x0ac8, 0x1f88, 0xd349, 0x3508, 0xf9c9, 0xec89, 0x2048, + 0x6c09, 0xa0c8, 0xb588, 0x7949, 0x9f08, 0x53c9, 0x4689, 0x8a48, + 0xca08, 0x06c9, 0x1389, 0xdf48, 0x3909, 0xf5c8, 0xe088, 0x2c49, + 0x780a, 0xb4cb, 0xa18b, 0x6d4a, 0x8b0b, 0x47ca, 0x528a, 0x9e4b, + 0xde0b, 0x12ca, 0x078a, 0xcb4b, 0x2d0a, 0xe1cb, 0xf48b, 0x384a, + 0x740b, 0xb8ca, 0xad8a, 0x614b, 0x870a, 0x4bcb, 0x5e8b, 0x924a, + 0xd20a, 0x1ecb, 0x0b8b, 0xc74a, 0x210b, 0xedca, 0xf88a, 0x344b, + 0x500c, 0x9ccd, 0x898d, 0x454c, 0xa30d, 0x6fcc, 0x7a8c, 0xb64d, + 0xf60d, 0x3acc, 0x2f8c, 0xe34d, 0x050c, 0xc9cd, 0xdc8d, 0x104c, + 0x5c0d, 0x90cc, 0x858c, 0x494d, 0xaf0c, 0x63cd, 0x768d, 0xba4c, + 0xfa0c, 0x36cd, 0x238d, 0xef4c, 0x090d, 0xc5cc, 0xd08c, 0x1c4d, + 0x480e, 0x84cf, 0x918f, 0x5d4e, 0xbb0f, 0x77ce, 0x628e, 0xae4f, + 0xee0f, 0x22ce, 0x378e, 0xfb4f, 0x1d0e, 0xd1cf, 0xc48f, 0x084e, + 0x440f, 0x88ce, 0x9d8e, 0x514f, 0xb70e, 0x7bcf, 0x6e8f, 0xa24e, + 0xe20e, 0x2ecf, 0x3b8f, 0xf74e, 0x110f, 0xddce, 0xc88e, 0x044f, + }, + { + 0x0000, 0x900d, 0x6019, 0xf014, 0xc032, 0x503f, 0xa02b, 0x3026, + 0xc067, 0x506a, 0xa07e, 0x3073, 0x0055, 0x9058, 0x604c, 0xf041, + 0xc0cd, 0x50c0, 0xa0d4, 0x30d9, 0x00ff, 0x90f2, 0x60e6, 0xf0eb, + 0x00aa, 0x90a7, 0x60b3, 0xf0be, 0xc098, 0x5095, 0xa081, 0x308c, + 0xc199, 0x5194, 0xa180, 0x318d, 0x01ab, 0x91a6, 0x61b2, 0xf1bf, + 0x01fe, 0x91f3, 0x61e7, 0xf1ea, 0xc1cc, 0x51c1, 0xa1d5, 0x31d8, + 0x0154, 0x9159, 0x614d, 0xf140, 0xc166, 0x516b, 0xa17f, 0x3172, + 0xc133, 0x513e, 0xa12a, 0x3127, 0x0101, 0x910c, 0x6118, 0xf115, + 0xc331, 0x533c, 0xa328, 0x3325, 0x0303, 0x930e, 0x631a, 0xf317, + 0x0356, 0x935b, 0x634f, 0xf342, 0xc364, 0x5369, 0xa37d, 0x3370, + 0x03fc, 0x93f1, 0x63e5, 0xf3e8, 0xc3ce, 0x53c3, 0xa3d7, 0x33da, + 0xc39b, 0x5396, 0xa382, 0x338f, 0x03a9, 0x93a4, 0x63b0, 0xf3bd, + 0x02a8, 0x92a5, 0x62b1, 0xf2bc, 0xc29a, 0x5297, 0xa283, 0x328e, + 0xc2cf, 0x52c2, 0xa2d6, 0x32db, 0x02fd, 0x92f0, 0x62e4, 0xf2e9, + 0xc265, 0x5268, 0xa27c, 0x3271, 0x0257, 0x925a, 0x624e, 0xf243, + 0x0202, 0x920f, 0x621b, 0xf216, 0xc230, 0x523d, 0xa229, 0x3224, + 0xc661, 0x566c, 0xa678, 0x3675, 0x0653, 0x965e, 0x664a, 0xf647, + 0x0606, 0x960b, 0x661f, 0xf612, 0xc634, 0x5639, 0xa62d, 0x3620, + 0x06ac, 0x96a1, 0x66b5, 0xf6b8, 0xc69e, 0x5693, 0xa687, 0x368a, + 0xc6cb, 0x56c6, 0xa6d2, 0x36df, 0x06f9, 0x96f4, 0x66e0, 0xf6ed, + 0x07f8, 0x97f5, 0x67e1, 0xf7ec, 0xc7ca, 0x57c7, 0xa7d3, 0x37de, + 0xc79f, 0x5792, 0xa786, 0x378b, 0x07ad, 0x97a0, 0x67b4, 0xf7b9, + 0xc735, 0x5738, 0xa72c, 0x3721, 0x0707, 0x970a, 0x671e, 0xf713, + 0x0752, 0x975f, 0x674b, 0xf746, 0xc760, 0x576d, 0xa779, 0x3774, + 0x0550, 0x955d, 0x6549, 0xf544, 0xc562, 0x556f, 0xa57b, 0x3576, + 0xc537, 0x553a, 0xa52e, 0x3523, 0x0505, 0x9508, 0x651c, 0xf511, + 0xc59d, 0x5590, 0xa584, 0x3589, 0x05af, 0x95a2, 0x65b6, 0xf5bb, + 0x05fa, 0x95f7, 0x65e3, 0xf5ee, 0xc5c8, 0x55c5, 0xa5d1, 0x35dc, + 0xc4c9, 0x54c4, 0xa4d0, 0x34dd, 0x04fb, 0x94f6, 0x64e2, 0xf4ef, + 0x04ae, 0x94a3, 0x64b7, 0xf4ba, 0xc49c, 0x5491, 0xa485, 0x3488, + 0x0404, 0x9409, 0x641d, 0xf410, 0xc436, 0x543b, 0xa42f, 0x3422, + 0xc463, 0x546e, 0xa47a, 0x3477, 0x0451, 0x945c, 0x6448, 0xf445, + }, + { + 0x0000, 0xc551, 0xcaa1, 0x0ff0, 0xd541, 0x1010, 0x1fe0, 0xdab1, + 0xea81, 0x2fd0, 0x2020, 0xe571, 0x3fc0, 0xfa91, 0xf561, 0x3030, + 0x9501, 0x5050, 0x5fa0, 0x9af1, 0x4040, 0x8511, 0x8ae1, 0x4fb0, + 0x7f80, 0xbad1, 0xb521, 0x7070, 0xaac1, 0x6f90, 0x6060, 0xa531, + 0x6a01, 0xaf50, 0xa0a0, 0x65f1, 0xbf40, 0x7a11, 0x75e1, 0xb0b0, + 0x8080, 0x45d1, 0x4a21, 0x8f70, 0x55c1, 0x9090, 0x9f60, 0x5a31, + 0xff00, 0x3a51, 0x35a1, 0xf0f0, 0x2a41, 0xef10, 0xe0e0, 0x25b1, + 0x1581, 0xd0d0, 0xdf20, 0x1a71, 0xc0c0, 0x0591, 0x0a61, 0xcf30, + 0xd402, 0x1153, 0x1ea3, 0xdbf2, 0x0143, 0xc412, 0xcbe2, 0x0eb3, + 0x3e83, 0xfbd2, 0xf422, 0x3173, 0xebc2, 0x2e93, 0x2163, 0xe432, + 0x4103, 0x8452, 0x8ba2, 0x4ef3, 0x9442, 0x5113, 0x5ee3, 0x9bb2, + 0xab82, 0x6ed3, 0x6123, 0xa472, 0x7ec3, 0xbb92, 0xb462, 0x7133, + 0xbe03, 0x7b52, 0x74a2, 0xb1f3, 0x6b42, 0xae13, 0xa1e3, 0x64b2, + 0x5482, 0x91d3, 0x9e23, 0x5b72, 0x81c3, 0x4492, 0x4b62, 0x8e33, + 0x2b02, 0xee53, 0xe1a3, 0x24f2, 0xfe43, 0x3b12, 0x34e2, 0xf1b3, + 0xc183, 0x04d2, 0x0b22, 0xce73, 0x14c2, 0xd193, 0xde63, 0x1b32, + 0xe807, 0x2d56, 0x22a6, 0xe7f7, 0x3d46, 0xf817, 0xf7e7, 0x32b6, + 0x0286, 0xc7d7, 0xc827, 0x0d76, 0xd7c7, 0x1296, 0x1d66, 0xd837, + 0x7d06, 0xb857, 0xb7a7, 0x72f6, 0xa847, 0x6d16, 0x62e6, 0xa7b7, + 0x9787, 0x52d6, 0x5d26, 0x9877, 0x42c6, 0x8797, 0x8867, 0x4d36, + 0x8206, 0x4757, 0x48a7, 0x8df6, 0x5747, 0x9216, 0x9de6, 0x58b7, + 0x6887, 0xadd6, 0xa226, 0x6777, 0xbdc6, 0x7897, 0x7767, 0xb236, + 0x1707, 0xd256, 0xdda6, 0x18f7, 0xc246, 0x0717, 0x08e7, 0xcdb6, + 0xfd86, 0x38d7, 0x3727, 0xf276, 0x28c7, 0xed96, 0xe266, 0x2737, + 0x3c05, 0xf954, 0xf6a4, 0x33f5, 0xe944, 0x2c15, 0x23e5, 0xe6b4, + 0xd684, 0x13d5, 0x1c25, 0xd974, 0x03c5, 0xc694, 0xc964, 0x0c35, + 0xa904, 0x6c55, 0x63a5, 0xa6f4, 0x7c45, 0xb914, 0xb6e4, 0x73b5, + 0x4385, 0x86d4, 0x8924, 0x4c75, 0x96c4, 0x5395, 0x5c65, 0x9934, + 0x5604, 0x9355, 0x9ca5, 0x59f4, 0x8345, 0x4614, 0x49e4, 0x8cb5, + 0xbc85, 0x79d4, 0x7624, 0xb375, 0x69c4, 0xac95, 0xa365, 0x6634, + 0xc305, 0x0654, 0x09a4, 0xccf5, 0x1644, 0xd315, 0xdce5, 0x19b4, + 0x2984, 0xecd5, 0xe325, 0x2674, 0xfcc5, 0x3994, 0x3664, 0xf335, + }, + { + 0x0000, 0xfc04, 0xb80b, 0x440f, 0x3015, 0xcc11, 0x881e, 0x741a, + 0x602a, 0x9c2e, 0xd821, 0x2425, 0x503f, 0xac3b, 0xe834, 0x1430, + 0xc054, 0x3c50, 0x785f, 0x845b, 0xf041, 0x0c45, 0x484a, 0xb44e, + 0xa07e, 0x5c7a, 0x1875, 0xe471, 0x906b, 0x6c6f, 0x2860, 0xd464, + 0xc0ab, 0x3caf, 0x78a0, 0x84a4, 0xf0be, 0x0cba, 0x48b5, 0xb4b1, + 0xa081, 0x5c85, 0x188a, 0xe48e, 0x9094, 0x6c90, 0x289f, 0xd49b, + 0x00ff, 0xfcfb, 0xb8f4, 0x44f0, 0x30ea, 0xccee, 0x88e1, 0x74e5, + 0x60d5, 0x9cd1, 0xd8de, 0x24da, 0x50c0, 0xacc4, 0xe8cb, 0x14cf, + 0xc155, 0x3d51, 0x795e, 0x855a, 0xf140, 0x0d44, 0x494b, 0xb54f, + 0xa17f, 0x5d7b, 0x1974, 0xe570, 0x916a, 0x6d6e, 0x2961, 0xd565, + 0x0101, 0xfd05, 0xb90a, 0x450e, 0x3114, 0xcd10, 0x891f, 0x751b, + 0x612b, 0x9d2f, 0xd920, 0x2524, 0x513e, 0xad3a, 0xe935, 0x1531, + 0x01fe, 0xfdfa, 0xb9f5, 0x45f1, 0x31eb, 0xcdef, 0x89e0, 0x75e4, + 0x61d4, 0x9dd0, 0xd9df, 0x25db, 0x51c1, 0xadc5, 0xe9ca, 0x15ce, + 0xc1aa, 0x3dae, 0x79a1, 0x85a5, 0xf1bf, 0x0dbb, 0x49b4, 0xb5b0, + 0xa180, 0x5d84, 0x198b, 0xe58f, 0x9195, 0x6d91, 0x299e, 0xd59a, + 0xc2a9, 0x3ead, 0x7aa2, 0x86a6, 0xf2bc, 0x0eb8, 0x4ab7, 0xb6b3, + 0xa283, 0x5e87, 0x1a88, 0xe68c, 0x9296, 0x6e92, 0x2a9d, 0xd699, + 0x02fd, 0xfef9, 0xbaf6, 0x46f2, 0x32e8, 0xceec, 0x8ae3, 0x76e7, + 0x62d7, 0x9ed3, 0xdadc, 0x26d8, 0x52c2, 0xaec6, 0xeac9, 0x16cd, + 0x0202, 0xfe06, 0xba09, 0x460d, 0x3217, 0xce13, 0x8a1c, 0x7618, + 0x6228, 0x9e2c, 0xda23, 0x2627, 0x523d, 0xae39, 0xea36, 0x1632, + 0xc256, 0x3e52, 0x7a5d, 0x8659, 0xf243, 0x0e47, 0x4a48, 0xb64c, + 0xa27c, 0x5e78, 0x1a77, 0xe673, 0x9269, 0x6e6d, 0x2a62, 0xd666, + 0x03fc, 0xfff8, 0xbbf7, 0x47f3, 0x33e9, 0xcfed, 0x8be2, 0x77e6, + 0x63d6, 0x9fd2, 0xdbdd, 0x27d9, 0x53c3, 0xafc7, 0xebc8, 0x17cc, + 0xc3a8, 0x3fac, 0x7ba3, 0x87a7, 0xf3bd, 0x0fb9, 0x4bb6, 0xb7b2, + 0xa382, 0x5f86, 0x1b89, 0xe78d, 0x9397, 0x6f93, 0x2b9c, 0xd798, + 0xc357, 0x3f53, 0x7b5c, 0x8758, 0xf342, 0x0f46, 0x4b49, 0xb74d, + 0xa37d, 0x5f79, 0x1b76, 0xe772, 0x9368, 0x6f6c, 0x2b63, 0xd767, + 0x0303, 0xff07, 0xbb08, 0x470c, 0x3316, 0xcf12, 0x8b1d, 0x7719, + 0x6329, 0x9f2d, 0xdb22, 0x2726, 0x533c, 0xaf38, 0xeb37, 0x1733, + }, + { + 0x0000, 0xc3fd, 0xc7f9, 0x0404, 0xcff1, 0x0c0c, 0x0808, 0xcbf5, + 0xdfe1, 0x1c1c, 0x1818, 0xdbe5, 0x1010, 0xd3ed, 0xd7e9, 0x1414, + 0xffc1, 0x3c3c, 0x3838, 0xfbc5, 0x3030, 0xf3cd, 0xf7c9, 0x3434, + 0x2020, 0xe3dd, 0xe7d9, 0x2424, 0xefd1, 0x2c2c, 0x2828, 0xebd5, + 0xbf81, 0x7c7c, 0x7878, 0xbb85, 0x7070, 0xb38d, 0xb789, 0x7474, + 0x6060, 0xa39d, 0xa799, 0x6464, 0xaf91, 0x6c6c, 0x6868, 0xab95, + 0x4040, 0x83bd, 0x87b9, 0x4444, 0x8fb1, 0x4c4c, 0x4848, 0x8bb5, + 0x9fa1, 0x5c5c, 0x5858, 0x9ba5, 0x5050, 0x93ad, 0x97a9, 0x5454, + 0x3f01, 0xfcfc, 0xf8f8, 0x3b05, 0xf0f0, 0x330d, 0x3709, 0xf4f4, + 0xe0e0, 0x231d, 0x2719, 0xe4e4, 0x2f11, 0xecec, 0xe8e8, 0x2b15, + 0xc0c0, 0x033d, 0x0739, 0xc4c4, 0x0f31, 0xcccc, 0xc8c8, 0x0b35, + 0x1f21, 0xdcdc, 0xd8d8, 0x1b25, 0xd0d0, 0x132d, 0x1729, 0xd4d4, + 0x8080, 0x437d, 0x4779, 0x8484, 0x4f71, 0x8c8c, 0x8888, 0x4b75, + 0x5f61, 0x9c9c, 0x9898, 0x5b65, 0x9090, 0x536d, 0x5769, 0x9494, + 0x7f41, 0xbcbc, 0xb8b8, 0x7b45, 0xb0b0, 0x734d, 0x7749, 0xb4b4, + 0xa0a0, 0x635d, 0x6759, 0xa4a4, 0x6f51, 0xacac, 0xa8a8, 0x6b55, + 0x7e02, 0xbdff, 0xb9fb, 0x7a06, 0xb1f3, 0x720e, 0x760a, 0xb5f7, + 0xa1e3, 0x621e, 0x661a, 0xa5e7, 0x6e12, 0xadef, 0xa9eb, 0x6a16, + 0x81c3, 0x423e, 0x463a, 0x85c7, 0x4e32, 0x8dcf, 0x89cb, 0x4a36, + 0x5e22, 0x9ddf, 0x99db, 0x5a26, 0x91d3, 0x522e, 0x562a, 0x95d7, + 0xc183, 0x027e, 0x067a, 0xc587, 0x0e72, 0xcd8f, 0xc98b, 0x0a76, + 0x1e62, 0xdd9f, 0xd99b, 0x1a66, 0xd193, 0x126e, 0x166a, 0xd597, + 0x3e42, 0xfdbf, 0xf9bb, 0x3a46, 0xf1b3, 0x324e, 0x364a, 0xf5b7, + 0xe1a3, 0x225e, 0x265a, 0xe5a7, 0x2e52, 0xedaf, 0xe9ab, 0x2a56, + 0x4103, 0x82fe, 0x86fa, 0x4507, 0x8ef2, 0x4d0f, 0x490b, 0x8af6, + 0x9ee2, 0x5d1f, 0x591b, 0x9ae6, 0x5113, 0x92ee, 0x96ea, 0x5517, + 0xbec2, 0x7d3f, 0x793b, 0xbac6, 0x7133, 0xb2ce, 0xb6ca, 0x7537, + 0x6123, 0xa2de, 0xa6da, 0x6527, 0xaed2, 0x6d2f, 0x692b, 0xaad6, + 0xfe82, 0x3d7f, 0x397b, 0xfa86, 0x3173, 0xf28e, 0xf68a, 0x3577, + 0x2163, 0xe29e, 0xe69a, 0x2567, 0xee92, 0x2d6f, 0x296b, 0xea96, + 0x0143, 0xc2be, 0xc6ba, 0x0547, 0xceb2, 0x0d4f, 0x094b, 0xcab6, + 0xdea2, 0x1d5f, 0x195b, 0xdaa6, 0x1153, 0xd2ae, 0xd6aa, 0x1557, + }, + { + 0x0000, 0x8102, 0x4207, 0xc305, 0x840e, 0x050c, 0xc609, 0x470b, + 0x481f, 0xc91d, 0x0a18, 0x8b1a, 0xcc11, 0x4d13, 0x8e16, 0x0f14, + 0x903e, 0x113c, 0xd239, 0x533b, 0x1430, 0x9532, 0x5637, 0xd735, + 0xd821, 0x5923, 0x9a26, 0x1b24, 0x5c2f, 0xdd2d, 0x1e28, 0x9f2a, + 0x607f, 0xe17d, 0x2278, 0xa37a, 0xe471, 0x6573, 0xa676, 0x2774, + 0x2860, 0xa962, 0x6a67, 0xeb65, 0xac6e, 0x2d6c, 0xee69, 0x6f6b, + 0xf041, 0x7143, 0xb246, 0x3344, 0x744f, 0xf54d, 0x3648, 0xb74a, + 0xb85e, 0x395c, 0xfa59, 0x7b5b, 0x3c50, 0xbd52, 0x7e57, 0xff55, + 0xc0fe, 0x41fc, 0x82f9, 0x03fb, 0x44f0, 0xc5f2, 0x06f7, 0x87f5, + 0x88e1, 0x09e3, 0xcae6, 0x4be4, 0x0cef, 0x8ded, 0x4ee8, 0xcfea, + 0x50c0, 0xd1c2, 0x12c7, 0x93c5, 0xd4ce, 0x55cc, 0x96c9, 0x17cb, + 0x18df, 0x99dd, 0x5ad8, 0xdbda, 0x9cd1, 0x1dd3, 0xded6, 0x5fd4, + 0xa081, 0x2183, 0xe286, 0x6384, 0x248f, 0xa58d, 0x6688, 0xe78a, + 0xe89e, 0x699c, 0xaa99, 0x2b9b, 0x6c90, 0xed92, 0x2e97, 0xaf95, + 0x30bf, 0xb1bd, 0x72b8, 0xf3ba, 0xb4b1, 0x35b3, 0xf6b6, 0x77b4, + 0x78a0, 0xf9a2, 0x3aa7, 0xbba5, 0xfcae, 0x7dac, 0xbea9, 0x3fab, + 0xc1ff, 0x40fd, 0x83f8, 0x02fa, 0x45f1, 0xc4f3, 0x07f6, 0x86f4, + 0x89e0, 0x08e2, 0xcbe7, 0x4ae5, 0x0dee, 0x8cec, 0x4fe9, 0xceeb, + 0x51c1, 0xd0c3, 0x13c6, 0x92c4, 0xd5cf, 0x54cd, 0x97c8, 0x16ca, + 0x19de, 0x98dc, 0x5bd9, 0xdadb, 0x9dd0, 0x1cd2, 0xdfd7, 0x5ed5, + 0xa180, 0x2082, 0xe387, 0x6285, 0x258e, 0xa48c, 0x6789, 0xe68b, + 0xe99f, 0x689d, 0xab98, 0x2a9a, 0x6d91, 0xec93, 0x2f96, 0xae94, + 0x31be, 0xb0bc, 0x73b9, 0xf2bb, 0xb5b0, 0x34b2, 0xf7b7, 0x76b5, + 0x79a1, 0xf8a3, 0x3ba6, 0xbaa4, 0xfdaf, 0x7cad, 0xbfa8, 0x3eaa, + 0x0101, 0x8003, 0x4306, 0xc204, 0x850f, 0x040d, 0xc708, 0x460a, + 0x491e, 0xc81c, 0x0b19, 0x8a1b, 0xcd10, 0x4c12, 0x8f17, 0x0e15, + 0x913f, 0x103d, 0xd338, 0x523a, 0x1531, 0x9433, 0x5736, 0xd634, + 0xd920, 0x5822, 0x9b27, 0x1a25, 0x5d2e, 0xdc2c, 0x1f29, 0x9e2b, + 0x617e, 0xe07c, 0x2379, 0xa27b, 0xe570, 0x6472, 0xa777, 0x2675, + 0x2961, 0xa863, 0x6b66, 0xea64, 0xad6f, 0x2c6d, 0xef68, 0x6e6a, + 0xf140, 0x7042, 0xb347, 0x3245, 0x754e, 0xf44c, 0x3749, 0xb64b, + 0xb95f, 0x385d, 0xfb58, 0x7a5a, 0x3d51, 0xbc53, 0x7f56, 0xfe54, + }, + { + 0x0000, 0xc100, 0xc203, 0x0303, 0xc405, 0x0505, 0x0606, 0xc706, + 0xc809, 0x0909, 0x0a0a, 0xcb0a, 0x0c0c, 0xcd0c, 0xce0f, 0x0f0f, + 0xd011, 0x1111, 0x1212, 0xd312, 0x1414, 0xd514, 0xd617, 0x1717, + 0x1818, 0xd918, 0xda1b, 0x1b1b, 0xdc1d, 0x1d1d, 0x1e1e, 0xdf1e, + 0xe021, 0x2121, 0x2222, 0xe322, 0x2424, 0xe524, 0xe627, 0x2727, + 0x2828, 0xe928, 0xea2b, 0x2b2b, 0xec2d, 0x2d2d, 0x2e2e, 0xef2e, + 0x3030, 0xf130, 0xf233, 0x3333, 0xf435, 0x3535, 0x3636, 0xf736, + 0xf839, 0x3939, 0x3a3a, 0xfb3a, 0x3c3c, 0xfd3c, 0xfe3f, 0x3f3f, + 0x8041, 0x4141, 0x4242, 0x8342, 0x4444, 0x8544, 0x8647, 0x4747, + 0x4848, 0x8948, 0x8a4b, 0x4b4b, 0x8c4d, 0x4d4d, 0x4e4e, 0x8f4e, + 0x5050, 0x9150, 0x9253, 0x5353, 0x9455, 0x5555, 0x5656, 0x9756, + 0x9859, 0x5959, 0x5a5a, 0x9b5a, 0x5c5c, 0x9d5c, 0x9e5f, 0x5f5f, + 0x6060, 0xa160, 0xa263, 0x6363, 0xa465, 0x6565, 0x6666, 0xa766, + 0xa869, 0x6969, 0x6a6a, 0xab6a, 0x6c6c, 0xad6c, 0xae6f, 0x6f6f, + 0xb071, 0x7171, 0x7272, 0xb372, 0x7474, 0xb574, 0xb677, 0x7777, + 0x7878, 0xb978, 0xba7b, 0x7b7b, 0xbc7d, 0x7d7d, 0x7e7e, 0xbf7e, + 0x4081, 0x8181, 0x8282, 0x4382, 0x8484, 0x4584, 0x4687, 0x8787, + 0x8888, 0x4988, 0x4a8b, 0x8b8b, 0x4c8d, 0x8d8d, 0x8e8e, 0x4f8e, + 0x9090, 0x5190, 0x5293, 0x9393, 0x5495, 0x9595, 0x9696, 0x5796, + 0x5899, 0x9999, 0x9a9a, 0x5b9a, 0x9c9c, 0x5d9c, 0x5e9f, 0x9f9f, + 0xa0a0, 0x61a0, 0x62a3, 0xa3a3, 0x64a5, 0xa5a5, 0xa6a6, 0x67a6, + 0x68a9, 0xa9a9, 0xaaaa, 0x6baa, 0xacac, 0x6dac, 0x6eaf, 0xafaf, + 0x70b1, 0xb1b1, 0xb2b2, 0x73b2, 0xb4b4, 0x75b4, 0x76b7, 0xb7b7, + 0xb8b8, 0x79b8, 0x7abb, 0xbbbb, 0x7cbd, 0xbdbd, 0xbebe, 0x7fbe, + 0xc0c0, 0x01c0, 0x02c3, 0xc3c3, 0x04c5, 0xc5c5, 0xc6c6, 0x07c6, + 0x08c9, 0xc9c9, 0xcaca, 0x0bca, 0xcccc, 0x0dcc, 0x0ecf, 0xcfcf, + 0x10d1, 0xd1d1, 0xd2d2, 0x13d2, 0xd4d4, 0x15d4, 0x16d7, 0xd7d7, + 0xd8d8, 0x19d8, 0x1adb, 0xdbdb, 0x1cdd, 0xdddd, 0xdede, 0x1fde, + 0x20e1, 0xe1e1, 0xe2e2, 0x23e2, 0xe4e4, 0x25e4, 0x26e7, 0xe7e7, + 0xe8e8, 0x29e8, 0x2aeb, 0xebeb, 0x2ced, 0xeded, 0xeeee, 0x2fee, + 0xf0f0, 0x31f0, 0x32f3, 0xf3f3, 0x34f5, 0xf5f5, 0xf6f6, 0x37f6, + 0x38f9, 0xf9f9, 0xfafa, 0x3bfa, 0xfcfc, 0x3dfc, 0x3eff, 0xffff, + }, + { + 0x0000, 0x00c1, 0x0182, 0x0143, 0x0304, 0x03c5, 0x0286, 0x0247, + 0x0608, 0x06c9, 0x078a, 0x074b, 0x050c, 0x05cd, 0x048e, 0x044f, + 0x0c10, 0x0cd1, 0x0d92, 0x0d53, 0x0f14, 0x0fd5, 0x0e96, 0x0e57, + 0x0a18, 0x0ad9, 0x0b9a, 0x0b5b, 0x091c, 0x09dd, 0x089e, 0x085f, + 0x1820, 0x18e1, 0x19a2, 0x1963, 0x1b24, 0x1be5, 0x1aa6, 0x1a67, + 0x1e28, 0x1ee9, 0x1faa, 0x1f6b, 0x1d2c, 0x1ded, 0x1cae, 0x1c6f, + 0x1430, 0x14f1, 0x15b2, 0x1573, 0x1734, 0x17f5, 0x16b6, 0x1677, + 0x1238, 0x12f9, 0x13ba, 0x137b, 0x113c, 0x11fd, 0x10be, 0x107f, + 0x3040, 0x3081, 0x31c2, 0x3103, 0x3344, 0x3385, 0x32c6, 0x3207, + 0x3648, 0x3689, 0x37ca, 0x370b, 0x354c, 0x358d, 0x34ce, 0x340f, + 0x3c50, 0x3c91, 0x3dd2, 0x3d13, 0x3f54, 0x3f95, 0x3ed6, 0x3e17, + 0x3a58, 0x3a99, 0x3bda, 0x3b1b, 0x395c, 0x399d, 0x38de, 0x381f, + 0x2860, 0x28a1, 0x29e2, 0x2923, 0x2b64, 0x2ba5, 0x2ae6, 0x2a27, + 0x2e68, 0x2ea9, 0x2fea, 0x2f2b, 0x2d6c, 0x2dad, 0x2cee, 0x2c2f, + 0x2470, 0x24b1, 0x25f2, 0x2533, 0x2774, 0x27b5, 0x26f6, 0x2637, + 0x2278, 0x22b9, 0x23fa, 0x233b, 0x217c, 0x21bd, 0x20fe, 0x203f, + 0x6080, 0x6041, 0x6102, 0x61c3, 0x6384, 0x6345, 0x6206, 0x62c7, + 0x6688, 0x6649, 0x670a, 0x67cb, 0x658c, 0x654d, 0x640e, 0x64cf, + 0x6c90, 0x6c51, 0x6d12, 0x6dd3, 0x6f94, 0x6f55, 0x6e16, 0x6ed7, + 0x6a98, 0x6a59, 0x6b1a, 0x6bdb, 0x699c, 0x695d, 0x681e, 0x68df, + 0x78a0, 0x7861, 0x7922, 0x79e3, 0x7ba4, 0x7b65, 0x7a26, 0x7ae7, + 0x7ea8, 0x7e69, 0x7f2a, 0x7feb, 0x7dac, 0x7d6d, 0x7c2e, 0x7cef, + 0x74b0, 0x7471, 0x7532, 0x75f3, 0x77b4, 0x7775, 0x7636, 0x76f7, + 0x72b8, 0x7279, 0x733a, 0x73fb, 0x71bc, 0x717d, 0x703e, 0x70ff, + 0x50c0, 0x5001, 0x5142, 0x5183, 0x53c4, 0x5305, 0x5246, 0x5287, + 0x56c8, 0x5609, 0x574a, 0x578b, 0x55cc, 0x550d, 0x544e, 0x548f, + 0x5cd0, 0x5c11, 0x5d52, 0x5d93, 0x5fd4, 0x5f15, 0x5e56, 0x5e97, + 0x5ad8, 0x5a19, 0x5b5a, 0x5b9b, 0x59dc, 0x591d, 0x585e, 0x589f, + 0x48e0, 0x4821, 0x4962, 0x49a3, 0x4be4, 0x4b25, 0x4a66, 0x4aa7, + 0x4ee8, 0x4e29, 0x4f6a, 0x4fab, 0x4dec, 0x4d2d, 0x4c6e, 0x4caf, + 0x44f0, 0x4431, 0x4572, 0x45b3, 0x47f4, 0x4735, 0x4676, 0x46b7, + 0x42f8, 0x4239, 0x437a, 0x43bb, 0x41fc, 0x413d, 0x407e, 0x40bf, + }, + { + 0x0000, 0x90c1, 0x6181, 0xf140, 0xc302, 0x53c3, 0xa283, 0x3242, + 0xc607, 0x56c6, 0xa786, 0x3747, 0x0505, 0x95c4, 0x6484, 0xf445, + 0xcc0d, 0x5ccc, 0xad8c, 0x3d4d, 0x0f0f, 0x9fce, 0x6e8e, 0xfe4f, + 0x0a0a, 0x9acb, 0x6b8b, 0xfb4a, 0xc908, 0x59c9, 0xa889, 0x3848, + 0xd819, 0x48d8, 0xb998, 0x2959, 0x1b1b, 0x8bda, 0x7a9a, 0xea5b, + 0x1e1e, 0x8edf, 0x7f9f, 0xef5e, 0xdd1c, 0x4ddd, 0xbc9d, 0x2c5c, + 0x1414, 0x84d5, 0x7595, 0xe554, 0xd716, 0x47d7, 0xb697, 0x2656, + 0xd213, 0x42d2, 0xb392, 0x2353, 0x1111, 0x81d0, 0x7090, 0xe051, + 0xf031, 0x60f0, 0x91b0, 0x0171, 0x3333, 0xa3f2, 0x52b2, 0xc273, + 0x3636, 0xa6f7, 0x57b7, 0xc776, 0xf534, 0x65f5, 0x94b5, 0x0474, + 0x3c3c, 0xacfd, 0x5dbd, 0xcd7c, 0xff3e, 0x6fff, 0x9ebf, 0x0e7e, + 0xfa3b, 0x6afa, 0x9bba, 0x0b7b, 0x3939, 0xa9f8, 0x58b8, 0xc879, + 0x2828, 0xb8e9, 0x49a9, 0xd968, 0xeb2a, 0x7beb, 0x8aab, 0x1a6a, + 0xee2f, 0x7eee, 0x8fae, 0x1f6f, 0x2d2d, 0xbdec, 0x4cac, 0xdc6d, + 0xe425, 0x74e4, 0x85a4, 0x1565, 0x2727, 0xb7e6, 0x46a6, 0xd667, + 0x2222, 0xb2e3, 0x43a3, 0xd362, 0xe120, 0x71e1, 0x80a1, 0x1060, + 0xa061, 0x30a0, 0xc1e0, 0x5121, 0x6363, 0xf3a2, 0x02e2, 0x9223, + 0x6666, 0xf6a7, 0x07e7, 0x9726, 0xa564, 0x35a5, 0xc4e5, 0x5424, + 0x6c6c, 0xfcad, 0x0ded, 0x9d2c, 0xaf6e, 0x3faf, 0xceef, 0x5e2e, + 0xaa6b, 0x3aaa, 0xcbea, 0x5b2b, 0x6969, 0xf9a8, 0x08e8, 0x9829, + 0x7878, 0xe8b9, 0x19f9, 0x8938, 0xbb7a, 0x2bbb, 0xdafb, 0x4a3a, + 0xbe7f, 0x2ebe, 0xdffe, 0x4f3f, 0x7d7d, 0xedbc, 0x1cfc, 0x8c3d, + 0xb475, 0x24b4, 0xd5f4, 0x4535, 0x7777, 0xe7b6, 0x16f6, 0x8637, + 0x7272, 0xe2b3, 0x13f3, 0x8332, 0xb170, 0x21b1, 0xd0f1, 0x4030, + 0x5050, 0xc091, 0x31d1, 0xa110, 0x9352, 0x0393, 0xf2d3, 0x6212, + 0x9657, 0x0696, 0xf7d6, 0x6717, 0x5555, 0xc594, 0x34d4, 0xa415, + 0x9c5d, 0x0c9c, 0xfddc, 0x6d1d, 0x5f5f, 0xcf9e, 0x3ede, 0xae1f, + 0x5a5a, 0xca9b, 0x3bdb, 0xab1a, 0x9958, 0x0999, 0xf8d9, 0x6818, + 0x8849, 0x1888, 0xe9c8, 0x7909, 0x4b4b, 0xdb8a, 0x2aca, 0xba0b, + 0x4e4e, 0xde8f, 0x2fcf, 0xbf0e, 0x8d4c, 0x1d8d, 0xeccd, 0x7c0c, + 0x4444, 0xd485, 0x25c5, 0xb504, 0x8746, 0x1787, 0xe6c7, 0x7606, + 0x8243, 0x1282, 0xe3c2, 0x7303, 0x4141, 0xd180, 0x20c0, 0xb001, + }, +}; diff --git a/ext/digest/crc16_x_25/crc16_x_25.c b/ext/digest/crc16_x_25/crc16_x_25.c index 9c3b8bc..8886883 100644 --- a/ext/digest/crc16_x_25/crc16_x_25.c +++ b/ext/digest/crc16_x_25/crc16_x_25.c @@ -15,54 +15,39 @@ */ #include "crc16_x_25.h" - -/** - * Static table used for the table_driven implementation. - */ -static const crc16_t crc_table[256] = { - 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, - 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7, - 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e, - 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876, - 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd, - 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5, - 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c, - 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974, - 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb, - 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3, - 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a, - 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72, - 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9, - 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1, - 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738, - 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70, - 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7, - 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff, - 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036, - 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e, - 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5, - 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd, - 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134, - 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c, - 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3, - 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb, - 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232, - 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a, - 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1, - 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9, - 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330, - 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78 -}; +#include "crc16_x_25_table.h" crc16_t crc16_x_25_update(crc16_t crc, const void *data, size_t data_len) { const unsigned char *d = (const unsigned char *)data; unsigned int tbl_idx; + for (; data_len >= SLICE_SIZE; data_len -= SLICE_SIZE) + { + crc = crc16_x_25_table[15][d[ 0] ^ ((crc >> 0) & 0xff)] ^ + crc16_x_25_table[14][d[ 1] ^ ((crc >> 8) & 0xff)] ^ + crc16_x_25_table[13][d[ 2] ] ^ + crc16_x_25_table[12][d[ 3] ] ^ + crc16_x_25_table[11][d[ 4] ] ^ + crc16_x_25_table[10][d[ 5] ] ^ + crc16_x_25_table[ 9][d[ 6] ] ^ + crc16_x_25_table[ 8][d[ 7] ] ^ + crc16_x_25_table[ 7][d[ 8] ] ^ + crc16_x_25_table[ 6][d[ 9] ] ^ + crc16_x_25_table[ 5][d[10] ] ^ + crc16_x_25_table[ 4][d[11] ] ^ + crc16_x_25_table[ 3][d[12] ] ^ + crc16_x_25_table[ 2][d[13] ] ^ + crc16_x_25_table[ 1][d[14] ] ^ + crc16_x_25_table[ 0][d[15] ]; + crc &= 0xffff; + d += SLICE_SIZE; + } + while (data_len--) { tbl_idx = (crc ^ *d) & 0xff; - crc = (crc_table[tbl_idx] ^ (crc >> 8)) & 0xffff; + crc = (crc16_x_25_table[0][tbl_idx] ^ (crc >> 8)) & 0xffff; d++; } diff --git a/ext/digest/crc16_x_25/crc16_x_25_table.h b/ext/digest/crc16_x_25/crc16_x_25_table.h new file mode 100644 index 0000000..f54e726 --- /dev/null +++ b/ext/digest/crc16_x_25/crc16_x_25_table.h @@ -0,0 +1,558 @@ +/* + * bitwidth: 16 + * generator polynomial: 0x1021 + * input bit direction: REFLECT + * slice bytes per iteration: 16 + * slide bits per table: 8 + * + * Generated by: gentable.rb of digest-crc + */ + +#define SLICE_SIZE 16 + +static const uint16_t crc16_x_25_table[SLICE_SIZE][256] = { + { + 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, + 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7, + 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e, + 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876, + 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd, + 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5, + 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c, + 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974, + 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb, + 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3, + 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a, + 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72, + 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9, + 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1, + 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738, + 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70, + 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7, + 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff, + 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036, + 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e, + 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5, + 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd, + 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134, + 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c, + 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3, + 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb, + 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232, + 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a, + 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1, + 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9, + 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330, + 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78, + }, + { + 0x0000, 0x19d8, 0x33b0, 0x2a68, 0x6760, 0x7eb8, 0x54d0, 0x4d08, + 0xcec0, 0xd718, 0xfd70, 0xe4a8, 0xa9a0, 0xb078, 0x9a10, 0x83c8, + 0x9591, 0x8c49, 0xa621, 0xbff9, 0xf2f1, 0xeb29, 0xc141, 0xd899, + 0x5b51, 0x4289, 0x68e1, 0x7139, 0x3c31, 0x25e9, 0x0f81, 0x1659, + 0x2333, 0x3aeb, 0x1083, 0x095b, 0x4453, 0x5d8b, 0x77e3, 0x6e3b, + 0xedf3, 0xf42b, 0xde43, 0xc79b, 0x8a93, 0x934b, 0xb923, 0xa0fb, + 0xb6a2, 0xaf7a, 0x8512, 0x9cca, 0xd1c2, 0xc81a, 0xe272, 0xfbaa, + 0x7862, 0x61ba, 0x4bd2, 0x520a, 0x1f02, 0x06da, 0x2cb2, 0x356a, + 0x4666, 0x5fbe, 0x75d6, 0x6c0e, 0x2106, 0x38de, 0x12b6, 0x0b6e, + 0x88a6, 0x917e, 0xbb16, 0xa2ce, 0xefc6, 0xf61e, 0xdc76, 0xc5ae, + 0xd3f7, 0xca2f, 0xe047, 0xf99f, 0xb497, 0xad4f, 0x8727, 0x9eff, + 0x1d37, 0x04ef, 0x2e87, 0x375f, 0x7a57, 0x638f, 0x49e7, 0x503f, + 0x6555, 0x7c8d, 0x56e5, 0x4f3d, 0x0235, 0x1bed, 0x3185, 0x285d, + 0xab95, 0xb24d, 0x9825, 0x81fd, 0xccf5, 0xd52d, 0xff45, 0xe69d, + 0xf0c4, 0xe91c, 0xc374, 0xdaac, 0x97a4, 0x8e7c, 0xa414, 0xbdcc, + 0x3e04, 0x27dc, 0x0db4, 0x146c, 0x5964, 0x40bc, 0x6ad4, 0x730c, + 0x8ccc, 0x9514, 0xbf7c, 0xa6a4, 0xebac, 0xf274, 0xd81c, 0xc1c4, + 0x420c, 0x5bd4, 0x71bc, 0x6864, 0x256c, 0x3cb4, 0x16dc, 0x0f04, + 0x195d, 0x0085, 0x2aed, 0x3335, 0x7e3d, 0x67e5, 0x4d8d, 0x5455, + 0xd79d, 0xce45, 0xe42d, 0xfdf5, 0xb0fd, 0xa925, 0x834d, 0x9a95, + 0xafff, 0xb627, 0x9c4f, 0x8597, 0xc89f, 0xd147, 0xfb2f, 0xe2f7, + 0x613f, 0x78e7, 0x528f, 0x4b57, 0x065f, 0x1f87, 0x35ef, 0x2c37, + 0x3a6e, 0x23b6, 0x09de, 0x1006, 0x5d0e, 0x44d6, 0x6ebe, 0x7766, + 0xf4ae, 0xed76, 0xc71e, 0xdec6, 0x93ce, 0x8a16, 0xa07e, 0xb9a6, + 0xcaaa, 0xd372, 0xf91a, 0xe0c2, 0xadca, 0xb412, 0x9e7a, 0x87a2, + 0x046a, 0x1db2, 0x37da, 0x2e02, 0x630a, 0x7ad2, 0x50ba, 0x4962, + 0x5f3b, 0x46e3, 0x6c8b, 0x7553, 0x385b, 0x2183, 0x0beb, 0x1233, + 0x91fb, 0x8823, 0xa24b, 0xbb93, 0xf69b, 0xef43, 0xc52b, 0xdcf3, + 0xe999, 0xf041, 0xda29, 0xc3f1, 0x8ef9, 0x9721, 0xbd49, 0xa491, + 0x2759, 0x3e81, 0x14e9, 0x0d31, 0x4039, 0x59e1, 0x7389, 0x6a51, + 0x7c08, 0x65d0, 0x4fb8, 0x5660, 0x1b68, 0x02b0, 0x28d8, 0x3100, + 0xb2c8, 0xab10, 0x8178, 0x98a0, 0xd5a8, 0xcc70, 0xe618, 0xffc0, + }, + { + 0x0000, 0x5adc, 0xb5b8, 0xef64, 0x6361, 0x39bd, 0xd6d9, 0x8c05, + 0xc6c2, 0x9c1e, 0x737a, 0x29a6, 0xa5a3, 0xff7f, 0x101b, 0x4ac7, + 0x8595, 0xdf49, 0x302d, 0x6af1, 0xe6f4, 0xbc28, 0x534c, 0x0990, + 0x4357, 0x198b, 0xf6ef, 0xac33, 0x2036, 0x7aea, 0x958e, 0xcf52, + 0x033b, 0x59e7, 0xb683, 0xec5f, 0x605a, 0x3a86, 0xd5e2, 0x8f3e, + 0xc5f9, 0x9f25, 0x7041, 0x2a9d, 0xa698, 0xfc44, 0x1320, 0x49fc, + 0x86ae, 0xdc72, 0x3316, 0x69ca, 0xe5cf, 0xbf13, 0x5077, 0x0aab, + 0x406c, 0x1ab0, 0xf5d4, 0xaf08, 0x230d, 0x79d1, 0x96b5, 0xcc69, + 0x0676, 0x5caa, 0xb3ce, 0xe912, 0x6517, 0x3fcb, 0xd0af, 0x8a73, + 0xc0b4, 0x9a68, 0x750c, 0x2fd0, 0xa3d5, 0xf909, 0x166d, 0x4cb1, + 0x83e3, 0xd93f, 0x365b, 0x6c87, 0xe082, 0xba5e, 0x553a, 0x0fe6, + 0x4521, 0x1ffd, 0xf099, 0xaa45, 0x2640, 0x7c9c, 0x93f8, 0xc924, + 0x054d, 0x5f91, 0xb0f5, 0xea29, 0x662c, 0x3cf0, 0xd394, 0x8948, + 0xc38f, 0x9953, 0x7637, 0x2ceb, 0xa0ee, 0xfa32, 0x1556, 0x4f8a, + 0x80d8, 0xda04, 0x3560, 0x6fbc, 0xe3b9, 0xb965, 0x5601, 0x0cdd, + 0x461a, 0x1cc6, 0xf3a2, 0xa97e, 0x257b, 0x7fa7, 0x90c3, 0xca1f, + 0x0cec, 0x5630, 0xb954, 0xe388, 0x6f8d, 0x3551, 0xda35, 0x80e9, + 0xca2e, 0x90f2, 0x7f96, 0x254a, 0xa94f, 0xf393, 0x1cf7, 0x462b, + 0x8979, 0xd3a5, 0x3cc1, 0x661d, 0xea18, 0xb0c4, 0x5fa0, 0x057c, + 0x4fbb, 0x1567, 0xfa03, 0xa0df, 0x2cda, 0x7606, 0x9962, 0xc3be, + 0x0fd7, 0x550b, 0xba6f, 0xe0b3, 0x6cb6, 0x366a, 0xd90e, 0x83d2, + 0xc915, 0x93c9, 0x7cad, 0x2671, 0xaa74, 0xf0a8, 0x1fcc, 0x4510, + 0x8a42, 0xd09e, 0x3ffa, 0x6526, 0xe923, 0xb3ff, 0x5c9b, 0x0647, + 0x4c80, 0x165c, 0xf938, 0xa3e4, 0x2fe1, 0x753d, 0x9a59, 0xc085, + 0x0a9a, 0x5046, 0xbf22, 0xe5fe, 0x69fb, 0x3327, 0xdc43, 0x869f, + 0xcc58, 0x9684, 0x79e0, 0x233c, 0xaf39, 0xf5e5, 0x1a81, 0x405d, + 0x8f0f, 0xd5d3, 0x3ab7, 0x606b, 0xec6e, 0xb6b2, 0x59d6, 0x030a, + 0x49cd, 0x1311, 0xfc75, 0xa6a9, 0x2aac, 0x7070, 0x9f14, 0xc5c8, + 0x09a1, 0x537d, 0xbc19, 0xe6c5, 0x6ac0, 0x301c, 0xdf78, 0x85a4, + 0xcf63, 0x95bf, 0x7adb, 0x2007, 0xac02, 0xf6de, 0x19ba, 0x4366, + 0x8c34, 0xd6e8, 0x398c, 0x6350, 0xef55, 0xb589, 0x5aed, 0x0031, + 0x4af6, 0x102a, 0xff4e, 0xa592, 0x2997, 0x734b, 0x9c2f, 0xc6f3, + }, + { + 0x0000, 0x1cbb, 0x3976, 0x25cd, 0x72ec, 0x6e57, 0x4b9a, 0x5721, + 0xe5d8, 0xf963, 0xdcae, 0xc015, 0x9734, 0x8b8f, 0xae42, 0xb2f9, + 0xc3a1, 0xdf1a, 0xfad7, 0xe66c, 0xb14d, 0xadf6, 0x883b, 0x9480, + 0x2679, 0x3ac2, 0x1f0f, 0x03b4, 0x5495, 0x482e, 0x6de3, 0x7158, + 0x8f53, 0x93e8, 0xb625, 0xaa9e, 0xfdbf, 0xe104, 0xc4c9, 0xd872, + 0x6a8b, 0x7630, 0x53fd, 0x4f46, 0x1867, 0x04dc, 0x2111, 0x3daa, + 0x4cf2, 0x5049, 0x7584, 0x693f, 0x3e1e, 0x22a5, 0x0768, 0x1bd3, + 0xa92a, 0xb591, 0x905c, 0x8ce7, 0xdbc6, 0xc77d, 0xe2b0, 0xfe0b, + 0x16b7, 0x0a0c, 0x2fc1, 0x337a, 0x645b, 0x78e0, 0x5d2d, 0x4196, + 0xf36f, 0xefd4, 0xca19, 0xd6a2, 0x8183, 0x9d38, 0xb8f5, 0xa44e, + 0xd516, 0xc9ad, 0xec60, 0xf0db, 0xa7fa, 0xbb41, 0x9e8c, 0x8237, + 0x30ce, 0x2c75, 0x09b8, 0x1503, 0x4222, 0x5e99, 0x7b54, 0x67ef, + 0x99e4, 0x855f, 0xa092, 0xbc29, 0xeb08, 0xf7b3, 0xd27e, 0xcec5, + 0x7c3c, 0x6087, 0x454a, 0x59f1, 0x0ed0, 0x126b, 0x37a6, 0x2b1d, + 0x5a45, 0x46fe, 0x6333, 0x7f88, 0x28a9, 0x3412, 0x11df, 0x0d64, + 0xbf9d, 0xa326, 0x86eb, 0x9a50, 0xcd71, 0xd1ca, 0xf407, 0xe8bc, + 0x2d6e, 0x31d5, 0x1418, 0x08a3, 0x5f82, 0x4339, 0x66f4, 0x7a4f, + 0xc8b6, 0xd40d, 0xf1c0, 0xed7b, 0xba5a, 0xa6e1, 0x832c, 0x9f97, + 0xeecf, 0xf274, 0xd7b9, 0xcb02, 0x9c23, 0x8098, 0xa555, 0xb9ee, + 0x0b17, 0x17ac, 0x3261, 0x2eda, 0x79fb, 0x6540, 0x408d, 0x5c36, + 0xa23d, 0xbe86, 0x9b4b, 0x87f0, 0xd0d1, 0xcc6a, 0xe9a7, 0xf51c, + 0x47e5, 0x5b5e, 0x7e93, 0x6228, 0x3509, 0x29b2, 0x0c7f, 0x10c4, + 0x619c, 0x7d27, 0x58ea, 0x4451, 0x1370, 0x0fcb, 0x2a06, 0x36bd, + 0x8444, 0x98ff, 0xbd32, 0xa189, 0xf6a8, 0xea13, 0xcfde, 0xd365, + 0x3bd9, 0x2762, 0x02af, 0x1e14, 0x4935, 0x558e, 0x7043, 0x6cf8, + 0xde01, 0xc2ba, 0xe777, 0xfbcc, 0xaced, 0xb056, 0x959b, 0x8920, + 0xf878, 0xe4c3, 0xc10e, 0xddb5, 0x8a94, 0x962f, 0xb3e2, 0xaf59, + 0x1da0, 0x011b, 0x24d6, 0x386d, 0x6f4c, 0x73f7, 0x563a, 0x4a81, + 0xb48a, 0xa831, 0x8dfc, 0x9147, 0xc666, 0xdadd, 0xff10, 0xe3ab, + 0x5152, 0x4de9, 0x6824, 0x749f, 0x23be, 0x3f05, 0x1ac8, 0x0673, + 0x772b, 0x6b90, 0x4e5d, 0x52e6, 0x05c7, 0x197c, 0x3cb1, 0x200a, + 0x92f3, 0x8e48, 0xab85, 0xb73e, 0xe01f, 0xfca4, 0xd969, 0xc5d2, + }, + { + 0x0000, 0x0b44, 0x1688, 0x1dcc, 0x2d10, 0x2654, 0x3b98, 0x30dc, + 0x5a20, 0x5164, 0x4ca8, 0x47ec, 0x7730, 0x7c74, 0x61b8, 0x6afc, + 0xb440, 0xbf04, 0xa2c8, 0xa98c, 0x9950, 0x9214, 0x8fd8, 0x849c, + 0xee60, 0xe524, 0xf8e8, 0xf3ac, 0xc370, 0xc834, 0xd5f8, 0xdebc, + 0x6091, 0x6bd5, 0x7619, 0x7d5d, 0x4d81, 0x46c5, 0x5b09, 0x504d, + 0x3ab1, 0x31f5, 0x2c39, 0x277d, 0x17a1, 0x1ce5, 0x0129, 0x0a6d, + 0xd4d1, 0xdf95, 0xc259, 0xc91d, 0xf9c1, 0xf285, 0xef49, 0xe40d, + 0x8ef1, 0x85b5, 0x9879, 0x933d, 0xa3e1, 0xa8a5, 0xb569, 0xbe2d, + 0xc122, 0xca66, 0xd7aa, 0xdcee, 0xec32, 0xe776, 0xfaba, 0xf1fe, + 0x9b02, 0x9046, 0x8d8a, 0x86ce, 0xb612, 0xbd56, 0xa09a, 0xabde, + 0x7562, 0x7e26, 0x63ea, 0x68ae, 0x5872, 0x5336, 0x4efa, 0x45be, + 0x2f42, 0x2406, 0x39ca, 0x328e, 0x0252, 0x0916, 0x14da, 0x1f9e, + 0xa1b3, 0xaaf7, 0xb73b, 0xbc7f, 0x8ca3, 0x87e7, 0x9a2b, 0x916f, + 0xfb93, 0xf0d7, 0xed1b, 0xe65f, 0xd683, 0xddc7, 0xc00b, 0xcb4f, + 0x15f3, 0x1eb7, 0x037b, 0x083f, 0x38e3, 0x33a7, 0x2e6b, 0x252f, + 0x4fd3, 0x4497, 0x595b, 0x521f, 0x62c3, 0x6987, 0x744b, 0x7f0f, + 0x8a55, 0x8111, 0x9cdd, 0x9799, 0xa745, 0xac01, 0xb1cd, 0xba89, + 0xd075, 0xdb31, 0xc6fd, 0xcdb9, 0xfd65, 0xf621, 0xebed, 0xe0a9, + 0x3e15, 0x3551, 0x289d, 0x23d9, 0x1305, 0x1841, 0x058d, 0x0ec9, + 0x6435, 0x6f71, 0x72bd, 0x79f9, 0x4925, 0x4261, 0x5fad, 0x54e9, + 0xeac4, 0xe180, 0xfc4c, 0xf708, 0xc7d4, 0xcc90, 0xd15c, 0xda18, + 0xb0e4, 0xbba0, 0xa66c, 0xad28, 0x9df4, 0x96b0, 0x8b7c, 0x8038, + 0x5e84, 0x55c0, 0x480c, 0x4348, 0x7394, 0x78d0, 0x651c, 0x6e58, + 0x04a4, 0x0fe0, 0x122c, 0x1968, 0x29b4, 0x22f0, 0x3f3c, 0x3478, + 0x4b77, 0x4033, 0x5dff, 0x56bb, 0x6667, 0x6d23, 0x70ef, 0x7bab, + 0x1157, 0x1a13, 0x07df, 0x0c9b, 0x3c47, 0x3703, 0x2acf, 0x218b, + 0xff37, 0xf473, 0xe9bf, 0xe2fb, 0xd227, 0xd963, 0xc4af, 0xcfeb, + 0xa517, 0xae53, 0xb39f, 0xb8db, 0x8807, 0x8343, 0x9e8f, 0x95cb, + 0x2be6, 0x20a2, 0x3d6e, 0x362a, 0x06f6, 0x0db2, 0x107e, 0x1b3a, + 0x71c6, 0x7a82, 0x674e, 0x6c0a, 0x5cd6, 0x5792, 0x4a5e, 0x411a, + 0x9fa6, 0x94e2, 0x892e, 0x826a, 0xb2b6, 0xb9f2, 0xa43e, 0xaf7a, + 0xc586, 0xcec2, 0xd30e, 0xd84a, 0xe896, 0xe3d2, 0xfe1e, 0xf55a, + }, + { + 0x0000, 0x042b, 0x0856, 0x0c7d, 0x10ac, 0x1487, 0x18fa, 0x1cd1, + 0x2158, 0x2573, 0x290e, 0x2d25, 0x31f4, 0x35df, 0x39a2, 0x3d89, + 0x42b0, 0x469b, 0x4ae6, 0x4ecd, 0x521c, 0x5637, 0x5a4a, 0x5e61, + 0x63e8, 0x67c3, 0x6bbe, 0x6f95, 0x7344, 0x776f, 0x7b12, 0x7f39, + 0x8560, 0x814b, 0x8d36, 0x891d, 0x95cc, 0x91e7, 0x9d9a, 0x99b1, + 0xa438, 0xa013, 0xac6e, 0xa845, 0xb494, 0xb0bf, 0xbcc2, 0xb8e9, + 0xc7d0, 0xc3fb, 0xcf86, 0xcbad, 0xd77c, 0xd357, 0xdf2a, 0xdb01, + 0xe688, 0xe2a3, 0xeede, 0xeaf5, 0xf624, 0xf20f, 0xfe72, 0xfa59, + 0x02d1, 0x06fa, 0x0a87, 0x0eac, 0x127d, 0x1656, 0x1a2b, 0x1e00, + 0x2389, 0x27a2, 0x2bdf, 0x2ff4, 0x3325, 0x370e, 0x3b73, 0x3f58, + 0x4061, 0x444a, 0x4837, 0x4c1c, 0x50cd, 0x54e6, 0x589b, 0x5cb0, + 0x6139, 0x6512, 0x696f, 0x6d44, 0x7195, 0x75be, 0x79c3, 0x7de8, + 0x87b1, 0x839a, 0x8fe7, 0x8bcc, 0x971d, 0x9336, 0x9f4b, 0x9b60, + 0xa6e9, 0xa2c2, 0xaebf, 0xaa94, 0xb645, 0xb26e, 0xbe13, 0xba38, + 0xc501, 0xc12a, 0xcd57, 0xc97c, 0xd5ad, 0xd186, 0xddfb, 0xd9d0, + 0xe459, 0xe072, 0xec0f, 0xe824, 0xf4f5, 0xf0de, 0xfca3, 0xf888, + 0x05a2, 0x0189, 0x0df4, 0x09df, 0x150e, 0x1125, 0x1d58, 0x1973, + 0x24fa, 0x20d1, 0x2cac, 0x2887, 0x3456, 0x307d, 0x3c00, 0x382b, + 0x4712, 0x4339, 0x4f44, 0x4b6f, 0x57be, 0x5395, 0x5fe8, 0x5bc3, + 0x664a, 0x6261, 0x6e1c, 0x6a37, 0x76e6, 0x72cd, 0x7eb0, 0x7a9b, + 0x80c2, 0x84e9, 0x8894, 0x8cbf, 0x906e, 0x9445, 0x9838, 0x9c13, + 0xa19a, 0xa5b1, 0xa9cc, 0xade7, 0xb136, 0xb51d, 0xb960, 0xbd4b, + 0xc272, 0xc659, 0xca24, 0xce0f, 0xd2de, 0xd6f5, 0xda88, 0xdea3, + 0xe32a, 0xe701, 0xeb7c, 0xef57, 0xf386, 0xf7ad, 0xfbd0, 0xfffb, + 0x0773, 0x0358, 0x0f25, 0x0b0e, 0x17df, 0x13f4, 0x1f89, 0x1ba2, + 0x262b, 0x2200, 0x2e7d, 0x2a56, 0x3687, 0x32ac, 0x3ed1, 0x3afa, + 0x45c3, 0x41e8, 0x4d95, 0x49be, 0x556f, 0x5144, 0x5d39, 0x5912, + 0x649b, 0x60b0, 0x6ccd, 0x68e6, 0x7437, 0x701c, 0x7c61, 0x784a, + 0x8213, 0x8638, 0x8a45, 0x8e6e, 0x92bf, 0x9694, 0x9ae9, 0x9ec2, + 0xa34b, 0xa760, 0xab1d, 0xaf36, 0xb3e7, 0xb7cc, 0xbbb1, 0xbf9a, + 0xc0a3, 0xc488, 0xc8f5, 0xccde, 0xd00f, 0xd424, 0xd859, 0xdc72, + 0xe1fb, 0xe5d0, 0xe9ad, 0xed86, 0xf157, 0xf57c, 0xf901, 0xfd2a, + }, + { + 0x0000, 0x9fd5, 0x37bb, 0xa86e, 0x6f76, 0xf0a3, 0x58cd, 0xc718, + 0xdeec, 0x4139, 0xe957, 0x7682, 0xb19a, 0x2e4f, 0x8621, 0x19f4, + 0xb5c9, 0x2a1c, 0x8272, 0x1da7, 0xdabf, 0x456a, 0xed04, 0x72d1, + 0x6b25, 0xf4f0, 0x5c9e, 0xc34b, 0x0453, 0x9b86, 0x33e8, 0xac3d, + 0x6383, 0xfc56, 0x5438, 0xcbed, 0x0cf5, 0x9320, 0x3b4e, 0xa49b, + 0xbd6f, 0x22ba, 0x8ad4, 0x1501, 0xd219, 0x4dcc, 0xe5a2, 0x7a77, + 0xd64a, 0x499f, 0xe1f1, 0x7e24, 0xb93c, 0x26e9, 0x8e87, 0x1152, + 0x08a6, 0x9773, 0x3f1d, 0xa0c8, 0x67d0, 0xf805, 0x506b, 0xcfbe, + 0xc706, 0x58d3, 0xf0bd, 0x6f68, 0xa870, 0x37a5, 0x9fcb, 0x001e, + 0x19ea, 0x863f, 0x2e51, 0xb184, 0x769c, 0xe949, 0x4127, 0xdef2, + 0x72cf, 0xed1a, 0x4574, 0xdaa1, 0x1db9, 0x826c, 0x2a02, 0xb5d7, + 0xac23, 0x33f6, 0x9b98, 0x044d, 0xc355, 0x5c80, 0xf4ee, 0x6b3b, + 0xa485, 0x3b50, 0x933e, 0x0ceb, 0xcbf3, 0x5426, 0xfc48, 0x639d, + 0x7a69, 0xe5bc, 0x4dd2, 0xd207, 0x151f, 0x8aca, 0x22a4, 0xbd71, + 0x114c, 0x8e99, 0x26f7, 0xb922, 0x7e3a, 0xe1ef, 0x4981, 0xd654, + 0xcfa0, 0x5075, 0xf81b, 0x67ce, 0xa0d6, 0x3f03, 0x976d, 0x08b8, + 0x861d, 0x19c8, 0xb1a6, 0x2e73, 0xe96b, 0x76be, 0xded0, 0x4105, + 0x58f1, 0xc724, 0x6f4a, 0xf09f, 0x3787, 0xa852, 0x003c, 0x9fe9, + 0x33d4, 0xac01, 0x046f, 0x9bba, 0x5ca2, 0xc377, 0x6b19, 0xf4cc, + 0xed38, 0x72ed, 0xda83, 0x4556, 0x824e, 0x1d9b, 0xb5f5, 0x2a20, + 0xe59e, 0x7a4b, 0xd225, 0x4df0, 0x8ae8, 0x153d, 0xbd53, 0x2286, + 0x3b72, 0xa4a7, 0x0cc9, 0x931c, 0x5404, 0xcbd1, 0x63bf, 0xfc6a, + 0x5057, 0xcf82, 0x67ec, 0xf839, 0x3f21, 0xa0f4, 0x089a, 0x974f, + 0x8ebb, 0x116e, 0xb900, 0x26d5, 0xe1cd, 0x7e18, 0xd676, 0x49a3, + 0x411b, 0xdece, 0x76a0, 0xe975, 0x2e6d, 0xb1b8, 0x19d6, 0x8603, + 0x9ff7, 0x0022, 0xa84c, 0x3799, 0xf081, 0x6f54, 0xc73a, 0x58ef, + 0xf4d2, 0x6b07, 0xc369, 0x5cbc, 0x9ba4, 0x0471, 0xac1f, 0x33ca, + 0x2a3e, 0xb5eb, 0x1d85, 0x8250, 0x4548, 0xda9d, 0x72f3, 0xed26, + 0x2298, 0xbd4d, 0x1523, 0x8af6, 0x4dee, 0xd23b, 0x7a55, 0xe580, + 0xfc74, 0x63a1, 0xcbcf, 0x541a, 0x9302, 0x0cd7, 0xa4b9, 0x3b6c, + 0x9751, 0x0884, 0xa0ea, 0x3f3f, 0xf827, 0x67f2, 0xcf9c, 0x5049, + 0x49bd, 0xd668, 0x7e06, 0xe1d3, 0x26cb, 0xb91e, 0x1170, 0x8ea5, + }, + { + 0x0000, 0x81bf, 0x0b6f, 0x8ad0, 0x16de, 0x9761, 0x1db1, 0x9c0e, + 0x2dbc, 0xac03, 0x26d3, 0xa76c, 0x3b62, 0xbadd, 0x300d, 0xb1b2, + 0x5b78, 0xdac7, 0x5017, 0xd1a8, 0x4da6, 0xcc19, 0x46c9, 0xc776, + 0x76c4, 0xf77b, 0x7dab, 0xfc14, 0x601a, 0xe1a5, 0x6b75, 0xeaca, + 0xb6f0, 0x374f, 0xbd9f, 0x3c20, 0xa02e, 0x2191, 0xab41, 0x2afe, + 0x9b4c, 0x1af3, 0x9023, 0x119c, 0x8d92, 0x0c2d, 0x86fd, 0x0742, + 0xed88, 0x6c37, 0xe6e7, 0x6758, 0xfb56, 0x7ae9, 0xf039, 0x7186, + 0xc034, 0x418b, 0xcb5b, 0x4ae4, 0xd6ea, 0x5755, 0xdd85, 0x5c3a, + 0x65f1, 0xe44e, 0x6e9e, 0xef21, 0x732f, 0xf290, 0x7840, 0xf9ff, + 0x484d, 0xc9f2, 0x4322, 0xc29d, 0x5e93, 0xdf2c, 0x55fc, 0xd443, + 0x3e89, 0xbf36, 0x35e6, 0xb459, 0x2857, 0xa9e8, 0x2338, 0xa287, + 0x1335, 0x928a, 0x185a, 0x99e5, 0x05eb, 0x8454, 0x0e84, 0x8f3b, + 0xd301, 0x52be, 0xd86e, 0x59d1, 0xc5df, 0x4460, 0xceb0, 0x4f0f, + 0xfebd, 0x7f02, 0xf5d2, 0x746d, 0xe863, 0x69dc, 0xe30c, 0x62b3, + 0x8879, 0x09c6, 0x8316, 0x02a9, 0x9ea7, 0x1f18, 0x95c8, 0x1477, + 0xa5c5, 0x247a, 0xaeaa, 0x2f15, 0xb31b, 0x32a4, 0xb874, 0x39cb, + 0xcbe2, 0x4a5d, 0xc08d, 0x4132, 0xdd3c, 0x5c83, 0xd653, 0x57ec, + 0xe65e, 0x67e1, 0xed31, 0x6c8e, 0xf080, 0x713f, 0xfbef, 0x7a50, + 0x909a, 0x1125, 0x9bf5, 0x1a4a, 0x8644, 0x07fb, 0x8d2b, 0x0c94, + 0xbd26, 0x3c99, 0xb649, 0x37f6, 0xabf8, 0x2a47, 0xa097, 0x2128, + 0x7d12, 0xfcad, 0x767d, 0xf7c2, 0x6bcc, 0xea73, 0x60a3, 0xe11c, + 0x50ae, 0xd111, 0x5bc1, 0xda7e, 0x4670, 0xc7cf, 0x4d1f, 0xcca0, + 0x266a, 0xa7d5, 0x2d05, 0xacba, 0x30b4, 0xb10b, 0x3bdb, 0xba64, + 0x0bd6, 0x8a69, 0x00b9, 0x8106, 0x1d08, 0x9cb7, 0x1667, 0x97d8, + 0xae13, 0x2fac, 0xa57c, 0x24c3, 0xb8cd, 0x3972, 0xb3a2, 0x321d, + 0x83af, 0x0210, 0x88c0, 0x097f, 0x9571, 0x14ce, 0x9e1e, 0x1fa1, + 0xf56b, 0x74d4, 0xfe04, 0x7fbb, 0xe3b5, 0x620a, 0xe8da, 0x6965, + 0xd8d7, 0x5968, 0xd3b8, 0x5207, 0xce09, 0x4fb6, 0xc566, 0x44d9, + 0x18e3, 0x995c, 0x138c, 0x9233, 0x0e3d, 0x8f82, 0x0552, 0x84ed, + 0x355f, 0xb4e0, 0x3e30, 0xbf8f, 0x2381, 0xa23e, 0x28ee, 0xa951, + 0x439b, 0xc224, 0x48f4, 0xc94b, 0x5545, 0xd4fa, 0x5e2a, 0xdf95, + 0x6e27, 0xef98, 0x6548, 0xe4f7, 0x78f9, 0xf946, 0x7396, 0xf229, + }, + { + 0x0000, 0x4dfd, 0x9bfa, 0xd607, 0x3fe5, 0x7218, 0xa41f, 0xe9e2, + 0x7fca, 0x3237, 0xe430, 0xa9cd, 0x402f, 0x0dd2, 0xdbd5, 0x9628, + 0xff94, 0xb269, 0x646e, 0x2993, 0xc071, 0x8d8c, 0x5b8b, 0x1676, + 0x805e, 0xcda3, 0x1ba4, 0x5659, 0xbfbb, 0xf246, 0x2441, 0x69bc, + 0xf739, 0xbac4, 0x6cc3, 0x213e, 0xc8dc, 0x8521, 0x5326, 0x1edb, + 0x88f3, 0xc50e, 0x1309, 0x5ef4, 0xb716, 0xfaeb, 0x2cec, 0x6111, + 0x08ad, 0x4550, 0x9357, 0xdeaa, 0x3748, 0x7ab5, 0xacb2, 0xe14f, + 0x7767, 0x3a9a, 0xec9d, 0xa160, 0x4882, 0x057f, 0xd378, 0x9e85, + 0xe663, 0xab9e, 0x7d99, 0x3064, 0xd986, 0x947b, 0x427c, 0x0f81, + 0x99a9, 0xd454, 0x0253, 0x4fae, 0xa64c, 0xebb1, 0x3db6, 0x704b, + 0x19f7, 0x540a, 0x820d, 0xcff0, 0x2612, 0x6bef, 0xbde8, 0xf015, + 0x663d, 0x2bc0, 0xfdc7, 0xb03a, 0x59d8, 0x1425, 0xc222, 0x8fdf, + 0x115a, 0x5ca7, 0x8aa0, 0xc75d, 0x2ebf, 0x6342, 0xb545, 0xf8b8, + 0x6e90, 0x236d, 0xf56a, 0xb897, 0x5175, 0x1c88, 0xca8f, 0x8772, + 0xeece, 0xa333, 0x7534, 0x38c9, 0xd12b, 0x9cd6, 0x4ad1, 0x072c, + 0x9104, 0xdcf9, 0x0afe, 0x4703, 0xaee1, 0xe31c, 0x351b, 0x78e6, + 0xc4d7, 0x892a, 0x5f2d, 0x12d0, 0xfb32, 0xb6cf, 0x60c8, 0x2d35, + 0xbb1d, 0xf6e0, 0x20e7, 0x6d1a, 0x84f8, 0xc905, 0x1f02, 0x52ff, + 0x3b43, 0x76be, 0xa0b9, 0xed44, 0x04a6, 0x495b, 0x9f5c, 0xd2a1, + 0x4489, 0x0974, 0xdf73, 0x928e, 0x7b6c, 0x3691, 0xe096, 0xad6b, + 0x33ee, 0x7e13, 0xa814, 0xe5e9, 0x0c0b, 0x41f6, 0x97f1, 0xda0c, + 0x4c24, 0x01d9, 0xd7de, 0x9a23, 0x73c1, 0x3e3c, 0xe83b, 0xa5c6, + 0xcc7a, 0x8187, 0x5780, 0x1a7d, 0xf39f, 0xbe62, 0x6865, 0x2598, + 0xb3b0, 0xfe4d, 0x284a, 0x65b7, 0x8c55, 0xc1a8, 0x17af, 0x5a52, + 0x22b4, 0x6f49, 0xb94e, 0xf4b3, 0x1d51, 0x50ac, 0x86ab, 0xcb56, + 0x5d7e, 0x1083, 0xc684, 0x8b79, 0x629b, 0x2f66, 0xf961, 0xb49c, + 0xdd20, 0x90dd, 0x46da, 0x0b27, 0xe2c5, 0xaf38, 0x793f, 0x34c2, + 0xa2ea, 0xef17, 0x3910, 0x74ed, 0x9d0f, 0xd0f2, 0x06f5, 0x4b08, + 0xd58d, 0x9870, 0x4e77, 0x038a, 0xea68, 0xa795, 0x7192, 0x3c6f, + 0xaa47, 0xe7ba, 0x31bd, 0x7c40, 0x95a2, 0xd85f, 0x0e58, 0x43a5, + 0x2a19, 0x67e4, 0xb1e3, 0xfc1e, 0x15fc, 0x5801, 0x8e06, 0xc3fb, + 0x55d3, 0x182e, 0xce29, 0x83d4, 0x6a36, 0x27cb, 0xf1cc, 0xbc31, + }, + { + 0x0000, 0x2c27, 0x584e, 0x7469, 0xb09c, 0x9cbb, 0xe8d2, 0xc4f5, + 0x6929, 0x450e, 0x3167, 0x1d40, 0xd9b5, 0xf592, 0x81fb, 0xaddc, + 0xd252, 0xfe75, 0x8a1c, 0xa63b, 0x62ce, 0x4ee9, 0x3a80, 0x16a7, + 0xbb7b, 0x975c, 0xe335, 0xcf12, 0x0be7, 0x27c0, 0x53a9, 0x7f8e, + 0xacb5, 0x8092, 0xf4fb, 0xd8dc, 0x1c29, 0x300e, 0x4467, 0x6840, + 0xc59c, 0xe9bb, 0x9dd2, 0xb1f5, 0x7500, 0x5927, 0x2d4e, 0x0169, + 0x7ee7, 0x52c0, 0x26a9, 0x0a8e, 0xce7b, 0xe25c, 0x9635, 0xba12, + 0x17ce, 0x3be9, 0x4f80, 0x63a7, 0xa752, 0x8b75, 0xff1c, 0xd33b, + 0x517b, 0x7d5c, 0x0935, 0x2512, 0xe1e7, 0xcdc0, 0xb9a9, 0x958e, + 0x3852, 0x1475, 0x601c, 0x4c3b, 0x88ce, 0xa4e9, 0xd080, 0xfca7, + 0x8329, 0xaf0e, 0xdb67, 0xf740, 0x33b5, 0x1f92, 0x6bfb, 0x47dc, + 0xea00, 0xc627, 0xb24e, 0x9e69, 0x5a9c, 0x76bb, 0x02d2, 0x2ef5, + 0xfdce, 0xd1e9, 0xa580, 0x89a7, 0x4d52, 0x6175, 0x151c, 0x393b, + 0x94e7, 0xb8c0, 0xcca9, 0xe08e, 0x247b, 0x085c, 0x7c35, 0x5012, + 0x2f9c, 0x03bb, 0x77d2, 0x5bf5, 0x9f00, 0xb327, 0xc74e, 0xeb69, + 0x46b5, 0x6a92, 0x1efb, 0x32dc, 0xf629, 0xda0e, 0xae67, 0x8240, + 0xa2f6, 0x8ed1, 0xfab8, 0xd69f, 0x126a, 0x3e4d, 0x4a24, 0x6603, + 0xcbdf, 0xe7f8, 0x9391, 0xbfb6, 0x7b43, 0x5764, 0x230d, 0x0f2a, + 0x70a4, 0x5c83, 0x28ea, 0x04cd, 0xc038, 0xec1f, 0x9876, 0xb451, + 0x198d, 0x35aa, 0x41c3, 0x6de4, 0xa911, 0x8536, 0xf15f, 0xdd78, + 0x0e43, 0x2264, 0x560d, 0x7a2a, 0xbedf, 0x92f8, 0xe691, 0xcab6, + 0x676a, 0x4b4d, 0x3f24, 0x1303, 0xd7f6, 0xfbd1, 0x8fb8, 0xa39f, + 0xdc11, 0xf036, 0x845f, 0xa878, 0x6c8d, 0x40aa, 0x34c3, 0x18e4, + 0xb538, 0x991f, 0xed76, 0xc151, 0x05a4, 0x2983, 0x5dea, 0x71cd, + 0xf38d, 0xdfaa, 0xabc3, 0x87e4, 0x4311, 0x6f36, 0x1b5f, 0x3778, + 0x9aa4, 0xb683, 0xc2ea, 0xeecd, 0x2a38, 0x061f, 0x7276, 0x5e51, + 0x21df, 0x0df8, 0x7991, 0x55b6, 0x9143, 0xbd64, 0xc90d, 0xe52a, + 0x48f6, 0x64d1, 0x10b8, 0x3c9f, 0xf86a, 0xd44d, 0xa024, 0x8c03, + 0x5f38, 0x731f, 0x0776, 0x2b51, 0xefa4, 0xc383, 0xb7ea, 0x9bcd, + 0x3611, 0x1a36, 0x6e5f, 0x4278, 0x868d, 0xaaaa, 0xdec3, 0xf2e4, + 0x8d6a, 0xa14d, 0xd524, 0xf903, 0x3df6, 0x11d1, 0x65b8, 0x499f, + 0xe443, 0xc864, 0xbc0d, 0x902a, 0x54df, 0x78f8, 0x0c91, 0x20b6, + }, + { + 0x0000, 0x5591, 0xab22, 0xfeb3, 0x5e55, 0x0bc4, 0xf577, 0xa0e6, + 0xbcaa, 0xe93b, 0x1788, 0x4219, 0xe2ff, 0xb76e, 0x49dd, 0x1c4c, + 0x7145, 0x24d4, 0xda67, 0x8ff6, 0x2f10, 0x7a81, 0x8432, 0xd1a3, + 0xcdef, 0x987e, 0x66cd, 0x335c, 0x93ba, 0xc62b, 0x3898, 0x6d09, + 0xe28a, 0xb71b, 0x49a8, 0x1c39, 0xbcdf, 0xe94e, 0x17fd, 0x426c, + 0x5e20, 0x0bb1, 0xf502, 0xa093, 0x0075, 0x55e4, 0xab57, 0xfec6, + 0x93cf, 0xc65e, 0x38ed, 0x6d7c, 0xcd9a, 0x980b, 0x66b8, 0x3329, + 0x2f65, 0x7af4, 0x8447, 0xd1d6, 0x7130, 0x24a1, 0xda12, 0x8f83, + 0xcd05, 0x9894, 0x6627, 0x33b6, 0x9350, 0xc6c1, 0x3872, 0x6de3, + 0x71af, 0x243e, 0xda8d, 0x8f1c, 0x2ffa, 0x7a6b, 0x84d8, 0xd149, + 0xbc40, 0xe9d1, 0x1762, 0x42f3, 0xe215, 0xb784, 0x4937, 0x1ca6, + 0x00ea, 0x557b, 0xabc8, 0xfe59, 0x5ebf, 0x0b2e, 0xf59d, 0xa00c, + 0x2f8f, 0x7a1e, 0x84ad, 0xd13c, 0x71da, 0x244b, 0xdaf8, 0x8f69, + 0x9325, 0xc6b4, 0x3807, 0x6d96, 0xcd70, 0x98e1, 0x6652, 0x33c3, + 0x5eca, 0x0b5b, 0xf5e8, 0xa079, 0x009f, 0x550e, 0xabbd, 0xfe2c, + 0xe260, 0xb7f1, 0x4942, 0x1cd3, 0xbc35, 0xe9a4, 0x1717, 0x4286, + 0x921b, 0xc78a, 0x3939, 0x6ca8, 0xcc4e, 0x99df, 0x676c, 0x32fd, + 0x2eb1, 0x7b20, 0x8593, 0xd002, 0x70e4, 0x2575, 0xdbc6, 0x8e57, + 0xe35e, 0xb6cf, 0x487c, 0x1ded, 0xbd0b, 0xe89a, 0x1629, 0x43b8, + 0x5ff4, 0x0a65, 0xf4d6, 0xa147, 0x01a1, 0x5430, 0xaa83, 0xff12, + 0x7091, 0x2500, 0xdbb3, 0x8e22, 0x2ec4, 0x7b55, 0x85e6, 0xd077, + 0xcc3b, 0x99aa, 0x6719, 0x3288, 0x926e, 0xc7ff, 0x394c, 0x6cdd, + 0x01d4, 0x5445, 0xaaf6, 0xff67, 0x5f81, 0x0a10, 0xf4a3, 0xa132, + 0xbd7e, 0xe8ef, 0x165c, 0x43cd, 0xe32b, 0xb6ba, 0x4809, 0x1d98, + 0x5f1e, 0x0a8f, 0xf43c, 0xa1ad, 0x014b, 0x54da, 0xaa69, 0xfff8, + 0xe3b4, 0xb625, 0x4896, 0x1d07, 0xbde1, 0xe870, 0x16c3, 0x4352, + 0x2e5b, 0x7bca, 0x8579, 0xd0e8, 0x700e, 0x259f, 0xdb2c, 0x8ebd, + 0x92f1, 0xc760, 0x39d3, 0x6c42, 0xcca4, 0x9935, 0x6786, 0x3217, + 0xbd94, 0xe805, 0x16b6, 0x4327, 0xe3c1, 0xb650, 0x48e3, 0x1d72, + 0x013e, 0x54af, 0xaa1c, 0xff8d, 0x5f6b, 0x0afa, 0xf449, 0xa1d8, + 0xccd1, 0x9940, 0x67f3, 0x3262, 0x9284, 0xc715, 0x39a6, 0x6c37, + 0x707b, 0x25ea, 0xdb59, 0x8ec8, 0x2e2e, 0x7bbf, 0x850c, 0xd09d, + }, + { + 0x0000, 0x8555, 0x02bb, 0x87ee, 0x0576, 0x8023, 0x07cd, 0x8298, + 0x0aec, 0x8fb9, 0x0857, 0x8d02, 0x0f9a, 0x8acf, 0x0d21, 0x8874, + 0x15d8, 0x908d, 0x1763, 0x9236, 0x10ae, 0x95fb, 0x1215, 0x9740, + 0x1f34, 0x9a61, 0x1d8f, 0x98da, 0x1a42, 0x9f17, 0x18f9, 0x9dac, + 0x2bb0, 0xaee5, 0x290b, 0xac5e, 0x2ec6, 0xab93, 0x2c7d, 0xa928, + 0x215c, 0xa409, 0x23e7, 0xa6b2, 0x242a, 0xa17f, 0x2691, 0xa3c4, + 0x3e68, 0xbb3d, 0x3cd3, 0xb986, 0x3b1e, 0xbe4b, 0x39a5, 0xbcf0, + 0x3484, 0xb1d1, 0x363f, 0xb36a, 0x31f2, 0xb4a7, 0x3349, 0xb61c, + 0x5760, 0xd235, 0x55db, 0xd08e, 0x5216, 0xd743, 0x50ad, 0xd5f8, + 0x5d8c, 0xd8d9, 0x5f37, 0xda62, 0x58fa, 0xddaf, 0x5a41, 0xdf14, + 0x42b8, 0xc7ed, 0x4003, 0xc556, 0x47ce, 0xc29b, 0x4575, 0xc020, + 0x4854, 0xcd01, 0x4aef, 0xcfba, 0x4d22, 0xc877, 0x4f99, 0xcacc, + 0x7cd0, 0xf985, 0x7e6b, 0xfb3e, 0x79a6, 0xfcf3, 0x7b1d, 0xfe48, + 0x763c, 0xf369, 0x7487, 0xf1d2, 0x734a, 0xf61f, 0x71f1, 0xf4a4, + 0x6908, 0xec5d, 0x6bb3, 0xeee6, 0x6c7e, 0xe92b, 0x6ec5, 0xeb90, + 0x63e4, 0xe6b1, 0x615f, 0xe40a, 0x6692, 0xe3c7, 0x6429, 0xe17c, + 0xaec0, 0x2b95, 0xac7b, 0x292e, 0xabb6, 0x2ee3, 0xa90d, 0x2c58, + 0xa42c, 0x2179, 0xa697, 0x23c2, 0xa15a, 0x240f, 0xa3e1, 0x26b4, + 0xbb18, 0x3e4d, 0xb9a3, 0x3cf6, 0xbe6e, 0x3b3b, 0xbcd5, 0x3980, + 0xb1f4, 0x34a1, 0xb34f, 0x361a, 0xb482, 0x31d7, 0xb639, 0x336c, + 0x8570, 0x0025, 0x87cb, 0x029e, 0x8006, 0x0553, 0x82bd, 0x07e8, + 0x8f9c, 0x0ac9, 0x8d27, 0x0872, 0x8aea, 0x0fbf, 0x8851, 0x0d04, + 0x90a8, 0x15fd, 0x9213, 0x1746, 0x95de, 0x108b, 0x9765, 0x1230, + 0x9a44, 0x1f11, 0x98ff, 0x1daa, 0x9f32, 0x1a67, 0x9d89, 0x18dc, + 0xf9a0, 0x7cf5, 0xfb1b, 0x7e4e, 0xfcd6, 0x7983, 0xfe6d, 0x7b38, + 0xf34c, 0x7619, 0xf1f7, 0x74a2, 0xf63a, 0x736f, 0xf481, 0x71d4, + 0xec78, 0x692d, 0xeec3, 0x6b96, 0xe90e, 0x6c5b, 0xebb5, 0x6ee0, + 0xe694, 0x63c1, 0xe42f, 0x617a, 0xe3e2, 0x66b7, 0xe159, 0x640c, + 0xd210, 0x5745, 0xd0ab, 0x55fe, 0xd766, 0x5233, 0xd5dd, 0x5088, + 0xd8fc, 0x5da9, 0xda47, 0x5f12, 0xdd8a, 0x58df, 0xdf31, 0x5a64, + 0xc7c8, 0x429d, 0xc573, 0x4026, 0xc2be, 0x47eb, 0xc005, 0x4550, + 0xcd24, 0x4871, 0xcf9f, 0x4aca, 0xc852, 0x4d07, 0xcae9, 0x4fbc, + }, + { + 0x0000, 0x05ad, 0x0b5a, 0x0ef7, 0x16b4, 0x1319, 0x1dee, 0x1843, + 0x2d68, 0x28c5, 0x2632, 0x239f, 0x3bdc, 0x3e71, 0x3086, 0x352b, + 0x5ad0, 0x5f7d, 0x518a, 0x5427, 0x4c64, 0x49c9, 0x473e, 0x4293, + 0x77b8, 0x7215, 0x7ce2, 0x794f, 0x610c, 0x64a1, 0x6a56, 0x6ffb, + 0xb5a0, 0xb00d, 0xbefa, 0xbb57, 0xa314, 0xa6b9, 0xa84e, 0xade3, + 0x98c8, 0x9d65, 0x9392, 0x963f, 0x8e7c, 0x8bd1, 0x8526, 0x808b, + 0xef70, 0xeadd, 0xe42a, 0xe187, 0xf9c4, 0xfc69, 0xf29e, 0xf733, + 0xc218, 0xc7b5, 0xc942, 0xccef, 0xd4ac, 0xd101, 0xdff6, 0xda5b, + 0x6351, 0x66fc, 0x680b, 0x6da6, 0x75e5, 0x7048, 0x7ebf, 0x7b12, + 0x4e39, 0x4b94, 0x4563, 0x40ce, 0x588d, 0x5d20, 0x53d7, 0x567a, + 0x3981, 0x3c2c, 0x32db, 0x3776, 0x2f35, 0x2a98, 0x246f, 0x21c2, + 0x14e9, 0x1144, 0x1fb3, 0x1a1e, 0x025d, 0x07f0, 0x0907, 0x0caa, + 0xd6f1, 0xd35c, 0xddab, 0xd806, 0xc045, 0xc5e8, 0xcb1f, 0xceb2, + 0xfb99, 0xfe34, 0xf0c3, 0xf56e, 0xed2d, 0xe880, 0xe677, 0xe3da, + 0x8c21, 0x898c, 0x877b, 0x82d6, 0x9a95, 0x9f38, 0x91cf, 0x9462, + 0xa149, 0xa4e4, 0xaa13, 0xafbe, 0xb7fd, 0xb250, 0xbca7, 0xb90a, + 0xc6a2, 0xc30f, 0xcdf8, 0xc855, 0xd016, 0xd5bb, 0xdb4c, 0xdee1, + 0xebca, 0xee67, 0xe090, 0xe53d, 0xfd7e, 0xf8d3, 0xf624, 0xf389, + 0x9c72, 0x99df, 0x9728, 0x9285, 0x8ac6, 0x8f6b, 0x819c, 0x8431, + 0xb11a, 0xb4b7, 0xba40, 0xbfed, 0xa7ae, 0xa203, 0xacf4, 0xa959, + 0x7302, 0x76af, 0x7858, 0x7df5, 0x65b6, 0x601b, 0x6eec, 0x6b41, + 0x5e6a, 0x5bc7, 0x5530, 0x509d, 0x48de, 0x4d73, 0x4384, 0x4629, + 0x29d2, 0x2c7f, 0x2288, 0x2725, 0x3f66, 0x3acb, 0x343c, 0x3191, + 0x04ba, 0x0117, 0x0fe0, 0x0a4d, 0x120e, 0x17a3, 0x1954, 0x1cf9, + 0xa5f3, 0xa05e, 0xaea9, 0xab04, 0xb347, 0xb6ea, 0xb81d, 0xbdb0, + 0x889b, 0x8d36, 0x83c1, 0x866c, 0x9e2f, 0x9b82, 0x9575, 0x90d8, + 0xff23, 0xfa8e, 0xf479, 0xf1d4, 0xe997, 0xec3a, 0xe2cd, 0xe760, + 0xd24b, 0xd7e6, 0xd911, 0xdcbc, 0xc4ff, 0xc152, 0xcfa5, 0xca08, + 0x1053, 0x15fe, 0x1b09, 0x1ea4, 0x06e7, 0x034a, 0x0dbd, 0x0810, + 0x3d3b, 0x3896, 0x3661, 0x33cc, 0x2b8f, 0x2e22, 0x20d5, 0x2578, + 0x4a83, 0x4f2e, 0x41d9, 0x4474, 0x5c37, 0x599a, 0x576d, 0x52c0, + 0x67eb, 0x6246, 0x6cb1, 0x691c, 0x715f, 0x74f2, 0x7a05, 0x7fa8, + }, + { + 0x0000, 0x7eea, 0xfdd4, 0x833e, 0xf3b9, 0x8d53, 0x0e6d, 0x7087, + 0xef63, 0x9189, 0x12b7, 0x6c5d, 0x1cda, 0x6230, 0xe10e, 0x9fe4, + 0xd6d7, 0xa83d, 0x2b03, 0x55e9, 0x256e, 0x5b84, 0xd8ba, 0xa650, + 0x39b4, 0x475e, 0xc460, 0xba8a, 0xca0d, 0xb4e7, 0x37d9, 0x4933, + 0xa5bf, 0xdb55, 0x586b, 0x2681, 0x5606, 0x28ec, 0xabd2, 0xd538, + 0x4adc, 0x3436, 0xb708, 0xc9e2, 0xb965, 0xc78f, 0x44b1, 0x3a5b, + 0x7368, 0x0d82, 0x8ebc, 0xf056, 0x80d1, 0xfe3b, 0x7d05, 0x03ef, + 0x9c0b, 0xe2e1, 0x61df, 0x1f35, 0x6fb2, 0x1158, 0x9266, 0xec8c, + 0x436f, 0x3d85, 0xbebb, 0xc051, 0xb0d6, 0xce3c, 0x4d02, 0x33e8, + 0xac0c, 0xd2e6, 0x51d8, 0x2f32, 0x5fb5, 0x215f, 0xa261, 0xdc8b, + 0x95b8, 0xeb52, 0x686c, 0x1686, 0x6601, 0x18eb, 0x9bd5, 0xe53f, + 0x7adb, 0x0431, 0x870f, 0xf9e5, 0x8962, 0xf788, 0x74b6, 0x0a5c, + 0xe6d0, 0x983a, 0x1b04, 0x65ee, 0x1569, 0x6b83, 0xe8bd, 0x9657, + 0x09b3, 0x7759, 0xf467, 0x8a8d, 0xfa0a, 0x84e0, 0x07de, 0x7934, + 0x3007, 0x4eed, 0xcdd3, 0xb339, 0xc3be, 0xbd54, 0x3e6a, 0x4080, + 0xdf64, 0xa18e, 0x22b0, 0x5c5a, 0x2cdd, 0x5237, 0xd109, 0xafe3, + 0x86de, 0xf834, 0x7b0a, 0x05e0, 0x7567, 0x0b8d, 0x88b3, 0xf659, + 0x69bd, 0x1757, 0x9469, 0xea83, 0x9a04, 0xe4ee, 0x67d0, 0x193a, + 0x5009, 0x2ee3, 0xaddd, 0xd337, 0xa3b0, 0xdd5a, 0x5e64, 0x208e, + 0xbf6a, 0xc180, 0x42be, 0x3c54, 0x4cd3, 0x3239, 0xb107, 0xcfed, + 0x2361, 0x5d8b, 0xdeb5, 0xa05f, 0xd0d8, 0xae32, 0x2d0c, 0x53e6, + 0xcc02, 0xb2e8, 0x31d6, 0x4f3c, 0x3fbb, 0x4151, 0xc26f, 0xbc85, + 0xf5b6, 0x8b5c, 0x0862, 0x7688, 0x060f, 0x78e5, 0xfbdb, 0x8531, + 0x1ad5, 0x643f, 0xe701, 0x99eb, 0xe96c, 0x9786, 0x14b8, 0x6a52, + 0xc5b1, 0xbb5b, 0x3865, 0x468f, 0x3608, 0x48e2, 0xcbdc, 0xb536, + 0x2ad2, 0x5438, 0xd706, 0xa9ec, 0xd96b, 0xa781, 0x24bf, 0x5a55, + 0x1366, 0x6d8c, 0xeeb2, 0x9058, 0xe0df, 0x9e35, 0x1d0b, 0x63e1, + 0xfc05, 0x82ef, 0x01d1, 0x7f3b, 0x0fbc, 0x7156, 0xf268, 0x8c82, + 0x600e, 0x1ee4, 0x9dda, 0xe330, 0x93b7, 0xed5d, 0x6e63, 0x1089, + 0x8f6d, 0xf187, 0x72b9, 0x0c53, 0x7cd4, 0x023e, 0x8100, 0xffea, + 0xb6d9, 0xc833, 0x4b0d, 0x35e7, 0x4560, 0x3b8a, 0xb8b4, 0xc65e, + 0x59ba, 0x2750, 0xa46e, 0xda84, 0xaa03, 0xd4e9, 0x57d7, 0x293d, + }, + { + 0x0000, 0x482a, 0x9054, 0xd87e, 0x28b9, 0x6093, 0xb8ed, 0xf0c7, + 0x5172, 0x1958, 0xc126, 0x890c, 0x79cb, 0x31e1, 0xe99f, 0xa1b5, + 0xa2e4, 0xeace, 0x32b0, 0x7a9a, 0x8a5d, 0xc277, 0x1a09, 0x5223, + 0xf396, 0xbbbc, 0x63c2, 0x2be8, 0xdb2f, 0x9305, 0x4b7b, 0x0351, + 0x4dd9, 0x05f3, 0xdd8d, 0x95a7, 0x6560, 0x2d4a, 0xf534, 0xbd1e, + 0x1cab, 0x5481, 0x8cff, 0xc4d5, 0x3412, 0x7c38, 0xa446, 0xec6c, + 0xef3d, 0xa717, 0x7f69, 0x3743, 0xc784, 0x8fae, 0x57d0, 0x1ffa, + 0xbe4f, 0xf665, 0x2e1b, 0x6631, 0x96f6, 0xdedc, 0x06a2, 0x4e88, + 0x9bb2, 0xd398, 0x0be6, 0x43cc, 0xb30b, 0xfb21, 0x235f, 0x6b75, + 0xcac0, 0x82ea, 0x5a94, 0x12be, 0xe279, 0xaa53, 0x722d, 0x3a07, + 0x3956, 0x717c, 0xa902, 0xe128, 0x11ef, 0x59c5, 0x81bb, 0xc991, + 0x6824, 0x200e, 0xf870, 0xb05a, 0x409d, 0x08b7, 0xd0c9, 0x98e3, + 0xd66b, 0x9e41, 0x463f, 0x0e15, 0xfed2, 0xb6f8, 0x6e86, 0x26ac, + 0x8719, 0xcf33, 0x174d, 0x5f67, 0xafa0, 0xe78a, 0x3ff4, 0x77de, + 0x748f, 0x3ca5, 0xe4db, 0xacf1, 0x5c36, 0x141c, 0xcc62, 0x8448, + 0x25fd, 0x6dd7, 0xb5a9, 0xfd83, 0x0d44, 0x456e, 0x9d10, 0xd53a, + 0x3f75, 0x775f, 0xaf21, 0xe70b, 0x17cc, 0x5fe6, 0x8798, 0xcfb2, + 0x6e07, 0x262d, 0xfe53, 0xb679, 0x46be, 0x0e94, 0xd6ea, 0x9ec0, + 0x9d91, 0xd5bb, 0x0dc5, 0x45ef, 0xb528, 0xfd02, 0x257c, 0x6d56, + 0xcce3, 0x84c9, 0x5cb7, 0x149d, 0xe45a, 0xac70, 0x740e, 0x3c24, + 0x72ac, 0x3a86, 0xe2f8, 0xaad2, 0x5a15, 0x123f, 0xca41, 0x826b, + 0x23de, 0x6bf4, 0xb38a, 0xfba0, 0x0b67, 0x434d, 0x9b33, 0xd319, + 0xd048, 0x9862, 0x401c, 0x0836, 0xf8f1, 0xb0db, 0x68a5, 0x208f, + 0x813a, 0xc910, 0x116e, 0x5944, 0xa983, 0xe1a9, 0x39d7, 0x71fd, + 0xa4c7, 0xeced, 0x3493, 0x7cb9, 0x8c7e, 0xc454, 0x1c2a, 0x5400, + 0xf5b5, 0xbd9f, 0x65e1, 0x2dcb, 0xdd0c, 0x9526, 0x4d58, 0x0572, + 0x0623, 0x4e09, 0x9677, 0xde5d, 0x2e9a, 0x66b0, 0xbece, 0xf6e4, + 0x5751, 0x1f7b, 0xc705, 0x8f2f, 0x7fe8, 0x37c2, 0xefbc, 0xa796, + 0xe91e, 0xa134, 0x794a, 0x3160, 0xc1a7, 0x898d, 0x51f3, 0x19d9, + 0xb86c, 0xf046, 0x2838, 0x6012, 0x90d5, 0xd8ff, 0x0081, 0x48ab, + 0x4bfa, 0x03d0, 0xdbae, 0x9384, 0x6343, 0x2b69, 0xf317, 0xbb3d, + 0x1a88, 0x52a2, 0x8adc, 0xc2f6, 0x3231, 0x7a1b, 0xa265, 0xea4f, + }, + { + 0x0000, 0x8e10, 0x1431, 0x9a21, 0x2862, 0xa672, 0x3c53, 0xb243, + 0x50c4, 0xded4, 0x44f5, 0xcae5, 0x78a6, 0xf6b6, 0x6c97, 0xe287, + 0xa188, 0x2f98, 0xb5b9, 0x3ba9, 0x89ea, 0x07fa, 0x9ddb, 0x13cb, + 0xf14c, 0x7f5c, 0xe57d, 0x6b6d, 0xd92e, 0x573e, 0xcd1f, 0x430f, + 0x4b01, 0xc511, 0x5f30, 0xd120, 0x6363, 0xed73, 0x7752, 0xf942, + 0x1bc5, 0x95d5, 0x0ff4, 0x81e4, 0x33a7, 0xbdb7, 0x2796, 0xa986, + 0xea89, 0x6499, 0xfeb8, 0x70a8, 0xc2eb, 0x4cfb, 0xd6da, 0x58ca, + 0xba4d, 0x345d, 0xae7c, 0x206c, 0x922f, 0x1c3f, 0x861e, 0x080e, + 0x9602, 0x1812, 0x8233, 0x0c23, 0xbe60, 0x3070, 0xaa51, 0x2441, + 0xc6c6, 0x48d6, 0xd2f7, 0x5ce7, 0xeea4, 0x60b4, 0xfa95, 0x7485, + 0x378a, 0xb99a, 0x23bb, 0xadab, 0x1fe8, 0x91f8, 0x0bd9, 0x85c9, + 0x674e, 0xe95e, 0x737f, 0xfd6f, 0x4f2c, 0xc13c, 0x5b1d, 0xd50d, + 0xdd03, 0x5313, 0xc932, 0x4722, 0xf561, 0x7b71, 0xe150, 0x6f40, + 0x8dc7, 0x03d7, 0x99f6, 0x17e6, 0xa5a5, 0x2bb5, 0xb194, 0x3f84, + 0x7c8b, 0xf29b, 0x68ba, 0xe6aa, 0x54e9, 0xdaf9, 0x40d8, 0xcec8, + 0x2c4f, 0xa25f, 0x387e, 0xb66e, 0x042d, 0x8a3d, 0x101c, 0x9e0c, + 0x2415, 0xaa05, 0x3024, 0xbe34, 0x0c77, 0x8267, 0x1846, 0x9656, + 0x74d1, 0xfac1, 0x60e0, 0xeef0, 0x5cb3, 0xd2a3, 0x4882, 0xc692, + 0x859d, 0x0b8d, 0x91ac, 0x1fbc, 0xadff, 0x23ef, 0xb9ce, 0x37de, + 0xd559, 0x5b49, 0xc168, 0x4f78, 0xfd3b, 0x732b, 0xe90a, 0x671a, + 0x6f14, 0xe104, 0x7b25, 0xf535, 0x4776, 0xc966, 0x5347, 0xdd57, + 0x3fd0, 0xb1c0, 0x2be1, 0xa5f1, 0x17b2, 0x99a2, 0x0383, 0x8d93, + 0xce9c, 0x408c, 0xdaad, 0x54bd, 0xe6fe, 0x68ee, 0xf2cf, 0x7cdf, + 0x9e58, 0x1048, 0x8a69, 0x0479, 0xb63a, 0x382a, 0xa20b, 0x2c1b, + 0xb217, 0x3c07, 0xa626, 0x2836, 0x9a75, 0x1465, 0x8e44, 0x0054, + 0xe2d3, 0x6cc3, 0xf6e2, 0x78f2, 0xcab1, 0x44a1, 0xde80, 0x5090, + 0x139f, 0x9d8f, 0x07ae, 0x89be, 0x3bfd, 0xb5ed, 0x2fcc, 0xa1dc, + 0x435b, 0xcd4b, 0x576a, 0xd97a, 0x6b39, 0xe529, 0x7f08, 0xf118, + 0xf916, 0x7706, 0xed27, 0x6337, 0xd174, 0x5f64, 0xc545, 0x4b55, + 0xa9d2, 0x27c2, 0xbde3, 0x33f3, 0x81b0, 0x0fa0, 0x9581, 0x1b91, + 0x589e, 0xd68e, 0x4caf, 0xc2bf, 0x70fc, 0xfeec, 0x64cd, 0xeadd, + 0x085a, 0x864a, 0x1c6b, 0x927b, 0x2038, 0xae28, 0x3409, 0xba19, + }, +}; diff --git a/ext/digest/crc16_xmodem/crc16_xmodem.c b/ext/digest/crc16_xmodem/crc16_xmodem.c index f797a10..71003f4 100644 --- a/ext/digest/crc16_xmodem/crc16_xmodem.c +++ b/ext/digest/crc16_xmodem/crc16_xmodem.c @@ -15,54 +15,39 @@ */ #include "crc16_xmodem.h" - -/** - * Static table used for the table_driven implementation. - */ -static const crc16_t crc16_xmodem_table[256] = { - 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, - 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, - 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, - 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, - 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, - 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, - 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, - 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, - 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, - 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, - 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, - 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, - 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, - 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, - 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, - 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, - 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, - 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, - 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, - 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, - 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, - 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, - 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, - 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, - 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, - 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, - 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, - 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, - 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, - 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, - 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, - 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0 -}; +#include "crc16_xmodem_table.h" crc16_t crc16_xmodem_update(crc16_t crc, const void *data, size_t data_len) { const unsigned char *d = (const unsigned char *)data; unsigned int tbl_idx; + for (; data_len >= SLICE_SIZE; data_len -= SLICE_SIZE) + { + crc = crc16_xmodem_table[15][d[ 0] ^ ((crc >> 8) & 0xff)] ^ + crc16_xmodem_table[14][d[ 1] ^ ((crc >> 0) & 0xff)] ^ + crc16_xmodem_table[13][d[ 2] ] ^ + crc16_xmodem_table[12][d[ 3] ] ^ + crc16_xmodem_table[11][d[ 4] ] ^ + crc16_xmodem_table[10][d[ 5] ] ^ + crc16_xmodem_table[ 9][d[ 6] ] ^ + crc16_xmodem_table[ 8][d[ 7] ] ^ + crc16_xmodem_table[ 7][d[ 8] ] ^ + crc16_xmodem_table[ 6][d[ 9] ] ^ + crc16_xmodem_table[ 5][d[10] ] ^ + crc16_xmodem_table[ 4][d[11] ] ^ + crc16_xmodem_table[ 3][d[12] ] ^ + crc16_xmodem_table[ 2][d[13] ] ^ + crc16_xmodem_table[ 1][d[14] ] ^ + crc16_xmodem_table[ 0][d[15] ]; + crc &= 0xffff; + d += SLICE_SIZE; + } + while (data_len--) { tbl_idx = ((crc >> 8) ^ *d) & 0xff; - crc = (crc16_xmodem_table[tbl_idx] ^ (crc << 8)) & 0xffff; + crc = (crc16_xmodem_table[0][tbl_idx] ^ (crc << 8)) & 0xffff; d++; } diff --git a/ext/digest/crc16_xmodem/crc16_xmodem_table.h b/ext/digest/crc16_xmodem/crc16_xmodem_table.h new file mode 100644 index 0000000..32fbe17 --- /dev/null +++ b/ext/digest/crc16_xmodem/crc16_xmodem_table.h @@ -0,0 +1,558 @@ +/* + * bitwidth: 16 + * generator polynomial: 0x1021 + * input bit direction: NORMAL + * slice bytes per iteration: 16 + * slide bits per table: 8 + * + * Generated by: gentable.rb of digest-crc + */ + +#define SLICE_SIZE 16 + +static const uint16_t crc16_xmodem_table[SLICE_SIZE][256] = { + { + 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, + 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, + 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, + 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, + 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, + 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, + 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, + 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, + 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, + 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, + 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, + 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, + 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, + 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, + 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, + 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, + 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, + 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, + 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, + 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, + 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, + 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, + 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, + 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, + 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, + 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, + 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, + 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, + 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, + 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, + 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, + 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0, + }, + { + 0x0000, 0x3331, 0x6662, 0x5553, 0xccc4, 0xfff5, 0xaaa6, 0x9997, + 0x89a9, 0xba98, 0xefcb, 0xdcfa, 0x456d, 0x765c, 0x230f, 0x103e, + 0x0373, 0x3042, 0x6511, 0x5620, 0xcfb7, 0xfc86, 0xa9d5, 0x9ae4, + 0x8ada, 0xb9eb, 0xecb8, 0xdf89, 0x461e, 0x752f, 0x207c, 0x134d, + 0x06e6, 0x35d7, 0x6084, 0x53b5, 0xca22, 0xf913, 0xac40, 0x9f71, + 0x8f4f, 0xbc7e, 0xe92d, 0xda1c, 0x438b, 0x70ba, 0x25e9, 0x16d8, + 0x0595, 0x36a4, 0x63f7, 0x50c6, 0xc951, 0xfa60, 0xaf33, 0x9c02, + 0x8c3c, 0xbf0d, 0xea5e, 0xd96f, 0x40f8, 0x73c9, 0x269a, 0x15ab, + 0x0dcc, 0x3efd, 0x6bae, 0x589f, 0xc108, 0xf239, 0xa76a, 0x945b, + 0x8465, 0xb754, 0xe207, 0xd136, 0x48a1, 0x7b90, 0x2ec3, 0x1df2, + 0x0ebf, 0x3d8e, 0x68dd, 0x5bec, 0xc27b, 0xf14a, 0xa419, 0x9728, + 0x8716, 0xb427, 0xe174, 0xd245, 0x4bd2, 0x78e3, 0x2db0, 0x1e81, + 0x0b2a, 0x381b, 0x6d48, 0x5e79, 0xc7ee, 0xf4df, 0xa18c, 0x92bd, + 0x8283, 0xb1b2, 0xe4e1, 0xd7d0, 0x4e47, 0x7d76, 0x2825, 0x1b14, + 0x0859, 0x3b68, 0x6e3b, 0x5d0a, 0xc49d, 0xf7ac, 0xa2ff, 0x91ce, + 0x81f0, 0xb2c1, 0xe792, 0xd4a3, 0x4d34, 0x7e05, 0x2b56, 0x1867, + 0x1b98, 0x28a9, 0x7dfa, 0x4ecb, 0xd75c, 0xe46d, 0xb13e, 0x820f, + 0x9231, 0xa100, 0xf453, 0xc762, 0x5ef5, 0x6dc4, 0x3897, 0x0ba6, + 0x18eb, 0x2bda, 0x7e89, 0x4db8, 0xd42f, 0xe71e, 0xb24d, 0x817c, + 0x9142, 0xa273, 0xf720, 0xc411, 0x5d86, 0x6eb7, 0x3be4, 0x08d5, + 0x1d7e, 0x2e4f, 0x7b1c, 0x482d, 0xd1ba, 0xe28b, 0xb7d8, 0x84e9, + 0x94d7, 0xa7e6, 0xf2b5, 0xc184, 0x5813, 0x6b22, 0x3e71, 0x0d40, + 0x1e0d, 0x2d3c, 0x786f, 0x4b5e, 0xd2c9, 0xe1f8, 0xb4ab, 0x879a, + 0x97a4, 0xa495, 0xf1c6, 0xc2f7, 0x5b60, 0x6851, 0x3d02, 0x0e33, + 0x1654, 0x2565, 0x7036, 0x4307, 0xda90, 0xe9a1, 0xbcf2, 0x8fc3, + 0x9ffd, 0xaccc, 0xf99f, 0xcaae, 0x5339, 0x6008, 0x355b, 0x066a, + 0x1527, 0x2616, 0x7345, 0x4074, 0xd9e3, 0xead2, 0xbf81, 0x8cb0, + 0x9c8e, 0xafbf, 0xfaec, 0xc9dd, 0x504a, 0x637b, 0x3628, 0x0519, + 0x10b2, 0x2383, 0x76d0, 0x45e1, 0xdc76, 0xef47, 0xba14, 0x8925, + 0x991b, 0xaa2a, 0xff79, 0xcc48, 0x55df, 0x66ee, 0x33bd, 0x008c, + 0x13c1, 0x20f0, 0x75a3, 0x4692, 0xdf05, 0xec34, 0xb967, 0x8a56, + 0x9a68, 0xa959, 0xfc0a, 0xcf3b, 0x56ac, 0x659d, 0x30ce, 0x03ff, + }, + { + 0x0000, 0x3730, 0x6e60, 0x5950, 0xdcc0, 0xebf0, 0xb2a0, 0x8590, + 0xa9a1, 0x9e91, 0xc7c1, 0xf0f1, 0x7561, 0x4251, 0x1b01, 0x2c31, + 0x4363, 0x7453, 0x2d03, 0x1a33, 0x9fa3, 0xa893, 0xf1c3, 0xc6f3, + 0xeac2, 0xddf2, 0x84a2, 0xb392, 0x3602, 0x0132, 0x5862, 0x6f52, + 0x86c6, 0xb1f6, 0xe8a6, 0xdf96, 0x5a06, 0x6d36, 0x3466, 0x0356, + 0x2f67, 0x1857, 0x4107, 0x7637, 0xf3a7, 0xc497, 0x9dc7, 0xaaf7, + 0xc5a5, 0xf295, 0xabc5, 0x9cf5, 0x1965, 0x2e55, 0x7705, 0x4035, + 0x6c04, 0x5b34, 0x0264, 0x3554, 0xb0c4, 0x87f4, 0xdea4, 0xe994, + 0x1dad, 0x2a9d, 0x73cd, 0x44fd, 0xc16d, 0xf65d, 0xaf0d, 0x983d, + 0xb40c, 0x833c, 0xda6c, 0xed5c, 0x68cc, 0x5ffc, 0x06ac, 0x319c, + 0x5ece, 0x69fe, 0x30ae, 0x079e, 0x820e, 0xb53e, 0xec6e, 0xdb5e, + 0xf76f, 0xc05f, 0x990f, 0xae3f, 0x2baf, 0x1c9f, 0x45cf, 0x72ff, + 0x9b6b, 0xac5b, 0xf50b, 0xc23b, 0x47ab, 0x709b, 0x29cb, 0x1efb, + 0x32ca, 0x05fa, 0x5caa, 0x6b9a, 0xee0a, 0xd93a, 0x806a, 0xb75a, + 0xd808, 0xef38, 0xb668, 0x8158, 0x04c8, 0x33f8, 0x6aa8, 0x5d98, + 0x71a9, 0x4699, 0x1fc9, 0x28f9, 0xad69, 0x9a59, 0xc309, 0xf439, + 0x3b5a, 0x0c6a, 0x553a, 0x620a, 0xe79a, 0xd0aa, 0x89fa, 0xbeca, + 0x92fb, 0xa5cb, 0xfc9b, 0xcbab, 0x4e3b, 0x790b, 0x205b, 0x176b, + 0x7839, 0x4f09, 0x1659, 0x2169, 0xa4f9, 0x93c9, 0xca99, 0xfda9, + 0xd198, 0xe6a8, 0xbff8, 0x88c8, 0x0d58, 0x3a68, 0x6338, 0x5408, + 0xbd9c, 0x8aac, 0xd3fc, 0xe4cc, 0x615c, 0x566c, 0x0f3c, 0x380c, + 0x143d, 0x230d, 0x7a5d, 0x4d6d, 0xc8fd, 0xffcd, 0xa69d, 0x91ad, + 0xfeff, 0xc9cf, 0x909f, 0xa7af, 0x223f, 0x150f, 0x4c5f, 0x7b6f, + 0x575e, 0x606e, 0x393e, 0x0e0e, 0x8b9e, 0xbcae, 0xe5fe, 0xd2ce, + 0x26f7, 0x11c7, 0x4897, 0x7fa7, 0xfa37, 0xcd07, 0x9457, 0xa367, + 0x8f56, 0xb866, 0xe136, 0xd606, 0x5396, 0x64a6, 0x3df6, 0x0ac6, + 0x6594, 0x52a4, 0x0bf4, 0x3cc4, 0xb954, 0x8e64, 0xd734, 0xe004, + 0xcc35, 0xfb05, 0xa255, 0x9565, 0x10f5, 0x27c5, 0x7e95, 0x49a5, + 0xa031, 0x9701, 0xce51, 0xf961, 0x7cf1, 0x4bc1, 0x1291, 0x25a1, + 0x0990, 0x3ea0, 0x67f0, 0x50c0, 0xd550, 0xe260, 0xbb30, 0x8c00, + 0xe352, 0xd462, 0x8d32, 0xba02, 0x3f92, 0x08a2, 0x51f2, 0x66c2, + 0x4af3, 0x7dc3, 0x2493, 0x13a3, 0x9633, 0xa103, 0xf853, 0xcf63, + }, + { + 0x0000, 0x76b4, 0xed68, 0x9bdc, 0xcaf1, 0xbc45, 0x2799, 0x512d, + 0x85c3, 0xf377, 0x68ab, 0x1e1f, 0x4f32, 0x3986, 0xa25a, 0xd4ee, + 0x1ba7, 0x6d13, 0xf6cf, 0x807b, 0xd156, 0xa7e2, 0x3c3e, 0x4a8a, + 0x9e64, 0xe8d0, 0x730c, 0x05b8, 0x5495, 0x2221, 0xb9fd, 0xcf49, + 0x374e, 0x41fa, 0xda26, 0xac92, 0xfdbf, 0x8b0b, 0x10d7, 0x6663, + 0xb28d, 0xc439, 0x5fe5, 0x2951, 0x787c, 0x0ec8, 0x9514, 0xe3a0, + 0x2ce9, 0x5a5d, 0xc181, 0xb735, 0xe618, 0x90ac, 0x0b70, 0x7dc4, + 0xa92a, 0xdf9e, 0x4442, 0x32f6, 0x63db, 0x156f, 0x8eb3, 0xf807, + 0x6e9c, 0x1828, 0x83f4, 0xf540, 0xa46d, 0xd2d9, 0x4905, 0x3fb1, + 0xeb5f, 0x9deb, 0x0637, 0x7083, 0x21ae, 0x571a, 0xccc6, 0xba72, + 0x753b, 0x038f, 0x9853, 0xeee7, 0xbfca, 0xc97e, 0x52a2, 0x2416, + 0xf0f8, 0x864c, 0x1d90, 0x6b24, 0x3a09, 0x4cbd, 0xd761, 0xa1d5, + 0x59d2, 0x2f66, 0xb4ba, 0xc20e, 0x9323, 0xe597, 0x7e4b, 0x08ff, + 0xdc11, 0xaaa5, 0x3179, 0x47cd, 0x16e0, 0x6054, 0xfb88, 0x8d3c, + 0x4275, 0x34c1, 0xaf1d, 0xd9a9, 0x8884, 0xfe30, 0x65ec, 0x1358, + 0xc7b6, 0xb102, 0x2ade, 0x5c6a, 0x0d47, 0x7bf3, 0xe02f, 0x969b, + 0xdd38, 0xab8c, 0x3050, 0x46e4, 0x17c9, 0x617d, 0xfaa1, 0x8c15, + 0x58fb, 0x2e4f, 0xb593, 0xc327, 0x920a, 0xe4be, 0x7f62, 0x09d6, + 0xc69f, 0xb02b, 0x2bf7, 0x5d43, 0x0c6e, 0x7ada, 0xe106, 0x97b2, + 0x435c, 0x35e8, 0xae34, 0xd880, 0x89ad, 0xff19, 0x64c5, 0x1271, + 0xea76, 0x9cc2, 0x071e, 0x71aa, 0x2087, 0x5633, 0xcdef, 0xbb5b, + 0x6fb5, 0x1901, 0x82dd, 0xf469, 0xa544, 0xd3f0, 0x482c, 0x3e98, + 0xf1d1, 0x8765, 0x1cb9, 0x6a0d, 0x3b20, 0x4d94, 0xd648, 0xa0fc, + 0x7412, 0x02a6, 0x997a, 0xefce, 0xbee3, 0xc857, 0x538b, 0x253f, + 0xb3a4, 0xc510, 0x5ecc, 0x2878, 0x7955, 0x0fe1, 0x943d, 0xe289, + 0x3667, 0x40d3, 0xdb0f, 0xadbb, 0xfc96, 0x8a22, 0x11fe, 0x674a, + 0xa803, 0xdeb7, 0x456b, 0x33df, 0x62f2, 0x1446, 0x8f9a, 0xf92e, + 0x2dc0, 0x5b74, 0xc0a8, 0xb61c, 0xe731, 0x9185, 0x0a59, 0x7ced, + 0x84ea, 0xf25e, 0x6982, 0x1f36, 0x4e1b, 0x38af, 0xa373, 0xd5c7, + 0x0129, 0x779d, 0xec41, 0x9af5, 0xcbd8, 0xbd6c, 0x26b0, 0x5004, + 0x9f4d, 0xe9f9, 0x7225, 0x0491, 0x55bc, 0x2308, 0xb8d4, 0xce60, + 0x1a8e, 0x6c3a, 0xf7e6, 0x8152, 0xd07f, 0xa6cb, 0x3d17, 0x4ba3, + }, + { + 0x0000, 0xaa51, 0x4483, 0xeed2, 0x8906, 0x2357, 0xcd85, 0x67d4, + 0x022d, 0xa87c, 0x46ae, 0xecff, 0x8b2b, 0x217a, 0xcfa8, 0x65f9, + 0x045a, 0xae0b, 0x40d9, 0xea88, 0x8d5c, 0x270d, 0xc9df, 0x638e, + 0x0677, 0xac26, 0x42f4, 0xe8a5, 0x8f71, 0x2520, 0xcbf2, 0x61a3, + 0x08b4, 0xa2e5, 0x4c37, 0xe666, 0x81b2, 0x2be3, 0xc531, 0x6f60, + 0x0a99, 0xa0c8, 0x4e1a, 0xe44b, 0x839f, 0x29ce, 0xc71c, 0x6d4d, + 0x0cee, 0xa6bf, 0x486d, 0xe23c, 0x85e8, 0x2fb9, 0xc16b, 0x6b3a, + 0x0ec3, 0xa492, 0x4a40, 0xe011, 0x87c5, 0x2d94, 0xc346, 0x6917, + 0x1168, 0xbb39, 0x55eb, 0xffba, 0x986e, 0x323f, 0xdced, 0x76bc, + 0x1345, 0xb914, 0x57c6, 0xfd97, 0x9a43, 0x3012, 0xdec0, 0x7491, + 0x1532, 0xbf63, 0x51b1, 0xfbe0, 0x9c34, 0x3665, 0xd8b7, 0x72e6, + 0x171f, 0xbd4e, 0x539c, 0xf9cd, 0x9e19, 0x3448, 0xda9a, 0x70cb, + 0x19dc, 0xb38d, 0x5d5f, 0xf70e, 0x90da, 0x3a8b, 0xd459, 0x7e08, + 0x1bf1, 0xb1a0, 0x5f72, 0xf523, 0x92f7, 0x38a6, 0xd674, 0x7c25, + 0x1d86, 0xb7d7, 0x5905, 0xf354, 0x9480, 0x3ed1, 0xd003, 0x7a52, + 0x1fab, 0xb5fa, 0x5b28, 0xf179, 0x96ad, 0x3cfc, 0xd22e, 0x787f, + 0x22d0, 0x8881, 0x6653, 0xcc02, 0xabd6, 0x0187, 0xef55, 0x4504, + 0x20fd, 0x8aac, 0x647e, 0xce2f, 0xa9fb, 0x03aa, 0xed78, 0x4729, + 0x268a, 0x8cdb, 0x6209, 0xc858, 0xaf8c, 0x05dd, 0xeb0f, 0x415e, + 0x24a7, 0x8ef6, 0x6024, 0xca75, 0xada1, 0x07f0, 0xe922, 0x4373, + 0x2a64, 0x8035, 0x6ee7, 0xc4b6, 0xa362, 0x0933, 0xe7e1, 0x4db0, + 0x2849, 0x8218, 0x6cca, 0xc69b, 0xa14f, 0x0b1e, 0xe5cc, 0x4f9d, + 0x2e3e, 0x846f, 0x6abd, 0xc0ec, 0xa738, 0x0d69, 0xe3bb, 0x49ea, + 0x2c13, 0x8642, 0x6890, 0xc2c1, 0xa515, 0x0f44, 0xe196, 0x4bc7, + 0x33b8, 0x99e9, 0x773b, 0xdd6a, 0xbabe, 0x10ef, 0xfe3d, 0x546c, + 0x3195, 0x9bc4, 0x7516, 0xdf47, 0xb893, 0x12c2, 0xfc10, 0x5641, + 0x37e2, 0x9db3, 0x7361, 0xd930, 0xbee4, 0x14b5, 0xfa67, 0x5036, + 0x35cf, 0x9f9e, 0x714c, 0xdb1d, 0xbcc9, 0x1698, 0xf84a, 0x521b, + 0x3b0c, 0x915d, 0x7f8f, 0xd5de, 0xb20a, 0x185b, 0xf689, 0x5cd8, + 0x3921, 0x9370, 0x7da2, 0xd7f3, 0xb027, 0x1a76, 0xf4a4, 0x5ef5, + 0x3f56, 0x9507, 0x7bd5, 0xd184, 0xb650, 0x1c01, 0xf2d3, 0x5882, + 0x3d7b, 0x972a, 0x79f8, 0xd3a9, 0xb47d, 0x1e2c, 0xf0fe, 0x5aaf, + }, + { + 0x0000, 0x45a0, 0x8b40, 0xcee0, 0x06a1, 0x4301, 0x8de1, 0xc841, + 0x0d42, 0x48e2, 0x8602, 0xc3a2, 0x0be3, 0x4e43, 0x80a3, 0xc503, + 0x1a84, 0x5f24, 0x91c4, 0xd464, 0x1c25, 0x5985, 0x9765, 0xd2c5, + 0x17c6, 0x5266, 0x9c86, 0xd926, 0x1167, 0x54c7, 0x9a27, 0xdf87, + 0x3508, 0x70a8, 0xbe48, 0xfbe8, 0x33a9, 0x7609, 0xb8e9, 0xfd49, + 0x384a, 0x7dea, 0xb30a, 0xf6aa, 0x3eeb, 0x7b4b, 0xb5ab, 0xf00b, + 0x2f8c, 0x6a2c, 0xa4cc, 0xe16c, 0x292d, 0x6c8d, 0xa26d, 0xe7cd, + 0x22ce, 0x676e, 0xa98e, 0xec2e, 0x246f, 0x61cf, 0xaf2f, 0xea8f, + 0x6a10, 0x2fb0, 0xe150, 0xa4f0, 0x6cb1, 0x2911, 0xe7f1, 0xa251, + 0x6752, 0x22f2, 0xec12, 0xa9b2, 0x61f3, 0x2453, 0xeab3, 0xaf13, + 0x7094, 0x3534, 0xfbd4, 0xbe74, 0x7635, 0x3395, 0xfd75, 0xb8d5, + 0x7dd6, 0x3876, 0xf696, 0xb336, 0x7b77, 0x3ed7, 0xf037, 0xb597, + 0x5f18, 0x1ab8, 0xd458, 0x91f8, 0x59b9, 0x1c19, 0xd2f9, 0x9759, + 0x525a, 0x17fa, 0xd91a, 0x9cba, 0x54fb, 0x115b, 0xdfbb, 0x9a1b, + 0x459c, 0x003c, 0xcedc, 0x8b7c, 0x433d, 0x069d, 0xc87d, 0x8ddd, + 0x48de, 0x0d7e, 0xc39e, 0x863e, 0x4e7f, 0x0bdf, 0xc53f, 0x809f, + 0xd420, 0x9180, 0x5f60, 0x1ac0, 0xd281, 0x9721, 0x59c1, 0x1c61, + 0xd962, 0x9cc2, 0x5222, 0x1782, 0xdfc3, 0x9a63, 0x5483, 0x1123, + 0xcea4, 0x8b04, 0x45e4, 0x0044, 0xc805, 0x8da5, 0x4345, 0x06e5, + 0xc3e6, 0x8646, 0x48a6, 0x0d06, 0xc547, 0x80e7, 0x4e07, 0x0ba7, + 0xe128, 0xa488, 0x6a68, 0x2fc8, 0xe789, 0xa229, 0x6cc9, 0x2969, + 0xec6a, 0xa9ca, 0x672a, 0x228a, 0xeacb, 0xaf6b, 0x618b, 0x242b, + 0xfbac, 0xbe0c, 0x70ec, 0x354c, 0xfd0d, 0xb8ad, 0x764d, 0x33ed, + 0xf6ee, 0xb34e, 0x7dae, 0x380e, 0xf04f, 0xb5ef, 0x7b0f, 0x3eaf, + 0xbe30, 0xfb90, 0x3570, 0x70d0, 0xb891, 0xfd31, 0x33d1, 0x7671, + 0xb372, 0xf6d2, 0x3832, 0x7d92, 0xb5d3, 0xf073, 0x3e93, 0x7b33, + 0xa4b4, 0xe114, 0x2ff4, 0x6a54, 0xa215, 0xe7b5, 0x2955, 0x6cf5, + 0xa9f6, 0xec56, 0x22b6, 0x6716, 0xaf57, 0xeaf7, 0x2417, 0x61b7, + 0x8b38, 0xce98, 0x0078, 0x45d8, 0x8d99, 0xc839, 0x06d9, 0x4379, + 0x867a, 0xc3da, 0x0d3a, 0x489a, 0x80db, 0xc57b, 0x0b9b, 0x4e3b, + 0x91bc, 0xd41c, 0x1afc, 0x5f5c, 0x971d, 0xd2bd, 0x1c5d, 0x59fd, + 0x9cfe, 0xd95e, 0x17be, 0x521e, 0x9a5f, 0xdfff, 0x111f, 0x54bf, + }, + { + 0x0000, 0xb861, 0x60e3, 0xd882, 0xc1c6, 0x79a7, 0xa125, 0x1944, + 0x93ad, 0x2bcc, 0xf34e, 0x4b2f, 0x526b, 0xea0a, 0x3288, 0x8ae9, + 0x377b, 0x8f1a, 0x5798, 0xeff9, 0xf6bd, 0x4edc, 0x965e, 0x2e3f, + 0xa4d6, 0x1cb7, 0xc435, 0x7c54, 0x6510, 0xdd71, 0x05f3, 0xbd92, + 0x6ef6, 0xd697, 0x0e15, 0xb674, 0xaf30, 0x1751, 0xcfd3, 0x77b2, + 0xfd5b, 0x453a, 0x9db8, 0x25d9, 0x3c9d, 0x84fc, 0x5c7e, 0xe41f, + 0x598d, 0xe1ec, 0x396e, 0x810f, 0x984b, 0x202a, 0xf8a8, 0x40c9, + 0xca20, 0x7241, 0xaac3, 0x12a2, 0x0be6, 0xb387, 0x6b05, 0xd364, + 0xddec, 0x658d, 0xbd0f, 0x056e, 0x1c2a, 0xa44b, 0x7cc9, 0xc4a8, + 0x4e41, 0xf620, 0x2ea2, 0x96c3, 0x8f87, 0x37e6, 0xef64, 0x5705, + 0xea97, 0x52f6, 0x8a74, 0x3215, 0x2b51, 0x9330, 0x4bb2, 0xf3d3, + 0x793a, 0xc15b, 0x19d9, 0xa1b8, 0xb8fc, 0x009d, 0xd81f, 0x607e, + 0xb31a, 0x0b7b, 0xd3f9, 0x6b98, 0x72dc, 0xcabd, 0x123f, 0xaa5e, + 0x20b7, 0x98d6, 0x4054, 0xf835, 0xe171, 0x5910, 0x8192, 0x39f3, + 0x8461, 0x3c00, 0xe482, 0x5ce3, 0x45a7, 0xfdc6, 0x2544, 0x9d25, + 0x17cc, 0xafad, 0x772f, 0xcf4e, 0xd60a, 0x6e6b, 0xb6e9, 0x0e88, + 0xabf9, 0x1398, 0xcb1a, 0x737b, 0x6a3f, 0xd25e, 0x0adc, 0xb2bd, + 0x3854, 0x8035, 0x58b7, 0xe0d6, 0xf992, 0x41f3, 0x9971, 0x2110, + 0x9c82, 0x24e3, 0xfc61, 0x4400, 0x5d44, 0xe525, 0x3da7, 0x85c6, + 0x0f2f, 0xb74e, 0x6fcc, 0xd7ad, 0xcee9, 0x7688, 0xae0a, 0x166b, + 0xc50f, 0x7d6e, 0xa5ec, 0x1d8d, 0x04c9, 0xbca8, 0x642a, 0xdc4b, + 0x56a2, 0xeec3, 0x3641, 0x8e20, 0x9764, 0x2f05, 0xf787, 0x4fe6, + 0xf274, 0x4a15, 0x9297, 0x2af6, 0x33b2, 0x8bd3, 0x5351, 0xeb30, + 0x61d9, 0xd9b8, 0x013a, 0xb95b, 0xa01f, 0x187e, 0xc0fc, 0x789d, + 0x7615, 0xce74, 0x16f6, 0xae97, 0xb7d3, 0x0fb2, 0xd730, 0x6f51, + 0xe5b8, 0x5dd9, 0x855b, 0x3d3a, 0x247e, 0x9c1f, 0x449d, 0xfcfc, + 0x416e, 0xf90f, 0x218d, 0x99ec, 0x80a8, 0x38c9, 0xe04b, 0x582a, + 0xd2c3, 0x6aa2, 0xb220, 0x0a41, 0x1305, 0xab64, 0x73e6, 0xcb87, + 0x18e3, 0xa082, 0x7800, 0xc061, 0xd925, 0x6144, 0xb9c6, 0x01a7, + 0x8b4e, 0x332f, 0xebad, 0x53cc, 0x4a88, 0xf2e9, 0x2a6b, 0x920a, + 0x2f98, 0x97f9, 0x4f7b, 0xf71a, 0xee5e, 0x563f, 0x8ebd, 0x36dc, + 0xbc35, 0x0454, 0xdcd6, 0x64b7, 0x7df3, 0xc592, 0x1d10, 0xa571, + }, + { + 0x0000, 0x47d3, 0x8fa6, 0xc875, 0x0f6d, 0x48be, 0x80cb, 0xc718, + 0x1eda, 0x5909, 0x917c, 0xd6af, 0x11b7, 0x5664, 0x9e11, 0xd9c2, + 0x3db4, 0x7a67, 0xb212, 0xf5c1, 0x32d9, 0x750a, 0xbd7f, 0xfaac, + 0x236e, 0x64bd, 0xacc8, 0xeb1b, 0x2c03, 0x6bd0, 0xa3a5, 0xe476, + 0x7b68, 0x3cbb, 0xf4ce, 0xb31d, 0x7405, 0x33d6, 0xfba3, 0xbc70, + 0x65b2, 0x2261, 0xea14, 0xadc7, 0x6adf, 0x2d0c, 0xe579, 0xa2aa, + 0x46dc, 0x010f, 0xc97a, 0x8ea9, 0x49b1, 0x0e62, 0xc617, 0x81c4, + 0x5806, 0x1fd5, 0xd7a0, 0x9073, 0x576b, 0x10b8, 0xd8cd, 0x9f1e, + 0xf6d0, 0xb103, 0x7976, 0x3ea5, 0xf9bd, 0xbe6e, 0x761b, 0x31c8, + 0xe80a, 0xafd9, 0x67ac, 0x207f, 0xe767, 0xa0b4, 0x68c1, 0x2f12, + 0xcb64, 0x8cb7, 0x44c2, 0x0311, 0xc409, 0x83da, 0x4baf, 0x0c7c, + 0xd5be, 0x926d, 0x5a18, 0x1dcb, 0xdad3, 0x9d00, 0x5575, 0x12a6, + 0x8db8, 0xca6b, 0x021e, 0x45cd, 0x82d5, 0xc506, 0x0d73, 0x4aa0, + 0x9362, 0xd4b1, 0x1cc4, 0x5b17, 0x9c0f, 0xdbdc, 0x13a9, 0x547a, + 0xb00c, 0xf7df, 0x3faa, 0x7879, 0xbf61, 0xf8b2, 0x30c7, 0x7714, + 0xaed6, 0xe905, 0x2170, 0x66a3, 0xa1bb, 0xe668, 0x2e1d, 0x69ce, + 0xfd81, 0xba52, 0x7227, 0x35f4, 0xf2ec, 0xb53f, 0x7d4a, 0x3a99, + 0xe35b, 0xa488, 0x6cfd, 0x2b2e, 0xec36, 0xabe5, 0x6390, 0x2443, + 0xc035, 0x87e6, 0x4f93, 0x0840, 0xcf58, 0x888b, 0x40fe, 0x072d, + 0xdeef, 0x993c, 0x5149, 0x169a, 0xd182, 0x9651, 0x5e24, 0x19f7, + 0x86e9, 0xc13a, 0x094f, 0x4e9c, 0x8984, 0xce57, 0x0622, 0x41f1, + 0x9833, 0xdfe0, 0x1795, 0x5046, 0x975e, 0xd08d, 0x18f8, 0x5f2b, + 0xbb5d, 0xfc8e, 0x34fb, 0x7328, 0xb430, 0xf3e3, 0x3b96, 0x7c45, + 0xa587, 0xe254, 0x2a21, 0x6df2, 0xaaea, 0xed39, 0x254c, 0x629f, + 0x0b51, 0x4c82, 0x84f7, 0xc324, 0x043c, 0x43ef, 0x8b9a, 0xcc49, + 0x158b, 0x5258, 0x9a2d, 0xddfe, 0x1ae6, 0x5d35, 0x9540, 0xd293, + 0x36e5, 0x7136, 0xb943, 0xfe90, 0x3988, 0x7e5b, 0xb62e, 0xf1fd, + 0x283f, 0x6fec, 0xa799, 0xe04a, 0x2752, 0x6081, 0xa8f4, 0xef27, + 0x7039, 0x37ea, 0xff9f, 0xb84c, 0x7f54, 0x3887, 0xf0f2, 0xb721, + 0x6ee3, 0x2930, 0xe145, 0xa696, 0x618e, 0x265d, 0xee28, 0xa9fb, + 0x4d8d, 0x0a5e, 0xc22b, 0x85f8, 0x42e0, 0x0533, 0xcd46, 0x8a95, + 0x5357, 0x1484, 0xdcf1, 0x9b22, 0x5c3a, 0x1be9, 0xd39c, 0x944f, + }, + { + 0x0000, 0xeb23, 0xc667, 0x2d44, 0x9cef, 0x77cc, 0x5a88, 0xb1ab, + 0x29ff, 0xc2dc, 0xef98, 0x04bb, 0xb510, 0x5e33, 0x7377, 0x9854, + 0x53fe, 0xb8dd, 0x9599, 0x7eba, 0xcf11, 0x2432, 0x0976, 0xe255, + 0x7a01, 0x9122, 0xbc66, 0x5745, 0xe6ee, 0x0dcd, 0x2089, 0xcbaa, + 0xa7fc, 0x4cdf, 0x619b, 0x8ab8, 0x3b13, 0xd030, 0xfd74, 0x1657, + 0x8e03, 0x6520, 0x4864, 0xa347, 0x12ec, 0xf9cf, 0xd48b, 0x3fa8, + 0xf402, 0x1f21, 0x3265, 0xd946, 0x68ed, 0x83ce, 0xae8a, 0x45a9, + 0xddfd, 0x36de, 0x1b9a, 0xf0b9, 0x4112, 0xaa31, 0x8775, 0x6c56, + 0x5fd9, 0xb4fa, 0x99be, 0x729d, 0xc336, 0x2815, 0x0551, 0xee72, + 0x7626, 0x9d05, 0xb041, 0x5b62, 0xeac9, 0x01ea, 0x2cae, 0xc78d, + 0x0c27, 0xe704, 0xca40, 0x2163, 0x90c8, 0x7beb, 0x56af, 0xbd8c, + 0x25d8, 0xcefb, 0xe3bf, 0x089c, 0xb937, 0x5214, 0x7f50, 0x9473, + 0xf825, 0x1306, 0x3e42, 0xd561, 0x64ca, 0x8fe9, 0xa2ad, 0x498e, + 0xd1da, 0x3af9, 0x17bd, 0xfc9e, 0x4d35, 0xa616, 0x8b52, 0x6071, + 0xabdb, 0x40f8, 0x6dbc, 0x869f, 0x3734, 0xdc17, 0xf153, 0x1a70, + 0x8224, 0x6907, 0x4443, 0xaf60, 0x1ecb, 0xf5e8, 0xd8ac, 0x338f, + 0xbfb2, 0x5491, 0x79d5, 0x92f6, 0x235d, 0xc87e, 0xe53a, 0x0e19, + 0x964d, 0x7d6e, 0x502a, 0xbb09, 0x0aa2, 0xe181, 0xccc5, 0x27e6, + 0xec4c, 0x076f, 0x2a2b, 0xc108, 0x70a3, 0x9b80, 0xb6c4, 0x5de7, + 0xc5b3, 0x2e90, 0x03d4, 0xe8f7, 0x595c, 0xb27f, 0x9f3b, 0x7418, + 0x184e, 0xf36d, 0xde29, 0x350a, 0x84a1, 0x6f82, 0x42c6, 0xa9e5, + 0x31b1, 0xda92, 0xf7d6, 0x1cf5, 0xad5e, 0x467d, 0x6b39, 0x801a, + 0x4bb0, 0xa093, 0x8dd7, 0x66f4, 0xd75f, 0x3c7c, 0x1138, 0xfa1b, + 0x624f, 0x896c, 0xa428, 0x4f0b, 0xfea0, 0x1583, 0x38c7, 0xd3e4, + 0xe06b, 0x0b48, 0x260c, 0xcd2f, 0x7c84, 0x97a7, 0xbae3, 0x51c0, + 0xc994, 0x22b7, 0x0ff3, 0xe4d0, 0x557b, 0xbe58, 0x931c, 0x783f, + 0xb395, 0x58b6, 0x75f2, 0x9ed1, 0x2f7a, 0xc459, 0xe91d, 0x023e, + 0x9a6a, 0x7149, 0x5c0d, 0xb72e, 0x0685, 0xeda6, 0xc0e2, 0x2bc1, + 0x4797, 0xacb4, 0x81f0, 0x6ad3, 0xdb78, 0x305b, 0x1d1f, 0xf63c, + 0x6e68, 0x854b, 0xa80f, 0x432c, 0xf287, 0x19a4, 0x34e0, 0xdfc3, + 0x1469, 0xff4a, 0xd20e, 0x392d, 0x8886, 0x63a5, 0x4ee1, 0xa5c2, + 0x3d96, 0xd6b5, 0xfbf1, 0x10d2, 0xa179, 0x4a5a, 0x671e, 0x8c3d, + }, + { + 0x0000, 0x6f45, 0xde8a, 0xb1cf, 0xad35, 0xc270, 0x73bf, 0x1cfa, + 0x4a4b, 0x250e, 0x94c1, 0xfb84, 0xe77e, 0x883b, 0x39f4, 0x56b1, + 0x9496, 0xfbd3, 0x4a1c, 0x2559, 0x39a3, 0x56e6, 0xe729, 0x886c, + 0xdedd, 0xb198, 0x0057, 0x6f12, 0x73e8, 0x1cad, 0xad62, 0xc227, + 0x390d, 0x5648, 0xe787, 0x88c2, 0x9438, 0xfb7d, 0x4ab2, 0x25f7, + 0x7346, 0x1c03, 0xadcc, 0xc289, 0xde73, 0xb136, 0x00f9, 0x6fbc, + 0xad9b, 0xc2de, 0x7311, 0x1c54, 0x00ae, 0x6feb, 0xde24, 0xb161, + 0xe7d0, 0x8895, 0x395a, 0x561f, 0x4ae5, 0x25a0, 0x946f, 0xfb2a, + 0x721a, 0x1d5f, 0xac90, 0xc3d5, 0xdf2f, 0xb06a, 0x01a5, 0x6ee0, + 0x3851, 0x5714, 0xe6db, 0x899e, 0x9564, 0xfa21, 0x4bee, 0x24ab, + 0xe68c, 0x89c9, 0x3806, 0x5743, 0x4bb9, 0x24fc, 0x9533, 0xfa76, + 0xacc7, 0xc382, 0x724d, 0x1d08, 0x01f2, 0x6eb7, 0xdf78, 0xb03d, + 0x4b17, 0x2452, 0x959d, 0xfad8, 0xe622, 0x8967, 0x38a8, 0x57ed, + 0x015c, 0x6e19, 0xdfd6, 0xb093, 0xac69, 0xc32c, 0x72e3, 0x1da6, + 0xdf81, 0xb0c4, 0x010b, 0x6e4e, 0x72b4, 0x1df1, 0xac3e, 0xc37b, + 0x95ca, 0xfa8f, 0x4b40, 0x2405, 0x38ff, 0x57ba, 0xe675, 0x8930, + 0xe434, 0x8b71, 0x3abe, 0x55fb, 0x4901, 0x2644, 0x978b, 0xf8ce, + 0xae7f, 0xc13a, 0x70f5, 0x1fb0, 0x034a, 0x6c0f, 0xddc0, 0xb285, + 0x70a2, 0x1fe7, 0xae28, 0xc16d, 0xdd97, 0xb2d2, 0x031d, 0x6c58, + 0x3ae9, 0x55ac, 0xe463, 0x8b26, 0x97dc, 0xf899, 0x4956, 0x2613, + 0xdd39, 0xb27c, 0x03b3, 0x6cf6, 0x700c, 0x1f49, 0xae86, 0xc1c3, + 0x9772, 0xf837, 0x49f8, 0x26bd, 0x3a47, 0x5502, 0xe4cd, 0x8b88, + 0x49af, 0x26ea, 0x9725, 0xf860, 0xe49a, 0x8bdf, 0x3a10, 0x5555, + 0x03e4, 0x6ca1, 0xdd6e, 0xb22b, 0xaed1, 0xc194, 0x705b, 0x1f1e, + 0x962e, 0xf96b, 0x48a4, 0x27e1, 0x3b1b, 0x545e, 0xe591, 0x8ad4, + 0xdc65, 0xb320, 0x02ef, 0x6daa, 0x7150, 0x1e15, 0xafda, 0xc09f, + 0x02b8, 0x6dfd, 0xdc32, 0xb377, 0xaf8d, 0xc0c8, 0x7107, 0x1e42, + 0x48f3, 0x27b6, 0x9679, 0xf93c, 0xe5c6, 0x8a83, 0x3b4c, 0x5409, + 0xaf23, 0xc066, 0x71a9, 0x1eec, 0x0216, 0x6d53, 0xdc9c, 0xb3d9, + 0xe568, 0x8a2d, 0x3be2, 0x54a7, 0x485d, 0x2718, 0x96d7, 0xf992, + 0x3bb5, 0x54f0, 0xe53f, 0x8a7a, 0x9680, 0xf9c5, 0x480a, 0x274f, + 0x71fe, 0x1ebb, 0xaf74, 0xc031, 0xdccb, 0xb38e, 0x0241, 0x6d04, + }, + { + 0x0000, 0xd849, 0xa0b3, 0x78fa, 0x5147, 0x890e, 0xf1f4, 0x29bd, + 0xa28e, 0x7ac7, 0x023d, 0xda74, 0xf3c9, 0x2b80, 0x537a, 0x8b33, + 0x553d, 0x8d74, 0xf58e, 0x2dc7, 0x047a, 0xdc33, 0xa4c9, 0x7c80, + 0xf7b3, 0x2ffa, 0x5700, 0x8f49, 0xa6f4, 0x7ebd, 0x0647, 0xde0e, + 0xaa7a, 0x7233, 0x0ac9, 0xd280, 0xfb3d, 0x2374, 0x5b8e, 0x83c7, + 0x08f4, 0xd0bd, 0xa847, 0x700e, 0x59b3, 0x81fa, 0xf900, 0x2149, + 0xff47, 0x270e, 0x5ff4, 0x87bd, 0xae00, 0x7649, 0x0eb3, 0xd6fa, + 0x5dc9, 0x8580, 0xfd7a, 0x2533, 0x0c8e, 0xd4c7, 0xac3d, 0x7474, + 0x44d5, 0x9c9c, 0xe466, 0x3c2f, 0x1592, 0xcddb, 0xb521, 0x6d68, + 0xe65b, 0x3e12, 0x46e8, 0x9ea1, 0xb71c, 0x6f55, 0x17af, 0xcfe6, + 0x11e8, 0xc9a1, 0xb15b, 0x6912, 0x40af, 0x98e6, 0xe01c, 0x3855, + 0xb366, 0x6b2f, 0x13d5, 0xcb9c, 0xe221, 0x3a68, 0x4292, 0x9adb, + 0xeeaf, 0x36e6, 0x4e1c, 0x9655, 0xbfe8, 0x67a1, 0x1f5b, 0xc712, + 0x4c21, 0x9468, 0xec92, 0x34db, 0x1d66, 0xc52f, 0xbdd5, 0x659c, + 0xbb92, 0x63db, 0x1b21, 0xc368, 0xead5, 0x329c, 0x4a66, 0x922f, + 0x191c, 0xc155, 0xb9af, 0x61e6, 0x485b, 0x9012, 0xe8e8, 0x30a1, + 0x89aa, 0x51e3, 0x2919, 0xf150, 0xd8ed, 0x00a4, 0x785e, 0xa017, + 0x2b24, 0xf36d, 0x8b97, 0x53de, 0x7a63, 0xa22a, 0xdad0, 0x0299, + 0xdc97, 0x04de, 0x7c24, 0xa46d, 0x8dd0, 0x5599, 0x2d63, 0xf52a, + 0x7e19, 0xa650, 0xdeaa, 0x06e3, 0x2f5e, 0xf717, 0x8fed, 0x57a4, + 0x23d0, 0xfb99, 0x8363, 0x5b2a, 0x7297, 0xaade, 0xd224, 0x0a6d, + 0x815e, 0x5917, 0x21ed, 0xf9a4, 0xd019, 0x0850, 0x70aa, 0xa8e3, + 0x76ed, 0xaea4, 0xd65e, 0x0e17, 0x27aa, 0xffe3, 0x8719, 0x5f50, + 0xd463, 0x0c2a, 0x74d0, 0xac99, 0x8524, 0x5d6d, 0x2597, 0xfdde, + 0xcd7f, 0x1536, 0x6dcc, 0xb585, 0x9c38, 0x4471, 0x3c8b, 0xe4c2, + 0x6ff1, 0xb7b8, 0xcf42, 0x170b, 0x3eb6, 0xe6ff, 0x9e05, 0x464c, + 0x9842, 0x400b, 0x38f1, 0xe0b8, 0xc905, 0x114c, 0x69b6, 0xb1ff, + 0x3acc, 0xe285, 0x9a7f, 0x4236, 0x6b8b, 0xb3c2, 0xcb38, 0x1371, + 0x6705, 0xbf4c, 0xc7b6, 0x1fff, 0x3642, 0xee0b, 0x96f1, 0x4eb8, + 0xc58b, 0x1dc2, 0x6538, 0xbd71, 0x94cc, 0x4c85, 0x347f, 0xec36, + 0x3238, 0xea71, 0x928b, 0x4ac2, 0x637f, 0xbb36, 0xc3cc, 0x1b85, + 0x90b6, 0x48ff, 0x3005, 0xe84c, 0xc1f1, 0x19b8, 0x6142, 0xb90b, + }, + { + 0x0000, 0x0375, 0x06ea, 0x059f, 0x0dd4, 0x0ea1, 0x0b3e, 0x084b, + 0x1ba8, 0x18dd, 0x1d42, 0x1e37, 0x167c, 0x1509, 0x1096, 0x13e3, + 0x3750, 0x3425, 0x31ba, 0x32cf, 0x3a84, 0x39f1, 0x3c6e, 0x3f1b, + 0x2cf8, 0x2f8d, 0x2a12, 0x2967, 0x212c, 0x2259, 0x27c6, 0x24b3, + 0x6ea0, 0x6dd5, 0x684a, 0x6b3f, 0x6374, 0x6001, 0x659e, 0x66eb, + 0x7508, 0x767d, 0x73e2, 0x7097, 0x78dc, 0x7ba9, 0x7e36, 0x7d43, + 0x59f0, 0x5a85, 0x5f1a, 0x5c6f, 0x5424, 0x5751, 0x52ce, 0x51bb, + 0x4258, 0x412d, 0x44b2, 0x47c7, 0x4f8c, 0x4cf9, 0x4966, 0x4a13, + 0xdd40, 0xde35, 0xdbaa, 0xd8df, 0xd094, 0xd3e1, 0xd67e, 0xd50b, + 0xc6e8, 0xc59d, 0xc002, 0xc377, 0xcb3c, 0xc849, 0xcdd6, 0xcea3, + 0xea10, 0xe965, 0xecfa, 0xef8f, 0xe7c4, 0xe4b1, 0xe12e, 0xe25b, + 0xf1b8, 0xf2cd, 0xf752, 0xf427, 0xfc6c, 0xff19, 0xfa86, 0xf9f3, + 0xb3e0, 0xb095, 0xb50a, 0xb67f, 0xbe34, 0xbd41, 0xb8de, 0xbbab, + 0xa848, 0xab3d, 0xaea2, 0xadd7, 0xa59c, 0xa6e9, 0xa376, 0xa003, + 0x84b0, 0x87c5, 0x825a, 0x812f, 0x8964, 0x8a11, 0x8f8e, 0x8cfb, + 0x9f18, 0x9c6d, 0x99f2, 0x9a87, 0x92cc, 0x91b9, 0x9426, 0x9753, + 0xaaa1, 0xa9d4, 0xac4b, 0xaf3e, 0xa775, 0xa400, 0xa19f, 0xa2ea, + 0xb109, 0xb27c, 0xb7e3, 0xb496, 0xbcdd, 0xbfa8, 0xba37, 0xb942, + 0x9df1, 0x9e84, 0x9b1b, 0x986e, 0x9025, 0x9350, 0x96cf, 0x95ba, + 0x8659, 0x852c, 0x80b3, 0x83c6, 0x8b8d, 0x88f8, 0x8d67, 0x8e12, + 0xc401, 0xc774, 0xc2eb, 0xc19e, 0xc9d5, 0xcaa0, 0xcf3f, 0xcc4a, + 0xdfa9, 0xdcdc, 0xd943, 0xda36, 0xd27d, 0xd108, 0xd497, 0xd7e2, + 0xf351, 0xf024, 0xf5bb, 0xf6ce, 0xfe85, 0xfdf0, 0xf86f, 0xfb1a, + 0xe8f9, 0xeb8c, 0xee13, 0xed66, 0xe52d, 0xe658, 0xe3c7, 0xe0b2, + 0x77e1, 0x7494, 0x710b, 0x727e, 0x7a35, 0x7940, 0x7cdf, 0x7faa, + 0x6c49, 0x6f3c, 0x6aa3, 0x69d6, 0x619d, 0x62e8, 0x6777, 0x6402, + 0x40b1, 0x43c4, 0x465b, 0x452e, 0x4d65, 0x4e10, 0x4b8f, 0x48fa, + 0x5b19, 0x586c, 0x5df3, 0x5e86, 0x56cd, 0x55b8, 0x5027, 0x5352, + 0x1941, 0x1a34, 0x1fab, 0x1cde, 0x1495, 0x17e0, 0x127f, 0x110a, + 0x02e9, 0x019c, 0x0403, 0x0776, 0x0f3d, 0x0c48, 0x09d7, 0x0aa2, + 0x2e11, 0x2d64, 0x28fb, 0x2b8e, 0x23c5, 0x20b0, 0x252f, 0x265a, + 0x35b9, 0x36cc, 0x3353, 0x3026, 0x386d, 0x3b18, 0x3e87, 0x3df2, + }, + { + 0x0000, 0x4563, 0x8ac6, 0xcfa5, 0x05ad, 0x40ce, 0x8f6b, 0xca08, + 0x0b5a, 0x4e39, 0x819c, 0xc4ff, 0x0ef7, 0x4b94, 0x8431, 0xc152, + 0x16b4, 0x53d7, 0x9c72, 0xd911, 0x1319, 0x567a, 0x99df, 0xdcbc, + 0x1dee, 0x588d, 0x9728, 0xd24b, 0x1843, 0x5d20, 0x9285, 0xd7e6, + 0x2d68, 0x680b, 0xa7ae, 0xe2cd, 0x28c5, 0x6da6, 0xa203, 0xe760, + 0x2632, 0x6351, 0xacf4, 0xe997, 0x239f, 0x66fc, 0xa959, 0xec3a, + 0x3bdc, 0x7ebf, 0xb11a, 0xf479, 0x3e71, 0x7b12, 0xb4b7, 0xf1d4, + 0x3086, 0x75e5, 0xba40, 0xff23, 0x352b, 0x7048, 0xbfed, 0xfa8e, + 0x5ad0, 0x1fb3, 0xd016, 0x9575, 0x5f7d, 0x1a1e, 0xd5bb, 0x90d8, + 0x518a, 0x14e9, 0xdb4c, 0x9e2f, 0x5427, 0x1144, 0xdee1, 0x9b82, + 0x4c64, 0x0907, 0xc6a2, 0x83c1, 0x49c9, 0x0caa, 0xc30f, 0x866c, + 0x473e, 0x025d, 0xcdf8, 0x889b, 0x4293, 0x07f0, 0xc855, 0x8d36, + 0x77b8, 0x32db, 0xfd7e, 0xb81d, 0x7215, 0x3776, 0xf8d3, 0xbdb0, + 0x7ce2, 0x3981, 0xf624, 0xb347, 0x794f, 0x3c2c, 0xf389, 0xb6ea, + 0x610c, 0x246f, 0xebca, 0xaea9, 0x64a1, 0x21c2, 0xee67, 0xab04, + 0x6a56, 0x2f35, 0xe090, 0xa5f3, 0x6ffb, 0x2a98, 0xe53d, 0xa05e, + 0xb5a0, 0xf0c3, 0x3f66, 0x7a05, 0xb00d, 0xf56e, 0x3acb, 0x7fa8, + 0xbefa, 0xfb99, 0x343c, 0x715f, 0xbb57, 0xfe34, 0x3191, 0x74f2, + 0xa314, 0xe677, 0x29d2, 0x6cb1, 0xa6b9, 0xe3da, 0x2c7f, 0x691c, + 0xa84e, 0xed2d, 0x2288, 0x67eb, 0xade3, 0xe880, 0x2725, 0x6246, + 0x98c8, 0xddab, 0x120e, 0x576d, 0x9d65, 0xd806, 0x17a3, 0x52c0, + 0x9392, 0xd6f1, 0x1954, 0x5c37, 0x963f, 0xd35c, 0x1cf9, 0x599a, + 0x8e7c, 0xcb1f, 0x04ba, 0x41d9, 0x8bd1, 0xceb2, 0x0117, 0x4474, + 0x8526, 0xc045, 0x0fe0, 0x4a83, 0x808b, 0xc5e8, 0x0a4d, 0x4f2e, + 0xef70, 0xaa13, 0x65b6, 0x20d5, 0xeadd, 0xafbe, 0x601b, 0x2578, + 0xe42a, 0xa149, 0x6eec, 0x2b8f, 0xe187, 0xa4e4, 0x6b41, 0x2e22, + 0xf9c4, 0xbca7, 0x7302, 0x3661, 0xfc69, 0xb90a, 0x76af, 0x33cc, + 0xf29e, 0xb7fd, 0x7858, 0x3d3b, 0xf733, 0xb250, 0x7df5, 0x3896, + 0xc218, 0x877b, 0x48de, 0x0dbd, 0xc7b5, 0x82d6, 0x4d73, 0x0810, + 0xc942, 0x8c21, 0x4384, 0x06e7, 0xccef, 0x898c, 0x4629, 0x034a, + 0xd4ac, 0x91cf, 0x5e6a, 0x1b09, 0xd101, 0x9462, 0x5bc7, 0x1ea4, + 0xdff6, 0x9a95, 0x5530, 0x1053, 0xda5b, 0x9f38, 0x509d, 0x15fe, + }, + { + 0x0000, 0x7b61, 0xf6c2, 0x8da3, 0xfda5, 0x86c4, 0x0b67, 0x7006, + 0xeb6b, 0x900a, 0x1da9, 0x66c8, 0x16ce, 0x6daf, 0xe00c, 0x9b6d, + 0xc6f7, 0xbd96, 0x3035, 0x4b54, 0x3b52, 0x4033, 0xcd90, 0xb6f1, + 0x2d9c, 0x56fd, 0xdb5e, 0xa03f, 0xd039, 0xab58, 0x26fb, 0x5d9a, + 0x9dcf, 0xe6ae, 0x6b0d, 0x106c, 0x606a, 0x1b0b, 0x96a8, 0xedc9, + 0x76a4, 0x0dc5, 0x8066, 0xfb07, 0x8b01, 0xf060, 0x7dc3, 0x06a2, + 0x5b38, 0x2059, 0xadfa, 0xd69b, 0xa69d, 0xddfc, 0x505f, 0x2b3e, + 0xb053, 0xcb32, 0x4691, 0x3df0, 0x4df6, 0x3697, 0xbb34, 0xc055, + 0x2bbf, 0x50de, 0xdd7d, 0xa61c, 0xd61a, 0xad7b, 0x20d8, 0x5bb9, + 0xc0d4, 0xbbb5, 0x3616, 0x4d77, 0x3d71, 0x4610, 0xcbb3, 0xb0d2, + 0xed48, 0x9629, 0x1b8a, 0x60eb, 0x10ed, 0x6b8c, 0xe62f, 0x9d4e, + 0x0623, 0x7d42, 0xf0e1, 0x8b80, 0xfb86, 0x80e7, 0x0d44, 0x7625, + 0xb670, 0xcd11, 0x40b2, 0x3bd3, 0x4bd5, 0x30b4, 0xbd17, 0xc676, + 0x5d1b, 0x267a, 0xabd9, 0xd0b8, 0xa0be, 0xdbdf, 0x567c, 0x2d1d, + 0x7087, 0x0be6, 0x8645, 0xfd24, 0x8d22, 0xf643, 0x7be0, 0x0081, + 0x9bec, 0xe08d, 0x6d2e, 0x164f, 0x6649, 0x1d28, 0x908b, 0xebea, + 0x577e, 0x2c1f, 0xa1bc, 0xdadd, 0xaadb, 0xd1ba, 0x5c19, 0x2778, + 0xbc15, 0xc774, 0x4ad7, 0x31b6, 0x41b0, 0x3ad1, 0xb772, 0xcc13, + 0x9189, 0xeae8, 0x674b, 0x1c2a, 0x6c2c, 0x174d, 0x9aee, 0xe18f, + 0x7ae2, 0x0183, 0x8c20, 0xf741, 0x8747, 0xfc26, 0x7185, 0x0ae4, + 0xcab1, 0xb1d0, 0x3c73, 0x4712, 0x3714, 0x4c75, 0xc1d6, 0xbab7, + 0x21da, 0x5abb, 0xd718, 0xac79, 0xdc7f, 0xa71e, 0x2abd, 0x51dc, + 0x0c46, 0x7727, 0xfa84, 0x81e5, 0xf1e3, 0x8a82, 0x0721, 0x7c40, + 0xe72d, 0x9c4c, 0x11ef, 0x6a8e, 0x1a88, 0x61e9, 0xec4a, 0x972b, + 0x7cc1, 0x07a0, 0x8a03, 0xf162, 0x8164, 0xfa05, 0x77a6, 0x0cc7, + 0x97aa, 0xeccb, 0x6168, 0x1a09, 0x6a0f, 0x116e, 0x9ccd, 0xe7ac, + 0xba36, 0xc157, 0x4cf4, 0x3795, 0x4793, 0x3cf2, 0xb151, 0xca30, + 0x515d, 0x2a3c, 0xa79f, 0xdcfe, 0xacf8, 0xd799, 0x5a3a, 0x215b, + 0xe10e, 0x9a6f, 0x17cc, 0x6cad, 0x1cab, 0x67ca, 0xea69, 0x9108, + 0x0a65, 0x7104, 0xfca7, 0x87c6, 0xf7c0, 0x8ca1, 0x0102, 0x7a63, + 0x27f9, 0x5c98, 0xd13b, 0xaa5a, 0xda5c, 0xa13d, 0x2c9e, 0x57ff, + 0xcc92, 0xb7f3, 0x3a50, 0x4131, 0x3137, 0x4a56, 0xc7f5, 0xbc94, + }, + { + 0x0000, 0xaefc, 0x4dd9, 0xe325, 0x9bb2, 0x354e, 0xd66b, 0x7897, + 0x2745, 0x89b9, 0x6a9c, 0xc460, 0xbcf7, 0x120b, 0xf12e, 0x5fd2, + 0x4e8a, 0xe076, 0x0353, 0xadaf, 0xd538, 0x7bc4, 0x98e1, 0x361d, + 0x69cf, 0xc733, 0x2416, 0x8aea, 0xf27d, 0x5c81, 0xbfa4, 0x1158, + 0x9d14, 0x33e8, 0xd0cd, 0x7e31, 0x06a6, 0xa85a, 0x4b7f, 0xe583, + 0xba51, 0x14ad, 0xf788, 0x5974, 0x21e3, 0x8f1f, 0x6c3a, 0xc2c6, + 0xd39e, 0x7d62, 0x9e47, 0x30bb, 0x482c, 0xe6d0, 0x05f5, 0xab09, + 0xf4db, 0x5a27, 0xb902, 0x17fe, 0x6f69, 0xc195, 0x22b0, 0x8c4c, + 0x2a09, 0x84f5, 0x67d0, 0xc92c, 0xb1bb, 0x1f47, 0xfc62, 0x529e, + 0x0d4c, 0xa3b0, 0x4095, 0xee69, 0x96fe, 0x3802, 0xdb27, 0x75db, + 0x6483, 0xca7f, 0x295a, 0x87a6, 0xff31, 0x51cd, 0xb2e8, 0x1c14, + 0x43c6, 0xed3a, 0x0e1f, 0xa0e3, 0xd874, 0x7688, 0x95ad, 0x3b51, + 0xb71d, 0x19e1, 0xfac4, 0x5438, 0x2caf, 0x8253, 0x6176, 0xcf8a, + 0x9058, 0x3ea4, 0xdd81, 0x737d, 0x0bea, 0xa516, 0x4633, 0xe8cf, + 0xf997, 0x576b, 0xb44e, 0x1ab2, 0x6225, 0xccd9, 0x2ffc, 0x8100, + 0xded2, 0x702e, 0x930b, 0x3df7, 0x4560, 0xeb9c, 0x08b9, 0xa645, + 0x5412, 0xfaee, 0x19cb, 0xb737, 0xcfa0, 0x615c, 0x8279, 0x2c85, + 0x7357, 0xddab, 0x3e8e, 0x9072, 0xe8e5, 0x4619, 0xa53c, 0x0bc0, + 0x1a98, 0xb464, 0x5741, 0xf9bd, 0x812a, 0x2fd6, 0xccf3, 0x620f, + 0x3ddd, 0x9321, 0x7004, 0xdef8, 0xa66f, 0x0893, 0xebb6, 0x454a, + 0xc906, 0x67fa, 0x84df, 0x2a23, 0x52b4, 0xfc48, 0x1f6d, 0xb191, + 0xee43, 0x40bf, 0xa39a, 0x0d66, 0x75f1, 0xdb0d, 0x3828, 0x96d4, + 0x878c, 0x2970, 0xca55, 0x64a9, 0x1c3e, 0xb2c2, 0x51e7, 0xff1b, + 0xa0c9, 0x0e35, 0xed10, 0x43ec, 0x3b7b, 0x9587, 0x76a2, 0xd85e, + 0x7e1b, 0xd0e7, 0x33c2, 0x9d3e, 0xe5a9, 0x4b55, 0xa870, 0x068c, + 0x595e, 0xf7a2, 0x1487, 0xba7b, 0xc2ec, 0x6c10, 0x8f35, 0x21c9, + 0x3091, 0x9e6d, 0x7d48, 0xd3b4, 0xab23, 0x05df, 0xe6fa, 0x4806, + 0x17d4, 0xb928, 0x5a0d, 0xf4f1, 0x8c66, 0x229a, 0xc1bf, 0x6f43, + 0xe30f, 0x4df3, 0xaed6, 0x002a, 0x78bd, 0xd641, 0x3564, 0x9b98, + 0xc44a, 0x6ab6, 0x8993, 0x276f, 0x5ff8, 0xf104, 0x1221, 0xbcdd, + 0xad85, 0x0379, 0xe05c, 0x4ea0, 0x3637, 0x98cb, 0x7bee, 0xd512, + 0x8ac0, 0x243c, 0xc719, 0x69e5, 0x1172, 0xbf8e, 0x5cab, 0xf257, + }, + { + 0x0000, 0xa824, 0x4069, 0xe84d, 0x80d2, 0x28f6, 0xc0bb, 0x689f, + 0x1185, 0xb9a1, 0x51ec, 0xf9c8, 0x9157, 0x3973, 0xd13e, 0x791a, + 0x230a, 0x8b2e, 0x6363, 0xcb47, 0xa3d8, 0x0bfc, 0xe3b1, 0x4b95, + 0x328f, 0x9aab, 0x72e6, 0xdac2, 0xb25d, 0x1a79, 0xf234, 0x5a10, + 0x4614, 0xee30, 0x067d, 0xae59, 0xc6c6, 0x6ee2, 0x86af, 0x2e8b, + 0x5791, 0xffb5, 0x17f8, 0xbfdc, 0xd743, 0x7f67, 0x972a, 0x3f0e, + 0x651e, 0xcd3a, 0x2577, 0x8d53, 0xe5cc, 0x4de8, 0xa5a5, 0x0d81, + 0x749b, 0xdcbf, 0x34f2, 0x9cd6, 0xf449, 0x5c6d, 0xb420, 0x1c04, + 0x8c28, 0x240c, 0xcc41, 0x6465, 0x0cfa, 0xa4de, 0x4c93, 0xe4b7, + 0x9dad, 0x3589, 0xddc4, 0x75e0, 0x1d7f, 0xb55b, 0x5d16, 0xf532, + 0xaf22, 0x0706, 0xef4b, 0x476f, 0x2ff0, 0x87d4, 0x6f99, 0xc7bd, + 0xbea7, 0x1683, 0xfece, 0x56ea, 0x3e75, 0x9651, 0x7e1c, 0xd638, + 0xca3c, 0x6218, 0x8a55, 0x2271, 0x4aee, 0xe2ca, 0x0a87, 0xa2a3, + 0xdbb9, 0x739d, 0x9bd0, 0x33f4, 0x5b6b, 0xf34f, 0x1b02, 0xb326, + 0xe936, 0x4112, 0xa95f, 0x017b, 0x69e4, 0xc1c0, 0x298d, 0x81a9, + 0xf8b3, 0x5097, 0xb8da, 0x10fe, 0x7861, 0xd045, 0x3808, 0x902c, + 0x0871, 0xa055, 0x4818, 0xe03c, 0x88a3, 0x2087, 0xc8ca, 0x60ee, + 0x19f4, 0xb1d0, 0x599d, 0xf1b9, 0x9926, 0x3102, 0xd94f, 0x716b, + 0x2b7b, 0x835f, 0x6b12, 0xc336, 0xaba9, 0x038d, 0xebc0, 0x43e4, + 0x3afe, 0x92da, 0x7a97, 0xd2b3, 0xba2c, 0x1208, 0xfa45, 0x5261, + 0x4e65, 0xe641, 0x0e0c, 0xa628, 0xceb7, 0x6693, 0x8ede, 0x26fa, + 0x5fe0, 0xf7c4, 0x1f89, 0xb7ad, 0xdf32, 0x7716, 0x9f5b, 0x377f, + 0x6d6f, 0xc54b, 0x2d06, 0x8522, 0xedbd, 0x4599, 0xadd4, 0x05f0, + 0x7cea, 0xd4ce, 0x3c83, 0x94a7, 0xfc38, 0x541c, 0xbc51, 0x1475, + 0x8459, 0x2c7d, 0xc430, 0x6c14, 0x048b, 0xacaf, 0x44e2, 0xecc6, + 0x95dc, 0x3df8, 0xd5b5, 0x7d91, 0x150e, 0xbd2a, 0x5567, 0xfd43, + 0xa753, 0x0f77, 0xe73a, 0x4f1e, 0x2781, 0x8fa5, 0x67e8, 0xcfcc, + 0xb6d6, 0x1ef2, 0xf6bf, 0x5e9b, 0x3604, 0x9e20, 0x766d, 0xde49, + 0xc24d, 0x6a69, 0x8224, 0x2a00, 0x429f, 0xeabb, 0x02f6, 0xaad2, + 0xd3c8, 0x7bec, 0x93a1, 0x3b85, 0x531a, 0xfb3e, 0x1373, 0xbb57, + 0xe147, 0x4963, 0xa12e, 0x090a, 0x6195, 0xc9b1, 0x21fc, 0x89d8, + 0xf0c2, 0x58e6, 0xb0ab, 0x188f, 0x7010, 0xd834, 0x3079, 0x985d, + }, +}; diff --git a/ext/digest/crc16_zmodem/crc16_zmodem.c b/ext/digest/crc16_zmodem/crc16_zmodem.c index 45c364b..73e0f73 100644 --- a/ext/digest/crc16_zmodem/crc16_zmodem.c +++ b/ext/digest/crc16_zmodem/crc16_zmodem.c @@ -15,54 +15,39 @@ */ #include "crc16_zmodem.h" - -/** - * Static table used for the table_driven implementation. - */ -static const crc16_t crc16_zmodem_table[256] = { - 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, - 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, - 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, - 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, - 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, - 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, - 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, - 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, - 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, - 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, - 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, - 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, - 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, - 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, - 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, - 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, - 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, - 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, - 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, - 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, - 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, - 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, - 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, - 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, - 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, - 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, - 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, - 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, - 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, - 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, - 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, - 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0 -}; +#include "crc16_zmodem_table.h" crc16_t crc16_zmodem_update(crc16_t crc, const void *data, size_t data_len) { const unsigned char *d = (const unsigned char *)data; unsigned int tbl_idx; + for (; data_len >= SLICE_SIZE; data_len -= SLICE_SIZE) + { + crc = crc16_zmodem_table[15][d[ 0] ^ ((crc >> 8) & 0xff)] ^ + crc16_zmodem_table[14][d[ 1] ^ ((crc >> 0) & 0xff)] ^ + crc16_zmodem_table[13][d[ 2] ] ^ + crc16_zmodem_table[12][d[ 3] ] ^ + crc16_zmodem_table[11][d[ 4] ] ^ + crc16_zmodem_table[10][d[ 5] ] ^ + crc16_zmodem_table[ 9][d[ 6] ] ^ + crc16_zmodem_table[ 8][d[ 7] ] ^ + crc16_zmodem_table[ 7][d[ 8] ] ^ + crc16_zmodem_table[ 6][d[ 9] ] ^ + crc16_zmodem_table[ 5][d[10] ] ^ + crc16_zmodem_table[ 4][d[11] ] ^ + crc16_zmodem_table[ 3][d[12] ] ^ + crc16_zmodem_table[ 2][d[13] ] ^ + crc16_zmodem_table[ 1][d[14] ] ^ + crc16_zmodem_table[ 0][d[15] ]; + crc &= 0xffff; + d += SLICE_SIZE; + } + while (data_len--) { tbl_idx = ((crc >> 8) ^ *d) & 0xff; - crc = (crc16_zmodem_table[tbl_idx] ^ (crc << 8)) & 0xffff; + crc = (crc16_zmodem_table[0][tbl_idx] ^ (crc << 8)) & 0xffff; d++; } diff --git a/ext/digest/crc16_zmodem/crc16_zmodem_table.h b/ext/digest/crc16_zmodem/crc16_zmodem_table.h new file mode 100644 index 0000000..79c2a24 --- /dev/null +++ b/ext/digest/crc16_zmodem/crc16_zmodem_table.h @@ -0,0 +1,558 @@ +/* + * bitwidth: 16 + * generator polynomial: 0x1021 + * input bit direction: NORMAL + * slice bytes per iteration: 16 + * slide bits per table: 8 + * + * Generated by: gentable.rb of digest-crc + */ + +#define SLICE_SIZE 16 + +static const uint16_t crc16_zmodem_table[SLICE_SIZE][256] = { + { + 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, + 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, + 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, + 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, + 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, + 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, + 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, + 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, + 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, + 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, + 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, + 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, + 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, + 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, + 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, + 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, + 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, + 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, + 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, + 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, + 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, + 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, + 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, + 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, + 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, + 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, + 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, + 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, + 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, + 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, + 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, + 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0, + }, + { + 0x0000, 0x3331, 0x6662, 0x5553, 0xccc4, 0xfff5, 0xaaa6, 0x9997, + 0x89a9, 0xba98, 0xefcb, 0xdcfa, 0x456d, 0x765c, 0x230f, 0x103e, + 0x0373, 0x3042, 0x6511, 0x5620, 0xcfb7, 0xfc86, 0xa9d5, 0x9ae4, + 0x8ada, 0xb9eb, 0xecb8, 0xdf89, 0x461e, 0x752f, 0x207c, 0x134d, + 0x06e6, 0x35d7, 0x6084, 0x53b5, 0xca22, 0xf913, 0xac40, 0x9f71, + 0x8f4f, 0xbc7e, 0xe92d, 0xda1c, 0x438b, 0x70ba, 0x25e9, 0x16d8, + 0x0595, 0x36a4, 0x63f7, 0x50c6, 0xc951, 0xfa60, 0xaf33, 0x9c02, + 0x8c3c, 0xbf0d, 0xea5e, 0xd96f, 0x40f8, 0x73c9, 0x269a, 0x15ab, + 0x0dcc, 0x3efd, 0x6bae, 0x589f, 0xc108, 0xf239, 0xa76a, 0x945b, + 0x8465, 0xb754, 0xe207, 0xd136, 0x48a1, 0x7b90, 0x2ec3, 0x1df2, + 0x0ebf, 0x3d8e, 0x68dd, 0x5bec, 0xc27b, 0xf14a, 0xa419, 0x9728, + 0x8716, 0xb427, 0xe174, 0xd245, 0x4bd2, 0x78e3, 0x2db0, 0x1e81, + 0x0b2a, 0x381b, 0x6d48, 0x5e79, 0xc7ee, 0xf4df, 0xa18c, 0x92bd, + 0x8283, 0xb1b2, 0xe4e1, 0xd7d0, 0x4e47, 0x7d76, 0x2825, 0x1b14, + 0x0859, 0x3b68, 0x6e3b, 0x5d0a, 0xc49d, 0xf7ac, 0xa2ff, 0x91ce, + 0x81f0, 0xb2c1, 0xe792, 0xd4a3, 0x4d34, 0x7e05, 0x2b56, 0x1867, + 0x1b98, 0x28a9, 0x7dfa, 0x4ecb, 0xd75c, 0xe46d, 0xb13e, 0x820f, + 0x9231, 0xa100, 0xf453, 0xc762, 0x5ef5, 0x6dc4, 0x3897, 0x0ba6, + 0x18eb, 0x2bda, 0x7e89, 0x4db8, 0xd42f, 0xe71e, 0xb24d, 0x817c, + 0x9142, 0xa273, 0xf720, 0xc411, 0x5d86, 0x6eb7, 0x3be4, 0x08d5, + 0x1d7e, 0x2e4f, 0x7b1c, 0x482d, 0xd1ba, 0xe28b, 0xb7d8, 0x84e9, + 0x94d7, 0xa7e6, 0xf2b5, 0xc184, 0x5813, 0x6b22, 0x3e71, 0x0d40, + 0x1e0d, 0x2d3c, 0x786f, 0x4b5e, 0xd2c9, 0xe1f8, 0xb4ab, 0x879a, + 0x97a4, 0xa495, 0xf1c6, 0xc2f7, 0x5b60, 0x6851, 0x3d02, 0x0e33, + 0x1654, 0x2565, 0x7036, 0x4307, 0xda90, 0xe9a1, 0xbcf2, 0x8fc3, + 0x9ffd, 0xaccc, 0xf99f, 0xcaae, 0x5339, 0x6008, 0x355b, 0x066a, + 0x1527, 0x2616, 0x7345, 0x4074, 0xd9e3, 0xead2, 0xbf81, 0x8cb0, + 0x9c8e, 0xafbf, 0xfaec, 0xc9dd, 0x504a, 0x637b, 0x3628, 0x0519, + 0x10b2, 0x2383, 0x76d0, 0x45e1, 0xdc76, 0xef47, 0xba14, 0x8925, + 0x991b, 0xaa2a, 0xff79, 0xcc48, 0x55df, 0x66ee, 0x33bd, 0x008c, + 0x13c1, 0x20f0, 0x75a3, 0x4692, 0xdf05, 0xec34, 0xb967, 0x8a56, + 0x9a68, 0xa959, 0xfc0a, 0xcf3b, 0x56ac, 0x659d, 0x30ce, 0x03ff, + }, + { + 0x0000, 0x3730, 0x6e60, 0x5950, 0xdcc0, 0xebf0, 0xb2a0, 0x8590, + 0xa9a1, 0x9e91, 0xc7c1, 0xf0f1, 0x7561, 0x4251, 0x1b01, 0x2c31, + 0x4363, 0x7453, 0x2d03, 0x1a33, 0x9fa3, 0xa893, 0xf1c3, 0xc6f3, + 0xeac2, 0xddf2, 0x84a2, 0xb392, 0x3602, 0x0132, 0x5862, 0x6f52, + 0x86c6, 0xb1f6, 0xe8a6, 0xdf96, 0x5a06, 0x6d36, 0x3466, 0x0356, + 0x2f67, 0x1857, 0x4107, 0x7637, 0xf3a7, 0xc497, 0x9dc7, 0xaaf7, + 0xc5a5, 0xf295, 0xabc5, 0x9cf5, 0x1965, 0x2e55, 0x7705, 0x4035, + 0x6c04, 0x5b34, 0x0264, 0x3554, 0xb0c4, 0x87f4, 0xdea4, 0xe994, + 0x1dad, 0x2a9d, 0x73cd, 0x44fd, 0xc16d, 0xf65d, 0xaf0d, 0x983d, + 0xb40c, 0x833c, 0xda6c, 0xed5c, 0x68cc, 0x5ffc, 0x06ac, 0x319c, + 0x5ece, 0x69fe, 0x30ae, 0x079e, 0x820e, 0xb53e, 0xec6e, 0xdb5e, + 0xf76f, 0xc05f, 0x990f, 0xae3f, 0x2baf, 0x1c9f, 0x45cf, 0x72ff, + 0x9b6b, 0xac5b, 0xf50b, 0xc23b, 0x47ab, 0x709b, 0x29cb, 0x1efb, + 0x32ca, 0x05fa, 0x5caa, 0x6b9a, 0xee0a, 0xd93a, 0x806a, 0xb75a, + 0xd808, 0xef38, 0xb668, 0x8158, 0x04c8, 0x33f8, 0x6aa8, 0x5d98, + 0x71a9, 0x4699, 0x1fc9, 0x28f9, 0xad69, 0x9a59, 0xc309, 0xf439, + 0x3b5a, 0x0c6a, 0x553a, 0x620a, 0xe79a, 0xd0aa, 0x89fa, 0xbeca, + 0x92fb, 0xa5cb, 0xfc9b, 0xcbab, 0x4e3b, 0x790b, 0x205b, 0x176b, + 0x7839, 0x4f09, 0x1659, 0x2169, 0xa4f9, 0x93c9, 0xca99, 0xfda9, + 0xd198, 0xe6a8, 0xbff8, 0x88c8, 0x0d58, 0x3a68, 0x6338, 0x5408, + 0xbd9c, 0x8aac, 0xd3fc, 0xe4cc, 0x615c, 0x566c, 0x0f3c, 0x380c, + 0x143d, 0x230d, 0x7a5d, 0x4d6d, 0xc8fd, 0xffcd, 0xa69d, 0x91ad, + 0xfeff, 0xc9cf, 0x909f, 0xa7af, 0x223f, 0x150f, 0x4c5f, 0x7b6f, + 0x575e, 0x606e, 0x393e, 0x0e0e, 0x8b9e, 0xbcae, 0xe5fe, 0xd2ce, + 0x26f7, 0x11c7, 0x4897, 0x7fa7, 0xfa37, 0xcd07, 0x9457, 0xa367, + 0x8f56, 0xb866, 0xe136, 0xd606, 0x5396, 0x64a6, 0x3df6, 0x0ac6, + 0x6594, 0x52a4, 0x0bf4, 0x3cc4, 0xb954, 0x8e64, 0xd734, 0xe004, + 0xcc35, 0xfb05, 0xa255, 0x9565, 0x10f5, 0x27c5, 0x7e95, 0x49a5, + 0xa031, 0x9701, 0xce51, 0xf961, 0x7cf1, 0x4bc1, 0x1291, 0x25a1, + 0x0990, 0x3ea0, 0x67f0, 0x50c0, 0xd550, 0xe260, 0xbb30, 0x8c00, + 0xe352, 0xd462, 0x8d32, 0xba02, 0x3f92, 0x08a2, 0x51f2, 0x66c2, + 0x4af3, 0x7dc3, 0x2493, 0x13a3, 0x9633, 0xa103, 0xf853, 0xcf63, + }, + { + 0x0000, 0x76b4, 0xed68, 0x9bdc, 0xcaf1, 0xbc45, 0x2799, 0x512d, + 0x85c3, 0xf377, 0x68ab, 0x1e1f, 0x4f32, 0x3986, 0xa25a, 0xd4ee, + 0x1ba7, 0x6d13, 0xf6cf, 0x807b, 0xd156, 0xa7e2, 0x3c3e, 0x4a8a, + 0x9e64, 0xe8d0, 0x730c, 0x05b8, 0x5495, 0x2221, 0xb9fd, 0xcf49, + 0x374e, 0x41fa, 0xda26, 0xac92, 0xfdbf, 0x8b0b, 0x10d7, 0x6663, + 0xb28d, 0xc439, 0x5fe5, 0x2951, 0x787c, 0x0ec8, 0x9514, 0xe3a0, + 0x2ce9, 0x5a5d, 0xc181, 0xb735, 0xe618, 0x90ac, 0x0b70, 0x7dc4, + 0xa92a, 0xdf9e, 0x4442, 0x32f6, 0x63db, 0x156f, 0x8eb3, 0xf807, + 0x6e9c, 0x1828, 0x83f4, 0xf540, 0xa46d, 0xd2d9, 0x4905, 0x3fb1, + 0xeb5f, 0x9deb, 0x0637, 0x7083, 0x21ae, 0x571a, 0xccc6, 0xba72, + 0x753b, 0x038f, 0x9853, 0xeee7, 0xbfca, 0xc97e, 0x52a2, 0x2416, + 0xf0f8, 0x864c, 0x1d90, 0x6b24, 0x3a09, 0x4cbd, 0xd761, 0xa1d5, + 0x59d2, 0x2f66, 0xb4ba, 0xc20e, 0x9323, 0xe597, 0x7e4b, 0x08ff, + 0xdc11, 0xaaa5, 0x3179, 0x47cd, 0x16e0, 0x6054, 0xfb88, 0x8d3c, + 0x4275, 0x34c1, 0xaf1d, 0xd9a9, 0x8884, 0xfe30, 0x65ec, 0x1358, + 0xc7b6, 0xb102, 0x2ade, 0x5c6a, 0x0d47, 0x7bf3, 0xe02f, 0x969b, + 0xdd38, 0xab8c, 0x3050, 0x46e4, 0x17c9, 0x617d, 0xfaa1, 0x8c15, + 0x58fb, 0x2e4f, 0xb593, 0xc327, 0x920a, 0xe4be, 0x7f62, 0x09d6, + 0xc69f, 0xb02b, 0x2bf7, 0x5d43, 0x0c6e, 0x7ada, 0xe106, 0x97b2, + 0x435c, 0x35e8, 0xae34, 0xd880, 0x89ad, 0xff19, 0x64c5, 0x1271, + 0xea76, 0x9cc2, 0x071e, 0x71aa, 0x2087, 0x5633, 0xcdef, 0xbb5b, + 0x6fb5, 0x1901, 0x82dd, 0xf469, 0xa544, 0xd3f0, 0x482c, 0x3e98, + 0xf1d1, 0x8765, 0x1cb9, 0x6a0d, 0x3b20, 0x4d94, 0xd648, 0xa0fc, + 0x7412, 0x02a6, 0x997a, 0xefce, 0xbee3, 0xc857, 0x538b, 0x253f, + 0xb3a4, 0xc510, 0x5ecc, 0x2878, 0x7955, 0x0fe1, 0x943d, 0xe289, + 0x3667, 0x40d3, 0xdb0f, 0xadbb, 0xfc96, 0x8a22, 0x11fe, 0x674a, + 0xa803, 0xdeb7, 0x456b, 0x33df, 0x62f2, 0x1446, 0x8f9a, 0xf92e, + 0x2dc0, 0x5b74, 0xc0a8, 0xb61c, 0xe731, 0x9185, 0x0a59, 0x7ced, + 0x84ea, 0xf25e, 0x6982, 0x1f36, 0x4e1b, 0x38af, 0xa373, 0xd5c7, + 0x0129, 0x779d, 0xec41, 0x9af5, 0xcbd8, 0xbd6c, 0x26b0, 0x5004, + 0x9f4d, 0xe9f9, 0x7225, 0x0491, 0x55bc, 0x2308, 0xb8d4, 0xce60, + 0x1a8e, 0x6c3a, 0xf7e6, 0x8152, 0xd07f, 0xa6cb, 0x3d17, 0x4ba3, + }, + { + 0x0000, 0xaa51, 0x4483, 0xeed2, 0x8906, 0x2357, 0xcd85, 0x67d4, + 0x022d, 0xa87c, 0x46ae, 0xecff, 0x8b2b, 0x217a, 0xcfa8, 0x65f9, + 0x045a, 0xae0b, 0x40d9, 0xea88, 0x8d5c, 0x270d, 0xc9df, 0x638e, + 0x0677, 0xac26, 0x42f4, 0xe8a5, 0x8f71, 0x2520, 0xcbf2, 0x61a3, + 0x08b4, 0xa2e5, 0x4c37, 0xe666, 0x81b2, 0x2be3, 0xc531, 0x6f60, + 0x0a99, 0xa0c8, 0x4e1a, 0xe44b, 0x839f, 0x29ce, 0xc71c, 0x6d4d, + 0x0cee, 0xa6bf, 0x486d, 0xe23c, 0x85e8, 0x2fb9, 0xc16b, 0x6b3a, + 0x0ec3, 0xa492, 0x4a40, 0xe011, 0x87c5, 0x2d94, 0xc346, 0x6917, + 0x1168, 0xbb39, 0x55eb, 0xffba, 0x986e, 0x323f, 0xdced, 0x76bc, + 0x1345, 0xb914, 0x57c6, 0xfd97, 0x9a43, 0x3012, 0xdec0, 0x7491, + 0x1532, 0xbf63, 0x51b1, 0xfbe0, 0x9c34, 0x3665, 0xd8b7, 0x72e6, + 0x171f, 0xbd4e, 0x539c, 0xf9cd, 0x9e19, 0x3448, 0xda9a, 0x70cb, + 0x19dc, 0xb38d, 0x5d5f, 0xf70e, 0x90da, 0x3a8b, 0xd459, 0x7e08, + 0x1bf1, 0xb1a0, 0x5f72, 0xf523, 0x92f7, 0x38a6, 0xd674, 0x7c25, + 0x1d86, 0xb7d7, 0x5905, 0xf354, 0x9480, 0x3ed1, 0xd003, 0x7a52, + 0x1fab, 0xb5fa, 0x5b28, 0xf179, 0x96ad, 0x3cfc, 0xd22e, 0x787f, + 0x22d0, 0x8881, 0x6653, 0xcc02, 0xabd6, 0x0187, 0xef55, 0x4504, + 0x20fd, 0x8aac, 0x647e, 0xce2f, 0xa9fb, 0x03aa, 0xed78, 0x4729, + 0x268a, 0x8cdb, 0x6209, 0xc858, 0xaf8c, 0x05dd, 0xeb0f, 0x415e, + 0x24a7, 0x8ef6, 0x6024, 0xca75, 0xada1, 0x07f0, 0xe922, 0x4373, + 0x2a64, 0x8035, 0x6ee7, 0xc4b6, 0xa362, 0x0933, 0xe7e1, 0x4db0, + 0x2849, 0x8218, 0x6cca, 0xc69b, 0xa14f, 0x0b1e, 0xe5cc, 0x4f9d, + 0x2e3e, 0x846f, 0x6abd, 0xc0ec, 0xa738, 0x0d69, 0xe3bb, 0x49ea, + 0x2c13, 0x8642, 0x6890, 0xc2c1, 0xa515, 0x0f44, 0xe196, 0x4bc7, + 0x33b8, 0x99e9, 0x773b, 0xdd6a, 0xbabe, 0x10ef, 0xfe3d, 0x546c, + 0x3195, 0x9bc4, 0x7516, 0xdf47, 0xb893, 0x12c2, 0xfc10, 0x5641, + 0x37e2, 0x9db3, 0x7361, 0xd930, 0xbee4, 0x14b5, 0xfa67, 0x5036, + 0x35cf, 0x9f9e, 0x714c, 0xdb1d, 0xbcc9, 0x1698, 0xf84a, 0x521b, + 0x3b0c, 0x915d, 0x7f8f, 0xd5de, 0xb20a, 0x185b, 0xf689, 0x5cd8, + 0x3921, 0x9370, 0x7da2, 0xd7f3, 0xb027, 0x1a76, 0xf4a4, 0x5ef5, + 0x3f56, 0x9507, 0x7bd5, 0xd184, 0xb650, 0x1c01, 0xf2d3, 0x5882, + 0x3d7b, 0x972a, 0x79f8, 0xd3a9, 0xb47d, 0x1e2c, 0xf0fe, 0x5aaf, + }, + { + 0x0000, 0x45a0, 0x8b40, 0xcee0, 0x06a1, 0x4301, 0x8de1, 0xc841, + 0x0d42, 0x48e2, 0x8602, 0xc3a2, 0x0be3, 0x4e43, 0x80a3, 0xc503, + 0x1a84, 0x5f24, 0x91c4, 0xd464, 0x1c25, 0x5985, 0x9765, 0xd2c5, + 0x17c6, 0x5266, 0x9c86, 0xd926, 0x1167, 0x54c7, 0x9a27, 0xdf87, + 0x3508, 0x70a8, 0xbe48, 0xfbe8, 0x33a9, 0x7609, 0xb8e9, 0xfd49, + 0x384a, 0x7dea, 0xb30a, 0xf6aa, 0x3eeb, 0x7b4b, 0xb5ab, 0xf00b, + 0x2f8c, 0x6a2c, 0xa4cc, 0xe16c, 0x292d, 0x6c8d, 0xa26d, 0xe7cd, + 0x22ce, 0x676e, 0xa98e, 0xec2e, 0x246f, 0x61cf, 0xaf2f, 0xea8f, + 0x6a10, 0x2fb0, 0xe150, 0xa4f0, 0x6cb1, 0x2911, 0xe7f1, 0xa251, + 0x6752, 0x22f2, 0xec12, 0xa9b2, 0x61f3, 0x2453, 0xeab3, 0xaf13, + 0x7094, 0x3534, 0xfbd4, 0xbe74, 0x7635, 0x3395, 0xfd75, 0xb8d5, + 0x7dd6, 0x3876, 0xf696, 0xb336, 0x7b77, 0x3ed7, 0xf037, 0xb597, + 0x5f18, 0x1ab8, 0xd458, 0x91f8, 0x59b9, 0x1c19, 0xd2f9, 0x9759, + 0x525a, 0x17fa, 0xd91a, 0x9cba, 0x54fb, 0x115b, 0xdfbb, 0x9a1b, + 0x459c, 0x003c, 0xcedc, 0x8b7c, 0x433d, 0x069d, 0xc87d, 0x8ddd, + 0x48de, 0x0d7e, 0xc39e, 0x863e, 0x4e7f, 0x0bdf, 0xc53f, 0x809f, + 0xd420, 0x9180, 0x5f60, 0x1ac0, 0xd281, 0x9721, 0x59c1, 0x1c61, + 0xd962, 0x9cc2, 0x5222, 0x1782, 0xdfc3, 0x9a63, 0x5483, 0x1123, + 0xcea4, 0x8b04, 0x45e4, 0x0044, 0xc805, 0x8da5, 0x4345, 0x06e5, + 0xc3e6, 0x8646, 0x48a6, 0x0d06, 0xc547, 0x80e7, 0x4e07, 0x0ba7, + 0xe128, 0xa488, 0x6a68, 0x2fc8, 0xe789, 0xa229, 0x6cc9, 0x2969, + 0xec6a, 0xa9ca, 0x672a, 0x228a, 0xeacb, 0xaf6b, 0x618b, 0x242b, + 0xfbac, 0xbe0c, 0x70ec, 0x354c, 0xfd0d, 0xb8ad, 0x764d, 0x33ed, + 0xf6ee, 0xb34e, 0x7dae, 0x380e, 0xf04f, 0xb5ef, 0x7b0f, 0x3eaf, + 0xbe30, 0xfb90, 0x3570, 0x70d0, 0xb891, 0xfd31, 0x33d1, 0x7671, + 0xb372, 0xf6d2, 0x3832, 0x7d92, 0xb5d3, 0xf073, 0x3e93, 0x7b33, + 0xa4b4, 0xe114, 0x2ff4, 0x6a54, 0xa215, 0xe7b5, 0x2955, 0x6cf5, + 0xa9f6, 0xec56, 0x22b6, 0x6716, 0xaf57, 0xeaf7, 0x2417, 0x61b7, + 0x8b38, 0xce98, 0x0078, 0x45d8, 0x8d99, 0xc839, 0x06d9, 0x4379, + 0x867a, 0xc3da, 0x0d3a, 0x489a, 0x80db, 0xc57b, 0x0b9b, 0x4e3b, + 0x91bc, 0xd41c, 0x1afc, 0x5f5c, 0x971d, 0xd2bd, 0x1c5d, 0x59fd, + 0x9cfe, 0xd95e, 0x17be, 0x521e, 0x9a5f, 0xdfff, 0x111f, 0x54bf, + }, + { + 0x0000, 0xb861, 0x60e3, 0xd882, 0xc1c6, 0x79a7, 0xa125, 0x1944, + 0x93ad, 0x2bcc, 0xf34e, 0x4b2f, 0x526b, 0xea0a, 0x3288, 0x8ae9, + 0x377b, 0x8f1a, 0x5798, 0xeff9, 0xf6bd, 0x4edc, 0x965e, 0x2e3f, + 0xa4d6, 0x1cb7, 0xc435, 0x7c54, 0x6510, 0xdd71, 0x05f3, 0xbd92, + 0x6ef6, 0xd697, 0x0e15, 0xb674, 0xaf30, 0x1751, 0xcfd3, 0x77b2, + 0xfd5b, 0x453a, 0x9db8, 0x25d9, 0x3c9d, 0x84fc, 0x5c7e, 0xe41f, + 0x598d, 0xe1ec, 0x396e, 0x810f, 0x984b, 0x202a, 0xf8a8, 0x40c9, + 0xca20, 0x7241, 0xaac3, 0x12a2, 0x0be6, 0xb387, 0x6b05, 0xd364, + 0xddec, 0x658d, 0xbd0f, 0x056e, 0x1c2a, 0xa44b, 0x7cc9, 0xc4a8, + 0x4e41, 0xf620, 0x2ea2, 0x96c3, 0x8f87, 0x37e6, 0xef64, 0x5705, + 0xea97, 0x52f6, 0x8a74, 0x3215, 0x2b51, 0x9330, 0x4bb2, 0xf3d3, + 0x793a, 0xc15b, 0x19d9, 0xa1b8, 0xb8fc, 0x009d, 0xd81f, 0x607e, + 0xb31a, 0x0b7b, 0xd3f9, 0x6b98, 0x72dc, 0xcabd, 0x123f, 0xaa5e, + 0x20b7, 0x98d6, 0x4054, 0xf835, 0xe171, 0x5910, 0x8192, 0x39f3, + 0x8461, 0x3c00, 0xe482, 0x5ce3, 0x45a7, 0xfdc6, 0x2544, 0x9d25, + 0x17cc, 0xafad, 0x772f, 0xcf4e, 0xd60a, 0x6e6b, 0xb6e9, 0x0e88, + 0xabf9, 0x1398, 0xcb1a, 0x737b, 0x6a3f, 0xd25e, 0x0adc, 0xb2bd, + 0x3854, 0x8035, 0x58b7, 0xe0d6, 0xf992, 0x41f3, 0x9971, 0x2110, + 0x9c82, 0x24e3, 0xfc61, 0x4400, 0x5d44, 0xe525, 0x3da7, 0x85c6, + 0x0f2f, 0xb74e, 0x6fcc, 0xd7ad, 0xcee9, 0x7688, 0xae0a, 0x166b, + 0xc50f, 0x7d6e, 0xa5ec, 0x1d8d, 0x04c9, 0xbca8, 0x642a, 0xdc4b, + 0x56a2, 0xeec3, 0x3641, 0x8e20, 0x9764, 0x2f05, 0xf787, 0x4fe6, + 0xf274, 0x4a15, 0x9297, 0x2af6, 0x33b2, 0x8bd3, 0x5351, 0xeb30, + 0x61d9, 0xd9b8, 0x013a, 0xb95b, 0xa01f, 0x187e, 0xc0fc, 0x789d, + 0x7615, 0xce74, 0x16f6, 0xae97, 0xb7d3, 0x0fb2, 0xd730, 0x6f51, + 0xe5b8, 0x5dd9, 0x855b, 0x3d3a, 0x247e, 0x9c1f, 0x449d, 0xfcfc, + 0x416e, 0xf90f, 0x218d, 0x99ec, 0x80a8, 0x38c9, 0xe04b, 0x582a, + 0xd2c3, 0x6aa2, 0xb220, 0x0a41, 0x1305, 0xab64, 0x73e6, 0xcb87, + 0x18e3, 0xa082, 0x7800, 0xc061, 0xd925, 0x6144, 0xb9c6, 0x01a7, + 0x8b4e, 0x332f, 0xebad, 0x53cc, 0x4a88, 0xf2e9, 0x2a6b, 0x920a, + 0x2f98, 0x97f9, 0x4f7b, 0xf71a, 0xee5e, 0x563f, 0x8ebd, 0x36dc, + 0xbc35, 0x0454, 0xdcd6, 0x64b7, 0x7df3, 0xc592, 0x1d10, 0xa571, + }, + { + 0x0000, 0x47d3, 0x8fa6, 0xc875, 0x0f6d, 0x48be, 0x80cb, 0xc718, + 0x1eda, 0x5909, 0x917c, 0xd6af, 0x11b7, 0x5664, 0x9e11, 0xd9c2, + 0x3db4, 0x7a67, 0xb212, 0xf5c1, 0x32d9, 0x750a, 0xbd7f, 0xfaac, + 0x236e, 0x64bd, 0xacc8, 0xeb1b, 0x2c03, 0x6bd0, 0xa3a5, 0xe476, + 0x7b68, 0x3cbb, 0xf4ce, 0xb31d, 0x7405, 0x33d6, 0xfba3, 0xbc70, + 0x65b2, 0x2261, 0xea14, 0xadc7, 0x6adf, 0x2d0c, 0xe579, 0xa2aa, + 0x46dc, 0x010f, 0xc97a, 0x8ea9, 0x49b1, 0x0e62, 0xc617, 0x81c4, + 0x5806, 0x1fd5, 0xd7a0, 0x9073, 0x576b, 0x10b8, 0xd8cd, 0x9f1e, + 0xf6d0, 0xb103, 0x7976, 0x3ea5, 0xf9bd, 0xbe6e, 0x761b, 0x31c8, + 0xe80a, 0xafd9, 0x67ac, 0x207f, 0xe767, 0xa0b4, 0x68c1, 0x2f12, + 0xcb64, 0x8cb7, 0x44c2, 0x0311, 0xc409, 0x83da, 0x4baf, 0x0c7c, + 0xd5be, 0x926d, 0x5a18, 0x1dcb, 0xdad3, 0x9d00, 0x5575, 0x12a6, + 0x8db8, 0xca6b, 0x021e, 0x45cd, 0x82d5, 0xc506, 0x0d73, 0x4aa0, + 0x9362, 0xd4b1, 0x1cc4, 0x5b17, 0x9c0f, 0xdbdc, 0x13a9, 0x547a, + 0xb00c, 0xf7df, 0x3faa, 0x7879, 0xbf61, 0xf8b2, 0x30c7, 0x7714, + 0xaed6, 0xe905, 0x2170, 0x66a3, 0xa1bb, 0xe668, 0x2e1d, 0x69ce, + 0xfd81, 0xba52, 0x7227, 0x35f4, 0xf2ec, 0xb53f, 0x7d4a, 0x3a99, + 0xe35b, 0xa488, 0x6cfd, 0x2b2e, 0xec36, 0xabe5, 0x6390, 0x2443, + 0xc035, 0x87e6, 0x4f93, 0x0840, 0xcf58, 0x888b, 0x40fe, 0x072d, + 0xdeef, 0x993c, 0x5149, 0x169a, 0xd182, 0x9651, 0x5e24, 0x19f7, + 0x86e9, 0xc13a, 0x094f, 0x4e9c, 0x8984, 0xce57, 0x0622, 0x41f1, + 0x9833, 0xdfe0, 0x1795, 0x5046, 0x975e, 0xd08d, 0x18f8, 0x5f2b, + 0xbb5d, 0xfc8e, 0x34fb, 0x7328, 0xb430, 0xf3e3, 0x3b96, 0x7c45, + 0xa587, 0xe254, 0x2a21, 0x6df2, 0xaaea, 0xed39, 0x254c, 0x629f, + 0x0b51, 0x4c82, 0x84f7, 0xc324, 0x043c, 0x43ef, 0x8b9a, 0xcc49, + 0x158b, 0x5258, 0x9a2d, 0xddfe, 0x1ae6, 0x5d35, 0x9540, 0xd293, + 0x36e5, 0x7136, 0xb943, 0xfe90, 0x3988, 0x7e5b, 0xb62e, 0xf1fd, + 0x283f, 0x6fec, 0xa799, 0xe04a, 0x2752, 0x6081, 0xa8f4, 0xef27, + 0x7039, 0x37ea, 0xff9f, 0xb84c, 0x7f54, 0x3887, 0xf0f2, 0xb721, + 0x6ee3, 0x2930, 0xe145, 0xa696, 0x618e, 0x265d, 0xee28, 0xa9fb, + 0x4d8d, 0x0a5e, 0xc22b, 0x85f8, 0x42e0, 0x0533, 0xcd46, 0x8a95, + 0x5357, 0x1484, 0xdcf1, 0x9b22, 0x5c3a, 0x1be9, 0xd39c, 0x944f, + }, + { + 0x0000, 0xeb23, 0xc667, 0x2d44, 0x9cef, 0x77cc, 0x5a88, 0xb1ab, + 0x29ff, 0xc2dc, 0xef98, 0x04bb, 0xb510, 0x5e33, 0x7377, 0x9854, + 0x53fe, 0xb8dd, 0x9599, 0x7eba, 0xcf11, 0x2432, 0x0976, 0xe255, + 0x7a01, 0x9122, 0xbc66, 0x5745, 0xe6ee, 0x0dcd, 0x2089, 0xcbaa, + 0xa7fc, 0x4cdf, 0x619b, 0x8ab8, 0x3b13, 0xd030, 0xfd74, 0x1657, + 0x8e03, 0x6520, 0x4864, 0xa347, 0x12ec, 0xf9cf, 0xd48b, 0x3fa8, + 0xf402, 0x1f21, 0x3265, 0xd946, 0x68ed, 0x83ce, 0xae8a, 0x45a9, + 0xddfd, 0x36de, 0x1b9a, 0xf0b9, 0x4112, 0xaa31, 0x8775, 0x6c56, + 0x5fd9, 0xb4fa, 0x99be, 0x729d, 0xc336, 0x2815, 0x0551, 0xee72, + 0x7626, 0x9d05, 0xb041, 0x5b62, 0xeac9, 0x01ea, 0x2cae, 0xc78d, + 0x0c27, 0xe704, 0xca40, 0x2163, 0x90c8, 0x7beb, 0x56af, 0xbd8c, + 0x25d8, 0xcefb, 0xe3bf, 0x089c, 0xb937, 0x5214, 0x7f50, 0x9473, + 0xf825, 0x1306, 0x3e42, 0xd561, 0x64ca, 0x8fe9, 0xa2ad, 0x498e, + 0xd1da, 0x3af9, 0x17bd, 0xfc9e, 0x4d35, 0xa616, 0x8b52, 0x6071, + 0xabdb, 0x40f8, 0x6dbc, 0x869f, 0x3734, 0xdc17, 0xf153, 0x1a70, + 0x8224, 0x6907, 0x4443, 0xaf60, 0x1ecb, 0xf5e8, 0xd8ac, 0x338f, + 0xbfb2, 0x5491, 0x79d5, 0x92f6, 0x235d, 0xc87e, 0xe53a, 0x0e19, + 0x964d, 0x7d6e, 0x502a, 0xbb09, 0x0aa2, 0xe181, 0xccc5, 0x27e6, + 0xec4c, 0x076f, 0x2a2b, 0xc108, 0x70a3, 0x9b80, 0xb6c4, 0x5de7, + 0xc5b3, 0x2e90, 0x03d4, 0xe8f7, 0x595c, 0xb27f, 0x9f3b, 0x7418, + 0x184e, 0xf36d, 0xde29, 0x350a, 0x84a1, 0x6f82, 0x42c6, 0xa9e5, + 0x31b1, 0xda92, 0xf7d6, 0x1cf5, 0xad5e, 0x467d, 0x6b39, 0x801a, + 0x4bb0, 0xa093, 0x8dd7, 0x66f4, 0xd75f, 0x3c7c, 0x1138, 0xfa1b, + 0x624f, 0x896c, 0xa428, 0x4f0b, 0xfea0, 0x1583, 0x38c7, 0xd3e4, + 0xe06b, 0x0b48, 0x260c, 0xcd2f, 0x7c84, 0x97a7, 0xbae3, 0x51c0, + 0xc994, 0x22b7, 0x0ff3, 0xe4d0, 0x557b, 0xbe58, 0x931c, 0x783f, + 0xb395, 0x58b6, 0x75f2, 0x9ed1, 0x2f7a, 0xc459, 0xe91d, 0x023e, + 0x9a6a, 0x7149, 0x5c0d, 0xb72e, 0x0685, 0xeda6, 0xc0e2, 0x2bc1, + 0x4797, 0xacb4, 0x81f0, 0x6ad3, 0xdb78, 0x305b, 0x1d1f, 0xf63c, + 0x6e68, 0x854b, 0xa80f, 0x432c, 0xf287, 0x19a4, 0x34e0, 0xdfc3, + 0x1469, 0xff4a, 0xd20e, 0x392d, 0x8886, 0x63a5, 0x4ee1, 0xa5c2, + 0x3d96, 0xd6b5, 0xfbf1, 0x10d2, 0xa179, 0x4a5a, 0x671e, 0x8c3d, + }, + { + 0x0000, 0x6f45, 0xde8a, 0xb1cf, 0xad35, 0xc270, 0x73bf, 0x1cfa, + 0x4a4b, 0x250e, 0x94c1, 0xfb84, 0xe77e, 0x883b, 0x39f4, 0x56b1, + 0x9496, 0xfbd3, 0x4a1c, 0x2559, 0x39a3, 0x56e6, 0xe729, 0x886c, + 0xdedd, 0xb198, 0x0057, 0x6f12, 0x73e8, 0x1cad, 0xad62, 0xc227, + 0x390d, 0x5648, 0xe787, 0x88c2, 0x9438, 0xfb7d, 0x4ab2, 0x25f7, + 0x7346, 0x1c03, 0xadcc, 0xc289, 0xde73, 0xb136, 0x00f9, 0x6fbc, + 0xad9b, 0xc2de, 0x7311, 0x1c54, 0x00ae, 0x6feb, 0xde24, 0xb161, + 0xe7d0, 0x8895, 0x395a, 0x561f, 0x4ae5, 0x25a0, 0x946f, 0xfb2a, + 0x721a, 0x1d5f, 0xac90, 0xc3d5, 0xdf2f, 0xb06a, 0x01a5, 0x6ee0, + 0x3851, 0x5714, 0xe6db, 0x899e, 0x9564, 0xfa21, 0x4bee, 0x24ab, + 0xe68c, 0x89c9, 0x3806, 0x5743, 0x4bb9, 0x24fc, 0x9533, 0xfa76, + 0xacc7, 0xc382, 0x724d, 0x1d08, 0x01f2, 0x6eb7, 0xdf78, 0xb03d, + 0x4b17, 0x2452, 0x959d, 0xfad8, 0xe622, 0x8967, 0x38a8, 0x57ed, + 0x015c, 0x6e19, 0xdfd6, 0xb093, 0xac69, 0xc32c, 0x72e3, 0x1da6, + 0xdf81, 0xb0c4, 0x010b, 0x6e4e, 0x72b4, 0x1df1, 0xac3e, 0xc37b, + 0x95ca, 0xfa8f, 0x4b40, 0x2405, 0x38ff, 0x57ba, 0xe675, 0x8930, + 0xe434, 0x8b71, 0x3abe, 0x55fb, 0x4901, 0x2644, 0x978b, 0xf8ce, + 0xae7f, 0xc13a, 0x70f5, 0x1fb0, 0x034a, 0x6c0f, 0xddc0, 0xb285, + 0x70a2, 0x1fe7, 0xae28, 0xc16d, 0xdd97, 0xb2d2, 0x031d, 0x6c58, + 0x3ae9, 0x55ac, 0xe463, 0x8b26, 0x97dc, 0xf899, 0x4956, 0x2613, + 0xdd39, 0xb27c, 0x03b3, 0x6cf6, 0x700c, 0x1f49, 0xae86, 0xc1c3, + 0x9772, 0xf837, 0x49f8, 0x26bd, 0x3a47, 0x5502, 0xe4cd, 0x8b88, + 0x49af, 0x26ea, 0x9725, 0xf860, 0xe49a, 0x8bdf, 0x3a10, 0x5555, + 0x03e4, 0x6ca1, 0xdd6e, 0xb22b, 0xaed1, 0xc194, 0x705b, 0x1f1e, + 0x962e, 0xf96b, 0x48a4, 0x27e1, 0x3b1b, 0x545e, 0xe591, 0x8ad4, + 0xdc65, 0xb320, 0x02ef, 0x6daa, 0x7150, 0x1e15, 0xafda, 0xc09f, + 0x02b8, 0x6dfd, 0xdc32, 0xb377, 0xaf8d, 0xc0c8, 0x7107, 0x1e42, + 0x48f3, 0x27b6, 0x9679, 0xf93c, 0xe5c6, 0x8a83, 0x3b4c, 0x5409, + 0xaf23, 0xc066, 0x71a9, 0x1eec, 0x0216, 0x6d53, 0xdc9c, 0xb3d9, + 0xe568, 0x8a2d, 0x3be2, 0x54a7, 0x485d, 0x2718, 0x96d7, 0xf992, + 0x3bb5, 0x54f0, 0xe53f, 0x8a7a, 0x9680, 0xf9c5, 0x480a, 0x274f, + 0x71fe, 0x1ebb, 0xaf74, 0xc031, 0xdccb, 0xb38e, 0x0241, 0x6d04, + }, + { + 0x0000, 0xd849, 0xa0b3, 0x78fa, 0x5147, 0x890e, 0xf1f4, 0x29bd, + 0xa28e, 0x7ac7, 0x023d, 0xda74, 0xf3c9, 0x2b80, 0x537a, 0x8b33, + 0x553d, 0x8d74, 0xf58e, 0x2dc7, 0x047a, 0xdc33, 0xa4c9, 0x7c80, + 0xf7b3, 0x2ffa, 0x5700, 0x8f49, 0xa6f4, 0x7ebd, 0x0647, 0xde0e, + 0xaa7a, 0x7233, 0x0ac9, 0xd280, 0xfb3d, 0x2374, 0x5b8e, 0x83c7, + 0x08f4, 0xd0bd, 0xa847, 0x700e, 0x59b3, 0x81fa, 0xf900, 0x2149, + 0xff47, 0x270e, 0x5ff4, 0x87bd, 0xae00, 0x7649, 0x0eb3, 0xd6fa, + 0x5dc9, 0x8580, 0xfd7a, 0x2533, 0x0c8e, 0xd4c7, 0xac3d, 0x7474, + 0x44d5, 0x9c9c, 0xe466, 0x3c2f, 0x1592, 0xcddb, 0xb521, 0x6d68, + 0xe65b, 0x3e12, 0x46e8, 0x9ea1, 0xb71c, 0x6f55, 0x17af, 0xcfe6, + 0x11e8, 0xc9a1, 0xb15b, 0x6912, 0x40af, 0x98e6, 0xe01c, 0x3855, + 0xb366, 0x6b2f, 0x13d5, 0xcb9c, 0xe221, 0x3a68, 0x4292, 0x9adb, + 0xeeaf, 0x36e6, 0x4e1c, 0x9655, 0xbfe8, 0x67a1, 0x1f5b, 0xc712, + 0x4c21, 0x9468, 0xec92, 0x34db, 0x1d66, 0xc52f, 0xbdd5, 0x659c, + 0xbb92, 0x63db, 0x1b21, 0xc368, 0xead5, 0x329c, 0x4a66, 0x922f, + 0x191c, 0xc155, 0xb9af, 0x61e6, 0x485b, 0x9012, 0xe8e8, 0x30a1, + 0x89aa, 0x51e3, 0x2919, 0xf150, 0xd8ed, 0x00a4, 0x785e, 0xa017, + 0x2b24, 0xf36d, 0x8b97, 0x53de, 0x7a63, 0xa22a, 0xdad0, 0x0299, + 0xdc97, 0x04de, 0x7c24, 0xa46d, 0x8dd0, 0x5599, 0x2d63, 0xf52a, + 0x7e19, 0xa650, 0xdeaa, 0x06e3, 0x2f5e, 0xf717, 0x8fed, 0x57a4, + 0x23d0, 0xfb99, 0x8363, 0x5b2a, 0x7297, 0xaade, 0xd224, 0x0a6d, + 0x815e, 0x5917, 0x21ed, 0xf9a4, 0xd019, 0x0850, 0x70aa, 0xa8e3, + 0x76ed, 0xaea4, 0xd65e, 0x0e17, 0x27aa, 0xffe3, 0x8719, 0x5f50, + 0xd463, 0x0c2a, 0x74d0, 0xac99, 0x8524, 0x5d6d, 0x2597, 0xfdde, + 0xcd7f, 0x1536, 0x6dcc, 0xb585, 0x9c38, 0x4471, 0x3c8b, 0xe4c2, + 0x6ff1, 0xb7b8, 0xcf42, 0x170b, 0x3eb6, 0xe6ff, 0x9e05, 0x464c, + 0x9842, 0x400b, 0x38f1, 0xe0b8, 0xc905, 0x114c, 0x69b6, 0xb1ff, + 0x3acc, 0xe285, 0x9a7f, 0x4236, 0x6b8b, 0xb3c2, 0xcb38, 0x1371, + 0x6705, 0xbf4c, 0xc7b6, 0x1fff, 0x3642, 0xee0b, 0x96f1, 0x4eb8, + 0xc58b, 0x1dc2, 0x6538, 0xbd71, 0x94cc, 0x4c85, 0x347f, 0xec36, + 0x3238, 0xea71, 0x928b, 0x4ac2, 0x637f, 0xbb36, 0xc3cc, 0x1b85, + 0x90b6, 0x48ff, 0x3005, 0xe84c, 0xc1f1, 0x19b8, 0x6142, 0xb90b, + }, + { + 0x0000, 0x0375, 0x06ea, 0x059f, 0x0dd4, 0x0ea1, 0x0b3e, 0x084b, + 0x1ba8, 0x18dd, 0x1d42, 0x1e37, 0x167c, 0x1509, 0x1096, 0x13e3, + 0x3750, 0x3425, 0x31ba, 0x32cf, 0x3a84, 0x39f1, 0x3c6e, 0x3f1b, + 0x2cf8, 0x2f8d, 0x2a12, 0x2967, 0x212c, 0x2259, 0x27c6, 0x24b3, + 0x6ea0, 0x6dd5, 0x684a, 0x6b3f, 0x6374, 0x6001, 0x659e, 0x66eb, + 0x7508, 0x767d, 0x73e2, 0x7097, 0x78dc, 0x7ba9, 0x7e36, 0x7d43, + 0x59f0, 0x5a85, 0x5f1a, 0x5c6f, 0x5424, 0x5751, 0x52ce, 0x51bb, + 0x4258, 0x412d, 0x44b2, 0x47c7, 0x4f8c, 0x4cf9, 0x4966, 0x4a13, + 0xdd40, 0xde35, 0xdbaa, 0xd8df, 0xd094, 0xd3e1, 0xd67e, 0xd50b, + 0xc6e8, 0xc59d, 0xc002, 0xc377, 0xcb3c, 0xc849, 0xcdd6, 0xcea3, + 0xea10, 0xe965, 0xecfa, 0xef8f, 0xe7c4, 0xe4b1, 0xe12e, 0xe25b, + 0xf1b8, 0xf2cd, 0xf752, 0xf427, 0xfc6c, 0xff19, 0xfa86, 0xf9f3, + 0xb3e0, 0xb095, 0xb50a, 0xb67f, 0xbe34, 0xbd41, 0xb8de, 0xbbab, + 0xa848, 0xab3d, 0xaea2, 0xadd7, 0xa59c, 0xa6e9, 0xa376, 0xa003, + 0x84b0, 0x87c5, 0x825a, 0x812f, 0x8964, 0x8a11, 0x8f8e, 0x8cfb, + 0x9f18, 0x9c6d, 0x99f2, 0x9a87, 0x92cc, 0x91b9, 0x9426, 0x9753, + 0xaaa1, 0xa9d4, 0xac4b, 0xaf3e, 0xa775, 0xa400, 0xa19f, 0xa2ea, + 0xb109, 0xb27c, 0xb7e3, 0xb496, 0xbcdd, 0xbfa8, 0xba37, 0xb942, + 0x9df1, 0x9e84, 0x9b1b, 0x986e, 0x9025, 0x9350, 0x96cf, 0x95ba, + 0x8659, 0x852c, 0x80b3, 0x83c6, 0x8b8d, 0x88f8, 0x8d67, 0x8e12, + 0xc401, 0xc774, 0xc2eb, 0xc19e, 0xc9d5, 0xcaa0, 0xcf3f, 0xcc4a, + 0xdfa9, 0xdcdc, 0xd943, 0xda36, 0xd27d, 0xd108, 0xd497, 0xd7e2, + 0xf351, 0xf024, 0xf5bb, 0xf6ce, 0xfe85, 0xfdf0, 0xf86f, 0xfb1a, + 0xe8f9, 0xeb8c, 0xee13, 0xed66, 0xe52d, 0xe658, 0xe3c7, 0xe0b2, + 0x77e1, 0x7494, 0x710b, 0x727e, 0x7a35, 0x7940, 0x7cdf, 0x7faa, + 0x6c49, 0x6f3c, 0x6aa3, 0x69d6, 0x619d, 0x62e8, 0x6777, 0x6402, + 0x40b1, 0x43c4, 0x465b, 0x452e, 0x4d65, 0x4e10, 0x4b8f, 0x48fa, + 0x5b19, 0x586c, 0x5df3, 0x5e86, 0x56cd, 0x55b8, 0x5027, 0x5352, + 0x1941, 0x1a34, 0x1fab, 0x1cde, 0x1495, 0x17e0, 0x127f, 0x110a, + 0x02e9, 0x019c, 0x0403, 0x0776, 0x0f3d, 0x0c48, 0x09d7, 0x0aa2, + 0x2e11, 0x2d64, 0x28fb, 0x2b8e, 0x23c5, 0x20b0, 0x252f, 0x265a, + 0x35b9, 0x36cc, 0x3353, 0x3026, 0x386d, 0x3b18, 0x3e87, 0x3df2, + }, + { + 0x0000, 0x4563, 0x8ac6, 0xcfa5, 0x05ad, 0x40ce, 0x8f6b, 0xca08, + 0x0b5a, 0x4e39, 0x819c, 0xc4ff, 0x0ef7, 0x4b94, 0x8431, 0xc152, + 0x16b4, 0x53d7, 0x9c72, 0xd911, 0x1319, 0x567a, 0x99df, 0xdcbc, + 0x1dee, 0x588d, 0x9728, 0xd24b, 0x1843, 0x5d20, 0x9285, 0xd7e6, + 0x2d68, 0x680b, 0xa7ae, 0xe2cd, 0x28c5, 0x6da6, 0xa203, 0xe760, + 0x2632, 0x6351, 0xacf4, 0xe997, 0x239f, 0x66fc, 0xa959, 0xec3a, + 0x3bdc, 0x7ebf, 0xb11a, 0xf479, 0x3e71, 0x7b12, 0xb4b7, 0xf1d4, + 0x3086, 0x75e5, 0xba40, 0xff23, 0x352b, 0x7048, 0xbfed, 0xfa8e, + 0x5ad0, 0x1fb3, 0xd016, 0x9575, 0x5f7d, 0x1a1e, 0xd5bb, 0x90d8, + 0x518a, 0x14e9, 0xdb4c, 0x9e2f, 0x5427, 0x1144, 0xdee1, 0x9b82, + 0x4c64, 0x0907, 0xc6a2, 0x83c1, 0x49c9, 0x0caa, 0xc30f, 0x866c, + 0x473e, 0x025d, 0xcdf8, 0x889b, 0x4293, 0x07f0, 0xc855, 0x8d36, + 0x77b8, 0x32db, 0xfd7e, 0xb81d, 0x7215, 0x3776, 0xf8d3, 0xbdb0, + 0x7ce2, 0x3981, 0xf624, 0xb347, 0x794f, 0x3c2c, 0xf389, 0xb6ea, + 0x610c, 0x246f, 0xebca, 0xaea9, 0x64a1, 0x21c2, 0xee67, 0xab04, + 0x6a56, 0x2f35, 0xe090, 0xa5f3, 0x6ffb, 0x2a98, 0xe53d, 0xa05e, + 0xb5a0, 0xf0c3, 0x3f66, 0x7a05, 0xb00d, 0xf56e, 0x3acb, 0x7fa8, + 0xbefa, 0xfb99, 0x343c, 0x715f, 0xbb57, 0xfe34, 0x3191, 0x74f2, + 0xa314, 0xe677, 0x29d2, 0x6cb1, 0xa6b9, 0xe3da, 0x2c7f, 0x691c, + 0xa84e, 0xed2d, 0x2288, 0x67eb, 0xade3, 0xe880, 0x2725, 0x6246, + 0x98c8, 0xddab, 0x120e, 0x576d, 0x9d65, 0xd806, 0x17a3, 0x52c0, + 0x9392, 0xd6f1, 0x1954, 0x5c37, 0x963f, 0xd35c, 0x1cf9, 0x599a, + 0x8e7c, 0xcb1f, 0x04ba, 0x41d9, 0x8bd1, 0xceb2, 0x0117, 0x4474, + 0x8526, 0xc045, 0x0fe0, 0x4a83, 0x808b, 0xc5e8, 0x0a4d, 0x4f2e, + 0xef70, 0xaa13, 0x65b6, 0x20d5, 0xeadd, 0xafbe, 0x601b, 0x2578, + 0xe42a, 0xa149, 0x6eec, 0x2b8f, 0xe187, 0xa4e4, 0x6b41, 0x2e22, + 0xf9c4, 0xbca7, 0x7302, 0x3661, 0xfc69, 0xb90a, 0x76af, 0x33cc, + 0xf29e, 0xb7fd, 0x7858, 0x3d3b, 0xf733, 0xb250, 0x7df5, 0x3896, + 0xc218, 0x877b, 0x48de, 0x0dbd, 0xc7b5, 0x82d6, 0x4d73, 0x0810, + 0xc942, 0x8c21, 0x4384, 0x06e7, 0xccef, 0x898c, 0x4629, 0x034a, + 0xd4ac, 0x91cf, 0x5e6a, 0x1b09, 0xd101, 0x9462, 0x5bc7, 0x1ea4, + 0xdff6, 0x9a95, 0x5530, 0x1053, 0xda5b, 0x9f38, 0x509d, 0x15fe, + }, + { + 0x0000, 0x7b61, 0xf6c2, 0x8da3, 0xfda5, 0x86c4, 0x0b67, 0x7006, + 0xeb6b, 0x900a, 0x1da9, 0x66c8, 0x16ce, 0x6daf, 0xe00c, 0x9b6d, + 0xc6f7, 0xbd96, 0x3035, 0x4b54, 0x3b52, 0x4033, 0xcd90, 0xb6f1, + 0x2d9c, 0x56fd, 0xdb5e, 0xa03f, 0xd039, 0xab58, 0x26fb, 0x5d9a, + 0x9dcf, 0xe6ae, 0x6b0d, 0x106c, 0x606a, 0x1b0b, 0x96a8, 0xedc9, + 0x76a4, 0x0dc5, 0x8066, 0xfb07, 0x8b01, 0xf060, 0x7dc3, 0x06a2, + 0x5b38, 0x2059, 0xadfa, 0xd69b, 0xa69d, 0xddfc, 0x505f, 0x2b3e, + 0xb053, 0xcb32, 0x4691, 0x3df0, 0x4df6, 0x3697, 0xbb34, 0xc055, + 0x2bbf, 0x50de, 0xdd7d, 0xa61c, 0xd61a, 0xad7b, 0x20d8, 0x5bb9, + 0xc0d4, 0xbbb5, 0x3616, 0x4d77, 0x3d71, 0x4610, 0xcbb3, 0xb0d2, + 0xed48, 0x9629, 0x1b8a, 0x60eb, 0x10ed, 0x6b8c, 0xe62f, 0x9d4e, + 0x0623, 0x7d42, 0xf0e1, 0x8b80, 0xfb86, 0x80e7, 0x0d44, 0x7625, + 0xb670, 0xcd11, 0x40b2, 0x3bd3, 0x4bd5, 0x30b4, 0xbd17, 0xc676, + 0x5d1b, 0x267a, 0xabd9, 0xd0b8, 0xa0be, 0xdbdf, 0x567c, 0x2d1d, + 0x7087, 0x0be6, 0x8645, 0xfd24, 0x8d22, 0xf643, 0x7be0, 0x0081, + 0x9bec, 0xe08d, 0x6d2e, 0x164f, 0x6649, 0x1d28, 0x908b, 0xebea, + 0x577e, 0x2c1f, 0xa1bc, 0xdadd, 0xaadb, 0xd1ba, 0x5c19, 0x2778, + 0xbc15, 0xc774, 0x4ad7, 0x31b6, 0x41b0, 0x3ad1, 0xb772, 0xcc13, + 0x9189, 0xeae8, 0x674b, 0x1c2a, 0x6c2c, 0x174d, 0x9aee, 0xe18f, + 0x7ae2, 0x0183, 0x8c20, 0xf741, 0x8747, 0xfc26, 0x7185, 0x0ae4, + 0xcab1, 0xb1d0, 0x3c73, 0x4712, 0x3714, 0x4c75, 0xc1d6, 0xbab7, + 0x21da, 0x5abb, 0xd718, 0xac79, 0xdc7f, 0xa71e, 0x2abd, 0x51dc, + 0x0c46, 0x7727, 0xfa84, 0x81e5, 0xf1e3, 0x8a82, 0x0721, 0x7c40, + 0xe72d, 0x9c4c, 0x11ef, 0x6a8e, 0x1a88, 0x61e9, 0xec4a, 0x972b, + 0x7cc1, 0x07a0, 0x8a03, 0xf162, 0x8164, 0xfa05, 0x77a6, 0x0cc7, + 0x97aa, 0xeccb, 0x6168, 0x1a09, 0x6a0f, 0x116e, 0x9ccd, 0xe7ac, + 0xba36, 0xc157, 0x4cf4, 0x3795, 0x4793, 0x3cf2, 0xb151, 0xca30, + 0x515d, 0x2a3c, 0xa79f, 0xdcfe, 0xacf8, 0xd799, 0x5a3a, 0x215b, + 0xe10e, 0x9a6f, 0x17cc, 0x6cad, 0x1cab, 0x67ca, 0xea69, 0x9108, + 0x0a65, 0x7104, 0xfca7, 0x87c6, 0xf7c0, 0x8ca1, 0x0102, 0x7a63, + 0x27f9, 0x5c98, 0xd13b, 0xaa5a, 0xda5c, 0xa13d, 0x2c9e, 0x57ff, + 0xcc92, 0xb7f3, 0x3a50, 0x4131, 0x3137, 0x4a56, 0xc7f5, 0xbc94, + }, + { + 0x0000, 0xaefc, 0x4dd9, 0xe325, 0x9bb2, 0x354e, 0xd66b, 0x7897, + 0x2745, 0x89b9, 0x6a9c, 0xc460, 0xbcf7, 0x120b, 0xf12e, 0x5fd2, + 0x4e8a, 0xe076, 0x0353, 0xadaf, 0xd538, 0x7bc4, 0x98e1, 0x361d, + 0x69cf, 0xc733, 0x2416, 0x8aea, 0xf27d, 0x5c81, 0xbfa4, 0x1158, + 0x9d14, 0x33e8, 0xd0cd, 0x7e31, 0x06a6, 0xa85a, 0x4b7f, 0xe583, + 0xba51, 0x14ad, 0xf788, 0x5974, 0x21e3, 0x8f1f, 0x6c3a, 0xc2c6, + 0xd39e, 0x7d62, 0x9e47, 0x30bb, 0x482c, 0xe6d0, 0x05f5, 0xab09, + 0xf4db, 0x5a27, 0xb902, 0x17fe, 0x6f69, 0xc195, 0x22b0, 0x8c4c, + 0x2a09, 0x84f5, 0x67d0, 0xc92c, 0xb1bb, 0x1f47, 0xfc62, 0x529e, + 0x0d4c, 0xa3b0, 0x4095, 0xee69, 0x96fe, 0x3802, 0xdb27, 0x75db, + 0x6483, 0xca7f, 0x295a, 0x87a6, 0xff31, 0x51cd, 0xb2e8, 0x1c14, + 0x43c6, 0xed3a, 0x0e1f, 0xa0e3, 0xd874, 0x7688, 0x95ad, 0x3b51, + 0xb71d, 0x19e1, 0xfac4, 0x5438, 0x2caf, 0x8253, 0x6176, 0xcf8a, + 0x9058, 0x3ea4, 0xdd81, 0x737d, 0x0bea, 0xa516, 0x4633, 0xe8cf, + 0xf997, 0x576b, 0xb44e, 0x1ab2, 0x6225, 0xccd9, 0x2ffc, 0x8100, + 0xded2, 0x702e, 0x930b, 0x3df7, 0x4560, 0xeb9c, 0x08b9, 0xa645, + 0x5412, 0xfaee, 0x19cb, 0xb737, 0xcfa0, 0x615c, 0x8279, 0x2c85, + 0x7357, 0xddab, 0x3e8e, 0x9072, 0xe8e5, 0x4619, 0xa53c, 0x0bc0, + 0x1a98, 0xb464, 0x5741, 0xf9bd, 0x812a, 0x2fd6, 0xccf3, 0x620f, + 0x3ddd, 0x9321, 0x7004, 0xdef8, 0xa66f, 0x0893, 0xebb6, 0x454a, + 0xc906, 0x67fa, 0x84df, 0x2a23, 0x52b4, 0xfc48, 0x1f6d, 0xb191, + 0xee43, 0x40bf, 0xa39a, 0x0d66, 0x75f1, 0xdb0d, 0x3828, 0x96d4, + 0x878c, 0x2970, 0xca55, 0x64a9, 0x1c3e, 0xb2c2, 0x51e7, 0xff1b, + 0xa0c9, 0x0e35, 0xed10, 0x43ec, 0x3b7b, 0x9587, 0x76a2, 0xd85e, + 0x7e1b, 0xd0e7, 0x33c2, 0x9d3e, 0xe5a9, 0x4b55, 0xa870, 0x068c, + 0x595e, 0xf7a2, 0x1487, 0xba7b, 0xc2ec, 0x6c10, 0x8f35, 0x21c9, + 0x3091, 0x9e6d, 0x7d48, 0xd3b4, 0xab23, 0x05df, 0xe6fa, 0x4806, + 0x17d4, 0xb928, 0x5a0d, 0xf4f1, 0x8c66, 0x229a, 0xc1bf, 0x6f43, + 0xe30f, 0x4df3, 0xaed6, 0x002a, 0x78bd, 0xd641, 0x3564, 0x9b98, + 0xc44a, 0x6ab6, 0x8993, 0x276f, 0x5ff8, 0xf104, 0x1221, 0xbcdd, + 0xad85, 0x0379, 0xe05c, 0x4ea0, 0x3637, 0x98cb, 0x7bee, 0xd512, + 0x8ac0, 0x243c, 0xc719, 0x69e5, 0x1172, 0xbf8e, 0x5cab, 0xf257, + }, + { + 0x0000, 0xa824, 0x4069, 0xe84d, 0x80d2, 0x28f6, 0xc0bb, 0x689f, + 0x1185, 0xb9a1, 0x51ec, 0xf9c8, 0x9157, 0x3973, 0xd13e, 0x791a, + 0x230a, 0x8b2e, 0x6363, 0xcb47, 0xa3d8, 0x0bfc, 0xe3b1, 0x4b95, + 0x328f, 0x9aab, 0x72e6, 0xdac2, 0xb25d, 0x1a79, 0xf234, 0x5a10, + 0x4614, 0xee30, 0x067d, 0xae59, 0xc6c6, 0x6ee2, 0x86af, 0x2e8b, + 0x5791, 0xffb5, 0x17f8, 0xbfdc, 0xd743, 0x7f67, 0x972a, 0x3f0e, + 0x651e, 0xcd3a, 0x2577, 0x8d53, 0xe5cc, 0x4de8, 0xa5a5, 0x0d81, + 0x749b, 0xdcbf, 0x34f2, 0x9cd6, 0xf449, 0x5c6d, 0xb420, 0x1c04, + 0x8c28, 0x240c, 0xcc41, 0x6465, 0x0cfa, 0xa4de, 0x4c93, 0xe4b7, + 0x9dad, 0x3589, 0xddc4, 0x75e0, 0x1d7f, 0xb55b, 0x5d16, 0xf532, + 0xaf22, 0x0706, 0xef4b, 0x476f, 0x2ff0, 0x87d4, 0x6f99, 0xc7bd, + 0xbea7, 0x1683, 0xfece, 0x56ea, 0x3e75, 0x9651, 0x7e1c, 0xd638, + 0xca3c, 0x6218, 0x8a55, 0x2271, 0x4aee, 0xe2ca, 0x0a87, 0xa2a3, + 0xdbb9, 0x739d, 0x9bd0, 0x33f4, 0x5b6b, 0xf34f, 0x1b02, 0xb326, + 0xe936, 0x4112, 0xa95f, 0x017b, 0x69e4, 0xc1c0, 0x298d, 0x81a9, + 0xf8b3, 0x5097, 0xb8da, 0x10fe, 0x7861, 0xd045, 0x3808, 0x902c, + 0x0871, 0xa055, 0x4818, 0xe03c, 0x88a3, 0x2087, 0xc8ca, 0x60ee, + 0x19f4, 0xb1d0, 0x599d, 0xf1b9, 0x9926, 0x3102, 0xd94f, 0x716b, + 0x2b7b, 0x835f, 0x6b12, 0xc336, 0xaba9, 0x038d, 0xebc0, 0x43e4, + 0x3afe, 0x92da, 0x7a97, 0xd2b3, 0xba2c, 0x1208, 0xfa45, 0x5261, + 0x4e65, 0xe641, 0x0e0c, 0xa628, 0xceb7, 0x6693, 0x8ede, 0x26fa, + 0x5fe0, 0xf7c4, 0x1f89, 0xb7ad, 0xdf32, 0x7716, 0x9f5b, 0x377f, + 0x6d6f, 0xc54b, 0x2d06, 0x8522, 0xedbd, 0x4599, 0xadd4, 0x05f0, + 0x7cea, 0xd4ce, 0x3c83, 0x94a7, 0xfc38, 0x541c, 0xbc51, 0x1475, + 0x8459, 0x2c7d, 0xc430, 0x6c14, 0x048b, 0xacaf, 0x44e2, 0xecc6, + 0x95dc, 0x3df8, 0xd5b5, 0x7d91, 0x150e, 0xbd2a, 0x5567, 0xfd43, + 0xa753, 0x0f77, 0xe73a, 0x4f1e, 0x2781, 0x8fa5, 0x67e8, 0xcfcc, + 0xb6d6, 0x1ef2, 0xf6bf, 0x5e9b, 0x3604, 0x9e20, 0x766d, 0xde49, + 0xc24d, 0x6a69, 0x8224, 0x2a00, 0x429f, 0xeabb, 0x02f6, 0xaad2, + 0xd3c8, 0x7bec, 0x93a1, 0x3b85, 0x531a, 0xfb3e, 0x1373, 0xbb57, + 0xe147, 0x4963, 0xa12e, 0x090a, 0x6195, 0xc9b1, 0x21fc, 0x89d8, + 0xf0c2, 0x58e6, 0xb0ab, 0x188f, 0x7010, 0xd834, 0x3079, 0x985d, + }, +}; diff --git a/ext/digest/crc24/crc24.c b/ext/digest/crc24/crc24.c index 6c1c44e..8f5764a 100644 --- a/ext/digest/crc24/crc24.c +++ b/ext/digest/crc24/crc24.c @@ -15,54 +15,39 @@ */ #include "crc24.h" - -/** - * Static table used for the table_driven implementation. - */ -static const crc24_t crc24_table[256] = { - 0x000000, 0x864cfb, 0x8ad50d, 0x0c99f6, 0x93e6e1, 0x15aa1a, 0x1933ec, 0x9f7f17, - 0xa18139, 0x27cdc2, 0x2b5434, 0xad18cf, 0x3267d8, 0xb42b23, 0xb8b2d5, 0x3efe2e, - 0xc54e89, 0x430272, 0x4f9b84, 0xc9d77f, 0x56a868, 0xd0e493, 0xdc7d65, 0x5a319e, - 0x64cfb0, 0xe2834b, 0xee1abd, 0x685646, 0xf72951, 0x7165aa, 0x7dfc5c, 0xfbb0a7, - 0x0cd1e9, 0x8a9d12, 0x8604e4, 0x00481f, 0x9f3708, 0x197bf3, 0x15e205, 0x93aefe, - 0xad50d0, 0x2b1c2b, 0x2785dd, 0xa1c926, 0x3eb631, 0xb8faca, 0xb4633c, 0x322fc7, - 0xc99f60, 0x4fd39b, 0x434a6d, 0xc50696, 0x5a7981, 0xdc357a, 0xd0ac8c, 0x56e077, - 0x681e59, 0xee52a2, 0xe2cb54, 0x6487af, 0xfbf8b8, 0x7db443, 0x712db5, 0xf7614e, - 0x19a3d2, 0x9fef29, 0x9376df, 0x153a24, 0x8a4533, 0x0c09c8, 0x00903e, 0x86dcc5, - 0xb822eb, 0x3e6e10, 0x32f7e6, 0xb4bb1d, 0x2bc40a, 0xad88f1, 0xa11107, 0x275dfc, - 0xdced5b, 0x5aa1a0, 0x563856, 0xd074ad, 0x4f0bba, 0xc94741, 0xc5deb7, 0x43924c, - 0x7d6c62, 0xfb2099, 0xf7b96f, 0x71f594, 0xee8a83, 0x68c678, 0x645f8e, 0xe21375, - 0x15723b, 0x933ec0, 0x9fa736, 0x19ebcd, 0x8694da, 0x00d821, 0x0c41d7, 0x8a0d2c, - 0xb4f302, 0x32bff9, 0x3e260f, 0xb86af4, 0x2715e3, 0xa15918, 0xadc0ee, 0x2b8c15, - 0xd03cb2, 0x567049, 0x5ae9bf, 0xdca544, 0x43da53, 0xc596a8, 0xc90f5e, 0x4f43a5, - 0x71bd8b, 0xf7f170, 0xfb6886, 0x7d247d, 0xe25b6a, 0x641791, 0x688e67, 0xeec29c, - 0x3347a4, 0xb50b5f, 0xb992a9, 0x3fde52, 0xa0a145, 0x26edbe, 0x2a7448, 0xac38b3, - 0x92c69d, 0x148a66, 0x181390, 0x9e5f6b, 0x01207c, 0x876c87, 0x8bf571, 0x0db98a, - 0xf6092d, 0x7045d6, 0x7cdc20, 0xfa90db, 0x65efcc, 0xe3a337, 0xef3ac1, 0x69763a, - 0x578814, 0xd1c4ef, 0xdd5d19, 0x5b11e2, 0xc46ef5, 0x42220e, 0x4ebbf8, 0xc8f703, - 0x3f964d, 0xb9dab6, 0xb54340, 0x330fbb, 0xac70ac, 0x2a3c57, 0x26a5a1, 0xa0e95a, - 0x9e1774, 0x185b8f, 0x14c279, 0x928e82, 0x0df195, 0x8bbd6e, 0x872498, 0x016863, - 0xfad8c4, 0x7c943f, 0x700dc9, 0xf64132, 0x693e25, 0xef72de, 0xe3eb28, 0x65a7d3, - 0x5b59fd, 0xdd1506, 0xd18cf0, 0x57c00b, 0xc8bf1c, 0x4ef3e7, 0x426a11, 0xc426ea, - 0x2ae476, 0xaca88d, 0xa0317b, 0x267d80, 0xb90297, 0x3f4e6c, 0x33d79a, 0xb59b61, - 0x8b654f, 0x0d29b4, 0x01b042, 0x87fcb9, 0x1883ae, 0x9ecf55, 0x9256a3, 0x141a58, - 0xefaaff, 0x69e604, 0x657ff2, 0xe33309, 0x7c4c1e, 0xfa00e5, 0xf69913, 0x70d5e8, - 0x4e2bc6, 0xc8673d, 0xc4fecb, 0x42b230, 0xddcd27, 0x5b81dc, 0x57182a, 0xd154d1, - 0x26359f, 0xa07964, 0xace092, 0x2aac69, 0xb5d37e, 0x339f85, 0x3f0673, 0xb94a88, - 0x87b4a6, 0x01f85d, 0x0d61ab, 0x8b2d50, 0x145247, 0x921ebc, 0x9e874a, 0x18cbb1, - 0xe37b16, 0x6537ed, 0x69ae1b, 0xefe2e0, 0x709df7, 0xf6d10c, 0xfa48fa, 0x7c0401, - 0x42fa2f, 0xc4b6d4, 0xc82f22, 0x4e63d9, 0xd11cce, 0x575035, 0x5bc9c3, 0xdd8538 -}; +#include "crc24_table.h" crc24_t crc24_update(crc24_t crc, const void *data, size_t data_len) { const unsigned char *d = (const unsigned char *)data; unsigned int tbl_idx; + for (; data_len >= SLICE_SIZE; data_len -= SLICE_SIZE) + { + crc = crc24_table[15][d[ 0] ^ ((crc >> 16) & 0xff)] ^ + crc24_table[14][d[ 1] ^ ((crc >> 8) & 0xff)] ^ + crc24_table[13][d[ 2] ^ ((crc >> 0) & 0xff)] ^ + crc24_table[12][d[ 3] ] ^ + crc24_table[11][d[ 4] ] ^ + crc24_table[10][d[ 5] ] ^ + crc24_table[ 9][d[ 6] ] ^ + crc24_table[ 8][d[ 7] ] ^ + crc24_table[ 7][d[ 8] ] ^ + crc24_table[ 6][d[ 9] ] ^ + crc24_table[ 5][d[10] ] ^ + crc24_table[ 4][d[11] ] ^ + crc24_table[ 3][d[12] ] ^ + crc24_table[ 2][d[13] ] ^ + crc24_table[ 1][d[14] ] ^ + crc24_table[ 0][d[15] ]; + crc &= 0xffffff; + d += SLICE_SIZE; + } + while (data_len--) { tbl_idx = ((crc >> 16) ^ *d) & 0xff; - crc = (crc24_table[tbl_idx] ^ (crc << 8)) & 0xffffff; + crc = (crc24_table[0][tbl_idx] ^ (crc << 8)) & 0xffffff; d++; } diff --git a/ext/digest/crc24/crc24_table.h b/ext/digest/crc24/crc24_table.h new file mode 100644 index 0000000..4d052ea --- /dev/null +++ b/ext/digest/crc24/crc24_table.h @@ -0,0 +1,1070 @@ +/* + * bitwidth: 24 + * generator polynomial: 0x00864cfb + * input bit direction: NORMAL + * slice bytes per iteration: 16 + * slide bits per table: 8 + * + * Generated by: gentable.rb of digest-crc + */ + +#define SLICE_SIZE 16 + +static const uint32_t crc24_table[SLICE_SIZE][256] = { + { + 0x00000000, 0x00864cfb, 0x008ad50d, 0x000c99f6, + 0x0093e6e1, 0x0015aa1a, 0x001933ec, 0x009f7f17, + 0x00a18139, 0x0027cdc2, 0x002b5434, 0x00ad18cf, + 0x003267d8, 0x00b42b23, 0x00b8b2d5, 0x003efe2e, + 0x00c54e89, 0x00430272, 0x004f9b84, 0x00c9d77f, + 0x0056a868, 0x00d0e493, 0x00dc7d65, 0x005a319e, + 0x0064cfb0, 0x00e2834b, 0x00ee1abd, 0x00685646, + 0x00f72951, 0x007165aa, 0x007dfc5c, 0x00fbb0a7, + 0x000cd1e9, 0x008a9d12, 0x008604e4, 0x0000481f, + 0x009f3708, 0x00197bf3, 0x0015e205, 0x0093aefe, + 0x00ad50d0, 0x002b1c2b, 0x002785dd, 0x00a1c926, + 0x003eb631, 0x00b8faca, 0x00b4633c, 0x00322fc7, + 0x00c99f60, 0x004fd39b, 0x00434a6d, 0x00c50696, + 0x005a7981, 0x00dc357a, 0x00d0ac8c, 0x0056e077, + 0x00681e59, 0x00ee52a2, 0x00e2cb54, 0x006487af, + 0x00fbf8b8, 0x007db443, 0x00712db5, 0x00f7614e, + 0x0019a3d2, 0x009fef29, 0x009376df, 0x00153a24, + 0x008a4533, 0x000c09c8, 0x0000903e, 0x0086dcc5, + 0x00b822eb, 0x003e6e10, 0x0032f7e6, 0x00b4bb1d, + 0x002bc40a, 0x00ad88f1, 0x00a11107, 0x00275dfc, + 0x00dced5b, 0x005aa1a0, 0x00563856, 0x00d074ad, + 0x004f0bba, 0x00c94741, 0x00c5deb7, 0x0043924c, + 0x007d6c62, 0x00fb2099, 0x00f7b96f, 0x0071f594, + 0x00ee8a83, 0x0068c678, 0x00645f8e, 0x00e21375, + 0x0015723b, 0x00933ec0, 0x009fa736, 0x0019ebcd, + 0x008694da, 0x0000d821, 0x000c41d7, 0x008a0d2c, + 0x00b4f302, 0x0032bff9, 0x003e260f, 0x00b86af4, + 0x002715e3, 0x00a15918, 0x00adc0ee, 0x002b8c15, + 0x00d03cb2, 0x00567049, 0x005ae9bf, 0x00dca544, + 0x0043da53, 0x00c596a8, 0x00c90f5e, 0x004f43a5, + 0x0071bd8b, 0x00f7f170, 0x00fb6886, 0x007d247d, + 0x00e25b6a, 0x00641791, 0x00688e67, 0x00eec29c, + 0x003347a4, 0x00b50b5f, 0x00b992a9, 0x003fde52, + 0x00a0a145, 0x0026edbe, 0x002a7448, 0x00ac38b3, + 0x0092c69d, 0x00148a66, 0x00181390, 0x009e5f6b, + 0x0001207c, 0x00876c87, 0x008bf571, 0x000db98a, + 0x00f6092d, 0x007045d6, 0x007cdc20, 0x00fa90db, + 0x0065efcc, 0x00e3a337, 0x00ef3ac1, 0x0069763a, + 0x00578814, 0x00d1c4ef, 0x00dd5d19, 0x005b11e2, + 0x00c46ef5, 0x0042220e, 0x004ebbf8, 0x00c8f703, + 0x003f964d, 0x00b9dab6, 0x00b54340, 0x00330fbb, + 0x00ac70ac, 0x002a3c57, 0x0026a5a1, 0x00a0e95a, + 0x009e1774, 0x00185b8f, 0x0014c279, 0x00928e82, + 0x000df195, 0x008bbd6e, 0x00872498, 0x00016863, + 0x00fad8c4, 0x007c943f, 0x00700dc9, 0x00f64132, + 0x00693e25, 0x00ef72de, 0x00e3eb28, 0x0065a7d3, + 0x005b59fd, 0x00dd1506, 0x00d18cf0, 0x0057c00b, + 0x00c8bf1c, 0x004ef3e7, 0x00426a11, 0x00c426ea, + 0x002ae476, 0x00aca88d, 0x00a0317b, 0x00267d80, + 0x00b90297, 0x003f4e6c, 0x0033d79a, 0x00b59b61, + 0x008b654f, 0x000d29b4, 0x0001b042, 0x0087fcb9, + 0x001883ae, 0x009ecf55, 0x009256a3, 0x00141a58, + 0x00efaaff, 0x0069e604, 0x00657ff2, 0x00e33309, + 0x007c4c1e, 0x00fa00e5, 0x00f69913, 0x0070d5e8, + 0x004e2bc6, 0x00c8673d, 0x00c4fecb, 0x0042b230, + 0x00ddcd27, 0x005b81dc, 0x0057182a, 0x00d154d1, + 0x0026359f, 0x00a07964, 0x00ace092, 0x002aac69, + 0x00b5d37e, 0x00339f85, 0x003f0673, 0x00b94a88, + 0x0087b4a6, 0x0001f85d, 0x000d61ab, 0x008b2d50, + 0x00145247, 0x00921ebc, 0x009e874a, 0x0018cbb1, + 0x00e37b16, 0x006537ed, 0x0069ae1b, 0x00efe2e0, + 0x00709df7, 0x00f6d10c, 0x00fa48fa, 0x007c0401, + 0x0042fa2f, 0x00c4b6d4, 0x00c82f22, 0x004e63d9, + 0x00d11cce, 0x00575035, 0x005bc9c3, 0x00dd8538, + }, + { + 0x00000000, 0x00668f48, 0x00cd1e90, 0x00ab91d8, + 0x001c71db, 0x007afe93, 0x00d16f4b, 0x00b7e003, + 0x0038e3b6, 0x005e6cfe, 0x00f5fd26, 0x0093726e, + 0x0024926d, 0x00421d25, 0x00e98cfd, 0x008f03b5, + 0x0071c76c, 0x00174824, 0x00bcd9fc, 0x00da56b4, + 0x006db6b7, 0x000b39ff, 0x00a0a827, 0x00c6276f, + 0x004924da, 0x002fab92, 0x00843a4a, 0x00e2b502, + 0x00555501, 0x0033da49, 0x00984b91, 0x00fec4d9, + 0x00e38ed8, 0x00850190, 0x002e9048, 0x00481f00, + 0x00ffff03, 0x0099704b, 0x0032e193, 0x00546edb, + 0x00db6d6e, 0x00bde226, 0x001673fe, 0x0070fcb6, + 0x00c71cb5, 0x00a193fd, 0x000a0225, 0x006c8d6d, + 0x009249b4, 0x00f4c6fc, 0x005f5724, 0x0039d86c, + 0x008e386f, 0x00e8b727, 0x004326ff, 0x0025a9b7, + 0x00aaaa02, 0x00cc254a, 0x0067b492, 0x00013bda, + 0x00b6dbd9, 0x00d05491, 0x007bc549, 0x001d4a01, + 0x0041514b, 0x0027de03, 0x008c4fdb, 0x00eac093, + 0x005d2090, 0x003bafd8, 0x00903e00, 0x00f6b148, + 0x0079b2fd, 0x001f3db5, 0x00b4ac6d, 0x00d22325, + 0x0065c326, 0x00034c6e, 0x00a8ddb6, 0x00ce52fe, + 0x00309627, 0x0056196f, 0x00fd88b7, 0x009b07ff, + 0x002ce7fc, 0x004a68b4, 0x00e1f96c, 0x00877624, + 0x00087591, 0x006efad9, 0x00c56b01, 0x00a3e449, + 0x0014044a, 0x00728b02, 0x00d91ada, 0x00bf9592, + 0x00a2df93, 0x00c450db, 0x006fc103, 0x00094e4b, + 0x00beae48, 0x00d82100, 0x0073b0d8, 0x00153f90, + 0x009a3c25, 0x00fcb36d, 0x005722b5, 0x0031adfd, + 0x00864dfe, 0x00e0c2b6, 0x004b536e, 0x002ddc26, + 0x00d318ff, 0x00b597b7, 0x001e066f, 0x00788927, + 0x00cf6924, 0x00a9e66c, 0x000277b4, 0x0064f8fc, + 0x00ebfb49, 0x008d7401, 0x0026e5d9, 0x00406a91, + 0x00f78a92, 0x009105da, 0x003a9402, 0x005c1b4a, + 0x0082a296, 0x00e42dde, 0x004fbc06, 0x0029334e, + 0x009ed34d, 0x00f85c05, 0x0053cddd, 0x00354295, + 0x00ba4120, 0x00dcce68, 0x00775fb0, 0x0011d0f8, + 0x00a630fb, 0x00c0bfb3, 0x006b2e6b, 0x000da123, + 0x00f365fa, 0x0095eab2, 0x003e7b6a, 0x0058f422, + 0x00ef1421, 0x00899b69, 0x00220ab1, 0x004485f9, + 0x00cb864c, 0x00ad0904, 0x000698dc, 0x00601794, + 0x00d7f797, 0x00b178df, 0x001ae907, 0x007c664f, + 0x00612c4e, 0x0007a306, 0x00ac32de, 0x00cabd96, + 0x007d5d95, 0x001bd2dd, 0x00b04305, 0x00d6cc4d, + 0x0059cff8, 0x003f40b0, 0x0094d168, 0x00f25e20, + 0x0045be23, 0x0023316b, 0x0088a0b3, 0x00ee2ffb, + 0x0010eb22, 0x0076646a, 0x00ddf5b2, 0x00bb7afa, + 0x000c9af9, 0x006a15b1, 0x00c18469, 0x00a70b21, + 0x00280894, 0x004e87dc, 0x00e51604, 0x0083994c, + 0x0034794f, 0x0052f607, 0x00f967df, 0x009fe897, + 0x00c3f3dd, 0x00a57c95, 0x000eed4d, 0x00686205, + 0x00df8206, 0x00b90d4e, 0x00129c96, 0x007413de, + 0x00fb106b, 0x009d9f23, 0x00360efb, 0x005081b3, + 0x00e761b0, 0x0081eef8, 0x002a7f20, 0x004cf068, + 0x00b234b1, 0x00d4bbf9, 0x007f2a21, 0x0019a569, + 0x00ae456a, 0x00c8ca22, 0x00635bfa, 0x0005d4b2, + 0x008ad707, 0x00ec584f, 0x0047c997, 0x002146df, + 0x0096a6dc, 0x00f02994, 0x005bb84c, 0x003d3704, + 0x00207d05, 0x0046f24d, 0x00ed6395, 0x008becdd, + 0x003c0cde, 0x005a8396, 0x00f1124e, 0x00979d06, + 0x00189eb3, 0x007e11fb, 0x00d58023, 0x00b30f6b, + 0x0004ef68, 0x00626020, 0x00c9f1f8, 0x00af7eb0, + 0x0051ba69, 0x00373521, 0x009ca4f9, 0x00fa2bb1, + 0x004dcbb2, 0x002b44fa, 0x0080d522, 0x00e65a6a, + 0x006959df, 0x000fd697, 0x00a4474f, 0x00c2c807, + 0x00752804, 0x0013a74c, 0x00b83694, 0x00deb9dc, + }, + { + 0x00000000, 0x008309d7, 0x00805f55, 0x00035682, + 0x0086f251, 0x0005fb86, 0x0006ad04, 0x0085a4d3, + 0x008ba859, 0x0008a18e, 0x000bf70c, 0x0088fedb, + 0x000d5a08, 0x008e53df, 0x008d055d, 0x000e0c8a, + 0x00911c49, 0x0012159e, 0x0011431c, 0x00924acb, + 0x0017ee18, 0x0094e7cf, 0x0097b14d, 0x0014b89a, + 0x001ab410, 0x0099bdc7, 0x009aeb45, 0x0019e292, + 0x009c4641, 0x001f4f96, 0x001c1914, 0x009f10c3, + 0x00a47469, 0x00277dbe, 0x00242b3c, 0x00a722eb, + 0x00228638, 0x00a18fef, 0x00a2d96d, 0x0021d0ba, + 0x002fdc30, 0x00acd5e7, 0x00af8365, 0x002c8ab2, + 0x00a92e61, 0x002a27b6, 0x00297134, 0x00aa78e3, + 0x00356820, 0x00b661f7, 0x00b53775, 0x00363ea2, + 0x00b39a71, 0x003093a6, 0x0033c524, 0x00b0ccf3, + 0x00bec079, 0x003dc9ae, 0x003e9f2c, 0x00bd96fb, + 0x00383228, 0x00bb3bff, 0x00b86d7d, 0x003b64aa, + 0x00cea429, 0x004dadfe, 0x004efb7c, 0x00cdf2ab, + 0x00485678, 0x00cb5faf, 0x00c8092d, 0x004b00fa, + 0x00450c70, 0x00c605a7, 0x00c55325, 0x00465af2, + 0x00c3fe21, 0x0040f7f6, 0x0043a174, 0x00c0a8a3, + 0x005fb860, 0x00dcb1b7, 0x00dfe735, 0x005ceee2, + 0x00d94a31, 0x005a43e6, 0x00591564, 0x00da1cb3, + 0x00d41039, 0x005719ee, 0x00544f6c, 0x00d746bb, + 0x0052e268, 0x00d1ebbf, 0x00d2bd3d, 0x0051b4ea, + 0x006ad040, 0x00e9d997, 0x00ea8f15, 0x006986c2, + 0x00ec2211, 0x006f2bc6, 0x006c7d44, 0x00ef7493, + 0x00e17819, 0x006271ce, 0x0061274c, 0x00e22e9b, + 0x00678a48, 0x00e4839f, 0x00e7d51d, 0x0064dcca, + 0x00fbcc09, 0x0078c5de, 0x007b935c, 0x00f89a8b, + 0x007d3e58, 0x00fe378f, 0x00fd610d, 0x007e68da, + 0x00706450, 0x00f36d87, 0x00f03b05, 0x007332d2, + 0x00f69601, 0x00759fd6, 0x0076c954, 0x00f5c083, + 0x001b04a9, 0x00980d7e, 0x009b5bfc, 0x0018522b, + 0x009df6f8, 0x001eff2f, 0x001da9ad, 0x009ea07a, + 0x0090acf0, 0x0013a527, 0x0010f3a5, 0x0093fa72, + 0x00165ea1, 0x00955776, 0x009601f4, 0x00150823, + 0x008a18e0, 0x00091137, 0x000a47b5, 0x00894e62, + 0x000ceab1, 0x008fe366, 0x008cb5e4, 0x000fbc33, + 0x0001b0b9, 0x0082b96e, 0x0081efec, 0x0002e63b, + 0x008742e8, 0x00044b3f, 0x00071dbd, 0x0084146a, + 0x00bf70c0, 0x003c7917, 0x003f2f95, 0x00bc2642, + 0x00398291, 0x00ba8b46, 0x00b9ddc4, 0x003ad413, + 0x0034d899, 0x00b7d14e, 0x00b487cc, 0x00378e1b, + 0x00b22ac8, 0x0031231f, 0x0032759d, 0x00b17c4a, + 0x002e6c89, 0x00ad655e, 0x00ae33dc, 0x002d3a0b, + 0x00a89ed8, 0x002b970f, 0x0028c18d, 0x00abc85a, + 0x00a5c4d0, 0x0026cd07, 0x00259b85, 0x00a69252, + 0x00233681, 0x00a03f56, 0x00a369d4, 0x00206003, + 0x00d5a080, 0x0056a957, 0x0055ffd5, 0x00d6f602, + 0x005352d1, 0x00d05b06, 0x00d30d84, 0x00500453, + 0x005e08d9, 0x00dd010e, 0x00de578c, 0x005d5e5b, + 0x00d8fa88, 0x005bf35f, 0x0058a5dd, 0x00dbac0a, + 0x0044bcc9, 0x00c7b51e, 0x00c4e39c, 0x0047ea4b, + 0x00c24e98, 0x0041474f, 0x004211cd, 0x00c1181a, + 0x00cf1490, 0x004c1d47, 0x004f4bc5, 0x00cc4212, + 0x0049e6c1, 0x00caef16, 0x00c9b994, 0x004ab043, + 0x0071d4e9, 0x00f2dd3e, 0x00f18bbc, 0x0072826b, + 0x00f726b8, 0x00742f6f, 0x007779ed, 0x00f4703a, + 0x00fa7cb0, 0x00797567, 0x007a23e5, 0x00f92a32, + 0x007c8ee1, 0x00ff8736, 0x00fcd1b4, 0x007fd863, + 0x00e0c8a0, 0x0063c177, 0x006097f5, 0x00e39e22, + 0x00663af1, 0x00e53326, 0x00e665a4, 0x00656c73, + 0x006b60f9, 0x00e8692e, 0x00eb3fac, 0x0068367b, + 0x00ed92a8, 0x006e9b7f, 0x006dcdfd, 0x00eec42a, + }, + { + 0x00000000, 0x00360952, 0x006c12a4, 0x005a1bf6, + 0x00d82548, 0x00ee2c1a, 0x00b437ec, 0x00823ebe, + 0x0036066b, 0x00000f39, 0x005a14cf, 0x006c1d9d, + 0x00ee2323, 0x00d82a71, 0x00823187, 0x00b438d5, + 0x006c0cd6, 0x005a0584, 0x00001e72, 0x00361720, + 0x00b4299e, 0x008220cc, 0x00d83b3a, 0x00ee3268, + 0x005a0abd, 0x006c03ef, 0x00361819, 0x0000114b, + 0x00822ff5, 0x00b426a7, 0x00ee3d51, 0x00d83403, + 0x00d819ac, 0x00ee10fe, 0x00b40b08, 0x0082025a, + 0x00003ce4, 0x003635b6, 0x006c2e40, 0x005a2712, + 0x00ee1fc7, 0x00d81695, 0x00820d63, 0x00b40431, + 0x00363a8f, 0x000033dd, 0x005a282b, 0x006c2179, + 0x00b4157a, 0x00821c28, 0x00d807de, 0x00ee0e8c, + 0x006c3032, 0x005a3960, 0x00002296, 0x00362bc4, + 0x00821311, 0x00b41a43, 0x00ee01b5, 0x00d808e7, + 0x005a3659, 0x006c3f0b, 0x003624fd, 0x00002daf, + 0x00367fa3, 0x000076f1, 0x005a6d07, 0x006c6455, + 0x00ee5aeb, 0x00d853b9, 0x0082484f, 0x00b4411d, + 0x000079c8, 0x0036709a, 0x006c6b6c, 0x005a623e, + 0x00d85c80, 0x00ee55d2, 0x00b44e24, 0x00824776, + 0x005a7375, 0x006c7a27, 0x003661d1, 0x00006883, + 0x0082563d, 0x00b45f6f, 0x00ee4499, 0x00d84dcb, + 0x006c751e, 0x005a7c4c, 0x000067ba, 0x00366ee8, + 0x00b45056, 0x00825904, 0x00d842f2, 0x00ee4ba0, + 0x00ee660f, 0x00d86f5d, 0x008274ab, 0x00b47df9, + 0x00364347, 0x00004a15, 0x005a51e3, 0x006c58b1, + 0x00d86064, 0x00ee6936, 0x00b472c0, 0x00827b92, + 0x0000452c, 0x00364c7e, 0x006c5788, 0x005a5eda, + 0x00826ad9, 0x00b4638b, 0x00ee787d, 0x00d8712f, + 0x005a4f91, 0x006c46c3, 0x00365d35, 0x00005467, + 0x00b46cb2, 0x008265e0, 0x00d87e16, 0x00ee7744, + 0x006c49fa, 0x005a40a8, 0x00005b5e, 0x0036520c, + 0x006cff46, 0x005af614, 0x0000ede2, 0x0036e4b0, + 0x00b4da0e, 0x0082d35c, 0x00d8c8aa, 0x00eec1f8, + 0x005af92d, 0x006cf07f, 0x0036eb89, 0x0000e2db, + 0x0082dc65, 0x00b4d537, 0x00eecec1, 0x00d8c793, + 0x0000f390, 0x0036fac2, 0x006ce134, 0x005ae866, + 0x00d8d6d8, 0x00eedf8a, 0x00b4c47c, 0x0082cd2e, + 0x0036f5fb, 0x0000fca9, 0x005ae75f, 0x006cee0d, + 0x00eed0b3, 0x00d8d9e1, 0x0082c217, 0x00b4cb45, + 0x00b4e6ea, 0x0082efb8, 0x00d8f44e, 0x00eefd1c, + 0x006cc3a2, 0x005acaf0, 0x0000d106, 0x0036d854, + 0x0082e081, 0x00b4e9d3, 0x00eef225, 0x00d8fb77, + 0x005ac5c9, 0x006ccc9b, 0x0036d76d, 0x0000de3f, + 0x00d8ea3c, 0x00eee36e, 0x00b4f898, 0x0082f1ca, + 0x0000cf74, 0x0036c626, 0x006cddd0, 0x005ad482, + 0x00eeec57, 0x00d8e505, 0x0082fef3, 0x00b4f7a1, + 0x0036c91f, 0x0000c04d, 0x005adbbb, 0x006cd2e9, + 0x005a80e5, 0x006c89b7, 0x00369241, 0x00009b13, + 0x0082a5ad, 0x00b4acff, 0x00eeb709, 0x00d8be5b, + 0x006c868e, 0x005a8fdc, 0x0000942a, 0x00369d78, + 0x00b4a3c6, 0x0082aa94, 0x00d8b162, 0x00eeb830, + 0x00368c33, 0x00008561, 0x005a9e97, 0x006c97c5, + 0x00eea97b, 0x00d8a029, 0x0082bbdf, 0x00b4b28d, + 0x00008a58, 0x0036830a, 0x006c98fc, 0x005a91ae, + 0x00d8af10, 0x00eea642, 0x00b4bdb4, 0x0082b4e6, + 0x00829949, 0x00b4901b, 0x00ee8bed, 0x00d882bf, + 0x005abc01, 0x006cb553, 0x0036aea5, 0x0000a7f7, + 0x00b49f22, 0x00829670, 0x00d88d86, 0x00ee84d4, + 0x006cba6a, 0x005ab338, 0x0000a8ce, 0x0036a19c, + 0x00ee959f, 0x00d89ccd, 0x0082873b, 0x00b48e69, + 0x0036b0d7, 0x0000b985, 0x005aa273, 0x006cab21, + 0x00d893f4, 0x00ee9aa6, 0x00b48150, 0x00828802, + 0x0000b6bc, 0x0036bfee, 0x006ca418, 0x005aad4a, + }, + { + 0x00000000, 0x00d9fe8c, 0x0035b1e3, 0x00ec4f6f, + 0x006b63c6, 0x00b29d4a, 0x005ed225, 0x00872ca9, + 0x00d6c78c, 0x000f3900, 0x00e3766f, 0x003a88e3, + 0x00bda44a, 0x00645ac6, 0x008815a9, 0x0051eb25, + 0x002bc3e3, 0x00f23d6f, 0x001e7200, 0x00c78c8c, + 0x0040a025, 0x00995ea9, 0x007511c6, 0x00acef4a, + 0x00fd046f, 0x0024fae3, 0x00c8b58c, 0x00114b00, + 0x009667a9, 0x004f9925, 0x00a3d64a, 0x007a28c6, + 0x005787c6, 0x008e794a, 0x00623625, 0x00bbc8a9, + 0x003ce400, 0x00e51a8c, 0x000955e3, 0x00d0ab6f, + 0x0081404a, 0x0058bec6, 0x00b4f1a9, 0x006d0f25, + 0x00ea238c, 0x0033dd00, 0x00df926f, 0x00066ce3, + 0x007c4425, 0x00a5baa9, 0x0049f5c6, 0x00900b4a, + 0x001727e3, 0x00ced96f, 0x00229600, 0x00fb688c, + 0x00aa83a9, 0x00737d25, 0x009f324a, 0x0046ccc6, + 0x00c1e06f, 0x00181ee3, 0x00f4518c, 0x002daf00, + 0x00af0f8c, 0x0076f100, 0x009abe6f, 0x004340e3, + 0x00c46c4a, 0x001d92c6, 0x00f1dda9, 0x00282325, + 0x0079c800, 0x00a0368c, 0x004c79e3, 0x0095876f, + 0x0012abc6, 0x00cb554a, 0x00271a25, 0x00fee4a9, + 0x0084cc6f, 0x005d32e3, 0x00b17d8c, 0x00688300, + 0x00efafa9, 0x00365125, 0x00da1e4a, 0x0003e0c6, + 0x00520be3, 0x008bf56f, 0x0067ba00, 0x00be448c, + 0x00396825, 0x00e096a9, 0x000cd9c6, 0x00d5274a, + 0x00f8884a, 0x002176c6, 0x00cd39a9, 0x0014c725, + 0x0093eb8c, 0x004a1500, 0x00a65a6f, 0x007fa4e3, + 0x002e4fc6, 0x00f7b14a, 0x001bfe25, 0x00c200a9, + 0x00452c00, 0x009cd28c, 0x00709de3, 0x00a9636f, + 0x00d34ba9, 0x000ab525, 0x00e6fa4a, 0x003f04c6, + 0x00b8286f, 0x0061d6e3, 0x008d998c, 0x00546700, + 0x00058c25, 0x00dc72a9, 0x00303dc6, 0x00e9c34a, + 0x006eefe3, 0x00b7116f, 0x005b5e00, 0x0082a08c, + 0x00d853e3, 0x0001ad6f, 0x00ede200, 0x00341c8c, + 0x00b33025, 0x006acea9, 0x008681c6, 0x005f7f4a, + 0x000e946f, 0x00d76ae3, 0x003b258c, 0x00e2db00, + 0x0065f7a9, 0x00bc0925, 0x0050464a, 0x0089b8c6, + 0x00f39000, 0x002a6e8c, 0x00c621e3, 0x001fdf6f, + 0x0098f3c6, 0x00410d4a, 0x00ad4225, 0x0074bca9, + 0x0025578c, 0x00fca900, 0x0010e66f, 0x00c918e3, + 0x004e344a, 0x0097cac6, 0x007b85a9, 0x00a27b25, + 0x008fd425, 0x00562aa9, 0x00ba65c6, 0x00639b4a, + 0x00e4b7e3, 0x003d496f, 0x00d10600, 0x0008f88c, + 0x005913a9, 0x0080ed25, 0x006ca24a, 0x00b55cc6, + 0x0032706f, 0x00eb8ee3, 0x0007c18c, 0x00de3f00, + 0x00a417c6, 0x007de94a, 0x0091a625, 0x004858a9, + 0x00cf7400, 0x00168a8c, 0x00fac5e3, 0x00233b6f, + 0x0072d04a, 0x00ab2ec6, 0x004761a9, 0x009e9f25, + 0x0019b38c, 0x00c04d00, 0x002c026f, 0x00f5fce3, + 0x00775c6f, 0x00aea2e3, 0x0042ed8c, 0x009b1300, + 0x001c3fa9, 0x00c5c125, 0x00298e4a, 0x00f070c6, + 0x00a19be3, 0x0078656f, 0x00942a00, 0x004dd48c, + 0x00caf825, 0x001306a9, 0x00ff49c6, 0x0026b74a, + 0x005c9f8c, 0x00856100, 0x00692e6f, 0x00b0d0e3, + 0x0037fc4a, 0x00ee02c6, 0x00024da9, 0x00dbb325, + 0x008a5800, 0x0053a68c, 0x00bfe9e3, 0x0066176f, + 0x00e13bc6, 0x0038c54a, 0x00d48a25, 0x000d74a9, + 0x0020dba9, 0x00f92525, 0x00156a4a, 0x00cc94c6, + 0x004bb86f, 0x009246e3, 0x007e098c, 0x00a7f700, + 0x00f61c25, 0x002fe2a9, 0x00c3adc6, 0x001a534a, + 0x009d7fe3, 0x0044816f, 0x00a8ce00, 0x0071308c, + 0x000b184a, 0x00d2e6c6, 0x003ea9a9, 0x00e75725, + 0x00607b8c, 0x00b98500, 0x0055ca6f, 0x008c34e3, + 0x00dddfc6, 0x0004214a, 0x00e86e25, 0x003190a9, + 0x00b6bc00, 0x006f428c, 0x00830de3, 0x005af36f, + }, + { + 0x00000000, 0x0036eb3d, 0x006dd67a, 0x005b3d47, + 0x00dbacf4, 0x00ed47c9, 0x00b67a8e, 0x008091b3, + 0x00311513, 0x0007fe2e, 0x005cc369, 0x006a2854, + 0x00eab9e7, 0x00dc52da, 0x00876f9d, 0x00b184a0, + 0x00622a26, 0x0054c11b, 0x000ffc5c, 0x00391761, + 0x00b986d2, 0x008f6def, 0x00d450a8, 0x00e2bb95, + 0x00533f35, 0x0065d408, 0x003ee94f, 0x00080272, + 0x008893c1, 0x00be78fc, 0x00e545bb, 0x00d3ae86, + 0x00c4544c, 0x00f2bf71, 0x00a98236, 0x009f690b, + 0x001ff8b8, 0x00291385, 0x00722ec2, 0x0044c5ff, + 0x00f5415f, 0x00c3aa62, 0x00989725, 0x00ae7c18, + 0x002eedab, 0x00180696, 0x00433bd1, 0x0075d0ec, + 0x00a67e6a, 0x00909557, 0x00cba810, 0x00fd432d, + 0x007dd29e, 0x004b39a3, 0x001004e4, 0x0026efd9, + 0x00976b79, 0x00a18044, 0x00fabd03, 0x00cc563e, + 0x004cc78d, 0x007a2cb0, 0x002111f7, 0x0017faca, + 0x000ee463, 0x00380f5e, 0x00633219, 0x0055d924, + 0x00d54897, 0x00e3a3aa, 0x00b89eed, 0x008e75d0, + 0x003ff170, 0x00091a4d, 0x0052270a, 0x0064cc37, + 0x00e45d84, 0x00d2b6b9, 0x00898bfe, 0x00bf60c3, + 0x006cce45, 0x005a2578, 0x0001183f, 0x0037f302, + 0x00b762b1, 0x0081898c, 0x00dab4cb, 0x00ec5ff6, + 0x005ddb56, 0x006b306b, 0x00300d2c, 0x0006e611, + 0x008677a2, 0x00b09c9f, 0x00eba1d8, 0x00dd4ae5, + 0x00cab02f, 0x00fc5b12, 0x00a76655, 0x00918d68, + 0x00111cdb, 0x0027f7e6, 0x007ccaa1, 0x004a219c, + 0x00fba53c, 0x00cd4e01, 0x00967346, 0x00a0987b, + 0x002009c8, 0x0016e2f5, 0x004ddfb2, 0x007b348f, + 0x00a89a09, 0x009e7134, 0x00c54c73, 0x00f3a74e, + 0x007336fd, 0x0045ddc0, 0x001ee087, 0x00280bba, + 0x00998f1a, 0x00af6427, 0x00f45960, 0x00c2b25d, + 0x004223ee, 0x0074c8d3, 0x002ff594, 0x00191ea9, + 0x001dc8c6, 0x002b23fb, 0x00701ebc, 0x0046f581, + 0x00c66432, 0x00f08f0f, 0x00abb248, 0x009d5975, + 0x002cddd5, 0x001a36e8, 0x00410baf, 0x0077e092, + 0x00f77121, 0x00c19a1c, 0x009aa75b, 0x00ac4c66, + 0x007fe2e0, 0x004909dd, 0x0012349a, 0x0024dfa7, + 0x00a44e14, 0x0092a529, 0x00c9986e, 0x00ff7353, + 0x004ef7f3, 0x00781cce, 0x00232189, 0x0015cab4, + 0x00955b07, 0x00a3b03a, 0x00f88d7d, 0x00ce6640, + 0x00d99c8a, 0x00ef77b7, 0x00b44af0, 0x0082a1cd, + 0x0002307e, 0x0034db43, 0x006fe604, 0x00590d39, + 0x00e88999, 0x00de62a4, 0x00855fe3, 0x00b3b4de, + 0x0033256d, 0x0005ce50, 0x005ef317, 0x0068182a, + 0x00bbb6ac, 0x008d5d91, 0x00d660d6, 0x00e08beb, + 0x00601a58, 0x0056f165, 0x000dcc22, 0x003b271f, + 0x008aa3bf, 0x00bc4882, 0x00e775c5, 0x00d19ef8, + 0x00510f4b, 0x0067e476, 0x003cd931, 0x000a320c, + 0x00132ca5, 0x0025c798, 0x007efadf, 0x004811e2, + 0x00c88051, 0x00fe6b6c, 0x00a5562b, 0x0093bd16, + 0x002239b6, 0x0014d28b, 0x004fefcc, 0x007904f1, + 0x00f99542, 0x00cf7e7f, 0x00944338, 0x00a2a805, + 0x00710683, 0x0047edbe, 0x001cd0f9, 0x002a3bc4, + 0x00aaaa77, 0x009c414a, 0x00c77c0d, 0x00f19730, + 0x00401390, 0x0076f8ad, 0x002dc5ea, 0x001b2ed7, + 0x009bbf64, 0x00ad5459, 0x00f6691e, 0x00c08223, + 0x00d778e9, 0x00e193d4, 0x00baae93, 0x008c45ae, + 0x000cd41d, 0x003a3f20, 0x00610267, 0x0057e95a, + 0x00e66dfa, 0x00d086c7, 0x008bbb80, 0x00bd50bd, + 0x003dc10e, 0x000b2a33, 0x00501774, 0x0066fc49, + 0x00b552cf, 0x0083b9f2, 0x00d884b5, 0x00ee6f88, + 0x006efe3b, 0x00581506, 0x00032841, 0x0035c37c, + 0x008447dc, 0x00b2ace1, 0x00e991a6, 0x00df7a9b, + 0x005feb28, 0x00690015, 0x00323d52, 0x0004d66f, + }, + { + 0x00000000, 0x003b918c, 0x00772318, 0x004cb294, + 0x00ee4630, 0x00d5d7bc, 0x00996528, 0x00a2f4a4, + 0x005ac09b, 0x00615117, 0x002de383, 0x0016720f, + 0x00b486ab, 0x008f1727, 0x00c3a5b3, 0x00f8343f, + 0x00b58136, 0x008e10ba, 0x00c2a22e, 0x00f933a2, + 0x005bc706, 0x0060568a, 0x002ce41e, 0x00177592, + 0x00ef41ad, 0x00d4d021, 0x009862b5, 0x00a3f339, + 0x0001079d, 0x003a9611, 0x00762485, 0x004db509, + 0x00ed4e97, 0x00d6df1b, 0x009a6d8f, 0x00a1fc03, + 0x000308a7, 0x0038992b, 0x00742bbf, 0x004fba33, + 0x00b78e0c, 0x008c1f80, 0x00c0ad14, 0x00fb3c98, + 0x0059c83c, 0x006259b0, 0x002eeb24, 0x00157aa8, + 0x0058cfa1, 0x00635e2d, 0x002fecb9, 0x00147d35, + 0x00b68991, 0x008d181d, 0x00c1aa89, 0x00fa3b05, + 0x00020f3a, 0x00399eb6, 0x00752c22, 0x004ebdae, + 0x00ec490a, 0x00d7d886, 0x009b6a12, 0x00a0fb9e, + 0x005cd1d5, 0x00674059, 0x002bf2cd, 0x00106341, + 0x00b297e5, 0x00890669, 0x00c5b4fd, 0x00fe2571, + 0x0006114e, 0x003d80c2, 0x00713256, 0x004aa3da, + 0x00e8577e, 0x00d3c6f2, 0x009f7466, 0x00a4e5ea, + 0x00e950e3, 0x00d2c16f, 0x009e73fb, 0x00a5e277, + 0x000716d3, 0x003c875f, 0x007035cb, 0x004ba447, + 0x00b39078, 0x008801f4, 0x00c4b360, 0x00ff22ec, + 0x005dd648, 0x006647c4, 0x002af550, 0x001164dc, + 0x00b19f42, 0x008a0ece, 0x00c6bc5a, 0x00fd2dd6, + 0x005fd972, 0x006448fe, 0x0028fa6a, 0x00136be6, + 0x00eb5fd9, 0x00d0ce55, 0x009c7cc1, 0x00a7ed4d, + 0x000519e9, 0x003e8865, 0x00723af1, 0x0049ab7d, + 0x00041e74, 0x003f8ff8, 0x00733d6c, 0x0048ace0, + 0x00ea5844, 0x00d1c9c8, 0x009d7b5c, 0x00a6ead0, + 0x005edeef, 0x00654f63, 0x0029fdf7, 0x00126c7b, + 0x00b098df, 0x008b0953, 0x00c7bbc7, 0x00fc2a4b, + 0x00b9a3aa, 0x00823226, 0x00ce80b2, 0x00f5113e, + 0x0057e59a, 0x006c7416, 0x0020c682, 0x001b570e, + 0x00e36331, 0x00d8f2bd, 0x00944029, 0x00afd1a5, + 0x000d2501, 0x0036b48d, 0x007a0619, 0x00419795, + 0x000c229c, 0x0037b310, 0x007b0184, 0x00409008, + 0x00e264ac, 0x00d9f520, 0x009547b4, 0x00aed638, + 0x0056e207, 0x006d738b, 0x0021c11f, 0x001a5093, + 0x00b8a437, 0x008335bb, 0x00cf872f, 0x00f416a3, + 0x0054ed3d, 0x006f7cb1, 0x0023ce25, 0x00185fa9, + 0x00baab0d, 0x00813a81, 0x00cd8815, 0x00f61999, + 0x000e2da6, 0x0035bc2a, 0x00790ebe, 0x00429f32, + 0x00e06b96, 0x00dbfa1a, 0x0097488e, 0x00acd902, + 0x00e16c0b, 0x00dafd87, 0x00964f13, 0x00adde9f, + 0x000f2a3b, 0x0034bbb7, 0x00780923, 0x004398af, + 0x00bbac90, 0x00803d1c, 0x00cc8f88, 0x00f71e04, + 0x0055eaa0, 0x006e7b2c, 0x0022c9b8, 0x00195834, + 0x00e5727f, 0x00dee3f3, 0x00925167, 0x00a9c0eb, + 0x000b344f, 0x0030a5c3, 0x007c1757, 0x004786db, + 0x00bfb2e4, 0x00842368, 0x00c891fc, 0x00f30070, + 0x0051f4d4, 0x006a6558, 0x0026d7cc, 0x001d4640, + 0x0050f349, 0x006b62c5, 0x0027d051, 0x001c41dd, + 0x00beb579, 0x008524f5, 0x00c99661, 0x00f207ed, + 0x000a33d2, 0x0031a25e, 0x007d10ca, 0x00468146, + 0x00e475e2, 0x00dfe46e, 0x009356fa, 0x00a8c776, + 0x00083ce8, 0x0033ad64, 0x007f1ff0, 0x00448e7c, + 0x00e67ad8, 0x00ddeb54, 0x009159c0, 0x00aac84c, + 0x0052fc73, 0x00696dff, 0x0025df6b, 0x001e4ee7, + 0x00bcba43, 0x00872bcf, 0x00cb995b, 0x00f008d7, + 0x00bdbdde, 0x00862c52, 0x00ca9ec6, 0x00f10f4a, + 0x0053fbee, 0x00686a62, 0x0024d8f6, 0x001f497a, + 0x00e77d45, 0x00dcecc9, 0x00905e5d, 0x00abcfd1, + 0x00093b75, 0x0032aaf9, 0x007e186d, 0x004589e1, + }, + { + 0x00000000, 0x00f50baf, 0x006c5ba5, 0x0099500a, + 0x00d8b74a, 0x002dbce5, 0x00b4ecef, 0x0041e740, + 0x0037226f, 0x00c229c0, 0x005b79ca, 0x00ae7265, + 0x00ef9525, 0x001a9e8a, 0x0083ce80, 0x0076c52f, + 0x006e44de, 0x009b4f71, 0x00021f7b, 0x00f714d4, + 0x00b6f394, 0x0043f83b, 0x00daa831, 0x002fa39e, + 0x005966b1, 0x00ac6d1e, 0x00353d14, 0x00c036bb, + 0x0081d1fb, 0x0074da54, 0x00ed8a5e, 0x001881f1, + 0x00dc89bc, 0x00298213, 0x00b0d219, 0x0045d9b6, + 0x00043ef6, 0x00f13559, 0x00686553, 0x009d6efc, + 0x00ebabd3, 0x001ea07c, 0x0087f076, 0x0072fbd9, + 0x00331c99, 0x00c61736, 0x005f473c, 0x00aa4c93, + 0x00b2cd62, 0x0047c6cd, 0x00de96c7, 0x002b9d68, + 0x006a7a28, 0x009f7187, 0x0006218d, 0x00f32a22, + 0x0085ef0d, 0x0070e4a2, 0x00e9b4a8, 0x001cbf07, + 0x005d5847, 0x00a853e8, 0x003103e2, 0x00c4084d, + 0x003f5f83, 0x00ca542c, 0x00530426, 0x00a60f89, + 0x00e7e8c9, 0x0012e366, 0x008bb36c, 0x007eb8c3, + 0x00087dec, 0x00fd7643, 0x00642649, 0x00912de6, + 0x00d0caa6, 0x0025c109, 0x00bc9103, 0x00499aac, + 0x00511b5d, 0x00a410f2, 0x003d40f8, 0x00c84b57, + 0x0089ac17, 0x007ca7b8, 0x00e5f7b2, 0x0010fc1d, + 0x00663932, 0x0093329d, 0x000a6297, 0x00ff6938, + 0x00be8e78, 0x004b85d7, 0x00d2d5dd, 0x0027de72, + 0x00e3d63f, 0x0016dd90, 0x008f8d9a, 0x007a8635, + 0x003b6175, 0x00ce6ada, 0x00573ad0, 0x00a2317f, + 0x00d4f450, 0x0021ffff, 0x00b8aff5, 0x004da45a, + 0x000c431a, 0x00f948b5, 0x006018bf, 0x00951310, + 0x008d92e1, 0x0078994e, 0x00e1c944, 0x0014c2eb, + 0x005525ab, 0x00a02e04, 0x00397e0e, 0x00cc75a1, + 0x00bab08e, 0x004fbb21, 0x00d6eb2b, 0x0023e084, + 0x006207c4, 0x00970c6b, 0x000e5c61, 0x00fb57ce, + 0x007ebf06, 0x008bb4a9, 0x0012e4a3, 0x00e7ef0c, + 0x00a6084c, 0x005303e3, 0x00ca53e9, 0x003f5846, + 0x00499d69, 0x00bc96c6, 0x0025c6cc, 0x00d0cd63, + 0x00912a23, 0x0064218c, 0x00fd7186, 0x00087a29, + 0x0010fbd8, 0x00e5f077, 0x007ca07d, 0x0089abd2, + 0x00c84c92, 0x003d473d, 0x00a41737, 0x00511c98, + 0x0027d9b7, 0x00d2d218, 0x004b8212, 0x00be89bd, + 0x00ff6efd, 0x000a6552, 0x00933558, 0x00663ef7, + 0x00a236ba, 0x00573d15, 0x00ce6d1f, 0x003b66b0, + 0x007a81f0, 0x008f8a5f, 0x0016da55, 0x00e3d1fa, + 0x009514d5, 0x00601f7a, 0x00f94f70, 0x000c44df, + 0x004da39f, 0x00b8a830, 0x0021f83a, 0x00d4f395, + 0x00cc7264, 0x003979cb, 0x00a029c1, 0x0055226e, + 0x0014c52e, 0x00e1ce81, 0x00789e8b, 0x008d9524, + 0x00fb500b, 0x000e5ba4, 0x00970bae, 0x00620001, + 0x0023e741, 0x00d6ecee, 0x004fbce4, 0x00bab74b, + 0x0041e085, 0x00b4eb2a, 0x002dbb20, 0x00d8b08f, + 0x009957cf, 0x006c5c60, 0x00f50c6a, 0x000007c5, + 0x0076c2ea, 0x0083c945, 0x001a994f, 0x00ef92e0, + 0x00ae75a0, 0x005b7e0f, 0x00c22e05, 0x003725aa, + 0x002fa45b, 0x00daaff4, 0x0043fffe, 0x00b6f451, + 0x00f71311, 0x000218be, 0x009b48b4, 0x006e431b, + 0x00188634, 0x00ed8d9b, 0x0074dd91, 0x0081d63e, + 0x00c0317e, 0x00353ad1, 0x00ac6adb, 0x00596174, + 0x009d6939, 0x00686296, 0x00f1329c, 0x00043933, + 0x0045de73, 0x00b0d5dc, 0x002985d6, 0x00dc8e79, + 0x00aa4b56, 0x005f40f9, 0x00c610f3, 0x00331b5c, + 0x0072fc1c, 0x0087f7b3, 0x001ea7b9, 0x00ebac16, + 0x00f32de7, 0x00062648, 0x009f7642, 0x006a7ded, + 0x002b9aad, 0x00de9102, 0x0047c108, 0x00b2caa7, + 0x00c40f88, 0x00310427, 0x00a8542d, 0x005d5f82, + 0x001cb8c2, 0x00e9b36d, 0x0070e367, 0x0085e8c8, + }, + { + 0x00000000, 0x00fd7e0c, 0x007cb0e3, 0x0081ceef, + 0x00f961c6, 0x00041fca, 0x0085d125, 0x0078af29, + 0x00748f77, 0x0089f17b, 0x00083f94, 0x00f54198, + 0x008deeb1, 0x007090bd, 0x00f15e52, 0x000c205e, + 0x00e91eee, 0x001460e2, 0x0095ae0d, 0x0068d001, + 0x00107f28, 0x00ed0124, 0x006ccfcb, 0x0091b1c7, + 0x009d9199, 0x0060ef95, 0x00e1217a, 0x001c5f76, + 0x0064f05f, 0x00998e53, 0x001840bc, 0x00e53eb0, + 0x00547127, 0x00a90f2b, 0x0028c1c4, 0x00d5bfc8, + 0x00ad10e1, 0x00506eed, 0x00d1a002, 0x002cde0e, + 0x0020fe50, 0x00dd805c, 0x005c4eb3, 0x00a130bf, + 0x00d99f96, 0x0024e19a, 0x00a52f75, 0x00585179, + 0x00bd6fc9, 0x004011c5, 0x00c1df2a, 0x003ca126, + 0x00440e0f, 0x00b97003, 0x0038beec, 0x00c5c0e0, + 0x00c9e0be, 0x00349eb2, 0x00b5505d, 0x00482e51, + 0x00308178, 0x00cdff74, 0x004c319b, 0x00b14f97, + 0x00a8e24e, 0x00559c42, 0x00d452ad, 0x00292ca1, + 0x00518388, 0x00acfd84, 0x002d336b, 0x00d04d67, + 0x00dc6d39, 0x00211335, 0x00a0ddda, 0x005da3d6, + 0x00250cff, 0x00d872f3, 0x0059bc1c, 0x00a4c210, + 0x0041fca0, 0x00bc82ac, 0x003d4c43, 0x00c0324f, + 0x00b89d66, 0x0045e36a, 0x00c42d85, 0x00395389, + 0x003573d7, 0x00c80ddb, 0x0049c334, 0x00b4bd38, + 0x00cc1211, 0x00316c1d, 0x00b0a2f2, 0x004ddcfe, + 0x00fc9369, 0x0001ed65, 0x0080238a, 0x007d5d86, + 0x0005f2af, 0x00f88ca3, 0x0079424c, 0x00843c40, + 0x00881c1e, 0x00756212, 0x00f4acfd, 0x0009d2f1, + 0x00717dd8, 0x008c03d4, 0x000dcd3b, 0x00f0b337, + 0x00158d87, 0x00e8f38b, 0x00693d64, 0x00944368, + 0x00ecec41, 0x0011924d, 0x00905ca2, 0x006d22ae, + 0x006102f0, 0x009c7cfc, 0x001db213, 0x00e0cc1f, + 0x00986336, 0x00651d3a, 0x00e4d3d5, 0x0019add9, + 0x00d78867, 0x002af66b, 0x00ab3884, 0x00564688, + 0x002ee9a1, 0x00d397ad, 0x00525942, 0x00af274e, + 0x00a30710, 0x005e791c, 0x00dfb7f3, 0x0022c9ff, + 0x005a66d6, 0x00a718da, 0x0026d635, 0x00dba839, + 0x003e9689, 0x00c3e885, 0x0042266a, 0x00bf5866, + 0x00c7f74f, 0x003a8943, 0x00bb47ac, 0x004639a0, + 0x004a19fe, 0x00b767f2, 0x0036a91d, 0x00cbd711, + 0x00b37838, 0x004e0634, 0x00cfc8db, 0x0032b6d7, + 0x0083f940, 0x007e874c, 0x00ff49a3, 0x000237af, + 0x007a9886, 0x0087e68a, 0x00062865, 0x00fb5669, + 0x00f77637, 0x000a083b, 0x008bc6d4, 0x0076b8d8, + 0x000e17f1, 0x00f369fd, 0x0072a712, 0x008fd91e, + 0x006ae7ae, 0x009799a2, 0x0016574d, 0x00eb2941, + 0x00938668, 0x006ef864, 0x00ef368b, 0x00124887, + 0x001e68d9, 0x00e316d5, 0x0062d83a, 0x009fa636, + 0x00e7091f, 0x001a7713, 0x009bb9fc, 0x0066c7f0, + 0x007f6a29, 0x00821425, 0x0003daca, 0x00fea4c6, + 0x00860bef, 0x007b75e3, 0x00fabb0c, 0x0007c500, + 0x000be55e, 0x00f69b52, 0x007755bd, 0x008a2bb1, + 0x00f28498, 0x000ffa94, 0x008e347b, 0x00734a77, + 0x009674c7, 0x006b0acb, 0x00eac424, 0x0017ba28, + 0x006f1501, 0x00926b0d, 0x0013a5e2, 0x00eedbee, + 0x00e2fbb0, 0x001f85bc, 0x009e4b53, 0x0063355f, + 0x001b9a76, 0x00e6e47a, 0x00672a95, 0x009a5499, + 0x002b1b0e, 0x00d66502, 0x0057abed, 0x00aad5e1, + 0x00d27ac8, 0x002f04c4, 0x00aeca2b, 0x0053b427, + 0x005f9479, 0x00a2ea75, 0x0023249a, 0x00de5a96, + 0x00a6f5bf, 0x005b8bb3, 0x00da455c, 0x00273b50, + 0x00c205e0, 0x003f7bec, 0x00beb503, 0x0043cb0f, + 0x003b6426, 0x00c61a2a, 0x0047d4c5, 0x00baaac9, + 0x00b68a97, 0x004bf49b, 0x00ca3a74, 0x00374478, + 0x004feb51, 0x00b2955d, 0x00335bb2, 0x00ce25be, + }, + { + 0x00000000, 0x00295c35, 0x0052b86a, 0x007be45f, + 0x00a570d4, 0x008c2ce1, 0x00f7c8be, 0x00de948b, + 0x00ccad53, 0x00e5f166, 0x009e1539, 0x00b7490c, + 0x0069dd87, 0x004081b2, 0x003b65ed, 0x001239d8, + 0x001f165d, 0x00364a68, 0x004dae37, 0x0064f202, + 0x00ba6689, 0x00933abc, 0x00e8dee3, 0x00c182d6, + 0x00d3bb0e, 0x00fae73b, 0x00810364, 0x00a85f51, + 0x0076cbda, 0x005f97ef, 0x002473b0, 0x000d2f85, + 0x003e2cba, 0x0017708f, 0x006c94d0, 0x0045c8e5, + 0x009b5c6e, 0x00b2005b, 0x00c9e404, 0x00e0b831, + 0x00f281e9, 0x00dbdddc, 0x00a03983, 0x008965b6, + 0x0057f13d, 0x007ead08, 0x00054957, 0x002c1562, + 0x00213ae7, 0x000866d2, 0x0073828d, 0x005adeb8, + 0x00844a33, 0x00ad1606, 0x00d6f259, 0x00ffae6c, + 0x00ed97b4, 0x00c4cb81, 0x00bf2fde, 0x009673eb, + 0x0048e760, 0x0061bb55, 0x001a5f0a, 0x0033033f, + 0x007c5974, 0x00550541, 0x002ee11e, 0x0007bd2b, + 0x00d929a0, 0x00f07595, 0x008b91ca, 0x00a2cdff, + 0x00b0f427, 0x0099a812, 0x00e24c4d, 0x00cb1078, + 0x001584f3, 0x003cd8c6, 0x00473c99, 0x006e60ac, + 0x00634f29, 0x004a131c, 0x0031f743, 0x0018ab76, + 0x00c63ffd, 0x00ef63c8, 0x00948797, 0x00bddba2, + 0x00afe27a, 0x0086be4f, 0x00fd5a10, 0x00d40625, + 0x000a92ae, 0x0023ce9b, 0x00582ac4, 0x007176f1, + 0x004275ce, 0x006b29fb, 0x0010cda4, 0x00399191, + 0x00e7051a, 0x00ce592f, 0x00b5bd70, 0x009ce145, + 0x008ed89d, 0x00a784a8, 0x00dc60f7, 0x00f53cc2, + 0x002ba849, 0x0002f47c, 0x00791023, 0x00504c16, + 0x005d6393, 0x00743fa6, 0x000fdbf9, 0x002687cc, + 0x00f81347, 0x00d14f72, 0x00aaab2d, 0x0083f718, + 0x0091cec0, 0x00b892f5, 0x00c376aa, 0x00ea2a9f, + 0x0034be14, 0x001de221, 0x0066067e, 0x004f5a4b, + 0x00f8b2e8, 0x00d1eedd, 0x00aa0a82, 0x008356b7, + 0x005dc23c, 0x00749e09, 0x000f7a56, 0x00262663, + 0x00341fbb, 0x001d438e, 0x0066a7d1, 0x004ffbe4, + 0x00916f6f, 0x00b8335a, 0x00c3d705, 0x00ea8b30, + 0x00e7a4b5, 0x00cef880, 0x00b51cdf, 0x009c40ea, + 0x0042d461, 0x006b8854, 0x00106c0b, 0x0039303e, + 0x002b09e6, 0x000255d3, 0x0079b18c, 0x0050edb9, + 0x008e7932, 0x00a72507, 0x00dcc158, 0x00f59d6d, + 0x00c69e52, 0x00efc267, 0x00942638, 0x00bd7a0d, + 0x0063ee86, 0x004ab2b3, 0x003156ec, 0x00180ad9, + 0x000a3301, 0x00236f34, 0x00588b6b, 0x0071d75e, + 0x00af43d5, 0x00861fe0, 0x00fdfbbf, 0x00d4a78a, + 0x00d9880f, 0x00f0d43a, 0x008b3065, 0x00a26c50, + 0x007cf8db, 0x0055a4ee, 0x002e40b1, 0x00071c84, + 0x0015255c, 0x003c7969, 0x00479d36, 0x006ec103, + 0x00b05588, 0x009909bd, 0x00e2ede2, 0x00cbb1d7, + 0x0084eb9c, 0x00adb7a9, 0x00d653f6, 0x00ff0fc3, + 0x00219b48, 0x0008c77d, 0x00732322, 0x005a7f17, + 0x004846cf, 0x00611afa, 0x001afea5, 0x0033a290, + 0x00ed361b, 0x00c46a2e, 0x00bf8e71, 0x0096d244, + 0x009bfdc1, 0x00b2a1f4, 0x00c945ab, 0x00e0199e, + 0x003e8d15, 0x0017d120, 0x006c357f, 0x0045694a, + 0x00575092, 0x007e0ca7, 0x0005e8f8, 0x002cb4cd, + 0x00f22046, 0x00db7c73, 0x00a0982c, 0x0089c419, + 0x00bac726, 0x00939b13, 0x00e87f4c, 0x00c12379, + 0x001fb7f2, 0x0036ebc7, 0x004d0f98, 0x006453ad, + 0x00766a75, 0x005f3640, 0x0024d21f, 0x000d8e2a, + 0x00d31aa1, 0x00fa4694, 0x0081a2cb, 0x00a8fefe, + 0x00a5d17b, 0x008c8d4e, 0x00f76911, 0x00de3524, + 0x0000a1af, 0x0029fd9a, 0x005219c5, 0x007b45f0, + 0x00697c28, 0x0040201d, 0x003bc442, 0x00129877, + 0x00cc0cfc, 0x00e550c9, 0x009eb496, 0x00b7e8a3, + }, + { + 0x00000000, 0x0077292b, 0x00ee5256, 0x00997b7d, + 0x005ae857, 0x002dc17c, 0x00b4ba01, 0x00c3932a, + 0x00b5d0ae, 0x00c2f985, 0x005b82f8, 0x002cabd3, + 0x00ef38f9, 0x009811d2, 0x00016aaf, 0x00764384, + 0x00ededa7, 0x009ac48c, 0x0003bff1, 0x007496da, + 0x00b705f0, 0x00c02cdb, 0x005957a6, 0x002e7e8d, + 0x00583d09, 0x002f1422, 0x00b66f5f, 0x00c14674, + 0x0002d55e, 0x0075fc75, 0x00ec8708, 0x009bae23, + 0x005d97b5, 0x002abe9e, 0x00b3c5e3, 0x00c4ecc8, + 0x00077fe2, 0x007056c9, 0x00e92db4, 0x009e049f, + 0x00e8471b, 0x009f6e30, 0x0006154d, 0x00713c66, + 0x00b2af4c, 0x00c58667, 0x005cfd1a, 0x002bd431, + 0x00b07a12, 0x00c75339, 0x005e2844, 0x0029016f, + 0x00ea9245, 0x009dbb6e, 0x0004c013, 0x0073e938, + 0x0005aabc, 0x00728397, 0x00ebf8ea, 0x009cd1c1, + 0x005f42eb, 0x00286bc0, 0x00b110bd, 0x00c63996, + 0x00bb2f6a, 0x00cc0641, 0x00557d3c, 0x00225417, + 0x00e1c73d, 0x0096ee16, 0x000f956b, 0x0078bc40, + 0x000effc4, 0x0079d6ef, 0x00e0ad92, 0x009784b9, + 0x00541793, 0x00233eb8, 0x00ba45c5, 0x00cd6cee, + 0x0056c2cd, 0x0021ebe6, 0x00b8909b, 0x00cfb9b0, + 0x000c2a9a, 0x007b03b1, 0x00e278cc, 0x009551e7, + 0x00e31263, 0x00943b48, 0x000d4035, 0x007a691e, + 0x00b9fa34, 0x00ced31f, 0x0057a862, 0x00208149, + 0x00e6b8df, 0x009191f4, 0x0008ea89, 0x007fc3a2, + 0x00bc5088, 0x00cb79a3, 0x005202de, 0x00252bf5, + 0x00536871, 0x0024415a, 0x00bd3a27, 0x00ca130c, + 0x00098026, 0x007ea90d, 0x00e7d270, 0x0090fb5b, + 0x000b5578, 0x007c7c53, 0x00e5072e, 0x00922e05, + 0x0051bd2f, 0x00269404, 0x00bfef79, 0x00c8c652, + 0x00be85d6, 0x00c9acfd, 0x0050d780, 0x0027feab, + 0x00e46d81, 0x009344aa, 0x000a3fd7, 0x007d16fc, + 0x00f0122f, 0x00873b04, 0x001e4079, 0x00696952, + 0x00aafa78, 0x00ddd353, 0x0044a82e, 0x00338105, + 0x0045c281, 0x0032ebaa, 0x00ab90d7, 0x00dcb9fc, + 0x001f2ad6, 0x006803fd, 0x00f17880, 0x008651ab, + 0x001dff88, 0x006ad6a3, 0x00f3adde, 0x008484f5, + 0x004717df, 0x00303ef4, 0x00a94589, 0x00de6ca2, + 0x00a82f26, 0x00df060d, 0x00467d70, 0x0031545b, + 0x00f2c771, 0x0085ee5a, 0x001c9527, 0x006bbc0c, + 0x00ad859a, 0x00daacb1, 0x0043d7cc, 0x0034fee7, + 0x00f76dcd, 0x008044e6, 0x00193f9b, 0x006e16b0, + 0x00185534, 0x006f7c1f, 0x00f60762, 0x00812e49, + 0x0042bd63, 0x00359448, 0x00acef35, 0x00dbc61e, + 0x0040683d, 0x00374116, 0x00ae3a6b, 0x00d91340, + 0x001a806a, 0x006da941, 0x00f4d23c, 0x0083fb17, + 0x00f5b893, 0x008291b8, 0x001beac5, 0x006cc3ee, + 0x00af50c4, 0x00d879ef, 0x00410292, 0x00362bb9, + 0x004b3d45, 0x003c146e, 0x00a56f13, 0x00d24638, + 0x0011d512, 0x0066fc39, 0x00ff8744, 0x0088ae6f, + 0x00feedeb, 0x0089c4c0, 0x0010bfbd, 0x00679696, + 0x00a405bc, 0x00d32c97, 0x004a57ea, 0x003d7ec1, + 0x00a6d0e2, 0x00d1f9c9, 0x004882b4, 0x003fab9f, + 0x00fc38b5, 0x008b119e, 0x00126ae3, 0x006543c8, + 0x0013004c, 0x00642967, 0x00fd521a, 0x008a7b31, + 0x0049e81b, 0x003ec130, 0x00a7ba4d, 0x00d09366, + 0x0016aaf0, 0x006183db, 0x00f8f8a6, 0x008fd18d, + 0x004c42a7, 0x003b6b8c, 0x00a210f1, 0x00d539da, + 0x00a37a5e, 0x00d45375, 0x004d2808, 0x003a0123, + 0x00f99209, 0x008ebb22, 0x0017c05f, 0x0060e974, + 0x00fb4757, 0x008c6e7c, 0x00151501, 0x00623c2a, + 0x00a1af00, 0x00d6862b, 0x004ffd56, 0x0038d47d, + 0x004e97f9, 0x0039bed2, 0x00a0c5af, 0x00d7ec84, + 0x00147fae, 0x00635685, 0x00fa2df8, 0x008d04d3, + }, + { + 0x00000000, 0x006668a5, 0x00ccd14a, 0x00aab9ef, + 0x001fee6f, 0x007986ca, 0x00d33f25, 0x00b55780, + 0x003fdcde, 0x0059b47b, 0x00f30d94, 0x00956531, + 0x002032b1, 0x00465a14, 0x00ece3fb, 0x008a8b5e, + 0x007fb9bc, 0x0019d119, 0x00b368f6, 0x00d50053, + 0x006057d3, 0x00063f76, 0x00ac8699, 0x00caee3c, + 0x00406562, 0x00260dc7, 0x008cb428, 0x00eadc8d, + 0x005f8b0d, 0x0039e3a8, 0x00935a47, 0x00f532e2, + 0x00ff7378, 0x00991bdd, 0x0033a232, 0x0055ca97, + 0x00e09d17, 0x0086f5b2, 0x002c4c5d, 0x004a24f8, + 0x00c0afa6, 0x00a6c703, 0x000c7eec, 0x006a1649, + 0x00df41c9, 0x00b9296c, 0x00139083, 0x0075f826, + 0x0080cac4, 0x00e6a261, 0x004c1b8e, 0x002a732b, + 0x009f24ab, 0x00f94c0e, 0x0053f5e1, 0x00359d44, + 0x00bf161a, 0x00d97ebf, 0x0073c750, 0x0015aff5, + 0x00a0f875, 0x00c690d0, 0x006c293f, 0x000a419a, + 0x0078aa0b, 0x001ec2ae, 0x00b47b41, 0x00d213e4, + 0x00674464, 0x00012cc1, 0x00ab952e, 0x00cdfd8b, + 0x004776d5, 0x00211e70, 0x008ba79f, 0x00edcf3a, + 0x005898ba, 0x003ef01f, 0x009449f0, 0x00f22155, + 0x000713b7, 0x00617b12, 0x00cbc2fd, 0x00adaa58, + 0x0018fdd8, 0x007e957d, 0x00d42c92, 0x00b24437, + 0x0038cf69, 0x005ea7cc, 0x00f41e23, 0x00927686, + 0x00272106, 0x004149a3, 0x00ebf04c, 0x008d98e9, + 0x0087d973, 0x00e1b1d6, 0x004b0839, 0x002d609c, + 0x0098371c, 0x00fe5fb9, 0x0054e656, 0x00328ef3, + 0x00b805ad, 0x00de6d08, 0x0074d4e7, 0x0012bc42, + 0x00a7ebc2, 0x00c18367, 0x006b3a88, 0x000d522d, + 0x00f860cf, 0x009e086a, 0x0034b185, 0x0052d920, + 0x00e78ea0, 0x0081e605, 0x002b5fea, 0x004d374f, + 0x00c7bc11, 0x00a1d4b4, 0x000b6d5b, 0x006d05fe, + 0x00d8527e, 0x00be3adb, 0x00148334, 0x0072eb91, + 0x00f15416, 0x00973cb3, 0x003d855c, 0x005bedf9, + 0x00eeba79, 0x0088d2dc, 0x00226b33, 0x00440396, + 0x00ce88c8, 0x00a8e06d, 0x00025982, 0x00643127, + 0x00d166a7, 0x00b70e02, 0x001db7ed, 0x007bdf48, + 0x008eedaa, 0x00e8850f, 0x00423ce0, 0x00245445, + 0x009103c5, 0x00f76b60, 0x005dd28f, 0x003bba2a, + 0x00b13174, 0x00d759d1, 0x007de03e, 0x001b889b, + 0x00aedf1b, 0x00c8b7be, 0x00620e51, 0x000466f4, + 0x000e276e, 0x00684fcb, 0x00c2f624, 0x00a49e81, + 0x0011c901, 0x0077a1a4, 0x00dd184b, 0x00bb70ee, + 0x0031fbb0, 0x00579315, 0x00fd2afa, 0x009b425f, + 0x002e15df, 0x00487d7a, 0x00e2c495, 0x0084ac30, + 0x00719ed2, 0x0017f677, 0x00bd4f98, 0x00db273d, + 0x006e70bd, 0x00081818, 0x00a2a1f7, 0x00c4c952, + 0x004e420c, 0x00282aa9, 0x00829346, 0x00e4fbe3, + 0x0051ac63, 0x0037c4c6, 0x009d7d29, 0x00fb158c, + 0x0089fe1d, 0x00ef96b8, 0x00452f57, 0x002347f2, + 0x00961072, 0x00f078d7, 0x005ac138, 0x003ca99d, + 0x00b622c3, 0x00d04a66, 0x007af389, 0x001c9b2c, + 0x00a9ccac, 0x00cfa409, 0x00651de6, 0x00037543, + 0x00f647a1, 0x00902f04, 0x003a96eb, 0x005cfe4e, + 0x00e9a9ce, 0x008fc16b, 0x00257884, 0x00431021, + 0x00c99b7f, 0x00aff3da, 0x00054a35, 0x00632290, + 0x00d67510, 0x00b01db5, 0x001aa45a, 0x007cccff, + 0x00768d65, 0x0010e5c0, 0x00ba5c2f, 0x00dc348a, + 0x0069630a, 0x000f0baf, 0x00a5b240, 0x00c3dae5, + 0x004951bb, 0x002f391e, 0x008580f1, 0x00e3e854, + 0x0056bfd4, 0x0030d771, 0x009a6e9e, 0x00fc063b, + 0x000934d9, 0x006f5c7c, 0x00c5e593, 0x00a38d36, + 0x0016dab6, 0x0070b213, 0x00da0bfc, 0x00bc6359, + 0x0036e807, 0x005080a2, 0x00fa394d, 0x009c51e8, + 0x00290668, 0x004f6ecd, 0x00e5d722, 0x0083bf87, + }, + { + 0x00000000, 0x0064e4d7, 0x00c9c9ae, 0x00ad2d79, + 0x0015dfa7, 0x00713b70, 0x00dc1609, 0x00b8f2de, + 0x002bbf4e, 0x004f5b99, 0x00e276e0, 0x00869237, + 0x003e60e9, 0x005a843e, 0x00f7a947, 0x00934d90, + 0x00577e9c, 0x00339a4b, 0x009eb732, 0x00fa53e5, + 0x0042a13b, 0x002645ec, 0x008b6895, 0x00ef8c42, + 0x007cc1d2, 0x00182505, 0x00b5087c, 0x00d1ecab, + 0x00691e75, 0x000dfaa2, 0x00a0d7db, 0x00c4330c, + 0x00aefd38, 0x00ca19ef, 0x00673496, 0x0003d041, + 0x00bb229f, 0x00dfc648, 0x0072eb31, 0x00160fe6, + 0x00854276, 0x00e1a6a1, 0x004c8bd8, 0x00286f0f, + 0x00909dd1, 0x00f47906, 0x0059547f, 0x003db0a8, + 0x00f983a4, 0x009d6773, 0x00304a0a, 0x0054aedd, + 0x00ec5c03, 0x0088b8d4, 0x002595ad, 0x0041717a, + 0x00d23cea, 0x00b6d83d, 0x001bf544, 0x007f1193, + 0x00c7e34d, 0x00a3079a, 0x000e2ae3, 0x006ace34, + 0x00dbb68b, 0x00bf525c, 0x00127f25, 0x00769bf2, + 0x00ce692c, 0x00aa8dfb, 0x0007a082, 0x00634455, + 0x00f009c5, 0x0094ed12, 0x0039c06b, 0x005d24bc, + 0x00e5d662, 0x008132b5, 0x002c1fcc, 0x0048fb1b, + 0x008cc817, 0x00e82cc0, 0x004501b9, 0x0021e56e, + 0x009917b0, 0x00fdf367, 0x0050de1e, 0x00343ac9, + 0x00a77759, 0x00c3938e, 0x006ebef7, 0x000a5a20, + 0x00b2a8fe, 0x00d64c29, 0x007b6150, 0x001f8587, + 0x00754bb3, 0x0011af64, 0x00bc821d, 0x00d866ca, + 0x00609414, 0x000470c3, 0x00a95dba, 0x00cdb96d, + 0x005ef4fd, 0x003a102a, 0x00973d53, 0x00f3d984, + 0x004b2b5a, 0x002fcf8d, 0x0082e2f4, 0x00e60623, + 0x0022352f, 0x0046d1f8, 0x00ebfc81, 0x008f1856, + 0x0037ea88, 0x00530e5f, 0x00fe2326, 0x009ac7f1, + 0x00098a61, 0x006d6eb6, 0x00c043cf, 0x00a4a718, + 0x001c55c6, 0x0078b111, 0x00d59c68, 0x00b178bf, + 0x003121ed, 0x0055c53a, 0x00f8e843, 0x009c0c94, + 0x0024fe4a, 0x00401a9d, 0x00ed37e4, 0x0089d333, + 0x001a9ea3, 0x007e7a74, 0x00d3570d, 0x00b7b3da, + 0x000f4104, 0x006ba5d3, 0x00c688aa, 0x00a26c7d, + 0x00665f71, 0x0002bba6, 0x00af96df, 0x00cb7208, + 0x007380d6, 0x00176401, 0x00ba4978, 0x00deadaf, + 0x004de03f, 0x002904e8, 0x00842991, 0x00e0cd46, + 0x00583f98, 0x003cdb4f, 0x0091f636, 0x00f512e1, + 0x009fdcd5, 0x00fb3802, 0x0056157b, 0x0032f1ac, + 0x008a0372, 0x00eee7a5, 0x0043cadc, 0x00272e0b, + 0x00b4639b, 0x00d0874c, 0x007daa35, 0x00194ee2, + 0x00a1bc3c, 0x00c558eb, 0x00687592, 0x000c9145, + 0x00c8a249, 0x00ac469e, 0x00016be7, 0x00658f30, + 0x00dd7dee, 0x00b99939, 0x0014b440, 0x00705097, + 0x00e31d07, 0x0087f9d0, 0x002ad4a9, 0x004e307e, + 0x00f6c2a0, 0x00922677, 0x003f0b0e, 0x005befd9, + 0x00ea9766, 0x008e73b1, 0x00235ec8, 0x0047ba1f, + 0x00ff48c1, 0x009bac16, 0x0036816f, 0x005265b8, + 0x00c12828, 0x00a5ccff, 0x0008e186, 0x006c0551, + 0x00d4f78f, 0x00b01358, 0x001d3e21, 0x0079daf6, + 0x00bde9fa, 0x00d90d2d, 0x00742054, 0x0010c483, + 0x00a8365d, 0x00ccd28a, 0x0061fff3, 0x00051b24, + 0x009656b4, 0x00f2b263, 0x005f9f1a, 0x003b7bcd, + 0x00838913, 0x00e76dc4, 0x004a40bd, 0x002ea46a, + 0x00446a5e, 0x00208e89, 0x008da3f0, 0x00e94727, + 0x0051b5f9, 0x0035512e, 0x00987c57, 0x00fc9880, + 0x006fd510, 0x000b31c7, 0x00a61cbe, 0x00c2f869, + 0x007a0ab7, 0x001eee60, 0x00b3c319, 0x00d727ce, + 0x001314c2, 0x0077f015, 0x00dadd6c, 0x00be39bb, + 0x0006cb65, 0x00622fb2, 0x00cf02cb, 0x00abe61c, + 0x0038ab8c, 0x005c4f5b, 0x00f16222, 0x009586f5, + 0x002d742b, 0x004990fc, 0x00e4bd85, 0x00805952, + }, + { + 0x00000000, 0x006243da, 0x00c487b4, 0x00a6c46e, + 0x000f4393, 0x006d0049, 0x00cbc427, 0x00a987fd, + 0x001e8726, 0x007cc4fc, 0x00da0092, 0x00b84348, + 0x0011c4b5, 0x0073876f, 0x00d54301, 0x00b700db, + 0x003d0e4c, 0x005f4d96, 0x00f989f8, 0x009bca22, + 0x00324ddf, 0x00500e05, 0x00f6ca6b, 0x009489b1, + 0x0023896a, 0x0041cab0, 0x00e70ede, 0x00854d04, + 0x002ccaf9, 0x004e8923, 0x00e84d4d, 0x008a0e97, + 0x007a1c98, 0x00185f42, 0x00be9b2c, 0x00dcd8f6, + 0x00755f0b, 0x00171cd1, 0x00b1d8bf, 0x00d39b65, + 0x00649bbe, 0x0006d864, 0x00a01c0a, 0x00c25fd0, + 0x006bd82d, 0x00099bf7, 0x00af5f99, 0x00cd1c43, + 0x004712d4, 0x0025510e, 0x00839560, 0x00e1d6ba, + 0x00485147, 0x002a129d, 0x008cd6f3, 0x00ee9529, + 0x005995f2, 0x003bd628, 0x009d1246, 0x00ff519c, + 0x0056d661, 0x003495bb, 0x009251d5, 0x00f0120f, + 0x00f43930, 0x00967aea, 0x0030be84, 0x0052fd5e, + 0x00fb7aa3, 0x00993979, 0x003ffd17, 0x005dbecd, + 0x00eabe16, 0x0088fdcc, 0x002e39a2, 0x004c7a78, + 0x00e5fd85, 0x0087be5f, 0x00217a31, 0x004339eb, + 0x00c9377c, 0x00ab74a6, 0x000db0c8, 0x006ff312, + 0x00c674ef, 0x00a43735, 0x0002f35b, 0x0060b081, + 0x00d7b05a, 0x00b5f380, 0x001337ee, 0x00717434, + 0x00d8f3c9, 0x00bab013, 0x001c747d, 0x007e37a7, + 0x008e25a8, 0x00ec6672, 0x004aa21c, 0x0028e1c6, + 0x0081663b, 0x00e325e1, 0x0045e18f, 0x0027a255, + 0x0090a28e, 0x00f2e154, 0x0054253a, 0x003666e0, + 0x009fe11d, 0x00fda2c7, 0x005b66a9, 0x00392573, + 0x00b32be4, 0x00d1683e, 0x0077ac50, 0x0015ef8a, + 0x00bc6877, 0x00de2bad, 0x0078efc3, 0x001aac19, + 0x00adacc2, 0x00cfef18, 0x00692b76, 0x000b68ac, + 0x00a2ef51, 0x00c0ac8b, 0x006668e5, 0x00042b3f, + 0x006e3e9b, 0x000c7d41, 0x00aab92f, 0x00c8faf5, + 0x00617d08, 0x00033ed2, 0x00a5fabc, 0x00c7b966, + 0x0070b9bd, 0x0012fa67, 0x00b43e09, 0x00d67dd3, + 0x007ffa2e, 0x001db9f4, 0x00bb7d9a, 0x00d93e40, + 0x005330d7, 0x0031730d, 0x0097b763, 0x00f5f4b9, + 0x005c7344, 0x003e309e, 0x0098f4f0, 0x00fab72a, + 0x004db7f1, 0x002ff42b, 0x00893045, 0x00eb739f, + 0x0042f462, 0x0020b7b8, 0x008673d6, 0x00e4300c, + 0x00142203, 0x007661d9, 0x00d0a5b7, 0x00b2e66d, + 0x001b6190, 0x0079224a, 0x00dfe624, 0x00bda5fe, + 0x000aa525, 0x0068e6ff, 0x00ce2291, 0x00ac614b, + 0x0005e6b6, 0x0067a56c, 0x00c16102, 0x00a322d8, + 0x00292c4f, 0x004b6f95, 0x00edabfb, 0x008fe821, + 0x00266fdc, 0x00442c06, 0x00e2e868, 0x0080abb2, + 0x0037ab69, 0x0055e8b3, 0x00f32cdd, 0x00916f07, + 0x0038e8fa, 0x005aab20, 0x00fc6f4e, 0x009e2c94, + 0x009a07ab, 0x00f84471, 0x005e801f, 0x003cc3c5, + 0x00954438, 0x00f707e2, 0x0051c38c, 0x00338056, + 0x0084808d, 0x00e6c357, 0x00400739, 0x002244e3, + 0x008bc31e, 0x00e980c4, 0x004f44aa, 0x002d0770, + 0x00a709e7, 0x00c54a3d, 0x00638e53, 0x0001cd89, + 0x00a84a74, 0x00ca09ae, 0x006ccdc0, 0x000e8e1a, + 0x00b98ec1, 0x00dbcd1b, 0x007d0975, 0x001f4aaf, + 0x00b6cd52, 0x00d48e88, 0x00724ae6, 0x0010093c, + 0x00e01b33, 0x008258e9, 0x00249c87, 0x0046df5d, + 0x00ef58a0, 0x008d1b7a, 0x002bdf14, 0x00499cce, + 0x00fe9c15, 0x009cdfcf, 0x003a1ba1, 0x0058587b, + 0x00f1df86, 0x00939c5c, 0x00355832, 0x00571be8, + 0x00dd157f, 0x00bf56a5, 0x001992cb, 0x007bd111, + 0x00d256ec, 0x00b01536, 0x0016d158, 0x00749282, + 0x00c39259, 0x00a1d183, 0x000715ed, 0x00655637, + 0x00ccd1ca, 0x00ae9210, 0x0008567e, 0x006a15a4, + }, + { + 0x00000000, 0x00dc7d36, 0x003eb697, 0x00e2cba1, + 0x007d6d2e, 0x00a11018, 0x0043dbb9, 0x009fa68f, + 0x00fada5c, 0x0026a76a, 0x00c46ccb, 0x001811fd, + 0x0087b772, 0x005bca44, 0x00b901e5, 0x00657cd3, + 0x0073f843, 0x00af8575, 0x004d4ed4, 0x009133e2, + 0x000e956d, 0x00d2e85b, 0x003023fa, 0x00ec5ecc, + 0x0089221f, 0x00555f29, 0x00b79488, 0x006be9be, + 0x00f44f31, 0x00283207, 0x00caf9a6, 0x00168490, + 0x00e7f086, 0x003b8db0, 0x00d94611, 0x00053b27, + 0x009a9da8, 0x0046e09e, 0x00a42b3f, 0x00785609, + 0x001d2ada, 0x00c157ec, 0x00239c4d, 0x00ffe17b, + 0x006047f4, 0x00bc3ac2, 0x005ef163, 0x00828c55, + 0x009408c5, 0x004875f3, 0x00aabe52, 0x0076c364, + 0x00e965eb, 0x003518dd, 0x00d7d37c, 0x000bae4a, + 0x006ed299, 0x00b2afaf, 0x0050640e, 0x008c1938, + 0x0013bfb7, 0x00cfc281, 0x002d0920, 0x00f17416, + 0x0049adf7, 0x0095d0c1, 0x00771b60, 0x00ab6656, + 0x0034c0d9, 0x00e8bdef, 0x000a764e, 0x00d60b78, + 0x00b377ab, 0x006f0a9d, 0x008dc13c, 0x0051bc0a, + 0x00ce1a85, 0x001267b3, 0x00f0ac12, 0x002cd124, + 0x003a55b4, 0x00e62882, 0x0004e323, 0x00d89e15, + 0x0047389a, 0x009b45ac, 0x00798e0d, 0x00a5f33b, + 0x00c08fe8, 0x001cf2de, 0x00fe397f, 0x00224449, + 0x00bde2c6, 0x00619ff0, 0x00835451, 0x005f2967, + 0x00ae5d71, 0x00722047, 0x0090ebe6, 0x004c96d0, + 0x00d3305f, 0x000f4d69, 0x00ed86c8, 0x0031fbfe, + 0x0054872d, 0x0088fa1b, 0x006a31ba, 0x00b64c8c, + 0x0029ea03, 0x00f59735, 0x00175c94, 0x00cb21a2, + 0x00dda532, 0x0001d804, 0x00e313a5, 0x003f6e93, + 0x00a0c81c, 0x007cb52a, 0x009e7e8b, 0x004203bd, + 0x00277f6e, 0x00fb0258, 0x0019c9f9, 0x00c5b4cf, + 0x005a1240, 0x00866f76, 0x0064a4d7, 0x00b8d9e1, + 0x00935bee, 0x004f26d8, 0x00aded79, 0x0071904f, + 0x00ee36c0, 0x00324bf6, 0x00d08057, 0x000cfd61, + 0x006981b2, 0x00b5fc84, 0x00573725, 0x008b4a13, + 0x0014ec9c, 0x00c891aa, 0x002a5a0b, 0x00f6273d, + 0x00e0a3ad, 0x003cde9b, 0x00de153a, 0x0002680c, + 0x009dce83, 0x0041b3b5, 0x00a37814, 0x007f0522, + 0x001a79f1, 0x00c604c7, 0x0024cf66, 0x00f8b250, + 0x006714df, 0x00bb69e9, 0x0059a248, 0x0085df7e, + 0x0074ab68, 0x00a8d65e, 0x004a1dff, 0x009660c9, + 0x0009c646, 0x00d5bb70, 0x003770d1, 0x00eb0de7, + 0x008e7134, 0x00520c02, 0x00b0c7a3, 0x006cba95, + 0x00f31c1a, 0x002f612c, 0x00cdaa8d, 0x0011d7bb, + 0x0007532b, 0x00db2e1d, 0x0039e5bc, 0x00e5988a, + 0x007a3e05, 0x00a64333, 0x00448892, 0x0098f5a4, + 0x00fd8977, 0x0021f441, 0x00c33fe0, 0x001f42d6, + 0x0080e459, 0x005c996f, 0x00be52ce, 0x00622ff8, + 0x00daf619, 0x00068b2f, 0x00e4408e, 0x00383db8, + 0x00a79b37, 0x007be601, 0x00992da0, 0x00455096, + 0x00202c45, 0x00fc5173, 0x001e9ad2, 0x00c2e7e4, + 0x005d416b, 0x00813c5d, 0x0063f7fc, 0x00bf8aca, + 0x00a90e5a, 0x0075736c, 0x0097b8cd, 0x004bc5fb, + 0x00d46374, 0x00081e42, 0x00ead5e3, 0x0036a8d5, + 0x0053d406, 0x008fa930, 0x006d6291, 0x00b11fa7, + 0x002eb928, 0x00f2c41e, 0x00100fbf, 0x00cc7289, + 0x003d069f, 0x00e17ba9, 0x0003b008, 0x00dfcd3e, + 0x00406bb1, 0x009c1687, 0x007edd26, 0x00a2a010, + 0x00c7dcc3, 0x001ba1f5, 0x00f96a54, 0x00251762, + 0x00bab1ed, 0x0066ccdb, 0x0084077a, 0x00587a4c, + 0x004efedc, 0x009283ea, 0x0070484b, 0x00ac357d, + 0x003393f2, 0x00efeec4, 0x000d2565, 0x00d15853, + 0x00b42480, 0x006859b6, 0x008a9217, 0x0056ef21, + 0x00c949ae, 0x00153498, 0x00f7ff39, 0x002b820f, + }, + { + 0x00000000, 0x00a0fb27, 0x00c7bab5, 0x00674192, + 0x00093991, 0x00a9c2b6, 0x00ce8324, 0x006e7803, + 0x00127322, 0x00b28805, 0x00d5c997, 0x007532b0, + 0x001b4ab3, 0x00bbb194, 0x00dcf006, 0x007c0b21, + 0x0024e644, 0x00841d63, 0x00e35cf1, 0x0043a7d6, + 0x002ddfd5, 0x008d24f2, 0x00ea6560, 0x004a9e47, + 0x00369566, 0x00966e41, 0x00f12fd3, 0x0051d4f4, + 0x003facf7, 0x009f57d0, 0x00f81642, 0x0058ed65, + 0x0049cc88, 0x00e937af, 0x008e763d, 0x002e8d1a, + 0x0040f519, 0x00e00e3e, 0x00874fac, 0x0027b48b, + 0x005bbfaa, 0x00fb448d, 0x009c051f, 0x003cfe38, + 0x0052863b, 0x00f27d1c, 0x00953c8e, 0x0035c7a9, + 0x006d2acc, 0x00cdd1eb, 0x00aa9079, 0x000a6b5e, + 0x0064135d, 0x00c4e87a, 0x00a3a9e8, 0x000352cf, + 0x007f59ee, 0x00dfa2c9, 0x00b8e35b, 0x0018187c, + 0x0076607f, 0x00d69b58, 0x00b1daca, 0x001121ed, + 0x00939910, 0x00336237, 0x005423a5, 0x00f4d882, + 0x009aa081, 0x003a5ba6, 0x005d1a34, 0x00fde113, + 0x0081ea32, 0x00211115, 0x00465087, 0x00e6aba0, + 0x0088d3a3, 0x00282884, 0x004f6916, 0x00ef9231, + 0x00b77f54, 0x00178473, 0x0070c5e1, 0x00d03ec6, + 0x00be46c5, 0x001ebde2, 0x0079fc70, 0x00d90757, + 0x00a50c76, 0x0005f751, 0x0062b6c3, 0x00c24de4, + 0x00ac35e7, 0x000ccec0, 0x006b8f52, 0x00cb7475, + 0x00da5598, 0x007aaebf, 0x001def2d, 0x00bd140a, + 0x00d36c09, 0x0073972e, 0x0014d6bc, 0x00b42d9b, + 0x00c826ba, 0x0068dd9d, 0x000f9c0f, 0x00af6728, + 0x00c11f2b, 0x0061e40c, 0x0006a59e, 0x00a65eb9, + 0x00feb3dc, 0x005e48fb, 0x00390969, 0x0099f24e, + 0x00f78a4d, 0x0057716a, 0x003030f8, 0x0090cbdf, + 0x00ecc0fe, 0x004c3bd9, 0x002b7a4b, 0x008b816c, + 0x00e5f96f, 0x00450248, 0x002243da, 0x0082b8fd, + 0x00a17edb, 0x000185fc, 0x0066c46e, 0x00c63f49, + 0x00a8474a, 0x0008bc6d, 0x006ffdff, 0x00cf06d8, + 0x00b30df9, 0x0013f6de, 0x0074b74c, 0x00d44c6b, + 0x00ba3468, 0x001acf4f, 0x007d8edd, 0x00dd75fa, + 0x0085989f, 0x002563b8, 0x0042222a, 0x00e2d90d, + 0x008ca10e, 0x002c5a29, 0x004b1bbb, 0x00ebe09c, + 0x0097ebbd, 0x0037109a, 0x00505108, 0x00f0aa2f, + 0x009ed22c, 0x003e290b, 0x00596899, 0x00f993be, + 0x00e8b253, 0x00484974, 0x002f08e6, 0x008ff3c1, + 0x00e18bc2, 0x004170e5, 0x00263177, 0x0086ca50, + 0x00fac171, 0x005a3a56, 0x003d7bc4, 0x009d80e3, + 0x00f3f8e0, 0x005303c7, 0x00344255, 0x0094b972, + 0x00cc5417, 0x006caf30, 0x000beea2, 0x00ab1585, + 0x00c56d86, 0x006596a1, 0x0002d733, 0x00a22c14, + 0x00de2735, 0x007edc12, 0x00199d80, 0x00b966a7, + 0x00d71ea4, 0x0077e583, 0x0010a411, 0x00b05f36, + 0x0032e7cb, 0x00921cec, 0x00f55d7e, 0x0055a659, + 0x003bde5a, 0x009b257d, 0x00fc64ef, 0x005c9fc8, + 0x002094e9, 0x00806fce, 0x00e72e5c, 0x0047d57b, + 0x0029ad78, 0x0089565f, 0x00ee17cd, 0x004eecea, + 0x0016018f, 0x00b6faa8, 0x00d1bb3a, 0x0071401d, + 0x001f381e, 0x00bfc339, 0x00d882ab, 0x0078798c, + 0x000472ad, 0x00a4898a, 0x00c3c818, 0x0063333f, + 0x000d4b3c, 0x00adb01b, 0x00caf189, 0x006a0aae, + 0x007b2b43, 0x00dbd064, 0x00bc91f6, 0x001c6ad1, + 0x007212d2, 0x00d2e9f5, 0x00b5a867, 0x00155340, + 0x00695861, 0x00c9a346, 0x00aee2d4, 0x000e19f3, + 0x006061f0, 0x00c09ad7, 0x00a7db45, 0x00072062, + 0x005fcd07, 0x00ff3620, 0x009877b2, 0x00388c95, + 0x0056f496, 0x00f60fb1, 0x00914e23, 0x0031b504, + 0x004dbe25, 0x00ed4502, 0x008a0490, 0x002affb7, + 0x004487b4, 0x00e47c93, 0x00833d01, 0x0023c626, + }, +}; diff --git a/ext/digest/crc32/crc32.c b/ext/digest/crc32/crc32.c index be9a49d..3fb4a6f 100644 --- a/ext/digest/crc32/crc32.c +++ b/ext/digest/crc32/crc32.c @@ -14,54 +14,39 @@ * - Algorithm = table-driven */ #include "crc32.h" - -/** - * Static table used for the table_driven implementation. - */ -static const crc32_t crc32_table[256] = { - 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, - 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, - 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, - 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, - 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, - 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, - 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, - 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, - 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, - 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, - 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, - 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, - 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, - 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, - 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, - 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, - 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, - 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, - 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, - 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, - 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, - 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, - 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, - 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, - 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, - 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, - 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, - 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, - 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, - 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, - 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, - 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d -}; +#include "crc32_table.h" crc32_t crc32_update(crc32_t crc, const void *data, size_t data_len) { const unsigned char *d = (const unsigned char *)data; unsigned int tbl_idx; + for (; data_len >= SLICE_SIZE; data_len -= SLICE_SIZE) + { + crc = crc32_table[15][d[ 0] ^ ((crc >> 0) & 0xff)] ^ + crc32_table[14][d[ 1] ^ ((crc >> 8) & 0xff)] ^ + crc32_table[13][d[ 2] ^ ((crc >> 16) & 0xff)] ^ + crc32_table[12][d[ 3] ^ ((crc >> 24) & 0xff)] ^ + crc32_table[11][d[ 4] ] ^ + crc32_table[10][d[ 5] ] ^ + crc32_table[ 9][d[ 6] ] ^ + crc32_table[ 8][d[ 7] ] ^ + crc32_table[ 7][d[ 8] ] ^ + crc32_table[ 6][d[ 9] ] ^ + crc32_table[ 5][d[10] ] ^ + crc32_table[ 4][d[11] ] ^ + crc32_table[ 3][d[12] ] ^ + crc32_table[ 2][d[13] ] ^ + crc32_table[ 1][d[14] ] ^ + crc32_table[ 0][d[15] ]; + crc &= 0xffffffff; + d += SLICE_SIZE; + } + while (data_len--) { tbl_idx = (crc ^ *d) & 0xff; - crc = (crc32_table[tbl_idx] ^ (crc >> 8)) & 0xffffffff; + crc = (crc32_table[0][tbl_idx] ^ (crc >> 8)) & 0xffffffff; d++; } diff --git a/ext/digest/crc32/crc32_table.h b/ext/digest/crc32/crc32_table.h new file mode 100644 index 0000000..f6150ad --- /dev/null +++ b/ext/digest/crc32/crc32_table.h @@ -0,0 +1,1070 @@ +/* + * bitwidth: 32 + * generator polynomial: 0x04c11db7 + * input bit direction: REFLECT + * slice bytes per iteration: 16 + * slide bits per table: 8 + * + * Generated by: gentable.rb of digest-crc + */ + +#define SLICE_SIZE 16 + +static const uint32_t crc32_table[SLICE_SIZE][256] = { + { + 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, + 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, + 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, + 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, + 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, + 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, + 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, + 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, + 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, + 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, + 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, + 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, + 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, + 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, + 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, + 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, + 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, + 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, + 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, + 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, + 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, + 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, + 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, + 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, + 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, + 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, + 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, + 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, + 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, + 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, + 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, + 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, + 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, + 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, + 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, + 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, + 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, + 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, + 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, + 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, + 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, + 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, + 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, + 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, + 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, + 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, + 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, + 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, + 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, + 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, + 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, + 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, + 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, + 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, + 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, + 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, + 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, + 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, + 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, + 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, + 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, + 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, + 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, + 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d, + }, + { + 0x00000000, 0x191b3141, 0x32366282, 0x2b2d53c3, + 0x646cc504, 0x7d77f445, 0x565aa786, 0x4f4196c7, + 0xc8d98a08, 0xd1c2bb49, 0xfaefe88a, 0xe3f4d9cb, + 0xacb54f0c, 0xb5ae7e4d, 0x9e832d8e, 0x87981ccf, + 0x4ac21251, 0x53d92310, 0x78f470d3, 0x61ef4192, + 0x2eaed755, 0x37b5e614, 0x1c98b5d7, 0x05838496, + 0x821b9859, 0x9b00a918, 0xb02dfadb, 0xa936cb9a, + 0xe6775d5d, 0xff6c6c1c, 0xd4413fdf, 0xcd5a0e9e, + 0x958424a2, 0x8c9f15e3, 0xa7b24620, 0xbea97761, + 0xf1e8e1a6, 0xe8f3d0e7, 0xc3de8324, 0xdac5b265, + 0x5d5daeaa, 0x44469feb, 0x6f6bcc28, 0x7670fd69, + 0x39316bae, 0x202a5aef, 0x0b07092c, 0x121c386d, + 0xdf4636f3, 0xc65d07b2, 0xed705471, 0xf46b6530, + 0xbb2af3f7, 0xa231c2b6, 0x891c9175, 0x9007a034, + 0x179fbcfb, 0x0e848dba, 0x25a9de79, 0x3cb2ef38, + 0x73f379ff, 0x6ae848be, 0x41c51b7d, 0x58de2a3c, + 0xf0794f05, 0xe9627e44, 0xc24f2d87, 0xdb541cc6, + 0x94158a01, 0x8d0ebb40, 0xa623e883, 0xbf38d9c2, + 0x38a0c50d, 0x21bbf44c, 0x0a96a78f, 0x138d96ce, + 0x5ccc0009, 0x45d73148, 0x6efa628b, 0x77e153ca, + 0xbabb5d54, 0xa3a06c15, 0x888d3fd6, 0x91960e97, + 0xded79850, 0xc7cca911, 0xece1fad2, 0xf5facb93, + 0x7262d75c, 0x6b79e61d, 0x4054b5de, 0x594f849f, + 0x160e1258, 0x0f152319, 0x243870da, 0x3d23419b, + 0x65fd6ba7, 0x7ce65ae6, 0x57cb0925, 0x4ed03864, + 0x0191aea3, 0x188a9fe2, 0x33a7cc21, 0x2abcfd60, + 0xad24e1af, 0xb43fd0ee, 0x9f12832d, 0x8609b26c, + 0xc94824ab, 0xd05315ea, 0xfb7e4629, 0xe2657768, + 0x2f3f79f6, 0x362448b7, 0x1d091b74, 0x04122a35, + 0x4b53bcf2, 0x52488db3, 0x7965de70, 0x607eef31, + 0xe7e6f3fe, 0xfefdc2bf, 0xd5d0917c, 0xcccba03d, + 0x838a36fa, 0x9a9107bb, 0xb1bc5478, 0xa8a76539, + 0x3b83984b, 0x2298a90a, 0x09b5fac9, 0x10aecb88, + 0x5fef5d4f, 0x46f46c0e, 0x6dd93fcd, 0x74c20e8c, + 0xf35a1243, 0xea412302, 0xc16c70c1, 0xd8774180, + 0x9736d747, 0x8e2de606, 0xa500b5c5, 0xbc1b8484, + 0x71418a1a, 0x685abb5b, 0x4377e898, 0x5a6cd9d9, + 0x152d4f1e, 0x0c367e5f, 0x271b2d9c, 0x3e001cdd, + 0xb9980012, 0xa0833153, 0x8bae6290, 0x92b553d1, + 0xddf4c516, 0xc4eff457, 0xefc2a794, 0xf6d996d5, + 0xae07bce9, 0xb71c8da8, 0x9c31de6b, 0x852aef2a, + 0xca6b79ed, 0xd37048ac, 0xf85d1b6f, 0xe1462a2e, + 0x66de36e1, 0x7fc507a0, 0x54e85463, 0x4df36522, + 0x02b2f3e5, 0x1ba9c2a4, 0x30849167, 0x299fa026, + 0xe4c5aeb8, 0xfdde9ff9, 0xd6f3cc3a, 0xcfe8fd7b, + 0x80a96bbc, 0x99b25afd, 0xb29f093e, 0xab84387f, + 0x2c1c24b0, 0x350715f1, 0x1e2a4632, 0x07317773, + 0x4870e1b4, 0x516bd0f5, 0x7a468336, 0x635db277, + 0xcbfad74e, 0xd2e1e60f, 0xf9ccb5cc, 0xe0d7848d, + 0xaf96124a, 0xb68d230b, 0x9da070c8, 0x84bb4189, + 0x03235d46, 0x1a386c07, 0x31153fc4, 0x280e0e85, + 0x674f9842, 0x7e54a903, 0x5579fac0, 0x4c62cb81, + 0x8138c51f, 0x9823f45e, 0xb30ea79d, 0xaa1596dc, + 0xe554001b, 0xfc4f315a, 0xd7626299, 0xce7953d8, + 0x49e14f17, 0x50fa7e56, 0x7bd72d95, 0x62cc1cd4, + 0x2d8d8a13, 0x3496bb52, 0x1fbbe891, 0x06a0d9d0, + 0x5e7ef3ec, 0x4765c2ad, 0x6c48916e, 0x7553a02f, + 0x3a1236e8, 0x230907a9, 0x0824546a, 0x113f652b, + 0x96a779e4, 0x8fbc48a5, 0xa4911b66, 0xbd8a2a27, + 0xf2cbbce0, 0xebd08da1, 0xc0fdde62, 0xd9e6ef23, + 0x14bce1bd, 0x0da7d0fc, 0x268a833f, 0x3f91b27e, + 0x70d024b9, 0x69cb15f8, 0x42e6463b, 0x5bfd777a, + 0xdc656bb5, 0xc57e5af4, 0xee530937, 0xf7483876, + 0xb809aeb1, 0xa1129ff0, 0x8a3fcc33, 0x9324fd72, + }, + { + 0x00000000, 0x01c26a37, 0x0384d46e, 0x0246be59, + 0x0709a8dc, 0x06cbc2eb, 0x048d7cb2, 0x054f1685, + 0x0e1351b8, 0x0fd13b8f, 0x0d9785d6, 0x0c55efe1, + 0x091af964, 0x08d89353, 0x0a9e2d0a, 0x0b5c473d, + 0x1c26a370, 0x1de4c947, 0x1fa2771e, 0x1e601d29, + 0x1b2f0bac, 0x1aed619b, 0x18abdfc2, 0x1969b5f5, + 0x1235f2c8, 0x13f798ff, 0x11b126a6, 0x10734c91, + 0x153c5a14, 0x14fe3023, 0x16b88e7a, 0x177ae44d, + 0x384d46e0, 0x398f2cd7, 0x3bc9928e, 0x3a0bf8b9, + 0x3f44ee3c, 0x3e86840b, 0x3cc03a52, 0x3d025065, + 0x365e1758, 0x379c7d6f, 0x35dac336, 0x3418a901, + 0x3157bf84, 0x3095d5b3, 0x32d36bea, 0x331101dd, + 0x246be590, 0x25a98fa7, 0x27ef31fe, 0x262d5bc9, + 0x23624d4c, 0x22a0277b, 0x20e69922, 0x2124f315, + 0x2a78b428, 0x2bbade1f, 0x29fc6046, 0x283e0a71, + 0x2d711cf4, 0x2cb376c3, 0x2ef5c89a, 0x2f37a2ad, + 0x709a8dc0, 0x7158e7f7, 0x731e59ae, 0x72dc3399, + 0x7793251c, 0x76514f2b, 0x7417f172, 0x75d59b45, + 0x7e89dc78, 0x7f4bb64f, 0x7d0d0816, 0x7ccf6221, + 0x798074a4, 0x78421e93, 0x7a04a0ca, 0x7bc6cafd, + 0x6cbc2eb0, 0x6d7e4487, 0x6f38fade, 0x6efa90e9, + 0x6bb5866c, 0x6a77ec5b, 0x68315202, 0x69f33835, + 0x62af7f08, 0x636d153f, 0x612bab66, 0x60e9c151, + 0x65a6d7d4, 0x6464bde3, 0x662203ba, 0x67e0698d, + 0x48d7cb20, 0x4915a117, 0x4b531f4e, 0x4a917579, + 0x4fde63fc, 0x4e1c09cb, 0x4c5ab792, 0x4d98dda5, + 0x46c49a98, 0x4706f0af, 0x45404ef6, 0x448224c1, + 0x41cd3244, 0x400f5873, 0x4249e62a, 0x438b8c1d, + 0x54f16850, 0x55330267, 0x5775bc3e, 0x56b7d609, + 0x53f8c08c, 0x523aaabb, 0x507c14e2, 0x51be7ed5, + 0x5ae239e8, 0x5b2053df, 0x5966ed86, 0x58a487b1, + 0x5deb9134, 0x5c29fb03, 0x5e6f455a, 0x5fad2f6d, + 0xe1351b80, 0xe0f771b7, 0xe2b1cfee, 0xe373a5d9, + 0xe63cb35c, 0xe7fed96b, 0xe5b86732, 0xe47a0d05, + 0xef264a38, 0xeee4200f, 0xeca29e56, 0xed60f461, + 0xe82fe2e4, 0xe9ed88d3, 0xebab368a, 0xea695cbd, + 0xfd13b8f0, 0xfcd1d2c7, 0xfe976c9e, 0xff5506a9, + 0xfa1a102c, 0xfbd87a1b, 0xf99ec442, 0xf85cae75, + 0xf300e948, 0xf2c2837f, 0xf0843d26, 0xf1465711, + 0xf4094194, 0xf5cb2ba3, 0xf78d95fa, 0xf64fffcd, + 0xd9785d60, 0xd8ba3757, 0xdafc890e, 0xdb3ee339, + 0xde71f5bc, 0xdfb39f8b, 0xddf521d2, 0xdc374be5, + 0xd76b0cd8, 0xd6a966ef, 0xd4efd8b6, 0xd52db281, + 0xd062a404, 0xd1a0ce33, 0xd3e6706a, 0xd2241a5d, + 0xc55efe10, 0xc49c9427, 0xc6da2a7e, 0xc7184049, + 0xc25756cc, 0xc3953cfb, 0xc1d382a2, 0xc011e895, + 0xcb4dafa8, 0xca8fc59f, 0xc8c97bc6, 0xc90b11f1, + 0xcc440774, 0xcd866d43, 0xcfc0d31a, 0xce02b92d, + 0x91af9640, 0x906dfc77, 0x922b422e, 0x93e92819, + 0x96a63e9c, 0x976454ab, 0x9522eaf2, 0x94e080c5, + 0x9fbcc7f8, 0x9e7eadcf, 0x9c381396, 0x9dfa79a1, + 0x98b56f24, 0x99770513, 0x9b31bb4a, 0x9af3d17d, + 0x8d893530, 0x8c4b5f07, 0x8e0de15e, 0x8fcf8b69, + 0x8a809dec, 0x8b42f7db, 0x89044982, 0x88c623b5, + 0x839a6488, 0x82580ebf, 0x801eb0e6, 0x81dcdad1, + 0x8493cc54, 0x8551a663, 0x8717183a, 0x86d5720d, + 0xa9e2d0a0, 0xa820ba97, 0xaa6604ce, 0xaba46ef9, + 0xaeeb787c, 0xaf29124b, 0xad6fac12, 0xacadc625, + 0xa7f18118, 0xa633eb2f, 0xa4755576, 0xa5b73f41, + 0xa0f829c4, 0xa13a43f3, 0xa37cfdaa, 0xa2be979d, + 0xb5c473d0, 0xb40619e7, 0xb640a7be, 0xb782cd89, + 0xb2cddb0c, 0xb30fb13b, 0xb1490f62, 0xb08b6555, + 0xbbd72268, 0xba15485f, 0xb853f606, 0xb9919c31, + 0xbcde8ab4, 0xbd1ce083, 0xbf5a5eda, 0xbe9834ed, + }, + { + 0x00000000, 0xb8bc6765, 0xaa09c88b, 0x12b5afee, + 0x8f629757, 0x37def032, 0x256b5fdc, 0x9dd738b9, + 0xc5b428ef, 0x7d084f8a, 0x6fbde064, 0xd7018701, + 0x4ad6bfb8, 0xf26ad8dd, 0xe0df7733, 0x58631056, + 0x5019579f, 0xe8a530fa, 0xfa109f14, 0x42acf871, + 0xdf7bc0c8, 0x67c7a7ad, 0x75720843, 0xcdce6f26, + 0x95ad7f70, 0x2d111815, 0x3fa4b7fb, 0x8718d09e, + 0x1acfe827, 0xa2738f42, 0xb0c620ac, 0x087a47c9, + 0xa032af3e, 0x188ec85b, 0x0a3b67b5, 0xb28700d0, + 0x2f503869, 0x97ec5f0c, 0x8559f0e2, 0x3de59787, + 0x658687d1, 0xdd3ae0b4, 0xcf8f4f5a, 0x7733283f, + 0xeae41086, 0x525877e3, 0x40edd80d, 0xf851bf68, + 0xf02bf8a1, 0x48979fc4, 0x5a22302a, 0xe29e574f, + 0x7f496ff6, 0xc7f50893, 0xd540a77d, 0x6dfcc018, + 0x359fd04e, 0x8d23b72b, 0x9f9618c5, 0x272a7fa0, + 0xbafd4719, 0x0241207c, 0x10f48f92, 0xa848e8f7, + 0x9b14583d, 0x23a83f58, 0x311d90b6, 0x89a1f7d3, + 0x1476cf6a, 0xaccaa80f, 0xbe7f07e1, 0x06c36084, + 0x5ea070d2, 0xe61c17b7, 0xf4a9b859, 0x4c15df3c, + 0xd1c2e785, 0x697e80e0, 0x7bcb2f0e, 0xc377486b, + 0xcb0d0fa2, 0x73b168c7, 0x6104c729, 0xd9b8a04c, + 0x446f98f5, 0xfcd3ff90, 0xee66507e, 0x56da371b, + 0x0eb9274d, 0xb6054028, 0xa4b0efc6, 0x1c0c88a3, + 0x81dbb01a, 0x3967d77f, 0x2bd27891, 0x936e1ff4, + 0x3b26f703, 0x839a9066, 0x912f3f88, 0x299358ed, + 0xb4446054, 0x0cf80731, 0x1e4da8df, 0xa6f1cfba, + 0xfe92dfec, 0x462eb889, 0x549b1767, 0xec277002, + 0x71f048bb, 0xc94c2fde, 0xdbf98030, 0x6345e755, + 0x6b3fa09c, 0xd383c7f9, 0xc1366817, 0x798a0f72, + 0xe45d37cb, 0x5ce150ae, 0x4e54ff40, 0xf6e89825, + 0xae8b8873, 0x1637ef16, 0x048240f8, 0xbc3e279d, + 0x21e91f24, 0x99557841, 0x8be0d7af, 0x335cb0ca, + 0xed59b63b, 0x55e5d15e, 0x47507eb0, 0xffec19d5, + 0x623b216c, 0xda874609, 0xc832e9e7, 0x708e8e82, + 0x28ed9ed4, 0x9051f9b1, 0x82e4565f, 0x3a58313a, + 0xa78f0983, 0x1f336ee6, 0x0d86c108, 0xb53aa66d, + 0xbd40e1a4, 0x05fc86c1, 0x1749292f, 0xaff54e4a, + 0x322276f3, 0x8a9e1196, 0x982bbe78, 0x2097d91d, + 0x78f4c94b, 0xc048ae2e, 0xd2fd01c0, 0x6a4166a5, + 0xf7965e1c, 0x4f2a3979, 0x5d9f9697, 0xe523f1f2, + 0x4d6b1905, 0xf5d77e60, 0xe762d18e, 0x5fdeb6eb, + 0xc2098e52, 0x7ab5e937, 0x680046d9, 0xd0bc21bc, + 0x88df31ea, 0x3063568f, 0x22d6f961, 0x9a6a9e04, + 0x07bda6bd, 0xbf01c1d8, 0xadb46e36, 0x15080953, + 0x1d724e9a, 0xa5ce29ff, 0xb77b8611, 0x0fc7e174, + 0x9210d9cd, 0x2aacbea8, 0x38191146, 0x80a57623, + 0xd8c66675, 0x607a0110, 0x72cfaefe, 0xca73c99b, + 0x57a4f122, 0xef189647, 0xfdad39a9, 0x45115ecc, + 0x764dee06, 0xcef18963, 0xdc44268d, 0x64f841e8, + 0xf92f7951, 0x41931e34, 0x5326b1da, 0xeb9ad6bf, + 0xb3f9c6e9, 0x0b45a18c, 0x19f00e62, 0xa14c6907, + 0x3c9b51be, 0x842736db, 0x96929935, 0x2e2efe50, + 0x2654b999, 0x9ee8defc, 0x8c5d7112, 0x34e11677, + 0xa9362ece, 0x118a49ab, 0x033fe645, 0xbb838120, + 0xe3e09176, 0x5b5cf613, 0x49e959fd, 0xf1553e98, + 0x6c820621, 0xd43e6144, 0xc68bceaa, 0x7e37a9cf, + 0xd67f4138, 0x6ec3265d, 0x7c7689b3, 0xc4caeed6, + 0x591dd66f, 0xe1a1b10a, 0xf3141ee4, 0x4ba87981, + 0x13cb69d7, 0xab770eb2, 0xb9c2a15c, 0x017ec639, + 0x9ca9fe80, 0x241599e5, 0x36a0360b, 0x8e1c516e, + 0x866616a7, 0x3eda71c2, 0x2c6fde2c, 0x94d3b949, + 0x090481f0, 0xb1b8e695, 0xa30d497b, 0x1bb12e1e, + 0x43d23e48, 0xfb6e592d, 0xe9dbf6c3, 0x516791a6, + 0xccb0a91f, 0x740cce7a, 0x66b96194, 0xde0506f1, + }, + { + 0x00000000, 0x3d6029b0, 0x7ac05360, 0x47a07ad0, + 0xf580a6c0, 0xc8e08f70, 0x8f40f5a0, 0xb220dc10, + 0x30704bc1, 0x0d106271, 0x4ab018a1, 0x77d03111, + 0xc5f0ed01, 0xf890c4b1, 0xbf30be61, 0x825097d1, + 0x60e09782, 0x5d80be32, 0x1a20c4e2, 0x2740ed52, + 0x95603142, 0xa80018f2, 0xefa06222, 0xd2c04b92, + 0x5090dc43, 0x6df0f5f3, 0x2a508f23, 0x1730a693, + 0xa5107a83, 0x98705333, 0xdfd029e3, 0xe2b00053, + 0xc1c12f04, 0xfca106b4, 0xbb017c64, 0x866155d4, + 0x344189c4, 0x0921a074, 0x4e81daa4, 0x73e1f314, + 0xf1b164c5, 0xccd14d75, 0x8b7137a5, 0xb6111e15, + 0x0431c205, 0x3951ebb5, 0x7ef19165, 0x4391b8d5, + 0xa121b886, 0x9c419136, 0xdbe1ebe6, 0xe681c256, + 0x54a11e46, 0x69c137f6, 0x2e614d26, 0x13016496, + 0x9151f347, 0xac31daf7, 0xeb91a027, 0xd6f18997, + 0x64d15587, 0x59b17c37, 0x1e1106e7, 0x23712f57, + 0x58f35849, 0x659371f9, 0x22330b29, 0x1f532299, + 0xad73fe89, 0x9013d739, 0xd7b3ade9, 0xead38459, + 0x68831388, 0x55e33a38, 0x124340e8, 0x2f236958, + 0x9d03b548, 0xa0639cf8, 0xe7c3e628, 0xdaa3cf98, + 0x3813cfcb, 0x0573e67b, 0x42d39cab, 0x7fb3b51b, + 0xcd93690b, 0xf0f340bb, 0xb7533a6b, 0x8a3313db, + 0x0863840a, 0x3503adba, 0x72a3d76a, 0x4fc3feda, + 0xfde322ca, 0xc0830b7a, 0x872371aa, 0xba43581a, + 0x9932774d, 0xa4525efd, 0xe3f2242d, 0xde920d9d, + 0x6cb2d18d, 0x51d2f83d, 0x167282ed, 0x2b12ab5d, + 0xa9423c8c, 0x9422153c, 0xd3826fec, 0xeee2465c, + 0x5cc29a4c, 0x61a2b3fc, 0x2602c92c, 0x1b62e09c, + 0xf9d2e0cf, 0xc4b2c97f, 0x8312b3af, 0xbe729a1f, + 0x0c52460f, 0x31326fbf, 0x7692156f, 0x4bf23cdf, + 0xc9a2ab0e, 0xf4c282be, 0xb362f86e, 0x8e02d1de, + 0x3c220dce, 0x0142247e, 0x46e25eae, 0x7b82771e, + 0xb1e6b092, 0x8c869922, 0xcb26e3f2, 0xf646ca42, + 0x44661652, 0x79063fe2, 0x3ea64532, 0x03c66c82, + 0x8196fb53, 0xbcf6d2e3, 0xfb56a833, 0xc6368183, + 0x74165d93, 0x49767423, 0x0ed60ef3, 0x33b62743, + 0xd1062710, 0xec660ea0, 0xabc67470, 0x96a65dc0, + 0x248681d0, 0x19e6a860, 0x5e46d2b0, 0x6326fb00, + 0xe1766cd1, 0xdc164561, 0x9bb63fb1, 0xa6d61601, + 0x14f6ca11, 0x2996e3a1, 0x6e369971, 0x5356b0c1, + 0x70279f96, 0x4d47b626, 0x0ae7ccf6, 0x3787e546, + 0x85a73956, 0xb8c710e6, 0xff676a36, 0xc2074386, + 0x4057d457, 0x7d37fde7, 0x3a978737, 0x07f7ae87, + 0xb5d77297, 0x88b75b27, 0xcf1721f7, 0xf2770847, + 0x10c70814, 0x2da721a4, 0x6a075b74, 0x576772c4, + 0xe547aed4, 0xd8278764, 0x9f87fdb4, 0xa2e7d404, + 0x20b743d5, 0x1dd76a65, 0x5a7710b5, 0x67173905, + 0xd537e515, 0xe857cca5, 0xaff7b675, 0x92979fc5, + 0xe915e8db, 0xd475c16b, 0x93d5bbbb, 0xaeb5920b, + 0x1c954e1b, 0x21f567ab, 0x66551d7b, 0x5b3534cb, + 0xd965a31a, 0xe4058aaa, 0xa3a5f07a, 0x9ec5d9ca, + 0x2ce505da, 0x11852c6a, 0x562556ba, 0x6b457f0a, + 0x89f57f59, 0xb49556e9, 0xf3352c39, 0xce550589, + 0x7c75d999, 0x4115f029, 0x06b58af9, 0x3bd5a349, + 0xb9853498, 0x84e51d28, 0xc34567f8, 0xfe254e48, + 0x4c059258, 0x7165bbe8, 0x36c5c138, 0x0ba5e888, + 0x28d4c7df, 0x15b4ee6f, 0x521494bf, 0x6f74bd0f, + 0xdd54611f, 0xe03448af, 0xa794327f, 0x9af41bcf, + 0x18a48c1e, 0x25c4a5ae, 0x6264df7e, 0x5f04f6ce, + 0xed242ade, 0xd044036e, 0x97e479be, 0xaa84500e, + 0x4834505d, 0x755479ed, 0x32f4033d, 0x0f942a8d, + 0xbdb4f69d, 0x80d4df2d, 0xc774a5fd, 0xfa148c4d, + 0x78441b9c, 0x4524322c, 0x028448fc, 0x3fe4614c, + 0x8dc4bd5c, 0xb0a494ec, 0xf704ee3c, 0xca64c78c, + }, + { + 0x00000000, 0xcb5cd3a5, 0x4dc8a10b, 0x869472ae, + 0x9b914216, 0x50cd91b3, 0xd659e31d, 0x1d0530b8, + 0xec53826d, 0x270f51c8, 0xa19b2366, 0x6ac7f0c3, + 0x77c2c07b, 0xbc9e13de, 0x3a0a6170, 0xf156b2d5, + 0x03d6029b, 0xc88ad13e, 0x4e1ea390, 0x85427035, + 0x9847408d, 0x531b9328, 0xd58fe186, 0x1ed33223, + 0xef8580f6, 0x24d95353, 0xa24d21fd, 0x6911f258, + 0x7414c2e0, 0xbf481145, 0x39dc63eb, 0xf280b04e, + 0x07ac0536, 0xccf0d693, 0x4a64a43d, 0x81387798, + 0x9c3d4720, 0x57619485, 0xd1f5e62b, 0x1aa9358e, + 0xebff875b, 0x20a354fe, 0xa6372650, 0x6d6bf5f5, + 0x706ec54d, 0xbb3216e8, 0x3da66446, 0xf6fab7e3, + 0x047a07ad, 0xcf26d408, 0x49b2a6a6, 0x82ee7503, + 0x9feb45bb, 0x54b7961e, 0xd223e4b0, 0x197f3715, + 0xe82985c0, 0x23755665, 0xa5e124cb, 0x6ebdf76e, + 0x73b8c7d6, 0xb8e41473, 0x3e7066dd, 0xf52cb578, + 0x0f580a6c, 0xc404d9c9, 0x4290ab67, 0x89cc78c2, + 0x94c9487a, 0x5f959bdf, 0xd901e971, 0x125d3ad4, + 0xe30b8801, 0x28575ba4, 0xaec3290a, 0x659ffaaf, + 0x789aca17, 0xb3c619b2, 0x35526b1c, 0xfe0eb8b9, + 0x0c8e08f7, 0xc7d2db52, 0x4146a9fc, 0x8a1a7a59, + 0x971f4ae1, 0x5c439944, 0xdad7ebea, 0x118b384f, + 0xe0dd8a9a, 0x2b81593f, 0xad152b91, 0x6649f834, + 0x7b4cc88c, 0xb0101b29, 0x36846987, 0xfdd8ba22, + 0x08f40f5a, 0xc3a8dcff, 0x453cae51, 0x8e607df4, + 0x93654d4c, 0x58399ee9, 0xdeadec47, 0x15f13fe2, + 0xe4a78d37, 0x2ffb5e92, 0xa96f2c3c, 0x6233ff99, + 0x7f36cf21, 0xb46a1c84, 0x32fe6e2a, 0xf9a2bd8f, + 0x0b220dc1, 0xc07ede64, 0x46eaacca, 0x8db67f6f, + 0x90b34fd7, 0x5bef9c72, 0xdd7beedc, 0x16273d79, + 0xe7718fac, 0x2c2d5c09, 0xaab92ea7, 0x61e5fd02, + 0x7ce0cdba, 0xb7bc1e1f, 0x31286cb1, 0xfa74bf14, + 0x1eb014d8, 0xd5ecc77d, 0x5378b5d3, 0x98246676, + 0x852156ce, 0x4e7d856b, 0xc8e9f7c5, 0x03b52460, + 0xf2e396b5, 0x39bf4510, 0xbf2b37be, 0x7477e41b, + 0x6972d4a3, 0xa22e0706, 0x24ba75a8, 0xefe6a60d, + 0x1d661643, 0xd63ac5e6, 0x50aeb748, 0x9bf264ed, + 0x86f75455, 0x4dab87f0, 0xcb3ff55e, 0x006326fb, + 0xf135942e, 0x3a69478b, 0xbcfd3525, 0x77a1e680, + 0x6aa4d638, 0xa1f8059d, 0x276c7733, 0xec30a496, + 0x191c11ee, 0xd240c24b, 0x54d4b0e5, 0x9f886340, + 0x828d53f8, 0x49d1805d, 0xcf45f2f3, 0x04192156, + 0xf54f9383, 0x3e134026, 0xb8873288, 0x73dbe12d, + 0x6eded195, 0xa5820230, 0x2316709e, 0xe84aa33b, + 0x1aca1375, 0xd196c0d0, 0x5702b27e, 0x9c5e61db, + 0x815b5163, 0x4a0782c6, 0xcc93f068, 0x07cf23cd, + 0xf6999118, 0x3dc542bd, 0xbb513013, 0x700de3b6, + 0x6d08d30e, 0xa65400ab, 0x20c07205, 0xeb9ca1a0, + 0x11e81eb4, 0xdab4cd11, 0x5c20bfbf, 0x977c6c1a, + 0x8a795ca2, 0x41258f07, 0xc7b1fda9, 0x0ced2e0c, + 0xfdbb9cd9, 0x36e74f7c, 0xb0733dd2, 0x7b2fee77, + 0x662adecf, 0xad760d6a, 0x2be27fc4, 0xe0beac61, + 0x123e1c2f, 0xd962cf8a, 0x5ff6bd24, 0x94aa6e81, + 0x89af5e39, 0x42f38d9c, 0xc467ff32, 0x0f3b2c97, + 0xfe6d9e42, 0x35314de7, 0xb3a53f49, 0x78f9ecec, + 0x65fcdc54, 0xaea00ff1, 0x28347d5f, 0xe368aefa, + 0x16441b82, 0xdd18c827, 0x5b8cba89, 0x90d0692c, + 0x8dd55994, 0x46898a31, 0xc01df89f, 0x0b412b3a, + 0xfa1799ef, 0x314b4a4a, 0xb7df38e4, 0x7c83eb41, + 0x6186dbf9, 0xaada085c, 0x2c4e7af2, 0xe712a957, + 0x15921919, 0xdececabc, 0x585ab812, 0x93066bb7, + 0x8e035b0f, 0x455f88aa, 0xc3cbfa04, 0x089729a1, + 0xf9c19b74, 0x329d48d1, 0xb4093a7f, 0x7f55e9da, + 0x6250d962, 0xa90c0ac7, 0x2f987869, 0xe4c4abcc, + }, + { + 0x00000000, 0xa6770bb4, 0x979f1129, 0x31e81a9d, + 0xf44f2413, 0x52382fa7, 0x63d0353a, 0xc5a73e8e, + 0x33ef4e67, 0x959845d3, 0xa4705f4e, 0x020754fa, + 0xc7a06a74, 0x61d761c0, 0x503f7b5d, 0xf64870e9, + 0x67de9cce, 0xc1a9977a, 0xf0418de7, 0x56368653, + 0x9391b8dd, 0x35e6b369, 0x040ea9f4, 0xa279a240, + 0x5431d2a9, 0xf246d91d, 0xc3aec380, 0x65d9c834, + 0xa07ef6ba, 0x0609fd0e, 0x37e1e793, 0x9196ec27, + 0xcfbd399c, 0x69ca3228, 0x582228b5, 0xfe552301, + 0x3bf21d8f, 0x9d85163b, 0xac6d0ca6, 0x0a1a0712, + 0xfc5277fb, 0x5a257c4f, 0x6bcd66d2, 0xcdba6d66, + 0x081d53e8, 0xae6a585c, 0x9f8242c1, 0x39f54975, + 0xa863a552, 0x0e14aee6, 0x3ffcb47b, 0x998bbfcf, + 0x5c2c8141, 0xfa5b8af5, 0xcbb39068, 0x6dc49bdc, + 0x9b8ceb35, 0x3dfbe081, 0x0c13fa1c, 0xaa64f1a8, + 0x6fc3cf26, 0xc9b4c492, 0xf85cde0f, 0x5e2bd5bb, + 0x440b7579, 0xe27c7ecd, 0xd3946450, 0x75e36fe4, + 0xb044516a, 0x16335ade, 0x27db4043, 0x81ac4bf7, + 0x77e43b1e, 0xd19330aa, 0xe07b2a37, 0x460c2183, + 0x83ab1f0d, 0x25dc14b9, 0x14340e24, 0xb2430590, + 0x23d5e9b7, 0x85a2e203, 0xb44af89e, 0x123df32a, + 0xd79acda4, 0x71edc610, 0x4005dc8d, 0xe672d739, + 0x103aa7d0, 0xb64dac64, 0x87a5b6f9, 0x21d2bd4d, + 0xe47583c3, 0x42028877, 0x73ea92ea, 0xd59d995e, + 0x8bb64ce5, 0x2dc14751, 0x1c295dcc, 0xba5e5678, + 0x7ff968f6, 0xd98e6342, 0xe86679df, 0x4e11726b, + 0xb8590282, 0x1e2e0936, 0x2fc613ab, 0x89b1181f, + 0x4c162691, 0xea612d25, 0xdb8937b8, 0x7dfe3c0c, + 0xec68d02b, 0x4a1fdb9f, 0x7bf7c102, 0xdd80cab6, + 0x1827f438, 0xbe50ff8c, 0x8fb8e511, 0x29cfeea5, + 0xdf879e4c, 0x79f095f8, 0x48188f65, 0xee6f84d1, + 0x2bc8ba5f, 0x8dbfb1eb, 0xbc57ab76, 0x1a20a0c2, + 0x8816eaf2, 0x2e61e146, 0x1f89fbdb, 0xb9fef06f, + 0x7c59cee1, 0xda2ec555, 0xebc6dfc8, 0x4db1d47c, + 0xbbf9a495, 0x1d8eaf21, 0x2c66b5bc, 0x8a11be08, + 0x4fb68086, 0xe9c18b32, 0xd82991af, 0x7e5e9a1b, + 0xefc8763c, 0x49bf7d88, 0x78576715, 0xde206ca1, + 0x1b87522f, 0xbdf0599b, 0x8c184306, 0x2a6f48b2, + 0xdc27385b, 0x7a5033ef, 0x4bb82972, 0xedcf22c6, + 0x28681c48, 0x8e1f17fc, 0xbff70d61, 0x198006d5, + 0x47abd36e, 0xe1dcd8da, 0xd034c247, 0x7643c9f3, + 0xb3e4f77d, 0x1593fcc9, 0x247be654, 0x820cede0, + 0x74449d09, 0xd23396bd, 0xe3db8c20, 0x45ac8794, + 0x800bb91a, 0x267cb2ae, 0x1794a833, 0xb1e3a387, + 0x20754fa0, 0x86024414, 0xb7ea5e89, 0x119d553d, + 0xd43a6bb3, 0x724d6007, 0x43a57a9a, 0xe5d2712e, + 0x139a01c7, 0xb5ed0a73, 0x840510ee, 0x22721b5a, + 0xe7d525d4, 0x41a22e60, 0x704a34fd, 0xd63d3f49, + 0xcc1d9f8b, 0x6a6a943f, 0x5b828ea2, 0xfdf58516, + 0x3852bb98, 0x9e25b02c, 0xafcdaab1, 0x09baa105, + 0xfff2d1ec, 0x5985da58, 0x686dc0c5, 0xce1acb71, + 0x0bbdf5ff, 0xadcafe4b, 0x9c22e4d6, 0x3a55ef62, + 0xabc30345, 0x0db408f1, 0x3c5c126c, 0x9a2b19d8, + 0x5f8c2756, 0xf9fb2ce2, 0xc813367f, 0x6e643dcb, + 0x982c4d22, 0x3e5b4696, 0x0fb35c0b, 0xa9c457bf, + 0x6c636931, 0xca146285, 0xfbfc7818, 0x5d8b73ac, + 0x03a0a617, 0xa5d7ada3, 0x943fb73e, 0x3248bc8a, + 0xf7ef8204, 0x519889b0, 0x6070932d, 0xc6079899, + 0x304fe870, 0x9638e3c4, 0xa7d0f959, 0x01a7f2ed, + 0xc400cc63, 0x6277c7d7, 0x539fdd4a, 0xf5e8d6fe, + 0x647e3ad9, 0xc209316d, 0xf3e12bf0, 0x55962044, + 0x90311eca, 0x3646157e, 0x07ae0fe3, 0xa1d90457, + 0x579174be, 0xf1e67f0a, 0xc00e6597, 0x66796e23, + 0xa3de50ad, 0x05a95b19, 0x34414184, 0x92364a30, + }, + { + 0x00000000, 0xccaa009e, 0x4225077d, 0x8e8f07e3, + 0x844a0efa, 0x48e00e64, 0xc66f0987, 0x0ac50919, + 0xd3e51bb5, 0x1f4f1b2b, 0x91c01cc8, 0x5d6a1c56, + 0x57af154f, 0x9b0515d1, 0x158a1232, 0xd92012ac, + 0x7cbb312b, 0xb01131b5, 0x3e9e3656, 0xf23436c8, + 0xf8f13fd1, 0x345b3f4f, 0xbad438ac, 0x767e3832, + 0xaf5e2a9e, 0x63f42a00, 0xed7b2de3, 0x21d12d7d, + 0x2b142464, 0xe7be24fa, 0x69312319, 0xa59b2387, + 0xf9766256, 0x35dc62c8, 0xbb53652b, 0x77f965b5, + 0x7d3c6cac, 0xb1966c32, 0x3f196bd1, 0xf3b36b4f, + 0x2a9379e3, 0xe639797d, 0x68b67e9e, 0xa41c7e00, + 0xaed97719, 0x62737787, 0xecfc7064, 0x205670fa, + 0x85cd537d, 0x496753e3, 0xc7e85400, 0x0b42549e, + 0x01875d87, 0xcd2d5d19, 0x43a25afa, 0x8f085a64, + 0x562848c8, 0x9a824856, 0x140d4fb5, 0xd8a74f2b, + 0xd2624632, 0x1ec846ac, 0x9047414f, 0x5ced41d1, + 0x299dc2ed, 0xe537c273, 0x6bb8c590, 0xa712c50e, + 0xadd7cc17, 0x617dcc89, 0xeff2cb6a, 0x2358cbf4, + 0xfa78d958, 0x36d2d9c6, 0xb85dde25, 0x74f7debb, + 0x7e32d7a2, 0xb298d73c, 0x3c17d0df, 0xf0bdd041, + 0x5526f3c6, 0x998cf358, 0x1703f4bb, 0xdba9f425, + 0xd16cfd3c, 0x1dc6fda2, 0x9349fa41, 0x5fe3fadf, + 0x86c3e873, 0x4a69e8ed, 0xc4e6ef0e, 0x084cef90, + 0x0289e689, 0xce23e617, 0x40ace1f4, 0x8c06e16a, + 0xd0eba0bb, 0x1c41a025, 0x92cea7c6, 0x5e64a758, + 0x54a1ae41, 0x980baedf, 0x1684a93c, 0xda2ea9a2, + 0x030ebb0e, 0xcfa4bb90, 0x412bbc73, 0x8d81bced, + 0x8744b5f4, 0x4beeb56a, 0xc561b289, 0x09cbb217, + 0xac509190, 0x60fa910e, 0xee7596ed, 0x22df9673, + 0x281a9f6a, 0xe4b09ff4, 0x6a3f9817, 0xa6959889, + 0x7fb58a25, 0xb31f8abb, 0x3d908d58, 0xf13a8dc6, + 0xfbff84df, 0x37558441, 0xb9da83a2, 0x7570833c, + 0x533b85da, 0x9f918544, 0x111e82a7, 0xddb48239, + 0xd7718b20, 0x1bdb8bbe, 0x95548c5d, 0x59fe8cc3, + 0x80de9e6f, 0x4c749ef1, 0xc2fb9912, 0x0e51998c, + 0x04949095, 0xc83e900b, 0x46b197e8, 0x8a1b9776, + 0x2f80b4f1, 0xe32ab46f, 0x6da5b38c, 0xa10fb312, + 0xabcaba0b, 0x6760ba95, 0xe9efbd76, 0x2545bde8, + 0xfc65af44, 0x30cfafda, 0xbe40a839, 0x72eaa8a7, + 0x782fa1be, 0xb485a120, 0x3a0aa6c3, 0xf6a0a65d, + 0xaa4de78c, 0x66e7e712, 0xe868e0f1, 0x24c2e06f, + 0x2e07e976, 0xe2ade9e8, 0x6c22ee0b, 0xa088ee95, + 0x79a8fc39, 0xb502fca7, 0x3b8dfb44, 0xf727fbda, + 0xfde2f2c3, 0x3148f25d, 0xbfc7f5be, 0x736df520, + 0xd6f6d6a7, 0x1a5cd639, 0x94d3d1da, 0x5879d144, + 0x52bcd85d, 0x9e16d8c3, 0x1099df20, 0xdc33dfbe, + 0x0513cd12, 0xc9b9cd8c, 0x4736ca6f, 0x8b9ccaf1, + 0x8159c3e8, 0x4df3c376, 0xc37cc495, 0x0fd6c40b, + 0x7aa64737, 0xb60c47a9, 0x3883404a, 0xf42940d4, + 0xfeec49cd, 0x32464953, 0xbcc94eb0, 0x70634e2e, + 0xa9435c82, 0x65e95c1c, 0xeb665bff, 0x27cc5b61, + 0x2d095278, 0xe1a352e6, 0x6f2c5505, 0xa386559b, + 0x061d761c, 0xcab77682, 0x44387161, 0x889271ff, + 0x825778e6, 0x4efd7878, 0xc0727f9b, 0x0cd87f05, + 0xd5f86da9, 0x19526d37, 0x97dd6ad4, 0x5b776a4a, + 0x51b26353, 0x9d1863cd, 0x1397642e, 0xdf3d64b0, + 0x83d02561, 0x4f7a25ff, 0xc1f5221c, 0x0d5f2282, + 0x079a2b9b, 0xcb302b05, 0x45bf2ce6, 0x89152c78, + 0x50353ed4, 0x9c9f3e4a, 0x121039a9, 0xdeba3937, + 0xd47f302e, 0x18d530b0, 0x965a3753, 0x5af037cd, + 0xff6b144a, 0x33c114d4, 0xbd4e1337, 0x71e413a9, + 0x7b211ab0, 0xb78b1a2e, 0x39041dcd, 0xf5ae1d53, + 0x2c8e0fff, 0xe0240f61, 0x6eab0882, 0xa201081c, + 0xa8c40105, 0x646e019b, 0xeae10678, 0x264b06e6, + }, + { + 0x00000000, 0x177b1443, 0x2ef62886, 0x398d3cc5, + 0x5dec510c, 0x4a97454f, 0x731a798a, 0x64616dc9, + 0xbbd8a218, 0xaca3b65b, 0x952e8a9e, 0x82559edd, + 0xe634f314, 0xf14fe757, 0xc8c2db92, 0xdfb9cfd1, + 0xacc04271, 0xbbbb5632, 0x82366af7, 0x954d7eb4, + 0xf12c137d, 0xe657073e, 0xdfda3bfb, 0xc8a12fb8, + 0x1718e069, 0x0063f42a, 0x39eec8ef, 0x2e95dcac, + 0x4af4b165, 0x5d8fa526, 0x640299e3, 0x73798da0, + 0x82f182a3, 0x958a96e0, 0xac07aa25, 0xbb7cbe66, + 0xdf1dd3af, 0xc866c7ec, 0xf1ebfb29, 0xe690ef6a, + 0x392920bb, 0x2e5234f8, 0x17df083d, 0x00a41c7e, + 0x64c571b7, 0x73be65f4, 0x4a335931, 0x5d484d72, + 0x2e31c0d2, 0x394ad491, 0x00c7e854, 0x17bcfc17, + 0x73dd91de, 0x64a6859d, 0x5d2bb958, 0x4a50ad1b, + 0x95e962ca, 0x82927689, 0xbb1f4a4c, 0xac645e0f, + 0xc80533c6, 0xdf7e2785, 0xe6f31b40, 0xf1880f03, + 0xde920307, 0xc9e91744, 0xf0642b81, 0xe71f3fc2, + 0x837e520b, 0x94054648, 0xad887a8d, 0xbaf36ece, + 0x654aa11f, 0x7231b55c, 0x4bbc8999, 0x5cc79dda, + 0x38a6f013, 0x2fdde450, 0x1650d895, 0x012bccd6, + 0x72524176, 0x65295535, 0x5ca469f0, 0x4bdf7db3, + 0x2fbe107a, 0x38c50439, 0x014838fc, 0x16332cbf, + 0xc98ae36e, 0xdef1f72d, 0xe77ccbe8, 0xf007dfab, + 0x9466b262, 0x831da621, 0xba909ae4, 0xadeb8ea7, + 0x5c6381a4, 0x4b1895e7, 0x7295a922, 0x65eebd61, + 0x018fd0a8, 0x16f4c4eb, 0x2f79f82e, 0x3802ec6d, + 0xe7bb23bc, 0xf0c037ff, 0xc94d0b3a, 0xde361f79, + 0xba5772b0, 0xad2c66f3, 0x94a15a36, 0x83da4e75, + 0xf0a3c3d5, 0xe7d8d796, 0xde55eb53, 0xc92eff10, + 0xad4f92d9, 0xba34869a, 0x83b9ba5f, 0x94c2ae1c, + 0x4b7b61cd, 0x5c00758e, 0x658d494b, 0x72f65d08, + 0x169730c1, 0x01ec2482, 0x38611847, 0x2f1a0c04, + 0x6655004f, 0x712e140c, 0x48a328c9, 0x5fd83c8a, + 0x3bb95143, 0x2cc24500, 0x154f79c5, 0x02346d86, + 0xdd8da257, 0xcaf6b614, 0xf37b8ad1, 0xe4009e92, + 0x8061f35b, 0x971ae718, 0xae97dbdd, 0xb9eccf9e, + 0xca95423e, 0xddee567d, 0xe4636ab8, 0xf3187efb, + 0x97791332, 0x80020771, 0xb98f3bb4, 0xaef42ff7, + 0x714de026, 0x6636f465, 0x5fbbc8a0, 0x48c0dce3, + 0x2ca1b12a, 0x3bdaa569, 0x025799ac, 0x152c8def, + 0xe4a482ec, 0xf3df96af, 0xca52aa6a, 0xdd29be29, + 0xb948d3e0, 0xae33c7a3, 0x97befb66, 0x80c5ef25, + 0x5f7c20f4, 0x480734b7, 0x718a0872, 0x66f11c31, + 0x029071f8, 0x15eb65bb, 0x2c66597e, 0x3b1d4d3d, + 0x4864c09d, 0x5f1fd4de, 0x6692e81b, 0x71e9fc58, + 0x15889191, 0x02f385d2, 0x3b7eb917, 0x2c05ad54, + 0xf3bc6285, 0xe4c776c6, 0xdd4a4a03, 0xca315e40, + 0xae503389, 0xb92b27ca, 0x80a61b0f, 0x97dd0f4c, + 0xb8c70348, 0xafbc170b, 0x96312bce, 0x814a3f8d, + 0xe52b5244, 0xf2504607, 0xcbdd7ac2, 0xdca66e81, + 0x031fa150, 0x1464b513, 0x2de989d6, 0x3a929d95, + 0x5ef3f05c, 0x4988e41f, 0x7005d8da, 0x677ecc99, + 0x14074139, 0x037c557a, 0x3af169bf, 0x2d8a7dfc, + 0x49eb1035, 0x5e900476, 0x671d38b3, 0x70662cf0, + 0xafdfe321, 0xb8a4f762, 0x8129cba7, 0x9652dfe4, + 0xf233b22d, 0xe548a66e, 0xdcc59aab, 0xcbbe8ee8, + 0x3a3681eb, 0x2d4d95a8, 0x14c0a96d, 0x03bbbd2e, + 0x67dad0e7, 0x70a1c4a4, 0x492cf861, 0x5e57ec22, + 0x81ee23f3, 0x969537b0, 0xaf180b75, 0xb8631f36, + 0xdc0272ff, 0xcb7966bc, 0xf2f45a79, 0xe58f4e3a, + 0x96f6c39a, 0x818dd7d9, 0xb800eb1c, 0xaf7bff5f, + 0xcb1a9296, 0xdc6186d5, 0xe5ecba10, 0xf297ae53, + 0x2d2e6182, 0x3a5575c1, 0x03d84904, 0x14a35d47, + 0x70c2308e, 0x67b924cd, 0x5e341808, 0x494f0c4b, + }, + { + 0x00000000, 0xefc26b3e, 0x04f5d03d, 0xeb37bb03, + 0x09eba07a, 0xe629cb44, 0x0d1e7047, 0xe2dc1b79, + 0x13d740f4, 0xfc152bca, 0x172290c9, 0xf8e0fbf7, + 0x1a3ce08e, 0xf5fe8bb0, 0x1ec930b3, 0xf10b5b8d, + 0x27ae81e8, 0xc86cead6, 0x235b51d5, 0xcc993aeb, + 0x2e452192, 0xc1874aac, 0x2ab0f1af, 0xc5729a91, + 0x3479c11c, 0xdbbbaa22, 0x308c1121, 0xdf4e7a1f, + 0x3d926166, 0xd2500a58, 0x3967b15b, 0xd6a5da65, + 0x4f5d03d0, 0xa09f68ee, 0x4ba8d3ed, 0xa46ab8d3, + 0x46b6a3aa, 0xa974c894, 0x42437397, 0xad8118a9, + 0x5c8a4324, 0xb348281a, 0x587f9319, 0xb7bdf827, + 0x5561e35e, 0xbaa38860, 0x51943363, 0xbe56585d, + 0x68f38238, 0x8731e906, 0x6c065205, 0x83c4393b, + 0x61182242, 0x8eda497c, 0x65edf27f, 0x8a2f9941, + 0x7b24c2cc, 0x94e6a9f2, 0x7fd112f1, 0x901379cf, + 0x72cf62b6, 0x9d0d0988, 0x763ab28b, 0x99f8d9b5, + 0x9eba07a0, 0x71786c9e, 0x9a4fd79d, 0x758dbca3, + 0x9751a7da, 0x7893cce4, 0x93a477e7, 0x7c661cd9, + 0x8d6d4754, 0x62af2c6a, 0x89989769, 0x665afc57, + 0x8486e72e, 0x6b448c10, 0x80733713, 0x6fb15c2d, + 0xb9148648, 0x56d6ed76, 0xbde15675, 0x52233d4b, + 0xb0ff2632, 0x5f3d4d0c, 0xb40af60f, 0x5bc89d31, + 0xaac3c6bc, 0x4501ad82, 0xae361681, 0x41f47dbf, + 0xa32866c6, 0x4cea0df8, 0xa7ddb6fb, 0x481fddc5, + 0xd1e70470, 0x3e256f4e, 0xd512d44d, 0x3ad0bf73, + 0xd80ca40a, 0x37cecf34, 0xdcf97437, 0x333b1f09, + 0xc2304484, 0x2df22fba, 0xc6c594b9, 0x2907ff87, + 0xcbdbe4fe, 0x24198fc0, 0xcf2e34c3, 0x20ec5ffd, + 0xf6498598, 0x198beea6, 0xf2bc55a5, 0x1d7e3e9b, + 0xffa225e2, 0x10604edc, 0xfb57f5df, 0x14959ee1, + 0xe59ec56c, 0x0a5cae52, 0xe16b1551, 0x0ea97e6f, + 0xec756516, 0x03b70e28, 0xe880b52b, 0x0742de15, + 0xe6050901, 0x09c7623f, 0xe2f0d93c, 0x0d32b202, + 0xefeea97b, 0x002cc245, 0xeb1b7946, 0x04d91278, + 0xf5d249f5, 0x1a1022cb, 0xf12799c8, 0x1ee5f2f6, + 0xfc39e98f, 0x13fb82b1, 0xf8cc39b2, 0x170e528c, + 0xc1ab88e9, 0x2e69e3d7, 0xc55e58d4, 0x2a9c33ea, + 0xc8402893, 0x278243ad, 0xccb5f8ae, 0x23779390, + 0xd27cc81d, 0x3dbea323, 0xd6891820, 0x394b731e, + 0xdb976867, 0x34550359, 0xdf62b85a, 0x30a0d364, + 0xa9580ad1, 0x469a61ef, 0xadaddaec, 0x426fb1d2, + 0xa0b3aaab, 0x4f71c195, 0xa4467a96, 0x4b8411a8, + 0xba8f4a25, 0x554d211b, 0xbe7a9a18, 0x51b8f126, + 0xb364ea5f, 0x5ca68161, 0xb7913a62, 0x5853515c, + 0x8ef68b39, 0x6134e007, 0x8a035b04, 0x65c1303a, + 0x871d2b43, 0x68df407d, 0x83e8fb7e, 0x6c2a9040, + 0x9d21cbcd, 0x72e3a0f3, 0x99d41bf0, 0x761670ce, + 0x94ca6bb7, 0x7b080089, 0x903fbb8a, 0x7ffdd0b4, + 0x78bf0ea1, 0x977d659f, 0x7c4ade9c, 0x9388b5a2, + 0x7154aedb, 0x9e96c5e5, 0x75a17ee6, 0x9a6315d8, + 0x6b684e55, 0x84aa256b, 0x6f9d9e68, 0x805ff556, + 0x6283ee2f, 0x8d418511, 0x66763e12, 0x89b4552c, + 0x5f118f49, 0xb0d3e477, 0x5be45f74, 0xb426344a, + 0x56fa2f33, 0xb938440d, 0x520fff0e, 0xbdcd9430, + 0x4cc6cfbd, 0xa304a483, 0x48331f80, 0xa7f174be, + 0x452d6fc7, 0xaaef04f9, 0x41d8bffa, 0xae1ad4c4, + 0x37e20d71, 0xd820664f, 0x3317dd4c, 0xdcd5b672, + 0x3e09ad0b, 0xd1cbc635, 0x3afc7d36, 0xd53e1608, + 0x24354d85, 0xcbf726bb, 0x20c09db8, 0xcf02f686, + 0x2ddeedff, 0xc21c86c1, 0x292b3dc2, 0xc6e956fc, + 0x104c8c99, 0xff8ee7a7, 0x14b95ca4, 0xfb7b379a, + 0x19a72ce3, 0xf66547dd, 0x1d52fcde, 0xf29097e0, + 0x039bcc6d, 0xec59a753, 0x076e1c50, 0xe8ac776e, + 0x0a706c17, 0xe5b20729, 0x0e85bc2a, 0xe147d714, + }, + { + 0x00000000, 0xc18edfc0, 0x586cb9c1, 0x99e26601, + 0xb0d97382, 0x7157ac42, 0xe8b5ca43, 0x293b1583, + 0xbac3e145, 0x7b4d3e85, 0xe2af5884, 0x23218744, + 0x0a1a92c7, 0xcb944d07, 0x52762b06, 0x93f8f4c6, + 0xaef6c4cb, 0x6f781b0b, 0xf69a7d0a, 0x3714a2ca, + 0x1e2fb749, 0xdfa16889, 0x46430e88, 0x87cdd148, + 0x1435258e, 0xd5bbfa4e, 0x4c599c4f, 0x8dd7438f, + 0xa4ec560c, 0x656289cc, 0xfc80efcd, 0x3d0e300d, + 0x869c8fd7, 0x47125017, 0xdef03616, 0x1f7ee9d6, + 0x3645fc55, 0xf7cb2395, 0x6e294594, 0xafa79a54, + 0x3c5f6e92, 0xfdd1b152, 0x6433d753, 0xa5bd0893, + 0x8c861d10, 0x4d08c2d0, 0xd4eaa4d1, 0x15647b11, + 0x286a4b1c, 0xe9e494dc, 0x7006f2dd, 0xb1882d1d, + 0x98b3389e, 0x593de75e, 0xc0df815f, 0x01515e9f, + 0x92a9aa59, 0x53277599, 0xcac51398, 0x0b4bcc58, + 0x2270d9db, 0xe3fe061b, 0x7a1c601a, 0xbb92bfda, + 0xd64819ef, 0x17c6c62f, 0x8e24a02e, 0x4faa7fee, + 0x66916a6d, 0xa71fb5ad, 0x3efdd3ac, 0xff730c6c, + 0x6c8bf8aa, 0xad05276a, 0x34e7416b, 0xf5699eab, + 0xdc528b28, 0x1ddc54e8, 0x843e32e9, 0x45b0ed29, + 0x78bedd24, 0xb93002e4, 0x20d264e5, 0xe15cbb25, + 0xc867aea6, 0x09e97166, 0x900b1767, 0x5185c8a7, + 0xc27d3c61, 0x03f3e3a1, 0x9a1185a0, 0x5b9f5a60, + 0x72a44fe3, 0xb32a9023, 0x2ac8f622, 0xeb4629e2, + 0x50d49638, 0x915a49f8, 0x08b82ff9, 0xc936f039, + 0xe00de5ba, 0x21833a7a, 0xb8615c7b, 0x79ef83bb, + 0xea17777d, 0x2b99a8bd, 0xb27bcebc, 0x73f5117c, + 0x5ace04ff, 0x9b40db3f, 0x02a2bd3e, 0xc32c62fe, + 0xfe2252f3, 0x3fac8d33, 0xa64eeb32, 0x67c034f2, + 0x4efb2171, 0x8f75feb1, 0x169798b0, 0xd7194770, + 0x44e1b3b6, 0x856f6c76, 0x1c8d0a77, 0xdd03d5b7, + 0xf438c034, 0x35b61ff4, 0xac5479f5, 0x6ddaa635, + 0x77e1359f, 0xb66fea5f, 0x2f8d8c5e, 0xee03539e, + 0xc738461d, 0x06b699dd, 0x9f54ffdc, 0x5eda201c, + 0xcd22d4da, 0x0cac0b1a, 0x954e6d1b, 0x54c0b2db, + 0x7dfba758, 0xbc757898, 0x25971e99, 0xe419c159, + 0xd917f154, 0x18992e94, 0x817b4895, 0x40f59755, + 0x69ce82d6, 0xa8405d16, 0x31a23b17, 0xf02ce4d7, + 0x63d41011, 0xa25acfd1, 0x3bb8a9d0, 0xfa367610, + 0xd30d6393, 0x1283bc53, 0x8b61da52, 0x4aef0592, + 0xf17dba48, 0x30f36588, 0xa9110389, 0x689fdc49, + 0x41a4c9ca, 0x802a160a, 0x19c8700b, 0xd846afcb, + 0x4bbe5b0d, 0x8a3084cd, 0x13d2e2cc, 0xd25c3d0c, + 0xfb67288f, 0x3ae9f74f, 0xa30b914e, 0x62854e8e, + 0x5f8b7e83, 0x9e05a143, 0x07e7c742, 0xc6691882, + 0xef520d01, 0x2edcd2c1, 0xb73eb4c0, 0x76b06b00, + 0xe5489fc6, 0x24c64006, 0xbd242607, 0x7caaf9c7, + 0x5591ec44, 0x941f3384, 0x0dfd5585, 0xcc738a45, + 0xa1a92c70, 0x6027f3b0, 0xf9c595b1, 0x384b4a71, + 0x11705ff2, 0xd0fe8032, 0x491ce633, 0x889239f3, + 0x1b6acd35, 0xdae412f5, 0x430674f4, 0x8288ab34, + 0xabb3beb7, 0x6a3d6177, 0xf3df0776, 0x3251d8b6, + 0x0f5fe8bb, 0xced1377b, 0x5733517a, 0x96bd8eba, + 0xbf869b39, 0x7e0844f9, 0xe7ea22f8, 0x2664fd38, + 0xb59c09fe, 0x7412d63e, 0xedf0b03f, 0x2c7e6fff, + 0x05457a7c, 0xc4cba5bc, 0x5d29c3bd, 0x9ca71c7d, + 0x2735a3a7, 0xe6bb7c67, 0x7f591a66, 0xbed7c5a6, + 0x97ecd025, 0x56620fe5, 0xcf8069e4, 0x0e0eb624, + 0x9df642e2, 0x5c789d22, 0xc59afb23, 0x041424e3, + 0x2d2f3160, 0xeca1eea0, 0x754388a1, 0xb4cd5761, + 0x89c3676c, 0x484db8ac, 0xd1afdead, 0x1021016d, + 0x391a14ee, 0xf894cb2e, 0x6176ad2f, 0xa0f872ef, + 0x33008629, 0xf28e59e9, 0x6b6c3fe8, 0xaae2e028, + 0x83d9f5ab, 0x42572a6b, 0xdbb54c6a, 0x1a3b93aa, + }, + { + 0x00000000, 0x9ba54c6f, 0xec3b9e9f, 0x779ed2f0, + 0x03063b7f, 0x98a37710, 0xef3da5e0, 0x7498e98f, + 0x060c76fe, 0x9da93a91, 0xea37e861, 0x7192a40e, + 0x050a4d81, 0x9eaf01ee, 0xe931d31e, 0x72949f71, + 0x0c18edfc, 0x97bda193, 0xe0237363, 0x7b863f0c, + 0x0f1ed683, 0x94bb9aec, 0xe325481c, 0x78800473, + 0x0a149b02, 0x91b1d76d, 0xe62f059d, 0x7d8a49f2, + 0x0912a07d, 0x92b7ec12, 0xe5293ee2, 0x7e8c728d, + 0x1831dbf8, 0x83949797, 0xf40a4567, 0x6faf0908, + 0x1b37e087, 0x8092ace8, 0xf70c7e18, 0x6ca93277, + 0x1e3dad06, 0x8598e169, 0xf2063399, 0x69a37ff6, + 0x1d3b9679, 0x869eda16, 0xf10008e6, 0x6aa54489, + 0x14293604, 0x8f8c7a6b, 0xf812a89b, 0x63b7e4f4, + 0x172f0d7b, 0x8c8a4114, 0xfb1493e4, 0x60b1df8b, + 0x122540fa, 0x89800c95, 0xfe1ede65, 0x65bb920a, + 0x11237b85, 0x8a8637ea, 0xfd18e51a, 0x66bda975, + 0x3063b7f0, 0xabc6fb9f, 0xdc58296f, 0x47fd6500, + 0x33658c8f, 0xa8c0c0e0, 0xdf5e1210, 0x44fb5e7f, + 0x366fc10e, 0xadca8d61, 0xda545f91, 0x41f113fe, + 0x3569fa71, 0xaeccb61e, 0xd95264ee, 0x42f72881, + 0x3c7b5a0c, 0xa7de1663, 0xd040c493, 0x4be588fc, + 0x3f7d6173, 0xa4d82d1c, 0xd346ffec, 0x48e3b383, + 0x3a772cf2, 0xa1d2609d, 0xd64cb26d, 0x4de9fe02, + 0x3971178d, 0xa2d45be2, 0xd54a8912, 0x4eefc57d, + 0x28526c08, 0xb3f72067, 0xc469f297, 0x5fccbef8, + 0x2b545777, 0xb0f11b18, 0xc76fc9e8, 0x5cca8587, + 0x2e5e1af6, 0xb5fb5699, 0xc2658469, 0x59c0c806, + 0x2d582189, 0xb6fd6de6, 0xc163bf16, 0x5ac6f379, + 0x244a81f4, 0xbfefcd9b, 0xc8711f6b, 0x53d45304, + 0x274cba8b, 0xbce9f6e4, 0xcb772414, 0x50d2687b, + 0x2246f70a, 0xb9e3bb65, 0xce7d6995, 0x55d825fa, + 0x2140cc75, 0xbae5801a, 0xcd7b52ea, 0x56de1e85, + 0x60c76fe0, 0xfb62238f, 0x8cfcf17f, 0x1759bd10, + 0x63c1549f, 0xf86418f0, 0x8ffaca00, 0x145f866f, + 0x66cb191e, 0xfd6e5571, 0x8af08781, 0x1155cbee, + 0x65cd2261, 0xfe686e0e, 0x89f6bcfe, 0x1253f091, + 0x6cdf821c, 0xf77ace73, 0x80e41c83, 0x1b4150ec, + 0x6fd9b963, 0xf47cf50c, 0x83e227fc, 0x18476b93, + 0x6ad3f4e2, 0xf176b88d, 0x86e86a7d, 0x1d4d2612, + 0x69d5cf9d, 0xf27083f2, 0x85ee5102, 0x1e4b1d6d, + 0x78f6b418, 0xe353f877, 0x94cd2a87, 0x0f6866e8, + 0x7bf08f67, 0xe055c308, 0x97cb11f8, 0x0c6e5d97, + 0x7efac2e6, 0xe55f8e89, 0x92c15c79, 0x09641016, + 0x7dfcf999, 0xe659b5f6, 0x91c76706, 0x0a622b69, + 0x74ee59e4, 0xef4b158b, 0x98d5c77b, 0x03708b14, + 0x77e8629b, 0xec4d2ef4, 0x9bd3fc04, 0x0076b06b, + 0x72e22f1a, 0xe9476375, 0x9ed9b185, 0x057cfdea, + 0x71e41465, 0xea41580a, 0x9ddf8afa, 0x067ac695, + 0x50a4d810, 0xcb01947f, 0xbc9f468f, 0x273a0ae0, + 0x53a2e36f, 0xc807af00, 0xbf997df0, 0x243c319f, + 0x56a8aeee, 0xcd0de281, 0xba933071, 0x21367c1e, + 0x55ae9591, 0xce0bd9fe, 0xb9950b0e, 0x22304761, + 0x5cbc35ec, 0xc7197983, 0xb087ab73, 0x2b22e71c, + 0x5fba0e93, 0xc41f42fc, 0xb381900c, 0x2824dc63, + 0x5ab04312, 0xc1150f7d, 0xb68bdd8d, 0x2d2e91e2, + 0x59b6786d, 0xc2133402, 0xb58de6f2, 0x2e28aa9d, + 0x489503e8, 0xd3304f87, 0xa4ae9d77, 0x3f0bd118, + 0x4b933897, 0xd03674f8, 0xa7a8a608, 0x3c0dea67, + 0x4e997516, 0xd53c3979, 0xa2a2eb89, 0x3907a7e6, + 0x4d9f4e69, 0xd63a0206, 0xa1a4d0f6, 0x3a019c99, + 0x448dee14, 0xdf28a27b, 0xa8b6708b, 0x33133ce4, + 0x478bd56b, 0xdc2e9904, 0xabb04bf4, 0x3015079b, + 0x428198ea, 0xd924d485, 0xaeba0675, 0x351f4a1a, + 0x4187a395, 0xda22effa, 0xadbc3d0a, 0x36197165, + }, + { + 0x00000000, 0xdd96d985, 0x605cb54b, 0xbdca6cce, + 0xc0b96a96, 0x1d2fb313, 0xa0e5dfdd, 0x7d730658, + 0x5a03d36d, 0x87950ae8, 0x3a5f6626, 0xe7c9bfa3, + 0x9abab9fb, 0x472c607e, 0xfae60cb0, 0x2770d535, + 0xb407a6da, 0x69917f5f, 0xd45b1391, 0x09cdca14, + 0x74becc4c, 0xa92815c9, 0x14e27907, 0xc974a082, + 0xee0475b7, 0x3392ac32, 0x8e58c0fc, 0x53ce1979, + 0x2ebd1f21, 0xf32bc6a4, 0x4ee1aa6a, 0x937773ef, + 0xb37e4bf5, 0x6ee89270, 0xd322febe, 0x0eb4273b, + 0x73c72163, 0xae51f8e6, 0x139b9428, 0xce0d4dad, + 0xe97d9898, 0x34eb411d, 0x89212dd3, 0x54b7f456, + 0x29c4f20e, 0xf4522b8b, 0x49984745, 0x940e9ec0, + 0x0779ed2f, 0xdaef34aa, 0x67255864, 0xbab381e1, + 0xc7c087b9, 0x1a565e3c, 0xa79c32f2, 0x7a0aeb77, + 0x5d7a3e42, 0x80ece7c7, 0x3d268b09, 0xe0b0528c, + 0x9dc354d4, 0x40558d51, 0xfd9fe19f, 0x2009381a, + 0xbd8d91ab, 0x601b482e, 0xddd124e0, 0x0047fd65, + 0x7d34fb3d, 0xa0a222b8, 0x1d684e76, 0xc0fe97f3, + 0xe78e42c6, 0x3a189b43, 0x87d2f78d, 0x5a442e08, + 0x27372850, 0xfaa1f1d5, 0x476b9d1b, 0x9afd449e, + 0x098a3771, 0xd41ceef4, 0x69d6823a, 0xb4405bbf, + 0xc9335de7, 0x14a58462, 0xa96fe8ac, 0x74f93129, + 0x5389e41c, 0x8e1f3d99, 0x33d55157, 0xee4388d2, + 0x93308e8a, 0x4ea6570f, 0xf36c3bc1, 0x2efae244, + 0x0ef3da5e, 0xd36503db, 0x6eaf6f15, 0xb339b690, + 0xce4ab0c8, 0x13dc694d, 0xae160583, 0x7380dc06, + 0x54f00933, 0x8966d0b6, 0x34acbc78, 0xe93a65fd, + 0x944963a5, 0x49dfba20, 0xf415d6ee, 0x29830f6b, + 0xbaf47c84, 0x6762a501, 0xdaa8c9cf, 0x073e104a, + 0x7a4d1612, 0xa7dbcf97, 0x1a11a359, 0xc7877adc, + 0xe0f7afe9, 0x3d61766c, 0x80ab1aa2, 0x5d3dc327, + 0x204ec57f, 0xfdd81cfa, 0x40127034, 0x9d84a9b1, + 0xa06a2517, 0x7dfcfc92, 0xc036905c, 0x1da049d9, + 0x60d34f81, 0xbd459604, 0x008ffaca, 0xdd19234f, + 0xfa69f67a, 0x27ff2fff, 0x9a354331, 0x47a39ab4, + 0x3ad09cec, 0xe7464569, 0x5a8c29a7, 0x871af022, + 0x146d83cd, 0xc9fb5a48, 0x74313686, 0xa9a7ef03, + 0xd4d4e95b, 0x094230de, 0xb4885c10, 0x691e8595, + 0x4e6e50a0, 0x93f88925, 0x2e32e5eb, 0xf3a43c6e, + 0x8ed73a36, 0x5341e3b3, 0xee8b8f7d, 0x331d56f8, + 0x13146ee2, 0xce82b767, 0x7348dba9, 0xaede022c, + 0xd3ad0474, 0x0e3bddf1, 0xb3f1b13f, 0x6e6768ba, + 0x4917bd8f, 0x9481640a, 0x294b08c4, 0xf4ddd141, + 0x89aed719, 0x54380e9c, 0xe9f26252, 0x3464bbd7, + 0xa713c838, 0x7a8511bd, 0xc74f7d73, 0x1ad9a4f6, + 0x67aaa2ae, 0xba3c7b2b, 0x07f617e5, 0xda60ce60, + 0xfd101b55, 0x2086c2d0, 0x9d4cae1e, 0x40da779b, + 0x3da971c3, 0xe03fa846, 0x5df5c488, 0x80631d0d, + 0x1de7b4bc, 0xc0716d39, 0x7dbb01f7, 0xa02dd872, + 0xdd5ede2a, 0x00c807af, 0xbd026b61, 0x6094b2e4, + 0x47e467d1, 0x9a72be54, 0x27b8d29a, 0xfa2e0b1f, + 0x875d0d47, 0x5acbd4c2, 0xe701b80c, 0x3a976189, + 0xa9e01266, 0x7476cbe3, 0xc9bca72d, 0x142a7ea8, + 0x695978f0, 0xb4cfa175, 0x0905cdbb, 0xd493143e, + 0xf3e3c10b, 0x2e75188e, 0x93bf7440, 0x4e29adc5, + 0x335aab9d, 0xeecc7218, 0x53061ed6, 0x8e90c753, + 0xae99ff49, 0x730f26cc, 0xcec54a02, 0x13539387, + 0x6e2095df, 0xb3b64c5a, 0x0e7c2094, 0xd3eaf911, + 0xf49a2c24, 0x290cf5a1, 0x94c6996f, 0x495040ea, + 0x342346b2, 0xe9b59f37, 0x547ff3f9, 0x89e92a7c, + 0x1a9e5993, 0xc7088016, 0x7ac2ecd8, 0xa754355d, + 0xda273305, 0x07b1ea80, 0xba7b864e, 0x67ed5fcb, + 0x409d8afe, 0x9d0b537b, 0x20c13fb5, 0xfd57e630, + 0x8024e068, 0x5db239ed, 0xe0785523, 0x3dee8ca6, + }, + { + 0x00000000, 0x9d0fe176, 0xe16ec4ad, 0x7c6125db, + 0x19ac8f1b, 0x84a36e6d, 0xf8c24bb6, 0x65cdaac0, + 0x33591e36, 0xae56ff40, 0xd237da9b, 0x4f383bed, + 0x2af5912d, 0xb7fa705b, 0xcb9b5580, 0x5694b4f6, + 0x66b23c6c, 0xfbbddd1a, 0x87dcf8c1, 0x1ad319b7, + 0x7f1eb377, 0xe2115201, 0x9e7077da, 0x037f96ac, + 0x55eb225a, 0xc8e4c32c, 0xb485e6f7, 0x298a0781, + 0x4c47ad41, 0xd1484c37, 0xad2969ec, 0x3026889a, + 0xcd6478d8, 0x506b99ae, 0x2c0abc75, 0xb1055d03, + 0xd4c8f7c3, 0x49c716b5, 0x35a6336e, 0xa8a9d218, + 0xfe3d66ee, 0x63328798, 0x1f53a243, 0x825c4335, + 0xe791e9f5, 0x7a9e0883, 0x06ff2d58, 0x9bf0cc2e, + 0xabd644b4, 0x36d9a5c2, 0x4ab88019, 0xd7b7616f, + 0xb27acbaf, 0x2f752ad9, 0x53140f02, 0xce1bee74, + 0x988f5a82, 0x0580bbf4, 0x79e19e2f, 0xe4ee7f59, + 0x8123d599, 0x1c2c34ef, 0x604d1134, 0xfd42f042, + 0x41b9f7f1, 0xdcb61687, 0xa0d7335c, 0x3dd8d22a, + 0x581578ea, 0xc51a999c, 0xb97bbc47, 0x24745d31, + 0x72e0e9c7, 0xefef08b1, 0x938e2d6a, 0x0e81cc1c, + 0x6b4c66dc, 0xf64387aa, 0x8a22a271, 0x172d4307, + 0x270bcb9d, 0xba042aeb, 0xc6650f30, 0x5b6aee46, + 0x3ea74486, 0xa3a8a5f0, 0xdfc9802b, 0x42c6615d, + 0x1452d5ab, 0x895d34dd, 0xf53c1106, 0x6833f070, + 0x0dfe5ab0, 0x90f1bbc6, 0xec909e1d, 0x719f7f6b, + 0x8cdd8f29, 0x11d26e5f, 0x6db34b84, 0xf0bcaaf2, + 0x95710032, 0x087ee144, 0x741fc49f, 0xe91025e9, + 0xbf84911f, 0x228b7069, 0x5eea55b2, 0xc3e5b4c4, + 0xa6281e04, 0x3b27ff72, 0x4746daa9, 0xda493bdf, + 0xea6fb345, 0x77605233, 0x0b0177e8, 0x960e969e, + 0xf3c33c5e, 0x6eccdd28, 0x12adf8f3, 0x8fa21985, + 0xd936ad73, 0x44394c05, 0x385869de, 0xa55788a8, + 0xc09a2268, 0x5d95c31e, 0x21f4e6c5, 0xbcfb07b3, + 0x8373efe2, 0x1e7c0e94, 0x621d2b4f, 0xff12ca39, + 0x9adf60f9, 0x07d0818f, 0x7bb1a454, 0xe6be4522, + 0xb02af1d4, 0x2d2510a2, 0x51443579, 0xcc4bd40f, + 0xa9867ecf, 0x34899fb9, 0x48e8ba62, 0xd5e75b14, + 0xe5c1d38e, 0x78ce32f8, 0x04af1723, 0x99a0f655, + 0xfc6d5c95, 0x6162bde3, 0x1d039838, 0x800c794e, + 0xd698cdb8, 0x4b972cce, 0x37f60915, 0xaaf9e863, + 0xcf3442a3, 0x523ba3d5, 0x2e5a860e, 0xb3556778, + 0x4e17973a, 0xd318764c, 0xaf795397, 0x3276b2e1, + 0x57bb1821, 0xcab4f957, 0xb6d5dc8c, 0x2bda3dfa, + 0x7d4e890c, 0xe041687a, 0x9c204da1, 0x012facd7, + 0x64e20617, 0xf9ede761, 0x858cc2ba, 0x188323cc, + 0x28a5ab56, 0xb5aa4a20, 0xc9cb6ffb, 0x54c48e8d, + 0x3109244d, 0xac06c53b, 0xd067e0e0, 0x4d680196, + 0x1bfcb560, 0x86f35416, 0xfa9271cd, 0x679d90bb, + 0x02503a7b, 0x9f5fdb0d, 0xe33efed6, 0x7e311fa0, + 0xc2ca1813, 0x5fc5f965, 0x23a4dcbe, 0xbeab3dc8, + 0xdb669708, 0x4669767e, 0x3a0853a5, 0xa707b2d3, + 0xf1930625, 0x6c9ce753, 0x10fdc288, 0x8df223fe, + 0xe83f893e, 0x75306848, 0x09514d93, 0x945eace5, + 0xa478247f, 0x3977c509, 0x4516e0d2, 0xd81901a4, + 0xbdd4ab64, 0x20db4a12, 0x5cba6fc9, 0xc1b58ebf, + 0x97213a49, 0x0a2edb3f, 0x764ffee4, 0xeb401f92, + 0x8e8db552, 0x13825424, 0x6fe371ff, 0xf2ec9089, + 0x0fae60cb, 0x92a181bd, 0xeec0a466, 0x73cf4510, + 0x1602efd0, 0x8b0d0ea6, 0xf76c2b7d, 0x6a63ca0b, + 0x3cf77efd, 0xa1f89f8b, 0xdd99ba50, 0x40965b26, + 0x255bf1e6, 0xb8541090, 0xc435354b, 0x593ad43d, + 0x691c5ca7, 0xf413bdd1, 0x8872980a, 0x157d797c, + 0x70b0d3bc, 0xedbf32ca, 0x91de1711, 0x0cd1f667, + 0x5a454291, 0xc74aa3e7, 0xbb2b863c, 0x2624674a, + 0x43e9cd8a, 0xdee62cfc, 0xa2870927, 0x3f88e851, + }, + { + 0x00000000, 0xb9fbdbe8, 0xa886b191, 0x117d6a79, + 0x8a7c6563, 0x3387be8b, 0x22fad4f2, 0x9b010f1a, + 0xcf89cc87, 0x7672176f, 0x670f7d16, 0xdef4a6fe, + 0x45f5a9e4, 0xfc0e720c, 0xed731875, 0x5488c39d, + 0x44629f4f, 0xfd9944a7, 0xece42ede, 0x551ff536, + 0xce1efa2c, 0x77e521c4, 0x66984bbd, 0xdf639055, + 0x8beb53c8, 0x32108820, 0x236de259, 0x9a9639b1, + 0x019736ab, 0xb86ced43, 0xa911873a, 0x10ea5cd2, + 0x88c53e9e, 0x313ee576, 0x20438f0f, 0x99b854e7, + 0x02b95bfd, 0xbb428015, 0xaa3fea6c, 0x13c43184, + 0x474cf219, 0xfeb729f1, 0xefca4388, 0x56319860, + 0xcd30977a, 0x74cb4c92, 0x65b626eb, 0xdc4dfd03, + 0xcca7a1d1, 0x755c7a39, 0x64211040, 0xdddacba8, + 0x46dbc4b2, 0xff201f5a, 0xee5d7523, 0x57a6aecb, + 0x032e6d56, 0xbad5b6be, 0xaba8dcc7, 0x1253072f, + 0x89520835, 0x30a9d3dd, 0x21d4b9a4, 0x982f624c, + 0xcafb7b7d, 0x7300a095, 0x627dcaec, 0xdb861104, + 0x40871e1e, 0xf97cc5f6, 0xe801af8f, 0x51fa7467, + 0x0572b7fa, 0xbc896c12, 0xadf4066b, 0x140fdd83, + 0x8f0ed299, 0x36f50971, 0x27886308, 0x9e73b8e0, + 0x8e99e432, 0x37623fda, 0x261f55a3, 0x9fe48e4b, + 0x04e58151, 0xbd1e5ab9, 0xac6330c0, 0x1598eb28, + 0x411028b5, 0xf8ebf35d, 0xe9969924, 0x506d42cc, + 0xcb6c4dd6, 0x7297963e, 0x63eafc47, 0xda1127af, + 0x423e45e3, 0xfbc59e0b, 0xeab8f472, 0x53432f9a, + 0xc8422080, 0x71b9fb68, 0x60c49111, 0xd93f4af9, + 0x8db78964, 0x344c528c, 0x253138f5, 0x9ccae31d, + 0x07cbec07, 0xbe3037ef, 0xaf4d5d96, 0x16b6867e, + 0x065cdaac, 0xbfa70144, 0xaeda6b3d, 0x1721b0d5, + 0x8c20bfcf, 0x35db6427, 0x24a60e5e, 0x9d5dd5b6, + 0xc9d5162b, 0x702ecdc3, 0x6153a7ba, 0xd8a87c52, + 0x43a97348, 0xfa52a8a0, 0xeb2fc2d9, 0x52d41931, + 0x4e87f0bb, 0xf77c2b53, 0xe601412a, 0x5ffa9ac2, + 0xc4fb95d8, 0x7d004e30, 0x6c7d2449, 0xd586ffa1, + 0x810e3c3c, 0x38f5e7d4, 0x29888dad, 0x90735645, + 0x0b72595f, 0xb28982b7, 0xa3f4e8ce, 0x1a0f3326, + 0x0ae56ff4, 0xb31eb41c, 0xa263de65, 0x1b98058d, + 0x80990a97, 0x3962d17f, 0x281fbb06, 0x91e460ee, + 0xc56ca373, 0x7c97789b, 0x6dea12e2, 0xd411c90a, + 0x4f10c610, 0xf6eb1df8, 0xe7967781, 0x5e6dac69, + 0xc642ce25, 0x7fb915cd, 0x6ec47fb4, 0xd73fa45c, + 0x4c3eab46, 0xf5c570ae, 0xe4b81ad7, 0x5d43c13f, + 0x09cb02a2, 0xb030d94a, 0xa14db333, 0x18b668db, + 0x83b767c1, 0x3a4cbc29, 0x2b31d650, 0x92ca0db8, + 0x8220516a, 0x3bdb8a82, 0x2aa6e0fb, 0x935d3b13, + 0x085c3409, 0xb1a7efe1, 0xa0da8598, 0x19215e70, + 0x4da99ded, 0xf4524605, 0xe52f2c7c, 0x5cd4f794, + 0xc7d5f88e, 0x7e2e2366, 0x6f53491f, 0xd6a892f7, + 0x847c8bc6, 0x3d87502e, 0x2cfa3a57, 0x9501e1bf, + 0x0e00eea5, 0xb7fb354d, 0xa6865f34, 0x1f7d84dc, + 0x4bf54741, 0xf20e9ca9, 0xe373f6d0, 0x5a882d38, + 0xc1892222, 0x7872f9ca, 0x690f93b3, 0xd0f4485b, + 0xc01e1489, 0x79e5cf61, 0x6898a518, 0xd1637ef0, + 0x4a6271ea, 0xf399aa02, 0xe2e4c07b, 0x5b1f1b93, + 0x0f97d80e, 0xb66c03e6, 0xa711699f, 0x1eeab277, + 0x85ebbd6d, 0x3c106685, 0x2d6d0cfc, 0x9496d714, + 0x0cb9b558, 0xb5426eb0, 0xa43f04c9, 0x1dc4df21, + 0x86c5d03b, 0x3f3e0bd3, 0x2e4361aa, 0x97b8ba42, + 0xc33079df, 0x7acba237, 0x6bb6c84e, 0xd24d13a6, + 0x494c1cbc, 0xf0b7c754, 0xe1caad2d, 0x583176c5, + 0x48db2a17, 0xf120f1ff, 0xe05d9b86, 0x59a6406e, + 0xc2a74f74, 0x7b5c949c, 0x6a21fee5, 0xd3da250d, + 0x8752e690, 0x3ea93d78, 0x2fd45701, 0x962f8ce9, + 0x0d2e83f3, 0xb4d5581b, 0xa5a83262, 0x1c53e98a, + }, + { + 0x00000000, 0xae689191, 0x87a02563, 0x29c8b4f2, + 0xd4314c87, 0x7a59dd16, 0x539169e4, 0xfdf9f875, + 0x73139f4f, 0xdd7b0ede, 0xf4b3ba2c, 0x5adb2bbd, + 0xa722d3c8, 0x094a4259, 0x2082f6ab, 0x8eea673a, + 0xe6273e9e, 0x484faf0f, 0x61871bfd, 0xcfef8a6c, + 0x32167219, 0x9c7ee388, 0xb5b6577a, 0x1bdec6eb, + 0x9534a1d1, 0x3b5c3040, 0x129484b2, 0xbcfc1523, + 0x4105ed56, 0xef6d7cc7, 0xc6a5c835, 0x68cd59a4, + 0x173f7b7d, 0xb957eaec, 0x909f5e1e, 0x3ef7cf8f, + 0xc30e37fa, 0x6d66a66b, 0x44ae1299, 0xeac68308, + 0x642ce432, 0xca4475a3, 0xe38cc151, 0x4de450c0, + 0xb01da8b5, 0x1e753924, 0x37bd8dd6, 0x99d51c47, + 0xf11845e3, 0x5f70d472, 0x76b86080, 0xd8d0f111, + 0x25290964, 0x8b4198f5, 0xa2892c07, 0x0ce1bd96, + 0x820bdaac, 0x2c634b3d, 0x05abffcf, 0xabc36e5e, + 0x563a962b, 0xf85207ba, 0xd19ab348, 0x7ff222d9, + 0x2e7ef6fa, 0x8016676b, 0xa9ded399, 0x07b64208, + 0xfa4fba7d, 0x54272bec, 0x7def9f1e, 0xd3870e8f, + 0x5d6d69b5, 0xf305f824, 0xdacd4cd6, 0x74a5dd47, + 0x895c2532, 0x2734b4a3, 0x0efc0051, 0xa09491c0, + 0xc859c864, 0x663159f5, 0x4ff9ed07, 0xe1917c96, + 0x1c6884e3, 0xb2001572, 0x9bc8a180, 0x35a03011, + 0xbb4a572b, 0x1522c6ba, 0x3cea7248, 0x9282e3d9, + 0x6f7b1bac, 0xc1138a3d, 0xe8db3ecf, 0x46b3af5e, + 0x39418d87, 0x97291c16, 0xbee1a8e4, 0x10893975, + 0xed70c100, 0x43185091, 0x6ad0e463, 0xc4b875f2, + 0x4a5212c8, 0xe43a8359, 0xcdf237ab, 0x639aa63a, + 0x9e635e4f, 0x300bcfde, 0x19c37b2c, 0xb7abeabd, + 0xdf66b319, 0x710e2288, 0x58c6967a, 0xf6ae07eb, + 0x0b57ff9e, 0xa53f6e0f, 0x8cf7dafd, 0x229f4b6c, + 0xac752c56, 0x021dbdc7, 0x2bd50935, 0x85bd98a4, + 0x784460d1, 0xd62cf140, 0xffe445b2, 0x518cd423, + 0x5cfdedf4, 0xf2957c65, 0xdb5dc897, 0x75355906, + 0x88cca173, 0x26a430e2, 0x0f6c8410, 0xa1041581, + 0x2fee72bb, 0x8186e32a, 0xa84e57d8, 0x0626c649, + 0xfbdf3e3c, 0x55b7afad, 0x7c7f1b5f, 0xd2178ace, + 0xbadad36a, 0x14b242fb, 0x3d7af609, 0x93126798, + 0x6eeb9fed, 0xc0830e7c, 0xe94bba8e, 0x47232b1f, + 0xc9c94c25, 0x67a1ddb4, 0x4e696946, 0xe001f8d7, + 0x1df800a2, 0xb3909133, 0x9a5825c1, 0x3430b450, + 0x4bc29689, 0xe5aa0718, 0xcc62b3ea, 0x620a227b, + 0x9ff3da0e, 0x319b4b9f, 0x1853ff6d, 0xb63b6efc, + 0x38d109c6, 0x96b99857, 0xbf712ca5, 0x1119bd34, + 0xece04541, 0x4288d4d0, 0x6b406022, 0xc528f1b3, + 0xade5a817, 0x038d3986, 0x2a458d74, 0x842d1ce5, + 0x79d4e490, 0xd7bc7501, 0xfe74c1f3, 0x501c5062, + 0xdef63758, 0x709ea6c9, 0x5956123b, 0xf73e83aa, + 0x0ac77bdf, 0xa4afea4e, 0x8d675ebc, 0x230fcf2d, + 0x72831b0e, 0xdceb8a9f, 0xf5233e6d, 0x5b4baffc, + 0xa6b25789, 0x08dac618, 0x211272ea, 0x8f7ae37b, + 0x01908441, 0xaff815d0, 0x8630a122, 0x285830b3, + 0xd5a1c8c6, 0x7bc95957, 0x5201eda5, 0xfc697c34, + 0x94a42590, 0x3accb401, 0x130400f3, 0xbd6c9162, + 0x40956917, 0xeefdf886, 0xc7354c74, 0x695ddde5, + 0xe7b7badf, 0x49df2b4e, 0x60179fbc, 0xce7f0e2d, + 0x3386f658, 0x9dee67c9, 0xb426d33b, 0x1a4e42aa, + 0x65bc6073, 0xcbd4f1e2, 0xe21c4510, 0x4c74d481, + 0xb18d2cf4, 0x1fe5bd65, 0x362d0997, 0x98459806, + 0x16afff3c, 0xb8c76ead, 0x910fda5f, 0x3f674bce, + 0xc29eb3bb, 0x6cf6222a, 0x453e96d8, 0xeb560749, + 0x839b5eed, 0x2df3cf7c, 0x043b7b8e, 0xaa53ea1f, + 0x57aa126a, 0xf9c283fb, 0xd00a3709, 0x7e62a698, + 0xf088c1a2, 0x5ee05033, 0x7728e4c1, 0xd9407550, + 0x24b98d25, 0x8ad11cb4, 0xa319a846, 0x0d7139d7, + }, +}; diff --git a/ext/digest/crc32_bzip2/crc32_bzip2.c b/ext/digest/crc32_bzip2/crc32_bzip2.c index d8b09da..ab8c3eb 100644 --- a/ext/digest/crc32_bzip2/crc32_bzip2.c +++ b/ext/digest/crc32_bzip2/crc32_bzip2.c @@ -15,54 +15,39 @@ */ #include "crc32_bzip2.h" - -/** - * Static table used for the table_driven implementation. - */ -static const crc32_t crc32_bzip2_table[256] = { - 0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b, 0x1a864db2, 0x1e475005, - 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61, 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, - 0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9, 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75, - 0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3, 0x709f7b7a, 0x745e66cd, - 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039, 0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, - 0xbe2b5b58, 0xbaea46ef, 0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d, - 0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, 0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95, - 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, 0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, - 0x34867077, 0x30476dc0, 0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072, - 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, 0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca, - 0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde, 0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02, - 0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1, 0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba, - 0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b, 0xbb60adfc, 0xb6238b25, 0xb2e29692, - 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6, 0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a, - 0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e, 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2, - 0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34, 0xdc3abded, 0xd8fba05a, - 0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637, 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb, - 0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f, 0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53, - 0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5, 0x3f9b762c, 0x3b5a6b9b, - 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff, 0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, - 0xf12f560e, 0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b, - 0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f, 0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3, - 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, 0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, - 0x9b3660c6, 0x9ff77d71, 0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3, - 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, 0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c, - 0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8, 0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24, - 0x119b4be9, 0x155a565e, 0x18197087, 0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec, - 0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d, 0x2056cd3a, 0x2d15ebe3, 0x29d4f654, - 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0, 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c, - 0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18, 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4, - 0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662, 0x933eb0bb, 0x97ffad0c, - 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668, 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4 -}; +#include "crc32_bzip2_table.h" crc32_t crc32_bzip2_update(crc32_t crc, const void *data, size_t data_len) { const unsigned char *d = (const unsigned char *)data; unsigned int tbl_idx; + for (; data_len >= SLICE_SIZE; data_len -= SLICE_SIZE) + { + crc = crc32_bzip2_table[15][d[ 0] ^ ((crc >> 24) & 0xff)] ^ + crc32_bzip2_table[14][d[ 1] ^ ((crc >> 16) & 0xff)] ^ + crc32_bzip2_table[13][d[ 2] ^ ((crc >> 8) & 0xff)] ^ + crc32_bzip2_table[12][d[ 3] ^ ((crc >> 0) & 0xff)] ^ + crc32_bzip2_table[11][d[ 4] ] ^ + crc32_bzip2_table[10][d[ 5] ] ^ + crc32_bzip2_table[ 9][d[ 6] ] ^ + crc32_bzip2_table[ 8][d[ 7] ] ^ + crc32_bzip2_table[ 7][d[ 8] ] ^ + crc32_bzip2_table[ 6][d[ 9] ] ^ + crc32_bzip2_table[ 5][d[10] ] ^ + crc32_bzip2_table[ 4][d[11] ] ^ + crc32_bzip2_table[ 3][d[12] ] ^ + crc32_bzip2_table[ 2][d[13] ] ^ + crc32_bzip2_table[ 1][d[14] ] ^ + crc32_bzip2_table[ 0][d[15] ]; + crc &= 0xffffffff; + d += SLICE_SIZE; + } + while (data_len--) { tbl_idx = ((crc >> 24) ^ *d) & 0xff; - crc = (crc32_bzip2_table[tbl_idx] ^ (crc << 8)) & 0xffffffff; + crc = (crc32_bzip2_table[0][tbl_idx] ^ (crc << 8)) & 0xffffffff; d++; } diff --git a/ext/digest/crc32_bzip2/crc32_bzip2_table.h b/ext/digest/crc32_bzip2/crc32_bzip2_table.h new file mode 100644 index 0000000..2b7bfbd --- /dev/null +++ b/ext/digest/crc32_bzip2/crc32_bzip2_table.h @@ -0,0 +1,1070 @@ +/* + * bitwidth: 32 + * generator polynomial: 0x04c11db7 + * input bit direction: NORMAL + * slice bytes per iteration: 16 + * slide bits per table: 8 + * + * Generated by: gentable.rb of digest-crc + */ + +#define SLICE_SIZE 16 + +static const uint32_t crc32_bzip2_table[SLICE_SIZE][256] = { + { + 0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, + 0x130476dc, 0x17c56b6b, 0x1a864db2, 0x1e475005, + 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61, + 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, + 0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9, + 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75, + 0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, + 0x791d4014, 0x7ddc5da3, 0x709f7b7a, 0x745e66cd, + 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039, + 0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, + 0xbe2b5b58, 0xbaea46ef, 0xb7a96036, 0xb3687d81, + 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d, + 0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, + 0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95, + 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, + 0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, + 0x34867077, 0x30476dc0, 0x3d044b19, 0x39c556ae, + 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072, + 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, + 0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca, + 0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde, + 0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02, + 0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1, 0x53dc6066, + 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba, + 0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, + 0xbfa1b04b, 0xbb60adfc, 0xb6238b25, 0xb2e29692, + 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6, + 0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a, + 0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e, + 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2, + 0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686, + 0xd5b88683, 0xd1799b34, 0xdc3abded, 0xd8fba05a, + 0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637, + 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb, + 0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f, + 0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53, + 0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, + 0x36194d42, 0x32d850f5, 0x3f9b762c, 0x3b5a6b9b, + 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff, + 0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, + 0xf12f560e, 0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7, + 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b, + 0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f, + 0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3, + 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, + 0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, + 0x9b3660c6, 0x9ff77d71, 0x92b45ba8, 0x9675461f, + 0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3, + 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, + 0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c, + 0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8, + 0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24, + 0x119b4be9, 0x155a565e, 0x18197087, 0x1cd86d30, + 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec, + 0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, + 0x2497d08d, 0x2056cd3a, 0x2d15ebe3, 0x29d4f654, + 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0, + 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c, + 0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18, + 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4, + 0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0, + 0x9abc8bd5, 0x9e7d9662, 0x933eb0bb, 0x97ffad0c, + 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668, + 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4, + }, + { + 0x00000000, 0xd219c1dc, 0xa0f29e0f, 0x72eb5fd3, + 0x452421a9, 0x973de075, 0xe5d6bfa6, 0x37cf7e7a, + 0x8a484352, 0x5851828e, 0x2abadd5d, 0xf8a31c81, + 0xcf6c62fb, 0x1d75a327, 0x6f9efcf4, 0xbd873d28, + 0x10519b13, 0xc2485acf, 0xb0a3051c, 0x62bac4c0, + 0x5575baba, 0x876c7b66, 0xf58724b5, 0x279ee569, + 0x9a19d841, 0x4800199d, 0x3aeb464e, 0xe8f28792, + 0xdf3df9e8, 0x0d243834, 0x7fcf67e7, 0xadd6a63b, + 0x20a33626, 0xf2baf7fa, 0x8051a829, 0x524869f5, + 0x6587178f, 0xb79ed653, 0xc5758980, 0x176c485c, + 0xaaeb7574, 0x78f2b4a8, 0x0a19eb7b, 0xd8002aa7, + 0xefcf54dd, 0x3dd69501, 0x4f3dcad2, 0x9d240b0e, + 0x30f2ad35, 0xe2eb6ce9, 0x9000333a, 0x4219f2e6, + 0x75d68c9c, 0xa7cf4d40, 0xd5241293, 0x073dd34f, + 0xbabaee67, 0x68a32fbb, 0x1a487068, 0xc851b1b4, + 0xff9ecfce, 0x2d870e12, 0x5f6c51c1, 0x8d75901d, + 0x41466c4c, 0x935fad90, 0xe1b4f243, 0x33ad339f, + 0x04624de5, 0xd67b8c39, 0xa490d3ea, 0x76891236, + 0xcb0e2f1e, 0x1917eec2, 0x6bfcb111, 0xb9e570cd, + 0x8e2a0eb7, 0x5c33cf6b, 0x2ed890b8, 0xfcc15164, + 0x5117f75f, 0x830e3683, 0xf1e56950, 0x23fca88c, + 0x1433d6f6, 0xc62a172a, 0xb4c148f9, 0x66d88925, + 0xdb5fb40d, 0x094675d1, 0x7bad2a02, 0xa9b4ebde, + 0x9e7b95a4, 0x4c625478, 0x3e890bab, 0xec90ca77, + 0x61e55a6a, 0xb3fc9bb6, 0xc117c465, 0x130e05b9, + 0x24c17bc3, 0xf6d8ba1f, 0x8433e5cc, 0x562a2410, + 0xebad1938, 0x39b4d8e4, 0x4b5f8737, 0x994646eb, + 0xae893891, 0x7c90f94d, 0x0e7ba69e, 0xdc626742, + 0x71b4c179, 0xa3ad00a5, 0xd1465f76, 0x035f9eaa, + 0x3490e0d0, 0xe689210c, 0x94627edf, 0x467bbf03, + 0xfbfc822b, 0x29e543f7, 0x5b0e1c24, 0x8917ddf8, + 0xbed8a382, 0x6cc1625e, 0x1e2a3d8d, 0xcc33fc51, + 0x828cd898, 0x50951944, 0x227e4697, 0xf067874b, + 0xc7a8f931, 0x15b138ed, 0x675a673e, 0xb543a6e2, + 0x08c49bca, 0xdadd5a16, 0xa83605c5, 0x7a2fc419, + 0x4de0ba63, 0x9ff97bbf, 0xed12246c, 0x3f0be5b0, + 0x92dd438b, 0x40c48257, 0x322fdd84, 0xe0361c58, + 0xd7f96222, 0x05e0a3fe, 0x770bfc2d, 0xa5123df1, + 0x189500d9, 0xca8cc105, 0xb8679ed6, 0x6a7e5f0a, + 0x5db12170, 0x8fa8e0ac, 0xfd43bf7f, 0x2f5a7ea3, + 0xa22feebe, 0x70362f62, 0x02dd70b1, 0xd0c4b16d, + 0xe70bcf17, 0x35120ecb, 0x47f95118, 0x95e090c4, + 0x2867adec, 0xfa7e6c30, 0x889533e3, 0x5a8cf23f, + 0x6d438c45, 0xbf5a4d99, 0xcdb1124a, 0x1fa8d396, + 0xb27e75ad, 0x6067b471, 0x128ceba2, 0xc0952a7e, + 0xf75a5404, 0x254395d8, 0x57a8ca0b, 0x85b10bd7, + 0x383636ff, 0xea2ff723, 0x98c4a8f0, 0x4add692c, + 0x7d121756, 0xaf0bd68a, 0xdde08959, 0x0ff94885, + 0xc3cab4d4, 0x11d37508, 0x63382adb, 0xb121eb07, + 0x86ee957d, 0x54f754a1, 0x261c0b72, 0xf405caae, + 0x4982f786, 0x9b9b365a, 0xe9706989, 0x3b69a855, + 0x0ca6d62f, 0xdebf17f3, 0xac544820, 0x7e4d89fc, + 0xd39b2fc7, 0x0182ee1b, 0x7369b1c8, 0xa1707014, + 0x96bf0e6e, 0x44a6cfb2, 0x364d9061, 0xe45451bd, + 0x59d36c95, 0x8bcaad49, 0xf921f29a, 0x2b383346, + 0x1cf74d3c, 0xceee8ce0, 0xbc05d333, 0x6e1c12ef, + 0xe36982f2, 0x3170432e, 0x439b1cfd, 0x9182dd21, + 0xa64da35b, 0x74546287, 0x06bf3d54, 0xd4a6fc88, + 0x6921c1a0, 0xbb38007c, 0xc9d35faf, 0x1bca9e73, + 0x2c05e009, 0xfe1c21d5, 0x8cf77e06, 0x5eeebfda, + 0xf33819e1, 0x2121d83d, 0x53ca87ee, 0x81d34632, + 0xb61c3848, 0x6405f994, 0x16eea647, 0xc4f7679b, + 0x79705ab3, 0xab699b6f, 0xd982c4bc, 0x0b9b0560, + 0x3c547b1a, 0xee4dbac6, 0x9ca6e515, 0x4ebf24c9, + }, + { + 0x00000000, 0x01d8ac87, 0x03b1590e, 0x0269f589, + 0x0762b21c, 0x06ba1e9b, 0x04d3eb12, 0x050b4795, + 0x0ec56438, 0x0f1dc8bf, 0x0d743d36, 0x0cac91b1, + 0x09a7d624, 0x087f7aa3, 0x0a168f2a, 0x0bce23ad, + 0x1d8ac870, 0x1c5264f7, 0x1e3b917e, 0x1fe33df9, + 0x1ae87a6c, 0x1b30d6eb, 0x19592362, 0x18818fe5, + 0x134fac48, 0x129700cf, 0x10fef546, 0x112659c1, + 0x142d1e54, 0x15f5b2d3, 0x179c475a, 0x1644ebdd, + 0x3b1590e0, 0x3acd3c67, 0x38a4c9ee, 0x397c6569, + 0x3c7722fc, 0x3daf8e7b, 0x3fc67bf2, 0x3e1ed775, + 0x35d0f4d8, 0x3408585f, 0x3661add6, 0x37b90151, + 0x32b246c4, 0x336aea43, 0x31031fca, 0x30dbb34d, + 0x269f5890, 0x2747f417, 0x252e019e, 0x24f6ad19, + 0x21fdea8c, 0x2025460b, 0x224cb382, 0x23941f05, + 0x285a3ca8, 0x2982902f, 0x2beb65a6, 0x2a33c921, + 0x2f388eb4, 0x2ee02233, 0x2c89d7ba, 0x2d517b3d, + 0x762b21c0, 0x77f38d47, 0x759a78ce, 0x7442d449, + 0x714993dc, 0x70913f5b, 0x72f8cad2, 0x73206655, + 0x78ee45f8, 0x7936e97f, 0x7b5f1cf6, 0x7a87b071, + 0x7f8cf7e4, 0x7e545b63, 0x7c3daeea, 0x7de5026d, + 0x6ba1e9b0, 0x6a794537, 0x6810b0be, 0x69c81c39, + 0x6cc35bac, 0x6d1bf72b, 0x6f7202a2, 0x6eaaae25, + 0x65648d88, 0x64bc210f, 0x66d5d486, 0x670d7801, + 0x62063f94, 0x63de9313, 0x61b7669a, 0x606fca1d, + 0x4d3eb120, 0x4ce61da7, 0x4e8fe82e, 0x4f5744a9, + 0x4a5c033c, 0x4b84afbb, 0x49ed5a32, 0x4835f6b5, + 0x43fbd518, 0x4223799f, 0x404a8c16, 0x41922091, + 0x44996704, 0x4541cb83, 0x47283e0a, 0x46f0928d, + 0x50b47950, 0x516cd5d7, 0x5305205e, 0x52dd8cd9, + 0x57d6cb4c, 0x560e67cb, 0x54679242, 0x55bf3ec5, + 0x5e711d68, 0x5fa9b1ef, 0x5dc04466, 0x5c18e8e1, + 0x5913af74, 0x58cb03f3, 0x5aa2f67a, 0x5b7a5afd, + 0xec564380, 0xed8eef07, 0xefe71a8e, 0xee3fb609, + 0xeb34f19c, 0xeaec5d1b, 0xe885a892, 0xe95d0415, + 0xe29327b8, 0xe34b8b3f, 0xe1227eb6, 0xe0fad231, + 0xe5f195a4, 0xe4293923, 0xe640ccaa, 0xe798602d, + 0xf1dc8bf0, 0xf0042777, 0xf26dd2fe, 0xf3b57e79, + 0xf6be39ec, 0xf766956b, 0xf50f60e2, 0xf4d7cc65, + 0xff19efc8, 0xfec1434f, 0xfca8b6c6, 0xfd701a41, + 0xf87b5dd4, 0xf9a3f153, 0xfbca04da, 0xfa12a85d, + 0xd743d360, 0xd69b7fe7, 0xd4f28a6e, 0xd52a26e9, + 0xd021617c, 0xd1f9cdfb, 0xd3903872, 0xd24894f5, + 0xd986b758, 0xd85e1bdf, 0xda37ee56, 0xdbef42d1, + 0xdee40544, 0xdf3ca9c3, 0xdd555c4a, 0xdc8df0cd, + 0xcac91b10, 0xcb11b797, 0xc978421e, 0xc8a0ee99, + 0xcdaba90c, 0xcc73058b, 0xce1af002, 0xcfc25c85, + 0xc40c7f28, 0xc5d4d3af, 0xc7bd2626, 0xc6658aa1, + 0xc36ecd34, 0xc2b661b3, 0xc0df943a, 0xc10738bd, + 0x9a7d6240, 0x9ba5cec7, 0x99cc3b4e, 0x981497c9, + 0x9d1fd05c, 0x9cc77cdb, 0x9eae8952, 0x9f7625d5, + 0x94b80678, 0x9560aaff, 0x97095f76, 0x96d1f3f1, + 0x93dab464, 0x920218e3, 0x906bed6a, 0x91b341ed, + 0x87f7aa30, 0x862f06b7, 0x8446f33e, 0x859e5fb9, + 0x8095182c, 0x814db4ab, 0x83244122, 0x82fceda5, + 0x8932ce08, 0x88ea628f, 0x8a839706, 0x8b5b3b81, + 0x8e507c14, 0x8f88d093, 0x8de1251a, 0x8c39899d, + 0xa168f2a0, 0xa0b05e27, 0xa2d9abae, 0xa3010729, + 0xa60a40bc, 0xa7d2ec3b, 0xa5bb19b2, 0xa463b535, + 0xafad9698, 0xae753a1f, 0xac1ccf96, 0xadc46311, + 0xa8cf2484, 0xa9178803, 0xab7e7d8a, 0xaaa6d10d, + 0xbce23ad0, 0xbd3a9657, 0xbf5363de, 0xbe8bcf59, + 0xbb8088cc, 0xba58244b, 0xb831d1c2, 0xb9e97d45, + 0xb2275ee8, 0xb3fff26f, 0xb19607e6, 0xb04eab61, + 0xb545ecf4, 0xb49d4073, 0xb6f4b5fa, 0xb72c197d, + }, + { + 0x00000000, 0xdc6d9ab7, 0xbc1a28d9, 0x6077b26e, + 0x7cf54c05, 0xa098d6b2, 0xc0ef64dc, 0x1c82fe6b, + 0xf9ea980a, 0x258702bd, 0x45f0b0d3, 0x999d2a64, + 0x851fd40f, 0x59724eb8, 0x3905fcd6, 0xe5686661, + 0xf7142da3, 0x2b79b714, 0x4b0e057a, 0x97639fcd, + 0x8be161a6, 0x578cfb11, 0x37fb497f, 0xeb96d3c8, + 0x0efeb5a9, 0xd2932f1e, 0xb2e49d70, 0x6e8907c7, + 0x720bf9ac, 0xae66631b, 0xce11d175, 0x127c4bc2, + 0xeae946f1, 0x3684dc46, 0x56f36e28, 0x8a9ef49f, + 0x961c0af4, 0x4a719043, 0x2a06222d, 0xf66bb89a, + 0x1303defb, 0xcf6e444c, 0xaf19f622, 0x73746c95, + 0x6ff692fe, 0xb39b0849, 0xd3ecba27, 0x0f812090, + 0x1dfd6b52, 0xc190f1e5, 0xa1e7438b, 0x7d8ad93c, + 0x61082757, 0xbd65bde0, 0xdd120f8e, 0x017f9539, + 0xe417f358, 0x387a69ef, 0x580ddb81, 0x84604136, + 0x98e2bf5d, 0x448f25ea, 0x24f89784, 0xf8950d33, + 0xd1139055, 0x0d7e0ae2, 0x6d09b88c, 0xb164223b, + 0xade6dc50, 0x718b46e7, 0x11fcf489, 0xcd916e3e, + 0x28f9085f, 0xf49492e8, 0x94e32086, 0x488eba31, + 0x540c445a, 0x8861deed, 0xe8166c83, 0x347bf634, + 0x2607bdf6, 0xfa6a2741, 0x9a1d952f, 0x46700f98, + 0x5af2f1f3, 0x869f6b44, 0xe6e8d92a, 0x3a85439d, + 0xdfed25fc, 0x0380bf4b, 0x63f70d25, 0xbf9a9792, + 0xa31869f9, 0x7f75f34e, 0x1f024120, 0xc36fdb97, + 0x3bfad6a4, 0xe7974c13, 0x87e0fe7d, 0x5b8d64ca, + 0x470f9aa1, 0x9b620016, 0xfb15b278, 0x277828cf, + 0xc2104eae, 0x1e7dd419, 0x7e0a6677, 0xa267fcc0, + 0xbee502ab, 0x6288981c, 0x02ff2a72, 0xde92b0c5, + 0xcceefb07, 0x108361b0, 0x70f4d3de, 0xac994969, + 0xb01bb702, 0x6c762db5, 0x0c019fdb, 0xd06c056c, + 0x3504630d, 0xe969f9ba, 0x891e4bd4, 0x5573d163, + 0x49f12f08, 0x959cb5bf, 0xf5eb07d1, 0x29869d66, + 0xa6e63d1d, 0x7a8ba7aa, 0x1afc15c4, 0xc6918f73, + 0xda137118, 0x067eebaf, 0x660959c1, 0xba64c376, + 0x5f0ca517, 0x83613fa0, 0xe3168dce, 0x3f7b1779, + 0x23f9e912, 0xff9473a5, 0x9fe3c1cb, 0x438e5b7c, + 0x51f210be, 0x8d9f8a09, 0xede83867, 0x3185a2d0, + 0x2d075cbb, 0xf16ac60c, 0x911d7462, 0x4d70eed5, + 0xa81888b4, 0x74751203, 0x1402a06d, 0xc86f3ada, + 0xd4edc4b1, 0x08805e06, 0x68f7ec68, 0xb49a76df, + 0x4c0f7bec, 0x9062e15b, 0xf0155335, 0x2c78c982, + 0x30fa37e9, 0xec97ad5e, 0x8ce01f30, 0x508d8587, + 0xb5e5e3e6, 0x69887951, 0x09ffcb3f, 0xd5925188, + 0xc910afe3, 0x157d3554, 0x750a873a, 0xa9671d8d, + 0xbb1b564f, 0x6776ccf8, 0x07017e96, 0xdb6ce421, + 0xc7ee1a4a, 0x1b8380fd, 0x7bf43293, 0xa799a824, + 0x42f1ce45, 0x9e9c54f2, 0xfeebe69c, 0x22867c2b, + 0x3e048240, 0xe26918f7, 0x821eaa99, 0x5e73302e, + 0x77f5ad48, 0xab9837ff, 0xcbef8591, 0x17821f26, + 0x0b00e14d, 0xd76d7bfa, 0xb71ac994, 0x6b775323, + 0x8e1f3542, 0x5272aff5, 0x32051d9b, 0xee68872c, + 0xf2ea7947, 0x2e87e3f0, 0x4ef0519e, 0x929dcb29, + 0x80e180eb, 0x5c8c1a5c, 0x3cfba832, 0xe0963285, + 0xfc14ccee, 0x20795659, 0x400ee437, 0x9c637e80, + 0x790b18e1, 0xa5668256, 0xc5113038, 0x197caa8f, + 0x05fe54e4, 0xd993ce53, 0xb9e47c3d, 0x6589e68a, + 0x9d1cebb9, 0x4171710e, 0x2106c360, 0xfd6b59d7, + 0xe1e9a7bc, 0x3d843d0b, 0x5df38f65, 0x819e15d2, + 0x64f673b3, 0xb89be904, 0xd8ec5b6a, 0x0481c1dd, + 0x18033fb6, 0xc46ea501, 0xa419176f, 0x78748dd8, + 0x6a08c61a, 0xb6655cad, 0xd612eec3, 0x0a7f7474, + 0x16fd8a1f, 0xca9010a8, 0xaae7a2c6, 0x768a3871, + 0x93e25e10, 0x4f8fc4a7, 0x2ff876c9, 0xf395ec7e, + 0xef171215, 0x337a88a2, 0x530d3acc, 0x8f60a07b, + }, + { + 0x00000000, 0x490d678d, 0x921acf1a, 0xdb17a897, + 0x20f48383, 0x69f9e40e, 0xb2ee4c99, 0xfbe32b14, + 0x41e90706, 0x08e4608b, 0xd3f3c81c, 0x9afeaf91, + 0x611d8485, 0x2810e308, 0xf3074b9f, 0xba0a2c12, + 0x83d20e0c, 0xcadf6981, 0x11c8c116, 0x58c5a69b, + 0xa3268d8f, 0xea2bea02, 0x313c4295, 0x78312518, + 0xc23b090a, 0x8b366e87, 0x5021c610, 0x192ca19d, + 0xe2cf8a89, 0xabc2ed04, 0x70d54593, 0x39d8221e, + 0x036501af, 0x4a686622, 0x917fceb5, 0xd872a938, + 0x2391822c, 0x6a9ce5a1, 0xb18b4d36, 0xf8862abb, + 0x428c06a9, 0x0b816124, 0xd096c9b3, 0x999bae3e, + 0x6278852a, 0x2b75e2a7, 0xf0624a30, 0xb96f2dbd, + 0x80b70fa3, 0xc9ba682e, 0x12adc0b9, 0x5ba0a734, + 0xa0438c20, 0xe94eebad, 0x3259433a, 0x7b5424b7, + 0xc15e08a5, 0x88536f28, 0x5344c7bf, 0x1a49a032, + 0xe1aa8b26, 0xa8a7ecab, 0x73b0443c, 0x3abd23b1, + 0x06ca035e, 0x4fc764d3, 0x94d0cc44, 0xddddabc9, + 0x263e80dd, 0x6f33e750, 0xb4244fc7, 0xfd29284a, + 0x47230458, 0x0e2e63d5, 0xd539cb42, 0x9c34accf, + 0x67d787db, 0x2edae056, 0xf5cd48c1, 0xbcc02f4c, + 0x85180d52, 0xcc156adf, 0x1702c248, 0x5e0fa5c5, + 0xa5ec8ed1, 0xece1e95c, 0x37f641cb, 0x7efb2646, + 0xc4f10a54, 0x8dfc6dd9, 0x56ebc54e, 0x1fe6a2c3, + 0xe40589d7, 0xad08ee5a, 0x761f46cd, 0x3f122140, + 0x05af02f1, 0x4ca2657c, 0x97b5cdeb, 0xdeb8aa66, + 0x255b8172, 0x6c56e6ff, 0xb7414e68, 0xfe4c29e5, + 0x444605f7, 0x0d4b627a, 0xd65ccaed, 0x9f51ad60, + 0x64b28674, 0x2dbfe1f9, 0xf6a8496e, 0xbfa52ee3, + 0x867d0cfd, 0xcf706b70, 0x1467c3e7, 0x5d6aa46a, + 0xa6898f7e, 0xef84e8f3, 0x34934064, 0x7d9e27e9, + 0xc7940bfb, 0x8e996c76, 0x558ec4e1, 0x1c83a36c, + 0xe7608878, 0xae6deff5, 0x757a4762, 0x3c7720ef, + 0x0d9406bc, 0x44996131, 0x9f8ec9a6, 0xd683ae2b, + 0x2d60853f, 0x646de2b2, 0xbf7a4a25, 0xf6772da8, + 0x4c7d01ba, 0x05706637, 0xde67cea0, 0x976aa92d, + 0x6c898239, 0x2584e5b4, 0xfe934d23, 0xb79e2aae, + 0x8e4608b0, 0xc74b6f3d, 0x1c5cc7aa, 0x5551a027, + 0xaeb28b33, 0xe7bfecbe, 0x3ca84429, 0x75a523a4, + 0xcfaf0fb6, 0x86a2683b, 0x5db5c0ac, 0x14b8a721, + 0xef5b8c35, 0xa656ebb8, 0x7d41432f, 0x344c24a2, + 0x0ef10713, 0x47fc609e, 0x9cebc809, 0xd5e6af84, + 0x2e058490, 0x6708e31d, 0xbc1f4b8a, 0xf5122c07, + 0x4f180015, 0x06156798, 0xdd02cf0f, 0x940fa882, + 0x6fec8396, 0x26e1e41b, 0xfdf64c8c, 0xb4fb2b01, + 0x8d23091f, 0xc42e6e92, 0x1f39c605, 0x5634a188, + 0xadd78a9c, 0xe4daed11, 0x3fcd4586, 0x76c0220b, + 0xccca0e19, 0x85c76994, 0x5ed0c103, 0x17dda68e, + 0xec3e8d9a, 0xa533ea17, 0x7e244280, 0x3729250d, + 0x0b5e05e2, 0x4253626f, 0x9944caf8, 0xd049ad75, + 0x2baa8661, 0x62a7e1ec, 0xb9b0497b, 0xf0bd2ef6, + 0x4ab702e4, 0x03ba6569, 0xd8adcdfe, 0x91a0aa73, + 0x6a438167, 0x234ee6ea, 0xf8594e7d, 0xb15429f0, + 0x888c0bee, 0xc1816c63, 0x1a96c4f4, 0x539ba379, + 0xa878886d, 0xe175efe0, 0x3a624777, 0x736f20fa, + 0xc9650ce8, 0x80686b65, 0x5b7fc3f2, 0x1272a47f, + 0xe9918f6b, 0xa09ce8e6, 0x7b8b4071, 0x328627fc, + 0x083b044d, 0x413663c0, 0x9a21cb57, 0xd32cacda, + 0x28cf87ce, 0x61c2e043, 0xbad548d4, 0xf3d82f59, + 0x49d2034b, 0x00df64c6, 0xdbc8cc51, 0x92c5abdc, + 0x692680c8, 0x202be745, 0xfb3c4fd2, 0xb231285f, + 0x8be90a41, 0xc2e46dcc, 0x19f3c55b, 0x50fea2d6, + 0xab1d89c2, 0xe210ee4f, 0x390746d8, 0x700a2155, + 0xca000d47, 0x830d6aca, 0x581ac25d, 0x1117a5d0, + 0xeaf48ec4, 0xa3f9e949, 0x78ee41de, 0x31e32653, + }, + { + 0x00000000, 0x1b280d78, 0x36501af0, 0x2d781788, + 0x6ca035e0, 0x77883898, 0x5af02f10, 0x41d82268, + 0xd9406bc0, 0xc26866b8, 0xef107130, 0xf4387c48, + 0xb5e05e20, 0xaec85358, 0x83b044d0, 0x989849a8, + 0xb641ca37, 0xad69c74f, 0x8011d0c7, 0x9b39ddbf, + 0xdae1ffd7, 0xc1c9f2af, 0xecb1e527, 0xf799e85f, + 0x6f01a1f7, 0x7429ac8f, 0x5951bb07, 0x4279b67f, + 0x03a19417, 0x1889996f, 0x35f18ee7, 0x2ed9839f, + 0x684289d9, 0x736a84a1, 0x5e129329, 0x453a9e51, + 0x04e2bc39, 0x1fcab141, 0x32b2a6c9, 0x299aabb1, + 0xb102e219, 0xaa2aef61, 0x8752f8e9, 0x9c7af591, + 0xdda2d7f9, 0xc68ada81, 0xebf2cd09, 0xf0dac071, + 0xde0343ee, 0xc52b4e96, 0xe853591e, 0xf37b5466, + 0xb2a3760e, 0xa98b7b76, 0x84f36cfe, 0x9fdb6186, + 0x0743282e, 0x1c6b2556, 0x311332de, 0x2a3b3fa6, + 0x6be31dce, 0x70cb10b6, 0x5db3073e, 0x469b0a46, + 0xd08513b2, 0xcbad1eca, 0xe6d50942, 0xfdfd043a, + 0xbc252652, 0xa70d2b2a, 0x8a753ca2, 0x915d31da, + 0x09c57872, 0x12ed750a, 0x3f956282, 0x24bd6ffa, + 0x65654d92, 0x7e4d40ea, 0x53355762, 0x481d5a1a, + 0x66c4d985, 0x7decd4fd, 0x5094c375, 0x4bbcce0d, + 0x0a64ec65, 0x114ce11d, 0x3c34f695, 0x271cfbed, + 0xbf84b245, 0xa4acbf3d, 0x89d4a8b5, 0x92fca5cd, + 0xd32487a5, 0xc80c8add, 0xe5749d55, 0xfe5c902d, + 0xb8c79a6b, 0xa3ef9713, 0x8e97809b, 0x95bf8de3, + 0xd467af8b, 0xcf4fa2f3, 0xe237b57b, 0xf91fb803, + 0x6187f1ab, 0x7aaffcd3, 0x57d7eb5b, 0x4cffe623, + 0x0d27c44b, 0x160fc933, 0x3b77debb, 0x205fd3c3, + 0x0e86505c, 0x15ae5d24, 0x38d64aac, 0x23fe47d4, + 0x622665bc, 0x790e68c4, 0x54767f4c, 0x4f5e7234, + 0xd7c63b9c, 0xccee36e4, 0xe196216c, 0xfabe2c14, + 0xbb660e7c, 0xa04e0304, 0x8d36148c, 0x961e19f4, + 0xa5cb3ad3, 0xbee337ab, 0x939b2023, 0x88b32d5b, + 0xc96b0f33, 0xd243024b, 0xff3b15c3, 0xe41318bb, + 0x7c8b5113, 0x67a35c6b, 0x4adb4be3, 0x51f3469b, + 0x102b64f3, 0x0b03698b, 0x267b7e03, 0x3d53737b, + 0x138af0e4, 0x08a2fd9c, 0x25daea14, 0x3ef2e76c, + 0x7f2ac504, 0x6402c87c, 0x497adff4, 0x5252d28c, + 0xcaca9b24, 0xd1e2965c, 0xfc9a81d4, 0xe7b28cac, + 0xa66aaec4, 0xbd42a3bc, 0x903ab434, 0x8b12b94c, + 0xcd89b30a, 0xd6a1be72, 0xfbd9a9fa, 0xe0f1a482, + 0xa12986ea, 0xba018b92, 0x97799c1a, 0x8c519162, + 0x14c9d8ca, 0x0fe1d5b2, 0x2299c23a, 0x39b1cf42, + 0x7869ed2a, 0x6341e052, 0x4e39f7da, 0x5511faa2, + 0x7bc8793d, 0x60e07445, 0x4d9863cd, 0x56b06eb5, + 0x17684cdd, 0x0c4041a5, 0x2138562d, 0x3a105b55, + 0xa28812fd, 0xb9a01f85, 0x94d8080d, 0x8ff00575, + 0xce28271d, 0xd5002a65, 0xf8783ded, 0xe3503095, + 0x754e2961, 0x6e662419, 0x431e3391, 0x58363ee9, + 0x19ee1c81, 0x02c611f9, 0x2fbe0671, 0x34960b09, + 0xac0e42a1, 0xb7264fd9, 0x9a5e5851, 0x81765529, + 0xc0ae7741, 0xdb867a39, 0xf6fe6db1, 0xedd660c9, + 0xc30fe356, 0xd827ee2e, 0xf55ff9a6, 0xee77f4de, + 0xafafd6b6, 0xb487dbce, 0x99ffcc46, 0x82d7c13e, + 0x1a4f8896, 0x016785ee, 0x2c1f9266, 0x37379f1e, + 0x76efbd76, 0x6dc7b00e, 0x40bfa786, 0x5b97aafe, + 0x1d0ca0b8, 0x0624adc0, 0x2b5cba48, 0x3074b730, + 0x71ac9558, 0x6a849820, 0x47fc8fa8, 0x5cd482d0, + 0xc44ccb78, 0xdf64c600, 0xf21cd188, 0xe934dcf0, + 0xa8ecfe98, 0xb3c4f3e0, 0x9ebce468, 0x8594e910, + 0xab4d6a8f, 0xb06567f7, 0x9d1d707f, 0x86357d07, + 0xc7ed5f6f, 0xdcc55217, 0xf1bd459f, 0xea9548e7, + 0x720d014f, 0x69250c37, 0x445d1bbf, 0x5f7516c7, + 0x1ead34af, 0x058539d7, 0x28fd2e5f, 0x33d52327, + }, + { + 0x00000000, 0x4f576811, 0x9eaed022, 0xd1f9b833, + 0x399cbdf3, 0x76cbd5e2, 0xa7326dd1, 0xe86505c0, + 0x73397be6, 0x3c6e13f7, 0xed97abc4, 0xa2c0c3d5, + 0x4aa5c615, 0x05f2ae04, 0xd40b1637, 0x9b5c7e26, + 0xe672f7cc, 0xa9259fdd, 0x78dc27ee, 0x378b4fff, + 0xdfee4a3f, 0x90b9222e, 0x41409a1d, 0x0e17f20c, + 0x954b8c2a, 0xda1ce43b, 0x0be55c08, 0x44b23419, + 0xacd731d9, 0xe38059c8, 0x3279e1fb, 0x7d2e89ea, + 0xc824f22f, 0x87739a3e, 0x568a220d, 0x19dd4a1c, + 0xf1b84fdc, 0xbeef27cd, 0x6f169ffe, 0x2041f7ef, + 0xbb1d89c9, 0xf44ae1d8, 0x25b359eb, 0x6ae431fa, + 0x8281343a, 0xcdd65c2b, 0x1c2fe418, 0x53788c09, + 0x2e5605e3, 0x61016df2, 0xb0f8d5c1, 0xffafbdd0, + 0x17cab810, 0x589dd001, 0x89646832, 0xc6330023, + 0x5d6f7e05, 0x12381614, 0xc3c1ae27, 0x8c96c636, + 0x64f3c3f6, 0x2ba4abe7, 0xfa5d13d4, 0xb50a7bc5, + 0x9488f9e9, 0xdbdf91f8, 0x0a2629cb, 0x457141da, + 0xad14441a, 0xe2432c0b, 0x33ba9438, 0x7cedfc29, + 0xe7b1820f, 0xa8e6ea1e, 0x791f522d, 0x36483a3c, + 0xde2d3ffc, 0x917a57ed, 0x4083efde, 0x0fd487cf, + 0x72fa0e25, 0x3dad6634, 0xec54de07, 0xa303b616, + 0x4b66b3d6, 0x0431dbc7, 0xd5c863f4, 0x9a9f0be5, + 0x01c375c3, 0x4e941dd2, 0x9f6da5e1, 0xd03acdf0, + 0x385fc830, 0x7708a021, 0xa6f11812, 0xe9a67003, + 0x5cac0bc6, 0x13fb63d7, 0xc202dbe4, 0x8d55b3f5, + 0x6530b635, 0x2a67de24, 0xfb9e6617, 0xb4c90e06, + 0x2f957020, 0x60c21831, 0xb13ba002, 0xfe6cc813, + 0x1609cdd3, 0x595ea5c2, 0x88a71df1, 0xc7f075e0, + 0xbadefc0a, 0xf589941b, 0x24702c28, 0x6b274439, + 0x834241f9, 0xcc1529e8, 0x1dec91db, 0x52bbf9ca, + 0xc9e787ec, 0x86b0effd, 0x574957ce, 0x181e3fdf, + 0xf07b3a1f, 0xbf2c520e, 0x6ed5ea3d, 0x2182822c, + 0x2dd0ee65, 0x62878674, 0xb37e3e47, 0xfc295656, + 0x144c5396, 0x5b1b3b87, 0x8ae283b4, 0xc5b5eba5, + 0x5ee99583, 0x11befd92, 0xc04745a1, 0x8f102db0, + 0x67752870, 0x28224061, 0xf9dbf852, 0xb68c9043, + 0xcba219a9, 0x84f571b8, 0x550cc98b, 0x1a5ba19a, + 0xf23ea45a, 0xbd69cc4b, 0x6c907478, 0x23c71c69, + 0xb89b624f, 0xf7cc0a5e, 0x2635b26d, 0x6962da7c, + 0x8107dfbc, 0xce50b7ad, 0x1fa90f9e, 0x50fe678f, + 0xe5f41c4a, 0xaaa3745b, 0x7b5acc68, 0x340da479, + 0xdc68a1b9, 0x933fc9a8, 0x42c6719b, 0x0d91198a, + 0x96cd67ac, 0xd99a0fbd, 0x0863b78e, 0x4734df9f, + 0xaf51da5f, 0xe006b24e, 0x31ff0a7d, 0x7ea8626c, + 0x0386eb86, 0x4cd18397, 0x9d283ba4, 0xd27f53b5, + 0x3a1a5675, 0x754d3e64, 0xa4b48657, 0xebe3ee46, + 0x70bf9060, 0x3fe8f871, 0xee114042, 0xa1462853, + 0x49232d93, 0x06744582, 0xd78dfdb1, 0x98da95a0, + 0xb958178c, 0xf60f7f9d, 0x27f6c7ae, 0x68a1afbf, + 0x80c4aa7f, 0xcf93c26e, 0x1e6a7a5d, 0x513d124c, + 0xca616c6a, 0x8536047b, 0x54cfbc48, 0x1b98d459, + 0xf3fdd199, 0xbcaab988, 0x6d5301bb, 0x220469aa, + 0x5f2ae040, 0x107d8851, 0xc1843062, 0x8ed35873, + 0x66b65db3, 0x29e135a2, 0xf8188d91, 0xb74fe580, + 0x2c139ba6, 0x6344f3b7, 0xb2bd4b84, 0xfdea2395, + 0x158f2655, 0x5ad84e44, 0x8b21f677, 0xc4769e66, + 0x717ce5a3, 0x3e2b8db2, 0xefd23581, 0xa0855d90, + 0x48e05850, 0x07b73041, 0xd64e8872, 0x9919e063, + 0x02459e45, 0x4d12f654, 0x9ceb4e67, 0xd3bc2676, + 0x3bd923b6, 0x748e4ba7, 0xa577f394, 0xea209b85, + 0x970e126f, 0xd8597a7e, 0x09a0c24d, 0x46f7aa5c, + 0xae92af9c, 0xe1c5c78d, 0x303c7fbe, 0x7f6b17af, + 0xe4376989, 0xab600198, 0x7a99b9ab, 0x35ced1ba, + 0xddabd47a, 0x92fcbc6b, 0x43050458, 0x0c526c49, + }, + { + 0x00000000, 0x5ba1dcca, 0xb743b994, 0xece2655e, + 0x6a466e9f, 0x31e7b255, 0xdd05d70b, 0x86a40bc1, + 0xd48cdd3e, 0x8f2d01f4, 0x63cf64aa, 0x386eb860, + 0xbecab3a1, 0xe56b6f6b, 0x09890a35, 0x5228d6ff, + 0xadd8a7cb, 0xf6797b01, 0x1a9b1e5f, 0x413ac295, + 0xc79ec954, 0x9c3f159e, 0x70dd70c0, 0x2b7cac0a, + 0x79547af5, 0x22f5a63f, 0xce17c361, 0x95b61fab, + 0x1312146a, 0x48b3c8a0, 0xa451adfe, 0xfff07134, + 0x5f705221, 0x04d18eeb, 0xe833ebb5, 0xb392377f, + 0x35363cbe, 0x6e97e074, 0x8275852a, 0xd9d459e0, + 0x8bfc8f1f, 0xd05d53d5, 0x3cbf368b, 0x671eea41, + 0xe1bae180, 0xba1b3d4a, 0x56f95814, 0x0d5884de, + 0xf2a8f5ea, 0xa9092920, 0x45eb4c7e, 0x1e4a90b4, + 0x98ee9b75, 0xc34f47bf, 0x2fad22e1, 0x740cfe2b, + 0x262428d4, 0x7d85f41e, 0x91679140, 0xcac64d8a, + 0x4c62464b, 0x17c39a81, 0xfb21ffdf, 0xa0802315, + 0xbee0a442, 0xe5417888, 0x09a31dd6, 0x5202c11c, + 0xd4a6cadd, 0x8f071617, 0x63e57349, 0x3844af83, + 0x6a6c797c, 0x31cda5b6, 0xdd2fc0e8, 0x868e1c22, + 0x002a17e3, 0x5b8bcb29, 0xb769ae77, 0xecc872bd, + 0x13380389, 0x4899df43, 0xa47bba1d, 0xffda66d7, + 0x797e6d16, 0x22dfb1dc, 0xce3dd482, 0x959c0848, + 0xc7b4deb7, 0x9c15027d, 0x70f76723, 0x2b56bbe9, + 0xadf2b028, 0xf6536ce2, 0x1ab109bc, 0x4110d576, + 0xe190f663, 0xba312aa9, 0x56d34ff7, 0x0d72933d, + 0x8bd698fc, 0xd0774436, 0x3c952168, 0x6734fda2, + 0x351c2b5d, 0x6ebdf797, 0x825f92c9, 0xd9fe4e03, + 0x5f5a45c2, 0x04fb9908, 0xe819fc56, 0xb3b8209c, + 0x4c4851a8, 0x17e98d62, 0xfb0be83c, 0xa0aa34f6, + 0x260e3f37, 0x7dafe3fd, 0x914d86a3, 0xcaec5a69, + 0x98c48c96, 0xc365505c, 0x2f873502, 0x7426e9c8, + 0xf282e209, 0xa9233ec3, 0x45c15b9d, 0x1e608757, + 0x79005533, 0x22a189f9, 0xce43eca7, 0x95e2306d, + 0x13463bac, 0x48e7e766, 0xa4058238, 0xffa45ef2, + 0xad8c880d, 0xf62d54c7, 0x1acf3199, 0x416eed53, + 0xc7cae692, 0x9c6b3a58, 0x70895f06, 0x2b2883cc, + 0xd4d8f2f8, 0x8f792e32, 0x639b4b6c, 0x383a97a6, + 0xbe9e9c67, 0xe53f40ad, 0x09dd25f3, 0x527cf939, + 0x00542fc6, 0x5bf5f30c, 0xb7179652, 0xecb64a98, + 0x6a124159, 0x31b39d93, 0xdd51f8cd, 0x86f02407, + 0x26700712, 0x7dd1dbd8, 0x9133be86, 0xca92624c, + 0x4c36698d, 0x1797b547, 0xfb75d019, 0xa0d40cd3, + 0xf2fcda2c, 0xa95d06e6, 0x45bf63b8, 0x1e1ebf72, + 0x98bab4b3, 0xc31b6879, 0x2ff90d27, 0x7458d1ed, + 0x8ba8a0d9, 0xd0097c13, 0x3ceb194d, 0x674ac587, + 0xe1eece46, 0xba4f128c, 0x56ad77d2, 0x0d0cab18, + 0x5f247de7, 0x0485a12d, 0xe867c473, 0xb3c618b9, + 0x35621378, 0x6ec3cfb2, 0x8221aaec, 0xd9807626, + 0xc7e0f171, 0x9c412dbb, 0x70a348e5, 0x2b02942f, + 0xada69fee, 0xf6074324, 0x1ae5267a, 0x4144fab0, + 0x136c2c4f, 0x48cdf085, 0xa42f95db, 0xff8e4911, + 0x792a42d0, 0x228b9e1a, 0xce69fb44, 0x95c8278e, + 0x6a3856ba, 0x31998a70, 0xdd7bef2e, 0x86da33e4, + 0x007e3825, 0x5bdfe4ef, 0xb73d81b1, 0xec9c5d7b, + 0xbeb48b84, 0xe515574e, 0x09f73210, 0x5256eeda, + 0xd4f2e51b, 0x8f5339d1, 0x63b15c8f, 0x38108045, + 0x9890a350, 0xc3317f9a, 0x2fd31ac4, 0x7472c60e, + 0xf2d6cdcf, 0xa9771105, 0x4595745b, 0x1e34a891, + 0x4c1c7e6e, 0x17bda2a4, 0xfb5fc7fa, 0xa0fe1b30, + 0x265a10f1, 0x7dfbcc3b, 0x9119a965, 0xcab875af, + 0x3548049b, 0x6ee9d851, 0x820bbd0f, 0xd9aa61c5, + 0x5f0e6a04, 0x04afb6ce, 0xe84dd390, 0xb3ec0f5a, + 0xe1c4d9a5, 0xba65056f, 0x56876031, 0x0d26bcfb, + 0x8b82b73a, 0xd0236bf0, 0x3cc10eae, 0x6760d264, + }, + { + 0x00000000, 0xf200aa66, 0xe0c0497b, 0x12c0e31d, + 0xc5418f41, 0x37412527, 0x2581c63a, 0xd7816c5c, + 0x8e420335, 0x7c42a953, 0x6e824a4e, 0x9c82e028, + 0x4b038c74, 0xb9032612, 0xabc3c50f, 0x59c36f69, + 0x18451bdd, 0xea45b1bb, 0xf88552a6, 0x0a85f8c0, + 0xdd04949c, 0x2f043efa, 0x3dc4dde7, 0xcfc47781, + 0x960718e8, 0x6407b28e, 0x76c75193, 0x84c7fbf5, + 0x534697a9, 0xa1463dcf, 0xb386ded2, 0x418674b4, + 0x308a37ba, 0xc28a9ddc, 0xd04a7ec1, 0x224ad4a7, + 0xf5cbb8fb, 0x07cb129d, 0x150bf180, 0xe70b5be6, + 0xbec8348f, 0x4cc89ee9, 0x5e087df4, 0xac08d792, + 0x7b89bbce, 0x898911a8, 0x9b49f2b5, 0x694958d3, + 0x28cf2c67, 0xdacf8601, 0xc80f651c, 0x3a0fcf7a, + 0xed8ea326, 0x1f8e0940, 0x0d4eea5d, 0xff4e403b, + 0xa68d2f52, 0x548d8534, 0x464d6629, 0xb44dcc4f, + 0x63cca013, 0x91cc0a75, 0x830ce968, 0x710c430e, + 0x61146f74, 0x9314c512, 0x81d4260f, 0x73d48c69, + 0xa455e035, 0x56554a53, 0x4495a94e, 0xb6950328, + 0xef566c41, 0x1d56c627, 0x0f96253a, 0xfd968f5c, + 0x2a17e300, 0xd8174966, 0xcad7aa7b, 0x38d7001d, + 0x795174a9, 0x8b51decf, 0x99913dd2, 0x6b9197b4, + 0xbc10fbe8, 0x4e10518e, 0x5cd0b293, 0xaed018f5, + 0xf713779c, 0x0513ddfa, 0x17d33ee7, 0xe5d39481, + 0x3252f8dd, 0xc05252bb, 0xd292b1a6, 0x20921bc0, + 0x519e58ce, 0xa39ef2a8, 0xb15e11b5, 0x435ebbd3, + 0x94dfd78f, 0x66df7de9, 0x741f9ef4, 0x861f3492, + 0xdfdc5bfb, 0x2ddcf19d, 0x3f1c1280, 0xcd1cb8e6, + 0x1a9dd4ba, 0xe89d7edc, 0xfa5d9dc1, 0x085d37a7, + 0x49db4313, 0xbbdbe975, 0xa91b0a68, 0x5b1ba00e, + 0x8c9acc52, 0x7e9a6634, 0x6c5a8529, 0x9e5a2f4f, + 0xc7994026, 0x3599ea40, 0x2759095d, 0xd559a33b, + 0x02d8cf67, 0xf0d86501, 0xe218861c, 0x10182c7a, + 0xc228dee8, 0x3028748e, 0x22e89793, 0xd0e83df5, + 0x076951a9, 0xf569fbcf, 0xe7a918d2, 0x15a9b2b4, + 0x4c6adddd, 0xbe6a77bb, 0xacaa94a6, 0x5eaa3ec0, + 0x892b529c, 0x7b2bf8fa, 0x69eb1be7, 0x9bebb181, + 0xda6dc535, 0x286d6f53, 0x3aad8c4e, 0xc8ad2628, + 0x1f2c4a74, 0xed2ce012, 0xffec030f, 0x0deca969, + 0x542fc600, 0xa62f6c66, 0xb4ef8f7b, 0x46ef251d, + 0x916e4941, 0x636ee327, 0x71ae003a, 0x83aeaa5c, + 0xf2a2e952, 0x00a24334, 0x1262a029, 0xe0620a4f, + 0x37e36613, 0xc5e3cc75, 0xd7232f68, 0x2523850e, + 0x7ce0ea67, 0x8ee04001, 0x9c20a31c, 0x6e20097a, + 0xb9a16526, 0x4ba1cf40, 0x59612c5d, 0xab61863b, + 0xeae7f28f, 0x18e758e9, 0x0a27bbf4, 0xf8271192, + 0x2fa67dce, 0xdda6d7a8, 0xcf6634b5, 0x3d669ed3, + 0x64a5f1ba, 0x96a55bdc, 0x8465b8c1, 0x766512a7, + 0xa1e47efb, 0x53e4d49d, 0x41243780, 0xb3249de6, + 0xa33cb19c, 0x513c1bfa, 0x43fcf8e7, 0xb1fc5281, + 0x667d3edd, 0x947d94bb, 0x86bd77a6, 0x74bdddc0, + 0x2d7eb2a9, 0xdf7e18cf, 0xcdbefbd2, 0x3fbe51b4, + 0xe83f3de8, 0x1a3f978e, 0x08ff7493, 0xfaffdef5, + 0xbb79aa41, 0x49790027, 0x5bb9e33a, 0xa9b9495c, + 0x7e382500, 0x8c388f66, 0x9ef86c7b, 0x6cf8c61d, + 0x353ba974, 0xc73b0312, 0xd5fbe00f, 0x27fb4a69, + 0xf07a2635, 0x027a8c53, 0x10ba6f4e, 0xe2bac528, + 0x93b68626, 0x61b62c40, 0x7376cf5d, 0x8176653b, + 0x56f70967, 0xa4f7a301, 0xb637401c, 0x4437ea7a, + 0x1df48513, 0xeff42f75, 0xfd34cc68, 0x0f34660e, + 0xd8b50a52, 0x2ab5a034, 0x38754329, 0xca75e94f, + 0x8bf39dfb, 0x79f3379d, 0x6b33d480, 0x99337ee6, + 0x4eb212ba, 0xbcb2b8dc, 0xae725bc1, 0x5c72f1a7, + 0x05b19ece, 0xf7b134a8, 0xe571d7b5, 0x17717dd3, + 0xc0f0118f, 0x32f0bbe9, 0x203058f4, 0xd230f292, + }, + { + 0x00000000, 0x8090a067, 0x05e05d79, 0x8570fd1e, + 0x0bc0baf2, 0x8b501a95, 0x0e20e78b, 0x8eb047ec, + 0x178175e4, 0x9711d583, 0x1261289d, 0x92f188fa, + 0x1c41cf16, 0x9cd16f71, 0x19a1926f, 0x99313208, + 0x2f02ebc8, 0xaf924baf, 0x2ae2b6b1, 0xaa7216d6, + 0x24c2513a, 0xa452f15d, 0x21220c43, 0xa1b2ac24, + 0x38839e2c, 0xb8133e4b, 0x3d63c355, 0xbdf36332, + 0x334324de, 0xb3d384b9, 0x36a379a7, 0xb633d9c0, + 0x5e05d790, 0xde9577f7, 0x5be58ae9, 0xdb752a8e, + 0x55c56d62, 0xd555cd05, 0x5025301b, 0xd0b5907c, + 0x4984a274, 0xc9140213, 0x4c64ff0d, 0xccf45f6a, + 0x42441886, 0xc2d4b8e1, 0x47a445ff, 0xc734e598, + 0x71073c58, 0xf1979c3f, 0x74e76121, 0xf477c146, + 0x7ac786aa, 0xfa5726cd, 0x7f27dbd3, 0xffb77bb4, + 0x668649bc, 0xe616e9db, 0x636614c5, 0xe3f6b4a2, + 0x6d46f34e, 0xedd65329, 0x68a6ae37, 0xe8360e50, + 0xbc0baf20, 0x3c9b0f47, 0xb9ebf259, 0x397b523e, + 0xb7cb15d2, 0x375bb5b5, 0xb22b48ab, 0x32bbe8cc, + 0xab8adac4, 0x2b1a7aa3, 0xae6a87bd, 0x2efa27da, + 0xa04a6036, 0x20dac051, 0xa5aa3d4f, 0x253a9d28, + 0x930944e8, 0x1399e48f, 0x96e91991, 0x1679b9f6, + 0x98c9fe1a, 0x18595e7d, 0x9d29a363, 0x1db90304, + 0x8488310c, 0x0418916b, 0x81686c75, 0x01f8cc12, + 0x8f488bfe, 0x0fd82b99, 0x8aa8d687, 0x0a3876e0, + 0xe20e78b0, 0x629ed8d7, 0xe7ee25c9, 0x677e85ae, + 0xe9cec242, 0x695e6225, 0xec2e9f3b, 0x6cbe3f5c, + 0xf58f0d54, 0x751fad33, 0xf06f502d, 0x70fff04a, + 0xfe4fb7a6, 0x7edf17c1, 0xfbafeadf, 0x7b3f4ab8, + 0xcd0c9378, 0x4d9c331f, 0xc8ecce01, 0x487c6e66, + 0xc6cc298a, 0x465c89ed, 0xc32c74f3, 0x43bcd494, + 0xda8de69c, 0x5a1d46fb, 0xdf6dbbe5, 0x5ffd1b82, + 0xd14d5c6e, 0x51ddfc09, 0xd4ad0117, 0x543da170, + 0x7cd643f7, 0xfc46e390, 0x79361e8e, 0xf9a6bee9, + 0x7716f905, 0xf7865962, 0x72f6a47c, 0xf266041b, + 0x6b573613, 0xebc79674, 0x6eb76b6a, 0xee27cb0d, + 0x60978ce1, 0xe0072c86, 0x6577d198, 0xe5e771ff, + 0x53d4a83f, 0xd3440858, 0x5634f546, 0xd6a45521, + 0x581412cd, 0xd884b2aa, 0x5df44fb4, 0xdd64efd3, + 0x4455dddb, 0xc4c57dbc, 0x41b580a2, 0xc12520c5, + 0x4f956729, 0xcf05c74e, 0x4a753a50, 0xcae59a37, + 0x22d39467, 0xa2433400, 0x2733c91e, 0xa7a36979, + 0x29132e95, 0xa9838ef2, 0x2cf373ec, 0xac63d38b, + 0x3552e183, 0xb5c241e4, 0x30b2bcfa, 0xb0221c9d, + 0x3e925b71, 0xbe02fb16, 0x3b720608, 0xbbe2a66f, + 0x0dd17faf, 0x8d41dfc8, 0x083122d6, 0x88a182b1, + 0x0611c55d, 0x8681653a, 0x03f19824, 0x83613843, + 0x1a500a4b, 0x9ac0aa2c, 0x1fb05732, 0x9f20f755, + 0x1190b0b9, 0x910010de, 0x1470edc0, 0x94e04da7, + 0xc0ddecd7, 0x404d4cb0, 0xc53db1ae, 0x45ad11c9, + 0xcb1d5625, 0x4b8df642, 0xcefd0b5c, 0x4e6dab3b, + 0xd75c9933, 0x57cc3954, 0xd2bcc44a, 0x522c642d, + 0xdc9c23c1, 0x5c0c83a6, 0xd97c7eb8, 0x59ecdedf, + 0xefdf071f, 0x6f4fa778, 0xea3f5a66, 0x6aaffa01, + 0xe41fbded, 0x648f1d8a, 0xe1ffe094, 0x616f40f3, + 0xf85e72fb, 0x78ced29c, 0xfdbe2f82, 0x7d2e8fe5, + 0xf39ec809, 0x730e686e, 0xf67e9570, 0x76ee3517, + 0x9ed83b47, 0x1e489b20, 0x9b38663e, 0x1ba8c659, + 0x951881b5, 0x158821d2, 0x90f8dccc, 0x10687cab, + 0x89594ea3, 0x09c9eec4, 0x8cb913da, 0x0c29b3bd, + 0x8299f451, 0x02095436, 0x8779a928, 0x07e9094f, + 0xb1dad08f, 0x314a70e8, 0xb43a8df6, 0x34aa2d91, + 0xba1a6a7d, 0x3a8aca1a, 0xbffa3704, 0x3f6a9763, + 0xa65ba56b, 0x26cb050c, 0xa3bbf812, 0x232b5875, + 0xad9b1f99, 0x2d0bbffe, 0xa87b42e0, 0x28ebe287, + }, + { + 0x00000000, 0xf9ac87ee, 0xf798126b, 0x0e349585, + 0xebf13961, 0x125dbe8f, 0x1c692b0a, 0xe5c5ace4, + 0xd3236f75, 0x2a8fe89b, 0x24bb7d1e, 0xdd17faf0, + 0x38d25614, 0xc17ed1fa, 0xcf4a447f, 0x36e6c391, + 0xa287c35d, 0x5b2b44b3, 0x551fd136, 0xacb356d8, + 0x4976fa3c, 0xb0da7dd2, 0xbeeee857, 0x47426fb9, + 0x71a4ac28, 0x88082bc6, 0x863cbe43, 0x7f9039ad, + 0x9a559549, 0x63f912a7, 0x6dcd8722, 0x946100cc, + 0x41ce9b0d, 0xb8621ce3, 0xb6568966, 0x4ffa0e88, + 0xaa3fa26c, 0x53932582, 0x5da7b007, 0xa40b37e9, + 0x92edf478, 0x6b417396, 0x6575e613, 0x9cd961fd, + 0x791ccd19, 0x80b04af7, 0x8e84df72, 0x7728589c, + 0xe3495850, 0x1ae5dfbe, 0x14d14a3b, 0xed7dcdd5, + 0x08b86131, 0xf114e6df, 0xff20735a, 0x068cf4b4, + 0x306a3725, 0xc9c6b0cb, 0xc7f2254e, 0x3e5ea2a0, + 0xdb9b0e44, 0x223789aa, 0x2c031c2f, 0xd5af9bc1, + 0x839d361a, 0x7a31b1f4, 0x74052471, 0x8da9a39f, + 0x686c0f7b, 0x91c08895, 0x9ff41d10, 0x66589afe, + 0x50be596f, 0xa912de81, 0xa7264b04, 0x5e8accea, + 0xbb4f600e, 0x42e3e7e0, 0x4cd77265, 0xb57bf58b, + 0x211af547, 0xd8b672a9, 0xd682e72c, 0x2f2e60c2, + 0xcaebcc26, 0x33474bc8, 0x3d73de4d, 0xc4df59a3, + 0xf2399a32, 0x0b951ddc, 0x05a18859, 0xfc0d0fb7, + 0x19c8a353, 0xe06424bd, 0xee50b138, 0x17fc36d6, + 0xc253ad17, 0x3bff2af9, 0x35cbbf7c, 0xcc673892, + 0x29a29476, 0xd00e1398, 0xde3a861d, 0x279601f3, + 0x1170c262, 0xe8dc458c, 0xe6e8d009, 0x1f4457e7, + 0xfa81fb03, 0x032d7ced, 0x0d19e968, 0xf4b56e86, + 0x60d46e4a, 0x9978e9a4, 0x974c7c21, 0x6ee0fbcf, + 0x8b25572b, 0x7289d0c5, 0x7cbd4540, 0x8511c2ae, + 0xb3f7013f, 0x4a5b86d1, 0x446f1354, 0xbdc394ba, + 0x5806385e, 0xa1aabfb0, 0xaf9e2a35, 0x5632addb, + 0x03fb7183, 0xfa57f66d, 0xf46363e8, 0x0dcfe406, + 0xe80a48e2, 0x11a6cf0c, 0x1f925a89, 0xe63edd67, + 0xd0d81ef6, 0x29749918, 0x27400c9d, 0xdeec8b73, + 0x3b292797, 0xc285a079, 0xccb135fc, 0x351db212, + 0xa17cb2de, 0x58d03530, 0x56e4a0b5, 0xaf48275b, + 0x4a8d8bbf, 0xb3210c51, 0xbd1599d4, 0x44b91e3a, + 0x725fddab, 0x8bf35a45, 0x85c7cfc0, 0x7c6b482e, + 0x99aee4ca, 0x60026324, 0x6e36f6a1, 0x979a714f, + 0x4235ea8e, 0xbb996d60, 0xb5adf8e5, 0x4c017f0b, + 0xa9c4d3ef, 0x50685401, 0x5e5cc184, 0xa7f0466a, + 0x911685fb, 0x68ba0215, 0x668e9790, 0x9f22107e, + 0x7ae7bc9a, 0x834b3b74, 0x8d7faef1, 0x74d3291f, + 0xe0b229d3, 0x191eae3d, 0x172a3bb8, 0xee86bc56, + 0x0b4310b2, 0xf2ef975c, 0xfcdb02d9, 0x05778537, + 0x339146a6, 0xca3dc148, 0xc40954cd, 0x3da5d323, + 0xd8607fc7, 0x21ccf829, 0x2ff86dac, 0xd654ea42, + 0x80664799, 0x79cac077, 0x77fe55f2, 0x8e52d21c, + 0x6b977ef8, 0x923bf916, 0x9c0f6c93, 0x65a3eb7d, + 0x534528ec, 0xaae9af02, 0xa4dd3a87, 0x5d71bd69, + 0xb8b4118d, 0x41189663, 0x4f2c03e6, 0xb6808408, + 0x22e184c4, 0xdb4d032a, 0xd57996af, 0x2cd51141, + 0xc910bda5, 0x30bc3a4b, 0x3e88afce, 0xc7242820, + 0xf1c2ebb1, 0x086e6c5f, 0x065af9da, 0xfff67e34, + 0x1a33d2d0, 0xe39f553e, 0xedabc0bb, 0x14074755, + 0xc1a8dc94, 0x38045b7a, 0x3630ceff, 0xcf9c4911, + 0x2a59e5f5, 0xd3f5621b, 0xddc1f79e, 0x246d7070, + 0x128bb3e1, 0xeb27340f, 0xe513a18a, 0x1cbf2664, + 0xf97a8a80, 0x00d60d6e, 0x0ee298eb, 0xf74e1f05, + 0x632f1fc9, 0x9a839827, 0x94b70da2, 0x6d1b8a4c, + 0x88de26a8, 0x7172a146, 0x7f4634c3, 0x86eab32d, + 0xb00c70bc, 0x49a0f752, 0x479462d7, 0xbe38e539, + 0x5bfd49dd, 0xa251ce33, 0xac655bb6, 0x55c9dc58, + }, + { + 0x00000000, 0x07f6e306, 0x0fedc60c, 0x081b250a, + 0x1fdb8c18, 0x182d6f1e, 0x10364a14, 0x17c0a912, + 0x3fb71830, 0x3841fb36, 0x305ade3c, 0x37ac3d3a, + 0x206c9428, 0x279a772e, 0x2f815224, 0x2877b122, + 0x7f6e3060, 0x7898d366, 0x7083f66c, 0x7775156a, + 0x60b5bc78, 0x67435f7e, 0x6f587a74, 0x68ae9972, + 0x40d92850, 0x472fcb56, 0x4f34ee5c, 0x48c20d5a, + 0x5f02a448, 0x58f4474e, 0x50ef6244, 0x57198142, + 0xfedc60c0, 0xf92a83c6, 0xf131a6cc, 0xf6c745ca, + 0xe107ecd8, 0xe6f10fde, 0xeeea2ad4, 0xe91cc9d2, + 0xc16b78f0, 0xc69d9bf6, 0xce86befc, 0xc9705dfa, + 0xdeb0f4e8, 0xd94617ee, 0xd15d32e4, 0xd6abd1e2, + 0x81b250a0, 0x8644b3a6, 0x8e5f96ac, 0x89a975aa, + 0x9e69dcb8, 0x999f3fbe, 0x91841ab4, 0x9672f9b2, + 0xbe054890, 0xb9f3ab96, 0xb1e88e9c, 0xb61e6d9a, + 0xa1dec488, 0xa628278e, 0xae330284, 0xa9c5e182, + 0xf979dc37, 0xfe8f3f31, 0xf6941a3b, 0xf162f93d, + 0xe6a2502f, 0xe154b329, 0xe94f9623, 0xeeb97525, + 0xc6cec407, 0xc1382701, 0xc923020b, 0xced5e10d, + 0xd915481f, 0xdee3ab19, 0xd6f88e13, 0xd10e6d15, + 0x8617ec57, 0x81e10f51, 0x89fa2a5b, 0x8e0cc95d, + 0x99cc604f, 0x9e3a8349, 0x9621a643, 0x91d74545, + 0xb9a0f467, 0xbe561761, 0xb64d326b, 0xb1bbd16d, + 0xa67b787f, 0xa18d9b79, 0xa996be73, 0xae605d75, + 0x07a5bcf7, 0x00535ff1, 0x08487afb, 0x0fbe99fd, + 0x187e30ef, 0x1f88d3e9, 0x1793f6e3, 0x106515e5, + 0x3812a4c7, 0x3fe447c1, 0x37ff62cb, 0x300981cd, + 0x27c928df, 0x203fcbd9, 0x2824eed3, 0x2fd20dd5, + 0x78cb8c97, 0x7f3d6f91, 0x77264a9b, 0x70d0a99d, + 0x6710008f, 0x60e6e389, 0x68fdc683, 0x6f0b2585, + 0x477c94a7, 0x408a77a1, 0x489152ab, 0x4f67b1ad, + 0x58a718bf, 0x5f51fbb9, 0x574adeb3, 0x50bc3db5, + 0xf632a5d9, 0xf1c446df, 0xf9df63d5, 0xfe2980d3, + 0xe9e929c1, 0xee1fcac7, 0xe604efcd, 0xe1f20ccb, + 0xc985bde9, 0xce735eef, 0xc6687be5, 0xc19e98e3, + 0xd65e31f1, 0xd1a8d2f7, 0xd9b3f7fd, 0xde4514fb, + 0x895c95b9, 0x8eaa76bf, 0x86b153b5, 0x8147b0b3, + 0x968719a1, 0x9171faa7, 0x996adfad, 0x9e9c3cab, + 0xb6eb8d89, 0xb11d6e8f, 0xb9064b85, 0xbef0a883, + 0xa9300191, 0xaec6e297, 0xa6ddc79d, 0xa12b249b, + 0x08eec519, 0x0f18261f, 0x07030315, 0x00f5e013, + 0x17354901, 0x10c3aa07, 0x18d88f0d, 0x1f2e6c0b, + 0x3759dd29, 0x30af3e2f, 0x38b41b25, 0x3f42f823, + 0x28825131, 0x2f74b237, 0x276f973d, 0x2099743b, + 0x7780f579, 0x7076167f, 0x786d3375, 0x7f9bd073, + 0x685b7961, 0x6fad9a67, 0x67b6bf6d, 0x60405c6b, + 0x4837ed49, 0x4fc10e4f, 0x47da2b45, 0x402cc843, + 0x57ec6151, 0x501a8257, 0x5801a75d, 0x5ff7445b, + 0x0f4b79ee, 0x08bd9ae8, 0x00a6bfe2, 0x07505ce4, + 0x1090f5f6, 0x176616f0, 0x1f7d33fa, 0x188bd0fc, + 0x30fc61de, 0x370a82d8, 0x3f11a7d2, 0x38e744d4, + 0x2f27edc6, 0x28d10ec0, 0x20ca2bca, 0x273cc8cc, + 0x7025498e, 0x77d3aa88, 0x7fc88f82, 0x783e6c84, + 0x6ffec596, 0x68082690, 0x6013039a, 0x67e5e09c, + 0x4f9251be, 0x4864b2b8, 0x407f97b2, 0x478974b4, + 0x5049dda6, 0x57bf3ea0, 0x5fa41baa, 0x5852f8ac, + 0xf197192e, 0xf661fa28, 0xfe7adf22, 0xf98c3c24, + 0xee4c9536, 0xe9ba7630, 0xe1a1533a, 0xe657b03c, + 0xce20011e, 0xc9d6e218, 0xc1cdc712, 0xc63b2414, + 0xd1fb8d06, 0xd60d6e00, 0xde164b0a, 0xd9e0a80c, + 0x8ef9294e, 0x890fca48, 0x8114ef42, 0x86e20c44, + 0x9122a556, 0x96d44650, 0x9ecf635a, 0x9939805c, + 0xb14e317e, 0xb6b8d278, 0xbea3f772, 0xb9551474, + 0xae95bd66, 0xa9635e60, 0xa1787b6a, 0xa68e986c, + }, + { + 0x00000000, 0xe8a45605, 0xd589b1bd, 0x3d2de7b8, + 0xafd27ecd, 0x477628c8, 0x7a5bcf70, 0x92ff9975, + 0x5b65e02d, 0xb3c1b628, 0x8eec5190, 0x66480795, + 0xf4b79ee0, 0x1c13c8e5, 0x213e2f5d, 0xc99a7958, + 0xb6cbc05a, 0x5e6f965f, 0x634271e7, 0x8be627e2, + 0x1919be97, 0xf1bde892, 0xcc900f2a, 0x2434592f, + 0xedae2077, 0x050a7672, 0x382791ca, 0xd083c7cf, + 0x427c5eba, 0xaad808bf, 0x97f5ef07, 0x7f51b902, + 0x69569d03, 0x81f2cb06, 0xbcdf2cbe, 0x547b7abb, + 0xc684e3ce, 0x2e20b5cb, 0x130d5273, 0xfba90476, + 0x32337d2e, 0xda972b2b, 0xe7bacc93, 0x0f1e9a96, + 0x9de103e3, 0x754555e6, 0x4868b25e, 0xa0cce45b, + 0xdf9d5d59, 0x37390b5c, 0x0a14ece4, 0xe2b0bae1, + 0x704f2394, 0x98eb7591, 0xa5c69229, 0x4d62c42c, + 0x84f8bd74, 0x6c5ceb71, 0x51710cc9, 0xb9d55acc, + 0x2b2ac3b9, 0xc38e95bc, 0xfea37204, 0x16072401, + 0xd2ad3a06, 0x3a096c03, 0x07248bbb, 0xef80ddbe, + 0x7d7f44cb, 0x95db12ce, 0xa8f6f576, 0x4052a373, + 0x89c8da2b, 0x616c8c2e, 0x5c416b96, 0xb4e53d93, + 0x261aa4e6, 0xcebef2e3, 0xf393155b, 0x1b37435e, + 0x6466fa5c, 0x8cc2ac59, 0xb1ef4be1, 0x594b1de4, + 0xcbb48491, 0x2310d294, 0x1e3d352c, 0xf6996329, + 0x3f031a71, 0xd7a74c74, 0xea8aabcc, 0x022efdc9, + 0x90d164bc, 0x787532b9, 0x4558d501, 0xadfc8304, + 0xbbfba705, 0x535ff100, 0x6e7216b8, 0x86d640bd, + 0x1429d9c8, 0xfc8d8fcd, 0xc1a06875, 0x29043e70, + 0xe09e4728, 0x083a112d, 0x3517f695, 0xddb3a090, + 0x4f4c39e5, 0xa7e86fe0, 0x9ac58858, 0x7261de5d, + 0x0d30675f, 0xe594315a, 0xd8b9d6e2, 0x301d80e7, + 0xa2e21992, 0x4a464f97, 0x776ba82f, 0x9fcffe2a, + 0x56558772, 0xbef1d177, 0x83dc36cf, 0x6b7860ca, + 0xf987f9bf, 0x1123afba, 0x2c0e4802, 0xc4aa1e07, + 0xa19b69bb, 0x493f3fbe, 0x7412d806, 0x9cb68e03, + 0x0e491776, 0xe6ed4173, 0xdbc0a6cb, 0x3364f0ce, + 0xfafe8996, 0x125adf93, 0x2f77382b, 0xc7d36e2e, + 0x552cf75b, 0xbd88a15e, 0x80a546e6, 0x680110e3, + 0x1750a9e1, 0xfff4ffe4, 0xc2d9185c, 0x2a7d4e59, + 0xb882d72c, 0x50268129, 0x6d0b6691, 0x85af3094, + 0x4c3549cc, 0xa4911fc9, 0x99bcf871, 0x7118ae74, + 0xe3e73701, 0x0b436104, 0x366e86bc, 0xdecad0b9, + 0xc8cdf4b8, 0x2069a2bd, 0x1d444505, 0xf5e01300, + 0x671f8a75, 0x8fbbdc70, 0xb2963bc8, 0x5a326dcd, + 0x93a81495, 0x7b0c4290, 0x4621a528, 0xae85f32d, + 0x3c7a6a58, 0xd4de3c5d, 0xe9f3dbe5, 0x01578de0, + 0x7e0634e2, 0x96a262e7, 0xab8f855f, 0x432bd35a, + 0xd1d44a2f, 0x39701c2a, 0x045dfb92, 0xecf9ad97, + 0x2563d4cf, 0xcdc782ca, 0xf0ea6572, 0x184e3377, + 0x8ab1aa02, 0x6215fc07, 0x5f381bbf, 0xb79c4dba, + 0x733653bd, 0x9b9205b8, 0xa6bfe200, 0x4e1bb405, + 0xdce42d70, 0x34407b75, 0x096d9ccd, 0xe1c9cac8, + 0x2853b390, 0xc0f7e595, 0xfdda022d, 0x157e5428, + 0x8781cd5d, 0x6f259b58, 0x52087ce0, 0xbaac2ae5, + 0xc5fd93e7, 0x2d59c5e2, 0x1074225a, 0xf8d0745f, + 0x6a2fed2a, 0x828bbb2f, 0xbfa65c97, 0x57020a92, + 0x9e9873ca, 0x763c25cf, 0x4b11c277, 0xa3b59472, + 0x314a0d07, 0xd9ee5b02, 0xe4c3bcba, 0x0c67eabf, + 0x1a60cebe, 0xf2c498bb, 0xcfe97f03, 0x274d2906, + 0xb5b2b073, 0x5d16e676, 0x603b01ce, 0x889f57cb, + 0x41052e93, 0xa9a17896, 0x948c9f2e, 0x7c28c92b, + 0xeed7505e, 0x0673065b, 0x3b5ee1e3, 0xd3fab7e6, + 0xacab0ee4, 0x440f58e1, 0x7922bf59, 0x9186e95c, + 0x03797029, 0xebdd262c, 0xd6f0c194, 0x3e549791, + 0xf7ceeec9, 0x1f6ab8cc, 0x22475f74, 0xcae30971, + 0x581c9004, 0xb0b8c601, 0x8d9521b9, 0x653177bc, + }, + { + 0x00000000, 0x47f7cec1, 0x8fef9d82, 0xc8185343, + 0x1b1e26b3, 0x5ce9e872, 0x94f1bb31, 0xd30675f0, + 0x363c4d66, 0x71cb83a7, 0xb9d3d0e4, 0xfe241e25, + 0x2d226bd5, 0x6ad5a514, 0xa2cdf657, 0xe53a3896, + 0x6c789acc, 0x2b8f540d, 0xe397074e, 0xa460c98f, + 0x7766bc7f, 0x309172be, 0xf88921fd, 0xbf7eef3c, + 0x5a44d7aa, 0x1db3196b, 0xd5ab4a28, 0x925c84e9, + 0x415af119, 0x06ad3fd8, 0xceb56c9b, 0x8942a25a, + 0xd8f13598, 0x9f06fb59, 0x571ea81a, 0x10e966db, + 0xc3ef132b, 0x8418ddea, 0x4c008ea9, 0x0bf74068, + 0xeecd78fe, 0xa93ab63f, 0x6122e57c, 0x26d52bbd, + 0xf5d35e4d, 0xb224908c, 0x7a3cc3cf, 0x3dcb0d0e, + 0xb489af54, 0xf37e6195, 0x3b6632d6, 0x7c91fc17, + 0xaf9789e7, 0xe8604726, 0x20781465, 0x678fdaa4, + 0x82b5e232, 0xc5422cf3, 0x0d5a7fb0, 0x4aadb171, + 0x99abc481, 0xde5c0a40, 0x16445903, 0x51b397c2, + 0xb5237687, 0xf2d4b846, 0x3acceb05, 0x7d3b25c4, + 0xae3d5034, 0xe9ca9ef5, 0x21d2cdb6, 0x66250377, + 0x831f3be1, 0xc4e8f520, 0x0cf0a663, 0x4b0768a2, + 0x98011d52, 0xdff6d393, 0x17ee80d0, 0x50194e11, + 0xd95bec4b, 0x9eac228a, 0x56b471c9, 0x1143bf08, + 0xc245caf8, 0x85b20439, 0x4daa577a, 0x0a5d99bb, + 0xef67a12d, 0xa8906fec, 0x60883caf, 0x277ff26e, + 0xf479879e, 0xb38e495f, 0x7b961a1c, 0x3c61d4dd, + 0x6dd2431f, 0x2a258dde, 0xe23dde9d, 0xa5ca105c, + 0x76cc65ac, 0x313bab6d, 0xf923f82e, 0xbed436ef, + 0x5bee0e79, 0x1c19c0b8, 0xd40193fb, 0x93f65d3a, + 0x40f028ca, 0x0707e60b, 0xcf1fb548, 0x88e87b89, + 0x01aad9d3, 0x465d1712, 0x8e454451, 0xc9b28a90, + 0x1ab4ff60, 0x5d4331a1, 0x955b62e2, 0xd2acac23, + 0x379694b5, 0x70615a74, 0xb8790937, 0xff8ec7f6, + 0x2c88b206, 0x6b7f7cc7, 0xa3672f84, 0xe490e145, + 0x6e87f0b9, 0x29703e78, 0xe1686d3b, 0xa69fa3fa, + 0x7599d60a, 0x326e18cb, 0xfa764b88, 0xbd818549, + 0x58bbbddf, 0x1f4c731e, 0xd754205d, 0x90a3ee9c, + 0x43a59b6c, 0x045255ad, 0xcc4a06ee, 0x8bbdc82f, + 0x02ff6a75, 0x4508a4b4, 0x8d10f7f7, 0xcae73936, + 0x19e14cc6, 0x5e168207, 0x960ed144, 0xd1f91f85, + 0x34c32713, 0x7334e9d2, 0xbb2cba91, 0xfcdb7450, + 0x2fdd01a0, 0x682acf61, 0xa0329c22, 0xe7c552e3, + 0xb676c521, 0xf1810be0, 0x399958a3, 0x7e6e9662, + 0xad68e392, 0xea9f2d53, 0x22877e10, 0x6570b0d1, + 0x804a8847, 0xc7bd4686, 0x0fa515c5, 0x4852db04, + 0x9b54aef4, 0xdca36035, 0x14bb3376, 0x534cfdb7, + 0xda0e5fed, 0x9df9912c, 0x55e1c26f, 0x12160cae, + 0xc110795e, 0x86e7b79f, 0x4effe4dc, 0x09082a1d, + 0xec32128b, 0xabc5dc4a, 0x63dd8f09, 0x242a41c8, + 0xf72c3438, 0xb0dbfaf9, 0x78c3a9ba, 0x3f34677b, + 0xdba4863e, 0x9c5348ff, 0x544b1bbc, 0x13bcd57d, + 0xc0baa08d, 0x874d6e4c, 0x4f553d0f, 0x08a2f3ce, + 0xed98cb58, 0xaa6f0599, 0x627756da, 0x2580981b, + 0xf686edeb, 0xb171232a, 0x79697069, 0x3e9ebea8, + 0xb7dc1cf2, 0xf02bd233, 0x38338170, 0x7fc44fb1, + 0xacc23a41, 0xeb35f480, 0x232da7c3, 0x64da6902, + 0x81e05194, 0xc6179f55, 0x0e0fcc16, 0x49f802d7, + 0x9afe7727, 0xdd09b9e6, 0x1511eaa5, 0x52e62464, + 0x0355b3a6, 0x44a27d67, 0x8cba2e24, 0xcb4de0e5, + 0x184b9515, 0x5fbc5bd4, 0x97a40897, 0xd053c656, + 0x3569fec0, 0x729e3001, 0xba866342, 0xfd71ad83, + 0x2e77d873, 0x698016b2, 0xa19845f1, 0xe66f8b30, + 0x6f2d296a, 0x28dae7ab, 0xe0c2b4e8, 0xa7357a29, + 0x74330fd9, 0x33c4c118, 0xfbdc925b, 0xbc2b5c9a, + 0x5911640c, 0x1ee6aacd, 0xd6fef98e, 0x9109374f, + 0x420f42bf, 0x05f88c7e, 0xcde0df3d, 0x8a1711fc, + }, + { + 0x00000000, 0xdd0fe172, 0xbededf53, 0x63d13e21, + 0x797ca311, 0xa4734263, 0xc7a27c42, 0x1aad9d30, + 0xf2f94622, 0x2ff6a750, 0x4c279971, 0x91287803, + 0x8b85e533, 0x568a0441, 0x355b3a60, 0xe854db12, + 0xe13391f3, 0x3c3c7081, 0x5fed4ea0, 0x82e2afd2, + 0x984f32e2, 0x4540d390, 0x2691edb1, 0xfb9e0cc3, + 0x13cad7d1, 0xcec536a3, 0xad140882, 0x701be9f0, + 0x6ab674c0, 0xb7b995b2, 0xd468ab93, 0x09674ae1, + 0xc6a63e51, 0x1ba9df23, 0x7878e102, 0xa5770070, + 0xbfda9d40, 0x62d57c32, 0x01044213, 0xdc0ba361, + 0x345f7873, 0xe9509901, 0x8a81a720, 0x578e4652, + 0x4d23db62, 0x902c3a10, 0xf3fd0431, 0x2ef2e543, + 0x2795afa2, 0xfa9a4ed0, 0x994b70f1, 0x44449183, + 0x5ee90cb3, 0x83e6edc1, 0xe037d3e0, 0x3d383292, + 0xd56ce980, 0x086308f2, 0x6bb236d3, 0xb6bdd7a1, + 0xac104a91, 0x711fabe3, 0x12ce95c2, 0xcfc174b0, + 0x898d6115, 0x54828067, 0x3753be46, 0xea5c5f34, + 0xf0f1c204, 0x2dfe2376, 0x4e2f1d57, 0x9320fc25, + 0x7b742737, 0xa67bc645, 0xc5aaf864, 0x18a51916, + 0x02088426, 0xdf076554, 0xbcd65b75, 0x61d9ba07, + 0x68bef0e6, 0xb5b11194, 0xd6602fb5, 0x0b6fcec7, + 0x11c253f7, 0xcccdb285, 0xaf1c8ca4, 0x72136dd6, + 0x9a47b6c4, 0x474857b6, 0x24996997, 0xf99688e5, + 0xe33b15d5, 0x3e34f4a7, 0x5de5ca86, 0x80ea2bf4, + 0x4f2b5f44, 0x9224be36, 0xf1f58017, 0x2cfa6165, + 0x3657fc55, 0xeb581d27, 0x88892306, 0x5586c274, + 0xbdd21966, 0x60ddf814, 0x030cc635, 0xde032747, + 0xc4aeba77, 0x19a15b05, 0x7a706524, 0xa77f8456, + 0xae18ceb7, 0x73172fc5, 0x10c611e4, 0xcdc9f096, + 0xd7646da6, 0x0a6b8cd4, 0x69bab2f5, 0xb4b55387, + 0x5ce18895, 0x81ee69e7, 0xe23f57c6, 0x3f30b6b4, + 0x259d2b84, 0xf892caf6, 0x9b43f4d7, 0x464c15a5, + 0x17dbdf9d, 0xcad43eef, 0xa90500ce, 0x740ae1bc, + 0x6ea77c8c, 0xb3a89dfe, 0xd079a3df, 0x0d7642ad, + 0xe52299bf, 0x382d78cd, 0x5bfc46ec, 0x86f3a79e, + 0x9c5e3aae, 0x4151dbdc, 0x2280e5fd, 0xff8f048f, + 0xf6e84e6e, 0x2be7af1c, 0x4836913d, 0x9539704f, + 0x8f94ed7f, 0x529b0c0d, 0x314a322c, 0xec45d35e, + 0x0411084c, 0xd91ee93e, 0xbacfd71f, 0x67c0366d, + 0x7d6dab5d, 0xa0624a2f, 0xc3b3740e, 0x1ebc957c, + 0xd17de1cc, 0x0c7200be, 0x6fa33e9f, 0xb2acdfed, + 0xa80142dd, 0x750ea3af, 0x16df9d8e, 0xcbd07cfc, + 0x2384a7ee, 0xfe8b469c, 0x9d5a78bd, 0x405599cf, + 0x5af804ff, 0x87f7e58d, 0xe426dbac, 0x39293ade, + 0x304e703f, 0xed41914d, 0x8e90af6c, 0x539f4e1e, + 0x4932d32e, 0x943d325c, 0xf7ec0c7d, 0x2ae3ed0f, + 0xc2b7361d, 0x1fb8d76f, 0x7c69e94e, 0xa166083c, + 0xbbcb950c, 0x66c4747e, 0x05154a5f, 0xd81aab2d, + 0x9e56be88, 0x43595ffa, 0x208861db, 0xfd8780a9, + 0xe72a1d99, 0x3a25fceb, 0x59f4c2ca, 0x84fb23b8, + 0x6caff8aa, 0xb1a019d8, 0xd27127f9, 0x0f7ec68b, + 0x15d35bbb, 0xc8dcbac9, 0xab0d84e8, 0x7602659a, + 0x7f652f7b, 0xa26ace09, 0xc1bbf028, 0x1cb4115a, + 0x06198c6a, 0xdb166d18, 0xb8c75339, 0x65c8b24b, + 0x8d9c6959, 0x5093882b, 0x3342b60a, 0xee4d5778, + 0xf4e0ca48, 0x29ef2b3a, 0x4a3e151b, 0x9731f469, + 0x58f080d9, 0x85ff61ab, 0xe62e5f8a, 0x3b21bef8, + 0x218c23c8, 0xfc83c2ba, 0x9f52fc9b, 0x425d1de9, + 0xaa09c6fb, 0x77062789, 0x14d719a8, 0xc9d8f8da, + 0xd37565ea, 0x0e7a8498, 0x6dabbab9, 0xb0a45bcb, + 0xb9c3112a, 0x64ccf058, 0x071dce79, 0xda122f0b, + 0xc0bfb23b, 0x1db05349, 0x7e616d68, 0xa36e8c1a, + 0x4b3a5708, 0x9635b67a, 0xf5e4885b, 0x28eb6929, + 0x3246f419, 0xef49156b, 0x8c982b4a, 0x5197ca38, + }, + { + 0x00000000, 0x2fb7bf3a, 0x5f6f7e74, 0x70d8c14e, + 0xbedefce8, 0x916943d2, 0xe1b1829c, 0xce063da6, + 0x797ce467, 0x56cb5b5d, 0x26139a13, 0x09a42529, + 0xc7a2188f, 0xe815a7b5, 0x98cd66fb, 0xb77ad9c1, + 0xf2f9c8ce, 0xdd4e77f4, 0xad96b6ba, 0x82210980, + 0x4c273426, 0x63908b1c, 0x13484a52, 0x3cfff568, + 0x8b852ca9, 0xa4329393, 0xd4ea52dd, 0xfb5dede7, + 0x355bd041, 0x1aec6f7b, 0x6a34ae35, 0x4583110f, + 0xe1328c2b, 0xce853311, 0xbe5df25f, 0x91ea4d65, + 0x5fec70c3, 0x705bcff9, 0x00830eb7, 0x2f34b18d, + 0x984e684c, 0xb7f9d776, 0xc7211638, 0xe896a902, + 0x269094a4, 0x09272b9e, 0x79ffead0, 0x564855ea, + 0x13cb44e5, 0x3c7cfbdf, 0x4ca43a91, 0x631385ab, + 0xad15b80d, 0x82a20737, 0xf27ac679, 0xddcd7943, + 0x6ab7a082, 0x45001fb8, 0x35d8def6, 0x1a6f61cc, + 0xd4695c6a, 0xfbdee350, 0x8b06221e, 0xa4b19d24, + 0xc6a405e1, 0xe913badb, 0x99cb7b95, 0xb67cc4af, + 0x787af909, 0x57cd4633, 0x2715877d, 0x08a23847, + 0xbfd8e186, 0x906f5ebc, 0xe0b79ff2, 0xcf0020c8, + 0x01061d6e, 0x2eb1a254, 0x5e69631a, 0x71dedc20, + 0x345dcd2f, 0x1bea7215, 0x6b32b35b, 0x44850c61, + 0x8a8331c7, 0xa5348efd, 0xd5ec4fb3, 0xfa5bf089, + 0x4d212948, 0x62969672, 0x124e573c, 0x3df9e806, + 0xf3ffd5a0, 0xdc486a9a, 0xac90abd4, 0x832714ee, + 0x279689ca, 0x082136f0, 0x78f9f7be, 0x574e4884, + 0x99487522, 0xb6ffca18, 0xc6270b56, 0xe990b46c, + 0x5eea6dad, 0x715dd297, 0x018513d9, 0x2e32ace3, + 0xe0349145, 0xcf832e7f, 0xbf5bef31, 0x90ec500b, + 0xd56f4104, 0xfad8fe3e, 0x8a003f70, 0xa5b7804a, + 0x6bb1bdec, 0x440602d6, 0x34dec398, 0x1b697ca2, + 0xac13a563, 0x83a41a59, 0xf37cdb17, 0xdccb642d, + 0x12cd598b, 0x3d7ae6b1, 0x4da227ff, 0x621598c5, + 0x89891675, 0xa63ea94f, 0xd6e66801, 0xf951d73b, + 0x3757ea9d, 0x18e055a7, 0x683894e9, 0x478f2bd3, + 0xf0f5f212, 0xdf424d28, 0xaf9a8c66, 0x802d335c, + 0x4e2b0efa, 0x619cb1c0, 0x1144708e, 0x3ef3cfb4, + 0x7b70debb, 0x54c76181, 0x241fa0cf, 0x0ba81ff5, + 0xc5ae2253, 0xea199d69, 0x9ac15c27, 0xb576e31d, + 0x020c3adc, 0x2dbb85e6, 0x5d6344a8, 0x72d4fb92, + 0xbcd2c634, 0x9365790e, 0xe3bdb840, 0xcc0a077a, + 0x68bb9a5e, 0x470c2564, 0x37d4e42a, 0x18635b10, + 0xd66566b6, 0xf9d2d98c, 0x890a18c2, 0xa6bda7f8, + 0x11c77e39, 0x3e70c103, 0x4ea8004d, 0x611fbf77, + 0xaf1982d1, 0x80ae3deb, 0xf076fca5, 0xdfc1439f, + 0x9a425290, 0xb5f5edaa, 0xc52d2ce4, 0xea9a93de, + 0x249cae78, 0x0b2b1142, 0x7bf3d00c, 0x54446f36, + 0xe33eb6f7, 0xcc8909cd, 0xbc51c883, 0x93e677b9, + 0x5de04a1f, 0x7257f525, 0x028f346b, 0x2d388b51, + 0x4f2d1394, 0x609aacae, 0x10426de0, 0x3ff5d2da, + 0xf1f3ef7c, 0xde445046, 0xae9c9108, 0x812b2e32, + 0x3651f7f3, 0x19e648c9, 0x693e8987, 0x468936bd, + 0x888f0b1b, 0xa738b421, 0xd7e0756f, 0xf857ca55, + 0xbdd4db5a, 0x92636460, 0xe2bba52e, 0xcd0c1a14, + 0x030a27b2, 0x2cbd9888, 0x5c6559c6, 0x73d2e6fc, + 0xc4a83f3d, 0xeb1f8007, 0x9bc74149, 0xb470fe73, + 0x7a76c3d5, 0x55c17cef, 0x2519bda1, 0x0aae029b, + 0xae1f9fbf, 0x81a82085, 0xf170e1cb, 0xdec75ef1, + 0x10c16357, 0x3f76dc6d, 0x4fae1d23, 0x6019a219, + 0xd7637bd8, 0xf8d4c4e2, 0x880c05ac, 0xa7bbba96, + 0x69bd8730, 0x460a380a, 0x36d2f944, 0x1965467e, + 0x5ce65771, 0x7351e84b, 0x03892905, 0x2c3e963f, + 0xe238ab99, 0xcd8f14a3, 0xbd57d5ed, 0x92e06ad7, + 0x259ab316, 0x0a2d0c2c, 0x7af5cd62, 0x55427258, + 0x9b444ffe, 0xb4f3f0c4, 0xc42b318a, 0xeb9c8eb0, + }, +}; diff --git a/ext/digest/crc32_jam/crc32_jam.c b/ext/digest/crc32_jam/crc32_jam.c index f5cd76a..d365d01 100644 --- a/ext/digest/crc32_jam/crc32_jam.c +++ b/ext/digest/crc32_jam/crc32_jam.c @@ -15,54 +15,39 @@ */ #include "crc32_jam.h" - -/** - * Static table used for the table_driven implementation. - */ -static const crc32_t crc32_table[256] = { - 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, - 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, - 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, - 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, - 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, - 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, - 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, - 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, - 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, - 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, - 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, - 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, - 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, - 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, - 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, - 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, - 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, - 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, - 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, - 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, - 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, - 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, - 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, - 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, - 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, - 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, - 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, - 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, - 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, - 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, - 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, - 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d -}; +#include "crc32_jam_table.h" crc32_t crc32_jam_update(crc32_t crc, const void *data, size_t data_len) { const unsigned char *d = (const unsigned char *)data; unsigned int tbl_idx; + for (; data_len >= SLICE_SIZE; data_len -= SLICE_SIZE) + { + crc = crc32_jam_table[15][d[ 0] ^ ((crc >> 0) & 0xff)] ^ + crc32_jam_table[14][d[ 1] ^ ((crc >> 8) & 0xff)] ^ + crc32_jam_table[13][d[ 2] ^ ((crc >> 16) & 0xff)] ^ + crc32_jam_table[12][d[ 3] ^ ((crc >> 24) & 0xff)] ^ + crc32_jam_table[11][d[ 4] ] ^ + crc32_jam_table[10][d[ 5] ] ^ + crc32_jam_table[ 9][d[ 6] ] ^ + crc32_jam_table[ 8][d[ 7] ] ^ + crc32_jam_table[ 7][d[ 8] ] ^ + crc32_jam_table[ 6][d[ 9] ] ^ + crc32_jam_table[ 5][d[10] ] ^ + crc32_jam_table[ 4][d[11] ] ^ + crc32_jam_table[ 3][d[12] ] ^ + crc32_jam_table[ 2][d[13] ] ^ + crc32_jam_table[ 1][d[14] ] ^ + crc32_jam_table[ 0][d[15] ]; + crc &= 0xffffffff; + d += SLICE_SIZE; + } + while (data_len--) { tbl_idx = (crc ^ *d) & 0xff; - crc = (crc32_table[tbl_idx] ^ (crc >> 8)) & 0xffffffff; + crc = (crc32_jam_table[0][tbl_idx] ^ (crc >> 8)) & 0xffffffff; d++; } diff --git a/ext/digest/crc32_jam/crc32_jam_table.h b/ext/digest/crc32_jam/crc32_jam_table.h new file mode 100644 index 0000000..14d2b15 --- /dev/null +++ b/ext/digest/crc32_jam/crc32_jam_table.h @@ -0,0 +1,1070 @@ +/* + * bitwidth: 32 + * generator polynomial: 0x04c11db7 + * input bit direction: REFLECT + * slice bytes per iteration: 16 + * slide bits per table: 8 + * + * Generated by: gentable.rb of digest-crc + */ + +#define SLICE_SIZE 16 + +static const uint32_t crc32_jam_table[SLICE_SIZE][256] = { + { + 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, + 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, + 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, + 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, + 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, + 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, + 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, + 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, + 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, + 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, + 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, + 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, + 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, + 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, + 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, + 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, + 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, + 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, + 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, + 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, + 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, + 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, + 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, + 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, + 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, + 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, + 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, + 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, + 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, + 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, + 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, + 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, + 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, + 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, + 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, + 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, + 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, + 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, + 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, + 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, + 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, + 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, + 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, + 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, + 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, + 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, + 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, + 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, + 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, + 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, + 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, + 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, + 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, + 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, + 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, + 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, + 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, + 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, + 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, + 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, + 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, + 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, + 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, + 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d, + }, + { + 0x00000000, 0x191b3141, 0x32366282, 0x2b2d53c3, + 0x646cc504, 0x7d77f445, 0x565aa786, 0x4f4196c7, + 0xc8d98a08, 0xd1c2bb49, 0xfaefe88a, 0xe3f4d9cb, + 0xacb54f0c, 0xb5ae7e4d, 0x9e832d8e, 0x87981ccf, + 0x4ac21251, 0x53d92310, 0x78f470d3, 0x61ef4192, + 0x2eaed755, 0x37b5e614, 0x1c98b5d7, 0x05838496, + 0x821b9859, 0x9b00a918, 0xb02dfadb, 0xa936cb9a, + 0xe6775d5d, 0xff6c6c1c, 0xd4413fdf, 0xcd5a0e9e, + 0x958424a2, 0x8c9f15e3, 0xa7b24620, 0xbea97761, + 0xf1e8e1a6, 0xe8f3d0e7, 0xc3de8324, 0xdac5b265, + 0x5d5daeaa, 0x44469feb, 0x6f6bcc28, 0x7670fd69, + 0x39316bae, 0x202a5aef, 0x0b07092c, 0x121c386d, + 0xdf4636f3, 0xc65d07b2, 0xed705471, 0xf46b6530, + 0xbb2af3f7, 0xa231c2b6, 0x891c9175, 0x9007a034, + 0x179fbcfb, 0x0e848dba, 0x25a9de79, 0x3cb2ef38, + 0x73f379ff, 0x6ae848be, 0x41c51b7d, 0x58de2a3c, + 0xf0794f05, 0xe9627e44, 0xc24f2d87, 0xdb541cc6, + 0x94158a01, 0x8d0ebb40, 0xa623e883, 0xbf38d9c2, + 0x38a0c50d, 0x21bbf44c, 0x0a96a78f, 0x138d96ce, + 0x5ccc0009, 0x45d73148, 0x6efa628b, 0x77e153ca, + 0xbabb5d54, 0xa3a06c15, 0x888d3fd6, 0x91960e97, + 0xded79850, 0xc7cca911, 0xece1fad2, 0xf5facb93, + 0x7262d75c, 0x6b79e61d, 0x4054b5de, 0x594f849f, + 0x160e1258, 0x0f152319, 0x243870da, 0x3d23419b, + 0x65fd6ba7, 0x7ce65ae6, 0x57cb0925, 0x4ed03864, + 0x0191aea3, 0x188a9fe2, 0x33a7cc21, 0x2abcfd60, + 0xad24e1af, 0xb43fd0ee, 0x9f12832d, 0x8609b26c, + 0xc94824ab, 0xd05315ea, 0xfb7e4629, 0xe2657768, + 0x2f3f79f6, 0x362448b7, 0x1d091b74, 0x04122a35, + 0x4b53bcf2, 0x52488db3, 0x7965de70, 0x607eef31, + 0xe7e6f3fe, 0xfefdc2bf, 0xd5d0917c, 0xcccba03d, + 0x838a36fa, 0x9a9107bb, 0xb1bc5478, 0xa8a76539, + 0x3b83984b, 0x2298a90a, 0x09b5fac9, 0x10aecb88, + 0x5fef5d4f, 0x46f46c0e, 0x6dd93fcd, 0x74c20e8c, + 0xf35a1243, 0xea412302, 0xc16c70c1, 0xd8774180, + 0x9736d747, 0x8e2de606, 0xa500b5c5, 0xbc1b8484, + 0x71418a1a, 0x685abb5b, 0x4377e898, 0x5a6cd9d9, + 0x152d4f1e, 0x0c367e5f, 0x271b2d9c, 0x3e001cdd, + 0xb9980012, 0xa0833153, 0x8bae6290, 0x92b553d1, + 0xddf4c516, 0xc4eff457, 0xefc2a794, 0xf6d996d5, + 0xae07bce9, 0xb71c8da8, 0x9c31de6b, 0x852aef2a, + 0xca6b79ed, 0xd37048ac, 0xf85d1b6f, 0xe1462a2e, + 0x66de36e1, 0x7fc507a0, 0x54e85463, 0x4df36522, + 0x02b2f3e5, 0x1ba9c2a4, 0x30849167, 0x299fa026, + 0xe4c5aeb8, 0xfdde9ff9, 0xd6f3cc3a, 0xcfe8fd7b, + 0x80a96bbc, 0x99b25afd, 0xb29f093e, 0xab84387f, + 0x2c1c24b0, 0x350715f1, 0x1e2a4632, 0x07317773, + 0x4870e1b4, 0x516bd0f5, 0x7a468336, 0x635db277, + 0xcbfad74e, 0xd2e1e60f, 0xf9ccb5cc, 0xe0d7848d, + 0xaf96124a, 0xb68d230b, 0x9da070c8, 0x84bb4189, + 0x03235d46, 0x1a386c07, 0x31153fc4, 0x280e0e85, + 0x674f9842, 0x7e54a903, 0x5579fac0, 0x4c62cb81, + 0x8138c51f, 0x9823f45e, 0xb30ea79d, 0xaa1596dc, + 0xe554001b, 0xfc4f315a, 0xd7626299, 0xce7953d8, + 0x49e14f17, 0x50fa7e56, 0x7bd72d95, 0x62cc1cd4, + 0x2d8d8a13, 0x3496bb52, 0x1fbbe891, 0x06a0d9d0, + 0x5e7ef3ec, 0x4765c2ad, 0x6c48916e, 0x7553a02f, + 0x3a1236e8, 0x230907a9, 0x0824546a, 0x113f652b, + 0x96a779e4, 0x8fbc48a5, 0xa4911b66, 0xbd8a2a27, + 0xf2cbbce0, 0xebd08da1, 0xc0fdde62, 0xd9e6ef23, + 0x14bce1bd, 0x0da7d0fc, 0x268a833f, 0x3f91b27e, + 0x70d024b9, 0x69cb15f8, 0x42e6463b, 0x5bfd777a, + 0xdc656bb5, 0xc57e5af4, 0xee530937, 0xf7483876, + 0xb809aeb1, 0xa1129ff0, 0x8a3fcc33, 0x9324fd72, + }, + { + 0x00000000, 0x01c26a37, 0x0384d46e, 0x0246be59, + 0x0709a8dc, 0x06cbc2eb, 0x048d7cb2, 0x054f1685, + 0x0e1351b8, 0x0fd13b8f, 0x0d9785d6, 0x0c55efe1, + 0x091af964, 0x08d89353, 0x0a9e2d0a, 0x0b5c473d, + 0x1c26a370, 0x1de4c947, 0x1fa2771e, 0x1e601d29, + 0x1b2f0bac, 0x1aed619b, 0x18abdfc2, 0x1969b5f5, + 0x1235f2c8, 0x13f798ff, 0x11b126a6, 0x10734c91, + 0x153c5a14, 0x14fe3023, 0x16b88e7a, 0x177ae44d, + 0x384d46e0, 0x398f2cd7, 0x3bc9928e, 0x3a0bf8b9, + 0x3f44ee3c, 0x3e86840b, 0x3cc03a52, 0x3d025065, + 0x365e1758, 0x379c7d6f, 0x35dac336, 0x3418a901, + 0x3157bf84, 0x3095d5b3, 0x32d36bea, 0x331101dd, + 0x246be590, 0x25a98fa7, 0x27ef31fe, 0x262d5bc9, + 0x23624d4c, 0x22a0277b, 0x20e69922, 0x2124f315, + 0x2a78b428, 0x2bbade1f, 0x29fc6046, 0x283e0a71, + 0x2d711cf4, 0x2cb376c3, 0x2ef5c89a, 0x2f37a2ad, + 0x709a8dc0, 0x7158e7f7, 0x731e59ae, 0x72dc3399, + 0x7793251c, 0x76514f2b, 0x7417f172, 0x75d59b45, + 0x7e89dc78, 0x7f4bb64f, 0x7d0d0816, 0x7ccf6221, + 0x798074a4, 0x78421e93, 0x7a04a0ca, 0x7bc6cafd, + 0x6cbc2eb0, 0x6d7e4487, 0x6f38fade, 0x6efa90e9, + 0x6bb5866c, 0x6a77ec5b, 0x68315202, 0x69f33835, + 0x62af7f08, 0x636d153f, 0x612bab66, 0x60e9c151, + 0x65a6d7d4, 0x6464bde3, 0x662203ba, 0x67e0698d, + 0x48d7cb20, 0x4915a117, 0x4b531f4e, 0x4a917579, + 0x4fde63fc, 0x4e1c09cb, 0x4c5ab792, 0x4d98dda5, + 0x46c49a98, 0x4706f0af, 0x45404ef6, 0x448224c1, + 0x41cd3244, 0x400f5873, 0x4249e62a, 0x438b8c1d, + 0x54f16850, 0x55330267, 0x5775bc3e, 0x56b7d609, + 0x53f8c08c, 0x523aaabb, 0x507c14e2, 0x51be7ed5, + 0x5ae239e8, 0x5b2053df, 0x5966ed86, 0x58a487b1, + 0x5deb9134, 0x5c29fb03, 0x5e6f455a, 0x5fad2f6d, + 0xe1351b80, 0xe0f771b7, 0xe2b1cfee, 0xe373a5d9, + 0xe63cb35c, 0xe7fed96b, 0xe5b86732, 0xe47a0d05, + 0xef264a38, 0xeee4200f, 0xeca29e56, 0xed60f461, + 0xe82fe2e4, 0xe9ed88d3, 0xebab368a, 0xea695cbd, + 0xfd13b8f0, 0xfcd1d2c7, 0xfe976c9e, 0xff5506a9, + 0xfa1a102c, 0xfbd87a1b, 0xf99ec442, 0xf85cae75, + 0xf300e948, 0xf2c2837f, 0xf0843d26, 0xf1465711, + 0xf4094194, 0xf5cb2ba3, 0xf78d95fa, 0xf64fffcd, + 0xd9785d60, 0xd8ba3757, 0xdafc890e, 0xdb3ee339, + 0xde71f5bc, 0xdfb39f8b, 0xddf521d2, 0xdc374be5, + 0xd76b0cd8, 0xd6a966ef, 0xd4efd8b6, 0xd52db281, + 0xd062a404, 0xd1a0ce33, 0xd3e6706a, 0xd2241a5d, + 0xc55efe10, 0xc49c9427, 0xc6da2a7e, 0xc7184049, + 0xc25756cc, 0xc3953cfb, 0xc1d382a2, 0xc011e895, + 0xcb4dafa8, 0xca8fc59f, 0xc8c97bc6, 0xc90b11f1, + 0xcc440774, 0xcd866d43, 0xcfc0d31a, 0xce02b92d, + 0x91af9640, 0x906dfc77, 0x922b422e, 0x93e92819, + 0x96a63e9c, 0x976454ab, 0x9522eaf2, 0x94e080c5, + 0x9fbcc7f8, 0x9e7eadcf, 0x9c381396, 0x9dfa79a1, + 0x98b56f24, 0x99770513, 0x9b31bb4a, 0x9af3d17d, + 0x8d893530, 0x8c4b5f07, 0x8e0de15e, 0x8fcf8b69, + 0x8a809dec, 0x8b42f7db, 0x89044982, 0x88c623b5, + 0x839a6488, 0x82580ebf, 0x801eb0e6, 0x81dcdad1, + 0x8493cc54, 0x8551a663, 0x8717183a, 0x86d5720d, + 0xa9e2d0a0, 0xa820ba97, 0xaa6604ce, 0xaba46ef9, + 0xaeeb787c, 0xaf29124b, 0xad6fac12, 0xacadc625, + 0xa7f18118, 0xa633eb2f, 0xa4755576, 0xa5b73f41, + 0xa0f829c4, 0xa13a43f3, 0xa37cfdaa, 0xa2be979d, + 0xb5c473d0, 0xb40619e7, 0xb640a7be, 0xb782cd89, + 0xb2cddb0c, 0xb30fb13b, 0xb1490f62, 0xb08b6555, + 0xbbd72268, 0xba15485f, 0xb853f606, 0xb9919c31, + 0xbcde8ab4, 0xbd1ce083, 0xbf5a5eda, 0xbe9834ed, + }, + { + 0x00000000, 0xb8bc6765, 0xaa09c88b, 0x12b5afee, + 0x8f629757, 0x37def032, 0x256b5fdc, 0x9dd738b9, + 0xc5b428ef, 0x7d084f8a, 0x6fbde064, 0xd7018701, + 0x4ad6bfb8, 0xf26ad8dd, 0xe0df7733, 0x58631056, + 0x5019579f, 0xe8a530fa, 0xfa109f14, 0x42acf871, + 0xdf7bc0c8, 0x67c7a7ad, 0x75720843, 0xcdce6f26, + 0x95ad7f70, 0x2d111815, 0x3fa4b7fb, 0x8718d09e, + 0x1acfe827, 0xa2738f42, 0xb0c620ac, 0x087a47c9, + 0xa032af3e, 0x188ec85b, 0x0a3b67b5, 0xb28700d0, + 0x2f503869, 0x97ec5f0c, 0x8559f0e2, 0x3de59787, + 0x658687d1, 0xdd3ae0b4, 0xcf8f4f5a, 0x7733283f, + 0xeae41086, 0x525877e3, 0x40edd80d, 0xf851bf68, + 0xf02bf8a1, 0x48979fc4, 0x5a22302a, 0xe29e574f, + 0x7f496ff6, 0xc7f50893, 0xd540a77d, 0x6dfcc018, + 0x359fd04e, 0x8d23b72b, 0x9f9618c5, 0x272a7fa0, + 0xbafd4719, 0x0241207c, 0x10f48f92, 0xa848e8f7, + 0x9b14583d, 0x23a83f58, 0x311d90b6, 0x89a1f7d3, + 0x1476cf6a, 0xaccaa80f, 0xbe7f07e1, 0x06c36084, + 0x5ea070d2, 0xe61c17b7, 0xf4a9b859, 0x4c15df3c, + 0xd1c2e785, 0x697e80e0, 0x7bcb2f0e, 0xc377486b, + 0xcb0d0fa2, 0x73b168c7, 0x6104c729, 0xd9b8a04c, + 0x446f98f5, 0xfcd3ff90, 0xee66507e, 0x56da371b, + 0x0eb9274d, 0xb6054028, 0xa4b0efc6, 0x1c0c88a3, + 0x81dbb01a, 0x3967d77f, 0x2bd27891, 0x936e1ff4, + 0x3b26f703, 0x839a9066, 0x912f3f88, 0x299358ed, + 0xb4446054, 0x0cf80731, 0x1e4da8df, 0xa6f1cfba, + 0xfe92dfec, 0x462eb889, 0x549b1767, 0xec277002, + 0x71f048bb, 0xc94c2fde, 0xdbf98030, 0x6345e755, + 0x6b3fa09c, 0xd383c7f9, 0xc1366817, 0x798a0f72, + 0xe45d37cb, 0x5ce150ae, 0x4e54ff40, 0xf6e89825, + 0xae8b8873, 0x1637ef16, 0x048240f8, 0xbc3e279d, + 0x21e91f24, 0x99557841, 0x8be0d7af, 0x335cb0ca, + 0xed59b63b, 0x55e5d15e, 0x47507eb0, 0xffec19d5, + 0x623b216c, 0xda874609, 0xc832e9e7, 0x708e8e82, + 0x28ed9ed4, 0x9051f9b1, 0x82e4565f, 0x3a58313a, + 0xa78f0983, 0x1f336ee6, 0x0d86c108, 0xb53aa66d, + 0xbd40e1a4, 0x05fc86c1, 0x1749292f, 0xaff54e4a, + 0x322276f3, 0x8a9e1196, 0x982bbe78, 0x2097d91d, + 0x78f4c94b, 0xc048ae2e, 0xd2fd01c0, 0x6a4166a5, + 0xf7965e1c, 0x4f2a3979, 0x5d9f9697, 0xe523f1f2, + 0x4d6b1905, 0xf5d77e60, 0xe762d18e, 0x5fdeb6eb, + 0xc2098e52, 0x7ab5e937, 0x680046d9, 0xd0bc21bc, + 0x88df31ea, 0x3063568f, 0x22d6f961, 0x9a6a9e04, + 0x07bda6bd, 0xbf01c1d8, 0xadb46e36, 0x15080953, + 0x1d724e9a, 0xa5ce29ff, 0xb77b8611, 0x0fc7e174, + 0x9210d9cd, 0x2aacbea8, 0x38191146, 0x80a57623, + 0xd8c66675, 0x607a0110, 0x72cfaefe, 0xca73c99b, + 0x57a4f122, 0xef189647, 0xfdad39a9, 0x45115ecc, + 0x764dee06, 0xcef18963, 0xdc44268d, 0x64f841e8, + 0xf92f7951, 0x41931e34, 0x5326b1da, 0xeb9ad6bf, + 0xb3f9c6e9, 0x0b45a18c, 0x19f00e62, 0xa14c6907, + 0x3c9b51be, 0x842736db, 0x96929935, 0x2e2efe50, + 0x2654b999, 0x9ee8defc, 0x8c5d7112, 0x34e11677, + 0xa9362ece, 0x118a49ab, 0x033fe645, 0xbb838120, + 0xe3e09176, 0x5b5cf613, 0x49e959fd, 0xf1553e98, + 0x6c820621, 0xd43e6144, 0xc68bceaa, 0x7e37a9cf, + 0xd67f4138, 0x6ec3265d, 0x7c7689b3, 0xc4caeed6, + 0x591dd66f, 0xe1a1b10a, 0xf3141ee4, 0x4ba87981, + 0x13cb69d7, 0xab770eb2, 0xb9c2a15c, 0x017ec639, + 0x9ca9fe80, 0x241599e5, 0x36a0360b, 0x8e1c516e, + 0x866616a7, 0x3eda71c2, 0x2c6fde2c, 0x94d3b949, + 0x090481f0, 0xb1b8e695, 0xa30d497b, 0x1bb12e1e, + 0x43d23e48, 0xfb6e592d, 0xe9dbf6c3, 0x516791a6, + 0xccb0a91f, 0x740cce7a, 0x66b96194, 0xde0506f1, + }, + { + 0x00000000, 0x3d6029b0, 0x7ac05360, 0x47a07ad0, + 0xf580a6c0, 0xc8e08f70, 0x8f40f5a0, 0xb220dc10, + 0x30704bc1, 0x0d106271, 0x4ab018a1, 0x77d03111, + 0xc5f0ed01, 0xf890c4b1, 0xbf30be61, 0x825097d1, + 0x60e09782, 0x5d80be32, 0x1a20c4e2, 0x2740ed52, + 0x95603142, 0xa80018f2, 0xefa06222, 0xd2c04b92, + 0x5090dc43, 0x6df0f5f3, 0x2a508f23, 0x1730a693, + 0xa5107a83, 0x98705333, 0xdfd029e3, 0xe2b00053, + 0xc1c12f04, 0xfca106b4, 0xbb017c64, 0x866155d4, + 0x344189c4, 0x0921a074, 0x4e81daa4, 0x73e1f314, + 0xf1b164c5, 0xccd14d75, 0x8b7137a5, 0xb6111e15, + 0x0431c205, 0x3951ebb5, 0x7ef19165, 0x4391b8d5, + 0xa121b886, 0x9c419136, 0xdbe1ebe6, 0xe681c256, + 0x54a11e46, 0x69c137f6, 0x2e614d26, 0x13016496, + 0x9151f347, 0xac31daf7, 0xeb91a027, 0xd6f18997, + 0x64d15587, 0x59b17c37, 0x1e1106e7, 0x23712f57, + 0x58f35849, 0x659371f9, 0x22330b29, 0x1f532299, + 0xad73fe89, 0x9013d739, 0xd7b3ade9, 0xead38459, + 0x68831388, 0x55e33a38, 0x124340e8, 0x2f236958, + 0x9d03b548, 0xa0639cf8, 0xe7c3e628, 0xdaa3cf98, + 0x3813cfcb, 0x0573e67b, 0x42d39cab, 0x7fb3b51b, + 0xcd93690b, 0xf0f340bb, 0xb7533a6b, 0x8a3313db, + 0x0863840a, 0x3503adba, 0x72a3d76a, 0x4fc3feda, + 0xfde322ca, 0xc0830b7a, 0x872371aa, 0xba43581a, + 0x9932774d, 0xa4525efd, 0xe3f2242d, 0xde920d9d, + 0x6cb2d18d, 0x51d2f83d, 0x167282ed, 0x2b12ab5d, + 0xa9423c8c, 0x9422153c, 0xd3826fec, 0xeee2465c, + 0x5cc29a4c, 0x61a2b3fc, 0x2602c92c, 0x1b62e09c, + 0xf9d2e0cf, 0xc4b2c97f, 0x8312b3af, 0xbe729a1f, + 0x0c52460f, 0x31326fbf, 0x7692156f, 0x4bf23cdf, + 0xc9a2ab0e, 0xf4c282be, 0xb362f86e, 0x8e02d1de, + 0x3c220dce, 0x0142247e, 0x46e25eae, 0x7b82771e, + 0xb1e6b092, 0x8c869922, 0xcb26e3f2, 0xf646ca42, + 0x44661652, 0x79063fe2, 0x3ea64532, 0x03c66c82, + 0x8196fb53, 0xbcf6d2e3, 0xfb56a833, 0xc6368183, + 0x74165d93, 0x49767423, 0x0ed60ef3, 0x33b62743, + 0xd1062710, 0xec660ea0, 0xabc67470, 0x96a65dc0, + 0x248681d0, 0x19e6a860, 0x5e46d2b0, 0x6326fb00, + 0xe1766cd1, 0xdc164561, 0x9bb63fb1, 0xa6d61601, + 0x14f6ca11, 0x2996e3a1, 0x6e369971, 0x5356b0c1, + 0x70279f96, 0x4d47b626, 0x0ae7ccf6, 0x3787e546, + 0x85a73956, 0xb8c710e6, 0xff676a36, 0xc2074386, + 0x4057d457, 0x7d37fde7, 0x3a978737, 0x07f7ae87, + 0xb5d77297, 0x88b75b27, 0xcf1721f7, 0xf2770847, + 0x10c70814, 0x2da721a4, 0x6a075b74, 0x576772c4, + 0xe547aed4, 0xd8278764, 0x9f87fdb4, 0xa2e7d404, + 0x20b743d5, 0x1dd76a65, 0x5a7710b5, 0x67173905, + 0xd537e515, 0xe857cca5, 0xaff7b675, 0x92979fc5, + 0xe915e8db, 0xd475c16b, 0x93d5bbbb, 0xaeb5920b, + 0x1c954e1b, 0x21f567ab, 0x66551d7b, 0x5b3534cb, + 0xd965a31a, 0xe4058aaa, 0xa3a5f07a, 0x9ec5d9ca, + 0x2ce505da, 0x11852c6a, 0x562556ba, 0x6b457f0a, + 0x89f57f59, 0xb49556e9, 0xf3352c39, 0xce550589, + 0x7c75d999, 0x4115f029, 0x06b58af9, 0x3bd5a349, + 0xb9853498, 0x84e51d28, 0xc34567f8, 0xfe254e48, + 0x4c059258, 0x7165bbe8, 0x36c5c138, 0x0ba5e888, + 0x28d4c7df, 0x15b4ee6f, 0x521494bf, 0x6f74bd0f, + 0xdd54611f, 0xe03448af, 0xa794327f, 0x9af41bcf, + 0x18a48c1e, 0x25c4a5ae, 0x6264df7e, 0x5f04f6ce, + 0xed242ade, 0xd044036e, 0x97e479be, 0xaa84500e, + 0x4834505d, 0x755479ed, 0x32f4033d, 0x0f942a8d, + 0xbdb4f69d, 0x80d4df2d, 0xc774a5fd, 0xfa148c4d, + 0x78441b9c, 0x4524322c, 0x028448fc, 0x3fe4614c, + 0x8dc4bd5c, 0xb0a494ec, 0xf704ee3c, 0xca64c78c, + }, + { + 0x00000000, 0xcb5cd3a5, 0x4dc8a10b, 0x869472ae, + 0x9b914216, 0x50cd91b3, 0xd659e31d, 0x1d0530b8, + 0xec53826d, 0x270f51c8, 0xa19b2366, 0x6ac7f0c3, + 0x77c2c07b, 0xbc9e13de, 0x3a0a6170, 0xf156b2d5, + 0x03d6029b, 0xc88ad13e, 0x4e1ea390, 0x85427035, + 0x9847408d, 0x531b9328, 0xd58fe186, 0x1ed33223, + 0xef8580f6, 0x24d95353, 0xa24d21fd, 0x6911f258, + 0x7414c2e0, 0xbf481145, 0x39dc63eb, 0xf280b04e, + 0x07ac0536, 0xccf0d693, 0x4a64a43d, 0x81387798, + 0x9c3d4720, 0x57619485, 0xd1f5e62b, 0x1aa9358e, + 0xebff875b, 0x20a354fe, 0xa6372650, 0x6d6bf5f5, + 0x706ec54d, 0xbb3216e8, 0x3da66446, 0xf6fab7e3, + 0x047a07ad, 0xcf26d408, 0x49b2a6a6, 0x82ee7503, + 0x9feb45bb, 0x54b7961e, 0xd223e4b0, 0x197f3715, + 0xe82985c0, 0x23755665, 0xa5e124cb, 0x6ebdf76e, + 0x73b8c7d6, 0xb8e41473, 0x3e7066dd, 0xf52cb578, + 0x0f580a6c, 0xc404d9c9, 0x4290ab67, 0x89cc78c2, + 0x94c9487a, 0x5f959bdf, 0xd901e971, 0x125d3ad4, + 0xe30b8801, 0x28575ba4, 0xaec3290a, 0x659ffaaf, + 0x789aca17, 0xb3c619b2, 0x35526b1c, 0xfe0eb8b9, + 0x0c8e08f7, 0xc7d2db52, 0x4146a9fc, 0x8a1a7a59, + 0x971f4ae1, 0x5c439944, 0xdad7ebea, 0x118b384f, + 0xe0dd8a9a, 0x2b81593f, 0xad152b91, 0x6649f834, + 0x7b4cc88c, 0xb0101b29, 0x36846987, 0xfdd8ba22, + 0x08f40f5a, 0xc3a8dcff, 0x453cae51, 0x8e607df4, + 0x93654d4c, 0x58399ee9, 0xdeadec47, 0x15f13fe2, + 0xe4a78d37, 0x2ffb5e92, 0xa96f2c3c, 0x6233ff99, + 0x7f36cf21, 0xb46a1c84, 0x32fe6e2a, 0xf9a2bd8f, + 0x0b220dc1, 0xc07ede64, 0x46eaacca, 0x8db67f6f, + 0x90b34fd7, 0x5bef9c72, 0xdd7beedc, 0x16273d79, + 0xe7718fac, 0x2c2d5c09, 0xaab92ea7, 0x61e5fd02, + 0x7ce0cdba, 0xb7bc1e1f, 0x31286cb1, 0xfa74bf14, + 0x1eb014d8, 0xd5ecc77d, 0x5378b5d3, 0x98246676, + 0x852156ce, 0x4e7d856b, 0xc8e9f7c5, 0x03b52460, + 0xf2e396b5, 0x39bf4510, 0xbf2b37be, 0x7477e41b, + 0x6972d4a3, 0xa22e0706, 0x24ba75a8, 0xefe6a60d, + 0x1d661643, 0xd63ac5e6, 0x50aeb748, 0x9bf264ed, + 0x86f75455, 0x4dab87f0, 0xcb3ff55e, 0x006326fb, + 0xf135942e, 0x3a69478b, 0xbcfd3525, 0x77a1e680, + 0x6aa4d638, 0xa1f8059d, 0x276c7733, 0xec30a496, + 0x191c11ee, 0xd240c24b, 0x54d4b0e5, 0x9f886340, + 0x828d53f8, 0x49d1805d, 0xcf45f2f3, 0x04192156, + 0xf54f9383, 0x3e134026, 0xb8873288, 0x73dbe12d, + 0x6eded195, 0xa5820230, 0x2316709e, 0xe84aa33b, + 0x1aca1375, 0xd196c0d0, 0x5702b27e, 0x9c5e61db, + 0x815b5163, 0x4a0782c6, 0xcc93f068, 0x07cf23cd, + 0xf6999118, 0x3dc542bd, 0xbb513013, 0x700de3b6, + 0x6d08d30e, 0xa65400ab, 0x20c07205, 0xeb9ca1a0, + 0x11e81eb4, 0xdab4cd11, 0x5c20bfbf, 0x977c6c1a, + 0x8a795ca2, 0x41258f07, 0xc7b1fda9, 0x0ced2e0c, + 0xfdbb9cd9, 0x36e74f7c, 0xb0733dd2, 0x7b2fee77, + 0x662adecf, 0xad760d6a, 0x2be27fc4, 0xe0beac61, + 0x123e1c2f, 0xd962cf8a, 0x5ff6bd24, 0x94aa6e81, + 0x89af5e39, 0x42f38d9c, 0xc467ff32, 0x0f3b2c97, + 0xfe6d9e42, 0x35314de7, 0xb3a53f49, 0x78f9ecec, + 0x65fcdc54, 0xaea00ff1, 0x28347d5f, 0xe368aefa, + 0x16441b82, 0xdd18c827, 0x5b8cba89, 0x90d0692c, + 0x8dd55994, 0x46898a31, 0xc01df89f, 0x0b412b3a, + 0xfa1799ef, 0x314b4a4a, 0xb7df38e4, 0x7c83eb41, + 0x6186dbf9, 0xaada085c, 0x2c4e7af2, 0xe712a957, + 0x15921919, 0xdececabc, 0x585ab812, 0x93066bb7, + 0x8e035b0f, 0x455f88aa, 0xc3cbfa04, 0x089729a1, + 0xf9c19b74, 0x329d48d1, 0xb4093a7f, 0x7f55e9da, + 0x6250d962, 0xa90c0ac7, 0x2f987869, 0xe4c4abcc, + }, + { + 0x00000000, 0xa6770bb4, 0x979f1129, 0x31e81a9d, + 0xf44f2413, 0x52382fa7, 0x63d0353a, 0xc5a73e8e, + 0x33ef4e67, 0x959845d3, 0xa4705f4e, 0x020754fa, + 0xc7a06a74, 0x61d761c0, 0x503f7b5d, 0xf64870e9, + 0x67de9cce, 0xc1a9977a, 0xf0418de7, 0x56368653, + 0x9391b8dd, 0x35e6b369, 0x040ea9f4, 0xa279a240, + 0x5431d2a9, 0xf246d91d, 0xc3aec380, 0x65d9c834, + 0xa07ef6ba, 0x0609fd0e, 0x37e1e793, 0x9196ec27, + 0xcfbd399c, 0x69ca3228, 0x582228b5, 0xfe552301, + 0x3bf21d8f, 0x9d85163b, 0xac6d0ca6, 0x0a1a0712, + 0xfc5277fb, 0x5a257c4f, 0x6bcd66d2, 0xcdba6d66, + 0x081d53e8, 0xae6a585c, 0x9f8242c1, 0x39f54975, + 0xa863a552, 0x0e14aee6, 0x3ffcb47b, 0x998bbfcf, + 0x5c2c8141, 0xfa5b8af5, 0xcbb39068, 0x6dc49bdc, + 0x9b8ceb35, 0x3dfbe081, 0x0c13fa1c, 0xaa64f1a8, + 0x6fc3cf26, 0xc9b4c492, 0xf85cde0f, 0x5e2bd5bb, + 0x440b7579, 0xe27c7ecd, 0xd3946450, 0x75e36fe4, + 0xb044516a, 0x16335ade, 0x27db4043, 0x81ac4bf7, + 0x77e43b1e, 0xd19330aa, 0xe07b2a37, 0x460c2183, + 0x83ab1f0d, 0x25dc14b9, 0x14340e24, 0xb2430590, + 0x23d5e9b7, 0x85a2e203, 0xb44af89e, 0x123df32a, + 0xd79acda4, 0x71edc610, 0x4005dc8d, 0xe672d739, + 0x103aa7d0, 0xb64dac64, 0x87a5b6f9, 0x21d2bd4d, + 0xe47583c3, 0x42028877, 0x73ea92ea, 0xd59d995e, + 0x8bb64ce5, 0x2dc14751, 0x1c295dcc, 0xba5e5678, + 0x7ff968f6, 0xd98e6342, 0xe86679df, 0x4e11726b, + 0xb8590282, 0x1e2e0936, 0x2fc613ab, 0x89b1181f, + 0x4c162691, 0xea612d25, 0xdb8937b8, 0x7dfe3c0c, + 0xec68d02b, 0x4a1fdb9f, 0x7bf7c102, 0xdd80cab6, + 0x1827f438, 0xbe50ff8c, 0x8fb8e511, 0x29cfeea5, + 0xdf879e4c, 0x79f095f8, 0x48188f65, 0xee6f84d1, + 0x2bc8ba5f, 0x8dbfb1eb, 0xbc57ab76, 0x1a20a0c2, + 0x8816eaf2, 0x2e61e146, 0x1f89fbdb, 0xb9fef06f, + 0x7c59cee1, 0xda2ec555, 0xebc6dfc8, 0x4db1d47c, + 0xbbf9a495, 0x1d8eaf21, 0x2c66b5bc, 0x8a11be08, + 0x4fb68086, 0xe9c18b32, 0xd82991af, 0x7e5e9a1b, + 0xefc8763c, 0x49bf7d88, 0x78576715, 0xde206ca1, + 0x1b87522f, 0xbdf0599b, 0x8c184306, 0x2a6f48b2, + 0xdc27385b, 0x7a5033ef, 0x4bb82972, 0xedcf22c6, + 0x28681c48, 0x8e1f17fc, 0xbff70d61, 0x198006d5, + 0x47abd36e, 0xe1dcd8da, 0xd034c247, 0x7643c9f3, + 0xb3e4f77d, 0x1593fcc9, 0x247be654, 0x820cede0, + 0x74449d09, 0xd23396bd, 0xe3db8c20, 0x45ac8794, + 0x800bb91a, 0x267cb2ae, 0x1794a833, 0xb1e3a387, + 0x20754fa0, 0x86024414, 0xb7ea5e89, 0x119d553d, + 0xd43a6bb3, 0x724d6007, 0x43a57a9a, 0xe5d2712e, + 0x139a01c7, 0xb5ed0a73, 0x840510ee, 0x22721b5a, + 0xe7d525d4, 0x41a22e60, 0x704a34fd, 0xd63d3f49, + 0xcc1d9f8b, 0x6a6a943f, 0x5b828ea2, 0xfdf58516, + 0x3852bb98, 0x9e25b02c, 0xafcdaab1, 0x09baa105, + 0xfff2d1ec, 0x5985da58, 0x686dc0c5, 0xce1acb71, + 0x0bbdf5ff, 0xadcafe4b, 0x9c22e4d6, 0x3a55ef62, + 0xabc30345, 0x0db408f1, 0x3c5c126c, 0x9a2b19d8, + 0x5f8c2756, 0xf9fb2ce2, 0xc813367f, 0x6e643dcb, + 0x982c4d22, 0x3e5b4696, 0x0fb35c0b, 0xa9c457bf, + 0x6c636931, 0xca146285, 0xfbfc7818, 0x5d8b73ac, + 0x03a0a617, 0xa5d7ada3, 0x943fb73e, 0x3248bc8a, + 0xf7ef8204, 0x519889b0, 0x6070932d, 0xc6079899, + 0x304fe870, 0x9638e3c4, 0xa7d0f959, 0x01a7f2ed, + 0xc400cc63, 0x6277c7d7, 0x539fdd4a, 0xf5e8d6fe, + 0x647e3ad9, 0xc209316d, 0xf3e12bf0, 0x55962044, + 0x90311eca, 0x3646157e, 0x07ae0fe3, 0xa1d90457, + 0x579174be, 0xf1e67f0a, 0xc00e6597, 0x66796e23, + 0xa3de50ad, 0x05a95b19, 0x34414184, 0x92364a30, + }, + { + 0x00000000, 0xccaa009e, 0x4225077d, 0x8e8f07e3, + 0x844a0efa, 0x48e00e64, 0xc66f0987, 0x0ac50919, + 0xd3e51bb5, 0x1f4f1b2b, 0x91c01cc8, 0x5d6a1c56, + 0x57af154f, 0x9b0515d1, 0x158a1232, 0xd92012ac, + 0x7cbb312b, 0xb01131b5, 0x3e9e3656, 0xf23436c8, + 0xf8f13fd1, 0x345b3f4f, 0xbad438ac, 0x767e3832, + 0xaf5e2a9e, 0x63f42a00, 0xed7b2de3, 0x21d12d7d, + 0x2b142464, 0xe7be24fa, 0x69312319, 0xa59b2387, + 0xf9766256, 0x35dc62c8, 0xbb53652b, 0x77f965b5, + 0x7d3c6cac, 0xb1966c32, 0x3f196bd1, 0xf3b36b4f, + 0x2a9379e3, 0xe639797d, 0x68b67e9e, 0xa41c7e00, + 0xaed97719, 0x62737787, 0xecfc7064, 0x205670fa, + 0x85cd537d, 0x496753e3, 0xc7e85400, 0x0b42549e, + 0x01875d87, 0xcd2d5d19, 0x43a25afa, 0x8f085a64, + 0x562848c8, 0x9a824856, 0x140d4fb5, 0xd8a74f2b, + 0xd2624632, 0x1ec846ac, 0x9047414f, 0x5ced41d1, + 0x299dc2ed, 0xe537c273, 0x6bb8c590, 0xa712c50e, + 0xadd7cc17, 0x617dcc89, 0xeff2cb6a, 0x2358cbf4, + 0xfa78d958, 0x36d2d9c6, 0xb85dde25, 0x74f7debb, + 0x7e32d7a2, 0xb298d73c, 0x3c17d0df, 0xf0bdd041, + 0x5526f3c6, 0x998cf358, 0x1703f4bb, 0xdba9f425, + 0xd16cfd3c, 0x1dc6fda2, 0x9349fa41, 0x5fe3fadf, + 0x86c3e873, 0x4a69e8ed, 0xc4e6ef0e, 0x084cef90, + 0x0289e689, 0xce23e617, 0x40ace1f4, 0x8c06e16a, + 0xd0eba0bb, 0x1c41a025, 0x92cea7c6, 0x5e64a758, + 0x54a1ae41, 0x980baedf, 0x1684a93c, 0xda2ea9a2, + 0x030ebb0e, 0xcfa4bb90, 0x412bbc73, 0x8d81bced, + 0x8744b5f4, 0x4beeb56a, 0xc561b289, 0x09cbb217, + 0xac509190, 0x60fa910e, 0xee7596ed, 0x22df9673, + 0x281a9f6a, 0xe4b09ff4, 0x6a3f9817, 0xa6959889, + 0x7fb58a25, 0xb31f8abb, 0x3d908d58, 0xf13a8dc6, + 0xfbff84df, 0x37558441, 0xb9da83a2, 0x7570833c, + 0x533b85da, 0x9f918544, 0x111e82a7, 0xddb48239, + 0xd7718b20, 0x1bdb8bbe, 0x95548c5d, 0x59fe8cc3, + 0x80de9e6f, 0x4c749ef1, 0xc2fb9912, 0x0e51998c, + 0x04949095, 0xc83e900b, 0x46b197e8, 0x8a1b9776, + 0x2f80b4f1, 0xe32ab46f, 0x6da5b38c, 0xa10fb312, + 0xabcaba0b, 0x6760ba95, 0xe9efbd76, 0x2545bde8, + 0xfc65af44, 0x30cfafda, 0xbe40a839, 0x72eaa8a7, + 0x782fa1be, 0xb485a120, 0x3a0aa6c3, 0xf6a0a65d, + 0xaa4de78c, 0x66e7e712, 0xe868e0f1, 0x24c2e06f, + 0x2e07e976, 0xe2ade9e8, 0x6c22ee0b, 0xa088ee95, + 0x79a8fc39, 0xb502fca7, 0x3b8dfb44, 0xf727fbda, + 0xfde2f2c3, 0x3148f25d, 0xbfc7f5be, 0x736df520, + 0xd6f6d6a7, 0x1a5cd639, 0x94d3d1da, 0x5879d144, + 0x52bcd85d, 0x9e16d8c3, 0x1099df20, 0xdc33dfbe, + 0x0513cd12, 0xc9b9cd8c, 0x4736ca6f, 0x8b9ccaf1, + 0x8159c3e8, 0x4df3c376, 0xc37cc495, 0x0fd6c40b, + 0x7aa64737, 0xb60c47a9, 0x3883404a, 0xf42940d4, + 0xfeec49cd, 0x32464953, 0xbcc94eb0, 0x70634e2e, + 0xa9435c82, 0x65e95c1c, 0xeb665bff, 0x27cc5b61, + 0x2d095278, 0xe1a352e6, 0x6f2c5505, 0xa386559b, + 0x061d761c, 0xcab77682, 0x44387161, 0x889271ff, + 0x825778e6, 0x4efd7878, 0xc0727f9b, 0x0cd87f05, + 0xd5f86da9, 0x19526d37, 0x97dd6ad4, 0x5b776a4a, + 0x51b26353, 0x9d1863cd, 0x1397642e, 0xdf3d64b0, + 0x83d02561, 0x4f7a25ff, 0xc1f5221c, 0x0d5f2282, + 0x079a2b9b, 0xcb302b05, 0x45bf2ce6, 0x89152c78, + 0x50353ed4, 0x9c9f3e4a, 0x121039a9, 0xdeba3937, + 0xd47f302e, 0x18d530b0, 0x965a3753, 0x5af037cd, + 0xff6b144a, 0x33c114d4, 0xbd4e1337, 0x71e413a9, + 0x7b211ab0, 0xb78b1a2e, 0x39041dcd, 0xf5ae1d53, + 0x2c8e0fff, 0xe0240f61, 0x6eab0882, 0xa201081c, + 0xa8c40105, 0x646e019b, 0xeae10678, 0x264b06e6, + }, + { + 0x00000000, 0x177b1443, 0x2ef62886, 0x398d3cc5, + 0x5dec510c, 0x4a97454f, 0x731a798a, 0x64616dc9, + 0xbbd8a218, 0xaca3b65b, 0x952e8a9e, 0x82559edd, + 0xe634f314, 0xf14fe757, 0xc8c2db92, 0xdfb9cfd1, + 0xacc04271, 0xbbbb5632, 0x82366af7, 0x954d7eb4, + 0xf12c137d, 0xe657073e, 0xdfda3bfb, 0xc8a12fb8, + 0x1718e069, 0x0063f42a, 0x39eec8ef, 0x2e95dcac, + 0x4af4b165, 0x5d8fa526, 0x640299e3, 0x73798da0, + 0x82f182a3, 0x958a96e0, 0xac07aa25, 0xbb7cbe66, + 0xdf1dd3af, 0xc866c7ec, 0xf1ebfb29, 0xe690ef6a, + 0x392920bb, 0x2e5234f8, 0x17df083d, 0x00a41c7e, + 0x64c571b7, 0x73be65f4, 0x4a335931, 0x5d484d72, + 0x2e31c0d2, 0x394ad491, 0x00c7e854, 0x17bcfc17, + 0x73dd91de, 0x64a6859d, 0x5d2bb958, 0x4a50ad1b, + 0x95e962ca, 0x82927689, 0xbb1f4a4c, 0xac645e0f, + 0xc80533c6, 0xdf7e2785, 0xe6f31b40, 0xf1880f03, + 0xde920307, 0xc9e91744, 0xf0642b81, 0xe71f3fc2, + 0x837e520b, 0x94054648, 0xad887a8d, 0xbaf36ece, + 0x654aa11f, 0x7231b55c, 0x4bbc8999, 0x5cc79dda, + 0x38a6f013, 0x2fdde450, 0x1650d895, 0x012bccd6, + 0x72524176, 0x65295535, 0x5ca469f0, 0x4bdf7db3, + 0x2fbe107a, 0x38c50439, 0x014838fc, 0x16332cbf, + 0xc98ae36e, 0xdef1f72d, 0xe77ccbe8, 0xf007dfab, + 0x9466b262, 0x831da621, 0xba909ae4, 0xadeb8ea7, + 0x5c6381a4, 0x4b1895e7, 0x7295a922, 0x65eebd61, + 0x018fd0a8, 0x16f4c4eb, 0x2f79f82e, 0x3802ec6d, + 0xe7bb23bc, 0xf0c037ff, 0xc94d0b3a, 0xde361f79, + 0xba5772b0, 0xad2c66f3, 0x94a15a36, 0x83da4e75, + 0xf0a3c3d5, 0xe7d8d796, 0xde55eb53, 0xc92eff10, + 0xad4f92d9, 0xba34869a, 0x83b9ba5f, 0x94c2ae1c, + 0x4b7b61cd, 0x5c00758e, 0x658d494b, 0x72f65d08, + 0x169730c1, 0x01ec2482, 0x38611847, 0x2f1a0c04, + 0x6655004f, 0x712e140c, 0x48a328c9, 0x5fd83c8a, + 0x3bb95143, 0x2cc24500, 0x154f79c5, 0x02346d86, + 0xdd8da257, 0xcaf6b614, 0xf37b8ad1, 0xe4009e92, + 0x8061f35b, 0x971ae718, 0xae97dbdd, 0xb9eccf9e, + 0xca95423e, 0xddee567d, 0xe4636ab8, 0xf3187efb, + 0x97791332, 0x80020771, 0xb98f3bb4, 0xaef42ff7, + 0x714de026, 0x6636f465, 0x5fbbc8a0, 0x48c0dce3, + 0x2ca1b12a, 0x3bdaa569, 0x025799ac, 0x152c8def, + 0xe4a482ec, 0xf3df96af, 0xca52aa6a, 0xdd29be29, + 0xb948d3e0, 0xae33c7a3, 0x97befb66, 0x80c5ef25, + 0x5f7c20f4, 0x480734b7, 0x718a0872, 0x66f11c31, + 0x029071f8, 0x15eb65bb, 0x2c66597e, 0x3b1d4d3d, + 0x4864c09d, 0x5f1fd4de, 0x6692e81b, 0x71e9fc58, + 0x15889191, 0x02f385d2, 0x3b7eb917, 0x2c05ad54, + 0xf3bc6285, 0xe4c776c6, 0xdd4a4a03, 0xca315e40, + 0xae503389, 0xb92b27ca, 0x80a61b0f, 0x97dd0f4c, + 0xb8c70348, 0xafbc170b, 0x96312bce, 0x814a3f8d, + 0xe52b5244, 0xf2504607, 0xcbdd7ac2, 0xdca66e81, + 0x031fa150, 0x1464b513, 0x2de989d6, 0x3a929d95, + 0x5ef3f05c, 0x4988e41f, 0x7005d8da, 0x677ecc99, + 0x14074139, 0x037c557a, 0x3af169bf, 0x2d8a7dfc, + 0x49eb1035, 0x5e900476, 0x671d38b3, 0x70662cf0, + 0xafdfe321, 0xb8a4f762, 0x8129cba7, 0x9652dfe4, + 0xf233b22d, 0xe548a66e, 0xdcc59aab, 0xcbbe8ee8, + 0x3a3681eb, 0x2d4d95a8, 0x14c0a96d, 0x03bbbd2e, + 0x67dad0e7, 0x70a1c4a4, 0x492cf861, 0x5e57ec22, + 0x81ee23f3, 0x969537b0, 0xaf180b75, 0xb8631f36, + 0xdc0272ff, 0xcb7966bc, 0xf2f45a79, 0xe58f4e3a, + 0x96f6c39a, 0x818dd7d9, 0xb800eb1c, 0xaf7bff5f, + 0xcb1a9296, 0xdc6186d5, 0xe5ecba10, 0xf297ae53, + 0x2d2e6182, 0x3a5575c1, 0x03d84904, 0x14a35d47, + 0x70c2308e, 0x67b924cd, 0x5e341808, 0x494f0c4b, + }, + { + 0x00000000, 0xefc26b3e, 0x04f5d03d, 0xeb37bb03, + 0x09eba07a, 0xe629cb44, 0x0d1e7047, 0xe2dc1b79, + 0x13d740f4, 0xfc152bca, 0x172290c9, 0xf8e0fbf7, + 0x1a3ce08e, 0xf5fe8bb0, 0x1ec930b3, 0xf10b5b8d, + 0x27ae81e8, 0xc86cead6, 0x235b51d5, 0xcc993aeb, + 0x2e452192, 0xc1874aac, 0x2ab0f1af, 0xc5729a91, + 0x3479c11c, 0xdbbbaa22, 0x308c1121, 0xdf4e7a1f, + 0x3d926166, 0xd2500a58, 0x3967b15b, 0xd6a5da65, + 0x4f5d03d0, 0xa09f68ee, 0x4ba8d3ed, 0xa46ab8d3, + 0x46b6a3aa, 0xa974c894, 0x42437397, 0xad8118a9, + 0x5c8a4324, 0xb348281a, 0x587f9319, 0xb7bdf827, + 0x5561e35e, 0xbaa38860, 0x51943363, 0xbe56585d, + 0x68f38238, 0x8731e906, 0x6c065205, 0x83c4393b, + 0x61182242, 0x8eda497c, 0x65edf27f, 0x8a2f9941, + 0x7b24c2cc, 0x94e6a9f2, 0x7fd112f1, 0x901379cf, + 0x72cf62b6, 0x9d0d0988, 0x763ab28b, 0x99f8d9b5, + 0x9eba07a0, 0x71786c9e, 0x9a4fd79d, 0x758dbca3, + 0x9751a7da, 0x7893cce4, 0x93a477e7, 0x7c661cd9, + 0x8d6d4754, 0x62af2c6a, 0x89989769, 0x665afc57, + 0x8486e72e, 0x6b448c10, 0x80733713, 0x6fb15c2d, + 0xb9148648, 0x56d6ed76, 0xbde15675, 0x52233d4b, + 0xb0ff2632, 0x5f3d4d0c, 0xb40af60f, 0x5bc89d31, + 0xaac3c6bc, 0x4501ad82, 0xae361681, 0x41f47dbf, + 0xa32866c6, 0x4cea0df8, 0xa7ddb6fb, 0x481fddc5, + 0xd1e70470, 0x3e256f4e, 0xd512d44d, 0x3ad0bf73, + 0xd80ca40a, 0x37cecf34, 0xdcf97437, 0x333b1f09, + 0xc2304484, 0x2df22fba, 0xc6c594b9, 0x2907ff87, + 0xcbdbe4fe, 0x24198fc0, 0xcf2e34c3, 0x20ec5ffd, + 0xf6498598, 0x198beea6, 0xf2bc55a5, 0x1d7e3e9b, + 0xffa225e2, 0x10604edc, 0xfb57f5df, 0x14959ee1, + 0xe59ec56c, 0x0a5cae52, 0xe16b1551, 0x0ea97e6f, + 0xec756516, 0x03b70e28, 0xe880b52b, 0x0742de15, + 0xe6050901, 0x09c7623f, 0xe2f0d93c, 0x0d32b202, + 0xefeea97b, 0x002cc245, 0xeb1b7946, 0x04d91278, + 0xf5d249f5, 0x1a1022cb, 0xf12799c8, 0x1ee5f2f6, + 0xfc39e98f, 0x13fb82b1, 0xf8cc39b2, 0x170e528c, + 0xc1ab88e9, 0x2e69e3d7, 0xc55e58d4, 0x2a9c33ea, + 0xc8402893, 0x278243ad, 0xccb5f8ae, 0x23779390, + 0xd27cc81d, 0x3dbea323, 0xd6891820, 0x394b731e, + 0xdb976867, 0x34550359, 0xdf62b85a, 0x30a0d364, + 0xa9580ad1, 0x469a61ef, 0xadaddaec, 0x426fb1d2, + 0xa0b3aaab, 0x4f71c195, 0xa4467a96, 0x4b8411a8, + 0xba8f4a25, 0x554d211b, 0xbe7a9a18, 0x51b8f126, + 0xb364ea5f, 0x5ca68161, 0xb7913a62, 0x5853515c, + 0x8ef68b39, 0x6134e007, 0x8a035b04, 0x65c1303a, + 0x871d2b43, 0x68df407d, 0x83e8fb7e, 0x6c2a9040, + 0x9d21cbcd, 0x72e3a0f3, 0x99d41bf0, 0x761670ce, + 0x94ca6bb7, 0x7b080089, 0x903fbb8a, 0x7ffdd0b4, + 0x78bf0ea1, 0x977d659f, 0x7c4ade9c, 0x9388b5a2, + 0x7154aedb, 0x9e96c5e5, 0x75a17ee6, 0x9a6315d8, + 0x6b684e55, 0x84aa256b, 0x6f9d9e68, 0x805ff556, + 0x6283ee2f, 0x8d418511, 0x66763e12, 0x89b4552c, + 0x5f118f49, 0xb0d3e477, 0x5be45f74, 0xb426344a, + 0x56fa2f33, 0xb938440d, 0x520fff0e, 0xbdcd9430, + 0x4cc6cfbd, 0xa304a483, 0x48331f80, 0xa7f174be, + 0x452d6fc7, 0xaaef04f9, 0x41d8bffa, 0xae1ad4c4, + 0x37e20d71, 0xd820664f, 0x3317dd4c, 0xdcd5b672, + 0x3e09ad0b, 0xd1cbc635, 0x3afc7d36, 0xd53e1608, + 0x24354d85, 0xcbf726bb, 0x20c09db8, 0xcf02f686, + 0x2ddeedff, 0xc21c86c1, 0x292b3dc2, 0xc6e956fc, + 0x104c8c99, 0xff8ee7a7, 0x14b95ca4, 0xfb7b379a, + 0x19a72ce3, 0xf66547dd, 0x1d52fcde, 0xf29097e0, + 0x039bcc6d, 0xec59a753, 0x076e1c50, 0xe8ac776e, + 0x0a706c17, 0xe5b20729, 0x0e85bc2a, 0xe147d714, + }, + { + 0x00000000, 0xc18edfc0, 0x586cb9c1, 0x99e26601, + 0xb0d97382, 0x7157ac42, 0xe8b5ca43, 0x293b1583, + 0xbac3e145, 0x7b4d3e85, 0xe2af5884, 0x23218744, + 0x0a1a92c7, 0xcb944d07, 0x52762b06, 0x93f8f4c6, + 0xaef6c4cb, 0x6f781b0b, 0xf69a7d0a, 0x3714a2ca, + 0x1e2fb749, 0xdfa16889, 0x46430e88, 0x87cdd148, + 0x1435258e, 0xd5bbfa4e, 0x4c599c4f, 0x8dd7438f, + 0xa4ec560c, 0x656289cc, 0xfc80efcd, 0x3d0e300d, + 0x869c8fd7, 0x47125017, 0xdef03616, 0x1f7ee9d6, + 0x3645fc55, 0xf7cb2395, 0x6e294594, 0xafa79a54, + 0x3c5f6e92, 0xfdd1b152, 0x6433d753, 0xa5bd0893, + 0x8c861d10, 0x4d08c2d0, 0xd4eaa4d1, 0x15647b11, + 0x286a4b1c, 0xe9e494dc, 0x7006f2dd, 0xb1882d1d, + 0x98b3389e, 0x593de75e, 0xc0df815f, 0x01515e9f, + 0x92a9aa59, 0x53277599, 0xcac51398, 0x0b4bcc58, + 0x2270d9db, 0xe3fe061b, 0x7a1c601a, 0xbb92bfda, + 0xd64819ef, 0x17c6c62f, 0x8e24a02e, 0x4faa7fee, + 0x66916a6d, 0xa71fb5ad, 0x3efdd3ac, 0xff730c6c, + 0x6c8bf8aa, 0xad05276a, 0x34e7416b, 0xf5699eab, + 0xdc528b28, 0x1ddc54e8, 0x843e32e9, 0x45b0ed29, + 0x78bedd24, 0xb93002e4, 0x20d264e5, 0xe15cbb25, + 0xc867aea6, 0x09e97166, 0x900b1767, 0x5185c8a7, + 0xc27d3c61, 0x03f3e3a1, 0x9a1185a0, 0x5b9f5a60, + 0x72a44fe3, 0xb32a9023, 0x2ac8f622, 0xeb4629e2, + 0x50d49638, 0x915a49f8, 0x08b82ff9, 0xc936f039, + 0xe00de5ba, 0x21833a7a, 0xb8615c7b, 0x79ef83bb, + 0xea17777d, 0x2b99a8bd, 0xb27bcebc, 0x73f5117c, + 0x5ace04ff, 0x9b40db3f, 0x02a2bd3e, 0xc32c62fe, + 0xfe2252f3, 0x3fac8d33, 0xa64eeb32, 0x67c034f2, + 0x4efb2171, 0x8f75feb1, 0x169798b0, 0xd7194770, + 0x44e1b3b6, 0x856f6c76, 0x1c8d0a77, 0xdd03d5b7, + 0xf438c034, 0x35b61ff4, 0xac5479f5, 0x6ddaa635, + 0x77e1359f, 0xb66fea5f, 0x2f8d8c5e, 0xee03539e, + 0xc738461d, 0x06b699dd, 0x9f54ffdc, 0x5eda201c, + 0xcd22d4da, 0x0cac0b1a, 0x954e6d1b, 0x54c0b2db, + 0x7dfba758, 0xbc757898, 0x25971e99, 0xe419c159, + 0xd917f154, 0x18992e94, 0x817b4895, 0x40f59755, + 0x69ce82d6, 0xa8405d16, 0x31a23b17, 0xf02ce4d7, + 0x63d41011, 0xa25acfd1, 0x3bb8a9d0, 0xfa367610, + 0xd30d6393, 0x1283bc53, 0x8b61da52, 0x4aef0592, + 0xf17dba48, 0x30f36588, 0xa9110389, 0x689fdc49, + 0x41a4c9ca, 0x802a160a, 0x19c8700b, 0xd846afcb, + 0x4bbe5b0d, 0x8a3084cd, 0x13d2e2cc, 0xd25c3d0c, + 0xfb67288f, 0x3ae9f74f, 0xa30b914e, 0x62854e8e, + 0x5f8b7e83, 0x9e05a143, 0x07e7c742, 0xc6691882, + 0xef520d01, 0x2edcd2c1, 0xb73eb4c0, 0x76b06b00, + 0xe5489fc6, 0x24c64006, 0xbd242607, 0x7caaf9c7, + 0x5591ec44, 0x941f3384, 0x0dfd5585, 0xcc738a45, + 0xa1a92c70, 0x6027f3b0, 0xf9c595b1, 0x384b4a71, + 0x11705ff2, 0xd0fe8032, 0x491ce633, 0x889239f3, + 0x1b6acd35, 0xdae412f5, 0x430674f4, 0x8288ab34, + 0xabb3beb7, 0x6a3d6177, 0xf3df0776, 0x3251d8b6, + 0x0f5fe8bb, 0xced1377b, 0x5733517a, 0x96bd8eba, + 0xbf869b39, 0x7e0844f9, 0xe7ea22f8, 0x2664fd38, + 0xb59c09fe, 0x7412d63e, 0xedf0b03f, 0x2c7e6fff, + 0x05457a7c, 0xc4cba5bc, 0x5d29c3bd, 0x9ca71c7d, + 0x2735a3a7, 0xe6bb7c67, 0x7f591a66, 0xbed7c5a6, + 0x97ecd025, 0x56620fe5, 0xcf8069e4, 0x0e0eb624, + 0x9df642e2, 0x5c789d22, 0xc59afb23, 0x041424e3, + 0x2d2f3160, 0xeca1eea0, 0x754388a1, 0xb4cd5761, + 0x89c3676c, 0x484db8ac, 0xd1afdead, 0x1021016d, + 0x391a14ee, 0xf894cb2e, 0x6176ad2f, 0xa0f872ef, + 0x33008629, 0xf28e59e9, 0x6b6c3fe8, 0xaae2e028, + 0x83d9f5ab, 0x42572a6b, 0xdbb54c6a, 0x1a3b93aa, + }, + { + 0x00000000, 0x9ba54c6f, 0xec3b9e9f, 0x779ed2f0, + 0x03063b7f, 0x98a37710, 0xef3da5e0, 0x7498e98f, + 0x060c76fe, 0x9da93a91, 0xea37e861, 0x7192a40e, + 0x050a4d81, 0x9eaf01ee, 0xe931d31e, 0x72949f71, + 0x0c18edfc, 0x97bda193, 0xe0237363, 0x7b863f0c, + 0x0f1ed683, 0x94bb9aec, 0xe325481c, 0x78800473, + 0x0a149b02, 0x91b1d76d, 0xe62f059d, 0x7d8a49f2, + 0x0912a07d, 0x92b7ec12, 0xe5293ee2, 0x7e8c728d, + 0x1831dbf8, 0x83949797, 0xf40a4567, 0x6faf0908, + 0x1b37e087, 0x8092ace8, 0xf70c7e18, 0x6ca93277, + 0x1e3dad06, 0x8598e169, 0xf2063399, 0x69a37ff6, + 0x1d3b9679, 0x869eda16, 0xf10008e6, 0x6aa54489, + 0x14293604, 0x8f8c7a6b, 0xf812a89b, 0x63b7e4f4, + 0x172f0d7b, 0x8c8a4114, 0xfb1493e4, 0x60b1df8b, + 0x122540fa, 0x89800c95, 0xfe1ede65, 0x65bb920a, + 0x11237b85, 0x8a8637ea, 0xfd18e51a, 0x66bda975, + 0x3063b7f0, 0xabc6fb9f, 0xdc58296f, 0x47fd6500, + 0x33658c8f, 0xa8c0c0e0, 0xdf5e1210, 0x44fb5e7f, + 0x366fc10e, 0xadca8d61, 0xda545f91, 0x41f113fe, + 0x3569fa71, 0xaeccb61e, 0xd95264ee, 0x42f72881, + 0x3c7b5a0c, 0xa7de1663, 0xd040c493, 0x4be588fc, + 0x3f7d6173, 0xa4d82d1c, 0xd346ffec, 0x48e3b383, + 0x3a772cf2, 0xa1d2609d, 0xd64cb26d, 0x4de9fe02, + 0x3971178d, 0xa2d45be2, 0xd54a8912, 0x4eefc57d, + 0x28526c08, 0xb3f72067, 0xc469f297, 0x5fccbef8, + 0x2b545777, 0xb0f11b18, 0xc76fc9e8, 0x5cca8587, + 0x2e5e1af6, 0xb5fb5699, 0xc2658469, 0x59c0c806, + 0x2d582189, 0xb6fd6de6, 0xc163bf16, 0x5ac6f379, + 0x244a81f4, 0xbfefcd9b, 0xc8711f6b, 0x53d45304, + 0x274cba8b, 0xbce9f6e4, 0xcb772414, 0x50d2687b, + 0x2246f70a, 0xb9e3bb65, 0xce7d6995, 0x55d825fa, + 0x2140cc75, 0xbae5801a, 0xcd7b52ea, 0x56de1e85, + 0x60c76fe0, 0xfb62238f, 0x8cfcf17f, 0x1759bd10, + 0x63c1549f, 0xf86418f0, 0x8ffaca00, 0x145f866f, + 0x66cb191e, 0xfd6e5571, 0x8af08781, 0x1155cbee, + 0x65cd2261, 0xfe686e0e, 0x89f6bcfe, 0x1253f091, + 0x6cdf821c, 0xf77ace73, 0x80e41c83, 0x1b4150ec, + 0x6fd9b963, 0xf47cf50c, 0x83e227fc, 0x18476b93, + 0x6ad3f4e2, 0xf176b88d, 0x86e86a7d, 0x1d4d2612, + 0x69d5cf9d, 0xf27083f2, 0x85ee5102, 0x1e4b1d6d, + 0x78f6b418, 0xe353f877, 0x94cd2a87, 0x0f6866e8, + 0x7bf08f67, 0xe055c308, 0x97cb11f8, 0x0c6e5d97, + 0x7efac2e6, 0xe55f8e89, 0x92c15c79, 0x09641016, + 0x7dfcf999, 0xe659b5f6, 0x91c76706, 0x0a622b69, + 0x74ee59e4, 0xef4b158b, 0x98d5c77b, 0x03708b14, + 0x77e8629b, 0xec4d2ef4, 0x9bd3fc04, 0x0076b06b, + 0x72e22f1a, 0xe9476375, 0x9ed9b185, 0x057cfdea, + 0x71e41465, 0xea41580a, 0x9ddf8afa, 0x067ac695, + 0x50a4d810, 0xcb01947f, 0xbc9f468f, 0x273a0ae0, + 0x53a2e36f, 0xc807af00, 0xbf997df0, 0x243c319f, + 0x56a8aeee, 0xcd0de281, 0xba933071, 0x21367c1e, + 0x55ae9591, 0xce0bd9fe, 0xb9950b0e, 0x22304761, + 0x5cbc35ec, 0xc7197983, 0xb087ab73, 0x2b22e71c, + 0x5fba0e93, 0xc41f42fc, 0xb381900c, 0x2824dc63, + 0x5ab04312, 0xc1150f7d, 0xb68bdd8d, 0x2d2e91e2, + 0x59b6786d, 0xc2133402, 0xb58de6f2, 0x2e28aa9d, + 0x489503e8, 0xd3304f87, 0xa4ae9d77, 0x3f0bd118, + 0x4b933897, 0xd03674f8, 0xa7a8a608, 0x3c0dea67, + 0x4e997516, 0xd53c3979, 0xa2a2eb89, 0x3907a7e6, + 0x4d9f4e69, 0xd63a0206, 0xa1a4d0f6, 0x3a019c99, + 0x448dee14, 0xdf28a27b, 0xa8b6708b, 0x33133ce4, + 0x478bd56b, 0xdc2e9904, 0xabb04bf4, 0x3015079b, + 0x428198ea, 0xd924d485, 0xaeba0675, 0x351f4a1a, + 0x4187a395, 0xda22effa, 0xadbc3d0a, 0x36197165, + }, + { + 0x00000000, 0xdd96d985, 0x605cb54b, 0xbdca6cce, + 0xc0b96a96, 0x1d2fb313, 0xa0e5dfdd, 0x7d730658, + 0x5a03d36d, 0x87950ae8, 0x3a5f6626, 0xe7c9bfa3, + 0x9abab9fb, 0x472c607e, 0xfae60cb0, 0x2770d535, + 0xb407a6da, 0x69917f5f, 0xd45b1391, 0x09cdca14, + 0x74becc4c, 0xa92815c9, 0x14e27907, 0xc974a082, + 0xee0475b7, 0x3392ac32, 0x8e58c0fc, 0x53ce1979, + 0x2ebd1f21, 0xf32bc6a4, 0x4ee1aa6a, 0x937773ef, + 0xb37e4bf5, 0x6ee89270, 0xd322febe, 0x0eb4273b, + 0x73c72163, 0xae51f8e6, 0x139b9428, 0xce0d4dad, + 0xe97d9898, 0x34eb411d, 0x89212dd3, 0x54b7f456, + 0x29c4f20e, 0xf4522b8b, 0x49984745, 0x940e9ec0, + 0x0779ed2f, 0xdaef34aa, 0x67255864, 0xbab381e1, + 0xc7c087b9, 0x1a565e3c, 0xa79c32f2, 0x7a0aeb77, + 0x5d7a3e42, 0x80ece7c7, 0x3d268b09, 0xe0b0528c, + 0x9dc354d4, 0x40558d51, 0xfd9fe19f, 0x2009381a, + 0xbd8d91ab, 0x601b482e, 0xddd124e0, 0x0047fd65, + 0x7d34fb3d, 0xa0a222b8, 0x1d684e76, 0xc0fe97f3, + 0xe78e42c6, 0x3a189b43, 0x87d2f78d, 0x5a442e08, + 0x27372850, 0xfaa1f1d5, 0x476b9d1b, 0x9afd449e, + 0x098a3771, 0xd41ceef4, 0x69d6823a, 0xb4405bbf, + 0xc9335de7, 0x14a58462, 0xa96fe8ac, 0x74f93129, + 0x5389e41c, 0x8e1f3d99, 0x33d55157, 0xee4388d2, + 0x93308e8a, 0x4ea6570f, 0xf36c3bc1, 0x2efae244, + 0x0ef3da5e, 0xd36503db, 0x6eaf6f15, 0xb339b690, + 0xce4ab0c8, 0x13dc694d, 0xae160583, 0x7380dc06, + 0x54f00933, 0x8966d0b6, 0x34acbc78, 0xe93a65fd, + 0x944963a5, 0x49dfba20, 0xf415d6ee, 0x29830f6b, + 0xbaf47c84, 0x6762a501, 0xdaa8c9cf, 0x073e104a, + 0x7a4d1612, 0xa7dbcf97, 0x1a11a359, 0xc7877adc, + 0xe0f7afe9, 0x3d61766c, 0x80ab1aa2, 0x5d3dc327, + 0x204ec57f, 0xfdd81cfa, 0x40127034, 0x9d84a9b1, + 0xa06a2517, 0x7dfcfc92, 0xc036905c, 0x1da049d9, + 0x60d34f81, 0xbd459604, 0x008ffaca, 0xdd19234f, + 0xfa69f67a, 0x27ff2fff, 0x9a354331, 0x47a39ab4, + 0x3ad09cec, 0xe7464569, 0x5a8c29a7, 0x871af022, + 0x146d83cd, 0xc9fb5a48, 0x74313686, 0xa9a7ef03, + 0xd4d4e95b, 0x094230de, 0xb4885c10, 0x691e8595, + 0x4e6e50a0, 0x93f88925, 0x2e32e5eb, 0xf3a43c6e, + 0x8ed73a36, 0x5341e3b3, 0xee8b8f7d, 0x331d56f8, + 0x13146ee2, 0xce82b767, 0x7348dba9, 0xaede022c, + 0xd3ad0474, 0x0e3bddf1, 0xb3f1b13f, 0x6e6768ba, + 0x4917bd8f, 0x9481640a, 0x294b08c4, 0xf4ddd141, + 0x89aed719, 0x54380e9c, 0xe9f26252, 0x3464bbd7, + 0xa713c838, 0x7a8511bd, 0xc74f7d73, 0x1ad9a4f6, + 0x67aaa2ae, 0xba3c7b2b, 0x07f617e5, 0xda60ce60, + 0xfd101b55, 0x2086c2d0, 0x9d4cae1e, 0x40da779b, + 0x3da971c3, 0xe03fa846, 0x5df5c488, 0x80631d0d, + 0x1de7b4bc, 0xc0716d39, 0x7dbb01f7, 0xa02dd872, + 0xdd5ede2a, 0x00c807af, 0xbd026b61, 0x6094b2e4, + 0x47e467d1, 0x9a72be54, 0x27b8d29a, 0xfa2e0b1f, + 0x875d0d47, 0x5acbd4c2, 0xe701b80c, 0x3a976189, + 0xa9e01266, 0x7476cbe3, 0xc9bca72d, 0x142a7ea8, + 0x695978f0, 0xb4cfa175, 0x0905cdbb, 0xd493143e, + 0xf3e3c10b, 0x2e75188e, 0x93bf7440, 0x4e29adc5, + 0x335aab9d, 0xeecc7218, 0x53061ed6, 0x8e90c753, + 0xae99ff49, 0x730f26cc, 0xcec54a02, 0x13539387, + 0x6e2095df, 0xb3b64c5a, 0x0e7c2094, 0xd3eaf911, + 0xf49a2c24, 0x290cf5a1, 0x94c6996f, 0x495040ea, + 0x342346b2, 0xe9b59f37, 0x547ff3f9, 0x89e92a7c, + 0x1a9e5993, 0xc7088016, 0x7ac2ecd8, 0xa754355d, + 0xda273305, 0x07b1ea80, 0xba7b864e, 0x67ed5fcb, + 0x409d8afe, 0x9d0b537b, 0x20c13fb5, 0xfd57e630, + 0x8024e068, 0x5db239ed, 0xe0785523, 0x3dee8ca6, + }, + { + 0x00000000, 0x9d0fe176, 0xe16ec4ad, 0x7c6125db, + 0x19ac8f1b, 0x84a36e6d, 0xf8c24bb6, 0x65cdaac0, + 0x33591e36, 0xae56ff40, 0xd237da9b, 0x4f383bed, + 0x2af5912d, 0xb7fa705b, 0xcb9b5580, 0x5694b4f6, + 0x66b23c6c, 0xfbbddd1a, 0x87dcf8c1, 0x1ad319b7, + 0x7f1eb377, 0xe2115201, 0x9e7077da, 0x037f96ac, + 0x55eb225a, 0xc8e4c32c, 0xb485e6f7, 0x298a0781, + 0x4c47ad41, 0xd1484c37, 0xad2969ec, 0x3026889a, + 0xcd6478d8, 0x506b99ae, 0x2c0abc75, 0xb1055d03, + 0xd4c8f7c3, 0x49c716b5, 0x35a6336e, 0xa8a9d218, + 0xfe3d66ee, 0x63328798, 0x1f53a243, 0x825c4335, + 0xe791e9f5, 0x7a9e0883, 0x06ff2d58, 0x9bf0cc2e, + 0xabd644b4, 0x36d9a5c2, 0x4ab88019, 0xd7b7616f, + 0xb27acbaf, 0x2f752ad9, 0x53140f02, 0xce1bee74, + 0x988f5a82, 0x0580bbf4, 0x79e19e2f, 0xe4ee7f59, + 0x8123d599, 0x1c2c34ef, 0x604d1134, 0xfd42f042, + 0x41b9f7f1, 0xdcb61687, 0xa0d7335c, 0x3dd8d22a, + 0x581578ea, 0xc51a999c, 0xb97bbc47, 0x24745d31, + 0x72e0e9c7, 0xefef08b1, 0x938e2d6a, 0x0e81cc1c, + 0x6b4c66dc, 0xf64387aa, 0x8a22a271, 0x172d4307, + 0x270bcb9d, 0xba042aeb, 0xc6650f30, 0x5b6aee46, + 0x3ea74486, 0xa3a8a5f0, 0xdfc9802b, 0x42c6615d, + 0x1452d5ab, 0x895d34dd, 0xf53c1106, 0x6833f070, + 0x0dfe5ab0, 0x90f1bbc6, 0xec909e1d, 0x719f7f6b, + 0x8cdd8f29, 0x11d26e5f, 0x6db34b84, 0xf0bcaaf2, + 0x95710032, 0x087ee144, 0x741fc49f, 0xe91025e9, + 0xbf84911f, 0x228b7069, 0x5eea55b2, 0xc3e5b4c4, + 0xa6281e04, 0x3b27ff72, 0x4746daa9, 0xda493bdf, + 0xea6fb345, 0x77605233, 0x0b0177e8, 0x960e969e, + 0xf3c33c5e, 0x6eccdd28, 0x12adf8f3, 0x8fa21985, + 0xd936ad73, 0x44394c05, 0x385869de, 0xa55788a8, + 0xc09a2268, 0x5d95c31e, 0x21f4e6c5, 0xbcfb07b3, + 0x8373efe2, 0x1e7c0e94, 0x621d2b4f, 0xff12ca39, + 0x9adf60f9, 0x07d0818f, 0x7bb1a454, 0xe6be4522, + 0xb02af1d4, 0x2d2510a2, 0x51443579, 0xcc4bd40f, + 0xa9867ecf, 0x34899fb9, 0x48e8ba62, 0xd5e75b14, + 0xe5c1d38e, 0x78ce32f8, 0x04af1723, 0x99a0f655, + 0xfc6d5c95, 0x6162bde3, 0x1d039838, 0x800c794e, + 0xd698cdb8, 0x4b972cce, 0x37f60915, 0xaaf9e863, + 0xcf3442a3, 0x523ba3d5, 0x2e5a860e, 0xb3556778, + 0x4e17973a, 0xd318764c, 0xaf795397, 0x3276b2e1, + 0x57bb1821, 0xcab4f957, 0xb6d5dc8c, 0x2bda3dfa, + 0x7d4e890c, 0xe041687a, 0x9c204da1, 0x012facd7, + 0x64e20617, 0xf9ede761, 0x858cc2ba, 0x188323cc, + 0x28a5ab56, 0xb5aa4a20, 0xc9cb6ffb, 0x54c48e8d, + 0x3109244d, 0xac06c53b, 0xd067e0e0, 0x4d680196, + 0x1bfcb560, 0x86f35416, 0xfa9271cd, 0x679d90bb, + 0x02503a7b, 0x9f5fdb0d, 0xe33efed6, 0x7e311fa0, + 0xc2ca1813, 0x5fc5f965, 0x23a4dcbe, 0xbeab3dc8, + 0xdb669708, 0x4669767e, 0x3a0853a5, 0xa707b2d3, + 0xf1930625, 0x6c9ce753, 0x10fdc288, 0x8df223fe, + 0xe83f893e, 0x75306848, 0x09514d93, 0x945eace5, + 0xa478247f, 0x3977c509, 0x4516e0d2, 0xd81901a4, + 0xbdd4ab64, 0x20db4a12, 0x5cba6fc9, 0xc1b58ebf, + 0x97213a49, 0x0a2edb3f, 0x764ffee4, 0xeb401f92, + 0x8e8db552, 0x13825424, 0x6fe371ff, 0xf2ec9089, + 0x0fae60cb, 0x92a181bd, 0xeec0a466, 0x73cf4510, + 0x1602efd0, 0x8b0d0ea6, 0xf76c2b7d, 0x6a63ca0b, + 0x3cf77efd, 0xa1f89f8b, 0xdd99ba50, 0x40965b26, + 0x255bf1e6, 0xb8541090, 0xc435354b, 0x593ad43d, + 0x691c5ca7, 0xf413bdd1, 0x8872980a, 0x157d797c, + 0x70b0d3bc, 0xedbf32ca, 0x91de1711, 0x0cd1f667, + 0x5a454291, 0xc74aa3e7, 0xbb2b863c, 0x2624674a, + 0x43e9cd8a, 0xdee62cfc, 0xa2870927, 0x3f88e851, + }, + { + 0x00000000, 0xb9fbdbe8, 0xa886b191, 0x117d6a79, + 0x8a7c6563, 0x3387be8b, 0x22fad4f2, 0x9b010f1a, + 0xcf89cc87, 0x7672176f, 0x670f7d16, 0xdef4a6fe, + 0x45f5a9e4, 0xfc0e720c, 0xed731875, 0x5488c39d, + 0x44629f4f, 0xfd9944a7, 0xece42ede, 0x551ff536, + 0xce1efa2c, 0x77e521c4, 0x66984bbd, 0xdf639055, + 0x8beb53c8, 0x32108820, 0x236de259, 0x9a9639b1, + 0x019736ab, 0xb86ced43, 0xa911873a, 0x10ea5cd2, + 0x88c53e9e, 0x313ee576, 0x20438f0f, 0x99b854e7, + 0x02b95bfd, 0xbb428015, 0xaa3fea6c, 0x13c43184, + 0x474cf219, 0xfeb729f1, 0xefca4388, 0x56319860, + 0xcd30977a, 0x74cb4c92, 0x65b626eb, 0xdc4dfd03, + 0xcca7a1d1, 0x755c7a39, 0x64211040, 0xdddacba8, + 0x46dbc4b2, 0xff201f5a, 0xee5d7523, 0x57a6aecb, + 0x032e6d56, 0xbad5b6be, 0xaba8dcc7, 0x1253072f, + 0x89520835, 0x30a9d3dd, 0x21d4b9a4, 0x982f624c, + 0xcafb7b7d, 0x7300a095, 0x627dcaec, 0xdb861104, + 0x40871e1e, 0xf97cc5f6, 0xe801af8f, 0x51fa7467, + 0x0572b7fa, 0xbc896c12, 0xadf4066b, 0x140fdd83, + 0x8f0ed299, 0x36f50971, 0x27886308, 0x9e73b8e0, + 0x8e99e432, 0x37623fda, 0x261f55a3, 0x9fe48e4b, + 0x04e58151, 0xbd1e5ab9, 0xac6330c0, 0x1598eb28, + 0x411028b5, 0xf8ebf35d, 0xe9969924, 0x506d42cc, + 0xcb6c4dd6, 0x7297963e, 0x63eafc47, 0xda1127af, + 0x423e45e3, 0xfbc59e0b, 0xeab8f472, 0x53432f9a, + 0xc8422080, 0x71b9fb68, 0x60c49111, 0xd93f4af9, + 0x8db78964, 0x344c528c, 0x253138f5, 0x9ccae31d, + 0x07cbec07, 0xbe3037ef, 0xaf4d5d96, 0x16b6867e, + 0x065cdaac, 0xbfa70144, 0xaeda6b3d, 0x1721b0d5, + 0x8c20bfcf, 0x35db6427, 0x24a60e5e, 0x9d5dd5b6, + 0xc9d5162b, 0x702ecdc3, 0x6153a7ba, 0xd8a87c52, + 0x43a97348, 0xfa52a8a0, 0xeb2fc2d9, 0x52d41931, + 0x4e87f0bb, 0xf77c2b53, 0xe601412a, 0x5ffa9ac2, + 0xc4fb95d8, 0x7d004e30, 0x6c7d2449, 0xd586ffa1, + 0x810e3c3c, 0x38f5e7d4, 0x29888dad, 0x90735645, + 0x0b72595f, 0xb28982b7, 0xa3f4e8ce, 0x1a0f3326, + 0x0ae56ff4, 0xb31eb41c, 0xa263de65, 0x1b98058d, + 0x80990a97, 0x3962d17f, 0x281fbb06, 0x91e460ee, + 0xc56ca373, 0x7c97789b, 0x6dea12e2, 0xd411c90a, + 0x4f10c610, 0xf6eb1df8, 0xe7967781, 0x5e6dac69, + 0xc642ce25, 0x7fb915cd, 0x6ec47fb4, 0xd73fa45c, + 0x4c3eab46, 0xf5c570ae, 0xe4b81ad7, 0x5d43c13f, + 0x09cb02a2, 0xb030d94a, 0xa14db333, 0x18b668db, + 0x83b767c1, 0x3a4cbc29, 0x2b31d650, 0x92ca0db8, + 0x8220516a, 0x3bdb8a82, 0x2aa6e0fb, 0x935d3b13, + 0x085c3409, 0xb1a7efe1, 0xa0da8598, 0x19215e70, + 0x4da99ded, 0xf4524605, 0xe52f2c7c, 0x5cd4f794, + 0xc7d5f88e, 0x7e2e2366, 0x6f53491f, 0xd6a892f7, + 0x847c8bc6, 0x3d87502e, 0x2cfa3a57, 0x9501e1bf, + 0x0e00eea5, 0xb7fb354d, 0xa6865f34, 0x1f7d84dc, + 0x4bf54741, 0xf20e9ca9, 0xe373f6d0, 0x5a882d38, + 0xc1892222, 0x7872f9ca, 0x690f93b3, 0xd0f4485b, + 0xc01e1489, 0x79e5cf61, 0x6898a518, 0xd1637ef0, + 0x4a6271ea, 0xf399aa02, 0xe2e4c07b, 0x5b1f1b93, + 0x0f97d80e, 0xb66c03e6, 0xa711699f, 0x1eeab277, + 0x85ebbd6d, 0x3c106685, 0x2d6d0cfc, 0x9496d714, + 0x0cb9b558, 0xb5426eb0, 0xa43f04c9, 0x1dc4df21, + 0x86c5d03b, 0x3f3e0bd3, 0x2e4361aa, 0x97b8ba42, + 0xc33079df, 0x7acba237, 0x6bb6c84e, 0xd24d13a6, + 0x494c1cbc, 0xf0b7c754, 0xe1caad2d, 0x583176c5, + 0x48db2a17, 0xf120f1ff, 0xe05d9b86, 0x59a6406e, + 0xc2a74f74, 0x7b5c949c, 0x6a21fee5, 0xd3da250d, + 0x8752e690, 0x3ea93d78, 0x2fd45701, 0x962f8ce9, + 0x0d2e83f3, 0xb4d5581b, 0xa5a83262, 0x1c53e98a, + }, + { + 0x00000000, 0xae689191, 0x87a02563, 0x29c8b4f2, + 0xd4314c87, 0x7a59dd16, 0x539169e4, 0xfdf9f875, + 0x73139f4f, 0xdd7b0ede, 0xf4b3ba2c, 0x5adb2bbd, + 0xa722d3c8, 0x094a4259, 0x2082f6ab, 0x8eea673a, + 0xe6273e9e, 0x484faf0f, 0x61871bfd, 0xcfef8a6c, + 0x32167219, 0x9c7ee388, 0xb5b6577a, 0x1bdec6eb, + 0x9534a1d1, 0x3b5c3040, 0x129484b2, 0xbcfc1523, + 0x4105ed56, 0xef6d7cc7, 0xc6a5c835, 0x68cd59a4, + 0x173f7b7d, 0xb957eaec, 0x909f5e1e, 0x3ef7cf8f, + 0xc30e37fa, 0x6d66a66b, 0x44ae1299, 0xeac68308, + 0x642ce432, 0xca4475a3, 0xe38cc151, 0x4de450c0, + 0xb01da8b5, 0x1e753924, 0x37bd8dd6, 0x99d51c47, + 0xf11845e3, 0x5f70d472, 0x76b86080, 0xd8d0f111, + 0x25290964, 0x8b4198f5, 0xa2892c07, 0x0ce1bd96, + 0x820bdaac, 0x2c634b3d, 0x05abffcf, 0xabc36e5e, + 0x563a962b, 0xf85207ba, 0xd19ab348, 0x7ff222d9, + 0x2e7ef6fa, 0x8016676b, 0xa9ded399, 0x07b64208, + 0xfa4fba7d, 0x54272bec, 0x7def9f1e, 0xd3870e8f, + 0x5d6d69b5, 0xf305f824, 0xdacd4cd6, 0x74a5dd47, + 0x895c2532, 0x2734b4a3, 0x0efc0051, 0xa09491c0, + 0xc859c864, 0x663159f5, 0x4ff9ed07, 0xe1917c96, + 0x1c6884e3, 0xb2001572, 0x9bc8a180, 0x35a03011, + 0xbb4a572b, 0x1522c6ba, 0x3cea7248, 0x9282e3d9, + 0x6f7b1bac, 0xc1138a3d, 0xe8db3ecf, 0x46b3af5e, + 0x39418d87, 0x97291c16, 0xbee1a8e4, 0x10893975, + 0xed70c100, 0x43185091, 0x6ad0e463, 0xc4b875f2, + 0x4a5212c8, 0xe43a8359, 0xcdf237ab, 0x639aa63a, + 0x9e635e4f, 0x300bcfde, 0x19c37b2c, 0xb7abeabd, + 0xdf66b319, 0x710e2288, 0x58c6967a, 0xf6ae07eb, + 0x0b57ff9e, 0xa53f6e0f, 0x8cf7dafd, 0x229f4b6c, + 0xac752c56, 0x021dbdc7, 0x2bd50935, 0x85bd98a4, + 0x784460d1, 0xd62cf140, 0xffe445b2, 0x518cd423, + 0x5cfdedf4, 0xf2957c65, 0xdb5dc897, 0x75355906, + 0x88cca173, 0x26a430e2, 0x0f6c8410, 0xa1041581, + 0x2fee72bb, 0x8186e32a, 0xa84e57d8, 0x0626c649, + 0xfbdf3e3c, 0x55b7afad, 0x7c7f1b5f, 0xd2178ace, + 0xbadad36a, 0x14b242fb, 0x3d7af609, 0x93126798, + 0x6eeb9fed, 0xc0830e7c, 0xe94bba8e, 0x47232b1f, + 0xc9c94c25, 0x67a1ddb4, 0x4e696946, 0xe001f8d7, + 0x1df800a2, 0xb3909133, 0x9a5825c1, 0x3430b450, + 0x4bc29689, 0xe5aa0718, 0xcc62b3ea, 0x620a227b, + 0x9ff3da0e, 0x319b4b9f, 0x1853ff6d, 0xb63b6efc, + 0x38d109c6, 0x96b99857, 0xbf712ca5, 0x1119bd34, + 0xece04541, 0x4288d4d0, 0x6b406022, 0xc528f1b3, + 0xade5a817, 0x038d3986, 0x2a458d74, 0x842d1ce5, + 0x79d4e490, 0xd7bc7501, 0xfe74c1f3, 0x501c5062, + 0xdef63758, 0x709ea6c9, 0x5956123b, 0xf73e83aa, + 0x0ac77bdf, 0xa4afea4e, 0x8d675ebc, 0x230fcf2d, + 0x72831b0e, 0xdceb8a9f, 0xf5233e6d, 0x5b4baffc, + 0xa6b25789, 0x08dac618, 0x211272ea, 0x8f7ae37b, + 0x01908441, 0xaff815d0, 0x8630a122, 0x285830b3, + 0xd5a1c8c6, 0x7bc95957, 0x5201eda5, 0xfc697c34, + 0x94a42590, 0x3accb401, 0x130400f3, 0xbd6c9162, + 0x40956917, 0xeefdf886, 0xc7354c74, 0x695ddde5, + 0xe7b7badf, 0x49df2b4e, 0x60179fbc, 0xce7f0e2d, + 0x3386f658, 0x9dee67c9, 0xb426d33b, 0x1a4e42aa, + 0x65bc6073, 0xcbd4f1e2, 0xe21c4510, 0x4c74d481, + 0xb18d2cf4, 0x1fe5bd65, 0x362d0997, 0x98459806, + 0x16afff3c, 0xb8c76ead, 0x910fda5f, 0x3f674bce, + 0xc29eb3bb, 0x6cf6222a, 0x453e96d8, 0xeb560749, + 0x839b5eed, 0x2df3cf7c, 0x043b7b8e, 0xaa53ea1f, + 0x57aa126a, 0xf9c283fb, 0xd00a3709, 0x7e62a698, + 0xf088c1a2, 0x5ee05033, 0x7728e4c1, 0xd9407550, + 0x24b98d25, 0x8ad11cb4, 0xa319a846, 0x0d7139d7, + }, +}; diff --git a/ext/digest/crc32_mpeg/crc32_mpeg.c b/ext/digest/crc32_mpeg/crc32_mpeg.c index 77ec2ea..4a9818a 100644 --- a/ext/digest/crc32_mpeg/crc32_mpeg.c +++ b/ext/digest/crc32_mpeg/crc32_mpeg.c @@ -15,54 +15,39 @@ */ #include "crc32_mpeg.h" - -/** - * Static table used for the table_driven implementation. - */ -static const crc32_t crc32_mpeg_table[256] = { - 0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b, 0x1a864db2, 0x1e475005, - 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61, 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, - 0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9, 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75, - 0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3, 0x709f7b7a, 0x745e66cd, - 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039, 0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, - 0xbe2b5b58, 0xbaea46ef, 0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d, - 0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, 0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95, - 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, 0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, - 0x34867077, 0x30476dc0, 0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072, - 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, 0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca, - 0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde, 0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02, - 0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1, 0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba, - 0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b, 0xbb60adfc, 0xb6238b25, 0xb2e29692, - 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6, 0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a, - 0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e, 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2, - 0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34, 0xdc3abded, 0xd8fba05a, - 0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637, 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb, - 0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f, 0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53, - 0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5, 0x3f9b762c, 0x3b5a6b9b, - 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff, 0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, - 0xf12f560e, 0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b, - 0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f, 0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3, - 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, 0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, - 0x9b3660c6, 0x9ff77d71, 0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3, - 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, 0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c, - 0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8, 0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24, - 0x119b4be9, 0x155a565e, 0x18197087, 0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec, - 0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d, 0x2056cd3a, 0x2d15ebe3, 0x29d4f654, - 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0, 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c, - 0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18, 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4, - 0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662, 0x933eb0bb, 0x97ffad0c, - 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668, 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4 -}; +#include "crc32_mpeg_table.h" crc32_t crc32_mpeg_update(crc32_t crc, const void *data, size_t data_len) { const unsigned char *d = (const unsigned char *)data; unsigned int tbl_idx; + for (; data_len >= SLICE_SIZE; data_len -= SLICE_SIZE) + { + crc = crc32_mpeg_table[15][d[ 0] ^ ((crc >> 24) & 0xff)] ^ + crc32_mpeg_table[14][d[ 1] ^ ((crc >> 16) & 0xff)] ^ + crc32_mpeg_table[13][d[ 2] ^ ((crc >> 8) & 0xff)] ^ + crc32_mpeg_table[12][d[ 3] ^ ((crc >> 0) & 0xff)] ^ + crc32_mpeg_table[11][d[ 4] ] ^ + crc32_mpeg_table[10][d[ 5] ] ^ + crc32_mpeg_table[ 9][d[ 6] ] ^ + crc32_mpeg_table[ 8][d[ 7] ] ^ + crc32_mpeg_table[ 7][d[ 8] ] ^ + crc32_mpeg_table[ 6][d[ 9] ] ^ + crc32_mpeg_table[ 5][d[10] ] ^ + crc32_mpeg_table[ 4][d[11] ] ^ + crc32_mpeg_table[ 3][d[12] ] ^ + crc32_mpeg_table[ 2][d[13] ] ^ + crc32_mpeg_table[ 1][d[14] ] ^ + crc32_mpeg_table[ 0][d[15] ]; + crc &= 0xffffffff; + d += SLICE_SIZE; + } + while (data_len--) { tbl_idx = ((crc >> 24) ^ *d) & 0xff; - crc = (crc32_mpeg_table[tbl_idx] ^ (crc << 8)) & 0xffffffff; + crc = (crc32_mpeg_table[0][tbl_idx] ^ (crc << 8)) & 0xffffffff; d++; } diff --git a/ext/digest/crc32_mpeg/crc32_mpeg_table.h b/ext/digest/crc32_mpeg/crc32_mpeg_table.h new file mode 100644 index 0000000..8c37409 --- /dev/null +++ b/ext/digest/crc32_mpeg/crc32_mpeg_table.h @@ -0,0 +1,1070 @@ +/* + * bitwidth: 32 + * generator polynomial: 0x04c11db7 + * input bit direction: NORMAL + * slice bytes per iteration: 16 + * slide bits per table: 8 + * + * Generated by: gentable.rb of digest-crc + */ + +#define SLICE_SIZE 16 + +static const uint32_t crc32_mpeg_table[SLICE_SIZE][256] = { + { + 0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, + 0x130476dc, 0x17c56b6b, 0x1a864db2, 0x1e475005, + 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61, + 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, + 0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9, + 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75, + 0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, + 0x791d4014, 0x7ddc5da3, 0x709f7b7a, 0x745e66cd, + 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039, + 0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, + 0xbe2b5b58, 0xbaea46ef, 0xb7a96036, 0xb3687d81, + 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d, + 0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, + 0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95, + 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, + 0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, + 0x34867077, 0x30476dc0, 0x3d044b19, 0x39c556ae, + 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072, + 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, + 0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca, + 0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde, + 0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02, + 0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1, 0x53dc6066, + 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba, + 0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, + 0xbfa1b04b, 0xbb60adfc, 0xb6238b25, 0xb2e29692, + 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6, + 0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a, + 0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e, + 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2, + 0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686, + 0xd5b88683, 0xd1799b34, 0xdc3abded, 0xd8fba05a, + 0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637, + 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb, + 0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f, + 0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53, + 0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, + 0x36194d42, 0x32d850f5, 0x3f9b762c, 0x3b5a6b9b, + 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff, + 0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, + 0xf12f560e, 0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7, + 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b, + 0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f, + 0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3, + 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, + 0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, + 0x9b3660c6, 0x9ff77d71, 0x92b45ba8, 0x9675461f, + 0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3, + 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, + 0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c, + 0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8, + 0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24, + 0x119b4be9, 0x155a565e, 0x18197087, 0x1cd86d30, + 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec, + 0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, + 0x2497d08d, 0x2056cd3a, 0x2d15ebe3, 0x29d4f654, + 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0, + 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c, + 0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18, + 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4, + 0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0, + 0x9abc8bd5, 0x9e7d9662, 0x933eb0bb, 0x97ffad0c, + 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668, + 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4, + }, + { + 0x00000000, 0xd219c1dc, 0xa0f29e0f, 0x72eb5fd3, + 0x452421a9, 0x973de075, 0xe5d6bfa6, 0x37cf7e7a, + 0x8a484352, 0x5851828e, 0x2abadd5d, 0xf8a31c81, + 0xcf6c62fb, 0x1d75a327, 0x6f9efcf4, 0xbd873d28, + 0x10519b13, 0xc2485acf, 0xb0a3051c, 0x62bac4c0, + 0x5575baba, 0x876c7b66, 0xf58724b5, 0x279ee569, + 0x9a19d841, 0x4800199d, 0x3aeb464e, 0xe8f28792, + 0xdf3df9e8, 0x0d243834, 0x7fcf67e7, 0xadd6a63b, + 0x20a33626, 0xf2baf7fa, 0x8051a829, 0x524869f5, + 0x6587178f, 0xb79ed653, 0xc5758980, 0x176c485c, + 0xaaeb7574, 0x78f2b4a8, 0x0a19eb7b, 0xd8002aa7, + 0xefcf54dd, 0x3dd69501, 0x4f3dcad2, 0x9d240b0e, + 0x30f2ad35, 0xe2eb6ce9, 0x9000333a, 0x4219f2e6, + 0x75d68c9c, 0xa7cf4d40, 0xd5241293, 0x073dd34f, + 0xbabaee67, 0x68a32fbb, 0x1a487068, 0xc851b1b4, + 0xff9ecfce, 0x2d870e12, 0x5f6c51c1, 0x8d75901d, + 0x41466c4c, 0x935fad90, 0xe1b4f243, 0x33ad339f, + 0x04624de5, 0xd67b8c39, 0xa490d3ea, 0x76891236, + 0xcb0e2f1e, 0x1917eec2, 0x6bfcb111, 0xb9e570cd, + 0x8e2a0eb7, 0x5c33cf6b, 0x2ed890b8, 0xfcc15164, + 0x5117f75f, 0x830e3683, 0xf1e56950, 0x23fca88c, + 0x1433d6f6, 0xc62a172a, 0xb4c148f9, 0x66d88925, + 0xdb5fb40d, 0x094675d1, 0x7bad2a02, 0xa9b4ebde, + 0x9e7b95a4, 0x4c625478, 0x3e890bab, 0xec90ca77, + 0x61e55a6a, 0xb3fc9bb6, 0xc117c465, 0x130e05b9, + 0x24c17bc3, 0xf6d8ba1f, 0x8433e5cc, 0x562a2410, + 0xebad1938, 0x39b4d8e4, 0x4b5f8737, 0x994646eb, + 0xae893891, 0x7c90f94d, 0x0e7ba69e, 0xdc626742, + 0x71b4c179, 0xa3ad00a5, 0xd1465f76, 0x035f9eaa, + 0x3490e0d0, 0xe689210c, 0x94627edf, 0x467bbf03, + 0xfbfc822b, 0x29e543f7, 0x5b0e1c24, 0x8917ddf8, + 0xbed8a382, 0x6cc1625e, 0x1e2a3d8d, 0xcc33fc51, + 0x828cd898, 0x50951944, 0x227e4697, 0xf067874b, + 0xc7a8f931, 0x15b138ed, 0x675a673e, 0xb543a6e2, + 0x08c49bca, 0xdadd5a16, 0xa83605c5, 0x7a2fc419, + 0x4de0ba63, 0x9ff97bbf, 0xed12246c, 0x3f0be5b0, + 0x92dd438b, 0x40c48257, 0x322fdd84, 0xe0361c58, + 0xd7f96222, 0x05e0a3fe, 0x770bfc2d, 0xa5123df1, + 0x189500d9, 0xca8cc105, 0xb8679ed6, 0x6a7e5f0a, + 0x5db12170, 0x8fa8e0ac, 0xfd43bf7f, 0x2f5a7ea3, + 0xa22feebe, 0x70362f62, 0x02dd70b1, 0xd0c4b16d, + 0xe70bcf17, 0x35120ecb, 0x47f95118, 0x95e090c4, + 0x2867adec, 0xfa7e6c30, 0x889533e3, 0x5a8cf23f, + 0x6d438c45, 0xbf5a4d99, 0xcdb1124a, 0x1fa8d396, + 0xb27e75ad, 0x6067b471, 0x128ceba2, 0xc0952a7e, + 0xf75a5404, 0x254395d8, 0x57a8ca0b, 0x85b10bd7, + 0x383636ff, 0xea2ff723, 0x98c4a8f0, 0x4add692c, + 0x7d121756, 0xaf0bd68a, 0xdde08959, 0x0ff94885, + 0xc3cab4d4, 0x11d37508, 0x63382adb, 0xb121eb07, + 0x86ee957d, 0x54f754a1, 0x261c0b72, 0xf405caae, + 0x4982f786, 0x9b9b365a, 0xe9706989, 0x3b69a855, + 0x0ca6d62f, 0xdebf17f3, 0xac544820, 0x7e4d89fc, + 0xd39b2fc7, 0x0182ee1b, 0x7369b1c8, 0xa1707014, + 0x96bf0e6e, 0x44a6cfb2, 0x364d9061, 0xe45451bd, + 0x59d36c95, 0x8bcaad49, 0xf921f29a, 0x2b383346, + 0x1cf74d3c, 0xceee8ce0, 0xbc05d333, 0x6e1c12ef, + 0xe36982f2, 0x3170432e, 0x439b1cfd, 0x9182dd21, + 0xa64da35b, 0x74546287, 0x06bf3d54, 0xd4a6fc88, + 0x6921c1a0, 0xbb38007c, 0xc9d35faf, 0x1bca9e73, + 0x2c05e009, 0xfe1c21d5, 0x8cf77e06, 0x5eeebfda, + 0xf33819e1, 0x2121d83d, 0x53ca87ee, 0x81d34632, + 0xb61c3848, 0x6405f994, 0x16eea647, 0xc4f7679b, + 0x79705ab3, 0xab699b6f, 0xd982c4bc, 0x0b9b0560, + 0x3c547b1a, 0xee4dbac6, 0x9ca6e515, 0x4ebf24c9, + }, + { + 0x00000000, 0x01d8ac87, 0x03b1590e, 0x0269f589, + 0x0762b21c, 0x06ba1e9b, 0x04d3eb12, 0x050b4795, + 0x0ec56438, 0x0f1dc8bf, 0x0d743d36, 0x0cac91b1, + 0x09a7d624, 0x087f7aa3, 0x0a168f2a, 0x0bce23ad, + 0x1d8ac870, 0x1c5264f7, 0x1e3b917e, 0x1fe33df9, + 0x1ae87a6c, 0x1b30d6eb, 0x19592362, 0x18818fe5, + 0x134fac48, 0x129700cf, 0x10fef546, 0x112659c1, + 0x142d1e54, 0x15f5b2d3, 0x179c475a, 0x1644ebdd, + 0x3b1590e0, 0x3acd3c67, 0x38a4c9ee, 0x397c6569, + 0x3c7722fc, 0x3daf8e7b, 0x3fc67bf2, 0x3e1ed775, + 0x35d0f4d8, 0x3408585f, 0x3661add6, 0x37b90151, + 0x32b246c4, 0x336aea43, 0x31031fca, 0x30dbb34d, + 0x269f5890, 0x2747f417, 0x252e019e, 0x24f6ad19, + 0x21fdea8c, 0x2025460b, 0x224cb382, 0x23941f05, + 0x285a3ca8, 0x2982902f, 0x2beb65a6, 0x2a33c921, + 0x2f388eb4, 0x2ee02233, 0x2c89d7ba, 0x2d517b3d, + 0x762b21c0, 0x77f38d47, 0x759a78ce, 0x7442d449, + 0x714993dc, 0x70913f5b, 0x72f8cad2, 0x73206655, + 0x78ee45f8, 0x7936e97f, 0x7b5f1cf6, 0x7a87b071, + 0x7f8cf7e4, 0x7e545b63, 0x7c3daeea, 0x7de5026d, + 0x6ba1e9b0, 0x6a794537, 0x6810b0be, 0x69c81c39, + 0x6cc35bac, 0x6d1bf72b, 0x6f7202a2, 0x6eaaae25, + 0x65648d88, 0x64bc210f, 0x66d5d486, 0x670d7801, + 0x62063f94, 0x63de9313, 0x61b7669a, 0x606fca1d, + 0x4d3eb120, 0x4ce61da7, 0x4e8fe82e, 0x4f5744a9, + 0x4a5c033c, 0x4b84afbb, 0x49ed5a32, 0x4835f6b5, + 0x43fbd518, 0x4223799f, 0x404a8c16, 0x41922091, + 0x44996704, 0x4541cb83, 0x47283e0a, 0x46f0928d, + 0x50b47950, 0x516cd5d7, 0x5305205e, 0x52dd8cd9, + 0x57d6cb4c, 0x560e67cb, 0x54679242, 0x55bf3ec5, + 0x5e711d68, 0x5fa9b1ef, 0x5dc04466, 0x5c18e8e1, + 0x5913af74, 0x58cb03f3, 0x5aa2f67a, 0x5b7a5afd, + 0xec564380, 0xed8eef07, 0xefe71a8e, 0xee3fb609, + 0xeb34f19c, 0xeaec5d1b, 0xe885a892, 0xe95d0415, + 0xe29327b8, 0xe34b8b3f, 0xe1227eb6, 0xe0fad231, + 0xe5f195a4, 0xe4293923, 0xe640ccaa, 0xe798602d, + 0xf1dc8bf0, 0xf0042777, 0xf26dd2fe, 0xf3b57e79, + 0xf6be39ec, 0xf766956b, 0xf50f60e2, 0xf4d7cc65, + 0xff19efc8, 0xfec1434f, 0xfca8b6c6, 0xfd701a41, + 0xf87b5dd4, 0xf9a3f153, 0xfbca04da, 0xfa12a85d, + 0xd743d360, 0xd69b7fe7, 0xd4f28a6e, 0xd52a26e9, + 0xd021617c, 0xd1f9cdfb, 0xd3903872, 0xd24894f5, + 0xd986b758, 0xd85e1bdf, 0xda37ee56, 0xdbef42d1, + 0xdee40544, 0xdf3ca9c3, 0xdd555c4a, 0xdc8df0cd, + 0xcac91b10, 0xcb11b797, 0xc978421e, 0xc8a0ee99, + 0xcdaba90c, 0xcc73058b, 0xce1af002, 0xcfc25c85, + 0xc40c7f28, 0xc5d4d3af, 0xc7bd2626, 0xc6658aa1, + 0xc36ecd34, 0xc2b661b3, 0xc0df943a, 0xc10738bd, + 0x9a7d6240, 0x9ba5cec7, 0x99cc3b4e, 0x981497c9, + 0x9d1fd05c, 0x9cc77cdb, 0x9eae8952, 0x9f7625d5, + 0x94b80678, 0x9560aaff, 0x97095f76, 0x96d1f3f1, + 0x93dab464, 0x920218e3, 0x906bed6a, 0x91b341ed, + 0x87f7aa30, 0x862f06b7, 0x8446f33e, 0x859e5fb9, + 0x8095182c, 0x814db4ab, 0x83244122, 0x82fceda5, + 0x8932ce08, 0x88ea628f, 0x8a839706, 0x8b5b3b81, + 0x8e507c14, 0x8f88d093, 0x8de1251a, 0x8c39899d, + 0xa168f2a0, 0xa0b05e27, 0xa2d9abae, 0xa3010729, + 0xa60a40bc, 0xa7d2ec3b, 0xa5bb19b2, 0xa463b535, + 0xafad9698, 0xae753a1f, 0xac1ccf96, 0xadc46311, + 0xa8cf2484, 0xa9178803, 0xab7e7d8a, 0xaaa6d10d, + 0xbce23ad0, 0xbd3a9657, 0xbf5363de, 0xbe8bcf59, + 0xbb8088cc, 0xba58244b, 0xb831d1c2, 0xb9e97d45, + 0xb2275ee8, 0xb3fff26f, 0xb19607e6, 0xb04eab61, + 0xb545ecf4, 0xb49d4073, 0xb6f4b5fa, 0xb72c197d, + }, + { + 0x00000000, 0xdc6d9ab7, 0xbc1a28d9, 0x6077b26e, + 0x7cf54c05, 0xa098d6b2, 0xc0ef64dc, 0x1c82fe6b, + 0xf9ea980a, 0x258702bd, 0x45f0b0d3, 0x999d2a64, + 0x851fd40f, 0x59724eb8, 0x3905fcd6, 0xe5686661, + 0xf7142da3, 0x2b79b714, 0x4b0e057a, 0x97639fcd, + 0x8be161a6, 0x578cfb11, 0x37fb497f, 0xeb96d3c8, + 0x0efeb5a9, 0xd2932f1e, 0xb2e49d70, 0x6e8907c7, + 0x720bf9ac, 0xae66631b, 0xce11d175, 0x127c4bc2, + 0xeae946f1, 0x3684dc46, 0x56f36e28, 0x8a9ef49f, + 0x961c0af4, 0x4a719043, 0x2a06222d, 0xf66bb89a, + 0x1303defb, 0xcf6e444c, 0xaf19f622, 0x73746c95, + 0x6ff692fe, 0xb39b0849, 0xd3ecba27, 0x0f812090, + 0x1dfd6b52, 0xc190f1e5, 0xa1e7438b, 0x7d8ad93c, + 0x61082757, 0xbd65bde0, 0xdd120f8e, 0x017f9539, + 0xe417f358, 0x387a69ef, 0x580ddb81, 0x84604136, + 0x98e2bf5d, 0x448f25ea, 0x24f89784, 0xf8950d33, + 0xd1139055, 0x0d7e0ae2, 0x6d09b88c, 0xb164223b, + 0xade6dc50, 0x718b46e7, 0x11fcf489, 0xcd916e3e, + 0x28f9085f, 0xf49492e8, 0x94e32086, 0x488eba31, + 0x540c445a, 0x8861deed, 0xe8166c83, 0x347bf634, + 0x2607bdf6, 0xfa6a2741, 0x9a1d952f, 0x46700f98, + 0x5af2f1f3, 0x869f6b44, 0xe6e8d92a, 0x3a85439d, + 0xdfed25fc, 0x0380bf4b, 0x63f70d25, 0xbf9a9792, + 0xa31869f9, 0x7f75f34e, 0x1f024120, 0xc36fdb97, + 0x3bfad6a4, 0xe7974c13, 0x87e0fe7d, 0x5b8d64ca, + 0x470f9aa1, 0x9b620016, 0xfb15b278, 0x277828cf, + 0xc2104eae, 0x1e7dd419, 0x7e0a6677, 0xa267fcc0, + 0xbee502ab, 0x6288981c, 0x02ff2a72, 0xde92b0c5, + 0xcceefb07, 0x108361b0, 0x70f4d3de, 0xac994969, + 0xb01bb702, 0x6c762db5, 0x0c019fdb, 0xd06c056c, + 0x3504630d, 0xe969f9ba, 0x891e4bd4, 0x5573d163, + 0x49f12f08, 0x959cb5bf, 0xf5eb07d1, 0x29869d66, + 0xa6e63d1d, 0x7a8ba7aa, 0x1afc15c4, 0xc6918f73, + 0xda137118, 0x067eebaf, 0x660959c1, 0xba64c376, + 0x5f0ca517, 0x83613fa0, 0xe3168dce, 0x3f7b1779, + 0x23f9e912, 0xff9473a5, 0x9fe3c1cb, 0x438e5b7c, + 0x51f210be, 0x8d9f8a09, 0xede83867, 0x3185a2d0, + 0x2d075cbb, 0xf16ac60c, 0x911d7462, 0x4d70eed5, + 0xa81888b4, 0x74751203, 0x1402a06d, 0xc86f3ada, + 0xd4edc4b1, 0x08805e06, 0x68f7ec68, 0xb49a76df, + 0x4c0f7bec, 0x9062e15b, 0xf0155335, 0x2c78c982, + 0x30fa37e9, 0xec97ad5e, 0x8ce01f30, 0x508d8587, + 0xb5e5e3e6, 0x69887951, 0x09ffcb3f, 0xd5925188, + 0xc910afe3, 0x157d3554, 0x750a873a, 0xa9671d8d, + 0xbb1b564f, 0x6776ccf8, 0x07017e96, 0xdb6ce421, + 0xc7ee1a4a, 0x1b8380fd, 0x7bf43293, 0xa799a824, + 0x42f1ce45, 0x9e9c54f2, 0xfeebe69c, 0x22867c2b, + 0x3e048240, 0xe26918f7, 0x821eaa99, 0x5e73302e, + 0x77f5ad48, 0xab9837ff, 0xcbef8591, 0x17821f26, + 0x0b00e14d, 0xd76d7bfa, 0xb71ac994, 0x6b775323, + 0x8e1f3542, 0x5272aff5, 0x32051d9b, 0xee68872c, + 0xf2ea7947, 0x2e87e3f0, 0x4ef0519e, 0x929dcb29, + 0x80e180eb, 0x5c8c1a5c, 0x3cfba832, 0xe0963285, + 0xfc14ccee, 0x20795659, 0x400ee437, 0x9c637e80, + 0x790b18e1, 0xa5668256, 0xc5113038, 0x197caa8f, + 0x05fe54e4, 0xd993ce53, 0xb9e47c3d, 0x6589e68a, + 0x9d1cebb9, 0x4171710e, 0x2106c360, 0xfd6b59d7, + 0xe1e9a7bc, 0x3d843d0b, 0x5df38f65, 0x819e15d2, + 0x64f673b3, 0xb89be904, 0xd8ec5b6a, 0x0481c1dd, + 0x18033fb6, 0xc46ea501, 0xa419176f, 0x78748dd8, + 0x6a08c61a, 0xb6655cad, 0xd612eec3, 0x0a7f7474, + 0x16fd8a1f, 0xca9010a8, 0xaae7a2c6, 0x768a3871, + 0x93e25e10, 0x4f8fc4a7, 0x2ff876c9, 0xf395ec7e, + 0xef171215, 0x337a88a2, 0x530d3acc, 0x8f60a07b, + }, + { + 0x00000000, 0x490d678d, 0x921acf1a, 0xdb17a897, + 0x20f48383, 0x69f9e40e, 0xb2ee4c99, 0xfbe32b14, + 0x41e90706, 0x08e4608b, 0xd3f3c81c, 0x9afeaf91, + 0x611d8485, 0x2810e308, 0xf3074b9f, 0xba0a2c12, + 0x83d20e0c, 0xcadf6981, 0x11c8c116, 0x58c5a69b, + 0xa3268d8f, 0xea2bea02, 0x313c4295, 0x78312518, + 0xc23b090a, 0x8b366e87, 0x5021c610, 0x192ca19d, + 0xe2cf8a89, 0xabc2ed04, 0x70d54593, 0x39d8221e, + 0x036501af, 0x4a686622, 0x917fceb5, 0xd872a938, + 0x2391822c, 0x6a9ce5a1, 0xb18b4d36, 0xf8862abb, + 0x428c06a9, 0x0b816124, 0xd096c9b3, 0x999bae3e, + 0x6278852a, 0x2b75e2a7, 0xf0624a30, 0xb96f2dbd, + 0x80b70fa3, 0xc9ba682e, 0x12adc0b9, 0x5ba0a734, + 0xa0438c20, 0xe94eebad, 0x3259433a, 0x7b5424b7, + 0xc15e08a5, 0x88536f28, 0x5344c7bf, 0x1a49a032, + 0xe1aa8b26, 0xa8a7ecab, 0x73b0443c, 0x3abd23b1, + 0x06ca035e, 0x4fc764d3, 0x94d0cc44, 0xddddabc9, + 0x263e80dd, 0x6f33e750, 0xb4244fc7, 0xfd29284a, + 0x47230458, 0x0e2e63d5, 0xd539cb42, 0x9c34accf, + 0x67d787db, 0x2edae056, 0xf5cd48c1, 0xbcc02f4c, + 0x85180d52, 0xcc156adf, 0x1702c248, 0x5e0fa5c5, + 0xa5ec8ed1, 0xece1e95c, 0x37f641cb, 0x7efb2646, + 0xc4f10a54, 0x8dfc6dd9, 0x56ebc54e, 0x1fe6a2c3, + 0xe40589d7, 0xad08ee5a, 0x761f46cd, 0x3f122140, + 0x05af02f1, 0x4ca2657c, 0x97b5cdeb, 0xdeb8aa66, + 0x255b8172, 0x6c56e6ff, 0xb7414e68, 0xfe4c29e5, + 0x444605f7, 0x0d4b627a, 0xd65ccaed, 0x9f51ad60, + 0x64b28674, 0x2dbfe1f9, 0xf6a8496e, 0xbfa52ee3, + 0x867d0cfd, 0xcf706b70, 0x1467c3e7, 0x5d6aa46a, + 0xa6898f7e, 0xef84e8f3, 0x34934064, 0x7d9e27e9, + 0xc7940bfb, 0x8e996c76, 0x558ec4e1, 0x1c83a36c, + 0xe7608878, 0xae6deff5, 0x757a4762, 0x3c7720ef, + 0x0d9406bc, 0x44996131, 0x9f8ec9a6, 0xd683ae2b, + 0x2d60853f, 0x646de2b2, 0xbf7a4a25, 0xf6772da8, + 0x4c7d01ba, 0x05706637, 0xde67cea0, 0x976aa92d, + 0x6c898239, 0x2584e5b4, 0xfe934d23, 0xb79e2aae, + 0x8e4608b0, 0xc74b6f3d, 0x1c5cc7aa, 0x5551a027, + 0xaeb28b33, 0xe7bfecbe, 0x3ca84429, 0x75a523a4, + 0xcfaf0fb6, 0x86a2683b, 0x5db5c0ac, 0x14b8a721, + 0xef5b8c35, 0xa656ebb8, 0x7d41432f, 0x344c24a2, + 0x0ef10713, 0x47fc609e, 0x9cebc809, 0xd5e6af84, + 0x2e058490, 0x6708e31d, 0xbc1f4b8a, 0xf5122c07, + 0x4f180015, 0x06156798, 0xdd02cf0f, 0x940fa882, + 0x6fec8396, 0x26e1e41b, 0xfdf64c8c, 0xb4fb2b01, + 0x8d23091f, 0xc42e6e92, 0x1f39c605, 0x5634a188, + 0xadd78a9c, 0xe4daed11, 0x3fcd4586, 0x76c0220b, + 0xccca0e19, 0x85c76994, 0x5ed0c103, 0x17dda68e, + 0xec3e8d9a, 0xa533ea17, 0x7e244280, 0x3729250d, + 0x0b5e05e2, 0x4253626f, 0x9944caf8, 0xd049ad75, + 0x2baa8661, 0x62a7e1ec, 0xb9b0497b, 0xf0bd2ef6, + 0x4ab702e4, 0x03ba6569, 0xd8adcdfe, 0x91a0aa73, + 0x6a438167, 0x234ee6ea, 0xf8594e7d, 0xb15429f0, + 0x888c0bee, 0xc1816c63, 0x1a96c4f4, 0x539ba379, + 0xa878886d, 0xe175efe0, 0x3a624777, 0x736f20fa, + 0xc9650ce8, 0x80686b65, 0x5b7fc3f2, 0x1272a47f, + 0xe9918f6b, 0xa09ce8e6, 0x7b8b4071, 0x328627fc, + 0x083b044d, 0x413663c0, 0x9a21cb57, 0xd32cacda, + 0x28cf87ce, 0x61c2e043, 0xbad548d4, 0xf3d82f59, + 0x49d2034b, 0x00df64c6, 0xdbc8cc51, 0x92c5abdc, + 0x692680c8, 0x202be745, 0xfb3c4fd2, 0xb231285f, + 0x8be90a41, 0xc2e46dcc, 0x19f3c55b, 0x50fea2d6, + 0xab1d89c2, 0xe210ee4f, 0x390746d8, 0x700a2155, + 0xca000d47, 0x830d6aca, 0x581ac25d, 0x1117a5d0, + 0xeaf48ec4, 0xa3f9e949, 0x78ee41de, 0x31e32653, + }, + { + 0x00000000, 0x1b280d78, 0x36501af0, 0x2d781788, + 0x6ca035e0, 0x77883898, 0x5af02f10, 0x41d82268, + 0xd9406bc0, 0xc26866b8, 0xef107130, 0xf4387c48, + 0xb5e05e20, 0xaec85358, 0x83b044d0, 0x989849a8, + 0xb641ca37, 0xad69c74f, 0x8011d0c7, 0x9b39ddbf, + 0xdae1ffd7, 0xc1c9f2af, 0xecb1e527, 0xf799e85f, + 0x6f01a1f7, 0x7429ac8f, 0x5951bb07, 0x4279b67f, + 0x03a19417, 0x1889996f, 0x35f18ee7, 0x2ed9839f, + 0x684289d9, 0x736a84a1, 0x5e129329, 0x453a9e51, + 0x04e2bc39, 0x1fcab141, 0x32b2a6c9, 0x299aabb1, + 0xb102e219, 0xaa2aef61, 0x8752f8e9, 0x9c7af591, + 0xdda2d7f9, 0xc68ada81, 0xebf2cd09, 0xf0dac071, + 0xde0343ee, 0xc52b4e96, 0xe853591e, 0xf37b5466, + 0xb2a3760e, 0xa98b7b76, 0x84f36cfe, 0x9fdb6186, + 0x0743282e, 0x1c6b2556, 0x311332de, 0x2a3b3fa6, + 0x6be31dce, 0x70cb10b6, 0x5db3073e, 0x469b0a46, + 0xd08513b2, 0xcbad1eca, 0xe6d50942, 0xfdfd043a, + 0xbc252652, 0xa70d2b2a, 0x8a753ca2, 0x915d31da, + 0x09c57872, 0x12ed750a, 0x3f956282, 0x24bd6ffa, + 0x65654d92, 0x7e4d40ea, 0x53355762, 0x481d5a1a, + 0x66c4d985, 0x7decd4fd, 0x5094c375, 0x4bbcce0d, + 0x0a64ec65, 0x114ce11d, 0x3c34f695, 0x271cfbed, + 0xbf84b245, 0xa4acbf3d, 0x89d4a8b5, 0x92fca5cd, + 0xd32487a5, 0xc80c8add, 0xe5749d55, 0xfe5c902d, + 0xb8c79a6b, 0xa3ef9713, 0x8e97809b, 0x95bf8de3, + 0xd467af8b, 0xcf4fa2f3, 0xe237b57b, 0xf91fb803, + 0x6187f1ab, 0x7aaffcd3, 0x57d7eb5b, 0x4cffe623, + 0x0d27c44b, 0x160fc933, 0x3b77debb, 0x205fd3c3, + 0x0e86505c, 0x15ae5d24, 0x38d64aac, 0x23fe47d4, + 0x622665bc, 0x790e68c4, 0x54767f4c, 0x4f5e7234, + 0xd7c63b9c, 0xccee36e4, 0xe196216c, 0xfabe2c14, + 0xbb660e7c, 0xa04e0304, 0x8d36148c, 0x961e19f4, + 0xa5cb3ad3, 0xbee337ab, 0x939b2023, 0x88b32d5b, + 0xc96b0f33, 0xd243024b, 0xff3b15c3, 0xe41318bb, + 0x7c8b5113, 0x67a35c6b, 0x4adb4be3, 0x51f3469b, + 0x102b64f3, 0x0b03698b, 0x267b7e03, 0x3d53737b, + 0x138af0e4, 0x08a2fd9c, 0x25daea14, 0x3ef2e76c, + 0x7f2ac504, 0x6402c87c, 0x497adff4, 0x5252d28c, + 0xcaca9b24, 0xd1e2965c, 0xfc9a81d4, 0xe7b28cac, + 0xa66aaec4, 0xbd42a3bc, 0x903ab434, 0x8b12b94c, + 0xcd89b30a, 0xd6a1be72, 0xfbd9a9fa, 0xe0f1a482, + 0xa12986ea, 0xba018b92, 0x97799c1a, 0x8c519162, + 0x14c9d8ca, 0x0fe1d5b2, 0x2299c23a, 0x39b1cf42, + 0x7869ed2a, 0x6341e052, 0x4e39f7da, 0x5511faa2, + 0x7bc8793d, 0x60e07445, 0x4d9863cd, 0x56b06eb5, + 0x17684cdd, 0x0c4041a5, 0x2138562d, 0x3a105b55, + 0xa28812fd, 0xb9a01f85, 0x94d8080d, 0x8ff00575, + 0xce28271d, 0xd5002a65, 0xf8783ded, 0xe3503095, + 0x754e2961, 0x6e662419, 0x431e3391, 0x58363ee9, + 0x19ee1c81, 0x02c611f9, 0x2fbe0671, 0x34960b09, + 0xac0e42a1, 0xb7264fd9, 0x9a5e5851, 0x81765529, + 0xc0ae7741, 0xdb867a39, 0xf6fe6db1, 0xedd660c9, + 0xc30fe356, 0xd827ee2e, 0xf55ff9a6, 0xee77f4de, + 0xafafd6b6, 0xb487dbce, 0x99ffcc46, 0x82d7c13e, + 0x1a4f8896, 0x016785ee, 0x2c1f9266, 0x37379f1e, + 0x76efbd76, 0x6dc7b00e, 0x40bfa786, 0x5b97aafe, + 0x1d0ca0b8, 0x0624adc0, 0x2b5cba48, 0x3074b730, + 0x71ac9558, 0x6a849820, 0x47fc8fa8, 0x5cd482d0, + 0xc44ccb78, 0xdf64c600, 0xf21cd188, 0xe934dcf0, + 0xa8ecfe98, 0xb3c4f3e0, 0x9ebce468, 0x8594e910, + 0xab4d6a8f, 0xb06567f7, 0x9d1d707f, 0x86357d07, + 0xc7ed5f6f, 0xdcc55217, 0xf1bd459f, 0xea9548e7, + 0x720d014f, 0x69250c37, 0x445d1bbf, 0x5f7516c7, + 0x1ead34af, 0x058539d7, 0x28fd2e5f, 0x33d52327, + }, + { + 0x00000000, 0x4f576811, 0x9eaed022, 0xd1f9b833, + 0x399cbdf3, 0x76cbd5e2, 0xa7326dd1, 0xe86505c0, + 0x73397be6, 0x3c6e13f7, 0xed97abc4, 0xa2c0c3d5, + 0x4aa5c615, 0x05f2ae04, 0xd40b1637, 0x9b5c7e26, + 0xe672f7cc, 0xa9259fdd, 0x78dc27ee, 0x378b4fff, + 0xdfee4a3f, 0x90b9222e, 0x41409a1d, 0x0e17f20c, + 0x954b8c2a, 0xda1ce43b, 0x0be55c08, 0x44b23419, + 0xacd731d9, 0xe38059c8, 0x3279e1fb, 0x7d2e89ea, + 0xc824f22f, 0x87739a3e, 0x568a220d, 0x19dd4a1c, + 0xf1b84fdc, 0xbeef27cd, 0x6f169ffe, 0x2041f7ef, + 0xbb1d89c9, 0xf44ae1d8, 0x25b359eb, 0x6ae431fa, + 0x8281343a, 0xcdd65c2b, 0x1c2fe418, 0x53788c09, + 0x2e5605e3, 0x61016df2, 0xb0f8d5c1, 0xffafbdd0, + 0x17cab810, 0x589dd001, 0x89646832, 0xc6330023, + 0x5d6f7e05, 0x12381614, 0xc3c1ae27, 0x8c96c636, + 0x64f3c3f6, 0x2ba4abe7, 0xfa5d13d4, 0xb50a7bc5, + 0x9488f9e9, 0xdbdf91f8, 0x0a2629cb, 0x457141da, + 0xad14441a, 0xe2432c0b, 0x33ba9438, 0x7cedfc29, + 0xe7b1820f, 0xa8e6ea1e, 0x791f522d, 0x36483a3c, + 0xde2d3ffc, 0x917a57ed, 0x4083efde, 0x0fd487cf, + 0x72fa0e25, 0x3dad6634, 0xec54de07, 0xa303b616, + 0x4b66b3d6, 0x0431dbc7, 0xd5c863f4, 0x9a9f0be5, + 0x01c375c3, 0x4e941dd2, 0x9f6da5e1, 0xd03acdf0, + 0x385fc830, 0x7708a021, 0xa6f11812, 0xe9a67003, + 0x5cac0bc6, 0x13fb63d7, 0xc202dbe4, 0x8d55b3f5, + 0x6530b635, 0x2a67de24, 0xfb9e6617, 0xb4c90e06, + 0x2f957020, 0x60c21831, 0xb13ba002, 0xfe6cc813, + 0x1609cdd3, 0x595ea5c2, 0x88a71df1, 0xc7f075e0, + 0xbadefc0a, 0xf589941b, 0x24702c28, 0x6b274439, + 0x834241f9, 0xcc1529e8, 0x1dec91db, 0x52bbf9ca, + 0xc9e787ec, 0x86b0effd, 0x574957ce, 0x181e3fdf, + 0xf07b3a1f, 0xbf2c520e, 0x6ed5ea3d, 0x2182822c, + 0x2dd0ee65, 0x62878674, 0xb37e3e47, 0xfc295656, + 0x144c5396, 0x5b1b3b87, 0x8ae283b4, 0xc5b5eba5, + 0x5ee99583, 0x11befd92, 0xc04745a1, 0x8f102db0, + 0x67752870, 0x28224061, 0xf9dbf852, 0xb68c9043, + 0xcba219a9, 0x84f571b8, 0x550cc98b, 0x1a5ba19a, + 0xf23ea45a, 0xbd69cc4b, 0x6c907478, 0x23c71c69, + 0xb89b624f, 0xf7cc0a5e, 0x2635b26d, 0x6962da7c, + 0x8107dfbc, 0xce50b7ad, 0x1fa90f9e, 0x50fe678f, + 0xe5f41c4a, 0xaaa3745b, 0x7b5acc68, 0x340da479, + 0xdc68a1b9, 0x933fc9a8, 0x42c6719b, 0x0d91198a, + 0x96cd67ac, 0xd99a0fbd, 0x0863b78e, 0x4734df9f, + 0xaf51da5f, 0xe006b24e, 0x31ff0a7d, 0x7ea8626c, + 0x0386eb86, 0x4cd18397, 0x9d283ba4, 0xd27f53b5, + 0x3a1a5675, 0x754d3e64, 0xa4b48657, 0xebe3ee46, + 0x70bf9060, 0x3fe8f871, 0xee114042, 0xa1462853, + 0x49232d93, 0x06744582, 0xd78dfdb1, 0x98da95a0, + 0xb958178c, 0xf60f7f9d, 0x27f6c7ae, 0x68a1afbf, + 0x80c4aa7f, 0xcf93c26e, 0x1e6a7a5d, 0x513d124c, + 0xca616c6a, 0x8536047b, 0x54cfbc48, 0x1b98d459, + 0xf3fdd199, 0xbcaab988, 0x6d5301bb, 0x220469aa, + 0x5f2ae040, 0x107d8851, 0xc1843062, 0x8ed35873, + 0x66b65db3, 0x29e135a2, 0xf8188d91, 0xb74fe580, + 0x2c139ba6, 0x6344f3b7, 0xb2bd4b84, 0xfdea2395, + 0x158f2655, 0x5ad84e44, 0x8b21f677, 0xc4769e66, + 0x717ce5a3, 0x3e2b8db2, 0xefd23581, 0xa0855d90, + 0x48e05850, 0x07b73041, 0xd64e8872, 0x9919e063, + 0x02459e45, 0x4d12f654, 0x9ceb4e67, 0xd3bc2676, + 0x3bd923b6, 0x748e4ba7, 0xa577f394, 0xea209b85, + 0x970e126f, 0xd8597a7e, 0x09a0c24d, 0x46f7aa5c, + 0xae92af9c, 0xe1c5c78d, 0x303c7fbe, 0x7f6b17af, + 0xe4376989, 0xab600198, 0x7a99b9ab, 0x35ced1ba, + 0xddabd47a, 0x92fcbc6b, 0x43050458, 0x0c526c49, + }, + { + 0x00000000, 0x5ba1dcca, 0xb743b994, 0xece2655e, + 0x6a466e9f, 0x31e7b255, 0xdd05d70b, 0x86a40bc1, + 0xd48cdd3e, 0x8f2d01f4, 0x63cf64aa, 0x386eb860, + 0xbecab3a1, 0xe56b6f6b, 0x09890a35, 0x5228d6ff, + 0xadd8a7cb, 0xf6797b01, 0x1a9b1e5f, 0x413ac295, + 0xc79ec954, 0x9c3f159e, 0x70dd70c0, 0x2b7cac0a, + 0x79547af5, 0x22f5a63f, 0xce17c361, 0x95b61fab, + 0x1312146a, 0x48b3c8a0, 0xa451adfe, 0xfff07134, + 0x5f705221, 0x04d18eeb, 0xe833ebb5, 0xb392377f, + 0x35363cbe, 0x6e97e074, 0x8275852a, 0xd9d459e0, + 0x8bfc8f1f, 0xd05d53d5, 0x3cbf368b, 0x671eea41, + 0xe1bae180, 0xba1b3d4a, 0x56f95814, 0x0d5884de, + 0xf2a8f5ea, 0xa9092920, 0x45eb4c7e, 0x1e4a90b4, + 0x98ee9b75, 0xc34f47bf, 0x2fad22e1, 0x740cfe2b, + 0x262428d4, 0x7d85f41e, 0x91679140, 0xcac64d8a, + 0x4c62464b, 0x17c39a81, 0xfb21ffdf, 0xa0802315, + 0xbee0a442, 0xe5417888, 0x09a31dd6, 0x5202c11c, + 0xd4a6cadd, 0x8f071617, 0x63e57349, 0x3844af83, + 0x6a6c797c, 0x31cda5b6, 0xdd2fc0e8, 0x868e1c22, + 0x002a17e3, 0x5b8bcb29, 0xb769ae77, 0xecc872bd, + 0x13380389, 0x4899df43, 0xa47bba1d, 0xffda66d7, + 0x797e6d16, 0x22dfb1dc, 0xce3dd482, 0x959c0848, + 0xc7b4deb7, 0x9c15027d, 0x70f76723, 0x2b56bbe9, + 0xadf2b028, 0xf6536ce2, 0x1ab109bc, 0x4110d576, + 0xe190f663, 0xba312aa9, 0x56d34ff7, 0x0d72933d, + 0x8bd698fc, 0xd0774436, 0x3c952168, 0x6734fda2, + 0x351c2b5d, 0x6ebdf797, 0x825f92c9, 0xd9fe4e03, + 0x5f5a45c2, 0x04fb9908, 0xe819fc56, 0xb3b8209c, + 0x4c4851a8, 0x17e98d62, 0xfb0be83c, 0xa0aa34f6, + 0x260e3f37, 0x7dafe3fd, 0x914d86a3, 0xcaec5a69, + 0x98c48c96, 0xc365505c, 0x2f873502, 0x7426e9c8, + 0xf282e209, 0xa9233ec3, 0x45c15b9d, 0x1e608757, + 0x79005533, 0x22a189f9, 0xce43eca7, 0x95e2306d, + 0x13463bac, 0x48e7e766, 0xa4058238, 0xffa45ef2, + 0xad8c880d, 0xf62d54c7, 0x1acf3199, 0x416eed53, + 0xc7cae692, 0x9c6b3a58, 0x70895f06, 0x2b2883cc, + 0xd4d8f2f8, 0x8f792e32, 0x639b4b6c, 0x383a97a6, + 0xbe9e9c67, 0xe53f40ad, 0x09dd25f3, 0x527cf939, + 0x00542fc6, 0x5bf5f30c, 0xb7179652, 0xecb64a98, + 0x6a124159, 0x31b39d93, 0xdd51f8cd, 0x86f02407, + 0x26700712, 0x7dd1dbd8, 0x9133be86, 0xca92624c, + 0x4c36698d, 0x1797b547, 0xfb75d019, 0xa0d40cd3, + 0xf2fcda2c, 0xa95d06e6, 0x45bf63b8, 0x1e1ebf72, + 0x98bab4b3, 0xc31b6879, 0x2ff90d27, 0x7458d1ed, + 0x8ba8a0d9, 0xd0097c13, 0x3ceb194d, 0x674ac587, + 0xe1eece46, 0xba4f128c, 0x56ad77d2, 0x0d0cab18, + 0x5f247de7, 0x0485a12d, 0xe867c473, 0xb3c618b9, + 0x35621378, 0x6ec3cfb2, 0x8221aaec, 0xd9807626, + 0xc7e0f171, 0x9c412dbb, 0x70a348e5, 0x2b02942f, + 0xada69fee, 0xf6074324, 0x1ae5267a, 0x4144fab0, + 0x136c2c4f, 0x48cdf085, 0xa42f95db, 0xff8e4911, + 0x792a42d0, 0x228b9e1a, 0xce69fb44, 0x95c8278e, + 0x6a3856ba, 0x31998a70, 0xdd7bef2e, 0x86da33e4, + 0x007e3825, 0x5bdfe4ef, 0xb73d81b1, 0xec9c5d7b, + 0xbeb48b84, 0xe515574e, 0x09f73210, 0x5256eeda, + 0xd4f2e51b, 0x8f5339d1, 0x63b15c8f, 0x38108045, + 0x9890a350, 0xc3317f9a, 0x2fd31ac4, 0x7472c60e, + 0xf2d6cdcf, 0xa9771105, 0x4595745b, 0x1e34a891, + 0x4c1c7e6e, 0x17bda2a4, 0xfb5fc7fa, 0xa0fe1b30, + 0x265a10f1, 0x7dfbcc3b, 0x9119a965, 0xcab875af, + 0x3548049b, 0x6ee9d851, 0x820bbd0f, 0xd9aa61c5, + 0x5f0e6a04, 0x04afb6ce, 0xe84dd390, 0xb3ec0f5a, + 0xe1c4d9a5, 0xba65056f, 0x56876031, 0x0d26bcfb, + 0x8b82b73a, 0xd0236bf0, 0x3cc10eae, 0x6760d264, + }, + { + 0x00000000, 0xf200aa66, 0xe0c0497b, 0x12c0e31d, + 0xc5418f41, 0x37412527, 0x2581c63a, 0xd7816c5c, + 0x8e420335, 0x7c42a953, 0x6e824a4e, 0x9c82e028, + 0x4b038c74, 0xb9032612, 0xabc3c50f, 0x59c36f69, + 0x18451bdd, 0xea45b1bb, 0xf88552a6, 0x0a85f8c0, + 0xdd04949c, 0x2f043efa, 0x3dc4dde7, 0xcfc47781, + 0x960718e8, 0x6407b28e, 0x76c75193, 0x84c7fbf5, + 0x534697a9, 0xa1463dcf, 0xb386ded2, 0x418674b4, + 0x308a37ba, 0xc28a9ddc, 0xd04a7ec1, 0x224ad4a7, + 0xf5cbb8fb, 0x07cb129d, 0x150bf180, 0xe70b5be6, + 0xbec8348f, 0x4cc89ee9, 0x5e087df4, 0xac08d792, + 0x7b89bbce, 0x898911a8, 0x9b49f2b5, 0x694958d3, + 0x28cf2c67, 0xdacf8601, 0xc80f651c, 0x3a0fcf7a, + 0xed8ea326, 0x1f8e0940, 0x0d4eea5d, 0xff4e403b, + 0xa68d2f52, 0x548d8534, 0x464d6629, 0xb44dcc4f, + 0x63cca013, 0x91cc0a75, 0x830ce968, 0x710c430e, + 0x61146f74, 0x9314c512, 0x81d4260f, 0x73d48c69, + 0xa455e035, 0x56554a53, 0x4495a94e, 0xb6950328, + 0xef566c41, 0x1d56c627, 0x0f96253a, 0xfd968f5c, + 0x2a17e300, 0xd8174966, 0xcad7aa7b, 0x38d7001d, + 0x795174a9, 0x8b51decf, 0x99913dd2, 0x6b9197b4, + 0xbc10fbe8, 0x4e10518e, 0x5cd0b293, 0xaed018f5, + 0xf713779c, 0x0513ddfa, 0x17d33ee7, 0xe5d39481, + 0x3252f8dd, 0xc05252bb, 0xd292b1a6, 0x20921bc0, + 0x519e58ce, 0xa39ef2a8, 0xb15e11b5, 0x435ebbd3, + 0x94dfd78f, 0x66df7de9, 0x741f9ef4, 0x861f3492, + 0xdfdc5bfb, 0x2ddcf19d, 0x3f1c1280, 0xcd1cb8e6, + 0x1a9dd4ba, 0xe89d7edc, 0xfa5d9dc1, 0x085d37a7, + 0x49db4313, 0xbbdbe975, 0xa91b0a68, 0x5b1ba00e, + 0x8c9acc52, 0x7e9a6634, 0x6c5a8529, 0x9e5a2f4f, + 0xc7994026, 0x3599ea40, 0x2759095d, 0xd559a33b, + 0x02d8cf67, 0xf0d86501, 0xe218861c, 0x10182c7a, + 0xc228dee8, 0x3028748e, 0x22e89793, 0xd0e83df5, + 0x076951a9, 0xf569fbcf, 0xe7a918d2, 0x15a9b2b4, + 0x4c6adddd, 0xbe6a77bb, 0xacaa94a6, 0x5eaa3ec0, + 0x892b529c, 0x7b2bf8fa, 0x69eb1be7, 0x9bebb181, + 0xda6dc535, 0x286d6f53, 0x3aad8c4e, 0xc8ad2628, + 0x1f2c4a74, 0xed2ce012, 0xffec030f, 0x0deca969, + 0x542fc600, 0xa62f6c66, 0xb4ef8f7b, 0x46ef251d, + 0x916e4941, 0x636ee327, 0x71ae003a, 0x83aeaa5c, + 0xf2a2e952, 0x00a24334, 0x1262a029, 0xe0620a4f, + 0x37e36613, 0xc5e3cc75, 0xd7232f68, 0x2523850e, + 0x7ce0ea67, 0x8ee04001, 0x9c20a31c, 0x6e20097a, + 0xb9a16526, 0x4ba1cf40, 0x59612c5d, 0xab61863b, + 0xeae7f28f, 0x18e758e9, 0x0a27bbf4, 0xf8271192, + 0x2fa67dce, 0xdda6d7a8, 0xcf6634b5, 0x3d669ed3, + 0x64a5f1ba, 0x96a55bdc, 0x8465b8c1, 0x766512a7, + 0xa1e47efb, 0x53e4d49d, 0x41243780, 0xb3249de6, + 0xa33cb19c, 0x513c1bfa, 0x43fcf8e7, 0xb1fc5281, + 0x667d3edd, 0x947d94bb, 0x86bd77a6, 0x74bdddc0, + 0x2d7eb2a9, 0xdf7e18cf, 0xcdbefbd2, 0x3fbe51b4, + 0xe83f3de8, 0x1a3f978e, 0x08ff7493, 0xfaffdef5, + 0xbb79aa41, 0x49790027, 0x5bb9e33a, 0xa9b9495c, + 0x7e382500, 0x8c388f66, 0x9ef86c7b, 0x6cf8c61d, + 0x353ba974, 0xc73b0312, 0xd5fbe00f, 0x27fb4a69, + 0xf07a2635, 0x027a8c53, 0x10ba6f4e, 0xe2bac528, + 0x93b68626, 0x61b62c40, 0x7376cf5d, 0x8176653b, + 0x56f70967, 0xa4f7a301, 0xb637401c, 0x4437ea7a, + 0x1df48513, 0xeff42f75, 0xfd34cc68, 0x0f34660e, + 0xd8b50a52, 0x2ab5a034, 0x38754329, 0xca75e94f, + 0x8bf39dfb, 0x79f3379d, 0x6b33d480, 0x99337ee6, + 0x4eb212ba, 0xbcb2b8dc, 0xae725bc1, 0x5c72f1a7, + 0x05b19ece, 0xf7b134a8, 0xe571d7b5, 0x17717dd3, + 0xc0f0118f, 0x32f0bbe9, 0x203058f4, 0xd230f292, + }, + { + 0x00000000, 0x8090a067, 0x05e05d79, 0x8570fd1e, + 0x0bc0baf2, 0x8b501a95, 0x0e20e78b, 0x8eb047ec, + 0x178175e4, 0x9711d583, 0x1261289d, 0x92f188fa, + 0x1c41cf16, 0x9cd16f71, 0x19a1926f, 0x99313208, + 0x2f02ebc8, 0xaf924baf, 0x2ae2b6b1, 0xaa7216d6, + 0x24c2513a, 0xa452f15d, 0x21220c43, 0xa1b2ac24, + 0x38839e2c, 0xb8133e4b, 0x3d63c355, 0xbdf36332, + 0x334324de, 0xb3d384b9, 0x36a379a7, 0xb633d9c0, + 0x5e05d790, 0xde9577f7, 0x5be58ae9, 0xdb752a8e, + 0x55c56d62, 0xd555cd05, 0x5025301b, 0xd0b5907c, + 0x4984a274, 0xc9140213, 0x4c64ff0d, 0xccf45f6a, + 0x42441886, 0xc2d4b8e1, 0x47a445ff, 0xc734e598, + 0x71073c58, 0xf1979c3f, 0x74e76121, 0xf477c146, + 0x7ac786aa, 0xfa5726cd, 0x7f27dbd3, 0xffb77bb4, + 0x668649bc, 0xe616e9db, 0x636614c5, 0xe3f6b4a2, + 0x6d46f34e, 0xedd65329, 0x68a6ae37, 0xe8360e50, + 0xbc0baf20, 0x3c9b0f47, 0xb9ebf259, 0x397b523e, + 0xb7cb15d2, 0x375bb5b5, 0xb22b48ab, 0x32bbe8cc, + 0xab8adac4, 0x2b1a7aa3, 0xae6a87bd, 0x2efa27da, + 0xa04a6036, 0x20dac051, 0xa5aa3d4f, 0x253a9d28, + 0x930944e8, 0x1399e48f, 0x96e91991, 0x1679b9f6, + 0x98c9fe1a, 0x18595e7d, 0x9d29a363, 0x1db90304, + 0x8488310c, 0x0418916b, 0x81686c75, 0x01f8cc12, + 0x8f488bfe, 0x0fd82b99, 0x8aa8d687, 0x0a3876e0, + 0xe20e78b0, 0x629ed8d7, 0xe7ee25c9, 0x677e85ae, + 0xe9cec242, 0x695e6225, 0xec2e9f3b, 0x6cbe3f5c, + 0xf58f0d54, 0x751fad33, 0xf06f502d, 0x70fff04a, + 0xfe4fb7a6, 0x7edf17c1, 0xfbafeadf, 0x7b3f4ab8, + 0xcd0c9378, 0x4d9c331f, 0xc8ecce01, 0x487c6e66, + 0xc6cc298a, 0x465c89ed, 0xc32c74f3, 0x43bcd494, + 0xda8de69c, 0x5a1d46fb, 0xdf6dbbe5, 0x5ffd1b82, + 0xd14d5c6e, 0x51ddfc09, 0xd4ad0117, 0x543da170, + 0x7cd643f7, 0xfc46e390, 0x79361e8e, 0xf9a6bee9, + 0x7716f905, 0xf7865962, 0x72f6a47c, 0xf266041b, + 0x6b573613, 0xebc79674, 0x6eb76b6a, 0xee27cb0d, + 0x60978ce1, 0xe0072c86, 0x6577d198, 0xe5e771ff, + 0x53d4a83f, 0xd3440858, 0x5634f546, 0xd6a45521, + 0x581412cd, 0xd884b2aa, 0x5df44fb4, 0xdd64efd3, + 0x4455dddb, 0xc4c57dbc, 0x41b580a2, 0xc12520c5, + 0x4f956729, 0xcf05c74e, 0x4a753a50, 0xcae59a37, + 0x22d39467, 0xa2433400, 0x2733c91e, 0xa7a36979, + 0x29132e95, 0xa9838ef2, 0x2cf373ec, 0xac63d38b, + 0x3552e183, 0xb5c241e4, 0x30b2bcfa, 0xb0221c9d, + 0x3e925b71, 0xbe02fb16, 0x3b720608, 0xbbe2a66f, + 0x0dd17faf, 0x8d41dfc8, 0x083122d6, 0x88a182b1, + 0x0611c55d, 0x8681653a, 0x03f19824, 0x83613843, + 0x1a500a4b, 0x9ac0aa2c, 0x1fb05732, 0x9f20f755, + 0x1190b0b9, 0x910010de, 0x1470edc0, 0x94e04da7, + 0xc0ddecd7, 0x404d4cb0, 0xc53db1ae, 0x45ad11c9, + 0xcb1d5625, 0x4b8df642, 0xcefd0b5c, 0x4e6dab3b, + 0xd75c9933, 0x57cc3954, 0xd2bcc44a, 0x522c642d, + 0xdc9c23c1, 0x5c0c83a6, 0xd97c7eb8, 0x59ecdedf, + 0xefdf071f, 0x6f4fa778, 0xea3f5a66, 0x6aaffa01, + 0xe41fbded, 0x648f1d8a, 0xe1ffe094, 0x616f40f3, + 0xf85e72fb, 0x78ced29c, 0xfdbe2f82, 0x7d2e8fe5, + 0xf39ec809, 0x730e686e, 0xf67e9570, 0x76ee3517, + 0x9ed83b47, 0x1e489b20, 0x9b38663e, 0x1ba8c659, + 0x951881b5, 0x158821d2, 0x90f8dccc, 0x10687cab, + 0x89594ea3, 0x09c9eec4, 0x8cb913da, 0x0c29b3bd, + 0x8299f451, 0x02095436, 0x8779a928, 0x07e9094f, + 0xb1dad08f, 0x314a70e8, 0xb43a8df6, 0x34aa2d91, + 0xba1a6a7d, 0x3a8aca1a, 0xbffa3704, 0x3f6a9763, + 0xa65ba56b, 0x26cb050c, 0xa3bbf812, 0x232b5875, + 0xad9b1f99, 0x2d0bbffe, 0xa87b42e0, 0x28ebe287, + }, + { + 0x00000000, 0xf9ac87ee, 0xf798126b, 0x0e349585, + 0xebf13961, 0x125dbe8f, 0x1c692b0a, 0xe5c5ace4, + 0xd3236f75, 0x2a8fe89b, 0x24bb7d1e, 0xdd17faf0, + 0x38d25614, 0xc17ed1fa, 0xcf4a447f, 0x36e6c391, + 0xa287c35d, 0x5b2b44b3, 0x551fd136, 0xacb356d8, + 0x4976fa3c, 0xb0da7dd2, 0xbeeee857, 0x47426fb9, + 0x71a4ac28, 0x88082bc6, 0x863cbe43, 0x7f9039ad, + 0x9a559549, 0x63f912a7, 0x6dcd8722, 0x946100cc, + 0x41ce9b0d, 0xb8621ce3, 0xb6568966, 0x4ffa0e88, + 0xaa3fa26c, 0x53932582, 0x5da7b007, 0xa40b37e9, + 0x92edf478, 0x6b417396, 0x6575e613, 0x9cd961fd, + 0x791ccd19, 0x80b04af7, 0x8e84df72, 0x7728589c, + 0xe3495850, 0x1ae5dfbe, 0x14d14a3b, 0xed7dcdd5, + 0x08b86131, 0xf114e6df, 0xff20735a, 0x068cf4b4, + 0x306a3725, 0xc9c6b0cb, 0xc7f2254e, 0x3e5ea2a0, + 0xdb9b0e44, 0x223789aa, 0x2c031c2f, 0xd5af9bc1, + 0x839d361a, 0x7a31b1f4, 0x74052471, 0x8da9a39f, + 0x686c0f7b, 0x91c08895, 0x9ff41d10, 0x66589afe, + 0x50be596f, 0xa912de81, 0xa7264b04, 0x5e8accea, + 0xbb4f600e, 0x42e3e7e0, 0x4cd77265, 0xb57bf58b, + 0x211af547, 0xd8b672a9, 0xd682e72c, 0x2f2e60c2, + 0xcaebcc26, 0x33474bc8, 0x3d73de4d, 0xc4df59a3, + 0xf2399a32, 0x0b951ddc, 0x05a18859, 0xfc0d0fb7, + 0x19c8a353, 0xe06424bd, 0xee50b138, 0x17fc36d6, + 0xc253ad17, 0x3bff2af9, 0x35cbbf7c, 0xcc673892, + 0x29a29476, 0xd00e1398, 0xde3a861d, 0x279601f3, + 0x1170c262, 0xe8dc458c, 0xe6e8d009, 0x1f4457e7, + 0xfa81fb03, 0x032d7ced, 0x0d19e968, 0xf4b56e86, + 0x60d46e4a, 0x9978e9a4, 0x974c7c21, 0x6ee0fbcf, + 0x8b25572b, 0x7289d0c5, 0x7cbd4540, 0x8511c2ae, + 0xb3f7013f, 0x4a5b86d1, 0x446f1354, 0xbdc394ba, + 0x5806385e, 0xa1aabfb0, 0xaf9e2a35, 0x5632addb, + 0x03fb7183, 0xfa57f66d, 0xf46363e8, 0x0dcfe406, + 0xe80a48e2, 0x11a6cf0c, 0x1f925a89, 0xe63edd67, + 0xd0d81ef6, 0x29749918, 0x27400c9d, 0xdeec8b73, + 0x3b292797, 0xc285a079, 0xccb135fc, 0x351db212, + 0xa17cb2de, 0x58d03530, 0x56e4a0b5, 0xaf48275b, + 0x4a8d8bbf, 0xb3210c51, 0xbd1599d4, 0x44b91e3a, + 0x725fddab, 0x8bf35a45, 0x85c7cfc0, 0x7c6b482e, + 0x99aee4ca, 0x60026324, 0x6e36f6a1, 0x979a714f, + 0x4235ea8e, 0xbb996d60, 0xb5adf8e5, 0x4c017f0b, + 0xa9c4d3ef, 0x50685401, 0x5e5cc184, 0xa7f0466a, + 0x911685fb, 0x68ba0215, 0x668e9790, 0x9f22107e, + 0x7ae7bc9a, 0x834b3b74, 0x8d7faef1, 0x74d3291f, + 0xe0b229d3, 0x191eae3d, 0x172a3bb8, 0xee86bc56, + 0x0b4310b2, 0xf2ef975c, 0xfcdb02d9, 0x05778537, + 0x339146a6, 0xca3dc148, 0xc40954cd, 0x3da5d323, + 0xd8607fc7, 0x21ccf829, 0x2ff86dac, 0xd654ea42, + 0x80664799, 0x79cac077, 0x77fe55f2, 0x8e52d21c, + 0x6b977ef8, 0x923bf916, 0x9c0f6c93, 0x65a3eb7d, + 0x534528ec, 0xaae9af02, 0xa4dd3a87, 0x5d71bd69, + 0xb8b4118d, 0x41189663, 0x4f2c03e6, 0xb6808408, + 0x22e184c4, 0xdb4d032a, 0xd57996af, 0x2cd51141, + 0xc910bda5, 0x30bc3a4b, 0x3e88afce, 0xc7242820, + 0xf1c2ebb1, 0x086e6c5f, 0x065af9da, 0xfff67e34, + 0x1a33d2d0, 0xe39f553e, 0xedabc0bb, 0x14074755, + 0xc1a8dc94, 0x38045b7a, 0x3630ceff, 0xcf9c4911, + 0x2a59e5f5, 0xd3f5621b, 0xddc1f79e, 0x246d7070, + 0x128bb3e1, 0xeb27340f, 0xe513a18a, 0x1cbf2664, + 0xf97a8a80, 0x00d60d6e, 0x0ee298eb, 0xf74e1f05, + 0x632f1fc9, 0x9a839827, 0x94b70da2, 0x6d1b8a4c, + 0x88de26a8, 0x7172a146, 0x7f4634c3, 0x86eab32d, + 0xb00c70bc, 0x49a0f752, 0x479462d7, 0xbe38e539, + 0x5bfd49dd, 0xa251ce33, 0xac655bb6, 0x55c9dc58, + }, + { + 0x00000000, 0x07f6e306, 0x0fedc60c, 0x081b250a, + 0x1fdb8c18, 0x182d6f1e, 0x10364a14, 0x17c0a912, + 0x3fb71830, 0x3841fb36, 0x305ade3c, 0x37ac3d3a, + 0x206c9428, 0x279a772e, 0x2f815224, 0x2877b122, + 0x7f6e3060, 0x7898d366, 0x7083f66c, 0x7775156a, + 0x60b5bc78, 0x67435f7e, 0x6f587a74, 0x68ae9972, + 0x40d92850, 0x472fcb56, 0x4f34ee5c, 0x48c20d5a, + 0x5f02a448, 0x58f4474e, 0x50ef6244, 0x57198142, + 0xfedc60c0, 0xf92a83c6, 0xf131a6cc, 0xf6c745ca, + 0xe107ecd8, 0xe6f10fde, 0xeeea2ad4, 0xe91cc9d2, + 0xc16b78f0, 0xc69d9bf6, 0xce86befc, 0xc9705dfa, + 0xdeb0f4e8, 0xd94617ee, 0xd15d32e4, 0xd6abd1e2, + 0x81b250a0, 0x8644b3a6, 0x8e5f96ac, 0x89a975aa, + 0x9e69dcb8, 0x999f3fbe, 0x91841ab4, 0x9672f9b2, + 0xbe054890, 0xb9f3ab96, 0xb1e88e9c, 0xb61e6d9a, + 0xa1dec488, 0xa628278e, 0xae330284, 0xa9c5e182, + 0xf979dc37, 0xfe8f3f31, 0xf6941a3b, 0xf162f93d, + 0xe6a2502f, 0xe154b329, 0xe94f9623, 0xeeb97525, + 0xc6cec407, 0xc1382701, 0xc923020b, 0xced5e10d, + 0xd915481f, 0xdee3ab19, 0xd6f88e13, 0xd10e6d15, + 0x8617ec57, 0x81e10f51, 0x89fa2a5b, 0x8e0cc95d, + 0x99cc604f, 0x9e3a8349, 0x9621a643, 0x91d74545, + 0xb9a0f467, 0xbe561761, 0xb64d326b, 0xb1bbd16d, + 0xa67b787f, 0xa18d9b79, 0xa996be73, 0xae605d75, + 0x07a5bcf7, 0x00535ff1, 0x08487afb, 0x0fbe99fd, + 0x187e30ef, 0x1f88d3e9, 0x1793f6e3, 0x106515e5, + 0x3812a4c7, 0x3fe447c1, 0x37ff62cb, 0x300981cd, + 0x27c928df, 0x203fcbd9, 0x2824eed3, 0x2fd20dd5, + 0x78cb8c97, 0x7f3d6f91, 0x77264a9b, 0x70d0a99d, + 0x6710008f, 0x60e6e389, 0x68fdc683, 0x6f0b2585, + 0x477c94a7, 0x408a77a1, 0x489152ab, 0x4f67b1ad, + 0x58a718bf, 0x5f51fbb9, 0x574adeb3, 0x50bc3db5, + 0xf632a5d9, 0xf1c446df, 0xf9df63d5, 0xfe2980d3, + 0xe9e929c1, 0xee1fcac7, 0xe604efcd, 0xe1f20ccb, + 0xc985bde9, 0xce735eef, 0xc6687be5, 0xc19e98e3, + 0xd65e31f1, 0xd1a8d2f7, 0xd9b3f7fd, 0xde4514fb, + 0x895c95b9, 0x8eaa76bf, 0x86b153b5, 0x8147b0b3, + 0x968719a1, 0x9171faa7, 0x996adfad, 0x9e9c3cab, + 0xb6eb8d89, 0xb11d6e8f, 0xb9064b85, 0xbef0a883, + 0xa9300191, 0xaec6e297, 0xa6ddc79d, 0xa12b249b, + 0x08eec519, 0x0f18261f, 0x07030315, 0x00f5e013, + 0x17354901, 0x10c3aa07, 0x18d88f0d, 0x1f2e6c0b, + 0x3759dd29, 0x30af3e2f, 0x38b41b25, 0x3f42f823, + 0x28825131, 0x2f74b237, 0x276f973d, 0x2099743b, + 0x7780f579, 0x7076167f, 0x786d3375, 0x7f9bd073, + 0x685b7961, 0x6fad9a67, 0x67b6bf6d, 0x60405c6b, + 0x4837ed49, 0x4fc10e4f, 0x47da2b45, 0x402cc843, + 0x57ec6151, 0x501a8257, 0x5801a75d, 0x5ff7445b, + 0x0f4b79ee, 0x08bd9ae8, 0x00a6bfe2, 0x07505ce4, + 0x1090f5f6, 0x176616f0, 0x1f7d33fa, 0x188bd0fc, + 0x30fc61de, 0x370a82d8, 0x3f11a7d2, 0x38e744d4, + 0x2f27edc6, 0x28d10ec0, 0x20ca2bca, 0x273cc8cc, + 0x7025498e, 0x77d3aa88, 0x7fc88f82, 0x783e6c84, + 0x6ffec596, 0x68082690, 0x6013039a, 0x67e5e09c, + 0x4f9251be, 0x4864b2b8, 0x407f97b2, 0x478974b4, + 0x5049dda6, 0x57bf3ea0, 0x5fa41baa, 0x5852f8ac, + 0xf197192e, 0xf661fa28, 0xfe7adf22, 0xf98c3c24, + 0xee4c9536, 0xe9ba7630, 0xe1a1533a, 0xe657b03c, + 0xce20011e, 0xc9d6e218, 0xc1cdc712, 0xc63b2414, + 0xd1fb8d06, 0xd60d6e00, 0xde164b0a, 0xd9e0a80c, + 0x8ef9294e, 0x890fca48, 0x8114ef42, 0x86e20c44, + 0x9122a556, 0x96d44650, 0x9ecf635a, 0x9939805c, + 0xb14e317e, 0xb6b8d278, 0xbea3f772, 0xb9551474, + 0xae95bd66, 0xa9635e60, 0xa1787b6a, 0xa68e986c, + }, + { + 0x00000000, 0xe8a45605, 0xd589b1bd, 0x3d2de7b8, + 0xafd27ecd, 0x477628c8, 0x7a5bcf70, 0x92ff9975, + 0x5b65e02d, 0xb3c1b628, 0x8eec5190, 0x66480795, + 0xf4b79ee0, 0x1c13c8e5, 0x213e2f5d, 0xc99a7958, + 0xb6cbc05a, 0x5e6f965f, 0x634271e7, 0x8be627e2, + 0x1919be97, 0xf1bde892, 0xcc900f2a, 0x2434592f, + 0xedae2077, 0x050a7672, 0x382791ca, 0xd083c7cf, + 0x427c5eba, 0xaad808bf, 0x97f5ef07, 0x7f51b902, + 0x69569d03, 0x81f2cb06, 0xbcdf2cbe, 0x547b7abb, + 0xc684e3ce, 0x2e20b5cb, 0x130d5273, 0xfba90476, + 0x32337d2e, 0xda972b2b, 0xe7bacc93, 0x0f1e9a96, + 0x9de103e3, 0x754555e6, 0x4868b25e, 0xa0cce45b, + 0xdf9d5d59, 0x37390b5c, 0x0a14ece4, 0xe2b0bae1, + 0x704f2394, 0x98eb7591, 0xa5c69229, 0x4d62c42c, + 0x84f8bd74, 0x6c5ceb71, 0x51710cc9, 0xb9d55acc, + 0x2b2ac3b9, 0xc38e95bc, 0xfea37204, 0x16072401, + 0xd2ad3a06, 0x3a096c03, 0x07248bbb, 0xef80ddbe, + 0x7d7f44cb, 0x95db12ce, 0xa8f6f576, 0x4052a373, + 0x89c8da2b, 0x616c8c2e, 0x5c416b96, 0xb4e53d93, + 0x261aa4e6, 0xcebef2e3, 0xf393155b, 0x1b37435e, + 0x6466fa5c, 0x8cc2ac59, 0xb1ef4be1, 0x594b1de4, + 0xcbb48491, 0x2310d294, 0x1e3d352c, 0xf6996329, + 0x3f031a71, 0xd7a74c74, 0xea8aabcc, 0x022efdc9, + 0x90d164bc, 0x787532b9, 0x4558d501, 0xadfc8304, + 0xbbfba705, 0x535ff100, 0x6e7216b8, 0x86d640bd, + 0x1429d9c8, 0xfc8d8fcd, 0xc1a06875, 0x29043e70, + 0xe09e4728, 0x083a112d, 0x3517f695, 0xddb3a090, + 0x4f4c39e5, 0xa7e86fe0, 0x9ac58858, 0x7261de5d, + 0x0d30675f, 0xe594315a, 0xd8b9d6e2, 0x301d80e7, + 0xa2e21992, 0x4a464f97, 0x776ba82f, 0x9fcffe2a, + 0x56558772, 0xbef1d177, 0x83dc36cf, 0x6b7860ca, + 0xf987f9bf, 0x1123afba, 0x2c0e4802, 0xc4aa1e07, + 0xa19b69bb, 0x493f3fbe, 0x7412d806, 0x9cb68e03, + 0x0e491776, 0xe6ed4173, 0xdbc0a6cb, 0x3364f0ce, + 0xfafe8996, 0x125adf93, 0x2f77382b, 0xc7d36e2e, + 0x552cf75b, 0xbd88a15e, 0x80a546e6, 0x680110e3, + 0x1750a9e1, 0xfff4ffe4, 0xc2d9185c, 0x2a7d4e59, + 0xb882d72c, 0x50268129, 0x6d0b6691, 0x85af3094, + 0x4c3549cc, 0xa4911fc9, 0x99bcf871, 0x7118ae74, + 0xe3e73701, 0x0b436104, 0x366e86bc, 0xdecad0b9, + 0xc8cdf4b8, 0x2069a2bd, 0x1d444505, 0xf5e01300, + 0x671f8a75, 0x8fbbdc70, 0xb2963bc8, 0x5a326dcd, + 0x93a81495, 0x7b0c4290, 0x4621a528, 0xae85f32d, + 0x3c7a6a58, 0xd4de3c5d, 0xe9f3dbe5, 0x01578de0, + 0x7e0634e2, 0x96a262e7, 0xab8f855f, 0x432bd35a, + 0xd1d44a2f, 0x39701c2a, 0x045dfb92, 0xecf9ad97, + 0x2563d4cf, 0xcdc782ca, 0xf0ea6572, 0x184e3377, + 0x8ab1aa02, 0x6215fc07, 0x5f381bbf, 0xb79c4dba, + 0x733653bd, 0x9b9205b8, 0xa6bfe200, 0x4e1bb405, + 0xdce42d70, 0x34407b75, 0x096d9ccd, 0xe1c9cac8, + 0x2853b390, 0xc0f7e595, 0xfdda022d, 0x157e5428, + 0x8781cd5d, 0x6f259b58, 0x52087ce0, 0xbaac2ae5, + 0xc5fd93e7, 0x2d59c5e2, 0x1074225a, 0xf8d0745f, + 0x6a2fed2a, 0x828bbb2f, 0xbfa65c97, 0x57020a92, + 0x9e9873ca, 0x763c25cf, 0x4b11c277, 0xa3b59472, + 0x314a0d07, 0xd9ee5b02, 0xe4c3bcba, 0x0c67eabf, + 0x1a60cebe, 0xf2c498bb, 0xcfe97f03, 0x274d2906, + 0xb5b2b073, 0x5d16e676, 0x603b01ce, 0x889f57cb, + 0x41052e93, 0xa9a17896, 0x948c9f2e, 0x7c28c92b, + 0xeed7505e, 0x0673065b, 0x3b5ee1e3, 0xd3fab7e6, + 0xacab0ee4, 0x440f58e1, 0x7922bf59, 0x9186e95c, + 0x03797029, 0xebdd262c, 0xd6f0c194, 0x3e549791, + 0xf7ceeec9, 0x1f6ab8cc, 0x22475f74, 0xcae30971, + 0x581c9004, 0xb0b8c601, 0x8d9521b9, 0x653177bc, + }, + { + 0x00000000, 0x47f7cec1, 0x8fef9d82, 0xc8185343, + 0x1b1e26b3, 0x5ce9e872, 0x94f1bb31, 0xd30675f0, + 0x363c4d66, 0x71cb83a7, 0xb9d3d0e4, 0xfe241e25, + 0x2d226bd5, 0x6ad5a514, 0xa2cdf657, 0xe53a3896, + 0x6c789acc, 0x2b8f540d, 0xe397074e, 0xa460c98f, + 0x7766bc7f, 0x309172be, 0xf88921fd, 0xbf7eef3c, + 0x5a44d7aa, 0x1db3196b, 0xd5ab4a28, 0x925c84e9, + 0x415af119, 0x06ad3fd8, 0xceb56c9b, 0x8942a25a, + 0xd8f13598, 0x9f06fb59, 0x571ea81a, 0x10e966db, + 0xc3ef132b, 0x8418ddea, 0x4c008ea9, 0x0bf74068, + 0xeecd78fe, 0xa93ab63f, 0x6122e57c, 0x26d52bbd, + 0xf5d35e4d, 0xb224908c, 0x7a3cc3cf, 0x3dcb0d0e, + 0xb489af54, 0xf37e6195, 0x3b6632d6, 0x7c91fc17, + 0xaf9789e7, 0xe8604726, 0x20781465, 0x678fdaa4, + 0x82b5e232, 0xc5422cf3, 0x0d5a7fb0, 0x4aadb171, + 0x99abc481, 0xde5c0a40, 0x16445903, 0x51b397c2, + 0xb5237687, 0xf2d4b846, 0x3acceb05, 0x7d3b25c4, + 0xae3d5034, 0xe9ca9ef5, 0x21d2cdb6, 0x66250377, + 0x831f3be1, 0xc4e8f520, 0x0cf0a663, 0x4b0768a2, + 0x98011d52, 0xdff6d393, 0x17ee80d0, 0x50194e11, + 0xd95bec4b, 0x9eac228a, 0x56b471c9, 0x1143bf08, + 0xc245caf8, 0x85b20439, 0x4daa577a, 0x0a5d99bb, + 0xef67a12d, 0xa8906fec, 0x60883caf, 0x277ff26e, + 0xf479879e, 0xb38e495f, 0x7b961a1c, 0x3c61d4dd, + 0x6dd2431f, 0x2a258dde, 0xe23dde9d, 0xa5ca105c, + 0x76cc65ac, 0x313bab6d, 0xf923f82e, 0xbed436ef, + 0x5bee0e79, 0x1c19c0b8, 0xd40193fb, 0x93f65d3a, + 0x40f028ca, 0x0707e60b, 0xcf1fb548, 0x88e87b89, + 0x01aad9d3, 0x465d1712, 0x8e454451, 0xc9b28a90, + 0x1ab4ff60, 0x5d4331a1, 0x955b62e2, 0xd2acac23, + 0x379694b5, 0x70615a74, 0xb8790937, 0xff8ec7f6, + 0x2c88b206, 0x6b7f7cc7, 0xa3672f84, 0xe490e145, + 0x6e87f0b9, 0x29703e78, 0xe1686d3b, 0xa69fa3fa, + 0x7599d60a, 0x326e18cb, 0xfa764b88, 0xbd818549, + 0x58bbbddf, 0x1f4c731e, 0xd754205d, 0x90a3ee9c, + 0x43a59b6c, 0x045255ad, 0xcc4a06ee, 0x8bbdc82f, + 0x02ff6a75, 0x4508a4b4, 0x8d10f7f7, 0xcae73936, + 0x19e14cc6, 0x5e168207, 0x960ed144, 0xd1f91f85, + 0x34c32713, 0x7334e9d2, 0xbb2cba91, 0xfcdb7450, + 0x2fdd01a0, 0x682acf61, 0xa0329c22, 0xe7c552e3, + 0xb676c521, 0xf1810be0, 0x399958a3, 0x7e6e9662, + 0xad68e392, 0xea9f2d53, 0x22877e10, 0x6570b0d1, + 0x804a8847, 0xc7bd4686, 0x0fa515c5, 0x4852db04, + 0x9b54aef4, 0xdca36035, 0x14bb3376, 0x534cfdb7, + 0xda0e5fed, 0x9df9912c, 0x55e1c26f, 0x12160cae, + 0xc110795e, 0x86e7b79f, 0x4effe4dc, 0x09082a1d, + 0xec32128b, 0xabc5dc4a, 0x63dd8f09, 0x242a41c8, + 0xf72c3438, 0xb0dbfaf9, 0x78c3a9ba, 0x3f34677b, + 0xdba4863e, 0x9c5348ff, 0x544b1bbc, 0x13bcd57d, + 0xc0baa08d, 0x874d6e4c, 0x4f553d0f, 0x08a2f3ce, + 0xed98cb58, 0xaa6f0599, 0x627756da, 0x2580981b, + 0xf686edeb, 0xb171232a, 0x79697069, 0x3e9ebea8, + 0xb7dc1cf2, 0xf02bd233, 0x38338170, 0x7fc44fb1, + 0xacc23a41, 0xeb35f480, 0x232da7c3, 0x64da6902, + 0x81e05194, 0xc6179f55, 0x0e0fcc16, 0x49f802d7, + 0x9afe7727, 0xdd09b9e6, 0x1511eaa5, 0x52e62464, + 0x0355b3a6, 0x44a27d67, 0x8cba2e24, 0xcb4de0e5, + 0x184b9515, 0x5fbc5bd4, 0x97a40897, 0xd053c656, + 0x3569fec0, 0x729e3001, 0xba866342, 0xfd71ad83, + 0x2e77d873, 0x698016b2, 0xa19845f1, 0xe66f8b30, + 0x6f2d296a, 0x28dae7ab, 0xe0c2b4e8, 0xa7357a29, + 0x74330fd9, 0x33c4c118, 0xfbdc925b, 0xbc2b5c9a, + 0x5911640c, 0x1ee6aacd, 0xd6fef98e, 0x9109374f, + 0x420f42bf, 0x05f88c7e, 0xcde0df3d, 0x8a1711fc, + }, + { + 0x00000000, 0xdd0fe172, 0xbededf53, 0x63d13e21, + 0x797ca311, 0xa4734263, 0xc7a27c42, 0x1aad9d30, + 0xf2f94622, 0x2ff6a750, 0x4c279971, 0x91287803, + 0x8b85e533, 0x568a0441, 0x355b3a60, 0xe854db12, + 0xe13391f3, 0x3c3c7081, 0x5fed4ea0, 0x82e2afd2, + 0x984f32e2, 0x4540d390, 0x2691edb1, 0xfb9e0cc3, + 0x13cad7d1, 0xcec536a3, 0xad140882, 0x701be9f0, + 0x6ab674c0, 0xb7b995b2, 0xd468ab93, 0x09674ae1, + 0xc6a63e51, 0x1ba9df23, 0x7878e102, 0xa5770070, + 0xbfda9d40, 0x62d57c32, 0x01044213, 0xdc0ba361, + 0x345f7873, 0xe9509901, 0x8a81a720, 0x578e4652, + 0x4d23db62, 0x902c3a10, 0xf3fd0431, 0x2ef2e543, + 0x2795afa2, 0xfa9a4ed0, 0x994b70f1, 0x44449183, + 0x5ee90cb3, 0x83e6edc1, 0xe037d3e0, 0x3d383292, + 0xd56ce980, 0x086308f2, 0x6bb236d3, 0xb6bdd7a1, + 0xac104a91, 0x711fabe3, 0x12ce95c2, 0xcfc174b0, + 0x898d6115, 0x54828067, 0x3753be46, 0xea5c5f34, + 0xf0f1c204, 0x2dfe2376, 0x4e2f1d57, 0x9320fc25, + 0x7b742737, 0xa67bc645, 0xc5aaf864, 0x18a51916, + 0x02088426, 0xdf076554, 0xbcd65b75, 0x61d9ba07, + 0x68bef0e6, 0xb5b11194, 0xd6602fb5, 0x0b6fcec7, + 0x11c253f7, 0xcccdb285, 0xaf1c8ca4, 0x72136dd6, + 0x9a47b6c4, 0x474857b6, 0x24996997, 0xf99688e5, + 0xe33b15d5, 0x3e34f4a7, 0x5de5ca86, 0x80ea2bf4, + 0x4f2b5f44, 0x9224be36, 0xf1f58017, 0x2cfa6165, + 0x3657fc55, 0xeb581d27, 0x88892306, 0x5586c274, + 0xbdd21966, 0x60ddf814, 0x030cc635, 0xde032747, + 0xc4aeba77, 0x19a15b05, 0x7a706524, 0xa77f8456, + 0xae18ceb7, 0x73172fc5, 0x10c611e4, 0xcdc9f096, + 0xd7646da6, 0x0a6b8cd4, 0x69bab2f5, 0xb4b55387, + 0x5ce18895, 0x81ee69e7, 0xe23f57c6, 0x3f30b6b4, + 0x259d2b84, 0xf892caf6, 0x9b43f4d7, 0x464c15a5, + 0x17dbdf9d, 0xcad43eef, 0xa90500ce, 0x740ae1bc, + 0x6ea77c8c, 0xb3a89dfe, 0xd079a3df, 0x0d7642ad, + 0xe52299bf, 0x382d78cd, 0x5bfc46ec, 0x86f3a79e, + 0x9c5e3aae, 0x4151dbdc, 0x2280e5fd, 0xff8f048f, + 0xf6e84e6e, 0x2be7af1c, 0x4836913d, 0x9539704f, + 0x8f94ed7f, 0x529b0c0d, 0x314a322c, 0xec45d35e, + 0x0411084c, 0xd91ee93e, 0xbacfd71f, 0x67c0366d, + 0x7d6dab5d, 0xa0624a2f, 0xc3b3740e, 0x1ebc957c, + 0xd17de1cc, 0x0c7200be, 0x6fa33e9f, 0xb2acdfed, + 0xa80142dd, 0x750ea3af, 0x16df9d8e, 0xcbd07cfc, + 0x2384a7ee, 0xfe8b469c, 0x9d5a78bd, 0x405599cf, + 0x5af804ff, 0x87f7e58d, 0xe426dbac, 0x39293ade, + 0x304e703f, 0xed41914d, 0x8e90af6c, 0x539f4e1e, + 0x4932d32e, 0x943d325c, 0xf7ec0c7d, 0x2ae3ed0f, + 0xc2b7361d, 0x1fb8d76f, 0x7c69e94e, 0xa166083c, + 0xbbcb950c, 0x66c4747e, 0x05154a5f, 0xd81aab2d, + 0x9e56be88, 0x43595ffa, 0x208861db, 0xfd8780a9, + 0xe72a1d99, 0x3a25fceb, 0x59f4c2ca, 0x84fb23b8, + 0x6caff8aa, 0xb1a019d8, 0xd27127f9, 0x0f7ec68b, + 0x15d35bbb, 0xc8dcbac9, 0xab0d84e8, 0x7602659a, + 0x7f652f7b, 0xa26ace09, 0xc1bbf028, 0x1cb4115a, + 0x06198c6a, 0xdb166d18, 0xb8c75339, 0x65c8b24b, + 0x8d9c6959, 0x5093882b, 0x3342b60a, 0xee4d5778, + 0xf4e0ca48, 0x29ef2b3a, 0x4a3e151b, 0x9731f469, + 0x58f080d9, 0x85ff61ab, 0xe62e5f8a, 0x3b21bef8, + 0x218c23c8, 0xfc83c2ba, 0x9f52fc9b, 0x425d1de9, + 0xaa09c6fb, 0x77062789, 0x14d719a8, 0xc9d8f8da, + 0xd37565ea, 0x0e7a8498, 0x6dabbab9, 0xb0a45bcb, + 0xb9c3112a, 0x64ccf058, 0x071dce79, 0xda122f0b, + 0xc0bfb23b, 0x1db05349, 0x7e616d68, 0xa36e8c1a, + 0x4b3a5708, 0x9635b67a, 0xf5e4885b, 0x28eb6929, + 0x3246f419, 0xef49156b, 0x8c982b4a, 0x5197ca38, + }, + { + 0x00000000, 0x2fb7bf3a, 0x5f6f7e74, 0x70d8c14e, + 0xbedefce8, 0x916943d2, 0xe1b1829c, 0xce063da6, + 0x797ce467, 0x56cb5b5d, 0x26139a13, 0x09a42529, + 0xc7a2188f, 0xe815a7b5, 0x98cd66fb, 0xb77ad9c1, + 0xf2f9c8ce, 0xdd4e77f4, 0xad96b6ba, 0x82210980, + 0x4c273426, 0x63908b1c, 0x13484a52, 0x3cfff568, + 0x8b852ca9, 0xa4329393, 0xd4ea52dd, 0xfb5dede7, + 0x355bd041, 0x1aec6f7b, 0x6a34ae35, 0x4583110f, + 0xe1328c2b, 0xce853311, 0xbe5df25f, 0x91ea4d65, + 0x5fec70c3, 0x705bcff9, 0x00830eb7, 0x2f34b18d, + 0x984e684c, 0xb7f9d776, 0xc7211638, 0xe896a902, + 0x269094a4, 0x09272b9e, 0x79ffead0, 0x564855ea, + 0x13cb44e5, 0x3c7cfbdf, 0x4ca43a91, 0x631385ab, + 0xad15b80d, 0x82a20737, 0xf27ac679, 0xddcd7943, + 0x6ab7a082, 0x45001fb8, 0x35d8def6, 0x1a6f61cc, + 0xd4695c6a, 0xfbdee350, 0x8b06221e, 0xa4b19d24, + 0xc6a405e1, 0xe913badb, 0x99cb7b95, 0xb67cc4af, + 0x787af909, 0x57cd4633, 0x2715877d, 0x08a23847, + 0xbfd8e186, 0x906f5ebc, 0xe0b79ff2, 0xcf0020c8, + 0x01061d6e, 0x2eb1a254, 0x5e69631a, 0x71dedc20, + 0x345dcd2f, 0x1bea7215, 0x6b32b35b, 0x44850c61, + 0x8a8331c7, 0xa5348efd, 0xd5ec4fb3, 0xfa5bf089, + 0x4d212948, 0x62969672, 0x124e573c, 0x3df9e806, + 0xf3ffd5a0, 0xdc486a9a, 0xac90abd4, 0x832714ee, + 0x279689ca, 0x082136f0, 0x78f9f7be, 0x574e4884, + 0x99487522, 0xb6ffca18, 0xc6270b56, 0xe990b46c, + 0x5eea6dad, 0x715dd297, 0x018513d9, 0x2e32ace3, + 0xe0349145, 0xcf832e7f, 0xbf5bef31, 0x90ec500b, + 0xd56f4104, 0xfad8fe3e, 0x8a003f70, 0xa5b7804a, + 0x6bb1bdec, 0x440602d6, 0x34dec398, 0x1b697ca2, + 0xac13a563, 0x83a41a59, 0xf37cdb17, 0xdccb642d, + 0x12cd598b, 0x3d7ae6b1, 0x4da227ff, 0x621598c5, + 0x89891675, 0xa63ea94f, 0xd6e66801, 0xf951d73b, + 0x3757ea9d, 0x18e055a7, 0x683894e9, 0x478f2bd3, + 0xf0f5f212, 0xdf424d28, 0xaf9a8c66, 0x802d335c, + 0x4e2b0efa, 0x619cb1c0, 0x1144708e, 0x3ef3cfb4, + 0x7b70debb, 0x54c76181, 0x241fa0cf, 0x0ba81ff5, + 0xc5ae2253, 0xea199d69, 0x9ac15c27, 0xb576e31d, + 0x020c3adc, 0x2dbb85e6, 0x5d6344a8, 0x72d4fb92, + 0xbcd2c634, 0x9365790e, 0xe3bdb840, 0xcc0a077a, + 0x68bb9a5e, 0x470c2564, 0x37d4e42a, 0x18635b10, + 0xd66566b6, 0xf9d2d98c, 0x890a18c2, 0xa6bda7f8, + 0x11c77e39, 0x3e70c103, 0x4ea8004d, 0x611fbf77, + 0xaf1982d1, 0x80ae3deb, 0xf076fca5, 0xdfc1439f, + 0x9a425290, 0xb5f5edaa, 0xc52d2ce4, 0xea9a93de, + 0x249cae78, 0x0b2b1142, 0x7bf3d00c, 0x54446f36, + 0xe33eb6f7, 0xcc8909cd, 0xbc51c883, 0x93e677b9, + 0x5de04a1f, 0x7257f525, 0x028f346b, 0x2d388b51, + 0x4f2d1394, 0x609aacae, 0x10426de0, 0x3ff5d2da, + 0xf1f3ef7c, 0xde445046, 0xae9c9108, 0x812b2e32, + 0x3651f7f3, 0x19e648c9, 0x693e8987, 0x468936bd, + 0x888f0b1b, 0xa738b421, 0xd7e0756f, 0xf857ca55, + 0xbdd4db5a, 0x92636460, 0xe2bba52e, 0xcd0c1a14, + 0x030a27b2, 0x2cbd9888, 0x5c6559c6, 0x73d2e6fc, + 0xc4a83f3d, 0xeb1f8007, 0x9bc74149, 0xb470fe73, + 0x7a76c3d5, 0x55c17cef, 0x2519bda1, 0x0aae029b, + 0xae1f9fbf, 0x81a82085, 0xf170e1cb, 0xdec75ef1, + 0x10c16357, 0x3f76dc6d, 0x4fae1d23, 0x6019a219, + 0xd7637bd8, 0xf8d4c4e2, 0x880c05ac, 0xa7bbba96, + 0x69bd8730, 0x460a380a, 0x36d2f944, 0x1965467e, + 0x5ce65771, 0x7351e84b, 0x03892905, 0x2c3e963f, + 0xe238ab99, 0xcd8f14a3, 0xbd57d5ed, 0x92e06ad7, + 0x259ab316, 0x0a2d0c2c, 0x7af5cd62, 0x55427258, + 0x9b444ffe, 0xb4f3f0c4, 0xc42b318a, 0xeb9c8eb0, + }, +}; diff --git a/ext/digest/crc32_posix/crc32_posix.c b/ext/digest/crc32_posix/crc32_posix.c index 1ede671..2c781bf 100644 --- a/ext/digest/crc32_posix/crc32_posix.c +++ b/ext/digest/crc32_posix/crc32_posix.c @@ -15,54 +15,39 @@ */ #include "crc32_posix.h" - -/** - * Static table used for the table_driven implementation. - */ -static const crc32_t crc32_posix_table[256] = { - 0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b, 0x1a864db2, 0x1e475005, - 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61, 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, - 0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9, 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75, - 0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3, 0x709f7b7a, 0x745e66cd, - 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039, 0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, - 0xbe2b5b58, 0xbaea46ef, 0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d, - 0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, 0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95, - 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, 0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, - 0x34867077, 0x30476dc0, 0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072, - 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, 0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca, - 0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde, 0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02, - 0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1, 0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba, - 0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b, 0xbb60adfc, 0xb6238b25, 0xb2e29692, - 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6, 0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a, - 0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e, 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2, - 0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34, 0xdc3abded, 0xd8fba05a, - 0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637, 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb, - 0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f, 0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53, - 0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5, 0x3f9b762c, 0x3b5a6b9b, - 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff, 0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, - 0xf12f560e, 0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b, - 0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f, 0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3, - 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, 0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, - 0x9b3660c6, 0x9ff77d71, 0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3, - 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, 0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c, - 0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8, 0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24, - 0x119b4be9, 0x155a565e, 0x18197087, 0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec, - 0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d, 0x2056cd3a, 0x2d15ebe3, 0x29d4f654, - 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0, 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c, - 0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18, 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4, - 0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662, 0x933eb0bb, 0x97ffad0c, - 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668, 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4 -}; +#include "crc32_posix_table.h" crc32_t crc32_posix_update(crc32_t crc, const void *data, size_t data_len) { const unsigned char *d = (const unsigned char *)data; unsigned int tbl_idx; + for (; data_len >= SLICE_SIZE; data_len -= SLICE_SIZE) + { + crc = crc32_posix_table[15][d[ 0] ^ ((crc >> 24) & 0xff)] ^ + crc32_posix_table[14][d[ 1] ^ ((crc >> 16) & 0xff)] ^ + crc32_posix_table[13][d[ 2] ^ ((crc >> 8) & 0xff)] ^ + crc32_posix_table[12][d[ 3] ^ ((crc >> 0) & 0xff)] ^ + crc32_posix_table[11][d[ 4] ] ^ + crc32_posix_table[10][d[ 5] ] ^ + crc32_posix_table[ 9][d[ 6] ] ^ + crc32_posix_table[ 8][d[ 7] ] ^ + crc32_posix_table[ 7][d[ 8] ] ^ + crc32_posix_table[ 6][d[ 9] ] ^ + crc32_posix_table[ 5][d[10] ] ^ + crc32_posix_table[ 4][d[11] ] ^ + crc32_posix_table[ 3][d[12] ] ^ + crc32_posix_table[ 2][d[13] ] ^ + crc32_posix_table[ 1][d[14] ] ^ + crc32_posix_table[ 0][d[15] ]; + crc &= 0xffffffff; + d += SLICE_SIZE; + } + while (data_len--) { tbl_idx = ((crc >> 24) ^ *d) & 0xff; - crc = (crc32_posix_table[tbl_idx] ^ (crc << 8)) & 0xffffffff; + crc = (crc32_posix_table[0][tbl_idx] ^ (crc << 8)) & 0xffffffff; d++; } diff --git a/ext/digest/crc32_posix/crc32_posix_table.h b/ext/digest/crc32_posix/crc32_posix_table.h new file mode 100644 index 0000000..64d08af --- /dev/null +++ b/ext/digest/crc32_posix/crc32_posix_table.h @@ -0,0 +1,1070 @@ +/* + * bitwidth: 32 + * generator polynomial: 0x04c11db7 + * input bit direction: NORMAL + * slice bytes per iteration: 16 + * slide bits per table: 8 + * + * Generated by: gentable.rb of digest-crc + */ + +#define SLICE_SIZE 16 + +static const uint32_t crc32_posix_table[SLICE_SIZE][256] = { + { + 0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, + 0x130476dc, 0x17c56b6b, 0x1a864db2, 0x1e475005, + 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61, + 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, + 0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9, + 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75, + 0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, + 0x791d4014, 0x7ddc5da3, 0x709f7b7a, 0x745e66cd, + 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039, + 0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, + 0xbe2b5b58, 0xbaea46ef, 0xb7a96036, 0xb3687d81, + 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d, + 0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, + 0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95, + 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, + 0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, + 0x34867077, 0x30476dc0, 0x3d044b19, 0x39c556ae, + 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072, + 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, + 0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca, + 0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde, + 0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02, + 0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1, 0x53dc6066, + 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba, + 0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, + 0xbfa1b04b, 0xbb60adfc, 0xb6238b25, 0xb2e29692, + 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6, + 0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a, + 0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e, + 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2, + 0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686, + 0xd5b88683, 0xd1799b34, 0xdc3abded, 0xd8fba05a, + 0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637, + 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb, + 0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f, + 0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53, + 0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, + 0x36194d42, 0x32d850f5, 0x3f9b762c, 0x3b5a6b9b, + 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff, + 0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, + 0xf12f560e, 0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7, + 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b, + 0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f, + 0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3, + 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, + 0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, + 0x9b3660c6, 0x9ff77d71, 0x92b45ba8, 0x9675461f, + 0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3, + 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, + 0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c, + 0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8, + 0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24, + 0x119b4be9, 0x155a565e, 0x18197087, 0x1cd86d30, + 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec, + 0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, + 0x2497d08d, 0x2056cd3a, 0x2d15ebe3, 0x29d4f654, + 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0, + 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c, + 0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18, + 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4, + 0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0, + 0x9abc8bd5, 0x9e7d9662, 0x933eb0bb, 0x97ffad0c, + 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668, + 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4, + }, + { + 0x00000000, 0xd219c1dc, 0xa0f29e0f, 0x72eb5fd3, + 0x452421a9, 0x973de075, 0xe5d6bfa6, 0x37cf7e7a, + 0x8a484352, 0x5851828e, 0x2abadd5d, 0xf8a31c81, + 0xcf6c62fb, 0x1d75a327, 0x6f9efcf4, 0xbd873d28, + 0x10519b13, 0xc2485acf, 0xb0a3051c, 0x62bac4c0, + 0x5575baba, 0x876c7b66, 0xf58724b5, 0x279ee569, + 0x9a19d841, 0x4800199d, 0x3aeb464e, 0xe8f28792, + 0xdf3df9e8, 0x0d243834, 0x7fcf67e7, 0xadd6a63b, + 0x20a33626, 0xf2baf7fa, 0x8051a829, 0x524869f5, + 0x6587178f, 0xb79ed653, 0xc5758980, 0x176c485c, + 0xaaeb7574, 0x78f2b4a8, 0x0a19eb7b, 0xd8002aa7, + 0xefcf54dd, 0x3dd69501, 0x4f3dcad2, 0x9d240b0e, + 0x30f2ad35, 0xe2eb6ce9, 0x9000333a, 0x4219f2e6, + 0x75d68c9c, 0xa7cf4d40, 0xd5241293, 0x073dd34f, + 0xbabaee67, 0x68a32fbb, 0x1a487068, 0xc851b1b4, + 0xff9ecfce, 0x2d870e12, 0x5f6c51c1, 0x8d75901d, + 0x41466c4c, 0x935fad90, 0xe1b4f243, 0x33ad339f, + 0x04624de5, 0xd67b8c39, 0xa490d3ea, 0x76891236, + 0xcb0e2f1e, 0x1917eec2, 0x6bfcb111, 0xb9e570cd, + 0x8e2a0eb7, 0x5c33cf6b, 0x2ed890b8, 0xfcc15164, + 0x5117f75f, 0x830e3683, 0xf1e56950, 0x23fca88c, + 0x1433d6f6, 0xc62a172a, 0xb4c148f9, 0x66d88925, + 0xdb5fb40d, 0x094675d1, 0x7bad2a02, 0xa9b4ebde, + 0x9e7b95a4, 0x4c625478, 0x3e890bab, 0xec90ca77, + 0x61e55a6a, 0xb3fc9bb6, 0xc117c465, 0x130e05b9, + 0x24c17bc3, 0xf6d8ba1f, 0x8433e5cc, 0x562a2410, + 0xebad1938, 0x39b4d8e4, 0x4b5f8737, 0x994646eb, + 0xae893891, 0x7c90f94d, 0x0e7ba69e, 0xdc626742, + 0x71b4c179, 0xa3ad00a5, 0xd1465f76, 0x035f9eaa, + 0x3490e0d0, 0xe689210c, 0x94627edf, 0x467bbf03, + 0xfbfc822b, 0x29e543f7, 0x5b0e1c24, 0x8917ddf8, + 0xbed8a382, 0x6cc1625e, 0x1e2a3d8d, 0xcc33fc51, + 0x828cd898, 0x50951944, 0x227e4697, 0xf067874b, + 0xc7a8f931, 0x15b138ed, 0x675a673e, 0xb543a6e2, + 0x08c49bca, 0xdadd5a16, 0xa83605c5, 0x7a2fc419, + 0x4de0ba63, 0x9ff97bbf, 0xed12246c, 0x3f0be5b0, + 0x92dd438b, 0x40c48257, 0x322fdd84, 0xe0361c58, + 0xd7f96222, 0x05e0a3fe, 0x770bfc2d, 0xa5123df1, + 0x189500d9, 0xca8cc105, 0xb8679ed6, 0x6a7e5f0a, + 0x5db12170, 0x8fa8e0ac, 0xfd43bf7f, 0x2f5a7ea3, + 0xa22feebe, 0x70362f62, 0x02dd70b1, 0xd0c4b16d, + 0xe70bcf17, 0x35120ecb, 0x47f95118, 0x95e090c4, + 0x2867adec, 0xfa7e6c30, 0x889533e3, 0x5a8cf23f, + 0x6d438c45, 0xbf5a4d99, 0xcdb1124a, 0x1fa8d396, + 0xb27e75ad, 0x6067b471, 0x128ceba2, 0xc0952a7e, + 0xf75a5404, 0x254395d8, 0x57a8ca0b, 0x85b10bd7, + 0x383636ff, 0xea2ff723, 0x98c4a8f0, 0x4add692c, + 0x7d121756, 0xaf0bd68a, 0xdde08959, 0x0ff94885, + 0xc3cab4d4, 0x11d37508, 0x63382adb, 0xb121eb07, + 0x86ee957d, 0x54f754a1, 0x261c0b72, 0xf405caae, + 0x4982f786, 0x9b9b365a, 0xe9706989, 0x3b69a855, + 0x0ca6d62f, 0xdebf17f3, 0xac544820, 0x7e4d89fc, + 0xd39b2fc7, 0x0182ee1b, 0x7369b1c8, 0xa1707014, + 0x96bf0e6e, 0x44a6cfb2, 0x364d9061, 0xe45451bd, + 0x59d36c95, 0x8bcaad49, 0xf921f29a, 0x2b383346, + 0x1cf74d3c, 0xceee8ce0, 0xbc05d333, 0x6e1c12ef, + 0xe36982f2, 0x3170432e, 0x439b1cfd, 0x9182dd21, + 0xa64da35b, 0x74546287, 0x06bf3d54, 0xd4a6fc88, + 0x6921c1a0, 0xbb38007c, 0xc9d35faf, 0x1bca9e73, + 0x2c05e009, 0xfe1c21d5, 0x8cf77e06, 0x5eeebfda, + 0xf33819e1, 0x2121d83d, 0x53ca87ee, 0x81d34632, + 0xb61c3848, 0x6405f994, 0x16eea647, 0xc4f7679b, + 0x79705ab3, 0xab699b6f, 0xd982c4bc, 0x0b9b0560, + 0x3c547b1a, 0xee4dbac6, 0x9ca6e515, 0x4ebf24c9, + }, + { + 0x00000000, 0x01d8ac87, 0x03b1590e, 0x0269f589, + 0x0762b21c, 0x06ba1e9b, 0x04d3eb12, 0x050b4795, + 0x0ec56438, 0x0f1dc8bf, 0x0d743d36, 0x0cac91b1, + 0x09a7d624, 0x087f7aa3, 0x0a168f2a, 0x0bce23ad, + 0x1d8ac870, 0x1c5264f7, 0x1e3b917e, 0x1fe33df9, + 0x1ae87a6c, 0x1b30d6eb, 0x19592362, 0x18818fe5, + 0x134fac48, 0x129700cf, 0x10fef546, 0x112659c1, + 0x142d1e54, 0x15f5b2d3, 0x179c475a, 0x1644ebdd, + 0x3b1590e0, 0x3acd3c67, 0x38a4c9ee, 0x397c6569, + 0x3c7722fc, 0x3daf8e7b, 0x3fc67bf2, 0x3e1ed775, + 0x35d0f4d8, 0x3408585f, 0x3661add6, 0x37b90151, + 0x32b246c4, 0x336aea43, 0x31031fca, 0x30dbb34d, + 0x269f5890, 0x2747f417, 0x252e019e, 0x24f6ad19, + 0x21fdea8c, 0x2025460b, 0x224cb382, 0x23941f05, + 0x285a3ca8, 0x2982902f, 0x2beb65a6, 0x2a33c921, + 0x2f388eb4, 0x2ee02233, 0x2c89d7ba, 0x2d517b3d, + 0x762b21c0, 0x77f38d47, 0x759a78ce, 0x7442d449, + 0x714993dc, 0x70913f5b, 0x72f8cad2, 0x73206655, + 0x78ee45f8, 0x7936e97f, 0x7b5f1cf6, 0x7a87b071, + 0x7f8cf7e4, 0x7e545b63, 0x7c3daeea, 0x7de5026d, + 0x6ba1e9b0, 0x6a794537, 0x6810b0be, 0x69c81c39, + 0x6cc35bac, 0x6d1bf72b, 0x6f7202a2, 0x6eaaae25, + 0x65648d88, 0x64bc210f, 0x66d5d486, 0x670d7801, + 0x62063f94, 0x63de9313, 0x61b7669a, 0x606fca1d, + 0x4d3eb120, 0x4ce61da7, 0x4e8fe82e, 0x4f5744a9, + 0x4a5c033c, 0x4b84afbb, 0x49ed5a32, 0x4835f6b5, + 0x43fbd518, 0x4223799f, 0x404a8c16, 0x41922091, + 0x44996704, 0x4541cb83, 0x47283e0a, 0x46f0928d, + 0x50b47950, 0x516cd5d7, 0x5305205e, 0x52dd8cd9, + 0x57d6cb4c, 0x560e67cb, 0x54679242, 0x55bf3ec5, + 0x5e711d68, 0x5fa9b1ef, 0x5dc04466, 0x5c18e8e1, + 0x5913af74, 0x58cb03f3, 0x5aa2f67a, 0x5b7a5afd, + 0xec564380, 0xed8eef07, 0xefe71a8e, 0xee3fb609, + 0xeb34f19c, 0xeaec5d1b, 0xe885a892, 0xe95d0415, + 0xe29327b8, 0xe34b8b3f, 0xe1227eb6, 0xe0fad231, + 0xe5f195a4, 0xe4293923, 0xe640ccaa, 0xe798602d, + 0xf1dc8bf0, 0xf0042777, 0xf26dd2fe, 0xf3b57e79, + 0xf6be39ec, 0xf766956b, 0xf50f60e2, 0xf4d7cc65, + 0xff19efc8, 0xfec1434f, 0xfca8b6c6, 0xfd701a41, + 0xf87b5dd4, 0xf9a3f153, 0xfbca04da, 0xfa12a85d, + 0xd743d360, 0xd69b7fe7, 0xd4f28a6e, 0xd52a26e9, + 0xd021617c, 0xd1f9cdfb, 0xd3903872, 0xd24894f5, + 0xd986b758, 0xd85e1bdf, 0xda37ee56, 0xdbef42d1, + 0xdee40544, 0xdf3ca9c3, 0xdd555c4a, 0xdc8df0cd, + 0xcac91b10, 0xcb11b797, 0xc978421e, 0xc8a0ee99, + 0xcdaba90c, 0xcc73058b, 0xce1af002, 0xcfc25c85, + 0xc40c7f28, 0xc5d4d3af, 0xc7bd2626, 0xc6658aa1, + 0xc36ecd34, 0xc2b661b3, 0xc0df943a, 0xc10738bd, + 0x9a7d6240, 0x9ba5cec7, 0x99cc3b4e, 0x981497c9, + 0x9d1fd05c, 0x9cc77cdb, 0x9eae8952, 0x9f7625d5, + 0x94b80678, 0x9560aaff, 0x97095f76, 0x96d1f3f1, + 0x93dab464, 0x920218e3, 0x906bed6a, 0x91b341ed, + 0x87f7aa30, 0x862f06b7, 0x8446f33e, 0x859e5fb9, + 0x8095182c, 0x814db4ab, 0x83244122, 0x82fceda5, + 0x8932ce08, 0x88ea628f, 0x8a839706, 0x8b5b3b81, + 0x8e507c14, 0x8f88d093, 0x8de1251a, 0x8c39899d, + 0xa168f2a0, 0xa0b05e27, 0xa2d9abae, 0xa3010729, + 0xa60a40bc, 0xa7d2ec3b, 0xa5bb19b2, 0xa463b535, + 0xafad9698, 0xae753a1f, 0xac1ccf96, 0xadc46311, + 0xa8cf2484, 0xa9178803, 0xab7e7d8a, 0xaaa6d10d, + 0xbce23ad0, 0xbd3a9657, 0xbf5363de, 0xbe8bcf59, + 0xbb8088cc, 0xba58244b, 0xb831d1c2, 0xb9e97d45, + 0xb2275ee8, 0xb3fff26f, 0xb19607e6, 0xb04eab61, + 0xb545ecf4, 0xb49d4073, 0xb6f4b5fa, 0xb72c197d, + }, + { + 0x00000000, 0xdc6d9ab7, 0xbc1a28d9, 0x6077b26e, + 0x7cf54c05, 0xa098d6b2, 0xc0ef64dc, 0x1c82fe6b, + 0xf9ea980a, 0x258702bd, 0x45f0b0d3, 0x999d2a64, + 0x851fd40f, 0x59724eb8, 0x3905fcd6, 0xe5686661, + 0xf7142da3, 0x2b79b714, 0x4b0e057a, 0x97639fcd, + 0x8be161a6, 0x578cfb11, 0x37fb497f, 0xeb96d3c8, + 0x0efeb5a9, 0xd2932f1e, 0xb2e49d70, 0x6e8907c7, + 0x720bf9ac, 0xae66631b, 0xce11d175, 0x127c4bc2, + 0xeae946f1, 0x3684dc46, 0x56f36e28, 0x8a9ef49f, + 0x961c0af4, 0x4a719043, 0x2a06222d, 0xf66bb89a, + 0x1303defb, 0xcf6e444c, 0xaf19f622, 0x73746c95, + 0x6ff692fe, 0xb39b0849, 0xd3ecba27, 0x0f812090, + 0x1dfd6b52, 0xc190f1e5, 0xa1e7438b, 0x7d8ad93c, + 0x61082757, 0xbd65bde0, 0xdd120f8e, 0x017f9539, + 0xe417f358, 0x387a69ef, 0x580ddb81, 0x84604136, + 0x98e2bf5d, 0x448f25ea, 0x24f89784, 0xf8950d33, + 0xd1139055, 0x0d7e0ae2, 0x6d09b88c, 0xb164223b, + 0xade6dc50, 0x718b46e7, 0x11fcf489, 0xcd916e3e, + 0x28f9085f, 0xf49492e8, 0x94e32086, 0x488eba31, + 0x540c445a, 0x8861deed, 0xe8166c83, 0x347bf634, + 0x2607bdf6, 0xfa6a2741, 0x9a1d952f, 0x46700f98, + 0x5af2f1f3, 0x869f6b44, 0xe6e8d92a, 0x3a85439d, + 0xdfed25fc, 0x0380bf4b, 0x63f70d25, 0xbf9a9792, + 0xa31869f9, 0x7f75f34e, 0x1f024120, 0xc36fdb97, + 0x3bfad6a4, 0xe7974c13, 0x87e0fe7d, 0x5b8d64ca, + 0x470f9aa1, 0x9b620016, 0xfb15b278, 0x277828cf, + 0xc2104eae, 0x1e7dd419, 0x7e0a6677, 0xa267fcc0, + 0xbee502ab, 0x6288981c, 0x02ff2a72, 0xde92b0c5, + 0xcceefb07, 0x108361b0, 0x70f4d3de, 0xac994969, + 0xb01bb702, 0x6c762db5, 0x0c019fdb, 0xd06c056c, + 0x3504630d, 0xe969f9ba, 0x891e4bd4, 0x5573d163, + 0x49f12f08, 0x959cb5bf, 0xf5eb07d1, 0x29869d66, + 0xa6e63d1d, 0x7a8ba7aa, 0x1afc15c4, 0xc6918f73, + 0xda137118, 0x067eebaf, 0x660959c1, 0xba64c376, + 0x5f0ca517, 0x83613fa0, 0xe3168dce, 0x3f7b1779, + 0x23f9e912, 0xff9473a5, 0x9fe3c1cb, 0x438e5b7c, + 0x51f210be, 0x8d9f8a09, 0xede83867, 0x3185a2d0, + 0x2d075cbb, 0xf16ac60c, 0x911d7462, 0x4d70eed5, + 0xa81888b4, 0x74751203, 0x1402a06d, 0xc86f3ada, + 0xd4edc4b1, 0x08805e06, 0x68f7ec68, 0xb49a76df, + 0x4c0f7bec, 0x9062e15b, 0xf0155335, 0x2c78c982, + 0x30fa37e9, 0xec97ad5e, 0x8ce01f30, 0x508d8587, + 0xb5e5e3e6, 0x69887951, 0x09ffcb3f, 0xd5925188, + 0xc910afe3, 0x157d3554, 0x750a873a, 0xa9671d8d, + 0xbb1b564f, 0x6776ccf8, 0x07017e96, 0xdb6ce421, + 0xc7ee1a4a, 0x1b8380fd, 0x7bf43293, 0xa799a824, + 0x42f1ce45, 0x9e9c54f2, 0xfeebe69c, 0x22867c2b, + 0x3e048240, 0xe26918f7, 0x821eaa99, 0x5e73302e, + 0x77f5ad48, 0xab9837ff, 0xcbef8591, 0x17821f26, + 0x0b00e14d, 0xd76d7bfa, 0xb71ac994, 0x6b775323, + 0x8e1f3542, 0x5272aff5, 0x32051d9b, 0xee68872c, + 0xf2ea7947, 0x2e87e3f0, 0x4ef0519e, 0x929dcb29, + 0x80e180eb, 0x5c8c1a5c, 0x3cfba832, 0xe0963285, + 0xfc14ccee, 0x20795659, 0x400ee437, 0x9c637e80, + 0x790b18e1, 0xa5668256, 0xc5113038, 0x197caa8f, + 0x05fe54e4, 0xd993ce53, 0xb9e47c3d, 0x6589e68a, + 0x9d1cebb9, 0x4171710e, 0x2106c360, 0xfd6b59d7, + 0xe1e9a7bc, 0x3d843d0b, 0x5df38f65, 0x819e15d2, + 0x64f673b3, 0xb89be904, 0xd8ec5b6a, 0x0481c1dd, + 0x18033fb6, 0xc46ea501, 0xa419176f, 0x78748dd8, + 0x6a08c61a, 0xb6655cad, 0xd612eec3, 0x0a7f7474, + 0x16fd8a1f, 0xca9010a8, 0xaae7a2c6, 0x768a3871, + 0x93e25e10, 0x4f8fc4a7, 0x2ff876c9, 0xf395ec7e, + 0xef171215, 0x337a88a2, 0x530d3acc, 0x8f60a07b, + }, + { + 0x00000000, 0x490d678d, 0x921acf1a, 0xdb17a897, + 0x20f48383, 0x69f9e40e, 0xb2ee4c99, 0xfbe32b14, + 0x41e90706, 0x08e4608b, 0xd3f3c81c, 0x9afeaf91, + 0x611d8485, 0x2810e308, 0xf3074b9f, 0xba0a2c12, + 0x83d20e0c, 0xcadf6981, 0x11c8c116, 0x58c5a69b, + 0xa3268d8f, 0xea2bea02, 0x313c4295, 0x78312518, + 0xc23b090a, 0x8b366e87, 0x5021c610, 0x192ca19d, + 0xe2cf8a89, 0xabc2ed04, 0x70d54593, 0x39d8221e, + 0x036501af, 0x4a686622, 0x917fceb5, 0xd872a938, + 0x2391822c, 0x6a9ce5a1, 0xb18b4d36, 0xf8862abb, + 0x428c06a9, 0x0b816124, 0xd096c9b3, 0x999bae3e, + 0x6278852a, 0x2b75e2a7, 0xf0624a30, 0xb96f2dbd, + 0x80b70fa3, 0xc9ba682e, 0x12adc0b9, 0x5ba0a734, + 0xa0438c20, 0xe94eebad, 0x3259433a, 0x7b5424b7, + 0xc15e08a5, 0x88536f28, 0x5344c7bf, 0x1a49a032, + 0xe1aa8b26, 0xa8a7ecab, 0x73b0443c, 0x3abd23b1, + 0x06ca035e, 0x4fc764d3, 0x94d0cc44, 0xddddabc9, + 0x263e80dd, 0x6f33e750, 0xb4244fc7, 0xfd29284a, + 0x47230458, 0x0e2e63d5, 0xd539cb42, 0x9c34accf, + 0x67d787db, 0x2edae056, 0xf5cd48c1, 0xbcc02f4c, + 0x85180d52, 0xcc156adf, 0x1702c248, 0x5e0fa5c5, + 0xa5ec8ed1, 0xece1e95c, 0x37f641cb, 0x7efb2646, + 0xc4f10a54, 0x8dfc6dd9, 0x56ebc54e, 0x1fe6a2c3, + 0xe40589d7, 0xad08ee5a, 0x761f46cd, 0x3f122140, + 0x05af02f1, 0x4ca2657c, 0x97b5cdeb, 0xdeb8aa66, + 0x255b8172, 0x6c56e6ff, 0xb7414e68, 0xfe4c29e5, + 0x444605f7, 0x0d4b627a, 0xd65ccaed, 0x9f51ad60, + 0x64b28674, 0x2dbfe1f9, 0xf6a8496e, 0xbfa52ee3, + 0x867d0cfd, 0xcf706b70, 0x1467c3e7, 0x5d6aa46a, + 0xa6898f7e, 0xef84e8f3, 0x34934064, 0x7d9e27e9, + 0xc7940bfb, 0x8e996c76, 0x558ec4e1, 0x1c83a36c, + 0xe7608878, 0xae6deff5, 0x757a4762, 0x3c7720ef, + 0x0d9406bc, 0x44996131, 0x9f8ec9a6, 0xd683ae2b, + 0x2d60853f, 0x646de2b2, 0xbf7a4a25, 0xf6772da8, + 0x4c7d01ba, 0x05706637, 0xde67cea0, 0x976aa92d, + 0x6c898239, 0x2584e5b4, 0xfe934d23, 0xb79e2aae, + 0x8e4608b0, 0xc74b6f3d, 0x1c5cc7aa, 0x5551a027, + 0xaeb28b33, 0xe7bfecbe, 0x3ca84429, 0x75a523a4, + 0xcfaf0fb6, 0x86a2683b, 0x5db5c0ac, 0x14b8a721, + 0xef5b8c35, 0xa656ebb8, 0x7d41432f, 0x344c24a2, + 0x0ef10713, 0x47fc609e, 0x9cebc809, 0xd5e6af84, + 0x2e058490, 0x6708e31d, 0xbc1f4b8a, 0xf5122c07, + 0x4f180015, 0x06156798, 0xdd02cf0f, 0x940fa882, + 0x6fec8396, 0x26e1e41b, 0xfdf64c8c, 0xb4fb2b01, + 0x8d23091f, 0xc42e6e92, 0x1f39c605, 0x5634a188, + 0xadd78a9c, 0xe4daed11, 0x3fcd4586, 0x76c0220b, + 0xccca0e19, 0x85c76994, 0x5ed0c103, 0x17dda68e, + 0xec3e8d9a, 0xa533ea17, 0x7e244280, 0x3729250d, + 0x0b5e05e2, 0x4253626f, 0x9944caf8, 0xd049ad75, + 0x2baa8661, 0x62a7e1ec, 0xb9b0497b, 0xf0bd2ef6, + 0x4ab702e4, 0x03ba6569, 0xd8adcdfe, 0x91a0aa73, + 0x6a438167, 0x234ee6ea, 0xf8594e7d, 0xb15429f0, + 0x888c0bee, 0xc1816c63, 0x1a96c4f4, 0x539ba379, + 0xa878886d, 0xe175efe0, 0x3a624777, 0x736f20fa, + 0xc9650ce8, 0x80686b65, 0x5b7fc3f2, 0x1272a47f, + 0xe9918f6b, 0xa09ce8e6, 0x7b8b4071, 0x328627fc, + 0x083b044d, 0x413663c0, 0x9a21cb57, 0xd32cacda, + 0x28cf87ce, 0x61c2e043, 0xbad548d4, 0xf3d82f59, + 0x49d2034b, 0x00df64c6, 0xdbc8cc51, 0x92c5abdc, + 0x692680c8, 0x202be745, 0xfb3c4fd2, 0xb231285f, + 0x8be90a41, 0xc2e46dcc, 0x19f3c55b, 0x50fea2d6, + 0xab1d89c2, 0xe210ee4f, 0x390746d8, 0x700a2155, + 0xca000d47, 0x830d6aca, 0x581ac25d, 0x1117a5d0, + 0xeaf48ec4, 0xa3f9e949, 0x78ee41de, 0x31e32653, + }, + { + 0x00000000, 0x1b280d78, 0x36501af0, 0x2d781788, + 0x6ca035e0, 0x77883898, 0x5af02f10, 0x41d82268, + 0xd9406bc0, 0xc26866b8, 0xef107130, 0xf4387c48, + 0xb5e05e20, 0xaec85358, 0x83b044d0, 0x989849a8, + 0xb641ca37, 0xad69c74f, 0x8011d0c7, 0x9b39ddbf, + 0xdae1ffd7, 0xc1c9f2af, 0xecb1e527, 0xf799e85f, + 0x6f01a1f7, 0x7429ac8f, 0x5951bb07, 0x4279b67f, + 0x03a19417, 0x1889996f, 0x35f18ee7, 0x2ed9839f, + 0x684289d9, 0x736a84a1, 0x5e129329, 0x453a9e51, + 0x04e2bc39, 0x1fcab141, 0x32b2a6c9, 0x299aabb1, + 0xb102e219, 0xaa2aef61, 0x8752f8e9, 0x9c7af591, + 0xdda2d7f9, 0xc68ada81, 0xebf2cd09, 0xf0dac071, + 0xde0343ee, 0xc52b4e96, 0xe853591e, 0xf37b5466, + 0xb2a3760e, 0xa98b7b76, 0x84f36cfe, 0x9fdb6186, + 0x0743282e, 0x1c6b2556, 0x311332de, 0x2a3b3fa6, + 0x6be31dce, 0x70cb10b6, 0x5db3073e, 0x469b0a46, + 0xd08513b2, 0xcbad1eca, 0xe6d50942, 0xfdfd043a, + 0xbc252652, 0xa70d2b2a, 0x8a753ca2, 0x915d31da, + 0x09c57872, 0x12ed750a, 0x3f956282, 0x24bd6ffa, + 0x65654d92, 0x7e4d40ea, 0x53355762, 0x481d5a1a, + 0x66c4d985, 0x7decd4fd, 0x5094c375, 0x4bbcce0d, + 0x0a64ec65, 0x114ce11d, 0x3c34f695, 0x271cfbed, + 0xbf84b245, 0xa4acbf3d, 0x89d4a8b5, 0x92fca5cd, + 0xd32487a5, 0xc80c8add, 0xe5749d55, 0xfe5c902d, + 0xb8c79a6b, 0xa3ef9713, 0x8e97809b, 0x95bf8de3, + 0xd467af8b, 0xcf4fa2f3, 0xe237b57b, 0xf91fb803, + 0x6187f1ab, 0x7aaffcd3, 0x57d7eb5b, 0x4cffe623, + 0x0d27c44b, 0x160fc933, 0x3b77debb, 0x205fd3c3, + 0x0e86505c, 0x15ae5d24, 0x38d64aac, 0x23fe47d4, + 0x622665bc, 0x790e68c4, 0x54767f4c, 0x4f5e7234, + 0xd7c63b9c, 0xccee36e4, 0xe196216c, 0xfabe2c14, + 0xbb660e7c, 0xa04e0304, 0x8d36148c, 0x961e19f4, + 0xa5cb3ad3, 0xbee337ab, 0x939b2023, 0x88b32d5b, + 0xc96b0f33, 0xd243024b, 0xff3b15c3, 0xe41318bb, + 0x7c8b5113, 0x67a35c6b, 0x4adb4be3, 0x51f3469b, + 0x102b64f3, 0x0b03698b, 0x267b7e03, 0x3d53737b, + 0x138af0e4, 0x08a2fd9c, 0x25daea14, 0x3ef2e76c, + 0x7f2ac504, 0x6402c87c, 0x497adff4, 0x5252d28c, + 0xcaca9b24, 0xd1e2965c, 0xfc9a81d4, 0xe7b28cac, + 0xa66aaec4, 0xbd42a3bc, 0x903ab434, 0x8b12b94c, + 0xcd89b30a, 0xd6a1be72, 0xfbd9a9fa, 0xe0f1a482, + 0xa12986ea, 0xba018b92, 0x97799c1a, 0x8c519162, + 0x14c9d8ca, 0x0fe1d5b2, 0x2299c23a, 0x39b1cf42, + 0x7869ed2a, 0x6341e052, 0x4e39f7da, 0x5511faa2, + 0x7bc8793d, 0x60e07445, 0x4d9863cd, 0x56b06eb5, + 0x17684cdd, 0x0c4041a5, 0x2138562d, 0x3a105b55, + 0xa28812fd, 0xb9a01f85, 0x94d8080d, 0x8ff00575, + 0xce28271d, 0xd5002a65, 0xf8783ded, 0xe3503095, + 0x754e2961, 0x6e662419, 0x431e3391, 0x58363ee9, + 0x19ee1c81, 0x02c611f9, 0x2fbe0671, 0x34960b09, + 0xac0e42a1, 0xb7264fd9, 0x9a5e5851, 0x81765529, + 0xc0ae7741, 0xdb867a39, 0xf6fe6db1, 0xedd660c9, + 0xc30fe356, 0xd827ee2e, 0xf55ff9a6, 0xee77f4de, + 0xafafd6b6, 0xb487dbce, 0x99ffcc46, 0x82d7c13e, + 0x1a4f8896, 0x016785ee, 0x2c1f9266, 0x37379f1e, + 0x76efbd76, 0x6dc7b00e, 0x40bfa786, 0x5b97aafe, + 0x1d0ca0b8, 0x0624adc0, 0x2b5cba48, 0x3074b730, + 0x71ac9558, 0x6a849820, 0x47fc8fa8, 0x5cd482d0, + 0xc44ccb78, 0xdf64c600, 0xf21cd188, 0xe934dcf0, + 0xa8ecfe98, 0xb3c4f3e0, 0x9ebce468, 0x8594e910, + 0xab4d6a8f, 0xb06567f7, 0x9d1d707f, 0x86357d07, + 0xc7ed5f6f, 0xdcc55217, 0xf1bd459f, 0xea9548e7, + 0x720d014f, 0x69250c37, 0x445d1bbf, 0x5f7516c7, + 0x1ead34af, 0x058539d7, 0x28fd2e5f, 0x33d52327, + }, + { + 0x00000000, 0x4f576811, 0x9eaed022, 0xd1f9b833, + 0x399cbdf3, 0x76cbd5e2, 0xa7326dd1, 0xe86505c0, + 0x73397be6, 0x3c6e13f7, 0xed97abc4, 0xa2c0c3d5, + 0x4aa5c615, 0x05f2ae04, 0xd40b1637, 0x9b5c7e26, + 0xe672f7cc, 0xa9259fdd, 0x78dc27ee, 0x378b4fff, + 0xdfee4a3f, 0x90b9222e, 0x41409a1d, 0x0e17f20c, + 0x954b8c2a, 0xda1ce43b, 0x0be55c08, 0x44b23419, + 0xacd731d9, 0xe38059c8, 0x3279e1fb, 0x7d2e89ea, + 0xc824f22f, 0x87739a3e, 0x568a220d, 0x19dd4a1c, + 0xf1b84fdc, 0xbeef27cd, 0x6f169ffe, 0x2041f7ef, + 0xbb1d89c9, 0xf44ae1d8, 0x25b359eb, 0x6ae431fa, + 0x8281343a, 0xcdd65c2b, 0x1c2fe418, 0x53788c09, + 0x2e5605e3, 0x61016df2, 0xb0f8d5c1, 0xffafbdd0, + 0x17cab810, 0x589dd001, 0x89646832, 0xc6330023, + 0x5d6f7e05, 0x12381614, 0xc3c1ae27, 0x8c96c636, + 0x64f3c3f6, 0x2ba4abe7, 0xfa5d13d4, 0xb50a7bc5, + 0x9488f9e9, 0xdbdf91f8, 0x0a2629cb, 0x457141da, + 0xad14441a, 0xe2432c0b, 0x33ba9438, 0x7cedfc29, + 0xe7b1820f, 0xa8e6ea1e, 0x791f522d, 0x36483a3c, + 0xde2d3ffc, 0x917a57ed, 0x4083efde, 0x0fd487cf, + 0x72fa0e25, 0x3dad6634, 0xec54de07, 0xa303b616, + 0x4b66b3d6, 0x0431dbc7, 0xd5c863f4, 0x9a9f0be5, + 0x01c375c3, 0x4e941dd2, 0x9f6da5e1, 0xd03acdf0, + 0x385fc830, 0x7708a021, 0xa6f11812, 0xe9a67003, + 0x5cac0bc6, 0x13fb63d7, 0xc202dbe4, 0x8d55b3f5, + 0x6530b635, 0x2a67de24, 0xfb9e6617, 0xb4c90e06, + 0x2f957020, 0x60c21831, 0xb13ba002, 0xfe6cc813, + 0x1609cdd3, 0x595ea5c2, 0x88a71df1, 0xc7f075e0, + 0xbadefc0a, 0xf589941b, 0x24702c28, 0x6b274439, + 0x834241f9, 0xcc1529e8, 0x1dec91db, 0x52bbf9ca, + 0xc9e787ec, 0x86b0effd, 0x574957ce, 0x181e3fdf, + 0xf07b3a1f, 0xbf2c520e, 0x6ed5ea3d, 0x2182822c, + 0x2dd0ee65, 0x62878674, 0xb37e3e47, 0xfc295656, + 0x144c5396, 0x5b1b3b87, 0x8ae283b4, 0xc5b5eba5, + 0x5ee99583, 0x11befd92, 0xc04745a1, 0x8f102db0, + 0x67752870, 0x28224061, 0xf9dbf852, 0xb68c9043, + 0xcba219a9, 0x84f571b8, 0x550cc98b, 0x1a5ba19a, + 0xf23ea45a, 0xbd69cc4b, 0x6c907478, 0x23c71c69, + 0xb89b624f, 0xf7cc0a5e, 0x2635b26d, 0x6962da7c, + 0x8107dfbc, 0xce50b7ad, 0x1fa90f9e, 0x50fe678f, + 0xe5f41c4a, 0xaaa3745b, 0x7b5acc68, 0x340da479, + 0xdc68a1b9, 0x933fc9a8, 0x42c6719b, 0x0d91198a, + 0x96cd67ac, 0xd99a0fbd, 0x0863b78e, 0x4734df9f, + 0xaf51da5f, 0xe006b24e, 0x31ff0a7d, 0x7ea8626c, + 0x0386eb86, 0x4cd18397, 0x9d283ba4, 0xd27f53b5, + 0x3a1a5675, 0x754d3e64, 0xa4b48657, 0xebe3ee46, + 0x70bf9060, 0x3fe8f871, 0xee114042, 0xa1462853, + 0x49232d93, 0x06744582, 0xd78dfdb1, 0x98da95a0, + 0xb958178c, 0xf60f7f9d, 0x27f6c7ae, 0x68a1afbf, + 0x80c4aa7f, 0xcf93c26e, 0x1e6a7a5d, 0x513d124c, + 0xca616c6a, 0x8536047b, 0x54cfbc48, 0x1b98d459, + 0xf3fdd199, 0xbcaab988, 0x6d5301bb, 0x220469aa, + 0x5f2ae040, 0x107d8851, 0xc1843062, 0x8ed35873, + 0x66b65db3, 0x29e135a2, 0xf8188d91, 0xb74fe580, + 0x2c139ba6, 0x6344f3b7, 0xb2bd4b84, 0xfdea2395, + 0x158f2655, 0x5ad84e44, 0x8b21f677, 0xc4769e66, + 0x717ce5a3, 0x3e2b8db2, 0xefd23581, 0xa0855d90, + 0x48e05850, 0x07b73041, 0xd64e8872, 0x9919e063, + 0x02459e45, 0x4d12f654, 0x9ceb4e67, 0xd3bc2676, + 0x3bd923b6, 0x748e4ba7, 0xa577f394, 0xea209b85, + 0x970e126f, 0xd8597a7e, 0x09a0c24d, 0x46f7aa5c, + 0xae92af9c, 0xe1c5c78d, 0x303c7fbe, 0x7f6b17af, + 0xe4376989, 0xab600198, 0x7a99b9ab, 0x35ced1ba, + 0xddabd47a, 0x92fcbc6b, 0x43050458, 0x0c526c49, + }, + { + 0x00000000, 0x5ba1dcca, 0xb743b994, 0xece2655e, + 0x6a466e9f, 0x31e7b255, 0xdd05d70b, 0x86a40bc1, + 0xd48cdd3e, 0x8f2d01f4, 0x63cf64aa, 0x386eb860, + 0xbecab3a1, 0xe56b6f6b, 0x09890a35, 0x5228d6ff, + 0xadd8a7cb, 0xf6797b01, 0x1a9b1e5f, 0x413ac295, + 0xc79ec954, 0x9c3f159e, 0x70dd70c0, 0x2b7cac0a, + 0x79547af5, 0x22f5a63f, 0xce17c361, 0x95b61fab, + 0x1312146a, 0x48b3c8a0, 0xa451adfe, 0xfff07134, + 0x5f705221, 0x04d18eeb, 0xe833ebb5, 0xb392377f, + 0x35363cbe, 0x6e97e074, 0x8275852a, 0xd9d459e0, + 0x8bfc8f1f, 0xd05d53d5, 0x3cbf368b, 0x671eea41, + 0xe1bae180, 0xba1b3d4a, 0x56f95814, 0x0d5884de, + 0xf2a8f5ea, 0xa9092920, 0x45eb4c7e, 0x1e4a90b4, + 0x98ee9b75, 0xc34f47bf, 0x2fad22e1, 0x740cfe2b, + 0x262428d4, 0x7d85f41e, 0x91679140, 0xcac64d8a, + 0x4c62464b, 0x17c39a81, 0xfb21ffdf, 0xa0802315, + 0xbee0a442, 0xe5417888, 0x09a31dd6, 0x5202c11c, + 0xd4a6cadd, 0x8f071617, 0x63e57349, 0x3844af83, + 0x6a6c797c, 0x31cda5b6, 0xdd2fc0e8, 0x868e1c22, + 0x002a17e3, 0x5b8bcb29, 0xb769ae77, 0xecc872bd, + 0x13380389, 0x4899df43, 0xa47bba1d, 0xffda66d7, + 0x797e6d16, 0x22dfb1dc, 0xce3dd482, 0x959c0848, + 0xc7b4deb7, 0x9c15027d, 0x70f76723, 0x2b56bbe9, + 0xadf2b028, 0xf6536ce2, 0x1ab109bc, 0x4110d576, + 0xe190f663, 0xba312aa9, 0x56d34ff7, 0x0d72933d, + 0x8bd698fc, 0xd0774436, 0x3c952168, 0x6734fda2, + 0x351c2b5d, 0x6ebdf797, 0x825f92c9, 0xd9fe4e03, + 0x5f5a45c2, 0x04fb9908, 0xe819fc56, 0xb3b8209c, + 0x4c4851a8, 0x17e98d62, 0xfb0be83c, 0xa0aa34f6, + 0x260e3f37, 0x7dafe3fd, 0x914d86a3, 0xcaec5a69, + 0x98c48c96, 0xc365505c, 0x2f873502, 0x7426e9c8, + 0xf282e209, 0xa9233ec3, 0x45c15b9d, 0x1e608757, + 0x79005533, 0x22a189f9, 0xce43eca7, 0x95e2306d, + 0x13463bac, 0x48e7e766, 0xa4058238, 0xffa45ef2, + 0xad8c880d, 0xf62d54c7, 0x1acf3199, 0x416eed53, + 0xc7cae692, 0x9c6b3a58, 0x70895f06, 0x2b2883cc, + 0xd4d8f2f8, 0x8f792e32, 0x639b4b6c, 0x383a97a6, + 0xbe9e9c67, 0xe53f40ad, 0x09dd25f3, 0x527cf939, + 0x00542fc6, 0x5bf5f30c, 0xb7179652, 0xecb64a98, + 0x6a124159, 0x31b39d93, 0xdd51f8cd, 0x86f02407, + 0x26700712, 0x7dd1dbd8, 0x9133be86, 0xca92624c, + 0x4c36698d, 0x1797b547, 0xfb75d019, 0xa0d40cd3, + 0xf2fcda2c, 0xa95d06e6, 0x45bf63b8, 0x1e1ebf72, + 0x98bab4b3, 0xc31b6879, 0x2ff90d27, 0x7458d1ed, + 0x8ba8a0d9, 0xd0097c13, 0x3ceb194d, 0x674ac587, + 0xe1eece46, 0xba4f128c, 0x56ad77d2, 0x0d0cab18, + 0x5f247de7, 0x0485a12d, 0xe867c473, 0xb3c618b9, + 0x35621378, 0x6ec3cfb2, 0x8221aaec, 0xd9807626, + 0xc7e0f171, 0x9c412dbb, 0x70a348e5, 0x2b02942f, + 0xada69fee, 0xf6074324, 0x1ae5267a, 0x4144fab0, + 0x136c2c4f, 0x48cdf085, 0xa42f95db, 0xff8e4911, + 0x792a42d0, 0x228b9e1a, 0xce69fb44, 0x95c8278e, + 0x6a3856ba, 0x31998a70, 0xdd7bef2e, 0x86da33e4, + 0x007e3825, 0x5bdfe4ef, 0xb73d81b1, 0xec9c5d7b, + 0xbeb48b84, 0xe515574e, 0x09f73210, 0x5256eeda, + 0xd4f2e51b, 0x8f5339d1, 0x63b15c8f, 0x38108045, + 0x9890a350, 0xc3317f9a, 0x2fd31ac4, 0x7472c60e, + 0xf2d6cdcf, 0xa9771105, 0x4595745b, 0x1e34a891, + 0x4c1c7e6e, 0x17bda2a4, 0xfb5fc7fa, 0xa0fe1b30, + 0x265a10f1, 0x7dfbcc3b, 0x9119a965, 0xcab875af, + 0x3548049b, 0x6ee9d851, 0x820bbd0f, 0xd9aa61c5, + 0x5f0e6a04, 0x04afb6ce, 0xe84dd390, 0xb3ec0f5a, + 0xe1c4d9a5, 0xba65056f, 0x56876031, 0x0d26bcfb, + 0x8b82b73a, 0xd0236bf0, 0x3cc10eae, 0x6760d264, + }, + { + 0x00000000, 0xf200aa66, 0xe0c0497b, 0x12c0e31d, + 0xc5418f41, 0x37412527, 0x2581c63a, 0xd7816c5c, + 0x8e420335, 0x7c42a953, 0x6e824a4e, 0x9c82e028, + 0x4b038c74, 0xb9032612, 0xabc3c50f, 0x59c36f69, + 0x18451bdd, 0xea45b1bb, 0xf88552a6, 0x0a85f8c0, + 0xdd04949c, 0x2f043efa, 0x3dc4dde7, 0xcfc47781, + 0x960718e8, 0x6407b28e, 0x76c75193, 0x84c7fbf5, + 0x534697a9, 0xa1463dcf, 0xb386ded2, 0x418674b4, + 0x308a37ba, 0xc28a9ddc, 0xd04a7ec1, 0x224ad4a7, + 0xf5cbb8fb, 0x07cb129d, 0x150bf180, 0xe70b5be6, + 0xbec8348f, 0x4cc89ee9, 0x5e087df4, 0xac08d792, + 0x7b89bbce, 0x898911a8, 0x9b49f2b5, 0x694958d3, + 0x28cf2c67, 0xdacf8601, 0xc80f651c, 0x3a0fcf7a, + 0xed8ea326, 0x1f8e0940, 0x0d4eea5d, 0xff4e403b, + 0xa68d2f52, 0x548d8534, 0x464d6629, 0xb44dcc4f, + 0x63cca013, 0x91cc0a75, 0x830ce968, 0x710c430e, + 0x61146f74, 0x9314c512, 0x81d4260f, 0x73d48c69, + 0xa455e035, 0x56554a53, 0x4495a94e, 0xb6950328, + 0xef566c41, 0x1d56c627, 0x0f96253a, 0xfd968f5c, + 0x2a17e300, 0xd8174966, 0xcad7aa7b, 0x38d7001d, + 0x795174a9, 0x8b51decf, 0x99913dd2, 0x6b9197b4, + 0xbc10fbe8, 0x4e10518e, 0x5cd0b293, 0xaed018f5, + 0xf713779c, 0x0513ddfa, 0x17d33ee7, 0xe5d39481, + 0x3252f8dd, 0xc05252bb, 0xd292b1a6, 0x20921bc0, + 0x519e58ce, 0xa39ef2a8, 0xb15e11b5, 0x435ebbd3, + 0x94dfd78f, 0x66df7de9, 0x741f9ef4, 0x861f3492, + 0xdfdc5bfb, 0x2ddcf19d, 0x3f1c1280, 0xcd1cb8e6, + 0x1a9dd4ba, 0xe89d7edc, 0xfa5d9dc1, 0x085d37a7, + 0x49db4313, 0xbbdbe975, 0xa91b0a68, 0x5b1ba00e, + 0x8c9acc52, 0x7e9a6634, 0x6c5a8529, 0x9e5a2f4f, + 0xc7994026, 0x3599ea40, 0x2759095d, 0xd559a33b, + 0x02d8cf67, 0xf0d86501, 0xe218861c, 0x10182c7a, + 0xc228dee8, 0x3028748e, 0x22e89793, 0xd0e83df5, + 0x076951a9, 0xf569fbcf, 0xe7a918d2, 0x15a9b2b4, + 0x4c6adddd, 0xbe6a77bb, 0xacaa94a6, 0x5eaa3ec0, + 0x892b529c, 0x7b2bf8fa, 0x69eb1be7, 0x9bebb181, + 0xda6dc535, 0x286d6f53, 0x3aad8c4e, 0xc8ad2628, + 0x1f2c4a74, 0xed2ce012, 0xffec030f, 0x0deca969, + 0x542fc600, 0xa62f6c66, 0xb4ef8f7b, 0x46ef251d, + 0x916e4941, 0x636ee327, 0x71ae003a, 0x83aeaa5c, + 0xf2a2e952, 0x00a24334, 0x1262a029, 0xe0620a4f, + 0x37e36613, 0xc5e3cc75, 0xd7232f68, 0x2523850e, + 0x7ce0ea67, 0x8ee04001, 0x9c20a31c, 0x6e20097a, + 0xb9a16526, 0x4ba1cf40, 0x59612c5d, 0xab61863b, + 0xeae7f28f, 0x18e758e9, 0x0a27bbf4, 0xf8271192, + 0x2fa67dce, 0xdda6d7a8, 0xcf6634b5, 0x3d669ed3, + 0x64a5f1ba, 0x96a55bdc, 0x8465b8c1, 0x766512a7, + 0xa1e47efb, 0x53e4d49d, 0x41243780, 0xb3249de6, + 0xa33cb19c, 0x513c1bfa, 0x43fcf8e7, 0xb1fc5281, + 0x667d3edd, 0x947d94bb, 0x86bd77a6, 0x74bdddc0, + 0x2d7eb2a9, 0xdf7e18cf, 0xcdbefbd2, 0x3fbe51b4, + 0xe83f3de8, 0x1a3f978e, 0x08ff7493, 0xfaffdef5, + 0xbb79aa41, 0x49790027, 0x5bb9e33a, 0xa9b9495c, + 0x7e382500, 0x8c388f66, 0x9ef86c7b, 0x6cf8c61d, + 0x353ba974, 0xc73b0312, 0xd5fbe00f, 0x27fb4a69, + 0xf07a2635, 0x027a8c53, 0x10ba6f4e, 0xe2bac528, + 0x93b68626, 0x61b62c40, 0x7376cf5d, 0x8176653b, + 0x56f70967, 0xa4f7a301, 0xb637401c, 0x4437ea7a, + 0x1df48513, 0xeff42f75, 0xfd34cc68, 0x0f34660e, + 0xd8b50a52, 0x2ab5a034, 0x38754329, 0xca75e94f, + 0x8bf39dfb, 0x79f3379d, 0x6b33d480, 0x99337ee6, + 0x4eb212ba, 0xbcb2b8dc, 0xae725bc1, 0x5c72f1a7, + 0x05b19ece, 0xf7b134a8, 0xe571d7b5, 0x17717dd3, + 0xc0f0118f, 0x32f0bbe9, 0x203058f4, 0xd230f292, + }, + { + 0x00000000, 0x8090a067, 0x05e05d79, 0x8570fd1e, + 0x0bc0baf2, 0x8b501a95, 0x0e20e78b, 0x8eb047ec, + 0x178175e4, 0x9711d583, 0x1261289d, 0x92f188fa, + 0x1c41cf16, 0x9cd16f71, 0x19a1926f, 0x99313208, + 0x2f02ebc8, 0xaf924baf, 0x2ae2b6b1, 0xaa7216d6, + 0x24c2513a, 0xa452f15d, 0x21220c43, 0xa1b2ac24, + 0x38839e2c, 0xb8133e4b, 0x3d63c355, 0xbdf36332, + 0x334324de, 0xb3d384b9, 0x36a379a7, 0xb633d9c0, + 0x5e05d790, 0xde9577f7, 0x5be58ae9, 0xdb752a8e, + 0x55c56d62, 0xd555cd05, 0x5025301b, 0xd0b5907c, + 0x4984a274, 0xc9140213, 0x4c64ff0d, 0xccf45f6a, + 0x42441886, 0xc2d4b8e1, 0x47a445ff, 0xc734e598, + 0x71073c58, 0xf1979c3f, 0x74e76121, 0xf477c146, + 0x7ac786aa, 0xfa5726cd, 0x7f27dbd3, 0xffb77bb4, + 0x668649bc, 0xe616e9db, 0x636614c5, 0xe3f6b4a2, + 0x6d46f34e, 0xedd65329, 0x68a6ae37, 0xe8360e50, + 0xbc0baf20, 0x3c9b0f47, 0xb9ebf259, 0x397b523e, + 0xb7cb15d2, 0x375bb5b5, 0xb22b48ab, 0x32bbe8cc, + 0xab8adac4, 0x2b1a7aa3, 0xae6a87bd, 0x2efa27da, + 0xa04a6036, 0x20dac051, 0xa5aa3d4f, 0x253a9d28, + 0x930944e8, 0x1399e48f, 0x96e91991, 0x1679b9f6, + 0x98c9fe1a, 0x18595e7d, 0x9d29a363, 0x1db90304, + 0x8488310c, 0x0418916b, 0x81686c75, 0x01f8cc12, + 0x8f488bfe, 0x0fd82b99, 0x8aa8d687, 0x0a3876e0, + 0xe20e78b0, 0x629ed8d7, 0xe7ee25c9, 0x677e85ae, + 0xe9cec242, 0x695e6225, 0xec2e9f3b, 0x6cbe3f5c, + 0xf58f0d54, 0x751fad33, 0xf06f502d, 0x70fff04a, + 0xfe4fb7a6, 0x7edf17c1, 0xfbafeadf, 0x7b3f4ab8, + 0xcd0c9378, 0x4d9c331f, 0xc8ecce01, 0x487c6e66, + 0xc6cc298a, 0x465c89ed, 0xc32c74f3, 0x43bcd494, + 0xda8de69c, 0x5a1d46fb, 0xdf6dbbe5, 0x5ffd1b82, + 0xd14d5c6e, 0x51ddfc09, 0xd4ad0117, 0x543da170, + 0x7cd643f7, 0xfc46e390, 0x79361e8e, 0xf9a6bee9, + 0x7716f905, 0xf7865962, 0x72f6a47c, 0xf266041b, + 0x6b573613, 0xebc79674, 0x6eb76b6a, 0xee27cb0d, + 0x60978ce1, 0xe0072c86, 0x6577d198, 0xe5e771ff, + 0x53d4a83f, 0xd3440858, 0x5634f546, 0xd6a45521, + 0x581412cd, 0xd884b2aa, 0x5df44fb4, 0xdd64efd3, + 0x4455dddb, 0xc4c57dbc, 0x41b580a2, 0xc12520c5, + 0x4f956729, 0xcf05c74e, 0x4a753a50, 0xcae59a37, + 0x22d39467, 0xa2433400, 0x2733c91e, 0xa7a36979, + 0x29132e95, 0xa9838ef2, 0x2cf373ec, 0xac63d38b, + 0x3552e183, 0xb5c241e4, 0x30b2bcfa, 0xb0221c9d, + 0x3e925b71, 0xbe02fb16, 0x3b720608, 0xbbe2a66f, + 0x0dd17faf, 0x8d41dfc8, 0x083122d6, 0x88a182b1, + 0x0611c55d, 0x8681653a, 0x03f19824, 0x83613843, + 0x1a500a4b, 0x9ac0aa2c, 0x1fb05732, 0x9f20f755, + 0x1190b0b9, 0x910010de, 0x1470edc0, 0x94e04da7, + 0xc0ddecd7, 0x404d4cb0, 0xc53db1ae, 0x45ad11c9, + 0xcb1d5625, 0x4b8df642, 0xcefd0b5c, 0x4e6dab3b, + 0xd75c9933, 0x57cc3954, 0xd2bcc44a, 0x522c642d, + 0xdc9c23c1, 0x5c0c83a6, 0xd97c7eb8, 0x59ecdedf, + 0xefdf071f, 0x6f4fa778, 0xea3f5a66, 0x6aaffa01, + 0xe41fbded, 0x648f1d8a, 0xe1ffe094, 0x616f40f3, + 0xf85e72fb, 0x78ced29c, 0xfdbe2f82, 0x7d2e8fe5, + 0xf39ec809, 0x730e686e, 0xf67e9570, 0x76ee3517, + 0x9ed83b47, 0x1e489b20, 0x9b38663e, 0x1ba8c659, + 0x951881b5, 0x158821d2, 0x90f8dccc, 0x10687cab, + 0x89594ea3, 0x09c9eec4, 0x8cb913da, 0x0c29b3bd, + 0x8299f451, 0x02095436, 0x8779a928, 0x07e9094f, + 0xb1dad08f, 0x314a70e8, 0xb43a8df6, 0x34aa2d91, + 0xba1a6a7d, 0x3a8aca1a, 0xbffa3704, 0x3f6a9763, + 0xa65ba56b, 0x26cb050c, 0xa3bbf812, 0x232b5875, + 0xad9b1f99, 0x2d0bbffe, 0xa87b42e0, 0x28ebe287, + }, + { + 0x00000000, 0xf9ac87ee, 0xf798126b, 0x0e349585, + 0xebf13961, 0x125dbe8f, 0x1c692b0a, 0xe5c5ace4, + 0xd3236f75, 0x2a8fe89b, 0x24bb7d1e, 0xdd17faf0, + 0x38d25614, 0xc17ed1fa, 0xcf4a447f, 0x36e6c391, + 0xa287c35d, 0x5b2b44b3, 0x551fd136, 0xacb356d8, + 0x4976fa3c, 0xb0da7dd2, 0xbeeee857, 0x47426fb9, + 0x71a4ac28, 0x88082bc6, 0x863cbe43, 0x7f9039ad, + 0x9a559549, 0x63f912a7, 0x6dcd8722, 0x946100cc, + 0x41ce9b0d, 0xb8621ce3, 0xb6568966, 0x4ffa0e88, + 0xaa3fa26c, 0x53932582, 0x5da7b007, 0xa40b37e9, + 0x92edf478, 0x6b417396, 0x6575e613, 0x9cd961fd, + 0x791ccd19, 0x80b04af7, 0x8e84df72, 0x7728589c, + 0xe3495850, 0x1ae5dfbe, 0x14d14a3b, 0xed7dcdd5, + 0x08b86131, 0xf114e6df, 0xff20735a, 0x068cf4b4, + 0x306a3725, 0xc9c6b0cb, 0xc7f2254e, 0x3e5ea2a0, + 0xdb9b0e44, 0x223789aa, 0x2c031c2f, 0xd5af9bc1, + 0x839d361a, 0x7a31b1f4, 0x74052471, 0x8da9a39f, + 0x686c0f7b, 0x91c08895, 0x9ff41d10, 0x66589afe, + 0x50be596f, 0xa912de81, 0xa7264b04, 0x5e8accea, + 0xbb4f600e, 0x42e3e7e0, 0x4cd77265, 0xb57bf58b, + 0x211af547, 0xd8b672a9, 0xd682e72c, 0x2f2e60c2, + 0xcaebcc26, 0x33474bc8, 0x3d73de4d, 0xc4df59a3, + 0xf2399a32, 0x0b951ddc, 0x05a18859, 0xfc0d0fb7, + 0x19c8a353, 0xe06424bd, 0xee50b138, 0x17fc36d6, + 0xc253ad17, 0x3bff2af9, 0x35cbbf7c, 0xcc673892, + 0x29a29476, 0xd00e1398, 0xde3a861d, 0x279601f3, + 0x1170c262, 0xe8dc458c, 0xe6e8d009, 0x1f4457e7, + 0xfa81fb03, 0x032d7ced, 0x0d19e968, 0xf4b56e86, + 0x60d46e4a, 0x9978e9a4, 0x974c7c21, 0x6ee0fbcf, + 0x8b25572b, 0x7289d0c5, 0x7cbd4540, 0x8511c2ae, + 0xb3f7013f, 0x4a5b86d1, 0x446f1354, 0xbdc394ba, + 0x5806385e, 0xa1aabfb0, 0xaf9e2a35, 0x5632addb, + 0x03fb7183, 0xfa57f66d, 0xf46363e8, 0x0dcfe406, + 0xe80a48e2, 0x11a6cf0c, 0x1f925a89, 0xe63edd67, + 0xd0d81ef6, 0x29749918, 0x27400c9d, 0xdeec8b73, + 0x3b292797, 0xc285a079, 0xccb135fc, 0x351db212, + 0xa17cb2de, 0x58d03530, 0x56e4a0b5, 0xaf48275b, + 0x4a8d8bbf, 0xb3210c51, 0xbd1599d4, 0x44b91e3a, + 0x725fddab, 0x8bf35a45, 0x85c7cfc0, 0x7c6b482e, + 0x99aee4ca, 0x60026324, 0x6e36f6a1, 0x979a714f, + 0x4235ea8e, 0xbb996d60, 0xb5adf8e5, 0x4c017f0b, + 0xa9c4d3ef, 0x50685401, 0x5e5cc184, 0xa7f0466a, + 0x911685fb, 0x68ba0215, 0x668e9790, 0x9f22107e, + 0x7ae7bc9a, 0x834b3b74, 0x8d7faef1, 0x74d3291f, + 0xe0b229d3, 0x191eae3d, 0x172a3bb8, 0xee86bc56, + 0x0b4310b2, 0xf2ef975c, 0xfcdb02d9, 0x05778537, + 0x339146a6, 0xca3dc148, 0xc40954cd, 0x3da5d323, + 0xd8607fc7, 0x21ccf829, 0x2ff86dac, 0xd654ea42, + 0x80664799, 0x79cac077, 0x77fe55f2, 0x8e52d21c, + 0x6b977ef8, 0x923bf916, 0x9c0f6c93, 0x65a3eb7d, + 0x534528ec, 0xaae9af02, 0xa4dd3a87, 0x5d71bd69, + 0xb8b4118d, 0x41189663, 0x4f2c03e6, 0xb6808408, + 0x22e184c4, 0xdb4d032a, 0xd57996af, 0x2cd51141, + 0xc910bda5, 0x30bc3a4b, 0x3e88afce, 0xc7242820, + 0xf1c2ebb1, 0x086e6c5f, 0x065af9da, 0xfff67e34, + 0x1a33d2d0, 0xe39f553e, 0xedabc0bb, 0x14074755, + 0xc1a8dc94, 0x38045b7a, 0x3630ceff, 0xcf9c4911, + 0x2a59e5f5, 0xd3f5621b, 0xddc1f79e, 0x246d7070, + 0x128bb3e1, 0xeb27340f, 0xe513a18a, 0x1cbf2664, + 0xf97a8a80, 0x00d60d6e, 0x0ee298eb, 0xf74e1f05, + 0x632f1fc9, 0x9a839827, 0x94b70da2, 0x6d1b8a4c, + 0x88de26a8, 0x7172a146, 0x7f4634c3, 0x86eab32d, + 0xb00c70bc, 0x49a0f752, 0x479462d7, 0xbe38e539, + 0x5bfd49dd, 0xa251ce33, 0xac655bb6, 0x55c9dc58, + }, + { + 0x00000000, 0x07f6e306, 0x0fedc60c, 0x081b250a, + 0x1fdb8c18, 0x182d6f1e, 0x10364a14, 0x17c0a912, + 0x3fb71830, 0x3841fb36, 0x305ade3c, 0x37ac3d3a, + 0x206c9428, 0x279a772e, 0x2f815224, 0x2877b122, + 0x7f6e3060, 0x7898d366, 0x7083f66c, 0x7775156a, + 0x60b5bc78, 0x67435f7e, 0x6f587a74, 0x68ae9972, + 0x40d92850, 0x472fcb56, 0x4f34ee5c, 0x48c20d5a, + 0x5f02a448, 0x58f4474e, 0x50ef6244, 0x57198142, + 0xfedc60c0, 0xf92a83c6, 0xf131a6cc, 0xf6c745ca, + 0xe107ecd8, 0xe6f10fde, 0xeeea2ad4, 0xe91cc9d2, + 0xc16b78f0, 0xc69d9bf6, 0xce86befc, 0xc9705dfa, + 0xdeb0f4e8, 0xd94617ee, 0xd15d32e4, 0xd6abd1e2, + 0x81b250a0, 0x8644b3a6, 0x8e5f96ac, 0x89a975aa, + 0x9e69dcb8, 0x999f3fbe, 0x91841ab4, 0x9672f9b2, + 0xbe054890, 0xb9f3ab96, 0xb1e88e9c, 0xb61e6d9a, + 0xa1dec488, 0xa628278e, 0xae330284, 0xa9c5e182, + 0xf979dc37, 0xfe8f3f31, 0xf6941a3b, 0xf162f93d, + 0xe6a2502f, 0xe154b329, 0xe94f9623, 0xeeb97525, + 0xc6cec407, 0xc1382701, 0xc923020b, 0xced5e10d, + 0xd915481f, 0xdee3ab19, 0xd6f88e13, 0xd10e6d15, + 0x8617ec57, 0x81e10f51, 0x89fa2a5b, 0x8e0cc95d, + 0x99cc604f, 0x9e3a8349, 0x9621a643, 0x91d74545, + 0xb9a0f467, 0xbe561761, 0xb64d326b, 0xb1bbd16d, + 0xa67b787f, 0xa18d9b79, 0xa996be73, 0xae605d75, + 0x07a5bcf7, 0x00535ff1, 0x08487afb, 0x0fbe99fd, + 0x187e30ef, 0x1f88d3e9, 0x1793f6e3, 0x106515e5, + 0x3812a4c7, 0x3fe447c1, 0x37ff62cb, 0x300981cd, + 0x27c928df, 0x203fcbd9, 0x2824eed3, 0x2fd20dd5, + 0x78cb8c97, 0x7f3d6f91, 0x77264a9b, 0x70d0a99d, + 0x6710008f, 0x60e6e389, 0x68fdc683, 0x6f0b2585, + 0x477c94a7, 0x408a77a1, 0x489152ab, 0x4f67b1ad, + 0x58a718bf, 0x5f51fbb9, 0x574adeb3, 0x50bc3db5, + 0xf632a5d9, 0xf1c446df, 0xf9df63d5, 0xfe2980d3, + 0xe9e929c1, 0xee1fcac7, 0xe604efcd, 0xe1f20ccb, + 0xc985bde9, 0xce735eef, 0xc6687be5, 0xc19e98e3, + 0xd65e31f1, 0xd1a8d2f7, 0xd9b3f7fd, 0xde4514fb, + 0x895c95b9, 0x8eaa76bf, 0x86b153b5, 0x8147b0b3, + 0x968719a1, 0x9171faa7, 0x996adfad, 0x9e9c3cab, + 0xb6eb8d89, 0xb11d6e8f, 0xb9064b85, 0xbef0a883, + 0xa9300191, 0xaec6e297, 0xa6ddc79d, 0xa12b249b, + 0x08eec519, 0x0f18261f, 0x07030315, 0x00f5e013, + 0x17354901, 0x10c3aa07, 0x18d88f0d, 0x1f2e6c0b, + 0x3759dd29, 0x30af3e2f, 0x38b41b25, 0x3f42f823, + 0x28825131, 0x2f74b237, 0x276f973d, 0x2099743b, + 0x7780f579, 0x7076167f, 0x786d3375, 0x7f9bd073, + 0x685b7961, 0x6fad9a67, 0x67b6bf6d, 0x60405c6b, + 0x4837ed49, 0x4fc10e4f, 0x47da2b45, 0x402cc843, + 0x57ec6151, 0x501a8257, 0x5801a75d, 0x5ff7445b, + 0x0f4b79ee, 0x08bd9ae8, 0x00a6bfe2, 0x07505ce4, + 0x1090f5f6, 0x176616f0, 0x1f7d33fa, 0x188bd0fc, + 0x30fc61de, 0x370a82d8, 0x3f11a7d2, 0x38e744d4, + 0x2f27edc6, 0x28d10ec0, 0x20ca2bca, 0x273cc8cc, + 0x7025498e, 0x77d3aa88, 0x7fc88f82, 0x783e6c84, + 0x6ffec596, 0x68082690, 0x6013039a, 0x67e5e09c, + 0x4f9251be, 0x4864b2b8, 0x407f97b2, 0x478974b4, + 0x5049dda6, 0x57bf3ea0, 0x5fa41baa, 0x5852f8ac, + 0xf197192e, 0xf661fa28, 0xfe7adf22, 0xf98c3c24, + 0xee4c9536, 0xe9ba7630, 0xe1a1533a, 0xe657b03c, + 0xce20011e, 0xc9d6e218, 0xc1cdc712, 0xc63b2414, + 0xd1fb8d06, 0xd60d6e00, 0xde164b0a, 0xd9e0a80c, + 0x8ef9294e, 0x890fca48, 0x8114ef42, 0x86e20c44, + 0x9122a556, 0x96d44650, 0x9ecf635a, 0x9939805c, + 0xb14e317e, 0xb6b8d278, 0xbea3f772, 0xb9551474, + 0xae95bd66, 0xa9635e60, 0xa1787b6a, 0xa68e986c, + }, + { + 0x00000000, 0xe8a45605, 0xd589b1bd, 0x3d2de7b8, + 0xafd27ecd, 0x477628c8, 0x7a5bcf70, 0x92ff9975, + 0x5b65e02d, 0xb3c1b628, 0x8eec5190, 0x66480795, + 0xf4b79ee0, 0x1c13c8e5, 0x213e2f5d, 0xc99a7958, + 0xb6cbc05a, 0x5e6f965f, 0x634271e7, 0x8be627e2, + 0x1919be97, 0xf1bde892, 0xcc900f2a, 0x2434592f, + 0xedae2077, 0x050a7672, 0x382791ca, 0xd083c7cf, + 0x427c5eba, 0xaad808bf, 0x97f5ef07, 0x7f51b902, + 0x69569d03, 0x81f2cb06, 0xbcdf2cbe, 0x547b7abb, + 0xc684e3ce, 0x2e20b5cb, 0x130d5273, 0xfba90476, + 0x32337d2e, 0xda972b2b, 0xe7bacc93, 0x0f1e9a96, + 0x9de103e3, 0x754555e6, 0x4868b25e, 0xa0cce45b, + 0xdf9d5d59, 0x37390b5c, 0x0a14ece4, 0xe2b0bae1, + 0x704f2394, 0x98eb7591, 0xa5c69229, 0x4d62c42c, + 0x84f8bd74, 0x6c5ceb71, 0x51710cc9, 0xb9d55acc, + 0x2b2ac3b9, 0xc38e95bc, 0xfea37204, 0x16072401, + 0xd2ad3a06, 0x3a096c03, 0x07248bbb, 0xef80ddbe, + 0x7d7f44cb, 0x95db12ce, 0xa8f6f576, 0x4052a373, + 0x89c8da2b, 0x616c8c2e, 0x5c416b96, 0xb4e53d93, + 0x261aa4e6, 0xcebef2e3, 0xf393155b, 0x1b37435e, + 0x6466fa5c, 0x8cc2ac59, 0xb1ef4be1, 0x594b1de4, + 0xcbb48491, 0x2310d294, 0x1e3d352c, 0xf6996329, + 0x3f031a71, 0xd7a74c74, 0xea8aabcc, 0x022efdc9, + 0x90d164bc, 0x787532b9, 0x4558d501, 0xadfc8304, + 0xbbfba705, 0x535ff100, 0x6e7216b8, 0x86d640bd, + 0x1429d9c8, 0xfc8d8fcd, 0xc1a06875, 0x29043e70, + 0xe09e4728, 0x083a112d, 0x3517f695, 0xddb3a090, + 0x4f4c39e5, 0xa7e86fe0, 0x9ac58858, 0x7261de5d, + 0x0d30675f, 0xe594315a, 0xd8b9d6e2, 0x301d80e7, + 0xa2e21992, 0x4a464f97, 0x776ba82f, 0x9fcffe2a, + 0x56558772, 0xbef1d177, 0x83dc36cf, 0x6b7860ca, + 0xf987f9bf, 0x1123afba, 0x2c0e4802, 0xc4aa1e07, + 0xa19b69bb, 0x493f3fbe, 0x7412d806, 0x9cb68e03, + 0x0e491776, 0xe6ed4173, 0xdbc0a6cb, 0x3364f0ce, + 0xfafe8996, 0x125adf93, 0x2f77382b, 0xc7d36e2e, + 0x552cf75b, 0xbd88a15e, 0x80a546e6, 0x680110e3, + 0x1750a9e1, 0xfff4ffe4, 0xc2d9185c, 0x2a7d4e59, + 0xb882d72c, 0x50268129, 0x6d0b6691, 0x85af3094, + 0x4c3549cc, 0xa4911fc9, 0x99bcf871, 0x7118ae74, + 0xe3e73701, 0x0b436104, 0x366e86bc, 0xdecad0b9, + 0xc8cdf4b8, 0x2069a2bd, 0x1d444505, 0xf5e01300, + 0x671f8a75, 0x8fbbdc70, 0xb2963bc8, 0x5a326dcd, + 0x93a81495, 0x7b0c4290, 0x4621a528, 0xae85f32d, + 0x3c7a6a58, 0xd4de3c5d, 0xe9f3dbe5, 0x01578de0, + 0x7e0634e2, 0x96a262e7, 0xab8f855f, 0x432bd35a, + 0xd1d44a2f, 0x39701c2a, 0x045dfb92, 0xecf9ad97, + 0x2563d4cf, 0xcdc782ca, 0xf0ea6572, 0x184e3377, + 0x8ab1aa02, 0x6215fc07, 0x5f381bbf, 0xb79c4dba, + 0x733653bd, 0x9b9205b8, 0xa6bfe200, 0x4e1bb405, + 0xdce42d70, 0x34407b75, 0x096d9ccd, 0xe1c9cac8, + 0x2853b390, 0xc0f7e595, 0xfdda022d, 0x157e5428, + 0x8781cd5d, 0x6f259b58, 0x52087ce0, 0xbaac2ae5, + 0xc5fd93e7, 0x2d59c5e2, 0x1074225a, 0xf8d0745f, + 0x6a2fed2a, 0x828bbb2f, 0xbfa65c97, 0x57020a92, + 0x9e9873ca, 0x763c25cf, 0x4b11c277, 0xa3b59472, + 0x314a0d07, 0xd9ee5b02, 0xe4c3bcba, 0x0c67eabf, + 0x1a60cebe, 0xf2c498bb, 0xcfe97f03, 0x274d2906, + 0xb5b2b073, 0x5d16e676, 0x603b01ce, 0x889f57cb, + 0x41052e93, 0xa9a17896, 0x948c9f2e, 0x7c28c92b, + 0xeed7505e, 0x0673065b, 0x3b5ee1e3, 0xd3fab7e6, + 0xacab0ee4, 0x440f58e1, 0x7922bf59, 0x9186e95c, + 0x03797029, 0xebdd262c, 0xd6f0c194, 0x3e549791, + 0xf7ceeec9, 0x1f6ab8cc, 0x22475f74, 0xcae30971, + 0x581c9004, 0xb0b8c601, 0x8d9521b9, 0x653177bc, + }, + { + 0x00000000, 0x47f7cec1, 0x8fef9d82, 0xc8185343, + 0x1b1e26b3, 0x5ce9e872, 0x94f1bb31, 0xd30675f0, + 0x363c4d66, 0x71cb83a7, 0xb9d3d0e4, 0xfe241e25, + 0x2d226bd5, 0x6ad5a514, 0xa2cdf657, 0xe53a3896, + 0x6c789acc, 0x2b8f540d, 0xe397074e, 0xa460c98f, + 0x7766bc7f, 0x309172be, 0xf88921fd, 0xbf7eef3c, + 0x5a44d7aa, 0x1db3196b, 0xd5ab4a28, 0x925c84e9, + 0x415af119, 0x06ad3fd8, 0xceb56c9b, 0x8942a25a, + 0xd8f13598, 0x9f06fb59, 0x571ea81a, 0x10e966db, + 0xc3ef132b, 0x8418ddea, 0x4c008ea9, 0x0bf74068, + 0xeecd78fe, 0xa93ab63f, 0x6122e57c, 0x26d52bbd, + 0xf5d35e4d, 0xb224908c, 0x7a3cc3cf, 0x3dcb0d0e, + 0xb489af54, 0xf37e6195, 0x3b6632d6, 0x7c91fc17, + 0xaf9789e7, 0xe8604726, 0x20781465, 0x678fdaa4, + 0x82b5e232, 0xc5422cf3, 0x0d5a7fb0, 0x4aadb171, + 0x99abc481, 0xde5c0a40, 0x16445903, 0x51b397c2, + 0xb5237687, 0xf2d4b846, 0x3acceb05, 0x7d3b25c4, + 0xae3d5034, 0xe9ca9ef5, 0x21d2cdb6, 0x66250377, + 0x831f3be1, 0xc4e8f520, 0x0cf0a663, 0x4b0768a2, + 0x98011d52, 0xdff6d393, 0x17ee80d0, 0x50194e11, + 0xd95bec4b, 0x9eac228a, 0x56b471c9, 0x1143bf08, + 0xc245caf8, 0x85b20439, 0x4daa577a, 0x0a5d99bb, + 0xef67a12d, 0xa8906fec, 0x60883caf, 0x277ff26e, + 0xf479879e, 0xb38e495f, 0x7b961a1c, 0x3c61d4dd, + 0x6dd2431f, 0x2a258dde, 0xe23dde9d, 0xa5ca105c, + 0x76cc65ac, 0x313bab6d, 0xf923f82e, 0xbed436ef, + 0x5bee0e79, 0x1c19c0b8, 0xd40193fb, 0x93f65d3a, + 0x40f028ca, 0x0707e60b, 0xcf1fb548, 0x88e87b89, + 0x01aad9d3, 0x465d1712, 0x8e454451, 0xc9b28a90, + 0x1ab4ff60, 0x5d4331a1, 0x955b62e2, 0xd2acac23, + 0x379694b5, 0x70615a74, 0xb8790937, 0xff8ec7f6, + 0x2c88b206, 0x6b7f7cc7, 0xa3672f84, 0xe490e145, + 0x6e87f0b9, 0x29703e78, 0xe1686d3b, 0xa69fa3fa, + 0x7599d60a, 0x326e18cb, 0xfa764b88, 0xbd818549, + 0x58bbbddf, 0x1f4c731e, 0xd754205d, 0x90a3ee9c, + 0x43a59b6c, 0x045255ad, 0xcc4a06ee, 0x8bbdc82f, + 0x02ff6a75, 0x4508a4b4, 0x8d10f7f7, 0xcae73936, + 0x19e14cc6, 0x5e168207, 0x960ed144, 0xd1f91f85, + 0x34c32713, 0x7334e9d2, 0xbb2cba91, 0xfcdb7450, + 0x2fdd01a0, 0x682acf61, 0xa0329c22, 0xe7c552e3, + 0xb676c521, 0xf1810be0, 0x399958a3, 0x7e6e9662, + 0xad68e392, 0xea9f2d53, 0x22877e10, 0x6570b0d1, + 0x804a8847, 0xc7bd4686, 0x0fa515c5, 0x4852db04, + 0x9b54aef4, 0xdca36035, 0x14bb3376, 0x534cfdb7, + 0xda0e5fed, 0x9df9912c, 0x55e1c26f, 0x12160cae, + 0xc110795e, 0x86e7b79f, 0x4effe4dc, 0x09082a1d, + 0xec32128b, 0xabc5dc4a, 0x63dd8f09, 0x242a41c8, + 0xf72c3438, 0xb0dbfaf9, 0x78c3a9ba, 0x3f34677b, + 0xdba4863e, 0x9c5348ff, 0x544b1bbc, 0x13bcd57d, + 0xc0baa08d, 0x874d6e4c, 0x4f553d0f, 0x08a2f3ce, + 0xed98cb58, 0xaa6f0599, 0x627756da, 0x2580981b, + 0xf686edeb, 0xb171232a, 0x79697069, 0x3e9ebea8, + 0xb7dc1cf2, 0xf02bd233, 0x38338170, 0x7fc44fb1, + 0xacc23a41, 0xeb35f480, 0x232da7c3, 0x64da6902, + 0x81e05194, 0xc6179f55, 0x0e0fcc16, 0x49f802d7, + 0x9afe7727, 0xdd09b9e6, 0x1511eaa5, 0x52e62464, + 0x0355b3a6, 0x44a27d67, 0x8cba2e24, 0xcb4de0e5, + 0x184b9515, 0x5fbc5bd4, 0x97a40897, 0xd053c656, + 0x3569fec0, 0x729e3001, 0xba866342, 0xfd71ad83, + 0x2e77d873, 0x698016b2, 0xa19845f1, 0xe66f8b30, + 0x6f2d296a, 0x28dae7ab, 0xe0c2b4e8, 0xa7357a29, + 0x74330fd9, 0x33c4c118, 0xfbdc925b, 0xbc2b5c9a, + 0x5911640c, 0x1ee6aacd, 0xd6fef98e, 0x9109374f, + 0x420f42bf, 0x05f88c7e, 0xcde0df3d, 0x8a1711fc, + }, + { + 0x00000000, 0xdd0fe172, 0xbededf53, 0x63d13e21, + 0x797ca311, 0xa4734263, 0xc7a27c42, 0x1aad9d30, + 0xf2f94622, 0x2ff6a750, 0x4c279971, 0x91287803, + 0x8b85e533, 0x568a0441, 0x355b3a60, 0xe854db12, + 0xe13391f3, 0x3c3c7081, 0x5fed4ea0, 0x82e2afd2, + 0x984f32e2, 0x4540d390, 0x2691edb1, 0xfb9e0cc3, + 0x13cad7d1, 0xcec536a3, 0xad140882, 0x701be9f0, + 0x6ab674c0, 0xb7b995b2, 0xd468ab93, 0x09674ae1, + 0xc6a63e51, 0x1ba9df23, 0x7878e102, 0xa5770070, + 0xbfda9d40, 0x62d57c32, 0x01044213, 0xdc0ba361, + 0x345f7873, 0xe9509901, 0x8a81a720, 0x578e4652, + 0x4d23db62, 0x902c3a10, 0xf3fd0431, 0x2ef2e543, + 0x2795afa2, 0xfa9a4ed0, 0x994b70f1, 0x44449183, + 0x5ee90cb3, 0x83e6edc1, 0xe037d3e0, 0x3d383292, + 0xd56ce980, 0x086308f2, 0x6bb236d3, 0xb6bdd7a1, + 0xac104a91, 0x711fabe3, 0x12ce95c2, 0xcfc174b0, + 0x898d6115, 0x54828067, 0x3753be46, 0xea5c5f34, + 0xf0f1c204, 0x2dfe2376, 0x4e2f1d57, 0x9320fc25, + 0x7b742737, 0xa67bc645, 0xc5aaf864, 0x18a51916, + 0x02088426, 0xdf076554, 0xbcd65b75, 0x61d9ba07, + 0x68bef0e6, 0xb5b11194, 0xd6602fb5, 0x0b6fcec7, + 0x11c253f7, 0xcccdb285, 0xaf1c8ca4, 0x72136dd6, + 0x9a47b6c4, 0x474857b6, 0x24996997, 0xf99688e5, + 0xe33b15d5, 0x3e34f4a7, 0x5de5ca86, 0x80ea2bf4, + 0x4f2b5f44, 0x9224be36, 0xf1f58017, 0x2cfa6165, + 0x3657fc55, 0xeb581d27, 0x88892306, 0x5586c274, + 0xbdd21966, 0x60ddf814, 0x030cc635, 0xde032747, + 0xc4aeba77, 0x19a15b05, 0x7a706524, 0xa77f8456, + 0xae18ceb7, 0x73172fc5, 0x10c611e4, 0xcdc9f096, + 0xd7646da6, 0x0a6b8cd4, 0x69bab2f5, 0xb4b55387, + 0x5ce18895, 0x81ee69e7, 0xe23f57c6, 0x3f30b6b4, + 0x259d2b84, 0xf892caf6, 0x9b43f4d7, 0x464c15a5, + 0x17dbdf9d, 0xcad43eef, 0xa90500ce, 0x740ae1bc, + 0x6ea77c8c, 0xb3a89dfe, 0xd079a3df, 0x0d7642ad, + 0xe52299bf, 0x382d78cd, 0x5bfc46ec, 0x86f3a79e, + 0x9c5e3aae, 0x4151dbdc, 0x2280e5fd, 0xff8f048f, + 0xf6e84e6e, 0x2be7af1c, 0x4836913d, 0x9539704f, + 0x8f94ed7f, 0x529b0c0d, 0x314a322c, 0xec45d35e, + 0x0411084c, 0xd91ee93e, 0xbacfd71f, 0x67c0366d, + 0x7d6dab5d, 0xa0624a2f, 0xc3b3740e, 0x1ebc957c, + 0xd17de1cc, 0x0c7200be, 0x6fa33e9f, 0xb2acdfed, + 0xa80142dd, 0x750ea3af, 0x16df9d8e, 0xcbd07cfc, + 0x2384a7ee, 0xfe8b469c, 0x9d5a78bd, 0x405599cf, + 0x5af804ff, 0x87f7e58d, 0xe426dbac, 0x39293ade, + 0x304e703f, 0xed41914d, 0x8e90af6c, 0x539f4e1e, + 0x4932d32e, 0x943d325c, 0xf7ec0c7d, 0x2ae3ed0f, + 0xc2b7361d, 0x1fb8d76f, 0x7c69e94e, 0xa166083c, + 0xbbcb950c, 0x66c4747e, 0x05154a5f, 0xd81aab2d, + 0x9e56be88, 0x43595ffa, 0x208861db, 0xfd8780a9, + 0xe72a1d99, 0x3a25fceb, 0x59f4c2ca, 0x84fb23b8, + 0x6caff8aa, 0xb1a019d8, 0xd27127f9, 0x0f7ec68b, + 0x15d35bbb, 0xc8dcbac9, 0xab0d84e8, 0x7602659a, + 0x7f652f7b, 0xa26ace09, 0xc1bbf028, 0x1cb4115a, + 0x06198c6a, 0xdb166d18, 0xb8c75339, 0x65c8b24b, + 0x8d9c6959, 0x5093882b, 0x3342b60a, 0xee4d5778, + 0xf4e0ca48, 0x29ef2b3a, 0x4a3e151b, 0x9731f469, + 0x58f080d9, 0x85ff61ab, 0xe62e5f8a, 0x3b21bef8, + 0x218c23c8, 0xfc83c2ba, 0x9f52fc9b, 0x425d1de9, + 0xaa09c6fb, 0x77062789, 0x14d719a8, 0xc9d8f8da, + 0xd37565ea, 0x0e7a8498, 0x6dabbab9, 0xb0a45bcb, + 0xb9c3112a, 0x64ccf058, 0x071dce79, 0xda122f0b, + 0xc0bfb23b, 0x1db05349, 0x7e616d68, 0xa36e8c1a, + 0x4b3a5708, 0x9635b67a, 0xf5e4885b, 0x28eb6929, + 0x3246f419, 0xef49156b, 0x8c982b4a, 0x5197ca38, + }, + { + 0x00000000, 0x2fb7bf3a, 0x5f6f7e74, 0x70d8c14e, + 0xbedefce8, 0x916943d2, 0xe1b1829c, 0xce063da6, + 0x797ce467, 0x56cb5b5d, 0x26139a13, 0x09a42529, + 0xc7a2188f, 0xe815a7b5, 0x98cd66fb, 0xb77ad9c1, + 0xf2f9c8ce, 0xdd4e77f4, 0xad96b6ba, 0x82210980, + 0x4c273426, 0x63908b1c, 0x13484a52, 0x3cfff568, + 0x8b852ca9, 0xa4329393, 0xd4ea52dd, 0xfb5dede7, + 0x355bd041, 0x1aec6f7b, 0x6a34ae35, 0x4583110f, + 0xe1328c2b, 0xce853311, 0xbe5df25f, 0x91ea4d65, + 0x5fec70c3, 0x705bcff9, 0x00830eb7, 0x2f34b18d, + 0x984e684c, 0xb7f9d776, 0xc7211638, 0xe896a902, + 0x269094a4, 0x09272b9e, 0x79ffead0, 0x564855ea, + 0x13cb44e5, 0x3c7cfbdf, 0x4ca43a91, 0x631385ab, + 0xad15b80d, 0x82a20737, 0xf27ac679, 0xddcd7943, + 0x6ab7a082, 0x45001fb8, 0x35d8def6, 0x1a6f61cc, + 0xd4695c6a, 0xfbdee350, 0x8b06221e, 0xa4b19d24, + 0xc6a405e1, 0xe913badb, 0x99cb7b95, 0xb67cc4af, + 0x787af909, 0x57cd4633, 0x2715877d, 0x08a23847, + 0xbfd8e186, 0x906f5ebc, 0xe0b79ff2, 0xcf0020c8, + 0x01061d6e, 0x2eb1a254, 0x5e69631a, 0x71dedc20, + 0x345dcd2f, 0x1bea7215, 0x6b32b35b, 0x44850c61, + 0x8a8331c7, 0xa5348efd, 0xd5ec4fb3, 0xfa5bf089, + 0x4d212948, 0x62969672, 0x124e573c, 0x3df9e806, + 0xf3ffd5a0, 0xdc486a9a, 0xac90abd4, 0x832714ee, + 0x279689ca, 0x082136f0, 0x78f9f7be, 0x574e4884, + 0x99487522, 0xb6ffca18, 0xc6270b56, 0xe990b46c, + 0x5eea6dad, 0x715dd297, 0x018513d9, 0x2e32ace3, + 0xe0349145, 0xcf832e7f, 0xbf5bef31, 0x90ec500b, + 0xd56f4104, 0xfad8fe3e, 0x8a003f70, 0xa5b7804a, + 0x6bb1bdec, 0x440602d6, 0x34dec398, 0x1b697ca2, + 0xac13a563, 0x83a41a59, 0xf37cdb17, 0xdccb642d, + 0x12cd598b, 0x3d7ae6b1, 0x4da227ff, 0x621598c5, + 0x89891675, 0xa63ea94f, 0xd6e66801, 0xf951d73b, + 0x3757ea9d, 0x18e055a7, 0x683894e9, 0x478f2bd3, + 0xf0f5f212, 0xdf424d28, 0xaf9a8c66, 0x802d335c, + 0x4e2b0efa, 0x619cb1c0, 0x1144708e, 0x3ef3cfb4, + 0x7b70debb, 0x54c76181, 0x241fa0cf, 0x0ba81ff5, + 0xc5ae2253, 0xea199d69, 0x9ac15c27, 0xb576e31d, + 0x020c3adc, 0x2dbb85e6, 0x5d6344a8, 0x72d4fb92, + 0xbcd2c634, 0x9365790e, 0xe3bdb840, 0xcc0a077a, + 0x68bb9a5e, 0x470c2564, 0x37d4e42a, 0x18635b10, + 0xd66566b6, 0xf9d2d98c, 0x890a18c2, 0xa6bda7f8, + 0x11c77e39, 0x3e70c103, 0x4ea8004d, 0x611fbf77, + 0xaf1982d1, 0x80ae3deb, 0xf076fca5, 0xdfc1439f, + 0x9a425290, 0xb5f5edaa, 0xc52d2ce4, 0xea9a93de, + 0x249cae78, 0x0b2b1142, 0x7bf3d00c, 0x54446f36, + 0xe33eb6f7, 0xcc8909cd, 0xbc51c883, 0x93e677b9, + 0x5de04a1f, 0x7257f525, 0x028f346b, 0x2d388b51, + 0x4f2d1394, 0x609aacae, 0x10426de0, 0x3ff5d2da, + 0xf1f3ef7c, 0xde445046, 0xae9c9108, 0x812b2e32, + 0x3651f7f3, 0x19e648c9, 0x693e8987, 0x468936bd, + 0x888f0b1b, 0xa738b421, 0xd7e0756f, 0xf857ca55, + 0xbdd4db5a, 0x92636460, 0xe2bba52e, 0xcd0c1a14, + 0x030a27b2, 0x2cbd9888, 0x5c6559c6, 0x73d2e6fc, + 0xc4a83f3d, 0xeb1f8007, 0x9bc74149, 0xb470fe73, + 0x7a76c3d5, 0x55c17cef, 0x2519bda1, 0x0aae029b, + 0xae1f9fbf, 0x81a82085, 0xf170e1cb, 0xdec75ef1, + 0x10c16357, 0x3f76dc6d, 0x4fae1d23, 0x6019a219, + 0xd7637bd8, 0xf8d4c4e2, 0x880c05ac, 0xa7bbba96, + 0x69bd8730, 0x460a380a, 0x36d2f944, 0x1965467e, + 0x5ce65771, 0x7351e84b, 0x03892905, 0x2c3e963f, + 0xe238ab99, 0xcd8f14a3, 0xbd57d5ed, 0x92e06ad7, + 0x259ab316, 0x0a2d0c2c, 0x7af5cd62, 0x55427258, + 0x9b444ffe, 0xb4f3f0c4, 0xc42b318a, 0xeb9c8eb0, + }, +}; diff --git a/ext/digest/crc32_xfer/crc32_xfer.c b/ext/digest/crc32_xfer/crc32_xfer.c index 141ee42..2b81d8e 100644 --- a/ext/digest/crc32_xfer/crc32_xfer.c +++ b/ext/digest/crc32_xfer/crc32_xfer.c @@ -15,54 +15,39 @@ */ #include "crc32_xfer.h" - -/** - * Static table used for the table_driven implementation. - */ -static const crc32_t crc32_xfer_table[256] = { - 0x00000000, 0x000000af, 0x0000015e, 0x000001f1, 0x000002bc, 0x00000213, 0x000003e2, 0x0000034d, - 0x00000578, 0x000005d7, 0x00000426, 0x00000489, 0x000007c4, 0x0000076b, 0x0000069a, 0x00000635, - 0x00000af0, 0x00000a5f, 0x00000bae, 0x00000b01, 0x0000084c, 0x000008e3, 0x00000912, 0x000009bd, - 0x00000f88, 0x00000f27, 0x00000ed6, 0x00000e79, 0x00000d34, 0x00000d9b, 0x00000c6a, 0x00000cc5, - 0x000015e0, 0x0000154f, 0x000014be, 0x00001411, 0x0000175c, 0x000017f3, 0x00001602, 0x000016ad, - 0x00001098, 0x00001037, 0x000011c6, 0x00001169, 0x00001224, 0x0000128b, 0x0000137a, 0x000013d5, - 0x00001f10, 0x00001fbf, 0x00001e4e, 0x00001ee1, 0x00001dac, 0x00001d03, 0x00001cf2, 0x00001c5d, - 0x00001a68, 0x00001ac7, 0x00001b36, 0x00001b99, 0x000018d4, 0x0000187b, 0x0000198a, 0x00001925, - 0x00002bc0, 0x00002b6f, 0x00002a9e, 0x00002a31, 0x0000297c, 0x000029d3, 0x00002822, 0x0000288d, - 0x00002eb8, 0x00002e17, 0x00002fe6, 0x00002f49, 0x00002c04, 0x00002cab, 0x00002d5a, 0x00002df5, - 0x00002130, 0x0000219f, 0x0000206e, 0x000020c1, 0x0000238c, 0x00002323, 0x000022d2, 0x0000227d, - 0x00002448, 0x000024e7, 0x00002516, 0x000025b9, 0x000026f4, 0x0000265b, 0x000027aa, 0x00002705, - 0x00003e20, 0x00003e8f, 0x00003f7e, 0x00003fd1, 0x00003c9c, 0x00003c33, 0x00003dc2, 0x00003d6d, - 0x00003b58, 0x00003bf7, 0x00003a06, 0x00003aa9, 0x000039e4, 0x0000394b, 0x000038ba, 0x00003815, - 0x000034d0, 0x0000347f, 0x0000358e, 0x00003521, 0x0000366c, 0x000036c3, 0x00003732, 0x0000379d, - 0x000031a8, 0x00003107, 0x000030f6, 0x00003059, 0x00003314, 0x000033bb, 0x0000324a, 0x000032e5, - 0x00005780, 0x0000572f, 0x000056de, 0x00005671, 0x0000553c, 0x00005593, 0x00005462, 0x000054cd, - 0x000052f8, 0x00005257, 0x000053a6, 0x00005309, 0x00005044, 0x000050eb, 0x0000511a, 0x000051b5, - 0x00005d70, 0x00005ddf, 0x00005c2e, 0x00005c81, 0x00005fcc, 0x00005f63, 0x00005e92, 0x00005e3d, - 0x00005808, 0x000058a7, 0x00005956, 0x000059f9, 0x00005ab4, 0x00005a1b, 0x00005bea, 0x00005b45, - 0x00004260, 0x000042cf, 0x0000433e, 0x00004391, 0x000040dc, 0x00004073, 0x00004182, 0x0000412d, - 0x00004718, 0x000047b7, 0x00004646, 0x000046e9, 0x000045a4, 0x0000450b, 0x000044fa, 0x00004455, - 0x00004890, 0x0000483f, 0x000049ce, 0x00004961, 0x00004a2c, 0x00004a83, 0x00004b72, 0x00004bdd, - 0x00004de8, 0x00004d47, 0x00004cb6, 0x00004c19, 0x00004f54, 0x00004ffb, 0x00004e0a, 0x00004ea5, - 0x00007c40, 0x00007cef, 0x00007d1e, 0x00007db1, 0x00007efc, 0x00007e53, 0x00007fa2, 0x00007f0d, - 0x00007938, 0x00007997, 0x00007866, 0x000078c9, 0x00007b84, 0x00007b2b, 0x00007ada, 0x00007a75, - 0x000076b0, 0x0000761f, 0x000077ee, 0x00007741, 0x0000740c, 0x000074a3, 0x00007552, 0x000075fd, - 0x000073c8, 0x00007367, 0x00007296, 0x00007239, 0x00007174, 0x000071db, 0x0000702a, 0x00007085, - 0x000069a0, 0x0000690f, 0x000068fe, 0x00006851, 0x00006b1c, 0x00006bb3, 0x00006a42, 0x00006aed, - 0x00006cd8, 0x00006c77, 0x00006d86, 0x00006d29, 0x00006e64, 0x00006ecb, 0x00006f3a, 0x00006f95, - 0x00006350, 0x000063ff, 0x0000620e, 0x000062a1, 0x000061ec, 0x00006143, 0x000060b2, 0x0000601d, - 0x00006628, 0x00006687, 0x00006776, 0x000067d9, 0x00006494, 0x0000643b, 0x000065ca, 0x00006565 -}; +#include "crc32_xfer_table.h" crc32_t crc32_xfer_update(crc32_t crc, const void *data, size_t data_len) { const unsigned char *d = (const unsigned char *)data; unsigned int tbl_idx; + for (; data_len >= SLICE_SIZE; data_len -= SLICE_SIZE) + { + crc = crc32_xfer_table[15][d[ 0] ^ ((crc >> 24) & 0xff)] ^ + crc32_xfer_table[14][d[ 1] ^ ((crc >> 16) & 0xff)] ^ + crc32_xfer_table[13][d[ 2] ^ ((crc >> 8) & 0xff)] ^ + crc32_xfer_table[12][d[ 3] ^ ((crc >> 0) & 0xff)] ^ + crc32_xfer_table[11][d[ 4] ] ^ + crc32_xfer_table[10][d[ 5] ] ^ + crc32_xfer_table[ 9][d[ 6] ] ^ + crc32_xfer_table[ 8][d[ 7] ] ^ + crc32_xfer_table[ 7][d[ 8] ] ^ + crc32_xfer_table[ 6][d[ 9] ] ^ + crc32_xfer_table[ 5][d[10] ] ^ + crc32_xfer_table[ 4][d[11] ] ^ + crc32_xfer_table[ 3][d[12] ] ^ + crc32_xfer_table[ 2][d[13] ] ^ + crc32_xfer_table[ 1][d[14] ] ^ + crc32_xfer_table[ 0][d[15] ]; + crc &= 0xffffffff; + d += SLICE_SIZE; + } + while (data_len--) { tbl_idx = ((crc >> 24) ^ *d) & 0xff; - crc = (crc32_xfer_table[tbl_idx] ^ (crc << 8)) & 0xffffffff; + crc = (crc32_xfer_table[0][tbl_idx] ^ (crc << 8)) & 0xffffffff; d++; } diff --git a/ext/digest/crc32_xfer/crc32_xfer_table.h b/ext/digest/crc32_xfer/crc32_xfer_table.h new file mode 100644 index 0000000..09374a7 --- /dev/null +++ b/ext/digest/crc32_xfer/crc32_xfer_table.h @@ -0,0 +1,1070 @@ +/* + * bitwidth: 32 + * generator polynomial: 0x000000af + * input bit direction: NORMAL + * slice bytes per iteration: 16 + * slide bits per table: 8 + * + * Generated by: gentable.rb of digest-crc + */ + +#define SLICE_SIZE 16 + +static const uint32_t crc32_xfer_table[SLICE_SIZE][256] = { + { + 0x00000000, 0x000000af, 0x0000015e, 0x000001f1, + 0x000002bc, 0x00000213, 0x000003e2, 0x0000034d, + 0x00000578, 0x000005d7, 0x00000426, 0x00000489, + 0x000007c4, 0x0000076b, 0x0000069a, 0x00000635, + 0x00000af0, 0x00000a5f, 0x00000bae, 0x00000b01, + 0x0000084c, 0x000008e3, 0x00000912, 0x000009bd, + 0x00000f88, 0x00000f27, 0x00000ed6, 0x00000e79, + 0x00000d34, 0x00000d9b, 0x00000c6a, 0x00000cc5, + 0x000015e0, 0x0000154f, 0x000014be, 0x00001411, + 0x0000175c, 0x000017f3, 0x00001602, 0x000016ad, + 0x00001098, 0x00001037, 0x000011c6, 0x00001169, + 0x00001224, 0x0000128b, 0x0000137a, 0x000013d5, + 0x00001f10, 0x00001fbf, 0x00001e4e, 0x00001ee1, + 0x00001dac, 0x00001d03, 0x00001cf2, 0x00001c5d, + 0x00001a68, 0x00001ac7, 0x00001b36, 0x00001b99, + 0x000018d4, 0x0000187b, 0x0000198a, 0x00001925, + 0x00002bc0, 0x00002b6f, 0x00002a9e, 0x00002a31, + 0x0000297c, 0x000029d3, 0x00002822, 0x0000288d, + 0x00002eb8, 0x00002e17, 0x00002fe6, 0x00002f49, + 0x00002c04, 0x00002cab, 0x00002d5a, 0x00002df5, + 0x00002130, 0x0000219f, 0x0000206e, 0x000020c1, + 0x0000238c, 0x00002323, 0x000022d2, 0x0000227d, + 0x00002448, 0x000024e7, 0x00002516, 0x000025b9, + 0x000026f4, 0x0000265b, 0x000027aa, 0x00002705, + 0x00003e20, 0x00003e8f, 0x00003f7e, 0x00003fd1, + 0x00003c9c, 0x00003c33, 0x00003dc2, 0x00003d6d, + 0x00003b58, 0x00003bf7, 0x00003a06, 0x00003aa9, + 0x000039e4, 0x0000394b, 0x000038ba, 0x00003815, + 0x000034d0, 0x0000347f, 0x0000358e, 0x00003521, + 0x0000366c, 0x000036c3, 0x00003732, 0x0000379d, + 0x000031a8, 0x00003107, 0x000030f6, 0x00003059, + 0x00003314, 0x000033bb, 0x0000324a, 0x000032e5, + 0x00005780, 0x0000572f, 0x000056de, 0x00005671, + 0x0000553c, 0x00005593, 0x00005462, 0x000054cd, + 0x000052f8, 0x00005257, 0x000053a6, 0x00005309, + 0x00005044, 0x000050eb, 0x0000511a, 0x000051b5, + 0x00005d70, 0x00005ddf, 0x00005c2e, 0x00005c81, + 0x00005fcc, 0x00005f63, 0x00005e92, 0x00005e3d, + 0x00005808, 0x000058a7, 0x00005956, 0x000059f9, + 0x00005ab4, 0x00005a1b, 0x00005bea, 0x00005b45, + 0x00004260, 0x000042cf, 0x0000433e, 0x00004391, + 0x000040dc, 0x00004073, 0x00004182, 0x0000412d, + 0x00004718, 0x000047b7, 0x00004646, 0x000046e9, + 0x000045a4, 0x0000450b, 0x000044fa, 0x00004455, + 0x00004890, 0x0000483f, 0x000049ce, 0x00004961, + 0x00004a2c, 0x00004a83, 0x00004b72, 0x00004bdd, + 0x00004de8, 0x00004d47, 0x00004cb6, 0x00004c19, + 0x00004f54, 0x00004ffb, 0x00004e0a, 0x00004ea5, + 0x00007c40, 0x00007cef, 0x00007d1e, 0x00007db1, + 0x00007efc, 0x00007e53, 0x00007fa2, 0x00007f0d, + 0x00007938, 0x00007997, 0x00007866, 0x000078c9, + 0x00007b84, 0x00007b2b, 0x00007ada, 0x00007a75, + 0x000076b0, 0x0000761f, 0x000077ee, 0x00007741, + 0x0000740c, 0x000074a3, 0x00007552, 0x000075fd, + 0x000073c8, 0x00007367, 0x00007296, 0x00007239, + 0x00007174, 0x000071db, 0x0000702a, 0x00007085, + 0x000069a0, 0x0000690f, 0x000068fe, 0x00006851, + 0x00006b1c, 0x00006bb3, 0x00006a42, 0x00006aed, + 0x00006cd8, 0x00006c77, 0x00006d86, 0x00006d29, + 0x00006e64, 0x00006ecb, 0x00006f3a, 0x00006f95, + 0x00006350, 0x000063ff, 0x0000620e, 0x000062a1, + 0x000061ec, 0x00006143, 0x000060b2, 0x0000601d, + 0x00006628, 0x00006687, 0x00006776, 0x000067d9, + 0x00006494, 0x0000643b, 0x000065ca, 0x00006565, + }, + { + 0x00000000, 0x0000af00, 0x00015e00, 0x0001f100, + 0x0002bc00, 0x00021300, 0x0003e200, 0x00034d00, + 0x00057800, 0x0005d700, 0x00042600, 0x00048900, + 0x0007c400, 0x00076b00, 0x00069a00, 0x00063500, + 0x000af000, 0x000a5f00, 0x000bae00, 0x000b0100, + 0x00084c00, 0x0008e300, 0x00091200, 0x0009bd00, + 0x000f8800, 0x000f2700, 0x000ed600, 0x000e7900, + 0x000d3400, 0x000d9b00, 0x000c6a00, 0x000cc500, + 0x0015e000, 0x00154f00, 0x0014be00, 0x00141100, + 0x00175c00, 0x0017f300, 0x00160200, 0x0016ad00, + 0x00109800, 0x00103700, 0x0011c600, 0x00116900, + 0x00122400, 0x00128b00, 0x00137a00, 0x0013d500, + 0x001f1000, 0x001fbf00, 0x001e4e00, 0x001ee100, + 0x001dac00, 0x001d0300, 0x001cf200, 0x001c5d00, + 0x001a6800, 0x001ac700, 0x001b3600, 0x001b9900, + 0x0018d400, 0x00187b00, 0x00198a00, 0x00192500, + 0x002bc000, 0x002b6f00, 0x002a9e00, 0x002a3100, + 0x00297c00, 0x0029d300, 0x00282200, 0x00288d00, + 0x002eb800, 0x002e1700, 0x002fe600, 0x002f4900, + 0x002c0400, 0x002cab00, 0x002d5a00, 0x002df500, + 0x00213000, 0x00219f00, 0x00206e00, 0x0020c100, + 0x00238c00, 0x00232300, 0x0022d200, 0x00227d00, + 0x00244800, 0x0024e700, 0x00251600, 0x0025b900, + 0x0026f400, 0x00265b00, 0x0027aa00, 0x00270500, + 0x003e2000, 0x003e8f00, 0x003f7e00, 0x003fd100, + 0x003c9c00, 0x003c3300, 0x003dc200, 0x003d6d00, + 0x003b5800, 0x003bf700, 0x003a0600, 0x003aa900, + 0x0039e400, 0x00394b00, 0x0038ba00, 0x00381500, + 0x0034d000, 0x00347f00, 0x00358e00, 0x00352100, + 0x00366c00, 0x0036c300, 0x00373200, 0x00379d00, + 0x0031a800, 0x00310700, 0x0030f600, 0x00305900, + 0x00331400, 0x0033bb00, 0x00324a00, 0x0032e500, + 0x00578000, 0x00572f00, 0x0056de00, 0x00567100, + 0x00553c00, 0x00559300, 0x00546200, 0x0054cd00, + 0x0052f800, 0x00525700, 0x0053a600, 0x00530900, + 0x00504400, 0x0050eb00, 0x00511a00, 0x0051b500, + 0x005d7000, 0x005ddf00, 0x005c2e00, 0x005c8100, + 0x005fcc00, 0x005f6300, 0x005e9200, 0x005e3d00, + 0x00580800, 0x0058a700, 0x00595600, 0x0059f900, + 0x005ab400, 0x005a1b00, 0x005bea00, 0x005b4500, + 0x00426000, 0x0042cf00, 0x00433e00, 0x00439100, + 0x0040dc00, 0x00407300, 0x00418200, 0x00412d00, + 0x00471800, 0x0047b700, 0x00464600, 0x0046e900, + 0x0045a400, 0x00450b00, 0x0044fa00, 0x00445500, + 0x00489000, 0x00483f00, 0x0049ce00, 0x00496100, + 0x004a2c00, 0x004a8300, 0x004b7200, 0x004bdd00, + 0x004de800, 0x004d4700, 0x004cb600, 0x004c1900, + 0x004f5400, 0x004ffb00, 0x004e0a00, 0x004ea500, + 0x007c4000, 0x007cef00, 0x007d1e00, 0x007db100, + 0x007efc00, 0x007e5300, 0x007fa200, 0x007f0d00, + 0x00793800, 0x00799700, 0x00786600, 0x0078c900, + 0x007b8400, 0x007b2b00, 0x007ada00, 0x007a7500, + 0x0076b000, 0x00761f00, 0x0077ee00, 0x00774100, + 0x00740c00, 0x0074a300, 0x00755200, 0x0075fd00, + 0x0073c800, 0x00736700, 0x00729600, 0x00723900, + 0x00717400, 0x0071db00, 0x00702a00, 0x00708500, + 0x0069a000, 0x00690f00, 0x0068fe00, 0x00685100, + 0x006b1c00, 0x006bb300, 0x006a4200, 0x006aed00, + 0x006cd800, 0x006c7700, 0x006d8600, 0x006d2900, + 0x006e6400, 0x006ecb00, 0x006f3a00, 0x006f9500, + 0x00635000, 0x0063ff00, 0x00620e00, 0x0062a100, + 0x0061ec00, 0x00614300, 0x0060b200, 0x00601d00, + 0x00662800, 0x00668700, 0x00677600, 0x0067d900, + 0x00649400, 0x00643b00, 0x0065ca00, 0x00656500, + }, + { + 0x00000000, 0x00af0000, 0x015e0000, 0x01f10000, + 0x02bc0000, 0x02130000, 0x03e20000, 0x034d0000, + 0x05780000, 0x05d70000, 0x04260000, 0x04890000, + 0x07c40000, 0x076b0000, 0x069a0000, 0x06350000, + 0x0af00000, 0x0a5f0000, 0x0bae0000, 0x0b010000, + 0x084c0000, 0x08e30000, 0x09120000, 0x09bd0000, + 0x0f880000, 0x0f270000, 0x0ed60000, 0x0e790000, + 0x0d340000, 0x0d9b0000, 0x0c6a0000, 0x0cc50000, + 0x15e00000, 0x154f0000, 0x14be0000, 0x14110000, + 0x175c0000, 0x17f30000, 0x16020000, 0x16ad0000, + 0x10980000, 0x10370000, 0x11c60000, 0x11690000, + 0x12240000, 0x128b0000, 0x137a0000, 0x13d50000, + 0x1f100000, 0x1fbf0000, 0x1e4e0000, 0x1ee10000, + 0x1dac0000, 0x1d030000, 0x1cf20000, 0x1c5d0000, + 0x1a680000, 0x1ac70000, 0x1b360000, 0x1b990000, + 0x18d40000, 0x187b0000, 0x198a0000, 0x19250000, + 0x2bc00000, 0x2b6f0000, 0x2a9e0000, 0x2a310000, + 0x297c0000, 0x29d30000, 0x28220000, 0x288d0000, + 0x2eb80000, 0x2e170000, 0x2fe60000, 0x2f490000, + 0x2c040000, 0x2cab0000, 0x2d5a0000, 0x2df50000, + 0x21300000, 0x219f0000, 0x206e0000, 0x20c10000, + 0x238c0000, 0x23230000, 0x22d20000, 0x227d0000, + 0x24480000, 0x24e70000, 0x25160000, 0x25b90000, + 0x26f40000, 0x265b0000, 0x27aa0000, 0x27050000, + 0x3e200000, 0x3e8f0000, 0x3f7e0000, 0x3fd10000, + 0x3c9c0000, 0x3c330000, 0x3dc20000, 0x3d6d0000, + 0x3b580000, 0x3bf70000, 0x3a060000, 0x3aa90000, + 0x39e40000, 0x394b0000, 0x38ba0000, 0x38150000, + 0x34d00000, 0x347f0000, 0x358e0000, 0x35210000, + 0x366c0000, 0x36c30000, 0x37320000, 0x379d0000, + 0x31a80000, 0x31070000, 0x30f60000, 0x30590000, + 0x33140000, 0x33bb0000, 0x324a0000, 0x32e50000, + 0x57800000, 0x572f0000, 0x56de0000, 0x56710000, + 0x553c0000, 0x55930000, 0x54620000, 0x54cd0000, + 0x52f80000, 0x52570000, 0x53a60000, 0x53090000, + 0x50440000, 0x50eb0000, 0x511a0000, 0x51b50000, + 0x5d700000, 0x5ddf0000, 0x5c2e0000, 0x5c810000, + 0x5fcc0000, 0x5f630000, 0x5e920000, 0x5e3d0000, + 0x58080000, 0x58a70000, 0x59560000, 0x59f90000, + 0x5ab40000, 0x5a1b0000, 0x5bea0000, 0x5b450000, + 0x42600000, 0x42cf0000, 0x433e0000, 0x43910000, + 0x40dc0000, 0x40730000, 0x41820000, 0x412d0000, + 0x47180000, 0x47b70000, 0x46460000, 0x46e90000, + 0x45a40000, 0x450b0000, 0x44fa0000, 0x44550000, + 0x48900000, 0x483f0000, 0x49ce0000, 0x49610000, + 0x4a2c0000, 0x4a830000, 0x4b720000, 0x4bdd0000, + 0x4de80000, 0x4d470000, 0x4cb60000, 0x4c190000, + 0x4f540000, 0x4ffb0000, 0x4e0a0000, 0x4ea50000, + 0x7c400000, 0x7cef0000, 0x7d1e0000, 0x7db10000, + 0x7efc0000, 0x7e530000, 0x7fa20000, 0x7f0d0000, + 0x79380000, 0x79970000, 0x78660000, 0x78c90000, + 0x7b840000, 0x7b2b0000, 0x7ada0000, 0x7a750000, + 0x76b00000, 0x761f0000, 0x77ee0000, 0x77410000, + 0x740c0000, 0x74a30000, 0x75520000, 0x75fd0000, + 0x73c80000, 0x73670000, 0x72960000, 0x72390000, + 0x71740000, 0x71db0000, 0x702a0000, 0x70850000, + 0x69a00000, 0x690f0000, 0x68fe0000, 0x68510000, + 0x6b1c0000, 0x6bb30000, 0x6a420000, 0x6aed0000, + 0x6cd80000, 0x6c770000, 0x6d860000, 0x6d290000, + 0x6e640000, 0x6ecb0000, 0x6f3a0000, 0x6f950000, + 0x63500000, 0x63ff0000, 0x620e0000, 0x62a10000, + 0x61ec0000, 0x61430000, 0x60b20000, 0x601d0000, + 0x66280000, 0x66870000, 0x67760000, 0x67d90000, + 0x64940000, 0x643b0000, 0x65ca0000, 0x65650000, + }, + { + 0x00000000, 0xaf000000, 0x5e0000af, 0xf10000af, + 0xbc00015e, 0x1300015e, 0xe20001f1, 0x4d0001f1, + 0x78000213, 0xd7000213, 0x260002bc, 0x890002bc, + 0xc400034d, 0x6b00034d, 0x9a0003e2, 0x350003e2, + 0xf0000426, 0x5f000426, 0xae000489, 0x01000489, + 0x4c000578, 0xe3000578, 0x120005d7, 0xbd0005d7, + 0x88000635, 0x27000635, 0xd600069a, 0x7900069a, + 0x3400076b, 0x9b00076b, 0x6a0007c4, 0xc50007c4, + 0xe00008e3, 0x4f0008e3, 0xbe00084c, 0x1100084c, + 0x5c0009bd, 0xf30009bd, 0x02000912, 0xad000912, + 0x98000af0, 0x37000af0, 0xc6000a5f, 0x69000a5f, + 0x24000bae, 0x8b000bae, 0x7a000b01, 0xd5000b01, + 0x10000cc5, 0xbf000cc5, 0x4e000c6a, 0xe1000c6a, + 0xac000d9b, 0x03000d9b, 0xf2000d34, 0x5d000d34, + 0x68000ed6, 0xc7000ed6, 0x36000e79, 0x99000e79, + 0xd4000f88, 0x7b000f88, 0x8a000f27, 0x25000f27, + 0xc0001169, 0x6f001169, 0x9e0011c6, 0x310011c6, + 0x7c001037, 0xd3001037, 0x22001098, 0x8d001098, + 0xb800137a, 0x1700137a, 0xe60013d5, 0x490013d5, + 0x04001224, 0xab001224, 0x5a00128b, 0xf500128b, + 0x3000154f, 0x9f00154f, 0x6e0015e0, 0xc10015e0, + 0x8c001411, 0x23001411, 0xd20014be, 0x7d0014be, + 0x4800175c, 0xe700175c, 0x160017f3, 0xb90017f3, + 0xf4001602, 0x5b001602, 0xaa0016ad, 0x050016ad, + 0x2000198a, 0x8f00198a, 0x7e001925, 0xd1001925, + 0x9c0018d4, 0x330018d4, 0xc200187b, 0x6d00187b, + 0x58001b99, 0xf7001b99, 0x06001b36, 0xa9001b36, + 0xe4001ac7, 0x4b001ac7, 0xba001a68, 0x15001a68, + 0xd0001dac, 0x7f001dac, 0x8e001d03, 0x21001d03, + 0x6c001cf2, 0xc3001cf2, 0x32001c5d, 0x9d001c5d, + 0xa8001fbf, 0x07001fbf, 0xf6001f10, 0x59001f10, + 0x14001ee1, 0xbb001ee1, 0x4a001e4e, 0xe5001e4e, + 0x8000227d, 0x2f00227d, 0xde0022d2, 0x710022d2, + 0x3c002323, 0x93002323, 0x6200238c, 0xcd00238c, + 0xf800206e, 0x5700206e, 0xa60020c1, 0x090020c1, + 0x44002130, 0xeb002130, 0x1a00219f, 0xb500219f, + 0x7000265b, 0xdf00265b, 0x2e0026f4, 0x810026f4, + 0xcc002705, 0x63002705, 0x920027aa, 0x3d0027aa, + 0x08002448, 0xa7002448, 0x560024e7, 0xf90024e7, + 0xb4002516, 0x1b002516, 0xea0025b9, 0x450025b9, + 0x60002a9e, 0xcf002a9e, 0x3e002a31, 0x91002a31, + 0xdc002bc0, 0x73002bc0, 0x82002b6f, 0x2d002b6f, + 0x1800288d, 0xb700288d, 0x46002822, 0xe9002822, + 0xa40029d3, 0x0b0029d3, 0xfa00297c, 0x5500297c, + 0x90002eb8, 0x3f002eb8, 0xce002e17, 0x61002e17, + 0x2c002fe6, 0x83002fe6, 0x72002f49, 0xdd002f49, + 0xe8002cab, 0x47002cab, 0xb6002c04, 0x19002c04, + 0x54002df5, 0xfb002df5, 0x0a002d5a, 0xa5002d5a, + 0x40003314, 0xef003314, 0x1e0033bb, 0xb10033bb, + 0xfc00324a, 0x5300324a, 0xa20032e5, 0x0d0032e5, + 0x38003107, 0x97003107, 0x660031a8, 0xc90031a8, + 0x84003059, 0x2b003059, 0xda0030f6, 0x750030f6, + 0xb0003732, 0x1f003732, 0xee00379d, 0x4100379d, + 0x0c00366c, 0xa300366c, 0x520036c3, 0xfd0036c3, + 0xc8003521, 0x67003521, 0x9600358e, 0x3900358e, + 0x7400347f, 0xdb00347f, 0x2a0034d0, 0x850034d0, + 0xa0003bf7, 0x0f003bf7, 0xfe003b58, 0x51003b58, + 0x1c003aa9, 0xb3003aa9, 0x42003a06, 0xed003a06, + 0xd80039e4, 0x770039e4, 0x8600394b, 0x2900394b, + 0x640038ba, 0xcb0038ba, 0x3a003815, 0x95003815, + 0x50003fd1, 0xff003fd1, 0x0e003f7e, 0xa1003f7e, + 0xec003e8f, 0x43003e8f, 0xb2003e20, 0x1d003e20, + 0x28003dc2, 0x87003dc2, 0x76003d6d, 0xd9003d6d, + 0x94003c9c, 0x3b003c9c, 0xca003c33, 0x65003c33, + }, + { + 0x00000000, 0x00004455, 0x000088aa, 0x0000ccff, + 0x00011154, 0x00015501, 0x000199fe, 0x0001ddab, + 0x000222a8, 0x000266fd, 0x0002aa02, 0x0002ee57, + 0x000333fc, 0x000377a9, 0x0003bb56, 0x0003ff03, + 0x00044550, 0x00040105, 0x0004cdfa, 0x000489af, + 0x00055404, 0x00051051, 0x0005dcae, 0x000598fb, + 0x000667f8, 0x000623ad, 0x0006ef52, 0x0006ab07, + 0x000776ac, 0x000732f9, 0x0007fe06, 0x0007ba53, + 0x00088aa0, 0x0008cef5, 0x0008020a, 0x0008465f, + 0x00099bf4, 0x0009dfa1, 0x0009135e, 0x0009570b, + 0x000aa808, 0x000aec5d, 0x000a20a2, 0x000a64f7, + 0x000bb95c, 0x000bfd09, 0x000b31f6, 0x000b75a3, + 0x000ccff0, 0x000c8ba5, 0x000c475a, 0x000c030f, + 0x000ddea4, 0x000d9af1, 0x000d560e, 0x000d125b, + 0x000eed58, 0x000ea90d, 0x000e65f2, 0x000e21a7, + 0x000ffc0c, 0x000fb859, 0x000f74a6, 0x000f30f3, + 0x00111540, 0x00115115, 0x00119dea, 0x0011d9bf, + 0x00100414, 0x00104041, 0x00108cbe, 0x0010c8eb, + 0x001337e8, 0x001373bd, 0x0013bf42, 0x0013fb17, + 0x001226bc, 0x001262e9, 0x0012ae16, 0x0012ea43, + 0x00155010, 0x00151445, 0x0015d8ba, 0x00159cef, + 0x00144144, 0x00140511, 0x0014c9ee, 0x00148dbb, + 0x001772b8, 0x001736ed, 0x0017fa12, 0x0017be47, + 0x001663ec, 0x001627b9, 0x0016eb46, 0x0016af13, + 0x00199fe0, 0x0019dbb5, 0x0019174a, 0x0019531f, + 0x00188eb4, 0x0018cae1, 0x0018061e, 0x0018424b, + 0x001bbd48, 0x001bf91d, 0x001b35e2, 0x001b71b7, + 0x001aac1c, 0x001ae849, 0x001a24b6, 0x001a60e3, + 0x001ddab0, 0x001d9ee5, 0x001d521a, 0x001d164f, + 0x001ccbe4, 0x001c8fb1, 0x001c434e, 0x001c071b, + 0x001ff818, 0x001fbc4d, 0x001f70b2, 0x001f34e7, + 0x001ee94c, 0x001ead19, 0x001e61e6, 0x001e25b3, + 0x00222a80, 0x00226ed5, 0x0022a22a, 0x0022e67f, + 0x00233bd4, 0x00237f81, 0x0023b37e, 0x0023f72b, + 0x00200828, 0x00204c7d, 0x00208082, 0x0020c4d7, + 0x0021197c, 0x00215d29, 0x002191d6, 0x0021d583, + 0x00266fd0, 0x00262b85, 0x0026e77a, 0x0026a32f, + 0x00277e84, 0x00273ad1, 0x0027f62e, 0x0027b27b, + 0x00244d78, 0x0024092d, 0x0024c5d2, 0x00248187, + 0x00255c2c, 0x00251879, 0x0025d486, 0x002590d3, + 0x002aa020, 0x002ae475, 0x002a288a, 0x002a6cdf, + 0x002bb174, 0x002bf521, 0x002b39de, 0x002b7d8b, + 0x00288288, 0x0028c6dd, 0x00280a22, 0x00284e77, + 0x002993dc, 0x0029d789, 0x00291b76, 0x00295f23, + 0x002ee570, 0x002ea125, 0x002e6dda, 0x002e298f, + 0x002ff424, 0x002fb071, 0x002f7c8e, 0x002f38db, + 0x002cc7d8, 0x002c838d, 0x002c4f72, 0x002c0b27, + 0x002dd68c, 0x002d92d9, 0x002d5e26, 0x002d1a73, + 0x00333fc0, 0x00337b95, 0x0033b76a, 0x0033f33f, + 0x00322e94, 0x00326ac1, 0x0032a63e, 0x0032e26b, + 0x00311d68, 0x0031593d, 0x003195c2, 0x0031d197, + 0x00300c3c, 0x00304869, 0x00308496, 0x0030c0c3, + 0x00377a90, 0x00373ec5, 0x0037f23a, 0x0037b66f, + 0x00366bc4, 0x00362f91, 0x0036e36e, 0x0036a73b, + 0x00355838, 0x00351c6d, 0x0035d092, 0x003594c7, + 0x0034496c, 0x00340d39, 0x0034c1c6, 0x00348593, + 0x003bb560, 0x003bf135, 0x003b3dca, 0x003b799f, + 0x003aa434, 0x003ae061, 0x003a2c9e, 0x003a68cb, + 0x003997c8, 0x0039d39d, 0x00391f62, 0x00395b37, + 0x0038869c, 0x0038c2c9, 0x00380e36, 0x00384a63, + 0x003ff030, 0x003fb465, 0x003f789a, 0x003f3ccf, + 0x003ee164, 0x003ea531, 0x003e69ce, 0x003e2d9b, + 0x003dd298, 0x003d96cd, 0x003d5a32, 0x003d1e67, + 0x003cc3cc, 0x003c8799, 0x003c4b66, 0x003c0f33, + }, + { + 0x00000000, 0x00445500, 0x0088aa00, 0x00ccff00, + 0x01115400, 0x01550100, 0x0199fe00, 0x01ddab00, + 0x0222a800, 0x0266fd00, 0x02aa0200, 0x02ee5700, + 0x0333fc00, 0x0377a900, 0x03bb5600, 0x03ff0300, + 0x04455000, 0x04010500, 0x04cdfa00, 0x0489af00, + 0x05540400, 0x05105100, 0x05dcae00, 0x0598fb00, + 0x0667f800, 0x0623ad00, 0x06ef5200, 0x06ab0700, + 0x0776ac00, 0x0732f900, 0x07fe0600, 0x07ba5300, + 0x088aa000, 0x08cef500, 0x08020a00, 0x08465f00, + 0x099bf400, 0x09dfa100, 0x09135e00, 0x09570b00, + 0x0aa80800, 0x0aec5d00, 0x0a20a200, 0x0a64f700, + 0x0bb95c00, 0x0bfd0900, 0x0b31f600, 0x0b75a300, + 0x0ccff000, 0x0c8ba500, 0x0c475a00, 0x0c030f00, + 0x0ddea400, 0x0d9af100, 0x0d560e00, 0x0d125b00, + 0x0eed5800, 0x0ea90d00, 0x0e65f200, 0x0e21a700, + 0x0ffc0c00, 0x0fb85900, 0x0f74a600, 0x0f30f300, + 0x11154000, 0x11511500, 0x119dea00, 0x11d9bf00, + 0x10041400, 0x10404100, 0x108cbe00, 0x10c8eb00, + 0x1337e800, 0x1373bd00, 0x13bf4200, 0x13fb1700, + 0x1226bc00, 0x1262e900, 0x12ae1600, 0x12ea4300, + 0x15501000, 0x15144500, 0x15d8ba00, 0x159cef00, + 0x14414400, 0x14051100, 0x14c9ee00, 0x148dbb00, + 0x1772b800, 0x1736ed00, 0x17fa1200, 0x17be4700, + 0x1663ec00, 0x1627b900, 0x16eb4600, 0x16af1300, + 0x199fe000, 0x19dbb500, 0x19174a00, 0x19531f00, + 0x188eb400, 0x18cae100, 0x18061e00, 0x18424b00, + 0x1bbd4800, 0x1bf91d00, 0x1b35e200, 0x1b71b700, + 0x1aac1c00, 0x1ae84900, 0x1a24b600, 0x1a60e300, + 0x1ddab000, 0x1d9ee500, 0x1d521a00, 0x1d164f00, + 0x1ccbe400, 0x1c8fb100, 0x1c434e00, 0x1c071b00, + 0x1ff81800, 0x1fbc4d00, 0x1f70b200, 0x1f34e700, + 0x1ee94c00, 0x1ead1900, 0x1e61e600, 0x1e25b300, + 0x222a8000, 0x226ed500, 0x22a22a00, 0x22e67f00, + 0x233bd400, 0x237f8100, 0x23b37e00, 0x23f72b00, + 0x20082800, 0x204c7d00, 0x20808200, 0x20c4d700, + 0x21197c00, 0x215d2900, 0x2191d600, 0x21d58300, + 0x266fd000, 0x262b8500, 0x26e77a00, 0x26a32f00, + 0x277e8400, 0x273ad100, 0x27f62e00, 0x27b27b00, + 0x244d7800, 0x24092d00, 0x24c5d200, 0x24818700, + 0x255c2c00, 0x25187900, 0x25d48600, 0x2590d300, + 0x2aa02000, 0x2ae47500, 0x2a288a00, 0x2a6cdf00, + 0x2bb17400, 0x2bf52100, 0x2b39de00, 0x2b7d8b00, + 0x28828800, 0x28c6dd00, 0x280a2200, 0x284e7700, + 0x2993dc00, 0x29d78900, 0x291b7600, 0x295f2300, + 0x2ee57000, 0x2ea12500, 0x2e6dda00, 0x2e298f00, + 0x2ff42400, 0x2fb07100, 0x2f7c8e00, 0x2f38db00, + 0x2cc7d800, 0x2c838d00, 0x2c4f7200, 0x2c0b2700, + 0x2dd68c00, 0x2d92d900, 0x2d5e2600, 0x2d1a7300, + 0x333fc000, 0x337b9500, 0x33b76a00, 0x33f33f00, + 0x322e9400, 0x326ac100, 0x32a63e00, 0x32e26b00, + 0x311d6800, 0x31593d00, 0x3195c200, 0x31d19700, + 0x300c3c00, 0x30486900, 0x30849600, 0x30c0c300, + 0x377a9000, 0x373ec500, 0x37f23a00, 0x37b66f00, + 0x366bc400, 0x362f9100, 0x36e36e00, 0x36a73b00, + 0x35583800, 0x351c6d00, 0x35d09200, 0x3594c700, + 0x34496c00, 0x340d3900, 0x34c1c600, 0x34859300, + 0x3bb56000, 0x3bf13500, 0x3b3dca00, 0x3b799f00, + 0x3aa43400, 0x3ae06100, 0x3a2c9e00, 0x3a68cb00, + 0x3997c800, 0x39d39d00, 0x391f6200, 0x395b3700, + 0x38869c00, 0x38c2c900, 0x380e3600, 0x384a6300, + 0x3ff03000, 0x3fb46500, 0x3f789a00, 0x3f3ccf00, + 0x3ee16400, 0x3ea53100, 0x3e69ce00, 0x3e2d9b00, + 0x3dd29800, 0x3d96cd00, 0x3d5a3200, 0x3d1e6700, + 0x3cc3cc00, 0x3c879900, 0x3c4b6600, 0x3c0f3300, + }, + { + 0x00000000, 0x44550000, 0x88aa0000, 0xccff0000, + 0x115400af, 0x550100af, 0x99fe00af, 0xddab00af, + 0x22a8015e, 0x66fd015e, 0xaa02015e, 0xee57015e, + 0x33fc01f1, 0x77a901f1, 0xbb5601f1, 0xff0301f1, + 0x455002bc, 0x010502bc, 0xcdfa02bc, 0x89af02bc, + 0x54040213, 0x10510213, 0xdcae0213, 0x98fb0213, + 0x67f803e2, 0x23ad03e2, 0xef5203e2, 0xab0703e2, + 0x76ac034d, 0x32f9034d, 0xfe06034d, 0xba53034d, + 0x8aa00578, 0xcef50578, 0x020a0578, 0x465f0578, + 0x9bf405d7, 0xdfa105d7, 0x135e05d7, 0x570b05d7, + 0xa8080426, 0xec5d0426, 0x20a20426, 0x64f70426, + 0xb95c0489, 0xfd090489, 0x31f60489, 0x75a30489, + 0xcff007c4, 0x8ba507c4, 0x475a07c4, 0x030f07c4, + 0xdea4076b, 0x9af1076b, 0x560e076b, 0x125b076b, + 0xed58069a, 0xa90d069a, 0x65f2069a, 0x21a7069a, + 0xfc0c0635, 0xb8590635, 0x74a60635, 0x30f30635, + 0x15400a5f, 0x51150a5f, 0x9dea0a5f, 0xd9bf0a5f, + 0x04140af0, 0x40410af0, 0x8cbe0af0, 0xc8eb0af0, + 0x37e80b01, 0x73bd0b01, 0xbf420b01, 0xfb170b01, + 0x26bc0bae, 0x62e90bae, 0xae160bae, 0xea430bae, + 0x501008e3, 0x144508e3, 0xd8ba08e3, 0x9cef08e3, + 0x4144084c, 0x0511084c, 0xc9ee084c, 0x8dbb084c, + 0x72b809bd, 0x36ed09bd, 0xfa1209bd, 0xbe4709bd, + 0x63ec0912, 0x27b90912, 0xeb460912, 0xaf130912, + 0x9fe00f27, 0xdbb50f27, 0x174a0f27, 0x531f0f27, + 0x8eb40f88, 0xcae10f88, 0x061e0f88, 0x424b0f88, + 0xbd480e79, 0xf91d0e79, 0x35e20e79, 0x71b70e79, + 0xac1c0ed6, 0xe8490ed6, 0x24b60ed6, 0x60e30ed6, + 0xdab00d9b, 0x9ee50d9b, 0x521a0d9b, 0x164f0d9b, + 0xcbe40d34, 0x8fb10d34, 0x434e0d34, 0x071b0d34, + 0xf8180cc5, 0xbc4d0cc5, 0x70b20cc5, 0x34e70cc5, + 0xe94c0c6a, 0xad190c6a, 0x61e60c6a, 0x25b30c6a, + 0x2a8014be, 0x6ed514be, 0xa22a14be, 0xe67f14be, + 0x3bd41411, 0x7f811411, 0xb37e1411, 0xf72b1411, + 0x082815e0, 0x4c7d15e0, 0x808215e0, 0xc4d715e0, + 0x197c154f, 0x5d29154f, 0x91d6154f, 0xd583154f, + 0x6fd01602, 0x2b851602, 0xe77a1602, 0xa32f1602, + 0x7e8416ad, 0x3ad116ad, 0xf62e16ad, 0xb27b16ad, + 0x4d78175c, 0x092d175c, 0xc5d2175c, 0x8187175c, + 0x5c2c17f3, 0x187917f3, 0xd48617f3, 0x90d317f3, + 0xa02011c6, 0xe47511c6, 0x288a11c6, 0x6cdf11c6, + 0xb1741169, 0xf5211169, 0x39de1169, 0x7d8b1169, + 0x82881098, 0xc6dd1098, 0x0a221098, 0x4e771098, + 0x93dc1037, 0xd7891037, 0x1b761037, 0x5f231037, + 0xe570137a, 0xa125137a, 0x6dda137a, 0x298f137a, + 0xf42413d5, 0xb07113d5, 0x7c8e13d5, 0x38db13d5, + 0xc7d81224, 0x838d1224, 0x4f721224, 0x0b271224, + 0xd68c128b, 0x92d9128b, 0x5e26128b, 0x1a73128b, + 0x3fc01ee1, 0x7b951ee1, 0xb76a1ee1, 0xf33f1ee1, + 0x2e941e4e, 0x6ac11e4e, 0xa63e1e4e, 0xe26b1e4e, + 0x1d681fbf, 0x593d1fbf, 0x95c21fbf, 0xd1971fbf, + 0x0c3c1f10, 0x48691f10, 0x84961f10, 0xc0c31f10, + 0x7a901c5d, 0x3ec51c5d, 0xf23a1c5d, 0xb66f1c5d, + 0x6bc41cf2, 0x2f911cf2, 0xe36e1cf2, 0xa73b1cf2, + 0x58381d03, 0x1c6d1d03, 0xd0921d03, 0x94c71d03, + 0x496c1dac, 0x0d391dac, 0xc1c61dac, 0x85931dac, + 0xb5601b99, 0xf1351b99, 0x3dca1b99, 0x799f1b99, + 0xa4341b36, 0xe0611b36, 0x2c9e1b36, 0x68cb1b36, + 0x97c81ac7, 0xd39d1ac7, 0x1f621ac7, 0x5b371ac7, + 0x869c1a68, 0xc2c91a68, 0x0e361a68, 0x4a631a68, + 0xf0301925, 0xb4651925, 0x789a1925, 0x3ccf1925, + 0xe164198a, 0xa531198a, 0x69ce198a, 0x2d9b198a, + 0xd298187b, 0x96cd187b, 0x5a32187b, 0x1e67187b, + 0xc3cc18d4, 0x879918d4, 0x4b6618d4, 0x0f3318d4, + }, + { + 0x00000000, 0x5500297c, 0xaa0052f8, 0xff007b84, + 0x5400a55f, 0x01008c23, 0xfe00f7a7, 0xab00dedb, + 0xa8014abe, 0xfd0163c2, 0x02011846, 0x5701313a, + 0xfc01efe1, 0xa901c69d, 0x5601bd19, 0x03019465, + 0x500295d3, 0x0502bcaf, 0xfa02c72b, 0xaf02ee57, + 0x0402308c, 0x510219f0, 0xae026274, 0xfb024b08, + 0xf803df6d, 0xad03f611, 0x52038d95, 0x0703a4e9, + 0xac037a32, 0xf903534e, 0x060328ca, 0x530301b6, + 0xa0052ba6, 0xf50502da, 0x0a05795e, 0x5f055022, + 0xf4058ef9, 0xa105a785, 0x5e05dc01, 0x0b05f57d, + 0x08046118, 0x5d044864, 0xa20433e0, 0xf7041a9c, + 0x5c04c447, 0x0904ed3b, 0xf60496bf, 0xa304bfc3, + 0xf007be75, 0xa5079709, 0x5a07ec8d, 0x0f07c5f1, + 0xa4071b2a, 0xf1073256, 0x0e0749d2, 0x5b0760ae, + 0x5806f4cb, 0x0d06ddb7, 0xf206a633, 0xa7068f4f, + 0x0c065194, 0x590678e8, 0xa606036c, 0xf3062a10, + 0x400a57e3, 0x150a7e9f, 0xea0a051b, 0xbf0a2c67, + 0x140af2bc, 0x410adbc0, 0xbe0aa044, 0xeb0a8938, + 0xe80b1d5d, 0xbd0b3421, 0x420b4fa5, 0x170b66d9, + 0xbc0bb802, 0xe90b917e, 0x160beafa, 0x430bc386, + 0x1008c230, 0x4508eb4c, 0xba0890c8, 0xef08b9b4, + 0x4408676f, 0x11084e13, 0xee083597, 0xbb081ceb, + 0xb809888e, 0xed09a1f2, 0x1209da76, 0x4709f30a, + 0xec092dd1, 0xb90904ad, 0x46097f29, 0x13095655, + 0xe00f7c45, 0xb50f5539, 0x4a0f2ebd, 0x1f0f07c1, + 0xb40fd91a, 0xe10ff066, 0x1e0f8be2, 0x4b0fa29e, + 0x480e36fb, 0x1d0e1f87, 0xe20e6403, 0xb70e4d7f, + 0x1c0e93a4, 0x490ebad8, 0xb60ec15c, 0xe30ee820, + 0xb00de996, 0xe50dc0ea, 0x1a0dbb6e, 0x4f0d9212, + 0xe40d4cc9, 0xb10d65b5, 0x4e0d1e31, 0x1b0d374d, + 0x180ca328, 0x4d0c8a54, 0xb20cf1d0, 0xe70cd8ac, + 0x4c0c0677, 0x190c2f0b, 0xe60c548f, 0xb30c7df3, + 0x8014afc6, 0xd51486ba, 0x2a14fd3e, 0x7f14d442, + 0xd4140a99, 0x811423e5, 0x7e145861, 0x2b14711d, + 0x2815e578, 0x7d15cc04, 0x8215b780, 0xd7159efc, + 0x7c154027, 0x2915695b, 0xd61512df, 0x83153ba3, + 0xd0163a15, 0x85161369, 0x7a1668ed, 0x2f164191, + 0x84169f4a, 0xd116b636, 0x2e16cdb2, 0x7b16e4ce, + 0x781770ab, 0x2d1759d7, 0xd2172253, 0x87170b2f, + 0x2c17d5f4, 0x7917fc88, 0x8617870c, 0xd317ae70, + 0x20118460, 0x7511ad1c, 0x8a11d698, 0xdf11ffe4, + 0x7411213f, 0x21110843, 0xde1173c7, 0x8b115abb, + 0x8810cede, 0xdd10e7a2, 0x22109c26, 0x7710b55a, + 0xdc106b81, 0x891042fd, 0x76103979, 0x23101005, + 0x701311b3, 0x251338cf, 0xda13434b, 0x8f136a37, + 0x2413b4ec, 0x71139d90, 0x8e13e614, 0xdb13cf68, + 0xd8125b0d, 0x8d127271, 0x721209f5, 0x27122089, + 0x8c12fe52, 0xd912d72e, 0x2612acaa, 0x731285d6, + 0xc01ef825, 0x951ed159, 0x6a1eaadd, 0x3f1e83a1, + 0x941e5d7a, 0xc11e7406, 0x3e1e0f82, 0x6b1e26fe, + 0x681fb29b, 0x3d1f9be7, 0xc21fe063, 0x971fc91f, + 0x3c1f17c4, 0x691f3eb8, 0x961f453c, 0xc31f6c40, + 0x901c6df6, 0xc51c448a, 0x3a1c3f0e, 0x6f1c1672, + 0xc41cc8a9, 0x911ce1d5, 0x6e1c9a51, 0x3b1cb32d, + 0x381d2748, 0x6d1d0e34, 0x921d75b0, 0xc71d5ccc, + 0x6c1d8217, 0x391dab6b, 0xc61dd0ef, 0x931df993, + 0x601bd383, 0x351bfaff, 0xca1b817b, 0x9f1ba807, + 0x341b76dc, 0x611b5fa0, 0x9e1b2424, 0xcb1b0d58, + 0xc81a993d, 0x9d1ab041, 0x621acbc5, 0x371ae2b9, + 0x9c1a3c62, 0xc91a151e, 0x361a6e9a, 0x631a47e6, + 0x30194650, 0x65196f2c, 0x9a1914a8, 0xcf193dd4, + 0x6419e30f, 0x3119ca73, 0xce19b1f7, 0x9b19988b, + 0x98180cee, 0xcd182592, 0x32185e16, 0x6718776a, + 0xcc18a9b1, 0x991880cd, 0x6618fb49, 0x3318d235, + }, + { + 0x00000000, 0x00295f23, 0x0052be46, 0x007be165, + 0x00a57c8c, 0x008c23af, 0x00f7c2ca, 0x00de9de9, + 0x014af918, 0x0163a63b, 0x0118475e, 0x0131187d, + 0x01ef8594, 0x01c6dab7, 0x01bd3bd2, 0x019464f1, + 0x0295f230, 0x02bcad13, 0x02c74c76, 0x02ee1355, + 0x02308ebc, 0x0219d19f, 0x026230fa, 0x024b6fd9, + 0x03df0b28, 0x03f6540b, 0x038db56e, 0x03a4ea4d, + 0x037a77a4, 0x03532887, 0x0328c9e2, 0x030196c1, + 0x052be460, 0x0502bb43, 0x05795a26, 0x05500505, + 0x058e98ec, 0x05a7c7cf, 0x05dc26aa, 0x05f57989, + 0x04611d78, 0x0448425b, 0x0433a33e, 0x041afc1d, + 0x04c461f4, 0x04ed3ed7, 0x0496dfb2, 0x04bf8091, + 0x07be1650, 0x07974973, 0x07eca816, 0x07c5f735, + 0x071b6adc, 0x073235ff, 0x0749d49a, 0x07608bb9, + 0x06f4ef48, 0x06ddb06b, 0x06a6510e, 0x068f0e2d, + 0x065193c4, 0x0678cce7, 0x06032d82, 0x062a72a1, + 0x0a57c8c0, 0x0a7e97e3, 0x0a057686, 0x0a2c29a5, + 0x0af2b44c, 0x0adbeb6f, 0x0aa00a0a, 0x0a895529, + 0x0b1d31d8, 0x0b346efb, 0x0b4f8f9e, 0x0b66d0bd, + 0x0bb84d54, 0x0b911277, 0x0beaf312, 0x0bc3ac31, + 0x08c23af0, 0x08eb65d3, 0x089084b6, 0x08b9db95, + 0x0867467c, 0x084e195f, 0x0835f83a, 0x081ca719, + 0x0988c3e8, 0x09a19ccb, 0x09da7dae, 0x09f3228d, + 0x092dbf64, 0x0904e047, 0x097f0122, 0x09565e01, + 0x0f7c2ca0, 0x0f557383, 0x0f2e92e6, 0x0f07cdc5, + 0x0fd9502c, 0x0ff00f0f, 0x0f8bee6a, 0x0fa2b149, + 0x0e36d5b8, 0x0e1f8a9b, 0x0e646bfe, 0x0e4d34dd, + 0x0e93a934, 0x0ebaf617, 0x0ec11772, 0x0ee84851, + 0x0de9de90, 0x0dc081b3, 0x0dbb60d6, 0x0d923ff5, + 0x0d4ca21c, 0x0d65fd3f, 0x0d1e1c5a, 0x0d374379, + 0x0ca32788, 0x0c8a78ab, 0x0cf199ce, 0x0cd8c6ed, + 0x0c065b04, 0x0c2f0427, 0x0c54e542, 0x0c7dba61, + 0x14af9180, 0x1486cea3, 0x14fd2fc6, 0x14d470e5, + 0x140aed0c, 0x1423b22f, 0x1458534a, 0x14710c69, + 0x15e56898, 0x15cc37bb, 0x15b7d6de, 0x159e89fd, + 0x15401414, 0x15694b37, 0x1512aa52, 0x153bf571, + 0x163a63b0, 0x16133c93, 0x1668ddf6, 0x164182d5, + 0x169f1f3c, 0x16b6401f, 0x16cda17a, 0x16e4fe59, + 0x17709aa8, 0x1759c58b, 0x172224ee, 0x170b7bcd, + 0x17d5e624, 0x17fcb907, 0x17875862, 0x17ae0741, + 0x118475e0, 0x11ad2ac3, 0x11d6cba6, 0x11ff9485, + 0x1121096c, 0x1108564f, 0x1173b72a, 0x115ae809, + 0x10ce8cf8, 0x10e7d3db, 0x109c32be, 0x10b56d9d, + 0x106bf074, 0x1042af57, 0x10394e32, 0x10101111, + 0x131187d0, 0x1338d8f3, 0x13433996, 0x136a66b5, + 0x13b4fb5c, 0x139da47f, 0x13e6451a, 0x13cf1a39, + 0x125b7ec8, 0x127221eb, 0x1209c08e, 0x12209fad, + 0x12fe0244, 0x12d75d67, 0x12acbc02, 0x1285e321, + 0x1ef85940, 0x1ed10663, 0x1eaae706, 0x1e83b825, + 0x1e5d25cc, 0x1e747aef, 0x1e0f9b8a, 0x1e26c4a9, + 0x1fb2a058, 0x1f9bff7b, 0x1fe01e1e, 0x1fc9413d, + 0x1f17dcd4, 0x1f3e83f7, 0x1f456292, 0x1f6c3db1, + 0x1c6dab70, 0x1c44f453, 0x1c3f1536, 0x1c164a15, + 0x1cc8d7fc, 0x1ce188df, 0x1c9a69ba, 0x1cb33699, + 0x1d275268, 0x1d0e0d4b, 0x1d75ec2e, 0x1d5cb30d, + 0x1d822ee4, 0x1dab71c7, 0x1dd090a2, 0x1df9cf81, + 0x1bd3bd20, 0x1bfae203, 0x1b810366, 0x1ba85c45, + 0x1b76c1ac, 0x1b5f9e8f, 0x1b247fea, 0x1b0d20c9, + 0x1a994438, 0x1ab01b1b, 0x1acbfa7e, 0x1ae2a55d, + 0x1a3c38b4, 0x1a156797, 0x1a6e86f2, 0x1a47d9d1, + 0x19464f10, 0x196f1033, 0x1914f156, 0x193dae75, + 0x19e3339c, 0x19ca6cbf, 0x19b18dda, 0x1998d2f9, + 0x180cb608, 0x1825e92b, 0x185e084e, 0x1877576d, + 0x18a9ca84, 0x188095a7, 0x18fb74c2, 0x18d22be1, + }, + { + 0x00000000, 0x295f2300, 0x52be4600, 0x7be16500, + 0xa57c8c00, 0x8c23af00, 0xf7c2ca00, 0xde9de900, + 0x4af918af, 0x63a63baf, 0x18475eaf, 0x31187daf, + 0xef8594af, 0xc6dab7af, 0xbd3bd2af, 0x9464f1af, + 0x95f2315e, 0xbcad125e, 0xc74c775e, 0xee13545e, + 0x308ebd5e, 0x19d19e5e, 0x6230fb5e, 0x4b6fd85e, + 0xdf0b29f1, 0xf6540af1, 0x8db56ff1, 0xa4ea4cf1, + 0x7a77a5f1, 0x532886f1, 0x28c9e3f1, 0x0196c0f1, + 0x2be46213, 0x02bb4113, 0x795a2413, 0x50050713, + 0x8e98ee13, 0xa7c7cd13, 0xdc26a813, 0xf5798b13, + 0x611d7abc, 0x484259bc, 0x33a33cbc, 0x1afc1fbc, + 0xc461f6bc, 0xed3ed5bc, 0x96dfb0bc, 0xbf8093bc, + 0xbe16534d, 0x9749704d, 0xeca8154d, 0xc5f7364d, + 0x1b6adf4d, 0x3235fc4d, 0x49d4994d, 0x608bba4d, + 0xf4ef4be2, 0xddb068e2, 0xa6510de2, 0x8f0e2ee2, + 0x5193c7e2, 0x78cce4e2, 0x032d81e2, 0x2a72a2e2, + 0x57c8c426, 0x7e97e726, 0x05768226, 0x2c29a126, + 0xf2b44826, 0xdbeb6b26, 0xa00a0e26, 0x89552d26, + 0x1d31dc89, 0x346eff89, 0x4f8f9a89, 0x66d0b989, + 0xb84d5089, 0x91127389, 0xeaf31689, 0xc3ac3589, + 0xc23af578, 0xeb65d678, 0x9084b378, 0xb9db9078, + 0x67467978, 0x4e195a78, 0x35f83f78, 0x1ca71c78, + 0x88c3edd7, 0xa19cced7, 0xda7dabd7, 0xf32288d7, + 0x2dbf61d7, 0x04e042d7, 0x7f0127d7, 0x565e04d7, + 0x7c2ca635, 0x55738535, 0x2e92e035, 0x07cdc335, + 0xd9502a35, 0xf00f0935, 0x8bee6c35, 0xa2b14f35, + 0x36d5be9a, 0x1f8a9d9a, 0x646bf89a, 0x4d34db9a, + 0x93a9329a, 0xbaf6119a, 0xc117749a, 0xe848579a, + 0xe9de976b, 0xc081b46b, 0xbb60d16b, 0x923ff26b, + 0x4ca21b6b, 0x65fd386b, 0x1e1c5d6b, 0x37437e6b, + 0xa3278fc4, 0x8a78acc4, 0xf199c9c4, 0xd8c6eac4, + 0x065b03c4, 0x2f0420c4, 0x54e545c4, 0x7dba66c4, + 0xaf91884c, 0x86ceab4c, 0xfd2fce4c, 0xd470ed4c, + 0x0aed044c, 0x23b2274c, 0x5853424c, 0x710c614c, + 0xe56890e3, 0xcc37b3e3, 0xb7d6d6e3, 0x9e89f5e3, + 0x40141ce3, 0x694b3fe3, 0x12aa5ae3, 0x3bf579e3, + 0x3a63b912, 0x133c9a12, 0x68ddff12, 0x4182dc12, + 0x9f1f3512, 0xb6401612, 0xcda17312, 0xe4fe5012, + 0x709aa1bd, 0x59c582bd, 0x2224e7bd, 0x0b7bc4bd, + 0xd5e62dbd, 0xfcb90ebd, 0x87586bbd, 0xae0748bd, + 0x8475ea5f, 0xad2ac95f, 0xd6cbac5f, 0xff948f5f, + 0x2109665f, 0x0856455f, 0x73b7205f, 0x5ae8035f, + 0xce8cf2f0, 0xe7d3d1f0, 0x9c32b4f0, 0xb56d97f0, + 0x6bf07ef0, 0x42af5df0, 0x394e38f0, 0x10111bf0, + 0x1187db01, 0x38d8f801, 0x43399d01, 0x6a66be01, + 0xb4fb5701, 0x9da47401, 0xe6451101, 0xcf1a3201, + 0x5b7ec3ae, 0x7221e0ae, 0x09c085ae, 0x209fa6ae, + 0xfe024fae, 0xd75d6cae, 0xacbc09ae, 0x85e32aae, + 0xf8594c6a, 0xd1066f6a, 0xaae70a6a, 0x83b8296a, + 0x5d25c06a, 0x747ae36a, 0x0f9b866a, 0x26c4a56a, + 0xb2a054c5, 0x9bff77c5, 0xe01e12c5, 0xc94131c5, + 0x17dcd8c5, 0x3e83fbc5, 0x45629ec5, 0x6c3dbdc5, + 0x6dab7d34, 0x44f45e34, 0x3f153b34, 0x164a1834, + 0xc8d7f134, 0xe188d234, 0x9a69b734, 0xb3369434, + 0x2752659b, 0x0e0d469b, 0x75ec239b, 0x5cb3009b, + 0x822ee99b, 0xab71ca9b, 0xd090af9b, 0xf9cf8c9b, + 0xd3bd2e79, 0xfae20d79, 0x81036879, 0xa85c4b79, + 0x76c1a279, 0x5f9e8179, 0x247fe479, 0x0d20c779, + 0x994436d6, 0xb01b15d6, 0xcbfa70d6, 0xe2a553d6, + 0x3c38bad6, 0x156799d6, 0x6e86fcd6, 0x47d9dfd6, + 0x464f1f27, 0x6f103c27, 0x14f15927, 0x3dae7a27, + 0xe3339327, 0xca6cb027, 0xb18dd527, 0x98d2f627, + 0x0cb60788, 0x25e92488, 0x5e084188, 0x77576288, + 0xa9ca8b88, 0x8095a888, 0xfb74cd88, 0xd22bee88, + }, + { + 0x00000000, 0x5f231037, 0xbe46206e, 0xe1653059, + 0x7c8c4073, 0x23af5044, 0xc2ca601d, 0x9de9702a, + 0xf91880e6, 0xa63b90d1, 0x475ea088, 0x187db0bf, + 0x8594c095, 0xdab7d0a2, 0x3bd2e0fb, 0x64f1f0cc, + 0xf2310163, 0xad121154, 0x4c77210d, 0x1354313a, + 0x8ebd4110, 0xd19e5127, 0x30fb617e, 0x6fd87149, + 0x0b298185, 0x540a91b2, 0xb56fa1eb, 0xea4cb1dc, + 0x77a5c1f6, 0x2886d1c1, 0xc9e3e198, 0x96c0f1af, + 0xe4620269, 0xbb41125e, 0x5a242207, 0x05073230, + 0x98ee421a, 0xc7cd522d, 0x26a86274, 0x798b7243, + 0x1d7a828f, 0x425992b8, 0xa33ca2e1, 0xfc1fb2d6, + 0x61f6c2fc, 0x3ed5d2cb, 0xdfb0e292, 0x8093f2a5, + 0x1653030a, 0x4970133d, 0xa8152364, 0xf7363353, + 0x6adf4379, 0x35fc534e, 0xd4996317, 0x8bba7320, + 0xef4b83ec, 0xb06893db, 0x510da382, 0x0e2eb3b5, + 0x93c7c39f, 0xcce4d3a8, 0x2d81e3f1, 0x72a2f3c6, + 0xc8c4047d, 0x97e7144a, 0x76822413, 0x29a13424, + 0xb448440e, 0xeb6b5439, 0x0a0e6460, 0x552d7457, + 0x31dc849b, 0x6eff94ac, 0x8f9aa4f5, 0xd0b9b4c2, + 0x4d50c4e8, 0x1273d4df, 0xf316e486, 0xac35f4b1, + 0x3af5051e, 0x65d61529, 0x84b32570, 0xdb903547, + 0x4679456d, 0x195a555a, 0xf83f6503, 0xa71c7534, + 0xc3ed85f8, 0x9cce95cf, 0x7daba596, 0x2288b5a1, + 0xbf61c58b, 0xe042d5bc, 0x0127e5e5, 0x5e04f5d2, + 0x2ca60614, 0x73851623, 0x92e0267a, 0xcdc3364d, + 0x502a4667, 0x0f095650, 0xee6c6609, 0xb14f763e, + 0xd5be86f2, 0x8a9d96c5, 0x6bf8a69c, 0x34dbb6ab, + 0xa932c681, 0xf611d6b6, 0x1774e6ef, 0x4857f6d8, + 0xde970777, 0x81b41740, 0x60d12719, 0x3ff2372e, + 0xa21b4704, 0xfd385733, 0x1c5d676a, 0x437e775d, + 0x278f8791, 0x78ac97a6, 0x99c9a7ff, 0xc6eab7c8, + 0x5b03c7e2, 0x0420d7d5, 0xe545e78c, 0xba66f7bb, + 0x91880855, 0xceab1862, 0x2fce283b, 0x70ed380c, + 0xed044826, 0xb2275811, 0x53426848, 0x0c61787f, + 0x689088b3, 0x37b39884, 0xd6d6a8dd, 0x89f5b8ea, + 0x141cc8c0, 0x4b3fd8f7, 0xaa5ae8ae, 0xf579f899, + 0x63b90936, 0x3c9a1901, 0xddff2958, 0x82dc396f, + 0x1f354945, 0x40165972, 0xa173692b, 0xfe50791c, + 0x9aa189d0, 0xc58299e7, 0x24e7a9be, 0x7bc4b989, + 0xe62dc9a3, 0xb90ed994, 0x586be9cd, 0x0748f9fa, + 0x75ea0a3c, 0x2ac91a0b, 0xcbac2a52, 0x948f3a65, + 0x09664a4f, 0x56455a78, 0xb7206a21, 0xe8037a16, + 0x8cf28ada, 0xd3d19aed, 0x32b4aab4, 0x6d97ba83, + 0xf07ecaa9, 0xaf5dda9e, 0x4e38eac7, 0x111bfaf0, + 0x87db0b5f, 0xd8f81b68, 0x399d2b31, 0x66be3b06, + 0xfb574b2c, 0xa4745b1b, 0x45116b42, 0x1a327b75, + 0x7ec38bb9, 0x21e09b8e, 0xc085abd7, 0x9fa6bbe0, + 0x024fcbca, 0x5d6cdbfd, 0xbc09eba4, 0xe32afb93, + 0x594c0c28, 0x066f1c1f, 0xe70a2c46, 0xb8293c71, + 0x25c04c5b, 0x7ae35c6c, 0x9b866c35, 0xc4a57c02, + 0xa0548cce, 0xff779cf9, 0x1e12aca0, 0x4131bc97, + 0xdcd8ccbd, 0x83fbdc8a, 0x629eecd3, 0x3dbdfce4, + 0xab7d0d4b, 0xf45e1d7c, 0x153b2d25, 0x4a183d12, + 0xd7f14d38, 0x88d25d0f, 0x69b76d56, 0x36947d61, + 0x52658dad, 0x0d469d9a, 0xec23adc3, 0xb300bdf4, + 0x2ee9cdde, 0x71cadde9, 0x90afedb0, 0xcf8cfd87, + 0xbd2e0e41, 0xe20d1e76, 0x03682e2f, 0x5c4b3e18, + 0xc1a24e32, 0x9e815e05, 0x7fe46e5c, 0x20c77e6b, + 0x44368ea7, 0x1b159e90, 0xfa70aec9, 0xa553befe, + 0x38baced4, 0x6799dee3, 0x86fceeba, 0xd9dffe8d, + 0x4f1f0f22, 0x103c1f15, 0xf1592f4c, 0xae7a3f7b, + 0x33934f51, 0x6cb05f66, 0x8dd56f3f, 0xd2f67f08, + 0xb6078fc4, 0xe9249ff3, 0x0841afaa, 0x5762bf9d, + 0xca8bcfb7, 0x95a8df80, 0x74cdefd9, 0x2beeffee, + }, + { + 0x00000000, 0x23101005, 0x4620200a, 0x6530300f, + 0x8c404014, 0xaf505011, 0xca60601e, 0xe970701b, + 0x18808087, 0x3b909082, 0x5ea0a08d, 0x7db0b088, + 0x94c0c093, 0xb7d0d096, 0xd2e0e099, 0xf1f0f09c, + 0x3101010e, 0x1211110b, 0x77212104, 0x54313101, + 0xbd41411a, 0x9e51511f, 0xfb616110, 0xd8717115, + 0x29818189, 0x0a91918c, 0x6fa1a183, 0x4cb1b186, + 0xa5c1c19d, 0x86d1d198, 0xe3e1e197, 0xc0f1f192, + 0x6202021c, 0x41121219, 0x24222216, 0x07323213, + 0xee424208, 0xcd52520d, 0xa8626202, 0x8b727207, + 0x7a82829b, 0x5992929e, 0x3ca2a291, 0x1fb2b294, + 0xf6c2c28f, 0xd5d2d28a, 0xb0e2e285, 0x93f2f280, + 0x53030312, 0x70131317, 0x15232318, 0x3633331d, + 0xdf434306, 0xfc535303, 0x9963630c, 0xba737309, + 0x4b838395, 0x68939390, 0x0da3a39f, 0x2eb3b39a, + 0xc7c3c381, 0xe4d3d384, 0x81e3e38b, 0xa2f3f38e, + 0xc4040438, 0xe714143d, 0x82242432, 0xa1343437, + 0x4844442c, 0x6b545429, 0x0e646426, 0x2d747423, + 0xdc8484bf, 0xff9494ba, 0x9aa4a4b5, 0xb9b4b4b0, + 0x50c4c4ab, 0x73d4d4ae, 0x16e4e4a1, 0x35f4f4a4, + 0xf5050536, 0xd6151533, 0xb325253c, 0x90353539, + 0x79454522, 0x5a555527, 0x3f656528, 0x1c75752d, + 0xed8585b1, 0xce9595b4, 0xaba5a5bb, 0x88b5b5be, + 0x61c5c5a5, 0x42d5d5a0, 0x27e5e5af, 0x04f5f5aa, + 0xa6060624, 0x85161621, 0xe026262e, 0xc336362b, + 0x2a464630, 0x09565635, 0x6c66663a, 0x4f76763f, + 0xbe8686a3, 0x9d9696a6, 0xf8a6a6a9, 0xdbb6b6ac, + 0x32c6c6b7, 0x11d6d6b2, 0x74e6e6bd, 0x57f6f6b8, + 0x9707072a, 0xb417172f, 0xd1272720, 0xf2373725, + 0x1b47473e, 0x3857573b, 0x5d676734, 0x7e777731, + 0x8f8787ad, 0xac9797a8, 0xc9a7a7a7, 0xeab7b7a2, + 0x03c7c7b9, 0x20d7d7bc, 0x45e7e7b3, 0x66f7f7b6, + 0x880808df, 0xab1818da, 0xce2828d5, 0xed3838d0, + 0x044848cb, 0x275858ce, 0x426868c1, 0x617878c4, + 0x90888858, 0xb398985d, 0xd6a8a852, 0xf5b8b857, + 0x1cc8c84c, 0x3fd8d849, 0x5ae8e846, 0x79f8f843, + 0xb90909d1, 0x9a1919d4, 0xff2929db, 0xdc3939de, + 0x354949c5, 0x165959c0, 0x736969cf, 0x507979ca, + 0xa1898956, 0x82999953, 0xe7a9a95c, 0xc4b9b959, + 0x2dc9c942, 0x0ed9d947, 0x6be9e948, 0x48f9f94d, + 0xea0a0ac3, 0xc91a1ac6, 0xac2a2ac9, 0x8f3a3acc, + 0x664a4ad7, 0x455a5ad2, 0x206a6add, 0x037a7ad8, + 0xf28a8a44, 0xd19a9a41, 0xb4aaaa4e, 0x97baba4b, + 0x7ecaca50, 0x5ddada55, 0x38eaea5a, 0x1bfafa5f, + 0xdb0b0bcd, 0xf81b1bc8, 0x9d2b2bc7, 0xbe3b3bc2, + 0x574b4bd9, 0x745b5bdc, 0x116b6bd3, 0x327b7bd6, + 0xc38b8b4a, 0xe09b9b4f, 0x85abab40, 0xa6bbbb45, + 0x4fcbcb5e, 0x6cdbdb5b, 0x09ebeb54, 0x2afbfb51, + 0x4c0c0ce7, 0x6f1c1ce2, 0x0a2c2ced, 0x293c3ce8, + 0xc04c4cf3, 0xe35c5cf6, 0x866c6cf9, 0xa57c7cfc, + 0x548c8c60, 0x779c9c65, 0x12acac6a, 0x31bcbc6f, + 0xd8cccc74, 0xfbdcdc71, 0x9eecec7e, 0xbdfcfc7b, + 0x7d0d0de9, 0x5e1d1dec, 0x3b2d2de3, 0x183d3de6, + 0xf14d4dfd, 0xd25d5df8, 0xb76d6df7, 0x947d7df2, + 0x658d8d6e, 0x469d9d6b, 0x23adad64, 0x00bdbd61, + 0xe9cdcd7a, 0xcadddd7f, 0xafeded70, 0x8cfdfd75, + 0x2e0e0efb, 0x0d1e1efe, 0x682e2ef1, 0x4b3e3ef4, + 0xa24e4eef, 0x815e5eea, 0xe46e6ee5, 0xc77e7ee0, + 0x368e8e7c, 0x159e9e79, 0x70aeae76, 0x53bebe73, + 0xbacece68, 0x99dede6d, 0xfceeee62, 0xdffefe67, + 0x1f0f0ff5, 0x3c1f1ff0, 0x592f2fff, 0x7a3f3ffa, + 0x934f4fe1, 0xb05f5fe4, 0xd56f6feb, 0xf67f7fee, + 0x078f8f72, 0x249f9f77, 0x41afaf78, 0x62bfbf7d, + 0x8bcfcf66, 0xa8dfdf63, 0xcdefef6c, 0xeeffff69, + }, + { + 0x00000000, 0x10101111, 0x20202222, 0x30303333, + 0x40404444, 0x50505555, 0x60606666, 0x70707777, + 0x80808888, 0x90909999, 0xa0a0aaaa, 0xb0b0bbbb, + 0xc0c0cccc, 0xd0d0dddd, 0xe0e0eeee, 0xf0f0ffff, + 0x010111bf, 0x111100ae, 0x2121339d, 0x3131228c, + 0x414155fb, 0x515144ea, 0x616177d9, 0x717166c8, + 0x81819937, 0x91918826, 0xa1a1bb15, 0xb1b1aa04, + 0xc1c1dd73, 0xd1d1cc62, 0xe1e1ff51, 0xf1f1ee40, + 0x0202237e, 0x1212326f, 0x2222015c, 0x3232104d, + 0x4242673a, 0x5252762b, 0x62624518, 0x72725409, + 0x8282abf6, 0x9292bae7, 0xa2a289d4, 0xb2b298c5, + 0xc2c2efb2, 0xd2d2fea3, 0xe2e2cd90, 0xf2f2dc81, + 0x030332c1, 0x131323d0, 0x232310e3, 0x333301f2, + 0x43437685, 0x53536794, 0x636354a7, 0x737345b6, + 0x8383ba49, 0x9393ab58, 0xa3a3986b, 0xb3b3897a, + 0xc3c3fe0d, 0xd3d3ef1c, 0xe3e3dc2f, 0xf3f3cd3e, + 0x040446fc, 0x141457ed, 0x242464de, 0x343475cf, + 0x444402b8, 0x545413a9, 0x6464209a, 0x7474318b, + 0x8484ce74, 0x9494df65, 0xa4a4ec56, 0xb4b4fd47, + 0xc4c48a30, 0xd4d49b21, 0xe4e4a812, 0xf4f4b903, + 0x05055743, 0x15154652, 0x25257561, 0x35356470, + 0x45451307, 0x55550216, 0x65653125, 0x75752034, + 0x8585dfcb, 0x9595ceda, 0xa5a5fde9, 0xb5b5ecf8, + 0xc5c59b8f, 0xd5d58a9e, 0xe5e5b9ad, 0xf5f5a8bc, + 0x06066582, 0x16167493, 0x262647a0, 0x363656b1, + 0x464621c6, 0x565630d7, 0x666603e4, 0x767612f5, + 0x8686ed0a, 0x9696fc1b, 0xa6a6cf28, 0xb6b6de39, + 0xc6c6a94e, 0xd6d6b85f, 0xe6e68b6c, 0xf6f69a7d, + 0x0707743d, 0x1717652c, 0x2727561f, 0x3737470e, + 0x47473079, 0x57572168, 0x6767125b, 0x7777034a, + 0x8787fcb5, 0x9797eda4, 0xa7a7de97, 0xb7b7cf86, + 0xc7c7b8f1, 0xd7d7a9e0, 0xe7e79ad3, 0xf7f78bc2, + 0x08088df8, 0x18189ce9, 0x2828afda, 0x3838becb, + 0x4848c9bc, 0x5858d8ad, 0x6868eb9e, 0x7878fa8f, + 0x88880570, 0x98981461, 0xa8a82752, 0xb8b83643, + 0xc8c84134, 0xd8d85025, 0xe8e86316, 0xf8f87207, + 0x09099c47, 0x19198d56, 0x2929be65, 0x3939af74, + 0x4949d803, 0x5959c912, 0x6969fa21, 0x7979eb30, + 0x898914cf, 0x999905de, 0xa9a936ed, 0xb9b927fc, + 0xc9c9508b, 0xd9d9419a, 0xe9e972a9, 0xf9f963b8, + 0x0a0aae86, 0x1a1abf97, 0x2a2a8ca4, 0x3a3a9db5, + 0x4a4aeac2, 0x5a5afbd3, 0x6a6ac8e0, 0x7a7ad9f1, + 0x8a8a260e, 0x9a9a371f, 0xaaaa042c, 0xbaba153d, + 0xcaca624a, 0xdada735b, 0xeaea4068, 0xfafa5179, + 0x0b0bbf39, 0x1b1bae28, 0x2b2b9d1b, 0x3b3b8c0a, + 0x4b4bfb7d, 0x5b5bea6c, 0x6b6bd95f, 0x7b7bc84e, + 0x8b8b37b1, 0x9b9b26a0, 0xabab1593, 0xbbbb0482, + 0xcbcb73f5, 0xdbdb62e4, 0xebeb51d7, 0xfbfb40c6, + 0x0c0ccb04, 0x1c1cda15, 0x2c2ce926, 0x3c3cf837, + 0x4c4c8f40, 0x5c5c9e51, 0x6c6cad62, 0x7c7cbc73, + 0x8c8c438c, 0x9c9c529d, 0xacac61ae, 0xbcbc70bf, + 0xcccc07c8, 0xdcdc16d9, 0xecec25ea, 0xfcfc34fb, + 0x0d0ddabb, 0x1d1dcbaa, 0x2d2df899, 0x3d3de988, + 0x4d4d9eff, 0x5d5d8fee, 0x6d6dbcdd, 0x7d7dadcc, + 0x8d8d5233, 0x9d9d4322, 0xadad7011, 0xbdbd6100, + 0xcdcd1677, 0xdddd0766, 0xeded3455, 0xfdfd2544, + 0x0e0ee87a, 0x1e1ef96b, 0x2e2eca58, 0x3e3edb49, + 0x4e4eac3e, 0x5e5ebd2f, 0x6e6e8e1c, 0x7e7e9f0d, + 0x8e8e60f2, 0x9e9e71e3, 0xaeae42d0, 0xbebe53c1, + 0xcece24b6, 0xdede35a7, 0xeeee0694, 0xfefe1785, + 0x0f0ff9c5, 0x1f1fe8d4, 0x2f2fdbe7, 0x3f3fcaf6, + 0x4f4fbd81, 0x5f5fac90, 0x6f6f9fa3, 0x7f7f8eb2, + 0x8f8f714d, 0x9f9f605c, 0xafaf536f, 0xbfbf427e, + 0xcfcf3509, 0xdfdf2418, 0xefef172b, 0xffff063a, + }, + { + 0x00000000, 0x10111bf0, 0x202237e0, 0x30332c10, + 0x40446fc0, 0x50557430, 0x60665820, 0x707743d0, + 0x8088df80, 0x9099c470, 0xa0aae860, 0xb0bbf390, + 0xc0ccb040, 0xd0ddabb0, 0xe0ee87a0, 0xf0ff9c50, + 0x0111bfaf, 0x1100a45f, 0x2133884f, 0x312293bf, + 0x4155d06f, 0x5144cb9f, 0x6177e78f, 0x7166fc7f, + 0x8199602f, 0x91887bdf, 0xa1bb57cf, 0xb1aa4c3f, + 0xc1dd0fef, 0xd1cc141f, 0xe1ff380f, 0xf1ee23ff, + 0x02237f5e, 0x123264ae, 0x220148be, 0x3210534e, + 0x4267109e, 0x52760b6e, 0x6245277e, 0x72543c8e, + 0x82aba0de, 0x92babb2e, 0xa289973e, 0xb2988cce, + 0xc2efcf1e, 0xd2fed4ee, 0xe2cdf8fe, 0xf2dce30e, + 0x0332c0f1, 0x1323db01, 0x2310f711, 0x3301ece1, + 0x4376af31, 0x5367b4c1, 0x635498d1, 0x73458321, + 0x83ba1f71, 0x93ab0481, 0xa3982891, 0xb3893361, + 0xc3fe70b1, 0xd3ef6b41, 0xe3dc4751, 0xf3cd5ca1, + 0x0446febc, 0x1457e54c, 0x2464c95c, 0x3475d2ac, + 0x4402917c, 0x54138a8c, 0x6420a69c, 0x7431bd6c, + 0x84ce213c, 0x94df3acc, 0xa4ec16dc, 0xb4fd0d2c, + 0xc48a4efc, 0xd49b550c, 0xe4a8791c, 0xf4b962ec, + 0x05574113, 0x15465ae3, 0x257576f3, 0x35646d03, + 0x45132ed3, 0x55023523, 0x65311933, 0x752002c3, + 0x85df9e93, 0x95ce8563, 0xa5fda973, 0xb5ecb283, + 0xc59bf153, 0xd58aeaa3, 0xe5b9c6b3, 0xf5a8dd43, + 0x066581e2, 0x16749a12, 0x2647b602, 0x3656adf2, + 0x4621ee22, 0x5630f5d2, 0x6603d9c2, 0x7612c232, + 0x86ed5e62, 0x96fc4592, 0xa6cf6982, 0xb6de7272, + 0xc6a931a2, 0xd6b82a52, 0xe68b0642, 0xf69a1db2, + 0x07743e4d, 0x176525bd, 0x275609ad, 0x3747125d, + 0x4730518d, 0x57214a7d, 0x6712666d, 0x77037d9d, + 0x87fce1cd, 0x97edfa3d, 0xa7ded62d, 0xb7cfcddd, + 0xc7b88e0d, 0xd7a995fd, 0xe79ab9ed, 0xf78ba21d, + 0x088dfd78, 0x189ce688, 0x28afca98, 0x38bed168, + 0x48c992b8, 0x58d88948, 0x68eba558, 0x78fabea8, + 0x880522f8, 0x98143908, 0xa8271518, 0xb8360ee8, + 0xc8414d38, 0xd85056c8, 0xe8637ad8, 0xf8726128, + 0x099c42d7, 0x198d5927, 0x29be7537, 0x39af6ec7, + 0x49d82d17, 0x59c936e7, 0x69fa1af7, 0x79eb0107, + 0x89149d57, 0x990586a7, 0xa936aab7, 0xb927b147, + 0xc950f297, 0xd941e967, 0xe972c577, 0xf963de87, + 0x0aae8226, 0x1abf99d6, 0x2a8cb5c6, 0x3a9dae36, + 0x4aeaede6, 0x5afbf616, 0x6ac8da06, 0x7ad9c1f6, + 0x8a265da6, 0x9a374656, 0xaa046a46, 0xba1571b6, + 0xca623266, 0xda732996, 0xea400586, 0xfa511e76, + 0x0bbf3d89, 0x1bae2679, 0x2b9d0a69, 0x3b8c1199, + 0x4bfb5249, 0x5bea49b9, 0x6bd965a9, 0x7bc87e59, + 0x8b37e209, 0x9b26f9f9, 0xab15d5e9, 0xbb04ce19, + 0xcb738dc9, 0xdb629639, 0xeb51ba29, 0xfb40a1d9, + 0x0ccb03c4, 0x1cda1834, 0x2ce93424, 0x3cf82fd4, + 0x4c8f6c04, 0x5c9e77f4, 0x6cad5be4, 0x7cbc4014, + 0x8c43dc44, 0x9c52c7b4, 0xac61eba4, 0xbc70f054, + 0xcc07b384, 0xdc16a874, 0xec258464, 0xfc349f94, + 0x0ddabc6b, 0x1dcba79b, 0x2df88b8b, 0x3de9907b, + 0x4d9ed3ab, 0x5d8fc85b, 0x6dbce44b, 0x7dadffbb, + 0x8d5263eb, 0x9d43781b, 0xad70540b, 0xbd614ffb, + 0xcd160c2b, 0xdd0717db, 0xed343bcb, 0xfd25203b, + 0x0ee87c9a, 0x1ef9676a, 0x2eca4b7a, 0x3edb508a, + 0x4eac135a, 0x5ebd08aa, 0x6e8e24ba, 0x7e9f3f4a, + 0x8e60a31a, 0x9e71b8ea, 0xae4294fa, 0xbe538f0a, + 0xce24ccda, 0xde35d72a, 0xee06fb3a, 0xfe17e0ca, + 0x0ff9c335, 0x1fe8d8c5, 0x2fdbf4d5, 0x3fcaef25, + 0x4fbdacf5, 0x5facb705, 0x6f9f9b15, 0x7f8e80e5, + 0x8f711cb5, 0x9f600745, 0xaf532b55, 0xbf4230a5, + 0xcf357375, 0xdf246885, 0xef174495, 0xff065f65, + }, + { + 0x00000000, 0x111bfaf0, 0x2237f5e0, 0x332c0f10, + 0x446febc0, 0x55741130, 0x66581e20, 0x7743e4d0, + 0x88dfd780, 0x99c42d70, 0xaae82260, 0xbbf3d890, + 0xccb03c40, 0xddabc6b0, 0xee87c9a0, 0xff9c3350, + 0x11bfafaf, 0x00a4555f, 0x33885a4f, 0x2293a0bf, + 0x55d0446f, 0x44cbbe9f, 0x77e7b18f, 0x66fc4b7f, + 0x9960782f, 0x887b82df, 0xbb578dcf, 0xaa4c773f, + 0xdd0f93ef, 0xcc14691f, 0xff38660f, 0xee239cff, + 0x237f5f5e, 0x3264a5ae, 0x0148aabe, 0x1053504e, + 0x6710b49e, 0x760b4e6e, 0x4527417e, 0x543cbb8e, + 0xaba088de, 0xbabb722e, 0x89977d3e, 0x988c87ce, + 0xefcf631e, 0xfed499ee, 0xcdf896fe, 0xdce36c0e, + 0x32c0f0f1, 0x23db0a01, 0x10f70511, 0x01ecffe1, + 0x76af1b31, 0x67b4e1c1, 0x5498eed1, 0x45831421, + 0xba1f2771, 0xab04dd81, 0x9828d291, 0x89332861, + 0xfe70ccb1, 0xef6b3641, 0xdc473951, 0xcd5cc3a1, + 0x46febebc, 0x57e5444c, 0x64c94b5c, 0x75d2b1ac, + 0x0291557c, 0x138aaf8c, 0x20a6a09c, 0x31bd5a6c, + 0xce21693c, 0xdf3a93cc, 0xec169cdc, 0xfd0d662c, + 0x8a4e82fc, 0x9b55780c, 0xa879771c, 0xb9628dec, + 0x57411113, 0x465aebe3, 0x7576e4f3, 0x646d1e03, + 0x132efad3, 0x02350023, 0x31190f33, 0x2002f5c3, + 0xdf9ec693, 0xce853c63, 0xfda93373, 0xecb2c983, + 0x9bf12d53, 0x8aead7a3, 0xb9c6d8b3, 0xa8dd2243, + 0x6581e1e2, 0x749a1b12, 0x47b61402, 0x56adeef2, + 0x21ee0a22, 0x30f5f0d2, 0x03d9ffc2, 0x12c20532, + 0xed5e3662, 0xfc45cc92, 0xcf69c382, 0xde723972, + 0xa931dda2, 0xb82a2752, 0x8b062842, 0x9a1dd2b2, + 0x743e4e4d, 0x6525b4bd, 0x5609bbad, 0x4712415d, + 0x3051a58d, 0x214a5f7d, 0x1266506d, 0x037daa9d, + 0xfce199cd, 0xedfa633d, 0xded66c2d, 0xcfcd96dd, + 0xb88e720d, 0xa99588fd, 0x9ab987ed, 0x8ba27d1d, + 0x8dfd7d78, 0x9ce68788, 0xafca8898, 0xbed17268, + 0xc99296b8, 0xd8896c48, 0xeba56358, 0xfabe99a8, + 0x0522aaf8, 0x14395008, 0x27155f18, 0x360ea5e8, + 0x414d4138, 0x5056bbc8, 0x637ab4d8, 0x72614e28, + 0x9c42d2d7, 0x8d592827, 0xbe752737, 0xaf6eddc7, + 0xd82d3917, 0xc936c3e7, 0xfa1accf7, 0xeb013607, + 0x149d0557, 0x0586ffa7, 0x36aaf0b7, 0x27b10a47, + 0x50f2ee97, 0x41e91467, 0x72c51b77, 0x63dee187, + 0xae822226, 0xbf99d8d6, 0x8cb5d7c6, 0x9dae2d36, + 0xeaedc9e6, 0xfbf63316, 0xc8da3c06, 0xd9c1c6f6, + 0x265df5a6, 0x37460f56, 0x046a0046, 0x1571fab6, + 0x62321e66, 0x7329e496, 0x4005eb86, 0x511e1176, + 0xbf3d8d89, 0xae267779, 0x9d0a7869, 0x8c118299, + 0xfb526649, 0xea499cb9, 0xd96593a9, 0xc87e6959, + 0x37e25a09, 0x26f9a0f9, 0x15d5afe9, 0x04ce5519, + 0x738db1c9, 0x62964b39, 0x51ba4429, 0x40a1bed9, + 0xcb03c3c4, 0xda183934, 0xe9343624, 0xf82fccd4, + 0x8f6c2804, 0x9e77d2f4, 0xad5bdde4, 0xbc402714, + 0x43dc1444, 0x52c7eeb4, 0x61ebe1a4, 0x70f01b54, + 0x07b3ff84, 0x16a80574, 0x25840a64, 0x349ff094, + 0xdabc6c6b, 0xcba7969b, 0xf88b998b, 0xe990637b, + 0x9ed387ab, 0x8fc87d5b, 0xbce4724b, 0xadff88bb, + 0x5263bbeb, 0x4378411b, 0x70544e0b, 0x614fb4fb, + 0x160c502b, 0x0717aadb, 0x343ba5cb, 0x25205f3b, + 0xe87c9c9a, 0xf967666a, 0xca4b697a, 0xdb50938a, + 0xac13775a, 0xbd088daa, 0x8e2482ba, 0x9f3f784a, + 0x60a34b1a, 0x71b8b1ea, 0x4294befa, 0x538f440a, + 0x24cca0da, 0x35d75a2a, 0x06fb553a, 0x17e0afca, + 0xf9c33335, 0xe8d8c9c5, 0xdbf4c6d5, 0xcaef3c25, + 0xbdacd8f5, 0xacb72205, 0x9f9b2d15, 0x8e80d7e5, + 0x711ce4b5, 0x60071e45, 0x532b1155, 0x4230eba5, + 0x35730f75, 0x2468f585, 0x1744fa95, 0x065f0065, + }, + { + 0x00000000, 0x1bfafa5f, 0x37f5f4be, 0x2c0f0ee1, + 0x6febe97c, 0x74111323, 0x581e1dc2, 0x43e4e79d, + 0xdfd7d2f8, 0xc42d28a7, 0xe8222646, 0xf3d8dc19, + 0xb03c3b84, 0xabc6c1db, 0x87c9cf3a, 0x9c333565, + 0xbfafa55f, 0xa4555f00, 0x885a51e1, 0x93a0abbe, + 0xd0444c23, 0xcbbeb67c, 0xe7b1b89d, 0xfc4b42c2, + 0x607877a7, 0x7b828df8, 0x578d8319, 0x4c777946, + 0x0f939edb, 0x14696484, 0x38666a65, 0x239c903a, + 0x7f5f4a11, 0x64a5b04e, 0x48aabeaf, 0x535044f0, + 0x10b4a36d, 0x0b4e5932, 0x274157d3, 0x3cbbad8c, + 0xa08898e9, 0xbb7262b6, 0x977d6c57, 0x8c879608, + 0xcf637195, 0xd4998bca, 0xf896852b, 0xe36c7f74, + 0xc0f0ef4e, 0xdb0a1511, 0xf7051bf0, 0xecffe1af, + 0xaf1b0632, 0xb4e1fc6d, 0x98eef28c, 0x831408d3, + 0x1f273db6, 0x04ddc7e9, 0x28d2c908, 0x33283357, + 0x70ccd4ca, 0x6b362e95, 0x47392074, 0x5cc3da2b, + 0xfebe9422, 0xe5446e7d, 0xc94b609c, 0xd2b19ac3, + 0x91557d5e, 0x8aaf8701, 0xa6a089e0, 0xbd5a73bf, + 0x216946da, 0x3a93bc85, 0x169cb264, 0x0d66483b, + 0x4e82afa6, 0x557855f9, 0x79775b18, 0x628da147, + 0x4111317d, 0x5aebcb22, 0x76e4c5c3, 0x6d1e3f9c, + 0x2efad801, 0x3500225e, 0x190f2cbf, 0x02f5d6e0, + 0x9ec6e385, 0x853c19da, 0xa933173b, 0xb2c9ed64, + 0xf12d0af9, 0xead7f0a6, 0xc6d8fe47, 0xdd220418, + 0x81e1de33, 0x9a1b246c, 0xb6142a8d, 0xadeed0d2, + 0xee0a374f, 0xf5f0cd10, 0xd9ffc3f1, 0xc20539ae, + 0x5e360ccb, 0x45ccf694, 0x69c3f875, 0x7239022a, + 0x31dde5b7, 0x2a271fe8, 0x06281109, 0x1dd2eb56, + 0x3e4e7b6c, 0x25b48133, 0x09bb8fd2, 0x1241758d, + 0x51a59210, 0x4a5f684f, 0x665066ae, 0x7daa9cf1, + 0xe199a994, 0xfa6353cb, 0xd66c5d2a, 0xcd96a775, + 0x8e7240e8, 0x9588bab7, 0xb987b456, 0xa27d4e09, + 0xfd7d28eb, 0xe687d2b4, 0xca88dc55, 0xd172260a, + 0x9296c197, 0x896c3bc8, 0xa5633529, 0xbe99cf76, + 0x22aafa13, 0x3950004c, 0x155f0ead, 0x0ea5f4f2, + 0x4d41136f, 0x56bbe930, 0x7ab4e7d1, 0x614e1d8e, + 0x42d28db4, 0x592877eb, 0x7527790a, 0x6edd8355, + 0x2d3964c8, 0x36c39e97, 0x1acc9076, 0x01366a29, + 0x9d055f4c, 0x86ffa513, 0xaaf0abf2, 0xb10a51ad, + 0xf2eeb630, 0xe9144c6f, 0xc51b428e, 0xdee1b8d1, + 0x822262fa, 0x99d898a5, 0xb5d79644, 0xae2d6c1b, + 0xedc98b86, 0xf63371d9, 0xda3c7f38, 0xc1c68567, + 0x5df5b002, 0x460f4a5d, 0x6a0044bc, 0x71fabee3, + 0x321e597e, 0x29e4a321, 0x05ebadc0, 0x1e11579f, + 0x3d8dc7a5, 0x26773dfa, 0x0a78331b, 0x1182c944, + 0x52662ed9, 0x499cd486, 0x6593da67, 0x7e692038, + 0xe25a155d, 0xf9a0ef02, 0xd5afe1e3, 0xce551bbc, + 0x8db1fc21, 0x964b067e, 0xba44089f, 0xa1bef2c0, + 0x03c3bcc9, 0x18394696, 0x34364877, 0x2fccb228, + 0x6c2855b5, 0x77d2afea, 0x5bdda10b, 0x40275b54, + 0xdc146e31, 0xc7ee946e, 0xebe19a8f, 0xf01b60d0, + 0xb3ff874d, 0xa8057d12, 0x840a73f3, 0x9ff089ac, + 0xbc6c1996, 0xa796e3c9, 0x8b99ed28, 0x90631777, + 0xd387f0ea, 0xc87d0ab5, 0xe4720454, 0xff88fe0b, + 0x63bbcb6e, 0x78413131, 0x544e3fd0, 0x4fb4c58f, + 0x0c502212, 0x17aad84d, 0x3ba5d6ac, 0x205f2cf3, + 0x7c9cf6d8, 0x67660c87, 0x4b690266, 0x5093f839, + 0x13771fa4, 0x088de5fb, 0x2482eb1a, 0x3f781145, + 0xa34b2420, 0xb8b1de7f, 0x94bed09e, 0x8f442ac1, + 0xcca0cd5c, 0xd75a3703, 0xfb5539e2, 0xe0afc3bd, + 0xc3335387, 0xd8c9a9d8, 0xf4c6a739, 0xef3c5d66, + 0xacd8bafb, 0xb72240a4, 0x9b2d4e45, 0x80d7b41a, + 0x1ce4817f, 0x071e7b20, 0x2b1175c1, 0x30eb8f9e, + 0x730f6803, 0x68f5925c, 0x44fa9cbd, 0x5f0066e2, + }, +}; diff --git a/ext/digest/crc32c/crc32c.c b/ext/digest/crc32c/crc32c.c index d0eaee7..0fccc43 100644 --- a/ext/digest/crc32c/crc32c.c +++ b/ext/digest/crc32c/crc32c.c @@ -15,54 +15,39 @@ */ #include "crc32c.h" - -/** - * Static table used for the table_driven implementation. - */ -static const crc32_t crc32c_table[256] = { - 0x00000000, 0xf26b8303, 0xe13b70f7, 0x1350f3f4, 0xc79a971f, 0x35f1141c, 0x26a1e7e8, 0xd4ca64eb, - 0x8ad958cf, 0x78b2dbcc, 0x6be22838, 0x9989ab3b, 0x4d43cfd0, 0xbf284cd3, 0xac78bf27, 0x5e133c24, - 0x105ec76f, 0xe235446c, 0xf165b798, 0x030e349b, 0xd7c45070, 0x25afd373, 0x36ff2087, 0xc494a384, - 0x9a879fa0, 0x68ec1ca3, 0x7bbcef57, 0x89d76c54, 0x5d1d08bf, 0xaf768bbc, 0xbc267848, 0x4e4dfb4b, - 0x20bd8ede, 0xd2d60ddd, 0xc186fe29, 0x33ed7d2a, 0xe72719c1, 0x154c9ac2, 0x061c6936, 0xf477ea35, - 0xaa64d611, 0x580f5512, 0x4b5fa6e6, 0xb93425e5, 0x6dfe410e, 0x9f95c20d, 0x8cc531f9, 0x7eaeb2fa, - 0x30e349b1, 0xc288cab2, 0xd1d83946, 0x23b3ba45, 0xf779deae, 0x05125dad, 0x1642ae59, 0xe4292d5a, - 0xba3a117e, 0x4851927d, 0x5b016189, 0xa96ae28a, 0x7da08661, 0x8fcb0562, 0x9c9bf696, 0x6ef07595, - 0x417b1dbc, 0xb3109ebf, 0xa0406d4b, 0x522bee48, 0x86e18aa3, 0x748a09a0, 0x67dafa54, 0x95b17957, - 0xcba24573, 0x39c9c670, 0x2a993584, 0xd8f2b687, 0x0c38d26c, 0xfe53516f, 0xed03a29b, 0x1f682198, - 0x5125dad3, 0xa34e59d0, 0xb01eaa24, 0x42752927, 0x96bf4dcc, 0x64d4cecf, 0x77843d3b, 0x85efbe38, - 0xdbfc821c, 0x2997011f, 0x3ac7f2eb, 0xc8ac71e8, 0x1c661503, 0xee0d9600, 0xfd5d65f4, 0x0f36e6f7, - 0x61c69362, 0x93ad1061, 0x80fde395, 0x72966096, 0xa65c047d, 0x5437877e, 0x4767748a, 0xb50cf789, - 0xeb1fcbad, 0x197448ae, 0x0a24bb5a, 0xf84f3859, 0x2c855cb2, 0xdeeedfb1, 0xcdbe2c45, 0x3fd5af46, - 0x7198540d, 0x83f3d70e, 0x90a324fa, 0x62c8a7f9, 0xb602c312, 0x44694011, 0x5739b3e5, 0xa55230e6, - 0xfb410cc2, 0x092a8fc1, 0x1a7a7c35, 0xe811ff36, 0x3cdb9bdd, 0xceb018de, 0xdde0eb2a, 0x2f8b6829, - 0x82f63b78, 0x709db87b, 0x63cd4b8f, 0x91a6c88c, 0x456cac67, 0xb7072f64, 0xa457dc90, 0x563c5f93, - 0x082f63b7, 0xfa44e0b4, 0xe9141340, 0x1b7f9043, 0xcfb5f4a8, 0x3dde77ab, 0x2e8e845f, 0xdce5075c, - 0x92a8fc17, 0x60c37f14, 0x73938ce0, 0x81f80fe3, 0x55326b08, 0xa759e80b, 0xb4091bff, 0x466298fc, - 0x1871a4d8, 0xea1a27db, 0xf94ad42f, 0x0b21572c, 0xdfeb33c7, 0x2d80b0c4, 0x3ed04330, 0xccbbc033, - 0xa24bb5a6, 0x502036a5, 0x4370c551, 0xb11b4652, 0x65d122b9, 0x97baa1ba, 0x84ea524e, 0x7681d14d, - 0x2892ed69, 0xdaf96e6a, 0xc9a99d9e, 0x3bc21e9d, 0xef087a76, 0x1d63f975, 0x0e330a81, 0xfc588982, - 0xb21572c9, 0x407ef1ca, 0x532e023e, 0xa145813d, 0x758fe5d6, 0x87e466d5, 0x94b49521, 0x66df1622, - 0x38cc2a06, 0xcaa7a905, 0xd9f75af1, 0x2b9cd9f2, 0xff56bd19, 0x0d3d3e1a, 0x1e6dcdee, 0xec064eed, - 0xc38d26c4, 0x31e6a5c7, 0x22b65633, 0xd0ddd530, 0x0417b1db, 0xf67c32d8, 0xe52cc12c, 0x1747422f, - 0x49547e0b, 0xbb3ffd08, 0xa86f0efc, 0x5a048dff, 0x8ecee914, 0x7ca56a17, 0x6ff599e3, 0x9d9e1ae0, - 0xd3d3e1ab, 0x21b862a8, 0x32e8915c, 0xc083125f, 0x144976b4, 0xe622f5b7, 0xf5720643, 0x07198540, - 0x590ab964, 0xab613a67, 0xb831c993, 0x4a5a4a90, 0x9e902e7b, 0x6cfbad78, 0x7fab5e8c, 0x8dc0dd8f, - 0xe330a81a, 0x115b2b19, 0x020bd8ed, 0xf0605bee, 0x24aa3f05, 0xd6c1bc06, 0xc5914ff2, 0x37faccf1, - 0x69e9f0d5, 0x9b8273d6, 0x88d28022, 0x7ab90321, 0xae7367ca, 0x5c18e4c9, 0x4f48173d, 0xbd23943e, - 0xf36e6f75, 0x0105ec76, 0x12551f82, 0xe03e9c81, 0x34f4f86a, 0xc69f7b69, 0xd5cf889d, 0x27a40b9e, - 0x79b737ba, 0x8bdcb4b9, 0x988c474d, 0x6ae7c44e, 0xbe2da0a5, 0x4c4623a6, 0x5f16d052, 0xad7d5351 -}; +#include "crc32c_table.h" crc32_t crc32c_update(crc32_t crc, const void *data, size_t data_len) { const unsigned char *d = (const unsigned char *)data; unsigned int tbl_idx; + for (; data_len >= SLICE_SIZE; data_len -= SLICE_SIZE) + { + crc = crc32c_table[15][d[ 0] ^ ((crc >> 0) & 0xff)] ^ + crc32c_table[14][d[ 1] ^ ((crc >> 8) & 0xff)] ^ + crc32c_table[13][d[ 2] ^ ((crc >> 16) & 0xff)] ^ + crc32c_table[12][d[ 3] ^ ((crc >> 24) & 0xff)] ^ + crc32c_table[11][d[ 4] ] ^ + crc32c_table[10][d[ 5] ] ^ + crc32c_table[ 9][d[ 6] ] ^ + crc32c_table[ 8][d[ 7] ] ^ + crc32c_table[ 7][d[ 8] ] ^ + crc32c_table[ 6][d[ 9] ] ^ + crc32c_table[ 5][d[10] ] ^ + crc32c_table[ 4][d[11] ] ^ + crc32c_table[ 3][d[12] ] ^ + crc32c_table[ 2][d[13] ] ^ + crc32c_table[ 1][d[14] ] ^ + crc32c_table[ 0][d[15] ]; + crc &= 0xffffffff; + d += SLICE_SIZE; + } + while (data_len--) { tbl_idx = (crc ^ *d) & 0xff; - crc = (crc32c_table[tbl_idx] ^ (crc >> 8)) & 0xffffffff; + crc = (crc32c_table[0][tbl_idx] ^ (crc >> 8)) & 0xffffffff; d++; } diff --git a/ext/digest/crc32c/crc32c_table.h b/ext/digest/crc32c/crc32c_table.h new file mode 100644 index 0000000..ecdbb03 --- /dev/null +++ b/ext/digest/crc32c/crc32c_table.h @@ -0,0 +1,1070 @@ +/* + * bitwidth: 32 + * generator polynomial: 0x1edc6f41 + * input bit direction: REFLECT + * slice bytes per iteration: 16 + * slide bits per table: 8 + * + * Generated by: gentable.rb of digest-crc + */ + +#define SLICE_SIZE 16 + +static const uint32_t crc32c_table[SLICE_SIZE][256] = { + { + 0x00000000, 0xf26b8303, 0xe13b70f7, 0x1350f3f4, + 0xc79a971f, 0x35f1141c, 0x26a1e7e8, 0xd4ca64eb, + 0x8ad958cf, 0x78b2dbcc, 0x6be22838, 0x9989ab3b, + 0x4d43cfd0, 0xbf284cd3, 0xac78bf27, 0x5e133c24, + 0x105ec76f, 0xe235446c, 0xf165b798, 0x030e349b, + 0xd7c45070, 0x25afd373, 0x36ff2087, 0xc494a384, + 0x9a879fa0, 0x68ec1ca3, 0x7bbcef57, 0x89d76c54, + 0x5d1d08bf, 0xaf768bbc, 0xbc267848, 0x4e4dfb4b, + 0x20bd8ede, 0xd2d60ddd, 0xc186fe29, 0x33ed7d2a, + 0xe72719c1, 0x154c9ac2, 0x061c6936, 0xf477ea35, + 0xaa64d611, 0x580f5512, 0x4b5fa6e6, 0xb93425e5, + 0x6dfe410e, 0x9f95c20d, 0x8cc531f9, 0x7eaeb2fa, + 0x30e349b1, 0xc288cab2, 0xd1d83946, 0x23b3ba45, + 0xf779deae, 0x05125dad, 0x1642ae59, 0xe4292d5a, + 0xba3a117e, 0x4851927d, 0x5b016189, 0xa96ae28a, + 0x7da08661, 0x8fcb0562, 0x9c9bf696, 0x6ef07595, + 0x417b1dbc, 0xb3109ebf, 0xa0406d4b, 0x522bee48, + 0x86e18aa3, 0x748a09a0, 0x67dafa54, 0x95b17957, + 0xcba24573, 0x39c9c670, 0x2a993584, 0xd8f2b687, + 0x0c38d26c, 0xfe53516f, 0xed03a29b, 0x1f682198, + 0x5125dad3, 0xa34e59d0, 0xb01eaa24, 0x42752927, + 0x96bf4dcc, 0x64d4cecf, 0x77843d3b, 0x85efbe38, + 0xdbfc821c, 0x2997011f, 0x3ac7f2eb, 0xc8ac71e8, + 0x1c661503, 0xee0d9600, 0xfd5d65f4, 0x0f36e6f7, + 0x61c69362, 0x93ad1061, 0x80fde395, 0x72966096, + 0xa65c047d, 0x5437877e, 0x4767748a, 0xb50cf789, + 0xeb1fcbad, 0x197448ae, 0x0a24bb5a, 0xf84f3859, + 0x2c855cb2, 0xdeeedfb1, 0xcdbe2c45, 0x3fd5af46, + 0x7198540d, 0x83f3d70e, 0x90a324fa, 0x62c8a7f9, + 0xb602c312, 0x44694011, 0x5739b3e5, 0xa55230e6, + 0xfb410cc2, 0x092a8fc1, 0x1a7a7c35, 0xe811ff36, + 0x3cdb9bdd, 0xceb018de, 0xdde0eb2a, 0x2f8b6829, + 0x82f63b78, 0x709db87b, 0x63cd4b8f, 0x91a6c88c, + 0x456cac67, 0xb7072f64, 0xa457dc90, 0x563c5f93, + 0x082f63b7, 0xfa44e0b4, 0xe9141340, 0x1b7f9043, + 0xcfb5f4a8, 0x3dde77ab, 0x2e8e845f, 0xdce5075c, + 0x92a8fc17, 0x60c37f14, 0x73938ce0, 0x81f80fe3, + 0x55326b08, 0xa759e80b, 0xb4091bff, 0x466298fc, + 0x1871a4d8, 0xea1a27db, 0xf94ad42f, 0x0b21572c, + 0xdfeb33c7, 0x2d80b0c4, 0x3ed04330, 0xccbbc033, + 0xa24bb5a6, 0x502036a5, 0x4370c551, 0xb11b4652, + 0x65d122b9, 0x97baa1ba, 0x84ea524e, 0x7681d14d, + 0x2892ed69, 0xdaf96e6a, 0xc9a99d9e, 0x3bc21e9d, + 0xef087a76, 0x1d63f975, 0x0e330a81, 0xfc588982, + 0xb21572c9, 0x407ef1ca, 0x532e023e, 0xa145813d, + 0x758fe5d6, 0x87e466d5, 0x94b49521, 0x66df1622, + 0x38cc2a06, 0xcaa7a905, 0xd9f75af1, 0x2b9cd9f2, + 0xff56bd19, 0x0d3d3e1a, 0x1e6dcdee, 0xec064eed, + 0xc38d26c4, 0x31e6a5c7, 0x22b65633, 0xd0ddd530, + 0x0417b1db, 0xf67c32d8, 0xe52cc12c, 0x1747422f, + 0x49547e0b, 0xbb3ffd08, 0xa86f0efc, 0x5a048dff, + 0x8ecee914, 0x7ca56a17, 0x6ff599e3, 0x9d9e1ae0, + 0xd3d3e1ab, 0x21b862a8, 0x32e8915c, 0xc083125f, + 0x144976b4, 0xe622f5b7, 0xf5720643, 0x07198540, + 0x590ab964, 0xab613a67, 0xb831c993, 0x4a5a4a90, + 0x9e902e7b, 0x6cfbad78, 0x7fab5e8c, 0x8dc0dd8f, + 0xe330a81a, 0x115b2b19, 0x020bd8ed, 0xf0605bee, + 0x24aa3f05, 0xd6c1bc06, 0xc5914ff2, 0x37faccf1, + 0x69e9f0d5, 0x9b8273d6, 0x88d28022, 0x7ab90321, + 0xae7367ca, 0x5c18e4c9, 0x4f48173d, 0xbd23943e, + 0xf36e6f75, 0x0105ec76, 0x12551f82, 0xe03e9c81, + 0x34f4f86a, 0xc69f7b69, 0xd5cf889d, 0x27a40b9e, + 0x79b737ba, 0x8bdcb4b9, 0x988c474d, 0x6ae7c44e, + 0xbe2da0a5, 0x4c4623a6, 0x5f16d052, 0xad7d5351, + }, + { + 0x00000000, 0x13a29877, 0x274530ee, 0x34e7a899, + 0x4e8a61dc, 0x5d28f9ab, 0x69cf5132, 0x7a6dc945, + 0x9d14c3b8, 0x8eb65bcf, 0xba51f356, 0xa9f36b21, + 0xd39ea264, 0xc03c3a13, 0xf4db928a, 0xe7790afd, + 0x3fc5f181, 0x2c6769f6, 0x1880c16f, 0x0b225918, + 0x714f905d, 0x62ed082a, 0x560aa0b3, 0x45a838c4, + 0xa2d13239, 0xb173aa4e, 0x859402d7, 0x96369aa0, + 0xec5b53e5, 0xfff9cb92, 0xcb1e630b, 0xd8bcfb7c, + 0x7f8be302, 0x6c297b75, 0x58ced3ec, 0x4b6c4b9b, + 0x310182de, 0x22a31aa9, 0x1644b230, 0x05e62a47, + 0xe29f20ba, 0xf13db8cd, 0xc5da1054, 0xd6788823, + 0xac154166, 0xbfb7d911, 0x8b507188, 0x98f2e9ff, + 0x404e1283, 0x53ec8af4, 0x670b226d, 0x74a9ba1a, + 0x0ec4735f, 0x1d66eb28, 0x298143b1, 0x3a23dbc6, + 0xdd5ad13b, 0xcef8494c, 0xfa1fe1d5, 0xe9bd79a2, + 0x93d0b0e7, 0x80722890, 0xb4958009, 0xa737187e, + 0xff17c604, 0xecb55e73, 0xd852f6ea, 0xcbf06e9d, + 0xb19da7d8, 0xa23f3faf, 0x96d89736, 0x857a0f41, + 0x620305bc, 0x71a19dcb, 0x45463552, 0x56e4ad25, + 0x2c896460, 0x3f2bfc17, 0x0bcc548e, 0x186eccf9, + 0xc0d23785, 0xd370aff2, 0xe797076b, 0xf4359f1c, + 0x8e585659, 0x9dface2e, 0xa91d66b7, 0xbabffec0, + 0x5dc6f43d, 0x4e646c4a, 0x7a83c4d3, 0x69215ca4, + 0x134c95e1, 0x00ee0d96, 0x3409a50f, 0x27ab3d78, + 0x809c2506, 0x933ebd71, 0xa7d915e8, 0xb47b8d9f, + 0xce1644da, 0xddb4dcad, 0xe9537434, 0xfaf1ec43, + 0x1d88e6be, 0x0e2a7ec9, 0x3acdd650, 0x296f4e27, + 0x53028762, 0x40a01f15, 0x7447b78c, 0x67e52ffb, + 0xbf59d487, 0xacfb4cf0, 0x981ce469, 0x8bbe7c1e, + 0xf1d3b55b, 0xe2712d2c, 0xd69685b5, 0xc5341dc2, + 0x224d173f, 0x31ef8f48, 0x050827d1, 0x16aabfa6, + 0x6cc776e3, 0x7f65ee94, 0x4b82460d, 0x5820de7a, + 0xfbc3faf9, 0xe861628e, 0xdc86ca17, 0xcf245260, + 0xb5499b25, 0xa6eb0352, 0x920cabcb, 0x81ae33bc, + 0x66d73941, 0x7575a136, 0x419209af, 0x523091d8, + 0x285d589d, 0x3bffc0ea, 0x0f186873, 0x1cbaf004, + 0xc4060b78, 0xd7a4930f, 0xe3433b96, 0xf0e1a3e1, + 0x8a8c6aa4, 0x992ef2d3, 0xadc95a4a, 0xbe6bc23d, + 0x5912c8c0, 0x4ab050b7, 0x7e57f82e, 0x6df56059, + 0x1798a91c, 0x043a316b, 0x30dd99f2, 0x237f0185, + 0x844819fb, 0x97ea818c, 0xa30d2915, 0xb0afb162, + 0xcac27827, 0xd960e050, 0xed8748c9, 0xfe25d0be, + 0x195cda43, 0x0afe4234, 0x3e19eaad, 0x2dbb72da, + 0x57d6bb9f, 0x447423e8, 0x70938b71, 0x63311306, + 0xbb8de87a, 0xa82f700d, 0x9cc8d894, 0x8f6a40e3, + 0xf50789a6, 0xe6a511d1, 0xd242b948, 0xc1e0213f, + 0x26992bc2, 0x353bb3b5, 0x01dc1b2c, 0x127e835b, + 0x68134a1e, 0x7bb1d269, 0x4f567af0, 0x5cf4e287, + 0x04d43cfd, 0x1776a48a, 0x23910c13, 0x30339464, + 0x4a5e5d21, 0x59fcc556, 0x6d1b6dcf, 0x7eb9f5b8, + 0x99c0ff45, 0x8a626732, 0xbe85cfab, 0xad2757dc, + 0xd74a9e99, 0xc4e806ee, 0xf00fae77, 0xe3ad3600, + 0x3b11cd7c, 0x28b3550b, 0x1c54fd92, 0x0ff665e5, + 0x759baca0, 0x663934d7, 0x52de9c4e, 0x417c0439, + 0xa6050ec4, 0xb5a796b3, 0x81403e2a, 0x92e2a65d, + 0xe88f6f18, 0xfb2df76f, 0xcfca5ff6, 0xdc68c781, + 0x7b5fdfff, 0x68fd4788, 0x5c1aef11, 0x4fb87766, + 0x35d5be23, 0x26772654, 0x12908ecd, 0x013216ba, + 0xe64b1c47, 0xf5e98430, 0xc10e2ca9, 0xd2acb4de, + 0xa8c17d9b, 0xbb63e5ec, 0x8f844d75, 0x9c26d502, + 0x449a2e7e, 0x5738b609, 0x63df1e90, 0x707d86e7, + 0x0a104fa2, 0x19b2d7d5, 0x2d557f4c, 0x3ef7e73b, + 0xd98eedc6, 0xca2c75b1, 0xfecbdd28, 0xed69455f, + 0x97048c1a, 0x84a6146d, 0xb041bcf4, 0xa3e32483, + }, + { + 0x00000000, 0xa541927e, 0x4f6f520d, 0xea2ec073, + 0x9edea41a, 0x3b9f3664, 0xd1b1f617, 0x74f06469, + 0x38513ec5, 0x9d10acbb, 0x773e6cc8, 0xd27ffeb6, + 0xa68f9adf, 0x03ce08a1, 0xe9e0c8d2, 0x4ca15aac, + 0x70a27d8a, 0xd5e3eff4, 0x3fcd2f87, 0x9a8cbdf9, + 0xee7cd990, 0x4b3d4bee, 0xa1138b9d, 0x045219e3, + 0x48f3434f, 0xedb2d131, 0x079c1142, 0xa2dd833c, + 0xd62de755, 0x736c752b, 0x9942b558, 0x3c032726, + 0xe144fb14, 0x4405696a, 0xae2ba919, 0x0b6a3b67, + 0x7f9a5f0e, 0xdadbcd70, 0x30f50d03, 0x95b49f7d, + 0xd915c5d1, 0x7c5457af, 0x967a97dc, 0x333b05a2, + 0x47cb61cb, 0xe28af3b5, 0x08a433c6, 0xade5a1b8, + 0x91e6869e, 0x34a714e0, 0xde89d493, 0x7bc846ed, + 0x0f382284, 0xaa79b0fa, 0x40577089, 0xe516e2f7, + 0xa9b7b85b, 0x0cf62a25, 0xe6d8ea56, 0x43997828, + 0x37691c41, 0x92288e3f, 0x78064e4c, 0xdd47dc32, + 0xc76580d9, 0x622412a7, 0x880ad2d4, 0x2d4b40aa, + 0x59bb24c3, 0xfcfab6bd, 0x16d476ce, 0xb395e4b0, + 0xff34be1c, 0x5a752c62, 0xb05bec11, 0x151a7e6f, + 0x61ea1a06, 0xc4ab8878, 0x2e85480b, 0x8bc4da75, + 0xb7c7fd53, 0x12866f2d, 0xf8a8af5e, 0x5de93d20, + 0x29195949, 0x8c58cb37, 0x66760b44, 0xc337993a, + 0x8f96c396, 0x2ad751e8, 0xc0f9919b, 0x65b803e5, + 0x1148678c, 0xb409f5f2, 0x5e273581, 0xfb66a7ff, + 0x26217bcd, 0x8360e9b3, 0x694e29c0, 0xcc0fbbbe, + 0xb8ffdfd7, 0x1dbe4da9, 0xf7908dda, 0x52d11fa4, + 0x1e704508, 0xbb31d776, 0x511f1705, 0xf45e857b, + 0x80aee112, 0x25ef736c, 0xcfc1b31f, 0x6a802161, + 0x56830647, 0xf3c29439, 0x19ec544a, 0xbcadc634, + 0xc85da25d, 0x6d1c3023, 0x8732f050, 0x2273622e, + 0x6ed23882, 0xcb93aafc, 0x21bd6a8f, 0x84fcf8f1, + 0xf00c9c98, 0x554d0ee6, 0xbf63ce95, 0x1a225ceb, + 0x8b277743, 0x2e66e53d, 0xc448254e, 0x6109b730, + 0x15f9d359, 0xb0b84127, 0x5a968154, 0xffd7132a, + 0xb3764986, 0x1637dbf8, 0xfc191b8b, 0x595889f5, + 0x2da8ed9c, 0x88e97fe2, 0x62c7bf91, 0xc7862def, + 0xfb850ac9, 0x5ec498b7, 0xb4ea58c4, 0x11abcaba, + 0x655baed3, 0xc01a3cad, 0x2a34fcde, 0x8f756ea0, + 0xc3d4340c, 0x6695a672, 0x8cbb6601, 0x29faf47f, + 0x5d0a9016, 0xf84b0268, 0x1265c21b, 0xb7245065, + 0x6a638c57, 0xcf221e29, 0x250cde5a, 0x804d4c24, + 0xf4bd284d, 0x51fcba33, 0xbbd27a40, 0x1e93e83e, + 0x5232b292, 0xf77320ec, 0x1d5de09f, 0xb81c72e1, + 0xccec1688, 0x69ad84f6, 0x83834485, 0x26c2d6fb, + 0x1ac1f1dd, 0xbf8063a3, 0x55aea3d0, 0xf0ef31ae, + 0x841f55c7, 0x215ec7b9, 0xcb7007ca, 0x6e3195b4, + 0x2290cf18, 0x87d15d66, 0x6dff9d15, 0xc8be0f6b, + 0xbc4e6b02, 0x190ff97c, 0xf321390f, 0x5660ab71, + 0x4c42f79a, 0xe90365e4, 0x032da597, 0xa66c37e9, + 0xd29c5380, 0x77ddc1fe, 0x9df3018d, 0x38b293f3, + 0x7413c95f, 0xd1525b21, 0x3b7c9b52, 0x9e3d092c, + 0xeacd6d45, 0x4f8cff3b, 0xa5a23f48, 0x00e3ad36, + 0x3ce08a10, 0x99a1186e, 0x738fd81d, 0xd6ce4a63, + 0xa23e2e0a, 0x077fbc74, 0xed517c07, 0x4810ee79, + 0x04b1b4d5, 0xa1f026ab, 0x4bdee6d8, 0xee9f74a6, + 0x9a6f10cf, 0x3f2e82b1, 0xd50042c2, 0x7041d0bc, + 0xad060c8e, 0x08479ef0, 0xe2695e83, 0x4728ccfd, + 0x33d8a894, 0x96993aea, 0x7cb7fa99, 0xd9f668e7, + 0x9557324b, 0x3016a035, 0xda386046, 0x7f79f238, + 0x0b899651, 0xaec8042f, 0x44e6c45c, 0xe1a75622, + 0xdda47104, 0x78e5e37a, 0x92cb2309, 0x378ab177, + 0x437ad51e, 0xe63b4760, 0x0c158713, 0xa954156d, + 0xe5f54fc1, 0x40b4ddbf, 0xaa9a1dcc, 0x0fdb8fb2, + 0x7b2bebdb, 0xde6a79a5, 0x3444b9d6, 0x91052ba8, + }, + { + 0x00000000, 0xdd45aab8, 0xbf672381, 0x62228939, + 0x7b2231f3, 0xa6679b4b, 0xc4451272, 0x1900b8ca, + 0xf64463e6, 0x2b01c95e, 0x49234067, 0x9466eadf, + 0x8d665215, 0x5023f8ad, 0x32017194, 0xef44db2c, + 0xe964b13d, 0x34211b85, 0x560392bc, 0x8b463804, + 0x924680ce, 0x4f032a76, 0x2d21a34f, 0xf06409f7, + 0x1f20d2db, 0xc2657863, 0xa047f15a, 0x7d025be2, + 0x6402e328, 0xb9474990, 0xdb65c0a9, 0x06206a11, + 0xd725148b, 0x0a60be33, 0x6842370a, 0xb5079db2, + 0xac072578, 0x71428fc0, 0x136006f9, 0xce25ac41, + 0x2161776d, 0xfc24ddd5, 0x9e0654ec, 0x4343fe54, + 0x5a43469e, 0x8706ec26, 0xe524651f, 0x3861cfa7, + 0x3e41a5b6, 0xe3040f0e, 0x81268637, 0x5c632c8f, + 0x45639445, 0x98263efd, 0xfa04b7c4, 0x27411d7c, + 0xc805c650, 0x15406ce8, 0x7762e5d1, 0xaa274f69, + 0xb327f7a3, 0x6e625d1b, 0x0c40d422, 0xd1057e9a, + 0xaba65fe7, 0x76e3f55f, 0x14c17c66, 0xc984d6de, + 0xd0846e14, 0x0dc1c4ac, 0x6fe34d95, 0xb2a6e72d, + 0x5de23c01, 0x80a796b9, 0xe2851f80, 0x3fc0b538, + 0x26c00df2, 0xfb85a74a, 0x99a72e73, 0x44e284cb, + 0x42c2eeda, 0x9f874462, 0xfda5cd5b, 0x20e067e3, + 0x39e0df29, 0xe4a57591, 0x8687fca8, 0x5bc25610, + 0xb4868d3c, 0x69c32784, 0x0be1aebd, 0xd6a40405, + 0xcfa4bccf, 0x12e11677, 0x70c39f4e, 0xad8635f6, + 0x7c834b6c, 0xa1c6e1d4, 0xc3e468ed, 0x1ea1c255, + 0x07a17a9f, 0xdae4d027, 0xb8c6591e, 0x6583f3a6, + 0x8ac7288a, 0x57828232, 0x35a00b0b, 0xe8e5a1b3, + 0xf1e51979, 0x2ca0b3c1, 0x4e823af8, 0x93c79040, + 0x95e7fa51, 0x48a250e9, 0x2a80d9d0, 0xf7c57368, + 0xeec5cba2, 0x3380611a, 0x51a2e823, 0x8ce7429b, + 0x63a399b7, 0xbee6330f, 0xdcc4ba36, 0x0181108e, + 0x1881a844, 0xc5c402fc, 0xa7e68bc5, 0x7aa3217d, + 0x52a0c93f, 0x8fe56387, 0xedc7eabe, 0x30824006, + 0x2982f8cc, 0xf4c75274, 0x96e5db4d, 0x4ba071f5, + 0xa4e4aad9, 0x79a10061, 0x1b838958, 0xc6c623e0, + 0xdfc69b2a, 0x02833192, 0x60a1b8ab, 0xbde41213, + 0xbbc47802, 0x6681d2ba, 0x04a35b83, 0xd9e6f13b, + 0xc0e649f1, 0x1da3e349, 0x7f816a70, 0xa2c4c0c8, + 0x4d801be4, 0x90c5b15c, 0xf2e73865, 0x2fa292dd, + 0x36a22a17, 0xebe780af, 0x89c50996, 0x5480a32e, + 0x8585ddb4, 0x58c0770c, 0x3ae2fe35, 0xe7a7548d, + 0xfea7ec47, 0x23e246ff, 0x41c0cfc6, 0x9c85657e, + 0x73c1be52, 0xae8414ea, 0xcca69dd3, 0x11e3376b, + 0x08e38fa1, 0xd5a62519, 0xb784ac20, 0x6ac10698, + 0x6ce16c89, 0xb1a4c631, 0xd3864f08, 0x0ec3e5b0, + 0x17c35d7a, 0xca86f7c2, 0xa8a47efb, 0x75e1d443, + 0x9aa50f6f, 0x47e0a5d7, 0x25c22cee, 0xf8878656, + 0xe1873e9c, 0x3cc29424, 0x5ee01d1d, 0x83a5b7a5, + 0xf90696d8, 0x24433c60, 0x4661b559, 0x9b241fe1, + 0x8224a72b, 0x5f610d93, 0x3d4384aa, 0xe0062e12, + 0x0f42f53e, 0xd2075f86, 0xb025d6bf, 0x6d607c07, + 0x7460c4cd, 0xa9256e75, 0xcb07e74c, 0x16424df4, + 0x106227e5, 0xcd278d5d, 0xaf050464, 0x7240aedc, + 0x6b401616, 0xb605bcae, 0xd4273597, 0x09629f2f, + 0xe6264403, 0x3b63eebb, 0x59416782, 0x8404cd3a, + 0x9d0475f0, 0x4041df48, 0x22635671, 0xff26fcc9, + 0x2e238253, 0xf36628eb, 0x9144a1d2, 0x4c010b6a, + 0x5501b3a0, 0x88441918, 0xea669021, 0x37233a99, + 0xd867e1b5, 0x05224b0d, 0x6700c234, 0xba45688c, + 0xa345d046, 0x7e007afe, 0x1c22f3c7, 0xc167597f, + 0xc747336e, 0x1a0299d6, 0x782010ef, 0xa565ba57, + 0xbc65029d, 0x6120a825, 0x0302211c, 0xde478ba4, + 0x31035088, 0xec46fa30, 0x8e647309, 0x5321d9b1, + 0x4a21617b, 0x9764cbc3, 0xf54642fa, 0x2803e842, + }, + { + 0x00000000, 0x38116fac, 0x7022df58, 0x4833b0f4, + 0xe045beb0, 0xd854d11c, 0x906761e8, 0xa8760e44, + 0xc5670b91, 0xfd76643d, 0xb545d4c9, 0x8d54bb65, + 0x2522b521, 0x1d33da8d, 0x55006a79, 0x6d1105d5, + 0x8f2261d3, 0xb7330e7f, 0xff00be8b, 0xc711d127, + 0x6f67df63, 0x5776b0cf, 0x1f45003b, 0x27546f97, + 0x4a456a42, 0x725405ee, 0x3a67b51a, 0x0276dab6, + 0xaa00d4f2, 0x9211bb5e, 0xda220baa, 0xe2336406, + 0x1ba8b557, 0x23b9dafb, 0x6b8a6a0f, 0x539b05a3, + 0xfbed0be7, 0xc3fc644b, 0x8bcfd4bf, 0xb3debb13, + 0xdecfbec6, 0xe6ded16a, 0xaeed619e, 0x96fc0e32, + 0x3e8a0076, 0x069b6fda, 0x4ea8df2e, 0x76b9b082, + 0x948ad484, 0xac9bbb28, 0xe4a80bdc, 0xdcb96470, + 0x74cf6a34, 0x4cde0598, 0x04edb56c, 0x3cfcdac0, + 0x51eddf15, 0x69fcb0b9, 0x21cf004d, 0x19de6fe1, + 0xb1a861a5, 0x89b90e09, 0xc18abefd, 0xf99bd151, + 0x37516aae, 0x0f400502, 0x4773b5f6, 0x7f62da5a, + 0xd714d41e, 0xef05bbb2, 0xa7360b46, 0x9f2764ea, + 0xf236613f, 0xca270e93, 0x8214be67, 0xba05d1cb, + 0x1273df8f, 0x2a62b023, 0x625100d7, 0x5a406f7b, + 0xb8730b7d, 0x806264d1, 0xc851d425, 0xf040bb89, + 0x5836b5cd, 0x6027da61, 0x28146a95, 0x10050539, + 0x7d1400ec, 0x45056f40, 0x0d36dfb4, 0x3527b018, + 0x9d51be5c, 0xa540d1f0, 0xed736104, 0xd5620ea8, + 0x2cf9dff9, 0x14e8b055, 0x5cdb00a1, 0x64ca6f0d, + 0xccbc6149, 0xf4ad0ee5, 0xbc9ebe11, 0x848fd1bd, + 0xe99ed468, 0xd18fbbc4, 0x99bc0b30, 0xa1ad649c, + 0x09db6ad8, 0x31ca0574, 0x79f9b580, 0x41e8da2c, + 0xa3dbbe2a, 0x9bcad186, 0xd3f96172, 0xebe80ede, + 0x439e009a, 0x7b8f6f36, 0x33bcdfc2, 0x0badb06e, + 0x66bcb5bb, 0x5eadda17, 0x169e6ae3, 0x2e8f054f, + 0x86f90b0b, 0xbee864a7, 0xf6dbd453, 0xcecabbff, + 0x6ea2d55c, 0x56b3baf0, 0x1e800a04, 0x269165a8, + 0x8ee76bec, 0xb6f60440, 0xfec5b4b4, 0xc6d4db18, + 0xabc5decd, 0x93d4b161, 0xdbe70195, 0xe3f66e39, + 0x4b80607d, 0x73910fd1, 0x3ba2bf25, 0x03b3d089, + 0xe180b48f, 0xd991db23, 0x91a26bd7, 0xa9b3047b, + 0x01c50a3f, 0x39d46593, 0x71e7d567, 0x49f6bacb, + 0x24e7bf1e, 0x1cf6d0b2, 0x54c56046, 0x6cd40fea, + 0xc4a201ae, 0xfcb36e02, 0xb480def6, 0x8c91b15a, + 0x750a600b, 0x4d1b0fa7, 0x0528bf53, 0x3d39d0ff, + 0x954fdebb, 0xad5eb117, 0xe56d01e3, 0xdd7c6e4f, + 0xb06d6b9a, 0x887c0436, 0xc04fb4c2, 0xf85edb6e, + 0x5028d52a, 0x6839ba86, 0x200a0a72, 0x181b65de, + 0xfa2801d8, 0xc2396e74, 0x8a0ade80, 0xb21bb12c, + 0x1a6dbf68, 0x227cd0c4, 0x6a4f6030, 0x525e0f9c, + 0x3f4f0a49, 0x075e65e5, 0x4f6dd511, 0x777cbabd, + 0xdf0ab4f9, 0xe71bdb55, 0xaf286ba1, 0x9739040d, + 0x59f3bff2, 0x61e2d05e, 0x29d160aa, 0x11c00f06, + 0xb9b60142, 0x81a76eee, 0xc994de1a, 0xf185b1b6, + 0x9c94b463, 0xa485dbcf, 0xecb66b3b, 0xd4a70497, + 0x7cd10ad3, 0x44c0657f, 0x0cf3d58b, 0x34e2ba27, + 0xd6d1de21, 0xeec0b18d, 0xa6f30179, 0x9ee26ed5, + 0x36946091, 0x0e850f3d, 0x46b6bfc9, 0x7ea7d065, + 0x13b6d5b0, 0x2ba7ba1c, 0x63940ae8, 0x5b856544, + 0xf3f36b00, 0xcbe204ac, 0x83d1b458, 0xbbc0dbf4, + 0x425b0aa5, 0x7a4a6509, 0x3279d5fd, 0x0a68ba51, + 0xa21eb415, 0x9a0fdbb9, 0xd23c6b4d, 0xea2d04e1, + 0x873c0134, 0xbf2d6e98, 0xf71ede6c, 0xcf0fb1c0, + 0x6779bf84, 0x5f68d028, 0x175b60dc, 0x2f4a0f70, + 0xcd796b76, 0xf56804da, 0xbd5bb42e, 0x854adb82, + 0x2d3cd5c6, 0x152dba6a, 0x5d1e0a9e, 0x650f6532, + 0x081e60e7, 0x300f0f4b, 0x783cbfbf, 0x402dd013, + 0xe85bde57, 0xd04ab1fb, 0x9879010f, 0xa0686ea3, + }, + { + 0x00000000, 0xef306b19, 0xdb8ca0c3, 0x34bccbda, + 0xb2f53777, 0x5dc55c6e, 0x697997b4, 0x8649fcad, + 0x6006181f, 0x8f367306, 0xbb8ab8dc, 0x54bad3c5, + 0xd2f32f68, 0x3dc34471, 0x097f8fab, 0xe64fe4b2, + 0xc00c303e, 0x2f3c5b27, 0x1b8090fd, 0xf4b0fbe4, + 0x72f90749, 0x9dc96c50, 0xa975a78a, 0x4645cc93, + 0xa00a2821, 0x4f3a4338, 0x7b8688e2, 0x94b6e3fb, + 0x12ff1f56, 0xfdcf744f, 0xc973bf95, 0x2643d48c, + 0x85f4168d, 0x6ac47d94, 0x5e78b64e, 0xb148dd57, + 0x370121fa, 0xd8314ae3, 0xec8d8139, 0x03bdea20, + 0xe5f20e92, 0x0ac2658b, 0x3e7eae51, 0xd14ec548, + 0x570739e5, 0xb83752fc, 0x8c8b9926, 0x63bbf23f, + 0x45f826b3, 0xaac84daa, 0x9e748670, 0x7144ed69, + 0xf70d11c4, 0x183d7add, 0x2c81b107, 0xc3b1da1e, + 0x25fe3eac, 0xcace55b5, 0xfe729e6f, 0x1142f576, + 0x970b09db, 0x783b62c2, 0x4c87a918, 0xa3b7c201, + 0x0e045beb, 0xe13430f2, 0xd588fb28, 0x3ab89031, + 0xbcf16c9c, 0x53c10785, 0x677dcc5f, 0x884da746, + 0x6e0243f4, 0x813228ed, 0xb58ee337, 0x5abe882e, + 0xdcf77483, 0x33c71f9a, 0x077bd440, 0xe84bbf59, + 0xce086bd5, 0x213800cc, 0x1584cb16, 0xfab4a00f, + 0x7cfd5ca2, 0x93cd37bb, 0xa771fc61, 0x48419778, + 0xae0e73ca, 0x413e18d3, 0x7582d309, 0x9ab2b810, + 0x1cfb44bd, 0xf3cb2fa4, 0xc777e47e, 0x28478f67, + 0x8bf04d66, 0x64c0267f, 0x507ceda5, 0xbf4c86bc, + 0x39057a11, 0xd6351108, 0xe289dad2, 0x0db9b1cb, + 0xebf65579, 0x04c63e60, 0x307af5ba, 0xdf4a9ea3, + 0x5903620e, 0xb6330917, 0x828fc2cd, 0x6dbfa9d4, + 0x4bfc7d58, 0xa4cc1641, 0x9070dd9b, 0x7f40b682, + 0xf9094a2f, 0x16392136, 0x2285eaec, 0xcdb581f5, + 0x2bfa6547, 0xc4ca0e5e, 0xf076c584, 0x1f46ae9d, + 0x990f5230, 0x763f3929, 0x4283f2f3, 0xadb399ea, + 0x1c08b7d6, 0xf338dccf, 0xc7841715, 0x28b47c0c, + 0xaefd80a1, 0x41cdebb8, 0x75712062, 0x9a414b7b, + 0x7c0eafc9, 0x933ec4d0, 0xa7820f0a, 0x48b26413, + 0xcefb98be, 0x21cbf3a7, 0x1577387d, 0xfa475364, + 0xdc0487e8, 0x3334ecf1, 0x0788272b, 0xe8b84c32, + 0x6ef1b09f, 0x81c1db86, 0xb57d105c, 0x5a4d7b45, + 0xbc029ff7, 0x5332f4ee, 0x678e3f34, 0x88be542d, + 0x0ef7a880, 0xe1c7c399, 0xd57b0843, 0x3a4b635a, + 0x99fca15b, 0x76ccca42, 0x42700198, 0xad406a81, + 0x2b09962c, 0xc439fd35, 0xf08536ef, 0x1fb55df6, + 0xf9fab944, 0x16cad25d, 0x22761987, 0xcd46729e, + 0x4b0f8e33, 0xa43fe52a, 0x90832ef0, 0x7fb345e9, + 0x59f09165, 0xb6c0fa7c, 0x827c31a6, 0x6d4c5abf, + 0xeb05a612, 0x0435cd0b, 0x308906d1, 0xdfb96dc8, + 0x39f6897a, 0xd6c6e263, 0xe27a29b9, 0x0d4a42a0, + 0x8b03be0d, 0x6433d514, 0x508f1ece, 0xbfbf75d7, + 0x120cec3d, 0xfd3c8724, 0xc9804cfe, 0x26b027e7, + 0xa0f9db4a, 0x4fc9b053, 0x7b757b89, 0x94451090, + 0x720af422, 0x9d3a9f3b, 0xa98654e1, 0x46b63ff8, + 0xc0ffc355, 0x2fcfa84c, 0x1b736396, 0xf443088f, + 0xd200dc03, 0x3d30b71a, 0x098c7cc0, 0xe6bc17d9, + 0x60f5eb74, 0x8fc5806d, 0xbb794bb7, 0x544920ae, + 0xb206c41c, 0x5d36af05, 0x698a64df, 0x86ba0fc6, + 0x00f3f36b, 0xefc39872, 0xdb7f53a8, 0x344f38b1, + 0x97f8fab0, 0x78c891a9, 0x4c745a73, 0xa344316a, + 0x250dcdc7, 0xca3da6de, 0xfe816d04, 0x11b1061d, + 0xf7fee2af, 0x18ce89b6, 0x2c72426c, 0xc3422975, + 0x450bd5d8, 0xaa3bbec1, 0x9e87751b, 0x71b71e02, + 0x57f4ca8e, 0xb8c4a197, 0x8c786a4d, 0x63480154, + 0xe501fdf9, 0x0a3196e0, 0x3e8d5d3a, 0xd1bd3623, + 0x37f2d291, 0xd8c2b988, 0xec7e7252, 0x034e194b, + 0x8507e5e6, 0x6a378eff, 0x5e8b4525, 0xb1bb2e3c, + }, + { + 0x00000000, 0x68032cc8, 0xd0065990, 0xb8057558, + 0xa5e0c5d1, 0xcde3e919, 0x75e69c41, 0x1de5b089, + 0x4e2dfd53, 0x262ed19b, 0x9e2ba4c3, 0xf628880b, + 0xebcd3882, 0x83ce144a, 0x3bcb6112, 0x53c84dda, + 0x9c5bfaa6, 0xf458d66e, 0x4c5da336, 0x245e8ffe, + 0x39bb3f77, 0x51b813bf, 0xe9bd66e7, 0x81be4a2f, + 0xd27607f5, 0xba752b3d, 0x02705e65, 0x6a7372ad, + 0x7796c224, 0x1f95eeec, 0xa7909bb4, 0xcf93b77c, + 0x3d5b83bd, 0x5558af75, 0xed5dda2d, 0x855ef6e5, + 0x98bb466c, 0xf0b86aa4, 0x48bd1ffc, 0x20be3334, + 0x73767eee, 0x1b755226, 0xa370277e, 0xcb730bb6, + 0xd696bb3f, 0xbe9597f7, 0x0690e2af, 0x6e93ce67, + 0xa100791b, 0xc90355d3, 0x7106208b, 0x19050c43, + 0x04e0bcca, 0x6ce39002, 0xd4e6e55a, 0xbce5c992, + 0xef2d8448, 0x872ea880, 0x3f2bddd8, 0x5728f110, + 0x4acd4199, 0x22ce6d51, 0x9acb1809, 0xf2c834c1, + 0x7ab7077a, 0x12b42bb2, 0xaab15eea, 0xc2b27222, + 0xdf57c2ab, 0xb754ee63, 0x0f519b3b, 0x6752b7f3, + 0x349afa29, 0x5c99d6e1, 0xe49ca3b9, 0x8c9f8f71, + 0x917a3ff8, 0xf9791330, 0x417c6668, 0x297f4aa0, + 0xe6ecfddc, 0x8eefd114, 0x36eaa44c, 0x5ee98884, + 0x430c380d, 0x2b0f14c5, 0x930a619d, 0xfb094d55, + 0xa8c1008f, 0xc0c22c47, 0x78c7591f, 0x10c475d7, + 0x0d21c55e, 0x6522e996, 0xdd279cce, 0xb524b006, + 0x47ec84c7, 0x2fefa80f, 0x97eadd57, 0xffe9f19f, + 0xe20c4116, 0x8a0f6dde, 0x320a1886, 0x5a09344e, + 0x09c17994, 0x61c2555c, 0xd9c72004, 0xb1c40ccc, + 0xac21bc45, 0xc422908d, 0x7c27e5d5, 0x1424c91d, + 0xdbb77e61, 0xb3b452a9, 0x0bb127f1, 0x63b20b39, + 0x7e57bbb0, 0x16549778, 0xae51e220, 0xc652cee8, + 0x959a8332, 0xfd99affa, 0x459cdaa2, 0x2d9ff66a, + 0x307a46e3, 0x58796a2b, 0xe07c1f73, 0x887f33bb, + 0xf56e0ef4, 0x9d6d223c, 0x25685764, 0x4d6b7bac, + 0x508ecb25, 0x388de7ed, 0x808892b5, 0xe88bbe7d, + 0xbb43f3a7, 0xd340df6f, 0x6b45aa37, 0x034686ff, + 0x1ea33676, 0x76a01abe, 0xcea56fe6, 0xa6a6432e, + 0x6935f452, 0x0136d89a, 0xb933adc2, 0xd130810a, + 0xccd53183, 0xa4d61d4b, 0x1cd36813, 0x74d044db, + 0x27180901, 0x4f1b25c9, 0xf71e5091, 0x9f1d7c59, + 0x82f8ccd0, 0xeafbe018, 0x52fe9540, 0x3afdb988, + 0xc8358d49, 0xa036a181, 0x1833d4d9, 0x7030f811, + 0x6dd54898, 0x05d66450, 0xbdd31108, 0xd5d03dc0, + 0x8618701a, 0xee1b5cd2, 0x561e298a, 0x3e1d0542, + 0x23f8b5cb, 0x4bfb9903, 0xf3feec5b, 0x9bfdc093, + 0x546e77ef, 0x3c6d5b27, 0x84682e7f, 0xec6b02b7, + 0xf18eb23e, 0x998d9ef6, 0x2188ebae, 0x498bc766, + 0x1a438abc, 0x7240a674, 0xca45d32c, 0xa246ffe4, + 0xbfa34f6d, 0xd7a063a5, 0x6fa516fd, 0x07a63a35, + 0x8fd9098e, 0xe7da2546, 0x5fdf501e, 0x37dc7cd6, + 0x2a39cc5f, 0x423ae097, 0xfa3f95cf, 0x923cb907, + 0xc1f4f4dd, 0xa9f7d815, 0x11f2ad4d, 0x79f18185, + 0x6414310c, 0x0c171dc4, 0xb412689c, 0xdc114454, + 0x1382f328, 0x7b81dfe0, 0xc384aab8, 0xab878670, + 0xb66236f9, 0xde611a31, 0x66646f69, 0x0e6743a1, + 0x5daf0e7b, 0x35ac22b3, 0x8da957eb, 0xe5aa7b23, + 0xf84fcbaa, 0x904ce762, 0x2849923a, 0x404abef2, + 0xb2828a33, 0xda81a6fb, 0x6284d3a3, 0x0a87ff6b, + 0x17624fe2, 0x7f61632a, 0xc7641672, 0xaf673aba, + 0xfcaf7760, 0x94ac5ba8, 0x2ca92ef0, 0x44aa0238, + 0x594fb2b1, 0x314c9e79, 0x8949eb21, 0xe14ac7e9, + 0x2ed97095, 0x46da5c5d, 0xfedf2905, 0x96dc05cd, + 0x8b39b544, 0xe33a998c, 0x5b3fecd4, 0x333cc01c, + 0x60f48dc6, 0x08f7a10e, 0xb0f2d456, 0xd8f1f89e, + 0xc5144817, 0xad1764df, 0x15121187, 0x7d113d4f, + }, + { + 0x00000000, 0x493c7d27, 0x9278fa4e, 0xdb448769, + 0x211d826d, 0x6821ff4a, 0xb3657823, 0xfa590504, + 0x423b04da, 0x0b0779fd, 0xd043fe94, 0x997f83b3, + 0x632686b7, 0x2a1afb90, 0xf15e7cf9, 0xb86201de, + 0x847609b4, 0xcd4a7493, 0x160ef3fa, 0x5f328edd, + 0xa56b8bd9, 0xec57f6fe, 0x37137197, 0x7e2f0cb0, + 0xc64d0d6e, 0x8f717049, 0x5435f720, 0x1d098a07, + 0xe7508f03, 0xae6cf224, 0x7528754d, 0x3c14086a, + 0x0d006599, 0x443c18be, 0x9f789fd7, 0xd644e2f0, + 0x2c1de7f4, 0x65219ad3, 0xbe651dba, 0xf759609d, + 0x4f3b6143, 0x06071c64, 0xdd439b0d, 0x947fe62a, + 0x6e26e32e, 0x271a9e09, 0xfc5e1960, 0xb5626447, + 0x89766c2d, 0xc04a110a, 0x1b0e9663, 0x5232eb44, + 0xa86bee40, 0xe1579367, 0x3a13140e, 0x732f6929, + 0xcb4d68f7, 0x827115d0, 0x593592b9, 0x1009ef9e, + 0xea50ea9a, 0xa36c97bd, 0x782810d4, 0x31146df3, + 0x1a00cb32, 0x533cb615, 0x8878317c, 0xc1444c5b, + 0x3b1d495f, 0x72213478, 0xa965b311, 0xe059ce36, + 0x583bcfe8, 0x1107b2cf, 0xca4335a6, 0x837f4881, + 0x79264d85, 0x301a30a2, 0xeb5eb7cb, 0xa262caec, + 0x9e76c286, 0xd74abfa1, 0x0c0e38c8, 0x453245ef, + 0xbf6b40eb, 0xf6573dcc, 0x2d13baa5, 0x642fc782, + 0xdc4dc65c, 0x9571bb7b, 0x4e353c12, 0x07094135, + 0xfd504431, 0xb46c3916, 0x6f28be7f, 0x2614c358, + 0x1700aeab, 0x5e3cd38c, 0x857854e5, 0xcc4429c2, + 0x361d2cc6, 0x7f2151e1, 0xa465d688, 0xed59abaf, + 0x553baa71, 0x1c07d756, 0xc743503f, 0x8e7f2d18, + 0x7426281c, 0x3d1a553b, 0xe65ed252, 0xaf62af75, + 0x9376a71f, 0xda4ada38, 0x010e5d51, 0x48322076, + 0xb26b2572, 0xfb575855, 0x2013df3c, 0x692fa21b, + 0xd14da3c5, 0x9871dee2, 0x4335598b, 0x0a0924ac, + 0xf05021a8, 0xb96c5c8f, 0x6228dbe6, 0x2b14a6c1, + 0x34019664, 0x7d3deb43, 0xa6796c2a, 0xef45110d, + 0x151c1409, 0x5c20692e, 0x8764ee47, 0xce589360, + 0x763a92be, 0x3f06ef99, 0xe44268f0, 0xad7e15d7, + 0x572710d3, 0x1e1b6df4, 0xc55fea9d, 0x8c6397ba, + 0xb0779fd0, 0xf94be2f7, 0x220f659e, 0x6b3318b9, + 0x916a1dbd, 0xd856609a, 0x0312e7f3, 0x4a2e9ad4, + 0xf24c9b0a, 0xbb70e62d, 0x60346144, 0x29081c63, + 0xd3511967, 0x9a6d6440, 0x4129e329, 0x08159e0e, + 0x3901f3fd, 0x703d8eda, 0xab7909b3, 0xe2457494, + 0x181c7190, 0x51200cb7, 0x8a648bde, 0xc358f6f9, + 0x7b3af727, 0x32068a00, 0xe9420d69, 0xa07e704e, + 0x5a27754a, 0x131b086d, 0xc85f8f04, 0x8163f223, + 0xbd77fa49, 0xf44b876e, 0x2f0f0007, 0x66337d20, + 0x9c6a7824, 0xd5560503, 0x0e12826a, 0x472eff4d, + 0xff4cfe93, 0xb67083b4, 0x6d3404dd, 0x240879fa, + 0xde517cfe, 0x976d01d9, 0x4c2986b0, 0x0515fb97, + 0x2e015d56, 0x673d2071, 0xbc79a718, 0xf545da3f, + 0x0f1cdf3b, 0x4620a21c, 0x9d642575, 0xd4585852, + 0x6c3a598c, 0x250624ab, 0xfe42a3c2, 0xb77edee5, + 0x4d27dbe1, 0x041ba6c6, 0xdf5f21af, 0x96635c88, + 0xaa7754e2, 0xe34b29c5, 0x380faeac, 0x7133d38b, + 0x8b6ad68f, 0xc256aba8, 0x19122cc1, 0x502e51e6, + 0xe84c5038, 0xa1702d1f, 0x7a34aa76, 0x3308d751, + 0xc951d255, 0x806daf72, 0x5b29281b, 0x1215553c, + 0x230138cf, 0x6a3d45e8, 0xb179c281, 0xf845bfa6, + 0x021cbaa2, 0x4b20c785, 0x906440ec, 0xd9583dcb, + 0x613a3c15, 0x28064132, 0xf342c65b, 0xba7ebb7c, + 0x4027be78, 0x091bc35f, 0xd25f4436, 0x9b633911, + 0xa777317b, 0xee4b4c5c, 0x350fcb35, 0x7c33b612, + 0x866ab316, 0xcf56ce31, 0x14124958, 0x5d2e347f, + 0xe54c35a1, 0xac704886, 0x7734cfef, 0x3e08b2c8, + 0xc451b7cc, 0x8d6dcaeb, 0x56294d82, 0x1f1530a5, + }, + { + 0x00000000, 0xf43ed648, 0xed91da61, 0x19af0c29, + 0xdecfc233, 0x2af1147b, 0x335e1852, 0xc760ce1a, + 0xb873f297, 0x4c4d24df, 0x55e228f6, 0xa1dcfebe, + 0x66bc30a4, 0x9282e6ec, 0x8b2deac5, 0x7f133c8d, + 0x750b93df, 0x81354597, 0x989a49be, 0x6ca49ff6, + 0xabc451ec, 0x5ffa87a4, 0x46558b8d, 0xb26b5dc5, + 0xcd786148, 0x3946b700, 0x20e9bb29, 0xd4d76d61, + 0x13b7a37b, 0xe7897533, 0xfe26791a, 0x0a18af52, + 0xea1727be, 0x1e29f1f6, 0x0786fddf, 0xf3b82b97, + 0x34d8e58d, 0xc0e633c5, 0xd9493fec, 0x2d77e9a4, + 0x5264d529, 0xa65a0361, 0xbff50f48, 0x4bcbd900, + 0x8cab171a, 0x7895c152, 0x613acd7b, 0x95041b33, + 0x9f1cb461, 0x6b226229, 0x728d6e00, 0x86b3b848, + 0x41d37652, 0xb5eda01a, 0xac42ac33, 0x587c7a7b, + 0x276f46f6, 0xd35190be, 0xcafe9c97, 0x3ec04adf, + 0xf9a084c5, 0x0d9e528d, 0x14315ea4, 0xe00f88ec, + 0xd1c2398d, 0x25fcefc5, 0x3c53e3ec, 0xc86d35a4, + 0x0f0dfbbe, 0xfb332df6, 0xe29c21df, 0x16a2f797, + 0x69b1cb1a, 0x9d8f1d52, 0x8420117b, 0x701ec733, + 0xb77e0929, 0x4340df61, 0x5aefd348, 0xaed10500, + 0xa4c9aa52, 0x50f77c1a, 0x49587033, 0xbd66a67b, + 0x7a066861, 0x8e38be29, 0x9797b200, 0x63a96448, + 0x1cba58c5, 0xe8848e8d, 0xf12b82a4, 0x051554ec, + 0xc2759af6, 0x364b4cbe, 0x2fe44097, 0xdbda96df, + 0x3bd51e33, 0xcfebc87b, 0xd644c452, 0x227a121a, + 0xe51adc00, 0x11240a48, 0x088b0661, 0xfcb5d029, + 0x83a6eca4, 0x77983aec, 0x6e3736c5, 0x9a09e08d, + 0x5d692e97, 0xa957f8df, 0xb0f8f4f6, 0x44c622be, + 0x4ede8dec, 0xbae05ba4, 0xa34f578d, 0x577181c5, + 0x90114fdf, 0x642f9997, 0x7d8095be, 0x89be43f6, + 0xf6ad7f7b, 0x0293a933, 0x1b3ca51a, 0xef027352, + 0x2862bd48, 0xdc5c6b00, 0xc5f36729, 0x31cdb161, + 0xa66805eb, 0x5256d3a3, 0x4bf9df8a, 0xbfc709c2, + 0x78a7c7d8, 0x8c991190, 0x95361db9, 0x6108cbf1, + 0x1e1bf77c, 0xea252134, 0xf38a2d1d, 0x07b4fb55, + 0xc0d4354f, 0x34eae307, 0x2d45ef2e, 0xd97b3966, + 0xd3639634, 0x275d407c, 0x3ef24c55, 0xcacc9a1d, + 0x0dac5407, 0xf992824f, 0xe03d8e66, 0x1403582e, + 0x6b1064a3, 0x9f2eb2eb, 0x8681bec2, 0x72bf688a, + 0xb5dfa690, 0x41e170d8, 0x584e7cf1, 0xac70aab9, + 0x4c7f2255, 0xb841f41d, 0xa1eef834, 0x55d02e7c, + 0x92b0e066, 0x668e362e, 0x7f213a07, 0x8b1fec4f, + 0xf40cd0c2, 0x0032068a, 0x199d0aa3, 0xeda3dceb, + 0x2ac312f1, 0xdefdc4b9, 0xc752c890, 0x336c1ed8, + 0x3974b18a, 0xcd4a67c2, 0xd4e56beb, 0x20dbbda3, + 0xe7bb73b9, 0x1385a5f1, 0x0a2aa9d8, 0xfe147f90, + 0x8107431d, 0x75399555, 0x6c96997c, 0x98a84f34, + 0x5fc8812e, 0xabf65766, 0xb2595b4f, 0x46678d07, + 0x77aa3c66, 0x8394ea2e, 0x9a3be607, 0x6e05304f, + 0xa965fe55, 0x5d5b281d, 0x44f42434, 0xb0caf27c, + 0xcfd9cef1, 0x3be718b9, 0x22481490, 0xd676c2d8, + 0x11160cc2, 0xe528da8a, 0xfc87d6a3, 0x08b900eb, + 0x02a1afb9, 0xf69f79f1, 0xef3075d8, 0x1b0ea390, + 0xdc6e6d8a, 0x2850bbc2, 0x31ffb7eb, 0xc5c161a3, + 0xbad25d2e, 0x4eec8b66, 0x5743874f, 0xa37d5107, + 0x641d9f1d, 0x90234955, 0x898c457c, 0x7db29334, + 0x9dbd1bd8, 0x6983cd90, 0x702cc1b9, 0x841217f1, + 0x4372d9eb, 0xb74c0fa3, 0xaee3038a, 0x5addd5c2, + 0x25cee94f, 0xd1f03f07, 0xc85f332e, 0x3c61e566, + 0xfb012b7c, 0x0f3ffd34, 0x1690f11d, 0xe2ae2755, + 0xe8b68807, 0x1c885e4f, 0x05275266, 0xf119842e, + 0x36794a34, 0xc2479c7c, 0xdbe89055, 0x2fd6461d, + 0x50c57a90, 0xa4fbacd8, 0xbd54a0f1, 0x496a76b9, + 0x8e0ab8a3, 0x7a346eeb, 0x639b62c2, 0x97a5b48a, + }, + { + 0x00000000, 0xcb567ba5, 0x934081bb, 0x5816fa1e, + 0x236d7587, 0xe83b0e22, 0xb02df43c, 0x7b7b8f99, + 0x46daeb0e, 0x8d8c90ab, 0xd59a6ab5, 0x1ecc1110, + 0x65b79e89, 0xaee1e52c, 0xf6f71f32, 0x3da16497, + 0x8db5d61c, 0x46e3adb9, 0x1ef557a7, 0xd5a32c02, + 0xaed8a39b, 0x658ed83e, 0x3d982220, 0xf6ce5985, + 0xcb6f3d12, 0x003946b7, 0x582fbca9, 0x9379c70c, + 0xe8024895, 0x23543330, 0x7b42c92e, 0xb014b28b, + 0x1e87dac9, 0xd5d1a16c, 0x8dc75b72, 0x469120d7, + 0x3deaaf4e, 0xf6bcd4eb, 0xaeaa2ef5, 0x65fc5550, + 0x585d31c7, 0x930b4a62, 0xcb1db07c, 0x004bcbd9, + 0x7b304440, 0xb0663fe5, 0xe870c5fb, 0x2326be5e, + 0x93320cd5, 0x58647770, 0x00728d6e, 0xcb24f6cb, + 0xb05f7952, 0x7b0902f7, 0x231ff8e9, 0xe849834c, + 0xd5e8e7db, 0x1ebe9c7e, 0x46a86660, 0x8dfe1dc5, + 0xf685925c, 0x3dd3e9f9, 0x65c513e7, 0xae936842, + 0x3d0fb592, 0xf659ce37, 0xae4f3429, 0x65194f8c, + 0x1e62c015, 0xd534bbb0, 0x8d2241ae, 0x46743a0b, + 0x7bd55e9c, 0xb0832539, 0xe895df27, 0x23c3a482, + 0x58b82b1b, 0x93ee50be, 0xcbf8aaa0, 0x00aed105, + 0xb0ba638e, 0x7bec182b, 0x23fae235, 0xe8ac9990, + 0x93d71609, 0x58816dac, 0x009797b2, 0xcbc1ec17, + 0xf6608880, 0x3d36f325, 0x6520093b, 0xae76729e, + 0xd50dfd07, 0x1e5b86a2, 0x464d7cbc, 0x8d1b0719, + 0x23886f5b, 0xe8de14fe, 0xb0c8eee0, 0x7b9e9545, + 0x00e51adc, 0xcbb36179, 0x93a59b67, 0x58f3e0c2, + 0x65528455, 0xae04fff0, 0xf61205ee, 0x3d447e4b, + 0x463ff1d2, 0x8d698a77, 0xd57f7069, 0x1e290bcc, + 0xae3db947, 0x656bc2e2, 0x3d7d38fc, 0xf62b4359, + 0x8d50ccc0, 0x4606b765, 0x1e104d7b, 0xd54636de, + 0xe8e75249, 0x23b129ec, 0x7ba7d3f2, 0xb0f1a857, + 0xcb8a27ce, 0x00dc5c6b, 0x58caa675, 0x939cddd0, + 0x7a1f6b24, 0xb1491081, 0xe95fea9f, 0x2209913a, + 0x59721ea3, 0x92246506, 0xca329f18, 0x0164e4bd, + 0x3cc5802a, 0xf793fb8f, 0xaf850191, 0x64d37a34, + 0x1fa8f5ad, 0xd4fe8e08, 0x8ce87416, 0x47be0fb3, + 0xf7aabd38, 0x3cfcc69d, 0x64ea3c83, 0xafbc4726, + 0xd4c7c8bf, 0x1f91b31a, 0x47874904, 0x8cd132a1, + 0xb1705636, 0x7a262d93, 0x2230d78d, 0xe966ac28, + 0x921d23b1, 0x594b5814, 0x015da20a, 0xca0bd9af, + 0x6498b1ed, 0xafceca48, 0xf7d83056, 0x3c8e4bf3, + 0x47f5c46a, 0x8ca3bfcf, 0xd4b545d1, 0x1fe33e74, + 0x22425ae3, 0xe9142146, 0xb102db58, 0x7a54a0fd, + 0x012f2f64, 0xca7954c1, 0x926faedf, 0x5939d57a, + 0xe92d67f1, 0x227b1c54, 0x7a6de64a, 0xb13b9def, + 0xca401276, 0x011669d3, 0x590093cd, 0x9256e868, + 0xaff78cff, 0x64a1f75a, 0x3cb70d44, 0xf7e176e1, + 0x8c9af978, 0x47cc82dd, 0x1fda78c3, 0xd48c0366, + 0x4710deb6, 0x8c46a513, 0xd4505f0d, 0x1f0624a8, + 0x647dab31, 0xaf2bd094, 0xf73d2a8a, 0x3c6b512f, + 0x01ca35b8, 0xca9c4e1d, 0x928ab403, 0x59dccfa6, + 0x22a7403f, 0xe9f13b9a, 0xb1e7c184, 0x7ab1ba21, + 0xcaa508aa, 0x01f3730f, 0x59e58911, 0x92b3f2b4, + 0xe9c87d2d, 0x229e0688, 0x7a88fc96, 0xb1de8733, + 0x8c7fe3a4, 0x47299801, 0x1f3f621f, 0xd46919ba, + 0xaf129623, 0x6444ed86, 0x3c521798, 0xf7046c3d, + 0x5997047f, 0x92c17fda, 0xcad785c4, 0x0181fe61, + 0x7afa71f8, 0xb1ac0a5d, 0xe9baf043, 0x22ec8be6, + 0x1f4def71, 0xd41b94d4, 0x8c0d6eca, 0x475b156f, + 0x3c209af6, 0xf776e153, 0xaf601b4d, 0x643660e8, + 0xd422d263, 0x1f74a9c6, 0x476253d8, 0x8c34287d, + 0xf74fa7e4, 0x3c19dc41, 0x640f265f, 0xaf595dfa, + 0x92f8396d, 0x59ae42c8, 0x01b8b8d6, 0xcaeec373, + 0xb1954cea, 0x7ac3374f, 0x22d5cd51, 0xe983b6f4, + }, + { + 0x00000000, 0x9771f7c1, 0x2b0f9973, 0xbc7e6eb2, + 0x561f32e6, 0xc16ec527, 0x7d10ab95, 0xea615c54, + 0xac3e65cc, 0x3b4f920d, 0x8731fcbf, 0x10400b7e, + 0xfa21572a, 0x6d50a0eb, 0xd12ece59, 0x465f3998, + 0x5d90bd69, 0xcae14aa8, 0x769f241a, 0xe1eed3db, + 0x0b8f8f8f, 0x9cfe784e, 0x208016fc, 0xb7f1e13d, + 0xf1aed8a5, 0x66df2f64, 0xdaa141d6, 0x4dd0b617, + 0xa7b1ea43, 0x30c01d82, 0x8cbe7330, 0x1bcf84f1, + 0xbb217ad2, 0x2c508d13, 0x902ee3a1, 0x075f1460, + 0xed3e4834, 0x7a4fbff5, 0xc631d147, 0x51402686, + 0x171f1f1e, 0x806ee8df, 0x3c10866d, 0xab6171ac, + 0x41002df8, 0xd671da39, 0x6a0fb48b, 0xfd7e434a, + 0xe6b1c7bb, 0x71c0307a, 0xcdbe5ec8, 0x5acfa909, + 0xb0aef55d, 0x27df029c, 0x9ba16c2e, 0x0cd09bef, + 0x4a8fa277, 0xddfe55b6, 0x61803b04, 0xf6f1ccc5, + 0x1c909091, 0x8be16750, 0x379f09e2, 0xa0eefe23, + 0x73ae8355, 0xe4df7494, 0x58a11a26, 0xcfd0ede7, + 0x25b1b1b3, 0xb2c04672, 0x0ebe28c0, 0x99cfdf01, + 0xdf90e699, 0x48e11158, 0xf49f7fea, 0x63ee882b, + 0x898fd47f, 0x1efe23be, 0xa2804d0c, 0x35f1bacd, + 0x2e3e3e3c, 0xb94fc9fd, 0x0531a74f, 0x9240508e, + 0x78210cda, 0xef50fb1b, 0x532e95a9, 0xc45f6268, + 0x82005bf0, 0x1571ac31, 0xa90fc283, 0x3e7e3542, + 0xd41f6916, 0x436e9ed7, 0xff10f065, 0x686107a4, + 0xc88ff987, 0x5ffe0e46, 0xe38060f4, 0x74f19735, + 0x9e90cb61, 0x09e13ca0, 0xb59f5212, 0x22eea5d3, + 0x64b19c4b, 0xf3c06b8a, 0x4fbe0538, 0xd8cff2f9, + 0x32aeaead, 0xa5df596c, 0x19a137de, 0x8ed0c01f, + 0x951f44ee, 0x026eb32f, 0xbe10dd9d, 0x29612a5c, + 0xc3007608, 0x547181c9, 0xe80fef7b, 0x7f7e18ba, + 0x39212122, 0xae50d6e3, 0x122eb851, 0x855f4f90, + 0x6f3e13c4, 0xf84fe405, 0x44318ab7, 0xd3407d76, + 0xe75d06aa, 0x702cf16b, 0xcc529fd9, 0x5b236818, + 0xb142344c, 0x2633c38d, 0x9a4dad3f, 0x0d3c5afe, + 0x4b636366, 0xdc1294a7, 0x606cfa15, 0xf71d0dd4, + 0x1d7c5180, 0x8a0da641, 0x3673c8f3, 0xa1023f32, + 0xbacdbbc3, 0x2dbc4c02, 0x91c222b0, 0x06b3d571, + 0xecd28925, 0x7ba37ee4, 0xc7dd1056, 0x50ace797, + 0x16f3de0f, 0x818229ce, 0x3dfc477c, 0xaa8db0bd, + 0x40ecece9, 0xd79d1b28, 0x6be3759a, 0xfc92825b, + 0x5c7c7c78, 0xcb0d8bb9, 0x7773e50b, 0xe00212ca, + 0x0a634e9e, 0x9d12b95f, 0x216cd7ed, 0xb61d202c, + 0xf04219b4, 0x6733ee75, 0xdb4d80c7, 0x4c3c7706, + 0xa65d2b52, 0x312cdc93, 0x8d52b221, 0x1a2345e0, + 0x01ecc111, 0x969d36d0, 0x2ae35862, 0xbd92afa3, + 0x57f3f3f7, 0xc0820436, 0x7cfc6a84, 0xeb8d9d45, + 0xadd2a4dd, 0x3aa3531c, 0x86dd3dae, 0x11acca6f, + 0xfbcd963b, 0x6cbc61fa, 0xd0c20f48, 0x47b3f889, + 0x94f385ff, 0x0382723e, 0xbffc1c8c, 0x288deb4d, + 0xc2ecb719, 0x559d40d8, 0xe9e32e6a, 0x7e92d9ab, + 0x38cde033, 0xafbc17f2, 0x13c27940, 0x84b38e81, + 0x6ed2d2d5, 0xf9a32514, 0x45dd4ba6, 0xd2acbc67, + 0xc9633896, 0x5e12cf57, 0xe26ca1e5, 0x751d5624, + 0x9f7c0a70, 0x080dfdb1, 0xb4739303, 0x230264c2, + 0x655d5d5a, 0xf22caa9b, 0x4e52c429, 0xd92333e8, + 0x33426fbc, 0xa433987d, 0x184df6cf, 0x8f3c010e, + 0x2fd2ff2d, 0xb8a308ec, 0x04dd665e, 0x93ac919f, + 0x79cdcdcb, 0xeebc3a0a, 0x52c254b8, 0xc5b3a379, + 0x83ec9ae1, 0x149d6d20, 0xa8e30392, 0x3f92f453, + 0xd5f3a807, 0x42825fc6, 0xfefc3174, 0x698dc6b5, + 0x72424244, 0xe533b585, 0x594ddb37, 0xce3c2cf6, + 0x245d70a2, 0xb32c8763, 0x0f52e9d1, 0x98231e10, + 0xde7c2788, 0x490dd049, 0xf573befb, 0x6202493a, + 0x8863156e, 0x1f12e2af, 0xa36c8c1d, 0x341d7bdc, + }, + { + 0x00000000, 0x3171d430, 0x62e3a860, 0x53927c50, + 0xc5c750c0, 0xf4b684f0, 0xa724f8a0, 0x96552c90, + 0x8e62d771, 0xbf130341, 0xec817f11, 0xddf0ab21, + 0x4ba587b1, 0x7ad45381, 0x29462fd1, 0x1837fbe1, + 0x1929d813, 0x28580c23, 0x7bca7073, 0x4abba443, + 0xdcee88d3, 0xed9f5ce3, 0xbe0d20b3, 0x8f7cf483, + 0x974b0f62, 0xa63adb52, 0xf5a8a702, 0xc4d97332, + 0x528c5fa2, 0x63fd8b92, 0x306ff7c2, 0x011e23f2, + 0x3253b026, 0x03226416, 0x50b01846, 0x61c1cc76, + 0xf794e0e6, 0xc6e534d6, 0x95774886, 0xa4069cb6, + 0xbc316757, 0x8d40b367, 0xded2cf37, 0xefa31b07, + 0x79f63797, 0x4887e3a7, 0x1b159ff7, 0x2a644bc7, + 0x2b7a6835, 0x1a0bbc05, 0x4999c055, 0x78e81465, + 0xeebd38f5, 0xdfccecc5, 0x8c5e9095, 0xbd2f44a5, + 0xa518bf44, 0x94696b74, 0xc7fb1724, 0xf68ac314, + 0x60dfef84, 0x51ae3bb4, 0x023c47e4, 0x334d93d4, + 0x64a7604c, 0x55d6b47c, 0x0644c82c, 0x37351c1c, + 0xa160308c, 0x9011e4bc, 0xc38398ec, 0xf2f24cdc, + 0xeac5b73d, 0xdbb4630d, 0x88261f5d, 0xb957cb6d, + 0x2f02e7fd, 0x1e7333cd, 0x4de14f9d, 0x7c909bad, + 0x7d8eb85f, 0x4cff6c6f, 0x1f6d103f, 0x2e1cc40f, + 0xb849e89f, 0x89383caf, 0xdaaa40ff, 0xebdb94cf, + 0xf3ec6f2e, 0xc29dbb1e, 0x910fc74e, 0xa07e137e, + 0x362b3fee, 0x075aebde, 0x54c8978e, 0x65b943be, + 0x56f4d06a, 0x6785045a, 0x3417780a, 0x0566ac3a, + 0x933380aa, 0xa242549a, 0xf1d028ca, 0xc0a1fcfa, + 0xd896071b, 0xe9e7d32b, 0xba75af7b, 0x8b047b4b, + 0x1d5157db, 0x2c2083eb, 0x7fb2ffbb, 0x4ec32b8b, + 0x4fdd0879, 0x7eacdc49, 0x2d3ea019, 0x1c4f7429, + 0x8a1a58b9, 0xbb6b8c89, 0xe8f9f0d9, 0xd98824e9, + 0xc1bfdf08, 0xf0ce0b38, 0xa35c7768, 0x922da358, + 0x04788fc8, 0x35095bf8, 0x669b27a8, 0x57eaf398, + 0xc94ec098, 0xf83f14a8, 0xabad68f8, 0x9adcbcc8, + 0x0c899058, 0x3df84468, 0x6e6a3838, 0x5f1bec08, + 0x472c17e9, 0x765dc3d9, 0x25cfbf89, 0x14be6bb9, + 0x82eb4729, 0xb39a9319, 0xe008ef49, 0xd1793b79, + 0xd067188b, 0xe116ccbb, 0xb284b0eb, 0x83f564db, + 0x15a0484b, 0x24d19c7b, 0x7743e02b, 0x4632341b, + 0x5e05cffa, 0x6f741bca, 0x3ce6679a, 0x0d97b3aa, + 0x9bc29f3a, 0xaab34b0a, 0xf921375a, 0xc850e36a, + 0xfb1d70be, 0xca6ca48e, 0x99fed8de, 0xa88f0cee, + 0x3eda207e, 0x0fabf44e, 0x5c39881e, 0x6d485c2e, + 0x757fa7cf, 0x440e73ff, 0x179c0faf, 0x26eddb9f, + 0xb0b8f70f, 0x81c9233f, 0xd25b5f6f, 0xe32a8b5f, + 0xe234a8ad, 0xd3457c9d, 0x80d700cd, 0xb1a6d4fd, + 0x27f3f86d, 0x16822c5d, 0x4510500d, 0x7461843d, + 0x6c567fdc, 0x5d27abec, 0x0eb5d7bc, 0x3fc4038c, + 0xa9912f1c, 0x98e0fb2c, 0xcb72877c, 0xfa03534c, + 0xade9a0d4, 0x9c9874e4, 0xcf0a08b4, 0xfe7bdc84, + 0x682ef014, 0x595f2424, 0x0acd5874, 0x3bbc8c44, + 0x238b77a5, 0x12faa395, 0x4168dfc5, 0x70190bf5, + 0xe64c2765, 0xd73df355, 0x84af8f05, 0xb5de5b35, + 0xb4c078c7, 0x85b1acf7, 0xd623d0a7, 0xe7520497, + 0x71072807, 0x4076fc37, 0x13e48067, 0x22955457, + 0x3aa2afb6, 0x0bd37b86, 0x584107d6, 0x6930d3e6, + 0xff65ff76, 0xce142b46, 0x9d865716, 0xacf78326, + 0x9fba10f2, 0xaecbc4c2, 0xfd59b892, 0xcc286ca2, + 0x5a7d4032, 0x6b0c9402, 0x389ee852, 0x09ef3c62, + 0x11d8c783, 0x20a913b3, 0x733b6fe3, 0x424abbd3, + 0xd41f9743, 0xe56e4373, 0xb6fc3f23, 0x878deb13, + 0x8693c8e1, 0xb7e21cd1, 0xe4706081, 0xd501b4b1, + 0x43549821, 0x72254c11, 0x21b73041, 0x10c6e471, + 0x08f11f90, 0x3980cba0, 0x6a12b7f0, 0x5b6363c0, + 0xcd364f50, 0xfc479b60, 0xafd5e730, 0x9ea43300, + }, + { + 0x00000000, 0x30d23865, 0x61a470ca, 0x517648af, + 0xc348e194, 0xf39ad9f1, 0xa2ec915e, 0x923ea93b, + 0x837db5d9, 0xb3af8dbc, 0xe2d9c513, 0xd20bfd76, + 0x4035544d, 0x70e76c28, 0x21912487, 0x11431ce2, + 0x03171d43, 0x33c52526, 0x62b36d89, 0x526155ec, + 0xc05ffcd7, 0xf08dc4b2, 0xa1fb8c1d, 0x9129b478, + 0x806aa89a, 0xb0b890ff, 0xe1ced850, 0xd11ce035, + 0x4322490e, 0x73f0716b, 0x228639c4, 0x125401a1, + 0x062e3a86, 0x36fc02e3, 0x678a4a4c, 0x57587229, + 0xc566db12, 0xf5b4e377, 0xa4c2abd8, 0x941093bd, + 0x85538f5f, 0xb581b73a, 0xe4f7ff95, 0xd425c7f0, + 0x461b6ecb, 0x76c956ae, 0x27bf1e01, 0x176d2664, + 0x053927c5, 0x35eb1fa0, 0x649d570f, 0x544f6f6a, + 0xc671c651, 0xf6a3fe34, 0xa7d5b69b, 0x97078efe, + 0x8644921c, 0xb696aa79, 0xe7e0e2d6, 0xd732dab3, + 0x450c7388, 0x75de4bed, 0x24a80342, 0x147a3b27, + 0x0c5c750c, 0x3c8e4d69, 0x6df805c6, 0x5d2a3da3, + 0xcf149498, 0xffc6acfd, 0xaeb0e452, 0x9e62dc37, + 0x8f21c0d5, 0xbff3f8b0, 0xee85b01f, 0xde57887a, + 0x4c692141, 0x7cbb1924, 0x2dcd518b, 0x1d1f69ee, + 0x0f4b684f, 0x3f99502a, 0x6eef1885, 0x5e3d20e0, + 0xcc0389db, 0xfcd1b1be, 0xada7f911, 0x9d75c174, + 0x8c36dd96, 0xbce4e5f3, 0xed92ad5c, 0xdd409539, + 0x4f7e3c02, 0x7fac0467, 0x2eda4cc8, 0x1e0874ad, + 0x0a724f8a, 0x3aa077ef, 0x6bd63f40, 0x5b040725, + 0xc93aae1e, 0xf9e8967b, 0xa89eded4, 0x984ce6b1, + 0x890ffa53, 0xb9ddc236, 0xe8ab8a99, 0xd879b2fc, + 0x4a471bc7, 0x7a9523a2, 0x2be36b0d, 0x1b315368, + 0x096552c9, 0x39b76aac, 0x68c12203, 0x58131a66, + 0xca2db35d, 0xfaff8b38, 0xab89c397, 0x9b5bfbf2, + 0x8a18e710, 0xbacadf75, 0xebbc97da, 0xdb6eafbf, + 0x49500684, 0x79823ee1, 0x28f4764e, 0x18264e2b, + 0x18b8ea18, 0x286ad27d, 0x791c9ad2, 0x49cea2b7, + 0xdbf00b8c, 0xeb2233e9, 0xba547b46, 0x8a864323, + 0x9bc55fc1, 0xab1767a4, 0xfa612f0b, 0xcab3176e, + 0x588dbe55, 0x685f8630, 0x3929ce9f, 0x09fbf6fa, + 0x1baff75b, 0x2b7dcf3e, 0x7a0b8791, 0x4ad9bff4, + 0xd8e716cf, 0xe8352eaa, 0xb9436605, 0x89915e60, + 0x98d24282, 0xa8007ae7, 0xf9763248, 0xc9a40a2d, + 0x5b9aa316, 0x6b489b73, 0x3a3ed3dc, 0x0aecebb9, + 0x1e96d09e, 0x2e44e8fb, 0x7f32a054, 0x4fe09831, + 0xddde310a, 0xed0c096f, 0xbc7a41c0, 0x8ca879a5, + 0x9deb6547, 0xad395d22, 0xfc4f158d, 0xcc9d2de8, + 0x5ea384d3, 0x6e71bcb6, 0x3f07f419, 0x0fd5cc7c, + 0x1d81cddd, 0x2d53f5b8, 0x7c25bd17, 0x4cf78572, + 0xdec92c49, 0xee1b142c, 0xbf6d5c83, 0x8fbf64e6, + 0x9efc7804, 0xae2e4061, 0xff5808ce, 0xcf8a30ab, + 0x5db49990, 0x6d66a1f5, 0x3c10e95a, 0x0cc2d13f, + 0x14e49f14, 0x2436a771, 0x7540efde, 0x4592d7bb, + 0xd7ac7e80, 0xe77e46e5, 0xb6080e4a, 0x86da362f, + 0x97992acd, 0xa74b12a8, 0xf63d5a07, 0xc6ef6262, + 0x54d1cb59, 0x6403f33c, 0x3575bb93, 0x05a783f6, + 0x17f38257, 0x2721ba32, 0x7657f29d, 0x4685caf8, + 0xd4bb63c3, 0xe4695ba6, 0xb51f1309, 0x85cd2b6c, + 0x948e378e, 0xa45c0feb, 0xf52a4744, 0xc5f87f21, + 0x57c6d61a, 0x6714ee7f, 0x3662a6d0, 0x06b09eb5, + 0x12caa592, 0x22189df7, 0x736ed558, 0x43bced3d, + 0xd1824406, 0xe1507c63, 0xb02634cc, 0x80f40ca9, + 0x91b7104b, 0xa165282e, 0xf0136081, 0xc0c158e4, + 0x52fff1df, 0x622dc9ba, 0x335b8115, 0x0389b970, + 0x11ddb8d1, 0x210f80b4, 0x7079c81b, 0x40abf07e, + 0xd2955945, 0xe2476120, 0xb331298f, 0x83e311ea, + 0x92a00d08, 0xa272356d, 0xf3047dc2, 0xc3d645a7, + 0x51e8ec9c, 0x613ad4f9, 0x304c9c56, 0x009ea433, + }, + { + 0x00000000, 0x54075546, 0xa80eaa8c, 0xfc09ffca, + 0x55f123e9, 0x01f676af, 0xfdff8965, 0xa9f8dc23, + 0xabe247d2, 0xffe51294, 0x03eced5e, 0x57ebb818, + 0xfe13643b, 0xaa14317d, 0x561dceb7, 0x021a9bf1, + 0x5228f955, 0x062fac13, 0xfa2653d9, 0xae21069f, + 0x07d9dabc, 0x53de8ffa, 0xafd77030, 0xfbd02576, + 0xf9cabe87, 0xadcdebc1, 0x51c4140b, 0x05c3414d, + 0xac3b9d6e, 0xf83cc828, 0x043537e2, 0x503262a4, + 0xa451f2aa, 0xf056a7ec, 0x0c5f5826, 0x58580d60, + 0xf1a0d143, 0xa5a78405, 0x59ae7bcf, 0x0da92e89, + 0x0fb3b578, 0x5bb4e03e, 0xa7bd1ff4, 0xf3ba4ab2, + 0x5a429691, 0x0e45c3d7, 0xf24c3c1d, 0xa64b695b, + 0xf6790bff, 0xa27e5eb9, 0x5e77a173, 0x0a70f435, + 0xa3882816, 0xf78f7d50, 0x0b86829a, 0x5f81d7dc, + 0x5d9b4c2d, 0x099c196b, 0xf595e6a1, 0xa192b3e7, + 0x086a6fc4, 0x5c6d3a82, 0xa064c548, 0xf463900e, + 0x4d4f93a5, 0x1948c6e3, 0xe5413929, 0xb1466c6f, + 0x18beb04c, 0x4cb9e50a, 0xb0b01ac0, 0xe4b74f86, + 0xe6add477, 0xb2aa8131, 0x4ea37efb, 0x1aa42bbd, + 0xb35cf79e, 0xe75ba2d8, 0x1b525d12, 0x4f550854, + 0x1f676af0, 0x4b603fb6, 0xb769c07c, 0xe36e953a, + 0x4a964919, 0x1e911c5f, 0xe298e395, 0xb69fb6d3, + 0xb4852d22, 0xe0827864, 0x1c8b87ae, 0x488cd2e8, + 0xe1740ecb, 0xb5735b8d, 0x497aa447, 0x1d7df101, + 0xe91e610f, 0xbd193449, 0x4110cb83, 0x15179ec5, + 0xbcef42e6, 0xe8e817a0, 0x14e1e86a, 0x40e6bd2c, + 0x42fc26dd, 0x16fb739b, 0xeaf28c51, 0xbef5d917, + 0x170d0534, 0x430a5072, 0xbf03afb8, 0xeb04fafe, + 0xbb36985a, 0xef31cd1c, 0x133832d6, 0x473f6790, + 0xeec7bbb3, 0xbac0eef5, 0x46c9113f, 0x12ce4479, + 0x10d4df88, 0x44d38ace, 0xb8da7504, 0xecdd2042, + 0x4525fc61, 0x1122a927, 0xed2b56ed, 0xb92c03ab, + 0x9a9f274a, 0xce98720c, 0x32918dc6, 0x6696d880, + 0xcf6e04a3, 0x9b6951e5, 0x6760ae2f, 0x3367fb69, + 0x317d6098, 0x657a35de, 0x9973ca14, 0xcd749f52, + 0x648c4371, 0x308b1637, 0xcc82e9fd, 0x9885bcbb, + 0xc8b7de1f, 0x9cb08b59, 0x60b97493, 0x34be21d5, + 0x9d46fdf6, 0xc941a8b0, 0x3548577a, 0x614f023c, + 0x635599cd, 0x3752cc8b, 0xcb5b3341, 0x9f5c6607, + 0x36a4ba24, 0x62a3ef62, 0x9eaa10a8, 0xcaad45ee, + 0x3eced5e0, 0x6ac980a6, 0x96c07f6c, 0xc2c72a2a, + 0x6b3ff609, 0x3f38a34f, 0xc3315c85, 0x973609c3, + 0x952c9232, 0xc12bc774, 0x3d2238be, 0x69256df8, + 0xc0ddb1db, 0x94dae49d, 0x68d31b57, 0x3cd44e11, + 0x6ce62cb5, 0x38e179f3, 0xc4e88639, 0x90efd37f, + 0x39170f5c, 0x6d105a1a, 0x9119a5d0, 0xc51ef096, + 0xc7046b67, 0x93033e21, 0x6f0ac1eb, 0x3b0d94ad, + 0x92f5488e, 0xc6f21dc8, 0x3afbe202, 0x6efcb744, + 0xd7d0b4ef, 0x83d7e1a9, 0x7fde1e63, 0x2bd94b25, + 0x82219706, 0xd626c240, 0x2a2f3d8a, 0x7e2868cc, + 0x7c32f33d, 0x2835a67b, 0xd43c59b1, 0x803b0cf7, + 0x29c3d0d4, 0x7dc48592, 0x81cd7a58, 0xd5ca2f1e, + 0x85f84dba, 0xd1ff18fc, 0x2df6e736, 0x79f1b270, + 0xd0096e53, 0x840e3b15, 0x7807c4df, 0x2c009199, + 0x2e1a0a68, 0x7a1d5f2e, 0x8614a0e4, 0xd213f5a2, + 0x7beb2981, 0x2fec7cc7, 0xd3e5830d, 0x87e2d64b, + 0x73814645, 0x27861303, 0xdb8fecc9, 0x8f88b98f, + 0x267065ac, 0x727730ea, 0x8e7ecf20, 0xda799a66, + 0xd8630197, 0x8c6454d1, 0x706dab1b, 0x246afe5d, + 0x8d92227e, 0xd9957738, 0x259c88f2, 0x719bddb4, + 0x21a9bf10, 0x75aeea56, 0x89a7159c, 0xdda040da, + 0x74589cf9, 0x205fc9bf, 0xdc563675, 0x88516333, + 0x8a4bf8c2, 0xde4cad84, 0x2245524e, 0x76420708, + 0xdfbadb2b, 0x8bbd8e6d, 0x77b471a7, 0x23b324e1, + }, + { + 0x00000000, 0x678efd01, 0xcf1dfa02, 0xa8930703, + 0x9bd782f5, 0xfc597ff4, 0x54ca78f7, 0x334485f6, + 0x3243731b, 0x55cd8e1a, 0xfd5e8919, 0x9ad07418, + 0xa994f1ee, 0xce1a0cef, 0x66890bec, 0x0107f6ed, + 0x6486e636, 0x03081b37, 0xab9b1c34, 0xcc15e135, + 0xff5164c3, 0x98df99c2, 0x304c9ec1, 0x57c263c0, + 0x56c5952d, 0x314b682c, 0x99d86f2f, 0xfe56922e, + 0xcd1217d8, 0xaa9cead9, 0x020fedda, 0x658110db, + 0xc90dcc6c, 0xae83316d, 0x0610366e, 0x619ecb6f, + 0x52da4e99, 0x3554b398, 0x9dc7b49b, 0xfa49499a, + 0xfb4ebf77, 0x9cc04276, 0x34534575, 0x53ddb874, + 0x60993d82, 0x0717c083, 0xaf84c780, 0xc80a3a81, + 0xad8b2a5a, 0xca05d75b, 0x6296d058, 0x05182d59, + 0x365ca8af, 0x51d255ae, 0xf94152ad, 0x9ecfafac, + 0x9fc85941, 0xf846a440, 0x50d5a343, 0x375b5e42, + 0x041fdbb4, 0x639126b5, 0xcb0221b6, 0xac8cdcb7, + 0x97f7ee29, 0xf0791328, 0x58ea142b, 0x3f64e92a, + 0x0c206cdc, 0x6bae91dd, 0xc33d96de, 0xa4b36bdf, + 0xa5b49d32, 0xc23a6033, 0x6aa96730, 0x0d279a31, + 0x3e631fc7, 0x59ede2c6, 0xf17ee5c5, 0x96f018c4, + 0xf371081f, 0x94fff51e, 0x3c6cf21d, 0x5be20f1c, + 0x68a68aea, 0x0f2877eb, 0xa7bb70e8, 0xc0358de9, + 0xc1327b04, 0xa6bc8605, 0x0e2f8106, 0x69a17c07, + 0x5ae5f9f1, 0x3d6b04f0, 0x95f803f3, 0xf276fef2, + 0x5efa2245, 0x3974df44, 0x91e7d847, 0xf6692546, + 0xc52da0b0, 0xa2a35db1, 0x0a305ab2, 0x6dbea7b3, + 0x6cb9515e, 0x0b37ac5f, 0xa3a4ab5c, 0xc42a565d, + 0xf76ed3ab, 0x90e02eaa, 0x387329a9, 0x5ffdd4a8, + 0x3a7cc473, 0x5df23972, 0xf5613e71, 0x92efc370, + 0xa1ab4686, 0xc625bb87, 0x6eb6bc84, 0x09384185, + 0x083fb768, 0x6fb14a69, 0xc7224d6a, 0xa0acb06b, + 0x93e8359d, 0xf466c89c, 0x5cf5cf9f, 0x3b7b329e, + 0x2a03aaa3, 0x4d8d57a2, 0xe51e50a1, 0x8290ada0, + 0xb1d42856, 0xd65ad557, 0x7ec9d254, 0x19472f55, + 0x1840d9b8, 0x7fce24b9, 0xd75d23ba, 0xb0d3debb, + 0x83975b4d, 0xe419a64c, 0x4c8aa14f, 0x2b045c4e, + 0x4e854c95, 0x290bb194, 0x8198b697, 0xe6164b96, + 0xd552ce60, 0xb2dc3361, 0x1a4f3462, 0x7dc1c963, + 0x7cc63f8e, 0x1b48c28f, 0xb3dbc58c, 0xd455388d, + 0xe711bd7b, 0x809f407a, 0x280c4779, 0x4f82ba78, + 0xe30e66cf, 0x84809bce, 0x2c139ccd, 0x4b9d61cc, + 0x78d9e43a, 0x1f57193b, 0xb7c41e38, 0xd04ae339, + 0xd14d15d4, 0xb6c3e8d5, 0x1e50efd6, 0x79de12d7, + 0x4a9a9721, 0x2d146a20, 0x85876d23, 0xe2099022, + 0x878880f9, 0xe0067df8, 0x48957afb, 0x2f1b87fa, + 0x1c5f020c, 0x7bd1ff0d, 0xd342f80e, 0xb4cc050f, + 0xb5cbf3e2, 0xd2450ee3, 0x7ad609e0, 0x1d58f4e1, + 0x2e1c7117, 0x49928c16, 0xe1018b15, 0x868f7614, + 0xbdf4448a, 0xda7ab98b, 0x72e9be88, 0x15674389, + 0x2623c67f, 0x41ad3b7e, 0xe93e3c7d, 0x8eb0c17c, + 0x8fb73791, 0xe839ca90, 0x40aacd93, 0x27243092, + 0x1460b564, 0x73ee4865, 0xdb7d4f66, 0xbcf3b267, + 0xd972a2bc, 0xbefc5fbd, 0x166f58be, 0x71e1a5bf, + 0x42a52049, 0x252bdd48, 0x8db8da4b, 0xea36274a, + 0xeb31d1a7, 0x8cbf2ca6, 0x242c2ba5, 0x43a2d6a4, + 0x70e65352, 0x1768ae53, 0xbffba950, 0xd8755451, + 0x74f988e6, 0x137775e7, 0xbbe472e4, 0xdc6a8fe5, + 0xef2e0a13, 0x88a0f712, 0x2033f011, 0x47bd0d10, + 0x46bafbfd, 0x213406fc, 0x89a701ff, 0xee29fcfe, + 0xdd6d7908, 0xbae38409, 0x1270830a, 0x75fe7e0b, + 0x107f6ed0, 0x77f193d1, 0xdf6294d2, 0xb8ec69d3, + 0x8ba8ec25, 0xec261124, 0x44b51627, 0x233beb26, + 0x223c1dcb, 0x45b2e0ca, 0xed21e7c9, 0x8aaf1ac8, + 0xb9eb9f3e, 0xde65623f, 0x76f6653c, 0x1178983d, + }, + { + 0x00000000, 0xf20c0dfe, 0xe1f46d0d, 0x13f860f3, + 0xc604aceb, 0x3408a115, 0x27f0c1e6, 0xd5fccc18, + 0x89e52f27, 0x7be922d9, 0x6811422a, 0x9a1d4fd4, + 0x4fe183cc, 0xbded8e32, 0xae15eec1, 0x5c19e33f, + 0x162628bf, 0xe42a2541, 0xf7d245b2, 0x05de484c, + 0xd0228454, 0x222e89aa, 0x31d6e959, 0xc3dae4a7, + 0x9fc30798, 0x6dcf0a66, 0x7e376a95, 0x8c3b676b, + 0x59c7ab73, 0xabcba68d, 0xb833c67e, 0x4a3fcb80, + 0x2c4c517e, 0xde405c80, 0xcdb83c73, 0x3fb4318d, + 0xea48fd95, 0x1844f06b, 0x0bbc9098, 0xf9b09d66, + 0xa5a97e59, 0x57a573a7, 0x445d1354, 0xb6511eaa, + 0x63add2b2, 0x91a1df4c, 0x8259bfbf, 0x7055b241, + 0x3a6a79c1, 0xc866743f, 0xdb9e14cc, 0x29921932, + 0xfc6ed52a, 0x0e62d8d4, 0x1d9ab827, 0xef96b5d9, + 0xb38f56e6, 0x41835b18, 0x527b3beb, 0xa0773615, + 0x758bfa0d, 0x8787f7f3, 0x947f9700, 0x66739afe, + 0x5898a2fc, 0xaa94af02, 0xb96ccff1, 0x4b60c20f, + 0x9e9c0e17, 0x6c9003e9, 0x7f68631a, 0x8d646ee4, + 0xd17d8ddb, 0x23718025, 0x3089e0d6, 0xc285ed28, + 0x17792130, 0xe5752cce, 0xf68d4c3d, 0x048141c3, + 0x4ebe8a43, 0xbcb287bd, 0xaf4ae74e, 0x5d46eab0, + 0x88ba26a8, 0x7ab62b56, 0x694e4ba5, 0x9b42465b, + 0xc75ba564, 0x3557a89a, 0x26afc869, 0xd4a3c597, + 0x015f098f, 0xf3530471, 0xe0ab6482, 0x12a7697c, + 0x74d4f382, 0x86d8fe7c, 0x95209e8f, 0x672c9371, + 0xb2d05f69, 0x40dc5297, 0x53243264, 0xa1283f9a, + 0xfd31dca5, 0x0f3dd15b, 0x1cc5b1a8, 0xeec9bc56, + 0x3b35704e, 0xc9397db0, 0xdac11d43, 0x28cd10bd, + 0x62f2db3d, 0x90fed6c3, 0x8306b630, 0x710abbce, + 0xa4f677d6, 0x56fa7a28, 0x45021adb, 0xb70e1725, + 0xeb17f41a, 0x191bf9e4, 0x0ae39917, 0xf8ef94e9, + 0x2d1358f1, 0xdf1f550f, 0xcce735fc, 0x3eeb3802, + 0xb13145f8, 0x433d4806, 0x50c528f5, 0xa2c9250b, + 0x7735e913, 0x8539e4ed, 0x96c1841e, 0x64cd89e0, + 0x38d46adf, 0xcad86721, 0xd92007d2, 0x2b2c0a2c, + 0xfed0c634, 0x0cdccbca, 0x1f24ab39, 0xed28a6c7, + 0xa7176d47, 0x551b60b9, 0x46e3004a, 0xb4ef0db4, + 0x6113c1ac, 0x931fcc52, 0x80e7aca1, 0x72eba15f, + 0x2ef24260, 0xdcfe4f9e, 0xcf062f6d, 0x3d0a2293, + 0xe8f6ee8b, 0x1afae375, 0x09028386, 0xfb0e8e78, + 0x9d7d1486, 0x6f711978, 0x7c89798b, 0x8e857475, + 0x5b79b86d, 0xa975b593, 0xba8dd560, 0x4881d89e, + 0x14983ba1, 0xe694365f, 0xf56c56ac, 0x07605b52, + 0xd29c974a, 0x20909ab4, 0x3368fa47, 0xc164f7b9, + 0x8b5b3c39, 0x795731c7, 0x6aaf5134, 0x98a35cca, + 0x4d5f90d2, 0xbf539d2c, 0xacabfddf, 0x5ea7f021, + 0x02be131e, 0xf0b21ee0, 0xe34a7e13, 0x114673ed, + 0xc4babff5, 0x36b6b20b, 0x254ed2f8, 0xd742df06, + 0xe9a9e704, 0x1ba5eafa, 0x085d8a09, 0xfa5187f7, + 0x2fad4bef, 0xdda14611, 0xce5926e2, 0x3c552b1c, + 0x604cc823, 0x9240c5dd, 0x81b8a52e, 0x73b4a8d0, + 0xa64864c8, 0x54446936, 0x47bc09c5, 0xb5b0043b, + 0xff8fcfbb, 0x0d83c245, 0x1e7ba2b6, 0xec77af48, + 0x398b6350, 0xcb876eae, 0xd87f0e5d, 0x2a7303a3, + 0x766ae09c, 0x8466ed62, 0x979e8d91, 0x6592806f, + 0xb06e4c77, 0x42624189, 0x519a217a, 0xa3962c84, + 0xc5e5b67a, 0x37e9bb84, 0x2411db77, 0xd61dd689, + 0x03e11a91, 0xf1ed176f, 0xe215779c, 0x10197a62, + 0x4c00995d, 0xbe0c94a3, 0xadf4f450, 0x5ff8f9ae, + 0x8a0435b6, 0x78083848, 0x6bf058bb, 0x99fc5545, + 0xd3c39ec5, 0x21cf933b, 0x3237f3c8, 0xc03bfe36, + 0x15c7322e, 0xe7cb3fd0, 0xf4335f23, 0x063f52dd, + 0x5a26b1e2, 0xa82abc1c, 0xbbd2dcef, 0x49ded111, + 0x9c221d09, 0x6e2e10f7, 0x7dd67004, 0x8fda7dfa, + }, +}; diff --git a/ext/digest/crc5/crc5.c b/ext/digest/crc5/crc5.c index 66020f5..ba71dd9 100644 --- a/ext/digest/crc5/crc5.c +++ b/ext/digest/crc5/crc5.c @@ -15,38 +15,39 @@ */ #include "crc5.h" - -/** - * Static table used for the table_driven implementation. - */ -static const crc5_t crc5_table[256] = { - 0x00, 0x0e, 0x1c, 0x12, 0x11, 0x1f, 0x0d, 0x03, 0x0b, 0x05, 0x17, 0x19, 0x1a, 0x14, 0x06, 0x08, - 0x16, 0x18, 0x0a, 0x04, 0x07, 0x09, 0x1b, 0x15, 0x1d, 0x13, 0x01, 0x0f, 0x0c, 0x02, 0x10, 0x1e, - 0x05, 0x0b, 0x19, 0x17, 0x14, 0x1a, 0x08, 0x06, 0x0e, 0x00, 0x12, 0x1c, 0x1f, 0x11, 0x03, 0x0d, - 0x13, 0x1d, 0x0f, 0x01, 0x02, 0x0c, 0x1e, 0x10, 0x18, 0x16, 0x04, 0x0a, 0x09, 0x07, 0x15, 0x1b, - 0x0a, 0x04, 0x16, 0x18, 0x1b, 0x15, 0x07, 0x09, 0x01, 0x0f, 0x1d, 0x13, 0x10, 0x1e, 0x0c, 0x02, - 0x1c, 0x12, 0x00, 0x0e, 0x0d, 0x03, 0x11, 0x1f, 0x17, 0x19, 0x0b, 0x05, 0x06, 0x08, 0x1a, 0x14, - 0x0f, 0x01, 0x13, 0x1d, 0x1e, 0x10, 0x02, 0x0c, 0x04, 0x0a, 0x18, 0x16, 0x15, 0x1b, 0x09, 0x07, - 0x19, 0x17, 0x05, 0x0b, 0x08, 0x06, 0x14, 0x1a, 0x12, 0x1c, 0x0e, 0x00, 0x03, 0x0d, 0x1f, 0x11, - 0x14, 0x1a, 0x08, 0x06, 0x05, 0x0b, 0x19, 0x17, 0x1f, 0x11, 0x03, 0x0d, 0x0e, 0x00, 0x12, 0x1c, - 0x02, 0x0c, 0x1e, 0x10, 0x13, 0x1d, 0x0f, 0x01, 0x09, 0x07, 0x15, 0x1b, 0x18, 0x16, 0x04, 0x0a, - 0x11, 0x1f, 0x0d, 0x03, 0x00, 0x0e, 0x1c, 0x12, 0x1a, 0x14, 0x06, 0x08, 0x0b, 0x05, 0x17, 0x19, - 0x07, 0x09, 0x1b, 0x15, 0x16, 0x18, 0x0a, 0x04, 0x0c, 0x02, 0x10, 0x1e, 0x1d, 0x13, 0x01, 0x0f, - 0x1e, 0x10, 0x02, 0x0c, 0x0f, 0x01, 0x13, 0x1d, 0x15, 0x1b, 0x09, 0x07, 0x04, 0x0a, 0x18, 0x16, - 0x08, 0x06, 0x14, 0x1a, 0x19, 0x17, 0x05, 0x0b, 0x03, 0x0d, 0x1f, 0x11, 0x12, 0x1c, 0x0e, 0x00, - 0x1b, 0x15, 0x07, 0x09, 0x0a, 0x04, 0x16, 0x18, 0x10, 0x1e, 0x0c, 0x02, 0x01, 0x0f, 0x1d, 0x13, - 0x0d, 0x03, 0x11, 0x1f, 0x1c, 0x12, 0x00, 0x0e, 0x06, 0x08, 0x1a, 0x14, 0x17, 0x19, 0x0b, 0x05 -}; +#include "crc5_table.h" crc5_t crc5_update(crc5_t crc, const void *data, size_t data_len) { const unsigned char *d = (const unsigned char *)data; unsigned int tbl_idx; + for (; data_len >= SLICE_SIZE; data_len -= SLICE_SIZE) + { + crc = crc5_table[15][d[ 0] ^ crc] ^ + crc5_table[14][d[ 1] ] ^ + crc5_table[13][d[ 2] ] ^ + crc5_table[12][d[ 3] ] ^ + crc5_table[11][d[ 4] ] ^ + crc5_table[10][d[ 5] ] ^ + crc5_table[ 9][d[ 6] ] ^ + crc5_table[ 8][d[ 7] ] ^ + crc5_table[ 7][d[ 8] ] ^ + crc5_table[ 6][d[ 9] ] ^ + crc5_table[ 5][d[10] ] ^ + crc5_table[ 4][d[11] ] ^ + crc5_table[ 3][d[12] ] ^ + crc5_table[ 2][d[13] ] ^ + crc5_table[ 1][d[14] ] ^ + crc5_table[ 0][d[15] ]; + crc &= 0x1f; + d += SLICE_SIZE; + } + while (data_len--) { - tbl_idx = crc ^ *d; - crc = (crc5_table[tbl_idx] ^ (crc >> 8)) & 0x1f; + tbl_idx = (crc ^ *d) & 0xff; + crc = (crc5_table[0][tbl_idx]) & 0x1f; d++; } diff --git a/ext/digest/crc5/crc5_table.h b/ext/digest/crc5/crc5_table.h new file mode 100644 index 0000000..155f7e4 --- /dev/null +++ b/ext/digest/crc5/crc5_table.h @@ -0,0 +1,558 @@ +/* + * bitwidth: 5 + * generator polynomial: 0x05 + * input bit direction: REFLECT + * slice bytes per iteration: 16 + * slide bits per table: 8 + * + * Generated by: gentable.rb of digest-crc + */ + +#define SLICE_SIZE 16 + +static const uint8_t crc5_table[SLICE_SIZE][256] = { + { + 0x00, 0x0e, 0x1c, 0x12, 0x11, 0x1f, 0x0d, 0x03, + 0x0b, 0x05, 0x17, 0x19, 0x1a, 0x14, 0x06, 0x08, + 0x16, 0x18, 0x0a, 0x04, 0x07, 0x09, 0x1b, 0x15, + 0x1d, 0x13, 0x01, 0x0f, 0x0c, 0x02, 0x10, 0x1e, + 0x05, 0x0b, 0x19, 0x17, 0x14, 0x1a, 0x08, 0x06, + 0x0e, 0x00, 0x12, 0x1c, 0x1f, 0x11, 0x03, 0x0d, + 0x13, 0x1d, 0x0f, 0x01, 0x02, 0x0c, 0x1e, 0x10, + 0x18, 0x16, 0x04, 0x0a, 0x09, 0x07, 0x15, 0x1b, + 0x0a, 0x04, 0x16, 0x18, 0x1b, 0x15, 0x07, 0x09, + 0x01, 0x0f, 0x1d, 0x13, 0x10, 0x1e, 0x0c, 0x02, + 0x1c, 0x12, 0x00, 0x0e, 0x0d, 0x03, 0x11, 0x1f, + 0x17, 0x19, 0x0b, 0x05, 0x06, 0x08, 0x1a, 0x14, + 0x0f, 0x01, 0x13, 0x1d, 0x1e, 0x10, 0x02, 0x0c, + 0x04, 0x0a, 0x18, 0x16, 0x15, 0x1b, 0x09, 0x07, + 0x19, 0x17, 0x05, 0x0b, 0x08, 0x06, 0x14, 0x1a, + 0x12, 0x1c, 0x0e, 0x00, 0x03, 0x0d, 0x1f, 0x11, + 0x14, 0x1a, 0x08, 0x06, 0x05, 0x0b, 0x19, 0x17, + 0x1f, 0x11, 0x03, 0x0d, 0x0e, 0x00, 0x12, 0x1c, + 0x02, 0x0c, 0x1e, 0x10, 0x13, 0x1d, 0x0f, 0x01, + 0x09, 0x07, 0x15, 0x1b, 0x18, 0x16, 0x04, 0x0a, + 0x11, 0x1f, 0x0d, 0x03, 0x00, 0x0e, 0x1c, 0x12, + 0x1a, 0x14, 0x06, 0x08, 0x0b, 0x05, 0x17, 0x19, + 0x07, 0x09, 0x1b, 0x15, 0x16, 0x18, 0x0a, 0x04, + 0x0c, 0x02, 0x10, 0x1e, 0x1d, 0x13, 0x01, 0x0f, + 0x1e, 0x10, 0x02, 0x0c, 0x0f, 0x01, 0x13, 0x1d, + 0x15, 0x1b, 0x09, 0x07, 0x04, 0x0a, 0x18, 0x16, + 0x08, 0x06, 0x14, 0x1a, 0x19, 0x17, 0x05, 0x0b, + 0x03, 0x0d, 0x1f, 0x11, 0x12, 0x1c, 0x0e, 0x00, + 0x1b, 0x15, 0x07, 0x09, 0x0a, 0x04, 0x16, 0x18, + 0x10, 0x1e, 0x0c, 0x02, 0x01, 0x0f, 0x1d, 0x13, + 0x0d, 0x03, 0x11, 0x1f, 0x1c, 0x12, 0x00, 0x0e, + 0x06, 0x08, 0x1a, 0x14, 0x17, 0x19, 0x0b, 0x05, + }, + { + 0x00, 0x06, 0x0c, 0x0a, 0x18, 0x1e, 0x14, 0x12, + 0x19, 0x1f, 0x15, 0x13, 0x01, 0x07, 0x0d, 0x0b, + 0x1b, 0x1d, 0x17, 0x11, 0x03, 0x05, 0x0f, 0x09, + 0x02, 0x04, 0x0e, 0x08, 0x1a, 0x1c, 0x16, 0x10, + 0x1f, 0x19, 0x13, 0x15, 0x07, 0x01, 0x0b, 0x0d, + 0x06, 0x00, 0x0a, 0x0c, 0x1e, 0x18, 0x12, 0x14, + 0x04, 0x02, 0x08, 0x0e, 0x1c, 0x1a, 0x10, 0x16, + 0x1d, 0x1b, 0x11, 0x17, 0x05, 0x03, 0x09, 0x0f, + 0x17, 0x11, 0x1b, 0x1d, 0x0f, 0x09, 0x03, 0x05, + 0x0e, 0x08, 0x02, 0x04, 0x16, 0x10, 0x1a, 0x1c, + 0x0c, 0x0a, 0x00, 0x06, 0x14, 0x12, 0x18, 0x1e, + 0x15, 0x13, 0x19, 0x1f, 0x0d, 0x0b, 0x01, 0x07, + 0x08, 0x0e, 0x04, 0x02, 0x10, 0x16, 0x1c, 0x1a, + 0x11, 0x17, 0x1d, 0x1b, 0x09, 0x0f, 0x05, 0x03, + 0x13, 0x15, 0x1f, 0x19, 0x0b, 0x0d, 0x07, 0x01, + 0x0a, 0x0c, 0x06, 0x00, 0x12, 0x14, 0x1e, 0x18, + 0x07, 0x01, 0x0b, 0x0d, 0x1f, 0x19, 0x13, 0x15, + 0x1e, 0x18, 0x12, 0x14, 0x06, 0x00, 0x0a, 0x0c, + 0x1c, 0x1a, 0x10, 0x16, 0x04, 0x02, 0x08, 0x0e, + 0x05, 0x03, 0x09, 0x0f, 0x1d, 0x1b, 0x11, 0x17, + 0x18, 0x1e, 0x14, 0x12, 0x00, 0x06, 0x0c, 0x0a, + 0x01, 0x07, 0x0d, 0x0b, 0x19, 0x1f, 0x15, 0x13, + 0x03, 0x05, 0x0f, 0x09, 0x1b, 0x1d, 0x17, 0x11, + 0x1a, 0x1c, 0x16, 0x10, 0x02, 0x04, 0x0e, 0x08, + 0x10, 0x16, 0x1c, 0x1a, 0x08, 0x0e, 0x04, 0x02, + 0x09, 0x0f, 0x05, 0x03, 0x11, 0x17, 0x1d, 0x1b, + 0x0b, 0x0d, 0x07, 0x01, 0x13, 0x15, 0x1f, 0x19, + 0x12, 0x14, 0x1e, 0x18, 0x0a, 0x0c, 0x06, 0x00, + 0x0f, 0x09, 0x03, 0x05, 0x17, 0x11, 0x1b, 0x1d, + 0x16, 0x10, 0x1a, 0x1c, 0x0e, 0x08, 0x02, 0x04, + 0x14, 0x12, 0x18, 0x1e, 0x0c, 0x0a, 0x00, 0x06, + 0x0d, 0x0b, 0x01, 0x07, 0x15, 0x13, 0x19, 0x1f, + }, + { + 0x00, 0x0d, 0x1a, 0x17, 0x1d, 0x10, 0x07, 0x0a, + 0x13, 0x1e, 0x09, 0x04, 0x0e, 0x03, 0x14, 0x19, + 0x0f, 0x02, 0x15, 0x18, 0x12, 0x1f, 0x08, 0x05, + 0x1c, 0x11, 0x06, 0x0b, 0x01, 0x0c, 0x1b, 0x16, + 0x1e, 0x13, 0x04, 0x09, 0x03, 0x0e, 0x19, 0x14, + 0x0d, 0x00, 0x17, 0x1a, 0x10, 0x1d, 0x0a, 0x07, + 0x11, 0x1c, 0x0b, 0x06, 0x0c, 0x01, 0x16, 0x1b, + 0x02, 0x0f, 0x18, 0x15, 0x1f, 0x12, 0x05, 0x08, + 0x15, 0x18, 0x0f, 0x02, 0x08, 0x05, 0x12, 0x1f, + 0x06, 0x0b, 0x1c, 0x11, 0x1b, 0x16, 0x01, 0x0c, + 0x1a, 0x17, 0x00, 0x0d, 0x07, 0x0a, 0x1d, 0x10, + 0x09, 0x04, 0x13, 0x1e, 0x14, 0x19, 0x0e, 0x03, + 0x0b, 0x06, 0x11, 0x1c, 0x16, 0x1b, 0x0c, 0x01, + 0x18, 0x15, 0x02, 0x0f, 0x05, 0x08, 0x1f, 0x12, + 0x04, 0x09, 0x1e, 0x13, 0x19, 0x14, 0x03, 0x0e, + 0x17, 0x1a, 0x0d, 0x00, 0x0a, 0x07, 0x10, 0x1d, + 0x03, 0x0e, 0x19, 0x14, 0x1e, 0x13, 0x04, 0x09, + 0x10, 0x1d, 0x0a, 0x07, 0x0d, 0x00, 0x17, 0x1a, + 0x0c, 0x01, 0x16, 0x1b, 0x11, 0x1c, 0x0b, 0x06, + 0x1f, 0x12, 0x05, 0x08, 0x02, 0x0f, 0x18, 0x15, + 0x1d, 0x10, 0x07, 0x0a, 0x00, 0x0d, 0x1a, 0x17, + 0x0e, 0x03, 0x14, 0x19, 0x13, 0x1e, 0x09, 0x04, + 0x12, 0x1f, 0x08, 0x05, 0x0f, 0x02, 0x15, 0x18, + 0x01, 0x0c, 0x1b, 0x16, 0x1c, 0x11, 0x06, 0x0b, + 0x16, 0x1b, 0x0c, 0x01, 0x0b, 0x06, 0x11, 0x1c, + 0x05, 0x08, 0x1f, 0x12, 0x18, 0x15, 0x02, 0x0f, + 0x19, 0x14, 0x03, 0x0e, 0x04, 0x09, 0x1e, 0x13, + 0x0a, 0x07, 0x10, 0x1d, 0x17, 0x1a, 0x0d, 0x00, + 0x08, 0x05, 0x12, 0x1f, 0x15, 0x18, 0x0f, 0x02, + 0x1b, 0x16, 0x01, 0x0c, 0x06, 0x0b, 0x1c, 0x11, + 0x07, 0x0a, 0x1d, 0x10, 0x1a, 0x17, 0x00, 0x0d, + 0x14, 0x19, 0x0e, 0x03, 0x09, 0x04, 0x13, 0x1e, + }, + { + 0x00, 0x14, 0x01, 0x15, 0x02, 0x16, 0x03, 0x17, + 0x04, 0x10, 0x05, 0x11, 0x06, 0x12, 0x07, 0x13, + 0x08, 0x1c, 0x09, 0x1d, 0x0a, 0x1e, 0x0b, 0x1f, + 0x0c, 0x18, 0x0d, 0x19, 0x0e, 0x1a, 0x0f, 0x1b, + 0x10, 0x04, 0x11, 0x05, 0x12, 0x06, 0x13, 0x07, + 0x14, 0x00, 0x15, 0x01, 0x16, 0x02, 0x17, 0x03, + 0x18, 0x0c, 0x19, 0x0d, 0x1a, 0x0e, 0x1b, 0x0f, + 0x1c, 0x08, 0x1d, 0x09, 0x1e, 0x0a, 0x1f, 0x0b, + 0x09, 0x1d, 0x08, 0x1c, 0x0b, 0x1f, 0x0a, 0x1e, + 0x0d, 0x19, 0x0c, 0x18, 0x0f, 0x1b, 0x0e, 0x1a, + 0x01, 0x15, 0x00, 0x14, 0x03, 0x17, 0x02, 0x16, + 0x05, 0x11, 0x04, 0x10, 0x07, 0x13, 0x06, 0x12, + 0x19, 0x0d, 0x18, 0x0c, 0x1b, 0x0f, 0x1a, 0x0e, + 0x1d, 0x09, 0x1c, 0x08, 0x1f, 0x0b, 0x1e, 0x0a, + 0x11, 0x05, 0x10, 0x04, 0x13, 0x07, 0x12, 0x06, + 0x15, 0x01, 0x14, 0x00, 0x17, 0x03, 0x16, 0x02, + 0x12, 0x06, 0x13, 0x07, 0x10, 0x04, 0x11, 0x05, + 0x16, 0x02, 0x17, 0x03, 0x14, 0x00, 0x15, 0x01, + 0x1a, 0x0e, 0x1b, 0x0f, 0x18, 0x0c, 0x19, 0x0d, + 0x1e, 0x0a, 0x1f, 0x0b, 0x1c, 0x08, 0x1d, 0x09, + 0x02, 0x16, 0x03, 0x17, 0x00, 0x14, 0x01, 0x15, + 0x06, 0x12, 0x07, 0x13, 0x04, 0x10, 0x05, 0x11, + 0x0a, 0x1e, 0x0b, 0x1f, 0x08, 0x1c, 0x09, 0x1d, + 0x0e, 0x1a, 0x0f, 0x1b, 0x0c, 0x18, 0x0d, 0x19, + 0x1b, 0x0f, 0x1a, 0x0e, 0x19, 0x0d, 0x18, 0x0c, + 0x1f, 0x0b, 0x1e, 0x0a, 0x1d, 0x09, 0x1c, 0x08, + 0x13, 0x07, 0x12, 0x06, 0x11, 0x05, 0x10, 0x04, + 0x17, 0x03, 0x16, 0x02, 0x15, 0x01, 0x14, 0x00, + 0x0b, 0x1f, 0x0a, 0x1e, 0x09, 0x1d, 0x08, 0x1c, + 0x0f, 0x1b, 0x0e, 0x1a, 0x0d, 0x19, 0x0c, 0x18, + 0x03, 0x17, 0x02, 0x16, 0x01, 0x15, 0x00, 0x14, + 0x07, 0x13, 0x06, 0x12, 0x05, 0x11, 0x04, 0x10, + }, + { + 0x00, 0x07, 0x0e, 0x09, 0x1c, 0x1b, 0x12, 0x15, + 0x11, 0x16, 0x1f, 0x18, 0x0d, 0x0a, 0x03, 0x04, + 0x0b, 0x0c, 0x05, 0x02, 0x17, 0x10, 0x19, 0x1e, + 0x1a, 0x1d, 0x14, 0x13, 0x06, 0x01, 0x08, 0x0f, + 0x16, 0x11, 0x18, 0x1f, 0x0a, 0x0d, 0x04, 0x03, + 0x07, 0x00, 0x09, 0x0e, 0x1b, 0x1c, 0x15, 0x12, + 0x1d, 0x1a, 0x13, 0x14, 0x01, 0x06, 0x0f, 0x08, + 0x0c, 0x0b, 0x02, 0x05, 0x10, 0x17, 0x1e, 0x19, + 0x05, 0x02, 0x0b, 0x0c, 0x19, 0x1e, 0x17, 0x10, + 0x14, 0x13, 0x1a, 0x1d, 0x08, 0x0f, 0x06, 0x01, + 0x0e, 0x09, 0x00, 0x07, 0x12, 0x15, 0x1c, 0x1b, + 0x1f, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0d, 0x0a, + 0x13, 0x14, 0x1d, 0x1a, 0x0f, 0x08, 0x01, 0x06, + 0x02, 0x05, 0x0c, 0x0b, 0x1e, 0x19, 0x10, 0x17, + 0x18, 0x1f, 0x16, 0x11, 0x04, 0x03, 0x0a, 0x0d, + 0x09, 0x0e, 0x07, 0x00, 0x15, 0x12, 0x1b, 0x1c, + 0x0a, 0x0d, 0x04, 0x03, 0x16, 0x11, 0x18, 0x1f, + 0x1b, 0x1c, 0x15, 0x12, 0x07, 0x00, 0x09, 0x0e, + 0x01, 0x06, 0x0f, 0x08, 0x1d, 0x1a, 0x13, 0x14, + 0x10, 0x17, 0x1e, 0x19, 0x0c, 0x0b, 0x02, 0x05, + 0x1c, 0x1b, 0x12, 0x15, 0x00, 0x07, 0x0e, 0x09, + 0x0d, 0x0a, 0x03, 0x04, 0x11, 0x16, 0x1f, 0x18, + 0x17, 0x10, 0x19, 0x1e, 0x0b, 0x0c, 0x05, 0x02, + 0x06, 0x01, 0x08, 0x0f, 0x1a, 0x1d, 0x14, 0x13, + 0x0f, 0x08, 0x01, 0x06, 0x13, 0x14, 0x1d, 0x1a, + 0x1e, 0x19, 0x10, 0x17, 0x02, 0x05, 0x0c, 0x0b, + 0x04, 0x03, 0x0a, 0x0d, 0x18, 0x1f, 0x16, 0x11, + 0x15, 0x12, 0x1b, 0x1c, 0x09, 0x0e, 0x07, 0x00, + 0x19, 0x1e, 0x17, 0x10, 0x05, 0x02, 0x0b, 0x0c, + 0x08, 0x0f, 0x06, 0x01, 0x14, 0x13, 0x1a, 0x1d, + 0x12, 0x15, 0x1c, 0x1b, 0x0e, 0x09, 0x00, 0x07, + 0x03, 0x04, 0x0d, 0x0a, 0x1f, 0x18, 0x11, 0x16, + }, + { + 0x00, 0x03, 0x06, 0x05, 0x0c, 0x0f, 0x0a, 0x09, + 0x18, 0x1b, 0x1e, 0x1d, 0x14, 0x17, 0x12, 0x11, + 0x19, 0x1a, 0x1f, 0x1c, 0x15, 0x16, 0x13, 0x10, + 0x01, 0x02, 0x07, 0x04, 0x0d, 0x0e, 0x0b, 0x08, + 0x1b, 0x18, 0x1d, 0x1e, 0x17, 0x14, 0x11, 0x12, + 0x03, 0x00, 0x05, 0x06, 0x0f, 0x0c, 0x09, 0x0a, + 0x02, 0x01, 0x04, 0x07, 0x0e, 0x0d, 0x08, 0x0b, + 0x1a, 0x19, 0x1c, 0x1f, 0x16, 0x15, 0x10, 0x13, + 0x1f, 0x1c, 0x19, 0x1a, 0x13, 0x10, 0x15, 0x16, + 0x07, 0x04, 0x01, 0x02, 0x0b, 0x08, 0x0d, 0x0e, + 0x06, 0x05, 0x00, 0x03, 0x0a, 0x09, 0x0c, 0x0f, + 0x1e, 0x1d, 0x18, 0x1b, 0x12, 0x11, 0x14, 0x17, + 0x04, 0x07, 0x02, 0x01, 0x08, 0x0b, 0x0e, 0x0d, + 0x1c, 0x1f, 0x1a, 0x19, 0x10, 0x13, 0x16, 0x15, + 0x1d, 0x1e, 0x1b, 0x18, 0x11, 0x12, 0x17, 0x14, + 0x05, 0x06, 0x03, 0x00, 0x09, 0x0a, 0x0f, 0x0c, + 0x17, 0x14, 0x11, 0x12, 0x1b, 0x18, 0x1d, 0x1e, + 0x0f, 0x0c, 0x09, 0x0a, 0x03, 0x00, 0x05, 0x06, + 0x0e, 0x0d, 0x08, 0x0b, 0x02, 0x01, 0x04, 0x07, + 0x16, 0x15, 0x10, 0x13, 0x1a, 0x19, 0x1c, 0x1f, + 0x0c, 0x0f, 0x0a, 0x09, 0x00, 0x03, 0x06, 0x05, + 0x14, 0x17, 0x12, 0x11, 0x18, 0x1b, 0x1e, 0x1d, + 0x15, 0x16, 0x13, 0x10, 0x19, 0x1a, 0x1f, 0x1c, + 0x0d, 0x0e, 0x0b, 0x08, 0x01, 0x02, 0x07, 0x04, + 0x08, 0x0b, 0x0e, 0x0d, 0x04, 0x07, 0x02, 0x01, + 0x10, 0x13, 0x16, 0x15, 0x1c, 0x1f, 0x1a, 0x19, + 0x11, 0x12, 0x17, 0x14, 0x1d, 0x1e, 0x1b, 0x18, + 0x09, 0x0a, 0x0f, 0x0c, 0x05, 0x06, 0x03, 0x00, + 0x13, 0x10, 0x15, 0x16, 0x1f, 0x1c, 0x19, 0x1a, + 0x0b, 0x08, 0x0d, 0x0e, 0x07, 0x04, 0x01, 0x02, + 0x0a, 0x09, 0x0c, 0x0f, 0x06, 0x05, 0x00, 0x03, + 0x12, 0x11, 0x14, 0x17, 0x1e, 0x1d, 0x18, 0x1b, + }, + { + 0x00, 0x12, 0x0d, 0x1f, 0x1a, 0x08, 0x17, 0x05, + 0x1d, 0x0f, 0x10, 0x02, 0x07, 0x15, 0x0a, 0x18, + 0x13, 0x01, 0x1e, 0x0c, 0x09, 0x1b, 0x04, 0x16, + 0x0e, 0x1c, 0x03, 0x11, 0x14, 0x06, 0x19, 0x0b, + 0x0f, 0x1d, 0x02, 0x10, 0x15, 0x07, 0x18, 0x0a, + 0x12, 0x00, 0x1f, 0x0d, 0x08, 0x1a, 0x05, 0x17, + 0x1c, 0x0e, 0x11, 0x03, 0x06, 0x14, 0x0b, 0x19, + 0x01, 0x13, 0x0c, 0x1e, 0x1b, 0x09, 0x16, 0x04, + 0x1e, 0x0c, 0x13, 0x01, 0x04, 0x16, 0x09, 0x1b, + 0x03, 0x11, 0x0e, 0x1c, 0x19, 0x0b, 0x14, 0x06, + 0x0d, 0x1f, 0x00, 0x12, 0x17, 0x05, 0x1a, 0x08, + 0x10, 0x02, 0x1d, 0x0f, 0x0a, 0x18, 0x07, 0x15, + 0x11, 0x03, 0x1c, 0x0e, 0x0b, 0x19, 0x06, 0x14, + 0x0c, 0x1e, 0x01, 0x13, 0x16, 0x04, 0x1b, 0x09, + 0x02, 0x10, 0x0f, 0x1d, 0x18, 0x0a, 0x15, 0x07, + 0x1f, 0x0d, 0x12, 0x00, 0x05, 0x17, 0x08, 0x1a, + 0x15, 0x07, 0x18, 0x0a, 0x0f, 0x1d, 0x02, 0x10, + 0x08, 0x1a, 0x05, 0x17, 0x12, 0x00, 0x1f, 0x0d, + 0x06, 0x14, 0x0b, 0x19, 0x1c, 0x0e, 0x11, 0x03, + 0x1b, 0x09, 0x16, 0x04, 0x01, 0x13, 0x0c, 0x1e, + 0x1a, 0x08, 0x17, 0x05, 0x00, 0x12, 0x0d, 0x1f, + 0x07, 0x15, 0x0a, 0x18, 0x1d, 0x0f, 0x10, 0x02, + 0x09, 0x1b, 0x04, 0x16, 0x13, 0x01, 0x1e, 0x0c, + 0x14, 0x06, 0x19, 0x0b, 0x0e, 0x1c, 0x03, 0x11, + 0x0b, 0x19, 0x06, 0x14, 0x11, 0x03, 0x1c, 0x0e, + 0x16, 0x04, 0x1b, 0x09, 0x0c, 0x1e, 0x01, 0x13, + 0x18, 0x0a, 0x15, 0x07, 0x02, 0x10, 0x0f, 0x1d, + 0x05, 0x17, 0x08, 0x1a, 0x1f, 0x0d, 0x12, 0x00, + 0x04, 0x16, 0x09, 0x1b, 0x1e, 0x0c, 0x13, 0x01, + 0x19, 0x0b, 0x14, 0x06, 0x03, 0x11, 0x0e, 0x1c, + 0x17, 0x05, 0x1a, 0x08, 0x0d, 0x1f, 0x00, 0x12, + 0x0a, 0x18, 0x07, 0x15, 0x10, 0x02, 0x1d, 0x0f, + }, + { + 0x00, 0x0a, 0x14, 0x1e, 0x01, 0x0b, 0x15, 0x1f, + 0x02, 0x08, 0x16, 0x1c, 0x03, 0x09, 0x17, 0x1d, + 0x04, 0x0e, 0x10, 0x1a, 0x05, 0x0f, 0x11, 0x1b, + 0x06, 0x0c, 0x12, 0x18, 0x07, 0x0d, 0x13, 0x19, + 0x08, 0x02, 0x1c, 0x16, 0x09, 0x03, 0x1d, 0x17, + 0x0a, 0x00, 0x1e, 0x14, 0x0b, 0x01, 0x1f, 0x15, + 0x0c, 0x06, 0x18, 0x12, 0x0d, 0x07, 0x19, 0x13, + 0x0e, 0x04, 0x1a, 0x10, 0x0f, 0x05, 0x1b, 0x11, + 0x10, 0x1a, 0x04, 0x0e, 0x11, 0x1b, 0x05, 0x0f, + 0x12, 0x18, 0x06, 0x0c, 0x13, 0x19, 0x07, 0x0d, + 0x14, 0x1e, 0x00, 0x0a, 0x15, 0x1f, 0x01, 0x0b, + 0x16, 0x1c, 0x02, 0x08, 0x17, 0x1d, 0x03, 0x09, + 0x18, 0x12, 0x0c, 0x06, 0x19, 0x13, 0x0d, 0x07, + 0x1a, 0x10, 0x0e, 0x04, 0x1b, 0x11, 0x0f, 0x05, + 0x1c, 0x16, 0x08, 0x02, 0x1d, 0x17, 0x09, 0x03, + 0x1e, 0x14, 0x0a, 0x00, 0x1f, 0x15, 0x0b, 0x01, + 0x09, 0x03, 0x1d, 0x17, 0x08, 0x02, 0x1c, 0x16, + 0x0b, 0x01, 0x1f, 0x15, 0x0a, 0x00, 0x1e, 0x14, + 0x0d, 0x07, 0x19, 0x13, 0x0c, 0x06, 0x18, 0x12, + 0x0f, 0x05, 0x1b, 0x11, 0x0e, 0x04, 0x1a, 0x10, + 0x01, 0x0b, 0x15, 0x1f, 0x00, 0x0a, 0x14, 0x1e, + 0x03, 0x09, 0x17, 0x1d, 0x02, 0x08, 0x16, 0x1c, + 0x05, 0x0f, 0x11, 0x1b, 0x04, 0x0e, 0x10, 0x1a, + 0x07, 0x0d, 0x13, 0x19, 0x06, 0x0c, 0x12, 0x18, + 0x19, 0x13, 0x0d, 0x07, 0x18, 0x12, 0x0c, 0x06, + 0x1b, 0x11, 0x0f, 0x05, 0x1a, 0x10, 0x0e, 0x04, + 0x1d, 0x17, 0x09, 0x03, 0x1c, 0x16, 0x08, 0x02, + 0x1f, 0x15, 0x0b, 0x01, 0x1e, 0x14, 0x0a, 0x00, + 0x11, 0x1b, 0x05, 0x0f, 0x10, 0x1a, 0x04, 0x0e, + 0x13, 0x19, 0x07, 0x0d, 0x12, 0x18, 0x06, 0x0c, + 0x15, 0x1f, 0x01, 0x0b, 0x14, 0x1e, 0x00, 0x0a, + 0x17, 0x1d, 0x03, 0x09, 0x16, 0x1c, 0x02, 0x08, + }, + { + 0x00, 0x17, 0x07, 0x10, 0x0e, 0x19, 0x09, 0x1e, + 0x1c, 0x0b, 0x1b, 0x0c, 0x12, 0x05, 0x15, 0x02, + 0x11, 0x06, 0x16, 0x01, 0x1f, 0x08, 0x18, 0x0f, + 0x0d, 0x1a, 0x0a, 0x1d, 0x03, 0x14, 0x04, 0x13, + 0x0b, 0x1c, 0x0c, 0x1b, 0x05, 0x12, 0x02, 0x15, + 0x17, 0x00, 0x10, 0x07, 0x19, 0x0e, 0x1e, 0x09, + 0x1a, 0x0d, 0x1d, 0x0a, 0x14, 0x03, 0x13, 0x04, + 0x06, 0x11, 0x01, 0x16, 0x08, 0x1f, 0x0f, 0x18, + 0x16, 0x01, 0x11, 0x06, 0x18, 0x0f, 0x1f, 0x08, + 0x0a, 0x1d, 0x0d, 0x1a, 0x04, 0x13, 0x03, 0x14, + 0x07, 0x10, 0x00, 0x17, 0x09, 0x1e, 0x0e, 0x19, + 0x1b, 0x0c, 0x1c, 0x0b, 0x15, 0x02, 0x12, 0x05, + 0x1d, 0x0a, 0x1a, 0x0d, 0x13, 0x04, 0x14, 0x03, + 0x01, 0x16, 0x06, 0x11, 0x0f, 0x18, 0x08, 0x1f, + 0x0c, 0x1b, 0x0b, 0x1c, 0x02, 0x15, 0x05, 0x12, + 0x10, 0x07, 0x17, 0x00, 0x1e, 0x09, 0x19, 0x0e, + 0x05, 0x12, 0x02, 0x15, 0x0b, 0x1c, 0x0c, 0x1b, + 0x19, 0x0e, 0x1e, 0x09, 0x17, 0x00, 0x10, 0x07, + 0x14, 0x03, 0x13, 0x04, 0x1a, 0x0d, 0x1d, 0x0a, + 0x08, 0x1f, 0x0f, 0x18, 0x06, 0x11, 0x01, 0x16, + 0x0e, 0x19, 0x09, 0x1e, 0x00, 0x17, 0x07, 0x10, + 0x12, 0x05, 0x15, 0x02, 0x1c, 0x0b, 0x1b, 0x0c, + 0x1f, 0x08, 0x18, 0x0f, 0x11, 0x06, 0x16, 0x01, + 0x03, 0x14, 0x04, 0x13, 0x0d, 0x1a, 0x0a, 0x1d, + 0x13, 0x04, 0x14, 0x03, 0x1d, 0x0a, 0x1a, 0x0d, + 0x0f, 0x18, 0x08, 0x1f, 0x01, 0x16, 0x06, 0x11, + 0x02, 0x15, 0x05, 0x12, 0x0c, 0x1b, 0x0b, 0x1c, + 0x1e, 0x09, 0x19, 0x0e, 0x10, 0x07, 0x17, 0x00, + 0x18, 0x0f, 0x1f, 0x08, 0x16, 0x01, 0x11, 0x06, + 0x04, 0x13, 0x03, 0x14, 0x0a, 0x1d, 0x0d, 0x1a, + 0x09, 0x1e, 0x0e, 0x19, 0x07, 0x10, 0x00, 0x17, + 0x15, 0x02, 0x12, 0x05, 0x1b, 0x0c, 0x1c, 0x0b, + }, + { + 0x00, 0x15, 0x03, 0x16, 0x06, 0x13, 0x05, 0x10, + 0x0c, 0x19, 0x0f, 0x1a, 0x0a, 0x1f, 0x09, 0x1c, + 0x18, 0x0d, 0x1b, 0x0e, 0x1e, 0x0b, 0x1d, 0x08, + 0x14, 0x01, 0x17, 0x02, 0x12, 0x07, 0x11, 0x04, + 0x19, 0x0c, 0x1a, 0x0f, 0x1f, 0x0a, 0x1c, 0x09, + 0x15, 0x00, 0x16, 0x03, 0x13, 0x06, 0x10, 0x05, + 0x01, 0x14, 0x02, 0x17, 0x07, 0x12, 0x04, 0x11, + 0x0d, 0x18, 0x0e, 0x1b, 0x0b, 0x1e, 0x08, 0x1d, + 0x1b, 0x0e, 0x18, 0x0d, 0x1d, 0x08, 0x1e, 0x0b, + 0x17, 0x02, 0x14, 0x01, 0x11, 0x04, 0x12, 0x07, + 0x03, 0x16, 0x00, 0x15, 0x05, 0x10, 0x06, 0x13, + 0x0f, 0x1a, 0x0c, 0x19, 0x09, 0x1c, 0x0a, 0x1f, + 0x02, 0x17, 0x01, 0x14, 0x04, 0x11, 0x07, 0x12, + 0x0e, 0x1b, 0x0d, 0x18, 0x08, 0x1d, 0x0b, 0x1e, + 0x1a, 0x0f, 0x19, 0x0c, 0x1c, 0x09, 0x1f, 0x0a, + 0x16, 0x03, 0x15, 0x00, 0x10, 0x05, 0x13, 0x06, + 0x1f, 0x0a, 0x1c, 0x09, 0x19, 0x0c, 0x1a, 0x0f, + 0x13, 0x06, 0x10, 0x05, 0x15, 0x00, 0x16, 0x03, + 0x07, 0x12, 0x04, 0x11, 0x01, 0x14, 0x02, 0x17, + 0x0b, 0x1e, 0x08, 0x1d, 0x0d, 0x18, 0x0e, 0x1b, + 0x06, 0x13, 0x05, 0x10, 0x00, 0x15, 0x03, 0x16, + 0x0a, 0x1f, 0x09, 0x1c, 0x0c, 0x19, 0x0f, 0x1a, + 0x1e, 0x0b, 0x1d, 0x08, 0x18, 0x0d, 0x1b, 0x0e, + 0x12, 0x07, 0x11, 0x04, 0x14, 0x01, 0x17, 0x02, + 0x04, 0x11, 0x07, 0x12, 0x02, 0x17, 0x01, 0x14, + 0x08, 0x1d, 0x0b, 0x1e, 0x0e, 0x1b, 0x0d, 0x18, + 0x1c, 0x09, 0x1f, 0x0a, 0x1a, 0x0f, 0x19, 0x0c, + 0x10, 0x05, 0x13, 0x06, 0x16, 0x03, 0x15, 0x00, + 0x1d, 0x08, 0x1e, 0x0b, 0x1b, 0x0e, 0x18, 0x0d, + 0x11, 0x04, 0x12, 0x07, 0x17, 0x02, 0x14, 0x01, + 0x05, 0x10, 0x06, 0x13, 0x03, 0x16, 0x00, 0x15, + 0x09, 0x1c, 0x0a, 0x1f, 0x0f, 0x1a, 0x0c, 0x19, + }, + { + 0x00, 0x09, 0x12, 0x1b, 0x0d, 0x04, 0x1f, 0x16, + 0x1a, 0x13, 0x08, 0x01, 0x17, 0x1e, 0x05, 0x0c, + 0x1d, 0x14, 0x0f, 0x06, 0x10, 0x19, 0x02, 0x0b, + 0x07, 0x0e, 0x15, 0x1c, 0x0a, 0x03, 0x18, 0x11, + 0x13, 0x1a, 0x01, 0x08, 0x1e, 0x17, 0x0c, 0x05, + 0x09, 0x00, 0x1b, 0x12, 0x04, 0x0d, 0x16, 0x1f, + 0x0e, 0x07, 0x1c, 0x15, 0x03, 0x0a, 0x11, 0x18, + 0x14, 0x1d, 0x06, 0x0f, 0x19, 0x10, 0x0b, 0x02, + 0x0f, 0x06, 0x1d, 0x14, 0x02, 0x0b, 0x10, 0x19, + 0x15, 0x1c, 0x07, 0x0e, 0x18, 0x11, 0x0a, 0x03, + 0x12, 0x1b, 0x00, 0x09, 0x1f, 0x16, 0x0d, 0x04, + 0x08, 0x01, 0x1a, 0x13, 0x05, 0x0c, 0x17, 0x1e, + 0x1c, 0x15, 0x0e, 0x07, 0x11, 0x18, 0x03, 0x0a, + 0x06, 0x0f, 0x14, 0x1d, 0x0b, 0x02, 0x19, 0x10, + 0x01, 0x08, 0x13, 0x1a, 0x0c, 0x05, 0x1e, 0x17, + 0x1b, 0x12, 0x09, 0x00, 0x16, 0x1f, 0x04, 0x0d, + 0x1e, 0x17, 0x0c, 0x05, 0x13, 0x1a, 0x01, 0x08, + 0x04, 0x0d, 0x16, 0x1f, 0x09, 0x00, 0x1b, 0x12, + 0x03, 0x0a, 0x11, 0x18, 0x0e, 0x07, 0x1c, 0x15, + 0x19, 0x10, 0x0b, 0x02, 0x14, 0x1d, 0x06, 0x0f, + 0x0d, 0x04, 0x1f, 0x16, 0x00, 0x09, 0x12, 0x1b, + 0x17, 0x1e, 0x05, 0x0c, 0x1a, 0x13, 0x08, 0x01, + 0x10, 0x19, 0x02, 0x0b, 0x1d, 0x14, 0x0f, 0x06, + 0x0a, 0x03, 0x18, 0x11, 0x07, 0x0e, 0x15, 0x1c, + 0x11, 0x18, 0x03, 0x0a, 0x1c, 0x15, 0x0e, 0x07, + 0x0b, 0x02, 0x19, 0x10, 0x06, 0x0f, 0x14, 0x1d, + 0x0c, 0x05, 0x1e, 0x17, 0x01, 0x08, 0x13, 0x1a, + 0x16, 0x1f, 0x04, 0x0d, 0x1b, 0x12, 0x09, 0x00, + 0x02, 0x0b, 0x10, 0x19, 0x0f, 0x06, 0x1d, 0x14, + 0x18, 0x11, 0x0a, 0x03, 0x15, 0x1c, 0x07, 0x0e, + 0x1f, 0x16, 0x0d, 0x04, 0x12, 0x1b, 0x00, 0x09, + 0x05, 0x0c, 0x17, 0x1e, 0x08, 0x01, 0x1a, 0x13, + }, + { + 0x00, 0x05, 0x0a, 0x0f, 0x14, 0x11, 0x1e, 0x1b, + 0x01, 0x04, 0x0b, 0x0e, 0x15, 0x10, 0x1f, 0x1a, + 0x02, 0x07, 0x08, 0x0d, 0x16, 0x13, 0x1c, 0x19, + 0x03, 0x06, 0x09, 0x0c, 0x17, 0x12, 0x1d, 0x18, + 0x04, 0x01, 0x0e, 0x0b, 0x10, 0x15, 0x1a, 0x1f, + 0x05, 0x00, 0x0f, 0x0a, 0x11, 0x14, 0x1b, 0x1e, + 0x06, 0x03, 0x0c, 0x09, 0x12, 0x17, 0x18, 0x1d, + 0x07, 0x02, 0x0d, 0x08, 0x13, 0x16, 0x19, 0x1c, + 0x08, 0x0d, 0x02, 0x07, 0x1c, 0x19, 0x16, 0x13, + 0x09, 0x0c, 0x03, 0x06, 0x1d, 0x18, 0x17, 0x12, + 0x0a, 0x0f, 0x00, 0x05, 0x1e, 0x1b, 0x14, 0x11, + 0x0b, 0x0e, 0x01, 0x04, 0x1f, 0x1a, 0x15, 0x10, + 0x0c, 0x09, 0x06, 0x03, 0x18, 0x1d, 0x12, 0x17, + 0x0d, 0x08, 0x07, 0x02, 0x19, 0x1c, 0x13, 0x16, + 0x0e, 0x0b, 0x04, 0x01, 0x1a, 0x1f, 0x10, 0x15, + 0x0f, 0x0a, 0x05, 0x00, 0x1b, 0x1e, 0x11, 0x14, + 0x10, 0x15, 0x1a, 0x1f, 0x04, 0x01, 0x0e, 0x0b, + 0x11, 0x14, 0x1b, 0x1e, 0x05, 0x00, 0x0f, 0x0a, + 0x12, 0x17, 0x18, 0x1d, 0x06, 0x03, 0x0c, 0x09, + 0x13, 0x16, 0x19, 0x1c, 0x07, 0x02, 0x0d, 0x08, + 0x14, 0x11, 0x1e, 0x1b, 0x00, 0x05, 0x0a, 0x0f, + 0x15, 0x10, 0x1f, 0x1a, 0x01, 0x04, 0x0b, 0x0e, + 0x16, 0x13, 0x1c, 0x19, 0x02, 0x07, 0x08, 0x0d, + 0x17, 0x12, 0x1d, 0x18, 0x03, 0x06, 0x09, 0x0c, + 0x18, 0x1d, 0x12, 0x17, 0x0c, 0x09, 0x06, 0x03, + 0x19, 0x1c, 0x13, 0x16, 0x0d, 0x08, 0x07, 0x02, + 0x1a, 0x1f, 0x10, 0x15, 0x0e, 0x0b, 0x04, 0x01, + 0x1b, 0x1e, 0x11, 0x14, 0x0f, 0x0a, 0x05, 0x00, + 0x1c, 0x19, 0x16, 0x13, 0x08, 0x0d, 0x02, 0x07, + 0x1d, 0x18, 0x17, 0x12, 0x09, 0x0c, 0x03, 0x06, + 0x1e, 0x1b, 0x14, 0x11, 0x0a, 0x0f, 0x00, 0x05, + 0x1f, 0x1a, 0x15, 0x10, 0x0b, 0x0e, 0x01, 0x04, + }, + { + 0x00, 0x1f, 0x17, 0x08, 0x07, 0x18, 0x10, 0x0f, + 0x0e, 0x11, 0x19, 0x06, 0x09, 0x16, 0x1e, 0x01, + 0x1c, 0x03, 0x0b, 0x14, 0x1b, 0x04, 0x0c, 0x13, + 0x12, 0x0d, 0x05, 0x1a, 0x15, 0x0a, 0x02, 0x1d, + 0x11, 0x0e, 0x06, 0x19, 0x16, 0x09, 0x01, 0x1e, + 0x1f, 0x00, 0x08, 0x17, 0x18, 0x07, 0x0f, 0x10, + 0x0d, 0x12, 0x1a, 0x05, 0x0a, 0x15, 0x1d, 0x02, + 0x03, 0x1c, 0x14, 0x0b, 0x04, 0x1b, 0x13, 0x0c, + 0x0b, 0x14, 0x1c, 0x03, 0x0c, 0x13, 0x1b, 0x04, + 0x05, 0x1a, 0x12, 0x0d, 0x02, 0x1d, 0x15, 0x0a, + 0x17, 0x08, 0x00, 0x1f, 0x10, 0x0f, 0x07, 0x18, + 0x19, 0x06, 0x0e, 0x11, 0x1e, 0x01, 0x09, 0x16, + 0x1a, 0x05, 0x0d, 0x12, 0x1d, 0x02, 0x0a, 0x15, + 0x14, 0x0b, 0x03, 0x1c, 0x13, 0x0c, 0x04, 0x1b, + 0x06, 0x19, 0x11, 0x0e, 0x01, 0x1e, 0x16, 0x09, + 0x08, 0x17, 0x1f, 0x00, 0x0f, 0x10, 0x18, 0x07, + 0x16, 0x09, 0x01, 0x1e, 0x11, 0x0e, 0x06, 0x19, + 0x18, 0x07, 0x0f, 0x10, 0x1f, 0x00, 0x08, 0x17, + 0x0a, 0x15, 0x1d, 0x02, 0x0d, 0x12, 0x1a, 0x05, + 0x04, 0x1b, 0x13, 0x0c, 0x03, 0x1c, 0x14, 0x0b, + 0x07, 0x18, 0x10, 0x0f, 0x00, 0x1f, 0x17, 0x08, + 0x09, 0x16, 0x1e, 0x01, 0x0e, 0x11, 0x19, 0x06, + 0x1b, 0x04, 0x0c, 0x13, 0x1c, 0x03, 0x0b, 0x14, + 0x15, 0x0a, 0x02, 0x1d, 0x12, 0x0d, 0x05, 0x1a, + 0x1d, 0x02, 0x0a, 0x15, 0x1a, 0x05, 0x0d, 0x12, + 0x13, 0x0c, 0x04, 0x1b, 0x14, 0x0b, 0x03, 0x1c, + 0x01, 0x1e, 0x16, 0x09, 0x06, 0x19, 0x11, 0x0e, + 0x0f, 0x10, 0x18, 0x07, 0x08, 0x17, 0x1f, 0x00, + 0x0c, 0x13, 0x1b, 0x04, 0x0b, 0x14, 0x1c, 0x03, + 0x02, 0x1d, 0x15, 0x0a, 0x05, 0x1a, 0x12, 0x0d, + 0x10, 0x0f, 0x07, 0x18, 0x17, 0x08, 0x00, 0x1f, + 0x1e, 0x01, 0x09, 0x16, 0x19, 0x06, 0x0e, 0x11, + }, + { + 0x00, 0x1e, 0x15, 0x0b, 0x03, 0x1d, 0x16, 0x08, + 0x06, 0x18, 0x13, 0x0d, 0x05, 0x1b, 0x10, 0x0e, + 0x0c, 0x12, 0x19, 0x07, 0x0f, 0x11, 0x1a, 0x04, + 0x0a, 0x14, 0x1f, 0x01, 0x09, 0x17, 0x1c, 0x02, + 0x18, 0x06, 0x0d, 0x13, 0x1b, 0x05, 0x0e, 0x10, + 0x1e, 0x00, 0x0b, 0x15, 0x1d, 0x03, 0x08, 0x16, + 0x14, 0x0a, 0x01, 0x1f, 0x17, 0x09, 0x02, 0x1c, + 0x12, 0x0c, 0x07, 0x19, 0x11, 0x0f, 0x04, 0x1a, + 0x19, 0x07, 0x0c, 0x12, 0x1a, 0x04, 0x0f, 0x11, + 0x1f, 0x01, 0x0a, 0x14, 0x1c, 0x02, 0x09, 0x17, + 0x15, 0x0b, 0x00, 0x1e, 0x16, 0x08, 0x03, 0x1d, + 0x13, 0x0d, 0x06, 0x18, 0x10, 0x0e, 0x05, 0x1b, + 0x01, 0x1f, 0x14, 0x0a, 0x02, 0x1c, 0x17, 0x09, + 0x07, 0x19, 0x12, 0x0c, 0x04, 0x1a, 0x11, 0x0f, + 0x0d, 0x13, 0x18, 0x06, 0x0e, 0x10, 0x1b, 0x05, + 0x0b, 0x15, 0x1e, 0x00, 0x08, 0x16, 0x1d, 0x03, + 0x1b, 0x05, 0x0e, 0x10, 0x18, 0x06, 0x0d, 0x13, + 0x1d, 0x03, 0x08, 0x16, 0x1e, 0x00, 0x0b, 0x15, + 0x17, 0x09, 0x02, 0x1c, 0x14, 0x0a, 0x01, 0x1f, + 0x11, 0x0f, 0x04, 0x1a, 0x12, 0x0c, 0x07, 0x19, + 0x03, 0x1d, 0x16, 0x08, 0x00, 0x1e, 0x15, 0x0b, + 0x05, 0x1b, 0x10, 0x0e, 0x06, 0x18, 0x13, 0x0d, + 0x0f, 0x11, 0x1a, 0x04, 0x0c, 0x12, 0x19, 0x07, + 0x09, 0x17, 0x1c, 0x02, 0x0a, 0x14, 0x1f, 0x01, + 0x02, 0x1c, 0x17, 0x09, 0x01, 0x1f, 0x14, 0x0a, + 0x04, 0x1a, 0x11, 0x0f, 0x07, 0x19, 0x12, 0x0c, + 0x0e, 0x10, 0x1b, 0x05, 0x0d, 0x13, 0x18, 0x06, + 0x08, 0x16, 0x1d, 0x03, 0x0b, 0x15, 0x1e, 0x00, + 0x1a, 0x04, 0x0f, 0x11, 0x19, 0x07, 0x0c, 0x12, + 0x1c, 0x02, 0x09, 0x17, 0x1f, 0x01, 0x0a, 0x14, + 0x16, 0x08, 0x03, 0x1d, 0x15, 0x0b, 0x00, 0x1e, + 0x10, 0x0e, 0x05, 0x1b, 0x13, 0x0d, 0x06, 0x18, + }, + { + 0x00, 0x10, 0x09, 0x19, 0x12, 0x02, 0x1b, 0x0b, + 0x0d, 0x1d, 0x04, 0x14, 0x1f, 0x0f, 0x16, 0x06, + 0x1a, 0x0a, 0x13, 0x03, 0x08, 0x18, 0x01, 0x11, + 0x17, 0x07, 0x1e, 0x0e, 0x05, 0x15, 0x0c, 0x1c, + 0x1d, 0x0d, 0x14, 0x04, 0x0f, 0x1f, 0x06, 0x16, + 0x10, 0x00, 0x19, 0x09, 0x02, 0x12, 0x0b, 0x1b, + 0x07, 0x17, 0x0e, 0x1e, 0x15, 0x05, 0x1c, 0x0c, + 0x0a, 0x1a, 0x03, 0x13, 0x18, 0x08, 0x11, 0x01, + 0x13, 0x03, 0x1a, 0x0a, 0x01, 0x11, 0x08, 0x18, + 0x1e, 0x0e, 0x17, 0x07, 0x0c, 0x1c, 0x05, 0x15, + 0x09, 0x19, 0x00, 0x10, 0x1b, 0x0b, 0x12, 0x02, + 0x04, 0x14, 0x0d, 0x1d, 0x16, 0x06, 0x1f, 0x0f, + 0x0e, 0x1e, 0x07, 0x17, 0x1c, 0x0c, 0x15, 0x05, + 0x03, 0x13, 0x0a, 0x1a, 0x11, 0x01, 0x18, 0x08, + 0x14, 0x04, 0x1d, 0x0d, 0x06, 0x16, 0x0f, 0x1f, + 0x19, 0x09, 0x10, 0x00, 0x0b, 0x1b, 0x02, 0x12, + 0x0f, 0x1f, 0x06, 0x16, 0x1d, 0x0d, 0x14, 0x04, + 0x02, 0x12, 0x0b, 0x1b, 0x10, 0x00, 0x19, 0x09, + 0x15, 0x05, 0x1c, 0x0c, 0x07, 0x17, 0x0e, 0x1e, + 0x18, 0x08, 0x11, 0x01, 0x0a, 0x1a, 0x03, 0x13, + 0x12, 0x02, 0x1b, 0x0b, 0x00, 0x10, 0x09, 0x19, + 0x1f, 0x0f, 0x16, 0x06, 0x0d, 0x1d, 0x04, 0x14, + 0x08, 0x18, 0x01, 0x11, 0x1a, 0x0a, 0x13, 0x03, + 0x05, 0x15, 0x0c, 0x1c, 0x17, 0x07, 0x1e, 0x0e, + 0x1c, 0x0c, 0x15, 0x05, 0x0e, 0x1e, 0x07, 0x17, + 0x11, 0x01, 0x18, 0x08, 0x03, 0x13, 0x0a, 0x1a, + 0x06, 0x16, 0x0f, 0x1f, 0x14, 0x04, 0x1d, 0x0d, + 0x0b, 0x1b, 0x02, 0x12, 0x19, 0x09, 0x10, 0x00, + 0x01, 0x11, 0x08, 0x18, 0x13, 0x03, 0x1a, 0x0a, + 0x0c, 0x1c, 0x05, 0x15, 0x1e, 0x0e, 0x17, 0x07, + 0x1b, 0x0b, 0x12, 0x02, 0x09, 0x19, 0x00, 0x10, + 0x16, 0x06, 0x1f, 0x0f, 0x04, 0x14, 0x0d, 0x1d, + }, + { + 0x00, 0x16, 0x05, 0x13, 0x0a, 0x1c, 0x0f, 0x19, + 0x14, 0x02, 0x11, 0x07, 0x1e, 0x08, 0x1b, 0x0d, + 0x01, 0x17, 0x04, 0x12, 0x0b, 0x1d, 0x0e, 0x18, + 0x15, 0x03, 0x10, 0x06, 0x1f, 0x09, 0x1a, 0x0c, + 0x02, 0x14, 0x07, 0x11, 0x08, 0x1e, 0x0d, 0x1b, + 0x16, 0x00, 0x13, 0x05, 0x1c, 0x0a, 0x19, 0x0f, + 0x03, 0x15, 0x06, 0x10, 0x09, 0x1f, 0x0c, 0x1a, + 0x17, 0x01, 0x12, 0x04, 0x1d, 0x0b, 0x18, 0x0e, + 0x04, 0x12, 0x01, 0x17, 0x0e, 0x18, 0x0b, 0x1d, + 0x10, 0x06, 0x15, 0x03, 0x1a, 0x0c, 0x1f, 0x09, + 0x05, 0x13, 0x00, 0x16, 0x0f, 0x19, 0x0a, 0x1c, + 0x11, 0x07, 0x14, 0x02, 0x1b, 0x0d, 0x1e, 0x08, + 0x06, 0x10, 0x03, 0x15, 0x0c, 0x1a, 0x09, 0x1f, + 0x12, 0x04, 0x17, 0x01, 0x18, 0x0e, 0x1d, 0x0b, + 0x07, 0x11, 0x02, 0x14, 0x0d, 0x1b, 0x08, 0x1e, + 0x13, 0x05, 0x16, 0x00, 0x19, 0x0f, 0x1c, 0x0a, + 0x08, 0x1e, 0x0d, 0x1b, 0x02, 0x14, 0x07, 0x11, + 0x1c, 0x0a, 0x19, 0x0f, 0x16, 0x00, 0x13, 0x05, + 0x09, 0x1f, 0x0c, 0x1a, 0x03, 0x15, 0x06, 0x10, + 0x1d, 0x0b, 0x18, 0x0e, 0x17, 0x01, 0x12, 0x04, + 0x0a, 0x1c, 0x0f, 0x19, 0x00, 0x16, 0x05, 0x13, + 0x1e, 0x08, 0x1b, 0x0d, 0x14, 0x02, 0x11, 0x07, + 0x0b, 0x1d, 0x0e, 0x18, 0x01, 0x17, 0x04, 0x12, + 0x1f, 0x09, 0x1a, 0x0c, 0x15, 0x03, 0x10, 0x06, + 0x0c, 0x1a, 0x09, 0x1f, 0x06, 0x10, 0x03, 0x15, + 0x18, 0x0e, 0x1d, 0x0b, 0x12, 0x04, 0x17, 0x01, + 0x0d, 0x1b, 0x08, 0x1e, 0x07, 0x11, 0x02, 0x14, + 0x19, 0x0f, 0x1c, 0x0a, 0x13, 0x05, 0x16, 0x00, + 0x0e, 0x18, 0x0b, 0x1d, 0x04, 0x12, 0x01, 0x17, + 0x1a, 0x0c, 0x1f, 0x09, 0x10, 0x06, 0x15, 0x03, + 0x0f, 0x19, 0x0a, 0x1c, 0x05, 0x13, 0x00, 0x16, + 0x1b, 0x0d, 0x1e, 0x08, 0x11, 0x07, 0x14, 0x02, + }, +}; diff --git a/ext/digest/crc64/crc64.c b/ext/digest/crc64/crc64.c index ea3a7e4..ba5abf2 100644 --- a/ext/digest/crc64/crc64.c +++ b/ext/digest/crc64/crc64.c @@ -15,86 +15,39 @@ */ #include "crc64.h" - -/** - * Static table used for the table_driven implementation. - */ -static const crc64_t crc64_table[256] = { - 0x0000000000000000, 0x01b0000000000000, 0x0360000000000000, 0x02d0000000000000, - 0x06c0000000000000, 0x0770000000000000, 0x05a0000000000000, 0x0410000000000000, - 0x0d80000000000000, 0x0c30000000000000, 0x0ee0000000000000, 0x0f50000000000000, - 0x0b40000000000000, 0x0af0000000000000, 0x0820000000000000, 0x0990000000000000, - 0x1b00000000000000, 0x1ab0000000000000, 0x1860000000000000, 0x19d0000000000000, - 0x1dc0000000000000, 0x1c70000000000000, 0x1ea0000000000000, 0x1f10000000000000, - 0x1680000000000000, 0x1730000000000000, 0x15e0000000000000, 0x1450000000000000, - 0x1040000000000000, 0x11f0000000000000, 0x1320000000000000, 0x1290000000000000, - 0x3600000000000000, 0x37b0000000000000, 0x3560000000000000, 0x34d0000000000000, - 0x30c0000000000000, 0x3170000000000000, 0x33a0000000000000, 0x3210000000000000, - 0x3b80000000000000, 0x3a30000000000000, 0x38e0000000000000, 0x3950000000000000, - 0x3d40000000000000, 0x3cf0000000000000, 0x3e20000000000000, 0x3f90000000000000, - 0x2d00000000000000, 0x2cb0000000000000, 0x2e60000000000000, 0x2fd0000000000000, - 0x2bc0000000000000, 0x2a70000000000000, 0x28a0000000000000, 0x2910000000000000, - 0x2080000000000000, 0x2130000000000000, 0x23e0000000000000, 0x2250000000000000, - 0x2640000000000000, 0x27f0000000000000, 0x2520000000000000, 0x2490000000000000, - 0x6c00000000000000, 0x6db0000000000000, 0x6f60000000000000, 0x6ed0000000000000, - 0x6ac0000000000000, 0x6b70000000000000, 0x69a0000000000000, 0x6810000000000000, - 0x6180000000000000, 0x6030000000000000, 0x62e0000000000000, 0x6350000000000000, - 0x6740000000000000, 0x66f0000000000000, 0x6420000000000000, 0x6590000000000000, - 0x7700000000000000, 0x76b0000000000000, 0x7460000000000000, 0x75d0000000000000, - 0x71c0000000000000, 0x7070000000000000, 0x72a0000000000000, 0x7310000000000000, - 0x7a80000000000000, 0x7b30000000000000, 0x79e0000000000000, 0x7850000000000000, - 0x7c40000000000000, 0x7df0000000000000, 0x7f20000000000000, 0x7e90000000000000, - 0x5a00000000000000, 0x5bb0000000000000, 0x5960000000000000, 0x58d0000000000000, - 0x5cc0000000000000, 0x5d70000000000000, 0x5fa0000000000000, 0x5e10000000000000, - 0x5780000000000000, 0x5630000000000000, 0x54e0000000000000, 0x5550000000000000, - 0x5140000000000000, 0x50f0000000000000, 0x5220000000000000, 0x5390000000000000, - 0x4100000000000000, 0x40b0000000000000, 0x4260000000000000, 0x43d0000000000000, - 0x47c0000000000000, 0x4670000000000000, 0x44a0000000000000, 0x4510000000000000, - 0x4c80000000000000, 0x4d30000000000000, 0x4fe0000000000000, 0x4e50000000000000, - 0x4a40000000000000, 0x4bf0000000000000, 0x4920000000000000, 0x4890000000000000, - 0xd800000000000000, 0xd9b0000000000000, 0xdb60000000000000, 0xdad0000000000000, - 0xdec0000000000000, 0xdf70000000000000, 0xdda0000000000000, 0xdc10000000000000, - 0xd580000000000000, 0xd430000000000000, 0xd6e0000000000000, 0xd750000000000000, - 0xd340000000000000, 0xd2f0000000000000, 0xd020000000000000, 0xd190000000000000, - 0xc300000000000000, 0xc2b0000000000000, 0xc060000000000000, 0xc1d0000000000000, - 0xc5c0000000000000, 0xc470000000000000, 0xc6a0000000000000, 0xc710000000000000, - 0xce80000000000000, 0xcf30000000000000, 0xcde0000000000000, 0xcc50000000000000, - 0xc840000000000000, 0xc9f0000000000000, 0xcb20000000000000, 0xca90000000000000, - 0xee00000000000000, 0xefb0000000000000, 0xed60000000000000, 0xecd0000000000000, - 0xe8c0000000000000, 0xe970000000000000, 0xeba0000000000000, 0xea10000000000000, - 0xe380000000000000, 0xe230000000000000, 0xe0e0000000000000, 0xe150000000000000, - 0xe540000000000000, 0xe4f0000000000000, 0xe620000000000000, 0xe790000000000000, - 0xf500000000000000, 0xf4b0000000000000, 0xf660000000000000, 0xf7d0000000000000, - 0xf3c0000000000000, 0xf270000000000000, 0xf0a0000000000000, 0xf110000000000000, - 0xf880000000000000, 0xf930000000000000, 0xfbe0000000000000, 0xfa50000000000000, - 0xfe40000000000000, 0xfff0000000000000, 0xfd20000000000000, 0xfc90000000000000, - 0xb400000000000000, 0xb5b0000000000000, 0xb760000000000000, 0xb6d0000000000000, - 0xb2c0000000000000, 0xb370000000000000, 0xb1a0000000000000, 0xb010000000000000, - 0xb980000000000000, 0xb830000000000000, 0xbae0000000000000, 0xbb50000000000000, - 0xbf40000000000000, 0xbef0000000000000, 0xbc20000000000000, 0xbd90000000000000, - 0xaf00000000000000, 0xaeb0000000000000, 0xac60000000000000, 0xadd0000000000000, - 0xa9c0000000000000, 0xa870000000000000, 0xaaa0000000000000, 0xab10000000000000, - 0xa280000000000000, 0xa330000000000000, 0xa1e0000000000000, 0xa050000000000000, - 0xa440000000000000, 0xa5f0000000000000, 0xa720000000000000, 0xa690000000000000, - 0x8200000000000000, 0x83b0000000000000, 0x8160000000000000, 0x80d0000000000000, - 0x84c0000000000000, 0x8570000000000000, 0x87a0000000000000, 0x8610000000000000, - 0x8f80000000000000, 0x8e30000000000000, 0x8ce0000000000000, 0x8d50000000000000, - 0x8940000000000000, 0x88f0000000000000, 0x8a20000000000000, 0x8b90000000000000, - 0x9900000000000000, 0x98b0000000000000, 0x9a60000000000000, 0x9bd0000000000000, - 0x9fc0000000000000, 0x9e70000000000000, 0x9ca0000000000000, 0x9d10000000000000, - 0x9480000000000000, 0x9530000000000000, 0x97e0000000000000, 0x9650000000000000, - 0x9240000000000000, 0x93f0000000000000, 0x9120000000000000, 0x9090000000000000 -}; +#include "crc64_table.h" crc64_t crc64_update(crc64_t crc, const void *data, size_t data_len) { const unsigned char *d = (const unsigned char *)data; unsigned int tbl_idx; + for (; data_len >= SLICE_SIZE; data_len -= SLICE_SIZE) + { + crc = crc64_table[15][d[ 0] ^ ((crc >> 0) & 0xff)] ^ + crc64_table[14][d[ 1] ^ ((crc >> 8) & 0xff)] ^ + crc64_table[13][d[ 2] ^ ((crc >> 16) & 0xff)] ^ + crc64_table[12][d[ 3] ^ ((crc >> 24) & 0xff)] ^ + crc64_table[11][d[ 4] ^ ((crc >> 32) & 0xff)] ^ + crc64_table[10][d[ 5] ^ ((crc >> 40) & 0xff)] ^ + crc64_table[ 9][d[ 6] ^ ((crc >> 48) & 0xff)] ^ + crc64_table[ 8][d[ 7] ^ ((crc >> 56) & 0xff)] ^ + crc64_table[ 7][d[ 8] ] ^ + crc64_table[ 6][d[ 9] ] ^ + crc64_table[ 5][d[10] ] ^ + crc64_table[ 4][d[11] ] ^ + crc64_table[ 3][d[12] ] ^ + crc64_table[ 2][d[13] ] ^ + crc64_table[ 1][d[14] ] ^ + crc64_table[ 0][d[15] ]; + crc &= 0xffffffffffffffff; + d += SLICE_SIZE; + } + while (data_len--) { tbl_idx = (crc ^ *d) & 0xff; - crc = (crc64_table[tbl_idx] ^ (crc >> 8)) & 0xffffffffffffffff; + crc = (crc64_table[0][tbl_idx] ^ (crc >> 8)) & 0xffffffffffffffff; d++; } diff --git a/ext/digest/crc64/crc64_table.h b/ext/digest/crc64/crc64_table.h new file mode 100644 index 0000000..ac9876c --- /dev/null +++ b/ext/digest/crc64/crc64_table.h @@ -0,0 +1,1070 @@ +/* + * bitwidth: 64 + * generator polynomial: 0x000000000000001b + * input bit direction: REFLECT + * slice bytes per iteration: 16 + * slide bits per table: 8 + * + * Generated by: gentable.rb of digest-crc + */ + +#define SLICE_SIZE 16 + +static const uint64_t crc64_table[SLICE_SIZE][256] = { + { + 0x0000000000000000, 0x01b0000000000000, 0x0360000000000000, 0x02d0000000000000, + 0x06c0000000000000, 0x0770000000000000, 0x05a0000000000000, 0x0410000000000000, + 0x0d80000000000000, 0x0c30000000000000, 0x0ee0000000000000, 0x0f50000000000000, + 0x0b40000000000000, 0x0af0000000000000, 0x0820000000000000, 0x0990000000000000, + 0x1b00000000000000, 0x1ab0000000000000, 0x1860000000000000, 0x19d0000000000000, + 0x1dc0000000000000, 0x1c70000000000000, 0x1ea0000000000000, 0x1f10000000000000, + 0x1680000000000000, 0x1730000000000000, 0x15e0000000000000, 0x1450000000000000, + 0x1040000000000000, 0x11f0000000000000, 0x1320000000000000, 0x1290000000000000, + 0x3600000000000000, 0x37b0000000000000, 0x3560000000000000, 0x34d0000000000000, + 0x30c0000000000000, 0x3170000000000000, 0x33a0000000000000, 0x3210000000000000, + 0x3b80000000000000, 0x3a30000000000000, 0x38e0000000000000, 0x3950000000000000, + 0x3d40000000000000, 0x3cf0000000000000, 0x3e20000000000000, 0x3f90000000000000, + 0x2d00000000000000, 0x2cb0000000000000, 0x2e60000000000000, 0x2fd0000000000000, + 0x2bc0000000000000, 0x2a70000000000000, 0x28a0000000000000, 0x2910000000000000, + 0x2080000000000000, 0x2130000000000000, 0x23e0000000000000, 0x2250000000000000, + 0x2640000000000000, 0x27f0000000000000, 0x2520000000000000, 0x2490000000000000, + 0x6c00000000000000, 0x6db0000000000000, 0x6f60000000000000, 0x6ed0000000000000, + 0x6ac0000000000000, 0x6b70000000000000, 0x69a0000000000000, 0x6810000000000000, + 0x6180000000000000, 0x6030000000000000, 0x62e0000000000000, 0x6350000000000000, + 0x6740000000000000, 0x66f0000000000000, 0x6420000000000000, 0x6590000000000000, + 0x7700000000000000, 0x76b0000000000000, 0x7460000000000000, 0x75d0000000000000, + 0x71c0000000000000, 0x7070000000000000, 0x72a0000000000000, 0x7310000000000000, + 0x7a80000000000000, 0x7b30000000000000, 0x79e0000000000000, 0x7850000000000000, + 0x7c40000000000000, 0x7df0000000000000, 0x7f20000000000000, 0x7e90000000000000, + 0x5a00000000000000, 0x5bb0000000000000, 0x5960000000000000, 0x58d0000000000000, + 0x5cc0000000000000, 0x5d70000000000000, 0x5fa0000000000000, 0x5e10000000000000, + 0x5780000000000000, 0x5630000000000000, 0x54e0000000000000, 0x5550000000000000, + 0x5140000000000000, 0x50f0000000000000, 0x5220000000000000, 0x5390000000000000, + 0x4100000000000000, 0x40b0000000000000, 0x4260000000000000, 0x43d0000000000000, + 0x47c0000000000000, 0x4670000000000000, 0x44a0000000000000, 0x4510000000000000, + 0x4c80000000000000, 0x4d30000000000000, 0x4fe0000000000000, 0x4e50000000000000, + 0x4a40000000000000, 0x4bf0000000000000, 0x4920000000000000, 0x4890000000000000, + 0xd800000000000000, 0xd9b0000000000000, 0xdb60000000000000, 0xdad0000000000000, + 0xdec0000000000000, 0xdf70000000000000, 0xdda0000000000000, 0xdc10000000000000, + 0xd580000000000000, 0xd430000000000000, 0xd6e0000000000000, 0xd750000000000000, + 0xd340000000000000, 0xd2f0000000000000, 0xd020000000000000, 0xd190000000000000, + 0xc300000000000000, 0xc2b0000000000000, 0xc060000000000000, 0xc1d0000000000000, + 0xc5c0000000000000, 0xc470000000000000, 0xc6a0000000000000, 0xc710000000000000, + 0xce80000000000000, 0xcf30000000000000, 0xcde0000000000000, 0xcc50000000000000, + 0xc840000000000000, 0xc9f0000000000000, 0xcb20000000000000, 0xca90000000000000, + 0xee00000000000000, 0xefb0000000000000, 0xed60000000000000, 0xecd0000000000000, + 0xe8c0000000000000, 0xe970000000000000, 0xeba0000000000000, 0xea10000000000000, + 0xe380000000000000, 0xe230000000000000, 0xe0e0000000000000, 0xe150000000000000, + 0xe540000000000000, 0xe4f0000000000000, 0xe620000000000000, 0xe790000000000000, + 0xf500000000000000, 0xf4b0000000000000, 0xf660000000000000, 0xf7d0000000000000, + 0xf3c0000000000000, 0xf270000000000000, 0xf0a0000000000000, 0xf110000000000000, + 0xf880000000000000, 0xf930000000000000, 0xfbe0000000000000, 0xfa50000000000000, + 0xfe40000000000000, 0xfff0000000000000, 0xfd20000000000000, 0xfc90000000000000, + 0xb400000000000000, 0xb5b0000000000000, 0xb760000000000000, 0xb6d0000000000000, + 0xb2c0000000000000, 0xb370000000000000, 0xb1a0000000000000, 0xb010000000000000, + 0xb980000000000000, 0xb830000000000000, 0xbae0000000000000, 0xbb50000000000000, + 0xbf40000000000000, 0xbef0000000000000, 0xbc20000000000000, 0xbd90000000000000, + 0xaf00000000000000, 0xaeb0000000000000, 0xac60000000000000, 0xadd0000000000000, + 0xa9c0000000000000, 0xa870000000000000, 0xaaa0000000000000, 0xab10000000000000, + 0xa280000000000000, 0xa330000000000000, 0xa1e0000000000000, 0xa050000000000000, + 0xa440000000000000, 0xa5f0000000000000, 0xa720000000000000, 0xa690000000000000, + 0x8200000000000000, 0x83b0000000000000, 0x8160000000000000, 0x80d0000000000000, + 0x84c0000000000000, 0x8570000000000000, 0x87a0000000000000, 0x8610000000000000, + 0x8f80000000000000, 0x8e30000000000000, 0x8ce0000000000000, 0x8d50000000000000, + 0x8940000000000000, 0x88f0000000000000, 0x8a20000000000000, 0x8b90000000000000, + 0x9900000000000000, 0x98b0000000000000, 0x9a60000000000000, 0x9bd0000000000000, + 0x9fc0000000000000, 0x9e70000000000000, 0x9ca0000000000000, 0x9d10000000000000, + 0x9480000000000000, 0x9530000000000000, 0x97e0000000000000, 0x9650000000000000, + 0x9240000000000000, 0x93f0000000000000, 0x9120000000000000, 0x9090000000000000, + }, + { + 0x0000000000000000, 0x0001b00000000000, 0x0003600000000000, 0x0002d00000000000, + 0x0006c00000000000, 0x0007700000000000, 0x0005a00000000000, 0x0004100000000000, + 0x000d800000000000, 0x000c300000000000, 0x000ee00000000000, 0x000f500000000000, + 0x000b400000000000, 0x000af00000000000, 0x0008200000000000, 0x0009900000000000, + 0x001b000000000000, 0x001ab00000000000, 0x0018600000000000, 0x0019d00000000000, + 0x001dc00000000000, 0x001c700000000000, 0x001ea00000000000, 0x001f100000000000, + 0x0016800000000000, 0x0017300000000000, 0x0015e00000000000, 0x0014500000000000, + 0x0010400000000000, 0x0011f00000000000, 0x0013200000000000, 0x0012900000000000, + 0x0036000000000000, 0x0037b00000000000, 0x0035600000000000, 0x0034d00000000000, + 0x0030c00000000000, 0x0031700000000000, 0x0033a00000000000, 0x0032100000000000, + 0x003b800000000000, 0x003a300000000000, 0x0038e00000000000, 0x0039500000000000, + 0x003d400000000000, 0x003cf00000000000, 0x003e200000000000, 0x003f900000000000, + 0x002d000000000000, 0x002cb00000000000, 0x002e600000000000, 0x002fd00000000000, + 0x002bc00000000000, 0x002a700000000000, 0x0028a00000000000, 0x0029100000000000, + 0x0020800000000000, 0x0021300000000000, 0x0023e00000000000, 0x0022500000000000, + 0x0026400000000000, 0x0027f00000000000, 0x0025200000000000, 0x0024900000000000, + 0x006c000000000000, 0x006db00000000000, 0x006f600000000000, 0x006ed00000000000, + 0x006ac00000000000, 0x006b700000000000, 0x0069a00000000000, 0x0068100000000000, + 0x0061800000000000, 0x0060300000000000, 0x0062e00000000000, 0x0063500000000000, + 0x0067400000000000, 0x0066f00000000000, 0x0064200000000000, 0x0065900000000000, + 0x0077000000000000, 0x0076b00000000000, 0x0074600000000000, 0x0075d00000000000, + 0x0071c00000000000, 0x0070700000000000, 0x0072a00000000000, 0x0073100000000000, + 0x007a800000000000, 0x007b300000000000, 0x0079e00000000000, 0x0078500000000000, + 0x007c400000000000, 0x007df00000000000, 0x007f200000000000, 0x007e900000000000, + 0x005a000000000000, 0x005bb00000000000, 0x0059600000000000, 0x0058d00000000000, + 0x005cc00000000000, 0x005d700000000000, 0x005fa00000000000, 0x005e100000000000, + 0x0057800000000000, 0x0056300000000000, 0x0054e00000000000, 0x0055500000000000, + 0x0051400000000000, 0x0050f00000000000, 0x0052200000000000, 0x0053900000000000, + 0x0041000000000000, 0x0040b00000000000, 0x0042600000000000, 0x0043d00000000000, + 0x0047c00000000000, 0x0046700000000000, 0x0044a00000000000, 0x0045100000000000, + 0x004c800000000000, 0x004d300000000000, 0x004fe00000000000, 0x004e500000000000, + 0x004a400000000000, 0x004bf00000000000, 0x0049200000000000, 0x0048900000000000, + 0x00d8000000000000, 0x00d9b00000000000, 0x00db600000000000, 0x00dad00000000000, + 0x00dec00000000000, 0x00df700000000000, 0x00dda00000000000, 0x00dc100000000000, + 0x00d5800000000000, 0x00d4300000000000, 0x00d6e00000000000, 0x00d7500000000000, + 0x00d3400000000000, 0x00d2f00000000000, 0x00d0200000000000, 0x00d1900000000000, + 0x00c3000000000000, 0x00c2b00000000000, 0x00c0600000000000, 0x00c1d00000000000, + 0x00c5c00000000000, 0x00c4700000000000, 0x00c6a00000000000, 0x00c7100000000000, + 0x00ce800000000000, 0x00cf300000000000, 0x00cde00000000000, 0x00cc500000000000, + 0x00c8400000000000, 0x00c9f00000000000, 0x00cb200000000000, 0x00ca900000000000, + 0x00ee000000000000, 0x00efb00000000000, 0x00ed600000000000, 0x00ecd00000000000, + 0x00e8c00000000000, 0x00e9700000000000, 0x00eba00000000000, 0x00ea100000000000, + 0x00e3800000000000, 0x00e2300000000000, 0x00e0e00000000000, 0x00e1500000000000, + 0x00e5400000000000, 0x00e4f00000000000, 0x00e6200000000000, 0x00e7900000000000, + 0x00f5000000000000, 0x00f4b00000000000, 0x00f6600000000000, 0x00f7d00000000000, + 0x00f3c00000000000, 0x00f2700000000000, 0x00f0a00000000000, 0x00f1100000000000, + 0x00f8800000000000, 0x00f9300000000000, 0x00fbe00000000000, 0x00fa500000000000, + 0x00fe400000000000, 0x00fff00000000000, 0x00fd200000000000, 0x00fc900000000000, + 0x00b4000000000000, 0x00b5b00000000000, 0x00b7600000000000, 0x00b6d00000000000, + 0x00b2c00000000000, 0x00b3700000000000, 0x00b1a00000000000, 0x00b0100000000000, + 0x00b9800000000000, 0x00b8300000000000, 0x00bae00000000000, 0x00bb500000000000, + 0x00bf400000000000, 0x00bef00000000000, 0x00bc200000000000, 0x00bd900000000000, + 0x00af000000000000, 0x00aeb00000000000, 0x00ac600000000000, 0x00add00000000000, + 0x00a9c00000000000, 0x00a8700000000000, 0x00aaa00000000000, 0x00ab100000000000, + 0x00a2800000000000, 0x00a3300000000000, 0x00a1e00000000000, 0x00a0500000000000, + 0x00a4400000000000, 0x00a5f00000000000, 0x00a7200000000000, 0x00a6900000000000, + 0x0082000000000000, 0x0083b00000000000, 0x0081600000000000, 0x0080d00000000000, + 0x0084c00000000000, 0x0085700000000000, 0x0087a00000000000, 0x0086100000000000, + 0x008f800000000000, 0x008e300000000000, 0x008ce00000000000, 0x008d500000000000, + 0x0089400000000000, 0x0088f00000000000, 0x008a200000000000, 0x008b900000000000, + 0x0099000000000000, 0x0098b00000000000, 0x009a600000000000, 0x009bd00000000000, + 0x009fc00000000000, 0x009e700000000000, 0x009ca00000000000, 0x009d100000000000, + 0x0094800000000000, 0x0095300000000000, 0x0097e00000000000, 0x0096500000000000, + 0x0092400000000000, 0x0093f00000000000, 0x0091200000000000, 0x0090900000000000, + }, + { + 0x0000000000000000, 0x000001b000000000, 0x0000036000000000, 0x000002d000000000, + 0x000006c000000000, 0x0000077000000000, 0x000005a000000000, 0x0000041000000000, + 0x00000d8000000000, 0x00000c3000000000, 0x00000ee000000000, 0x00000f5000000000, + 0x00000b4000000000, 0x00000af000000000, 0x0000082000000000, 0x0000099000000000, + 0x00001b0000000000, 0x00001ab000000000, 0x0000186000000000, 0x000019d000000000, + 0x00001dc000000000, 0x00001c7000000000, 0x00001ea000000000, 0x00001f1000000000, + 0x0000168000000000, 0x0000173000000000, 0x000015e000000000, 0x0000145000000000, + 0x0000104000000000, 0x000011f000000000, 0x0000132000000000, 0x0000129000000000, + 0x0000360000000000, 0x000037b000000000, 0x0000356000000000, 0x000034d000000000, + 0x000030c000000000, 0x0000317000000000, 0x000033a000000000, 0x0000321000000000, + 0x00003b8000000000, 0x00003a3000000000, 0x000038e000000000, 0x0000395000000000, + 0x00003d4000000000, 0x00003cf000000000, 0x00003e2000000000, 0x00003f9000000000, + 0x00002d0000000000, 0x00002cb000000000, 0x00002e6000000000, 0x00002fd000000000, + 0x00002bc000000000, 0x00002a7000000000, 0x000028a000000000, 0x0000291000000000, + 0x0000208000000000, 0x0000213000000000, 0x000023e000000000, 0x0000225000000000, + 0x0000264000000000, 0x000027f000000000, 0x0000252000000000, 0x0000249000000000, + 0x00006c0000000000, 0x00006db000000000, 0x00006f6000000000, 0x00006ed000000000, + 0x00006ac000000000, 0x00006b7000000000, 0x000069a000000000, 0x0000681000000000, + 0x0000618000000000, 0x0000603000000000, 0x000062e000000000, 0x0000635000000000, + 0x0000674000000000, 0x000066f000000000, 0x0000642000000000, 0x0000659000000000, + 0x0000770000000000, 0x000076b000000000, 0x0000746000000000, 0x000075d000000000, + 0x000071c000000000, 0x0000707000000000, 0x000072a000000000, 0x0000731000000000, + 0x00007a8000000000, 0x00007b3000000000, 0x000079e000000000, 0x0000785000000000, + 0x00007c4000000000, 0x00007df000000000, 0x00007f2000000000, 0x00007e9000000000, + 0x00005a0000000000, 0x00005bb000000000, 0x0000596000000000, 0x000058d000000000, + 0x00005cc000000000, 0x00005d7000000000, 0x00005fa000000000, 0x00005e1000000000, + 0x0000578000000000, 0x0000563000000000, 0x000054e000000000, 0x0000555000000000, + 0x0000514000000000, 0x000050f000000000, 0x0000522000000000, 0x0000539000000000, + 0x0000410000000000, 0x000040b000000000, 0x0000426000000000, 0x000043d000000000, + 0x000047c000000000, 0x0000467000000000, 0x000044a000000000, 0x0000451000000000, + 0x00004c8000000000, 0x00004d3000000000, 0x00004fe000000000, 0x00004e5000000000, + 0x00004a4000000000, 0x00004bf000000000, 0x0000492000000000, 0x0000489000000000, + 0x0000d80000000000, 0x0000d9b000000000, 0x0000db6000000000, 0x0000dad000000000, + 0x0000dec000000000, 0x0000df7000000000, 0x0000dda000000000, 0x0000dc1000000000, + 0x0000d58000000000, 0x0000d43000000000, 0x0000d6e000000000, 0x0000d75000000000, + 0x0000d34000000000, 0x0000d2f000000000, 0x0000d02000000000, 0x0000d19000000000, + 0x0000c30000000000, 0x0000c2b000000000, 0x0000c06000000000, 0x0000c1d000000000, + 0x0000c5c000000000, 0x0000c47000000000, 0x0000c6a000000000, 0x0000c71000000000, + 0x0000ce8000000000, 0x0000cf3000000000, 0x0000cde000000000, 0x0000cc5000000000, + 0x0000c84000000000, 0x0000c9f000000000, 0x0000cb2000000000, 0x0000ca9000000000, + 0x0000ee0000000000, 0x0000efb000000000, 0x0000ed6000000000, 0x0000ecd000000000, + 0x0000e8c000000000, 0x0000e97000000000, 0x0000eba000000000, 0x0000ea1000000000, + 0x0000e38000000000, 0x0000e23000000000, 0x0000e0e000000000, 0x0000e15000000000, + 0x0000e54000000000, 0x0000e4f000000000, 0x0000e62000000000, 0x0000e79000000000, + 0x0000f50000000000, 0x0000f4b000000000, 0x0000f66000000000, 0x0000f7d000000000, + 0x0000f3c000000000, 0x0000f27000000000, 0x0000f0a000000000, 0x0000f11000000000, + 0x0000f88000000000, 0x0000f93000000000, 0x0000fbe000000000, 0x0000fa5000000000, + 0x0000fe4000000000, 0x0000fff000000000, 0x0000fd2000000000, 0x0000fc9000000000, + 0x0000b40000000000, 0x0000b5b000000000, 0x0000b76000000000, 0x0000b6d000000000, + 0x0000b2c000000000, 0x0000b37000000000, 0x0000b1a000000000, 0x0000b01000000000, + 0x0000b98000000000, 0x0000b83000000000, 0x0000bae000000000, 0x0000bb5000000000, + 0x0000bf4000000000, 0x0000bef000000000, 0x0000bc2000000000, 0x0000bd9000000000, + 0x0000af0000000000, 0x0000aeb000000000, 0x0000ac6000000000, 0x0000add000000000, + 0x0000a9c000000000, 0x0000a87000000000, 0x0000aaa000000000, 0x0000ab1000000000, + 0x0000a28000000000, 0x0000a33000000000, 0x0000a1e000000000, 0x0000a05000000000, + 0x0000a44000000000, 0x0000a5f000000000, 0x0000a72000000000, 0x0000a69000000000, + 0x0000820000000000, 0x000083b000000000, 0x0000816000000000, 0x000080d000000000, + 0x000084c000000000, 0x0000857000000000, 0x000087a000000000, 0x0000861000000000, + 0x00008f8000000000, 0x00008e3000000000, 0x00008ce000000000, 0x00008d5000000000, + 0x0000894000000000, 0x000088f000000000, 0x00008a2000000000, 0x00008b9000000000, + 0x0000990000000000, 0x000098b000000000, 0x00009a6000000000, 0x00009bd000000000, + 0x00009fc000000000, 0x00009e7000000000, 0x00009ca000000000, 0x00009d1000000000, + 0x0000948000000000, 0x0000953000000000, 0x000097e000000000, 0x0000965000000000, + 0x0000924000000000, 0x000093f000000000, 0x0000912000000000, 0x0000909000000000, + }, + { + 0x0000000000000000, 0x00000001b0000000, 0x0000000360000000, 0x00000002d0000000, + 0x00000006c0000000, 0x0000000770000000, 0x00000005a0000000, 0x0000000410000000, + 0x0000000d80000000, 0x0000000c30000000, 0x0000000ee0000000, 0x0000000f50000000, + 0x0000000b40000000, 0x0000000af0000000, 0x0000000820000000, 0x0000000990000000, + 0x0000001b00000000, 0x0000001ab0000000, 0x0000001860000000, 0x00000019d0000000, + 0x0000001dc0000000, 0x0000001c70000000, 0x0000001ea0000000, 0x0000001f10000000, + 0x0000001680000000, 0x0000001730000000, 0x00000015e0000000, 0x0000001450000000, + 0x0000001040000000, 0x00000011f0000000, 0x0000001320000000, 0x0000001290000000, + 0x0000003600000000, 0x00000037b0000000, 0x0000003560000000, 0x00000034d0000000, + 0x00000030c0000000, 0x0000003170000000, 0x00000033a0000000, 0x0000003210000000, + 0x0000003b80000000, 0x0000003a30000000, 0x00000038e0000000, 0x0000003950000000, + 0x0000003d40000000, 0x0000003cf0000000, 0x0000003e20000000, 0x0000003f90000000, + 0x0000002d00000000, 0x0000002cb0000000, 0x0000002e60000000, 0x0000002fd0000000, + 0x0000002bc0000000, 0x0000002a70000000, 0x00000028a0000000, 0x0000002910000000, + 0x0000002080000000, 0x0000002130000000, 0x00000023e0000000, 0x0000002250000000, + 0x0000002640000000, 0x00000027f0000000, 0x0000002520000000, 0x0000002490000000, + 0x0000006c00000000, 0x0000006db0000000, 0x0000006f60000000, 0x0000006ed0000000, + 0x0000006ac0000000, 0x0000006b70000000, 0x00000069a0000000, 0x0000006810000000, + 0x0000006180000000, 0x0000006030000000, 0x00000062e0000000, 0x0000006350000000, + 0x0000006740000000, 0x00000066f0000000, 0x0000006420000000, 0x0000006590000000, + 0x0000007700000000, 0x00000076b0000000, 0x0000007460000000, 0x00000075d0000000, + 0x00000071c0000000, 0x0000007070000000, 0x00000072a0000000, 0x0000007310000000, + 0x0000007a80000000, 0x0000007b30000000, 0x00000079e0000000, 0x0000007850000000, + 0x0000007c40000000, 0x0000007df0000000, 0x0000007f20000000, 0x0000007e90000000, + 0x0000005a00000000, 0x0000005bb0000000, 0x0000005960000000, 0x00000058d0000000, + 0x0000005cc0000000, 0x0000005d70000000, 0x0000005fa0000000, 0x0000005e10000000, + 0x0000005780000000, 0x0000005630000000, 0x00000054e0000000, 0x0000005550000000, + 0x0000005140000000, 0x00000050f0000000, 0x0000005220000000, 0x0000005390000000, + 0x0000004100000000, 0x00000040b0000000, 0x0000004260000000, 0x00000043d0000000, + 0x00000047c0000000, 0x0000004670000000, 0x00000044a0000000, 0x0000004510000000, + 0x0000004c80000000, 0x0000004d30000000, 0x0000004fe0000000, 0x0000004e50000000, + 0x0000004a40000000, 0x0000004bf0000000, 0x0000004920000000, 0x0000004890000000, + 0x000000d800000000, 0x000000d9b0000000, 0x000000db60000000, 0x000000dad0000000, + 0x000000dec0000000, 0x000000df70000000, 0x000000dda0000000, 0x000000dc10000000, + 0x000000d580000000, 0x000000d430000000, 0x000000d6e0000000, 0x000000d750000000, + 0x000000d340000000, 0x000000d2f0000000, 0x000000d020000000, 0x000000d190000000, + 0x000000c300000000, 0x000000c2b0000000, 0x000000c060000000, 0x000000c1d0000000, + 0x000000c5c0000000, 0x000000c470000000, 0x000000c6a0000000, 0x000000c710000000, + 0x000000ce80000000, 0x000000cf30000000, 0x000000cde0000000, 0x000000cc50000000, + 0x000000c840000000, 0x000000c9f0000000, 0x000000cb20000000, 0x000000ca90000000, + 0x000000ee00000000, 0x000000efb0000000, 0x000000ed60000000, 0x000000ecd0000000, + 0x000000e8c0000000, 0x000000e970000000, 0x000000eba0000000, 0x000000ea10000000, + 0x000000e380000000, 0x000000e230000000, 0x000000e0e0000000, 0x000000e150000000, + 0x000000e540000000, 0x000000e4f0000000, 0x000000e620000000, 0x000000e790000000, + 0x000000f500000000, 0x000000f4b0000000, 0x000000f660000000, 0x000000f7d0000000, + 0x000000f3c0000000, 0x000000f270000000, 0x000000f0a0000000, 0x000000f110000000, + 0x000000f880000000, 0x000000f930000000, 0x000000fbe0000000, 0x000000fa50000000, + 0x000000fe40000000, 0x000000fff0000000, 0x000000fd20000000, 0x000000fc90000000, + 0x000000b400000000, 0x000000b5b0000000, 0x000000b760000000, 0x000000b6d0000000, + 0x000000b2c0000000, 0x000000b370000000, 0x000000b1a0000000, 0x000000b010000000, + 0x000000b980000000, 0x000000b830000000, 0x000000bae0000000, 0x000000bb50000000, + 0x000000bf40000000, 0x000000bef0000000, 0x000000bc20000000, 0x000000bd90000000, + 0x000000af00000000, 0x000000aeb0000000, 0x000000ac60000000, 0x000000add0000000, + 0x000000a9c0000000, 0x000000a870000000, 0x000000aaa0000000, 0x000000ab10000000, + 0x000000a280000000, 0x000000a330000000, 0x000000a1e0000000, 0x000000a050000000, + 0x000000a440000000, 0x000000a5f0000000, 0x000000a720000000, 0x000000a690000000, + 0x0000008200000000, 0x00000083b0000000, 0x0000008160000000, 0x00000080d0000000, + 0x00000084c0000000, 0x0000008570000000, 0x00000087a0000000, 0x0000008610000000, + 0x0000008f80000000, 0x0000008e30000000, 0x0000008ce0000000, 0x0000008d50000000, + 0x0000008940000000, 0x00000088f0000000, 0x0000008a20000000, 0x0000008b90000000, + 0x0000009900000000, 0x00000098b0000000, 0x0000009a60000000, 0x0000009bd0000000, + 0x0000009fc0000000, 0x0000009e70000000, 0x0000009ca0000000, 0x0000009d10000000, + 0x0000009480000000, 0x0000009530000000, 0x00000097e0000000, 0x0000009650000000, + 0x0000009240000000, 0x00000093f0000000, 0x0000009120000000, 0x0000009090000000, + }, + { + 0x0000000000000000, 0x0000000001b00000, 0x0000000003600000, 0x0000000002d00000, + 0x0000000006c00000, 0x0000000007700000, 0x0000000005a00000, 0x0000000004100000, + 0x000000000d800000, 0x000000000c300000, 0x000000000ee00000, 0x000000000f500000, + 0x000000000b400000, 0x000000000af00000, 0x0000000008200000, 0x0000000009900000, + 0x000000001b000000, 0x000000001ab00000, 0x0000000018600000, 0x0000000019d00000, + 0x000000001dc00000, 0x000000001c700000, 0x000000001ea00000, 0x000000001f100000, + 0x0000000016800000, 0x0000000017300000, 0x0000000015e00000, 0x0000000014500000, + 0x0000000010400000, 0x0000000011f00000, 0x0000000013200000, 0x0000000012900000, + 0x0000000036000000, 0x0000000037b00000, 0x0000000035600000, 0x0000000034d00000, + 0x0000000030c00000, 0x0000000031700000, 0x0000000033a00000, 0x0000000032100000, + 0x000000003b800000, 0x000000003a300000, 0x0000000038e00000, 0x0000000039500000, + 0x000000003d400000, 0x000000003cf00000, 0x000000003e200000, 0x000000003f900000, + 0x000000002d000000, 0x000000002cb00000, 0x000000002e600000, 0x000000002fd00000, + 0x000000002bc00000, 0x000000002a700000, 0x0000000028a00000, 0x0000000029100000, + 0x0000000020800000, 0x0000000021300000, 0x0000000023e00000, 0x0000000022500000, + 0x0000000026400000, 0x0000000027f00000, 0x0000000025200000, 0x0000000024900000, + 0x000000006c000000, 0x000000006db00000, 0x000000006f600000, 0x000000006ed00000, + 0x000000006ac00000, 0x000000006b700000, 0x0000000069a00000, 0x0000000068100000, + 0x0000000061800000, 0x0000000060300000, 0x0000000062e00000, 0x0000000063500000, + 0x0000000067400000, 0x0000000066f00000, 0x0000000064200000, 0x0000000065900000, + 0x0000000077000000, 0x0000000076b00000, 0x0000000074600000, 0x0000000075d00000, + 0x0000000071c00000, 0x0000000070700000, 0x0000000072a00000, 0x0000000073100000, + 0x000000007a800000, 0x000000007b300000, 0x0000000079e00000, 0x0000000078500000, + 0x000000007c400000, 0x000000007df00000, 0x000000007f200000, 0x000000007e900000, + 0x000000005a000000, 0x000000005bb00000, 0x0000000059600000, 0x0000000058d00000, + 0x000000005cc00000, 0x000000005d700000, 0x000000005fa00000, 0x000000005e100000, + 0x0000000057800000, 0x0000000056300000, 0x0000000054e00000, 0x0000000055500000, + 0x0000000051400000, 0x0000000050f00000, 0x0000000052200000, 0x0000000053900000, + 0x0000000041000000, 0x0000000040b00000, 0x0000000042600000, 0x0000000043d00000, + 0x0000000047c00000, 0x0000000046700000, 0x0000000044a00000, 0x0000000045100000, + 0x000000004c800000, 0x000000004d300000, 0x000000004fe00000, 0x000000004e500000, + 0x000000004a400000, 0x000000004bf00000, 0x0000000049200000, 0x0000000048900000, + 0x00000000d8000000, 0x00000000d9b00000, 0x00000000db600000, 0x00000000dad00000, + 0x00000000dec00000, 0x00000000df700000, 0x00000000dda00000, 0x00000000dc100000, + 0x00000000d5800000, 0x00000000d4300000, 0x00000000d6e00000, 0x00000000d7500000, + 0x00000000d3400000, 0x00000000d2f00000, 0x00000000d0200000, 0x00000000d1900000, + 0x00000000c3000000, 0x00000000c2b00000, 0x00000000c0600000, 0x00000000c1d00000, + 0x00000000c5c00000, 0x00000000c4700000, 0x00000000c6a00000, 0x00000000c7100000, + 0x00000000ce800000, 0x00000000cf300000, 0x00000000cde00000, 0x00000000cc500000, + 0x00000000c8400000, 0x00000000c9f00000, 0x00000000cb200000, 0x00000000ca900000, + 0x00000000ee000000, 0x00000000efb00000, 0x00000000ed600000, 0x00000000ecd00000, + 0x00000000e8c00000, 0x00000000e9700000, 0x00000000eba00000, 0x00000000ea100000, + 0x00000000e3800000, 0x00000000e2300000, 0x00000000e0e00000, 0x00000000e1500000, + 0x00000000e5400000, 0x00000000e4f00000, 0x00000000e6200000, 0x00000000e7900000, + 0x00000000f5000000, 0x00000000f4b00000, 0x00000000f6600000, 0x00000000f7d00000, + 0x00000000f3c00000, 0x00000000f2700000, 0x00000000f0a00000, 0x00000000f1100000, + 0x00000000f8800000, 0x00000000f9300000, 0x00000000fbe00000, 0x00000000fa500000, + 0x00000000fe400000, 0x00000000fff00000, 0x00000000fd200000, 0x00000000fc900000, + 0x00000000b4000000, 0x00000000b5b00000, 0x00000000b7600000, 0x00000000b6d00000, + 0x00000000b2c00000, 0x00000000b3700000, 0x00000000b1a00000, 0x00000000b0100000, + 0x00000000b9800000, 0x00000000b8300000, 0x00000000bae00000, 0x00000000bb500000, + 0x00000000bf400000, 0x00000000bef00000, 0x00000000bc200000, 0x00000000bd900000, + 0x00000000af000000, 0x00000000aeb00000, 0x00000000ac600000, 0x00000000add00000, + 0x00000000a9c00000, 0x00000000a8700000, 0x00000000aaa00000, 0x00000000ab100000, + 0x00000000a2800000, 0x00000000a3300000, 0x00000000a1e00000, 0x00000000a0500000, + 0x00000000a4400000, 0x00000000a5f00000, 0x00000000a7200000, 0x00000000a6900000, + 0x0000000082000000, 0x0000000083b00000, 0x0000000081600000, 0x0000000080d00000, + 0x0000000084c00000, 0x0000000085700000, 0x0000000087a00000, 0x0000000086100000, + 0x000000008f800000, 0x000000008e300000, 0x000000008ce00000, 0x000000008d500000, + 0x0000000089400000, 0x0000000088f00000, 0x000000008a200000, 0x000000008b900000, + 0x0000000099000000, 0x0000000098b00000, 0x000000009a600000, 0x000000009bd00000, + 0x000000009fc00000, 0x000000009e700000, 0x000000009ca00000, 0x000000009d100000, + 0x0000000094800000, 0x0000000095300000, 0x0000000097e00000, 0x0000000096500000, + 0x0000000092400000, 0x0000000093f00000, 0x0000000091200000, 0x0000000090900000, + }, + { + 0x0000000000000000, 0x000000000001b000, 0x0000000000036000, 0x000000000002d000, + 0x000000000006c000, 0x0000000000077000, 0x000000000005a000, 0x0000000000041000, + 0x00000000000d8000, 0x00000000000c3000, 0x00000000000ee000, 0x00000000000f5000, + 0x00000000000b4000, 0x00000000000af000, 0x0000000000082000, 0x0000000000099000, + 0x00000000001b0000, 0x00000000001ab000, 0x0000000000186000, 0x000000000019d000, + 0x00000000001dc000, 0x00000000001c7000, 0x00000000001ea000, 0x00000000001f1000, + 0x0000000000168000, 0x0000000000173000, 0x000000000015e000, 0x0000000000145000, + 0x0000000000104000, 0x000000000011f000, 0x0000000000132000, 0x0000000000129000, + 0x0000000000360000, 0x000000000037b000, 0x0000000000356000, 0x000000000034d000, + 0x000000000030c000, 0x0000000000317000, 0x000000000033a000, 0x0000000000321000, + 0x00000000003b8000, 0x00000000003a3000, 0x000000000038e000, 0x0000000000395000, + 0x00000000003d4000, 0x00000000003cf000, 0x00000000003e2000, 0x00000000003f9000, + 0x00000000002d0000, 0x00000000002cb000, 0x00000000002e6000, 0x00000000002fd000, + 0x00000000002bc000, 0x00000000002a7000, 0x000000000028a000, 0x0000000000291000, + 0x0000000000208000, 0x0000000000213000, 0x000000000023e000, 0x0000000000225000, + 0x0000000000264000, 0x000000000027f000, 0x0000000000252000, 0x0000000000249000, + 0x00000000006c0000, 0x00000000006db000, 0x00000000006f6000, 0x00000000006ed000, + 0x00000000006ac000, 0x00000000006b7000, 0x000000000069a000, 0x0000000000681000, + 0x0000000000618000, 0x0000000000603000, 0x000000000062e000, 0x0000000000635000, + 0x0000000000674000, 0x000000000066f000, 0x0000000000642000, 0x0000000000659000, + 0x0000000000770000, 0x000000000076b000, 0x0000000000746000, 0x000000000075d000, + 0x000000000071c000, 0x0000000000707000, 0x000000000072a000, 0x0000000000731000, + 0x00000000007a8000, 0x00000000007b3000, 0x000000000079e000, 0x0000000000785000, + 0x00000000007c4000, 0x00000000007df000, 0x00000000007f2000, 0x00000000007e9000, + 0x00000000005a0000, 0x00000000005bb000, 0x0000000000596000, 0x000000000058d000, + 0x00000000005cc000, 0x00000000005d7000, 0x00000000005fa000, 0x00000000005e1000, + 0x0000000000578000, 0x0000000000563000, 0x000000000054e000, 0x0000000000555000, + 0x0000000000514000, 0x000000000050f000, 0x0000000000522000, 0x0000000000539000, + 0x0000000000410000, 0x000000000040b000, 0x0000000000426000, 0x000000000043d000, + 0x000000000047c000, 0x0000000000467000, 0x000000000044a000, 0x0000000000451000, + 0x00000000004c8000, 0x00000000004d3000, 0x00000000004fe000, 0x00000000004e5000, + 0x00000000004a4000, 0x00000000004bf000, 0x0000000000492000, 0x0000000000489000, + 0x0000000000d80000, 0x0000000000d9b000, 0x0000000000db6000, 0x0000000000dad000, + 0x0000000000dec000, 0x0000000000df7000, 0x0000000000dda000, 0x0000000000dc1000, + 0x0000000000d58000, 0x0000000000d43000, 0x0000000000d6e000, 0x0000000000d75000, + 0x0000000000d34000, 0x0000000000d2f000, 0x0000000000d02000, 0x0000000000d19000, + 0x0000000000c30000, 0x0000000000c2b000, 0x0000000000c06000, 0x0000000000c1d000, + 0x0000000000c5c000, 0x0000000000c47000, 0x0000000000c6a000, 0x0000000000c71000, + 0x0000000000ce8000, 0x0000000000cf3000, 0x0000000000cde000, 0x0000000000cc5000, + 0x0000000000c84000, 0x0000000000c9f000, 0x0000000000cb2000, 0x0000000000ca9000, + 0x0000000000ee0000, 0x0000000000efb000, 0x0000000000ed6000, 0x0000000000ecd000, + 0x0000000000e8c000, 0x0000000000e97000, 0x0000000000eba000, 0x0000000000ea1000, + 0x0000000000e38000, 0x0000000000e23000, 0x0000000000e0e000, 0x0000000000e15000, + 0x0000000000e54000, 0x0000000000e4f000, 0x0000000000e62000, 0x0000000000e79000, + 0x0000000000f50000, 0x0000000000f4b000, 0x0000000000f66000, 0x0000000000f7d000, + 0x0000000000f3c000, 0x0000000000f27000, 0x0000000000f0a000, 0x0000000000f11000, + 0x0000000000f88000, 0x0000000000f93000, 0x0000000000fbe000, 0x0000000000fa5000, + 0x0000000000fe4000, 0x0000000000fff000, 0x0000000000fd2000, 0x0000000000fc9000, + 0x0000000000b40000, 0x0000000000b5b000, 0x0000000000b76000, 0x0000000000b6d000, + 0x0000000000b2c000, 0x0000000000b37000, 0x0000000000b1a000, 0x0000000000b01000, + 0x0000000000b98000, 0x0000000000b83000, 0x0000000000bae000, 0x0000000000bb5000, + 0x0000000000bf4000, 0x0000000000bef000, 0x0000000000bc2000, 0x0000000000bd9000, + 0x0000000000af0000, 0x0000000000aeb000, 0x0000000000ac6000, 0x0000000000add000, + 0x0000000000a9c000, 0x0000000000a87000, 0x0000000000aaa000, 0x0000000000ab1000, + 0x0000000000a28000, 0x0000000000a33000, 0x0000000000a1e000, 0x0000000000a05000, + 0x0000000000a44000, 0x0000000000a5f000, 0x0000000000a72000, 0x0000000000a69000, + 0x0000000000820000, 0x000000000083b000, 0x0000000000816000, 0x000000000080d000, + 0x000000000084c000, 0x0000000000857000, 0x000000000087a000, 0x0000000000861000, + 0x00000000008f8000, 0x00000000008e3000, 0x00000000008ce000, 0x00000000008d5000, + 0x0000000000894000, 0x000000000088f000, 0x00000000008a2000, 0x00000000008b9000, + 0x0000000000990000, 0x000000000098b000, 0x00000000009a6000, 0x00000000009bd000, + 0x00000000009fc000, 0x00000000009e7000, 0x00000000009ca000, 0x00000000009d1000, + 0x0000000000948000, 0x0000000000953000, 0x000000000097e000, 0x0000000000965000, + 0x0000000000924000, 0x000000000093f000, 0x0000000000912000, 0x0000000000909000, + }, + { + 0x0000000000000000, 0x00000000000001b0, 0x0000000000000360, 0x00000000000002d0, + 0x00000000000006c0, 0x0000000000000770, 0x00000000000005a0, 0x0000000000000410, + 0x0000000000000d80, 0x0000000000000c30, 0x0000000000000ee0, 0x0000000000000f50, + 0x0000000000000b40, 0x0000000000000af0, 0x0000000000000820, 0x0000000000000990, + 0x0000000000001b00, 0x0000000000001ab0, 0x0000000000001860, 0x00000000000019d0, + 0x0000000000001dc0, 0x0000000000001c70, 0x0000000000001ea0, 0x0000000000001f10, + 0x0000000000001680, 0x0000000000001730, 0x00000000000015e0, 0x0000000000001450, + 0x0000000000001040, 0x00000000000011f0, 0x0000000000001320, 0x0000000000001290, + 0x0000000000003600, 0x00000000000037b0, 0x0000000000003560, 0x00000000000034d0, + 0x00000000000030c0, 0x0000000000003170, 0x00000000000033a0, 0x0000000000003210, + 0x0000000000003b80, 0x0000000000003a30, 0x00000000000038e0, 0x0000000000003950, + 0x0000000000003d40, 0x0000000000003cf0, 0x0000000000003e20, 0x0000000000003f90, + 0x0000000000002d00, 0x0000000000002cb0, 0x0000000000002e60, 0x0000000000002fd0, + 0x0000000000002bc0, 0x0000000000002a70, 0x00000000000028a0, 0x0000000000002910, + 0x0000000000002080, 0x0000000000002130, 0x00000000000023e0, 0x0000000000002250, + 0x0000000000002640, 0x00000000000027f0, 0x0000000000002520, 0x0000000000002490, + 0x0000000000006c00, 0x0000000000006db0, 0x0000000000006f60, 0x0000000000006ed0, + 0x0000000000006ac0, 0x0000000000006b70, 0x00000000000069a0, 0x0000000000006810, + 0x0000000000006180, 0x0000000000006030, 0x00000000000062e0, 0x0000000000006350, + 0x0000000000006740, 0x00000000000066f0, 0x0000000000006420, 0x0000000000006590, + 0x0000000000007700, 0x00000000000076b0, 0x0000000000007460, 0x00000000000075d0, + 0x00000000000071c0, 0x0000000000007070, 0x00000000000072a0, 0x0000000000007310, + 0x0000000000007a80, 0x0000000000007b30, 0x00000000000079e0, 0x0000000000007850, + 0x0000000000007c40, 0x0000000000007df0, 0x0000000000007f20, 0x0000000000007e90, + 0x0000000000005a00, 0x0000000000005bb0, 0x0000000000005960, 0x00000000000058d0, + 0x0000000000005cc0, 0x0000000000005d70, 0x0000000000005fa0, 0x0000000000005e10, + 0x0000000000005780, 0x0000000000005630, 0x00000000000054e0, 0x0000000000005550, + 0x0000000000005140, 0x00000000000050f0, 0x0000000000005220, 0x0000000000005390, + 0x0000000000004100, 0x00000000000040b0, 0x0000000000004260, 0x00000000000043d0, + 0x00000000000047c0, 0x0000000000004670, 0x00000000000044a0, 0x0000000000004510, + 0x0000000000004c80, 0x0000000000004d30, 0x0000000000004fe0, 0x0000000000004e50, + 0x0000000000004a40, 0x0000000000004bf0, 0x0000000000004920, 0x0000000000004890, + 0x000000000000d800, 0x000000000000d9b0, 0x000000000000db60, 0x000000000000dad0, + 0x000000000000dec0, 0x000000000000df70, 0x000000000000dda0, 0x000000000000dc10, + 0x000000000000d580, 0x000000000000d430, 0x000000000000d6e0, 0x000000000000d750, + 0x000000000000d340, 0x000000000000d2f0, 0x000000000000d020, 0x000000000000d190, + 0x000000000000c300, 0x000000000000c2b0, 0x000000000000c060, 0x000000000000c1d0, + 0x000000000000c5c0, 0x000000000000c470, 0x000000000000c6a0, 0x000000000000c710, + 0x000000000000ce80, 0x000000000000cf30, 0x000000000000cde0, 0x000000000000cc50, + 0x000000000000c840, 0x000000000000c9f0, 0x000000000000cb20, 0x000000000000ca90, + 0x000000000000ee00, 0x000000000000efb0, 0x000000000000ed60, 0x000000000000ecd0, + 0x000000000000e8c0, 0x000000000000e970, 0x000000000000eba0, 0x000000000000ea10, + 0x000000000000e380, 0x000000000000e230, 0x000000000000e0e0, 0x000000000000e150, + 0x000000000000e540, 0x000000000000e4f0, 0x000000000000e620, 0x000000000000e790, + 0x000000000000f500, 0x000000000000f4b0, 0x000000000000f660, 0x000000000000f7d0, + 0x000000000000f3c0, 0x000000000000f270, 0x000000000000f0a0, 0x000000000000f110, + 0x000000000000f880, 0x000000000000f930, 0x000000000000fbe0, 0x000000000000fa50, + 0x000000000000fe40, 0x000000000000fff0, 0x000000000000fd20, 0x000000000000fc90, + 0x000000000000b400, 0x000000000000b5b0, 0x000000000000b760, 0x000000000000b6d0, + 0x000000000000b2c0, 0x000000000000b370, 0x000000000000b1a0, 0x000000000000b010, + 0x000000000000b980, 0x000000000000b830, 0x000000000000bae0, 0x000000000000bb50, + 0x000000000000bf40, 0x000000000000bef0, 0x000000000000bc20, 0x000000000000bd90, + 0x000000000000af00, 0x000000000000aeb0, 0x000000000000ac60, 0x000000000000add0, + 0x000000000000a9c0, 0x000000000000a870, 0x000000000000aaa0, 0x000000000000ab10, + 0x000000000000a280, 0x000000000000a330, 0x000000000000a1e0, 0x000000000000a050, + 0x000000000000a440, 0x000000000000a5f0, 0x000000000000a720, 0x000000000000a690, + 0x0000000000008200, 0x00000000000083b0, 0x0000000000008160, 0x00000000000080d0, + 0x00000000000084c0, 0x0000000000008570, 0x00000000000087a0, 0x0000000000008610, + 0x0000000000008f80, 0x0000000000008e30, 0x0000000000008ce0, 0x0000000000008d50, + 0x0000000000008940, 0x00000000000088f0, 0x0000000000008a20, 0x0000000000008b90, + 0x0000000000009900, 0x00000000000098b0, 0x0000000000009a60, 0x0000000000009bd0, + 0x0000000000009fc0, 0x0000000000009e70, 0x0000000000009ca0, 0x0000000000009d10, + 0x0000000000009480, 0x0000000000009530, 0x00000000000097e0, 0x0000000000009650, + 0x0000000000009240, 0x00000000000093f0, 0x0000000000009120, 0x0000000000009090, + }, + { + 0x0000000000000000, 0xf500000000000001, 0x5a00000000000003, 0xaf00000000000002, + 0xb400000000000006, 0x4100000000000007, 0xee00000000000005, 0x1b00000000000004, + 0xd80000000000000d, 0x2d0000000000000c, 0x820000000000000e, 0x770000000000000f, + 0x6c0000000000000b, 0x990000000000000a, 0x3600000000000008, 0xc300000000000009, + 0x000000000000001b, 0xf50000000000001a, 0x5a00000000000018, 0xaf00000000000019, + 0xb40000000000001d, 0x410000000000001c, 0xee0000000000001e, 0x1b0000000000001f, + 0xd800000000000016, 0x2d00000000000017, 0x8200000000000015, 0x7700000000000014, + 0x6c00000000000010, 0x9900000000000011, 0x3600000000000013, 0xc300000000000012, + 0x0000000000000036, 0xf500000000000037, 0x5a00000000000035, 0xaf00000000000034, + 0xb400000000000030, 0x4100000000000031, 0xee00000000000033, 0x1b00000000000032, + 0xd80000000000003b, 0x2d0000000000003a, 0x8200000000000038, 0x7700000000000039, + 0x6c0000000000003d, 0x990000000000003c, 0x360000000000003e, 0xc30000000000003f, + 0x000000000000002d, 0xf50000000000002c, 0x5a0000000000002e, 0xaf0000000000002f, + 0xb40000000000002b, 0x410000000000002a, 0xee00000000000028, 0x1b00000000000029, + 0xd800000000000020, 0x2d00000000000021, 0x8200000000000023, 0x7700000000000022, + 0x6c00000000000026, 0x9900000000000027, 0x3600000000000025, 0xc300000000000024, + 0x000000000000006c, 0xf50000000000006d, 0x5a0000000000006f, 0xaf0000000000006e, + 0xb40000000000006a, 0x410000000000006b, 0xee00000000000069, 0x1b00000000000068, + 0xd800000000000061, 0x2d00000000000060, 0x8200000000000062, 0x7700000000000063, + 0x6c00000000000067, 0x9900000000000066, 0x3600000000000064, 0xc300000000000065, + 0x0000000000000077, 0xf500000000000076, 0x5a00000000000074, 0xaf00000000000075, + 0xb400000000000071, 0x4100000000000070, 0xee00000000000072, 0x1b00000000000073, + 0xd80000000000007a, 0x2d0000000000007b, 0x8200000000000079, 0x7700000000000078, + 0x6c0000000000007c, 0x990000000000007d, 0x360000000000007f, 0xc30000000000007e, + 0x000000000000005a, 0xf50000000000005b, 0x5a00000000000059, 0xaf00000000000058, + 0xb40000000000005c, 0x410000000000005d, 0xee0000000000005f, 0x1b0000000000005e, + 0xd800000000000057, 0x2d00000000000056, 0x8200000000000054, 0x7700000000000055, + 0x6c00000000000051, 0x9900000000000050, 0x3600000000000052, 0xc300000000000053, + 0x0000000000000041, 0xf500000000000040, 0x5a00000000000042, 0xaf00000000000043, + 0xb400000000000047, 0x4100000000000046, 0xee00000000000044, 0x1b00000000000045, + 0xd80000000000004c, 0x2d0000000000004d, 0x820000000000004f, 0x770000000000004e, + 0x6c0000000000004a, 0x990000000000004b, 0x3600000000000049, 0xc300000000000048, + 0x00000000000000d8, 0xf5000000000000d9, 0x5a000000000000db, 0xaf000000000000da, + 0xb4000000000000de, 0x41000000000000df, 0xee000000000000dd, 0x1b000000000000dc, + 0xd8000000000000d5, 0x2d000000000000d4, 0x82000000000000d6, 0x77000000000000d7, + 0x6c000000000000d3, 0x99000000000000d2, 0x36000000000000d0, 0xc3000000000000d1, + 0x00000000000000c3, 0xf5000000000000c2, 0x5a000000000000c0, 0xaf000000000000c1, + 0xb4000000000000c5, 0x41000000000000c4, 0xee000000000000c6, 0x1b000000000000c7, + 0xd8000000000000ce, 0x2d000000000000cf, 0x82000000000000cd, 0x77000000000000cc, + 0x6c000000000000c8, 0x99000000000000c9, 0x36000000000000cb, 0xc3000000000000ca, + 0x00000000000000ee, 0xf5000000000000ef, 0x5a000000000000ed, 0xaf000000000000ec, + 0xb4000000000000e8, 0x41000000000000e9, 0xee000000000000eb, 0x1b000000000000ea, + 0xd8000000000000e3, 0x2d000000000000e2, 0x82000000000000e0, 0x77000000000000e1, + 0x6c000000000000e5, 0x99000000000000e4, 0x36000000000000e6, 0xc3000000000000e7, + 0x00000000000000f5, 0xf5000000000000f4, 0x5a000000000000f6, 0xaf000000000000f7, + 0xb4000000000000f3, 0x41000000000000f2, 0xee000000000000f0, 0x1b000000000000f1, + 0xd8000000000000f8, 0x2d000000000000f9, 0x82000000000000fb, 0x77000000000000fa, + 0x6c000000000000fe, 0x99000000000000ff, 0x36000000000000fd, 0xc3000000000000fc, + 0x00000000000000b4, 0xf5000000000000b5, 0x5a000000000000b7, 0xaf000000000000b6, + 0xb4000000000000b2, 0x41000000000000b3, 0xee000000000000b1, 0x1b000000000000b0, + 0xd8000000000000b9, 0x2d000000000000b8, 0x82000000000000ba, 0x77000000000000bb, + 0x6c000000000000bf, 0x99000000000000be, 0x36000000000000bc, 0xc3000000000000bd, + 0x00000000000000af, 0xf5000000000000ae, 0x5a000000000000ac, 0xaf000000000000ad, + 0xb4000000000000a9, 0x41000000000000a8, 0xee000000000000aa, 0x1b000000000000ab, + 0xd8000000000000a2, 0x2d000000000000a3, 0x82000000000000a1, 0x77000000000000a0, + 0x6c000000000000a4, 0x99000000000000a5, 0x36000000000000a7, 0xc3000000000000a6, + 0x0000000000000082, 0xf500000000000083, 0x5a00000000000081, 0xaf00000000000080, + 0xb400000000000084, 0x4100000000000085, 0xee00000000000087, 0x1b00000000000086, + 0xd80000000000008f, 0x2d0000000000008e, 0x820000000000008c, 0x770000000000008d, + 0x6c00000000000089, 0x9900000000000088, 0x360000000000008a, 0xc30000000000008b, + 0x0000000000000099, 0xf500000000000098, 0x5a0000000000009a, 0xaf0000000000009b, + 0xb40000000000009f, 0x410000000000009e, 0xee0000000000009c, 0x1b0000000000009d, + 0xd800000000000094, 0x2d00000000000095, 0x8200000000000097, 0x7700000000000096, + 0x6c00000000000092, 0x9900000000000093, 0x3600000000000091, 0xc300000000000090, + }, + { + 0x0000000000000000, 0x0145000000000000, 0x028a000000000000, 0x03cf000000000000, + 0x0514000000000000, 0x0451000000000000, 0x079e000000000000, 0x06db000000000000, + 0x0a28000000000000, 0x0b6d000000000000, 0x08a2000000000000, 0x09e7000000000000, + 0x0f3c000000000000, 0x0e79000000000000, 0x0db6000000000000, 0x0cf3000000000000, + 0x1450000000000000, 0x1515000000000000, 0x16da000000000000, 0x179f000000000000, + 0x1144000000000000, 0x1001000000000000, 0x13ce000000000000, 0x128b000000000000, + 0x1e78000000000000, 0x1f3d000000000000, 0x1cf2000000000000, 0x1db7000000000000, + 0x1b6c000000000000, 0x1a29000000000000, 0x19e6000000000000, 0x18a3000000000000, + 0x28a0000000000000, 0x29e5000000000000, 0x2a2a000000000000, 0x2b6f000000000000, + 0x2db4000000000000, 0x2cf1000000000000, 0x2f3e000000000000, 0x2e7b000000000000, + 0x2288000000000000, 0x23cd000000000000, 0x2002000000000000, 0x2147000000000000, + 0x279c000000000000, 0x26d9000000000000, 0x2516000000000000, 0x2453000000000000, + 0x3cf0000000000000, 0x3db5000000000000, 0x3e7a000000000000, 0x3f3f000000000000, + 0x39e4000000000000, 0x38a1000000000000, 0x3b6e000000000000, 0x3a2b000000000000, + 0x36d8000000000000, 0x379d000000000000, 0x3452000000000000, 0x3517000000000000, + 0x33cc000000000000, 0x3289000000000000, 0x3146000000000000, 0x3003000000000000, + 0x5140000000000000, 0x5005000000000000, 0x53ca000000000000, 0x528f000000000000, + 0x5454000000000000, 0x5511000000000000, 0x56de000000000000, 0x579b000000000000, + 0x5b68000000000000, 0x5a2d000000000000, 0x59e2000000000000, 0x58a7000000000000, + 0x5e7c000000000000, 0x5f39000000000000, 0x5cf6000000000000, 0x5db3000000000000, + 0x4510000000000000, 0x4455000000000000, 0x479a000000000000, 0x46df000000000000, + 0x4004000000000000, 0x4141000000000000, 0x428e000000000000, 0x43cb000000000000, + 0x4f38000000000000, 0x4e7d000000000000, 0x4db2000000000000, 0x4cf7000000000000, + 0x4a2c000000000000, 0x4b69000000000000, 0x48a6000000000000, 0x49e3000000000000, + 0x79e0000000000000, 0x78a5000000000000, 0x7b6a000000000000, 0x7a2f000000000000, + 0x7cf4000000000000, 0x7db1000000000000, 0x7e7e000000000000, 0x7f3b000000000000, + 0x73c8000000000000, 0x728d000000000000, 0x7142000000000000, 0x7007000000000000, + 0x76dc000000000000, 0x7799000000000000, 0x7456000000000000, 0x7513000000000000, + 0x6db0000000000000, 0x6cf5000000000000, 0x6f3a000000000000, 0x6e7f000000000000, + 0x68a4000000000000, 0x69e1000000000000, 0x6a2e000000000000, 0x6b6b000000000000, + 0x6798000000000000, 0x66dd000000000000, 0x6512000000000000, 0x6457000000000000, + 0x628c000000000000, 0x63c9000000000000, 0x6006000000000000, 0x6143000000000000, + 0xa280000000000000, 0xa3c5000000000000, 0xa00a000000000000, 0xa14f000000000000, + 0xa794000000000000, 0xa6d1000000000000, 0xa51e000000000000, 0xa45b000000000000, + 0xa8a8000000000000, 0xa9ed000000000000, 0xaa22000000000000, 0xab67000000000000, + 0xadbc000000000000, 0xacf9000000000000, 0xaf36000000000000, 0xae73000000000000, + 0xb6d0000000000000, 0xb795000000000000, 0xb45a000000000000, 0xb51f000000000000, + 0xb3c4000000000000, 0xb281000000000000, 0xb14e000000000000, 0xb00b000000000000, + 0xbcf8000000000000, 0xbdbd000000000000, 0xbe72000000000000, 0xbf37000000000000, + 0xb9ec000000000000, 0xb8a9000000000000, 0xbb66000000000000, 0xba23000000000000, + 0x8a20000000000000, 0x8b65000000000000, 0x88aa000000000000, 0x89ef000000000000, + 0x8f34000000000000, 0x8e71000000000000, 0x8dbe000000000000, 0x8cfb000000000000, + 0x8008000000000000, 0x814d000000000000, 0x8282000000000000, 0x83c7000000000000, + 0x851c000000000000, 0x8459000000000000, 0x8796000000000000, 0x86d3000000000000, + 0x9e70000000000000, 0x9f35000000000000, 0x9cfa000000000000, 0x9dbf000000000000, + 0x9b64000000000000, 0x9a21000000000000, 0x99ee000000000000, 0x98ab000000000000, + 0x9458000000000000, 0x951d000000000000, 0x96d2000000000000, 0x9797000000000000, + 0x914c000000000000, 0x9009000000000000, 0x93c6000000000000, 0x9283000000000000, + 0xf3c0000000000000, 0xf285000000000000, 0xf14a000000000000, 0xf00f000000000000, + 0xf6d4000000000000, 0xf791000000000000, 0xf45e000000000000, 0xf51b000000000000, + 0xf9e8000000000000, 0xf8ad000000000000, 0xfb62000000000000, 0xfa27000000000000, + 0xfcfc000000000000, 0xfdb9000000000000, 0xfe76000000000000, 0xff33000000000000, + 0xe790000000000000, 0xe6d5000000000000, 0xe51a000000000000, 0xe45f000000000000, + 0xe284000000000000, 0xe3c1000000000000, 0xe00e000000000000, 0xe14b000000000000, + 0xedb8000000000000, 0xecfd000000000000, 0xef32000000000000, 0xee77000000000000, + 0xe8ac000000000000, 0xe9e9000000000000, 0xea26000000000000, 0xeb63000000000000, + 0xdb60000000000000, 0xda25000000000000, 0xd9ea000000000000, 0xd8af000000000000, + 0xde74000000000000, 0xdf31000000000000, 0xdcfe000000000000, 0xddbb000000000000, + 0xd148000000000000, 0xd00d000000000000, 0xd3c2000000000000, 0xd287000000000000, + 0xd45c000000000000, 0xd519000000000000, 0xd6d6000000000000, 0xd793000000000000, + 0xcf30000000000000, 0xce75000000000000, 0xcdba000000000000, 0xccff000000000000, + 0xca24000000000000, 0xcb61000000000000, 0xc8ae000000000000, 0xc9eb000000000000, + 0xc518000000000000, 0xc45d000000000000, 0xc792000000000000, 0xc6d7000000000000, + 0xc00c000000000000, 0xc149000000000000, 0xc286000000000000, 0xc3c3000000000000, + }, + { + 0x0000000000000000, 0x0001450000000000, 0x00028a0000000000, 0x0003cf0000000000, + 0x0005140000000000, 0x0004510000000000, 0x00079e0000000000, 0x0006db0000000000, + 0x000a280000000000, 0x000b6d0000000000, 0x0008a20000000000, 0x0009e70000000000, + 0x000f3c0000000000, 0x000e790000000000, 0x000db60000000000, 0x000cf30000000000, + 0x0014500000000000, 0x0015150000000000, 0x0016da0000000000, 0x00179f0000000000, + 0x0011440000000000, 0x0010010000000000, 0x0013ce0000000000, 0x00128b0000000000, + 0x001e780000000000, 0x001f3d0000000000, 0x001cf20000000000, 0x001db70000000000, + 0x001b6c0000000000, 0x001a290000000000, 0x0019e60000000000, 0x0018a30000000000, + 0x0028a00000000000, 0x0029e50000000000, 0x002a2a0000000000, 0x002b6f0000000000, + 0x002db40000000000, 0x002cf10000000000, 0x002f3e0000000000, 0x002e7b0000000000, + 0x0022880000000000, 0x0023cd0000000000, 0x0020020000000000, 0x0021470000000000, + 0x00279c0000000000, 0x0026d90000000000, 0x0025160000000000, 0x0024530000000000, + 0x003cf00000000000, 0x003db50000000000, 0x003e7a0000000000, 0x003f3f0000000000, + 0x0039e40000000000, 0x0038a10000000000, 0x003b6e0000000000, 0x003a2b0000000000, + 0x0036d80000000000, 0x00379d0000000000, 0x0034520000000000, 0x0035170000000000, + 0x0033cc0000000000, 0x0032890000000000, 0x0031460000000000, 0x0030030000000000, + 0x0051400000000000, 0x0050050000000000, 0x0053ca0000000000, 0x00528f0000000000, + 0x0054540000000000, 0x0055110000000000, 0x0056de0000000000, 0x00579b0000000000, + 0x005b680000000000, 0x005a2d0000000000, 0x0059e20000000000, 0x0058a70000000000, + 0x005e7c0000000000, 0x005f390000000000, 0x005cf60000000000, 0x005db30000000000, + 0x0045100000000000, 0x0044550000000000, 0x00479a0000000000, 0x0046df0000000000, + 0x0040040000000000, 0x0041410000000000, 0x00428e0000000000, 0x0043cb0000000000, + 0x004f380000000000, 0x004e7d0000000000, 0x004db20000000000, 0x004cf70000000000, + 0x004a2c0000000000, 0x004b690000000000, 0x0048a60000000000, 0x0049e30000000000, + 0x0079e00000000000, 0x0078a50000000000, 0x007b6a0000000000, 0x007a2f0000000000, + 0x007cf40000000000, 0x007db10000000000, 0x007e7e0000000000, 0x007f3b0000000000, + 0x0073c80000000000, 0x00728d0000000000, 0x0071420000000000, 0x0070070000000000, + 0x0076dc0000000000, 0x0077990000000000, 0x0074560000000000, 0x0075130000000000, + 0x006db00000000000, 0x006cf50000000000, 0x006f3a0000000000, 0x006e7f0000000000, + 0x0068a40000000000, 0x0069e10000000000, 0x006a2e0000000000, 0x006b6b0000000000, + 0x0067980000000000, 0x0066dd0000000000, 0x0065120000000000, 0x0064570000000000, + 0x00628c0000000000, 0x0063c90000000000, 0x0060060000000000, 0x0061430000000000, + 0x00a2800000000000, 0x00a3c50000000000, 0x00a00a0000000000, 0x00a14f0000000000, + 0x00a7940000000000, 0x00a6d10000000000, 0x00a51e0000000000, 0x00a45b0000000000, + 0x00a8a80000000000, 0x00a9ed0000000000, 0x00aa220000000000, 0x00ab670000000000, + 0x00adbc0000000000, 0x00acf90000000000, 0x00af360000000000, 0x00ae730000000000, + 0x00b6d00000000000, 0x00b7950000000000, 0x00b45a0000000000, 0x00b51f0000000000, + 0x00b3c40000000000, 0x00b2810000000000, 0x00b14e0000000000, 0x00b00b0000000000, + 0x00bcf80000000000, 0x00bdbd0000000000, 0x00be720000000000, 0x00bf370000000000, + 0x00b9ec0000000000, 0x00b8a90000000000, 0x00bb660000000000, 0x00ba230000000000, + 0x008a200000000000, 0x008b650000000000, 0x0088aa0000000000, 0x0089ef0000000000, + 0x008f340000000000, 0x008e710000000000, 0x008dbe0000000000, 0x008cfb0000000000, + 0x0080080000000000, 0x00814d0000000000, 0x0082820000000000, 0x0083c70000000000, + 0x00851c0000000000, 0x0084590000000000, 0x0087960000000000, 0x0086d30000000000, + 0x009e700000000000, 0x009f350000000000, 0x009cfa0000000000, 0x009dbf0000000000, + 0x009b640000000000, 0x009a210000000000, 0x0099ee0000000000, 0x0098ab0000000000, + 0x0094580000000000, 0x00951d0000000000, 0x0096d20000000000, 0x0097970000000000, + 0x00914c0000000000, 0x0090090000000000, 0x0093c60000000000, 0x0092830000000000, + 0x00f3c00000000000, 0x00f2850000000000, 0x00f14a0000000000, 0x00f00f0000000000, + 0x00f6d40000000000, 0x00f7910000000000, 0x00f45e0000000000, 0x00f51b0000000000, + 0x00f9e80000000000, 0x00f8ad0000000000, 0x00fb620000000000, 0x00fa270000000000, + 0x00fcfc0000000000, 0x00fdb90000000000, 0x00fe760000000000, 0x00ff330000000000, + 0x00e7900000000000, 0x00e6d50000000000, 0x00e51a0000000000, 0x00e45f0000000000, + 0x00e2840000000000, 0x00e3c10000000000, 0x00e00e0000000000, 0x00e14b0000000000, + 0x00edb80000000000, 0x00ecfd0000000000, 0x00ef320000000000, 0x00ee770000000000, + 0x00e8ac0000000000, 0x00e9e90000000000, 0x00ea260000000000, 0x00eb630000000000, + 0x00db600000000000, 0x00da250000000000, 0x00d9ea0000000000, 0x00d8af0000000000, + 0x00de740000000000, 0x00df310000000000, 0x00dcfe0000000000, 0x00ddbb0000000000, + 0x00d1480000000000, 0x00d00d0000000000, 0x00d3c20000000000, 0x00d2870000000000, + 0x00d45c0000000000, 0x00d5190000000000, 0x00d6d60000000000, 0x00d7930000000000, + 0x00cf300000000000, 0x00ce750000000000, 0x00cdba0000000000, 0x00ccff0000000000, + 0x00ca240000000000, 0x00cb610000000000, 0x00c8ae0000000000, 0x00c9eb0000000000, + 0x00c5180000000000, 0x00c45d0000000000, 0x00c7920000000000, 0x00c6d70000000000, + 0x00c00c0000000000, 0x00c1490000000000, 0x00c2860000000000, 0x00c3c30000000000, + }, + { + 0x0000000000000000, 0x0000014500000000, 0x0000028a00000000, 0x000003cf00000000, + 0x0000051400000000, 0x0000045100000000, 0x0000079e00000000, 0x000006db00000000, + 0x00000a2800000000, 0x00000b6d00000000, 0x000008a200000000, 0x000009e700000000, + 0x00000f3c00000000, 0x00000e7900000000, 0x00000db600000000, 0x00000cf300000000, + 0x0000145000000000, 0x0000151500000000, 0x000016da00000000, 0x0000179f00000000, + 0x0000114400000000, 0x0000100100000000, 0x000013ce00000000, 0x0000128b00000000, + 0x00001e7800000000, 0x00001f3d00000000, 0x00001cf200000000, 0x00001db700000000, + 0x00001b6c00000000, 0x00001a2900000000, 0x000019e600000000, 0x000018a300000000, + 0x000028a000000000, 0x000029e500000000, 0x00002a2a00000000, 0x00002b6f00000000, + 0x00002db400000000, 0x00002cf100000000, 0x00002f3e00000000, 0x00002e7b00000000, + 0x0000228800000000, 0x000023cd00000000, 0x0000200200000000, 0x0000214700000000, + 0x0000279c00000000, 0x000026d900000000, 0x0000251600000000, 0x0000245300000000, + 0x00003cf000000000, 0x00003db500000000, 0x00003e7a00000000, 0x00003f3f00000000, + 0x000039e400000000, 0x000038a100000000, 0x00003b6e00000000, 0x00003a2b00000000, + 0x000036d800000000, 0x0000379d00000000, 0x0000345200000000, 0x0000351700000000, + 0x000033cc00000000, 0x0000328900000000, 0x0000314600000000, 0x0000300300000000, + 0x0000514000000000, 0x0000500500000000, 0x000053ca00000000, 0x0000528f00000000, + 0x0000545400000000, 0x0000551100000000, 0x000056de00000000, 0x0000579b00000000, + 0x00005b6800000000, 0x00005a2d00000000, 0x000059e200000000, 0x000058a700000000, + 0x00005e7c00000000, 0x00005f3900000000, 0x00005cf600000000, 0x00005db300000000, + 0x0000451000000000, 0x0000445500000000, 0x0000479a00000000, 0x000046df00000000, + 0x0000400400000000, 0x0000414100000000, 0x0000428e00000000, 0x000043cb00000000, + 0x00004f3800000000, 0x00004e7d00000000, 0x00004db200000000, 0x00004cf700000000, + 0x00004a2c00000000, 0x00004b6900000000, 0x000048a600000000, 0x000049e300000000, + 0x000079e000000000, 0x000078a500000000, 0x00007b6a00000000, 0x00007a2f00000000, + 0x00007cf400000000, 0x00007db100000000, 0x00007e7e00000000, 0x00007f3b00000000, + 0x000073c800000000, 0x0000728d00000000, 0x0000714200000000, 0x0000700700000000, + 0x000076dc00000000, 0x0000779900000000, 0x0000745600000000, 0x0000751300000000, + 0x00006db000000000, 0x00006cf500000000, 0x00006f3a00000000, 0x00006e7f00000000, + 0x000068a400000000, 0x000069e100000000, 0x00006a2e00000000, 0x00006b6b00000000, + 0x0000679800000000, 0x000066dd00000000, 0x0000651200000000, 0x0000645700000000, + 0x0000628c00000000, 0x000063c900000000, 0x0000600600000000, 0x0000614300000000, + 0x0000a28000000000, 0x0000a3c500000000, 0x0000a00a00000000, 0x0000a14f00000000, + 0x0000a79400000000, 0x0000a6d100000000, 0x0000a51e00000000, 0x0000a45b00000000, + 0x0000a8a800000000, 0x0000a9ed00000000, 0x0000aa2200000000, 0x0000ab6700000000, + 0x0000adbc00000000, 0x0000acf900000000, 0x0000af3600000000, 0x0000ae7300000000, + 0x0000b6d000000000, 0x0000b79500000000, 0x0000b45a00000000, 0x0000b51f00000000, + 0x0000b3c400000000, 0x0000b28100000000, 0x0000b14e00000000, 0x0000b00b00000000, + 0x0000bcf800000000, 0x0000bdbd00000000, 0x0000be7200000000, 0x0000bf3700000000, + 0x0000b9ec00000000, 0x0000b8a900000000, 0x0000bb6600000000, 0x0000ba2300000000, + 0x00008a2000000000, 0x00008b6500000000, 0x000088aa00000000, 0x000089ef00000000, + 0x00008f3400000000, 0x00008e7100000000, 0x00008dbe00000000, 0x00008cfb00000000, + 0x0000800800000000, 0x0000814d00000000, 0x0000828200000000, 0x000083c700000000, + 0x0000851c00000000, 0x0000845900000000, 0x0000879600000000, 0x000086d300000000, + 0x00009e7000000000, 0x00009f3500000000, 0x00009cfa00000000, 0x00009dbf00000000, + 0x00009b6400000000, 0x00009a2100000000, 0x000099ee00000000, 0x000098ab00000000, + 0x0000945800000000, 0x0000951d00000000, 0x000096d200000000, 0x0000979700000000, + 0x0000914c00000000, 0x0000900900000000, 0x000093c600000000, 0x0000928300000000, + 0x0000f3c000000000, 0x0000f28500000000, 0x0000f14a00000000, 0x0000f00f00000000, + 0x0000f6d400000000, 0x0000f79100000000, 0x0000f45e00000000, 0x0000f51b00000000, + 0x0000f9e800000000, 0x0000f8ad00000000, 0x0000fb6200000000, 0x0000fa2700000000, + 0x0000fcfc00000000, 0x0000fdb900000000, 0x0000fe7600000000, 0x0000ff3300000000, + 0x0000e79000000000, 0x0000e6d500000000, 0x0000e51a00000000, 0x0000e45f00000000, + 0x0000e28400000000, 0x0000e3c100000000, 0x0000e00e00000000, 0x0000e14b00000000, + 0x0000edb800000000, 0x0000ecfd00000000, 0x0000ef3200000000, 0x0000ee7700000000, + 0x0000e8ac00000000, 0x0000e9e900000000, 0x0000ea2600000000, 0x0000eb6300000000, + 0x0000db6000000000, 0x0000da2500000000, 0x0000d9ea00000000, 0x0000d8af00000000, + 0x0000de7400000000, 0x0000df3100000000, 0x0000dcfe00000000, 0x0000ddbb00000000, + 0x0000d14800000000, 0x0000d00d00000000, 0x0000d3c200000000, 0x0000d28700000000, + 0x0000d45c00000000, 0x0000d51900000000, 0x0000d6d600000000, 0x0000d79300000000, + 0x0000cf3000000000, 0x0000ce7500000000, 0x0000cdba00000000, 0x0000ccff00000000, + 0x0000ca2400000000, 0x0000cb6100000000, 0x0000c8ae00000000, 0x0000c9eb00000000, + 0x0000c51800000000, 0x0000c45d00000000, 0x0000c79200000000, 0x0000c6d700000000, + 0x0000c00c00000000, 0x0000c14900000000, 0x0000c28600000000, 0x0000c3c300000000, + }, + { + 0x0000000000000000, 0x0000000145000000, 0x000000028a000000, 0x00000003cf000000, + 0x0000000514000000, 0x0000000451000000, 0x000000079e000000, 0x00000006db000000, + 0x0000000a28000000, 0x0000000b6d000000, 0x00000008a2000000, 0x00000009e7000000, + 0x0000000f3c000000, 0x0000000e79000000, 0x0000000db6000000, 0x0000000cf3000000, + 0x0000001450000000, 0x0000001515000000, 0x00000016da000000, 0x000000179f000000, + 0x0000001144000000, 0x0000001001000000, 0x00000013ce000000, 0x000000128b000000, + 0x0000001e78000000, 0x0000001f3d000000, 0x0000001cf2000000, 0x0000001db7000000, + 0x0000001b6c000000, 0x0000001a29000000, 0x00000019e6000000, 0x00000018a3000000, + 0x00000028a0000000, 0x00000029e5000000, 0x0000002a2a000000, 0x0000002b6f000000, + 0x0000002db4000000, 0x0000002cf1000000, 0x0000002f3e000000, 0x0000002e7b000000, + 0x0000002288000000, 0x00000023cd000000, 0x0000002002000000, 0x0000002147000000, + 0x000000279c000000, 0x00000026d9000000, 0x0000002516000000, 0x0000002453000000, + 0x0000003cf0000000, 0x0000003db5000000, 0x0000003e7a000000, 0x0000003f3f000000, + 0x00000039e4000000, 0x00000038a1000000, 0x0000003b6e000000, 0x0000003a2b000000, + 0x00000036d8000000, 0x000000379d000000, 0x0000003452000000, 0x0000003517000000, + 0x00000033cc000000, 0x0000003289000000, 0x0000003146000000, 0x0000003003000000, + 0x0000005140000000, 0x0000005005000000, 0x00000053ca000000, 0x000000528f000000, + 0x0000005454000000, 0x0000005511000000, 0x00000056de000000, 0x000000579b000000, + 0x0000005b68000000, 0x0000005a2d000000, 0x00000059e2000000, 0x00000058a7000000, + 0x0000005e7c000000, 0x0000005f39000000, 0x0000005cf6000000, 0x0000005db3000000, + 0x0000004510000000, 0x0000004455000000, 0x000000479a000000, 0x00000046df000000, + 0x0000004004000000, 0x0000004141000000, 0x000000428e000000, 0x00000043cb000000, + 0x0000004f38000000, 0x0000004e7d000000, 0x0000004db2000000, 0x0000004cf7000000, + 0x0000004a2c000000, 0x0000004b69000000, 0x00000048a6000000, 0x00000049e3000000, + 0x00000079e0000000, 0x00000078a5000000, 0x0000007b6a000000, 0x0000007a2f000000, + 0x0000007cf4000000, 0x0000007db1000000, 0x0000007e7e000000, 0x0000007f3b000000, + 0x00000073c8000000, 0x000000728d000000, 0x0000007142000000, 0x0000007007000000, + 0x00000076dc000000, 0x0000007799000000, 0x0000007456000000, 0x0000007513000000, + 0x0000006db0000000, 0x0000006cf5000000, 0x0000006f3a000000, 0x0000006e7f000000, + 0x00000068a4000000, 0x00000069e1000000, 0x0000006a2e000000, 0x0000006b6b000000, + 0x0000006798000000, 0x00000066dd000000, 0x0000006512000000, 0x0000006457000000, + 0x000000628c000000, 0x00000063c9000000, 0x0000006006000000, 0x0000006143000000, + 0x000000a280000000, 0x000000a3c5000000, 0x000000a00a000000, 0x000000a14f000000, + 0x000000a794000000, 0x000000a6d1000000, 0x000000a51e000000, 0x000000a45b000000, + 0x000000a8a8000000, 0x000000a9ed000000, 0x000000aa22000000, 0x000000ab67000000, + 0x000000adbc000000, 0x000000acf9000000, 0x000000af36000000, 0x000000ae73000000, + 0x000000b6d0000000, 0x000000b795000000, 0x000000b45a000000, 0x000000b51f000000, + 0x000000b3c4000000, 0x000000b281000000, 0x000000b14e000000, 0x000000b00b000000, + 0x000000bcf8000000, 0x000000bdbd000000, 0x000000be72000000, 0x000000bf37000000, + 0x000000b9ec000000, 0x000000b8a9000000, 0x000000bb66000000, 0x000000ba23000000, + 0x0000008a20000000, 0x0000008b65000000, 0x00000088aa000000, 0x00000089ef000000, + 0x0000008f34000000, 0x0000008e71000000, 0x0000008dbe000000, 0x0000008cfb000000, + 0x0000008008000000, 0x000000814d000000, 0x0000008282000000, 0x00000083c7000000, + 0x000000851c000000, 0x0000008459000000, 0x0000008796000000, 0x00000086d3000000, + 0x0000009e70000000, 0x0000009f35000000, 0x0000009cfa000000, 0x0000009dbf000000, + 0x0000009b64000000, 0x0000009a21000000, 0x00000099ee000000, 0x00000098ab000000, + 0x0000009458000000, 0x000000951d000000, 0x00000096d2000000, 0x0000009797000000, + 0x000000914c000000, 0x0000009009000000, 0x00000093c6000000, 0x0000009283000000, + 0x000000f3c0000000, 0x000000f285000000, 0x000000f14a000000, 0x000000f00f000000, + 0x000000f6d4000000, 0x000000f791000000, 0x000000f45e000000, 0x000000f51b000000, + 0x000000f9e8000000, 0x000000f8ad000000, 0x000000fb62000000, 0x000000fa27000000, + 0x000000fcfc000000, 0x000000fdb9000000, 0x000000fe76000000, 0x000000ff33000000, + 0x000000e790000000, 0x000000e6d5000000, 0x000000e51a000000, 0x000000e45f000000, + 0x000000e284000000, 0x000000e3c1000000, 0x000000e00e000000, 0x000000e14b000000, + 0x000000edb8000000, 0x000000ecfd000000, 0x000000ef32000000, 0x000000ee77000000, + 0x000000e8ac000000, 0x000000e9e9000000, 0x000000ea26000000, 0x000000eb63000000, + 0x000000db60000000, 0x000000da25000000, 0x000000d9ea000000, 0x000000d8af000000, + 0x000000de74000000, 0x000000df31000000, 0x000000dcfe000000, 0x000000ddbb000000, + 0x000000d148000000, 0x000000d00d000000, 0x000000d3c2000000, 0x000000d287000000, + 0x000000d45c000000, 0x000000d519000000, 0x000000d6d6000000, 0x000000d793000000, + 0x000000cf30000000, 0x000000ce75000000, 0x000000cdba000000, 0x000000ccff000000, + 0x000000ca24000000, 0x000000cb61000000, 0x000000c8ae000000, 0x000000c9eb000000, + 0x000000c518000000, 0x000000c45d000000, 0x000000c792000000, 0x000000c6d7000000, + 0x000000c00c000000, 0x000000c149000000, 0x000000c286000000, 0x000000c3c3000000, + }, + { + 0x0000000000000000, 0x0000000001450000, 0x00000000028a0000, 0x0000000003cf0000, + 0x0000000005140000, 0x0000000004510000, 0x00000000079e0000, 0x0000000006db0000, + 0x000000000a280000, 0x000000000b6d0000, 0x0000000008a20000, 0x0000000009e70000, + 0x000000000f3c0000, 0x000000000e790000, 0x000000000db60000, 0x000000000cf30000, + 0x0000000014500000, 0x0000000015150000, 0x0000000016da0000, 0x00000000179f0000, + 0x0000000011440000, 0x0000000010010000, 0x0000000013ce0000, 0x00000000128b0000, + 0x000000001e780000, 0x000000001f3d0000, 0x000000001cf20000, 0x000000001db70000, + 0x000000001b6c0000, 0x000000001a290000, 0x0000000019e60000, 0x0000000018a30000, + 0x0000000028a00000, 0x0000000029e50000, 0x000000002a2a0000, 0x000000002b6f0000, + 0x000000002db40000, 0x000000002cf10000, 0x000000002f3e0000, 0x000000002e7b0000, + 0x0000000022880000, 0x0000000023cd0000, 0x0000000020020000, 0x0000000021470000, + 0x00000000279c0000, 0x0000000026d90000, 0x0000000025160000, 0x0000000024530000, + 0x000000003cf00000, 0x000000003db50000, 0x000000003e7a0000, 0x000000003f3f0000, + 0x0000000039e40000, 0x0000000038a10000, 0x000000003b6e0000, 0x000000003a2b0000, + 0x0000000036d80000, 0x00000000379d0000, 0x0000000034520000, 0x0000000035170000, + 0x0000000033cc0000, 0x0000000032890000, 0x0000000031460000, 0x0000000030030000, + 0x0000000051400000, 0x0000000050050000, 0x0000000053ca0000, 0x00000000528f0000, + 0x0000000054540000, 0x0000000055110000, 0x0000000056de0000, 0x00000000579b0000, + 0x000000005b680000, 0x000000005a2d0000, 0x0000000059e20000, 0x0000000058a70000, + 0x000000005e7c0000, 0x000000005f390000, 0x000000005cf60000, 0x000000005db30000, + 0x0000000045100000, 0x0000000044550000, 0x00000000479a0000, 0x0000000046df0000, + 0x0000000040040000, 0x0000000041410000, 0x00000000428e0000, 0x0000000043cb0000, + 0x000000004f380000, 0x000000004e7d0000, 0x000000004db20000, 0x000000004cf70000, + 0x000000004a2c0000, 0x000000004b690000, 0x0000000048a60000, 0x0000000049e30000, + 0x0000000079e00000, 0x0000000078a50000, 0x000000007b6a0000, 0x000000007a2f0000, + 0x000000007cf40000, 0x000000007db10000, 0x000000007e7e0000, 0x000000007f3b0000, + 0x0000000073c80000, 0x00000000728d0000, 0x0000000071420000, 0x0000000070070000, + 0x0000000076dc0000, 0x0000000077990000, 0x0000000074560000, 0x0000000075130000, + 0x000000006db00000, 0x000000006cf50000, 0x000000006f3a0000, 0x000000006e7f0000, + 0x0000000068a40000, 0x0000000069e10000, 0x000000006a2e0000, 0x000000006b6b0000, + 0x0000000067980000, 0x0000000066dd0000, 0x0000000065120000, 0x0000000064570000, + 0x00000000628c0000, 0x0000000063c90000, 0x0000000060060000, 0x0000000061430000, + 0x00000000a2800000, 0x00000000a3c50000, 0x00000000a00a0000, 0x00000000a14f0000, + 0x00000000a7940000, 0x00000000a6d10000, 0x00000000a51e0000, 0x00000000a45b0000, + 0x00000000a8a80000, 0x00000000a9ed0000, 0x00000000aa220000, 0x00000000ab670000, + 0x00000000adbc0000, 0x00000000acf90000, 0x00000000af360000, 0x00000000ae730000, + 0x00000000b6d00000, 0x00000000b7950000, 0x00000000b45a0000, 0x00000000b51f0000, + 0x00000000b3c40000, 0x00000000b2810000, 0x00000000b14e0000, 0x00000000b00b0000, + 0x00000000bcf80000, 0x00000000bdbd0000, 0x00000000be720000, 0x00000000bf370000, + 0x00000000b9ec0000, 0x00000000b8a90000, 0x00000000bb660000, 0x00000000ba230000, + 0x000000008a200000, 0x000000008b650000, 0x0000000088aa0000, 0x0000000089ef0000, + 0x000000008f340000, 0x000000008e710000, 0x000000008dbe0000, 0x000000008cfb0000, + 0x0000000080080000, 0x00000000814d0000, 0x0000000082820000, 0x0000000083c70000, + 0x00000000851c0000, 0x0000000084590000, 0x0000000087960000, 0x0000000086d30000, + 0x000000009e700000, 0x000000009f350000, 0x000000009cfa0000, 0x000000009dbf0000, + 0x000000009b640000, 0x000000009a210000, 0x0000000099ee0000, 0x0000000098ab0000, + 0x0000000094580000, 0x00000000951d0000, 0x0000000096d20000, 0x0000000097970000, + 0x00000000914c0000, 0x0000000090090000, 0x0000000093c60000, 0x0000000092830000, + 0x00000000f3c00000, 0x00000000f2850000, 0x00000000f14a0000, 0x00000000f00f0000, + 0x00000000f6d40000, 0x00000000f7910000, 0x00000000f45e0000, 0x00000000f51b0000, + 0x00000000f9e80000, 0x00000000f8ad0000, 0x00000000fb620000, 0x00000000fa270000, + 0x00000000fcfc0000, 0x00000000fdb90000, 0x00000000fe760000, 0x00000000ff330000, + 0x00000000e7900000, 0x00000000e6d50000, 0x00000000e51a0000, 0x00000000e45f0000, + 0x00000000e2840000, 0x00000000e3c10000, 0x00000000e00e0000, 0x00000000e14b0000, + 0x00000000edb80000, 0x00000000ecfd0000, 0x00000000ef320000, 0x00000000ee770000, + 0x00000000e8ac0000, 0x00000000e9e90000, 0x00000000ea260000, 0x00000000eb630000, + 0x00000000db600000, 0x00000000da250000, 0x00000000d9ea0000, 0x00000000d8af0000, + 0x00000000de740000, 0x00000000df310000, 0x00000000dcfe0000, 0x00000000ddbb0000, + 0x00000000d1480000, 0x00000000d00d0000, 0x00000000d3c20000, 0x00000000d2870000, + 0x00000000d45c0000, 0x00000000d5190000, 0x00000000d6d60000, 0x00000000d7930000, + 0x00000000cf300000, 0x00000000ce750000, 0x00000000cdba0000, 0x00000000ccff0000, + 0x00000000ca240000, 0x00000000cb610000, 0x00000000c8ae0000, 0x00000000c9eb0000, + 0x00000000c5180000, 0x00000000c45d0000, 0x00000000c7920000, 0x00000000c6d70000, + 0x00000000c00c0000, 0x00000000c1490000, 0x00000000c2860000, 0x00000000c3c30000, + }, + { + 0x0000000000000000, 0x0000000000014500, 0x0000000000028a00, 0x000000000003cf00, + 0x0000000000051400, 0x0000000000045100, 0x0000000000079e00, 0x000000000006db00, + 0x00000000000a2800, 0x00000000000b6d00, 0x000000000008a200, 0x000000000009e700, + 0x00000000000f3c00, 0x00000000000e7900, 0x00000000000db600, 0x00000000000cf300, + 0x0000000000145000, 0x0000000000151500, 0x000000000016da00, 0x0000000000179f00, + 0x0000000000114400, 0x0000000000100100, 0x000000000013ce00, 0x0000000000128b00, + 0x00000000001e7800, 0x00000000001f3d00, 0x00000000001cf200, 0x00000000001db700, + 0x00000000001b6c00, 0x00000000001a2900, 0x000000000019e600, 0x000000000018a300, + 0x000000000028a000, 0x000000000029e500, 0x00000000002a2a00, 0x00000000002b6f00, + 0x00000000002db400, 0x00000000002cf100, 0x00000000002f3e00, 0x00000000002e7b00, + 0x0000000000228800, 0x000000000023cd00, 0x0000000000200200, 0x0000000000214700, + 0x0000000000279c00, 0x000000000026d900, 0x0000000000251600, 0x0000000000245300, + 0x00000000003cf000, 0x00000000003db500, 0x00000000003e7a00, 0x00000000003f3f00, + 0x000000000039e400, 0x000000000038a100, 0x00000000003b6e00, 0x00000000003a2b00, + 0x000000000036d800, 0x0000000000379d00, 0x0000000000345200, 0x0000000000351700, + 0x000000000033cc00, 0x0000000000328900, 0x0000000000314600, 0x0000000000300300, + 0x0000000000514000, 0x0000000000500500, 0x000000000053ca00, 0x0000000000528f00, + 0x0000000000545400, 0x0000000000551100, 0x000000000056de00, 0x0000000000579b00, + 0x00000000005b6800, 0x00000000005a2d00, 0x000000000059e200, 0x000000000058a700, + 0x00000000005e7c00, 0x00000000005f3900, 0x00000000005cf600, 0x00000000005db300, + 0x0000000000451000, 0x0000000000445500, 0x0000000000479a00, 0x000000000046df00, + 0x0000000000400400, 0x0000000000414100, 0x0000000000428e00, 0x000000000043cb00, + 0x00000000004f3800, 0x00000000004e7d00, 0x00000000004db200, 0x00000000004cf700, + 0x00000000004a2c00, 0x00000000004b6900, 0x000000000048a600, 0x000000000049e300, + 0x000000000079e000, 0x000000000078a500, 0x00000000007b6a00, 0x00000000007a2f00, + 0x00000000007cf400, 0x00000000007db100, 0x00000000007e7e00, 0x00000000007f3b00, + 0x000000000073c800, 0x0000000000728d00, 0x0000000000714200, 0x0000000000700700, + 0x000000000076dc00, 0x0000000000779900, 0x0000000000745600, 0x0000000000751300, + 0x00000000006db000, 0x00000000006cf500, 0x00000000006f3a00, 0x00000000006e7f00, + 0x000000000068a400, 0x000000000069e100, 0x00000000006a2e00, 0x00000000006b6b00, + 0x0000000000679800, 0x000000000066dd00, 0x0000000000651200, 0x0000000000645700, + 0x0000000000628c00, 0x000000000063c900, 0x0000000000600600, 0x0000000000614300, + 0x0000000000a28000, 0x0000000000a3c500, 0x0000000000a00a00, 0x0000000000a14f00, + 0x0000000000a79400, 0x0000000000a6d100, 0x0000000000a51e00, 0x0000000000a45b00, + 0x0000000000a8a800, 0x0000000000a9ed00, 0x0000000000aa2200, 0x0000000000ab6700, + 0x0000000000adbc00, 0x0000000000acf900, 0x0000000000af3600, 0x0000000000ae7300, + 0x0000000000b6d000, 0x0000000000b79500, 0x0000000000b45a00, 0x0000000000b51f00, + 0x0000000000b3c400, 0x0000000000b28100, 0x0000000000b14e00, 0x0000000000b00b00, + 0x0000000000bcf800, 0x0000000000bdbd00, 0x0000000000be7200, 0x0000000000bf3700, + 0x0000000000b9ec00, 0x0000000000b8a900, 0x0000000000bb6600, 0x0000000000ba2300, + 0x00000000008a2000, 0x00000000008b6500, 0x000000000088aa00, 0x000000000089ef00, + 0x00000000008f3400, 0x00000000008e7100, 0x00000000008dbe00, 0x00000000008cfb00, + 0x0000000000800800, 0x0000000000814d00, 0x0000000000828200, 0x000000000083c700, + 0x0000000000851c00, 0x0000000000845900, 0x0000000000879600, 0x000000000086d300, + 0x00000000009e7000, 0x00000000009f3500, 0x00000000009cfa00, 0x00000000009dbf00, + 0x00000000009b6400, 0x00000000009a2100, 0x000000000099ee00, 0x000000000098ab00, + 0x0000000000945800, 0x0000000000951d00, 0x000000000096d200, 0x0000000000979700, + 0x0000000000914c00, 0x0000000000900900, 0x000000000093c600, 0x0000000000928300, + 0x0000000000f3c000, 0x0000000000f28500, 0x0000000000f14a00, 0x0000000000f00f00, + 0x0000000000f6d400, 0x0000000000f79100, 0x0000000000f45e00, 0x0000000000f51b00, + 0x0000000000f9e800, 0x0000000000f8ad00, 0x0000000000fb6200, 0x0000000000fa2700, + 0x0000000000fcfc00, 0x0000000000fdb900, 0x0000000000fe7600, 0x0000000000ff3300, + 0x0000000000e79000, 0x0000000000e6d500, 0x0000000000e51a00, 0x0000000000e45f00, + 0x0000000000e28400, 0x0000000000e3c100, 0x0000000000e00e00, 0x0000000000e14b00, + 0x0000000000edb800, 0x0000000000ecfd00, 0x0000000000ef3200, 0x0000000000ee7700, + 0x0000000000e8ac00, 0x0000000000e9e900, 0x0000000000ea2600, 0x0000000000eb6300, + 0x0000000000db6000, 0x0000000000da2500, 0x0000000000d9ea00, 0x0000000000d8af00, + 0x0000000000de7400, 0x0000000000df3100, 0x0000000000dcfe00, 0x0000000000ddbb00, + 0x0000000000d14800, 0x0000000000d00d00, 0x0000000000d3c200, 0x0000000000d28700, + 0x0000000000d45c00, 0x0000000000d51900, 0x0000000000d6d600, 0x0000000000d79300, + 0x0000000000cf3000, 0x0000000000ce7500, 0x0000000000cdba00, 0x0000000000ccff00, + 0x0000000000ca2400, 0x0000000000cb6100, 0x0000000000c8ae00, 0x0000000000c9eb00, + 0x0000000000c51800, 0x0000000000c45d00, 0x0000000000c79200, 0x0000000000c6d700, + 0x0000000000c00c00, 0x0000000000c14900, 0x0000000000c28600, 0x0000000000c3c300, + }, + { + 0x0000000000000000, 0x0000000000000145, 0x000000000000028a, 0x00000000000003cf, + 0x0000000000000514, 0x0000000000000451, 0x000000000000079e, 0x00000000000006db, + 0x0000000000000a28, 0x0000000000000b6d, 0x00000000000008a2, 0x00000000000009e7, + 0x0000000000000f3c, 0x0000000000000e79, 0x0000000000000db6, 0x0000000000000cf3, + 0x0000000000001450, 0x0000000000001515, 0x00000000000016da, 0x000000000000179f, + 0x0000000000001144, 0x0000000000001001, 0x00000000000013ce, 0x000000000000128b, + 0x0000000000001e78, 0x0000000000001f3d, 0x0000000000001cf2, 0x0000000000001db7, + 0x0000000000001b6c, 0x0000000000001a29, 0x00000000000019e6, 0x00000000000018a3, + 0x00000000000028a0, 0x00000000000029e5, 0x0000000000002a2a, 0x0000000000002b6f, + 0x0000000000002db4, 0x0000000000002cf1, 0x0000000000002f3e, 0x0000000000002e7b, + 0x0000000000002288, 0x00000000000023cd, 0x0000000000002002, 0x0000000000002147, + 0x000000000000279c, 0x00000000000026d9, 0x0000000000002516, 0x0000000000002453, + 0x0000000000003cf0, 0x0000000000003db5, 0x0000000000003e7a, 0x0000000000003f3f, + 0x00000000000039e4, 0x00000000000038a1, 0x0000000000003b6e, 0x0000000000003a2b, + 0x00000000000036d8, 0x000000000000379d, 0x0000000000003452, 0x0000000000003517, + 0x00000000000033cc, 0x0000000000003289, 0x0000000000003146, 0x0000000000003003, + 0x0000000000005140, 0x0000000000005005, 0x00000000000053ca, 0x000000000000528f, + 0x0000000000005454, 0x0000000000005511, 0x00000000000056de, 0x000000000000579b, + 0x0000000000005b68, 0x0000000000005a2d, 0x00000000000059e2, 0x00000000000058a7, + 0x0000000000005e7c, 0x0000000000005f39, 0x0000000000005cf6, 0x0000000000005db3, + 0x0000000000004510, 0x0000000000004455, 0x000000000000479a, 0x00000000000046df, + 0x0000000000004004, 0x0000000000004141, 0x000000000000428e, 0x00000000000043cb, + 0x0000000000004f38, 0x0000000000004e7d, 0x0000000000004db2, 0x0000000000004cf7, + 0x0000000000004a2c, 0x0000000000004b69, 0x00000000000048a6, 0x00000000000049e3, + 0x00000000000079e0, 0x00000000000078a5, 0x0000000000007b6a, 0x0000000000007a2f, + 0x0000000000007cf4, 0x0000000000007db1, 0x0000000000007e7e, 0x0000000000007f3b, + 0x00000000000073c8, 0x000000000000728d, 0x0000000000007142, 0x0000000000007007, + 0x00000000000076dc, 0x0000000000007799, 0x0000000000007456, 0x0000000000007513, + 0x0000000000006db0, 0x0000000000006cf5, 0x0000000000006f3a, 0x0000000000006e7f, + 0x00000000000068a4, 0x00000000000069e1, 0x0000000000006a2e, 0x0000000000006b6b, + 0x0000000000006798, 0x00000000000066dd, 0x0000000000006512, 0x0000000000006457, + 0x000000000000628c, 0x00000000000063c9, 0x0000000000006006, 0x0000000000006143, + 0x000000000000a280, 0x000000000000a3c5, 0x000000000000a00a, 0x000000000000a14f, + 0x000000000000a794, 0x000000000000a6d1, 0x000000000000a51e, 0x000000000000a45b, + 0x000000000000a8a8, 0x000000000000a9ed, 0x000000000000aa22, 0x000000000000ab67, + 0x000000000000adbc, 0x000000000000acf9, 0x000000000000af36, 0x000000000000ae73, + 0x000000000000b6d0, 0x000000000000b795, 0x000000000000b45a, 0x000000000000b51f, + 0x000000000000b3c4, 0x000000000000b281, 0x000000000000b14e, 0x000000000000b00b, + 0x000000000000bcf8, 0x000000000000bdbd, 0x000000000000be72, 0x000000000000bf37, + 0x000000000000b9ec, 0x000000000000b8a9, 0x000000000000bb66, 0x000000000000ba23, + 0x0000000000008a20, 0x0000000000008b65, 0x00000000000088aa, 0x00000000000089ef, + 0x0000000000008f34, 0x0000000000008e71, 0x0000000000008dbe, 0x0000000000008cfb, + 0x0000000000008008, 0x000000000000814d, 0x0000000000008282, 0x00000000000083c7, + 0x000000000000851c, 0x0000000000008459, 0x0000000000008796, 0x00000000000086d3, + 0x0000000000009e70, 0x0000000000009f35, 0x0000000000009cfa, 0x0000000000009dbf, + 0x0000000000009b64, 0x0000000000009a21, 0x00000000000099ee, 0x00000000000098ab, + 0x0000000000009458, 0x000000000000951d, 0x00000000000096d2, 0x0000000000009797, + 0x000000000000914c, 0x0000000000009009, 0x00000000000093c6, 0x0000000000009283, + 0x000000000000f3c0, 0x000000000000f285, 0x000000000000f14a, 0x000000000000f00f, + 0x000000000000f6d4, 0x000000000000f791, 0x000000000000f45e, 0x000000000000f51b, + 0x000000000000f9e8, 0x000000000000f8ad, 0x000000000000fb62, 0x000000000000fa27, + 0x000000000000fcfc, 0x000000000000fdb9, 0x000000000000fe76, 0x000000000000ff33, + 0x000000000000e790, 0x000000000000e6d5, 0x000000000000e51a, 0x000000000000e45f, + 0x000000000000e284, 0x000000000000e3c1, 0x000000000000e00e, 0x000000000000e14b, + 0x000000000000edb8, 0x000000000000ecfd, 0x000000000000ef32, 0x000000000000ee77, + 0x000000000000e8ac, 0x000000000000e9e9, 0x000000000000ea26, 0x000000000000eb63, + 0x000000000000db60, 0x000000000000da25, 0x000000000000d9ea, 0x000000000000d8af, + 0x000000000000de74, 0x000000000000df31, 0x000000000000dcfe, 0x000000000000ddbb, + 0x000000000000d148, 0x000000000000d00d, 0x000000000000d3c2, 0x000000000000d287, + 0x000000000000d45c, 0x000000000000d519, 0x000000000000d6d6, 0x000000000000d793, + 0x000000000000cf30, 0x000000000000ce75, 0x000000000000cdba, 0x000000000000ccff, + 0x000000000000ca24, 0x000000000000cb61, 0x000000000000c8ae, 0x000000000000c9eb, + 0x000000000000c518, 0x000000000000c45d, 0x000000000000c792, 0x000000000000c6d7, + 0x000000000000c00c, 0x000000000000c149, 0x000000000000c286, 0x000000000000c3c3, + }, + { + 0x0000000000000000, 0x6b70000000000001, 0xd6e0000000000002, 0xbd90000000000003, + 0x1dc0000000000005, 0x76b0000000000004, 0xcb20000000000007, 0xa050000000000006, + 0x3b8000000000000a, 0x50f000000000000b, 0xed60000000000008, 0x8610000000000009, + 0x264000000000000f, 0x4d3000000000000e, 0xf0a000000000000d, 0x9bd000000000000c, + 0x7700000000000014, 0x1c70000000000015, 0xa1e0000000000016, 0xca90000000000017, + 0x6ac0000000000011, 0x01b0000000000010, 0xbc20000000000013, 0xd750000000000012, + 0x4c8000000000001e, 0x27f000000000001f, 0x9a6000000000001c, 0xf11000000000001d, + 0x514000000000001b, 0x3a3000000000001a, 0x87a0000000000019, 0xecd0000000000018, + 0xee00000000000028, 0x8570000000000029, 0x38e000000000002a, 0x539000000000002b, + 0xf3c000000000002d, 0x98b000000000002c, 0x252000000000002f, 0x4e5000000000002e, + 0xd580000000000022, 0xbef0000000000023, 0x0360000000000020, 0x6810000000000021, + 0xc840000000000027, 0xa330000000000026, 0x1ea0000000000025, 0x75d0000000000024, + 0x990000000000003c, 0xf27000000000003d, 0x4fe000000000003e, 0x249000000000003f, + 0x84c0000000000039, 0xefb0000000000038, 0x522000000000003b, 0x395000000000003a, + 0xa280000000000036, 0xc9f0000000000037, 0x7460000000000034, 0x1f10000000000035, + 0xbf40000000000033, 0xd430000000000032, 0x69a0000000000031, 0x02d0000000000030, + 0x6c00000000000051, 0x0770000000000050, 0xbae0000000000053, 0xd190000000000052, + 0x71c0000000000054, 0x1ab0000000000055, 0xa720000000000056, 0xcc50000000000057, + 0x578000000000005b, 0x3cf000000000005a, 0x8160000000000059, 0xea10000000000058, + 0x4a4000000000005e, 0x213000000000005f, 0x9ca000000000005c, 0xf7d000000000005d, + 0x1b00000000000045, 0x7070000000000044, 0xcde0000000000047, 0xa690000000000046, + 0x06c0000000000040, 0x6db0000000000041, 0xd020000000000042, 0xbb50000000000043, + 0x208000000000004f, 0x4bf000000000004e, 0xf66000000000004d, 0x9d1000000000004c, + 0x3d4000000000004a, 0x563000000000004b, 0xeba0000000000048, 0x80d0000000000049, + 0x8200000000000079, 0xe970000000000078, 0x54e000000000007b, 0x3f9000000000007a, + 0x9fc000000000007c, 0xf4b000000000007d, 0x492000000000007e, 0x225000000000007f, + 0xb980000000000073, 0xd2f0000000000072, 0x6f60000000000071, 0x0410000000000070, + 0xa440000000000076, 0xcf30000000000077, 0x72a0000000000074, 0x19d0000000000075, + 0xf50000000000006d, 0x9e7000000000006c, 0x23e000000000006f, 0x489000000000006e, + 0xe8c0000000000068, 0x83b0000000000069, 0x3e2000000000006a, 0x555000000000006b, + 0xce80000000000067, 0xa5f0000000000066, 0x1860000000000065, 0x7310000000000064, + 0xd340000000000062, 0xb830000000000063, 0x05a0000000000060, 0x6ed0000000000061, + 0xd8000000000000a2, 0xb3700000000000a3, 0x0ee00000000000a0, 0x65900000000000a1, + 0xc5c00000000000a7, 0xaeb00000000000a6, 0x13200000000000a5, 0x78500000000000a4, + 0xe3800000000000a8, 0x88f00000000000a9, 0x35600000000000aa, 0x5e100000000000ab, + 0xfe400000000000ad, 0x95300000000000ac, 0x28a00000000000af, 0x43d00000000000ae, + 0xaf000000000000b6, 0xc4700000000000b7, 0x79e00000000000b4, 0x12900000000000b5, + 0xb2c00000000000b3, 0xd9b00000000000b2, 0x64200000000000b1, 0x0f500000000000b0, + 0x94800000000000bc, 0xfff00000000000bd, 0x42600000000000be, 0x29100000000000bf, + 0x89400000000000b9, 0xe2300000000000b8, 0x5fa00000000000bb, 0x34d00000000000ba, + 0x360000000000008a, 0x5d7000000000008b, 0xe0e0000000000088, 0x8b90000000000089, + 0x2bc000000000008f, 0x40b000000000008e, 0xfd2000000000008d, 0x965000000000008c, + 0x0d80000000000080, 0x66f0000000000081, 0xdb60000000000082, 0xb010000000000083, + 0x1040000000000085, 0x7b30000000000084, 0xc6a0000000000087, 0xadd0000000000086, + 0x410000000000009e, 0x2a7000000000009f, 0x97e000000000009c, 0xfc9000000000009d, + 0x5cc000000000009b, 0x37b000000000009a, 0x8a20000000000099, 0xe150000000000098, + 0x7a80000000000094, 0x11f0000000000095, 0xac60000000000096, 0xc710000000000097, + 0x6740000000000091, 0x0c30000000000090, 0xb1a0000000000093, 0xdad0000000000092, + 0xb4000000000000f3, 0xdf700000000000f2, 0x62e00000000000f1, 0x09900000000000f0, + 0xa9c00000000000f6, 0xc2b00000000000f7, 0x7f200000000000f4, 0x14500000000000f5, + 0x8f800000000000f9, 0xe4f00000000000f8, 0x59600000000000fb, 0x32100000000000fa, + 0x92400000000000fc, 0xf9300000000000fd, 0x44a00000000000fe, 0x2fd00000000000ff, + 0xc3000000000000e7, 0xa8700000000000e6, 0x15e00000000000e5, 0x7e900000000000e4, + 0xdec00000000000e2, 0xb5b00000000000e3, 0x08200000000000e0, 0x63500000000000e1, + 0xf8800000000000ed, 0x93f00000000000ec, 0x2e600000000000ef, 0x45100000000000ee, + 0xe5400000000000e8, 0x8e300000000000e9, 0x33a00000000000ea, 0x58d00000000000eb, + 0x5a000000000000db, 0x31700000000000da, 0x8ce00000000000d9, 0xe7900000000000d8, + 0x47c00000000000de, 0x2cb00000000000df, 0x91200000000000dc, 0xfa500000000000dd, + 0x61800000000000d1, 0x0af00000000000d0, 0xb7600000000000d3, 0xdc100000000000d2, + 0x7c400000000000d4, 0x17300000000000d5, 0xaaa00000000000d6, 0xc1d00000000000d7, + 0x2d000000000000cf, 0x46700000000000ce, 0xfbe00000000000cd, 0x90900000000000cc, + 0x30c00000000000ca, 0x5bb00000000000cb, 0xe6200000000000c8, 0x8d500000000000c9, + 0x16800000000000c5, 0x7df00000000000c4, 0xc0600000000000c7, 0xab100000000000c6, + 0x0b400000000000c0, 0x60300000000000c1, 0xdda00000000000c2, 0xb6d00000000000c3, + }, +}; diff --git a/ext/digest/crc64_jones/crc64_jones.c b/ext/digest/crc64_jones/crc64_jones.c index 7f0232c..3a73b6f 100644 --- a/ext/digest/crc64_jones/crc64_jones.c +++ b/ext/digest/crc64_jones/crc64_jones.c @@ -15,86 +15,39 @@ */ #include "crc64_jones.h" - -/** - * Static table used for the table_driven implementation. - */ -static const crc64_t crc64_table[256] = { - 0x0000000000000000, 0x7ad870c830358979, 0xf5b0e190606b12f2, 0x8f689158505e9b8b, - 0xc038e5739841b68f, 0xbae095bba8743ff6, 0x358804e3f82aa47d, 0x4f50742bc81f2d04, - 0xab28ecb46814fe75, 0xd1f09c7c5821770c, 0x5e980d24087fec87, 0x24407dec384a65fe, - 0x6b1009c7f05548fa, 0x11c8790fc060c183, 0x9ea0e857903e5a08, 0xe478989fa00bd371, - 0x7d08ff3b88be6f81, 0x07d08ff3b88be6f8, 0x88b81eabe8d57d73, 0xf2606e63d8e0f40a, - 0xbd301a4810ffd90e, 0xc7e86a8020ca5077, 0x4880fbd87094cbfc, 0x32588b1040a14285, - 0xd620138fe0aa91f4, 0xacf86347d09f188d, 0x2390f21f80c18306, 0x594882d7b0f40a7f, - 0x1618f6fc78eb277b, 0x6cc0863448deae02, 0xe3a8176c18803589, 0x997067a428b5bcf0, - 0xfa11fe77117cdf02, 0x80c98ebf2149567b, 0x0fa11fe77117cdf0, 0x75796f2f41224489, - 0x3a291b04893d698d, 0x40f16bccb908e0f4, 0xcf99fa94e9567b7f, 0xb5418a5cd963f206, - 0x513912c379682177, 0x2be1620b495da80e, 0xa489f35319033385, 0xde51839b2936bafc, - 0x9101f7b0e12997f8, 0xebd98778d11c1e81, 0x64b116208142850a, 0x1e6966e8b1770c73, - 0x8719014c99c2b083, 0xfdc17184a9f739fa, 0x72a9e0dcf9a9a271, 0x08719014c99c2b08, - 0x4721e43f0183060c, 0x3df994f731b68f75, 0xb29105af61e814fe, 0xc849756751dd9d87, - 0x2c31edf8f1d64ef6, 0x56e99d30c1e3c78f, 0xd9810c6891bd5c04, 0xa3597ca0a188d57d, - 0xec09088b6997f879, 0x96d1784359a27100, 0x19b9e91b09fcea8b, 0x636199d339c963f2, - 0xdf7adabd7a6e2d6f, 0xa5a2aa754a5ba416, 0x2aca3b2d1a053f9d, 0x50124be52a30b6e4, - 0x1f423fcee22f9be0, 0x659a4f06d21a1299, 0xeaf2de5e82448912, 0x902aae96b271006b, - 0x74523609127ad31a, 0x0e8a46c1224f5a63, 0x81e2d7997211c1e8, 0xfb3aa75142244891, - 0xb46ad37a8a3b6595, 0xceb2a3b2ba0eecec, 0x41da32eaea507767, 0x3b024222da65fe1e, - 0xa2722586f2d042ee, 0xd8aa554ec2e5cb97, 0x57c2c41692bb501c, 0x2d1ab4dea28ed965, - 0x624ac0f56a91f461, 0x1892b03d5aa47d18, 0x97fa21650afae693, 0xed2251ad3acf6fea, - 0x095ac9329ac4bc9b, 0x7382b9faaaf135e2, 0xfcea28a2faafae69, 0x8632586aca9a2710, - 0xc9622c4102850a14, 0xb3ba5c8932b0836d, 0x3cd2cdd162ee18e6, 0x460abd1952db919f, - 0x256b24ca6b12f26d, 0x5fb354025b277b14, 0xd0dbc55a0b79e09f, 0xaa03b5923b4c69e6, - 0xe553c1b9f35344e2, 0x9f8bb171c366cd9b, 0x10e3202993385610, 0x6a3b50e1a30ddf69, - 0x8e43c87e03060c18, 0xf49bb8b633338561, 0x7bf329ee636d1eea, 0x012b592653589793, - 0x4e7b2d0d9b47ba97, 0x34a35dc5ab7233ee, 0xbbcbcc9dfb2ca865, 0xc113bc55cb19211c, - 0x5863dbf1e3ac9dec, 0x22bbab39d3991495, 0xadd33a6183c78f1e, 0xd70b4aa9b3f20667, - 0x985b3e827bed2b63, 0xe2834e4a4bd8a21a, 0x6debdf121b863991, 0x1733afda2bb3b0e8, - 0xf34b37458bb86399, 0x8993478dbb8deae0, 0x06fbd6d5ebd3716b, 0x7c23a61ddbe6f812, - 0x3373d23613f9d516, 0x49aba2fe23cc5c6f, 0xc6c333a67392c7e4, 0xbc1b436e43a74e9d, - 0x95ac9329ac4bc9b5, 0xef74e3e19c7e40cc, 0x601c72b9cc20db47, 0x1ac40271fc15523e, - 0x5594765a340a7f3a, 0x2f4c0692043ff643, 0xa02497ca54616dc8, 0xdafce7026454e4b1, - 0x3e847f9dc45f37c0, 0x445c0f55f46abeb9, 0xcb349e0da4342532, 0xb1eceec59401ac4b, - 0xfebc9aee5c1e814f, 0x8464ea266c2b0836, 0x0b0c7b7e3c7593bd, 0x71d40bb60c401ac4, - 0xe8a46c1224f5a634, 0x927c1cda14c02f4d, 0x1d148d82449eb4c6, 0x67ccfd4a74ab3dbf, - 0x289c8961bcb410bb, 0x5244f9a98c8199c2, 0xdd2c68f1dcdf0249, 0xa7f41839ecea8b30, - 0x438c80a64ce15841, 0x3954f06e7cd4d138, 0xb63c61362c8a4ab3, 0xcce411fe1cbfc3ca, - 0x83b465d5d4a0eece, 0xf96c151de49567b7, 0x76048445b4cbfc3c, 0x0cdcf48d84fe7545, - 0x6fbd6d5ebd3716b7, 0x15651d968d029fce, 0x9a0d8ccedd5c0445, 0xe0d5fc06ed698d3c, - 0xaf85882d2576a038, 0xd55df8e515432941, 0x5a3569bd451db2ca, 0x20ed197575283bb3, - 0xc49581ead523e8c2, 0xbe4df122e51661bb, 0x3125607ab548fa30, 0x4bfd10b2857d7349, - 0x04ad64994d625e4d, 0x7e7514517d57d734, 0xf11d85092d094cbf, 0x8bc5f5c11d3cc5c6, - 0x12b5926535897936, 0x686de2ad05bcf04f, 0xe70573f555e26bc4, 0x9ddd033d65d7e2bd, - 0xd28d7716adc8cfb9, 0xa85507de9dfd46c0, 0x273d9686cda3dd4b, 0x5de5e64efd965432, - 0xb99d7ed15d9d8743, 0xc3450e196da80e3a, 0x4c2d9f413df695b1, 0x36f5ef890dc31cc8, - 0x79a59ba2c5dc31cc, 0x037deb6af5e9b8b5, 0x8c157a32a5b7233e, 0xf6cd0afa9582aa47, - 0x4ad64994d625e4da, 0x300e395ce6106da3, 0xbf66a804b64ef628, 0xc5bed8cc867b7f51, - 0x8aeeace74e645255, 0xf036dc2f7e51db2c, 0x7f5e4d772e0f40a7, 0x05863dbf1e3ac9de, - 0xe1fea520be311aaf, 0x9b26d5e88e0493d6, 0x144e44b0de5a085d, 0x6e963478ee6f8124, - 0x21c640532670ac20, 0x5b1e309b16452559, 0xd476a1c3461bbed2, 0xaeaed10b762e37ab, - 0x37deb6af5e9b8b5b, 0x4d06c6676eae0222, 0xc26e573f3ef099a9, 0xb8b627f70ec510d0, - 0xf7e653dcc6da3dd4, 0x8d3e2314f6efb4ad, 0x0256b24ca6b12f26, 0x788ec2849684a65f, - 0x9cf65a1b368f752e, 0xe62e2ad306bafc57, 0x6946bb8b56e467dc, 0x139ecb4366d1eea5, - 0x5ccebf68aecec3a1, 0x2616cfa09efb4ad8, 0xa97e5ef8cea5d153, 0xd3a62e30fe90582a, - 0xb0c7b7e3c7593bd8, 0xca1fc72bf76cb2a1, 0x45775673a732292a, 0x3faf26bb9707a053, - 0x70ff52905f188d57, 0x0a2722586f2d042e, 0x854fb3003f739fa5, 0xff97c3c80f4616dc, - 0x1bef5b57af4dc5ad, 0x61372b9f9f784cd4, 0xee5fbac7cf26d75f, 0x9487ca0fff135e26, - 0xdbd7be24370c7322, 0xa10fceec0739fa5b, 0x2e675fb4576761d0, 0x54bf2f7c6752e8a9, - 0xcdcf48d84fe75459, 0xb71738107fd2dd20, 0x387fa9482f8c46ab, 0x42a7d9801fb9cfd2, - 0x0df7adabd7a6e2d6, 0x772fdd63e7936baf, 0xf8474c3bb7cdf024, 0x829f3cf387f8795d, - 0x66e7a46c27f3aa2c, 0x1c3fd4a417c62355, 0x935745fc4798b8de, 0xe98f353477ad31a7, - 0xa6df411fbfb21ca3, 0xdc0731d78f8795da, 0x536fa08fdfd90e51, 0x29b7d047efec8728 -}; +#include "crc64_jones_table.h" crc64_t crc64_jones_update(crc64_t crc, const void *data, size_t data_len) { const unsigned char *d = (const unsigned char *)data; unsigned int tbl_idx; + for (; data_len >= SLICE_SIZE; data_len -= SLICE_SIZE) + { + crc = crc64_jones_table[15][d[ 0] ^ ((crc >> 0) & 0xff)] ^ + crc64_jones_table[14][d[ 1] ^ ((crc >> 8) & 0xff)] ^ + crc64_jones_table[13][d[ 2] ^ ((crc >> 16) & 0xff)] ^ + crc64_jones_table[12][d[ 3] ^ ((crc >> 24) & 0xff)] ^ + crc64_jones_table[11][d[ 4] ^ ((crc >> 32) & 0xff)] ^ + crc64_jones_table[10][d[ 5] ^ ((crc >> 40) & 0xff)] ^ + crc64_jones_table[ 9][d[ 6] ^ ((crc >> 48) & 0xff)] ^ + crc64_jones_table[ 8][d[ 7] ^ ((crc >> 56) & 0xff)] ^ + crc64_jones_table[ 7][d[ 8] ] ^ + crc64_jones_table[ 6][d[ 9] ] ^ + crc64_jones_table[ 5][d[10] ] ^ + crc64_jones_table[ 4][d[11] ] ^ + crc64_jones_table[ 3][d[12] ] ^ + crc64_jones_table[ 2][d[13] ] ^ + crc64_jones_table[ 1][d[14] ] ^ + crc64_jones_table[ 0][d[15] ]; + crc &= 0xffffffffffffffff; + d += SLICE_SIZE; + } + while (data_len--) { tbl_idx = (crc ^ *d) & 0xff; - crc = (crc64_table[tbl_idx] ^ (crc >> 8)) & 0xffffffffffffffff; + crc = (crc64_jones_table[0][tbl_idx] ^ (crc >> 8)) & 0xffffffffffffffff; d++; } diff --git a/ext/digest/crc64_jones/crc64_jones_table.h b/ext/digest/crc64_jones/crc64_jones_table.h new file mode 100644 index 0000000..18e1742 --- /dev/null +++ b/ext/digest/crc64_jones/crc64_jones_table.h @@ -0,0 +1,1070 @@ +/* + * bitwidth: 64 + * generator polynomial: 0xad93d23594c935a9 + * input bit direction: REFLECT + * slice bytes per iteration: 16 + * slide bits per table: 8 + * + * Generated by: gentable.rb of digest-crc + */ + +#define SLICE_SIZE 16 + +static const uint64_t crc64_jones_table[SLICE_SIZE][256] = { + { + 0x0000000000000000, 0x7ad870c830358979, 0xf5b0e190606b12f2, 0x8f689158505e9b8b, + 0xc038e5739841b68f, 0xbae095bba8743ff6, 0x358804e3f82aa47d, 0x4f50742bc81f2d04, + 0xab28ecb46814fe75, 0xd1f09c7c5821770c, 0x5e980d24087fec87, 0x24407dec384a65fe, + 0x6b1009c7f05548fa, 0x11c8790fc060c183, 0x9ea0e857903e5a08, 0xe478989fa00bd371, + 0x7d08ff3b88be6f81, 0x07d08ff3b88be6f8, 0x88b81eabe8d57d73, 0xf2606e63d8e0f40a, + 0xbd301a4810ffd90e, 0xc7e86a8020ca5077, 0x4880fbd87094cbfc, 0x32588b1040a14285, + 0xd620138fe0aa91f4, 0xacf86347d09f188d, 0x2390f21f80c18306, 0x594882d7b0f40a7f, + 0x1618f6fc78eb277b, 0x6cc0863448deae02, 0xe3a8176c18803589, 0x997067a428b5bcf0, + 0xfa11fe77117cdf02, 0x80c98ebf2149567b, 0x0fa11fe77117cdf0, 0x75796f2f41224489, + 0x3a291b04893d698d, 0x40f16bccb908e0f4, 0xcf99fa94e9567b7f, 0xb5418a5cd963f206, + 0x513912c379682177, 0x2be1620b495da80e, 0xa489f35319033385, 0xde51839b2936bafc, + 0x9101f7b0e12997f8, 0xebd98778d11c1e81, 0x64b116208142850a, 0x1e6966e8b1770c73, + 0x8719014c99c2b083, 0xfdc17184a9f739fa, 0x72a9e0dcf9a9a271, 0x08719014c99c2b08, + 0x4721e43f0183060c, 0x3df994f731b68f75, 0xb29105af61e814fe, 0xc849756751dd9d87, + 0x2c31edf8f1d64ef6, 0x56e99d30c1e3c78f, 0xd9810c6891bd5c04, 0xa3597ca0a188d57d, + 0xec09088b6997f879, 0x96d1784359a27100, 0x19b9e91b09fcea8b, 0x636199d339c963f2, + 0xdf7adabd7a6e2d6f, 0xa5a2aa754a5ba416, 0x2aca3b2d1a053f9d, 0x50124be52a30b6e4, + 0x1f423fcee22f9be0, 0x659a4f06d21a1299, 0xeaf2de5e82448912, 0x902aae96b271006b, + 0x74523609127ad31a, 0x0e8a46c1224f5a63, 0x81e2d7997211c1e8, 0xfb3aa75142244891, + 0xb46ad37a8a3b6595, 0xceb2a3b2ba0eecec, 0x41da32eaea507767, 0x3b024222da65fe1e, + 0xa2722586f2d042ee, 0xd8aa554ec2e5cb97, 0x57c2c41692bb501c, 0x2d1ab4dea28ed965, + 0x624ac0f56a91f461, 0x1892b03d5aa47d18, 0x97fa21650afae693, 0xed2251ad3acf6fea, + 0x095ac9329ac4bc9b, 0x7382b9faaaf135e2, 0xfcea28a2faafae69, 0x8632586aca9a2710, + 0xc9622c4102850a14, 0xb3ba5c8932b0836d, 0x3cd2cdd162ee18e6, 0x460abd1952db919f, + 0x256b24ca6b12f26d, 0x5fb354025b277b14, 0xd0dbc55a0b79e09f, 0xaa03b5923b4c69e6, + 0xe553c1b9f35344e2, 0x9f8bb171c366cd9b, 0x10e3202993385610, 0x6a3b50e1a30ddf69, + 0x8e43c87e03060c18, 0xf49bb8b633338561, 0x7bf329ee636d1eea, 0x012b592653589793, + 0x4e7b2d0d9b47ba97, 0x34a35dc5ab7233ee, 0xbbcbcc9dfb2ca865, 0xc113bc55cb19211c, + 0x5863dbf1e3ac9dec, 0x22bbab39d3991495, 0xadd33a6183c78f1e, 0xd70b4aa9b3f20667, + 0x985b3e827bed2b63, 0xe2834e4a4bd8a21a, 0x6debdf121b863991, 0x1733afda2bb3b0e8, + 0xf34b37458bb86399, 0x8993478dbb8deae0, 0x06fbd6d5ebd3716b, 0x7c23a61ddbe6f812, + 0x3373d23613f9d516, 0x49aba2fe23cc5c6f, 0xc6c333a67392c7e4, 0xbc1b436e43a74e9d, + 0x95ac9329ac4bc9b5, 0xef74e3e19c7e40cc, 0x601c72b9cc20db47, 0x1ac40271fc15523e, + 0x5594765a340a7f3a, 0x2f4c0692043ff643, 0xa02497ca54616dc8, 0xdafce7026454e4b1, + 0x3e847f9dc45f37c0, 0x445c0f55f46abeb9, 0xcb349e0da4342532, 0xb1eceec59401ac4b, + 0xfebc9aee5c1e814f, 0x8464ea266c2b0836, 0x0b0c7b7e3c7593bd, 0x71d40bb60c401ac4, + 0xe8a46c1224f5a634, 0x927c1cda14c02f4d, 0x1d148d82449eb4c6, 0x67ccfd4a74ab3dbf, + 0x289c8961bcb410bb, 0x5244f9a98c8199c2, 0xdd2c68f1dcdf0249, 0xa7f41839ecea8b30, + 0x438c80a64ce15841, 0x3954f06e7cd4d138, 0xb63c61362c8a4ab3, 0xcce411fe1cbfc3ca, + 0x83b465d5d4a0eece, 0xf96c151de49567b7, 0x76048445b4cbfc3c, 0x0cdcf48d84fe7545, + 0x6fbd6d5ebd3716b7, 0x15651d968d029fce, 0x9a0d8ccedd5c0445, 0xe0d5fc06ed698d3c, + 0xaf85882d2576a038, 0xd55df8e515432941, 0x5a3569bd451db2ca, 0x20ed197575283bb3, + 0xc49581ead523e8c2, 0xbe4df122e51661bb, 0x3125607ab548fa30, 0x4bfd10b2857d7349, + 0x04ad64994d625e4d, 0x7e7514517d57d734, 0xf11d85092d094cbf, 0x8bc5f5c11d3cc5c6, + 0x12b5926535897936, 0x686de2ad05bcf04f, 0xe70573f555e26bc4, 0x9ddd033d65d7e2bd, + 0xd28d7716adc8cfb9, 0xa85507de9dfd46c0, 0x273d9686cda3dd4b, 0x5de5e64efd965432, + 0xb99d7ed15d9d8743, 0xc3450e196da80e3a, 0x4c2d9f413df695b1, 0x36f5ef890dc31cc8, + 0x79a59ba2c5dc31cc, 0x037deb6af5e9b8b5, 0x8c157a32a5b7233e, 0xf6cd0afa9582aa47, + 0x4ad64994d625e4da, 0x300e395ce6106da3, 0xbf66a804b64ef628, 0xc5bed8cc867b7f51, + 0x8aeeace74e645255, 0xf036dc2f7e51db2c, 0x7f5e4d772e0f40a7, 0x05863dbf1e3ac9de, + 0xe1fea520be311aaf, 0x9b26d5e88e0493d6, 0x144e44b0de5a085d, 0x6e963478ee6f8124, + 0x21c640532670ac20, 0x5b1e309b16452559, 0xd476a1c3461bbed2, 0xaeaed10b762e37ab, + 0x37deb6af5e9b8b5b, 0x4d06c6676eae0222, 0xc26e573f3ef099a9, 0xb8b627f70ec510d0, + 0xf7e653dcc6da3dd4, 0x8d3e2314f6efb4ad, 0x0256b24ca6b12f26, 0x788ec2849684a65f, + 0x9cf65a1b368f752e, 0xe62e2ad306bafc57, 0x6946bb8b56e467dc, 0x139ecb4366d1eea5, + 0x5ccebf68aecec3a1, 0x2616cfa09efb4ad8, 0xa97e5ef8cea5d153, 0xd3a62e30fe90582a, + 0xb0c7b7e3c7593bd8, 0xca1fc72bf76cb2a1, 0x45775673a732292a, 0x3faf26bb9707a053, + 0x70ff52905f188d57, 0x0a2722586f2d042e, 0x854fb3003f739fa5, 0xff97c3c80f4616dc, + 0x1bef5b57af4dc5ad, 0x61372b9f9f784cd4, 0xee5fbac7cf26d75f, 0x9487ca0fff135e26, + 0xdbd7be24370c7322, 0xa10fceec0739fa5b, 0x2e675fb4576761d0, 0x54bf2f7c6752e8a9, + 0xcdcf48d84fe75459, 0xb71738107fd2dd20, 0x387fa9482f8c46ab, 0x42a7d9801fb9cfd2, + 0x0df7adabd7a6e2d6, 0x772fdd63e7936baf, 0xf8474c3bb7cdf024, 0x829f3cf387f8795d, + 0x66e7a46c27f3aa2c, 0x1c3fd4a417c62355, 0x935745fc4798b8de, 0xe98f353477ad31a7, + 0xa6df411fbfb21ca3, 0xdc0731d78f8795da, 0x536fa08fdfd90e51, 0x29b7d047efec8728, + }, + { + 0x0000000000000000, 0x89e99ffd73bddf69, 0x388a19a9bfec2db9, 0xb1638654cc51f2d0, + 0x711433537fd85b72, 0xf8fdacae0c65841b, 0x499e2afac03476cb, 0xc077b507b389a9a2, + 0xe22866a6ffb0b6e4, 0x6bc1f95b8c0d698d, 0xdaa27f0f405c9b5d, 0x534be0f233e14434, + 0x933c55f58068ed96, 0x1ad5ca08f3d532ff, 0xabb64c5c3f84c02f, 0x225fd3a14c391f46, + 0xef09eb1ea7f6fea3, 0x66e074e3d44b21ca, 0xd783f2b7181ad31a, 0x5e6a6d4a6ba70c73, + 0x9e1dd84dd82ea5d1, 0x17f447b0ab937ab8, 0xa697c1e467c28868, 0x2f7e5e19147f5701, + 0x0d218db858464847, 0x84c812452bfb972e, 0x35ab9411e7aa65fe, 0xbc420bec9417ba97, + 0x7c35beeb279e1335, 0xf5dc21165423cc5c, 0x44bfa74298723e8c, 0xcd5638bfebcfe1e5, + 0xf54af06e177a6e2d, 0x7ca36f9364c7b144, 0xcdc0e9c7a8964394, 0x4429763adb2b9cfd, + 0x845ec33d68a2355f, 0x0db75cc01b1fea36, 0xbcd4da94d74e18e6, 0x353d4569a4f3c78f, + 0x176296c8e8cad8c9, 0x9e8b09359b7707a0, 0x2fe88f615726f570, 0xa601109c249b2a19, + 0x6676a59b971283bb, 0xef9f3a66e4af5cd2, 0x5efcbc3228feae02, 0xd71523cf5b43716b, + 0x1a431b70b08c908e, 0x93aa848dc3314fe7, 0x22c902d90f60bd37, 0xab209d247cdd625e, + 0x6b572823cf54cbfc, 0xe2beb7debce91495, 0x53dd318a70b8e645, 0xda34ae770305392c, + 0xf86b7dd64f3c266a, 0x7182e22b3c81f903, 0xc0e1647ff0d00bd3, 0x4908fb82836dd4ba, + 0x897f4e8530e47d18, 0x0096d1784359a271, 0xb1f5572c8f0850a1, 0x381cc8d1fcb58fc8, + 0xc1ccc68f76634f31, 0x4825597205de9058, 0xf946df26c98f6288, 0x70af40dbba32bde1, + 0xb0d8f5dc09bb1443, 0x39316a217a06cb2a, 0x8852ec75b65739fa, 0x01bb7388c5eae693, + 0x23e4a02989d3f9d5, 0xaa0d3fd4fa6e26bc, 0x1b6eb980363fd46c, 0x9287267d45820b05, + 0x52f0937af60ba2a7, 0xdb190c8785b67dce, 0x6a7a8ad349e78f1e, 0xe393152e3a5a5077, + 0x2ec52d91d195b192, 0xa72cb26ca2286efb, 0x164f34386e799c2b, 0x9fa6abc51dc44342, + 0x5fd11ec2ae4deae0, 0xd638813fddf03589, 0x675b076b11a1c759, 0xeeb29896621c1830, + 0xcced4b372e250776, 0x4504d4ca5d98d81f, 0xf467529e91c92acf, 0x7d8ecd63e274f5a6, + 0xbdf9786451fd5c04, 0x3410e7992240836d, 0x857361cdee1171bd, 0x0c9afe309dacaed4, + 0x348636e16119211c, 0xbd6fa91c12a4fe75, 0x0c0c2f48def50ca5, 0x85e5b0b5ad48d3cc, + 0x459205b21ec17a6e, 0xcc7b9a4f6d7ca507, 0x7d181c1ba12d57d7, 0xf4f183e6d29088be, + 0xd6ae50479ea997f8, 0x5f47cfbaed144891, 0xee2449ee2145ba41, 0x67cdd61352f86528, + 0xa7ba6314e171cc8a, 0x2e53fce992cc13e3, 0x9f307abd5e9de133, 0x16d9e5402d203e5a, + 0xdb8fddffc6efdfbf, 0x52664202b55200d6, 0xe305c4567903f206, 0x6aec5bab0abe2d6f, + 0xaa9beeacb93784cd, 0x23727151ca8a5ba4, 0x9211f70506dba974, 0x1bf868f87566761d, + 0x39a7bb59395f695b, 0xb04e24a44ae2b632, 0x012da2f086b344e2, 0x88c43d0df50e9b8b, + 0x48b3880a46873229, 0xc15a17f7353aed40, 0x703991a3f96b1f90, 0xf9d00e5e8ad6c0f9, + 0xa8c0ab4db4510d09, 0x212934b0c7ecd260, 0x904ab2e40bbd20b0, 0x19a32d197800ffd9, + 0xd9d4981ecb89567b, 0x503d07e3b8348912, 0xe15e81b774657bc2, 0x68b71e4a07d8a4ab, + 0x4ae8cdeb4be1bbed, 0xc3015216385c6484, 0x7262d442f40d9654, 0xfb8b4bbf87b0493d, + 0x3bfcfeb83439e09f, 0xb215614547843ff6, 0x0376e7118bd5cd26, 0x8a9f78ecf868124f, + 0x47c9405313a7f3aa, 0xce20dfae601a2cc3, 0x7f4359faac4bde13, 0xf6aac607dff6017a, + 0x36dd73006c7fa8d8, 0xbf34ecfd1fc277b1, 0x0e576aa9d3938561, 0x87bef554a02e5a08, + 0xa5e126f5ec17454e, 0x2c08b9089faa9a27, 0x9d6b3f5c53fb68f7, 0x1482a0a12046b79e, + 0xd4f515a693cf1e3c, 0x5d1c8a5be072c155, 0xec7f0c0f2c233385, 0x659693f25f9eecec, + 0x5d8a5b23a32b6324, 0xd463c4ded096bc4d, 0x6500428a1cc74e9d, 0xece9dd776f7a91f4, + 0x2c9e6870dcf33856, 0xa577f78daf4ee73f, 0x141471d9631f15ef, 0x9dfdee2410a2ca86, + 0xbfa23d855c9bd5c0, 0x364ba2782f260aa9, 0x8728242ce377f879, 0x0ec1bbd190ca2710, + 0xceb60ed623438eb2, 0x475f912b50fe51db, 0xf63c177f9cafa30b, 0x7fd58882ef127c62, + 0xb283b03d04dd9d87, 0x3b6a2fc0776042ee, 0x8a09a994bb31b03e, 0x03e03669c88c6f57, + 0xc397836e7b05c6f5, 0x4a7e1c9308b8199c, 0xfb1d9ac7c4e9eb4c, 0x72f4053ab7543425, + 0x50abd69bfb6d2b63, 0xd942496688d0f40a, 0x6821cf32448106da, 0xe1c850cf373cd9b3, + 0x21bfe5c884b57011, 0xa8567a35f708af78, 0x1935fc613b595da8, 0x90dc639c48e482c1, + 0x690c6dc2c2324238, 0xe0e5f23fb18f9d51, 0x5186746b7dde6f81, 0xd86feb960e63b0e8, + 0x18185e91bdea194a, 0x91f1c16cce57c623, 0x20924738020634f3, 0xa97bd8c571bbeb9a, + 0x8b240b643d82f4dc, 0x02cd94994e3f2bb5, 0xb3ae12cd826ed965, 0x3a478d30f1d3060c, + 0xfa303837425aafae, 0x73d9a7ca31e770c7, 0xc2ba219efdb68217, 0x4b53be638e0b5d7e, + 0x860586dc65c4bc9b, 0x0fec1921167963f2, 0xbe8f9f75da289122, 0x37660088a9954e4b, + 0xf711b58f1a1ce7e9, 0x7ef82a7269a13880, 0xcf9bac26a5f0ca50, 0x467233dbd64d1539, + 0x642de07a9a740a7f, 0xedc47f87e9c9d516, 0x5ca7f9d3259827c6, 0xd54e662e5625f8af, + 0x1539d329e5ac510d, 0x9cd04cd496118e64, 0x2db3ca805a407cb4, 0xa45a557d29fda3dd, + 0x9c469dacd5482c15, 0x15af0251a6f5f37c, 0xa4cc84056aa401ac, 0x2d251bf81919dec5, + 0xed52aeffaa907767, 0x64bb3102d92da80e, 0xd5d8b756157c5ade, 0x5c3128ab66c185b7, + 0x7e6efb0a2af89af1, 0xf78764f759454598, 0x46e4e2a39514b748, 0xcf0d7d5ee6a96821, + 0x0f7ac8595520c183, 0x869357a4269d1eea, 0x37f0d1f0eaccec3a, 0xbe194e0d99713353, + 0x734f76b272bed2b6, 0xfaa6e94f01030ddf, 0x4bc56f1bcd52ff0f, 0xc22cf0e6beef2066, + 0x025b45e10d6689c4, 0x8bb2da1c7edb56ad, 0x3ad15c48b28aa47d, 0xb338c3b5c1377b14, + 0x916710148d0e6452, 0x188e8fe9feb3bb3b, 0xa9ed09bd32e249eb, 0x20049640415f9682, + 0xe0732347f2d63f20, 0x699abcba816be049, 0xd8f93aee4d3a1299, 0x5110a5133e87cdf0, + }, + { + 0x0000000000000000, 0xf4125129ce4038be, 0xc37d8400c417e217, 0x376fd5290a57daa9, + 0xada22e52d0b85745, 0x59b07f7b1ef86ffb, 0x6edfaa5214afb552, 0x9acdfb7bdaef8dec, + 0x701d7af6f9e73de1, 0x840f2bdf37a7055f, 0xb360fef63df0dff6, 0x4772afdff3b0e748, + 0xddbf54a4295f6aa4, 0x29ad058de71f521a, 0x1ec2d0a4ed4888b3, 0xead0818d2308b00d, + 0xe03af5edf3ce7bc2, 0x1428a4c43d8e437c, 0x234771ed37d999d5, 0xd75520c4f999a16b, + 0x4d98dbbf23762c87, 0xb98a8a96ed361439, 0x8ee55fbfe761ce90, 0x7af70e962921f62e, + 0x90278f1b0a294623, 0x6435de32c4697e9d, 0x535a0b1bce3ea434, 0xa7485a32007e9c8a, + 0x3d85a149da911166, 0xc997f06014d129d8, 0xfef825491e86f371, 0x0aea7460d0c6cbcf, + 0xeb2ccd88bf0b64ef, 0x1f3e9ca1714b5c51, 0x285149887b1c86f8, 0xdc4318a1b55cbe46, + 0x468ee3da6fb333aa, 0xb29cb2f3a1f30b14, 0x85f367daaba4d1bd, 0x71e136f365e4e903, + 0x9b31b77e46ec590e, 0x6f23e65788ac61b0, 0x584c337e82fbbb19, 0xac5e62574cbb83a7, + 0x3693992c96540e4b, 0xc281c805581436f5, 0xf5ee1d2c5243ec5c, 0x01fc4c059c03d4e2, + 0x0b1638654cc51f2d, 0xff04694c82852793, 0xc86bbc6588d2fd3a, 0x3c79ed4c4692c584, + 0xa6b416379c7d4868, 0x52a6471e523d70d6, 0x65c99237586aaa7f, 0x91dbc31e962a92c1, + 0x7b0b4293b52222cc, 0x8f1913ba7b621a72, 0xb876c6937135c0db, 0x4c6497babf75f865, + 0xd6a96cc1659a7589, 0x22bb3de8abda4d37, 0x15d4e8c1a18d979e, 0xe1c6b9e86fcdaf20, + 0xfd00bd4226815ab5, 0x0912ec6be8c1620b, 0x3e7d3942e296b8a2, 0xca6f686b2cd6801c, + 0x50a29310f6390df0, 0xa4b0c2393879354e, 0x93df1710322eefe7, 0x67cd4639fc6ed759, + 0x8d1dc7b4df666754, 0x790f969d11265fea, 0x4e6043b41b718543, 0xba72129dd531bdfd, + 0x20bfe9e60fde3011, 0xd4adb8cfc19e08af, 0xe3c26de6cbc9d206, 0x17d03ccf0589eab8, + 0x1d3a48afd54f2177, 0xe92819861b0f19c9, 0xde47ccaf1158c360, 0x2a559d86df18fbde, + 0xb09866fd05f77632, 0x448a37d4cbb74e8c, 0x73e5e2fdc1e09425, 0x87f7b3d40fa0ac9b, + 0x6d2732592ca81c96, 0x99356370e2e82428, 0xae5ab659e8bffe81, 0x5a48e77026ffc63f, + 0xc0851c0bfc104bd3, 0x34974d223250736d, 0x03f8980b3807a9c4, 0xf7eac922f647917a, + 0x162c70ca998a3e5a, 0xe23e21e357ca06e4, 0xd551f4ca5d9ddc4d, 0x2143a5e393dde4f3, + 0xbb8e5e984932691f, 0x4f9c0fb1877251a1, 0x78f3da988d258b08, 0x8ce18bb14365b3b6, + 0x66310a3c606d03bb, 0x92235b15ae2d3b05, 0xa54c8e3ca47ae1ac, 0x515edf156a3ad912, + 0xcb93246eb0d554fe, 0x3f8175477e956c40, 0x08eea06e74c2b6e9, 0xfcfcf147ba828e57, + 0xf61685276a444598, 0x0204d40ea4047d26, 0x356b0127ae53a78f, 0xc179500e60139f31, + 0x5bb4ab75bafc12dd, 0xafa6fa5c74bc2a63, 0x98c92f757eebf0ca, 0x6cdb7e5cb0abc874, + 0x860bffd193a37879, 0x7219aef85de340c7, 0x45767bd157b49a6e, 0xb1642af899f4a2d0, + 0x2ba9d183431b2f3c, 0xdfbb80aa8d5b1782, 0xe8d45583870ccd2b, 0x1cc604aa494cf595, + 0xd1585cd715952601, 0x254a0dfedbd51ebf, 0x1225d8d7d182c416, 0xe63789fe1fc2fca8, + 0x7cfa7285c52d7144, 0x88e823ac0b6d49fa, 0xbf87f685013a9353, 0x4b95a7accf7aabed, + 0xa1452621ec721be0, 0x555777082232235e, 0x6238a2212865f9f7, 0x962af308e625c149, + 0x0ce708733cca4ca5, 0xf8f5595af28a741b, 0xcf9a8c73f8ddaeb2, 0x3b88dd5a369d960c, + 0x3162a93ae65b5dc3, 0xc570f813281b657d, 0xf21f2d3a224cbfd4, 0x060d7c13ec0c876a, + 0x9cc0876836e30a86, 0x68d2d641f8a33238, 0x5fbd0368f2f4e891, 0xabaf52413cb4d02f, + 0x417fd3cc1fbc6022, 0xb56d82e5d1fc589c, 0x820257ccdbab8235, 0x761006e515ebba8b, + 0xecddfd9ecf043767, 0x18cfacb701440fd9, 0x2fa0799e0b13d570, 0xdbb228b7c553edce, + 0x3a74915faa9e42ee, 0xce66c07664de7a50, 0xf909155f6e89a0f9, 0x0d1b4476a0c99847, + 0x97d6bf0d7a2615ab, 0x63c4ee24b4662d15, 0x54ab3b0dbe31f7bc, 0xa0b96a247071cf02, + 0x4a69eba953797f0f, 0xbe7bba809d3947b1, 0x89146fa9976e9d18, 0x7d063e80592ea5a6, + 0xe7cbc5fb83c1284a, 0x13d994d24d8110f4, 0x24b641fb47d6ca5d, 0xd0a410d28996f2e3, + 0xda4e64b25950392c, 0x2e5c359b97100192, 0x1933e0b29d47db3b, 0xed21b19b5307e385, + 0x77ec4ae089e86e69, 0x83fe1bc947a856d7, 0xb491cee04dff8c7e, 0x40839fc983bfb4c0, + 0xaa531e44a0b704cd, 0x5e414f6d6ef73c73, 0x692e9a4464a0e6da, 0x9d3ccb6daae0de64, + 0x07f13016700f5388, 0xf3e3613fbe4f6b36, 0xc48cb416b418b19f, 0x309ee53f7a588921, + 0x2c58e19533147cb4, 0xd84ab0bcfd54440a, 0xef256595f7039ea3, 0x1b3734bc3943a61d, + 0x81facfc7e3ac2bf1, 0x75e89eee2dec134f, 0x42874bc727bbc9e6, 0xb6951aeee9fbf158, + 0x5c459b63caf34155, 0xa857ca4a04b379eb, 0x9f381f630ee4a342, 0x6b2a4e4ac0a49bfc, + 0xf1e7b5311a4b1610, 0x05f5e418d40b2eae, 0x329a3131de5cf407, 0xc6886018101cccb9, + 0xcc621478c0da0776, 0x387045510e9a3fc8, 0x0f1f907804cde561, 0xfb0dc151ca8ddddf, + 0x61c03a2a10625033, 0x95d26b03de22688d, 0xa2bdbe2ad475b224, 0x56afef031a358a9a, + 0xbc7f6e8e393d3a97, 0x486d3fa7f77d0229, 0x7f02ea8efd2ad880, 0x8b10bba7336ae03e, + 0x11dd40dce9856dd2, 0xe5cf11f527c5556c, 0xd2a0c4dc2d928fc5, 0x26b295f5e3d2b77b, + 0xc7742c1d8c1f185b, 0x33667d34425f20e5, 0x0409a81d4808fa4c, 0xf01bf9348648c2f2, + 0x6ad6024f5ca74f1e, 0x9ec4536692e777a0, 0xa9ab864f98b0ad09, 0x5db9d76656f095b7, + 0xb76956eb75f825ba, 0x437b07c2bbb81d04, 0x7414d2ebb1efc7ad, 0x800683c27fafff13, + 0x1acb78b9a54072ff, 0xeed929906b004a41, 0xd9b6fcb9615790e8, 0x2da4ad90af17a856, + 0x274ed9f07fd16399, 0xd35c88d9b1915b27, 0xe4335df0bbc6818e, 0x10210cd97586b930, + 0x8aecf7a2af6934dc, 0x7efea68b61290c62, 0x499173a26b7ed6cb, 0xbd83228ba53eee75, + 0x5753a30686365e78, 0xa341f22f487666c6, 0x942e27064221bc6f, 0x603c762f8c6184d1, + 0xfaf18d54568e093d, 0x0ee3dc7d98ce3183, 0x398c09549299eb2a, 0xcd9e587d5cd9d394, + }, + { + 0x0000000000000000, 0x8ce168638c796306, 0x329bf69440655567, 0xbe7a9ef7cc1c3661, + 0x6537ed2880caaace, 0xe9d6854b0cb3c9c8, 0x57ac1bbcc0afffa9, 0xdb4d73df4cd69caf, + 0xca6fda510195559c, 0x468eb2328dec369a, 0xf8f42cc541f000fb, 0x741544a6cd8963fd, + 0xaf583779815fff52, 0x23b95f1a0d269c54, 0x9dc3c1edc13aaa35, 0x1122a98e4d43c933, + 0xbf8692f15bbd3853, 0x3367fa92d7c45b55, 0x8d1d64651bd86d34, 0x01fc0c0697a10e32, + 0xdab17fd9db77929d, 0x565017ba570ef19b, 0xe82a894d9b12c7fa, 0x64cbe12e176ba4fc, + 0x75e948a05a286dcf, 0xf90820c3d6510ec9, 0x4772be341a4d38a8, 0xcb93d65796345bae, + 0x10dea588dae2c701, 0x9c3fcdeb569ba407, 0x2245531c9a879266, 0xaea43b7f16fef160, + 0x545403b1efede3cd, 0xd8b56bd2639480cb, 0x66cff525af88b6aa, 0xea2e9d4623f1d5ac, + 0x3163ee996f274903, 0xbd8286fae35e2a05, 0x03f8180d2f421c64, 0x8f19706ea33b7f62, + 0x9e3bd9e0ee78b651, 0x12dab1836201d557, 0xaca02f74ae1de336, 0x2041471722648030, + 0xfb0c34c86eb21c9f, 0x77ed5cabe2cb7f99, 0xc997c25c2ed749f8, 0x4576aa3fa2ae2afe, + 0xebd29140b450db9e, 0x6733f9233829b898, 0xd94967d4f4358ef9, 0x55a80fb7784cedff, + 0x8ee57c68349a7150, 0x0204140bb8e31256, 0xbc7e8afc74ff2437, 0x309fe29ff8864731, + 0x21bd4b11b5c58e02, 0xad5c237239bced04, 0x1326bd85f5a0db65, 0x9fc7d5e679d9b863, + 0x448aa639350f24cc, 0xc86bce5ab97647ca, 0x761150ad756a71ab, 0xfaf038cef91312ad, + 0xa8a80763dfdbc79a, 0x24496f0053a2a49c, 0x9a33f1f79fbe92fd, 0x16d2999413c7f1fb, + 0xcd9fea4b5f116d54, 0x417e8228d3680e52, 0xff041cdf1f743833, 0x73e574bc930d5b35, + 0x62c7dd32de4e9206, 0xee26b5515237f100, 0x505c2ba69e2bc761, 0xdcbd43c51252a467, + 0x07f0301a5e8438c8, 0x8b115879d2fd5bce, 0x356bc68e1ee16daf, 0xb98aaeed92980ea9, + 0x172e95928466ffc9, 0x9bcffdf1081f9ccf, 0x25b56306c403aaae, 0xa9540b65487ac9a8, + 0x721978ba04ac5507, 0xfef810d988d53601, 0x40828e2e44c90060, 0xcc63e64dc8b06366, + 0xdd414fc385f3aa55, 0x51a027a0098ac953, 0xefdab957c596ff32, 0x633bd13449ef9c34, + 0xb876a2eb0539009b, 0x3497ca888940639d, 0x8aed547f455c55fc, 0x060c3c1cc92536fa, + 0xfcfc04d230362457, 0x701d6cb1bc4f4751, 0xce67f24670537130, 0x42869a25fc2a1236, + 0x99cbe9fab0fc8e99, 0x152a81993c85ed9f, 0xab501f6ef099dbfe, 0x27b1770d7ce0b8f8, + 0x3693de8331a371cb, 0xba72b6e0bdda12cd, 0x0408281771c624ac, 0x88e94074fdbf47aa, + 0x53a433abb169db05, 0xdf455bc83d10b803, 0x613fc53ff10c8e62, 0xeddead5c7d75ed64, + 0x437a96236b8b1c04, 0xcf9bfe40e7f27f02, 0x71e160b72bee4963, 0xfd0008d4a7972a65, + 0x264d7b0beb41b6ca, 0xaaac13686738d5cc, 0x14d68d9fab24e3ad, 0x9837e5fc275d80ab, + 0x89154c726a1e4998, 0x05f42411e6672a9e, 0xbb8ebae62a7b1cff, 0x376fd285a6027ff9, + 0xec22a15aead4e356, 0x60c3c93966ad8050, 0xdeb957ceaab1b631, 0x52583fad26c8d537, + 0x7a092894e7201c5f, 0xf6e840f76b597f59, 0x4892de00a7454938, 0xc473b6632b3c2a3e, + 0x1f3ec5bc67eab691, 0x93dfaddfeb93d597, 0x2da53328278fe3f6, 0xa1445b4babf680f0, + 0xb066f2c5e6b549c3, 0x3c879aa66acc2ac5, 0x82fd0451a6d01ca4, 0x0e1c6c322aa97fa2, + 0xd5511fed667fe30d, 0x59b0778eea06800b, 0xe7cae979261ab66a, 0x6b2b811aaa63d56c, + 0xc58fba65bc9d240c, 0x496ed20630e4470a, 0xf7144cf1fcf8716b, 0x7bf524927081126d, + 0xa0b8574d3c578ec2, 0x2c593f2eb02eedc4, 0x9223a1d97c32dba5, 0x1ec2c9baf04bb8a3, + 0x0fe06034bd087190, 0x8301085731711296, 0x3d7b96a0fd6d24f7, 0xb19afec3711447f1, + 0x6ad78d1c3dc2db5e, 0xe636e57fb1bbb858, 0x584c7b887da78e39, 0xd4ad13ebf1deed3f, + 0x2e5d2b2508cdff92, 0xa2bc434684b49c94, 0x1cc6ddb148a8aaf5, 0x9027b5d2c4d1c9f3, + 0x4b6ac60d8807555c, 0xc78bae6e047e365a, 0x79f13099c862003b, 0xf51058fa441b633d, + 0xe432f1740958aa0e, 0x68d399178521c908, 0xd6a907e0493dff69, 0x5a486f83c5449c6f, + 0x81051c5c899200c0, 0x0de4743f05eb63c6, 0xb39eeac8c9f755a7, 0x3f7f82ab458e36a1, + 0x91dbb9d45370c7c1, 0x1d3ad1b7df09a4c7, 0xa3404f40131592a6, 0x2fa127239f6cf1a0, + 0xf4ec54fcd3ba6d0f, 0x780d3c9f5fc30e09, 0xc677a26893df3868, 0x4a96ca0b1fa65b6e, + 0x5bb4638552e5925d, 0xd7550be6de9cf15b, 0x692f95111280c73a, 0xe5cefd729ef9a43c, + 0x3e838eadd22f3893, 0xb262e6ce5e565b95, 0x0c187839924a6df4, 0x80f9105a1e330ef2, + 0xd2a12ff738fbdbc5, 0x5e404794b482b8c3, 0xe03ad963789e8ea2, 0x6cdbb100f4e7eda4, + 0xb796c2dfb831710b, 0x3b77aabc3448120d, 0x850d344bf854246c, 0x09ec5c28742d476a, + 0x18cef5a6396e8e59, 0x942f9dc5b517ed5f, 0x2a550332790bdb3e, 0xa6b46b51f572b838, + 0x7df9188eb9a42497, 0xf11870ed35dd4791, 0x4f62ee1af9c171f0, 0xc383867975b812f6, + 0x6d27bd066346e396, 0xe1c6d565ef3f8090, 0x5fbc4b922323b6f1, 0xd35d23f1af5ad5f7, + 0x0810502ee38c4958, 0x84f1384d6ff52a5e, 0x3a8ba6baa3e91c3f, 0xb66aced92f907f39, + 0xa748675762d3b60a, 0x2ba90f34eeaad50c, 0x95d391c322b6e36d, 0x1932f9a0aecf806b, + 0xc27f8a7fe2191cc4, 0x4e9ee21c6e607fc2, 0xf0e47ceba27c49a3, 0x7c0514882e052aa5, + 0x86f52c46d7163808, 0x0a1444255b6f5b0e, 0xb46edad297736d6f, 0x388fb2b11b0a0e69, + 0xe3c2c16e57dc92c6, 0x6f23a90ddba5f1c0, 0xd15937fa17b9c7a1, 0x5db85f999bc0a4a7, + 0x4c9af617d6836d94, 0xc07b9e745afa0e92, 0x7e01008396e638f3, 0xf2e068e01a9f5bf5, + 0x29ad1b3f5649c75a, 0xa54c735cda30a45c, 0x1b36edab162c923d, 0x97d785c89a55f13b, + 0x3973beb78cab005b, 0xb592d6d400d2635d, 0x0be84823ccce553c, 0x8709204040b7363a, + 0x5c44539f0c61aa95, 0xd0a53bfc8018c993, 0x6edfa50b4c04fff2, 0xe23ecd68c07d9cf4, + 0xf31c64e68d3e55c7, 0x7ffd0c85014736c1, 0xc1879272cd5b00a0, 0x4d66fa11412263a6, + 0x962b89ce0df4ff09, 0x1acae1ad818d9c0f, 0xa4b07f5a4d91aa6e, 0x28511739c1e8c968, + }, + { + 0x0000000000000000, 0x3504e58b9ba6dd1e, 0x6a09cb17374dba3c, 0x5f0d2e9caceb6722, + 0xd413962e6e9b7478, 0xe11773a5f53da966, 0xbe1a5d3959d6ce44, 0x8b1eb8b2c270135a, + 0x837e0a0f85a17b9b, 0xb67aef841e07a685, 0xe977c118b2ecc1a7, 0xdc732493294a1cb9, + 0x576d9c21eb3a0fe3, 0x626979aa709cd2fd, 0x3d645736dc77b5df, 0x0860b2bd47d168c1, + 0x2da5324c53d5645d, 0x18a1d7c7c873b943, 0x47acf95b6498de61, 0x72a81cd0ff3e037f, + 0xf9b6a4623d4e1025, 0xccb241e9a6e8cd3b, 0x93bf6f750a03aa19, 0xa6bb8afe91a57707, + 0xaedb3843d6741fc6, 0x9bdfddc84dd2c2d8, 0xc4d2f354e139a5fa, 0xf1d616df7a9f78e4, + 0x7ac8ae6db8ef6bbe, 0x4fcc4be62349b6a0, 0x10c1657a8fa2d182, 0x25c580f114040c9c, + 0x5b4a6498a7aac8ba, 0x6e4e81133c0c15a4, 0x3143af8f90e77286, 0x04474a040b41af98, + 0x8f59f2b6c931bcc2, 0xba5d173d529761dc, 0xe55039a1fe7c06fe, 0xd054dc2a65dadbe0, + 0xd8346e97220bb321, 0xed308b1cb9ad6e3f, 0xb23da5801546091d, 0x8739400b8ee0d403, + 0x0c27f8b94c90c759, 0x39231d32d7361a47, 0x662e33ae7bdd7d65, 0x532ad625e07ba07b, + 0x76ef56d4f47face7, 0x43ebb35f6fd971f9, 0x1ce69dc3c33216db, 0x29e278485894cbc5, + 0xa2fcc0fa9ae4d89f, 0x97f8257101420581, 0xc8f50bedada962a3, 0xfdf1ee66360fbfbd, + 0xf5915cdb71ded77c, 0xc095b950ea780a62, 0x9f9897cc46936d40, 0xaa9c7247dd35b05e, + 0x2182caf51f45a304, 0x14862f7e84e37e1a, 0x4b8b01e228081938, 0x7e8fe469b3aec426, + 0xb694c9314f559174, 0x83902cbad4f34c6a, 0xdc9d022678182b48, 0xe999e7ade3bef656, + 0x62875f1f21cee50c, 0x5783ba94ba683812, 0x088e940816835f30, 0x3d8a71838d25822e, + 0x35eac33ecaf4eaef, 0x00ee26b5515237f1, 0x5fe30829fdb950d3, 0x6ae7eda2661f8dcd, + 0xe1f95510a46f9e97, 0xd4fdb09b3fc94389, 0x8bf09e07932224ab, 0xbef47b8c0884f9b5, + 0x9b31fb7d1c80f529, 0xae351ef687262837, 0xf138306a2bcd4f15, 0xc43cd5e1b06b920b, + 0x4f226d53721b8151, 0x7a2688d8e9bd5c4f, 0x252ba64445563b6d, 0x102f43cfdef0e673, + 0x184ff17299218eb2, 0x2d4b14f9028753ac, 0x72463a65ae6c348e, 0x4742dfee35cae990, + 0xcc5c675cf7bafaca, 0xf95882d76c1c27d4, 0xa655ac4bc0f740f6, 0x935149c05b519de8, + 0xeddeada9e8ff59ce, 0xd8da4822735984d0, 0x87d766bedfb2e3f2, 0xb2d3833544143eec, + 0x39cd3b8786642db6, 0x0cc9de0c1dc2f0a8, 0x53c4f090b129978a, 0x66c0151b2a8f4a94, + 0x6ea0a7a66d5e2255, 0x5ba4422df6f8ff4b, 0x04a96cb15a139869, 0x31ad893ac1b54577, + 0xbab3318803c5562d, 0x8fb7d40398638b33, 0xd0bafa9f3488ec11, 0xe5be1f14af2e310f, + 0xc07b9fe5bb2a3d93, 0xf57f7a6e208ce08d, 0xaa7254f28c6787af, 0x9f76b17917c15ab1, + 0x146809cbd5b149eb, 0x216cec404e1794f5, 0x7e61c2dce2fcf3d7, 0x4b652757795a2ec9, + 0x430595ea3e8b4608, 0x76017061a52d9b16, 0x290c5efd09c6fc34, 0x1c08bb769260212a, + 0x971603c450103270, 0xa212e64fcbb6ef6e, 0xfd1fc8d3675d884c, 0xc81b2d58fcfb5552, + 0x4670b431c63cb183, 0x737451ba5d9a6c9d, 0x2c797f26f1710bbf, 0x197d9aad6ad7d6a1, + 0x9263221fa8a7c5fb, 0xa767c794330118e5, 0xf86ae9089fea7fc7, 0xcd6e0c83044ca2d9, + 0xc50ebe3e439dca18, 0xf00a5bb5d83b1706, 0xaf07752974d07024, 0x9a0390a2ef76ad3a, + 0x111d28102d06be60, 0x2419cd9bb6a0637e, 0x7b14e3071a4b045c, 0x4e10068c81edd942, + 0x6bd5867d95e9d5de, 0x5ed163f60e4f08c0, 0x01dc4d6aa2a46fe2, 0x34d8a8e13902b2fc, + 0xbfc61053fb72a1a6, 0x8ac2f5d860d47cb8, 0xd5cfdb44cc3f1b9a, 0xe0cb3ecf5799c684, + 0xe8ab8c721048ae45, 0xddaf69f98bee735b, 0x82a2476527051479, 0xb7a6a2eebca3c967, + 0x3cb81a5c7ed3da3d, 0x09bcffd7e5750723, 0x56b1d14b499e6001, 0x63b534c0d238bd1f, + 0x1d3ad0a961967939, 0x283e3522fa30a427, 0x77331bbe56dbc305, 0x4237fe35cd7d1e1b, + 0xc92946870f0d0d41, 0xfc2da30c94abd05f, 0xa3208d903840b77d, 0x9624681ba3e66a63, + 0x9e44daa6e43702a2, 0xab403f2d7f91dfbc, 0xf44d11b1d37ab89e, 0xc149f43a48dc6580, + 0x4a574c888aac76da, 0x7f53a903110aabc4, 0x205e879fbde1cce6, 0x155a6214264711f8, + 0x309fe2e532431d64, 0x059b076ea9e5c07a, 0x5a9629f2050ea758, 0x6f92cc799ea87a46, + 0xe48c74cb5cd8691c, 0xd1889140c77eb402, 0x8e85bfdc6b95d320, 0xbb815a57f0330e3e, + 0xb3e1e8eab7e266ff, 0x86e50d612c44bbe1, 0xd9e823fd80afdcc3, 0xececc6761b0901dd, + 0x67f27ec4d9791287, 0x52f69b4f42dfcf99, 0x0dfbb5d3ee34a8bb, 0x38ff5058759275a5, + 0xf0e47d00896920f7, 0xc5e0988b12cffde9, 0x9aedb617be249acb, 0xafe9539c258247d5, + 0x24f7eb2ee7f2548f, 0x11f30ea57c548991, 0x4efe2039d0bfeeb3, 0x7bfac5b24b1933ad, + 0x739a770f0cc85b6c, 0x469e9284976e8672, 0x1993bc183b85e150, 0x2c975993a0233c4e, + 0xa789e12162532f14, 0x928d04aaf9f5f20a, 0xcd802a36551e9528, 0xf884cfbdceb84836, + 0xdd414f4cdabc44aa, 0xe845aac7411a99b4, 0xb748845bedf1fe96, 0x824c61d076572388, + 0x0952d962b42730d2, 0x3c563ce92f81edcc, 0x635b1275836a8aee, 0x565ff7fe18cc57f0, + 0x5e3f45435f1d3f31, 0x6b3ba0c8c4bbe22f, 0x34368e546850850d, 0x01326bdff3f65813, + 0x8a2cd36d31864b49, 0xbf2836e6aa209657, 0xe025187a06cbf175, 0xd521fdf19d6d2c6b, + 0xabae19982ec3e84d, 0x9eaafc13b5653553, 0xc1a7d28f198e5271, 0xf4a3370482288f6f, + 0x7fbd8fb640589c35, 0x4ab96a3ddbfe412b, 0x15b444a177152609, 0x20b0a12aecb3fb17, + 0x28d01397ab6293d6, 0x1dd4f61c30c44ec8, 0x42d9d8809c2f29ea, 0x77dd3d0b0789f4f4, + 0xfcc385b9c5f9e7ae, 0xc9c760325e5f3ab0, 0x96ca4eaef2b45d92, 0xa3ceab256912808c, + 0x860b2bd47d168c10, 0xb30fce5fe6b0510e, 0xec02e0c34a5b362c, 0xd9060548d1fdeb32, + 0x5218bdfa138df868, 0x671c5871882b2576, 0x381176ed24c04254, 0x0d159366bf669f4a, + 0x057521dbf8b7f78b, 0x3071c45063112a95, 0x6f7ceacccffa4db7, 0x5a780f47545c90a9, + 0xd166b7f5962c83f3, 0xe462527e0d8a5eed, 0xbb6f7ce2a16139cf, 0x8e6b99693ac7e4d1, + }, + { + 0x0000000000000000, 0xe39d1389931b9354, 0xec6301407ea0b5c3, 0x0ffe12c9edbb2697, + 0xf39f24d3a5d6f8ed, 0x1002375a36cd6bb9, 0x1ffc2593db764d2e, 0xfc61361a486dde7a, + 0xcc676ff4133a62b1, 0x2ffa7c7d8021f1e5, 0x20046eb46d9ad772, 0xc3997d3dfe814426, + 0x3ff84b27b6ec9a5c, 0xdc6558ae25f70908, 0xd39b4a67c84c2f9f, 0x300659ee5b57bccb, + 0xb397f9bb7ee35609, 0x500aea32edf8c55d, 0x5ff4f8fb0043e3ca, 0xbc69eb729358709e, + 0x4008dd68db35aee4, 0xa395cee1482e3db0, 0xac6bdc28a5951b27, 0x4ff6cfa1368e8873, + 0x7ff0964f6dd934b8, 0x9c6d85c6fec2a7ec, 0x9393970f1379817b, 0x700e84868062122f, + 0x8c6fb29cc80fcc55, 0x6ff2a1155b145f01, 0x600cb3dcb6af7996, 0x8391a05525b4eac2, + 0x4c76d525a5513f79, 0xafebc6ac364aac2d, 0xa015d465dbf18aba, 0x4388c7ec48ea19ee, + 0xbfe9f1f60087c794, 0x5c74e27f939c54c0, 0x538af0b67e277257, 0xb017e33fed3ce103, + 0x8011bad1b66b5dc8, 0x638ca9582570ce9c, 0x6c72bb91c8cbe80b, 0x8fefa8185bd07b5f, + 0x738e9e0213bda525, 0x90138d8b80a63671, 0x9fed9f426d1d10e6, 0x7c708ccbfe0683b2, + 0xffe12c9edbb26970, 0x1c7c3f1748a9fa24, 0x13822ddea512dcb3, 0xf01f3e5736094fe7, + 0x0c7e084d7e64919d, 0xefe31bc4ed7f02c9, 0xe01d090d00c4245e, 0x03801a8493dfb70a, + 0x3386436ac8880bc1, 0xd01b50e35b939895, 0xdfe5422ab628be02, 0x3c7851a325332d56, + 0xc01967b96d5ef32c, 0x23847430fe456078, 0x2c7a66f913fe46ef, 0xcfe7757080e5d5bb, + 0x98edaa4b4aa27ef2, 0x7b70b9c2d9b9eda6, 0x748eab0b3402cb31, 0x9713b882a7195865, + 0x6b728e98ef74861f, 0x88ef9d117c6f154b, 0x87118fd891d433dc, 0x648c9c5102cfa088, + 0x548ac5bf59981c43, 0xb717d636ca838f17, 0xb8e9c4ff2738a980, 0x5b74d776b4233ad4, + 0xa715e16cfc4ee4ae, 0x4488f2e56f5577fa, 0x4b76e02c82ee516d, 0xa8ebf3a511f5c239, + 0x2b7a53f0344128fb, 0xc8e74079a75abbaf, 0xc71952b04ae19d38, 0x24844139d9fa0e6c, + 0xd8e577239197d016, 0x3b7864aa028c4342, 0x34867663ef3765d5, 0xd71b65ea7c2cf681, + 0xe71d3c04277b4a4a, 0x04802f8db460d91e, 0x0b7e3d4459dbff89, 0xe8e32ecdcac06cdd, + 0x148218d782adb2a7, 0xf71f0b5e11b621f3, 0xf8e11997fc0d0764, 0x1b7c0a1e6f169430, + 0xd49b7f6eeff3418b, 0x37066ce77ce8d2df, 0x38f87e2e9153f448, 0xdb656da70248671c, + 0x27045bbd4a25b966, 0xc4994834d93e2a32, 0xcb675afd34850ca5, 0x28fa4974a79e9ff1, + 0x18fc109afcc9233a, 0xfb6103136fd2b06e, 0xf49f11da826996f9, 0x17020253117205ad, + 0xeb633449591fdbd7, 0x08fe27c0ca044883, 0x0700350927bf6e14, 0xe49d2680b4a4fd40, + 0x670c86d591101782, 0x8491955c020b84d6, 0x8b6f8795efb0a241, 0x68f2941c7cab3115, + 0x9493a20634c6ef6f, 0x770eb18fa7dd7c3b, 0x78f0a3464a665aac, 0x9b6db0cfd97dc9f8, + 0xab6be921822a7533, 0x48f6faa81131e667, 0x4708e861fc8ac0f0, 0xa495fbe86f9153a4, + 0x58f4cdf227fc8dde, 0xbb69de7bb4e71e8a, 0xb497ccb2595c381d, 0x570adf3bca47ab49, + 0x1a8272c5cdd36e8f, 0xf91f614c5ec8fddb, 0xf6e17385b373db4c, 0x157c600c20684818, + 0xe91d561668059662, 0x0a80459ffb1e0536, 0x057e575616a523a1, 0xe6e344df85beb0f5, + 0xd6e51d31dee90c3e, 0x35780eb84df29f6a, 0x3a861c71a049b9fd, 0xd91b0ff833522aa9, + 0x257a39e27b3ff4d3, 0xc6e72a6be8246787, 0xc91938a2059f4110, 0x2a842b2b9684d244, + 0xa9158b7eb3303886, 0x4a8898f7202babd2, 0x45768a3ecd908d45, 0xa6eb99b75e8b1e11, + 0x5a8aafad16e6c06b, 0xb917bc2485fd533f, 0xb6e9aeed684675a8, 0x5574bd64fb5de6fc, + 0x6572e48aa00a5a37, 0x86eff7033311c963, 0x8911e5cadeaaeff4, 0x6a8cf6434db17ca0, + 0x96edc05905dca2da, 0x7570d3d096c7318e, 0x7a8ec1197b7c1719, 0x9913d290e867844d, + 0x56f4a7e0688251f6, 0xb569b469fb99c2a2, 0xba97a6a01622e435, 0x590ab52985397761, + 0xa56b8333cd54a91b, 0x46f690ba5e4f3a4f, 0x49088273b3f41cd8, 0xaa9591fa20ef8f8c, + 0x9a93c8147bb83347, 0x790edb9de8a3a013, 0x76f0c95405188684, 0x956ddadd960315d0, + 0x690cecc7de6ecbaa, 0x8a91ff4e4d7558fe, 0x856fed87a0ce7e69, 0x66f2fe0e33d5ed3d, + 0xe5635e5b166107ff, 0x06fe4dd2857a94ab, 0x09005f1b68c1b23c, 0xea9d4c92fbda2168, + 0x16fc7a88b3b7ff12, 0xf561690120ac6c46, 0xfa9f7bc8cd174ad1, 0x190268415e0cd985, + 0x290431af055b654e, 0xca9922269640f61a, 0xc56730ef7bfbd08d, 0x26fa2366e8e043d9, + 0xda9b157ca08d9da3, 0x390606f533960ef7, 0x36f8143cde2d2860, 0xd56507b54d36bb34, + 0x826fd88e8771107d, 0x61f2cb07146a8329, 0x6e0cd9cef9d1a5be, 0x8d91ca476aca36ea, + 0x71f0fc5d22a7e890, 0x926defd4b1bc7bc4, 0x9d93fd1d5c075d53, 0x7e0eee94cf1cce07, + 0x4e08b77a944b72cc, 0xad95a4f30750e198, 0xa26bb63aeaebc70f, 0x41f6a5b379f0545b, + 0xbd9793a9319d8a21, 0x5e0a8020a2861975, 0x51f492e94f3d3fe2, 0xb2698160dc26acb6, + 0x31f82135f9924674, 0xd26532bc6a89d520, 0xdd9b20758732f3b7, 0x3e0633fc142960e3, + 0xc26705e65c44be99, 0x21fa166fcf5f2dcd, 0x2e0404a622e40b5a, 0xcd99172fb1ff980e, + 0xfd9f4ec1eaa824c5, 0x1e025d4879b3b791, 0x11fc4f8194089106, 0xf2615c0807130252, + 0x0e006a124f7edc28, 0xed9d799bdc654f7c, 0xe2636b5231de69eb, 0x01fe78dba2c5fabf, + 0xce190dab22202f04, 0x2d841e22b13bbc50, 0x227a0ceb5c809ac7, 0xc1e71f62cf9b0993, + 0x3d86297887f6d7e9, 0xde1b3af114ed44bd, 0xd1e52838f956622a, 0x32783bb16a4df17e, + 0x027e625f311a4db5, 0xe1e371d6a201dee1, 0xee1d631f4fbaf876, 0x0d807096dca16b22, + 0xf1e1468c94ccb558, 0x127c550507d7260c, 0x1d8247ccea6c009b, 0xfe1f5445797793cf, + 0x7d8ef4105cc3790d, 0x9e13e799cfd8ea59, 0x91edf5502263ccce, 0x7270e6d9b1785f9a, + 0x8e11d0c3f91581e0, 0x6d8cc34a6a0e12b4, 0x6272d18387b53423, 0x81efc20a14aea777, + 0xb1e99be44ff91bbc, 0x5274886ddce288e8, 0x5d8a9aa43159ae7f, 0xbe17892da2423d2b, + 0x4276bf37ea2fe351, 0xa1ebacbe79347005, 0xae15be77948f5692, 0x4d88adfe0794c5c6, + }, + { + 0x0000000000000000, 0x62a95de6e302eff2, 0xc552bbcdc605dfe4, 0xa7fbe62b25073016, + 0xa1fc51c8d49c2ca3, 0xc3550c2e379ec351, 0x64aeea051299f347, 0x0607b7e3f19b1cb5, + 0x68a185c2f1afca2d, 0x0a08d82412ad25df, 0xadf33e0f37aa15c9, 0xcf5a63e9d4a8fa3b, + 0xc95dd40a2533e68e, 0xabf489ecc631097c, 0x0c0f6fc7e336396a, 0x6ea632210034d698, + 0xd1430b85e35f945a, 0xb3ea5663005d7ba8, 0x1411b048255a4bbe, 0x76b8edaec658a44c, + 0x70bf5a4d37c3b8f9, 0x121607abd4c1570b, 0xb5ede180f1c6671d, 0xd744bc6612c488ef, + 0xb9e28e4712f05e77, 0xdb4bd3a1f1f2b185, 0x7cb0358ad4f58193, 0x1e19686c37f76e61, + 0x181edf8fc66c72d4, 0x7ab78269256e9d26, 0xdd4c64420069ad30, 0xbfe539a4e36b42c2, + 0x89df31589e28bbdf, 0xeb766cbe7d2a542d, 0x4c8d8a95582d643b, 0x2e24d773bb2f8bc9, + 0x282360904ab4977c, 0x4a8a3d76a9b6788e, 0xed71db5d8cb14898, 0x8fd886bb6fb3a76a, + 0xe17eb49a6f8771f2, 0x83d7e97c8c859e00, 0x242c0f57a982ae16, 0x468552b14a8041e4, + 0x4082e552bb1b5d51, 0x222bb8b45819b2a3, 0x85d05e9f7d1e82b5, 0xe77903799e1c6d47, + 0x589c3add7d772f85, 0x3a35673b9e75c077, 0x9dce8110bb72f061, 0xff67dcf658701f93, + 0xf9606b15a9eb0326, 0x9bc936f34ae9ecd4, 0x3c32d0d86feedcc2, 0x5e9b8d3e8cec3330, + 0x303dbf1f8cd8e5a8, 0x5294e2f96fda0a5a, 0xf56f04d24add3a4c, 0x97c65934a9dfd5be, + 0x91c1eed75844c90b, 0xf368b331bb4626f9, 0x5493551a9e4116ef, 0x363a08fc7d43f91d, + 0x38e744e264c6e4d5, 0x5a4e190487c40b27, 0xfdb5ff2fa2c33b31, 0x9f1ca2c941c1d4c3, + 0x991b152ab05ac876, 0xfbb248cc53582784, 0x5c49aee7765f1792, 0x3ee0f301955df860, + 0x5046c12095692ef8, 0x32ef9cc6766bc10a, 0x95147aed536cf11c, 0xf7bd270bb06e1eee, + 0xf1ba90e841f5025b, 0x9313cd0ea2f7eda9, 0x34e82b2587f0ddbf, 0x564176c364f2324d, + 0xe9a44f678799708f, 0x8b0d1281649b9f7d, 0x2cf6f4aa419caf6b, 0x4e5fa94ca29e4099, + 0x48581eaf53055c2c, 0x2af14349b007b3de, 0x8d0aa562950083c8, 0xefa3f88476026c3a, + 0x8105caa57636baa2, 0xe3ac974395345550, 0x44577168b0336546, 0x26fe2c8e53318ab4, + 0x20f99b6da2aa9601, 0x4250c68b41a879f3, 0xe5ab20a064af49e5, 0x87027d4687ada617, + 0xb13875bafaee5f0a, 0xd391285c19ecb0f8, 0x746ace773ceb80ee, 0x16c39391dfe96f1c, + 0x10c424722e7273a9, 0x726d7994cd709c5b, 0xd5969fbfe877ac4d, 0xb73fc2590b7543bf, + 0xd999f0780b419527, 0xbb30ad9ee8437ad5, 0x1ccb4bb5cd444ac3, 0x7e6216532e46a531, + 0x7865a1b0dfddb984, 0x1accfc563cdf5676, 0xbd371a7d19d86660, 0xdf9e479bfada8992, + 0x607b7e3f19b1cb50, 0x02d223d9fab324a2, 0xa529c5f2dfb414b4, 0xc78098143cb6fb46, + 0xc1872ff7cd2de7f3, 0xa32e72112e2f0801, 0x04d5943a0b283817, 0x667cc9dce82ad7e5, + 0x08dafbfde81e017d, 0x6a73a61b0b1cee8f, 0xcd8840302e1bde99, 0xaf211dd6cd19316b, + 0xa926aa353c822dde, 0xcb8ff7d3df80c22c, 0x6c7411f8fa87f23a, 0x0edd4c1e19851dc8, + 0x71ce89c4c98dc9aa, 0x1367d4222a8f2658, 0xb49c32090f88164e, 0xd6356fefec8af9bc, + 0xd032d80c1d11e509, 0xb29b85eafe130afb, 0x156063c1db143aed, 0x77c93e273816d51f, + 0x196f0c0638220387, 0x7bc651e0db20ec75, 0xdc3db7cbfe27dc63, 0xbe94ea2d1d253391, + 0xb8935dceecbe2f24, 0xda3a00280fbcc0d6, 0x7dc1e6032abbf0c0, 0x1f68bbe5c9b91f32, + 0xa08d82412ad25df0, 0xc224dfa7c9d0b202, 0x65df398cecd78214, 0x0776646a0fd56de6, + 0x0171d389fe4e7153, 0x63d88e6f1d4c9ea1, 0xc4236844384baeb7, 0xa68a35a2db494145, + 0xc82c0783db7d97dd, 0xaa855a65387f782f, 0x0d7ebc4e1d784839, 0x6fd7e1a8fe7aa7cb, + 0x69d0564b0fe1bb7e, 0x0b790badece3548c, 0xac82ed86c9e4649a, 0xce2bb0602ae68b68, + 0xf811b89c57a57275, 0x9ab8e57ab4a79d87, 0x3d43035191a0ad91, 0x5fea5eb772a24263, + 0x59ede95483395ed6, 0x3b44b4b2603bb124, 0x9cbf5299453c8132, 0xfe160f7fa63e6ec0, + 0x90b03d5ea60ab858, 0xf21960b8450857aa, 0x55e28693600f67bc, 0x374bdb75830d884e, + 0x314c6c96729694fb, 0x53e5317091947b09, 0xf41ed75bb4934b1f, 0x96b78abd5791a4ed, + 0x2952b319b4fae62f, 0x4bfbeeff57f809dd, 0xec0008d472ff39cb, 0x8ea9553291fdd639, + 0x88aee2d16066ca8c, 0xea07bf378364257e, 0x4dfc591ca6631568, 0x2f5504fa4561fa9a, + 0x41f336db45552c02, 0x235a6b3da657c3f0, 0x84a18d168350f3e6, 0xe608d0f060521c14, + 0xe00f671391c900a1, 0x82a63af572cbef53, 0x255ddcde57ccdf45, 0x47f48138b4ce30b7, + 0x4929cd26ad4b2d7f, 0x2b8090c04e49c28d, 0x8c7b76eb6b4ef29b, 0xeed22b0d884c1d69, + 0xe8d59cee79d701dc, 0x8a7cc1089ad5ee2e, 0x2d872723bfd2de38, 0x4f2e7ac55cd031ca, + 0x218848e45ce4e752, 0x43211502bfe608a0, 0xe4daf3299ae138b6, 0x8673aecf79e3d744, + 0x8074192c8878cbf1, 0xe2dd44ca6b7a2403, 0x4526a2e14e7d1415, 0x278fff07ad7ffbe7, + 0x986ac6a34e14b925, 0xfac39b45ad1656d7, 0x5d387d6e881166c1, 0x3f9120886b138933, + 0x3996976b9a889586, 0x5b3fca8d798a7a74, 0xfcc42ca65c8d4a62, 0x9e6d7140bf8fa590, + 0xf0cb4361bfbb7308, 0x92621e875cb99cfa, 0x3599f8ac79beacec, 0x5730a54a9abc431e, + 0x513712a96b275fab, 0x339e4f4f8825b059, 0x9465a964ad22804f, 0xf6ccf4824e206fbd, + 0xc0f6fc7e336396a0, 0xa25fa198d0617952, 0x05a447b3f5664944, 0x670d1a551664a6b6, + 0x610aadb6e7ffba03, 0x03a3f05004fd55f1, 0xa458167b21fa65e7, 0xc6f14b9dc2f88a15, + 0xa85779bcc2cc5c8d, 0xcafe245a21ceb37f, 0x6d05c27104c98369, 0x0fac9f97e7cb6c9b, + 0x09ab28741650702e, 0x6b027592f5529fdc, 0xccf993b9d055afca, 0xae50ce5f33574038, + 0x11b5f7fbd03c02fa, 0x731caa1d333eed08, 0xd4e74c361639dd1e, 0xb64e11d0f53b32ec, + 0xb049a63304a02e59, 0xd2e0fbd5e7a2c1ab, 0x751b1dfec2a5f1bd, 0x17b2401821a71e4f, + 0x791472392193c8d7, 0x1bbd2fdfc2912725, 0xbc46c9f4e7961733, 0xdeef94120494f8c1, + 0xd8e823f1f50fe474, 0xba417e17160d0b86, 0x1dba983c330a3b90, 0x7f13c5dad008d462, + }, + { + 0x0000000000000000, 0x381d0015c96f4444, 0x703a002b92de8888, 0x4827003e5bb1cccc, + 0xe074005725bd1110, 0xd8690042ecd25554, 0x904e007cb7639998, 0xa85300697e0cdddc, + 0xebb126fd13edb14b, 0xd3ac26e8da82f50f, 0x9b8b26d6813339c3, 0xa39626c3485c7d87, + 0x0bc526aa3650a05b, 0x33d826bfff3fe41f, 0x7bff2681a48e28d3, 0x43e226946de16c97, + 0xfc3b6ba97f4cf1fd, 0xc4266bbcb623b5b9, 0x8c016b82ed927975, 0xb41c6b9724fd3d31, + 0x1c4f6bfe5af1e0ed, 0x24526beb939ea4a9, 0x6c756bd5c82f6865, 0x54686bc001402c21, + 0x178a4d546ca140b6, 0x2f974d41a5ce04f2, 0x67b04d7ffe7fc83e, 0x5fad4d6a37108c7a, + 0xf7fe4d03491c51a6, 0xcfe34d16807315e2, 0x87c44d28dbc2d92e, 0xbfd94d3d12ad9d6a, + 0xd32ff101a60e7091, 0xeb32f1146f6134d5, 0xa315f12a34d0f819, 0x9b08f13ffdbfbc5d, + 0x335bf15683b36181, 0x0b46f1434adc25c5, 0x4361f17d116de909, 0x7b7cf168d802ad4d, + 0x389ed7fcb5e3c1da, 0x0083d7e97c8c859e, 0x48a4d7d7273d4952, 0x70b9d7c2ee520d16, + 0xd8ead7ab905ed0ca, 0xe0f7d7be5931948e, 0xa8d0d78002805842, 0x90cdd795cbef1c06, + 0x2f149aa8d942816c, 0x17099abd102dc528, 0x5f2e9a834b9c09e4, 0x67339a9682f34da0, + 0xcf609afffcff907c, 0xf77d9aea3590d438, 0xbf5a9ad46e2118f4, 0x87479ac1a74e5cb0, + 0xc4a5bc55caaf3027, 0xfcb8bc4003c07463, 0xb49fbc7e5871b8af, 0x8c82bc6b911efceb, + 0x24d1bc02ef122137, 0x1cccbc17267d6573, 0x54ebbc297dcca9bf, 0x6cf6bc3cb4a3edfb, + 0x8d06c450148b7249, 0xb51bc445dde4360d, 0xfd3cc47b8655fac1, 0xc521c46e4f3abe85, + 0x6d72c40731366359, 0x556fc412f859271d, 0x1d48c42ca3e8ebd1, 0x2555c4396a87af95, + 0x66b7e2ad0766c302, 0x5eaae2b8ce098746, 0x168de28695b84b8a, 0x2e90e2935cd70fce, + 0x86c3e2fa22dbd212, 0xbedee2efebb49656, 0xf6f9e2d1b0055a9a, 0xcee4e2c4796a1ede, + 0x713daff96bc783b4, 0x4920afeca2a8c7f0, 0x0107afd2f9190b3c, 0x391aafc730764f78, + 0x9149afae4e7a92a4, 0xa954afbb8715d6e0, 0xe173af85dca41a2c, 0xd96eaf9015cb5e68, + 0x9a8c8904782a32ff, 0xa2918911b14576bb, 0xeab6892feaf4ba77, 0xd2ab893a239bfe33, + 0x7af889535d9723ef, 0x42e5894694f867ab, 0x0ac28978cf49ab67, 0x32df896d0626ef23, + 0x5e293551b28502d8, 0x663435447bea469c, 0x2e13357a205b8a50, 0x160e356fe934ce14, + 0xbe5d3506973813c8, 0x864035135e57578c, 0xce67352d05e69b40, 0xf67a3538cc89df04, + 0xb59813aca168b393, 0x8d8513b96807f7d7, 0xc5a2138733b63b1b, 0xfdbf1392fad97f5f, + 0x55ec13fb84d5a283, 0x6df113ee4dbae6c7, 0x25d613d0160b2a0b, 0x1dcb13c5df646e4f, + 0xa2125ef8cdc9f325, 0x9a0f5eed04a6b761, 0xd2285ed35f177bad, 0xea355ec696783fe9, + 0x42665eafe874e235, 0x7a7b5eba211ba671, 0x325c5e847aaa6abd, 0x0a415e91b3c52ef9, + 0x49a37805de24426e, 0x71be7810174b062a, 0x3999782e4cfacae6, 0x0184783b85958ea2, + 0xa9d77852fb99537e, 0x91ca784732f6173a, 0xd9ed78796947dbf6, 0xe1f0786ca0289fb2, + 0x3154aef3718177f9, 0x0949aee6b8ee33bd, 0x416eaed8e35fff71, 0x7973aecd2a30bb35, + 0xd120aea4543c66e9, 0xe93daeb19d5322ad, 0xa11aae8fc6e2ee61, 0x9907ae9a0f8daa25, + 0xdae5880e626cc6b2, 0xe2f8881bab0382f6, 0xaadf8825f0b24e3a, 0x92c2883039dd0a7e, + 0x3a91885947d1d7a2, 0x028c884c8ebe93e6, 0x4aab8872d50f5f2a, 0x72b688671c601b6e, + 0xcd6fc55a0ecd8604, 0xf572c54fc7a2c240, 0xbd55c5719c130e8c, 0x8548c564557c4ac8, + 0x2d1bc50d2b709714, 0x1506c518e21fd350, 0x5d21c526b9ae1f9c, 0x653cc53370c15bd8, + 0x26dee3a71d20374f, 0x1ec3e3b2d44f730b, 0x56e4e38c8ffebfc7, 0x6ef9e3994691fb83, + 0xc6aae3f0389d265f, 0xfeb7e3e5f1f2621b, 0xb690e3dbaa43aed7, 0x8e8de3ce632cea93, + 0xe27b5ff2d78f0768, 0xda665fe71ee0432c, 0x92415fd945518fe0, 0xaa5c5fcc8c3ecba4, + 0x020f5fa5f2321678, 0x3a125fb03b5d523c, 0x72355f8e60ec9ef0, 0x4a285f9ba983dab4, + 0x09ca790fc462b623, 0x31d7791a0d0df267, 0x79f0792456bc3eab, 0x41ed79319fd37aef, + 0xe9be7958e1dfa733, 0xd1a3794d28b0e377, 0x9984797373012fbb, 0xa1997966ba6e6bff, + 0x1e40345ba8c3f695, 0x265d344e61acb2d1, 0x6e7a34703a1d7e1d, 0x56673465f3723a59, + 0xfe34340c8d7ee785, 0xc62934194411a3c1, 0x8e0e34271fa06f0d, 0xb6133432d6cf2b49, + 0xf5f112a6bb2e47de, 0xcdec12b37241039a, 0x85cb128d29f0cf56, 0xbdd61298e09f8b12, + 0x158512f19e9356ce, 0x2d9812e457fc128a, 0x65bf12da0c4dde46, 0x5da212cfc5229a02, + 0xbc526aa3650a05b0, 0x844f6ab6ac6541f4, 0xcc686a88f7d48d38, 0xf4756a9d3ebbc97c, + 0x5c266af440b714a0, 0x643b6ae189d850e4, 0x2c1c6adfd2699c28, 0x14016aca1b06d86c, + 0x57e34c5e76e7b4fb, 0x6ffe4c4bbf88f0bf, 0x27d94c75e4393c73, 0x1fc44c602d567837, + 0xb7974c09535aa5eb, 0x8f8a4c1c9a35e1af, 0xc7ad4c22c1842d63, 0xffb04c3708eb6927, + 0x4069010a1a46f44d, 0x7874011fd329b009, 0x3053012188987cc5, 0x084e013441f73881, + 0xa01d015d3ffbe55d, 0x98000148f694a119, 0xd0270176ad256dd5, 0xe83a0163644a2991, + 0xabd827f709ab4506, 0x93c527e2c0c40142, 0xdbe227dc9b75cd8e, 0xe3ff27c9521a89ca, + 0x4bac27a02c165416, 0x73b127b5e5791052, 0x3b96278bbec8dc9e, 0x038b279e77a798da, + 0x6f7d9ba2c3047521, 0x57609bb70a6b3165, 0x1f479b8951dafda9, 0x275a9b9c98b5b9ed, + 0x8f099bf5e6b96431, 0xb7149be02fd62075, 0xff339bde7467ecb9, 0xc72e9bcbbd08a8fd, + 0x84ccbd5fd0e9c46a, 0xbcd1bd4a1986802e, 0xf4f6bd7442374ce2, 0xccebbd618b5808a6, + 0x64b8bd08f554d57a, 0x5ca5bd1d3c3b913e, 0x1482bd23678a5df2, 0x2c9fbd36aee519b6, + 0x9346f00bbc4884dc, 0xab5bf01e7527c098, 0xe37cf0202e960c54, 0xdb61f035e7f94810, + 0x7332f05c99f595cc, 0x4b2ff049509ad188, 0x0308f0770b2b1d44, 0x3b15f062c2445900, + 0x78f7d6f6afa53597, 0x40ead6e366ca71d3, 0x08cdd6dd3d7bbd1f, 0x30d0d6c8f414f95b, + 0x9883d6a18a182487, 0xa09ed6b4437760c3, 0xe8b9d68a18c6ac0f, 0xd0a4d69fd1a9e84b, + }, + { + 0x0000000000000000, 0x1f7a22cef7e6f4a4, 0x3ef4459defcde948, 0x218e6753182b1dec, + 0x7de88b3bdf9bd290, 0x6292a9f5287d2634, 0x431ccea630563bd8, 0x5c66ec68c7b0cf7c, + 0xfbd11677bf37a520, 0xe4ab34b948d15184, 0xc52553ea50fa4c68, 0xda5f7124a71cb8cc, + 0x86399d4c60ac77b0, 0x9943bf82974a8314, 0xb8cdd8d18f619ef8, 0xa7b7fa1f78876a5c, + 0xdcfb0abc26f8d92b, 0xc3812872d11e2d8f, 0xe20f4f21c9353063, 0xfd756def3ed3c4c7, + 0xa1138187f9630bbb, 0xbe69a3490e85ff1f, 0x9fe7c41a16aee2f3, 0x809de6d4e1481657, + 0x272a1ccb99cf7c0b, 0x38503e056e2988af, 0x19de595676029543, 0x06a47b9881e461e7, + 0x5ac297f04654ae9b, 0x45b8b53eb1b25a3f, 0x6436d26da99947d3, 0x7b4cf0a35e7fb377, + 0x92af332b1566213d, 0x8dd511e5e280d599, 0xac5b76b6faabc875, 0xb32154780d4d3cd1, + 0xef47b810cafdf3ad, 0xf03d9ade3d1b0709, 0xd1b3fd8d25301ae5, 0xcec9df43d2d6ee41, + 0x697e255caa51841d, 0x760407925db770b9, 0x578a60c1459c6d55, 0x48f0420fb27a99f1, + 0x1496ae6775ca568d, 0x0bec8ca9822ca229, 0x2a62ebfa9a07bfc5, 0x3518c9346de14b61, + 0x4e543997339ef816, 0x512e1b59c4780cb2, 0x70a07c0adc53115e, 0x6fda5ec42bb5e5fa, + 0x33bcb2acec052a86, 0x2cc690621be3de22, 0x0d48f73103c8c3ce, 0x1232d5fff42e376a, + 0xb5852fe08ca95d36, 0xaaff0d2e7b4fa992, 0x8b716a7d6364b47e, 0x940b48b3948240da, + 0xc86da4db53328fa6, 0xd7178615a4d47b02, 0xf699e146bcff66ee, 0xe9e3c3884b19924a, + 0x0e074005725bd111, 0x117d62cb85bd25b5, 0x30f305989d963859, 0x2f8927566a70ccfd, + 0x73efcb3eadc00381, 0x6c95e9f05a26f725, 0x4d1b8ea3420deac9, 0x5261ac6db5eb1e6d, + 0xf5d65672cd6c7431, 0xeaac74bc3a8a8095, 0xcb2213ef22a19d79, 0xd4583121d54769dd, + 0x883edd4912f7a6a1, 0x9744ff87e5115205, 0xb6ca98d4fd3a4fe9, 0xa9b0ba1a0adcbb4d, + 0xd2fc4ab954a3083a, 0xcd866877a345fc9e, 0xec080f24bb6ee172, 0xf3722dea4c8815d6, + 0xaf14c1828b38daaa, 0xb06ee34c7cde2e0e, 0x91e0841f64f533e2, 0x8e9aa6d19313c746, + 0x292d5cceeb94ad1a, 0x36577e001c7259be, 0x17d9195304594452, 0x08a33b9df3bfb0f6, + 0x54c5d7f5340f7f8a, 0x4bbff53bc3e98b2e, 0x6a319268dbc296c2, 0x754bb0a62c246266, + 0x9ca8732e673df02c, 0x83d251e090db0488, 0xa25c36b388f01964, 0xbd26147d7f16edc0, + 0xe140f815b8a622bc, 0xfe3adadb4f40d618, 0xdfb4bd88576bcbf4, 0xc0ce9f46a08d3f50, + 0x67796559d80a550c, 0x780347972feca1a8, 0x598d20c437c7bc44, 0x46f7020ac02148e0, + 0x1a91ee620791879c, 0x05ebccacf0777338, 0x2465abffe85c6ed4, 0x3b1f89311fba9a70, + 0x4053799241c52907, 0x5f295b5cb623dda3, 0x7ea73c0fae08c04f, 0x61dd1ec159ee34eb, + 0x3dbbf2a99e5efb97, 0x22c1d06769b80f33, 0x034fb734719312df, 0x1c3595fa8675e67b, + 0xbb826fe5fef28c27, 0xa4f84d2b09147883, 0x85762a78113f656f, 0x9a0c08b6e6d991cb, + 0xc66ae4de21695eb7, 0xd910c610d68faa13, 0xf89ea143cea4b7ff, 0xe7e4838d3942435b, + 0x1c0e800ae4b7a222, 0x0374a2c413515686, 0x22fac5970b7a4b6a, 0x3d80e759fc9cbfce, + 0x61e60b313b2c70b2, 0x7e9c29ffccca8416, 0x5f124eacd4e199fa, 0x40686c6223076d5e, + 0xe7df967d5b800702, 0xf8a5b4b3ac66f3a6, 0xd92bd3e0b44dee4a, 0xc651f12e43ab1aee, + 0x9a371d46841bd592, 0x854d3f8873fd2136, 0xa4c358db6bd63cda, 0xbbb97a159c30c87e, + 0xc0f58ab6c24f7b09, 0xdf8fa87835a98fad, 0xfe01cf2b2d829241, 0xe17bede5da6466e5, + 0xbd1d018d1dd4a999, 0xa2672343ea325d3d, 0x83e94410f21940d1, 0x9c9366de05ffb475, + 0x3b249cc17d78de29, 0x245ebe0f8a9e2a8d, 0x05d0d95c92b53761, 0x1aaafb926553c3c5, + 0x46cc17faa2e30cb9, 0x59b635345505f81d, 0x783852674d2ee5f1, 0x674270a9bac81155, + 0x8ea1b321f1d1831f, 0x91db91ef063777bb, 0xb055f6bc1e1c6a57, 0xaf2fd472e9fa9ef3, + 0xf349381a2e4a518f, 0xec331ad4d9aca52b, 0xcdbd7d87c187b8c7, 0xd2c75f4936614c63, + 0x7570a5564ee6263f, 0x6a0a8798b900d29b, 0x4b84e0cba12bcf77, 0x54fec20556cd3bd3, + 0x08982e6d917df4af, 0x17e20ca3669b000b, 0x366c6bf07eb01de7, 0x2916493e8956e943, + 0x525ab99dd7295a34, 0x4d209b5320cfae90, 0x6caefc0038e4b37c, 0x73d4dececf0247d8, + 0x2fb232a608b288a4, 0x30c81068ff547c00, 0x1146773be77f61ec, 0x0e3c55f510999548, + 0xa98bafea681eff14, 0xb6f18d249ff80bb0, 0x977fea7787d3165c, 0x8805c8b97035e2f8, + 0xd46324d1b7852d84, 0xcb19061f4063d920, 0xea97614c5848c4cc, 0xf5ed4382afae3068, + 0x1209c00f96ec7333, 0x0d73e2c1610a8797, 0x2cfd859279219a7b, 0x3387a75c8ec76edf, + 0x6fe14b344977a1a3, 0x709b69fabe915507, 0x51150ea9a6ba48eb, 0x4e6f2c67515cbc4f, + 0xe9d8d67829dbd613, 0xf6a2f4b6de3d22b7, 0xd72c93e5c6163f5b, 0xc856b12b31f0cbff, + 0x94305d43f6400483, 0x8b4a7f8d01a6f027, 0xaac418de198dedcb, 0xb5be3a10ee6b196f, + 0xcef2cab3b014aa18, 0xd188e87d47f25ebc, 0xf0068f2e5fd94350, 0xef7cade0a83fb7f4, + 0xb31a41886f8f7888, 0xac60634698698c2c, 0x8dee0415804291c0, 0x929426db77a46564, + 0x3523dcc40f230f38, 0x2a59fe0af8c5fb9c, 0x0bd79959e0eee670, 0x14adbb97170812d4, + 0x48cb57ffd0b8dda8, 0x57b17531275e290c, 0x763f12623f7534e0, 0x694530acc893c044, + 0x80a6f324838a520e, 0x9fdcd1ea746ca6aa, 0xbe52b6b96c47bb46, 0xa12894779ba14fe2, + 0xfd4e781f5c11809e, 0xe2345ad1abf7743a, 0xc3ba3d82b3dc69d6, 0xdcc01f4c443a9d72, + 0x7b77e5533cbdf72e, 0x640dc79dcb5b038a, 0x4583a0ced3701e66, 0x5af982002496eac2, + 0x069f6e68e32625be, 0x19e54ca614c0d11a, 0x386b2bf50cebccf6, 0x2711093bfb0d3852, + 0x5c5df998a5728b25, 0x4327db5652947f81, 0x62a9bc054abf626d, 0x7dd39ecbbd5996c9, + 0x21b572a37ae959b5, 0x3ecf506d8d0fad11, 0x1f41373e9524b0fd, 0x003b15f062c24459, + 0xa78cefef1a452e05, 0xb8f6cd21eda3daa1, 0x9978aa72f588c74d, 0x860288bc026e33e9, + 0xda6464d4c5defc95, 0xc51e461a32380831, 0xe49021492a1315dd, 0xfbea0387ddf5e179, + }, + { + 0x0000000000000000, 0xaf9af20feb8146cc, 0x746cc24c8f951ef3, 0xdbf630436414583f, + 0xe8d984991f2a3de6, 0x47437696f4ab7b2a, 0x9cb546d590bf2315, 0x332fb4da7b3e65d9, + 0xfaea2f6166c3e8a7, 0x5570dd6e8d42ae6b, 0x8e86ed2de956f654, 0x211c1f2202d7b098, + 0x1233abf879e9d541, 0xbda959f79268938d, 0x665f69b4f67ccbb2, 0xc9c59bbb1dfd8d7e, + 0xde8d789195104225, 0x71178a9e7e9104e9, 0xaae1badd1a855cd6, 0x057b48d2f1041a1a, + 0x3654fc088a3a7fc3, 0x99ce0e0761bb390f, 0x42383e4405af6130, 0xeda2cc4bee2e27fc, + 0x246757f0f3d3aa82, 0x8bfda5ff1852ec4e, 0x500b95bc7c46b471, 0xff9167b397c7f2bd, + 0xccbed369ecf99764, 0x632421660778d1a8, 0xb8d21125636c8997, 0x1748e32a88edcf5b, + 0x9643d77072b71721, 0x39d9257f993651ed, 0xe22f153cfd2209d2, 0x4db5e73316a34f1e, + 0x7e9a53e96d9d2ac7, 0xd100a1e6861c6c0b, 0x0af691a5e2083434, 0xa56c63aa098972f8, + 0x6ca9f8111474ff86, 0xc3330a1efff5b94a, 0x18c53a5d9be1e175, 0xb75fc8527060a7b9, + 0x84707c880b5ec260, 0x2bea8e87e0df84ac, 0xf01cbec484cbdc93, 0x5f864ccb6f4a9a5f, + 0x48ceafe1e7a75504, 0xe7545dee0c2613c8, 0x3ca26dad68324bf7, 0x93389fa283b30d3b, + 0xa0172b78f88d68e2, 0x0f8dd977130c2e2e, 0xd47be93477187611, 0x7be11b3b9c9930dd, + 0xb22480808164bda3, 0x1dbe728f6ae5fb6f, 0xc64842cc0ef1a350, 0x69d2b0c3e570e59c, + 0x5afd04199e4e8045, 0xf567f61675cfc689, 0x2e91c65511db9eb6, 0x810b345afa5ad87a, + 0x07de88b3bdf9bd29, 0xa8447abc5678fbe5, 0x73b24aff326ca3da, 0xdc28b8f0d9ede516, + 0xef070c2aa2d380cf, 0x409dfe254952c603, 0x9b6bce662d469e3c, 0x34f13c69c6c7d8f0, + 0xfd34a7d2db3a558e, 0x52ae55dd30bb1342, 0x8958659e54af4b7d, 0x26c29791bf2e0db1, + 0x15ed234bc4106868, 0xba77d1442f912ea4, 0x6181e1074b85769b, 0xce1b1308a0043057, + 0xd953f02228e9ff0c, 0x76c9022dc368b9c0, 0xad3f326ea77ce1ff, 0x02a5c0614cfda733, + 0x318a74bb37c3c2ea, 0x9e1086b4dc428426, 0x45e6b6f7b856dc19, 0xea7c44f853d79ad5, + 0x23b9df434e2a17ab, 0x8c232d4ca5ab5167, 0x57d51d0fc1bf0958, 0xf84fef002a3e4f94, + 0xcb605bda51002a4d, 0x64faa9d5ba816c81, 0xbf0c9996de9534be, 0x10966b9935147272, + 0x919d5fc3cf4eaa08, 0x3e07adcc24cfecc4, 0xe5f19d8f40dbb4fb, 0x4a6b6f80ab5af237, + 0x7944db5ad06497ee, 0xd6de29553be5d122, 0x0d2819165ff1891d, 0xa2b2eb19b470cfd1, + 0x6b7770a2a98d42af, 0xc4ed82ad420c0463, 0x1f1bb2ee26185c5c, 0xb08140e1cd991a90, + 0x83aef43bb6a77f49, 0x2c3406345d263985, 0xf7c23677393261ba, 0x5858c478d2b32776, + 0x4f1027525a5ee82d, 0xe08ad55db1dfaee1, 0x3b7ce51ed5cbf6de, 0x94e617113e4ab012, + 0xa7c9a3cb4574d5cb, 0x085351c4aef59307, 0xd3a56187cae1cb38, 0x7c3f938821608df4, + 0xb5fa08333c9d008a, 0x1a60fa3cd71c4646, 0xc196ca7fb3081e79, 0x6e0c3870588958b5, + 0x5d238caa23b73d6c, 0xf2b97ea5c8367ba0, 0x294f4ee6ac22239f, 0x86d5bce947a36553, + 0x0fbd11677bf37a52, 0xa027e36890723c9e, 0x7bd1d32bf46664a1, 0xd44b21241fe7226d, + 0xe76495fe64d947b4, 0x48fe67f18f580178, 0x930857b2eb4c5947, 0x3c92a5bd00cd1f8b, + 0xf5573e061d3092f5, 0x5acdcc09f6b1d439, 0x813bfc4a92a58c06, 0x2ea10e457924caca, + 0x1d8eba9f021aaf13, 0xb2144890e99be9df, 0x69e278d38d8fb1e0, 0xc6788adc660ef72c, + 0xd13069f6eee33877, 0x7eaa9bf905627ebb, 0xa55cabba61762684, 0x0ac659b58af76048, + 0x39e9ed6ff1c90591, 0x96731f601a48435d, 0x4d852f237e5c1b62, 0xe21fdd2c95dd5dae, + 0x2bda46978820d0d0, 0x8440b49863a1961c, 0x5fb684db07b5ce23, 0xf02c76d4ec3488ef, + 0xc303c20e970aed36, 0x6c9930017c8babfa, 0xb76f0042189ff3c5, 0x18f5f24df31eb509, + 0x99fec61709446d73, 0x36643418e2c52bbf, 0xed92045b86d17380, 0x4208f6546d50354c, + 0x7127428e166e5095, 0xdebdb081fdef1659, 0x054b80c299fb4e66, 0xaad172cd727a08aa, + 0x6314e9766f8785d4, 0xcc8e1b798406c318, 0x17782b3ae0129b27, 0xb8e2d9350b93ddeb, + 0x8bcd6def70adb832, 0x24579fe09b2cfefe, 0xffa1afa3ff38a6c1, 0x503b5dac14b9e00d, + 0x4773be869c542f56, 0xe8e94c8977d5699a, 0x331f7cca13c131a5, 0x9c858ec5f8407769, + 0xafaa3a1f837e12b0, 0x0030c81068ff547c, 0xdbc6f8530ceb0c43, 0x745c0a5ce76a4a8f, + 0xbd9991e7fa97c7f1, 0x120363e81116813d, 0xc9f553ab7502d902, 0x666fa1a49e839fce, + 0x5540157ee5bdfa17, 0xfadae7710e3cbcdb, 0x212cd7326a28e4e4, 0x8eb6253d81a9a228, + 0x086399d4c60ac77b, 0xa7f96bdb2d8b81b7, 0x7c0f5b98499fd988, 0xd395a997a21e9f44, + 0xe0ba1d4dd920fa9d, 0x4f20ef4232a1bc51, 0x94d6df0156b5e46e, 0x3b4c2d0ebd34a2a2, + 0xf289b6b5a0c92fdc, 0x5d1344ba4b486910, 0x86e574f92f5c312f, 0x297f86f6c4dd77e3, + 0x1a50322cbfe3123a, 0xb5cac023546254f6, 0x6e3cf06030760cc9, 0xc1a6026fdbf74a05, + 0xd6eee145531a855e, 0x7974134ab89bc392, 0xa2822309dc8f9bad, 0x0d18d106370edd61, + 0x3e3765dc4c30b8b8, 0x91ad97d3a7b1fe74, 0x4a5ba790c3a5a64b, 0xe5c1559f2824e087, + 0x2c04ce2435d96df9, 0x839e3c2bde582b35, 0x58680c68ba4c730a, 0xf7f2fe6751cd35c6, + 0xc4dd4abd2af3501f, 0x6b47b8b2c17216d3, 0xb0b188f1a5664eec, 0x1f2b7afe4ee70820, + 0x9e204ea4b4bdd05a, 0x31babcab5f3c9696, 0xea4c8ce83b28cea9, 0x45d67ee7d0a98865, + 0x76f9ca3dab97edbc, 0xd96338324016ab70, 0x029508712402f34f, 0xad0ffa7ecf83b583, + 0x64ca61c5d27e38fd, 0xcb5093ca39ff7e31, 0x10a6a3895deb260e, 0xbf3c5186b66a60c2, + 0x8c13e55ccd54051b, 0x2389175326d543d7, 0xf87f271042c11be8, 0x57e5d51fa9405d24, + 0x40ad363521ad927f, 0xef37c43aca2cd4b3, 0x34c1f479ae388c8c, 0x9b5b067645b9ca40, + 0xa874b2ac3e87af99, 0x07ee40a3d506e955, 0xdc1870e0b112b16a, 0x738282ef5a93f7a6, + 0xba471954476e7ad8, 0x15ddeb5bacef3c14, 0xce2bdb18c8fb642b, 0x61b12917237a22e7, + 0x529e9dcd5844473e, 0xfd046fc2b3c501f2, 0x26f25f81d7d159cd, 0x8968ad8e3c501f01, + }, + { + 0x0000000000000000, 0x2169daa1299b2d66, 0x42d3b54253365acc, 0x63ba6fe37aad77aa, + 0x85a76a84a66cb598, 0xa4ceb0258ff798fe, 0xc774dfc6f55aef54, 0xe61d0567dcc1c232, + 0x2017f35a144ef85b, 0x017e29fb3dd5d53d, 0x62c446184778a297, 0x43ad9cb96ee38ff1, + 0xa5b099deb2224dc3, 0x84d9437f9bb960a5, 0xe7632c9ce114170f, 0xc60af63dc88f3a69, + 0x402fe6b4289df0b6, 0x61463c150106ddd0, 0x02fc53f67babaa7a, 0x239589575230871c, + 0xc5888c308ef1452e, 0xe4e15691a76a6848, 0x875b3972ddc71fe2, 0xa632e3d3f45c3284, + 0x603815ee3cd308ed, 0x4151cf4f1548258b, 0x22eba0ac6fe55221, 0x03827a0d467e7f47, + 0xe59f7f6a9abfbd75, 0xc4f6a5cbb3249013, 0xa74cca28c989e7b9, 0x86251089e012cadf, + 0x805fcd68513be16c, 0xa13617c978a0cc0a, 0xc28c782a020dbba0, 0xe3e5a28b2b9696c6, + 0x05f8a7ecf75754f4, 0x24917d4ddecc7992, 0x472b12aea4610e38, 0x6642c80f8dfa235e, + 0xa0483e3245751937, 0x8121e4936cee3451, 0xe29b8b70164343fb, 0xc3f251d13fd86e9d, + 0x25ef54b6e319acaf, 0x04868e17ca8281c9, 0x673ce1f4b02ff663, 0x46553b5599b4db05, + 0xc0702bdc79a611da, 0xe119f17d503d3cbc, 0x82a39e9e2a904b16, 0xa3ca443f030b6670, + 0x45d74158dfcaa442, 0x64be9bf9f6518924, 0x0704f41a8cfcfe8e, 0x266d2ebba567d3e8, + 0xe067d8866de8e981, 0xc10e02274473c4e7, 0xa2b46dc43edeb34d, 0x83ddb76517459e2b, + 0x65c0b202cb845c19, 0x44a968a3e21f717f, 0x2713074098b206d5, 0x067adde1b1292bb3, + 0x2be6bc83fae051b3, 0x0a8f6622d37b7cd5, 0x693509c1a9d60b7f, 0x485cd360804d2619, + 0xae41d6075c8ce42b, 0x8f280ca67517c94d, 0xec9263450fbabee7, 0xcdfbb9e426219381, + 0x0bf14fd9eeaea9e8, 0x2a989578c735848e, 0x4922fa9bbd98f324, 0x684b203a9403de42, + 0x8e56255d48c21c70, 0xaf3ffffc61593116, 0xcc85901f1bf446bc, 0xedec4abe326f6bda, + 0x6bc95a37d27da105, 0x4aa08096fbe68c63, 0x291aef75814bfbc9, 0x087335d4a8d0d6af, + 0xee6e30b37411149d, 0xcf07ea125d8a39fb, 0xacbd85f127274e51, 0x8dd45f500ebc6337, + 0x4bdea96dc633595e, 0x6ab773ccefa87438, 0x090d1c2f95050392, 0x2864c68ebc9e2ef4, + 0xce79c3e9605fecc6, 0xef10194849c4c1a0, 0x8caa76ab3369b60a, 0xadc3ac0a1af29b6c, + 0xabb971ebabdbb0df, 0x8ad0ab4a82409db9, 0xe96ac4a9f8edea13, 0xc8031e08d176c775, + 0x2e1e1b6f0db70547, 0x0f77c1ce242c2821, 0x6ccdae2d5e815f8b, 0x4da4748c771a72ed, + 0x8bae82b1bf954884, 0xaac75810960e65e2, 0xc97d37f3eca31248, 0xe814ed52c5383f2e, + 0x0e09e83519f9fd1c, 0x2f6032943062d07a, 0x4cda5d774acfa7d0, 0x6db387d663548ab6, + 0xeb96975f83464069, 0xcaff4dfeaadd6d0f, 0xa945221dd0701aa5, 0x882cf8bcf9eb37c3, + 0x6e31fddb252af5f1, 0x4f58277a0cb1d897, 0x2ce24899761caf3d, 0x0d8b92385f87825b, + 0xcb8164059708b832, 0xeae8bea4be939554, 0x8952d147c43ee2fe, 0xa83b0be6eda5cf98, + 0x4e260e8131640daa, 0x6f4fd42018ff20cc, 0x0cf5bbc362525766, 0x2d9c61624bc97a00, + 0x57cd7907f5c0a366, 0x76a4a3a6dc5b8e00, 0x151ecc45a6f6f9aa, 0x347716e48f6dd4cc, + 0xd26a138353ac16fe, 0xf303c9227a373b98, 0x90b9a6c1009a4c32, 0xb1d07c6029016154, + 0x77da8a5de18e5b3d, 0x56b350fcc815765b, 0x35093f1fb2b801f1, 0x1460e5be9b232c97, + 0xf27de0d947e2eea5, 0xd3143a786e79c3c3, 0xb0ae559b14d4b469, 0x91c78f3a3d4f990f, + 0x17e29fb3dd5d53d0, 0x368b4512f4c67eb6, 0x55312af18e6b091c, 0x7458f050a7f0247a, + 0x9245f5377b31e648, 0xb32c2f9652aacb2e, 0xd09640752807bc84, 0xf1ff9ad4019c91e2, + 0x37f56ce9c913ab8b, 0x169cb648e08886ed, 0x7526d9ab9a25f147, 0x544f030ab3bedc21, + 0xb252066d6f7f1e13, 0x933bdccc46e43375, 0xf081b32f3c4944df, 0xd1e8698e15d269b9, + 0xd792b46fa4fb420a, 0xf6fb6ece8d606f6c, 0x9541012df7cd18c6, 0xb428db8cde5635a0, + 0x5235deeb0297f792, 0x735c044a2b0cdaf4, 0x10e66ba951a1ad5e, 0x318fb108783a8038, + 0xf7854735b0b5ba51, 0xd6ec9d94992e9737, 0xb556f277e383e09d, 0x943f28d6ca18cdfb, + 0x72222db116d90fc9, 0x534bf7103f4222af, 0x30f198f345ef5505, 0x119842526c747863, + 0x97bd52db8c66b2bc, 0xb6d4887aa5fd9fda, 0xd56ee799df50e870, 0xf4073d38f6cbc516, + 0x121a385f2a0a0724, 0x3373e2fe03912a42, 0x50c98d1d793c5de8, 0x71a057bc50a7708e, + 0xb7aaa18198284ae7, 0x96c37b20b1b36781, 0xf57914c3cb1e102b, 0xd410ce62e2853d4d, + 0x320dcb053e44ff7f, 0x136411a417dfd219, 0x70de7e476d72a5b3, 0x51b7a4e644e988d5, + 0x7c2bc5840f20f2d5, 0x5d421f2526bbdfb3, 0x3ef870c65c16a819, 0x1f91aa67758d857f, + 0xf98caf00a94c474d, 0xd8e575a180d76a2b, 0xbb5f1a42fa7a1d81, 0x9a36c0e3d3e130e7, + 0x5c3c36de1b6e0a8e, 0x7d55ec7f32f527e8, 0x1eef839c48585042, 0x3f86593d61c37d24, + 0xd99b5c5abd02bf16, 0xf8f286fb94999270, 0x9b48e918ee34e5da, 0xba2133b9c7afc8bc, + 0x3c04233027bd0263, 0x1d6df9910e262f05, 0x7ed79672748b58af, 0x5fbe4cd35d1075c9, + 0xb9a349b481d1b7fb, 0x98ca9315a84a9a9d, 0xfb70fcf6d2e7ed37, 0xda192657fb7cc051, + 0x1c13d06a33f3fa38, 0x3d7a0acb1a68d75e, 0x5ec0652860c5a0f4, 0x7fa9bf89495e8d92, + 0x99b4baee959f4fa0, 0xb8dd604fbc0462c6, 0xdb670facc6a9156c, 0xfa0ed50def32380a, + 0xfc7408ec5e1b13b9, 0xdd1dd24d77803edf, 0xbea7bdae0d2d4975, 0x9fce670f24b66413, + 0x79d36268f877a621, 0x58bab8c9d1ec8b47, 0x3b00d72aab41fced, 0x1a690d8b82dad18b, + 0xdc63fbb64a55ebe2, 0xfd0a211763cec684, 0x9eb04ef41963b12e, 0xbfd9945530f89c48, + 0x59c49132ec395e7a, 0x78ad4b93c5a2731c, 0x1b172470bf0f04b6, 0x3a7efed1969429d0, + 0xbc5bee587686e30f, 0x9d3234f95f1dce69, 0xfe885b1a25b0b9c3, 0xdfe181bb0c2b94a5, + 0x39fc84dcd0ea5697, 0x18955e7df9717bf1, 0x7b2f319e83dc0c5b, 0x5a46eb3faa47213d, + 0x9c4c1d0262c81b54, 0xbd25c7a34b533632, 0xde9fa84031fe4198, 0xfff672e118656cfe, + 0x19eb7786c4a4aecc, 0x3882ad27ed3f83aa, 0x5b38c2c49792f400, 0x7a511865be09d966, + }, + { + 0x0000000000000000, 0x10c249f33211cd3d, 0x218493e664239a7a, 0x3146da1556325747, + 0x430927ccc84734f4, 0x53cb6e3ffa56f9c9, 0x628db42aac64ae8e, 0x724ffdd99e7563b3, + 0x86124f99908e69e8, 0x96d0066aa29fa4d5, 0xa796dc7ff4adf392, 0xb754958cc6bc3eaf, + 0xc51b685558c95d1c, 0xd5d921a66ad89021, 0xe49ffbb33ceac766, 0xf45db2400efb0a5b, + 0x277db960798b40bb, 0x37bff0934b9a8d86, 0x06f92a861da8dac1, 0x163b63752fb917fc, + 0x64749eacb1cc744f, 0x74b6d75f83ddb972, 0x45f00d4ad5efee35, 0x553244b9e7fe2308, + 0xa16ff6f9e9052953, 0xb1adbf0adb14e46e, 0x80eb651f8d26b329, 0x90292cecbf377e14, + 0xe266d13521421da7, 0xf2a498c61353d09a, 0xc3e242d3456187dd, 0xd3200b2077704ae0, + 0x4efb72c0f3168176, 0x5e393b33c1074c4b, 0x6f7fe12697351b0c, 0x7fbda8d5a524d631, + 0x0df2550c3b51b582, 0x1d301cff094078bf, 0x2c76c6ea5f722ff8, 0x3cb48f196d63e2c5, + 0xc8e93d596398e89e, 0xd82b74aa518925a3, 0xe96daebf07bb72e4, 0xf9afe74c35aabfd9, + 0x8be01a95abdfdc6a, 0x9b22536699ce1157, 0xaa648973cffc4610, 0xbaa6c080fded8b2d, + 0x6986cba08a9dc1cd, 0x79448253b88c0cf0, 0x48025846eebe5bb7, 0x58c011b5dcaf968a, + 0x2a8fec6c42daf539, 0x3a4da59f70cb3804, 0x0b0b7f8a26f96f43, 0x1bc9367914e8a27e, + 0xef9484391a13a825, 0xff56cdca28026518, 0xce1017df7e30325f, 0xded25e2c4c21ff62, + 0xac9da3f5d2549cd1, 0xbc5fea06e04551ec, 0x8d193013b67706ab, 0x9ddb79e08466cb96, + 0x9df6e581e62d02ec, 0x8d34ac72d43ccfd1, 0xbc727667820e9896, 0xacb03f94b01f55ab, + 0xdeffc24d2e6a3618, 0xce3d8bbe1c7bfb25, 0xff7b51ab4a49ac62, 0xefb918587858615f, + 0x1be4aa1876a36b04, 0x0b26e3eb44b2a639, 0x3a6039fe1280f17e, 0x2aa2700d20913c43, + 0x58ed8dd4bee45ff0, 0x482fc4278cf592cd, 0x79691e32dac7c58a, 0x69ab57c1e8d608b7, + 0xba8b5ce19fa64257, 0xaa491512adb78f6a, 0x9b0fcf07fb85d82d, 0x8bcd86f4c9941510, + 0xf9827b2d57e176a3, 0xe94032de65f0bb9e, 0xd806e8cb33c2ecd9, 0xc8c4a13801d321e4, + 0x3c9913780f282bbf, 0x2c5b5a8b3d39e682, 0x1d1d809e6b0bb1c5, 0x0ddfc96d591a7cf8, + 0x7f9034b4c76f1f4b, 0x6f527d47f57ed276, 0x5e14a752a34c8531, 0x4ed6eea1915d480c, + 0xd30d9741153b839a, 0xc3cfdeb2272a4ea7, 0xf28904a7711819e0, 0xe24b4d544309d4dd, + 0x9004b08ddd7cb76e, 0x80c6f97eef6d7a53, 0xb180236bb95f2d14, 0xa1426a988b4ee029, + 0x551fd8d885b5ea72, 0x45dd912bb7a4274f, 0x749b4b3ee1967008, 0x645902cdd387bd35, + 0x1616ff144df2de86, 0x06d4b6e77fe313bb, 0x37926cf229d144fc, 0x275025011bc089c1, + 0xf4702e216cb0c321, 0xe4b267d25ea10e1c, 0xd5f4bdc70893595b, 0xc536f4343a829466, + 0xb77909eda4f7f7d5, 0xa7bb401e96e63ae8, 0x96fd9a0bc0d46daf, 0x863fd3f8f2c5a092, + 0x726261b8fc3eaac9, 0x62a0284bce2f67f4, 0x53e6f25e981d30b3, 0x4324bbadaa0cfd8e, + 0x316b467434799e3d, 0x21a90f8706685300, 0x10efd592505a0447, 0x002d9c61624bc97a, + 0x10b4ed5094cd96b3, 0x0076a4a3a6dc5b8e, 0x31307eb6f0ee0cc9, 0x21f23745c2ffc1f4, + 0x53bdca9c5c8aa247, 0x437f836f6e9b6f7a, 0x7239597a38a9383d, 0x62fb10890ab8f500, + 0x96a6a2c90443ff5b, 0x8664eb3a36523266, 0xb722312f60606521, 0xa7e078dc5271a81c, + 0xd5af8505cc04cbaf, 0xc56dccf6fe150692, 0xf42b16e3a82751d5, 0xe4e95f109a369ce8, + 0x37c95430ed46d608, 0x270b1dc3df571b35, 0x164dc7d689654c72, 0x068f8e25bb74814f, + 0x74c073fc2501e2fc, 0x64023a0f17102fc1, 0x5544e01a41227886, 0x4586a9e97333b5bb, + 0xb1db1ba97dc8bfe0, 0xa119525a4fd972dd, 0x905f884f19eb259a, 0x809dc1bc2bfae8a7, + 0xf2d23c65b58f8b14, 0xe2107596879e4629, 0xd356af83d1ac116e, 0xc394e670e3bddc53, + 0x5e4f9f9067db17c5, 0x4e8dd66355cadaf8, 0x7fcb0c7603f88dbf, 0x6f09458531e94082, + 0x1d46b85caf9c2331, 0x0d84f1af9d8dee0c, 0x3cc22bbacbbfb94b, 0x2c006249f9ae7476, + 0xd85dd009f7557e2d, 0xc89f99fac544b310, 0xf9d943ef9376e457, 0xe91b0a1ca167296a, + 0x9b54f7c53f124ad9, 0x8b96be360d0387e4, 0xbad064235b31d0a3, 0xaa122dd069201d9e, + 0x793226f01e50577e, 0x69f06f032c419a43, 0x58b6b5167a73cd04, 0x4874fce548620039, + 0x3a3b013cd617638a, 0x2af948cfe406aeb7, 0x1bbf92dab234f9f0, 0x0b7ddb29802534cd, + 0xff2069698ede3e96, 0xefe2209abccff3ab, 0xdea4fa8feafda4ec, 0xce66b37cd8ec69d1, + 0xbc294ea546990a62, 0xaceb07567488c75f, 0x9daddd4322ba9018, 0x8d6f94b010ab5d25, + 0x8d4208d172e0945f, 0x9d80412240f15962, 0xacc69b3716c30e25, 0xbc04d2c424d2c318, + 0xce4b2f1dbaa7a0ab, 0xde8966ee88b66d96, 0xefcfbcfbde843ad1, 0xff0df508ec95f7ec, + 0x0b504748e26efdb7, 0x1b920ebbd07f308a, 0x2ad4d4ae864d67cd, 0x3a169d5db45caaf0, + 0x485960842a29c943, 0x589b29771838047e, 0x69ddf3624e0a5339, 0x791fba917c1b9e04, + 0xaa3fb1b10b6bd4e4, 0xbafdf842397a19d9, 0x8bbb22576f484e9e, 0x9b796ba45d5983a3, + 0xe936967dc32ce010, 0xf9f4df8ef13d2d2d, 0xc8b2059ba70f7a6a, 0xd8704c68951eb757, + 0x2c2dfe289be5bd0c, 0x3cefb7dba9f47031, 0x0da96dceffc62776, 0x1d6b243dcdd7ea4b, + 0x6f24d9e453a289f8, 0x7fe6901761b344c5, 0x4ea04a0237811382, 0x5e6203f10590debf, + 0xc3b97a1181f61529, 0xd37b33e2b3e7d814, 0xe23de9f7e5d58f53, 0xf2ffa004d7c4426e, + 0x80b05ddd49b121dd, 0x9072142e7ba0ece0, 0xa134ce3b2d92bba7, 0xb1f687c81f83769a, + 0x45ab358811787cc1, 0x55697c7b2369b1fc, 0x642fa66e755be6bb, 0x74edef9d474a2b86, + 0x06a21244d93f4835, 0x16605bb7eb2e8508, 0x272681a2bd1cd24f, 0x37e4c8518f0d1f72, + 0xe4c4c371f87d5592, 0xf4068a82ca6c98af, 0xc54050979c5ecfe8, 0xd5821964ae4f02d5, + 0xa7cde4bd303a6166, 0xb70fad4e022bac5b, 0x8649775b5419fb1c, 0x968b3ea866083621, + 0x62d68ce868f33c7a, 0x7214c51b5ae2f147, 0x43521f0e0cd0a600, 0x539056fd3ec16b3d, + 0x21dfab24a0b4088e, 0x311de2d792a5c5b3, 0x005b38c2c49792f4, 0x10997131f6865fc9, + }, + { + 0x0000000000000000, 0x96c1ba0aaa9060cd, 0x06da52460db752f1, 0x901be84ca727323c, + 0x0db4a48c1b6ea5e2, 0x9b751e86b1fec52f, 0x0b6ef6ca16d9f713, 0x9daf4cc0bc4997de, + 0x1b69491836dd4bc4, 0x8da8f3129c4d2b09, 0x1db31b5e3b6a1935, 0x8b72a15491fa79f8, + 0x16dded942db3ee26, 0x801c579e87238eeb, 0x1007bfd22004bcd7, 0x86c605d88a94dc1a, + 0x36d292306dba9788, 0xa013283ac72af745, 0x3008c076600dc579, 0xa6c97a7cca9da5b4, + 0x3b6636bc76d4326a, 0xada78cb6dc4452a7, 0x3dbc64fa7b63609b, 0xab7ddef0d1f30056, + 0x2dbbdb285b67dc4c, 0xbb7a6122f1f7bc81, 0x2b61896e56d08ebd, 0xbda03364fc40ee70, + 0x200f7fa4400979ae, 0xb6cec5aeea991963, 0x26d52de24dbe2b5f, 0xb01497e8e72e4b92, + 0x6da52460db752f10, 0xfb649e6a71e54fdd, 0x6b7f7626d6c27de1, 0xfdbecc2c7c521d2c, + 0x601180ecc01b8af2, 0xf6d03ae66a8bea3f, 0x66cbd2aacdacd803, 0xf00a68a0673cb8ce, + 0x76cc6d78eda864d4, 0xe00dd77247380419, 0x70163f3ee01f3625, 0xe6d785344a8f56e8, + 0x7b78c9f4f6c6c136, 0xedb973fe5c56a1fb, 0x7da29bb2fb7193c7, 0xeb6321b851e1f30a, + 0x5b77b650b6cfb898, 0xcdb60c5a1c5fd855, 0x5dade416bb78ea69, 0xcb6c5e1c11e88aa4, + 0x56c312dcada11d7a, 0xc002a8d607317db7, 0x5019409aa0164f8b, 0xc6d8fa900a862f46, + 0x401eff488012f35c, 0xd6df45422a829391, 0x46c4ad0e8da5a1ad, 0xd00517042735c160, + 0x4daa5bc49b7c56be, 0xdb6be1ce31ec3673, 0x4b70098296cb044f, 0xddb1b3883c5b6482, + 0xdb4a48c1b6ea5e20, 0x4d8bf2cb1c7a3eed, 0xdd901a87bb5d0cd1, 0x4b51a08d11cd6c1c, + 0xd6feec4dad84fbc2, 0x403f564707149b0f, 0xd024be0ba033a933, 0x46e504010aa3c9fe, + 0xc02301d9803715e4, 0x56e2bbd32aa77529, 0xc6f9539f8d804715, 0x5038e995271027d8, + 0xcd97a5559b59b006, 0x5b561f5f31c9d0cb, 0xcb4df71396eee2f7, 0x5d8c4d193c7e823a, + 0xed98daf1db50c9a8, 0x7b5960fb71c0a965, 0xeb4288b7d6e79b59, 0x7d8332bd7c77fb94, + 0xe02c7e7dc03e6c4a, 0x76edc4776aae0c87, 0xe6f62c3bcd893ebb, 0x7037963167195e76, + 0xf6f193e9ed8d826c, 0x603029e3471de2a1, 0xf02bc1afe03ad09d, 0x66ea7ba54aaab050, + 0xfb453765f6e3278e, 0x6d848d6f5c734743, 0xfd9f6523fb54757f, 0x6b5edf2951c415b2, + 0xb6ef6ca16d9f7130, 0x202ed6abc70f11fd, 0xb0353ee7602823c1, 0x26f484edcab8430c, + 0xbb5bc82d76f1d4d2, 0x2d9a7227dc61b41f, 0xbd819a6b7b468623, 0x2b402061d1d6e6ee, + 0xad8625b95b423af4, 0x3b479fb3f1d25a39, 0xab5c77ff56f56805, 0x3d9dcdf5fc6508c8, + 0xa0328135402c9f16, 0x36f33b3feabcffdb, 0xa6e8d3734d9bcde7, 0x30296979e70bad2a, + 0x803dfe910025e6b8, 0x16fc449baab58675, 0x86e7acd70d92b449, 0x102616dda702d484, + 0x8d895a1d1b4b435a, 0x1b48e017b1db2397, 0x8b53085b16fc11ab, 0x1d92b251bc6c7166, + 0x9b54b78936f8ad7c, 0x0d950d839c68cdb1, 0x9d8ee5cf3b4fff8d, 0x0b4f5fc591df9f40, + 0x96e013052d96089e, 0x0021a90f87066853, 0x903a414320215a6f, 0x06fbfb498ab13aa2, + 0x9dcdb7d035432f2b, 0x0b0c0dda9fd34fe6, 0x9b17e59638f47dda, 0x0dd65f9c92641d17, + 0x9079135c2e2d8ac9, 0x06b8a95684bdea04, 0x96a3411a239ad838, 0x0062fb10890ab8f5, + 0x86a4fec8039e64ef, 0x106544c2a90e0422, 0x807eac8e0e29361e, 0x16bf1684a4b956d3, + 0x8b105a4418f0c10d, 0x1dd1e04eb260a1c0, 0x8dca0802154793fc, 0x1b0bb208bfd7f331, + 0xab1f25e058f9b8a3, 0x3dde9feaf269d86e, 0xadc577a6554eea52, 0x3b04cdacffde8a9f, + 0xa6ab816c43971d41, 0x306a3b66e9077d8c, 0xa071d32a4e204fb0, 0x36b06920e4b02f7d, + 0xb0766cf86e24f367, 0x26b7d6f2c4b493aa, 0xb6ac3ebe6393a196, 0x206d84b4c903c15b, + 0xbdc2c874754a5685, 0x2b03727edfda3648, 0xbb189a3278fd0474, 0x2dd92038d26d64b9, + 0xf06893b0ee36003b, 0x66a929ba44a660f6, 0xf6b2c1f6e38152ca, 0x60737bfc49113207, + 0xfddc373cf558a5d9, 0x6b1d8d365fc8c514, 0xfb06657af8eff728, 0x6dc7df70527f97e5, + 0xeb01daa8d8eb4bff, 0x7dc060a2727b2b32, 0xeddb88eed55c190e, 0x7b1a32e47fcc79c3, + 0xe6b57e24c385ee1d, 0x7074c42e69158ed0, 0xe06f2c62ce32bcec, 0x76ae966864a2dc21, + 0xc6ba0180838c97b3, 0x507bbb8a291cf77e, 0xc06053c68e3bc542, 0x56a1e9cc24aba58f, + 0xcb0ea50c98e23251, 0x5dcf1f063272529c, 0xcdd4f74a955560a0, 0x5b154d403fc5006d, + 0xddd34898b551dc77, 0x4b12f2921fc1bcba, 0xdb091adeb8e68e86, 0x4dc8a0d41276ee4b, + 0xd067ec14ae3f7995, 0x46a6561e04af1958, 0xd6bdbe52a3882b64, 0x407c045809184ba9, + 0x4687ff1183a9710b, 0xd046451b293911c6, 0x405dad578e1e23fa, 0xd69c175d248e4337, + 0x4b335b9d98c7d4e9, 0xddf2e1973257b424, 0x4de909db95708618, 0xdb28b3d13fe0e6d5, + 0x5deeb609b5743acf, 0xcb2f0c031fe45a02, 0x5b34e44fb8c3683e, 0xcdf55e45125308f3, + 0x505a1285ae1a9f2d, 0xc69ba88f048affe0, 0x568040c3a3adcddc, 0xc041fac9093dad11, + 0x70556d21ee13e683, 0xe694d72b4483864e, 0x768f3f67e3a4b472, 0xe04e856d4934d4bf, + 0x7de1c9adf57d4361, 0xeb2073a75fed23ac, 0x7b3b9bebf8ca1190, 0xedfa21e1525a715d, + 0x6b3c2439d8cead47, 0xfdfd9e33725ecd8a, 0x6de6767fd579ffb6, 0xfb27cc757fe99f7b, + 0x668880b5c3a008a5, 0xf0493abf69306868, 0x6052d2f3ce175a54, 0xf69368f964873a99, + 0x2b22db7158dc5e1b, 0xbde3617bf24c3ed6, 0x2df88937556b0cea, 0xbb39333dfffb6c27, + 0x26967ffd43b2fbf9, 0xb057c5f7e9229b34, 0x204c2dbb4e05a908, 0xb68d97b1e495c9c5, + 0x304b92696e0115df, 0xa68a2863c4917512, 0x3691c02f63b6472e, 0xa0507a25c92627e3, + 0x3dff36e5756fb03d, 0xab3e8cefdfffd0f0, 0x3b2564a378d8e2cc, 0xade4dea9d2488201, + 0x1df049413566c993, 0x8b31f34b9ff6a95e, 0x1b2a1b0738d19b62, 0x8deba10d9241fbaf, + 0x1044edcd2e086c71, 0x868557c784980cbc, 0x169ebf8b23bf3e80, 0x805f0581892f5e4d, + 0x0699005903bb8257, 0x9058ba53a92be29a, 0x0043521f0e0cd0a6, 0x9682e815a49cb06b, + 0x0b2da4d518d527b5, 0x9dec1edfb2454778, 0x0df7f69315627544, 0x9b364c99bff21589, + }, + { + 0x0000000000000000, 0x5b88f1211cefb539, 0xb711e24239df6a72, 0xec9913632530df4b, + 0x457ae2d72b29478f, 0x1ef213f637c6f2b6, 0xf26b009512f62dfd, 0xa9e3f1b40e1998c4, + 0x8af5c5ae56528f1e, 0xd17d348f4abd3a27, 0x3de427ec6f8de56c, 0x666cd6cd73625055, + 0xcf8f27797d7bc891, 0x9407d65861947da8, 0x789ec53b44a4a2e3, 0x2316341a584b17da, + 0x3eb2ad0ff4328d57, 0x653a5c2ee8dd386e, 0x89a34f4dcdede725, 0xd22bbe6cd102521c, + 0x7bc84fd8df1bcad8, 0x2040bef9c3f47fe1, 0xccd9ad9ae6c4a0aa, 0x97515cbbfa2b1593, + 0xb44768a1a2600249, 0xefcf9980be8fb770, 0x03568ae39bbf683b, 0x58de7bc28750dd02, + 0xf13d8a76894945c6, 0xaab57b5795a6f0ff, 0x462c6834b0962fb4, 0x1da49915ac799a8d, + 0x7d655a1fe8651aae, 0x26edab3ef48aaf97, 0xca74b85dd1ba70dc, 0x91fc497ccd55c5e5, + 0x381fb8c8c34c5d21, 0x639749e9dfa3e818, 0x8f0e5a8afa933753, 0xd486ababe67c826a, + 0xf7909fb1be3795b0, 0xac186e90a2d82089, 0x40817df387e8ffc2, 0x1b098cd29b074afb, + 0xb2ea7d66951ed23f, 0xe9628c4789f16706, 0x05fb9f24acc1b84d, 0x5e736e05b02e0d74, + 0x43d7f7101c5797f9, 0x185f063100b822c0, 0xf4c615522588fd8b, 0xaf4ee473396748b2, + 0x06ad15c7377ed076, 0x5d25e4e62b91654f, 0xb1bcf7850ea1ba04, 0xea3406a4124e0f3d, + 0xc92232be4a0518e7, 0x92aac39f56eaadde, 0x7e33d0fc73da7295, 0x25bb21dd6f35c7ac, + 0x8c58d069612c5f68, 0xd7d021487dc3ea51, 0x3b49322b58f3351a, 0x60c1c30a441c8023, + 0xfacab43fd0ca355c, 0xa142451ecc258065, 0x4ddb567de9155f2e, 0x1653a75cf5faea17, + 0xbfb056e8fbe372d3, 0xe438a7c9e70cc7ea, 0x08a1b4aac23c18a1, 0x5329458bded3ad98, + 0x703f71918698ba42, 0x2bb780b09a770f7b, 0xc72e93d3bf47d030, 0x9ca662f2a3a86509, + 0x35459346adb1fdcd, 0x6ecd6267b15e48f4, 0x82547104946e97bf, 0xd9dc802588812286, + 0xc478193024f8b80b, 0x9ff0e81138170d32, 0x7369fb721d27d279, 0x28e10a5301c86740, + 0x8102fbe70fd1ff84, 0xda8a0ac6133e4abd, 0x361319a5360e95f6, 0x6d9be8842ae120cf, + 0x4e8ddc9e72aa3715, 0x15052dbf6e45822c, 0xf99c3edc4b755d67, 0xa214cffd579ae85e, + 0x0bf73e495983709a, 0x507fcf68456cc5a3, 0xbce6dc0b605c1ae8, 0xe76e2d2a7cb3afd1, + 0x87afee2038af2ff2, 0xdc271f0124409acb, 0x30be0c6201704580, 0x6b36fd431d9ff0b9, + 0xc2d50cf71386687d, 0x995dfdd60f69dd44, 0x75c4eeb52a59020f, 0x2e4c1f9436b6b736, + 0x0d5a2b8e6efda0ec, 0x56d2daaf721215d5, 0xba4bc9cc5722ca9e, 0xe1c338ed4bcd7fa7, + 0x4820c95945d4e763, 0x13a83878593b525a, 0xff312b1b7c0b8d11, 0xa4b9da3a60e43828, + 0xb91d432fcc9da2a5, 0xe295b20ed072179c, 0x0e0ca16df542c8d7, 0x5584504ce9ad7dee, + 0xfc67a1f8e7b4e52a, 0xa7ef50d9fb5b5013, 0x4b7643bade6b8f58, 0x10feb29bc2843a61, + 0x33e886819acf2dbb, 0x686077a086209882, 0x84f964c3a31047c9, 0xdf7195e2bffff2f0, + 0x76926456b1e66a34, 0x2d1a9577ad09df0d, 0xc183861488390046, 0x9a0b773594d6b57f, + 0xdecc4e2cf903f9d3, 0x8544bf0de5ec4cea, 0x69ddac6ec0dc93a1, 0x32555d4fdc332698, + 0x9bb6acfbd22abe5c, 0xc03e5ddacec50b65, 0x2ca74eb9ebf5d42e, 0x772fbf98f71a6117, + 0x54398b82af5176cd, 0x0fb17aa3b3bec3f4, 0xe32869c0968e1cbf, 0xb8a098e18a61a986, + 0x1143695584783142, 0x4acb98749897847b, 0xa6528b17bda75b30, 0xfdda7a36a148ee09, + 0xe07ee3230d317484, 0xbbf6120211dec1bd, 0x576f016134ee1ef6, 0x0ce7f0402801abcf, + 0xa50401f42618330b, 0xfe8cf0d53af78632, 0x1215e3b61fc75979, 0x499d12970328ec40, + 0x6a8b268d5b63fb9a, 0x3103d7ac478c4ea3, 0xdd9ac4cf62bc91e8, 0x861235ee7e5324d1, + 0x2ff1c45a704abc15, 0x7479357b6ca5092c, 0x98e026184995d667, 0xc368d739557a635e, + 0xa3a914331166e37d, 0xf821e5120d895644, 0x14b8f67128b9890f, 0x4f30075034563c36, + 0xe6d3f6e43a4fa4f2, 0xbd5b07c526a011cb, 0x51c214a60390ce80, 0x0a4ae5871f7f7bb9, + 0x295cd19d47346c63, 0x72d420bc5bdbd95a, 0x9e4d33df7eeb0611, 0xc5c5c2fe6204b328, + 0x6c26334a6c1d2bec, 0x37aec26b70f29ed5, 0xdb37d10855c2419e, 0x80bf2029492df4a7, + 0x9d1bb93ce5546e2a, 0xc693481df9bbdb13, 0x2a0a5b7edc8b0458, 0x7182aa5fc064b161, + 0xd8615bebce7d29a5, 0x83e9aacad2929c9c, 0x6f70b9a9f7a243d7, 0x34f84888eb4df6ee, + 0x17ee7c92b306e134, 0x4c668db3afe9540d, 0xa0ff9ed08ad98b46, 0xfb776ff196363e7f, + 0x52949e45982fa6bb, 0x091c6f6484c01382, 0xe5857c07a1f0ccc9, 0xbe0d8d26bd1f79f0, + 0x2406fa1329c9cc8f, 0x7f8e0b32352679b6, 0x931718511016a6fd, 0xc89fe9700cf913c4, + 0x617c18c402e08b00, 0x3af4e9e51e0f3e39, 0xd66dfa863b3fe172, 0x8de50ba727d0544b, + 0xaef33fbd7f9b4391, 0xf57bce9c6374f6a8, 0x19e2ddff464429e3, 0x426a2cde5aab9cda, + 0xeb89dd6a54b2041e, 0xb0012c4b485db127, 0x5c983f286d6d6e6c, 0x0710ce097182db55, + 0x1ab4571cddfb41d8, 0x413ca63dc114f4e1, 0xada5b55ee4242baa, 0xf62d447ff8cb9e93, + 0x5fceb5cbf6d20657, 0x044644eaea3db36e, 0xe8df5789cf0d6c25, 0xb357a6a8d3e2d91c, + 0x904192b28ba9cec6, 0xcbc9639397467bff, 0x275070f0b276a4b4, 0x7cd881d1ae99118d, + 0xd53b7065a0808949, 0x8eb38144bc6f3c70, 0x622a9227995fe33b, 0x39a2630685b05602, + 0x5963a00cc1acd621, 0x02eb512ddd436318, 0xee72424ef873bc53, 0xb5fab36fe49c096a, + 0x1c1942dbea8591ae, 0x4791b3faf66a2497, 0xab08a099d35afbdc, 0xf08051b8cfb54ee5, + 0xd39665a297fe593f, 0x881e94838b11ec06, 0x648787e0ae21334d, 0x3f0f76c1b2ce8674, + 0x96ec8775bcd71eb0, 0xcd647654a038ab89, 0x21fd6537850874c2, 0x7a75941699e7c1fb, + 0x67d10d03359e5b76, 0x3c59fc222971ee4f, 0xd0c0ef410c413104, 0x8b481e6010ae843d, + 0x22abefd41eb71cf9, 0x79231ef50258a9c0, 0x95ba0d962768768b, 0xce32fcb73b87c3b2, + 0xed24c8ad63ccd468, 0xb6ac398c7f236151, 0x5a352aef5a13be1a, 0x01bddbce46fc0b23, + 0xa85e2a7a48e593e7, 0xf3d6db5b540a26de, 0x1f4fc838713af995, 0x44c739196dd54cac, + }, + { + 0x0000000000000000, 0x56b215c1e0ff283a, 0xad642b83c1fe5074, 0xfbd63e422101784e, + 0x71917154db6b3383, 0x272364953b941bb9, 0xdcf55ad71a9563f7, 0x8a474f16fa6a4bcd, + 0xe322e2a9b6d66706, 0xb590f76856294f3c, 0x4e46c92a77283772, 0x18f4dceb97d71f48, + 0x92b393fd6dbd5485, 0xc401863c8d427cbf, 0x3fd7b87eac4304f1, 0x6965adbf4cbc2ccb, + 0xed1ce300353b5d67, 0xbbaef6c1d5c4755d, 0x4078c883f4c50d13, 0x16cadd42143a2529, + 0x9c8d9254ee506ee4, 0xca3f87950eaf46de, 0x31e9b9d72fae3e90, 0x675bac16cf5116aa, + 0x0e3e01a983ed3a61, 0x588c14686312125b, 0xa35a2a2a42136a15, 0xf5e83feba2ec422f, + 0x7faf70fd588609e2, 0x291d653cb87921d8, 0xd2cb5b7e99785996, 0x84794ebf798771ac, + 0xf160e05332e129a5, 0xa7d2f592d21e019f, 0x5c04cbd0f31f79d1, 0x0ab6de1113e051eb, + 0x80f19107e98a1a26, 0xd64384c60975321c, 0x2d95ba8428744a52, 0x7b27af45c88b6268, + 0x124202fa84374ea3, 0x44f0173b64c86699, 0xbf26297945c91ed7, 0xe9943cb8a53636ed, + 0x63d373ae5f5c7d20, 0x3561666fbfa3551a, 0xceb7582d9ea22d54, 0x98054dec7e5d056e, + 0x1c7c035307da74c2, 0x4ace1692e7255cf8, 0xb11828d0c62424b6, 0xe7aa3d1126db0c8c, + 0x6ded7207dcb14741, 0x3b5f67c63c4e6f7b, 0xc08959841d4f1735, 0x963b4c45fdb03f0f, + 0xff5ee1fab10c13c4, 0xa9ecf43b51f33bfe, 0x523aca7970f243b0, 0x0488dfb8900d6b8a, + 0x8ecf90ae6a672047, 0xd87d856f8a98087d, 0x23abbb2dab997033, 0x7519aeec4b665809, + 0xc998e6f53d55c021, 0x9f2af334ddaae81b, 0x64fccd76fcab9055, 0x324ed8b71c54b86f, + 0xb80997a1e63ef3a2, 0xeebb826006c1db98, 0x156dbc2227c0a3d6, 0x43dfa9e3c73f8bec, + 0x2aba045c8b83a727, 0x7c08119d6b7c8f1d, 0x87de2fdf4a7df753, 0xd16c3a1eaa82df69, + 0x5b2b750850e894a4, 0x0d9960c9b017bc9e, 0xf64f5e8b9116c4d0, 0xa0fd4b4a71e9ecea, + 0x248405f5086e9d46, 0x72361034e891b57c, 0x89e02e76c990cd32, 0xdf523bb7296fe508, + 0x551574a1d305aec5, 0x03a7616033fa86ff, 0xf8715f2212fbfeb1, 0xaec34ae3f204d68b, + 0xc7a6e75cbeb8fa40, 0x9114f29d5e47d27a, 0x6ac2ccdf7f46aa34, 0x3c70d91e9fb9820e, + 0xb637960865d3c9c3, 0xe08583c9852ce1f9, 0x1b53bd8ba42d99b7, 0x4de1a84a44d2b18d, + 0x38f806a60fb4e984, 0x6e4a1367ef4bc1be, 0x959c2d25ce4ab9f0, 0xc32e38e42eb591ca, + 0x496977f2d4dfda07, 0x1fdb62333420f23d, 0xe40d5c7115218a73, 0xb2bf49b0f5dea249, + 0xdbdae40fb9628e82, 0x8d68f1ce599da6b8, 0x76becf8c789cdef6, 0x200cda4d9863f6cc, + 0xaa4b955b6209bd01, 0xfcf9809a82f6953b, 0x072fbed8a3f7ed75, 0x519dab194308c54f, + 0xd5e4e5a63a8fb4e3, 0x8356f067da709cd9, 0x7880ce25fb71e497, 0x2e32dbe41b8eccad, + 0xa47594f2e1e48760, 0xf2c78133011baf5a, 0x0911bf71201ad714, 0x5fa3aab0c0e5ff2e, + 0x36c6070f8c59d3e5, 0x607412ce6ca6fbdf, 0x9ba22c8c4da78391, 0xcd10394dad58abab, + 0x4757765b5732e066, 0x11e5639ab7cdc85c, 0xea335dd896ccb012, 0xbc81481976339828, + 0xb868ebb9223c1329, 0xeedafe78c2c33b13, 0x150cc03ae3c2435d, 0x43bed5fb033d6b67, + 0xc9f99aedf95720aa, 0x9f4b8f2c19a80890, 0x649db16e38a970de, 0x322fa4afd85658e4, + 0x5b4a091094ea742f, 0x0df81cd174155c15, 0xf62e22935514245b, 0xa09c3752b5eb0c61, + 0x2adb78444f8147ac, 0x7c696d85af7e6f96, 0x87bf53c78e7f17d8, 0xd10d46066e803fe2, + 0x557408b917074e4e, 0x03c61d78f7f86674, 0xf810233ad6f91e3a, 0xaea236fb36063600, + 0x24e579edcc6c7dcd, 0x72576c2c2c9355f7, 0x8981526e0d922db9, 0xdf3347afed6d0583, + 0xb656ea10a1d12948, 0xe0e4ffd1412e0172, 0x1b32c193602f793c, 0x4d80d45280d05106, + 0xc7c79b447aba1acb, 0x91758e859a4532f1, 0x6aa3b0c7bb444abf, 0x3c11a5065bbb6285, + 0x49080bea10dd3a8c, 0x1fba1e2bf02212b6, 0xe46c2069d1236af8, 0xb2de35a831dc42c2, + 0x38997abecbb6090f, 0x6e2b6f7f2b492135, 0x95fd513d0a48597b, 0xc34f44fceab77141, + 0xaa2ae943a60b5d8a, 0xfc98fc8246f475b0, 0x074ec2c067f50dfe, 0x51fcd701870a25c4, + 0xdbbb98177d606e09, 0x8d098dd69d9f4633, 0x76dfb394bc9e3e7d, 0x206da6555c611647, + 0xa414e8ea25e667eb, 0xf2a6fd2bc5194fd1, 0x0970c369e418379f, 0x5fc2d6a804e71fa5, + 0xd58599befe8d5468, 0x83378c7f1e727c52, 0x78e1b23d3f73041c, 0x2e53a7fcdf8c2c26, + 0x47360a43933000ed, 0x11841f8273cf28d7, 0xea5221c052ce5099, 0xbce03401b23178a3, + 0x36a77b17485b336e, 0x60156ed6a8a41b54, 0x9bc3509489a5631a, 0xcd714555695a4b20, + 0x71f00d4c1f69d308, 0x2742188dff96fb32, 0xdc9426cfde97837c, 0x8a26330e3e68ab46, + 0x00617c18c402e08b, 0x56d369d924fdc8b1, 0xad05579b05fcb0ff, 0xfbb7425ae50398c5, + 0x92d2efe5a9bfb40e, 0xc460fa2449409c34, 0x3fb6c4666841e47a, 0x6904d1a788becc40, + 0xe3439eb172d4878d, 0xb5f18b70922bafb7, 0x4e27b532b32ad7f9, 0x1895a0f353d5ffc3, + 0x9cecee4c2a528e6f, 0xca5efb8dcaada655, 0x3188c5cfebacde1b, 0x673ad00e0b53f621, + 0xed7d9f18f139bdec, 0xbbcf8ad911c695d6, 0x4019b49b30c7ed98, 0x16aba15ad038c5a2, + 0x7fce0ce59c84e969, 0x297c19247c7bc153, 0xd2aa27665d7ab91d, 0x841832a7bd859127, + 0x0e5f7db147efdaea, 0x58ed6870a710f2d0, 0xa33b563286118a9e, 0xf58943f366eea2a4, + 0x8090ed1f2d88faad, 0xd622f8decd77d297, 0x2df4c69cec76aad9, 0x7b46d35d0c8982e3, + 0xf1019c4bf6e3c92e, 0xa7b3898a161ce114, 0x5c65b7c8371d995a, 0x0ad7a209d7e2b160, + 0x63b20fb69b5e9dab, 0x35001a777ba1b591, 0xced624355aa0cddf, 0x986431f4ba5fe5e5, + 0x12237ee24035ae28, 0x44916b23a0ca8612, 0xbf47556181cbfe5c, 0xe9f540a06134d666, + 0x6d8c0e1f18b3a7ca, 0x3b3e1bdef84c8ff0, 0xc0e8259cd94df7be, 0x965a305d39b2df84, + 0x1c1d7f4bc3d89449, 0x4aaf6a8a2327bc73, 0xb17954c80226c43d, 0xe7cb4109e2d9ec07, + 0x8eaeecb6ae65c0cc, 0xd81cf9774e9ae8f6, 0x23cac7356f9b90b8, 0x7578d2f48f64b882, + 0xff3f9de2750ef34f, 0xa98d882395f1db75, 0x525bb661b4f0a33b, 0x04e9a3a0540f8b01, + }, + { + 0x0000000000000000, 0xd9d7be7d505da32c, 0x98f65aa9f82cd533, 0x4121e4d4a871761f, + 0x1ab59300a8ce390d, 0xc3622d7df8939a21, 0x8243c9a950e2ec3e, 0x5b9477d400bf4f12, + 0x356b2601519c721a, 0xecbc987c01c1d136, 0xad9d7ca8a9b0a729, 0x744ac2d5f9ed0405, + 0x2fdeb501f9524b17, 0xf6090b7ca90fe83b, 0xb728efa8017e9e24, 0x6eff51d551233d08, + 0x6ad64c02a338e434, 0xb301f27ff3654718, 0xf22016ab5b143107, 0x2bf7a8d60b49922b, + 0x7063df020bf6dd39, 0xa9b4617f5bab7e15, 0xe89585abf3da080a, 0x31423bd6a387ab26, + 0x5fbd6a03f2a4962e, 0x866ad47ea2f93502, 0xc74b30aa0a88431d, 0x1e9c8ed75ad5e031, + 0x4508f9035a6aaf23, 0x9cdf477e0a370c0f, 0xddfea3aaa2467a10, 0x04291dd7f21bd93c, + 0xd5ac98054671c868, 0x0c7b2678162c6b44, 0x4d5ac2acbe5d1d5b, 0x948d7cd1ee00be77, + 0xcf190b05eebff165, 0x16ceb578bee25249, 0x57ef51ac16932456, 0x8e38efd146ce877a, + 0xe0c7be0417edba72, 0x3910007947b0195e, 0x7831e4adefc16f41, 0xa1e65ad0bf9ccc6d, + 0xfa722d04bf23837f, 0x23a59379ef7e2053, 0x628477ad470f564c, 0xbb53c9d01752f560, + 0xbf7ad407e5492c5c, 0x66ad6a7ab5148f70, 0x278c8eae1d65f96f, 0xfe5b30d34d385a43, + 0xa5cf47074d871551, 0x7c18f97a1ddab67d, 0x3d391daeb5abc062, 0xe4eea3d3e5f6634e, + 0x8a11f206b4d55e46, 0x53c64c7be488fd6a, 0x12e7a8af4cf98b75, 0xcb3016d21ca42859, + 0x90a461061c1b674b, 0x4973df7b4c46c467, 0x08523bafe437b278, 0xd18585d2b46a1154, + 0x80001659d47403bb, 0x59d7a8248429a097, 0x18f64cf02c58d688, 0xc121f28d7c0575a4, + 0x9ab585597cba3ab6, 0x43623b242ce7999a, 0x0243dff08496ef85, 0xdb94618dd4cb4ca9, + 0xb56b305885e871a1, 0x6cbc8e25d5b5d28d, 0x2d9d6af17dc4a492, 0xf44ad48c2d9907be, + 0xafdea3582d2648ac, 0x76091d257d7beb80, 0x3728f9f1d50a9d9f, 0xeeff478c85573eb3, + 0xead65a5b774ce78f, 0x3301e426271144a3, 0x722000f28f6032bc, 0xabf7be8fdf3d9190, + 0xf063c95bdf82de82, 0x29b477268fdf7dae, 0x689593f227ae0bb1, 0xb1422d8f77f3a89d, + 0xdfbd7c5a26d09595, 0x066ac227768d36b9, 0x474b26f3defc40a6, 0x9e9c988e8ea1e38a, + 0xc508ef5a8e1eac98, 0x1cdf5127de430fb4, 0x5dfeb5f3763279ab, 0x84290b8e266fda87, + 0x55ac8e5c9205cbd3, 0x8c7b3021c25868ff, 0xcd5ad4f56a291ee0, 0x148d6a883a74bdcc, + 0x4f191d5c3acbf2de, 0x96cea3216a9651f2, 0xd7ef47f5c2e727ed, 0x0e38f98892ba84c1, + 0x60c7a85dc399b9c9, 0xb910162093c41ae5, 0xf831f2f43bb56cfa, 0x21e64c896be8cfd6, + 0x7a723b5d6b5780c4, 0xa3a585203b0a23e8, 0xe28461f4937b55f7, 0x3b53df89c326f6db, + 0x3f7ac25e313d2fe7, 0xe6ad7c2361608ccb, 0xa78c98f7c911fad4, 0x7e5b268a994c59f8, + 0x25cf515e99f316ea, 0xfc18ef23c9aeb5c6, 0xbd390bf761dfc3d9, 0x64eeb58a318260f5, + 0x0a11e45f60a15dfd, 0xd3c65a2230fcfed1, 0x92e7bef6988d88ce, 0x4b30008bc8d02be2, + 0x10a4775fc86f64f0, 0xc973c9229832c7dc, 0x88522df63043b1c3, 0x5185938b601e12ef, + 0x2b590ae0f07f941d, 0xf28eb49da0223731, 0xb3af50490853412e, 0x6a78ee34580ee202, + 0x31ec99e058b1ad10, 0xe83b279d08ec0e3c, 0xa91ac349a09d7823, 0x70cd7d34f0c0db0f, + 0x1e322ce1a1e3e607, 0xc7e5929cf1be452b, 0x86c4764859cf3334, 0x5f13c83509929018, + 0x0487bfe1092ddf0a, 0xdd50019c59707c26, 0x9c71e548f1010a39, 0x45a65b35a15ca915, + 0x418f46e253477029, 0x9858f89f031ad305, 0xd9791c4bab6ba51a, 0x00aea236fb360636, + 0x5b3ad5e2fb894924, 0x82ed6b9fabd4ea08, 0xc3cc8f4b03a59c17, 0x1a1b313653f83f3b, + 0x74e460e302db0233, 0xad33de9e5286a11f, 0xec123a4afaf7d700, 0x35c58437aaaa742c, + 0x6e51f3e3aa153b3e, 0xb7864d9efa489812, 0xf6a7a94a5239ee0d, 0x2f70173702644d21, + 0xfef592e5b60e5c75, 0x27222c98e653ff59, 0x6603c84c4e228946, 0xbfd476311e7f2a6a, + 0xe44001e51ec06578, 0x3d97bf984e9dc654, 0x7cb65b4ce6ecb04b, 0xa561e531b6b11367, + 0xcb9eb4e4e7922e6f, 0x12490a99b7cf8d43, 0x5368ee4d1fbefb5c, 0x8abf50304fe35870, + 0xd12b27e44f5c1762, 0x08fc99991f01b44e, 0x49dd7d4db770c251, 0x900ac330e72d617d, + 0x9423dee71536b841, 0x4df4609a456b1b6d, 0x0cd5844eed1a6d72, 0xd5023a33bd47ce5e, + 0x8e964de7bdf8814c, 0x5741f39aeda52260, 0x1660174e45d4547f, 0xcfb7a9331589f753, + 0xa148f8e644aaca5b, 0x789f469b14f76977, 0x39bea24fbc861f68, 0xe0691c32ecdbbc44, + 0xbbfd6be6ec64f356, 0x622ad59bbc39507a, 0x230b314f14482665, 0xfadc8f3244158549, + 0xab591cb9240b97a6, 0x728ea2c47456348a, 0x33af4610dc274295, 0xea78f86d8c7ae1b9, + 0xb1ec8fb98cc5aeab, 0x683b31c4dc980d87, 0x291ad51074e97b98, 0xf0cd6b6d24b4d8b4, + 0x9e323ab87597e5bc, 0x47e584c525ca4690, 0x06c460118dbb308f, 0xdf13de6cdde693a3, + 0x8487a9b8dd59dcb1, 0x5d5017c58d047f9d, 0x1c71f31125750982, 0xc5a64d6c7528aaae, + 0xc18f50bb87337392, 0x1858eec6d76ed0be, 0x59790a127f1fa6a1, 0x80aeb46f2f42058d, + 0xdb3ac3bb2ffd4a9f, 0x02ed7dc67fa0e9b3, 0x43cc9912d7d19fac, 0x9a1b276f878c3c80, + 0xf4e476bad6af0188, 0x2d33c8c786f2a2a4, 0x6c122c132e83d4bb, 0xb5c5926e7ede7797, + 0xee51e5ba7e613885, 0x37865bc72e3c9ba9, 0x76a7bf13864dedb6, 0xaf70016ed6104e9a, + 0x7ef584bc627a5fce, 0xa7223ac13227fce2, 0xe603de159a568afd, 0x3fd46068ca0b29d1, + 0x644017bccab466c3, 0xbd97a9c19ae9c5ef, 0xfcb64d153298b3f0, 0x2561f36862c510dc, + 0x4b9ea2bd33e62dd4, 0x92491cc063bb8ef8, 0xd368f814cbcaf8e7, 0x0abf46699b975bcb, + 0x512b31bd9b2814d9, 0x88fc8fc0cb75b7f5, 0xc9dd6b146304c1ea, 0x100ad569335962c6, + 0x1423c8bec142bbfa, 0xcdf476c3911f18d6, 0x8cd59217396e6ec9, 0x55022c6a6933cde5, + 0x0e965bbe698c82f7, 0xd741e5c339d121db, 0x9660011791a057c4, 0x4fb7bf6ac1fdf4e8, + 0x2148eebf90dec9e0, 0xf89f50c2c0836acc, 0xb9beb41668f21cd3, 0x60690a6b38afbfff, + 0x3bfd7dbf3810f0ed, 0xe22ac3c2684d53c1, 0xa30b2716c03c25de, 0x7adc996b906186f2, + }, +}; diff --git a/ext/digest/crc64_xz/crc64_xz.c b/ext/digest/crc64_xz/crc64_xz.c index c076512..e31aaae 100644 --- a/ext/digest/crc64_xz/crc64_xz.c +++ b/ext/digest/crc64_xz/crc64_xz.c @@ -15,86 +15,39 @@ */ #include "crc64_xz.h" - -/** - * Static table used for the table_driven implementation. - */ -static const crc64_t crc64_table[256] = { - 0x0000000000000000, 0xb32e4cbe03a75f6f, 0xf4843657a840a05b, 0x47aa7ae9abe7ff34, - 0x7bd0c384ff8f5e33, 0xc8fe8f3afc28015c, 0x8f54f5d357cffe68, 0x3c7ab96d5468a107, - 0xf7a18709ff1ebc66, 0x448fcbb7fcb9e309, 0x0325b15e575e1c3d, 0xb00bfde054f94352, - 0x8c71448d0091e255, 0x3f5f08330336bd3a, 0x78f572daa8d1420e, 0xcbdb3e64ab761d61, - 0x7d9ba13851336649, 0xceb5ed8652943926, 0x891f976ff973c612, 0x3a31dbd1fad4997d, - 0x064b62bcaebc387a, 0xb5652e02ad1b6715, 0xf2cf54eb06fc9821, 0x41e11855055bc74e, - 0x8a3a2631ae2dda2f, 0x39146a8fad8a8540, 0x7ebe1066066d7a74, 0xcd905cd805ca251b, - 0xf1eae5b551a2841c, 0x42c4a90b5205db73, 0x056ed3e2f9e22447, 0xb6409f5cfa457b28, - 0xfb374270a266cc92, 0x48190ecea1c193fd, 0x0fb374270a266cc9, 0xbc9d3899098133a6, - 0x80e781f45de992a1, 0x33c9cd4a5e4ecdce, 0x7463b7a3f5a932fa, 0xc74dfb1df60e6d95, - 0x0c96c5795d7870f4, 0xbfb889c75edf2f9b, 0xf812f32ef538d0af, 0x4b3cbf90f69f8fc0, - 0x774606fda2f72ec7, 0xc4684a43a15071a8, 0x83c230aa0ab78e9c, 0x30ec7c140910d1f3, - 0x86ace348f355aadb, 0x3582aff6f0f2f5b4, 0x7228d51f5b150a80, 0xc10699a158b255ef, - 0xfd7c20cc0cdaf4e8, 0x4e526c720f7dab87, 0x09f8169ba49a54b3, 0xbad65a25a73d0bdc, - 0x710d64410c4b16bd, 0xc22328ff0fec49d2, 0x85895216a40bb6e6, 0x36a71ea8a7ace989, - 0x0adda7c5f3c4488e, 0xb9f3eb7bf06317e1, 0xfe5991925b84e8d5, 0x4d77dd2c5823b7ba, - 0x64b62bcaebc387a1, 0xd7986774e864d8ce, 0x90321d9d438327fa, 0x231c512340247895, - 0x1f66e84e144cd992, 0xac48a4f017eb86fd, 0xebe2de19bc0c79c9, 0x58cc92a7bfab26a6, - 0x9317acc314dd3bc7, 0x2039e07d177a64a8, 0x67939a94bc9d9b9c, 0xd4bdd62abf3ac4f3, - 0xe8c76f47eb5265f4, 0x5be923f9e8f53a9b, 0x1c4359104312c5af, 0xaf6d15ae40b59ac0, - 0x192d8af2baf0e1e8, 0xaa03c64cb957be87, 0xeda9bca512b041b3, 0x5e87f01b11171edc, - 0x62fd4976457fbfdb, 0xd1d305c846d8e0b4, 0x96797f21ed3f1f80, 0x2557339fee9840ef, - 0xee8c0dfb45ee5d8e, 0x5da24145464902e1, 0x1a083bacedaefdd5, 0xa9267712ee09a2ba, - 0x955cce7fba6103bd, 0x267282c1b9c65cd2, 0x61d8f8281221a3e6, 0xd2f6b4961186fc89, - 0x9f8169ba49a54b33, 0x2caf25044a02145c, 0x6b055fede1e5eb68, 0xd82b1353e242b407, - 0xe451aa3eb62a1500, 0x577fe680b58d4a6f, 0x10d59c691e6ab55b, 0xa3fbd0d71dcdea34, - 0x6820eeb3b6bbf755, 0xdb0ea20db51ca83a, 0x9ca4d8e41efb570e, 0x2f8a945a1d5c0861, - 0x13f02d374934a966, 0xa0de61894a93f609, 0xe7741b60e174093d, 0x545a57dee2d35652, - 0xe21ac88218962d7a, 0x5134843c1b317215, 0x169efed5b0d68d21, 0xa5b0b26bb371d24e, - 0x99ca0b06e7197349, 0x2ae447b8e4be2c26, 0x6d4e3d514f59d312, 0xde6071ef4cfe8c7d, - 0x15bb4f8be788911c, 0xa6950335e42fce73, 0xe13f79dc4fc83147, 0x521135624c6f6e28, - 0x6e6b8c0f1807cf2f, 0xdd45c0b11ba09040, 0x9aefba58b0476f74, 0x29c1f6e6b3e0301b, - 0xc96c5795d7870f42, 0x7a421b2bd420502d, 0x3de861c27fc7af19, 0x8ec62d7c7c60f076, - 0xb2bc941128085171, 0x0192d8af2baf0e1e, 0x4638a2468048f12a, 0xf516eef883efae45, - 0x3ecdd09c2899b324, 0x8de39c222b3eec4b, 0xca49e6cb80d9137f, 0x7967aa75837e4c10, - 0x451d1318d716ed17, 0xf6335fa6d4b1b278, 0xb199254f7f564d4c, 0x02b769f17cf11223, - 0xb4f7f6ad86b4690b, 0x07d9ba1385133664, 0x4073c0fa2ef4c950, 0xf35d8c442d53963f, - 0xcf273529793b3738, 0x7c0979977a9c6857, 0x3ba3037ed17b9763, 0x888d4fc0d2dcc80c, - 0x435671a479aad56d, 0xf0783d1a7a0d8a02, 0xb7d247f3d1ea7536, 0x04fc0b4dd24d2a59, - 0x3886b22086258b5e, 0x8ba8fe9e8582d431, 0xcc0284772e652b05, 0x7f2cc8c92dc2746a, - 0x325b15e575e1c3d0, 0x8175595b76469cbf, 0xc6df23b2dda1638b, 0x75f16f0cde063ce4, - 0x498bd6618a6e9de3, 0xfaa59adf89c9c28c, 0xbd0fe036222e3db8, 0x0e21ac88218962d7, - 0xc5fa92ec8aff7fb6, 0x76d4de52895820d9, 0x317ea4bb22bfdfed, 0x8250e80521188082, - 0xbe2a516875702185, 0x0d041dd676d77eea, 0x4aae673fdd3081de, 0xf9802b81de97deb1, - 0x4fc0b4dd24d2a599, 0xfceef8632775faf6, 0xbb44828a8c9205c2, 0x086ace348f355aad, - 0x34107759db5dfbaa, 0x873e3be7d8faa4c5, 0xc094410e731d5bf1, 0x73ba0db070ba049e, - 0xb86133d4dbcc19ff, 0x0b4f7f6ad86b4690, 0x4ce50583738cb9a4, 0xffcb493d702be6cb, - 0xc3b1f050244347cc, 0x709fbcee27e418a3, 0x3735c6078c03e797, 0x841b8ab98fa4b8f8, - 0xadda7c5f3c4488e3, 0x1ef430e13fe3d78c, 0x595e4a08940428b8, 0xea7006b697a377d7, - 0xd60abfdbc3cbd6d0, 0x6524f365c06c89bf, 0x228e898c6b8b768b, 0x91a0c532682c29e4, - 0x5a7bfb56c35a3485, 0xe955b7e8c0fd6bea, 0xaeffcd016b1a94de, 0x1dd181bf68bdcbb1, - 0x21ab38d23cd56ab6, 0x9285746c3f7235d9, 0xd52f0e859495caed, 0x6601423b97329582, - 0xd041dd676d77eeaa, 0x636f91d96ed0b1c5, 0x24c5eb30c5374ef1, 0x97eba78ec690119e, - 0xab911ee392f8b099, 0x18bf525d915feff6, 0x5f1528b43ab810c2, 0xec3b640a391f4fad, - 0x27e05a6e926952cc, 0x94ce16d091ce0da3, 0xd3646c393a29f297, 0x604a2087398eadf8, - 0x5c3099ea6de60cff, 0xef1ed5546e415390, 0xa8b4afbdc5a6aca4, 0x1b9ae303c601f3cb, - 0x56ed3e2f9e224471, 0xe5c372919d851b1e, 0xa26908783662e42a, 0x114744c635c5bb45, - 0x2d3dfdab61ad1a42, 0x9e13b115620a452d, 0xd9b9cbfcc9edba19, 0x6a978742ca4ae576, - 0xa14cb926613cf817, 0x1262f598629ba778, 0x55c88f71c97c584c, 0xe6e6c3cfcadb0723, - 0xda9c7aa29eb3a624, 0x69b2361c9d14f94b, 0x2e184cf536f3067f, 0x9d36004b35545910, - 0x2b769f17cf112238, 0x9858d3a9ccb67d57, 0xdff2a94067518263, 0x6cdce5fe64f6dd0c, - 0x50a65c93309e7c0b, 0xe388102d33392364, 0xa4226ac498dedc50, 0x170c267a9b79833f, - 0xdcd7181e300f9e5e, 0x6ff954a033a8c131, 0x28532e49984f3e05, 0x9b7d62f79be8616a, - 0xa707db9acf80c06d, 0x14299724cc279f02, 0x5383edcd67c06036, 0xe0ada17364673f59 -}; +#include "crc64_xz_table.h" crc64_t crc64_xz_update(crc64_t crc, const void *data, size_t data_len) { const unsigned char *d = (const unsigned char *)data; unsigned int tbl_idx; + for (; data_len >= SLICE_SIZE; data_len -= SLICE_SIZE) + { + crc = crc64_xz_table[15][d[ 0] ^ ((crc >> 0) & 0xff)] ^ + crc64_xz_table[14][d[ 1] ^ ((crc >> 8) & 0xff)] ^ + crc64_xz_table[13][d[ 2] ^ ((crc >> 16) & 0xff)] ^ + crc64_xz_table[12][d[ 3] ^ ((crc >> 24) & 0xff)] ^ + crc64_xz_table[11][d[ 4] ^ ((crc >> 32) & 0xff)] ^ + crc64_xz_table[10][d[ 5] ^ ((crc >> 40) & 0xff)] ^ + crc64_xz_table[ 9][d[ 6] ^ ((crc >> 48) & 0xff)] ^ + crc64_xz_table[ 8][d[ 7] ^ ((crc >> 56) & 0xff)] ^ + crc64_xz_table[ 7][d[ 8] ] ^ + crc64_xz_table[ 6][d[ 9] ] ^ + crc64_xz_table[ 5][d[10] ] ^ + crc64_xz_table[ 4][d[11] ] ^ + crc64_xz_table[ 3][d[12] ] ^ + crc64_xz_table[ 2][d[13] ] ^ + crc64_xz_table[ 1][d[14] ] ^ + crc64_xz_table[ 0][d[15] ]; + crc &= 0xffffffffffffffff; + d += SLICE_SIZE; + } + while (data_len--) { tbl_idx = (crc ^ *d) & 0xff; - crc = (crc64_table[tbl_idx] ^ (crc >> 8)) & 0xffffffffffffffff; + crc = (crc64_xz_table[0][tbl_idx] ^ (crc >> 8)) & 0xffffffffffffffff; d++; } diff --git a/ext/digest/crc64_xz/crc64_xz_table.h b/ext/digest/crc64_xz/crc64_xz_table.h new file mode 100644 index 0000000..ef0e950 --- /dev/null +++ b/ext/digest/crc64_xz/crc64_xz_table.h @@ -0,0 +1,1070 @@ +/* + * bitwidth: 64 + * generator polynomial: 0x42f0e1eba9ea3693 + * input bit direction: REFLECT + * slice bytes per iteration: 16 + * slide bits per table: 8 + * + * Generated by: gentable.rb of digest-crc + */ + +#define SLICE_SIZE 16 + +static const uint64_t crc64_xz_table[SLICE_SIZE][256] = { + { + 0x0000000000000000, 0xb32e4cbe03a75f6f, 0xf4843657a840a05b, 0x47aa7ae9abe7ff34, + 0x7bd0c384ff8f5e33, 0xc8fe8f3afc28015c, 0x8f54f5d357cffe68, 0x3c7ab96d5468a107, + 0xf7a18709ff1ebc66, 0x448fcbb7fcb9e309, 0x0325b15e575e1c3d, 0xb00bfde054f94352, + 0x8c71448d0091e255, 0x3f5f08330336bd3a, 0x78f572daa8d1420e, 0xcbdb3e64ab761d61, + 0x7d9ba13851336649, 0xceb5ed8652943926, 0x891f976ff973c612, 0x3a31dbd1fad4997d, + 0x064b62bcaebc387a, 0xb5652e02ad1b6715, 0xf2cf54eb06fc9821, 0x41e11855055bc74e, + 0x8a3a2631ae2dda2f, 0x39146a8fad8a8540, 0x7ebe1066066d7a74, 0xcd905cd805ca251b, + 0xf1eae5b551a2841c, 0x42c4a90b5205db73, 0x056ed3e2f9e22447, 0xb6409f5cfa457b28, + 0xfb374270a266cc92, 0x48190ecea1c193fd, 0x0fb374270a266cc9, 0xbc9d3899098133a6, + 0x80e781f45de992a1, 0x33c9cd4a5e4ecdce, 0x7463b7a3f5a932fa, 0xc74dfb1df60e6d95, + 0x0c96c5795d7870f4, 0xbfb889c75edf2f9b, 0xf812f32ef538d0af, 0x4b3cbf90f69f8fc0, + 0x774606fda2f72ec7, 0xc4684a43a15071a8, 0x83c230aa0ab78e9c, 0x30ec7c140910d1f3, + 0x86ace348f355aadb, 0x3582aff6f0f2f5b4, 0x7228d51f5b150a80, 0xc10699a158b255ef, + 0xfd7c20cc0cdaf4e8, 0x4e526c720f7dab87, 0x09f8169ba49a54b3, 0xbad65a25a73d0bdc, + 0x710d64410c4b16bd, 0xc22328ff0fec49d2, 0x85895216a40bb6e6, 0x36a71ea8a7ace989, + 0x0adda7c5f3c4488e, 0xb9f3eb7bf06317e1, 0xfe5991925b84e8d5, 0x4d77dd2c5823b7ba, + 0x64b62bcaebc387a1, 0xd7986774e864d8ce, 0x90321d9d438327fa, 0x231c512340247895, + 0x1f66e84e144cd992, 0xac48a4f017eb86fd, 0xebe2de19bc0c79c9, 0x58cc92a7bfab26a6, + 0x9317acc314dd3bc7, 0x2039e07d177a64a8, 0x67939a94bc9d9b9c, 0xd4bdd62abf3ac4f3, + 0xe8c76f47eb5265f4, 0x5be923f9e8f53a9b, 0x1c4359104312c5af, 0xaf6d15ae40b59ac0, + 0x192d8af2baf0e1e8, 0xaa03c64cb957be87, 0xeda9bca512b041b3, 0x5e87f01b11171edc, + 0x62fd4976457fbfdb, 0xd1d305c846d8e0b4, 0x96797f21ed3f1f80, 0x2557339fee9840ef, + 0xee8c0dfb45ee5d8e, 0x5da24145464902e1, 0x1a083bacedaefdd5, 0xa9267712ee09a2ba, + 0x955cce7fba6103bd, 0x267282c1b9c65cd2, 0x61d8f8281221a3e6, 0xd2f6b4961186fc89, + 0x9f8169ba49a54b33, 0x2caf25044a02145c, 0x6b055fede1e5eb68, 0xd82b1353e242b407, + 0xe451aa3eb62a1500, 0x577fe680b58d4a6f, 0x10d59c691e6ab55b, 0xa3fbd0d71dcdea34, + 0x6820eeb3b6bbf755, 0xdb0ea20db51ca83a, 0x9ca4d8e41efb570e, 0x2f8a945a1d5c0861, + 0x13f02d374934a966, 0xa0de61894a93f609, 0xe7741b60e174093d, 0x545a57dee2d35652, + 0xe21ac88218962d7a, 0x5134843c1b317215, 0x169efed5b0d68d21, 0xa5b0b26bb371d24e, + 0x99ca0b06e7197349, 0x2ae447b8e4be2c26, 0x6d4e3d514f59d312, 0xde6071ef4cfe8c7d, + 0x15bb4f8be788911c, 0xa6950335e42fce73, 0xe13f79dc4fc83147, 0x521135624c6f6e28, + 0x6e6b8c0f1807cf2f, 0xdd45c0b11ba09040, 0x9aefba58b0476f74, 0x29c1f6e6b3e0301b, + 0xc96c5795d7870f42, 0x7a421b2bd420502d, 0x3de861c27fc7af19, 0x8ec62d7c7c60f076, + 0xb2bc941128085171, 0x0192d8af2baf0e1e, 0x4638a2468048f12a, 0xf516eef883efae45, + 0x3ecdd09c2899b324, 0x8de39c222b3eec4b, 0xca49e6cb80d9137f, 0x7967aa75837e4c10, + 0x451d1318d716ed17, 0xf6335fa6d4b1b278, 0xb199254f7f564d4c, 0x02b769f17cf11223, + 0xb4f7f6ad86b4690b, 0x07d9ba1385133664, 0x4073c0fa2ef4c950, 0xf35d8c442d53963f, + 0xcf273529793b3738, 0x7c0979977a9c6857, 0x3ba3037ed17b9763, 0x888d4fc0d2dcc80c, + 0x435671a479aad56d, 0xf0783d1a7a0d8a02, 0xb7d247f3d1ea7536, 0x04fc0b4dd24d2a59, + 0x3886b22086258b5e, 0x8ba8fe9e8582d431, 0xcc0284772e652b05, 0x7f2cc8c92dc2746a, + 0x325b15e575e1c3d0, 0x8175595b76469cbf, 0xc6df23b2dda1638b, 0x75f16f0cde063ce4, + 0x498bd6618a6e9de3, 0xfaa59adf89c9c28c, 0xbd0fe036222e3db8, 0x0e21ac88218962d7, + 0xc5fa92ec8aff7fb6, 0x76d4de52895820d9, 0x317ea4bb22bfdfed, 0x8250e80521188082, + 0xbe2a516875702185, 0x0d041dd676d77eea, 0x4aae673fdd3081de, 0xf9802b81de97deb1, + 0x4fc0b4dd24d2a599, 0xfceef8632775faf6, 0xbb44828a8c9205c2, 0x086ace348f355aad, + 0x34107759db5dfbaa, 0x873e3be7d8faa4c5, 0xc094410e731d5bf1, 0x73ba0db070ba049e, + 0xb86133d4dbcc19ff, 0x0b4f7f6ad86b4690, 0x4ce50583738cb9a4, 0xffcb493d702be6cb, + 0xc3b1f050244347cc, 0x709fbcee27e418a3, 0x3735c6078c03e797, 0x841b8ab98fa4b8f8, + 0xadda7c5f3c4488e3, 0x1ef430e13fe3d78c, 0x595e4a08940428b8, 0xea7006b697a377d7, + 0xd60abfdbc3cbd6d0, 0x6524f365c06c89bf, 0x228e898c6b8b768b, 0x91a0c532682c29e4, + 0x5a7bfb56c35a3485, 0xe955b7e8c0fd6bea, 0xaeffcd016b1a94de, 0x1dd181bf68bdcbb1, + 0x21ab38d23cd56ab6, 0x9285746c3f7235d9, 0xd52f0e859495caed, 0x6601423b97329582, + 0xd041dd676d77eeaa, 0x636f91d96ed0b1c5, 0x24c5eb30c5374ef1, 0x97eba78ec690119e, + 0xab911ee392f8b099, 0x18bf525d915feff6, 0x5f1528b43ab810c2, 0xec3b640a391f4fad, + 0x27e05a6e926952cc, 0x94ce16d091ce0da3, 0xd3646c393a29f297, 0x604a2087398eadf8, + 0x5c3099ea6de60cff, 0xef1ed5546e415390, 0xa8b4afbdc5a6aca4, 0x1b9ae303c601f3cb, + 0x56ed3e2f9e224471, 0xe5c372919d851b1e, 0xa26908783662e42a, 0x114744c635c5bb45, + 0x2d3dfdab61ad1a42, 0x9e13b115620a452d, 0xd9b9cbfcc9edba19, 0x6a978742ca4ae576, + 0xa14cb926613cf817, 0x1262f598629ba778, 0x55c88f71c97c584c, 0xe6e6c3cfcadb0723, + 0xda9c7aa29eb3a624, 0x69b2361c9d14f94b, 0x2e184cf536f3067f, 0x9d36004b35545910, + 0x2b769f17cf112238, 0x9858d3a9ccb67d57, 0xdff2a94067518263, 0x6cdce5fe64f6dd0c, + 0x50a65c93309e7c0b, 0xe388102d33392364, 0xa4226ac498dedc50, 0x170c267a9b79833f, + 0xdcd7181e300f9e5e, 0x6ff954a033a8c131, 0x28532e49984f3e05, 0x9b7d62f79be8616a, + 0xa707db9acf80c06d, 0x14299724cc279f02, 0x5383edcd67c06036, 0xe0ada17364673f59, + }, + { + 0x0000000000000000, 0x54e979925cd0f10d, 0xa9d2f324b9a1e21a, 0xfd3b8ab6e5711317, + 0xc17d4962dc4ddab1, 0x959430f0809d2bbc, 0x68afba4665ec38ab, 0x3c46c3d4393cc9a6, + 0x10223dee1795abe7, 0x44cb447c4b455aea, 0xb9f0cecaae3449fd, 0xed19b758f2e4b8f0, + 0xd15f748ccbd87156, 0x85b60d1e9708805b, 0x788d87a87279934c, 0x2c64fe3a2ea96241, + 0x20447bdc2f2b57ce, 0x74ad024e73fba6c3, 0x899688f8968ab5d4, 0xdd7ff16aca5a44d9, + 0xe13932bef3668d7f, 0xb5d04b2cafb67c72, 0x48ebc19a4ac76f65, 0x1c02b80816179e68, + 0x3066463238befc29, 0x648f3fa0646e0d24, 0x99b4b516811f1e33, 0xcd5dcc84ddcfef3e, + 0xf11b0f50e4f32698, 0xa5f276c2b823d795, 0x58c9fc745d52c482, 0x0c2085e60182358f, + 0x4088f7b85e56af9c, 0x14618e2a02865e91, 0xe95a049ce7f74d86, 0xbdb37d0ebb27bc8b, + 0x81f5beda821b752d, 0xd51cc748decb8420, 0x28274dfe3bba9737, 0x7cce346c676a663a, + 0x50aaca5649c3047b, 0x0443b3c41513f576, 0xf9783972f062e661, 0xad9140e0acb2176c, + 0x91d78334958edeca, 0xc53efaa6c95e2fc7, 0x380570102c2f3cd0, 0x6cec098270ffcddd, + 0x60cc8c64717df852, 0x3425f5f62dad095f, 0xc91e7f40c8dc1a48, 0x9df706d2940ceb45, + 0xa1b1c506ad3022e3, 0xf558bc94f1e0d3ee, 0x086336221491c0f9, 0x5c8a4fb0484131f4, + 0x70eeb18a66e853b5, 0x2407c8183a38a2b8, 0xd93c42aedf49b1af, 0x8dd53b3c839940a2, + 0xb193f8e8baa58904, 0xe57a817ae6757809, 0x18410bcc03046b1e, 0x4ca8725e5fd49a13, + 0x8111ef70bcad5f38, 0xd5f896e2e07dae35, 0x28c31c54050cbd22, 0x7c2a65c659dc4c2f, + 0x406ca61260e08589, 0x1485df803c307484, 0xe9be5536d9416793, 0xbd572ca48591969e, + 0x9133d29eab38f4df, 0xc5daab0cf7e805d2, 0x38e121ba129916c5, 0x6c0858284e49e7c8, + 0x504e9bfc77752e6e, 0x04a7e26e2ba5df63, 0xf99c68d8ced4cc74, 0xad75114a92043d79, + 0xa15594ac938608f6, 0xf5bced3ecf56f9fb, 0x088767882a27eaec, 0x5c6e1e1a76f71be1, + 0x6028ddce4fcbd247, 0x34c1a45c131b234a, 0xc9fa2eeaf66a305d, 0x9d135778aabac150, + 0xb177a9428413a311, 0xe59ed0d0d8c3521c, 0x18a55a663db2410b, 0x4c4c23f46162b006, + 0x700ae020585e79a0, 0x24e399b2048e88ad, 0xd9d81304e1ff9bba, 0x8d316a96bd2f6ab7, + 0xc19918c8e2fbf0a4, 0x9570615abe2b01a9, 0x684bebec5b5a12be, 0x3ca2927e078ae3b3, + 0x00e451aa3eb62a15, 0x540d28386266db18, 0xa936a28e8717c80f, 0xfddfdb1cdbc73902, + 0xd1bb2526f56e5b43, 0x85525cb4a9beaa4e, 0x7869d6024ccfb959, 0x2c80af90101f4854, + 0x10c66c44292381f2, 0x442f15d675f370ff, 0xb9149f60908263e8, 0xedfde6f2cc5292e5, + 0xe1dd6314cdd0a76a, 0xb5341a8691005667, 0x480f903074714570, 0x1ce6e9a228a1b47d, + 0x20a02a76119d7ddb, 0x744953e44d4d8cd6, 0x8972d952a83c9fc1, 0xdd9ba0c0f4ec6ecc, + 0xf1ff5efada450c8d, 0xa51627688695fd80, 0x582dadde63e4ee97, 0x0cc4d44c3f341f9a, + 0x308217980608d63c, 0x646b6e0a5ad82731, 0x9950e4bcbfa93426, 0xcdb99d2ee379c52b, + 0x90fb71cad654a0f5, 0xc41208588a8451f8, 0x392982ee6ff542ef, 0x6dc0fb7c3325b3e2, + 0x518638a80a197a44, 0x056f413a56c98b49, 0xf854cb8cb3b8985e, 0xacbdb21eef686953, + 0x80d94c24c1c10b12, 0xd43035b69d11fa1f, 0x290bbf007860e908, 0x7de2c69224b01805, + 0x41a405461d8cd1a3, 0x154d7cd4415c20ae, 0xe876f662a42d33b9, 0xbc9f8ff0f8fdc2b4, + 0xb0bf0a16f97ff73b, 0xe4567384a5af0636, 0x196df93240de1521, 0x4d8480a01c0ee42c, + 0x71c2437425322d8a, 0x252b3ae679e2dc87, 0xd810b0509c93cf90, 0x8cf9c9c2c0433e9d, + 0xa09d37f8eeea5cdc, 0xf4744e6ab23aadd1, 0x094fc4dc574bbec6, 0x5da6bd4e0b9b4fcb, + 0x61e07e9a32a7866d, 0x350907086e777760, 0xc8328dbe8b066477, 0x9cdbf42cd7d6957a, + 0xd073867288020f69, 0x849affe0d4d2fe64, 0x79a1755631a3ed73, 0x2d480cc46d731c7e, + 0x110ecf10544fd5d8, 0x45e7b682089f24d5, 0xb8dc3c34edee37c2, 0xec3545a6b13ec6cf, + 0xc051bb9c9f97a48e, 0x94b8c20ec3475583, 0x698348b826364694, 0x3d6a312a7ae6b799, + 0x012cf2fe43da7e3f, 0x55c58b6c1f0a8f32, 0xa8fe01dafa7b9c25, 0xfc177848a6ab6d28, + 0xf037fdaea72958a7, 0xa4de843cfbf9a9aa, 0x59e50e8a1e88babd, 0x0d0c771842584bb0, + 0x314ab4cc7b648216, 0x65a3cd5e27b4731b, 0x989847e8c2c5600c, 0xcc713e7a9e159101, + 0xe015c040b0bcf340, 0xb4fcb9d2ec6c024d, 0x49c73364091d115a, 0x1d2e4af655cde057, + 0x216889226cf129f1, 0x7581f0b03021d8fc, 0x88ba7a06d550cbeb, 0xdc53039489803ae6, + 0x11ea9eba6af9ffcd, 0x4503e72836290ec0, 0xb8386d9ed3581dd7, 0xecd1140c8f88ecda, + 0xd097d7d8b6b4257c, 0x847eae4aea64d471, 0x794524fc0f15c766, 0x2dac5d6e53c5366b, + 0x01c8a3547d6c542a, 0x5521dac621bca527, 0xa81a5070c4cdb630, 0xfcf329e2981d473d, + 0xc0b5ea36a1218e9b, 0x945c93a4fdf17f96, 0x6967191218806c81, 0x3d8e608044509d8c, + 0x31aee56645d2a803, 0x65479cf41902590e, 0x987c1642fc734a19, 0xcc956fd0a0a3bb14, + 0xf0d3ac04999f72b2, 0xa43ad596c54f83bf, 0x59015f20203e90a8, 0x0de826b27cee61a5, + 0x218cd888524703e4, 0x7565a11a0e97f2e9, 0x885e2bacebe6e1fe, 0xdcb7523eb73610f3, + 0xe0f191ea8e0ad955, 0xb418e878d2da2858, 0x492362ce37ab3b4f, 0x1dca1b5c6b7bca42, + 0x5162690234af5051, 0x058b1090687fa15c, 0xf8b09a268d0eb24b, 0xac59e3b4d1de4346, + 0x901f2060e8e28ae0, 0xc4f659f2b4327bed, 0x39cdd344514368fa, 0x6d24aad60d9399f7, + 0x414054ec233afbb6, 0x15a92d7e7fea0abb, 0xe892a7c89a9b19ac, 0xbc7bde5ac64be8a1, + 0x803d1d8eff772107, 0xd4d4641ca3a7d00a, 0x29efeeaa46d6c31d, 0x7d0697381a063210, + 0x712612de1b84079f, 0x25cf6b4c4754f692, 0xd8f4e1faa225e585, 0x8c1d9868fef51488, + 0xb05b5bbcc7c9dd2e, 0xe4b2222e9b192c23, 0x1989a8987e683f34, 0x4d60d10a22b8ce39, + 0x61042f300c11ac78, 0x35ed56a250c15d75, 0xc8d6dc14b5b04e62, 0x9c3fa586e960bf6f, + 0xa0796652d05c76c9, 0xf4901fc08c8c87c4, 0x09ab957669fd94d3, 0x5d42ece4352d65de, + }, + { + 0x0000000000000000, 0x3f0be14a916a6dcb, 0x7e17c29522d4db96, 0x411c23dfb3beb65d, + 0xfc2f852a45a9b72c, 0xc3246460d4c3dae7, 0x823847bf677d6cba, 0xbd33a6f5f6170171, + 0x6a87a57f245d70dd, 0x558c4435b5371d16, 0x149067ea0689ab4b, 0x2b9b86a097e3c680, + 0x96a8205561f4c7f1, 0xa9a3c11ff09eaa3a, 0xe8bfe2c043201c67, 0xd7b4038ad24a71ac, + 0xd50f4afe48bae1ba, 0xea04abb4d9d08c71, 0xab18886b6a6e3a2c, 0x94136921fb0457e7, + 0x2920cfd40d135696, 0x162b2e9e9c793b5d, 0x57370d412fc78d00, 0x683cec0bbeade0cb, + 0xbf88ef816ce79167, 0x80830ecbfd8dfcac, 0xc19f2d144e334af1, 0xfe94cc5edf59273a, + 0x43a76aab294e264b, 0x7cac8be1b8244b80, 0x3db0a83e0b9afddd, 0x02bb49749af09016, + 0x38c63ad73e7bddf1, 0x07cddb9daf11b03a, 0x46d1f8421caf0667, 0x79da19088dc56bac, + 0xc4e9bffd7bd26add, 0xfbe25eb7eab80716, 0xbafe7d685906b14b, 0x85f59c22c86cdc80, + 0x52419fa81a26ad2c, 0x6d4a7ee28b4cc0e7, 0x2c565d3d38f276ba, 0x135dbc77a9981b71, + 0xae6e1a825f8f1a00, 0x9165fbc8cee577cb, 0xd079d8177d5bc196, 0xef72395dec31ac5d, + 0xedc9702976c13c4b, 0xd2c29163e7ab5180, 0x93deb2bc5415e7dd, 0xacd553f6c57f8a16, + 0x11e6f50333688b67, 0x2eed1449a202e6ac, 0x6ff1379611bc50f1, 0x50fad6dc80d63d3a, + 0x874ed556529c4c96, 0xb845341cc3f6215d, 0xf95917c370489700, 0xc652f689e122facb, + 0x7b61507c1735fbba, 0x446ab136865f9671, 0x057692e935e1202c, 0x3a7d73a3a48b4de7, + 0x718c75ae7cf7bbe2, 0x4e8794e4ed9dd629, 0x0f9bb73b5e236074, 0x30905671cf490dbf, + 0x8da3f084395e0cce, 0xb2a811cea8346105, 0xf3b432111b8ad758, 0xccbfd35b8ae0ba93, + 0x1b0bd0d158aacb3f, 0x2400319bc9c0a6f4, 0x651c12447a7e10a9, 0x5a17f30eeb147d62, + 0xe72455fb1d037c13, 0xd82fb4b18c6911d8, 0x9933976e3fd7a785, 0xa6387624aebdca4e, + 0xa4833f50344d5a58, 0x9b88de1aa5273793, 0xda94fdc5169981ce, 0xe59f1c8f87f3ec05, + 0x58acba7a71e4ed74, 0x67a75b30e08e80bf, 0x26bb78ef533036e2, 0x19b099a5c25a5b29, + 0xce049a2f10102a85, 0xf10f7b65817a474e, 0xb01358ba32c4f113, 0x8f18b9f0a3ae9cd8, + 0x322b1f0555b99da9, 0x0d20fe4fc4d3f062, 0x4c3cdd90776d463f, 0x73373cdae6072bf4, + 0x494a4f79428c6613, 0x7641ae33d3e60bd8, 0x375d8dec6058bd85, 0x08566ca6f132d04e, + 0xb565ca530725d13f, 0x8a6e2b19964fbcf4, 0xcb7208c625f10aa9, 0xf479e98cb49b6762, + 0x23cdea0666d116ce, 0x1cc60b4cf7bb7b05, 0x5dda28934405cd58, 0x62d1c9d9d56fa093, + 0xdfe26f2c2378a1e2, 0xe0e98e66b212cc29, 0xa1f5adb901ac7a74, 0x9efe4cf390c617bf, + 0x9c4505870a3687a9, 0xa34ee4cd9b5cea62, 0xe252c71228e25c3f, 0xdd592658b98831f4, + 0x606a80ad4f9f3085, 0x5f6161e7def55d4e, 0x1e7d42386d4beb13, 0x2176a372fc2186d8, + 0xf6c2a0f82e6bf774, 0xc9c941b2bf019abf, 0x88d5626d0cbf2ce2, 0xb7de83279dd54129, + 0x0aed25d26bc24058, 0x35e6c498faa82d93, 0x74fae74749169bce, 0x4bf1060dd87cf605, + 0xe318eb5cf9ef77c4, 0xdc130a1668851a0f, 0x9d0f29c9db3bac52, 0xa204c8834a51c199, + 0x1f376e76bc46c0e8, 0x203c8f3c2d2cad23, 0x6120ace39e921b7e, 0x5e2b4da90ff876b5, + 0x899f4e23ddb20719, 0xb694af694cd86ad2, 0xf7888cb6ff66dc8f, 0xc8836dfc6e0cb144, + 0x75b0cb09981bb035, 0x4abb2a430971ddfe, 0x0ba7099cbacf6ba3, 0x34ace8d62ba50668, + 0x3617a1a2b155967e, 0x091c40e8203ffbb5, 0x4800633793814de8, 0x770b827d02eb2023, + 0xca382488f4fc2152, 0xf533c5c265964c99, 0xb42fe61dd628fac4, 0x8b2407574742970f, + 0x5c9004dd9508e6a3, 0x639be59704628b68, 0x2287c648b7dc3d35, 0x1d8c270226b650fe, + 0xa0bf81f7d0a1518f, 0x9fb460bd41cb3c44, 0xdea84362f2758a19, 0xe1a3a228631fe7d2, + 0xdbded18bc794aa35, 0xe4d530c156fec7fe, 0xa5c9131ee54071a3, 0x9ac2f254742a1c68, + 0x27f154a1823d1d19, 0x18fab5eb135770d2, 0x59e69634a0e9c68f, 0x66ed777e3183ab44, + 0xb15974f4e3c9dae8, 0x8e5295be72a3b723, 0xcf4eb661c11d017e, 0xf045572b50776cb5, + 0x4d76f1dea6606dc4, 0x727d1094370a000f, 0x3361334b84b4b652, 0x0c6ad20115dedb99, + 0x0ed19b758f2e4b8f, 0x31da7a3f1e442644, 0x70c659e0adfa9019, 0x4fcdb8aa3c90fdd2, + 0xf2fe1e5fca87fca3, 0xcdf5ff155bed9168, 0x8ce9dccae8532735, 0xb3e23d8079394afe, + 0x64563e0aab733b52, 0x5b5ddf403a195699, 0x1a41fc9f89a7e0c4, 0x254a1dd518cd8d0f, + 0x9879bb20eeda8c7e, 0xa7725a6a7fb0e1b5, 0xe66e79b5cc0e57e8, 0xd96598ff5d643a23, + 0x92949ef28518cc26, 0xad9f7fb81472a1ed, 0xec835c67a7cc17b0, 0xd388bd2d36a67a7b, + 0x6ebb1bd8c0b17b0a, 0x51b0fa9251db16c1, 0x10acd94de265a09c, 0x2fa73807730fcd57, + 0xf8133b8da145bcfb, 0xc718dac7302fd130, 0x8604f9188391676d, 0xb90f185212fb0aa6, + 0x043cbea7e4ec0bd7, 0x3b375fed7586661c, 0x7a2b7c32c638d041, 0x45209d785752bd8a, + 0x479bd40ccda22d9c, 0x789035465cc84057, 0x398c1699ef76f60a, 0x0687f7d37e1c9bc1, + 0xbbb45126880b9ab0, 0x84bfb06c1961f77b, 0xc5a393b3aadf4126, 0xfaa872f93bb52ced, + 0x2d1c7173e9ff5d41, 0x121790397895308a, 0x530bb3e6cb2b86d7, 0x6c0052ac5a41eb1c, + 0xd133f459ac56ea6d, 0xee3815133d3c87a6, 0xaf2436cc8e8231fb, 0x902fd7861fe85c30, + 0xaa52a425bb6311d7, 0x9559456f2a097c1c, 0xd44566b099b7ca41, 0xeb4e87fa08dda78a, + 0x567d210ffecaa6fb, 0x6976c0456fa0cb30, 0x286ae39adc1e7d6d, 0x176102d04d7410a6, + 0xc0d5015a9f3e610a, 0xffdee0100e540cc1, 0xbec2c3cfbdeaba9c, 0x81c922852c80d757, + 0x3cfa8470da97d626, 0x03f1653a4bfdbbed, 0x42ed46e5f8430db0, 0x7de6a7af6929607b, + 0x7f5deedbf3d9f06d, 0x40560f9162b39da6, 0x014a2c4ed10d2bfb, 0x3e41cd0440674630, + 0x83726bf1b6704741, 0xbc798abb271a2a8a, 0xfd65a96494a49cd7, 0xc26e482e05cef11c, + 0x15da4ba4d78480b0, 0x2ad1aaee46eeed7b, 0x6bcd8931f5505b26, 0x54c6687b643a36ed, + 0xe9f5ce8e922d379c, 0xd6fe2fc403475a57, 0x97e20c1bb0f9ec0a, 0xa8e9ed51219381c1, + }, + { + 0x0000000000000000, 0x1dee8a5e222ca1dc, 0x3bdd14bc445943b8, 0x26339ee26675e264, + 0x77ba297888b28770, 0x6a54a326aa9e26ac, 0x4c673dc4ccebc4c8, 0x5189b79aeec76514, + 0xef7452f111650ee0, 0xf29ad8af3349af3c, 0xd4a9464d553c4d58, 0xc947cc137710ec84, + 0x98ce7b8999d78990, 0x8520f1d7bbfb284c, 0xa3136f35dd8eca28, 0xbefde56bffa26bf4, + 0x4c300ac98dc40345, 0x51de8097afe8a299, 0x77ed1e75c99d40fd, 0x6a03942bebb1e121, + 0x3b8a23b105768435, 0x2664a9ef275a25e9, 0x0057370d412fc78d, 0x1db9bd5363036651, + 0xa34458389ca10da5, 0xbeaad266be8dac79, 0x98994c84d8f84e1d, 0x8577c6dafad4efc1, + 0xd4fe714014138ad5, 0xc910fb1e363f2b09, 0xef2365fc504ac96d, 0xf2cdefa2726668b1, + 0x986015931b88068a, 0x858e9fcd39a4a756, 0xa3bd012f5fd14532, 0xbe538b717dfde4ee, + 0xefda3ceb933a81fa, 0xf234b6b5b1162026, 0xd4072857d763c242, 0xc9e9a209f54f639e, + 0x771447620aed086a, 0x6afacd3c28c1a9b6, 0x4cc953de4eb44bd2, 0x5127d9806c98ea0e, + 0x00ae6e1a825f8f1a, 0x1d40e444a0732ec6, 0x3b737aa6c606cca2, 0x269df0f8e42a6d7e, + 0xd4501f5a964c05cf, 0xc9be9504b460a413, 0xef8d0be6d2154677, 0xf26381b8f039e7ab, + 0xa3ea36221efe82bf, 0xbe04bc7c3cd22363, 0x9837229e5aa7c107, 0x85d9a8c0788b60db, + 0x3b244dab87290b2f, 0x26cac7f5a505aaf3, 0x00f95917c3704897, 0x1d17d349e15ce94b, + 0x4c9e64d30f9b8c5f, 0x5170ee8d2db72d83, 0x7743706f4bc2cfe7, 0x6aadfa3169ee6e3b, + 0xa218840d981e1391, 0xbff60e53ba32b24d, 0x99c590b1dc475029, 0x842b1aeffe6bf1f5, + 0xd5a2ad7510ac94e1, 0xc84c272b3280353d, 0xee7fb9c954f5d759, 0xf391339776d97685, + 0x4d6cd6fc897b1d71, 0x50825ca2ab57bcad, 0x76b1c240cd225ec9, 0x6b5f481eef0eff15, + 0x3ad6ff8401c99a01, 0x273875da23e53bdd, 0x010beb384590d9b9, 0x1ce5616667bc7865, + 0xee288ec415da10d4, 0xf3c6049a37f6b108, 0xd5f59a785183536c, 0xc81b102673aff2b0, + 0x9992a7bc9d6897a4, 0x847c2de2bf443678, 0xa24fb300d931d41c, 0xbfa1395efb1d75c0, + 0x015cdc3504bf1e34, 0x1cb2566b2693bfe8, 0x3a81c88940e65d8c, 0x276f42d762cafc50, + 0x76e6f54d8c0d9944, 0x6b087f13ae213898, 0x4d3be1f1c854dafc, 0x50d56bafea787b20, + 0x3a78919e8396151b, 0x27961bc0a1bab4c7, 0x01a58522c7cf56a3, 0x1c4b0f7ce5e3f77f, + 0x4dc2b8e60b24926b, 0x502c32b8290833b7, 0x761fac5a4f7dd1d3, 0x6bf126046d51700f, + 0xd50cc36f92f31bfb, 0xc8e24931b0dfba27, 0xeed1d7d3d6aa5843, 0xf33f5d8df486f99f, + 0xa2b6ea171a419c8b, 0xbf586049386d3d57, 0x996bfeab5e18df33, 0x848574f57c347eef, + 0x76489b570e52165e, 0x6ba611092c7eb782, 0x4d958feb4a0b55e6, 0x507b05b56827f43a, + 0x01f2b22f86e0912e, 0x1c1c3871a4cc30f2, 0x3a2fa693c2b9d296, 0x27c12ccde095734a, + 0x993cc9a61f3718be, 0x84d243f83d1bb962, 0xa2e1dd1a5b6e5b06, 0xbf0f57447942fada, + 0xee86e0de97859fce, 0xf3686a80b5a93e12, 0xd55bf462d3dcdc76, 0xc8b57e3cf1f07daa, + 0xd6e9a7309f3239a7, 0xcb072d6ebd1e987b, 0xed34b38cdb6b7a1f, 0xf0da39d2f947dbc3, + 0xa1538e481780bed7, 0xbcbd041635ac1f0b, 0x9a8e9af453d9fd6f, 0x876010aa71f55cb3, + 0x399df5c18e573747, 0x24737f9fac7b969b, 0x0240e17dca0e74ff, 0x1fae6b23e822d523, + 0x4e27dcb906e5b037, 0x53c956e724c911eb, 0x75fac80542bcf38f, 0x6814425b60905253, + 0x9ad9adf912f63ae2, 0x873727a730da9b3e, 0xa104b94556af795a, 0xbcea331b7483d886, + 0xed6384819a44bd92, 0xf08d0edfb8681c4e, 0xd6be903dde1dfe2a, 0xcb501a63fc315ff6, + 0x75adff0803933402, 0x6843755621bf95de, 0x4e70ebb447ca77ba, 0x539e61ea65e6d666, + 0x0217d6708b21b372, 0x1ff95c2ea90d12ae, 0x39cac2cccf78f0ca, 0x24244892ed545116, + 0x4e89b2a384ba3f2d, 0x536738fda6969ef1, 0x7554a61fc0e37c95, 0x68ba2c41e2cfdd49, + 0x39339bdb0c08b85d, 0x24dd11852e241981, 0x02ee8f674851fbe5, 0x1f0005396a7d5a39, + 0xa1fde05295df31cd, 0xbc136a0cb7f39011, 0x9a20f4eed1867275, 0x87ce7eb0f3aad3a9, + 0xd647c92a1d6db6bd, 0xcba943743f411761, 0xed9add965934f505, 0xf07457c87b1854d9, + 0x02b9b86a097e3c68, 0x1f5732342b529db4, 0x3964acd64d277fd0, 0x248a26886f0bde0c, + 0x7503911281ccbb18, 0x68ed1b4ca3e01ac4, 0x4ede85aec595f8a0, 0x53300ff0e7b9597c, + 0xedcdea9b181b3288, 0xf02360c53a379354, 0xd610fe275c427130, 0xcbfe74797e6ed0ec, + 0x9a77c3e390a9b5f8, 0x879949bdb2851424, 0xa1aad75fd4f0f640, 0xbc445d01f6dc579c, + 0x74f1233d072c2a36, 0x691fa96325008bea, 0x4f2c37814375698e, 0x52c2bddf6159c852, + 0x034b0a458f9ead46, 0x1ea5801badb20c9a, 0x38961ef9cbc7eefe, 0x257894a7e9eb4f22, + 0x9b8571cc164924d6, 0x866bfb923465850a, 0xa05865705210676e, 0xbdb6ef2e703cc6b2, + 0xec3f58b49efba3a6, 0xf1d1d2eabcd7027a, 0xd7e24c08daa2e01e, 0xca0cc656f88e41c2, + 0x38c129f48ae82973, 0x252fa3aaa8c488af, 0x031c3d48ceb16acb, 0x1ef2b716ec9dcb17, + 0x4f7b008c025aae03, 0x52958ad220760fdf, 0x74a614304603edbb, 0x69489e6e642f4c67, + 0xd7b57b059b8d2793, 0xca5bf15bb9a1864f, 0xec686fb9dfd4642b, 0xf186e5e7fdf8c5f7, + 0xa00f527d133fa0e3, 0xbde1d8233113013f, 0x9bd246c15766e35b, 0x863ccc9f754a4287, + 0xec9136ae1ca42cbc, 0xf17fbcf03e888d60, 0xd74c221258fd6f04, 0xcaa2a84c7ad1ced8, + 0x9b2b1fd69416abcc, 0x86c59588b63a0a10, 0xa0f60b6ad04fe874, 0xbd188134f26349a8, + 0x03e5645f0dc1225c, 0x1e0bee012fed8380, 0x383870e3499861e4, 0x25d6fabd6bb4c038, + 0x745f4d278573a52c, 0x69b1c779a75f04f0, 0x4f82599bc12ae694, 0x526cd3c5e3064748, + 0xa0a13c6791602ff9, 0xbd4fb639b34c8e25, 0x9b7c28dbd5396c41, 0x8692a285f715cd9d, + 0xd71b151f19d2a889, 0xcaf59f413bfe0955, 0xecc601a35d8beb31, 0xf1288bfd7fa74aed, + 0x4fd56e9680052119, 0x523be4c8a22980c5, 0x74087a2ac45c62a1, 0x69e6f074e670c37d, + 0x386f47ee08b7a669, 0x2581cdb02a9b07b5, 0x03b253524ceee5d1, 0x1e5cd90c6ec2440d, + }, + { + 0x0000000000000000, 0x5c2d776033c4205e, 0xb85aeec0678840bc, 0xe47799a0544c60e2, + 0xe26d72ab601e9ffd, 0xbe4005cb53dabfa3, 0x5a379c6b0796df41, 0x061aeb0b3452ff1f, + 0x56024a7d6f33217f, 0x0a2f3d1d5cf70121, 0xee58a4bd08bb61c3, 0xb275d3dd3b7f419d, + 0xb46f38d60f2dbe82, 0xe8424fb63ce99edc, 0x0c35d61668a5fe3e, 0x5018a1765b61de60, + 0xac0494fade6642fe, 0xf029e39aeda262a0, 0x145e7a3ab9ee0242, 0x48730d5a8a2a221c, + 0x4e69e651be78dd03, 0x124491318dbcfd5d, 0xf6330891d9f09dbf, 0xaa1e7ff1ea34bde1, + 0xfa06de87b1556381, 0xa62ba9e7829143df, 0x425c3047d6dd233d, 0x1e714727e5190363, + 0x186bac2cd14bfc7c, 0x4446db4ce28fdc22, 0xa03142ecb6c3bcc0, 0xfc1c358c85079c9e, + 0xcad186de13c29b79, 0x96fcf1be2006bb27, 0x728b681e744adbc5, 0x2ea61f7e478efb9b, + 0x28bcf47573dc0484, 0x74918315401824da, 0x90e61ab514544438, 0xcccb6dd527906466, + 0x9cd3cca37cf1ba06, 0xc0febbc34f359a58, 0x248922631b79faba, 0x78a4550328bddae4, + 0x7ebebe081cef25fb, 0x2293c9682f2b05a5, 0xc6e450c87b676547, 0x9ac927a848a34519, + 0x66d51224cda4d987, 0x3af86544fe60f9d9, 0xde8ffce4aa2c993b, 0x82a28b8499e8b965, + 0x84b8608fadba467a, 0xd89517ef9e7e6624, 0x3ce28e4fca3206c6, 0x60cff92ff9f62698, + 0x30d75859a297f8f8, 0x6cfa2f399153d8a6, 0x888db699c51fb844, 0xd4a0c1f9f6db981a, + 0xd2ba2af2c2896705, 0x8e975d92f14d475b, 0x6ae0c432a50127b9, 0x36cdb35296c507e7, + 0x077ba297888b2877, 0x5b56d5f7bb4f0829, 0xbf214c57ef0368cb, 0xe30c3b37dcc74895, + 0xe516d03ce895b78a, 0xb93ba75cdb5197d4, 0x5d4c3efc8f1df736, 0x0161499cbcd9d768, + 0x5179e8eae7b80908, 0x0d549f8ad47c2956, 0xe923062a803049b4, 0xb50e714ab3f469ea, + 0xb3149a4187a696f5, 0xef39ed21b462b6ab, 0x0b4e7481e02ed649, 0x576303e1d3eaf617, + 0xab7f366d56ed6a89, 0xf752410d65294ad7, 0x1325d8ad31652a35, 0x4f08afcd02a10a6b, + 0x491244c636f3f574, 0x153f33a60537d52a, 0xf148aa06517bb5c8, 0xad65dd6662bf9596, + 0xfd7d7c1039de4bf6, 0xa1500b700a1a6ba8, 0x452792d05e560b4a, 0x190ae5b06d922b14, + 0x1f100ebb59c0d40b, 0x433d79db6a04f455, 0xa74ae07b3e4894b7, 0xfb67971b0d8cb4e9, + 0xcdaa24499b49b30e, 0x91875329a88d9350, 0x75f0ca89fcc1f3b2, 0x29ddbde9cf05d3ec, + 0x2fc756e2fb572cf3, 0x73ea2182c8930cad, 0x979db8229cdf6c4f, 0xcbb0cf42af1b4c11, + 0x9ba86e34f47a9271, 0xc7851954c7beb22f, 0x23f280f493f2d2cd, 0x7fdff794a036f293, + 0x79c51c9f94640d8c, 0x25e86bffa7a02dd2, 0xc19ff25ff3ec4d30, 0x9db2853fc0286d6e, + 0x61aeb0b3452ff1f0, 0x3d83c7d376ebd1ae, 0xd9f45e7322a7b14c, 0x85d9291311639112, + 0x83c3c21825316e0d, 0xdfeeb57816f54e53, 0x3b992cd842b92eb1, 0x67b45bb8717d0eef, + 0x37acface2a1cd08f, 0x6b818dae19d8f0d1, 0x8ff6140e4d949033, 0xd3db636e7e50b06d, + 0xd5c188654a024f72, 0x89ecff0579c66f2c, 0x6d9b66a52d8a0fce, 0x31b611c51e4e2f90, + 0x0ef7452f111650ee, 0x52da324f22d270b0, 0xb6adabef769e1052, 0xea80dc8f455a300c, + 0xec9a37847108cf13, 0xb0b740e442ccef4d, 0x54c0d94416808faf, 0x08edae242544aff1, + 0x58f50f527e257191, 0x04d878324de151cf, 0xe0afe19219ad312d, 0xbc8296f22a691173, + 0xba987df91e3bee6c, 0xe6b50a992dffce32, 0x02c2933979b3aed0, 0x5eefe4594a778e8e, + 0xa2f3d1d5cf701210, 0xfedea6b5fcb4324e, 0x1aa93f15a8f852ac, 0x468448759b3c72f2, + 0x409ea37eaf6e8ded, 0x1cb3d41e9caaadb3, 0xf8c44dbec8e6cd51, 0xa4e93adefb22ed0f, + 0xf4f19ba8a043336f, 0xa8dcecc893871331, 0x4cab7568c7cb73d3, 0x10860208f40f538d, + 0x169ce903c05dac92, 0x4ab19e63f3998ccc, 0xaec607c3a7d5ec2e, 0xf2eb70a39411cc70, + 0xc426c3f102d4cb97, 0x980bb4913110ebc9, 0x7c7c2d31655c8b2b, 0x20515a515698ab75, + 0x264bb15a62ca546a, 0x7a66c63a510e7434, 0x9e115f9a054214d6, 0xc23c28fa36863488, + 0x9224898c6de7eae8, 0xce09feec5e23cab6, 0x2a7e674c0a6faa54, 0x7653102c39ab8a0a, + 0x7049fb270df97515, 0x2c648c473e3d554b, 0xc81315e76a7135a9, 0x943e628759b515f7, + 0x6822570bdcb28969, 0x340f206bef76a937, 0xd078b9cbbb3ac9d5, 0x8c55ceab88fee98b, + 0x8a4f25a0bcac1694, 0xd66252c08f6836ca, 0x3215cb60db245628, 0x6e38bc00e8e07676, + 0x3e201d76b381a816, 0x620d6a1680458848, 0x867af3b6d409e8aa, 0xda5784d6e7cdc8f4, + 0xdc4d6fddd39f37eb, 0x806018bde05b17b5, 0x6417811db4177757, 0x383af67d87d35709, + 0x098ce7b8999d7899, 0x55a190d8aa5958c7, 0xb1d60978fe153825, 0xedfb7e18cdd1187b, + 0xebe19513f983e764, 0xb7cce273ca47c73a, 0x53bb7bd39e0ba7d8, 0x0f960cb3adcf8786, + 0x5f8eadc5f6ae59e6, 0x03a3daa5c56a79b8, 0xe7d443059126195a, 0xbbf93465a2e23904, + 0xbde3df6e96b0c61b, 0xe1cea80ea574e645, 0x05b931aef13886a7, 0x599446cec2fca6f9, + 0xa588734247fb3a67, 0xf9a50422743f1a39, 0x1dd29d8220737adb, 0x41ffeae213b75a85, + 0x47e501e927e5a59a, 0x1bc87689142185c4, 0xffbfef29406de526, 0xa392984973a9c578, + 0xf38a393f28c81b18, 0xafa74e5f1b0c3b46, 0x4bd0d7ff4f405ba4, 0x17fda09f7c847bfa, + 0x11e74b9448d684e5, 0x4dca3cf47b12a4bb, 0xa9bda5542f5ec459, 0xf590d2341c9ae407, + 0xc35d61668a5fe3e0, 0x9f701606b99bc3be, 0x7b078fa6edd7a35c, 0x272af8c6de138302, + 0x213013cdea417c1d, 0x7d1d64add9855c43, 0x996afd0d8dc93ca1, 0xc5478a6dbe0d1cff, + 0x955f2b1be56cc29f, 0xc9725c7bd6a8e2c1, 0x2d05c5db82e48223, 0x7128b2bbb120a27d, + 0x773259b085725d62, 0x2b1f2ed0b6b67d3c, 0xcf68b770e2fa1dde, 0x9345c010d13e3d80, + 0x6f59f59c5439a11e, 0x337482fc67fd8140, 0xd7031b5c33b1e1a2, 0x8b2e6c3c0075c1fc, + 0x8d34873734273ee3, 0xd119f05707e31ebd, 0x356e69f753af7e5f, 0x69431e97606b5e01, + 0x395bbfe13b0a8061, 0x6576c88108cea03f, 0x810151215c82c0dd, 0xdd2c26416f46e083, + 0xdb36cd4a5b141f9c, 0x871bba2a68d03fc2, 0x636c238a3c9c5f20, 0x3f4154ea0f587f7e, + }, + { + 0x0000000000000000, 0x6184d55f721267c6, 0xc309aabee424cf8c, 0xa28d7fe19636a84a, + 0x14cbfa566747819d, 0x754f2f091555e65b, 0xd7c250e883634e11, 0xb64685b7f17129d7, + 0x2997f4acce8f033a, 0x481321f3bc9d64fc, 0xea9e5e122aabccb6, 0x8b1a8b4d58b9ab70, + 0x3d5c0efaa9c882a7, 0x5cd8dba5dbdae561, 0xfe55a4444dec4d2b, 0x9fd1711b3ffe2aed, + 0x532fe9599d1e0674, 0x32ab3c06ef0c61b2, 0x902643e7793ac9f8, 0xf1a296b80b28ae3e, + 0x47e4130ffa5987e9, 0x2660c650884be02f, 0x84edb9b11e7d4865, 0xe5696cee6c6f2fa3, + 0x7ab81df55391054e, 0x1b3cc8aa21836288, 0xb9b1b74bb7b5cac2, 0xd8356214c5a7ad04, + 0x6e73e7a334d684d3, 0x0ff732fc46c4e315, 0xad7a4d1dd0f24b5f, 0xccfe9842a2e02c99, + 0xa65fd2b33a3c0ce8, 0xc7db07ec482e6b2e, 0x6556780dde18c364, 0x04d2ad52ac0aa4a2, + 0xb29428e55d7b8d75, 0xd310fdba2f69eab3, 0x719d825bb95f42f9, 0x10195704cb4d253f, + 0x8fc8261ff4b30fd2, 0xee4cf34086a16814, 0x4cc18ca11097c05e, 0x2d4559fe6285a798, + 0x9b03dc4993f48e4f, 0xfa870916e1e6e989, 0x580a76f777d041c3, 0x398ea3a805c22605, + 0xf5703beaa7220a9c, 0x94f4eeb5d5306d5a, 0x367991544306c510, 0x57fd440b3114a2d6, + 0xe1bbc1bcc0658b01, 0x803f14e3b277ecc7, 0x22b26b022441448d, 0x4336be5d5653234b, + 0xdce7cf4669ad09a6, 0xbd631a191bbf6e60, 0x1fee65f88d89c62a, 0x7e6ab0a7ff9ba1ec, + 0xc82c35100eea883b, 0xa9a8e04f7cf8effd, 0x0b259faeeace47b7, 0x6aa14af198dc2071, + 0xde670a4ddb760755, 0xbfe3df12a9646093, 0x1d6ea0f33f52c8d9, 0x7cea75ac4d40af1f, + 0xcaacf01bbc3186c8, 0xab282544ce23e10e, 0x09a55aa558154944, 0x68218ffa2a072e82, + 0xf7f0fee115f9046f, 0x96742bbe67eb63a9, 0x34f9545ff1ddcbe3, 0x557d810083cfac25, + 0xe33b04b772be85f2, 0x82bfd1e800ace234, 0x2032ae09969a4a7e, 0x41b67b56e4882db8, + 0x8d48e31446680121, 0xeccc364b347a66e7, 0x4e4149aaa24ccead, 0x2fc59cf5d05ea96b, + 0x99831942212f80bc, 0xf807cc1d533de77a, 0x5a8ab3fcc50b4f30, 0x3b0e66a3b71928f6, + 0xa4df17b888e7021b, 0xc55bc2e7faf565dd, 0x67d6bd066cc3cd97, 0x065268591ed1aa51, + 0xb014edeeefa08386, 0xd19038b19db2e440, 0x731d47500b844c0a, 0x1299920f79962bcc, + 0x7838d8fee14a0bbd, 0x19bc0da193586c7b, 0xbb317240056ec431, 0xdab5a71f777ca3f7, + 0x6cf322a8860d8a20, 0x0d77f7f7f41fede6, 0xaffa8816622945ac, 0xce7e5d49103b226a, + 0x51af2c522fc50887, 0x302bf90d5dd76f41, 0x92a686eccbe1c70b, 0xf32253b3b9f3a0cd, + 0x4564d6044882891a, 0x24e0035b3a90eedc, 0x866d7cbaaca64696, 0xe7e9a9e5deb42150, + 0x2b1731a77c540dc9, 0x4a93e4f80e466a0f, 0xe81e9b199870c245, 0x899a4e46ea62a583, + 0x3fdccbf11b138c54, 0x5e581eae6901eb92, 0xfcd5614fff3743d8, 0x9d51b4108d25241e, + 0x0280c50bb2db0ef3, 0x63041054c0c96935, 0xc1896fb556ffc17f, 0xa00dbaea24eda6b9, + 0x164b3f5dd59c8f6e, 0x77cfea02a78ee8a8, 0xd54295e331b840e2, 0xb4c640bc43aa2724, + 0x2e16bbb019e2102f, 0x4f926eef6bf077e9, 0xed1f110efdc6dfa3, 0x8c9bc4518fd4b865, + 0x3add41e67ea591b2, 0x5b5994b90cb7f674, 0xf9d4eb589a815e3e, 0x98503e07e89339f8, + 0x07814f1cd76d1315, 0x66059a43a57f74d3, 0xc488e5a23349dc99, 0xa50c30fd415bbb5f, + 0x134ab54ab02a9288, 0x72ce6015c238f54e, 0xd0431ff4540e5d04, 0xb1c7caab261c3ac2, + 0x7d3952e984fc165b, 0x1cbd87b6f6ee719d, 0xbe30f85760d8d9d7, 0xdfb42d0812cabe11, + 0x69f2a8bfe3bb97c6, 0x08767de091a9f000, 0xaafb0201079f584a, 0xcb7fd75e758d3f8c, + 0x54aea6454a731561, 0x352a731a386172a7, 0x97a70cfbae57daed, 0xf623d9a4dc45bd2b, + 0x40655c132d3494fc, 0x21e1894c5f26f33a, 0x836cf6adc9105b70, 0xe2e823f2bb023cb6, + 0x8849690323de1cc7, 0xe9cdbc5c51cc7b01, 0x4b40c3bdc7fad34b, 0x2ac416e2b5e8b48d, + 0x9c82935544999d5a, 0xfd06460a368bfa9c, 0x5f8b39eba0bd52d6, 0x3e0fecb4d2af3510, + 0xa1de9dafed511ffd, 0xc05a48f09f43783b, 0x62d737110975d071, 0x0353e24e7b67b7b7, + 0xb51567f98a169e60, 0xd491b2a6f804f9a6, 0x761ccd476e3251ec, 0x179818181c20362a, + 0xdb66805abec01ab3, 0xbae25505ccd27d75, 0x186f2ae45ae4d53f, 0x79ebffbb28f6b2f9, + 0xcfad7a0cd9879b2e, 0xae29af53ab95fce8, 0x0ca4d0b23da354a2, 0x6d2005ed4fb13364, + 0xf2f174f6704f1989, 0x9375a1a9025d7e4f, 0x31f8de48946bd605, 0x507c0b17e679b1c3, + 0xe63a8ea017089814, 0x87be5bff651affd2, 0x2533241ef32c5798, 0x44b7f141813e305e, + 0xf071b1fdc294177a, 0x91f564a2b08670bc, 0x33781b4326b0d8f6, 0x52fcce1c54a2bf30, + 0xe4ba4baba5d396e7, 0x853e9ef4d7c1f121, 0x27b3e11541f7596b, 0x4637344a33e53ead, + 0xd9e645510c1b1440, 0xb862900e7e097386, 0x1aefefefe83fdbcc, 0x7b6b3ab09a2dbc0a, + 0xcd2dbf076b5c95dd, 0xaca96a58194ef21b, 0x0e2415b98f785a51, 0x6fa0c0e6fd6a3d97, + 0xa35e58a45f8a110e, 0xc2da8dfb2d9876c8, 0x6057f21abbaede82, 0x01d32745c9bcb944, + 0xb795a2f238cd9093, 0xd61177ad4adff755, 0x749c084cdce95f1f, 0x1518dd13aefb38d9, + 0x8ac9ac0891051234, 0xeb4d7957e31775f2, 0x49c006b67521ddb8, 0x2844d3e90733ba7e, + 0x9e02565ef64293a9, 0xff8683018450f46f, 0x5d0bfce012665c25, 0x3c8f29bf60743be3, + 0x562e634ef8a81b92, 0x37aab6118aba7c54, 0x9527c9f01c8cd41e, 0xf4a31caf6e9eb3d8, + 0x42e599189fef9a0f, 0x23614c47edfdfdc9, 0x81ec33a67bcb5583, 0xe068e6f909d93245, + 0x7fb997e2362718a8, 0x1e3d42bd44357f6e, 0xbcb03d5cd203d724, 0xdd34e803a011b0e2, + 0x6b726db451609935, 0x0af6b8eb2372fef3, 0xa87bc70ab54456b9, 0xc9ff1255c756317f, + 0x05018a1765b61de6, 0x64855f4817a47a20, 0xc60820a98192d26a, 0xa78cf5f6f380b5ac, + 0x11ca704102f19c7b, 0x704ea51e70e3fbbd, 0xd2c3daffe6d553f7, 0xb3470fa094c73431, + 0x2c967ebbab391edc, 0x4d12abe4d92b791a, 0xef9fd4054f1dd150, 0x8e1b015a3d0fb696, + 0x385d84edcc7e9f41, 0x59d951b2be6cf887, 0xfb542e53285a50cd, 0x9ad0fb0c5a48370b, + }, + { + 0x0000000000000000, 0x22ef0d5934f964ec, 0x45de1ab269f2c9d8, 0x673117eb5d0bad34, + 0x8bbc3564d3e593b0, 0xa953383de71cf75c, 0xce622fd6ba175a68, 0xec8d228f8eee3e84, + 0x85a0c5e208c539e5, 0xa74fc8bb3c3c5d09, 0xc07edf506137f03d, 0xe291d20955ce94d1, + 0x0e1cf086db20aa55, 0x2cf3fddfefd9ceb9, 0x4bc2ea34b2d2638d, 0x692de76d862b0761, + 0x999924efbe846d4f, 0xbb7629b68a7d09a3, 0xdc473e5dd776a497, 0xfea83304e38fc07b, + 0x1225118b6d61feff, 0x30ca1cd259989a13, 0x57fb0b3904933727, 0x75140660306a53cb, + 0x1c39e10db64154aa, 0x3ed6ec5482b83046, 0x59e7fbbfdfb39d72, 0x7b08f6e6eb4af99e, + 0x9785d46965a4c71a, 0xb56ad930515da3f6, 0xd25bcedb0c560ec2, 0xf0b4c38238af6a2e, + 0xa1eae6f4d206c41b, 0x8305ebade6ffa0f7, 0xe434fc46bbf40dc3, 0xc6dbf11f8f0d692f, + 0x2a56d39001e357ab, 0x08b9dec9351a3347, 0x6f88c92268119e73, 0x4d67c47b5ce8fa9f, + 0x244a2316dac3fdfe, 0x06a52e4fee3a9912, 0x619439a4b3313426, 0x437b34fd87c850ca, + 0xaff6167209266e4e, 0x8d191b2b3ddf0aa2, 0xea280cc060d4a796, 0xc8c70199542dc37a, + 0x3873c21b6c82a954, 0x1a9ccf42587bcdb8, 0x7dadd8a90570608c, 0x5f42d5f031890460, + 0xb3cff77fbf673ae4, 0x9120fa268b9e5e08, 0xf611edcdd695f33c, 0xd4fee094e26c97d0, + 0xbdd307f9644790b1, 0x9f3c0aa050bef45d, 0xf80d1d4b0db55969, 0xdae21012394c3d85, + 0x366f329db7a20301, 0x14803fc4835b67ed, 0x73b1282fde50cad9, 0x515e2576eaa9ae35, + 0xd10d62c20b0396b3, 0xf3e26f9b3ffaf25f, 0x94d3787062f15f6b, 0xb63c752956083b87, + 0x5ab157a6d8e60503, 0x785e5affec1f61ef, 0x1f6f4d14b114ccdb, 0x3d80404d85eda837, + 0x54ada72003c6af56, 0x7642aa79373fcbba, 0x1173bd926a34668e, 0x339cb0cb5ecd0262, + 0xdf119244d0233ce6, 0xfdfe9f1de4da580a, 0x9acf88f6b9d1f53e, 0xb82085af8d2891d2, + 0x4894462db587fbfc, 0x6a7b4b74817e9f10, 0x0d4a5c9fdc753224, 0x2fa551c6e88c56c8, + 0xc32873496662684c, 0xe1c77e10529b0ca0, 0x86f669fb0f90a194, 0xa41964a23b69c578, + 0xcd3483cfbd42c219, 0xefdb8e9689bba6f5, 0x88ea997dd4b00bc1, 0xaa059424e0496f2d, + 0x4688b6ab6ea751a9, 0x6467bbf25a5e3545, 0x0356ac1907559871, 0x21b9a14033acfc9d, + 0x70e78436d90552a8, 0x5208896fedfc3644, 0x35399e84b0f79b70, 0x17d693dd840eff9c, + 0xfb5bb1520ae0c118, 0xd9b4bc0b3e19a5f4, 0xbe85abe0631208c0, 0x9c6aa6b957eb6c2c, + 0xf54741d4d1c06b4d, 0xd7a84c8de5390fa1, 0xb0995b66b832a295, 0x9276563f8ccbc679, + 0x7efb74b00225f8fd, 0x5c1479e936dc9c11, 0x3b256e026bd73125, 0x19ca635b5f2e55c9, + 0xe97ea0d967813fe7, 0xcb91ad8053785b0b, 0xaca0ba6b0e73f63f, 0x8e4fb7323a8a92d3, + 0x62c295bdb464ac57, 0x402d98e4809dc8bb, 0x271c8f0fdd96658f, 0x05f38256e96f0163, + 0x6cde653b6f440602, 0x4e3168625bbd62ee, 0x29007f8906b6cfda, 0x0bef72d0324fab36, + 0xe762505fbca195b2, 0xc58d5d068858f15e, 0xa2bc4aedd5535c6a, 0x805347b4e1aa3886, + 0x30c26aafb90933e3, 0x122d67f68df0570f, 0x751c701dd0fbfa3b, 0x57f37d44e4029ed7, + 0xbb7e5fcb6aeca053, 0x999152925e15c4bf, 0xfea04579031e698b, 0xdc4f482037e70d67, + 0xb562af4db1cc0a06, 0x978da21485356eea, 0xf0bcb5ffd83ec3de, 0xd253b8a6ecc7a732, + 0x3ede9a29622999b6, 0x1c31977056d0fd5a, 0x7b00809b0bdb506e, 0x59ef8dc23f223482, + 0xa95b4e40078d5eac, 0x8bb4431933743a40, 0xec8554f26e7f9774, 0xce6a59ab5a86f398, + 0x22e77b24d468cd1c, 0x0008767de091a9f0, 0x67396196bd9a04c4, 0x45d66ccf89636028, + 0x2cfb8ba20f486749, 0x0e1486fb3bb103a5, 0x6925911066baae91, 0x4bca9c495243ca7d, + 0xa747bec6dcadf4f9, 0x85a8b39fe8549015, 0xe299a474b55f3d21, 0xc076a92d81a659cd, + 0x91288c5b6b0ff7f8, 0xb3c781025ff69314, 0xd4f696e902fd3e20, 0xf6199bb036045acc, + 0x1a94b93fb8ea6448, 0x387bb4668c1300a4, 0x5f4aa38dd118ad90, 0x7da5aed4e5e1c97c, + 0x148849b963cace1d, 0x366744e05733aaf1, 0x5156530b0a3807c5, 0x73b95e523ec16329, + 0x9f347cddb02f5dad, 0xbddb718484d63941, 0xdaea666fd9dd9475, 0xf8056b36ed24f099, + 0x08b1a8b4d58b9ab7, 0x2a5ea5ede172fe5b, 0x4d6fb206bc79536f, 0x6f80bf5f88803783, + 0x830d9dd0066e0907, 0xa1e2908932976deb, 0xc6d387626f9cc0df, 0xe43c8a3b5b65a433, + 0x8d116d56dd4ea352, 0xaffe600fe9b7c7be, 0xc8cf77e4b4bc6a8a, 0xea207abd80450e66, + 0x06ad58320eab30e2, 0x2442556b3a52540e, 0x437342806759f93a, 0x619c4fd953a09dd6, + 0xe1cf086db20aa550, 0xc320053486f3c1bc, 0xa41112dfdbf86c88, 0x86fe1f86ef010864, + 0x6a733d0961ef36e0, 0x489c30505516520c, 0x2fad27bb081dff38, 0x0d422ae23ce49bd4, + 0x646fcd8fbacf9cb5, 0x4680c0d68e36f859, 0x21b1d73dd33d556d, 0x035eda64e7c43181, + 0xefd3f8eb692a0f05, 0xcd3cf5b25dd36be9, 0xaa0de25900d8c6dd, 0x88e2ef003421a231, + 0x78562c820c8ec81f, 0x5ab921db3877acf3, 0x3d883630657c01c7, 0x1f673b695185652b, + 0xf3ea19e6df6b5baf, 0xd10514bfeb923f43, 0xb6340354b6999277, 0x94db0e0d8260f69b, + 0xfdf6e960044bf1fa, 0xdf19e43930b29516, 0xb828f3d26db93822, 0x9ac7fe8b59405cce, + 0x764adc04d7ae624a, 0x54a5d15de35706a6, 0x3394c6b6be5cab92, 0x117bcbef8aa5cf7e, + 0x4025ee99600c614b, 0x62cae3c054f505a7, 0x05fbf42b09fea893, 0x2714f9723d07cc7f, + 0xcb99dbfdb3e9f2fb, 0xe976d6a487109617, 0x8e47c14fda1b3b23, 0xaca8cc16eee25fcf, + 0xc5852b7b68c958ae, 0xe76a26225c303c42, 0x805b31c9013b9176, 0xa2b43c9035c2f59a, + 0x4e391e1fbb2ccb1e, 0x6cd613468fd5aff2, 0x0be704add2de02c6, 0x290809f4e627662a, + 0xd9bcca76de880c04, 0xfb53c72fea7168e8, 0x9c62d0c4b77ac5dc, 0xbe8ddd9d8383a130, + 0x5200ff120d6d9fb4, 0x70eff24b3994fb58, 0x17dee5a0649f566c, 0x3531e8f950663280, + 0x5c1c0f94d64d35e1, 0x7ef302cde2b4510d, 0x19c21526bfbffc39, 0x3b2d187f8b4698d5, + 0xd7a03af005a8a651, 0xf54f37a93151c2bd, 0x927e20426c5a6f89, 0xb0912d1b58a30b65, + }, + { + 0x0000000000000000, 0xdabe95afc7875f40, 0x27a584742000a005, 0xfd1b11dbe787ff45, + 0x4f4b08e84001400a, 0x95f59d4787861f4a, 0x68ee8c9c6001e00f, 0xb2501933a786bf4f, + 0x9e9611d080028014, 0x4428847f4785df54, 0xb93395a4a0022011, 0x638d000b67857f51, + 0xd1dd1938c003c01e, 0x0b638c9707849f5e, 0xf6789d4ce003601b, 0x2cc608e327843f5b, + 0xaff48c8aaf0b1ead, 0x754a1925688c41ed, 0x885108fe8f0bbea8, 0x52ef9d51488ce1e8, + 0xe0bf8462ef0a5ea7, 0x3a0111cd288d01e7, 0xc71a0016cf0afea2, 0x1da495b9088da1e2, + 0x31629d5a2f099eb9, 0xebdc08f5e88ec1f9, 0x16c7192e0f093ebc, 0xcc798c81c88e61fc, + 0x7e2995b26f08deb3, 0xa497001da88f81f3, 0x598c11c64f087eb6, 0x83328469888f21f6, + 0xcd31b63ef11823df, 0x178f2391369f7c9f, 0xea94324ad11883da, 0x302aa7e5169fdc9a, + 0x827abed6b11963d5, 0x58c42b79769e3c95, 0xa5df3aa29119c3d0, 0x7f61af0d569e9c90, + 0x53a7a7ee711aa3cb, 0x89193241b69dfc8b, 0x7402239a511a03ce, 0xaebcb635969d5c8e, + 0x1cecaf06311be3c1, 0xc6523aa9f69cbc81, 0x3b492b72111b43c4, 0xe1f7beddd69c1c84, + 0x62c53ab45e133d72, 0xb87baf1b99946232, 0x4560bec07e139d77, 0x9fde2b6fb994c237, + 0x2d8e325c1e127d78, 0xf730a7f3d9952238, 0x0a2bb6283e12dd7d, 0xd0952387f995823d, + 0xfc532b64de11bd66, 0x26edbecb1996e226, 0xdbf6af10fe111d63, 0x01483abf39964223, + 0xb318238c9e10fd6c, 0x69a6b6235997a22c, 0x94bda7f8be105d69, 0x4e03325779970229, + 0x08bbc3564d3e593b, 0xd20556f98ab9067b, 0x2f1e47226d3ef93e, 0xf5a0d28daab9a67e, + 0x47f0cbbe0d3f1931, 0x9d4e5e11cab84671, 0x60554fca2d3fb934, 0xbaebda65eab8e674, + 0x962dd286cd3cd92f, 0x4c9347290abb866f, 0xb18856f2ed3c792a, 0x6b36c35d2abb266a, + 0xd966da6e8d3d9925, 0x03d84fc14abac665, 0xfec35e1aad3d3920, 0x247dcbb56aba6660, + 0xa74f4fdce2354796, 0x7df1da7325b218d6, 0x80eacba8c235e793, 0x5a545e0705b2b8d3, + 0xe8044734a234079c, 0x32bad29b65b358dc, 0xcfa1c3408234a799, 0x151f56ef45b3f8d9, + 0x39d95e0c6237c782, 0xe367cba3a5b098c2, 0x1e7cda7842376787, 0xc4c24fd785b038c7, + 0x769256e422368788, 0xac2cc34be5b1d8c8, 0x5137d2900236278d, 0x8b89473fc5b178cd, + 0xc58a7568bc267ae4, 0x1f34e0c77ba125a4, 0xe22ff11c9c26dae1, 0x389164b35ba185a1, + 0x8ac17d80fc273aee, 0x507fe82f3ba065ae, 0xad64f9f4dc279aeb, 0x77da6c5b1ba0c5ab, + 0x5b1c64b83c24faf0, 0x81a2f117fba3a5b0, 0x7cb9e0cc1c245af5, 0xa6077563dba305b5, + 0x14576c507c25bafa, 0xcee9f9ffbba2e5ba, 0x33f2e8245c251aff, 0xe94c7d8b9ba245bf, + 0x6a7ef9e2132d6449, 0xb0c06c4dd4aa3b09, 0x4ddb7d96332dc44c, 0x9765e839f4aa9b0c, + 0x2535f10a532c2443, 0xff8b64a594ab7b03, 0x0290757e732c8446, 0xd82ee0d1b4abdb06, + 0xf4e8e832932fe45d, 0x2e567d9d54a8bb1d, 0xd34d6c46b32f4458, 0x09f3f9e974a81b18, + 0xbba3e0dad32ea457, 0x611d757514a9fb17, 0x9c0664aef32e0452, 0x46b8f10134a95b12, + 0x117786ac9a7cb276, 0xcbc913035dfbed36, 0x36d202d8ba7c1273, 0xec6c97777dfb4d33, + 0x5e3c8e44da7df27c, 0x84821beb1dfaad3c, 0x79990a30fa7d5279, 0xa3279f9f3dfa0d39, + 0x8fe1977c1a7e3262, 0x555f02d3ddf96d22, 0xa84413083a7e9267, 0x72fa86a7fdf9cd27, + 0xc0aa9f945a7f7268, 0x1a140a3b9df82d28, 0xe70f1be07a7fd26d, 0x3db18e4fbdf88d2d, + 0xbe830a263577acdb, 0x643d9f89f2f0f39b, 0x99268e5215770cde, 0x43981bfdd2f0539e, + 0xf1c802ce7576ecd1, 0x2b769761b2f1b391, 0xd66d86ba55764cd4, 0x0cd3131592f11394, + 0x20151bf6b5752ccf, 0xfaab8e5972f2738f, 0x07b09f8295758cca, 0xdd0e0a2d52f2d38a, + 0x6f5e131ef5746cc5, 0xb5e086b132f33385, 0x48fb976ad574ccc0, 0x924502c512f39380, + 0xdc4630926b6491a9, 0x06f8a53dace3cee9, 0xfbe3b4e64b6431ac, 0x215d21498ce36eec, + 0x930d387a2b65d1a3, 0x49b3add5ece28ee3, 0xb4a8bc0e0b6571a6, 0x6e1629a1cce22ee6, + 0x42d02142eb6611bd, 0x986eb4ed2ce14efd, 0x6575a536cb66b1b8, 0xbfcb30990ce1eef8, + 0x0d9b29aaab6751b7, 0xd725bc056ce00ef7, 0x2a3eadde8b67f1b2, 0xf08038714ce0aef2, + 0x73b2bc18c46f8f04, 0xa90c29b703e8d044, 0x5417386ce46f2f01, 0x8ea9adc323e87041, + 0x3cf9b4f0846ecf0e, 0xe647215f43e9904e, 0x1b5c3084a46e6f0b, 0xc1e2a52b63e9304b, + 0xed24adc8446d0f10, 0x379a386783ea5050, 0xca8129bc646daf15, 0x103fbc13a3eaf055, + 0xa26fa520046c4f1a, 0x78d1308fc3eb105a, 0x85ca2154246cef1f, 0x5f74b4fbe3ebb05f, + 0x19cc45fad742eb4d, 0xc372d05510c5b40d, 0x3e69c18ef7424b48, 0xe4d7542130c51408, + 0x56874d129743ab47, 0x8c39d8bd50c4f407, 0x7122c966b7430b42, 0xab9c5cc970c45402, + 0x875a542a57406b59, 0x5de4c18590c73419, 0xa0ffd05e7740cb5c, 0x7a4145f1b0c7941c, + 0xc8115cc217412b53, 0x12afc96dd0c67413, 0xefb4d8b637418b56, 0x350a4d19f0c6d416, + 0xb638c9707849f5e0, 0x6c865cdfbfceaaa0, 0x919d4d04584955e5, 0x4b23d8ab9fce0aa5, + 0xf973c1983848b5ea, 0x23cd5437ffcfeaaa, 0xded645ec184815ef, 0x0468d043dfcf4aaf, + 0x28aed8a0f84b75f4, 0xf2104d0f3fcc2ab4, 0x0f0b5cd4d84bd5f1, 0xd5b5c97b1fcc8ab1, + 0x67e5d048b84a35fe, 0xbd5b45e77fcd6abe, 0x4040543c984a95fb, 0x9afec1935fcdcabb, + 0xd4fdf3c4265ac892, 0x0e43666be1dd97d2, 0xf35877b0065a6897, 0x29e6e21fc1dd37d7, + 0x9bb6fb2c665b8898, 0x41086e83a1dcd7d8, 0xbc137f58465b289d, 0x66adeaf781dc77dd, + 0x4a6be214a6584886, 0x90d577bb61df17c6, 0x6dce66608658e883, 0xb770f3cf41dfb7c3, + 0x0520eafce659088c, 0xdf9e7f5321de57cc, 0x22856e88c659a889, 0xf83bfb2701def7c9, + 0x7b097f4e8951d63f, 0xa1b7eae14ed6897f, 0x5cacfb3aa951763a, 0x86126e956ed6297a, + 0x344277a6c9509635, 0xeefce2090ed7c975, 0x13e7f3d2e9503630, 0xc959667d2ed76970, + 0xe59f6e9e0953562b, 0x3f21fb31ced4096b, 0xc23aeaea2953f62e, 0x18847f45eed4a96e, + 0xaad4667649521621, 0x706af3d98ed54961, 0x8d71e2026952b624, 0x57cf77adaed5e964, + }, + { + 0x0000000000000000, 0x646c955f440400fe, 0xc8d92abe880801fc, 0xacb5bfe1cc0c0102, + 0x036afa56bf1e1d7d, 0x67066f09fb1a1d83, 0xcbb3d0e837161c81, 0xafdf45b773121c7f, + 0x06d5f4ad7e3c3afa, 0x62b961f23a383a04, 0xce0cde13f6343b06, 0xaa604b4cb2303bf8, + 0x05bf0efbc1222787, 0x61d39ba485262779, 0xcd662445492a267b, 0xa90ab11a0d2e2685, + 0x0dabe95afc7875f4, 0x69c77c05b87c750a, 0xc572c3e474707408, 0xa11e56bb307474f6, + 0x0ec1130c43666889, 0x6aad865307626877, 0xc61839b2cb6e6975, 0xa274aced8f6a698b, + 0x0b7e1df782444f0e, 0x6f1288a8c6404ff0, 0xc3a737490a4c4ef2, 0xa7cba2164e484e0c, + 0x0814e7a13d5a5273, 0x6c7872fe795e528d, 0xc0cdcd1fb552538f, 0xa4a15840f1565371, + 0x1b57d2b5f8f0ebe8, 0x7f3b47eabcf4eb16, 0xd38ef80b70f8ea14, 0xb7e26d5434fceaea, + 0x183d28e347eef695, 0x7c51bdbc03eaf66b, 0xd0e4025dcfe6f769, 0xb48897028be2f797, + 0x1d82261886ccd112, 0x79eeb347c2c8d1ec, 0xd55b0ca60ec4d0ee, 0xb13799f94ac0d010, + 0x1ee8dc4e39d2cc6f, 0x7a8449117dd6cc91, 0xd631f6f0b1dacd93, 0xb25d63aff5decd6d, + 0x16fc3bef04889e1c, 0x7290aeb0408c9ee2, 0xde2511518c809fe0, 0xba49840ec8849f1e, + 0x1596c1b9bb968361, 0x71fa54e6ff92839f, 0xdd4feb07339e829d, 0xb9237e58779a8263, + 0x1029cf427ab4a4e6, 0x74455a1d3eb0a418, 0xd8f0e5fcf2bca51a, 0xbc9c70a3b6b8a5e4, + 0x13433514c5aab99b, 0x772fa04b81aeb965, 0xdb9a1faa4da2b867, 0xbff68af509a6b899, + 0x36afa56bf1e1d7d0, 0x52c33034b5e5d72e, 0xfe768fd579e9d62c, 0x9a1a1a8a3dedd6d2, + 0x35c55f3d4effcaad, 0x51a9ca620afbca53, 0xfd1c7583c6f7cb51, 0x9970e0dc82f3cbaf, + 0x307a51c68fdded2a, 0x5416c499cbd9edd4, 0xf8a37b7807d5ecd6, 0x9ccfee2743d1ec28, + 0x3310ab9030c3f057, 0x577c3ecf74c7f0a9, 0xfbc9812eb8cbf1ab, 0x9fa51471fccff155, + 0x3b044c310d99a224, 0x5f68d96e499da2da, 0xf3dd668f8591a3d8, 0x97b1f3d0c195a326, + 0x386eb667b287bf59, 0x5c022338f683bfa7, 0xf0b79cd93a8fbea5, 0x94db09867e8bbe5b, + 0x3dd1b89c73a598de, 0x59bd2dc337a19820, 0xf5089222fbad9922, 0x9164077dbfa999dc, + 0x3ebb42caccbb85a3, 0x5ad7d79588bf855d, 0xf662687444b3845f, 0x920efd2b00b784a1, + 0x2df877de09113c38, 0x4994e2814d153cc6, 0xe5215d6081193dc4, 0x814dc83fc51d3d3a, + 0x2e928d88b60f2145, 0x4afe18d7f20b21bb, 0xe64ba7363e0720b9, 0x822732697a032047, + 0x2b2d8373772d06c2, 0x4f41162c3329063c, 0xe3f4a9cdff25073e, 0x87983c92bb2107c0, + 0x28477925c8331bbf, 0x4c2bec7a8c371b41, 0xe09e539b403b1a43, 0x84f2c6c4043f1abd, + 0x20539e84f56949cc, 0x443f0bdbb16d4932, 0xe88ab43a7d614830, 0x8ce62165396548ce, + 0x233964d24a7754b1, 0x4755f18d0e73544f, 0xebe04e6cc27f554d, 0x8f8cdb33867b55b3, + 0x26866a298b557336, 0x42eaff76cf5173c8, 0xee5f4097035d72ca, 0x8a33d5c847597234, + 0x25ec907f344b6e4b, 0x41800520704f6eb5, 0xed35bac1bc436fb7, 0x89592f9ef8476f49, + 0x6d5f4ad7e3c3afa0, 0x0933df88a7c7af5e, 0xa58660696bcbae5c, 0xc1eaf5362fcfaea2, + 0x6e35b0815cddb2dd, 0x0a5925de18d9b223, 0xa6ec9a3fd4d5b321, 0xc2800f6090d1b3df, + 0x6b8abe7a9dff955a, 0x0fe62b25d9fb95a4, 0xa35394c415f794a6, 0xc73f019b51f39458, + 0x68e0442c22e18827, 0x0c8cd17366e588d9, 0xa0396e92aae989db, 0xc455fbcdeeed8925, + 0x60f4a38d1fbbda54, 0x049836d25bbfdaaa, 0xa82d893397b3dba8, 0xcc411c6cd3b7db56, + 0x639e59dba0a5c729, 0x07f2cc84e4a1c7d7, 0xab47736528adc6d5, 0xcf2be63a6ca9c62b, + 0x662157206187e0ae, 0x024dc27f2583e050, 0xaef87d9ee98fe152, 0xca94e8c1ad8be1ac, + 0x654bad76de99fdd3, 0x012738299a9dfd2d, 0xad9287c85691fc2f, 0xc9fe12971295fcd1, + 0x760898621b334448, 0x12640d3d5f3744b6, 0xbed1b2dc933b45b4, 0xdabd2783d73f454a, + 0x75626234a42d5935, 0x110ef76be02959cb, 0xbdbb488a2c2558c9, 0xd9d7ddd568215837, + 0x70dd6ccf650f7eb2, 0x14b1f990210b7e4c, 0xb8044671ed077f4e, 0xdc68d32ea9037fb0, + 0x73b79699da1163cf, 0x17db03c69e156331, 0xbb6ebc2752196233, 0xdf022978161d62cd, + 0x7ba37138e74b31bc, 0x1fcfe467a34f3142, 0xb37a5b866f433040, 0xd716ced92b4730be, + 0x78c98b6e58552cc1, 0x1ca51e311c512c3f, 0xb010a1d0d05d2d3d, 0xd47c348f94592dc3, + 0x7d76859599770b46, 0x191a10cadd730bb8, 0xb5afaf2b117f0aba, 0xd1c33a74557b0a44, + 0x7e1c7fc32669163b, 0x1a70ea9c626d16c5, 0xb6c5557dae6117c7, 0xd2a9c022ea651739, + 0x5bf0efbc12227870, 0x3f9c7ae35626788e, 0x9329c5029a2a798c, 0xf745505dde2e7972, + 0x589a15eaad3c650d, 0x3cf680b5e93865f3, 0x90433f54253464f1, 0xf42faa0b6130640f, + 0x5d251b116c1e428a, 0x39498e4e281a4274, 0x95fc31afe4164376, 0xf190a4f0a0124388, + 0x5e4fe147d3005ff7, 0x3a23741897045f09, 0x9696cbf95b085e0b, 0xf2fa5ea61f0c5ef5, + 0x565b06e6ee5a0d84, 0x323793b9aa5e0d7a, 0x9e822c5866520c78, 0xfaeeb90722560c86, + 0x5531fcb0514410f9, 0x315d69ef15401007, 0x9de8d60ed94c1105, 0xf98443519d4811fb, + 0x508ef24b9066377e, 0x34e26714d4623780, 0x9857d8f5186e3682, 0xfc3b4daa5c6a367c, + 0x53e4081d2f782a03, 0x37889d426b7c2afd, 0x9b3d22a3a7702bff, 0xff51b7fce3742b01, + 0x40a73d09ead29398, 0x24cba856aed69366, 0x887e17b762da9264, 0xec1282e826de929a, + 0x43cdc75f55cc8ee5, 0x27a1520011c88e1b, 0x8b14ede1ddc48f19, 0xef7878be99c08fe7, + 0x4672c9a494eea962, 0x221e5cfbd0eaa99c, 0x8eabe31a1ce6a89e, 0xeac7764558e2a860, + 0x451833f22bf0b41f, 0x2174a6ad6ff4b4e1, 0x8dc1194ca3f8b5e3, 0xe9ad8c13e7fcb51d, + 0x4d0cd45316aae66c, 0x2960410c52aee692, 0x85d5feed9ea2e790, 0xe1b96bb2daa6e76e, + 0x4e662e05a9b4fb11, 0x2a0abb5aedb0fbef, 0x86bf04bb21bcfaed, 0xe2d391e465b8fa13, + 0x4bd920fe6896dc96, 0x2fb5b5a12c92dc68, 0x83000a40e09edd6a, 0xe76c9f1fa49add94, + 0x48b3daa8d788c1eb, 0x2cdf4ff7938cc115, 0x806af0165f80c017, 0xe40665491b84c0e9, + }, + { + 0x0000000000000000, 0x53e7815838846436, 0xa7cf02b07108c86c, 0xf42883e8498cac5a, + 0xdd46aa4b4d1f8e5d, 0x8ea12b13759bea6b, 0x7a89a8fb3c174631, 0x296e29a304932207, + 0x2855fbbd3531023f, 0x7bb27ae50db56609, 0x8f9af90d4439ca53, 0xdc7d78557cbdae65, + 0xf51351f6782e8c62, 0xa6f4d0ae40aae854, 0x52dc53460926440e, 0x013bd21e31a22038, + 0x50abf77a6a62047e, 0x034c762252e66048, 0xf764f5ca1b6acc12, 0xa483749223eea824, + 0x8ded5d31277d8a23, 0xde0adc691ff9ee15, 0x2a225f815675424f, 0x79c5ded96ef12679, + 0x78fe0cc75f530641, 0x2b198d9f67d76277, 0xdf310e772e5bce2d, 0x8cd68f2f16dfaa1b, + 0xa5b8a68c124c881c, 0xf65f27d42ac8ec2a, 0x0277a43c63444070, 0x519025645bc02446, + 0xa157eef4d4c408fc, 0xf2b06facec406cca, 0x0698ec44a5ccc090, 0x557f6d1c9d48a4a6, + 0x7c1144bf99db86a1, 0x2ff6c5e7a15fe297, 0xdbde460fe8d34ecd, 0x8839c757d0572afb, + 0x89021549e1f50ac3, 0xdae59411d9716ef5, 0x2ecd17f990fdc2af, 0x7d2a96a1a879a699, + 0x5444bf02acea849e, 0x07a33e5a946ee0a8, 0xf38bbdb2dde24cf2, 0xa06c3ceae56628c4, + 0xf1fc198ebea60c82, 0xa21b98d6862268b4, 0x56331b3ecfaec4ee, 0x05d49a66f72aa0d8, + 0x2cbab3c5f3b982df, 0x7f5d329dcb3de6e9, 0x8b75b17582b14ab3, 0xd892302dba352e85, + 0xd9a9e2338b970ebd, 0x8a4e636bb3136a8b, 0x7e66e083fa9fc6d1, 0x2d8161dbc21ba2e7, + 0x04ef4878c68880e0, 0x5708c920fe0ce4d6, 0xa3204ac8b780488c, 0xf0c7cb908f042cba, + 0xd07772c206860f7d, 0x8390f39a3e026b4b, 0x77b87072778ec711, 0x245ff12a4f0aa327, + 0x0d31d8894b998120, 0x5ed659d1731de516, 0xaafeda393a91494c, 0xf9195b6102152d7a, + 0xf822897f33b70d42, 0xabc508270b336974, 0x5fed8bcf42bfc52e, 0x0c0a0a977a3ba118, + 0x256423347ea8831f, 0x7683a26c462ce729, 0x82ab21840fa04b73, 0xd14ca0dc37242f45, + 0x80dc85b86ce40b03, 0xd33b04e054606f35, 0x271387081decc36f, 0x74f406502568a759, + 0x5d9a2ff321fb855e, 0x0e7daeab197fe168, 0xfa552d4350f34d32, 0xa9b2ac1b68772904, + 0xa8897e0559d5093c, 0xfb6eff5d61516d0a, 0x0f467cb528ddc150, 0x5ca1fded1059a566, + 0x75cfd44e14ca8761, 0x262855162c4ee357, 0xd200d6fe65c24f0d, 0x81e757a65d462b3b, + 0x71209c36d2420781, 0x22c71d6eeac663b7, 0xd6ef9e86a34acfed, 0x85081fde9bceabdb, + 0xac66367d9f5d89dc, 0xff81b725a7d9edea, 0x0ba934cdee5541b0, 0x584eb595d6d12586, + 0x5975678be77305be, 0x0a92e6d3dff76188, 0xfeba653b967bcdd2, 0xad5de463aeffa9e4, + 0x8433cdc0aa6c8be3, 0xd7d44c9892e8efd5, 0x23fccf70db64438f, 0x701b4e28e3e027b9, + 0x218b6b4cb82003ff, 0x726cea1480a467c9, 0x864469fcc928cb93, 0xd5a3e8a4f1acafa5, + 0xfccdc107f53f8da2, 0xaf2a405fcdbbe994, 0x5b02c3b7843745ce, 0x08e542efbcb321f8, + 0x09de90f18d1101c0, 0x5a3911a9b59565f6, 0xae119241fc19c9ac, 0xfdf61319c49dad9a, + 0xd4983abac00e8f9d, 0x877fbbe2f88aebab, 0x7357380ab10647f1, 0x20b0b952898223c7, + 0x32364aafa202007f, 0x61d1cbf79a866449, 0x95f9481fd30ac813, 0xc61ec947eb8eac25, + 0xef70e0e4ef1d8e22, 0xbc9761bcd799ea14, 0x48bfe2549e15464e, 0x1b58630ca6912278, + 0x1a63b11297330240, 0x4984304aafb76676, 0xbdacb3a2e63bca2c, 0xee4b32fadebfae1a, + 0xc7251b59da2c8c1d, 0x94c29a01e2a8e82b, 0x60ea19e9ab244471, 0x330d98b193a02047, + 0x629dbdd5c8600401, 0x317a3c8df0e46037, 0xc552bf65b968cc6d, 0x96b53e3d81eca85b, + 0xbfdb179e857f8a5c, 0xec3c96c6bdfbee6a, 0x1814152ef4774230, 0x4bf39476ccf32606, + 0x4ac84668fd51063e, 0x192fc730c5d56208, 0xed0744d88c59ce52, 0xbee0c580b4ddaa64, + 0x978eec23b04e8863, 0xc4696d7b88caec55, 0x3041ee93c146400f, 0x63a66fcbf9c22439, + 0x9361a45b76c60883, 0xc08625034e426cb5, 0x34aea6eb07cec0ef, 0x674927b33f4aa4d9, + 0x4e270e103bd986de, 0x1dc08f48035de2e8, 0xe9e80ca04ad14eb2, 0xba0f8df872552a84, + 0xbb345fe643f70abc, 0xe8d3debe7b736e8a, 0x1cfb5d5632ffc2d0, 0x4f1cdc0e0a7ba6e6, + 0x6672f5ad0ee884e1, 0x359574f5366ce0d7, 0xc1bdf71d7fe04c8d, 0x925a7645476428bb, + 0xc3ca53211ca40cfd, 0x902dd279242068cb, 0x640551916dacc491, 0x37e2d0c95528a0a7, + 0x1e8cf96a51bb82a0, 0x4d6b7832693fe696, 0xb943fbda20b34acc, 0xeaa47a8218372efa, + 0xeb9fa89c29950ec2, 0xb87829c411116af4, 0x4c50aa2c589dc6ae, 0x1fb72b746019a298, + 0x36d902d7648a809f, 0x653e838f5c0ee4a9, 0x91160067158248f3, 0xc2f1813f2d062cc5, + 0xe241386da4840f02, 0xb1a6b9359c006b34, 0x458e3addd58cc76e, 0x1669bb85ed08a358, + 0x3f079226e99b815f, 0x6ce0137ed11fe569, 0x98c8909698934933, 0xcb2f11cea0172d05, + 0xca14c3d091b50d3d, 0x99f34288a931690b, 0x6ddbc160e0bdc551, 0x3e3c4038d839a167, + 0x1752699bdcaa8360, 0x44b5e8c3e42ee756, 0xb09d6b2bada24b0c, 0xe37aea7395262f3a, + 0xb2eacf17cee60b7c, 0xe10d4e4ff6626f4a, 0x1525cda7bfeec310, 0x46c24cff876aa726, + 0x6fac655c83f98521, 0x3c4be404bb7de117, 0xc86367ecf2f14d4d, 0x9b84e6b4ca75297b, + 0x9abf34aafbd70943, 0xc958b5f2c3536d75, 0x3d70361a8adfc12f, 0x6e97b742b25ba519, + 0x47f99ee1b6c8871e, 0x141e1fb98e4ce328, 0xe0369c51c7c04f72, 0xb3d11d09ff442b44, + 0x4316d699704007fe, 0x10f157c148c463c8, 0xe4d9d4290148cf92, 0xb73e557139ccaba4, + 0x9e507cd23d5f89a3, 0xcdb7fd8a05dbed95, 0x399f7e624c5741cf, 0x6a78ff3a74d325f9, + 0x6b432d24457105c1, 0x38a4ac7c7df561f7, 0xcc8c2f943479cdad, 0x9f6baecc0cfda99b, + 0xb605876f086e8b9c, 0xe5e2063730eaefaa, 0x11ca85df796643f0, 0x422d048741e227c6, + 0x13bd21e31a220380, 0x405aa0bb22a667b6, 0xb47223536b2acbec, 0xe795a20b53aeafda, + 0xcefb8ba8573d8ddd, 0x9d1c0af06fb9e9eb, 0x69348918263545b1, 0x3ad308401eb12187, + 0x3be8da5e2f1301bf, 0x680f5b0617976589, 0x9c27d8ee5e1bc9d3, 0xcfc059b6669fade5, + 0xe6ae7015620c8fe2, 0xb549f14d5a88ebd4, 0x416172a51304478e, 0x1286f3fd2b8023b8, + }, + { + 0x0000000000000000, 0x09abf11afca2d0d7, 0x1357e235f945a1ae, 0x1afc132f05e77179, + 0x26afc46bf28b435c, 0x2f0435710e29938b, 0x35f8265e0bcee2f2, 0x3c53d744f76c3225, + 0x4d5f88d7e51686b8, 0x44f479cd19b4566f, 0x5e086ae21c532716, 0x57a39bf8e0f1f7c1, + 0x6bf04cbc179dc5e4, 0x625bbda6eb3f1533, 0x78a7ae89eed8644a, 0x710c5f93127ab49d, + 0x9abf11afca2d0d70, 0x9314e0b5368fdda7, 0x89e8f39a3368acde, 0x80430280cfca7c09, + 0xbc10d5c438a64e2c, 0xb5bb24dec4049efb, 0xaf4737f1c1e3ef82, 0xa6ecc6eb3d413f55, + 0xd7e099782f3b8bc8, 0xde4b6862d3995b1f, 0xc4b77b4dd67e2a66, 0xcd1c8a572adcfab1, + 0xf14f5d13ddb0c894, 0xf8e4ac0921121843, 0xe218bf2624f5693a, 0xebb34e3cd857b9ed, + 0xa7a68c743b540465, 0xae0d7d6ec7f6d4b2, 0xb4f16e41c211a5cb, 0xbd5a9f5b3eb3751c, + 0x8109481fc9df4739, 0x88a2b905357d97ee, 0x925eaa2a309ae697, 0x9bf55b30cc383640, + 0xeaf904a3de4282dd, 0xe352f5b922e0520a, 0xf9aee69627072373, 0xf005178cdba5f3a4, + 0xcc56c0c82cc9c181, 0xc5fd31d2d06b1156, 0xdf0122fdd58c602f, 0xd6aad3e7292eb0f8, + 0x3d199ddbf1790915, 0x34b26cc10ddbd9c2, 0x2e4e7fee083ca8bb, 0x27e58ef4f49e786c, + 0x1bb659b003f24a49, 0x121da8aaff509a9e, 0x08e1bb85fab7ebe7, 0x014a4a9f06153b30, + 0x7046150c146f8fad, 0x79ede416e8cd5f7a, 0x6311f739ed2a2e03, 0x6aba06231188fed4, + 0x56e9d167e6e4ccf1, 0x5f42207d1a461c26, 0x45be33521fa16d5f, 0x4c15c248e303bd88, + 0xdd95b7c3d9a6164f, 0xd43e46d92504c698, 0xcec255f620e3b7e1, 0xc769a4ecdc416736, + 0xfb3a73a82b2d5513, 0xf29182b2d78f85c4, 0xe86d919dd268f4bd, 0xe1c660872eca246a, + 0x90ca3f143cb090f7, 0x9961ce0ec0124020, 0x839ddd21c5f53159, 0x8a362c3b3957e18e, + 0xb665fb7fce3bd3ab, 0xbfce0a653299037c, 0xa532194a377e7205, 0xac99e850cbdca2d2, + 0x472aa66c138b1b3f, 0x4e815776ef29cbe8, 0x547d4459eaceba91, 0x5dd6b543166c6a46, + 0x61856207e1005863, 0x682e931d1da288b4, 0x72d280321845f9cd, 0x7b797128e4e7291a, + 0x0a752ebbf69d9d87, 0x03dedfa10a3f4d50, 0x1922cc8e0fd83c29, 0x10893d94f37aecfe, + 0x2cdaead00416dedb, 0x25711bcaf8b40e0c, 0x3f8d08e5fd537f75, 0x3626f9ff01f1afa2, + 0x7a333bb7e2f2122a, 0x7398caad1e50c2fd, 0x6964d9821bb7b384, 0x60cf2898e7156353, + 0x5c9cffdc10795176, 0x55370ec6ecdb81a1, 0x4fcb1de9e93cf0d8, 0x4660ecf3159e200f, + 0x376cb36007e49492, 0x3ec7427afb464445, 0x243b5155fea1353c, 0x2d90a04f0203e5eb, + 0x11c3770bf56fd7ce, 0x1868861109cd0719, 0x0294953e0c2a7660, 0x0b3f6424f088a6b7, + 0xe08c2a1828df1f5a, 0xe927db02d47dcf8d, 0xf3dbc82dd19abef4, 0xfa7039372d386e23, + 0xc623ee73da545c06, 0xcf881f6926f68cd1, 0xd5740c462311fda8, 0xdcdffd5cdfb32d7f, + 0xadd3a2cfcdc999e2, 0xa47853d5316b4935, 0xbe8440fa348c384c, 0xb72fb1e0c82ee89b, + 0x8b7c66a43f42dabe, 0x82d797bec3e00a69, 0x982b8491c6077b10, 0x9180758b3aa5abc7, + 0x29f3c0ac1c42321b, 0x205831b6e0e0e2cc, 0x3aa42299e50793b5, 0x330fd38319a54362, + 0x0f5c04c7eec97147, 0x06f7f5dd126ba190, 0x1c0be6f2178cd0e9, 0x15a017e8eb2e003e, + 0x64ac487bf954b4a3, 0x6d07b96105f66474, 0x77fbaa4e0011150d, 0x7e505b54fcb3c5da, + 0x42038c100bdff7ff, 0x4ba87d0af77d2728, 0x51546e25f29a5651, 0x58ff9f3f0e388686, + 0xb34cd103d66f3f6b, 0xbae720192acdefbc, 0xa01b33362f2a9ec5, 0xa9b0c22cd3884e12, + 0x95e3156824e47c37, 0x9c48e472d846ace0, 0x86b4f75ddda1dd99, 0x8f1f064721030d4e, + 0xfe1359d43379b9d3, 0xf7b8a8cecfdb6904, 0xed44bbe1ca3c187d, 0xe4ef4afb369ec8aa, + 0xd8bc9dbfc1f2fa8f, 0xd1176ca53d502a58, 0xcbeb7f8a38b75b21, 0xc2408e90c4158bf6, + 0x8e554cd82716367e, 0x87febdc2dbb4e6a9, 0x9d02aeedde5397d0, 0x94a95ff722f14707, + 0xa8fa88b3d59d7522, 0xa15179a9293fa5f5, 0xbbad6a862cd8d48c, 0xb2069b9cd07a045b, + 0xc30ac40fc200b0c6, 0xcaa135153ea26011, 0xd05d263a3b451168, 0xd9f6d720c7e7c1bf, + 0xe5a50064308bf39a, 0xec0ef17ecc29234d, 0xf6f2e251c9ce5234, 0xff59134b356c82e3, + 0x14ea5d77ed3b3b0e, 0x1d41ac6d1199ebd9, 0x07bdbf42147e9aa0, 0x0e164e58e8dc4a77, + 0x3245991c1fb07852, 0x3bee6806e312a885, 0x21127b29e6f5d9fc, 0x28b98a331a57092b, + 0x59b5d5a0082dbdb6, 0x501e24baf48f6d61, 0x4ae23795f1681c18, 0x4349c68f0dcacccf, + 0x7f1a11cbfaa6feea, 0x76b1e0d106042e3d, 0x6c4df3fe03e35f44, 0x65e602e4ff418f93, + 0xf466776fc5e42454, 0xfdcd86753946f483, 0xe731955a3ca185fa, 0xee9a6440c003552d, + 0xd2c9b304376f6708, 0xdb62421ecbcdb7df, 0xc19e5131ce2ac6a6, 0xc835a02b32881671, + 0xb939ffb820f2a2ec, 0xb0920ea2dc50723b, 0xaa6e1d8dd9b70342, 0xa3c5ec972515d395, + 0x9f963bd3d279e1b0, 0x963dcac92edb3167, 0x8cc1d9e62b3c401e, 0x856a28fcd79e90c9, + 0x6ed966c00fc92924, 0x677297daf36bf9f3, 0x7d8e84f5f68c888a, 0x742575ef0a2e585d, + 0x4876a2abfd426a78, 0x41dd53b101e0baaf, 0x5b21409e0407cbd6, 0x528ab184f8a51b01, + 0x2386ee17eadfaf9c, 0x2a2d1f0d167d7f4b, 0x30d10c22139a0e32, 0x397afd38ef38dee5, + 0x05292a7c1854ecc0, 0x0c82db66e4f63c17, 0x167ec849e1114d6e, 0x1fd539531db39db9, + 0x53c0fb1bfeb02031, 0x5a6b0a010212f0e6, 0x4097192e07f5819f, 0x493ce834fb575148, + 0x756f3f700c3b636d, 0x7cc4ce6af099b3ba, 0x6638dd45f57ec2c3, 0x6f932c5f09dc1214, + 0x1e9f73cc1ba6a689, 0x173482d6e704765e, 0x0dc891f9e2e30727, 0x046360e31e41d7f0, + 0x3830b7a7e92de5d5, 0x319b46bd158f3502, 0x2b6755921068447b, 0x22cca488ecca94ac, + 0xc97feab4349d2d41, 0xc0d41baec83ffd96, 0xda280881cdd88cef, 0xd383f99b317a5c38, + 0xefd02edfc6166e1d, 0xe67bdfc53ab4beca, 0xfc87ccea3f53cfb3, 0xf52c3df0c3f11f64, + 0x84206263d18babf9, 0x8d8b93792d297b2e, 0x9777805628ce0a57, 0x9edc714cd46cda80, + 0xa28fa6082300e8a5, 0xab245712dfa23872, 0xb1d8443dda45490b, 0xb873b52726e799dc, + }, + { + 0x0000000000000000, 0xec32cffb23e3ed7d, 0x4abd30dde8c9c47f, 0xa68fff26cb2a2902, + 0x957a61bbd19388fe, 0x7948ae40f2706583, 0xdfc75166395a4c81, 0x33f59e9d1ab9a1fc, + 0xb82c6c5c0c290f79, 0x541ea3a72fcae204, 0xf2915c81e4e0cb06, 0x1ea3937ac703267b, + 0x2d560de7ddba8787, 0xc164c21cfe596afa, 0x67eb3d3a357343f8, 0x8bd9f2c11690ae85, + 0xe2807793b75c0077, 0x0eb2b86894bfed0a, 0xa83d474e5f95c408, 0x440f88b57c762975, + 0x77fa162866cf8889, 0x9bc8d9d3452c65f4, 0x3d4726f58e064cf6, 0xd175e90eade5a18b, + 0x5aac1bcfbb750f0e, 0xb69ed4349896e273, 0x10112b1253bccb71, 0xfc23e4e9705f260c, + 0xcfd67a746ae687f0, 0x23e4b58f49056a8d, 0x856b4aa9822f438f, 0x69598552a1ccaef2, + 0x57d8400cc1b61e6b, 0xbbea8ff7e255f316, 0x1d6570d1297fda14, 0xf157bf2a0a9c3769, + 0xc2a221b710259695, 0x2e90ee4c33c67be8, 0x881f116af8ec52ea, 0x642dde91db0fbf97, + 0xeff42c50cd9f1112, 0x03c6e3abee7cfc6f, 0xa5491c8d2556d56d, 0x497bd37606b53810, + 0x7a8e4deb1c0c99ec, 0x96bc82103fef7491, 0x30337d36f4c55d93, 0xdc01b2cdd726b0ee, + 0xb558379f76ea1e1c, 0x596af8645509f361, 0xffe507429e23da63, 0x13d7c8b9bdc0371e, + 0x20225624a77996e2, 0xcc1099df849a7b9f, 0x6a9f66f94fb0529d, 0x86ada9026c53bfe0, + 0x0d745bc37ac31165, 0xe14694385920fc18, 0x47c96b1e920ad51a, 0xabfba4e5b1e93867, + 0x980e3a78ab50999b, 0x743cf58388b374e6, 0xd2b30aa543995de4, 0x3e81c55e607ab099, + 0xafb08019836c3cd6, 0x43824fe2a08fd1ab, 0xe50db0c46ba5f8a9, 0x093f7f3f484615d4, + 0x3acae1a252ffb428, 0xd6f82e59711c5955, 0x7077d17fba367057, 0x9c451e8499d59d2a, + 0x179cec458f4533af, 0xfbae23beaca6ded2, 0x5d21dc98678cf7d0, 0xb1131363446f1aad, + 0x82e68dfe5ed6bb51, 0x6ed442057d35562c, 0xc85bbd23b61f7f2e, 0x246972d895fc9253, + 0x4d30f78a34303ca1, 0xa102387117d3d1dc, 0x078dc757dcf9f8de, 0xebbf08acff1a15a3, + 0xd84a9631e5a3b45f, 0x347859cac6405922, 0x92f7a6ec0d6a7020, 0x7ec569172e899d5d, + 0xf51c9bd6381933d8, 0x192e542d1bfadea5, 0xbfa1ab0bd0d0f7a7, 0x539364f0f3331ada, + 0x6066fa6de98abb26, 0x8c543596ca69565b, 0x2adbcab001437f59, 0xc6e9054b22a09224, + 0xf868c01542da22bd, 0x145a0fee6139cfc0, 0xb2d5f0c8aa13e6c2, 0x5ee73f3389f00bbf, + 0x6d12a1ae9349aa43, 0x81206e55b0aa473e, 0x27af91737b806e3c, 0xcb9d5e8858638341, + 0x4044ac494ef32dc4, 0xac7663b26d10c0b9, 0x0af99c94a63ae9bb, 0xe6cb536f85d904c6, + 0xd53ecdf29f60a53a, 0x390c0209bc834847, 0x9f83fd2f77a96145, 0x73b132d4544a8c38, + 0x1ae8b786f58622ca, 0xf6da787dd665cfb7, 0x5055875b1d4fe6b5, 0xbc6748a03eac0bc8, + 0x8f92d63d2415aa34, 0x63a019c607f64749, 0xc52fe6e0ccdc6e4b, 0x291d291bef3f8336, + 0xa2c4dbdaf9af2db3, 0x4ef61421da4cc0ce, 0xe879eb071166e9cc, 0x044b24fc328504b1, + 0x37beba61283ca54d, 0xdb8c759a0bdf4830, 0x7d038abcc0f56132, 0x91314547e3168c4f, + 0xcdb9af18a9d66729, 0x218b60e38a358a54, 0x87049fc5411fa356, 0x6b36503e62fc4e2b, + 0x58c3cea37845efd7, 0xb4f101585ba602aa, 0x127efe7e908c2ba8, 0xfe4c3185b36fc6d5, + 0x7595c344a5ff6850, 0x99a70cbf861c852d, 0x3f28f3994d36ac2f, 0xd31a3c626ed54152, + 0xe0efa2ff746ce0ae, 0x0cdd6d04578f0dd3, 0xaa5292229ca524d1, 0x46605dd9bf46c9ac, + 0x2f39d88b1e8a675e, 0xc30b17703d698a23, 0x6584e856f643a321, 0x89b627add5a04e5c, + 0xba43b930cf19efa0, 0x567176cbecfa02dd, 0xf0fe89ed27d02bdf, 0x1ccc46160433c6a2, + 0x9715b4d712a36827, 0x7b277b2c3140855a, 0xdda8840afa6aac58, 0x319a4bf1d9894125, + 0x026fd56cc330e0d9, 0xee5d1a97e0d30da4, 0x48d2e5b12bf924a6, 0xa4e02a4a081ac9db, + 0x9a61ef1468607942, 0x765320ef4b83943f, 0xd0dcdfc980a9bd3d, 0x3cee1032a34a5040, + 0x0f1b8eafb9f3f1bc, 0xe32941549a101cc1, 0x45a6be72513a35c3, 0xa994718972d9d8be, + 0x224d83486449763b, 0xce7f4cb347aa9b46, 0x68f0b3958c80b244, 0x84c27c6eaf635f39, + 0xb737e2f3b5dafec5, 0x5b052d08963913b8, 0xfd8ad22e5d133aba, 0x11b81dd57ef0d7c7, + 0x78e19887df3c7935, 0x94d3577cfcdf9448, 0x325ca85a37f5bd4a, 0xde6e67a114165037, + 0xed9bf93c0eaff1cb, 0x01a936c72d4c1cb6, 0xa726c9e1e66635b4, 0x4b14061ac585d8c9, + 0xc0cdf4dbd315764c, 0x2cff3b20f0f69b31, 0x8a70c4063bdcb233, 0x66420bfd183f5f4e, + 0x55b795600286feb2, 0xb9855a9b216513cf, 0x1f0aa5bdea4f3acd, 0xf3386a46c9acd7b0, + 0x62092f012aba5bff, 0x8e3be0fa0959b682, 0x28b41fdcc2739f80, 0xc486d027e19072fd, + 0xf7734ebafb29d301, 0x1b418141d8ca3e7c, 0xbdce7e6713e0177e, 0x51fcb19c3003fa03, + 0xda25435d26935486, 0x36178ca60570b9fb, 0x90987380ce5a90f9, 0x7caabc7bedb97d84, + 0x4f5f22e6f700dc78, 0xa36ded1dd4e33105, 0x05e2123b1fc91807, 0xe9d0ddc03c2af57a, + 0x808958929de65b88, 0x6cbb9769be05b6f5, 0xca34684f752f9ff7, 0x2606a7b456cc728a, + 0x15f339294c75d376, 0xf9c1f6d26f963e0b, 0x5f4e09f4a4bc1709, 0xb37cc60f875ffa74, + 0x38a534ce91cf54f1, 0xd497fb35b22cb98c, 0x721804137906908e, 0x9e2acbe85ae57df3, + 0xaddf5575405cdc0f, 0x41ed9a8e63bf3172, 0xe76265a8a8951870, 0x0b50aa538b76f50d, + 0x35d16f0deb0c4594, 0xd9e3a0f6c8efa8e9, 0x7f6c5fd003c581eb, 0x935e902b20266c96, + 0xa0ab0eb63a9fcd6a, 0x4c99c14d197c2017, 0xea163e6bd2560915, 0x0624f190f1b5e468, + 0x8dfd0351e7254aed, 0x61cfccaac4c6a790, 0xc740338c0fec8e92, 0x2b72fc772c0f63ef, + 0x188762ea36b6c213, 0xf4b5ad1115552f6e, 0x523a5237de7f066c, 0xbe089dccfd9ceb11, + 0xd751189e5c5045e3, 0x3b63d7657fb3a89e, 0x9dec2843b499819c, 0x71dee7b8977a6ce1, + 0x422b79258dc3cd1d, 0xae19b6deae202060, 0x089649f8650a0962, 0xe4a4860346e9e41f, + 0x6f7d74c250794a9a, 0x834fbb39739aa7e7, 0x25c0441fb8b08ee5, 0xc9f28be49b536398, + 0xfa07157981eac264, 0x1635da82a2092f19, 0xb0ba25a46923061b, 0x5c88ea5f4ac0eb66, + }, + { + 0x0000000000000000, 0xdda9f27ee08373ad, 0x298b4bd66e08f9df, 0xf422b9a88e8b8a72, + 0x531697acdc11f3be, 0x8ebf65d23c928013, 0x7a9ddc7ab2190a61, 0xa7342e04529a79cc, + 0xa62d2f59b823e77c, 0x7b84dd2758a094d1, 0x8fa6648fd62b1ea3, 0x520f96f136a86d0e, + 0xf53bb8f5643214c2, 0x28924a8b84b1676f, 0xdcb0f3230a3aed1d, 0x0119015deab99eb0, + 0xde82f198df49d07d, 0x032b03e63fcaa3d0, 0xf709ba4eb14129a2, 0x2aa0483051c25a0f, + 0x8d946634035823c3, 0x503d944ae3db506e, 0xa41f2de26d50da1c, 0x79b6df9c8dd3a9b1, + 0x78afdec1676a3701, 0xa5062cbf87e944ac, 0x512495170962cede, 0x8c8d6769e9e1bd73, + 0x2bb9496dbb7bc4bf, 0xf610bb135bf8b712, 0x023202bbd5733d60, 0xdf9bf0c535f04ecd, + 0x2fdd4c1a119dbe7f, 0xf274be64f11ecdd2, 0x065607cc7f9547a0, 0xdbfff5b29f16340d, + 0x7ccbdbb6cd8c4dc1, 0xa16229c82d0f3e6c, 0x55409060a384b41e, 0x88e9621e4307c7b3, + 0x89f06343a9be5903, 0x5459913d493d2aae, 0xa07b2895c7b6a0dc, 0x7dd2daeb2735d371, + 0xdae6f4ef75afaabd, 0x074f0691952cd910, 0xf36dbf391ba75362, 0x2ec44d47fb2420cf, + 0xf15fbd82ced46e02, 0x2cf64ffc2e571daf, 0xd8d4f654a0dc97dd, 0x057d042a405fe470, + 0xa2492a2e12c59dbc, 0x7fe0d850f246ee11, 0x8bc261f87ccd6463, 0x566b93869c4e17ce, + 0x577292db76f7897e, 0x8adb60a59674fad3, 0x7ef9d90d18ff70a1, 0xa3502b73f87c030c, + 0x04640577aae67ac0, 0xd9cdf7094a65096d, 0x2def4ea1c4ee831f, 0xf046bcdf246df0b2, + 0x5fba9834233b7cfe, 0x82136a4ac3b80f53, 0x7631d3e24d338521, 0xab98219cadb0f68c, + 0x0cac0f98ff2a8f40, 0xd105fde61fa9fced, 0x2527444e9122769f, 0xf88eb63071a10532, + 0xf997b76d9b189b82, 0x243e45137b9be82f, 0xd01cfcbbf510625d, 0x0db50ec5159311f0, + 0xaa8120c14709683c, 0x7728d2bfa78a1b91, 0x830a6b17290191e3, 0x5ea39969c982e24e, + 0x813869acfc72ac83, 0x5c919bd21cf1df2e, 0xa8b3227a927a555c, 0x751ad00472f926f1, + 0xd22efe0020635f3d, 0x0f870c7ec0e02c90, 0xfba5b5d64e6ba6e2, 0x260c47a8aee8d54f, + 0x271546f544514bff, 0xfabcb48ba4d23852, 0x0e9e0d232a59b220, 0xd337ff5dcadac18d, + 0x7403d1599840b841, 0xa9aa232778c3cbec, 0x5d889a8ff648419e, 0x802168f116cb3233, + 0x7067d42e32a6c281, 0xadce2650d225b12c, 0x59ec9ff85cae3b5e, 0x84456d86bc2d48f3, + 0x23714382eeb7313f, 0xfed8b1fc0e344292, 0x0afa085480bfc8e0, 0xd753fa2a603cbb4d, + 0xd64afb778a8525fd, 0x0be309096a065650, 0xffc1b0a1e48ddc22, 0x226842df040eaf8f, + 0x855c6cdb5694d643, 0x58f59ea5b617a5ee, 0xacd7270d389c2f9c, 0x717ed573d81f5c31, + 0xaee525b6edef12fc, 0x734cd7c80d6c6151, 0x876e6e6083e7eb23, 0x5ac79c1e6364988e, + 0xfdf3b21a31fee142, 0x205a4064d17d92ef, 0xd478f9cc5ff6189d, 0x09d10bb2bf756b30, + 0x08c80aef55ccf580, 0xd561f891b54f862d, 0x214341393bc40c5f, 0xfceab347db477ff2, + 0x5bde9d4389dd063e, 0x86776f3d695e7593, 0x7255d695e7d5ffe1, 0xaffc24eb07568c4c, + 0xbf7530684676f9fc, 0x62dcc216a6f58a51, 0x96fe7bbe287e0023, 0x4b5789c0c8fd738e, + 0xec63a7c49a670a42, 0x31ca55ba7ae479ef, 0xc5e8ec12f46ff39d, 0x18411e6c14ec8030, + 0x19581f31fe551e80, 0xc4f1ed4f1ed66d2d, 0x30d354e7905de75f, 0xed7aa69970de94f2, + 0x4a4e889d2244ed3e, 0x97e77ae3c2c79e93, 0x63c5c34b4c4c14e1, 0xbe6c3135accf674c, + 0x61f7c1f0993f2981, 0xbc5e338e79bc5a2c, 0x487c8a26f737d05e, 0x95d5785817b4a3f3, + 0x32e1565c452eda3f, 0xef48a422a5ada992, 0x1b6a1d8a2b2623e0, 0xc6c3eff4cba5504d, + 0xc7daeea9211ccefd, 0x1a731cd7c19fbd50, 0xee51a57f4f143722, 0x33f85701af97448f, + 0x94cc7905fd0d3d43, 0x49658b7b1d8e4eee, 0xbd4732d39305c49c, 0x60eec0ad7386b731, + 0x90a87c7257eb4783, 0x4d018e0cb768342e, 0xb92337a439e3be5c, 0x648ac5dad960cdf1, + 0xc3beebde8bfab43d, 0x1e1719a06b79c790, 0xea35a008e5f24de2, 0x379c527605713e4f, + 0x3685532befc8a0ff, 0xeb2ca1550f4bd352, 0x1f0e18fd81c05920, 0xc2a7ea8361432a8d, + 0x6593c48733d95341, 0xb83a36f9d35a20ec, 0x4c188f515dd1aa9e, 0x91b17d2fbd52d933, + 0x4e2a8dea88a297fe, 0x93837f946821e453, 0x67a1c63ce6aa6e21, 0xba08344206291d8c, + 0x1d3c1a4654b36440, 0xc095e838b43017ed, 0x34b751903abb9d9f, 0xe91ea3eeda38ee32, + 0xe807a2b330817082, 0x35ae50cdd002032f, 0xc18ce9655e89895d, 0x1c251b1bbe0afaf0, + 0xbb11351fec90833c, 0x66b8c7610c13f091, 0x929a7ec982987ae3, 0x4f338cb7621b094e, + 0xe0cfa85c654d8502, 0x3d665a2285cef6af, 0xc944e38a0b457cdd, 0x14ed11f4ebc60f70, + 0xb3d93ff0b95c76bc, 0x6e70cd8e59df0511, 0x9a527426d7548f63, 0x47fb865837d7fcce, + 0x46e28705dd6e627e, 0x9b4b757b3ded11d3, 0x6f69ccd3b3669ba1, 0xb2c03ead53e5e80c, + 0x15f410a9017f91c0, 0xc85de2d7e1fce26d, 0x3c7f5b7f6f77681f, 0xe1d6a9018ff41bb2, + 0x3e4d59c4ba04557f, 0xe3e4abba5a8726d2, 0x17c61212d40caca0, 0xca6fe06c348fdf0d, + 0x6d5bce686615a6c1, 0xb0f23c168696d56c, 0x44d085be081d5f1e, 0x997977c0e89e2cb3, + 0x9860769d0227b203, 0x45c984e3e2a4c1ae, 0xb1eb3d4b6c2f4bdc, 0x6c42cf358cac3871, + 0xcb76e131de3641bd, 0x16df134f3eb53210, 0xe2fdaae7b03eb862, 0x3f54589950bdcbcf, + 0xcf12e44674d03b7d, 0x12bb1638945348d0, 0xe699af901ad8c2a2, 0x3b305deefa5bb10f, + 0x9c0473eaa8c1c8c3, 0x41ad81944842bb6e, 0xb58f383cc6c9311c, 0x6826ca42264a42b1, + 0x693fcb1fccf3dc01, 0xb49639612c70afac, 0x40b480c9a2fb25de, 0x9d1d72b742785673, + 0x3a295cb310e22fbf, 0xe780aecdf0615c12, 0x13a217657eead660, 0xce0be51b9e69a5cd, + 0x119015deab99eb00, 0xcc39e7a04b1a98ad, 0x381b5e08c59112df, 0xe5b2ac7625126172, + 0x42868272778818be, 0x9f2f700c970b6b13, 0x6b0dc9a41980e161, 0xb6a43bdaf90392cc, + 0xb7bd3a8713ba0c7c, 0x6a14c8f9f3397fd1, 0x9e3671517db2f5a3, 0x439f832f9d31860e, + 0xe4abad2bcfabffc2, 0x39025f552f288c6f, 0xcd20e6fda1a3061d, 0x10891483412075b0, + }, + { + 0x0000000000000000, 0x0dd9b4240837fd99, 0x1bb36848106ffb32, 0x166adc6c185806ab, + 0x3766d09020dff664, 0x3abf64b428e80bfd, 0x2cd5b8d830b00d56, 0x210c0cfc3887f0cf, + 0x6ecda12041bfecc8, 0x6314150449881151, 0x757ec96851d017fa, 0x78a77d4c59e7ea63, + 0x59ab71b061601aac, 0x5472c5946957e735, 0x421819f8710fe19e, 0x4fc1addc79381c07, + 0xdd9b4240837fd990, 0xd042f6648b482409, 0xc6282a08931022a2, 0xcbf19e2c9b27df3b, + 0xeafd92d0a3a02ff4, 0xe72426f4ab97d26d, 0xf14efa98b3cfd4c6, 0xfc974ebcbbf8295f, + 0xb356e360c2c03558, 0xbe8f5744caf7c8c1, 0xa8e58b28d2afce6a, 0xa53c3f0cda9833f3, + 0x843033f0e21fc33c, 0x89e987d4ea283ea5, 0x9f835bb8f270380e, 0x925aef9cfa47c597, + 0x29ee2baaa9f1ada5, 0x24379f8ea1c6503c, 0x325d43e2b99e5697, 0x3f84f7c6b1a9ab0e, + 0x1e88fb3a892e5bc1, 0x13514f1e8119a658, 0x053b93729941a0f3, 0x08e2275691765d6a, + 0x47238a8ae84e416d, 0x4afa3eaee079bcf4, 0x5c90e2c2f821ba5f, 0x514956e6f01647c6, + 0x70455a1ac891b709, 0x7d9cee3ec0a64a90, 0x6bf63252d8fe4c3b, 0x662f8676d0c9b1a2, + 0xf47569ea2a8e7435, 0xf9acddce22b989ac, 0xefc601a23ae18f07, 0xe21fb58632d6729e, + 0xc313b97a0a518251, 0xceca0d5e02667fc8, 0xd8a0d1321a3e7963, 0xd5796516120984fa, + 0x9ab8c8ca6b3198fd, 0x97617cee63066564, 0x810ba0827b5e63cf, 0x8cd214a673699e56, + 0xadde185a4bee6e99, 0xa007ac7e43d99300, 0xb66d70125b8195ab, 0xbbb4c43653b66832, + 0x53dc575553e35b4a, 0x5e05e3715bd4a6d3, 0x486f3f1d438ca078, 0x45b68b394bbb5de1, + 0x64ba87c5733cad2e, 0x696333e17b0b50b7, 0x7f09ef8d6353561c, 0x72d05ba96b64ab85, + 0x3d11f675125cb782, 0x30c842511a6b4a1b, 0x26a29e3d02334cb0, 0x2b7b2a190a04b129, + 0x0a7726e5328341e6, 0x07ae92c13ab4bc7f, 0x11c44ead22ecbad4, 0x1c1dfa892adb474d, + 0x8e471515d09c82da, 0x839ea131d8ab7f43, 0x95f47d5dc0f379e8, 0x982dc979c8c48471, + 0xb921c585f04374be, 0xb4f871a1f8748927, 0xa292adcde02c8f8c, 0xaf4b19e9e81b7215, + 0xe08ab43591236e12, 0xed5300119914938b, 0xfb39dc7d814c9520, 0xf6e06859897b68b9, + 0xd7ec64a5b1fc9876, 0xda35d081b9cb65ef, 0xcc5f0ceda1936344, 0xc186b8c9a9a49edd, + 0x7a327cfffa12f6ef, 0x77ebc8dbf2250b76, 0x618114b7ea7d0ddd, 0x6c58a093e24af044, + 0x4d54ac6fdacd008b, 0x408d184bd2fafd12, 0x56e7c427caa2fbb9, 0x5b3e7003c2950620, + 0x14ffdddfbbad1a27, 0x192669fbb39ae7be, 0x0f4cb597abc2e115, 0x029501b3a3f51c8c, + 0x23990d4f9b72ec43, 0x2e40b96b934511da, 0x382a65078b1d1771, 0x35f3d123832aeae8, + 0xa7a93ebf796d2f7f, 0xaa708a9b715ad2e6, 0xbc1a56f76902d44d, 0xb1c3e2d3613529d4, + 0x90cfee2f59b2d91b, 0x9d165a0b51852482, 0x8b7c866749dd2229, 0x86a5324341eadfb0, + 0xc9649f9f38d2c3b7, 0xc4bd2bbb30e53e2e, 0xd2d7f7d728bd3885, 0xdf0e43f3208ac51c, + 0xfe024f0f180d35d3, 0xf3dbfb2b103ac84a, 0xe5b127470862cee1, 0xe868936300553378, + 0xa7b8aeaaa7c6b694, 0xaa611a8eaff14b0d, 0xbc0bc6e2b7a94da6, 0xb1d272c6bf9eb03f, + 0x90de7e3a871940f0, 0x9d07ca1e8f2ebd69, 0x8b6d16729776bbc2, 0x86b4a2569f41465b, + 0xc9750f8ae6795a5c, 0xc4acbbaeee4ea7c5, 0xd2c667c2f616a16e, 0xdf1fd3e6fe215cf7, + 0xfe13df1ac6a6ac38, 0xf3ca6b3ece9151a1, 0xe5a0b752d6c9570a, 0xe8790376defeaa93, + 0x7a23ecea24b96f04, 0x77fa58ce2c8e929d, 0x619084a234d69436, 0x6c4930863ce169af, + 0x4d453c7a04669960, 0x409c885e0c5164f9, 0x56f6543214096252, 0x5b2fe0161c3e9fcb, + 0x14ee4dca650683cc, 0x1937f9ee6d317e55, 0x0f5d2582756978fe, 0x028491a67d5e8567, + 0x23889d5a45d975a8, 0x2e51297e4dee8831, 0x383bf51255b68e9a, 0x35e241365d817303, + 0x8e5685000e371b31, 0x838f31240600e6a8, 0x95e5ed481e58e003, 0x983c596c166f1d9a, + 0xb93055902ee8ed55, 0xb4e9e1b426df10cc, 0xa2833dd83e871667, 0xaf5a89fc36b0ebfe, + 0xe09b24204f88f7f9, 0xed42900447bf0a60, 0xfb284c685fe70ccb, 0xf6f1f84c57d0f152, + 0xd7fdf4b06f57019d, 0xda2440946760fc04, 0xcc4e9cf87f38faaf, 0xc19728dc770f0736, + 0x53cdc7408d48c2a1, 0x5e147364857f3f38, 0x487eaf089d273993, 0x45a71b2c9510c40a, + 0x64ab17d0ad9734c5, 0x6972a3f4a5a0c95c, 0x7f187f98bdf8cff7, 0x72c1cbbcb5cf326e, + 0x3d006660ccf72e69, 0x30d9d244c4c0d3f0, 0x26b30e28dc98d55b, 0x2b6aba0cd4af28c2, + 0x0a66b6f0ec28d80d, 0x07bf02d4e41f2594, 0x11d5deb8fc47233f, 0x1c0c6a9cf470dea6, + 0xf464f9fff425edde, 0xf9bd4ddbfc121047, 0xefd791b7e44a16ec, 0xe20e2593ec7deb75, + 0xc302296fd4fa1bba, 0xcedb9d4bdccde623, 0xd8b14127c495e088, 0xd568f503cca21d11, + 0x9aa958dfb59a0116, 0x9770ecfbbdadfc8f, 0x811a3097a5f5fa24, 0x8cc384b3adc207bd, + 0xadcf884f9545f772, 0xa0163c6b9d720aeb, 0xb67ce007852a0c40, 0xbba554238d1df1d9, + 0x29ffbbbf775a344e, 0x24260f9b7f6dc9d7, 0x324cd3f76735cf7c, 0x3f9567d36f0232e5, + 0x1e996b2f5785c22a, 0x1340df0b5fb23fb3, 0x052a036747ea3918, 0x08f3b7434fddc481, + 0x47321a9f36e5d886, 0x4aebaebb3ed2251f, 0x5c8172d7268a23b4, 0x5158c6f32ebdde2d, + 0x7054ca0f163a2ee2, 0x7d8d7e2b1e0dd37b, 0x6be7a2470655d5d0, 0x663e16630e622849, + 0xdd8ad2555dd4407b, 0xd053667155e3bde2, 0xc639ba1d4dbbbb49, 0xcbe00e39458c46d0, + 0xeaec02c57d0bb61f, 0xe735b6e1753c4b86, 0xf15f6a8d6d644d2d, 0xfc86dea96553b0b4, + 0xb34773751c6bacb3, 0xbe9ec751145c512a, 0xa8f41b3d0c045781, 0xa52daf190433aa18, + 0x8421a3e53cb45ad7, 0x89f817c13483a74e, 0x9f92cbad2cdba1e5, 0x924b7f8924ec5c7c, + 0x00119015deab99eb, 0x0dc82431d69c6472, 0x1ba2f85dcec462d9, 0x167b4c79c6f39f40, + 0x37774085fe746f8f, 0x3aaef4a1f6439216, 0x2cc428cdee1b94bd, 0x211d9ce9e62c6924, + 0x6edc31359f147523, 0x63058511972388ba, 0x756f597d8f7b8e11, 0x78b6ed59874c7388, + 0x59bae1a5bfcb8347, 0x54635581b7fc7ede, 0x420989edafa47875, 0x4fd03dc9a79385ec, + }, + { + 0x0000000000000000, 0xf075e4ae5e05bdff, 0x723366771305657b, 0x824682d94d00d884, + 0xe466ccee260acaf6, 0x14132840780f7709, 0x9655aa99350faf8d, 0x66204e376b0a1272, + 0x5a1536f7e31b8b69, 0xaa60d259bd1e3696, 0x28265080f01eee12, 0xd853b42eae1b53ed, + 0xbe73fa19c511419f, 0x4e061eb79b14fc60, 0xcc409c6ed61424e4, 0x3c3578c08811991b, + 0xb42a6defc63716d2, 0x445f89419832ab2d, 0xc6190b98d53273a9, 0x366cef368b37ce56, + 0x504ca101e03ddc24, 0xa03945afbe3861db, 0x227fc776f338b95f, 0xd20a23d8ad3d04a0, + 0xee3f5b18252c9dbb, 0x1e4abfb67b292044, 0x9c0c3d6f3629f8c0, 0x6c79d9c1682c453f, + 0x0a5997f60326574d, 0xfa2c73585d23eab2, 0x786af18110233236, 0x881f152f4e268fc9, + 0xfa8c74f423603321, 0x0af9905a7d658ede, 0x88bf12833065565a, 0x78caf62d6e60eba5, + 0x1eeab81a056af9d7, 0xee9f5cb45b6f4428, 0x6cd9de6d166f9cac, 0x9cac3ac3486a2153, + 0xa0994203c07bb848, 0x50eca6ad9e7e05b7, 0xd2aa2474d37edd33, 0x22dfc0da8d7b60cc, + 0x44ff8eede67172be, 0xb48a6a43b874cf41, 0x36cce89af57417c5, 0xc6b90c34ab71aa3a, + 0x4ea6191be55725f3, 0xbed3fdb5bb52980c, 0x3c957f6cf6524088, 0xcce09bc2a857fd77, + 0xaac0d5f5c35def05, 0x5ab5315b9d5852fa, 0xd8f3b382d0588a7e, 0x2886572c8e5d3781, + 0x14b32fec064cae9a, 0xe4c6cb4258491365, 0x6680499b1549cbe1, 0x96f5ad354b4c761e, + 0xf0d5e3022046646c, 0x00a007ac7e43d993, 0x82e6857533430117, 0x729361db6d46bce8, + 0x67c046c3e9ce78c7, 0x97b5a26db7cbc538, 0x15f320b4facb1dbc, 0xe586c41aa4cea043, + 0x83a68a2dcfc4b231, 0x73d36e8391c10fce, 0xf195ec5adcc1d74a, 0x01e008f482c46ab5, + 0x3dd570340ad5f3ae, 0xcda0949a54d04e51, 0x4fe6164319d096d5, 0xbf93f2ed47d52b2a, + 0xd9b3bcda2cdf3958, 0x29c6587472da84a7, 0xab80daad3fda5c23, 0x5bf53e0361dfe1dc, + 0xd3ea2b2c2ff96e15, 0x239fcf8271fcd3ea, 0xa1d94d5b3cfc0b6e, 0x51aca9f562f9b691, + 0x378ce7c209f3a4e3, 0xc7f9036c57f6191c, 0x45bf81b51af6c198, 0xb5ca651b44f37c67, + 0x89ff1ddbcce2e57c, 0x798af97592e75883, 0xfbcc7bacdfe78007, 0x0bb99f0281e23df8, + 0x6d99d135eae82f8a, 0x9dec359bb4ed9275, 0x1faab742f9ed4af1, 0xefdf53eca7e8f70e, + 0x9d4c3237caae4be6, 0x6d39d69994abf619, 0xef7f5440d9ab2e9d, 0x1f0ab0ee87ae9362, + 0x792afed9eca48110, 0x895f1a77b2a13cef, 0x0b1998aeffa1e46b, 0xfb6c7c00a1a45994, + 0xc75904c029b5c08f, 0x372ce06e77b07d70, 0xb56a62b73ab0a5f4, 0x451f861964b5180b, + 0x233fc82e0fbf0a79, 0xd34a2c8051bab786, 0x510cae591cba6f02, 0xa1794af742bfd2fd, + 0x29665fd80c995d34, 0xd913bb76529ce0cb, 0x5b5539af1f9c384f, 0xab20dd01419985b0, + 0xcd0093362a9397c2, 0x3d75779874962a3d, 0xbf33f5413996f2b9, 0x4f4611ef67934f46, + 0x7373692fef82d65d, 0x83068d81b1876ba2, 0x01400f58fc87b326, 0xf135ebf6a2820ed9, + 0x9715a5c1c9881cab, 0x6760416f978da154, 0xe526c3b6da8d79d0, 0x155327188488c42f, + 0xcf808d87d39cf18e, 0x3ff569298d994c71, 0xbdb3ebf0c09994f5, 0x4dc60f5e9e9c290a, + 0x2be64169f5963b78, 0xdb93a5c7ab938687, 0x59d5271ee6935e03, 0xa9a0c3b0b896e3fc, + 0x9595bb7030877ae7, 0x65e05fde6e82c718, 0xe7a6dd0723821f9c, 0x17d339a97d87a263, + 0x71f3779e168db011, 0x8186933048880dee, 0x03c011e90588d56a, 0xf3b5f5475b8d6895, + 0x7baae06815abe75c, 0x8bdf04c64bae5aa3, 0x0999861f06ae8227, 0xf9ec62b158ab3fd8, + 0x9fcc2c8633a12daa, 0x6fb9c8286da49055, 0xedff4af120a448d1, 0x1d8aae5f7ea1f52e, + 0x21bfd69ff6b06c35, 0xd1ca3231a8b5d1ca, 0x538cb0e8e5b5094e, 0xa3f95446bbb0b4b1, + 0xc5d91a71d0baa6c3, 0x35acfedf8ebf1b3c, 0xb7ea7c06c3bfc3b8, 0x479f98a89dba7e47, + 0x350cf973f0fcc2af, 0xc5791dddaef97f50, 0x473f9f04e3f9a7d4, 0xb74a7baabdfc1a2b, + 0xd16a359dd6f60859, 0x211fd13388f3b5a6, 0xa35953eac5f36d22, 0x532cb7449bf6d0dd, + 0x6f19cf8413e749c6, 0x9f6c2b2a4de2f439, 0x1d2aa9f300e22cbd, 0xed5f4d5d5ee79142, + 0x8b7f036a35ed8330, 0x7b0ae7c46be83ecf, 0xf94c651d26e8e64b, 0x093981b378ed5bb4, + 0x8126949c36cbd47d, 0x7153703268ce6982, 0xf315f2eb25ceb106, 0x036016457bcb0cf9, + 0x6540587210c11e8b, 0x9535bcdc4ec4a374, 0x17733e0503c47bf0, 0xe706daab5dc1c60f, + 0xdb33a26bd5d05f14, 0x2b4646c58bd5e2eb, 0xa900c41cc6d53a6f, 0x597520b298d08790, + 0x3f556e85f3da95e2, 0xcf208a2baddf281d, 0x4d6608f2e0dff099, 0xbd13ec5cbeda4d66, + 0xa840cb443a528949, 0x58352fea645734b6, 0xda73ad332957ec32, 0x2a06499d775251cd, + 0x4c2607aa1c5843bf, 0xbc53e304425dfe40, 0x3e1561dd0f5d26c4, 0xce60857351589b3b, + 0xf255fdb3d9490220, 0x0220191d874cbfdf, 0x80669bc4ca4c675b, 0x70137f6a9449daa4, + 0x1633315dff43c8d6, 0xe646d5f3a1467529, 0x6400572aec46adad, 0x9475b384b2431052, + 0x1c6aa6abfc659f9b, 0xec1f4205a2602264, 0x6e59c0dcef60fae0, 0x9e2c2472b165471f, + 0xf80c6a45da6f556d, 0x08798eeb846ae892, 0x8a3f0c32c96a3016, 0x7a4ae89c976f8de9, + 0x467f905c1f7e14f2, 0xb60a74f2417ba90d, 0x344cf62b0c7b7189, 0xc4391285527ecc76, + 0xa2195cb23974de04, 0x526cb81c677163fb, 0xd02a3ac52a71bb7f, 0x205fde6b74740680, + 0x52ccbfb01932ba68, 0xa2b95b1e47370797, 0x20ffd9c70a37df13, 0xd08a3d69543262ec, + 0xb6aa735e3f38709e, 0x46df97f0613dcd61, 0xc49915292c3d15e5, 0x34ecf1877238a81a, + 0x08d98947fa293101, 0xf8ac6de9a42c8cfe, 0x7aeaef30e92c547a, 0x8a9f0b9eb729e985, + 0xecbf45a9dc23fbf7, 0x1ccaa10782264608, 0x9e8c23decf269e8c, 0x6ef9c77091232373, + 0xe6e6d25fdf05acba, 0x169336f181001145, 0x94d5b428cc00c9c1, 0x64a050869205743e, + 0x02801eb1f90f664c, 0xf2f5fa1fa70adbb3, 0x70b378c6ea0a0337, 0x80c69c68b40fbec8, + 0xbcf3e4a83c1e27d3, 0x4c860006621b9a2c, 0xcec082df2f1b42a8, 0x3eb56671711eff57, + 0x589528461a14ed25, 0xa8e0cce8441150da, 0x2aa64e310911885e, 0xdad3aa9f571435a1, + }, + { + 0x0000000000000000, 0xe05dd497ca393ae4, 0x526306043b7c6b4d, 0xb23ed293f14551a9, + 0xa4c60c0876f8d69a, 0x449bd89fbcc1ec7e, 0xf6a50a0c4d84bdd7, 0x16f8de9b87bd8733, + 0xdb54b73b42ffb3b1, 0x3b0963ac88c68955, 0x8937b13f7983d8fc, 0x696a65a8b3bae218, + 0x7f92bb333407652b, 0x9fcf6fa4fe3e5fcf, 0x2df1bd370f7b0e66, 0xcdac69a0c5423482, + 0x2471c15d2af179e7, 0xc42c15cae0c84303, 0x7612c759118d12aa, 0x964f13cedbb4284e, + 0x80b7cd555c09af7d, 0x60ea19c296309599, 0xd2d4cb516775c430, 0x32891fc6ad4cfed4, + 0xff257666680eca56, 0x1f78a2f1a237f0b2, 0xad4670625372a11b, 0x4d1ba4f5994b9bff, + 0x5be37a6e1ef61ccc, 0xbbbeaef9d4cf2628, 0x09807c6a258a7781, 0xe9dda8fdefb34d65, + 0x48e382ba55e2f3ce, 0xa8be562d9fdbc92a, 0x1a8084be6e9e9883, 0xfadd5029a4a7a267, + 0xec258eb2231a2554, 0x0c785a25e9231fb0, 0xbe4688b618664e19, 0x5e1b5c21d25f74fd, + 0x93b73581171d407f, 0x73eae116dd247a9b, 0xc1d433852c612b32, 0x2189e712e65811d6, + 0x3771398961e596e5, 0xd72ced1eabdcac01, 0x65123f8d5a99fda8, 0x854feb1a90a0c74c, + 0x6c9243e77f138a29, 0x8ccf9770b52ab0cd, 0x3ef145e3446fe164, 0xdeac91748e56db80, + 0xc8544fef09eb5cb3, 0x28099b78c3d26657, 0x9a3749eb329737fe, 0x7a6a9d7cf8ae0d1a, + 0xb7c6f4dc3dec3998, 0x579b204bf7d5037c, 0xe5a5f2d8069052d5, 0x05f8264fcca96831, + 0x1300f8d44b14ef02, 0xf35d2c43812dd5e6, 0x4163fed07068844f, 0xa13e2a47ba51beab, + 0x91c70574abc5e79c, 0x719ad1e361fcdd78, 0xc3a4037090b98cd1, 0x23f9d7e75a80b635, + 0x3501097cdd3d3106, 0xd55cddeb17040be2, 0x67620f78e6415a4b, 0x873fdbef2c7860af, + 0x4a93b24fe93a542d, 0xaace66d823036ec9, 0x18f0b44bd2463f60, 0xf8ad60dc187f0584, + 0xee55be479fc282b7, 0x0e086ad055fbb853, 0xbc36b843a4bee9fa, 0x5c6b6cd46e87d31e, + 0xb5b6c42981349e7b, 0x55eb10be4b0da49f, 0xe7d5c22dba48f536, 0x078816ba7071cfd2, + 0x1170c821f7cc48e1, 0xf12d1cb63df57205, 0x4313ce25ccb023ac, 0xa34e1ab206891948, + 0x6ee27312c3cb2dca, 0x8ebfa78509f2172e, 0x3c817516f8b74687, 0xdcdca181328e7c63, + 0xca247f1ab533fb50, 0x2a79ab8d7f0ac1b4, 0x9847791e8e4f901d, 0x781aad894476aaf9, + 0xd92487cefe271452, 0x39795359341e2eb6, 0x8b4781cac55b7f1f, 0x6b1a555d0f6245fb, + 0x7de28bc688dfc2c8, 0x9dbf5f5142e6f82c, 0x2f818dc2b3a3a985, 0xcfdc5955799a9361, + 0x027030f5bcd8a7e3, 0xe22de46276e19d07, 0x501336f187a4ccae, 0xb04ee2664d9df64a, + 0xa6b63cfdca207179, 0x46ebe86a00194b9d, 0xf4d53af9f15c1a34, 0x1488ee6e3b6520d0, + 0xfd554693d4d66db5, 0x1d0892041eef5751, 0xaf364097efaa06f8, 0x4f6b940025933c1c, + 0x59934a9ba22ebb2f, 0xb9ce9e0c681781cb, 0x0bf04c9f9952d062, 0xebad9808536bea86, + 0x2601f1a89629de04, 0xc65c253f5c10e4e0, 0x7462f7acad55b549, 0x943f233b676c8fad, + 0x82c7fda0e0d1089e, 0x629a29372ae8327a, 0xd0a4fba4dbad63d3, 0x30f92f3311945937, + 0xb156a5c2f885d1bd, 0x510b715532bceb59, 0xe335a3c6c3f9baf0, 0x0368775109c08014, + 0x1590a9ca8e7d0727, 0xf5cd7d5d44443dc3, 0x47f3afceb5016c6a, 0xa7ae7b597f38568e, + 0x6a0212f9ba7a620c, 0x8a5fc66e704358e8, 0x386114fd81060941, 0xd83cc06a4b3f33a5, + 0xcec41ef1cc82b496, 0x2e99ca6606bb8e72, 0x9ca718f5f7fedfdb, 0x7cfacc623dc7e53f, + 0x9527649fd274a85a, 0x757ab008184d92be, 0xc744629be908c317, 0x2719b60c2331f9f3, + 0x31e16897a48c7ec0, 0xd1bcbc006eb54424, 0x63826e939ff0158d, 0x83dfba0455c92f69, + 0x4e73d3a4908b1beb, 0xae2e07335ab2210f, 0x1c10d5a0abf770a6, 0xfc4d013761ce4a42, + 0xeab5dface673cd71, 0x0ae80b3b2c4af795, 0xb8d6d9a8dd0fa63c, 0x588b0d3f17369cd8, + 0xf9b52778ad672273, 0x19e8f3ef675e1897, 0xabd6217c961b493e, 0x4b8bf5eb5c2273da, + 0x5d732b70db9ff4e9, 0xbd2effe711a6ce0d, 0x0f102d74e0e39fa4, 0xef4df9e32adaa540, + 0x22e19043ef9891c2, 0xc2bc44d425a1ab26, 0x70829647d4e4fa8f, 0x90df42d01eddc06b, + 0x86279c4b99604758, 0x667a48dc53597dbc, 0xd4449a4fa21c2c15, 0x34194ed8682516f1, + 0xddc4e62587965b94, 0x3d9932b24daf6170, 0x8fa7e021bcea30d9, 0x6ffa34b676d30a3d, + 0x7902ea2df16e8d0e, 0x995f3eba3b57b7ea, 0x2b61ec29ca12e643, 0xcb3c38be002bdca7, + 0x0690511ec569e825, 0xe6cd85890f50d2c1, 0x54f3571afe158368, 0xb4ae838d342cb98c, + 0xa2565d16b3913ebf, 0x420b898179a8045b, 0xf0355b1288ed55f2, 0x10688f8542d46f16, + 0x2091a0b653403621, 0xc0cc742199790cc5, 0x72f2a6b2683c5d6c, 0x92af7225a2056788, + 0x8457acbe25b8e0bb, 0x640a7829ef81da5f, 0xd634aaba1ec48bf6, 0x36697e2dd4fdb112, + 0xfbc5178d11bf8590, 0x1b98c31adb86bf74, 0xa9a611892ac3eedd, 0x49fbc51ee0fad439, + 0x5f031b856747530a, 0xbf5ecf12ad7e69ee, 0x0d601d815c3b3847, 0xed3dc916960202a3, + 0x04e061eb79b14fc6, 0xe4bdb57cb3887522, 0x568367ef42cd248b, 0xb6deb37888f41e6f, + 0xa0266de30f49995c, 0x407bb974c570a3b8, 0xf2456be73435f211, 0x1218bf70fe0cc8f5, + 0xdfb4d6d03b4efc77, 0x3fe90247f177c693, 0x8dd7d0d40032973a, 0x6d8a0443ca0badde, + 0x7b72dad84db62aed, 0x9b2f0e4f878f1009, 0x2911dcdc76ca41a0, 0xc94c084bbcf37b44, + 0x6872220c06a2c5ef, 0x882ff69bcc9bff0b, 0x3a1124083ddeaea2, 0xda4cf09ff7e79446, + 0xccb42e04705a1375, 0x2ce9fa93ba632991, 0x9ed728004b267838, 0x7e8afc97811f42dc, + 0xb3269537445d765e, 0x537b41a08e644cba, 0xe14593337f211d13, 0x011847a4b51827f7, + 0x17e0993f32a5a0c4, 0xf7bd4da8f89c9a20, 0x45839f3b09d9cb89, 0xa5de4bacc3e0f16d, + 0x4c03e3512c53bc08, 0xac5e37c6e66a86ec, 0x1e60e555172fd745, 0xfe3d31c2dd16eda1, + 0xe8c5ef595aab6a92, 0x08983bce90925076, 0xbaa6e95d61d701df, 0x5afb3dcaabee3b3b, + 0x9757546a6eac0fb9, 0x770a80fda495355d, 0xc534526e55d064f4, 0x256986f99fe95e10, + 0x339158621854d923, 0xd3cc8cf5d26de3c7, 0x61f25e662328b26e, 0x81af8af1e911888a, + }, +}; diff --git a/ext/digest/crc8/crc8.c b/ext/digest/crc8/crc8.c index 7042bf8..84ab9bb 100644 --- a/ext/digest/crc8/crc8.c +++ b/ext/digest/crc8/crc8.c @@ -15,38 +15,39 @@ */ #include "crc8.h" - -/** - * Static table used for the table_driven implementation. - */ -static const crc8_t crc8_1wire_table[256] = { - 0x00, 0x07, 0x0e, 0x09, 0x1c, 0x1b, 0x12, 0x15, 0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d, - 0x70, 0x77, 0x7e, 0x79, 0x6c, 0x6b, 0x62, 0x65, 0x48, 0x4f, 0x46, 0x41, 0x54, 0x53, 0x5a, 0x5d, - 0xe0, 0xe7, 0xee, 0xe9, 0xfc, 0xfb, 0xf2, 0xf5, 0xd8, 0xdf, 0xd6, 0xd1, 0xc4, 0xc3, 0xca, 0xcd, - 0x90, 0x97, 0x9e, 0x99, 0x8c, 0x8b, 0x82, 0x85, 0xa8, 0xaf, 0xa6, 0xa1, 0xb4, 0xb3, 0xba, 0xbd, - 0xc7, 0xc0, 0xc9, 0xce, 0xdb, 0xdc, 0xd5, 0xd2, 0xff, 0xf8, 0xf1, 0xf6, 0xe3, 0xe4, 0xed, 0xea, - 0xb7, 0xb0, 0xb9, 0xbe, 0xab, 0xac, 0xa5, 0xa2, 0x8f, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9d, 0x9a, - 0x27, 0x20, 0x29, 0x2e, 0x3b, 0x3c, 0x35, 0x32, 0x1f, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0d, 0x0a, - 0x57, 0x50, 0x59, 0x5e, 0x4b, 0x4c, 0x45, 0x42, 0x6f, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7d, 0x7a, - 0x89, 0x8e, 0x87, 0x80, 0x95, 0x92, 0x9b, 0x9c, 0xb1, 0xb6, 0xbf, 0xb8, 0xad, 0xaa, 0xa3, 0xa4, - 0xf9, 0xfe, 0xf7, 0xf0, 0xe5, 0xe2, 0xeb, 0xec, 0xc1, 0xc6, 0xcf, 0xc8, 0xdd, 0xda, 0xd3, 0xd4, - 0x69, 0x6e, 0x67, 0x60, 0x75, 0x72, 0x7b, 0x7c, 0x51, 0x56, 0x5f, 0x58, 0x4d, 0x4a, 0x43, 0x44, - 0x19, 0x1e, 0x17, 0x10, 0x05, 0x02, 0x0b, 0x0c, 0x21, 0x26, 0x2f, 0x28, 0x3d, 0x3a, 0x33, 0x34, - 0x4e, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5c, 0x5b, 0x76, 0x71, 0x78, 0x7f, 0x6a, 0x6d, 0x64, 0x63, - 0x3e, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2c, 0x2b, 0x06, 0x01, 0x08, 0x0f, 0x1a, 0x1d, 0x14, 0x13, - 0xae, 0xa9, 0xa0, 0xa7, 0xb2, 0xb5, 0xbc, 0xbb, 0x96, 0x91, 0x98, 0x9f, 0x8a, 0x8d, 0x84, 0x83, - 0xde, 0xd9, 0xd0, 0xd7, 0xc2, 0xc5, 0xcc, 0xcb, 0xe6, 0xe1, 0xe8, 0xef, 0xfa, 0xfd, 0xf4, 0xf3 -}; +#include "crc8_table.h" crc8_t crc8_update(crc8_t crc, const void *data, size_t data_len) { const unsigned char *d = (const unsigned char *)data; unsigned int tbl_idx; + for (; data_len >= SLICE_SIZE; data_len -= SLICE_SIZE) + { + crc = crc8_table[15][d[ 0] ^ crc] ^ + crc8_table[14][d[ 1] ] ^ + crc8_table[13][d[ 2] ] ^ + crc8_table[12][d[ 3] ] ^ + crc8_table[11][d[ 4] ] ^ + crc8_table[10][d[ 5] ] ^ + crc8_table[ 9][d[ 6] ] ^ + crc8_table[ 8][d[ 7] ] ^ + crc8_table[ 7][d[ 8] ] ^ + crc8_table[ 6][d[ 9] ] ^ + crc8_table[ 5][d[10] ] ^ + crc8_table[ 4][d[11] ] ^ + crc8_table[ 3][d[12] ] ^ + crc8_table[ 2][d[13] ] ^ + crc8_table[ 1][d[14] ] ^ + crc8_table[ 0][d[15] ]; + crc &= 0xff; + d += SLICE_SIZE; + } + while (data_len--) { - tbl_idx = crc ^ *d; - crc = crc8_1wire_table[tbl_idx] & 0xff; + tbl_idx = (crc ^ *d) & 0xff; + crc = (crc8_table[0][tbl_idx]) & 0xff; d++; } diff --git a/ext/digest/crc8/crc8_table.h b/ext/digest/crc8/crc8_table.h new file mode 100644 index 0000000..79cbc4c --- /dev/null +++ b/ext/digest/crc8/crc8_table.h @@ -0,0 +1,558 @@ +/* + * bitwidth: 8 + * generator polynomial: 0x07 + * input bit direction: NORMAL + * slice bytes per iteration: 16 + * slide bits per table: 8 + * + * Generated by: gentable.rb of digest-crc + */ + +#define SLICE_SIZE 16 + +static const uint8_t crc8_table[SLICE_SIZE][256] = { + { + 0x00, 0x07, 0x0e, 0x09, 0x1c, 0x1b, 0x12, 0x15, + 0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d, + 0x70, 0x77, 0x7e, 0x79, 0x6c, 0x6b, 0x62, 0x65, + 0x48, 0x4f, 0x46, 0x41, 0x54, 0x53, 0x5a, 0x5d, + 0xe0, 0xe7, 0xee, 0xe9, 0xfc, 0xfb, 0xf2, 0xf5, + 0xd8, 0xdf, 0xd6, 0xd1, 0xc4, 0xc3, 0xca, 0xcd, + 0x90, 0x97, 0x9e, 0x99, 0x8c, 0x8b, 0x82, 0x85, + 0xa8, 0xaf, 0xa6, 0xa1, 0xb4, 0xb3, 0xba, 0xbd, + 0xc7, 0xc0, 0xc9, 0xce, 0xdb, 0xdc, 0xd5, 0xd2, + 0xff, 0xf8, 0xf1, 0xf6, 0xe3, 0xe4, 0xed, 0xea, + 0xb7, 0xb0, 0xb9, 0xbe, 0xab, 0xac, 0xa5, 0xa2, + 0x8f, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9d, 0x9a, + 0x27, 0x20, 0x29, 0x2e, 0x3b, 0x3c, 0x35, 0x32, + 0x1f, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0d, 0x0a, + 0x57, 0x50, 0x59, 0x5e, 0x4b, 0x4c, 0x45, 0x42, + 0x6f, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7d, 0x7a, + 0x89, 0x8e, 0x87, 0x80, 0x95, 0x92, 0x9b, 0x9c, + 0xb1, 0xb6, 0xbf, 0xb8, 0xad, 0xaa, 0xa3, 0xa4, + 0xf9, 0xfe, 0xf7, 0xf0, 0xe5, 0xe2, 0xeb, 0xec, + 0xc1, 0xc6, 0xcf, 0xc8, 0xdd, 0xda, 0xd3, 0xd4, + 0x69, 0x6e, 0x67, 0x60, 0x75, 0x72, 0x7b, 0x7c, + 0x51, 0x56, 0x5f, 0x58, 0x4d, 0x4a, 0x43, 0x44, + 0x19, 0x1e, 0x17, 0x10, 0x05, 0x02, 0x0b, 0x0c, + 0x21, 0x26, 0x2f, 0x28, 0x3d, 0x3a, 0x33, 0x34, + 0x4e, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5c, 0x5b, + 0x76, 0x71, 0x78, 0x7f, 0x6a, 0x6d, 0x64, 0x63, + 0x3e, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2c, 0x2b, + 0x06, 0x01, 0x08, 0x0f, 0x1a, 0x1d, 0x14, 0x13, + 0xae, 0xa9, 0xa0, 0xa7, 0xb2, 0xb5, 0xbc, 0xbb, + 0x96, 0x91, 0x98, 0x9f, 0x8a, 0x8d, 0x84, 0x83, + 0xde, 0xd9, 0xd0, 0xd7, 0xc2, 0xc5, 0xcc, 0xcb, + 0xe6, 0xe1, 0xe8, 0xef, 0xfa, 0xfd, 0xf4, 0xf3, + }, + { + 0x00, 0x15, 0x2a, 0x3f, 0x54, 0x41, 0x7e, 0x6b, + 0xa8, 0xbd, 0x82, 0x97, 0xfc, 0xe9, 0xd6, 0xc3, + 0x57, 0x42, 0x7d, 0x68, 0x03, 0x16, 0x29, 0x3c, + 0xff, 0xea, 0xd5, 0xc0, 0xab, 0xbe, 0x81, 0x94, + 0xae, 0xbb, 0x84, 0x91, 0xfa, 0xef, 0xd0, 0xc5, + 0x06, 0x13, 0x2c, 0x39, 0x52, 0x47, 0x78, 0x6d, + 0xf9, 0xec, 0xd3, 0xc6, 0xad, 0xb8, 0x87, 0x92, + 0x51, 0x44, 0x7b, 0x6e, 0x05, 0x10, 0x2f, 0x3a, + 0x5b, 0x4e, 0x71, 0x64, 0x0f, 0x1a, 0x25, 0x30, + 0xf3, 0xe6, 0xd9, 0xcc, 0xa7, 0xb2, 0x8d, 0x98, + 0x0c, 0x19, 0x26, 0x33, 0x58, 0x4d, 0x72, 0x67, + 0xa4, 0xb1, 0x8e, 0x9b, 0xf0, 0xe5, 0xda, 0xcf, + 0xf5, 0xe0, 0xdf, 0xca, 0xa1, 0xb4, 0x8b, 0x9e, + 0x5d, 0x48, 0x77, 0x62, 0x09, 0x1c, 0x23, 0x36, + 0xa2, 0xb7, 0x88, 0x9d, 0xf6, 0xe3, 0xdc, 0xc9, + 0x0a, 0x1f, 0x20, 0x35, 0x5e, 0x4b, 0x74, 0x61, + 0xb6, 0xa3, 0x9c, 0x89, 0xe2, 0xf7, 0xc8, 0xdd, + 0x1e, 0x0b, 0x34, 0x21, 0x4a, 0x5f, 0x60, 0x75, + 0xe1, 0xf4, 0xcb, 0xde, 0xb5, 0xa0, 0x9f, 0x8a, + 0x49, 0x5c, 0x63, 0x76, 0x1d, 0x08, 0x37, 0x22, + 0x18, 0x0d, 0x32, 0x27, 0x4c, 0x59, 0x66, 0x73, + 0xb0, 0xa5, 0x9a, 0x8f, 0xe4, 0xf1, 0xce, 0xdb, + 0x4f, 0x5a, 0x65, 0x70, 0x1b, 0x0e, 0x31, 0x24, + 0xe7, 0xf2, 0xcd, 0xd8, 0xb3, 0xa6, 0x99, 0x8c, + 0xed, 0xf8, 0xc7, 0xd2, 0xb9, 0xac, 0x93, 0x86, + 0x45, 0x50, 0x6f, 0x7a, 0x11, 0x04, 0x3b, 0x2e, + 0xba, 0xaf, 0x90, 0x85, 0xee, 0xfb, 0xc4, 0xd1, + 0x12, 0x07, 0x38, 0x2d, 0x46, 0x53, 0x6c, 0x79, + 0x43, 0x56, 0x69, 0x7c, 0x17, 0x02, 0x3d, 0x28, + 0xeb, 0xfe, 0xc1, 0xd4, 0xbf, 0xaa, 0x95, 0x80, + 0x14, 0x01, 0x3e, 0x2b, 0x40, 0x55, 0x6a, 0x7f, + 0xbc, 0xa9, 0x96, 0x83, 0xe8, 0xfd, 0xc2, 0xd7, + }, + { + 0x00, 0x6b, 0xd6, 0xbd, 0xab, 0xc0, 0x7d, 0x16, + 0x51, 0x3a, 0x87, 0xec, 0xfa, 0x91, 0x2c, 0x47, + 0xa2, 0xc9, 0x74, 0x1f, 0x09, 0x62, 0xdf, 0xb4, + 0xf3, 0x98, 0x25, 0x4e, 0x58, 0x33, 0x8e, 0xe5, + 0x43, 0x28, 0x95, 0xfe, 0xe8, 0x83, 0x3e, 0x55, + 0x12, 0x79, 0xc4, 0xaf, 0xb9, 0xd2, 0x6f, 0x04, + 0xe1, 0x8a, 0x37, 0x5c, 0x4a, 0x21, 0x9c, 0xf7, + 0xb0, 0xdb, 0x66, 0x0d, 0x1b, 0x70, 0xcd, 0xa6, + 0x86, 0xed, 0x50, 0x3b, 0x2d, 0x46, 0xfb, 0x90, + 0xd7, 0xbc, 0x01, 0x6a, 0x7c, 0x17, 0xaa, 0xc1, + 0x24, 0x4f, 0xf2, 0x99, 0x8f, 0xe4, 0x59, 0x32, + 0x75, 0x1e, 0xa3, 0xc8, 0xde, 0xb5, 0x08, 0x63, + 0xc5, 0xae, 0x13, 0x78, 0x6e, 0x05, 0xb8, 0xd3, + 0x94, 0xff, 0x42, 0x29, 0x3f, 0x54, 0xe9, 0x82, + 0x67, 0x0c, 0xb1, 0xda, 0xcc, 0xa7, 0x1a, 0x71, + 0x36, 0x5d, 0xe0, 0x8b, 0x9d, 0xf6, 0x4b, 0x20, + 0x0b, 0x60, 0xdd, 0xb6, 0xa0, 0xcb, 0x76, 0x1d, + 0x5a, 0x31, 0x8c, 0xe7, 0xf1, 0x9a, 0x27, 0x4c, + 0xa9, 0xc2, 0x7f, 0x14, 0x02, 0x69, 0xd4, 0xbf, + 0xf8, 0x93, 0x2e, 0x45, 0x53, 0x38, 0x85, 0xee, + 0x48, 0x23, 0x9e, 0xf5, 0xe3, 0x88, 0x35, 0x5e, + 0x19, 0x72, 0xcf, 0xa4, 0xb2, 0xd9, 0x64, 0x0f, + 0xea, 0x81, 0x3c, 0x57, 0x41, 0x2a, 0x97, 0xfc, + 0xbb, 0xd0, 0x6d, 0x06, 0x10, 0x7b, 0xc6, 0xad, + 0x8d, 0xe6, 0x5b, 0x30, 0x26, 0x4d, 0xf0, 0x9b, + 0xdc, 0xb7, 0x0a, 0x61, 0x77, 0x1c, 0xa1, 0xca, + 0x2f, 0x44, 0xf9, 0x92, 0x84, 0xef, 0x52, 0x39, + 0x7e, 0x15, 0xa8, 0xc3, 0xd5, 0xbe, 0x03, 0x68, + 0xce, 0xa5, 0x18, 0x73, 0x65, 0x0e, 0xb3, 0xd8, + 0x9f, 0xf4, 0x49, 0x22, 0x34, 0x5f, 0xe2, 0x89, + 0x6c, 0x07, 0xba, 0xd1, 0xc7, 0xac, 0x11, 0x7a, + 0x3d, 0x56, 0xeb, 0x80, 0x96, 0xfd, 0x40, 0x2b, + }, + { + 0x00, 0x16, 0x2c, 0x3a, 0x58, 0x4e, 0x74, 0x62, + 0xb0, 0xa6, 0x9c, 0x8a, 0xe8, 0xfe, 0xc4, 0xd2, + 0x67, 0x71, 0x4b, 0x5d, 0x3f, 0x29, 0x13, 0x05, + 0xd7, 0xc1, 0xfb, 0xed, 0x8f, 0x99, 0xa3, 0xb5, + 0xce, 0xd8, 0xe2, 0xf4, 0x96, 0x80, 0xba, 0xac, + 0x7e, 0x68, 0x52, 0x44, 0x26, 0x30, 0x0a, 0x1c, + 0xa9, 0xbf, 0x85, 0x93, 0xf1, 0xe7, 0xdd, 0xcb, + 0x19, 0x0f, 0x35, 0x23, 0x41, 0x57, 0x6d, 0x7b, + 0x9b, 0x8d, 0xb7, 0xa1, 0xc3, 0xd5, 0xef, 0xf9, + 0x2b, 0x3d, 0x07, 0x11, 0x73, 0x65, 0x5f, 0x49, + 0xfc, 0xea, 0xd0, 0xc6, 0xa4, 0xb2, 0x88, 0x9e, + 0x4c, 0x5a, 0x60, 0x76, 0x14, 0x02, 0x38, 0x2e, + 0x55, 0x43, 0x79, 0x6f, 0x0d, 0x1b, 0x21, 0x37, + 0xe5, 0xf3, 0xc9, 0xdf, 0xbd, 0xab, 0x91, 0x87, + 0x32, 0x24, 0x1e, 0x08, 0x6a, 0x7c, 0x46, 0x50, + 0x82, 0x94, 0xae, 0xb8, 0xda, 0xcc, 0xf6, 0xe0, + 0x31, 0x27, 0x1d, 0x0b, 0x69, 0x7f, 0x45, 0x53, + 0x81, 0x97, 0xad, 0xbb, 0xd9, 0xcf, 0xf5, 0xe3, + 0x56, 0x40, 0x7a, 0x6c, 0x0e, 0x18, 0x22, 0x34, + 0xe6, 0xf0, 0xca, 0xdc, 0xbe, 0xa8, 0x92, 0x84, + 0xff, 0xe9, 0xd3, 0xc5, 0xa7, 0xb1, 0x8b, 0x9d, + 0x4f, 0x59, 0x63, 0x75, 0x17, 0x01, 0x3b, 0x2d, + 0x98, 0x8e, 0xb4, 0xa2, 0xc0, 0xd6, 0xec, 0xfa, + 0x28, 0x3e, 0x04, 0x12, 0x70, 0x66, 0x5c, 0x4a, + 0xaa, 0xbc, 0x86, 0x90, 0xf2, 0xe4, 0xde, 0xc8, + 0x1a, 0x0c, 0x36, 0x20, 0x42, 0x54, 0x6e, 0x78, + 0xcd, 0xdb, 0xe1, 0xf7, 0x95, 0x83, 0xb9, 0xaf, + 0x7d, 0x6b, 0x51, 0x47, 0x25, 0x33, 0x09, 0x1f, + 0x64, 0x72, 0x48, 0x5e, 0x3c, 0x2a, 0x10, 0x06, + 0xd4, 0xc2, 0xf8, 0xee, 0x8c, 0x9a, 0xa0, 0xb6, + 0x03, 0x15, 0x2f, 0x39, 0x5b, 0x4d, 0x77, 0x61, + 0xb3, 0xa5, 0x9f, 0x89, 0xeb, 0xfd, 0xc7, 0xd1, + }, + { + 0x00, 0x62, 0xc4, 0xa6, 0x8f, 0xed, 0x4b, 0x29, + 0x19, 0x7b, 0xdd, 0xbf, 0x96, 0xf4, 0x52, 0x30, + 0x32, 0x50, 0xf6, 0x94, 0xbd, 0xdf, 0x79, 0x1b, + 0x2b, 0x49, 0xef, 0x8d, 0xa4, 0xc6, 0x60, 0x02, + 0x64, 0x06, 0xa0, 0xc2, 0xeb, 0x89, 0x2f, 0x4d, + 0x7d, 0x1f, 0xb9, 0xdb, 0xf2, 0x90, 0x36, 0x54, + 0x56, 0x34, 0x92, 0xf0, 0xd9, 0xbb, 0x1d, 0x7f, + 0x4f, 0x2d, 0x8b, 0xe9, 0xc0, 0xa2, 0x04, 0x66, + 0xc8, 0xaa, 0x0c, 0x6e, 0x47, 0x25, 0x83, 0xe1, + 0xd1, 0xb3, 0x15, 0x77, 0x5e, 0x3c, 0x9a, 0xf8, + 0xfa, 0x98, 0x3e, 0x5c, 0x75, 0x17, 0xb1, 0xd3, + 0xe3, 0x81, 0x27, 0x45, 0x6c, 0x0e, 0xa8, 0xca, + 0xac, 0xce, 0x68, 0x0a, 0x23, 0x41, 0xe7, 0x85, + 0xb5, 0xd7, 0x71, 0x13, 0x3a, 0x58, 0xfe, 0x9c, + 0x9e, 0xfc, 0x5a, 0x38, 0x11, 0x73, 0xd5, 0xb7, + 0x87, 0xe5, 0x43, 0x21, 0x08, 0x6a, 0xcc, 0xae, + 0x97, 0xf5, 0x53, 0x31, 0x18, 0x7a, 0xdc, 0xbe, + 0x8e, 0xec, 0x4a, 0x28, 0x01, 0x63, 0xc5, 0xa7, + 0xa5, 0xc7, 0x61, 0x03, 0x2a, 0x48, 0xee, 0x8c, + 0xbc, 0xde, 0x78, 0x1a, 0x33, 0x51, 0xf7, 0x95, + 0xf3, 0x91, 0x37, 0x55, 0x7c, 0x1e, 0xb8, 0xda, + 0xea, 0x88, 0x2e, 0x4c, 0x65, 0x07, 0xa1, 0xc3, + 0xc1, 0xa3, 0x05, 0x67, 0x4e, 0x2c, 0x8a, 0xe8, + 0xd8, 0xba, 0x1c, 0x7e, 0x57, 0x35, 0x93, 0xf1, + 0x5f, 0x3d, 0x9b, 0xf9, 0xd0, 0xb2, 0x14, 0x76, + 0x46, 0x24, 0x82, 0xe0, 0xc9, 0xab, 0x0d, 0x6f, + 0x6d, 0x0f, 0xa9, 0xcb, 0xe2, 0x80, 0x26, 0x44, + 0x74, 0x16, 0xb0, 0xd2, 0xfb, 0x99, 0x3f, 0x5d, + 0x3b, 0x59, 0xff, 0x9d, 0xb4, 0xd6, 0x70, 0x12, + 0x22, 0x40, 0xe6, 0x84, 0xad, 0xcf, 0x69, 0x0b, + 0x09, 0x6b, 0xcd, 0xaf, 0x86, 0xe4, 0x42, 0x20, + 0x10, 0x72, 0xd4, 0xb6, 0x9f, 0xfd, 0x5b, 0x39, + }, + { + 0x00, 0x29, 0x52, 0x7b, 0xa4, 0x8d, 0xf6, 0xdf, + 0x4f, 0x66, 0x1d, 0x34, 0xeb, 0xc2, 0xb9, 0x90, + 0x9e, 0xb7, 0xcc, 0xe5, 0x3a, 0x13, 0x68, 0x41, + 0xd1, 0xf8, 0x83, 0xaa, 0x75, 0x5c, 0x27, 0x0e, + 0x3b, 0x12, 0x69, 0x40, 0x9f, 0xb6, 0xcd, 0xe4, + 0x74, 0x5d, 0x26, 0x0f, 0xd0, 0xf9, 0x82, 0xab, + 0xa5, 0x8c, 0xf7, 0xde, 0x01, 0x28, 0x53, 0x7a, + 0xea, 0xc3, 0xb8, 0x91, 0x4e, 0x67, 0x1c, 0x35, + 0x76, 0x5f, 0x24, 0x0d, 0xd2, 0xfb, 0x80, 0xa9, + 0x39, 0x10, 0x6b, 0x42, 0x9d, 0xb4, 0xcf, 0xe6, + 0xe8, 0xc1, 0xba, 0x93, 0x4c, 0x65, 0x1e, 0x37, + 0xa7, 0x8e, 0xf5, 0xdc, 0x03, 0x2a, 0x51, 0x78, + 0x4d, 0x64, 0x1f, 0x36, 0xe9, 0xc0, 0xbb, 0x92, + 0x02, 0x2b, 0x50, 0x79, 0xa6, 0x8f, 0xf4, 0xdd, + 0xd3, 0xfa, 0x81, 0xa8, 0x77, 0x5e, 0x25, 0x0c, + 0x9c, 0xb5, 0xce, 0xe7, 0x38, 0x11, 0x6a, 0x43, + 0xec, 0xc5, 0xbe, 0x97, 0x48, 0x61, 0x1a, 0x33, + 0xa3, 0x8a, 0xf1, 0xd8, 0x07, 0x2e, 0x55, 0x7c, + 0x72, 0x5b, 0x20, 0x09, 0xd6, 0xff, 0x84, 0xad, + 0x3d, 0x14, 0x6f, 0x46, 0x99, 0xb0, 0xcb, 0xe2, + 0xd7, 0xfe, 0x85, 0xac, 0x73, 0x5a, 0x21, 0x08, + 0x98, 0xb1, 0xca, 0xe3, 0x3c, 0x15, 0x6e, 0x47, + 0x49, 0x60, 0x1b, 0x32, 0xed, 0xc4, 0xbf, 0x96, + 0x06, 0x2f, 0x54, 0x7d, 0xa2, 0x8b, 0xf0, 0xd9, + 0x9a, 0xb3, 0xc8, 0xe1, 0x3e, 0x17, 0x6c, 0x45, + 0xd5, 0xfc, 0x87, 0xae, 0x71, 0x58, 0x23, 0x0a, + 0x04, 0x2d, 0x56, 0x7f, 0xa0, 0x89, 0xf2, 0xdb, + 0x4b, 0x62, 0x19, 0x30, 0xef, 0xc6, 0xbd, 0x94, + 0xa1, 0x88, 0xf3, 0xda, 0x05, 0x2c, 0x57, 0x7e, + 0xee, 0xc7, 0xbc, 0x95, 0x4a, 0x63, 0x18, 0x31, + 0x3f, 0x16, 0x6d, 0x44, 0x9b, 0xb2, 0xc9, 0xe0, + 0x70, 0x59, 0x22, 0x0b, 0xd4, 0xfd, 0x86, 0xaf, + }, + { + 0x00, 0xdf, 0xb9, 0x66, 0x75, 0xaa, 0xcc, 0x13, + 0xea, 0x35, 0x53, 0x8c, 0x9f, 0x40, 0x26, 0xf9, + 0xd3, 0x0c, 0x6a, 0xb5, 0xa6, 0x79, 0x1f, 0xc0, + 0x39, 0xe6, 0x80, 0x5f, 0x4c, 0x93, 0xf5, 0x2a, + 0xa1, 0x7e, 0x18, 0xc7, 0xd4, 0x0b, 0x6d, 0xb2, + 0x4b, 0x94, 0xf2, 0x2d, 0x3e, 0xe1, 0x87, 0x58, + 0x72, 0xad, 0xcb, 0x14, 0x07, 0xd8, 0xbe, 0x61, + 0x98, 0x47, 0x21, 0xfe, 0xed, 0x32, 0x54, 0x8b, + 0x45, 0x9a, 0xfc, 0x23, 0x30, 0xef, 0x89, 0x56, + 0xaf, 0x70, 0x16, 0xc9, 0xda, 0x05, 0x63, 0xbc, + 0x96, 0x49, 0x2f, 0xf0, 0xe3, 0x3c, 0x5a, 0x85, + 0x7c, 0xa3, 0xc5, 0x1a, 0x09, 0xd6, 0xb0, 0x6f, + 0xe4, 0x3b, 0x5d, 0x82, 0x91, 0x4e, 0x28, 0xf7, + 0x0e, 0xd1, 0xb7, 0x68, 0x7b, 0xa4, 0xc2, 0x1d, + 0x37, 0xe8, 0x8e, 0x51, 0x42, 0x9d, 0xfb, 0x24, + 0xdd, 0x02, 0x64, 0xbb, 0xa8, 0x77, 0x11, 0xce, + 0x8a, 0x55, 0x33, 0xec, 0xff, 0x20, 0x46, 0x99, + 0x60, 0xbf, 0xd9, 0x06, 0x15, 0xca, 0xac, 0x73, + 0x59, 0x86, 0xe0, 0x3f, 0x2c, 0xf3, 0x95, 0x4a, + 0xb3, 0x6c, 0x0a, 0xd5, 0xc6, 0x19, 0x7f, 0xa0, + 0x2b, 0xf4, 0x92, 0x4d, 0x5e, 0x81, 0xe7, 0x38, + 0xc1, 0x1e, 0x78, 0xa7, 0xb4, 0x6b, 0x0d, 0xd2, + 0xf8, 0x27, 0x41, 0x9e, 0x8d, 0x52, 0x34, 0xeb, + 0x12, 0xcd, 0xab, 0x74, 0x67, 0xb8, 0xde, 0x01, + 0xcf, 0x10, 0x76, 0xa9, 0xba, 0x65, 0x03, 0xdc, + 0x25, 0xfa, 0x9c, 0x43, 0x50, 0x8f, 0xe9, 0x36, + 0x1c, 0xc3, 0xa5, 0x7a, 0x69, 0xb6, 0xd0, 0x0f, + 0xf6, 0x29, 0x4f, 0x90, 0x83, 0x5c, 0x3a, 0xe5, + 0x6e, 0xb1, 0xd7, 0x08, 0x1b, 0xc4, 0xa2, 0x7d, + 0x84, 0x5b, 0x3d, 0xe2, 0xf1, 0x2e, 0x48, 0x97, + 0xbd, 0x62, 0x04, 0xdb, 0xc8, 0x17, 0x71, 0xae, + 0x57, 0x88, 0xee, 0x31, 0x22, 0xfd, 0x9b, 0x44, + }, + { + 0x00, 0x13, 0x26, 0x35, 0x4c, 0x5f, 0x6a, 0x79, + 0x98, 0x8b, 0xbe, 0xad, 0xd4, 0xc7, 0xf2, 0xe1, + 0x37, 0x24, 0x11, 0x02, 0x7b, 0x68, 0x5d, 0x4e, + 0xaf, 0xbc, 0x89, 0x9a, 0xe3, 0xf0, 0xc5, 0xd6, + 0x6e, 0x7d, 0x48, 0x5b, 0x22, 0x31, 0x04, 0x17, + 0xf6, 0xe5, 0xd0, 0xc3, 0xba, 0xa9, 0x9c, 0x8f, + 0x59, 0x4a, 0x7f, 0x6c, 0x15, 0x06, 0x33, 0x20, + 0xc1, 0xd2, 0xe7, 0xf4, 0x8d, 0x9e, 0xab, 0xb8, + 0xdc, 0xcf, 0xfa, 0xe9, 0x90, 0x83, 0xb6, 0xa5, + 0x44, 0x57, 0x62, 0x71, 0x08, 0x1b, 0x2e, 0x3d, + 0xeb, 0xf8, 0xcd, 0xde, 0xa7, 0xb4, 0x81, 0x92, + 0x73, 0x60, 0x55, 0x46, 0x3f, 0x2c, 0x19, 0x0a, + 0xb2, 0xa1, 0x94, 0x87, 0xfe, 0xed, 0xd8, 0xcb, + 0x2a, 0x39, 0x0c, 0x1f, 0x66, 0x75, 0x40, 0x53, + 0x85, 0x96, 0xa3, 0xb0, 0xc9, 0xda, 0xef, 0xfc, + 0x1d, 0x0e, 0x3b, 0x28, 0x51, 0x42, 0x77, 0x64, + 0xbf, 0xac, 0x99, 0x8a, 0xf3, 0xe0, 0xd5, 0xc6, + 0x27, 0x34, 0x01, 0x12, 0x6b, 0x78, 0x4d, 0x5e, + 0x88, 0x9b, 0xae, 0xbd, 0xc4, 0xd7, 0xe2, 0xf1, + 0x10, 0x03, 0x36, 0x25, 0x5c, 0x4f, 0x7a, 0x69, + 0xd1, 0xc2, 0xf7, 0xe4, 0x9d, 0x8e, 0xbb, 0xa8, + 0x49, 0x5a, 0x6f, 0x7c, 0x05, 0x16, 0x23, 0x30, + 0xe6, 0xf5, 0xc0, 0xd3, 0xaa, 0xb9, 0x8c, 0x9f, + 0x7e, 0x6d, 0x58, 0x4b, 0x32, 0x21, 0x14, 0x07, + 0x63, 0x70, 0x45, 0x56, 0x2f, 0x3c, 0x09, 0x1a, + 0xfb, 0xe8, 0xdd, 0xce, 0xb7, 0xa4, 0x91, 0x82, + 0x54, 0x47, 0x72, 0x61, 0x18, 0x0b, 0x3e, 0x2d, + 0xcc, 0xdf, 0xea, 0xf9, 0x80, 0x93, 0xa6, 0xb5, + 0x0d, 0x1e, 0x2b, 0x38, 0x41, 0x52, 0x67, 0x74, + 0x95, 0x86, 0xb3, 0xa0, 0xd9, 0xca, 0xff, 0xec, + 0x3a, 0x29, 0x1c, 0x0f, 0x76, 0x65, 0x50, 0x43, + 0xa2, 0xb1, 0x84, 0x97, 0xee, 0xfd, 0xc8, 0xdb, + }, + { + 0x00, 0x79, 0xf2, 0x8b, 0xe3, 0x9a, 0x11, 0x68, + 0xc1, 0xb8, 0x33, 0x4a, 0x22, 0x5b, 0xd0, 0xa9, + 0x85, 0xfc, 0x77, 0x0e, 0x66, 0x1f, 0x94, 0xed, + 0x44, 0x3d, 0xb6, 0xcf, 0xa7, 0xde, 0x55, 0x2c, + 0x0d, 0x74, 0xff, 0x86, 0xee, 0x97, 0x1c, 0x65, + 0xcc, 0xb5, 0x3e, 0x47, 0x2f, 0x56, 0xdd, 0xa4, + 0x88, 0xf1, 0x7a, 0x03, 0x6b, 0x12, 0x99, 0xe0, + 0x49, 0x30, 0xbb, 0xc2, 0xaa, 0xd3, 0x58, 0x21, + 0x1a, 0x63, 0xe8, 0x91, 0xf9, 0x80, 0x0b, 0x72, + 0xdb, 0xa2, 0x29, 0x50, 0x38, 0x41, 0xca, 0xb3, + 0x9f, 0xe6, 0x6d, 0x14, 0x7c, 0x05, 0x8e, 0xf7, + 0x5e, 0x27, 0xac, 0xd5, 0xbd, 0xc4, 0x4f, 0x36, + 0x17, 0x6e, 0xe5, 0x9c, 0xf4, 0x8d, 0x06, 0x7f, + 0xd6, 0xaf, 0x24, 0x5d, 0x35, 0x4c, 0xc7, 0xbe, + 0x92, 0xeb, 0x60, 0x19, 0x71, 0x08, 0x83, 0xfa, + 0x53, 0x2a, 0xa1, 0xd8, 0xb0, 0xc9, 0x42, 0x3b, + 0x34, 0x4d, 0xc6, 0xbf, 0xd7, 0xae, 0x25, 0x5c, + 0xf5, 0x8c, 0x07, 0x7e, 0x16, 0x6f, 0xe4, 0x9d, + 0xb1, 0xc8, 0x43, 0x3a, 0x52, 0x2b, 0xa0, 0xd9, + 0x70, 0x09, 0x82, 0xfb, 0x93, 0xea, 0x61, 0x18, + 0x39, 0x40, 0xcb, 0xb2, 0xda, 0xa3, 0x28, 0x51, + 0xf8, 0x81, 0x0a, 0x73, 0x1b, 0x62, 0xe9, 0x90, + 0xbc, 0xc5, 0x4e, 0x37, 0x5f, 0x26, 0xad, 0xd4, + 0x7d, 0x04, 0x8f, 0xf6, 0x9e, 0xe7, 0x6c, 0x15, + 0x2e, 0x57, 0xdc, 0xa5, 0xcd, 0xb4, 0x3f, 0x46, + 0xef, 0x96, 0x1d, 0x64, 0x0c, 0x75, 0xfe, 0x87, + 0xab, 0xd2, 0x59, 0x20, 0x48, 0x31, 0xba, 0xc3, + 0x6a, 0x13, 0x98, 0xe1, 0x89, 0xf0, 0x7b, 0x02, + 0x23, 0x5a, 0xd1, 0xa8, 0xc0, 0xb9, 0x32, 0x4b, + 0xe2, 0x9b, 0x10, 0x69, 0x01, 0x78, 0xf3, 0x8a, + 0xa6, 0xdf, 0x54, 0x2d, 0x45, 0x3c, 0xb7, 0xce, + 0x67, 0x1e, 0x95, 0xec, 0x84, 0xfd, 0x76, 0x0f, + }, + { + 0x00, 0x68, 0xd0, 0xb8, 0xa7, 0xcf, 0x77, 0x1f, + 0x49, 0x21, 0x99, 0xf1, 0xee, 0x86, 0x3e, 0x56, + 0x92, 0xfa, 0x42, 0x2a, 0x35, 0x5d, 0xe5, 0x8d, + 0xdb, 0xb3, 0x0b, 0x63, 0x7c, 0x14, 0xac, 0xc4, + 0x23, 0x4b, 0xf3, 0x9b, 0x84, 0xec, 0x54, 0x3c, + 0x6a, 0x02, 0xba, 0xd2, 0xcd, 0xa5, 0x1d, 0x75, + 0xb1, 0xd9, 0x61, 0x09, 0x16, 0x7e, 0xc6, 0xae, + 0xf8, 0x90, 0x28, 0x40, 0x5f, 0x37, 0x8f, 0xe7, + 0x46, 0x2e, 0x96, 0xfe, 0xe1, 0x89, 0x31, 0x59, + 0x0f, 0x67, 0xdf, 0xb7, 0xa8, 0xc0, 0x78, 0x10, + 0xd4, 0xbc, 0x04, 0x6c, 0x73, 0x1b, 0xa3, 0xcb, + 0x9d, 0xf5, 0x4d, 0x25, 0x3a, 0x52, 0xea, 0x82, + 0x65, 0x0d, 0xb5, 0xdd, 0xc2, 0xaa, 0x12, 0x7a, + 0x2c, 0x44, 0xfc, 0x94, 0x8b, 0xe3, 0x5b, 0x33, + 0xf7, 0x9f, 0x27, 0x4f, 0x50, 0x38, 0x80, 0xe8, + 0xbe, 0xd6, 0x6e, 0x06, 0x19, 0x71, 0xc9, 0xa1, + 0x8c, 0xe4, 0x5c, 0x34, 0x2b, 0x43, 0xfb, 0x93, + 0xc5, 0xad, 0x15, 0x7d, 0x62, 0x0a, 0xb2, 0xda, + 0x1e, 0x76, 0xce, 0xa6, 0xb9, 0xd1, 0x69, 0x01, + 0x57, 0x3f, 0x87, 0xef, 0xf0, 0x98, 0x20, 0x48, + 0xaf, 0xc7, 0x7f, 0x17, 0x08, 0x60, 0xd8, 0xb0, + 0xe6, 0x8e, 0x36, 0x5e, 0x41, 0x29, 0x91, 0xf9, + 0x3d, 0x55, 0xed, 0x85, 0x9a, 0xf2, 0x4a, 0x22, + 0x74, 0x1c, 0xa4, 0xcc, 0xd3, 0xbb, 0x03, 0x6b, + 0xca, 0xa2, 0x1a, 0x72, 0x6d, 0x05, 0xbd, 0xd5, + 0x83, 0xeb, 0x53, 0x3b, 0x24, 0x4c, 0xf4, 0x9c, + 0x58, 0x30, 0x88, 0xe0, 0xff, 0x97, 0x2f, 0x47, + 0x11, 0x79, 0xc1, 0xa9, 0xb6, 0xde, 0x66, 0x0e, + 0xe9, 0x81, 0x39, 0x51, 0x4e, 0x26, 0x9e, 0xf6, + 0xa0, 0xc8, 0x70, 0x18, 0x07, 0x6f, 0xd7, 0xbf, + 0x7b, 0x13, 0xab, 0xc3, 0xdc, 0xb4, 0x0c, 0x64, + 0x32, 0x5a, 0xe2, 0x8a, 0x95, 0xfd, 0x45, 0x2d, + }, + { + 0x00, 0x1f, 0x3e, 0x21, 0x7c, 0x63, 0x42, 0x5d, + 0xf8, 0xe7, 0xc6, 0xd9, 0x84, 0x9b, 0xba, 0xa5, + 0xf7, 0xe8, 0xc9, 0xd6, 0x8b, 0x94, 0xb5, 0xaa, + 0x0f, 0x10, 0x31, 0x2e, 0x73, 0x6c, 0x4d, 0x52, + 0xe9, 0xf6, 0xd7, 0xc8, 0x95, 0x8a, 0xab, 0xb4, + 0x11, 0x0e, 0x2f, 0x30, 0x6d, 0x72, 0x53, 0x4c, + 0x1e, 0x01, 0x20, 0x3f, 0x62, 0x7d, 0x5c, 0x43, + 0xe6, 0xf9, 0xd8, 0xc7, 0x9a, 0x85, 0xa4, 0xbb, + 0xd5, 0xca, 0xeb, 0xf4, 0xa9, 0xb6, 0x97, 0x88, + 0x2d, 0x32, 0x13, 0x0c, 0x51, 0x4e, 0x6f, 0x70, + 0x22, 0x3d, 0x1c, 0x03, 0x5e, 0x41, 0x60, 0x7f, + 0xda, 0xc5, 0xe4, 0xfb, 0xa6, 0xb9, 0x98, 0x87, + 0x3c, 0x23, 0x02, 0x1d, 0x40, 0x5f, 0x7e, 0x61, + 0xc4, 0xdb, 0xfa, 0xe5, 0xb8, 0xa7, 0x86, 0x99, + 0xcb, 0xd4, 0xf5, 0xea, 0xb7, 0xa8, 0x89, 0x96, + 0x33, 0x2c, 0x0d, 0x12, 0x4f, 0x50, 0x71, 0x6e, + 0xad, 0xb2, 0x93, 0x8c, 0xd1, 0xce, 0xef, 0xf0, + 0x55, 0x4a, 0x6b, 0x74, 0x29, 0x36, 0x17, 0x08, + 0x5a, 0x45, 0x64, 0x7b, 0x26, 0x39, 0x18, 0x07, + 0xa2, 0xbd, 0x9c, 0x83, 0xde, 0xc1, 0xe0, 0xff, + 0x44, 0x5b, 0x7a, 0x65, 0x38, 0x27, 0x06, 0x19, + 0xbc, 0xa3, 0x82, 0x9d, 0xc0, 0xdf, 0xfe, 0xe1, + 0xb3, 0xac, 0x8d, 0x92, 0xcf, 0xd0, 0xf1, 0xee, + 0x4b, 0x54, 0x75, 0x6a, 0x37, 0x28, 0x09, 0x16, + 0x78, 0x67, 0x46, 0x59, 0x04, 0x1b, 0x3a, 0x25, + 0x80, 0x9f, 0xbe, 0xa1, 0xfc, 0xe3, 0xc2, 0xdd, + 0x8f, 0x90, 0xb1, 0xae, 0xf3, 0xec, 0xcd, 0xd2, + 0x77, 0x68, 0x49, 0x56, 0x0b, 0x14, 0x35, 0x2a, + 0x91, 0x8e, 0xaf, 0xb0, 0xed, 0xf2, 0xd3, 0xcc, + 0x69, 0x76, 0x57, 0x48, 0x15, 0x0a, 0x2b, 0x34, + 0x66, 0x79, 0x58, 0x47, 0x1a, 0x05, 0x24, 0x3b, + 0x9e, 0x81, 0xa0, 0xbf, 0xe2, 0xfd, 0xdc, 0xc3, + }, + { + 0x00, 0x5d, 0xba, 0xe7, 0x73, 0x2e, 0xc9, 0x94, + 0xe6, 0xbb, 0x5c, 0x01, 0x95, 0xc8, 0x2f, 0x72, + 0xcb, 0x96, 0x71, 0x2c, 0xb8, 0xe5, 0x02, 0x5f, + 0x2d, 0x70, 0x97, 0xca, 0x5e, 0x03, 0xe4, 0xb9, + 0x91, 0xcc, 0x2b, 0x76, 0xe2, 0xbf, 0x58, 0x05, + 0x77, 0x2a, 0xcd, 0x90, 0x04, 0x59, 0xbe, 0xe3, + 0x5a, 0x07, 0xe0, 0xbd, 0x29, 0x74, 0x93, 0xce, + 0xbc, 0xe1, 0x06, 0x5b, 0xcf, 0x92, 0x75, 0x28, + 0x25, 0x78, 0x9f, 0xc2, 0x56, 0x0b, 0xec, 0xb1, + 0xc3, 0x9e, 0x79, 0x24, 0xb0, 0xed, 0x0a, 0x57, + 0xee, 0xb3, 0x54, 0x09, 0x9d, 0xc0, 0x27, 0x7a, + 0x08, 0x55, 0xb2, 0xef, 0x7b, 0x26, 0xc1, 0x9c, + 0xb4, 0xe9, 0x0e, 0x53, 0xc7, 0x9a, 0x7d, 0x20, + 0x52, 0x0f, 0xe8, 0xb5, 0x21, 0x7c, 0x9b, 0xc6, + 0x7f, 0x22, 0xc5, 0x98, 0x0c, 0x51, 0xb6, 0xeb, + 0x99, 0xc4, 0x23, 0x7e, 0xea, 0xb7, 0x50, 0x0d, + 0x4a, 0x17, 0xf0, 0xad, 0x39, 0x64, 0x83, 0xde, + 0xac, 0xf1, 0x16, 0x4b, 0xdf, 0x82, 0x65, 0x38, + 0x81, 0xdc, 0x3b, 0x66, 0xf2, 0xaf, 0x48, 0x15, + 0x67, 0x3a, 0xdd, 0x80, 0x14, 0x49, 0xae, 0xf3, + 0xdb, 0x86, 0x61, 0x3c, 0xa8, 0xf5, 0x12, 0x4f, + 0x3d, 0x60, 0x87, 0xda, 0x4e, 0x13, 0xf4, 0xa9, + 0x10, 0x4d, 0xaa, 0xf7, 0x63, 0x3e, 0xd9, 0x84, + 0xf6, 0xab, 0x4c, 0x11, 0x85, 0xd8, 0x3f, 0x62, + 0x6f, 0x32, 0xd5, 0x88, 0x1c, 0x41, 0xa6, 0xfb, + 0x89, 0xd4, 0x33, 0x6e, 0xfa, 0xa7, 0x40, 0x1d, + 0xa4, 0xf9, 0x1e, 0x43, 0xd7, 0x8a, 0x6d, 0x30, + 0x42, 0x1f, 0xf8, 0xa5, 0x31, 0x6c, 0x8b, 0xd6, + 0xfe, 0xa3, 0x44, 0x19, 0x8d, 0xd0, 0x37, 0x6a, + 0x18, 0x45, 0xa2, 0xff, 0x6b, 0x36, 0xd1, 0x8c, + 0x35, 0x68, 0x8f, 0xd2, 0x46, 0x1b, 0xfc, 0xa1, + 0xd3, 0x8e, 0x69, 0x34, 0xa0, 0xfd, 0x1a, 0x47, + }, + { + 0x00, 0x94, 0x2f, 0xbb, 0x5e, 0xca, 0x71, 0xe5, + 0xbc, 0x28, 0x93, 0x07, 0xe2, 0x76, 0xcd, 0x59, + 0x7f, 0xeb, 0x50, 0xc4, 0x21, 0xb5, 0x0e, 0x9a, + 0xc3, 0x57, 0xec, 0x78, 0x9d, 0x09, 0xb2, 0x26, + 0xfe, 0x6a, 0xd1, 0x45, 0xa0, 0x34, 0x8f, 0x1b, + 0x42, 0xd6, 0x6d, 0xf9, 0x1c, 0x88, 0x33, 0xa7, + 0x81, 0x15, 0xae, 0x3a, 0xdf, 0x4b, 0xf0, 0x64, + 0x3d, 0xa9, 0x12, 0x86, 0x63, 0xf7, 0x4c, 0xd8, + 0xfb, 0x6f, 0xd4, 0x40, 0xa5, 0x31, 0x8a, 0x1e, + 0x47, 0xd3, 0x68, 0xfc, 0x19, 0x8d, 0x36, 0xa2, + 0x84, 0x10, 0xab, 0x3f, 0xda, 0x4e, 0xf5, 0x61, + 0x38, 0xac, 0x17, 0x83, 0x66, 0xf2, 0x49, 0xdd, + 0x05, 0x91, 0x2a, 0xbe, 0x5b, 0xcf, 0x74, 0xe0, + 0xb9, 0x2d, 0x96, 0x02, 0xe7, 0x73, 0xc8, 0x5c, + 0x7a, 0xee, 0x55, 0xc1, 0x24, 0xb0, 0x0b, 0x9f, + 0xc6, 0x52, 0xe9, 0x7d, 0x98, 0x0c, 0xb7, 0x23, + 0xf1, 0x65, 0xde, 0x4a, 0xaf, 0x3b, 0x80, 0x14, + 0x4d, 0xd9, 0x62, 0xf6, 0x13, 0x87, 0x3c, 0xa8, + 0x8e, 0x1a, 0xa1, 0x35, 0xd0, 0x44, 0xff, 0x6b, + 0x32, 0xa6, 0x1d, 0x89, 0x6c, 0xf8, 0x43, 0xd7, + 0x0f, 0x9b, 0x20, 0xb4, 0x51, 0xc5, 0x7e, 0xea, + 0xb3, 0x27, 0x9c, 0x08, 0xed, 0x79, 0xc2, 0x56, + 0x70, 0xe4, 0x5f, 0xcb, 0x2e, 0xba, 0x01, 0x95, + 0xcc, 0x58, 0xe3, 0x77, 0x92, 0x06, 0xbd, 0x29, + 0x0a, 0x9e, 0x25, 0xb1, 0x54, 0xc0, 0x7b, 0xef, + 0xb6, 0x22, 0x99, 0x0d, 0xe8, 0x7c, 0xc7, 0x53, + 0x75, 0xe1, 0x5a, 0xce, 0x2b, 0xbf, 0x04, 0x90, + 0xc9, 0x5d, 0xe6, 0x72, 0x97, 0x03, 0xb8, 0x2c, + 0xf4, 0x60, 0xdb, 0x4f, 0xaa, 0x3e, 0x85, 0x11, + 0x48, 0xdc, 0x67, 0xf3, 0x16, 0x82, 0x39, 0xad, + 0x8b, 0x1f, 0xa4, 0x30, 0xd5, 0x41, 0xfa, 0x6e, + 0x37, 0xa3, 0x18, 0x8c, 0x69, 0xfd, 0x46, 0xd2, + }, + { + 0x00, 0xe5, 0xcd, 0x28, 0x9d, 0x78, 0x50, 0xb5, + 0x3d, 0xd8, 0xf0, 0x15, 0xa0, 0x45, 0x6d, 0x88, + 0x7a, 0x9f, 0xb7, 0x52, 0xe7, 0x02, 0x2a, 0xcf, + 0x47, 0xa2, 0x8a, 0x6f, 0xda, 0x3f, 0x17, 0xf2, + 0xf4, 0x11, 0x39, 0xdc, 0x69, 0x8c, 0xa4, 0x41, + 0xc9, 0x2c, 0x04, 0xe1, 0x54, 0xb1, 0x99, 0x7c, + 0x8e, 0x6b, 0x43, 0xa6, 0x13, 0xf6, 0xde, 0x3b, + 0xb3, 0x56, 0x7e, 0x9b, 0x2e, 0xcb, 0xe3, 0x06, + 0xef, 0x0a, 0x22, 0xc7, 0x72, 0x97, 0xbf, 0x5a, + 0xd2, 0x37, 0x1f, 0xfa, 0x4f, 0xaa, 0x82, 0x67, + 0x95, 0x70, 0x58, 0xbd, 0x08, 0xed, 0xc5, 0x20, + 0xa8, 0x4d, 0x65, 0x80, 0x35, 0xd0, 0xf8, 0x1d, + 0x1b, 0xfe, 0xd6, 0x33, 0x86, 0x63, 0x4b, 0xae, + 0x26, 0xc3, 0xeb, 0x0e, 0xbb, 0x5e, 0x76, 0x93, + 0x61, 0x84, 0xac, 0x49, 0xfc, 0x19, 0x31, 0xd4, + 0x5c, 0xb9, 0x91, 0x74, 0xc1, 0x24, 0x0c, 0xe9, + 0xd9, 0x3c, 0x14, 0xf1, 0x44, 0xa1, 0x89, 0x6c, + 0xe4, 0x01, 0x29, 0xcc, 0x79, 0x9c, 0xb4, 0x51, + 0xa3, 0x46, 0x6e, 0x8b, 0x3e, 0xdb, 0xf3, 0x16, + 0x9e, 0x7b, 0x53, 0xb6, 0x03, 0xe6, 0xce, 0x2b, + 0x2d, 0xc8, 0xe0, 0x05, 0xb0, 0x55, 0x7d, 0x98, + 0x10, 0xf5, 0xdd, 0x38, 0x8d, 0x68, 0x40, 0xa5, + 0x57, 0xb2, 0x9a, 0x7f, 0xca, 0x2f, 0x07, 0xe2, + 0x6a, 0x8f, 0xa7, 0x42, 0xf7, 0x12, 0x3a, 0xdf, + 0x36, 0xd3, 0xfb, 0x1e, 0xab, 0x4e, 0x66, 0x83, + 0x0b, 0xee, 0xc6, 0x23, 0x96, 0x73, 0x5b, 0xbe, + 0x4c, 0xa9, 0x81, 0x64, 0xd1, 0x34, 0x1c, 0xf9, + 0x71, 0x94, 0xbc, 0x59, 0xec, 0x09, 0x21, 0xc4, + 0xc2, 0x27, 0x0f, 0xea, 0x5f, 0xba, 0x92, 0x77, + 0xff, 0x1a, 0x32, 0xd7, 0x62, 0x87, 0xaf, 0x4a, + 0xb8, 0x5d, 0x75, 0x90, 0x25, 0xc0, 0xe8, 0x0d, + 0x85, 0x60, 0x48, 0xad, 0x18, 0xfd, 0xd5, 0x30, + }, + { + 0x00, 0xb5, 0x6d, 0xd8, 0xda, 0x6f, 0xb7, 0x02, + 0xb3, 0x06, 0xde, 0x6b, 0x69, 0xdc, 0x04, 0xb1, + 0x61, 0xd4, 0x0c, 0xb9, 0xbb, 0x0e, 0xd6, 0x63, + 0xd2, 0x67, 0xbf, 0x0a, 0x08, 0xbd, 0x65, 0xd0, + 0xc2, 0x77, 0xaf, 0x1a, 0x18, 0xad, 0x75, 0xc0, + 0x71, 0xc4, 0x1c, 0xa9, 0xab, 0x1e, 0xc6, 0x73, + 0xa3, 0x16, 0xce, 0x7b, 0x79, 0xcc, 0x14, 0xa1, + 0x10, 0xa5, 0x7d, 0xc8, 0xca, 0x7f, 0xa7, 0x12, + 0x83, 0x36, 0xee, 0x5b, 0x59, 0xec, 0x34, 0x81, + 0x30, 0x85, 0x5d, 0xe8, 0xea, 0x5f, 0x87, 0x32, + 0xe2, 0x57, 0x8f, 0x3a, 0x38, 0x8d, 0x55, 0xe0, + 0x51, 0xe4, 0x3c, 0x89, 0x8b, 0x3e, 0xe6, 0x53, + 0x41, 0xf4, 0x2c, 0x99, 0x9b, 0x2e, 0xf6, 0x43, + 0xf2, 0x47, 0x9f, 0x2a, 0x28, 0x9d, 0x45, 0xf0, + 0x20, 0x95, 0x4d, 0xf8, 0xfa, 0x4f, 0x97, 0x22, + 0x93, 0x26, 0xfe, 0x4b, 0x49, 0xfc, 0x24, 0x91, + 0x01, 0xb4, 0x6c, 0xd9, 0xdb, 0x6e, 0xb6, 0x03, + 0xb2, 0x07, 0xdf, 0x6a, 0x68, 0xdd, 0x05, 0xb0, + 0x60, 0xd5, 0x0d, 0xb8, 0xba, 0x0f, 0xd7, 0x62, + 0xd3, 0x66, 0xbe, 0x0b, 0x09, 0xbc, 0x64, 0xd1, + 0xc3, 0x76, 0xae, 0x1b, 0x19, 0xac, 0x74, 0xc1, + 0x70, 0xc5, 0x1d, 0xa8, 0xaa, 0x1f, 0xc7, 0x72, + 0xa2, 0x17, 0xcf, 0x7a, 0x78, 0xcd, 0x15, 0xa0, + 0x11, 0xa4, 0x7c, 0xc9, 0xcb, 0x7e, 0xa6, 0x13, + 0x82, 0x37, 0xef, 0x5a, 0x58, 0xed, 0x35, 0x80, + 0x31, 0x84, 0x5c, 0xe9, 0xeb, 0x5e, 0x86, 0x33, + 0xe3, 0x56, 0x8e, 0x3b, 0x39, 0x8c, 0x54, 0xe1, + 0x50, 0xe5, 0x3d, 0x88, 0x8a, 0x3f, 0xe7, 0x52, + 0x40, 0xf5, 0x2d, 0x98, 0x9a, 0x2f, 0xf7, 0x42, + 0xf3, 0x46, 0x9e, 0x2b, 0x29, 0x9c, 0x44, 0xf1, + 0x21, 0x94, 0x4c, 0xf9, 0xfb, 0x4e, 0x96, 0x23, + 0x92, 0x27, 0xff, 0x4a, 0x48, 0xfd, 0x25, 0x90, + }, + { + 0x00, 0x02, 0x04, 0x06, 0x08, 0x0a, 0x0c, 0x0e, + 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, + 0x20, 0x22, 0x24, 0x26, 0x28, 0x2a, 0x2c, 0x2e, + 0x30, 0x32, 0x34, 0x36, 0x38, 0x3a, 0x3c, 0x3e, + 0x40, 0x42, 0x44, 0x46, 0x48, 0x4a, 0x4c, 0x4e, + 0x50, 0x52, 0x54, 0x56, 0x58, 0x5a, 0x5c, 0x5e, + 0x60, 0x62, 0x64, 0x66, 0x68, 0x6a, 0x6c, 0x6e, + 0x70, 0x72, 0x74, 0x76, 0x78, 0x7a, 0x7c, 0x7e, + 0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c, 0x8e, + 0x90, 0x92, 0x94, 0x96, 0x98, 0x9a, 0x9c, 0x9e, + 0xa0, 0xa2, 0xa4, 0xa6, 0xa8, 0xaa, 0xac, 0xae, + 0xb0, 0xb2, 0xb4, 0xb6, 0xb8, 0xba, 0xbc, 0xbe, + 0xc0, 0xc2, 0xc4, 0xc6, 0xc8, 0xca, 0xcc, 0xce, + 0xd0, 0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc, 0xde, + 0xe0, 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xee, + 0xf0, 0xf2, 0xf4, 0xf6, 0xf8, 0xfa, 0xfc, 0xfe, + 0x07, 0x05, 0x03, 0x01, 0x0f, 0x0d, 0x0b, 0x09, + 0x17, 0x15, 0x13, 0x11, 0x1f, 0x1d, 0x1b, 0x19, + 0x27, 0x25, 0x23, 0x21, 0x2f, 0x2d, 0x2b, 0x29, + 0x37, 0x35, 0x33, 0x31, 0x3f, 0x3d, 0x3b, 0x39, + 0x47, 0x45, 0x43, 0x41, 0x4f, 0x4d, 0x4b, 0x49, + 0x57, 0x55, 0x53, 0x51, 0x5f, 0x5d, 0x5b, 0x59, + 0x67, 0x65, 0x63, 0x61, 0x6f, 0x6d, 0x6b, 0x69, + 0x77, 0x75, 0x73, 0x71, 0x7f, 0x7d, 0x7b, 0x79, + 0x87, 0x85, 0x83, 0x81, 0x8f, 0x8d, 0x8b, 0x89, + 0x97, 0x95, 0x93, 0x91, 0x9f, 0x9d, 0x9b, 0x99, + 0xa7, 0xa5, 0xa3, 0xa1, 0xaf, 0xad, 0xab, 0xa9, + 0xb7, 0xb5, 0xb3, 0xb1, 0xbf, 0xbd, 0xbb, 0xb9, + 0xc7, 0xc5, 0xc3, 0xc1, 0xcf, 0xcd, 0xcb, 0xc9, + 0xd7, 0xd5, 0xd3, 0xd1, 0xdf, 0xdd, 0xdb, 0xd9, + 0xe7, 0xe5, 0xe3, 0xe1, 0xef, 0xed, 0xeb, 0xe9, + 0xf7, 0xf5, 0xf3, 0xf1, 0xff, 0xfd, 0xfb, 0xf9, + }, +}; diff --git a/ext/digest/crc8_1wire/crc8_1wire.c b/ext/digest/crc8_1wire/crc8_1wire.c index 51ed75a..66685ad 100644 --- a/ext/digest/crc8_1wire/crc8_1wire.c +++ b/ext/digest/crc8_1wire/crc8_1wire.c @@ -15,38 +15,39 @@ */ #include "crc8_1wire.h" - -/** - * Static table used for the table_driven implementation. - */ -static const crc8_t crc8_table[256] = { - 0x00, 0x5e, 0xbc, 0xe2, 0x61, 0x3f, 0xdd, 0x83, 0xc2, 0x9c, 0x7e, 0x20, 0xa3, 0xfd, 0x1f, 0x41, - 0x9d, 0xc3, 0x21, 0x7f, 0xfc, 0xa2, 0x40, 0x1e, 0x5f, 0x01, 0xe3, 0xbd, 0x3e, 0x60, 0x82, 0xdc, - 0x23, 0x7d, 0x9f, 0xc1, 0x42, 0x1c, 0xfe, 0xa0, 0xe1, 0xbf, 0x5d, 0x03, 0x80, 0xde, 0x3c, 0x62, - 0xbe, 0xe0, 0x02, 0x5c, 0xdf, 0x81, 0x63, 0x3d, 0x7c, 0x22, 0xc0, 0x9e, 0x1d, 0x43, 0xa1, 0xff, - 0x46, 0x18, 0xfa, 0xa4, 0x27, 0x79, 0x9b, 0xc5, 0x84, 0xda, 0x38, 0x66, 0xe5, 0xbb, 0x59, 0x07, - 0xdb, 0x85, 0x67, 0x39, 0xba, 0xe4, 0x06, 0x58, 0x19, 0x47, 0xa5, 0xfb, 0x78, 0x26, 0xc4, 0x9a, - 0x65, 0x3b, 0xd9, 0x87, 0x04, 0x5a, 0xb8, 0xe6, 0xa7, 0xf9, 0x1b, 0x45, 0xc6, 0x98, 0x7a, 0x24, - 0xf8, 0xa6, 0x44, 0x1a, 0x99, 0xc7, 0x25, 0x7b, 0x3a, 0x64, 0x86, 0xd8, 0x5b, 0x05, 0xe7, 0xb9, - 0x8c, 0xd2, 0x30, 0x6e, 0xed, 0xb3, 0x51, 0x0f, 0x4e, 0x10, 0xf2, 0xac, 0x2f, 0x71, 0x93, 0xcd, - 0x11, 0x4f, 0xad, 0xf3, 0x70, 0x2e, 0xcc, 0x92, 0xd3, 0x8d, 0x6f, 0x31, 0xb2, 0xec, 0x0e, 0x50, - 0xaf, 0xf1, 0x13, 0x4d, 0xce, 0x90, 0x72, 0x2c, 0x6d, 0x33, 0xd1, 0x8f, 0x0c, 0x52, 0xb0, 0xee, - 0x32, 0x6c, 0x8e, 0xd0, 0x53, 0x0d, 0xef, 0xb1, 0xf0, 0xae, 0x4c, 0x12, 0x91, 0xcf, 0x2d, 0x73, - 0xca, 0x94, 0x76, 0x28, 0xab, 0xf5, 0x17, 0x49, 0x08, 0x56, 0xb4, 0xea, 0x69, 0x37, 0xd5, 0x8b, - 0x57, 0x09, 0xeb, 0xb5, 0x36, 0x68, 0x8a, 0xd4, 0x95, 0xcb, 0x29, 0x77, 0xf4, 0xaa, 0x48, 0x16, - 0xe9, 0xb7, 0x55, 0x0b, 0x88, 0xd6, 0x34, 0x6a, 0x2b, 0x75, 0x97, 0xc9, 0x4a, 0x14, 0xf6, 0xa8, - 0x74, 0x2a, 0xc8, 0x96, 0x15, 0x4b, 0xa9, 0xf7, 0xb6, 0xe8, 0x0a, 0x54, 0xd7, 0x89, 0x6b, 0x35 -}; +#include "crc8_1wire_table.h" crc8_t crc8_1wire_update(crc8_t crc, const void *data, size_t data_len) { const unsigned char *d = (const unsigned char *)data; unsigned int tbl_idx; + for (; data_len >= SLICE_SIZE; data_len -= SLICE_SIZE) + { + crc = crc8_1wire_table[15][d[ 0] ^ crc] ^ + crc8_1wire_table[14][d[ 1] ] ^ + crc8_1wire_table[13][d[ 2] ] ^ + crc8_1wire_table[12][d[ 3] ] ^ + crc8_1wire_table[11][d[ 4] ] ^ + crc8_1wire_table[10][d[ 5] ] ^ + crc8_1wire_table[ 9][d[ 6] ] ^ + crc8_1wire_table[ 8][d[ 7] ] ^ + crc8_1wire_table[ 7][d[ 8] ] ^ + crc8_1wire_table[ 6][d[ 9] ] ^ + crc8_1wire_table[ 5][d[10] ] ^ + crc8_1wire_table[ 4][d[11] ] ^ + crc8_1wire_table[ 3][d[12] ] ^ + crc8_1wire_table[ 2][d[13] ] ^ + crc8_1wire_table[ 1][d[14] ] ^ + crc8_1wire_table[ 0][d[15] ]; + crc &= 0xff; + d += SLICE_SIZE; + } + while (data_len--) { - tbl_idx = crc ^ *d; - crc = (crc8_table[tbl_idx] ^ (crc >> 8)) & 0xff; + tbl_idx = (crc ^ *d) & 0xff; + crc = (crc8_1wire_table[0][tbl_idx]) & 0xff; d++; } diff --git a/ext/digest/crc8_1wire/crc8_1wire_table.h b/ext/digest/crc8_1wire/crc8_1wire_table.h new file mode 100644 index 0000000..0216705 --- /dev/null +++ b/ext/digest/crc8_1wire/crc8_1wire_table.h @@ -0,0 +1,558 @@ +/* + * bitwidth: 8 + * generator polynomial: 0x31 + * input bit direction: REFLECT + * slice bytes per iteration: 16 + * slide bits per table: 8 + * + * Generated by: gentable.rb of digest-crc + */ + +#define SLICE_SIZE 16 + +static const uint8_t crc8_1wire_table[SLICE_SIZE][256] = { + { + 0x00, 0x5e, 0xbc, 0xe2, 0x61, 0x3f, 0xdd, 0x83, + 0xc2, 0x9c, 0x7e, 0x20, 0xa3, 0xfd, 0x1f, 0x41, + 0x9d, 0xc3, 0x21, 0x7f, 0xfc, 0xa2, 0x40, 0x1e, + 0x5f, 0x01, 0xe3, 0xbd, 0x3e, 0x60, 0x82, 0xdc, + 0x23, 0x7d, 0x9f, 0xc1, 0x42, 0x1c, 0xfe, 0xa0, + 0xe1, 0xbf, 0x5d, 0x03, 0x80, 0xde, 0x3c, 0x62, + 0xbe, 0xe0, 0x02, 0x5c, 0xdf, 0x81, 0x63, 0x3d, + 0x7c, 0x22, 0xc0, 0x9e, 0x1d, 0x43, 0xa1, 0xff, + 0x46, 0x18, 0xfa, 0xa4, 0x27, 0x79, 0x9b, 0xc5, + 0x84, 0xda, 0x38, 0x66, 0xe5, 0xbb, 0x59, 0x07, + 0xdb, 0x85, 0x67, 0x39, 0xba, 0xe4, 0x06, 0x58, + 0x19, 0x47, 0xa5, 0xfb, 0x78, 0x26, 0xc4, 0x9a, + 0x65, 0x3b, 0xd9, 0x87, 0x04, 0x5a, 0xb8, 0xe6, + 0xa7, 0xf9, 0x1b, 0x45, 0xc6, 0x98, 0x7a, 0x24, + 0xf8, 0xa6, 0x44, 0x1a, 0x99, 0xc7, 0x25, 0x7b, + 0x3a, 0x64, 0x86, 0xd8, 0x5b, 0x05, 0xe7, 0xb9, + 0x8c, 0xd2, 0x30, 0x6e, 0xed, 0xb3, 0x51, 0x0f, + 0x4e, 0x10, 0xf2, 0xac, 0x2f, 0x71, 0x93, 0xcd, + 0x11, 0x4f, 0xad, 0xf3, 0x70, 0x2e, 0xcc, 0x92, + 0xd3, 0x8d, 0x6f, 0x31, 0xb2, 0xec, 0x0e, 0x50, + 0xaf, 0xf1, 0x13, 0x4d, 0xce, 0x90, 0x72, 0x2c, + 0x6d, 0x33, 0xd1, 0x8f, 0x0c, 0x52, 0xb0, 0xee, + 0x32, 0x6c, 0x8e, 0xd0, 0x53, 0x0d, 0xef, 0xb1, + 0xf0, 0xae, 0x4c, 0x12, 0x91, 0xcf, 0x2d, 0x73, + 0xca, 0x94, 0x76, 0x28, 0xab, 0xf5, 0x17, 0x49, + 0x08, 0x56, 0xb4, 0xea, 0x69, 0x37, 0xd5, 0x8b, + 0x57, 0x09, 0xeb, 0xb5, 0x36, 0x68, 0x8a, 0xd4, + 0x95, 0xcb, 0x29, 0x77, 0xf4, 0xaa, 0x48, 0x16, + 0xe9, 0xb7, 0x55, 0x0b, 0x88, 0xd6, 0x34, 0x6a, + 0x2b, 0x75, 0x97, 0xc9, 0x4a, 0x14, 0xf6, 0xa8, + 0x74, 0x2a, 0xc8, 0x96, 0x15, 0x4b, 0xa9, 0xf7, + 0xb6, 0xe8, 0x0a, 0x54, 0xd7, 0x89, 0x6b, 0x35, + }, + { + 0x00, 0xc4, 0x91, 0x55, 0x3b, 0xff, 0xaa, 0x6e, + 0x76, 0xb2, 0xe7, 0x23, 0x4d, 0x89, 0xdc, 0x18, + 0xec, 0x28, 0x7d, 0xb9, 0xd7, 0x13, 0x46, 0x82, + 0x9a, 0x5e, 0x0b, 0xcf, 0xa1, 0x65, 0x30, 0xf4, + 0xc1, 0x05, 0x50, 0x94, 0xfa, 0x3e, 0x6b, 0xaf, + 0xb7, 0x73, 0x26, 0xe2, 0x8c, 0x48, 0x1d, 0xd9, + 0x2d, 0xe9, 0xbc, 0x78, 0x16, 0xd2, 0x87, 0x43, + 0x5b, 0x9f, 0xca, 0x0e, 0x60, 0xa4, 0xf1, 0x35, + 0x9b, 0x5f, 0x0a, 0xce, 0xa0, 0x64, 0x31, 0xf5, + 0xed, 0x29, 0x7c, 0xb8, 0xd6, 0x12, 0x47, 0x83, + 0x77, 0xb3, 0xe6, 0x22, 0x4c, 0x88, 0xdd, 0x19, + 0x01, 0xc5, 0x90, 0x54, 0x3a, 0xfe, 0xab, 0x6f, + 0x5a, 0x9e, 0xcb, 0x0f, 0x61, 0xa5, 0xf0, 0x34, + 0x2c, 0xe8, 0xbd, 0x79, 0x17, 0xd3, 0x86, 0x42, + 0xb6, 0x72, 0x27, 0xe3, 0x8d, 0x49, 0x1c, 0xd8, + 0xc0, 0x04, 0x51, 0x95, 0xfb, 0x3f, 0x6a, 0xae, + 0x2f, 0xeb, 0xbe, 0x7a, 0x14, 0xd0, 0x85, 0x41, + 0x59, 0x9d, 0xc8, 0x0c, 0x62, 0xa6, 0xf3, 0x37, + 0xc3, 0x07, 0x52, 0x96, 0xf8, 0x3c, 0x69, 0xad, + 0xb5, 0x71, 0x24, 0xe0, 0x8e, 0x4a, 0x1f, 0xdb, + 0xee, 0x2a, 0x7f, 0xbb, 0xd5, 0x11, 0x44, 0x80, + 0x98, 0x5c, 0x09, 0xcd, 0xa3, 0x67, 0x32, 0xf6, + 0x02, 0xc6, 0x93, 0x57, 0x39, 0xfd, 0xa8, 0x6c, + 0x74, 0xb0, 0xe5, 0x21, 0x4f, 0x8b, 0xde, 0x1a, + 0xb4, 0x70, 0x25, 0xe1, 0x8f, 0x4b, 0x1e, 0xda, + 0xc2, 0x06, 0x53, 0x97, 0xf9, 0x3d, 0x68, 0xac, + 0x58, 0x9c, 0xc9, 0x0d, 0x63, 0xa7, 0xf2, 0x36, + 0x2e, 0xea, 0xbf, 0x7b, 0x15, 0xd1, 0x84, 0x40, + 0x75, 0xb1, 0xe4, 0x20, 0x4e, 0x8a, 0xdf, 0x1b, + 0x03, 0xc7, 0x92, 0x56, 0x38, 0xfc, 0xa9, 0x6d, + 0x99, 0x5d, 0x08, 0xcc, 0xa2, 0x66, 0x33, 0xf7, + 0xef, 0x2b, 0x7e, 0xba, 0xd4, 0x10, 0x45, 0x81, + }, + { + 0x00, 0xab, 0x4f, 0xe4, 0x9e, 0x35, 0xd1, 0x7a, + 0x25, 0x8e, 0x6a, 0xc1, 0xbb, 0x10, 0xf4, 0x5f, + 0x4a, 0xe1, 0x05, 0xae, 0xd4, 0x7f, 0x9b, 0x30, + 0x6f, 0xc4, 0x20, 0x8b, 0xf1, 0x5a, 0xbe, 0x15, + 0x94, 0x3f, 0xdb, 0x70, 0x0a, 0xa1, 0x45, 0xee, + 0xb1, 0x1a, 0xfe, 0x55, 0x2f, 0x84, 0x60, 0xcb, + 0xde, 0x75, 0x91, 0x3a, 0x40, 0xeb, 0x0f, 0xa4, + 0xfb, 0x50, 0xb4, 0x1f, 0x65, 0xce, 0x2a, 0x81, + 0x31, 0x9a, 0x7e, 0xd5, 0xaf, 0x04, 0xe0, 0x4b, + 0x14, 0xbf, 0x5b, 0xf0, 0x8a, 0x21, 0xc5, 0x6e, + 0x7b, 0xd0, 0x34, 0x9f, 0xe5, 0x4e, 0xaa, 0x01, + 0x5e, 0xf5, 0x11, 0xba, 0xc0, 0x6b, 0x8f, 0x24, + 0xa5, 0x0e, 0xea, 0x41, 0x3b, 0x90, 0x74, 0xdf, + 0x80, 0x2b, 0xcf, 0x64, 0x1e, 0xb5, 0x51, 0xfa, + 0xef, 0x44, 0xa0, 0x0b, 0x71, 0xda, 0x3e, 0x95, + 0xca, 0x61, 0x85, 0x2e, 0x54, 0xff, 0x1b, 0xb0, + 0x62, 0xc9, 0x2d, 0x86, 0xfc, 0x57, 0xb3, 0x18, + 0x47, 0xec, 0x08, 0xa3, 0xd9, 0x72, 0x96, 0x3d, + 0x28, 0x83, 0x67, 0xcc, 0xb6, 0x1d, 0xf9, 0x52, + 0x0d, 0xa6, 0x42, 0xe9, 0x93, 0x38, 0xdc, 0x77, + 0xf6, 0x5d, 0xb9, 0x12, 0x68, 0xc3, 0x27, 0x8c, + 0xd3, 0x78, 0x9c, 0x37, 0x4d, 0xe6, 0x02, 0xa9, + 0xbc, 0x17, 0xf3, 0x58, 0x22, 0x89, 0x6d, 0xc6, + 0x99, 0x32, 0xd6, 0x7d, 0x07, 0xac, 0x48, 0xe3, + 0x53, 0xf8, 0x1c, 0xb7, 0xcd, 0x66, 0x82, 0x29, + 0x76, 0xdd, 0x39, 0x92, 0xe8, 0x43, 0xa7, 0x0c, + 0x19, 0xb2, 0x56, 0xfd, 0x87, 0x2c, 0xc8, 0x63, + 0x3c, 0x97, 0x73, 0xd8, 0xa2, 0x09, 0xed, 0x46, + 0xc7, 0x6c, 0x88, 0x23, 0x59, 0xf2, 0x16, 0xbd, + 0xe2, 0x49, 0xad, 0x06, 0x7c, 0xd7, 0x33, 0x98, + 0x8d, 0x26, 0xc2, 0x69, 0x13, 0xb8, 0x5c, 0xf7, + 0xa8, 0x03, 0xe7, 0x4c, 0x36, 0x9d, 0x79, 0xd2, + }, + { + 0x00, 0x8f, 0x07, 0x88, 0x0e, 0x81, 0x09, 0x86, + 0x1c, 0x93, 0x1b, 0x94, 0x12, 0x9d, 0x15, 0x9a, + 0x38, 0xb7, 0x3f, 0xb0, 0x36, 0xb9, 0x31, 0xbe, + 0x24, 0xab, 0x23, 0xac, 0x2a, 0xa5, 0x2d, 0xa2, + 0x70, 0xff, 0x77, 0xf8, 0x7e, 0xf1, 0x79, 0xf6, + 0x6c, 0xe3, 0x6b, 0xe4, 0x62, 0xed, 0x65, 0xea, + 0x48, 0xc7, 0x4f, 0xc0, 0x46, 0xc9, 0x41, 0xce, + 0x54, 0xdb, 0x53, 0xdc, 0x5a, 0xd5, 0x5d, 0xd2, + 0xe0, 0x6f, 0xe7, 0x68, 0xee, 0x61, 0xe9, 0x66, + 0xfc, 0x73, 0xfb, 0x74, 0xf2, 0x7d, 0xf5, 0x7a, + 0xd8, 0x57, 0xdf, 0x50, 0xd6, 0x59, 0xd1, 0x5e, + 0xc4, 0x4b, 0xc3, 0x4c, 0xca, 0x45, 0xcd, 0x42, + 0x90, 0x1f, 0x97, 0x18, 0x9e, 0x11, 0x99, 0x16, + 0x8c, 0x03, 0x8b, 0x04, 0x82, 0x0d, 0x85, 0x0a, + 0xa8, 0x27, 0xaf, 0x20, 0xa6, 0x29, 0xa1, 0x2e, + 0xb4, 0x3b, 0xb3, 0x3c, 0xba, 0x35, 0xbd, 0x32, + 0xd9, 0x56, 0xde, 0x51, 0xd7, 0x58, 0xd0, 0x5f, + 0xc5, 0x4a, 0xc2, 0x4d, 0xcb, 0x44, 0xcc, 0x43, + 0xe1, 0x6e, 0xe6, 0x69, 0xef, 0x60, 0xe8, 0x67, + 0xfd, 0x72, 0xfa, 0x75, 0xf3, 0x7c, 0xf4, 0x7b, + 0xa9, 0x26, 0xae, 0x21, 0xa7, 0x28, 0xa0, 0x2f, + 0xb5, 0x3a, 0xb2, 0x3d, 0xbb, 0x34, 0xbc, 0x33, + 0x91, 0x1e, 0x96, 0x19, 0x9f, 0x10, 0x98, 0x17, + 0x8d, 0x02, 0x8a, 0x05, 0x83, 0x0c, 0x84, 0x0b, + 0x39, 0xb6, 0x3e, 0xb1, 0x37, 0xb8, 0x30, 0xbf, + 0x25, 0xaa, 0x22, 0xad, 0x2b, 0xa4, 0x2c, 0xa3, + 0x01, 0x8e, 0x06, 0x89, 0x0f, 0x80, 0x08, 0x87, + 0x1d, 0x92, 0x1a, 0x95, 0x13, 0x9c, 0x14, 0x9b, + 0x49, 0xc6, 0x4e, 0xc1, 0x47, 0xc8, 0x40, 0xcf, + 0x55, 0xda, 0x52, 0xdd, 0x5b, 0xd4, 0x5c, 0xd3, + 0x71, 0xfe, 0x76, 0xf9, 0x7f, 0xf0, 0x78, 0xf7, + 0x6d, 0xe2, 0x6a, 0xe5, 0x63, 0xec, 0x64, 0xeb, + }, + { + 0x00, 0xcd, 0x83, 0x4e, 0x1f, 0xd2, 0x9c, 0x51, + 0x3e, 0xf3, 0xbd, 0x70, 0x21, 0xec, 0xa2, 0x6f, + 0x7c, 0xb1, 0xff, 0x32, 0x63, 0xae, 0xe0, 0x2d, + 0x42, 0x8f, 0xc1, 0x0c, 0x5d, 0x90, 0xde, 0x13, + 0xf8, 0x35, 0x7b, 0xb6, 0xe7, 0x2a, 0x64, 0xa9, + 0xc6, 0x0b, 0x45, 0x88, 0xd9, 0x14, 0x5a, 0x97, + 0x84, 0x49, 0x07, 0xca, 0x9b, 0x56, 0x18, 0xd5, + 0xba, 0x77, 0x39, 0xf4, 0xa5, 0x68, 0x26, 0xeb, + 0xe9, 0x24, 0x6a, 0xa7, 0xf6, 0x3b, 0x75, 0xb8, + 0xd7, 0x1a, 0x54, 0x99, 0xc8, 0x05, 0x4b, 0x86, + 0x95, 0x58, 0x16, 0xdb, 0x8a, 0x47, 0x09, 0xc4, + 0xab, 0x66, 0x28, 0xe5, 0xb4, 0x79, 0x37, 0xfa, + 0x11, 0xdc, 0x92, 0x5f, 0x0e, 0xc3, 0x8d, 0x40, + 0x2f, 0xe2, 0xac, 0x61, 0x30, 0xfd, 0xb3, 0x7e, + 0x6d, 0xa0, 0xee, 0x23, 0x72, 0xbf, 0xf1, 0x3c, + 0x53, 0x9e, 0xd0, 0x1d, 0x4c, 0x81, 0xcf, 0x02, + 0xcb, 0x06, 0x48, 0x85, 0xd4, 0x19, 0x57, 0x9a, + 0xf5, 0x38, 0x76, 0xbb, 0xea, 0x27, 0x69, 0xa4, + 0xb7, 0x7a, 0x34, 0xf9, 0xa8, 0x65, 0x2b, 0xe6, + 0x89, 0x44, 0x0a, 0xc7, 0x96, 0x5b, 0x15, 0xd8, + 0x33, 0xfe, 0xb0, 0x7d, 0x2c, 0xe1, 0xaf, 0x62, + 0x0d, 0xc0, 0x8e, 0x43, 0x12, 0xdf, 0x91, 0x5c, + 0x4f, 0x82, 0xcc, 0x01, 0x50, 0x9d, 0xd3, 0x1e, + 0x71, 0xbc, 0xf2, 0x3f, 0x6e, 0xa3, 0xed, 0x20, + 0x22, 0xef, 0xa1, 0x6c, 0x3d, 0xf0, 0xbe, 0x73, + 0x1c, 0xd1, 0x9f, 0x52, 0x03, 0xce, 0x80, 0x4d, + 0x5e, 0x93, 0xdd, 0x10, 0x41, 0x8c, 0xc2, 0x0f, + 0x60, 0xad, 0xe3, 0x2e, 0x7f, 0xb2, 0xfc, 0x31, + 0xda, 0x17, 0x59, 0x94, 0xc5, 0x08, 0x46, 0x8b, + 0xe4, 0x29, 0x67, 0xaa, 0xfb, 0x36, 0x78, 0xb5, + 0xa6, 0x6b, 0x25, 0xe8, 0xb9, 0x74, 0x3a, 0xf7, + 0x98, 0x55, 0x1b, 0xd6, 0x87, 0x4a, 0x04, 0xc9, + }, + { + 0x00, 0x37, 0x6e, 0x59, 0xdc, 0xeb, 0xb2, 0x85, + 0xa1, 0x96, 0xcf, 0xf8, 0x7d, 0x4a, 0x13, 0x24, + 0x5b, 0x6c, 0x35, 0x02, 0x87, 0xb0, 0xe9, 0xde, + 0xfa, 0xcd, 0x94, 0xa3, 0x26, 0x11, 0x48, 0x7f, + 0xb6, 0x81, 0xd8, 0xef, 0x6a, 0x5d, 0x04, 0x33, + 0x17, 0x20, 0x79, 0x4e, 0xcb, 0xfc, 0xa5, 0x92, + 0xed, 0xda, 0x83, 0xb4, 0x31, 0x06, 0x5f, 0x68, + 0x4c, 0x7b, 0x22, 0x15, 0x90, 0xa7, 0xfe, 0xc9, + 0x75, 0x42, 0x1b, 0x2c, 0xa9, 0x9e, 0xc7, 0xf0, + 0xd4, 0xe3, 0xba, 0x8d, 0x08, 0x3f, 0x66, 0x51, + 0x2e, 0x19, 0x40, 0x77, 0xf2, 0xc5, 0x9c, 0xab, + 0x8f, 0xb8, 0xe1, 0xd6, 0x53, 0x64, 0x3d, 0x0a, + 0xc3, 0xf4, 0xad, 0x9a, 0x1f, 0x28, 0x71, 0x46, + 0x62, 0x55, 0x0c, 0x3b, 0xbe, 0x89, 0xd0, 0xe7, + 0x98, 0xaf, 0xf6, 0xc1, 0x44, 0x73, 0x2a, 0x1d, + 0x39, 0x0e, 0x57, 0x60, 0xe5, 0xd2, 0x8b, 0xbc, + 0xea, 0xdd, 0x84, 0xb3, 0x36, 0x01, 0x58, 0x6f, + 0x4b, 0x7c, 0x25, 0x12, 0x97, 0xa0, 0xf9, 0xce, + 0xb1, 0x86, 0xdf, 0xe8, 0x6d, 0x5a, 0x03, 0x34, + 0x10, 0x27, 0x7e, 0x49, 0xcc, 0xfb, 0xa2, 0x95, + 0x5c, 0x6b, 0x32, 0x05, 0x80, 0xb7, 0xee, 0xd9, + 0xfd, 0xca, 0x93, 0xa4, 0x21, 0x16, 0x4f, 0x78, + 0x07, 0x30, 0x69, 0x5e, 0xdb, 0xec, 0xb5, 0x82, + 0xa6, 0x91, 0xc8, 0xff, 0x7a, 0x4d, 0x14, 0x23, + 0x9f, 0xa8, 0xf1, 0xc6, 0x43, 0x74, 0x2d, 0x1a, + 0x3e, 0x09, 0x50, 0x67, 0xe2, 0xd5, 0x8c, 0xbb, + 0xc4, 0xf3, 0xaa, 0x9d, 0x18, 0x2f, 0x76, 0x41, + 0x65, 0x52, 0x0b, 0x3c, 0xb9, 0x8e, 0xd7, 0xe0, + 0x29, 0x1e, 0x47, 0x70, 0xf5, 0xc2, 0x9b, 0xac, + 0x88, 0xbf, 0xe6, 0xd1, 0x54, 0x63, 0x3a, 0x0d, + 0x72, 0x45, 0x1c, 0x2b, 0xae, 0x99, 0xc0, 0xf7, + 0xd3, 0xe4, 0xbd, 0x8a, 0x0f, 0x38, 0x61, 0x56, + }, + { + 0x00, 0x3d, 0x7a, 0x47, 0xf4, 0xc9, 0x8e, 0xb3, + 0xf1, 0xcc, 0x8b, 0xb6, 0x05, 0x38, 0x7f, 0x42, + 0xfb, 0xc6, 0x81, 0xbc, 0x0f, 0x32, 0x75, 0x48, + 0x0a, 0x37, 0x70, 0x4d, 0xfe, 0xc3, 0x84, 0xb9, + 0xef, 0xd2, 0x95, 0xa8, 0x1b, 0x26, 0x61, 0x5c, + 0x1e, 0x23, 0x64, 0x59, 0xea, 0xd7, 0x90, 0xad, + 0x14, 0x29, 0x6e, 0x53, 0xe0, 0xdd, 0x9a, 0xa7, + 0xe5, 0xd8, 0x9f, 0xa2, 0x11, 0x2c, 0x6b, 0x56, + 0xc7, 0xfa, 0xbd, 0x80, 0x33, 0x0e, 0x49, 0x74, + 0x36, 0x0b, 0x4c, 0x71, 0xc2, 0xff, 0xb8, 0x85, + 0x3c, 0x01, 0x46, 0x7b, 0xc8, 0xf5, 0xb2, 0x8f, + 0xcd, 0xf0, 0xb7, 0x8a, 0x39, 0x04, 0x43, 0x7e, + 0x28, 0x15, 0x52, 0x6f, 0xdc, 0xe1, 0xa6, 0x9b, + 0xd9, 0xe4, 0xa3, 0x9e, 0x2d, 0x10, 0x57, 0x6a, + 0xd3, 0xee, 0xa9, 0x94, 0x27, 0x1a, 0x5d, 0x60, + 0x22, 0x1f, 0x58, 0x65, 0xd6, 0xeb, 0xac, 0x91, + 0x97, 0xaa, 0xed, 0xd0, 0x63, 0x5e, 0x19, 0x24, + 0x66, 0x5b, 0x1c, 0x21, 0x92, 0xaf, 0xe8, 0xd5, + 0x6c, 0x51, 0x16, 0x2b, 0x98, 0xa5, 0xe2, 0xdf, + 0x9d, 0xa0, 0xe7, 0xda, 0x69, 0x54, 0x13, 0x2e, + 0x78, 0x45, 0x02, 0x3f, 0x8c, 0xb1, 0xf6, 0xcb, + 0x89, 0xb4, 0xf3, 0xce, 0x7d, 0x40, 0x07, 0x3a, + 0x83, 0xbe, 0xf9, 0xc4, 0x77, 0x4a, 0x0d, 0x30, + 0x72, 0x4f, 0x08, 0x35, 0x86, 0xbb, 0xfc, 0xc1, + 0x50, 0x6d, 0x2a, 0x17, 0xa4, 0x99, 0xde, 0xe3, + 0xa1, 0x9c, 0xdb, 0xe6, 0x55, 0x68, 0x2f, 0x12, + 0xab, 0x96, 0xd1, 0xec, 0x5f, 0x62, 0x25, 0x18, + 0x5a, 0x67, 0x20, 0x1d, 0xae, 0x93, 0xd4, 0xe9, + 0xbf, 0x82, 0xc5, 0xf8, 0x4b, 0x76, 0x31, 0x0c, + 0x4e, 0x73, 0x34, 0x09, 0xba, 0x87, 0xc0, 0xfd, + 0x44, 0x79, 0x3e, 0x03, 0xb0, 0x8d, 0xca, 0xf7, + 0xb5, 0x88, 0xcf, 0xf2, 0x41, 0x7c, 0x3b, 0x06, + }, + { + 0x00, 0x43, 0x86, 0xc5, 0x15, 0x56, 0x93, 0xd0, + 0x2a, 0x69, 0xac, 0xef, 0x3f, 0x7c, 0xb9, 0xfa, + 0x54, 0x17, 0xd2, 0x91, 0x41, 0x02, 0xc7, 0x84, + 0x7e, 0x3d, 0xf8, 0xbb, 0x6b, 0x28, 0xed, 0xae, + 0xa8, 0xeb, 0x2e, 0x6d, 0xbd, 0xfe, 0x3b, 0x78, + 0x82, 0xc1, 0x04, 0x47, 0x97, 0xd4, 0x11, 0x52, + 0xfc, 0xbf, 0x7a, 0x39, 0xe9, 0xaa, 0x6f, 0x2c, + 0xd6, 0x95, 0x50, 0x13, 0xc3, 0x80, 0x45, 0x06, + 0x49, 0x0a, 0xcf, 0x8c, 0x5c, 0x1f, 0xda, 0x99, + 0x63, 0x20, 0xe5, 0xa6, 0x76, 0x35, 0xf0, 0xb3, + 0x1d, 0x5e, 0x9b, 0xd8, 0x08, 0x4b, 0x8e, 0xcd, + 0x37, 0x74, 0xb1, 0xf2, 0x22, 0x61, 0xa4, 0xe7, + 0xe1, 0xa2, 0x67, 0x24, 0xf4, 0xb7, 0x72, 0x31, + 0xcb, 0x88, 0x4d, 0x0e, 0xde, 0x9d, 0x58, 0x1b, + 0xb5, 0xf6, 0x33, 0x70, 0xa0, 0xe3, 0x26, 0x65, + 0x9f, 0xdc, 0x19, 0x5a, 0x8a, 0xc9, 0x0c, 0x4f, + 0x92, 0xd1, 0x14, 0x57, 0x87, 0xc4, 0x01, 0x42, + 0xb8, 0xfb, 0x3e, 0x7d, 0xad, 0xee, 0x2b, 0x68, + 0xc6, 0x85, 0x40, 0x03, 0xd3, 0x90, 0x55, 0x16, + 0xec, 0xaf, 0x6a, 0x29, 0xf9, 0xba, 0x7f, 0x3c, + 0x3a, 0x79, 0xbc, 0xff, 0x2f, 0x6c, 0xa9, 0xea, + 0x10, 0x53, 0x96, 0xd5, 0x05, 0x46, 0x83, 0xc0, + 0x6e, 0x2d, 0xe8, 0xab, 0x7b, 0x38, 0xfd, 0xbe, + 0x44, 0x07, 0xc2, 0x81, 0x51, 0x12, 0xd7, 0x94, + 0xdb, 0x98, 0x5d, 0x1e, 0xce, 0x8d, 0x48, 0x0b, + 0xf1, 0xb2, 0x77, 0x34, 0xe4, 0xa7, 0x62, 0x21, + 0x8f, 0xcc, 0x09, 0x4a, 0x9a, 0xd9, 0x1c, 0x5f, + 0xa5, 0xe6, 0x23, 0x60, 0xb0, 0xf3, 0x36, 0x75, + 0x73, 0x30, 0xf5, 0xb6, 0x66, 0x25, 0xe0, 0xa3, + 0x59, 0x1a, 0xdf, 0x9c, 0x4c, 0x0f, 0xca, 0x89, + 0x27, 0x64, 0xa1, 0xe2, 0x32, 0x71, 0xb4, 0xf7, + 0x0d, 0x4e, 0x8b, 0xc8, 0x18, 0x5b, 0x9e, 0xdd, + }, + { + 0x00, 0xa4, 0x51, 0xf5, 0xa2, 0x06, 0xf3, 0x57, + 0x5d, 0xf9, 0x0c, 0xa8, 0xff, 0x5b, 0xae, 0x0a, + 0xba, 0x1e, 0xeb, 0x4f, 0x18, 0xbc, 0x49, 0xed, + 0xe7, 0x43, 0xb6, 0x12, 0x45, 0xe1, 0x14, 0xb0, + 0x6d, 0xc9, 0x3c, 0x98, 0xcf, 0x6b, 0x9e, 0x3a, + 0x30, 0x94, 0x61, 0xc5, 0x92, 0x36, 0xc3, 0x67, + 0xd7, 0x73, 0x86, 0x22, 0x75, 0xd1, 0x24, 0x80, + 0x8a, 0x2e, 0xdb, 0x7f, 0x28, 0x8c, 0x79, 0xdd, + 0xda, 0x7e, 0x8b, 0x2f, 0x78, 0xdc, 0x29, 0x8d, + 0x87, 0x23, 0xd6, 0x72, 0x25, 0x81, 0x74, 0xd0, + 0x60, 0xc4, 0x31, 0x95, 0xc2, 0x66, 0x93, 0x37, + 0x3d, 0x99, 0x6c, 0xc8, 0x9f, 0x3b, 0xce, 0x6a, + 0xb7, 0x13, 0xe6, 0x42, 0x15, 0xb1, 0x44, 0xe0, + 0xea, 0x4e, 0xbb, 0x1f, 0x48, 0xec, 0x19, 0xbd, + 0x0d, 0xa9, 0x5c, 0xf8, 0xaf, 0x0b, 0xfe, 0x5a, + 0x50, 0xf4, 0x01, 0xa5, 0xf2, 0x56, 0xa3, 0x07, + 0xad, 0x09, 0xfc, 0x58, 0x0f, 0xab, 0x5e, 0xfa, + 0xf0, 0x54, 0xa1, 0x05, 0x52, 0xf6, 0x03, 0xa7, + 0x17, 0xb3, 0x46, 0xe2, 0xb5, 0x11, 0xe4, 0x40, + 0x4a, 0xee, 0x1b, 0xbf, 0xe8, 0x4c, 0xb9, 0x1d, + 0xc0, 0x64, 0x91, 0x35, 0x62, 0xc6, 0x33, 0x97, + 0x9d, 0x39, 0xcc, 0x68, 0x3f, 0x9b, 0x6e, 0xca, + 0x7a, 0xde, 0x2b, 0x8f, 0xd8, 0x7c, 0x89, 0x2d, + 0x27, 0x83, 0x76, 0xd2, 0x85, 0x21, 0xd4, 0x70, + 0x77, 0xd3, 0x26, 0x82, 0xd5, 0x71, 0x84, 0x20, + 0x2a, 0x8e, 0x7b, 0xdf, 0x88, 0x2c, 0xd9, 0x7d, + 0xcd, 0x69, 0x9c, 0x38, 0x6f, 0xcb, 0x3e, 0x9a, + 0x90, 0x34, 0xc1, 0x65, 0x32, 0x96, 0x63, 0xc7, + 0x1a, 0xbe, 0x4b, 0xef, 0xb8, 0x1c, 0xe9, 0x4d, + 0x47, 0xe3, 0x16, 0xb2, 0xe5, 0x41, 0xb4, 0x10, + 0xa0, 0x04, 0xf1, 0x55, 0x02, 0xa6, 0x53, 0xf7, + 0xfd, 0x59, 0xac, 0x08, 0x5f, 0xfb, 0x0e, 0xaa, + }, + { + 0x00, 0xce, 0x85, 0x4b, 0x13, 0xdd, 0x96, 0x58, + 0x26, 0xe8, 0xa3, 0x6d, 0x35, 0xfb, 0xb0, 0x7e, + 0x4c, 0x82, 0xc9, 0x07, 0x5f, 0x91, 0xda, 0x14, + 0x6a, 0xa4, 0xef, 0x21, 0x79, 0xb7, 0xfc, 0x32, + 0x98, 0x56, 0x1d, 0xd3, 0x8b, 0x45, 0x0e, 0xc0, + 0xbe, 0x70, 0x3b, 0xf5, 0xad, 0x63, 0x28, 0xe6, + 0xd4, 0x1a, 0x51, 0x9f, 0xc7, 0x09, 0x42, 0x8c, + 0xf2, 0x3c, 0x77, 0xb9, 0xe1, 0x2f, 0x64, 0xaa, + 0x29, 0xe7, 0xac, 0x62, 0x3a, 0xf4, 0xbf, 0x71, + 0x0f, 0xc1, 0x8a, 0x44, 0x1c, 0xd2, 0x99, 0x57, + 0x65, 0xab, 0xe0, 0x2e, 0x76, 0xb8, 0xf3, 0x3d, + 0x43, 0x8d, 0xc6, 0x08, 0x50, 0x9e, 0xd5, 0x1b, + 0xb1, 0x7f, 0x34, 0xfa, 0xa2, 0x6c, 0x27, 0xe9, + 0x97, 0x59, 0x12, 0xdc, 0x84, 0x4a, 0x01, 0xcf, + 0xfd, 0x33, 0x78, 0xb6, 0xee, 0x20, 0x6b, 0xa5, + 0xdb, 0x15, 0x5e, 0x90, 0xc8, 0x06, 0x4d, 0x83, + 0x52, 0x9c, 0xd7, 0x19, 0x41, 0x8f, 0xc4, 0x0a, + 0x74, 0xba, 0xf1, 0x3f, 0x67, 0xa9, 0xe2, 0x2c, + 0x1e, 0xd0, 0x9b, 0x55, 0x0d, 0xc3, 0x88, 0x46, + 0x38, 0xf6, 0xbd, 0x73, 0x2b, 0xe5, 0xae, 0x60, + 0xca, 0x04, 0x4f, 0x81, 0xd9, 0x17, 0x5c, 0x92, + 0xec, 0x22, 0x69, 0xa7, 0xff, 0x31, 0x7a, 0xb4, + 0x86, 0x48, 0x03, 0xcd, 0x95, 0x5b, 0x10, 0xde, + 0xa0, 0x6e, 0x25, 0xeb, 0xb3, 0x7d, 0x36, 0xf8, + 0x7b, 0xb5, 0xfe, 0x30, 0x68, 0xa6, 0xed, 0x23, + 0x5d, 0x93, 0xd8, 0x16, 0x4e, 0x80, 0xcb, 0x05, + 0x37, 0xf9, 0xb2, 0x7c, 0x24, 0xea, 0xa1, 0x6f, + 0x11, 0xdf, 0x94, 0x5a, 0x02, 0xcc, 0x87, 0x49, + 0xe3, 0x2d, 0x66, 0xa8, 0xf0, 0x3e, 0x75, 0xbb, + 0xc5, 0x0b, 0x40, 0x8e, 0xd6, 0x18, 0x53, 0x9d, + 0xaf, 0x61, 0x2a, 0xe4, 0xbc, 0x72, 0x39, 0xf7, + 0x89, 0x47, 0x0c, 0xc2, 0x9a, 0x54, 0x1f, 0xd1, + }, + { + 0x00, 0xd5, 0xb3, 0x66, 0x7f, 0xaa, 0xcc, 0x19, + 0xfe, 0x2b, 0x4d, 0x98, 0x81, 0x54, 0x32, 0xe7, + 0xe5, 0x30, 0x56, 0x83, 0x9a, 0x4f, 0x29, 0xfc, + 0x1b, 0xce, 0xa8, 0x7d, 0x64, 0xb1, 0xd7, 0x02, + 0xd3, 0x06, 0x60, 0xb5, 0xac, 0x79, 0x1f, 0xca, + 0x2d, 0xf8, 0x9e, 0x4b, 0x52, 0x87, 0xe1, 0x34, + 0x36, 0xe3, 0x85, 0x50, 0x49, 0x9c, 0xfa, 0x2f, + 0xc8, 0x1d, 0x7b, 0xae, 0xb7, 0x62, 0x04, 0xd1, + 0xbf, 0x6a, 0x0c, 0xd9, 0xc0, 0x15, 0x73, 0xa6, + 0x41, 0x94, 0xf2, 0x27, 0x3e, 0xeb, 0x8d, 0x58, + 0x5a, 0x8f, 0xe9, 0x3c, 0x25, 0xf0, 0x96, 0x43, + 0xa4, 0x71, 0x17, 0xc2, 0xdb, 0x0e, 0x68, 0xbd, + 0x6c, 0xb9, 0xdf, 0x0a, 0x13, 0xc6, 0xa0, 0x75, + 0x92, 0x47, 0x21, 0xf4, 0xed, 0x38, 0x5e, 0x8b, + 0x89, 0x5c, 0x3a, 0xef, 0xf6, 0x23, 0x45, 0x90, + 0x77, 0xa2, 0xc4, 0x11, 0x08, 0xdd, 0xbb, 0x6e, + 0x67, 0xb2, 0xd4, 0x01, 0x18, 0xcd, 0xab, 0x7e, + 0x99, 0x4c, 0x2a, 0xff, 0xe6, 0x33, 0x55, 0x80, + 0x82, 0x57, 0x31, 0xe4, 0xfd, 0x28, 0x4e, 0x9b, + 0x7c, 0xa9, 0xcf, 0x1a, 0x03, 0xd6, 0xb0, 0x65, + 0xb4, 0x61, 0x07, 0xd2, 0xcb, 0x1e, 0x78, 0xad, + 0x4a, 0x9f, 0xf9, 0x2c, 0x35, 0xe0, 0x86, 0x53, + 0x51, 0x84, 0xe2, 0x37, 0x2e, 0xfb, 0x9d, 0x48, + 0xaf, 0x7a, 0x1c, 0xc9, 0xd0, 0x05, 0x63, 0xb6, + 0xd8, 0x0d, 0x6b, 0xbe, 0xa7, 0x72, 0x14, 0xc1, + 0x26, 0xf3, 0x95, 0x40, 0x59, 0x8c, 0xea, 0x3f, + 0x3d, 0xe8, 0x8e, 0x5b, 0x42, 0x97, 0xf1, 0x24, + 0xc3, 0x16, 0x70, 0xa5, 0xbc, 0x69, 0x0f, 0xda, + 0x0b, 0xde, 0xb8, 0x6d, 0x74, 0xa1, 0xc7, 0x12, + 0xf5, 0x20, 0x46, 0x93, 0x8a, 0x5f, 0x39, 0xec, + 0xee, 0x3b, 0x5d, 0x88, 0x91, 0x44, 0x22, 0xf7, + 0x10, 0xc5, 0xa3, 0x76, 0x6f, 0xba, 0xdc, 0x09, + }, + { + 0x00, 0x68, 0xd0, 0xb8, 0xb9, 0xd1, 0x69, 0x01, + 0x6b, 0x03, 0xbb, 0xd3, 0xd2, 0xba, 0x02, 0x6a, + 0xd6, 0xbe, 0x06, 0x6e, 0x6f, 0x07, 0xbf, 0xd7, + 0xbd, 0xd5, 0x6d, 0x05, 0x04, 0x6c, 0xd4, 0xbc, + 0xb5, 0xdd, 0x65, 0x0d, 0x0c, 0x64, 0xdc, 0xb4, + 0xde, 0xb6, 0x0e, 0x66, 0x67, 0x0f, 0xb7, 0xdf, + 0x63, 0x0b, 0xb3, 0xdb, 0xda, 0xb2, 0x0a, 0x62, + 0x08, 0x60, 0xd8, 0xb0, 0xb1, 0xd9, 0x61, 0x09, + 0x73, 0x1b, 0xa3, 0xcb, 0xca, 0xa2, 0x1a, 0x72, + 0x18, 0x70, 0xc8, 0xa0, 0xa1, 0xc9, 0x71, 0x19, + 0xa5, 0xcd, 0x75, 0x1d, 0x1c, 0x74, 0xcc, 0xa4, + 0xce, 0xa6, 0x1e, 0x76, 0x77, 0x1f, 0xa7, 0xcf, + 0xc6, 0xae, 0x16, 0x7e, 0x7f, 0x17, 0xaf, 0xc7, + 0xad, 0xc5, 0x7d, 0x15, 0x14, 0x7c, 0xc4, 0xac, + 0x10, 0x78, 0xc0, 0xa8, 0xa9, 0xc1, 0x79, 0x11, + 0x7b, 0x13, 0xab, 0xc3, 0xc2, 0xaa, 0x12, 0x7a, + 0xe6, 0x8e, 0x36, 0x5e, 0x5f, 0x37, 0x8f, 0xe7, + 0x8d, 0xe5, 0x5d, 0x35, 0x34, 0x5c, 0xe4, 0x8c, + 0x30, 0x58, 0xe0, 0x88, 0x89, 0xe1, 0x59, 0x31, + 0x5b, 0x33, 0x8b, 0xe3, 0xe2, 0x8a, 0x32, 0x5a, + 0x53, 0x3b, 0x83, 0xeb, 0xea, 0x82, 0x3a, 0x52, + 0x38, 0x50, 0xe8, 0x80, 0x81, 0xe9, 0x51, 0x39, + 0x85, 0xed, 0x55, 0x3d, 0x3c, 0x54, 0xec, 0x84, + 0xee, 0x86, 0x3e, 0x56, 0x57, 0x3f, 0x87, 0xef, + 0x95, 0xfd, 0x45, 0x2d, 0x2c, 0x44, 0xfc, 0x94, + 0xfe, 0x96, 0x2e, 0x46, 0x47, 0x2f, 0x97, 0xff, + 0x43, 0x2b, 0x93, 0xfb, 0xfa, 0x92, 0x2a, 0x42, + 0x28, 0x40, 0xf8, 0x90, 0x91, 0xf9, 0x41, 0x29, + 0x20, 0x48, 0xf0, 0x98, 0x99, 0xf1, 0x49, 0x21, + 0x4b, 0x23, 0x9b, 0xf3, 0xf2, 0x9a, 0x22, 0x4a, + 0xf6, 0x9e, 0x26, 0x4e, 0x4f, 0x27, 0x9f, 0xf7, + 0x9d, 0xf5, 0x4d, 0x25, 0x24, 0x4c, 0xf4, 0x9c, + }, + { + 0x00, 0xa7, 0x57, 0xf0, 0xae, 0x09, 0xf9, 0x5e, + 0x45, 0xe2, 0x12, 0xb5, 0xeb, 0x4c, 0xbc, 0x1b, + 0x8a, 0x2d, 0xdd, 0x7a, 0x24, 0x83, 0x73, 0xd4, + 0xcf, 0x68, 0x98, 0x3f, 0x61, 0xc6, 0x36, 0x91, + 0x0d, 0xaa, 0x5a, 0xfd, 0xa3, 0x04, 0xf4, 0x53, + 0x48, 0xef, 0x1f, 0xb8, 0xe6, 0x41, 0xb1, 0x16, + 0x87, 0x20, 0xd0, 0x77, 0x29, 0x8e, 0x7e, 0xd9, + 0xc2, 0x65, 0x95, 0x32, 0x6c, 0xcb, 0x3b, 0x9c, + 0x1a, 0xbd, 0x4d, 0xea, 0xb4, 0x13, 0xe3, 0x44, + 0x5f, 0xf8, 0x08, 0xaf, 0xf1, 0x56, 0xa6, 0x01, + 0x90, 0x37, 0xc7, 0x60, 0x3e, 0x99, 0x69, 0xce, + 0xd5, 0x72, 0x82, 0x25, 0x7b, 0xdc, 0x2c, 0x8b, + 0x17, 0xb0, 0x40, 0xe7, 0xb9, 0x1e, 0xee, 0x49, + 0x52, 0xf5, 0x05, 0xa2, 0xfc, 0x5b, 0xab, 0x0c, + 0x9d, 0x3a, 0xca, 0x6d, 0x33, 0x94, 0x64, 0xc3, + 0xd8, 0x7f, 0x8f, 0x28, 0x76, 0xd1, 0x21, 0x86, + 0x34, 0x93, 0x63, 0xc4, 0x9a, 0x3d, 0xcd, 0x6a, + 0x71, 0xd6, 0x26, 0x81, 0xdf, 0x78, 0x88, 0x2f, + 0xbe, 0x19, 0xe9, 0x4e, 0x10, 0xb7, 0x47, 0xe0, + 0xfb, 0x5c, 0xac, 0x0b, 0x55, 0xf2, 0x02, 0xa5, + 0x39, 0x9e, 0x6e, 0xc9, 0x97, 0x30, 0xc0, 0x67, + 0x7c, 0xdb, 0x2b, 0x8c, 0xd2, 0x75, 0x85, 0x22, + 0xb3, 0x14, 0xe4, 0x43, 0x1d, 0xba, 0x4a, 0xed, + 0xf6, 0x51, 0xa1, 0x06, 0x58, 0xff, 0x0f, 0xa8, + 0x2e, 0x89, 0x79, 0xde, 0x80, 0x27, 0xd7, 0x70, + 0x6b, 0xcc, 0x3c, 0x9b, 0xc5, 0x62, 0x92, 0x35, + 0xa4, 0x03, 0xf3, 0x54, 0x0a, 0xad, 0x5d, 0xfa, + 0xe1, 0x46, 0xb6, 0x11, 0x4f, 0xe8, 0x18, 0xbf, + 0x23, 0x84, 0x74, 0xd3, 0x8d, 0x2a, 0xda, 0x7d, + 0x66, 0xc1, 0x31, 0x96, 0xc8, 0x6f, 0x9f, 0x38, + 0xa9, 0x0e, 0xfe, 0x59, 0x07, 0xa0, 0x50, 0xf7, + 0xec, 0x4b, 0xbb, 0x1c, 0x42, 0xe5, 0x15, 0xb2, + }, + { + 0x00, 0x2c, 0x58, 0x74, 0xb0, 0x9c, 0xe8, 0xc4, + 0x79, 0x55, 0x21, 0x0d, 0xc9, 0xe5, 0x91, 0xbd, + 0xf2, 0xde, 0xaa, 0x86, 0x42, 0x6e, 0x1a, 0x36, + 0x8b, 0xa7, 0xd3, 0xff, 0x3b, 0x17, 0x63, 0x4f, + 0xfd, 0xd1, 0xa5, 0x89, 0x4d, 0x61, 0x15, 0x39, + 0x84, 0xa8, 0xdc, 0xf0, 0x34, 0x18, 0x6c, 0x40, + 0x0f, 0x23, 0x57, 0x7b, 0xbf, 0x93, 0xe7, 0xcb, + 0x76, 0x5a, 0x2e, 0x02, 0xc6, 0xea, 0x9e, 0xb2, + 0xe3, 0xcf, 0xbb, 0x97, 0x53, 0x7f, 0x0b, 0x27, + 0x9a, 0xb6, 0xc2, 0xee, 0x2a, 0x06, 0x72, 0x5e, + 0x11, 0x3d, 0x49, 0x65, 0xa1, 0x8d, 0xf9, 0xd5, + 0x68, 0x44, 0x30, 0x1c, 0xd8, 0xf4, 0x80, 0xac, + 0x1e, 0x32, 0x46, 0x6a, 0xae, 0x82, 0xf6, 0xda, + 0x67, 0x4b, 0x3f, 0x13, 0xd7, 0xfb, 0x8f, 0xa3, + 0xec, 0xc0, 0xb4, 0x98, 0x5c, 0x70, 0x04, 0x28, + 0x95, 0xb9, 0xcd, 0xe1, 0x25, 0x09, 0x7d, 0x51, + 0xdf, 0xf3, 0x87, 0xab, 0x6f, 0x43, 0x37, 0x1b, + 0xa6, 0x8a, 0xfe, 0xd2, 0x16, 0x3a, 0x4e, 0x62, + 0x2d, 0x01, 0x75, 0x59, 0x9d, 0xb1, 0xc5, 0xe9, + 0x54, 0x78, 0x0c, 0x20, 0xe4, 0xc8, 0xbc, 0x90, + 0x22, 0x0e, 0x7a, 0x56, 0x92, 0xbe, 0xca, 0xe6, + 0x5b, 0x77, 0x03, 0x2f, 0xeb, 0xc7, 0xb3, 0x9f, + 0xd0, 0xfc, 0x88, 0xa4, 0x60, 0x4c, 0x38, 0x14, + 0xa9, 0x85, 0xf1, 0xdd, 0x19, 0x35, 0x41, 0x6d, + 0x3c, 0x10, 0x64, 0x48, 0x8c, 0xa0, 0xd4, 0xf8, + 0x45, 0x69, 0x1d, 0x31, 0xf5, 0xd9, 0xad, 0x81, + 0xce, 0xe2, 0x96, 0xba, 0x7e, 0x52, 0x26, 0x0a, + 0xb7, 0x9b, 0xef, 0xc3, 0x07, 0x2b, 0x5f, 0x73, + 0xc1, 0xed, 0x99, 0xb5, 0x71, 0x5d, 0x29, 0x05, + 0xb8, 0x94, 0xe0, 0xcc, 0x08, 0x24, 0x50, 0x7c, + 0x33, 0x1f, 0x6b, 0x47, 0x83, 0xaf, 0xdb, 0xf7, + 0x4a, 0x66, 0x12, 0x3e, 0xfa, 0xd6, 0xa2, 0x8e, + }, + { + 0x00, 0x80, 0x19, 0x99, 0x32, 0xb2, 0x2b, 0xab, + 0x64, 0xe4, 0x7d, 0xfd, 0x56, 0xd6, 0x4f, 0xcf, + 0xc8, 0x48, 0xd1, 0x51, 0xfa, 0x7a, 0xe3, 0x63, + 0xac, 0x2c, 0xb5, 0x35, 0x9e, 0x1e, 0x87, 0x07, + 0x89, 0x09, 0x90, 0x10, 0xbb, 0x3b, 0xa2, 0x22, + 0xed, 0x6d, 0xf4, 0x74, 0xdf, 0x5f, 0xc6, 0x46, + 0x41, 0xc1, 0x58, 0xd8, 0x73, 0xf3, 0x6a, 0xea, + 0x25, 0xa5, 0x3c, 0xbc, 0x17, 0x97, 0x0e, 0x8e, + 0x0b, 0x8b, 0x12, 0x92, 0x39, 0xb9, 0x20, 0xa0, + 0x6f, 0xef, 0x76, 0xf6, 0x5d, 0xdd, 0x44, 0xc4, + 0xc3, 0x43, 0xda, 0x5a, 0xf1, 0x71, 0xe8, 0x68, + 0xa7, 0x27, 0xbe, 0x3e, 0x95, 0x15, 0x8c, 0x0c, + 0x82, 0x02, 0x9b, 0x1b, 0xb0, 0x30, 0xa9, 0x29, + 0xe6, 0x66, 0xff, 0x7f, 0xd4, 0x54, 0xcd, 0x4d, + 0x4a, 0xca, 0x53, 0xd3, 0x78, 0xf8, 0x61, 0xe1, + 0x2e, 0xae, 0x37, 0xb7, 0x1c, 0x9c, 0x05, 0x85, + 0x16, 0x96, 0x0f, 0x8f, 0x24, 0xa4, 0x3d, 0xbd, + 0x72, 0xf2, 0x6b, 0xeb, 0x40, 0xc0, 0x59, 0xd9, + 0xde, 0x5e, 0xc7, 0x47, 0xec, 0x6c, 0xf5, 0x75, + 0xba, 0x3a, 0xa3, 0x23, 0x88, 0x08, 0x91, 0x11, + 0x9f, 0x1f, 0x86, 0x06, 0xad, 0x2d, 0xb4, 0x34, + 0xfb, 0x7b, 0xe2, 0x62, 0xc9, 0x49, 0xd0, 0x50, + 0x57, 0xd7, 0x4e, 0xce, 0x65, 0xe5, 0x7c, 0xfc, + 0x33, 0xb3, 0x2a, 0xaa, 0x01, 0x81, 0x18, 0x98, + 0x1d, 0x9d, 0x04, 0x84, 0x2f, 0xaf, 0x36, 0xb6, + 0x79, 0xf9, 0x60, 0xe0, 0x4b, 0xcb, 0x52, 0xd2, + 0xd5, 0x55, 0xcc, 0x4c, 0xe7, 0x67, 0xfe, 0x7e, + 0xb1, 0x31, 0xa8, 0x28, 0x83, 0x03, 0x9a, 0x1a, + 0x94, 0x14, 0x8d, 0x0d, 0xa6, 0x26, 0xbf, 0x3f, + 0xf0, 0x70, 0xe9, 0x69, 0xc2, 0x42, 0xdb, 0x5b, + 0x5c, 0xdc, 0x45, 0xc5, 0x6e, 0xee, 0x77, 0xf7, + 0x38, 0xb8, 0x21, 0xa1, 0x0a, 0x8a, 0x13, 0x93, + }, + { + 0x00, 0x8c, 0x01, 0x8d, 0x02, 0x8e, 0x03, 0x8f, + 0x04, 0x88, 0x05, 0x89, 0x06, 0x8a, 0x07, 0x8b, + 0x08, 0x84, 0x09, 0x85, 0x0a, 0x86, 0x0b, 0x87, + 0x0c, 0x80, 0x0d, 0x81, 0x0e, 0x82, 0x0f, 0x83, + 0x10, 0x9c, 0x11, 0x9d, 0x12, 0x9e, 0x13, 0x9f, + 0x14, 0x98, 0x15, 0x99, 0x16, 0x9a, 0x17, 0x9b, + 0x18, 0x94, 0x19, 0x95, 0x1a, 0x96, 0x1b, 0x97, + 0x1c, 0x90, 0x1d, 0x91, 0x1e, 0x92, 0x1f, 0x93, + 0x20, 0xac, 0x21, 0xad, 0x22, 0xae, 0x23, 0xaf, + 0x24, 0xa8, 0x25, 0xa9, 0x26, 0xaa, 0x27, 0xab, + 0x28, 0xa4, 0x29, 0xa5, 0x2a, 0xa6, 0x2b, 0xa7, + 0x2c, 0xa0, 0x2d, 0xa1, 0x2e, 0xa2, 0x2f, 0xa3, + 0x30, 0xbc, 0x31, 0xbd, 0x32, 0xbe, 0x33, 0xbf, + 0x34, 0xb8, 0x35, 0xb9, 0x36, 0xba, 0x37, 0xbb, + 0x38, 0xb4, 0x39, 0xb5, 0x3a, 0xb6, 0x3b, 0xb7, + 0x3c, 0xb0, 0x3d, 0xb1, 0x3e, 0xb2, 0x3f, 0xb3, + 0x40, 0xcc, 0x41, 0xcd, 0x42, 0xce, 0x43, 0xcf, + 0x44, 0xc8, 0x45, 0xc9, 0x46, 0xca, 0x47, 0xcb, + 0x48, 0xc4, 0x49, 0xc5, 0x4a, 0xc6, 0x4b, 0xc7, + 0x4c, 0xc0, 0x4d, 0xc1, 0x4e, 0xc2, 0x4f, 0xc3, + 0x50, 0xdc, 0x51, 0xdd, 0x52, 0xde, 0x53, 0xdf, + 0x54, 0xd8, 0x55, 0xd9, 0x56, 0xda, 0x57, 0xdb, + 0x58, 0xd4, 0x59, 0xd5, 0x5a, 0xd6, 0x5b, 0xd7, + 0x5c, 0xd0, 0x5d, 0xd1, 0x5e, 0xd2, 0x5f, 0xd3, + 0x60, 0xec, 0x61, 0xed, 0x62, 0xee, 0x63, 0xef, + 0x64, 0xe8, 0x65, 0xe9, 0x66, 0xea, 0x67, 0xeb, + 0x68, 0xe4, 0x69, 0xe5, 0x6a, 0xe6, 0x6b, 0xe7, + 0x6c, 0xe0, 0x6d, 0xe1, 0x6e, 0xe2, 0x6f, 0xe3, + 0x70, 0xfc, 0x71, 0xfd, 0x72, 0xfe, 0x73, 0xff, + 0x74, 0xf8, 0x75, 0xf9, 0x76, 0xfa, 0x77, 0xfb, + 0x78, 0xf4, 0x79, 0xf5, 0x7a, 0xf6, 0x7b, 0xf7, + 0x7c, 0xf0, 0x7d, 0xf1, 0x7e, 0xf2, 0x7f, 0xf3, + }, +}; diff --git a/ext/digest/gentable.rb b/ext/digest/gentable.rb new file mode 100644 index 0000000..861612c --- /dev/null +++ b/ext/digest/gentable.rb @@ -0,0 +1,84 @@ +require "erb" + +class Integer + def bitreflect(bits) + dest = 0 + src = self + + bits.times { + dest = (dest << 1) | src[0] + src >>= 1 + } + + dest + end +end + +def generate_table(path, table_name, bitwidth, polynomial, reflect_input) + raise "wrong polynomial (expect odd number, but given #{polynomial})" unless polynomial.odd? + + slice_size = 16 + + case bitwidth + when 1.. 8 + bitclass = 8 + when 9..16 + bitclass = 16 + when 17..32 + bitclass = 32 + when 33..64 + bitclass = 64 + else + raise "wrong bitwidth (expect 1..64, but given #{bitwidth})" + end + + # If the bit input is NORMAL, reverse the bit direction after performing + # the same table generation method as REFLECT. This is because this + # eliminates the need to consider the alignment of the upper bits. + + modified_poly = polynomial.bitreflect(bitwidth) + + table0 = 256.times.map { |i| + 8.times { + if i[0].zero? + i = (i >> 1) + else + i = (i >> 1) ^ modified_poly + end + } + + i + } + + table = [table0] + + (1...slice_size).each do |s| + table_prev = table[s - 1] + + table << 256.times.map { |i| + e = table_prev[i] + (e >> 8) ^ table0[0xff & e] + } + end + + unless reflect_input + table.map! { |t| + 256.times.map { |i| + idx = i.bitreflect(8) + t[idx].bitreflect(bitwidth) + } + } + end + + crcint = "uint#{bitclass}_t" + step = bitclass > 16 ? 4 : 8 + generator = File.basename(__FILE__) + templatepath = File.join(__dir__, "table.h.erb") + templatesrc = File.read(templatepath) + template = ERB.new(templatesrc, trim_mode: "%") + template.filename = templatepath + + File.binwrite(path, template.result(binding)) + + slice_size +end diff --git a/ext/digest/table.h.erb b/ext/digest/table.h.erb new file mode 100644 index 0000000..5e3c951 --- /dev/null +++ b/ext/digest/table.h.erb @@ -0,0 +1,21 @@ +/* + * bitwidth: <%= bitwidth %> + * generator polynomial: <%= "0x%0*x" % [bitclass / 4, polynomial] %> + * input bit direction: <%= reflect_input ? "REFLECT" : "NORMAL" %> + * slice bytes per iteration: <%= slice_size %> + * slide bits per table: 8 + * + * Generated by: <%= generator %> of digest-crc + */ + +#define SLICE_SIZE <%= slice_size %> + +static const <%= crcint %> <%= table_name %>[SLICE_SIZE][256] = { +% slice_size.times.map do |s| + { +% (0...256).step(step) do |ibase| + <%= step.times.map { |i| "0x%0*x" % [bitclass / 4, table[s][ibase + i]] }.join(", ") %>, +% end + }, +% end +}; diff --git a/spec/crc15_spec.rb b/spec/crc15_spec.rb index 355fe80..ff04f92 100644 --- a/spec/crc15_spec.rb +++ b/spec/crc15_spec.rb @@ -3,8 +3,8 @@ require 'digest/crc15' describe Digest::CRC15 do - let(:string) { '1234567890' } - let(:expected) { '178c' } + let(:string) { '1234567890123456789' } + let(:expected) { '38d0' } it_should_behave_like "CRC" end diff --git a/spec/crc16_ccitt_spec.rb b/spec/crc16_ccitt_spec.rb index 8338514..73438a6 100644 --- a/spec/crc16_ccitt_spec.rb +++ b/spec/crc16_ccitt_spec.rb @@ -3,8 +3,8 @@ require 'digest/crc16_ccitt' describe Digest::CRC16CCITT do - let(:string) { '1234567890' } - let(:expected) { '3218' } + let(:string) { '1234567890123456789' } + let(:expected) { '20c8' } it_should_behave_like "CRC" end diff --git a/spec/crc16_genibus_spec.rb b/spec/crc16_genibus_spec.rb index 55206c2..de47838 100644 --- a/spec/crc16_genibus_spec.rb +++ b/spec/crc16_genibus_spec.rb @@ -3,8 +3,8 @@ require 'digest/crc16_genibus' describe Digest::CRC16Genibus do - let(:string) { '1234567890' } - let(:expected) { 'cde7' } + let(:string) { '1234567890123456789' } + let(:expected) { 'df37' } it_should_behave_like "CRC" end diff --git a/spec/crc16_kermit_spec.rb b/spec/crc16_kermit_spec.rb index 6e9e86e..c23edb8 100644 --- a/spec/crc16_kermit_spec.rb +++ b/spec/crc16_kermit_spec.rb @@ -3,8 +3,8 @@ require 'digest/crc16_kermit' describe Digest::CRC16Kermit do - let(:string) { '1234567890' } - let(:expected) { '286b' } + let(:string) { '1234567890123456789' } + let(:expected) { '0252' } it_should_behave_like "CRC" end diff --git a/spec/crc16_modbus_spec.rb b/spec/crc16_modbus_spec.rb index 5ad16f1..3eaaa11 100644 --- a/spec/crc16_modbus_spec.rb +++ b/spec/crc16_modbus_spec.rb @@ -3,8 +3,8 @@ require 'digest/crc16_modbus' describe Digest::CRC16Modbus do - let(:string) { '1234567890' } - let(:expected) { 'c20a' } + let(:string) { '1234567890123456789' } + let(:expected) { '92ce' } it_should_behave_like "CRC" end diff --git a/spec/crc16_spec.rb b/spec/crc16_spec.rb index 3e49775..d3bdfcf 100644 --- a/spec/crc16_spec.rb +++ b/spec/crc16_spec.rb @@ -3,8 +3,8 @@ require 'digest/crc16' describe Digest::CRC16 do - let(:string) { '1234567890' } - let(:expected) { 'c57a' } + let(:string) { '1234567890123456789' } + let(:expected) { 'b6ea' } it_should_behave_like "CRC" end diff --git a/spec/crc16_usb_spec.rb b/spec/crc16_usb_spec.rb index 5b99303..c743cf8 100644 --- a/spec/crc16_usb_spec.rb +++ b/spec/crc16_usb_spec.rb @@ -3,8 +3,8 @@ require 'digest/crc16_usb' describe Digest::CRC16USB do - let(:string) { '1234567890' } - let(:expected) { '3df5' } + let(:string) { '1234567890123456789' } + let(:expected) { '6d31' } it_should_behave_like "CRC" end diff --git a/spec/crc16_x_25_spec.rb b/spec/crc16_x_25_spec.rb index 1cdc688..28be74a 100644 --- a/spec/crc16_x_25_spec.rb +++ b/spec/crc16_x_25_spec.rb @@ -3,8 +3,8 @@ require 'digest/crc16_x_25' describe Digest::CRC16X25 do - let(:string) { '1234567890' } - let(:expected) { '4b13' } + let(:string) { '1234567890123456789' } + let(:expected) { '7b60' } it_should_behave_like "CRC" end diff --git a/spec/crc16_xmodem_spec.rb b/spec/crc16_xmodem_spec.rb index dc36a67..22a25bd 100644 --- a/spec/crc16_xmodem_spec.rb +++ b/spec/crc16_xmodem_spec.rb @@ -3,8 +3,8 @@ require 'digest/crc16_xmodem' describe Digest::CRC16XModem do - let(:string) { '1234567890' } - let(:expected) { 'd321' } + let(:string) { '1234567890123456789' } + let(:expected) { '93a9' } it_should_behave_like "CRC" end diff --git a/spec/crc16_zmodem_spec.rb b/spec/crc16_zmodem_spec.rb index 67ee526..1b56bb1 100644 --- a/spec/crc16_zmodem_spec.rb +++ b/spec/crc16_zmodem_spec.rb @@ -3,8 +3,8 @@ require 'digest/crc16_zmodem' describe Digest::CRC16ZModem do - let(:string) { '1234567890' } - let(:expected) { 'd321' } + let(:string) { '1234567890123456789' } + let(:expected) { '93a9' } it_should_behave_like "CRC" end diff --git a/spec/crc1_spec.rb b/spec/crc1_spec.rb index d79afd1..cbed80e 100644 --- a/spec/crc1_spec.rb +++ b/spec/crc1_spec.rb @@ -3,8 +3,8 @@ require 'digest/crc1' describe Digest::CRC1 do - let(:string) { '1234567890' } - let(:expected) { '0d' } + let(:string) { '1234567890123456789' } + let(:expected) { 'ea' } it_should_behave_like "CRC" end diff --git a/spec/crc24_spec.rb b/spec/crc24_spec.rb index ccfcc91..34e52cd 100644 --- a/spec/crc24_spec.rb +++ b/spec/crc24_spec.rb @@ -3,8 +3,8 @@ require 'digest/crc24' describe Digest::CRC24 do - let(:string) { '1234567890' } - let(:expected) { '8c0072' } + let(:string) { '1234567890123456789' } + let(:expected) { 'e4bcb9' } it_should_behave_like "CRC" end diff --git a/spec/crc32_bzip2_spec.rb b/spec/crc32_bzip2_spec.rb index 58f0df0..5383264 100644 --- a/spec/crc32_bzip2_spec.rb +++ b/spec/crc32_bzip2_spec.rb @@ -3,8 +3,8 @@ require 'digest/crc32_bzip2' describe Digest::CRC32BZip2 do - let(:string) { '1234567890' } - let(:expected) { '506853b6' } + let(:string) { '1234567890123456789' } + let(:expected) { '32ffa6d7' } it_should_behave_like "CRC" end diff --git a/spec/crc32_jam_spec.rb b/spec/crc32_jam_spec.rb index a52da2c..c5732f6 100644 --- a/spec/crc32_jam_spec.rb +++ b/spec/crc32_jam_spec.rb @@ -3,8 +3,8 @@ require 'digest/crc32_jam' describe Digest::CRC32Jam do - let(:string) { '1234567890' } - let(:expected) { 'd9e2511a' } + let(:string) { '1234567890123456789' } + let(:expected) { '2c91ece6' } it_should_behave_like "CRC" end diff --git a/spec/crc32_mpeg_spec.rb b/spec/crc32_mpeg_spec.rb index 0b8c6e4..adbfe68 100644 --- a/spec/crc32_mpeg_spec.rb +++ b/spec/crc32_mpeg_spec.rb @@ -3,8 +3,8 @@ require 'digest/crc32_mpeg' describe Digest::CRC32MPEG do - let(:string) { '1234567890' } - let(:expected) { 'af97ac49' } + let(:string) { '1234567890123456789' } + let(:expected) { 'cd005928' } it_should_behave_like "CRC" end diff --git a/spec/crc32_posix_spec.rb b/spec/crc32_posix_spec.rb index df62e6e..e6100e3 100644 --- a/spec/crc32_posix_spec.rb +++ b/spec/crc32_posix_spec.rb @@ -3,8 +3,8 @@ require 'digest/crc32_posix' describe Digest::CRC32POSIX do - let(:string) { '1234567890' } - let(:expected) { 'c181fd8e' } + let(:string) { '1234567890123456789' } + let(:expected) { '3b934973' } it_should_behave_like "CRC" end diff --git a/spec/crc32_spec.rb b/spec/crc32_spec.rb index 0e000ab..aea8415 100644 --- a/spec/crc32_spec.rb +++ b/spec/crc32_spec.rb @@ -3,8 +3,8 @@ require 'digest/crc32' describe Digest::CRC32 do - let(:string) { '1234567890' } - let(:expected) { '261daee5' } + let(:string) { '1234567890123456789' } + let(:expected) { 'd36e1319' } it_should_behave_like "CRC" end diff --git a/spec/crc32_xfer_spec.rb b/spec/crc32_xfer_spec.rb index c2a93e0..a9793a7 100644 --- a/spec/crc32_xfer_spec.rb +++ b/spec/crc32_xfer_spec.rb @@ -3,8 +3,8 @@ require 'digest/crc32_xfer' describe Digest::CRC32XFER do - let(:string) { '1234567890' } - let(:expected) { '0be368eb' } + let(:string) { '1234567890123456789' } + let(:expected) { 'a7326a3b' } it_should_behave_like "CRC" end diff --git a/spec/crc32c_spec.rb b/spec/crc32c_spec.rb index 580098b..adb9a95 100644 --- a/spec/crc32c_spec.rb +++ b/spec/crc32c_spec.rb @@ -3,8 +3,8 @@ require 'digest/crc32c' describe Digest::CRC32c do - let(:string) { '1234567890' } - let(:expected) { 'f3dbd4fe' } + let(:string) { '1234567890123456789' } + let(:expected) { '8d155cb9' } it_should_behave_like "CRC" end diff --git a/spec/crc5_spec.rb b/spec/crc5_spec.rb index 80d0171..470084a 100644 --- a/spec/crc5_spec.rb +++ b/spec/crc5_spec.rb @@ -3,8 +3,8 @@ require 'digest/crc5' describe Digest::CRC5 do - let(:string) { '1234567890' } - let(:expected) { '01' } + let(:string) { '1234567890123456789' } + let(:expected) { '0e' } it_should_behave_like "CRC" end diff --git a/spec/crc64_jones_spec.rb b/spec/crc64_jones_spec.rb index 03e7c1b..469424e 100644 --- a/spec/crc64_jones_spec.rb +++ b/spec/crc64_jones_spec.rb @@ -3,8 +3,8 @@ require 'digest/crc64_jones' describe Digest::CRC64Jones do - let(:string) { '1234567890' } - let(:expected) { '68a745ba133af9bd' } + let(:string) { '1234567890123456789' } + let(:expected) { 'c5b27dfe868bb180' } it_should_behave_like "CRC" end diff --git a/spec/crc64_spec.rb b/spec/crc64_spec.rb index 54c75a7..224a596 100644 --- a/spec/crc64_spec.rb +++ b/spec/crc64_spec.rb @@ -3,8 +3,8 @@ require 'digest/crc64' describe Digest::CRC64 do - let(:string) { '1234567890' } - let(:expected) { 'bc66a5a9388a5bef' } + let(:string) { '1234567890123456789' } + let(:expected) { 'e6c8b671184bb966' } it_should_behave_like "CRC" end diff --git a/spec/crc64_xz_spec.rb b/spec/crc64_xz_spec.rb index 7a9a0c0..468d1fb 100644 --- a/spec/crc64_xz_spec.rb +++ b/spec/crc64_xz_spec.rb @@ -3,8 +3,8 @@ require 'digest/crc64_xz' describe Digest::CRC64XZ do - let(:string) { '1234567890' } - let(:expected) { 'b1cb31bbb4a2b2be' } + let(:string) { '1234567890123456789' } + let(:expected) { '6eecc5f3f4c26bd9' } it_should_behave_like "CRC" end diff --git a/spec/crc8_1wire_spec.rb b/spec/crc8_1wire_spec.rb index 17c1bf4..1f9ff90 100644 --- a/spec/crc8_1wire_spec.rb +++ b/spec/crc8_1wire_spec.rb @@ -3,8 +3,8 @@ require 'digest/crc8_1wire' describe Digest::CRC8_1Wire do - let(:string) { '1234567890' } - let(:expected) { '4f' } + let(:string) { '1234567890123456789' } + let(:expected) { '71' } it_should_behave_like "CRC" end diff --git a/spec/crc8_spec.rb b/spec/crc8_spec.rb index de33f34..00396f7 100644 --- a/spec/crc8_spec.rb +++ b/spec/crc8_spec.rb @@ -3,8 +3,8 @@ require 'digest/crc8' describe Digest::CRC8 do - let(:string) { '1234567890' } - let(:expected) { '52' } + let(:string) { '1234567890123456789' } + let(:expected) { '99' } it_should_behave_like "CRC" end