]> glassweightruler.freedombox.rocks Git - Ventoy.git/blob - vtoycli/crc32.c
Fix the boot issue for Parted Magic (#3304)
[Ventoy.git] / vtoycli / crc32.c
1 /******************************************************************************
2 * vtoygpt.c ---- ventoy gpt util
3 *
4 * Copyright (c) 2020, longpanda <admin@ventoy.net>
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License as
8 * published by the Free Software Foundation; either version 3 of the
9 * License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, see <http://www.gnu.org/licenses/>.
18 *
19 */
20 #include <stdio.h>
21 #include <stdio.h>
22 #include <stdlib.h>
23 #include <string.h>
24
25 #define VOID void
26 #define CHAR char
27 #define UINT64 unsigned long long
28 #define UINT32 unsigned int
29 #define UINT16 unsigned short
30 #define CHAR16 unsigned short
31 #define UINT8 unsigned char
32
33 UINT32 g_crc_table[256] = {
34 0x00000000,
35 0x77073096,
36 0xEE0E612C,
37 0x990951BA,
38 0x076DC419,
39 0x706AF48F,
40 0xE963A535,
41 0x9E6495A3,
42 0x0EDB8832,
43 0x79DCB8A4,
44 0xE0D5E91E,
45 0x97D2D988,
46 0x09B64C2B,
47 0x7EB17CBD,
48 0xE7B82D07,
49 0x90BF1D91,
50 0x1DB71064,
51 0x6AB020F2,
52 0xF3B97148,
53 0x84BE41DE,
54 0x1ADAD47D,
55 0x6DDDE4EB,
56 0xF4D4B551,
57 0x83D385C7,
58 0x136C9856,
59 0x646BA8C0,
60 0xFD62F97A,
61 0x8A65C9EC,
62 0x14015C4F,
63 0x63066CD9,
64 0xFA0F3D63,
65 0x8D080DF5,
66 0x3B6E20C8,
67 0x4C69105E,
68 0xD56041E4,
69 0xA2677172,
70 0x3C03E4D1,
71 0x4B04D447,
72 0xD20D85FD,
73 0xA50AB56B,
74 0x35B5A8FA,
75 0x42B2986C,
76 0xDBBBC9D6,
77 0xACBCF940,
78 0x32D86CE3,
79 0x45DF5C75,
80 0xDCD60DCF,
81 0xABD13D59,
82 0x26D930AC,
83 0x51DE003A,
84 0xC8D75180,
85 0xBFD06116,
86 0x21B4F4B5,
87 0x56B3C423,
88 0xCFBA9599,
89 0xB8BDA50F,
90 0x2802B89E,
91 0x5F058808,
92 0xC60CD9B2,
93 0xB10BE924,
94 0x2F6F7C87,
95 0x58684C11,
96 0xC1611DAB,
97 0xB6662D3D,
98 0x76DC4190,
99 0x01DB7106,
100 0x98D220BC,
101 0xEFD5102A,
102 0x71B18589,
103 0x06B6B51F,
104 0x9FBFE4A5,
105 0xE8B8D433,
106 0x7807C9A2,
107 0x0F00F934,
108 0x9609A88E,
109 0xE10E9818,
110 0x7F6A0DBB,
111 0x086D3D2D,
112 0x91646C97,
113 0xE6635C01,
114 0x6B6B51F4,
115 0x1C6C6162,
116 0x856530D8,
117 0xF262004E,
118 0x6C0695ED,
119 0x1B01A57B,
120 0x8208F4C1,
121 0xF50FC457,
122 0x65B0D9C6,
123 0x12B7E950,
124 0x8BBEB8EA,
125 0xFCB9887C,
126 0x62DD1DDF,
127 0x15DA2D49,
128 0x8CD37CF3,
129 0xFBD44C65,
130 0x4DB26158,
131 0x3AB551CE,
132 0xA3BC0074,
133 0xD4BB30E2,
134 0x4ADFA541,
135 0x3DD895D7,
136 0xA4D1C46D,
137 0xD3D6F4FB,
138 0x4369E96A,
139 0x346ED9FC,
140 0xAD678846,
141 0xDA60B8D0,
142 0x44042D73,
143 0x33031DE5,
144 0xAA0A4C5F,
145 0xDD0D7CC9,
146 0x5005713C,
147 0x270241AA,
148 0xBE0B1010,
149 0xC90C2086,
150 0x5768B525,
151 0x206F85B3,
152 0xB966D409,
153 0xCE61E49F,
154 0x5EDEF90E,
155 0x29D9C998,
156 0xB0D09822,
157 0xC7D7A8B4,
158 0x59B33D17,
159 0x2EB40D81,
160 0xB7BD5C3B,
161 0xC0BA6CAD,
162 0xEDB88320,
163 0x9ABFB3B6,
164 0x03B6E20C,
165 0x74B1D29A,
166 0xEAD54739,
167 0x9DD277AF,
168 0x04DB2615,
169 0x73DC1683,
170 0xE3630B12,
171 0x94643B84,
172 0x0D6D6A3E,
173 0x7A6A5AA8,
174 0xE40ECF0B,
175 0x9309FF9D,
176 0x0A00AE27,
177 0x7D079EB1,
178 0xF00F9344,
179 0x8708A3D2,
180 0x1E01F268,
181 0x6906C2FE,
182 0xF762575D,
183 0x806567CB,
184 0x196C3671,
185 0x6E6B06E7,
186 0xFED41B76,
187 0x89D32BE0,
188 0x10DA7A5A,
189 0x67DD4ACC,
190 0xF9B9DF6F,
191 0x8EBEEFF9,
192 0x17B7BE43,
193 0x60B08ED5,
194 0xD6D6A3E8,
195 0xA1D1937E,
196 0x38D8C2C4,
197 0x4FDFF252,
198 0xD1BB67F1,
199 0xA6BC5767,
200 0x3FB506DD,
201 0x48B2364B,
202 0xD80D2BDA,
203 0xAF0A1B4C,
204 0x36034AF6,
205 0x41047A60,
206 0xDF60EFC3,
207 0xA867DF55,
208 0x316E8EEF,
209 0x4669BE79,
210 0xCB61B38C,
211 0xBC66831A,
212 0x256FD2A0,
213 0x5268E236,
214 0xCC0C7795,
215 0xBB0B4703,
216 0x220216B9,
217 0x5505262F,
218 0xC5BA3BBE,
219 0xB2BD0B28,
220 0x2BB45A92,
221 0x5CB36A04,
222 0xC2D7FFA7,
223 0xB5D0CF31,
224 0x2CD99E8B,
225 0x5BDEAE1D,
226 0x9B64C2B0,
227 0xEC63F226,
228 0x756AA39C,
229 0x026D930A,
230 0x9C0906A9,
231 0xEB0E363F,
232 0x72076785,
233 0x05005713,
234 0x95BF4A82,
235 0xE2B87A14,
236 0x7BB12BAE,
237 0x0CB61B38,
238 0x92D28E9B,
239 0xE5D5BE0D,
240 0x7CDCEFB7,
241 0x0BDBDF21,
242 0x86D3D2D4,
243 0xF1D4E242,
244 0x68DDB3F8,
245 0x1FDA836E,
246 0x81BE16CD,
247 0xF6B9265B,
248 0x6FB077E1,
249 0x18B74777,
250 0x88085AE6,
251 0xFF0F6A70,
252 0x66063BCA,
253 0x11010B5C,
254 0x8F659EFF,
255 0xF862AE69,
256 0x616BFFD3,
257 0x166CCF45,
258 0xA00AE278,
259 0xD70DD2EE,
260 0x4E048354,
261 0x3903B3C2,
262 0xA7672661,
263 0xD06016F7,
264 0x4969474D,
265 0x3E6E77DB,
266 0xAED16A4A,
267 0xD9D65ADC,
268 0x40DF0B66,
269 0x37D83BF0,
270 0xA9BCAE53,
271 0xDEBB9EC5,
272 0x47B2CF7F,
273 0x30B5FFE9,
274 0xBDBDF21C,
275 0xCABAC28A,
276 0x53B39330,
277 0x24B4A3A6,
278 0xBAD03605,
279 0xCDD70693,
280 0x54DE5729,
281 0x23D967BF,
282 0xB3667A2E,
283 0xC4614AB8,
284 0x5D681B02,
285 0x2A6F2B94,
286 0xB40BBE37,
287 0xC30C8EA1,
288 0x5A05DF1B,
289 0x2D02EF8D
290 };
291
292 UINT32 VtoyCrc32(VOID *Buffer, UINT32 Length)
293 {
294 UINT32 i;
295 UINT8 *Ptr = Buffer;
296 UINT32 Crc = 0xFFFFFFFF;
297
298 for (i = 0; i < Length; i++, Ptr++)
299 {
300 Crc = (Crc >> 8) ^ g_crc_table[(UINT8) Crc ^ *Ptr];
301 }
302
303 return Crc ^ 0xffffffff;
304 }
305