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