-
Notifications
You must be signed in to change notification settings - Fork 56
/
ecc.txt
514 lines (474 loc) · 45.8 KB
/
ecc.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
In der Regel enthalten die einzelnen frames Checksummen oder CRC-Werte.
Einige Radiosonden senden frames mit Codewoertern, die eine Fehlerkorrektur ermoeglichen.
Graw
====
Hammingcode (N, N-R) = (2^m - 1, N-m), d.h. R=mt mit t=1,
korrigiert t=1 Fehler pro Codewort der Laenge N,
die Codewoerter haben den (min.) Abstand d=3
(bei 2 Fehlern wird zum Nachbarcodewort falsch dekodiert).
Fuer die Sonden DFM-06/09 ist m=3, d.h. Hamming(7,4),
jedoch mit einem Paritaetsbit zu (8,4) erweitert.
Der erweiterte Hammingcode (8,4) kann zudem 2 Fehler
als nicht-korrigierbar erkennen (wird nicht falsch decodiert).
Zu einem Wort mit 2 Fehlern gibt es 4 Codewoerter mit Abstand 2.
Von diesen kann das Codewort, das am besten passt, ausgewaehlt
werden (soft decision). Allerdings steigt die Wahrscheinlichkeit,
dass neben 2 Fehlern auch Woerter mit 3 Fehlern vorkommen, wobei
diese dann falsch decodiert werden.
Meisei
======
BCH(63,51)-Code (m=6, t=2) mit Generatorpolynom
(x^6+x+1)(x^6+x^4+x^2+x+1)=x^12+x^10+x^8+x^5+x^4+x^3+1.
gekuerzt auf (46,34), die letzten 12 bit sind die BCH-Kontrollbits.
Das Generatorpolynom kann man finden, wenn man geeignete Codewoerter addiert (linearer Code),
um das kleinste Codewort ungleich 0 zu finden, z.B.:
0000000000000000 1 0000000000000000 1 000010111011
+
0000000000000000 1 0000000000000010 0 010001011111
=
0000000000000000 0 0000000000000010 1 010011100100
->
101010011100100 = (x^12+x^10+x^8+x^5+x^4+x^3+1)x^2
Die 34 Nachrichtenbit sind aufgeteilt in 16+1+16+1, d.h. nach einem 16 bit Block kommt ein Paritaetsbit,
dass 1 ist, wenn die Anzahl 1en in den 16 bit davor gerade ist und sonst 0.
Pro Codewort koennen t=2 Fehler korrigiert werden.
Ist die Anzahl Fehler #E groesser t, dann ist fuer t < #E <= 2t die Wahrscheinlichkeit,
dass Fehler falsch erkannt/decodiert werden, etwa 1/t!, somit fuer t=2 garnicht gering.
Da hier gekuerzte Codewoerter und 2 zusaetzliche Paritaetsbits verwendet werden, sollte
man bei decodierten Codewoertern pruefen, ob die Paritaetsbits stimmen und ob bei der
Decodierung Werte im Null-padding veraendert wurden.
Um nur die BCH-Codewoerter zu pruefen, kann man Polynomdivision durchfuehren (CRC):
1)
0000000000000000 1 0000000000000000 1 000010111011 : 0000 0000 0BB
-> 0000000000000000100000000000000001000010111011
./crc_polymod --bch 0000000000000000100000000000000001000010111011
100000000000000001000010111011
1010100111001
1010011100100001000010111011
1010100111001
111011101001000010111011
1010100111001
10001110101100010111011
1010100111001
100111011110010111011
1010100111001
1101000010110111011
1010100111001
111100101111111011
1010100111001
10110110011011011
1010100111001
11111101001011
1010100111001
1010100111001
1010100111001
0
2)
0000000000000000 1 1010111100100010 1 000110000001 : 0000 AF22 181
-> 0000000000000000110101111001000101000110000001
./crc_polymod --bch 0000000000000000110101111001000101000110000001
110101111001000101000110000001
1010100111001
11111100101100101000110000001
1010100111001
1010101011110101000110000001
1010100111001
1100111101000110000001
1010100111001
110011010001110000001
1010100111001
11001001101010000001
1010100111001
1100000011000000001
1010100111001
110100100001000001
1010100111001
11110111101100001
1010100111001
1011110011110001
1010100111001
1010100111001
1010100111001
0
Decoder:
bch_ecc.c
Vaisala
=======
http://www.vaisala.com/Vaisala%20Documents/Vaisala%20News%20Articles/VN164/VN164_State-of-the-Art_Radiosonde_Telemetry.pdf
CRC16: (poly=0x(1)1021, init=0xFFFF)
Reed-Solomon:
RS(255,231)
GF(2^8)=GF(2)[x]/(f): f=x^8+x^4+x^3+x^2+1 = 0x11D
Generator von GF(2^8)*: alpha=0x02 (primitive Einheitswurzel)
Generatorpolynom fuer RS-Code:
(X-alpha^0)...(X-alpha^23) =
X^24 + 0x7A X^23 + 0x76 X^22 + 0xA9 X^21 + 0x46 X^20 + 0xB2 X^19 + 0xED X^18 + 0xD8 X^17 + 0x66 X^16 + 0x73 X^15 + 0x96 X^14 + 0xe5 X^13 + 0x49 X^12
+ 0x82 X^11 + 0x48 X^10 + 0x3D X^9 + 0x2B X^8 + 0xCE X^7 + 0x01 X^6 + 0xED X^5 + 0xF7 X^4 + 0x7F X^3 + 0xD9 X^2 + 0x90 X + 0x75
Es koennen t=12 Fehler pro Codewort korrigiert werden.
Fehler der Anzahl t < #E <= 2t werden zuverlaessig erkannt.
Decoder:
bch_ecc.c
http://www.ka9q.net/code/fec/
https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders
RS92
----
HEADER 6
DATA 210
RS-PARITY 24
2a2a2a2a2a10 (header)
6510 (L=2*0x10=32)
e81820204b34393533393334006100083d3d07b342bb3e9809d3bc3f754c963b ebfb
690c (L=2*0x0c=24)
ca2b0fd9670f00670f8c0f11a458111e8810da410d30430d dc84
673d (L=2*0x3d=122)
b01c852167ab07298b3cb05a536e0fffcf4faf7f4f3fff8fcfffffffff7fe5918aef20e8110175879900d0e0e900061f8c048aa393009edea1fe2557dc0019549f04b5160d00ae998b00e12a4200370b8608cacc1900b3e08905bd60040126da9303e1d4b4006d04a00573469700d6a98b00699f120195828f04 6ed7
6805 (L=2*0x05=10)
03030000000000000000 b27d
ff02 (L=2*0x02=4)
02000200
f0be2a40a7cd69b9ed0668ec12182e8560ea6dd0733612a1 (Reed-Solomon parity)
ecc-rs_vaisala.c:
1)
./ecc-rs_vaisala 2a2a2a2a2a106510e81820204b34393533393334006100083d3d07b342bb3e9809d3bc3f754c963bebfb690cca2b0fd9670f00670f8c0f11a458111e8810da410d30430ddc84673db01c852167ab07298b3cb05a536e0fffcf4faf7f4f3fff8fcfffffffff7fe5918aef20e8110175879900d0e0e900061f8c048aa393009edea1fe2557dc0019549f04b5160d00ae998b00e12a4200370b8608cacc1900b3e08905bd60040126da9303e1d4b4006d04a00573469700d6a98b00699f120195828f046ed7680503030000000000000000b27dff0202000200f0be2a40a7cd69b9ed0668ec12182e8560ea6dd0733612a1
RS92
codeword
errors: 0
0000000000000000000000000000000000000000000002000202FF7DB2000000000000000003030568D76E048F829501129F69008BA9D60097467305A0046D00B4D4E10393DA26010460BD0589E0B30019CCCA08860B3700422AE1008B99AE000D16B5049F541900DC5725FEA1DE9E0093A38A048C1F0600E9E0D0009987750111E820EF8A91E57FFFFFFFFFCF8FFF3F4F7FAF4FCFFF0F6E535AB03C8B2907AB6721851CB03D6784DC0D43300D41DA10881E1158A4110F8C0F67000F67D90F2BCA0C69FBEB3B964C753FBCD309983EBB42B3073D3D08006100343339333539344B202018E81065A1123673D06DEA60852E1812EC6806EDB969CDA7402ABEF0
frame:
2a2a2a2a2a106510e81820204b34393533393334006100083d3d07b342bb3e9809d3bc3f754c963bebfb690cca2b0fd9670f00670f8c0f11a458111e8810da410d30430ddc84673db01c852167ab07298b3cb05a536e0fffcf4faf7f4f3fff8fcfffffffff7fe5918aef20e8110175879900d0e0e900061f8c048aa393009edea1fe2557dc0019549f04b5160d00ae998b00e12a4200370b8608cacc1900b3e08905bd60040126da9303e1d4b4006d04a00573469700d6a98b00699f120195828f046ed7680503030000000000000000b27dff0202000200f0be2a40a7cd69b9ed0668ec12182e8560ea6dd0733612a1
2a)
./rs92gps -r rs92.wav > rs92raw.txt
cat rs92raw.txt | ./ecc-rs_vaisala > rs92raw_ecc.txt
./rs92gps --rawin1 -a almanac.txt rs92raw_ecc.txt
2b)
cat rs92raw.txt | ./ecc-rs_vaisala | ./rs92gps --rawin1 -a almanac.txt
2c)
./rs92gps -r rs92.wav | ./ecc-rs_vaisala | ./rs92gps --rawin1 -a almanac.txt
3)
./rs92ecc -b --ecc -e rinex.txt rs92.wav
./rs92ecc -b --ecc --crc -e rinex.txt rs92.wav
./rs92ecc -b --ecc -r rs92.wav
RS41
----
HEADER 8
RS-PARITY 48 = 2*24
DATA 264-462 (max 2*231=462)
"interleaved"
Die 2 Codewoerter setzen sich zusammen aus den DATA-Bytes an den geraden bzw. ungeraden Positionen und ersten bzw. zweiten RS-PARITY-Teil.
RS(255,231) RS(255,231) L=40 CRC L=42 CRC L=30 CRC L=89 CRC L=21 CRC L=17 CRC
8635f44093df1a60 2c87e0fa0521e8943d9cef4c7a67393f6d39fb546461f2111b6447ab79a746c80350cda5344157f8c0c12234f4690222 0f 7928 16174b313933303239331a00000300000a00002f0007322ce53e31991abf12dada3eb68468c16755 d51c 7a2a 15310216060245f302000d08a31607821e08bb210219060243f302000000000000000000000000000000 220d 7c1e 0807d03cdc071fd81ddb19d70a8d0eb602b60cb518d40692ff00ff00ff00 1c27 7d59 b8d83301ff0f881f0f38f4fe18b283038735ff000000003eb8ff4947201e6e3aff55415f13fc6e005440440cf100009e9f7406f85800832b631719d70010bebc172a8b00000000000000000000000000000000000000000000 a48b 7b15 366181193ef05d07e1245b1be0f721f801f6080410 7b0b 7611 0000000000000000000000000000000000 ecc7
1)
8635f44093df1a60 (HDR)
2c87e0fa0521e8943d9cef4c7a67393f6d39fb546461f2111b6447ab79a746c80350cda5344157f8c0c12234f4690222 (2xRS)
0f
7928 (L=0x28=40)
16174b313933303239331a00000300000a00002f0007322ce53e31991abf12dada3eb68468c16755 d51c (CRC-OK)
7a2a (L=0x2a=42)
15310216060245f302000d08a31607821e08bb210219060243f302000000000000000000000000000000 220d (CRC-OK)
7c1e (L=0x1e=30)
0807d03cdc071fd81ddb19d70a8d0eb602b60cb518d40692ff00ff00ff00 1c27 (CRC-OK)
7d59 (L=0x59=89)
b8d83301ff0f881f0f38f4fe18b283038735ff000000003eb8ff4947201e6e3aff55415f13fc6e005440440cf100009e9f7406f85800832b631719d70010bebc172a8b00000000000000000000000000000000000000000000 a48b (CRC-OK)
7b15 (L=0x15=21)
366181193ef05d07e1245b1be0f721f801f6080410 7b0b (CRC-OK)
7611 (L=0x11=17)
0000000000000000000000000000000000 ecc7 (CRC-OK)
./ecc-rs_vaisala 8635f44093df1a602c87e0fa0521e8943d9cef4c7a67393f6d39fb546461f2111b6447ab79a746c80350cda5344157f8c0c12234f46902220f792816174b313933303239331a00000300000a00002f0007322ce53e31991abf12dada3eb68468c16755d51c7a2a15310216060245f302000d08a31607821e08bb210219060243f302000000000000000000000000000000220d7c1e0807d03cdc071fd81ddb19d70a8d0eb602b60cb518d40692ff00ff00ff001c277d59b8d83301ff0f881f0f38f4fe18b283038735ff000000003eb8ff4947201e6e3aff55415f13fc6e005440440cf100009e9f7406f85800832b631719d70010bebc172a8b00000000000000000000000000000000000000000000a48b7b15366181193ef05d07e1245b1be0f721f801f60804107b0b76110000000000000000000000000000000000ecc7
RS41
codeword1
errors: 0
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EC0000000000000000110B10080121E05BE15D3E81367BA400000000000000000000002ABC10D7172B00F8749E000C4000FC5F553A1E47FF3E00003503B2FE381F0F01D8592700000092D4B5B6B68DD7DBD8073C071E0D0000000000000000F30219210882160800F30216312A1C55C1843EDABF993E2C072F000003003332333117280F11F2616454FB396D3F39677A4CEF9C3D94E82105FAE0872C
codeword2
errors: 0
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C7000000000000000000767B04F6F8F71B2407F01961158B00000000000000000000008B17BE0019638358069F00F144546E1341FF6E2049B80000FF878318F40F88FF33B87D1CFFFFFF06180C020E0A191D1FDCD0087C220000000000000002430602BB1E07A30D02450602157AD56768B6DA121A31E53200000A00001A3930394B1679220269F43422C1C0F8574134A5CD5003C846A779AB47641B
frame:
8635f44093df1a602c87e0fa0521e8943d9cef4c7a67393f6d39fb546461f2111b6447ab79a746c80350cda5344157f8c0c12234f46902220f792816174b313933303239331a00000300000a00002f0007322ce53e31991abf12dada3eb68468c16755d51c7a2a15310216060245f302000d08a31607821e08bb210219060243f302000000000000000000000000000000220d7c1e0807d03cdc071fd81ddb19d70a8d0eb602b60cb518d40692ff00ff00ff001c277d59b8d83301ff0f881f0f38f4fe18b283038735ff000000003eb8ff4947201e6e3aff55415f13fc6e005440440cf100009e9f7406f85800832b631719d70010bebc172a8b00000000000000000000000000000000000000000000a48b7b15366181193ef05d07e1245b1be0f721f801f60804107b0b76110000000000000000000000000000000000ecc7
2)
./ecc-rs_vaisala 8635f44093df1a60421080e56396389c102cf6db9276308a11f9f8792cb620beae0662688bba0eb2c0bdfa3bd10f0368c07ad0ac33c77046f0792888134b343032303234341c00000100000d00007a000732013230323434254e00002c011205b43ca475537a2a95050229fd015be502d931084d2a075b3308ed060228fd015de50200000000000000000000000000000061d67c1e4d07a0ba92170e9003fa01f813b40c921ed811fa0bf504d20af920fa17f765137d59950b3501ffc43086200a1101420000000521008f527605b1b600faa7e10e3b1301acce8e1c78c5ff0de3c41479b6ff48781a09dcfdffa2f1c30d51190151e0e4113d1701e27da60504a4ffdb2511085bd1003f05bd0c8346ffda787b156d2f421735a22f00f88b0b1ea7fe220b23030902112a417ea5d0343030333030303120313036313320202033312e362030363733203033353220303730302031323235312033383030203133343036203535333920313430353820353239332037383030203830323120373334203931392039353533383738203937323839373820343238383338353332362032393032313631203539313039203335303539203637303020333738352034363838203636393920363839392038303030c8e4762e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bf08
RS41
codeword1
errors: 1
pos: 136
BF000000000000000000000000000000000000000000000076C830383938203936383620383330372035352030392036323920323533383438393239383835393939343731302030373332203534203335363431303820353220303032332037303631202031302030303034A54111092322A70BF82F35426D7BDA460C05005B11DBA4057D013DE450190DF1FFDC1A48B614E3FF788EAC130EA700B1768F210000010A86C4010B5913F7FAF9D2F5FAD892B4F8FA9017BA071ED60000000000000000E5012806085B2A08D9E50129052A53A4B4122C0025343001077A00000100343232341328F0BE20B62C79F8F9118A307692DBF62C109C389663E5801042
codeword2
errors: 2
pos: 106 176
0800000000000000000000000000000000000000000000002EE43030203936393620383435372030363930333931353131303236333838322037383720373335203120332032383038203935383031393520303320303331323130372035303336202E332033363131303130D07E2A02030BFE1E8B00A2172F1578FF83BD3FD10825FF04A6E21711E00151C3A2FD0978FF79C40DC51CCE013BE1FAB6055200050042112030FF35957D6517200A040B111F0C1301030E92A04D7C6100000000000000025DFD02ED33074D31025BFD02957A753C0501004E3432323200000D00001C3430304B88794670C733ACD07AC068030FD13BFABDC0B20EBA8B686206AE
frame:
8635f44093df1a60421080e56396389c102cf6db9276308a11f9f8792cb620beae0662688bba0eb2c0bdfa3bd10f0368c07ad0ac33c77046f0792888134b343032303234341c00000100000d00007a000732013230323434254e00002c011205b43ca475537a2a95050229fd015be502d931084d2a075b3308ed060228fd015de50200000000000000000000000000000061d67c1e4d07a0ba92170e9003fa01f813b40c921fd811fa0bf504d20af920fa17f765137d59950b3501ffc43086200a1101420000000521008f527605b1b600faa7e10e3b1301acce8e1c78c5ff0de3c41479b6ff48781a09dcfdffa2f1c30d51190150e0e4113d1701e27da60504a4ffdb2511085bd1003f05bd0c8346ffda787b156d2f421735a22f00f88b0b1ea7fe220b23030902112a417ea5d0343030313030303120313036313320202033312e362030363733203033353220303730302031323235312033383030203133343036203535333920313430353820353239332037383030203830323120373334203931392039353533383738203937323839373820343238383338353332362032393032313631203539313039203335303539203637303020333738352034363838203636393920363839392038303030c8e4762e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bf08
3)
./rs41ecc -b --ecc rs41.wav
./rs41ecc -b --ecc --crc rs41.wav
./rs41ecc -b --ecc -r rs41.wav
CRC16
-----
./crc_polymod --crc 0000000000000000000000000000000000 ecc7
C7EC
11111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
1110111111011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
110011111001111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
10001111000111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
111000011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
11010011110000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
1011011110100011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
11111110110011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
1110110110111101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
110010110101101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
10000110100101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
1110100001111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
110000001101000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
10010001100000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
11001100100111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
1000100100011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
100001001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
11001101000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
1000101000110001000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
1000100001100000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
1110000100000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
110100100010000100000000000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
10110100011000110000000000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
111100011100111000000000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
11110011101111010000000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
1111011101011011000000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
111111101001011100000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
11101101000011110000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
1100101000111111000000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
100001000101111100000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
11000100111110000000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
1001100111010001000000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
1000111000001100000000000000000000000000000000000000000000000000001100011111101100
10001000000100001
11000011100100000000000000000000000000000000000000000000000001100011111101100
10001000000100001
1001011100000001000000000000000000000000000000000000000000001100011111101100
10001000000100001
1111100010001100000000000000000000000000000000000000000001100011111101100
10001000000100001
111000010011100100000000000000000000000000000000000000001100011111101100
10001000000100001
11010010010100110000000000000000000000000000000000000001100011111101100
10001000000100001
1011010010000111000000000000000000000000000000000000001100011111101100
10001000000100001
11110010010111100000000000000000000000000000000000001100011111101100
10001000000100001
1111010010011101000000000000000000000000000000000001100011111101100
10001000000100001
111110010001101100000000000000000000000000000000001100011111101100
10001000000100001
11100010000101110000000000000000000000000000000001100011111101100
10001000000100001
1101010000001111000000000000000000000000000000001100011111101100
10001000000100001
101110000011111100000000000000000000000000000001100011111101100
10001000000100001
1100000010111110000000000000000000000000000001100011111101100
10001000000100001
100100010101110100000000000000000000000000001100011111101100
10001000000100001
110010100110110000000000000000000000000001100011111101100
10001000000100001
10000100111110010000000000000000000000001100011111101100
10001000000100001
1100111010011000000000000000000000001100011111101100
10001000000100001
100011010001000100000000000000000001100011111101100
10001000000100001
1010000000110000000000000000001100011111101100
10001000000100001
10100000100000100000000000001100011111101100
10001000000100001
101000100100101000000000001100011111101100
10001000000100001
1010100101101010000000001100011111101100
10001000000100001
10000101111010100000001100011111101100
10001000000100001
1101111110101000001100011111101100
10001000000100001
101011110111000101100011111101100
10001000000100001
1001110110000111100011111101100
10001000000100001
1010110010111000011111101100
10001000000100001
10010010101000111111101100
10001000000100001
11010101100110111101100
10001000000100001
1011101100010110101100
10001000000100001
11001100000110001100
10001000000100001
1000100000010000100
10001000000100001
0
./crc_polymod --crc 0000000000000000000000000000000000
C7EC
11111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
1110111111011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
110011111001111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
10001111000111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
111000011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
11010011110000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
1011011110100011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
11111110110011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
1110110110111101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
110010110101101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
10000110100101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
1110100001111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
110000001101000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
10010001100000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
11001100100111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
1000100100011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
100001001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
11001101000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
1000101000110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
1000100001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
1110000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
110100100010000100000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
10110100011000110000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
111100011100111000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
11110011101111010000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
1111011101011011000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
111111101001011100000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
11101101000011110000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
1100101000111111000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
100001000101111100000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
11000100111110000000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
1001100111010001000000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
1000111000001100000000000000000000000000000000000000000000000000000000000000000000
10001000000100001
11000011100100000000000000000000000000000000000000000000000000000000000000000
10001000000100001
1001011100000001000000000000000000000000000000000000000000000000000000000000
10001000000100001
1111100010001100000000000000000000000000000000000000000000000000000000000
10001000000100001
111000010011100100000000000000000000000000000000000000000000000000000000
10001000000100001
11010010010100110000000000000000000000000000000000000000000000000000000
10001000000100001
1011010010000111000000000000000000000000000000000000000000000000000000
10001000000100001
11110010010111100000000000000000000000000000000000000000000000000000
10001000000100001
1111010010011101000000000000000000000000000000000000000000000000000
10001000000100001
111110010001101100000000000000000000000000000000000000000000000000
10001000000100001
11100010000101110000000000000000000000000000000000000000000000000
10001000000100001
1101010000001111000000000000000000000000000000000000000000000000
10001000000100001
101110000011111100000000000000000000000000000000000000000000000
10001000000100001
1100000010111110000000000000000000000000000000000000000000000
10001000000100001
100100010101110100000000000000000000000000000000000000000000
10001000000100001
110010100110110000000000000000000000000000000000000000000
10001000000100001
10000100111110010000000000000000000000000000000000000000
10001000000100001
1100111010011000000000000000000000000000000000000000
10001000000100001
100011010001000100000000000000000000000000000000000
10001000000100001
1010000000110000000000000000000000000000000000
10001000000100001
10100000100000100000000000000000000000000000
10001000000100001
101000100100101000000000000000000000000000
10001000000100001
1010100101101010000000000000000000000000
10001000000100001
10000101111010100000000000000000000000
10001000000100001
1101111110101000000000000000000000
10001000000100001
101011110111000100000000000000000
10001000000100001
1001110110000110000000000000000
10001000000100001
1010110010110100000000000000
10001000000100001
10010010100100100000000000
10001000000100001
11010100000101000000000
10001000000100001
1011100000001001000000
10001000000100001
11000000011001100000
10001000000100001
1001000011101101000
10001000000100001
1100011111101100
10001000000100001
1100011111101100
Rest:
1100011111101100 = 0xC7EC