]> glassweightruler.freedombox.rocks Git - Ventoy.git/blob - Ventoy2Disk/Ventoy2Disk/crc32.c
1. Add new options for Windows CLI mode.
[Ventoy.git] / Ventoy2Disk / Ventoy2Disk / crc32.c
1 #include <Windows.h>
2
3 static UINT32 g_CrcTable[256] = {
4 0x00000000,
5 0x77073096,
6 0xEE0E612C,
7 0x990951BA,
8 0x076DC419,
9 0x706AF48F,
10 0xE963A535,
11 0x9E6495A3,
12 0x0EDB8832,
13 0x79DCB8A4,
14 0xE0D5E91E,
15 0x97D2D988,
16 0x09B64C2B,
17 0x7EB17CBD,
18 0xE7B82D07,
19 0x90BF1D91,
20 0x1DB71064,
21 0x6AB020F2,
22 0xF3B97148,
23 0x84BE41DE,
24 0x1ADAD47D,
25 0x6DDDE4EB,
26 0xF4D4B551,
27 0x83D385C7,
28 0x136C9856,
29 0x646BA8C0,
30 0xFD62F97A,
31 0x8A65C9EC,
32 0x14015C4F,
33 0x63066CD9,
34 0xFA0F3D63,
35 0x8D080DF5,
36 0x3B6E20C8,
37 0x4C69105E,
38 0xD56041E4,
39 0xA2677172,
40 0x3C03E4D1,
41 0x4B04D447,
42 0xD20D85FD,
43 0xA50AB56B,
44 0x35B5A8FA,
45 0x42B2986C,
46 0xDBBBC9D6,
47 0xACBCF940,
48 0x32D86CE3,
49 0x45DF5C75,
50 0xDCD60DCF,
51 0xABD13D59,
52 0x26D930AC,
53 0x51DE003A,
54 0xC8D75180,
55 0xBFD06116,
56 0x21B4F4B5,
57 0x56B3C423,
58 0xCFBA9599,
59 0xB8BDA50F,
60 0x2802B89E,
61 0x5F058808,
62 0xC60CD9B2,
63 0xB10BE924,
64 0x2F6F7C87,
65 0x58684C11,
66 0xC1611DAB,
67 0xB6662D3D,
68 0x76DC4190,
69 0x01DB7106,
70 0x98D220BC,
71 0xEFD5102A,
72 0x71B18589,
73 0x06B6B51F,
74 0x9FBFE4A5,
75 0xE8B8D433,
76 0x7807C9A2,
77 0x0F00F934,
78 0x9609A88E,
79 0xE10E9818,
80 0x7F6A0DBB,
81 0x086D3D2D,
82 0x91646C97,
83 0xE6635C01,
84 0x6B6B51F4,
85 0x1C6C6162,
86 0x856530D8,
87 0xF262004E,
88 0x6C0695ED,
89 0x1B01A57B,
90 0x8208F4C1,
91 0xF50FC457,
92 0x65B0D9C6,
93 0x12B7E950,
94 0x8BBEB8EA,
95 0xFCB9887C,
96 0x62DD1DDF,
97 0x15DA2D49,
98 0x8CD37CF3,
99 0xFBD44C65,
100 0x4DB26158,
101 0x3AB551CE,
102 0xA3BC0074,
103 0xD4BB30E2,
104 0x4ADFA541,
105 0x3DD895D7,
106 0xA4D1C46D,
107 0xD3D6F4FB,
108 0x4369E96A,
109 0x346ED9FC,
110 0xAD678846,
111 0xDA60B8D0,
112 0x44042D73,
113 0x33031DE5,
114 0xAA0A4C5F,
115 0xDD0D7CC9,
116 0x5005713C,
117 0x270241AA,
118 0xBE0B1010,
119 0xC90C2086,
120 0x5768B525,
121 0x206F85B3,
122 0xB966D409,
123 0xCE61E49F,
124 0x5EDEF90E,
125 0x29D9C998,
126 0xB0D09822,
127 0xC7D7A8B4,
128 0x59B33D17,
129 0x2EB40D81,
130 0xB7BD5C3B,
131 0xC0BA6CAD,
132 0xEDB88320,
133 0x9ABFB3B6,
134 0x03B6E20C,
135 0x74B1D29A,
136 0xEAD54739,
137 0x9DD277AF,
138 0x04DB2615,
139 0x73DC1683,
140 0xE3630B12,
141 0x94643B84,
142 0x0D6D6A3E,
143 0x7A6A5AA8,
144 0xE40ECF0B,
145 0x9309FF9D,
146 0x0A00AE27,
147 0x7D079EB1,
148 0xF00F9344,
149 0x8708A3D2,
150 0x1E01F268,
151 0x6906C2FE,
152 0xF762575D,
153 0x806567CB,
154 0x196C3671,
155 0x6E6B06E7,
156 0xFED41B76,
157 0x89D32BE0,
158 0x10DA7A5A,
159 0x67DD4ACC,
160 0xF9B9DF6F,
161 0x8EBEEFF9,
162 0x17B7BE43,
163 0x60B08ED5,
164 0xD6D6A3E8,
165 0xA1D1937E,
166 0x38D8C2C4,
167 0x4FDFF252,
168 0xD1BB67F1,
169 0xA6BC5767,
170 0x3FB506DD,
171 0x48B2364B,
172 0xD80D2BDA,
173 0xAF0A1B4C,
174 0x36034AF6,
175 0x41047A60,
176 0xDF60EFC3,
177 0xA867DF55,
178 0x316E8EEF,
179 0x4669BE79,
180 0xCB61B38C,
181 0xBC66831A,
182 0x256FD2A0,
183 0x5268E236,
184 0xCC0C7795,
185 0xBB0B4703,
186 0x220216B9,
187 0x5505262F,
188 0xC5BA3BBE,
189 0xB2BD0B28,
190 0x2BB45A92,
191 0x5CB36A04,
192 0xC2D7FFA7,
193 0xB5D0CF31,
194 0x2CD99E8B,
195 0x5BDEAE1D,
196 0x9B64C2B0,
197 0xEC63F226,
198 0x756AA39C,
199 0x026D930A,
200 0x9C0906A9,
201 0xEB0E363F,
202 0x72076785,
203 0x05005713,
204 0x95BF4A82,
205 0xE2B87A14,
206 0x7BB12BAE,
207 0x0CB61B38,
208 0x92D28E9B,
209 0xE5D5BE0D,
210 0x7CDCEFB7,
211 0x0BDBDF21,
212 0x86D3D2D4,
213 0xF1D4E242,
214 0x68DDB3F8,
215 0x1FDA836E,
216 0x81BE16CD,
217 0xF6B9265B,
218 0x6FB077E1,
219 0x18B74777,
220 0x88085AE6,
221 0xFF0F6A70,
222 0x66063BCA,
223 0x11010B5C,
224 0x8F659EFF,
225 0xF862AE69,
226 0x616BFFD3,
227 0x166CCF45,
228 0xA00AE278,
229 0xD70DD2EE,
230 0x4E048354,
231 0x3903B3C2,
232 0xA7672661,
233 0xD06016F7,
234 0x4969474D,
235 0x3E6E77DB,
236 0xAED16A4A,
237 0xD9D65ADC,
238 0x40DF0B66,
239 0x37D83BF0,
240 0xA9BCAE53,
241 0xDEBB9EC5,
242 0x47B2CF7F,
243 0x30B5FFE9,
244 0xBDBDF21C,
245 0xCABAC28A,
246 0x53B39330,
247 0x24B4A3A6,
248 0xBAD03605,
249 0xCDD70693,
250 0x54DE5729,
251 0x23D967BF,
252 0xB3667A2E,
253 0xC4614AB8,
254 0x5D681B02,
255 0x2A6F2B94,
256 0xB40BBE37,
257 0xC30C8EA1,
258 0x5A05DF1B,
259 0x2D02EF8D
260 };
261
262 UINT32 VentoyCrc32(void *Buffer, UINT32 Length)
263 {
264 UINT32 Index;
265 UINT32 Crc;
266 UINT8 *Byte = Buffer;
267
268 Crc = 0xffffffff;
269 for (Index = 0; Index < Length; Index++, Byte++)
270 {
271 Crc = (Crc >> 8) ^ g_CrcTable[(UINT8)Crc ^ *Byte];
272 }
273
274 return Crc ^ 0xffffffff;
275 }