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 */
017/*
018 * Some portions of this file Copyright (c) 2004-2006 Intel Corportation
019 * and licensed under the BSD license.
020 */
021package org.apache.commons.codec.digest;
022
023import java.util.zip.Checksum;
024
025/**
026 * A pure-java implementation of the CRC32 checksum that uses
027 * the CRC32-C polynomial, the same polynomial used by iSCSI
028 * and implemented on many Intel chipsets supporting SSE4.2.
029 *
030 * Copied from Hadoop 2.3.6:
031 * https://git-wip-us.apache.org/repos/asf?p=hadoop.git;a=blob_plain;
032 * f=hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/PureJavaCrc32C.java;
033 * hb=2120de588b92b9f22b1cc4188761d6a8c61aa778
034 * <p>
035 * This class is Not ThreadSafe
036 * @since 1.11
037 */
038public class PureJavaCrc32C implements Checksum {
039
040  /** the current CRC value, bit-flipped */
041  private int crc;
042
043  /** Create a new PureJavaCrc32 object. */
044  public PureJavaCrc32C() {
045    reset();
046  }
047
048  @Override
049  public long getValue() {
050    final long ret = crc;
051    return (~ret) & 0xffffffffL;
052  }
053
054  @Override
055  public void reset() {
056    crc = 0xffffffff;
057  }
058
059  @Override
060  public void update(final byte[] b, int off, int len) {
061    int localCrc = crc;
062
063    while(len > 7) {
064      final int c0 =(b[off+0] ^ localCrc) & 0xff;
065      final int c1 =(b[off+1] ^ (localCrc >>>= 8)) & 0xff;
066      final int c2 =(b[off+2] ^ (localCrc >>>= 8)) & 0xff;
067      final int c3 =(b[off+3] ^ (localCrc >>>= 8)) & 0xff;
068      localCrc = (T[T8_7_start + c0] ^ T[T8_6_start + c1]) ^
069                 (T[T8_5_start + c2] ^ T[T8_4_start + c3]);
070
071      final int c4 = b[off+4] & 0xff;
072      final int c5 = b[off+5] & 0xff;
073      final int c6 = b[off+6] & 0xff;
074      final int c7 = b[off+7] & 0xff;
075
076      localCrc ^= (T[T8_3_start + c4] ^ T[T8_2_start + c5]) ^
077                  (T[T8_1_start + c6] ^ T[T8_0_start + c7]);
078
079      off += 8;
080      len -= 8;
081    }
082
083    /* loop unroll - duff's device style */
084    switch(len) {
085      case 7: localCrc = (localCrc >>> 8) ^ T[T8_0_start + ((localCrc ^ b[off++]) & 0xff)];
086      case 6: localCrc = (localCrc >>> 8) ^ T[T8_0_start + ((localCrc ^ b[off++]) & 0xff)];
087      case 5: localCrc = (localCrc >>> 8) ^ T[T8_0_start + ((localCrc ^ b[off++]) & 0xff)];
088      case 4: localCrc = (localCrc >>> 8) ^ T[T8_0_start + ((localCrc ^ b[off++]) & 0xff)];
089      case 3: localCrc = (localCrc >>> 8) ^ T[T8_0_start + ((localCrc ^ b[off++]) & 0xff)];
090      case 2: localCrc = (localCrc >>> 8) ^ T[T8_0_start + ((localCrc ^ b[off++]) & 0xff)];
091      case 1: localCrc = (localCrc >>> 8) ^ T[T8_0_start + ((localCrc ^ b[off++]) & 0xff)];
092      default:
093        break; // satisfy Findbugs
094    }
095
096    // Publish crc out to object
097    crc = localCrc;
098  }
099
100  @Override
101  final public void update(final int b) {
102    crc = (crc >>> 8) ^ T[T8_0_start + ((crc ^ b) & 0xff)];
103  }
104
105  // CRC polynomial tables generated by:
106  // java -cp build/test/classes/:build/classes/ \
107  //   org.apache.hadoop.util.TestPureJavaCrc32\$Table 82F63B78
108
109  private static final int T8_0_start = 0*256;
110  private static final int T8_1_start = 1*256;
111  private static final int T8_2_start = 2*256;
112  private static final int T8_3_start = 3*256;
113  private static final int T8_4_start = 4*256;
114  private static final int T8_5_start = 5*256;
115  private static final int T8_6_start = 6*256;
116  private static final int T8_7_start = 7*256;
117
118  private static final int[] T = new int[] {
119    /* T8_0 */
120    0x00000000, 0xF26B8303, 0xE13B70F7, 0x1350F3F4,
121    0xC79A971F, 0x35F1141C, 0x26A1E7E8, 0xD4CA64EB,
122    0x8AD958CF, 0x78B2DBCC, 0x6BE22838, 0x9989AB3B,
123    0x4D43CFD0, 0xBF284CD3, 0xAC78BF27, 0x5E133C24,
124    0x105EC76F, 0xE235446C, 0xF165B798, 0x030E349B,
125    0xD7C45070, 0x25AFD373, 0x36FF2087, 0xC494A384,
126    0x9A879FA0, 0x68EC1CA3, 0x7BBCEF57, 0x89D76C54,
127    0x5D1D08BF, 0xAF768BBC, 0xBC267848, 0x4E4DFB4B,
128    0x20BD8EDE, 0xD2D60DDD, 0xC186FE29, 0x33ED7D2A,
129    0xE72719C1, 0x154C9AC2, 0x061C6936, 0xF477EA35,
130    0xAA64D611, 0x580F5512, 0x4B5FA6E6, 0xB93425E5,
131    0x6DFE410E, 0x9F95C20D, 0x8CC531F9, 0x7EAEB2FA,
132    0x30E349B1, 0xC288CAB2, 0xD1D83946, 0x23B3BA45,
133    0xF779DEAE, 0x05125DAD, 0x1642AE59, 0xE4292D5A,
134    0xBA3A117E, 0x4851927D, 0x5B016189, 0xA96AE28A,
135    0x7DA08661, 0x8FCB0562, 0x9C9BF696, 0x6EF07595,
136    0x417B1DBC, 0xB3109EBF, 0xA0406D4B, 0x522BEE48,
137    0x86E18AA3, 0x748A09A0, 0x67DAFA54, 0x95B17957,
138    0xCBA24573, 0x39C9C670, 0x2A993584, 0xD8F2B687,
139    0x0C38D26C, 0xFE53516F, 0xED03A29B, 0x1F682198,
140    0x5125DAD3, 0xA34E59D0, 0xB01EAA24, 0x42752927,
141    0x96BF4DCC, 0x64D4CECF, 0x77843D3B, 0x85EFBE38,
142    0xDBFC821C, 0x2997011F, 0x3AC7F2EB, 0xC8AC71E8,
143    0x1C661503, 0xEE0D9600, 0xFD5D65F4, 0x0F36E6F7,
144    0x61C69362, 0x93AD1061, 0x80FDE395, 0x72966096,
145    0xA65C047D, 0x5437877E, 0x4767748A, 0xB50CF789,
146    0xEB1FCBAD, 0x197448AE, 0x0A24BB5A, 0xF84F3859,
147    0x2C855CB2, 0xDEEEDFB1, 0xCDBE2C45, 0x3FD5AF46,
148    0x7198540D, 0x83F3D70E, 0x90A324FA, 0x62C8A7F9,
149    0xB602C312, 0x44694011, 0x5739B3E5, 0xA55230E6,
150    0xFB410CC2, 0x092A8FC1, 0x1A7A7C35, 0xE811FF36,
151    0x3CDB9BDD, 0xCEB018DE, 0xDDE0EB2A, 0x2F8B6829,
152    0x82F63B78, 0x709DB87B, 0x63CD4B8F, 0x91A6C88C,
153    0x456CAC67, 0xB7072F64, 0xA457DC90, 0x563C5F93,
154    0x082F63B7, 0xFA44E0B4, 0xE9141340, 0x1B7F9043,
155    0xCFB5F4A8, 0x3DDE77AB, 0x2E8E845F, 0xDCE5075C,
156    0x92A8FC17, 0x60C37F14, 0x73938CE0, 0x81F80FE3,
157    0x55326B08, 0xA759E80B, 0xB4091BFF, 0x466298FC,
158    0x1871A4D8, 0xEA1A27DB, 0xF94AD42F, 0x0B21572C,
159    0xDFEB33C7, 0x2D80B0C4, 0x3ED04330, 0xCCBBC033,
160    0xA24BB5A6, 0x502036A5, 0x4370C551, 0xB11B4652,
161    0x65D122B9, 0x97BAA1BA, 0x84EA524E, 0x7681D14D,
162    0x2892ED69, 0xDAF96E6A, 0xC9A99D9E, 0x3BC21E9D,
163    0xEF087A76, 0x1D63F975, 0x0E330A81, 0xFC588982,
164    0xB21572C9, 0x407EF1CA, 0x532E023E, 0xA145813D,
165    0x758FE5D6, 0x87E466D5, 0x94B49521, 0x66DF1622,
166    0x38CC2A06, 0xCAA7A905, 0xD9F75AF1, 0x2B9CD9F2,
167    0xFF56BD19, 0x0D3D3E1A, 0x1E6DCDEE, 0xEC064EED,
168    0xC38D26C4, 0x31E6A5C7, 0x22B65633, 0xD0DDD530,
169    0x0417B1DB, 0xF67C32D8, 0xE52CC12C, 0x1747422F,
170    0x49547E0B, 0xBB3FFD08, 0xA86F0EFC, 0x5A048DFF,
171    0x8ECEE914, 0x7CA56A17, 0x6FF599E3, 0x9D9E1AE0,
172    0xD3D3E1AB, 0x21B862A8, 0x32E8915C, 0xC083125F,
173    0x144976B4, 0xE622F5B7, 0xF5720643, 0x07198540,
174    0x590AB964, 0xAB613A67, 0xB831C993, 0x4A5A4A90,
175    0x9E902E7B, 0x6CFBAD78, 0x7FAB5E8C, 0x8DC0DD8F,
176    0xE330A81A, 0x115B2B19, 0x020BD8ED, 0xF0605BEE,
177    0x24AA3F05, 0xD6C1BC06, 0xC5914FF2, 0x37FACCF1,
178    0x69E9F0D5, 0x9B8273D6, 0x88D28022, 0x7AB90321,
179    0xAE7367CA, 0x5C18E4C9, 0x4F48173D, 0xBD23943E,
180    0xF36E6F75, 0x0105EC76, 0x12551F82, 0xE03E9C81,
181    0x34F4F86A, 0xC69F7B69, 0xD5CF889D, 0x27A40B9E,
182    0x79B737BA, 0x8BDCB4B9, 0x988C474D, 0x6AE7C44E,
183    0xBE2DA0A5, 0x4C4623A6, 0x5F16D052, 0xAD7D5351,
184    /* T8_1 */
185    0x00000000, 0x13A29877, 0x274530EE, 0x34E7A899,
186    0x4E8A61DC, 0x5D28F9AB, 0x69CF5132, 0x7A6DC945,
187    0x9D14C3B8, 0x8EB65BCF, 0xBA51F356, 0xA9F36B21,
188    0xD39EA264, 0xC03C3A13, 0xF4DB928A, 0xE7790AFD,
189    0x3FC5F181, 0x2C6769F6, 0x1880C16F, 0x0B225918,
190    0x714F905D, 0x62ED082A, 0x560AA0B3, 0x45A838C4,
191    0xA2D13239, 0xB173AA4E, 0x859402D7, 0x96369AA0,
192    0xEC5B53E5, 0xFFF9CB92, 0xCB1E630B, 0xD8BCFB7C,
193    0x7F8BE302, 0x6C297B75, 0x58CED3EC, 0x4B6C4B9B,
194    0x310182DE, 0x22A31AA9, 0x1644B230, 0x05E62A47,
195    0xE29F20BA, 0xF13DB8CD, 0xC5DA1054, 0xD6788823,
196    0xAC154166, 0xBFB7D911, 0x8B507188, 0x98F2E9FF,
197    0x404E1283, 0x53EC8AF4, 0x670B226D, 0x74A9BA1A,
198    0x0EC4735F, 0x1D66EB28, 0x298143B1, 0x3A23DBC6,
199    0xDD5AD13B, 0xCEF8494C, 0xFA1FE1D5, 0xE9BD79A2,
200    0x93D0B0E7, 0x80722890, 0xB4958009, 0xA737187E,
201    0xFF17C604, 0xECB55E73, 0xD852F6EA, 0xCBF06E9D,
202    0xB19DA7D8, 0xA23F3FAF, 0x96D89736, 0x857A0F41,
203    0x620305BC, 0x71A19DCB, 0x45463552, 0x56E4AD25,
204    0x2C896460, 0x3F2BFC17, 0x0BCC548E, 0x186ECCF9,
205    0xC0D23785, 0xD370AFF2, 0xE797076B, 0xF4359F1C,
206    0x8E585659, 0x9DFACE2E, 0xA91D66B7, 0xBABFFEC0,
207    0x5DC6F43D, 0x4E646C4A, 0x7A83C4D3, 0x69215CA4,
208    0x134C95E1, 0x00EE0D96, 0x3409A50F, 0x27AB3D78,
209    0x809C2506, 0x933EBD71, 0xA7D915E8, 0xB47B8D9F,
210    0xCE1644DA, 0xDDB4DCAD, 0xE9537434, 0xFAF1EC43,
211    0x1D88E6BE, 0x0E2A7EC9, 0x3ACDD650, 0x296F4E27,
212    0x53028762, 0x40A01F15, 0x7447B78C, 0x67E52FFB,
213    0xBF59D487, 0xACFB4CF0, 0x981CE469, 0x8BBE7C1E,
214    0xF1D3B55B, 0xE2712D2C, 0xD69685B5, 0xC5341DC2,
215    0x224D173F, 0x31EF8F48, 0x050827D1, 0x16AABFA6,
216    0x6CC776E3, 0x7F65EE94, 0x4B82460D, 0x5820DE7A,
217    0xFBC3FAF9, 0xE861628E, 0xDC86CA17, 0xCF245260,
218    0xB5499B25, 0xA6EB0352, 0x920CABCB, 0x81AE33BC,
219    0x66D73941, 0x7575A136, 0x419209AF, 0x523091D8,
220    0x285D589D, 0x3BFFC0EA, 0x0F186873, 0x1CBAF004,
221    0xC4060B78, 0xD7A4930F, 0xE3433B96, 0xF0E1A3E1,
222    0x8A8C6AA4, 0x992EF2D3, 0xADC95A4A, 0xBE6BC23D,
223    0x5912C8C0, 0x4AB050B7, 0x7E57F82E, 0x6DF56059,
224    0x1798A91C, 0x043A316B, 0x30DD99F2, 0x237F0185,
225    0x844819FB, 0x97EA818C, 0xA30D2915, 0xB0AFB162,
226    0xCAC27827, 0xD960E050, 0xED8748C9, 0xFE25D0BE,
227    0x195CDA43, 0x0AFE4234, 0x3E19EAAD, 0x2DBB72DA,
228    0x57D6BB9F, 0x447423E8, 0x70938B71, 0x63311306,
229    0xBB8DE87A, 0xA82F700D, 0x9CC8D894, 0x8F6A40E3,
230    0xF50789A6, 0xE6A511D1, 0xD242B948, 0xC1E0213F,
231    0x26992BC2, 0x353BB3B5, 0x01DC1B2C, 0x127E835B,
232    0x68134A1E, 0x7BB1D269, 0x4F567AF0, 0x5CF4E287,
233    0x04D43CFD, 0x1776A48A, 0x23910C13, 0x30339464,
234    0x4A5E5D21, 0x59FCC556, 0x6D1B6DCF, 0x7EB9F5B8,
235    0x99C0FF45, 0x8A626732, 0xBE85CFAB, 0xAD2757DC,
236    0xD74A9E99, 0xC4E806EE, 0xF00FAE77, 0xE3AD3600,
237    0x3B11CD7C, 0x28B3550B, 0x1C54FD92, 0x0FF665E5,
238    0x759BACA0, 0x663934D7, 0x52DE9C4E, 0x417C0439,
239    0xA6050EC4, 0xB5A796B3, 0x81403E2A, 0x92E2A65D,
240    0xE88F6F18, 0xFB2DF76F, 0xCFCA5FF6, 0xDC68C781,
241    0x7B5FDFFF, 0x68FD4788, 0x5C1AEF11, 0x4FB87766,
242    0x35D5BE23, 0x26772654, 0x12908ECD, 0x013216BA,
243    0xE64B1C47, 0xF5E98430, 0xC10E2CA9, 0xD2ACB4DE,
244    0xA8C17D9B, 0xBB63E5EC, 0x8F844D75, 0x9C26D502,
245    0x449A2E7E, 0x5738B609, 0x63DF1E90, 0x707D86E7,
246    0x0A104FA2, 0x19B2D7D5, 0x2D557F4C, 0x3EF7E73B,
247    0xD98EEDC6, 0xCA2C75B1, 0xFECBDD28, 0xED69455F,
248    0x97048C1A, 0x84A6146D, 0xB041BCF4, 0xA3E32483,
249    /* T8_2 */
250    0x00000000, 0xA541927E, 0x4F6F520D, 0xEA2EC073,
251    0x9EDEA41A, 0x3B9F3664, 0xD1B1F617, 0x74F06469,
252    0x38513EC5, 0x9D10ACBB, 0x773E6CC8, 0xD27FFEB6,
253    0xA68F9ADF, 0x03CE08A1, 0xE9E0C8D2, 0x4CA15AAC,
254    0x70A27D8A, 0xD5E3EFF4, 0x3FCD2F87, 0x9A8CBDF9,
255    0xEE7CD990, 0x4B3D4BEE, 0xA1138B9D, 0x045219E3,
256    0x48F3434F, 0xEDB2D131, 0x079C1142, 0xA2DD833C,
257    0xD62DE755, 0x736C752B, 0x9942B558, 0x3C032726,
258    0xE144FB14, 0x4405696A, 0xAE2BA919, 0x0B6A3B67,
259    0x7F9A5F0E, 0xDADBCD70, 0x30F50D03, 0x95B49F7D,
260    0xD915C5D1, 0x7C5457AF, 0x967A97DC, 0x333B05A2,
261    0x47CB61CB, 0xE28AF3B5, 0x08A433C6, 0xADE5A1B8,
262    0x91E6869E, 0x34A714E0, 0xDE89D493, 0x7BC846ED,
263    0x0F382284, 0xAA79B0FA, 0x40577089, 0xE516E2F7,
264    0xA9B7B85B, 0x0CF62A25, 0xE6D8EA56, 0x43997828,
265    0x37691C41, 0x92288E3F, 0x78064E4C, 0xDD47DC32,
266    0xC76580D9, 0x622412A7, 0x880AD2D4, 0x2D4B40AA,
267    0x59BB24C3, 0xFCFAB6BD, 0x16D476CE, 0xB395E4B0,
268    0xFF34BE1C, 0x5A752C62, 0xB05BEC11, 0x151A7E6F,
269    0x61EA1A06, 0xC4AB8878, 0x2E85480B, 0x8BC4DA75,
270    0xB7C7FD53, 0x12866F2D, 0xF8A8AF5E, 0x5DE93D20,
271    0x29195949, 0x8C58CB37, 0x66760B44, 0xC337993A,
272    0x8F96C396, 0x2AD751E8, 0xC0F9919B, 0x65B803E5,
273    0x1148678C, 0xB409F5F2, 0x5E273581, 0xFB66A7FF,
274    0x26217BCD, 0x8360E9B3, 0x694E29C0, 0xCC0FBBBE,
275    0xB8FFDFD7, 0x1DBE4DA9, 0xF7908DDA, 0x52D11FA4,
276    0x1E704508, 0xBB31D776, 0x511F1705, 0xF45E857B,
277    0x80AEE112, 0x25EF736C, 0xCFC1B31F, 0x6A802161,
278    0x56830647, 0xF3C29439, 0x19EC544A, 0xBCADC634,
279    0xC85DA25D, 0x6D1C3023, 0x8732F050, 0x2273622E,
280    0x6ED23882, 0xCB93AAFC, 0x21BD6A8F, 0x84FCF8F1,
281    0xF00C9C98, 0x554D0EE6, 0xBF63CE95, 0x1A225CEB,
282    0x8B277743, 0x2E66E53D, 0xC448254E, 0x6109B730,
283    0x15F9D359, 0xB0B84127, 0x5A968154, 0xFFD7132A,
284    0xB3764986, 0x1637DBF8, 0xFC191B8B, 0x595889F5,
285    0x2DA8ED9C, 0x88E97FE2, 0x62C7BF91, 0xC7862DEF,
286    0xFB850AC9, 0x5EC498B7, 0xB4EA58C4, 0x11ABCABA,
287    0x655BAED3, 0xC01A3CAD, 0x2A34FCDE, 0x8F756EA0,
288    0xC3D4340C, 0x6695A672, 0x8CBB6601, 0x29FAF47F,
289    0x5D0A9016, 0xF84B0268, 0x1265C21B, 0xB7245065,
290    0x6A638C57, 0xCF221E29, 0x250CDE5A, 0x804D4C24,
291    0xF4BD284D, 0x51FCBA33, 0xBBD27A40, 0x1E93E83E,
292    0x5232B292, 0xF77320EC, 0x1D5DE09F, 0xB81C72E1,
293    0xCCEC1688, 0x69AD84F6, 0x83834485, 0x26C2D6FB,
294    0x1AC1F1DD, 0xBF8063A3, 0x55AEA3D0, 0xF0EF31AE,
295    0x841F55C7, 0x215EC7B9, 0xCB7007CA, 0x6E3195B4,
296    0x2290CF18, 0x87D15D66, 0x6DFF9D15, 0xC8BE0F6B,
297    0xBC4E6B02, 0x190FF97C, 0xF321390F, 0x5660AB71,
298    0x4C42F79A, 0xE90365E4, 0x032DA597, 0xA66C37E9,
299    0xD29C5380, 0x77DDC1FE, 0x9DF3018D, 0x38B293F3,
300    0x7413C95F, 0xD1525B21, 0x3B7C9B52, 0x9E3D092C,
301    0xEACD6D45, 0x4F8CFF3B, 0xA5A23F48, 0x00E3AD36,
302    0x3CE08A10, 0x99A1186E, 0x738FD81D, 0xD6CE4A63,
303    0xA23E2E0A, 0x077FBC74, 0xED517C07, 0x4810EE79,
304    0x04B1B4D5, 0xA1F026AB, 0x4BDEE6D8, 0xEE9F74A6,
305    0x9A6F10CF, 0x3F2E82B1, 0xD50042C2, 0x7041D0BC,
306    0xAD060C8E, 0x08479EF0, 0xE2695E83, 0x4728CCFD,
307    0x33D8A894, 0x96993AEA, 0x7CB7FA99, 0xD9F668E7,
308    0x9557324B, 0x3016A035, 0xDA386046, 0x7F79F238,
309    0x0B899651, 0xAEC8042F, 0x44E6C45C, 0xE1A75622,
310    0xDDA47104, 0x78E5E37A, 0x92CB2309, 0x378AB177,
311    0x437AD51E, 0xE63B4760, 0x0C158713, 0xA954156D,
312    0xE5F54FC1, 0x40B4DDBF, 0xAA9A1DCC, 0x0FDB8FB2,
313    0x7B2BEBDB, 0xDE6A79A5, 0x3444B9D6, 0x91052BA8,
314    /* T8_3 */
315    0x00000000, 0xDD45AAB8, 0xBF672381, 0x62228939,
316    0x7B2231F3, 0xA6679B4B, 0xC4451272, 0x1900B8CA,
317    0xF64463E6, 0x2B01C95E, 0x49234067, 0x9466EADF,
318    0x8D665215, 0x5023F8AD, 0x32017194, 0xEF44DB2C,
319    0xE964B13D, 0x34211B85, 0x560392BC, 0x8B463804,
320    0x924680CE, 0x4F032A76, 0x2D21A34F, 0xF06409F7,
321    0x1F20D2DB, 0xC2657863, 0xA047F15A, 0x7D025BE2,
322    0x6402E328, 0xB9474990, 0xDB65C0A9, 0x06206A11,
323    0xD725148B, 0x0A60BE33, 0x6842370A, 0xB5079DB2,
324    0xAC072578, 0x71428FC0, 0x136006F9, 0xCE25AC41,
325    0x2161776D, 0xFC24DDD5, 0x9E0654EC, 0x4343FE54,
326    0x5A43469E, 0x8706EC26, 0xE524651F, 0x3861CFA7,
327    0x3E41A5B6, 0xE3040F0E, 0x81268637, 0x5C632C8F,
328    0x45639445, 0x98263EFD, 0xFA04B7C4, 0x27411D7C,
329    0xC805C650, 0x15406CE8, 0x7762E5D1, 0xAA274F69,
330    0xB327F7A3, 0x6E625D1B, 0x0C40D422, 0xD1057E9A,
331    0xABA65FE7, 0x76E3F55F, 0x14C17C66, 0xC984D6DE,
332    0xD0846E14, 0x0DC1C4AC, 0x6FE34D95, 0xB2A6E72D,
333    0x5DE23C01, 0x80A796B9, 0xE2851F80, 0x3FC0B538,
334    0x26C00DF2, 0xFB85A74A, 0x99A72E73, 0x44E284CB,
335    0x42C2EEDA, 0x9F874462, 0xFDA5CD5B, 0x20E067E3,
336    0x39E0DF29, 0xE4A57591, 0x8687FCA8, 0x5BC25610,
337    0xB4868D3C, 0x69C32784, 0x0BE1AEBD, 0xD6A40405,
338    0xCFA4BCCF, 0x12E11677, 0x70C39F4E, 0xAD8635F6,
339    0x7C834B6C, 0xA1C6E1D4, 0xC3E468ED, 0x1EA1C255,
340    0x07A17A9F, 0xDAE4D027, 0xB8C6591E, 0x6583F3A6,
341    0x8AC7288A, 0x57828232, 0x35A00B0B, 0xE8E5A1B3,
342    0xF1E51979, 0x2CA0B3C1, 0x4E823AF8, 0x93C79040,
343    0x95E7FA51, 0x48A250E9, 0x2A80D9D0, 0xF7C57368,
344    0xEEC5CBA2, 0x3380611A, 0x51A2E823, 0x8CE7429B,
345    0x63A399B7, 0xBEE6330F, 0xDCC4BA36, 0x0181108E,
346    0x1881A844, 0xC5C402FC, 0xA7E68BC5, 0x7AA3217D,
347    0x52A0C93F, 0x8FE56387, 0xEDC7EABE, 0x30824006,
348    0x2982F8CC, 0xF4C75274, 0x96E5DB4D, 0x4BA071F5,
349    0xA4E4AAD9, 0x79A10061, 0x1B838958, 0xC6C623E0,
350    0xDFC69B2A, 0x02833192, 0x60A1B8AB, 0xBDE41213,
351    0xBBC47802, 0x6681D2BA, 0x04A35B83, 0xD9E6F13B,
352    0xC0E649F1, 0x1DA3E349, 0x7F816A70, 0xA2C4C0C8,
353    0x4D801BE4, 0x90C5B15C, 0xF2E73865, 0x2FA292DD,
354    0x36A22A17, 0xEBE780AF, 0x89C50996, 0x5480A32E,
355    0x8585DDB4, 0x58C0770C, 0x3AE2FE35, 0xE7A7548D,
356    0xFEA7EC47, 0x23E246FF, 0x41C0CFC6, 0x9C85657E,
357    0x73C1BE52, 0xAE8414EA, 0xCCA69DD3, 0x11E3376B,
358    0x08E38FA1, 0xD5A62519, 0xB784AC20, 0x6AC10698,
359    0x6CE16C89, 0xB1A4C631, 0xD3864F08, 0x0EC3E5B0,
360    0x17C35D7A, 0xCA86F7C2, 0xA8A47EFB, 0x75E1D443,
361    0x9AA50F6F, 0x47E0A5D7, 0x25C22CEE, 0xF8878656,
362    0xE1873E9C, 0x3CC29424, 0x5EE01D1D, 0x83A5B7A5,
363    0xF90696D8, 0x24433C60, 0x4661B559, 0x9B241FE1,
364    0x8224A72B, 0x5F610D93, 0x3D4384AA, 0xE0062E12,
365    0x0F42F53E, 0xD2075F86, 0xB025D6BF, 0x6D607C07,
366    0x7460C4CD, 0xA9256E75, 0xCB07E74C, 0x16424DF4,
367    0x106227E5, 0xCD278D5D, 0xAF050464, 0x7240AEDC,
368    0x6B401616, 0xB605BCAE, 0xD4273597, 0x09629F2F,
369    0xE6264403, 0x3B63EEBB, 0x59416782, 0x8404CD3A,
370    0x9D0475F0, 0x4041DF48, 0x22635671, 0xFF26FCC9,
371    0x2E238253, 0xF36628EB, 0x9144A1D2, 0x4C010B6A,
372    0x5501B3A0, 0x88441918, 0xEA669021, 0x37233A99,
373    0xD867E1B5, 0x05224B0D, 0x6700C234, 0xBA45688C,
374    0xA345D046, 0x7E007AFE, 0x1C22F3C7, 0xC167597F,
375    0xC747336E, 0x1A0299D6, 0x782010EF, 0xA565BA57,
376    0xBC65029D, 0x6120A825, 0x0302211C, 0xDE478BA4,
377    0x31035088, 0xEC46FA30, 0x8E647309, 0x5321D9B1,
378    0x4A21617B, 0x9764CBC3, 0xF54642FA, 0x2803E842,
379    /* T8_4 */
380    0x00000000, 0x38116FAC, 0x7022DF58, 0x4833B0F4,
381    0xE045BEB0, 0xD854D11C, 0x906761E8, 0xA8760E44,
382    0xC5670B91, 0xFD76643D, 0xB545D4C9, 0x8D54BB65,
383    0x2522B521, 0x1D33DA8D, 0x55006A79, 0x6D1105D5,
384    0x8F2261D3, 0xB7330E7F, 0xFF00BE8B, 0xC711D127,
385    0x6F67DF63, 0x5776B0CF, 0x1F45003B, 0x27546F97,
386    0x4A456A42, 0x725405EE, 0x3A67B51A, 0x0276DAB6,
387    0xAA00D4F2, 0x9211BB5E, 0xDA220BAA, 0xE2336406,
388    0x1BA8B557, 0x23B9DAFB, 0x6B8A6A0F, 0x539B05A3,
389    0xFBED0BE7, 0xC3FC644B, 0x8BCFD4BF, 0xB3DEBB13,
390    0xDECFBEC6, 0xE6DED16A, 0xAEED619E, 0x96FC0E32,
391    0x3E8A0076, 0x069B6FDA, 0x4EA8DF2E, 0x76B9B082,
392    0x948AD484, 0xAC9BBB28, 0xE4A80BDC, 0xDCB96470,
393    0x74CF6A34, 0x4CDE0598, 0x04EDB56C, 0x3CFCDAC0,
394    0x51EDDF15, 0x69FCB0B9, 0x21CF004D, 0x19DE6FE1,
395    0xB1A861A5, 0x89B90E09, 0xC18ABEFD, 0xF99BD151,
396    0x37516AAE, 0x0F400502, 0x4773B5F6, 0x7F62DA5A,
397    0xD714D41E, 0xEF05BBB2, 0xA7360B46, 0x9F2764EA,
398    0xF236613F, 0xCA270E93, 0x8214BE67, 0xBA05D1CB,
399    0x1273DF8F, 0x2A62B023, 0x625100D7, 0x5A406F7B,
400    0xB8730B7D, 0x806264D1, 0xC851D425, 0xF040BB89,
401    0x5836B5CD, 0x6027DA61, 0x28146A95, 0x10050539,
402    0x7D1400EC, 0x45056F40, 0x0D36DFB4, 0x3527B018,
403    0x9D51BE5C, 0xA540D1F0, 0xED736104, 0xD5620EA8,
404    0x2CF9DFF9, 0x14E8B055, 0x5CDB00A1, 0x64CA6F0D,
405    0xCCBC6149, 0xF4AD0EE5, 0xBC9EBE11, 0x848FD1BD,
406    0xE99ED468, 0xD18FBBC4, 0x99BC0B30, 0xA1AD649C,
407    0x09DB6AD8, 0x31CA0574, 0x79F9B580, 0x41E8DA2C,
408    0xA3DBBE2A, 0x9BCAD186, 0xD3F96172, 0xEBE80EDE,
409    0x439E009A, 0x7B8F6F36, 0x33BCDFC2, 0x0BADB06E,
410    0x66BCB5BB, 0x5EADDA17, 0x169E6AE3, 0x2E8F054F,
411    0x86F90B0B, 0xBEE864A7, 0xF6DBD453, 0xCECABBFF,
412    0x6EA2D55C, 0x56B3BAF0, 0x1E800A04, 0x269165A8,
413    0x8EE76BEC, 0xB6F60440, 0xFEC5B4B4, 0xC6D4DB18,
414    0xABC5DECD, 0x93D4B161, 0xDBE70195, 0xE3F66E39,
415    0x4B80607D, 0x73910FD1, 0x3BA2BF25, 0x03B3D089,
416    0xE180B48F, 0xD991DB23, 0x91A26BD7, 0xA9B3047B,
417    0x01C50A3F, 0x39D46593, 0x71E7D567, 0x49F6BACB,
418    0x24E7BF1E, 0x1CF6D0B2, 0x54C56046, 0x6CD40FEA,
419    0xC4A201AE, 0xFCB36E02, 0xB480DEF6, 0x8C91B15A,
420    0x750A600B, 0x4D1B0FA7, 0x0528BF53, 0x3D39D0FF,
421    0x954FDEBB, 0xAD5EB117, 0xE56D01E3, 0xDD7C6E4F,
422    0xB06D6B9A, 0x887C0436, 0xC04FB4C2, 0xF85EDB6E,
423    0x5028D52A, 0x6839BA86, 0x200A0A72, 0x181B65DE,
424    0xFA2801D8, 0xC2396E74, 0x8A0ADE80, 0xB21BB12C,
425    0x1A6DBF68, 0x227CD0C4, 0x6A4F6030, 0x525E0F9C,
426    0x3F4F0A49, 0x075E65E5, 0x4F6DD511, 0x777CBABD,
427    0xDF0AB4F9, 0xE71BDB55, 0xAF286BA1, 0x9739040D,
428    0x59F3BFF2, 0x61E2D05E, 0x29D160AA, 0x11C00F06,
429    0xB9B60142, 0x81A76EEE, 0xC994DE1A, 0xF185B1B6,
430    0x9C94B463, 0xA485DBCF, 0xECB66B3B, 0xD4A70497,
431    0x7CD10AD3, 0x44C0657F, 0x0CF3D58B, 0x34E2BA27,
432    0xD6D1DE21, 0xEEC0B18D, 0xA6F30179, 0x9EE26ED5,
433    0x36946091, 0x0E850F3D, 0x46B6BFC9, 0x7EA7D065,
434    0x13B6D5B0, 0x2BA7BA1C, 0x63940AE8, 0x5B856544,
435    0xF3F36B00, 0xCBE204AC, 0x83D1B458, 0xBBC0DBF4,
436    0x425B0AA5, 0x7A4A6509, 0x3279D5FD, 0x0A68BA51,
437    0xA21EB415, 0x9A0FDBB9, 0xD23C6B4D, 0xEA2D04E1,
438    0x873C0134, 0xBF2D6E98, 0xF71EDE6C, 0xCF0FB1C0,
439    0x6779BF84, 0x5F68D028, 0x175B60DC, 0x2F4A0F70,
440    0xCD796B76, 0xF56804DA, 0xBD5BB42E, 0x854ADB82,
441    0x2D3CD5C6, 0x152DBA6A, 0x5D1E0A9E, 0x650F6532,
442    0x081E60E7, 0x300F0F4B, 0x783CBFBF, 0x402DD013,
443    0xE85BDE57, 0xD04AB1FB, 0x9879010F, 0xA0686EA3,
444    /* T8_5 */
445    0x00000000, 0xEF306B19, 0xDB8CA0C3, 0x34BCCBDA,
446    0xB2F53777, 0x5DC55C6E, 0x697997B4, 0x8649FCAD,
447    0x6006181F, 0x8F367306, 0xBB8AB8DC, 0x54BAD3C5,
448    0xD2F32F68, 0x3DC34471, 0x097F8FAB, 0xE64FE4B2,
449    0xC00C303E, 0x2F3C5B27, 0x1B8090FD, 0xF4B0FBE4,
450    0x72F90749, 0x9DC96C50, 0xA975A78A, 0x4645CC93,
451    0xA00A2821, 0x4F3A4338, 0x7B8688E2, 0x94B6E3FB,
452    0x12FF1F56, 0xFDCF744F, 0xC973BF95, 0x2643D48C,
453    0x85F4168D, 0x6AC47D94, 0x5E78B64E, 0xB148DD57,
454    0x370121FA, 0xD8314AE3, 0xEC8D8139, 0x03BDEA20,
455    0xE5F20E92, 0x0AC2658B, 0x3E7EAE51, 0xD14EC548,
456    0x570739E5, 0xB83752FC, 0x8C8B9926, 0x63BBF23F,
457    0x45F826B3, 0xAAC84DAA, 0x9E748670, 0x7144ED69,
458    0xF70D11C4, 0x183D7ADD, 0x2C81B107, 0xC3B1DA1E,
459    0x25FE3EAC, 0xCACE55B5, 0xFE729E6F, 0x1142F576,
460    0x970B09DB, 0x783B62C2, 0x4C87A918, 0xA3B7C201,
461    0x0E045BEB, 0xE13430F2, 0xD588FB28, 0x3AB89031,
462    0xBCF16C9C, 0x53C10785, 0x677DCC5F, 0x884DA746,
463    0x6E0243F4, 0x813228ED, 0xB58EE337, 0x5ABE882E,
464    0xDCF77483, 0x33C71F9A, 0x077BD440, 0xE84BBF59,
465    0xCE086BD5, 0x213800CC, 0x1584CB16, 0xFAB4A00F,
466    0x7CFD5CA2, 0x93CD37BB, 0xA771FC61, 0x48419778,
467    0xAE0E73CA, 0x413E18D3, 0x7582D309, 0x9AB2B810,
468    0x1CFB44BD, 0xF3CB2FA4, 0xC777E47E, 0x28478F67,
469    0x8BF04D66, 0x64C0267F, 0x507CEDA5, 0xBF4C86BC,
470    0x39057A11, 0xD6351108, 0xE289DAD2, 0x0DB9B1CB,
471    0xEBF65579, 0x04C63E60, 0x307AF5BA, 0xDF4A9EA3,
472    0x5903620E, 0xB6330917, 0x828FC2CD, 0x6DBFA9D4,
473    0x4BFC7D58, 0xA4CC1641, 0x9070DD9B, 0x7F40B682,
474    0xF9094A2F, 0x16392136, 0x2285EAEC, 0xCDB581F5,
475    0x2BFA6547, 0xC4CA0E5E, 0xF076C584, 0x1F46AE9D,
476    0x990F5230, 0x763F3929, 0x4283F2F3, 0xADB399EA,
477    0x1C08B7D6, 0xF338DCCF, 0xC7841715, 0x28B47C0C,
478    0xAEFD80A1, 0x41CDEBB8, 0x75712062, 0x9A414B7B,
479    0x7C0EAFC9, 0x933EC4D0, 0xA7820F0A, 0x48B26413,
480    0xCEFB98BE, 0x21CBF3A7, 0x1577387D, 0xFA475364,
481    0xDC0487E8, 0x3334ECF1, 0x0788272B, 0xE8B84C32,
482    0x6EF1B09F, 0x81C1DB86, 0xB57D105C, 0x5A4D7B45,
483    0xBC029FF7, 0x5332F4EE, 0x678E3F34, 0x88BE542D,
484    0x0EF7A880, 0xE1C7C399, 0xD57B0843, 0x3A4B635A,
485    0x99FCA15B, 0x76CCCA42, 0x42700198, 0xAD406A81,
486    0x2B09962C, 0xC439FD35, 0xF08536EF, 0x1FB55DF6,
487    0xF9FAB944, 0x16CAD25D, 0x22761987, 0xCD46729E,
488    0x4B0F8E33, 0xA43FE52A, 0x90832EF0, 0x7FB345E9,
489    0x59F09165, 0xB6C0FA7C, 0x827C31A6, 0x6D4C5ABF,
490    0xEB05A612, 0x0435CD0B, 0x308906D1, 0xDFB96DC8,
491    0x39F6897A, 0xD6C6E263, 0xE27A29B9, 0x0D4A42A0,
492    0x8B03BE0D, 0x6433D514, 0x508F1ECE, 0xBFBF75D7,
493    0x120CEC3D, 0xFD3C8724, 0xC9804CFE, 0x26B027E7,
494    0xA0F9DB4A, 0x4FC9B053, 0x7B757B89, 0x94451090,
495    0x720AF422, 0x9D3A9F3B, 0xA98654E1, 0x46B63FF8,
496    0xC0FFC355, 0x2FCFA84C, 0x1B736396, 0xF443088F,
497    0xD200DC03, 0x3D30B71A, 0x098C7CC0, 0xE6BC17D9,
498    0x60F5EB74, 0x8FC5806D, 0xBB794BB7, 0x544920AE,
499    0xB206C41C, 0x5D36AF05, 0x698A64DF, 0x86BA0FC6,
500    0x00F3F36B, 0xEFC39872, 0xDB7F53A8, 0x344F38B1,
501    0x97F8FAB0, 0x78C891A9, 0x4C745A73, 0xA344316A,
502    0x250DCDC7, 0xCA3DA6DE, 0xFE816D04, 0x11B1061D,
503    0xF7FEE2AF, 0x18CE89B6, 0x2C72426C, 0xC3422975,
504    0x450BD5D8, 0xAA3BBEC1, 0x9E87751B, 0x71B71E02,
505    0x57F4CA8E, 0xB8C4A197, 0x8C786A4D, 0x63480154,
506    0xE501FDF9, 0x0A3196E0, 0x3E8D5D3A, 0xD1BD3623,
507    0x37F2D291, 0xD8C2B988, 0xEC7E7252, 0x034E194B,
508    0x8507E5E6, 0x6A378EFF, 0x5E8B4525, 0xB1BB2E3C,
509    /* T8_6 */
510    0x00000000, 0x68032CC8, 0xD0065990, 0xB8057558,
511    0xA5E0C5D1, 0xCDE3E919, 0x75E69C41, 0x1DE5B089,
512    0x4E2DFD53, 0x262ED19B, 0x9E2BA4C3, 0xF628880B,
513    0xEBCD3882, 0x83CE144A, 0x3BCB6112, 0x53C84DDA,
514    0x9C5BFAA6, 0xF458D66E, 0x4C5DA336, 0x245E8FFE,
515    0x39BB3F77, 0x51B813BF, 0xE9BD66E7, 0x81BE4A2F,
516    0xD27607F5, 0xBA752B3D, 0x02705E65, 0x6A7372AD,
517    0x7796C224, 0x1F95EEEC, 0xA7909BB4, 0xCF93B77C,
518    0x3D5B83BD, 0x5558AF75, 0xED5DDA2D, 0x855EF6E5,
519    0x98BB466C, 0xF0B86AA4, 0x48BD1FFC, 0x20BE3334,
520    0x73767EEE, 0x1B755226, 0xA370277E, 0xCB730BB6,
521    0xD696BB3F, 0xBE9597F7, 0x0690E2AF, 0x6E93CE67,
522    0xA100791B, 0xC90355D3, 0x7106208B, 0x19050C43,
523    0x04E0BCCA, 0x6CE39002, 0xD4E6E55A, 0xBCE5C992,
524    0xEF2D8448, 0x872EA880, 0x3F2BDDD8, 0x5728F110,
525    0x4ACD4199, 0x22CE6D51, 0x9ACB1809, 0xF2C834C1,
526    0x7AB7077A, 0x12B42BB2, 0xAAB15EEA, 0xC2B27222,
527    0xDF57C2AB, 0xB754EE63, 0x0F519B3B, 0x6752B7F3,
528    0x349AFA29, 0x5C99D6E1, 0xE49CA3B9, 0x8C9F8F71,
529    0x917A3FF8, 0xF9791330, 0x417C6668, 0x297F4AA0,
530    0xE6ECFDDC, 0x8EEFD114, 0x36EAA44C, 0x5EE98884,
531    0x430C380D, 0x2B0F14C5, 0x930A619D, 0xFB094D55,
532    0xA8C1008F, 0xC0C22C47, 0x78C7591F, 0x10C475D7,
533    0x0D21C55E, 0x6522E996, 0xDD279CCE, 0xB524B006,
534    0x47EC84C7, 0x2FEFA80F, 0x97EADD57, 0xFFE9F19F,
535    0xE20C4116, 0x8A0F6DDE, 0x320A1886, 0x5A09344E,
536    0x09C17994, 0x61C2555C, 0xD9C72004, 0xB1C40CCC,
537    0xAC21BC45, 0xC422908D, 0x7C27E5D5, 0x1424C91D,
538    0xDBB77E61, 0xB3B452A9, 0x0BB127F1, 0x63B20B39,
539    0x7E57BBB0, 0x16549778, 0xAE51E220, 0xC652CEE8,
540    0x959A8332, 0xFD99AFFA, 0x459CDAA2, 0x2D9FF66A,
541    0x307A46E3, 0x58796A2B, 0xE07C1F73, 0x887F33BB,
542    0xF56E0EF4, 0x9D6D223C, 0x25685764, 0x4D6B7BAC,
543    0x508ECB25, 0x388DE7ED, 0x808892B5, 0xE88BBE7D,
544    0xBB43F3A7, 0xD340DF6F, 0x6B45AA37, 0x034686FF,
545    0x1EA33676, 0x76A01ABE, 0xCEA56FE6, 0xA6A6432E,
546    0x6935F452, 0x0136D89A, 0xB933ADC2, 0xD130810A,
547    0xCCD53183, 0xA4D61D4B, 0x1CD36813, 0x74D044DB,
548    0x27180901, 0x4F1B25C9, 0xF71E5091, 0x9F1D7C59,
549    0x82F8CCD0, 0xEAFBE018, 0x52FE9540, 0x3AFDB988,
550    0xC8358D49, 0xA036A181, 0x1833D4D9, 0x7030F811,
551    0x6DD54898, 0x05D66450, 0xBDD31108, 0xD5D03DC0,
552    0x8618701A, 0xEE1B5CD2, 0x561E298A, 0x3E1D0542,
553    0x23F8B5CB, 0x4BFB9903, 0xF3FEEC5B, 0x9BFDC093,
554    0x546E77EF, 0x3C6D5B27, 0x84682E7F, 0xEC6B02B7,
555    0xF18EB23E, 0x998D9EF6, 0x2188EBAE, 0x498BC766,
556    0x1A438ABC, 0x7240A674, 0xCA45D32C, 0xA246FFE4,
557    0xBFA34F6D, 0xD7A063A5, 0x6FA516FD, 0x07A63A35,
558    0x8FD9098E, 0xE7DA2546, 0x5FDF501E, 0x37DC7CD6,
559    0x2A39CC5F, 0x423AE097, 0xFA3F95CF, 0x923CB907,
560    0xC1F4F4DD, 0xA9F7D815, 0x11F2AD4D, 0x79F18185,
561    0x6414310C, 0x0C171DC4, 0xB412689C, 0xDC114454,
562    0x1382F328, 0x7B81DFE0, 0xC384AAB8, 0xAB878670,
563    0xB66236F9, 0xDE611A31, 0x66646F69, 0x0E6743A1,
564    0x5DAF0E7B, 0x35AC22B3, 0x8DA957EB, 0xE5AA7B23,
565    0xF84FCBAA, 0x904CE762, 0x2849923A, 0x404ABEF2,
566    0xB2828A33, 0xDA81A6FB, 0x6284D3A3, 0x0A87FF6B,
567    0x17624FE2, 0x7F61632A, 0xC7641672, 0xAF673ABA,
568    0xFCAF7760, 0x94AC5BA8, 0x2CA92EF0, 0x44AA0238,
569    0x594FB2B1, 0x314C9E79, 0x8949EB21, 0xE14AC7E9,
570    0x2ED97095, 0x46DA5C5D, 0xFEDF2905, 0x96DC05CD,
571    0x8B39B544, 0xE33A998C, 0x5B3FECD4, 0x333CC01C,
572    0x60F48DC6, 0x08F7A10E, 0xB0F2D456, 0xD8F1F89E,
573    0xC5144817, 0xAD1764DF, 0x15121187, 0x7D113D4F,
574    /* T8_7 */
575    0x00000000, 0x493C7D27, 0x9278FA4E, 0xDB448769,
576    0x211D826D, 0x6821FF4A, 0xB3657823, 0xFA590504,
577    0x423B04DA, 0x0B0779FD, 0xD043FE94, 0x997F83B3,
578    0x632686B7, 0x2A1AFB90, 0xF15E7CF9, 0xB86201DE,
579    0x847609B4, 0xCD4A7493, 0x160EF3FA, 0x5F328EDD,
580    0xA56B8BD9, 0xEC57F6FE, 0x37137197, 0x7E2F0CB0,
581    0xC64D0D6E, 0x8F717049, 0x5435F720, 0x1D098A07,
582    0xE7508F03, 0xAE6CF224, 0x7528754D, 0x3C14086A,
583    0x0D006599, 0x443C18BE, 0x9F789FD7, 0xD644E2F0,
584    0x2C1DE7F4, 0x65219AD3, 0xBE651DBA, 0xF759609D,
585    0x4F3B6143, 0x06071C64, 0xDD439B0D, 0x947FE62A,
586    0x6E26E32E, 0x271A9E09, 0xFC5E1960, 0xB5626447,
587    0x89766C2D, 0xC04A110A, 0x1B0E9663, 0x5232EB44,
588    0xA86BEE40, 0xE1579367, 0x3A13140E, 0x732F6929,
589    0xCB4D68F7, 0x827115D0, 0x593592B9, 0x1009EF9E,
590    0xEA50EA9A, 0xA36C97BD, 0x782810D4, 0x31146DF3,
591    0x1A00CB32, 0x533CB615, 0x8878317C, 0xC1444C5B,
592    0x3B1D495F, 0x72213478, 0xA965B311, 0xE059CE36,
593    0x583BCFE8, 0x1107B2CF, 0xCA4335A6, 0x837F4881,
594    0x79264D85, 0x301A30A2, 0xEB5EB7CB, 0xA262CAEC,
595    0x9E76C286, 0xD74ABFA1, 0x0C0E38C8, 0x453245EF,
596    0xBF6B40EB, 0xF6573DCC, 0x2D13BAA5, 0x642FC782,
597    0xDC4DC65C, 0x9571BB7B, 0x4E353C12, 0x07094135,
598    0xFD504431, 0xB46C3916, 0x6F28BE7F, 0x2614C358,
599    0x1700AEAB, 0x5E3CD38C, 0x857854E5, 0xCC4429C2,
600    0x361D2CC6, 0x7F2151E1, 0xA465D688, 0xED59ABAF,
601    0x553BAA71, 0x1C07D756, 0xC743503F, 0x8E7F2D18,
602    0x7426281C, 0x3D1A553B, 0xE65ED252, 0xAF62AF75,
603    0x9376A71F, 0xDA4ADA38, 0x010E5D51, 0x48322076,
604    0xB26B2572, 0xFB575855, 0x2013DF3C, 0x692FA21B,
605    0xD14DA3C5, 0x9871DEE2, 0x4335598B, 0x0A0924AC,
606    0xF05021A8, 0xB96C5C8F, 0x6228DBE6, 0x2B14A6C1,
607    0x34019664, 0x7D3DEB43, 0xA6796C2A, 0xEF45110D,
608    0x151C1409, 0x5C20692E, 0x8764EE47, 0xCE589360,
609    0x763A92BE, 0x3F06EF99, 0xE44268F0, 0xAD7E15D7,
610    0x572710D3, 0x1E1B6DF4, 0xC55FEA9D, 0x8C6397BA,
611    0xB0779FD0, 0xF94BE2F7, 0x220F659E, 0x6B3318B9,
612    0x916A1DBD, 0xD856609A, 0x0312E7F3, 0x4A2E9AD4,
613    0xF24C9B0A, 0xBB70E62D, 0x60346144, 0x29081C63,
614    0xD3511967, 0x9A6D6440, 0x4129E329, 0x08159E0E,
615    0x3901F3FD, 0x703D8EDA, 0xAB7909B3, 0xE2457494,
616    0x181C7190, 0x51200CB7, 0x8A648BDE, 0xC358F6F9,
617    0x7B3AF727, 0x32068A00, 0xE9420D69, 0xA07E704E,
618    0x5A27754A, 0x131B086D, 0xC85F8F04, 0x8163F223,
619    0xBD77FA49, 0xF44B876E, 0x2F0F0007, 0x66337D20,
620    0x9C6A7824, 0xD5560503, 0x0E12826A, 0x472EFF4D,
621    0xFF4CFE93, 0xB67083B4, 0x6D3404DD, 0x240879FA,
622    0xDE517CFE, 0x976D01D9, 0x4C2986B0, 0x0515FB97,
623    0x2E015D56, 0x673D2071, 0xBC79A718, 0xF545DA3F,
624    0x0F1CDF3B, 0x4620A21C, 0x9D642575, 0xD4585852,
625    0x6C3A598C, 0x250624AB, 0xFE42A3C2, 0xB77EDEE5,
626    0x4D27DBE1, 0x041BA6C6, 0xDF5F21AF, 0x96635C88,
627    0xAA7754E2, 0xE34B29C5, 0x380FAEAC, 0x7133D38B,
628    0x8B6AD68F, 0xC256ABA8, 0x19122CC1, 0x502E51E6,
629    0xE84C5038, 0xA1702D1F, 0x7A34AA76, 0x3308D751,
630    0xC951D255, 0x806DAF72, 0x5B29281B, 0x1215553C,
631    0x230138CF, 0x6A3D45E8, 0xB179C281, 0xF845BFA6,
632    0x021CBAA2, 0x4B20C785, 0x906440EC, 0xD9583DCB,
633    0x613A3C15, 0x28064132, 0xF342C65B, 0xBA7EBB7C,
634    0x4027BE78, 0x091BC35F, 0xD25F4436, 0x9B633911,
635    0xA777317B, 0xEE4B4C5C, 0x350FCB35, 0x7C33B612,
636    0x866AB316, 0xCF56CE31, 0x14124958, 0x5D2E347F,
637    0xE54C35A1, 0xAC704886, 0x7734CFEF, 0x3E08B2C8,
638    0xC451B7CC, 0x8D6DCAEB, 0x56294D82, 0x1F1530A5
639  };
640}