001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.commons.codec.digest;
018
019import java.util.zip.Checksum;
020
021/**
022 * A pure-java implementation of the CRC32 checksum that uses
023 * the same polynomial as the built-in native CRC32.
024 *
025 * This is to avoid the JNI overhead for certain uses of Checksumming
026 * where many small pieces of data are checksummed in succession.
027 *
028 * The current version is ~10x to 1.8x as fast as Sun's native
029 * java.util.zip.CRC32 in Java 1.6
030 *
031 * Copied from Hadoop 2.6.3.
032 * The code agrees with the following file in the 2.6.3 tag:
033 * https://git-wip-us.apache.org/repos/asf?p=hadoop.git;a=blob_plain;
034 * f=hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/PureJavaCrc32.java;
035 * hb=2120de588b92b9f22b1cc4188761d6a8c61aa778
036 * <p>
037 * This class is Not ThreadSafe
038 *
039 * @see java.util.zip.CRC32
040 * @since 1.11
041 */
042public class PureJavaCrc32 implements Checksum {
043
044  /** the current CRC value, bit-flipped */
045  private int crc;
046
047  /** Create a new PureJavaCrc32 object. */
048  public PureJavaCrc32() {
049    _reset();
050  }
051
052  @Override
053  public long getValue() {
054    return (~crc) & 0xffffffffL;
055  }
056
057  @Override
058  public void reset() {
059    _reset();
060  }
061
062  // called by ctor, so must not be overrideable
063  private void _reset() {
064    crc = 0xffffffff;
065  }
066
067  @Override
068  public void update(final byte[] b, final int offset, final int len) {
069    int localCrc = crc;
070
071    final int remainder = len & 0x7;
072    int i = offset;
073    for(final int end = offset + len - remainder; i < end; i += 8) {
074      final int x = localCrc ^
075          ((((b[i  ] << 24) >>> 24) + ((b[i+1] << 24) >>> 16)) +
076          (((b[i+2] << 24) >>> 8 ) +  (b[i+3] << 24)));
077
078      localCrc = ((T[((x << 24) >>> 24) + 0x700] ^ T[((x << 16) >>> 24) + 0x600]) ^
079                 (T[((x <<  8) >>> 24) + 0x500] ^ T[ (x        >>> 24) + 0x400])) ^
080                 ((T[((b[i+4] << 24) >>> 24) + 0x300] ^ T[((b[i+5] << 24) >>> 24) + 0x200]) ^
081                 (T[((b[i+6] << 24) >>> 24) + 0x100] ^ T[((b[i+7] << 24) >>> 24)]));
082    }
083
084    /* loop unroll - duff's device style */
085    switch(remainder) {
086      case 7: localCrc = (localCrc >>> 8) ^ T[((localCrc ^ b[i++]) << 24) >>> 24];
087      case 6: localCrc = (localCrc >>> 8) ^ T[((localCrc ^ b[i++]) << 24) >>> 24];
088      case 5: localCrc = (localCrc >>> 8) ^ T[((localCrc ^ b[i++]) << 24) >>> 24];
089      case 4: localCrc = (localCrc >>> 8) ^ T[((localCrc ^ b[i++]) << 24) >>> 24];
090      case 3: localCrc = (localCrc >>> 8) ^ T[((localCrc ^ b[i++]) << 24) >>> 24];
091      case 2: localCrc = (localCrc >>> 8) ^ T[((localCrc ^ b[i++]) << 24) >>> 24];
092      case 1: localCrc = (localCrc >>> 8) ^ T[((localCrc ^ b[i++]) << 24) >>> 24];
093      default:
094        /* nothing */
095    }
096
097    // Publish crc out to object
098    crc = localCrc;
099  }
100
101  @Override
102  final public void update(final int b) {
103    crc = (crc >>> 8) ^ T[(((crc ^ b) << 24) >>> 24)];
104  }
105
106  /*
107   * CRC-32 lookup tables generated by the polynomial 0xEDB88320.
108   * See also TestPureJavaCrc32.Table.
109   */
110  private static final int[] T = new int[] {
111    /* T8_0 */
112    0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,
113    0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
114    0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,
115    0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,
116    0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,
117    0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,
118    0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,
119    0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,
120    0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,
121    0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
122    0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,
123    0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,
124    0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,
125    0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,
126    0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,
127    0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,
128    0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,
129    0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,
130    0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,
131    0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
132    0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,
133    0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,
134    0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,
135    0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,
136    0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,
137    0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,
138    0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,
139    0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,
140    0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,
141    0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
142    0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,
143    0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,
144    0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,
145    0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,
146    0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,
147    0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,
148    0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,
149    0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,
150    0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,
151    0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
152    0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,
153    0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
154    0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,
155    0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,
156    0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,
157    0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,
158    0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,
159    0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
160    0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,
161    0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
162    0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,
163    0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,
164    0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,
165    0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,
166    0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,
167    0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,
168    0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,
169    0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,
170    0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,
171    0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
172    0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,
173    0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,
174    0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
175    0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D,
176    /* T8_1 */
177    0x00000000, 0x191B3141, 0x32366282, 0x2B2D53C3,
178    0x646CC504, 0x7D77F445, 0x565AA786, 0x4F4196C7,
179    0xC8D98A08, 0xD1C2BB49, 0xFAEFE88A, 0xE3F4D9CB,
180    0xACB54F0C, 0xB5AE7E4D, 0x9E832D8E, 0x87981CCF,
181    0x4AC21251, 0x53D92310, 0x78F470D3, 0x61EF4192,
182    0x2EAED755, 0x37B5E614, 0x1C98B5D7, 0x05838496,
183    0x821B9859, 0x9B00A918, 0xB02DFADB, 0xA936CB9A,
184    0xE6775D5D, 0xFF6C6C1C, 0xD4413FDF, 0xCD5A0E9E,
185    0x958424A2, 0x8C9F15E3, 0xA7B24620, 0xBEA97761,
186    0xF1E8E1A6, 0xE8F3D0E7, 0xC3DE8324, 0xDAC5B265,
187    0x5D5DAEAA, 0x44469FEB, 0x6F6BCC28, 0x7670FD69,
188    0x39316BAE, 0x202A5AEF, 0x0B07092C, 0x121C386D,
189    0xDF4636F3, 0xC65D07B2, 0xED705471, 0xF46B6530,
190    0xBB2AF3F7, 0xA231C2B6, 0x891C9175, 0x9007A034,
191    0x179FBCFB, 0x0E848DBA, 0x25A9DE79, 0x3CB2EF38,
192    0x73F379FF, 0x6AE848BE, 0x41C51B7D, 0x58DE2A3C,
193    0xF0794F05, 0xE9627E44, 0xC24F2D87, 0xDB541CC6,
194    0x94158A01, 0x8D0EBB40, 0xA623E883, 0xBF38D9C2,
195    0x38A0C50D, 0x21BBF44C, 0x0A96A78F, 0x138D96CE,
196    0x5CCC0009, 0x45D73148, 0x6EFA628B, 0x77E153CA,
197    0xBABB5D54, 0xA3A06C15, 0x888D3FD6, 0x91960E97,
198    0xDED79850, 0xC7CCA911, 0xECE1FAD2, 0xF5FACB93,
199    0x7262D75C, 0x6B79E61D, 0x4054B5DE, 0x594F849F,
200    0x160E1258, 0x0F152319, 0x243870DA, 0x3D23419B,
201    0x65FD6BA7, 0x7CE65AE6, 0x57CB0925, 0x4ED03864,
202    0x0191AEA3, 0x188A9FE2, 0x33A7CC21, 0x2ABCFD60,
203    0xAD24E1AF, 0xB43FD0EE, 0x9F12832D, 0x8609B26C,
204    0xC94824AB, 0xD05315EA, 0xFB7E4629, 0xE2657768,
205    0x2F3F79F6, 0x362448B7, 0x1D091B74, 0x04122A35,
206    0x4B53BCF2, 0x52488DB3, 0x7965DE70, 0x607EEF31,
207    0xE7E6F3FE, 0xFEFDC2BF, 0xD5D0917C, 0xCCCBA03D,
208    0x838A36FA, 0x9A9107BB, 0xB1BC5478, 0xA8A76539,
209    0x3B83984B, 0x2298A90A, 0x09B5FAC9, 0x10AECB88,
210    0x5FEF5D4F, 0x46F46C0E, 0x6DD93FCD, 0x74C20E8C,
211    0xF35A1243, 0xEA412302, 0xC16C70C1, 0xD8774180,
212    0x9736D747, 0x8E2DE606, 0xA500B5C5, 0xBC1B8484,
213    0x71418A1A, 0x685ABB5B, 0x4377E898, 0x5A6CD9D9,
214    0x152D4F1E, 0x0C367E5F, 0x271B2D9C, 0x3E001CDD,
215    0xB9980012, 0xA0833153, 0x8BAE6290, 0x92B553D1,
216    0xDDF4C516, 0xC4EFF457, 0xEFC2A794, 0xF6D996D5,
217    0xAE07BCE9, 0xB71C8DA8, 0x9C31DE6B, 0x852AEF2A,
218    0xCA6B79ED, 0xD37048AC, 0xF85D1B6F, 0xE1462A2E,
219    0x66DE36E1, 0x7FC507A0, 0x54E85463, 0x4DF36522,
220    0x02B2F3E5, 0x1BA9C2A4, 0x30849167, 0x299FA026,
221    0xE4C5AEB8, 0xFDDE9FF9, 0xD6F3CC3A, 0xCFE8FD7B,
222    0x80A96BBC, 0x99B25AFD, 0xB29F093E, 0xAB84387F,
223    0x2C1C24B0, 0x350715F1, 0x1E2A4632, 0x07317773,
224    0x4870E1B4, 0x516BD0F5, 0x7A468336, 0x635DB277,
225    0xCBFAD74E, 0xD2E1E60F, 0xF9CCB5CC, 0xE0D7848D,
226    0xAF96124A, 0xB68D230B, 0x9DA070C8, 0x84BB4189,
227    0x03235D46, 0x1A386C07, 0x31153FC4, 0x280E0E85,
228    0x674F9842, 0x7E54A903, 0x5579FAC0, 0x4C62CB81,
229    0x8138C51F, 0x9823F45E, 0xB30EA79D, 0xAA1596DC,
230    0xE554001B, 0xFC4F315A, 0xD7626299, 0xCE7953D8,
231    0x49E14F17, 0x50FA7E56, 0x7BD72D95, 0x62CC1CD4,
232    0x2D8D8A13, 0x3496BB52, 0x1FBBE891, 0x06A0D9D0,
233    0x5E7EF3EC, 0x4765C2AD, 0x6C48916E, 0x7553A02F,
234    0x3A1236E8, 0x230907A9, 0x0824546A, 0x113F652B,
235    0x96A779E4, 0x8FBC48A5, 0xA4911B66, 0xBD8A2A27,
236    0xF2CBBCE0, 0xEBD08DA1, 0xC0FDDE62, 0xD9E6EF23,
237    0x14BCE1BD, 0x0DA7D0FC, 0x268A833F, 0x3F91B27E,
238    0x70D024B9, 0x69CB15F8, 0x42E6463B, 0x5BFD777A,
239    0xDC656BB5, 0xC57E5AF4, 0xEE530937, 0xF7483876,
240    0xB809AEB1, 0xA1129FF0, 0x8A3FCC33, 0x9324FD72,
241    /* T8_2 */
242    0x00000000, 0x01C26A37, 0x0384D46E, 0x0246BE59,
243    0x0709A8DC, 0x06CBC2EB, 0x048D7CB2, 0x054F1685,
244    0x0E1351B8, 0x0FD13B8F, 0x0D9785D6, 0x0C55EFE1,
245    0x091AF964, 0x08D89353, 0x0A9E2D0A, 0x0B5C473D,
246    0x1C26A370, 0x1DE4C947, 0x1FA2771E, 0x1E601D29,
247    0x1B2F0BAC, 0x1AED619B, 0x18ABDFC2, 0x1969B5F5,
248    0x1235F2C8, 0x13F798FF, 0x11B126A6, 0x10734C91,
249    0x153C5A14, 0x14FE3023, 0x16B88E7A, 0x177AE44D,
250    0x384D46E0, 0x398F2CD7, 0x3BC9928E, 0x3A0BF8B9,
251    0x3F44EE3C, 0x3E86840B, 0x3CC03A52, 0x3D025065,
252    0x365E1758, 0x379C7D6F, 0x35DAC336, 0x3418A901,
253    0x3157BF84, 0x3095D5B3, 0x32D36BEA, 0x331101DD,
254    0x246BE590, 0x25A98FA7, 0x27EF31FE, 0x262D5BC9,
255    0x23624D4C, 0x22A0277B, 0x20E69922, 0x2124F315,
256    0x2A78B428, 0x2BBADE1F, 0x29FC6046, 0x283E0A71,
257    0x2D711CF4, 0x2CB376C3, 0x2EF5C89A, 0x2F37A2AD,
258    0x709A8DC0, 0x7158E7F7, 0x731E59AE, 0x72DC3399,
259    0x7793251C, 0x76514F2B, 0x7417F172, 0x75D59B45,
260    0x7E89DC78, 0x7F4BB64F, 0x7D0D0816, 0x7CCF6221,
261    0x798074A4, 0x78421E93, 0x7A04A0CA, 0x7BC6CAFD,
262    0x6CBC2EB0, 0x6D7E4487, 0x6F38FADE, 0x6EFA90E9,
263    0x6BB5866C, 0x6A77EC5B, 0x68315202, 0x69F33835,
264    0x62AF7F08, 0x636D153F, 0x612BAB66, 0x60E9C151,
265    0x65A6D7D4, 0x6464BDE3, 0x662203BA, 0x67E0698D,
266    0x48D7CB20, 0x4915A117, 0x4B531F4E, 0x4A917579,
267    0x4FDE63FC, 0x4E1C09CB, 0x4C5AB792, 0x4D98DDA5,
268    0x46C49A98, 0x4706F0AF, 0x45404EF6, 0x448224C1,
269    0x41CD3244, 0x400F5873, 0x4249E62A, 0x438B8C1D,
270    0x54F16850, 0x55330267, 0x5775BC3E, 0x56B7D609,
271    0x53F8C08C, 0x523AAABB, 0x507C14E2, 0x51BE7ED5,
272    0x5AE239E8, 0x5B2053DF, 0x5966ED86, 0x58A487B1,
273    0x5DEB9134, 0x5C29FB03, 0x5E6F455A, 0x5FAD2F6D,
274    0xE1351B80, 0xE0F771B7, 0xE2B1CFEE, 0xE373A5D9,
275    0xE63CB35C, 0xE7FED96B, 0xE5B86732, 0xE47A0D05,
276    0xEF264A38, 0xEEE4200F, 0xECA29E56, 0xED60F461,
277    0xE82FE2E4, 0xE9ED88D3, 0xEBAB368A, 0xEA695CBD,
278    0xFD13B8F0, 0xFCD1D2C7, 0xFE976C9E, 0xFF5506A9,
279    0xFA1A102C, 0xFBD87A1B, 0xF99EC442, 0xF85CAE75,
280    0xF300E948, 0xF2C2837F, 0xF0843D26, 0xF1465711,
281    0xF4094194, 0xF5CB2BA3, 0xF78D95FA, 0xF64FFFCD,
282    0xD9785D60, 0xD8BA3757, 0xDAFC890E, 0xDB3EE339,
283    0xDE71F5BC, 0xDFB39F8B, 0xDDF521D2, 0xDC374BE5,
284    0xD76B0CD8, 0xD6A966EF, 0xD4EFD8B6, 0xD52DB281,
285    0xD062A404, 0xD1A0CE33, 0xD3E6706A, 0xD2241A5D,
286    0xC55EFE10, 0xC49C9427, 0xC6DA2A7E, 0xC7184049,
287    0xC25756CC, 0xC3953CFB, 0xC1D382A2, 0xC011E895,
288    0xCB4DAFA8, 0xCA8FC59F, 0xC8C97BC6, 0xC90B11F1,
289    0xCC440774, 0xCD866D43, 0xCFC0D31A, 0xCE02B92D,
290    0x91AF9640, 0x906DFC77, 0x922B422E, 0x93E92819,
291    0x96A63E9C, 0x976454AB, 0x9522EAF2, 0x94E080C5,
292    0x9FBCC7F8, 0x9E7EADCF, 0x9C381396, 0x9DFA79A1,
293    0x98B56F24, 0x99770513, 0x9B31BB4A, 0x9AF3D17D,
294    0x8D893530, 0x8C4B5F07, 0x8E0DE15E, 0x8FCF8B69,
295    0x8A809DEC, 0x8B42F7DB, 0x89044982, 0x88C623B5,
296    0x839A6488, 0x82580EBF, 0x801EB0E6, 0x81DCDAD1,
297    0x8493CC54, 0x8551A663, 0x8717183A, 0x86D5720D,
298    0xA9E2D0A0, 0xA820BA97, 0xAA6604CE, 0xABA46EF9,
299    0xAEEB787C, 0xAF29124B, 0xAD6FAC12, 0xACADC625,
300    0xA7F18118, 0xA633EB2F, 0xA4755576, 0xA5B73F41,
301    0xA0F829C4, 0xA13A43F3, 0xA37CFDAA, 0xA2BE979D,
302    0xB5C473D0, 0xB40619E7, 0xB640A7BE, 0xB782CD89,
303    0xB2CDDB0C, 0xB30FB13B, 0xB1490F62, 0xB08B6555,
304    0xBBD72268, 0xBA15485F, 0xB853F606, 0xB9919C31,
305    0xBCDE8AB4, 0xBD1CE083, 0xBF5A5EDA, 0xBE9834ED,
306    /* T8_3 */
307    0x00000000, 0xB8BC6765, 0xAA09C88B, 0x12B5AFEE,
308    0x8F629757, 0x37DEF032, 0x256B5FDC, 0x9DD738B9,
309    0xC5B428EF, 0x7D084F8A, 0x6FBDE064, 0xD7018701,
310    0x4AD6BFB8, 0xF26AD8DD, 0xE0DF7733, 0x58631056,
311    0x5019579F, 0xE8A530FA, 0xFA109F14, 0x42ACF871,
312    0xDF7BC0C8, 0x67C7A7AD, 0x75720843, 0xCDCE6F26,
313    0x95AD7F70, 0x2D111815, 0x3FA4B7FB, 0x8718D09E,
314    0x1ACFE827, 0xA2738F42, 0xB0C620AC, 0x087A47C9,
315    0xA032AF3E, 0x188EC85B, 0x0A3B67B5, 0xB28700D0,
316    0x2F503869, 0x97EC5F0C, 0x8559F0E2, 0x3DE59787,
317    0x658687D1, 0xDD3AE0B4, 0xCF8F4F5A, 0x7733283F,
318    0xEAE41086, 0x525877E3, 0x40EDD80D, 0xF851BF68,
319    0xF02BF8A1, 0x48979FC4, 0x5A22302A, 0xE29E574F,
320    0x7F496FF6, 0xC7F50893, 0xD540A77D, 0x6DFCC018,
321    0x359FD04E, 0x8D23B72B, 0x9F9618C5, 0x272A7FA0,
322    0xBAFD4719, 0x0241207C, 0x10F48F92, 0xA848E8F7,
323    0x9B14583D, 0x23A83F58, 0x311D90B6, 0x89A1F7D3,
324    0x1476CF6A, 0xACCAA80F, 0xBE7F07E1, 0x06C36084,
325    0x5EA070D2, 0xE61C17B7, 0xF4A9B859, 0x4C15DF3C,
326    0xD1C2E785, 0x697E80E0, 0x7BCB2F0E, 0xC377486B,
327    0xCB0D0FA2, 0x73B168C7, 0x6104C729, 0xD9B8A04C,
328    0x446F98F5, 0xFCD3FF90, 0xEE66507E, 0x56DA371B,
329    0x0EB9274D, 0xB6054028, 0xA4B0EFC6, 0x1C0C88A3,
330    0x81DBB01A, 0x3967D77F, 0x2BD27891, 0x936E1FF4,
331    0x3B26F703, 0x839A9066, 0x912F3F88, 0x299358ED,
332    0xB4446054, 0x0CF80731, 0x1E4DA8DF, 0xA6F1CFBA,
333    0xFE92DFEC, 0x462EB889, 0x549B1767, 0xEC277002,
334    0x71F048BB, 0xC94C2FDE, 0xDBF98030, 0x6345E755,
335    0x6B3FA09C, 0xD383C7F9, 0xC1366817, 0x798A0F72,
336    0xE45D37CB, 0x5CE150AE, 0x4E54FF40, 0xF6E89825,
337    0xAE8B8873, 0x1637EF16, 0x048240F8, 0xBC3E279D,
338    0x21E91F24, 0x99557841, 0x8BE0D7AF, 0x335CB0CA,
339    0xED59B63B, 0x55E5D15E, 0x47507EB0, 0xFFEC19D5,
340    0x623B216C, 0xDA874609, 0xC832E9E7, 0x708E8E82,
341    0x28ED9ED4, 0x9051F9B1, 0x82E4565F, 0x3A58313A,
342    0xA78F0983, 0x1F336EE6, 0x0D86C108, 0xB53AA66D,
343    0xBD40E1A4, 0x05FC86C1, 0x1749292F, 0xAFF54E4A,
344    0x322276F3, 0x8A9E1196, 0x982BBE78, 0x2097D91D,
345    0x78F4C94B, 0xC048AE2E, 0xD2FD01C0, 0x6A4166A5,
346    0xF7965E1C, 0x4F2A3979, 0x5D9F9697, 0xE523F1F2,
347    0x4D6B1905, 0xF5D77E60, 0xE762D18E, 0x5FDEB6EB,
348    0xC2098E52, 0x7AB5E937, 0x680046D9, 0xD0BC21BC,
349    0x88DF31EA, 0x3063568F, 0x22D6F961, 0x9A6A9E04,
350    0x07BDA6BD, 0xBF01C1D8, 0xADB46E36, 0x15080953,
351    0x1D724E9A, 0xA5CE29FF, 0xB77B8611, 0x0FC7E174,
352    0x9210D9CD, 0x2AACBEA8, 0x38191146, 0x80A57623,
353    0xD8C66675, 0x607A0110, 0x72CFAEFE, 0xCA73C99B,
354    0x57A4F122, 0xEF189647, 0xFDAD39A9, 0x45115ECC,
355    0x764DEE06, 0xCEF18963, 0xDC44268D, 0x64F841E8,
356    0xF92F7951, 0x41931E34, 0x5326B1DA, 0xEB9AD6BF,
357    0xB3F9C6E9, 0x0B45A18C, 0x19F00E62, 0xA14C6907,
358    0x3C9B51BE, 0x842736DB, 0x96929935, 0x2E2EFE50,
359    0x2654B999, 0x9EE8DEFC, 0x8C5D7112, 0x34E11677,
360    0xA9362ECE, 0x118A49AB, 0x033FE645, 0xBB838120,
361    0xE3E09176, 0x5B5CF613, 0x49E959FD, 0xF1553E98,
362    0x6C820621, 0xD43E6144, 0xC68BCEAA, 0x7E37A9CF,
363    0xD67F4138, 0x6EC3265D, 0x7C7689B3, 0xC4CAEED6,
364    0x591DD66F, 0xE1A1B10A, 0xF3141EE4, 0x4BA87981,
365    0x13CB69D7, 0xAB770EB2, 0xB9C2A15C, 0x017EC639,
366    0x9CA9FE80, 0x241599E5, 0x36A0360B, 0x8E1C516E,
367    0x866616A7, 0x3EDA71C2, 0x2C6FDE2C, 0x94D3B949,
368    0x090481F0, 0xB1B8E695, 0xA30D497B, 0x1BB12E1E,
369    0x43D23E48, 0xFB6E592D, 0xE9DBF6C3, 0x516791A6,
370    0xCCB0A91F, 0x740CCE7A, 0x66B96194, 0xDE0506F1,
371    /* T8_4 */
372    0x00000000, 0x3D6029B0, 0x7AC05360, 0x47A07AD0,
373    0xF580A6C0, 0xC8E08F70, 0x8F40F5A0, 0xB220DC10,
374    0x30704BC1, 0x0D106271, 0x4AB018A1, 0x77D03111,
375    0xC5F0ED01, 0xF890C4B1, 0xBF30BE61, 0x825097D1,
376    0x60E09782, 0x5D80BE32, 0x1A20C4E2, 0x2740ED52,
377    0x95603142, 0xA80018F2, 0xEFA06222, 0xD2C04B92,
378    0x5090DC43, 0x6DF0F5F3, 0x2A508F23, 0x1730A693,
379    0xA5107A83, 0x98705333, 0xDFD029E3, 0xE2B00053,
380    0xC1C12F04, 0xFCA106B4, 0xBB017C64, 0x866155D4,
381    0x344189C4, 0x0921A074, 0x4E81DAA4, 0x73E1F314,
382    0xF1B164C5, 0xCCD14D75, 0x8B7137A5, 0xB6111E15,
383    0x0431C205, 0x3951EBB5, 0x7EF19165, 0x4391B8D5,
384    0xA121B886, 0x9C419136, 0xDBE1EBE6, 0xE681C256,
385    0x54A11E46, 0x69C137F6, 0x2E614D26, 0x13016496,
386    0x9151F347, 0xAC31DAF7, 0xEB91A027, 0xD6F18997,
387    0x64D15587, 0x59B17C37, 0x1E1106E7, 0x23712F57,
388    0x58F35849, 0x659371F9, 0x22330B29, 0x1F532299,
389    0xAD73FE89, 0x9013D739, 0xD7B3ADE9, 0xEAD38459,
390    0x68831388, 0x55E33A38, 0x124340E8, 0x2F236958,
391    0x9D03B548, 0xA0639CF8, 0xE7C3E628, 0xDAA3CF98,
392    0x3813CFCB, 0x0573E67B, 0x42D39CAB, 0x7FB3B51B,
393    0xCD93690B, 0xF0F340BB, 0xB7533A6B, 0x8A3313DB,
394    0x0863840A, 0x3503ADBA, 0x72A3D76A, 0x4FC3FEDA,
395    0xFDE322CA, 0xC0830B7A, 0x872371AA, 0xBA43581A,
396    0x9932774D, 0xA4525EFD, 0xE3F2242D, 0xDE920D9D,
397    0x6CB2D18D, 0x51D2F83D, 0x167282ED, 0x2B12AB5D,
398    0xA9423C8C, 0x9422153C, 0xD3826FEC, 0xEEE2465C,
399    0x5CC29A4C, 0x61A2B3FC, 0x2602C92C, 0x1B62E09C,
400    0xF9D2E0CF, 0xC4B2C97F, 0x8312B3AF, 0xBE729A1F,
401    0x0C52460F, 0x31326FBF, 0x7692156F, 0x4BF23CDF,
402    0xC9A2AB0E, 0xF4C282BE, 0xB362F86E, 0x8E02D1DE,
403    0x3C220DCE, 0x0142247E, 0x46E25EAE, 0x7B82771E,
404    0xB1E6B092, 0x8C869922, 0xCB26E3F2, 0xF646CA42,
405    0x44661652, 0x79063FE2, 0x3EA64532, 0x03C66C82,
406    0x8196FB53, 0xBCF6D2E3, 0xFB56A833, 0xC6368183,
407    0x74165D93, 0x49767423, 0x0ED60EF3, 0x33B62743,
408    0xD1062710, 0xEC660EA0, 0xABC67470, 0x96A65DC0,
409    0x248681D0, 0x19E6A860, 0x5E46D2B0, 0x6326FB00,
410    0xE1766CD1, 0xDC164561, 0x9BB63FB1, 0xA6D61601,
411    0x14F6CA11, 0x2996E3A1, 0x6E369971, 0x5356B0C1,
412    0x70279F96, 0x4D47B626, 0x0AE7CCF6, 0x3787E546,
413    0x85A73956, 0xB8C710E6, 0xFF676A36, 0xC2074386,
414    0x4057D457, 0x7D37FDE7, 0x3A978737, 0x07F7AE87,
415    0xB5D77297, 0x88B75B27, 0xCF1721F7, 0xF2770847,
416    0x10C70814, 0x2DA721A4, 0x6A075B74, 0x576772C4,
417    0xE547AED4, 0xD8278764, 0x9F87FDB4, 0xA2E7D404,
418    0x20B743D5, 0x1DD76A65, 0x5A7710B5, 0x67173905,
419    0xD537E515, 0xE857CCA5, 0xAFF7B675, 0x92979FC5,
420    0xE915E8DB, 0xD475C16B, 0x93D5BBBB, 0xAEB5920B,
421    0x1C954E1B, 0x21F567AB, 0x66551D7B, 0x5B3534CB,
422    0xD965A31A, 0xE4058AAA, 0xA3A5F07A, 0x9EC5D9CA,
423    0x2CE505DA, 0x11852C6A, 0x562556BA, 0x6B457F0A,
424    0x89F57F59, 0xB49556E9, 0xF3352C39, 0xCE550589,
425    0x7C75D999, 0x4115F029, 0x06B58AF9, 0x3BD5A349,
426    0xB9853498, 0x84E51D28, 0xC34567F8, 0xFE254E48,
427    0x4C059258, 0x7165BBE8, 0x36C5C138, 0x0BA5E888,
428    0x28D4C7DF, 0x15B4EE6F, 0x521494BF, 0x6F74BD0F,
429    0xDD54611F, 0xE03448AF, 0xA794327F, 0x9AF41BCF,
430    0x18A48C1E, 0x25C4A5AE, 0x6264DF7E, 0x5F04F6CE,
431    0xED242ADE, 0xD044036E, 0x97E479BE, 0xAA84500E,
432    0x4834505D, 0x755479ED, 0x32F4033D, 0x0F942A8D,
433    0xBDB4F69D, 0x80D4DF2D, 0xC774A5FD, 0xFA148C4D,
434    0x78441B9C, 0x4524322C, 0x028448FC, 0x3FE4614C,
435    0x8DC4BD5C, 0xB0A494EC, 0xF704EE3C, 0xCA64C78C,
436    /* T8_5 */
437    0x00000000, 0xCB5CD3A5, 0x4DC8A10B, 0x869472AE,
438    0x9B914216, 0x50CD91B3, 0xD659E31D, 0x1D0530B8,
439    0xEC53826D, 0x270F51C8, 0xA19B2366, 0x6AC7F0C3,
440    0x77C2C07B, 0xBC9E13DE, 0x3A0A6170, 0xF156B2D5,
441    0x03D6029B, 0xC88AD13E, 0x4E1EA390, 0x85427035,
442    0x9847408D, 0x531B9328, 0xD58FE186, 0x1ED33223,
443    0xEF8580F6, 0x24D95353, 0xA24D21FD, 0x6911F258,
444    0x7414C2E0, 0xBF481145, 0x39DC63EB, 0xF280B04E,
445    0x07AC0536, 0xCCF0D693, 0x4A64A43D, 0x81387798,
446    0x9C3D4720, 0x57619485, 0xD1F5E62B, 0x1AA9358E,
447    0xEBFF875B, 0x20A354FE, 0xA6372650, 0x6D6BF5F5,
448    0x706EC54D, 0xBB3216E8, 0x3DA66446, 0xF6FAB7E3,
449    0x047A07AD, 0xCF26D408, 0x49B2A6A6, 0x82EE7503,
450    0x9FEB45BB, 0x54B7961E, 0xD223E4B0, 0x197F3715,
451    0xE82985C0, 0x23755665, 0xA5E124CB, 0x6EBDF76E,
452    0x73B8C7D6, 0xB8E41473, 0x3E7066DD, 0xF52CB578,
453    0x0F580A6C, 0xC404D9C9, 0x4290AB67, 0x89CC78C2,
454    0x94C9487A, 0x5F959BDF, 0xD901E971, 0x125D3AD4,
455    0xE30B8801, 0x28575BA4, 0xAEC3290A, 0x659FFAAF,
456    0x789ACA17, 0xB3C619B2, 0x35526B1C, 0xFE0EB8B9,
457    0x0C8E08F7, 0xC7D2DB52, 0x4146A9FC, 0x8A1A7A59,
458    0x971F4AE1, 0x5C439944, 0xDAD7EBEA, 0x118B384F,
459    0xE0DD8A9A, 0x2B81593F, 0xAD152B91, 0x6649F834,
460    0x7B4CC88C, 0xB0101B29, 0x36846987, 0xFDD8BA22,
461    0x08F40F5A, 0xC3A8DCFF, 0x453CAE51, 0x8E607DF4,
462    0x93654D4C, 0x58399EE9, 0xDEADEC47, 0x15F13FE2,
463    0xE4A78D37, 0x2FFB5E92, 0xA96F2C3C, 0x6233FF99,
464    0x7F36CF21, 0xB46A1C84, 0x32FE6E2A, 0xF9A2BD8F,
465    0x0B220DC1, 0xC07EDE64, 0x46EAACCA, 0x8DB67F6F,
466    0x90B34FD7, 0x5BEF9C72, 0xDD7BEEDC, 0x16273D79,
467    0xE7718FAC, 0x2C2D5C09, 0xAAB92EA7, 0x61E5FD02,
468    0x7CE0CDBA, 0xB7BC1E1F, 0x31286CB1, 0xFA74BF14,
469    0x1EB014D8, 0xD5ECC77D, 0x5378B5D3, 0x98246676,
470    0x852156CE, 0x4E7D856B, 0xC8E9F7C5, 0x03B52460,
471    0xF2E396B5, 0x39BF4510, 0xBF2B37BE, 0x7477E41B,
472    0x6972D4A3, 0xA22E0706, 0x24BA75A8, 0xEFE6A60D,
473    0x1D661643, 0xD63AC5E6, 0x50AEB748, 0x9BF264ED,
474    0x86F75455, 0x4DAB87F0, 0xCB3FF55E, 0x006326FB,
475    0xF135942E, 0x3A69478B, 0xBCFD3525, 0x77A1E680,
476    0x6AA4D638, 0xA1F8059D, 0x276C7733, 0xEC30A496,
477    0x191C11EE, 0xD240C24B, 0x54D4B0E5, 0x9F886340,
478    0x828D53F8, 0x49D1805D, 0xCF45F2F3, 0x04192156,
479    0xF54F9383, 0x3E134026, 0xB8873288, 0x73DBE12D,
480    0x6EDED195, 0xA5820230, 0x2316709E, 0xE84AA33B,
481    0x1ACA1375, 0xD196C0D0, 0x5702B27E, 0x9C5E61DB,
482    0x815B5163, 0x4A0782C6, 0xCC93F068, 0x07CF23CD,
483    0xF6999118, 0x3DC542BD, 0xBB513013, 0x700DE3B6,
484    0x6D08D30E, 0xA65400AB, 0x20C07205, 0xEB9CA1A0,
485    0x11E81EB4, 0xDAB4CD11, 0x5C20BFBF, 0x977C6C1A,
486    0x8A795CA2, 0x41258F07, 0xC7B1FDA9, 0x0CED2E0C,
487    0xFDBB9CD9, 0x36E74F7C, 0xB0733DD2, 0x7B2FEE77,
488    0x662ADECF, 0xAD760D6A, 0x2BE27FC4, 0xE0BEAC61,
489    0x123E1C2F, 0xD962CF8A, 0x5FF6BD24, 0x94AA6E81,
490    0x89AF5E39, 0x42F38D9C, 0xC467FF32, 0x0F3B2C97,
491    0xFE6D9E42, 0x35314DE7, 0xB3A53F49, 0x78F9ECEC,
492    0x65FCDC54, 0xAEA00FF1, 0x28347D5F, 0xE368AEFA,
493    0x16441B82, 0xDD18C827, 0x5B8CBA89, 0x90D0692C,
494    0x8DD55994, 0x46898A31, 0xC01DF89F, 0x0B412B3A,
495    0xFA1799EF, 0x314B4A4A, 0xB7DF38E4, 0x7C83EB41,
496    0x6186DBF9, 0xAADA085C, 0x2C4E7AF2, 0xE712A957,
497    0x15921919, 0xDECECABC, 0x585AB812, 0x93066BB7,
498    0x8E035B0F, 0x455F88AA, 0xC3CBFA04, 0x089729A1,
499    0xF9C19B74, 0x329D48D1, 0xB4093A7F, 0x7F55E9DA,
500    0x6250D962, 0xA90C0AC7, 0x2F987869, 0xE4C4ABCC,
501    /* T8_6 */
502    0x00000000, 0xA6770BB4, 0x979F1129, 0x31E81A9D,
503    0xF44F2413, 0x52382FA7, 0x63D0353A, 0xC5A73E8E,
504    0x33EF4E67, 0x959845D3, 0xA4705F4E, 0x020754FA,
505    0xC7A06A74, 0x61D761C0, 0x503F7B5D, 0xF64870E9,
506    0x67DE9CCE, 0xC1A9977A, 0xF0418DE7, 0x56368653,
507    0x9391B8DD, 0x35E6B369, 0x040EA9F4, 0xA279A240,
508    0x5431D2A9, 0xF246D91D, 0xC3AEC380, 0x65D9C834,
509    0xA07EF6BA, 0x0609FD0E, 0x37E1E793, 0x9196EC27,
510    0xCFBD399C, 0x69CA3228, 0x582228B5, 0xFE552301,
511    0x3BF21D8F, 0x9D85163B, 0xAC6D0CA6, 0x0A1A0712,
512    0xFC5277FB, 0x5A257C4F, 0x6BCD66D2, 0xCDBA6D66,
513    0x081D53E8, 0xAE6A585C, 0x9F8242C1, 0x39F54975,
514    0xA863A552, 0x0E14AEE6, 0x3FFCB47B, 0x998BBFCF,
515    0x5C2C8141, 0xFA5B8AF5, 0xCBB39068, 0x6DC49BDC,
516    0x9B8CEB35, 0x3DFBE081, 0x0C13FA1C, 0xAA64F1A8,
517    0x6FC3CF26, 0xC9B4C492, 0xF85CDE0F, 0x5E2BD5BB,
518    0x440B7579, 0xE27C7ECD, 0xD3946450, 0x75E36FE4,
519    0xB044516A, 0x16335ADE, 0x27DB4043, 0x81AC4BF7,
520    0x77E43B1E, 0xD19330AA, 0xE07B2A37, 0x460C2183,
521    0x83AB1F0D, 0x25DC14B9, 0x14340E24, 0xB2430590,
522    0x23D5E9B7, 0x85A2E203, 0xB44AF89E, 0x123DF32A,
523    0xD79ACDA4, 0x71EDC610, 0x4005DC8D, 0xE672D739,
524    0x103AA7D0, 0xB64DAC64, 0x87A5B6F9, 0x21D2BD4D,
525    0xE47583C3, 0x42028877, 0x73EA92EA, 0xD59D995E,
526    0x8BB64CE5, 0x2DC14751, 0x1C295DCC, 0xBA5E5678,
527    0x7FF968F6, 0xD98E6342, 0xE86679DF, 0x4E11726B,
528    0xB8590282, 0x1E2E0936, 0x2FC613AB, 0x89B1181F,
529    0x4C162691, 0xEA612D25, 0xDB8937B8, 0x7DFE3C0C,
530    0xEC68D02B, 0x4A1FDB9F, 0x7BF7C102, 0xDD80CAB6,
531    0x1827F438, 0xBE50FF8C, 0x8FB8E511, 0x29CFEEA5,
532    0xDF879E4C, 0x79F095F8, 0x48188F65, 0xEE6F84D1,
533    0x2BC8BA5F, 0x8DBFB1EB, 0xBC57AB76, 0x1A20A0C2,
534    0x8816EAF2, 0x2E61E146, 0x1F89FBDB, 0xB9FEF06F,
535    0x7C59CEE1, 0xDA2EC555, 0xEBC6DFC8, 0x4DB1D47C,
536    0xBBF9A495, 0x1D8EAF21, 0x2C66B5BC, 0x8A11BE08,
537    0x4FB68086, 0xE9C18B32, 0xD82991AF, 0x7E5E9A1B,
538    0xEFC8763C, 0x49BF7D88, 0x78576715, 0xDE206CA1,
539    0x1B87522F, 0xBDF0599B, 0x8C184306, 0x2A6F48B2,
540    0xDC27385B, 0x7A5033EF, 0x4BB82972, 0xEDCF22C6,
541    0x28681C48, 0x8E1F17FC, 0xBFF70D61, 0x198006D5,
542    0x47ABD36E, 0xE1DCD8DA, 0xD034C247, 0x7643C9F3,
543    0xB3E4F77D, 0x1593FCC9, 0x247BE654, 0x820CEDE0,
544    0x74449D09, 0xD23396BD, 0xE3DB8C20, 0x45AC8794,
545    0x800BB91A, 0x267CB2AE, 0x1794A833, 0xB1E3A387,
546    0x20754FA0, 0x86024414, 0xB7EA5E89, 0x119D553D,
547    0xD43A6BB3, 0x724D6007, 0x43A57A9A, 0xE5D2712E,
548    0x139A01C7, 0xB5ED0A73, 0x840510EE, 0x22721B5A,
549    0xE7D525D4, 0x41A22E60, 0x704A34FD, 0xD63D3F49,
550    0xCC1D9F8B, 0x6A6A943F, 0x5B828EA2, 0xFDF58516,
551    0x3852BB98, 0x9E25B02C, 0xAFCDAAB1, 0x09BAA105,
552    0xFFF2D1EC, 0x5985DA58, 0x686DC0C5, 0xCE1ACB71,
553    0x0BBDF5FF, 0xADCAFE4B, 0x9C22E4D6, 0x3A55EF62,
554    0xABC30345, 0x0DB408F1, 0x3C5C126C, 0x9A2B19D8,
555    0x5F8C2756, 0xF9FB2CE2, 0xC813367F, 0x6E643DCB,
556    0x982C4D22, 0x3E5B4696, 0x0FB35C0B, 0xA9C457BF,
557    0x6C636931, 0xCA146285, 0xFBFC7818, 0x5D8B73AC,
558    0x03A0A617, 0xA5D7ADA3, 0x943FB73E, 0x3248BC8A,
559    0xF7EF8204, 0x519889B0, 0x6070932D, 0xC6079899,
560    0x304FE870, 0x9638E3C4, 0xA7D0F959, 0x01A7F2ED,
561    0xC400CC63, 0x6277C7D7, 0x539FDD4A, 0xF5E8D6FE,
562    0x647E3AD9, 0xC209316D, 0xF3E12BF0, 0x55962044,
563    0x90311ECA, 0x3646157E, 0x07AE0FE3, 0xA1D90457,
564    0x579174BE, 0xF1E67F0A, 0xC00E6597, 0x66796E23,
565    0xA3DE50AD, 0x05A95B19, 0x34414184, 0x92364A30,
566    /* T8_7 */
567    0x00000000, 0xCCAA009E, 0x4225077D, 0x8E8F07E3,
568    0x844A0EFA, 0x48E00E64, 0xC66F0987, 0x0AC50919,
569    0xD3E51BB5, 0x1F4F1B2B, 0x91C01CC8, 0x5D6A1C56,
570    0x57AF154F, 0x9B0515D1, 0x158A1232, 0xD92012AC,
571    0x7CBB312B, 0xB01131B5, 0x3E9E3656, 0xF23436C8,
572    0xF8F13FD1, 0x345B3F4F, 0xBAD438AC, 0x767E3832,
573    0xAF5E2A9E, 0x63F42A00, 0xED7B2DE3, 0x21D12D7D,
574    0x2B142464, 0xE7BE24FA, 0x69312319, 0xA59B2387,
575    0xF9766256, 0x35DC62C8, 0xBB53652B, 0x77F965B5,
576    0x7D3C6CAC, 0xB1966C32, 0x3F196BD1, 0xF3B36B4F,
577    0x2A9379E3, 0xE639797D, 0x68B67E9E, 0xA41C7E00,
578    0xAED97719, 0x62737787, 0xECFC7064, 0x205670FA,
579    0x85CD537D, 0x496753E3, 0xC7E85400, 0x0B42549E,
580    0x01875D87, 0xCD2D5D19, 0x43A25AFA, 0x8F085A64,
581    0x562848C8, 0x9A824856, 0x140D4FB5, 0xD8A74F2B,
582    0xD2624632, 0x1EC846AC, 0x9047414F, 0x5CED41D1,
583    0x299DC2ED, 0xE537C273, 0x6BB8C590, 0xA712C50E,
584    0xADD7CC17, 0x617DCC89, 0xEFF2CB6A, 0x2358CBF4,
585    0xFA78D958, 0x36D2D9C6, 0xB85DDE25, 0x74F7DEBB,
586    0x7E32D7A2, 0xB298D73C, 0x3C17D0DF, 0xF0BDD041,
587    0x5526F3C6, 0x998CF358, 0x1703F4BB, 0xDBA9F425,
588    0xD16CFD3C, 0x1DC6FDA2, 0x9349FA41, 0x5FE3FADF,
589    0x86C3E873, 0x4A69E8ED, 0xC4E6EF0E, 0x084CEF90,
590    0x0289E689, 0xCE23E617, 0x40ACE1F4, 0x8C06E16A,
591    0xD0EBA0BB, 0x1C41A025, 0x92CEA7C6, 0x5E64A758,
592    0x54A1AE41, 0x980BAEDF, 0x1684A93C, 0xDA2EA9A2,
593    0x030EBB0E, 0xCFA4BB90, 0x412BBC73, 0x8D81BCED,
594    0x8744B5F4, 0x4BEEB56A, 0xC561B289, 0x09CBB217,
595    0xAC509190, 0x60FA910E, 0xEE7596ED, 0x22DF9673,
596    0x281A9F6A, 0xE4B09FF4, 0x6A3F9817, 0xA6959889,
597    0x7FB58A25, 0xB31F8ABB, 0x3D908D58, 0xF13A8DC6,
598    0xFBFF84DF, 0x37558441, 0xB9DA83A2, 0x7570833C,
599    0x533B85DA, 0x9F918544, 0x111E82A7, 0xDDB48239,
600    0xD7718B20, 0x1BDB8BBE, 0x95548C5D, 0x59FE8CC3,
601    0x80DE9E6F, 0x4C749EF1, 0xC2FB9912, 0x0E51998C,
602    0x04949095, 0xC83E900B, 0x46B197E8, 0x8A1B9776,
603    0x2F80B4F1, 0xE32AB46F, 0x6DA5B38C, 0xA10FB312,
604    0xABCABA0B, 0x6760BA95, 0xE9EFBD76, 0x2545BDE8,
605    0xFC65AF44, 0x30CFAFDA, 0xBE40A839, 0x72EAA8A7,
606    0x782FA1BE, 0xB485A120, 0x3A0AA6C3, 0xF6A0A65D,
607    0xAA4DE78C, 0x66E7E712, 0xE868E0F1, 0x24C2E06F,
608    0x2E07E976, 0xE2ADE9E8, 0x6C22EE0B, 0xA088EE95,
609    0x79A8FC39, 0xB502FCA7, 0x3B8DFB44, 0xF727FBDA,
610    0xFDE2F2C3, 0x3148F25D, 0xBFC7F5BE, 0x736DF520,
611    0xD6F6D6A7, 0x1A5CD639, 0x94D3D1DA, 0x5879D144,
612    0x52BCD85D, 0x9E16D8C3, 0x1099DF20, 0xDC33DFBE,
613    0x0513CD12, 0xC9B9CD8C, 0x4736CA6F, 0x8B9CCAF1,
614    0x8159C3E8, 0x4DF3C376, 0xC37CC495, 0x0FD6C40B,
615    0x7AA64737, 0xB60C47A9, 0x3883404A, 0xF42940D4,
616    0xFEEC49CD, 0x32464953, 0xBCC94EB0, 0x70634E2E,
617    0xA9435C82, 0x65E95C1C, 0xEB665BFF, 0x27CC5B61,
618    0x2D095278, 0xE1A352E6, 0x6F2C5505, 0xA386559B,
619    0x061D761C, 0xCAB77682, 0x44387161, 0x889271FF,
620    0x825778E6, 0x4EFD7878, 0xC0727F9B, 0x0CD87F05,
621    0xD5F86DA9, 0x19526D37, 0x97DD6AD4, 0x5B776A4A,
622    0x51B26353, 0x9D1863CD, 0x1397642E, 0xDF3D64B0,
623    0x83D02561, 0x4F7A25FF, 0xC1F5221C, 0x0D5F2282,
624    0x079A2B9B, 0xCB302B05, 0x45BF2CE6, 0x89152C78,
625    0x50353ED4, 0x9C9F3E4A, 0x121039A9, 0xDEBA3937,
626    0xD47F302E, 0x18D530B0, 0x965A3753, 0x5AF037CD,
627    0xFF6B144A, 0x33C114D4, 0xBD4E1337, 0x71E413A9,
628    0x7B211AB0, 0xB78B1A2E, 0x39041DCD, 0xF5AE1D53,
629    0x2C8E0FFF, 0xE0240F61, 0x6EAB0882, 0xA201081C,
630    0xA8C40105, 0x646E019B, 0xEAE10678, 0x264B06E6
631  };
632}