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