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