Newer
Older
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
/*
* Copyright (c) 2018 by Intinor AB. All rights reserved.
*
* This file is part of "libRaptorQ".
*
* libRaptorQ is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3
* of the License, or (at your option) any later version.
*
* libRaptorQ is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* and a copy of the GNU Lesser General Public License
* along with libRaptorQ. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
static uint8_t gf256_low_ptr[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30,
0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30,
0, 3, 6, 5, 12, 15, 10, 9, 24, 27, 30, 29, 20, 23, 18, 17,
0, 3, 6, 5, 12, 15, 10, 9, 24, 27, 30, 29, 20, 23, 18, 17,
0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60,
0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60,
0, 5, 10, 15, 20, 17, 30, 27, 40, 45, 34, 39, 60, 57, 54, 51,
0, 5, 10, 15, 20, 17, 30, 27, 40, 45, 34, 39, 60, 57, 54, 51,
0, 6, 12, 10, 24, 30, 20, 18, 48, 54, 60, 58, 40, 46, 36, 34,
0, 6, 12, 10, 24, 30, 20, 18, 48, 54, 60, 58, 40, 46, 36, 34,
0, 7, 14, 9, 28, 27, 18, 21, 56, 63, 54, 49, 36, 35, 42, 45,
0, 7, 14, 9, 28, 27, 18, 21, 56, 63, 54, 49, 36, 35, 42, 45,
0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120,
0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120,
0, 9, 18, 27, 36, 45, 54, 63, 72, 65, 90, 83, 108, 101, 126, 119,
0, 9, 18, 27, 36, 45, 54, 63, 72, 65, 90, 83, 108, 101, 126, 119,
0, 10, 20, 30, 40, 34, 60, 54, 80, 90, 68, 78, 120, 114, 108, 102,
0, 10, 20, 30, 40, 34, 60, 54, 80, 90, 68, 78, 120, 114, 108, 102,
0, 11, 22, 29, 44, 39, 58, 49, 88, 83, 78, 69, 116, 127, 98, 105,
0, 11, 22, 29, 44, 39, 58, 49, 88, 83, 78, 69, 116, 127, 98, 105,
0, 12, 24, 20, 48, 60, 40, 36, 96, 108, 120, 116, 80, 92, 72, 68,
0, 12, 24, 20, 48, 60, 40, 36, 96, 108, 120, 116, 80, 92, 72, 68,
0, 13, 26, 23, 52, 57, 46, 35, 104, 101, 114, 127, 92, 81, 70, 75,
0, 13, 26, 23, 52, 57, 46, 35, 104, 101, 114, 127, 92, 81, 70, 75,
0, 14, 28, 18, 56, 54, 36, 42, 112, 126, 108, 98, 72, 70, 84, 90,
0, 14, 28, 18, 56, 54, 36, 42, 112, 126, 108, 98, 72, 70, 84, 90,
0, 15, 30, 17, 60, 51, 34, 45, 120, 119, 102, 105, 68, 75, 90, 85,
0, 15, 30, 17, 60, 51, 34, 45, 120, 119, 102, 105, 68, 75, 90, 85,
0, 16, 32, 48, 64, 80, 96, 112, 128, 144, 160, 176, 192, 208, 224, 240,
0, 16, 32, 48, 64, 80, 96, 112, 128, 144, 160, 176, 192, 208, 224, 240,
0, 17, 34, 51, 68, 85, 102, 119, 136, 153, 170, 187, 204, 221, 238, 255,
0, 17, 34, 51, 68, 85, 102, 119, 136, 153, 170, 187, 204, 221, 238, 255,
0, 18, 36, 54, 72, 90, 108, 126, 144, 130, 180, 166, 216, 202, 252, 238,
0, 18, 36, 54, 72, 90, 108, 126, 144, 130, 180, 166, 216, 202, 252, 238,
0, 19, 38, 53, 76, 95, 106, 121, 152, 139, 190, 173, 212, 199, 242, 225,
0, 19, 38, 53, 76, 95, 106, 121, 152, 139, 190, 173, 212, 199, 242, 225,
0, 20, 40, 60, 80, 68, 120, 108, 160, 180, 136, 156, 240, 228, 216, 204,
0, 20, 40, 60, 80, 68, 120, 108, 160, 180, 136, 156, 240, 228, 216, 204,
0, 21, 42, 63, 84, 65, 126, 107, 168, 189, 130, 151, 252, 233, 214, 195,
0, 21, 42, 63, 84, 65, 126, 107, 168, 189, 130, 151, 252, 233, 214, 195,
0, 22, 44, 58, 88, 78, 116, 98, 176, 166, 156, 138, 232, 254, 196, 210,
0, 22, 44, 58, 88, 78, 116, 98, 176, 166, 156, 138, 232, 254, 196, 210,
0, 23, 46, 57, 92, 75, 114, 101, 184, 175, 150, 129, 228, 243, 202, 221,
0, 23, 46, 57, 92, 75, 114, 101, 184, 175, 150, 129, 228, 243, 202, 221,
0, 24, 48, 40, 96, 120, 80, 72, 192, 216, 240, 232, 160, 184, 144, 136,
0, 24, 48, 40, 96, 120, 80, 72, 192, 216, 240, 232, 160, 184, 144, 136,
0, 25, 50, 43, 100, 125, 86, 79, 200, 209, 250, 227, 172, 181, 158, 135,
0, 25, 50, 43, 100, 125, 86, 79, 200, 209, 250, 227, 172, 181, 158, 135,
0, 26, 52, 46, 104, 114, 92, 70, 208, 202, 228, 254, 184, 162, 140, 150,
0, 26, 52, 46, 104, 114, 92, 70, 208, 202, 228, 254, 184, 162, 140, 150,
0, 27, 54, 45, 108, 119, 90, 65, 216, 195, 238, 245, 180, 175, 130, 153,
0, 27, 54, 45, 108, 119, 90, 65, 216, 195, 238, 245, 180, 175, 130, 153,
0, 28, 56, 36, 112, 108, 72, 84, 224, 252, 216, 196, 144, 140, 168, 180,
0, 28, 56, 36, 112, 108, 72, 84, 224, 252, 216, 196, 144, 140, 168, 180,
0, 29, 58, 39, 116, 105, 78, 83, 232, 245, 210, 207, 156, 129, 166, 187,
0, 29, 58, 39, 116, 105, 78, 83, 232, 245, 210, 207, 156, 129, 166, 187,
0, 30, 60, 34, 120, 102, 68, 90, 240, 238, 204, 210, 136, 150, 180, 170,
0, 30, 60, 34, 120, 102, 68, 90, 240, 238, 204, 210, 136, 150, 180, 170,
0, 31, 62, 33, 124, 99, 66, 93, 248, 231, 198, 217, 132, 155, 186, 165,
0, 31, 62, 33, 124, 99, 66, 93, 248, 231, 198, 217, 132, 155, 186, 165,
0, 32, 64, 96, 128, 160, 192, 224, 29, 61, 93, 125, 157, 189, 221, 253,
0, 32, 64, 96, 128, 160, 192, 224, 29, 61, 93, 125, 157, 189, 221, 253,
0, 33, 66, 99, 132, 165, 198, 231, 21, 52, 87, 118, 145, 176, 211, 242,
0, 33, 66, 99, 132, 165, 198, 231, 21, 52, 87, 118, 145, 176, 211, 242,
0, 34, 68, 102, 136, 170, 204, 238, 13, 47, 73, 107, 133, 167, 193, 227,
0, 34, 68, 102, 136, 170, 204, 238, 13, 47, 73, 107, 133, 167, 193, 227,
0, 35, 70, 101, 140, 175, 202, 233, 5, 38, 67, 96, 137, 170, 207, 236,
0, 35, 70, 101, 140, 175, 202, 233, 5, 38, 67, 96, 137, 170, 207, 236,
0, 36, 72, 108, 144, 180, 216, 252, 61, 25, 117, 81, 173, 137, 229, 193,
0, 36, 72, 108, 144, 180, 216, 252, 61, 25, 117, 81, 173, 137, 229, 193,
0, 37, 74, 111, 148, 177, 222, 251, 53, 16, 127, 90, 161, 132, 235, 206,
0, 37, 74, 111, 148, 177, 222, 251, 53, 16, 127, 90, 161, 132, 235, 206,
0, 38, 76, 106, 152, 190, 212, 242, 45, 11, 97, 71, 181, 147, 249, 223,
0, 38, 76, 106, 152, 190, 212, 242, 45, 11, 97, 71, 181, 147, 249, 223,
0, 39, 78, 105, 156, 187, 210, 245, 37, 2, 107, 76, 185, 158, 247, 208,
0, 39, 78, 105, 156, 187, 210, 245, 37, 2, 107, 76, 185, 158, 247, 208,
0, 40, 80, 120, 160, 136, 240, 216, 93, 117, 13, 37, 253, 213, 173, 133,
0, 40, 80, 120, 160, 136, 240, 216, 93, 117, 13, 37, 253, 213, 173, 133,
0, 41, 82, 123, 164, 141, 246, 223, 85, 124, 7, 46, 241, 216, 163, 138,
0, 41, 82, 123, 164, 141, 246, 223, 85, 124, 7, 46, 241, 216, 163, 138,
0, 42, 84, 126, 168, 130, 252, 214, 77, 103, 25, 51, 229, 207, 177, 155,
0, 42, 84, 126, 168, 130, 252, 214, 77, 103, 25, 51, 229, 207, 177, 155,
0, 43, 86, 125, 172, 135, 250, 209, 69, 110, 19, 56, 233, 194, 191, 148,
0, 43, 86, 125, 172, 135, 250, 209, 69, 110, 19, 56, 233, 194, 191, 148,
0, 44, 88, 116, 176, 156, 232, 196, 125, 81, 37, 9, 205, 225, 149, 185,
0, 44, 88, 116, 176, 156, 232, 196, 125, 81, 37, 9, 205, 225, 149, 185,
0, 45, 90, 119, 180, 153, 238, 195, 117, 88, 47, 2, 193, 236, 155, 182,
0, 45, 90, 119, 180, 153, 238, 195, 117, 88, 47, 2, 193, 236, 155, 182,
0, 46, 92, 114, 184, 150, 228, 202, 109, 67, 49, 31, 213, 251, 137, 167,
0, 46, 92, 114, 184, 150, 228, 202, 109, 67, 49, 31, 213, 251, 137, 167,
0, 47, 94, 113, 188, 147, 226, 205, 101, 74, 59, 20, 217, 246, 135, 168,
0, 47, 94, 113, 188, 147, 226, 205, 101, 74, 59, 20, 217, 246, 135, 168,
0, 48, 96, 80, 192, 240, 160, 144, 157, 173, 253, 205, 93, 109, 61, 13,
0, 48, 96, 80, 192, 240, 160, 144, 157, 173, 253, 205, 93, 109, 61, 13,
0, 49, 98, 83, 196, 245, 166, 151, 149, 164, 247, 198, 81, 96, 51, 2,
0, 49, 98, 83, 196, 245, 166, 151, 149, 164, 247, 198, 81, 96, 51, 2,
0, 50, 100, 86, 200, 250, 172, 158, 141, 191, 233, 219, 69, 119, 33, 19,
0, 50, 100, 86, 200, 250, 172, 158, 141, 191, 233, 219, 69, 119, 33, 19,
0, 51, 102, 85, 204, 255, 170, 153, 133, 182, 227, 208, 73, 122, 47, 28,
0, 51, 102, 85, 204, 255, 170, 153, 133, 182, 227, 208, 73, 122, 47, 28,
0, 52, 104, 92, 208, 228, 184, 140, 189, 137, 213, 225, 109, 89, 5, 49,
0, 52, 104, 92, 208, 228, 184, 140, 189, 137, 213, 225, 109, 89, 5, 49,
0, 53, 106, 95, 212, 225, 190, 139, 181, 128, 223, 234, 97, 84, 11, 62,
0, 53, 106, 95, 212, 225, 190, 139, 181, 128, 223, 234, 97, 84, 11, 62,
0, 54, 108, 90, 216, 238, 180, 130, 173, 155, 193, 247, 117, 67, 25, 47,
0, 54, 108, 90, 216, 238, 180, 130, 173, 155, 193, 247, 117, 67, 25, 47,
0, 55, 110, 89, 220, 235, 178, 133, 165, 146, 203, 252, 121, 78, 23, 32,
0, 55, 110, 89, 220, 235, 178, 133, 165, 146, 203, 252, 121, 78, 23, 32,
0, 56, 112, 72, 224, 216, 144, 168, 221, 229, 173, 149, 61, 5, 77, 117,
0, 56, 112, 72, 224, 216, 144, 168, 221, 229, 173, 149, 61, 5, 77, 117,
0, 57, 114, 75, 228, 221, 150, 175, 213, 236, 167, 158, 49, 8, 67, 122,
0, 57, 114, 75, 228, 221, 150, 175, 213, 236, 167, 158, 49, 8, 67, 122,
0, 58, 116, 78, 232, 210, 156, 166, 205, 247, 185, 131, 37, 31, 81, 107,
0, 58, 116, 78, 232, 210, 156, 166, 205, 247, 185, 131, 37, 31, 81, 107,
0, 59, 118, 77, 236, 215, 154, 161, 197, 254, 179, 136, 41, 18, 95, 100,
0, 59, 118, 77, 236, 215, 154, 161, 197, 254, 179, 136, 41, 18, 95, 100,
0, 60, 120, 68, 240, 204, 136, 180, 253, 193, 133, 185, 13, 49, 117, 73,
0, 60, 120, 68, 240, 204, 136, 180, 253, 193, 133, 185, 13, 49, 117, 73,
0, 61, 122, 71, 244, 201, 142, 179, 245, 200, 143, 178, 1, 60, 123, 70,
0, 61, 122, 71, 244, 201, 142, 179, 245, 200, 143, 178, 1, 60, 123, 70,
0, 62, 124, 66, 248, 198, 132, 186, 237, 211, 145, 175, 21, 43, 105, 87,
0, 62, 124, 66, 248, 198, 132, 186, 237, 211, 145, 175, 21, 43, 105, 87,
0, 63, 126, 65, 252, 195, 130, 189, 229, 218, 155, 164, 25, 38, 103, 88,
0, 63, 126, 65, 252, 195, 130, 189, 229, 218, 155, 164, 25, 38, 103, 88,
0, 64, 128, 192, 29, 93, 157, 221, 58, 122, 186, 250, 39, 103, 167, 231,
0, 64, 128, 192, 29, 93, 157, 221, 58, 122, 186, 250, 39, 103, 167, 231,
0, 65, 130, 195, 25, 88, 155, 218, 50, 115, 176, 241, 43, 106, 169, 232,
0, 65, 130, 195, 25, 88, 155, 218, 50, 115, 176, 241, 43, 106, 169, 232,
0, 66, 132, 198, 21, 87, 145, 211, 42, 104, 174, 236, 63, 125, 187, 249,
0, 66, 132, 198, 21, 87, 145, 211, 42, 104, 174, 236, 63, 125, 187, 249,
0, 67, 134, 197, 17, 82, 151, 212, 34, 97, 164, 231, 51, 112, 181, 246,
0, 67, 134, 197, 17, 82, 151, 212, 34, 97, 164, 231, 51, 112, 181, 246,
0, 68, 136, 204, 13, 73, 133, 193, 26, 94, 146, 214, 23, 83, 159, 219,
0, 68, 136, 204, 13, 73, 133, 193, 26, 94, 146, 214, 23, 83, 159, 219,
0, 69, 138, 207, 9, 76, 131, 198, 18, 87, 152, 221, 27, 94, 145, 212,
0, 69, 138, 207, 9, 76, 131, 198, 18, 87, 152, 221, 27, 94, 145, 212,
0, 70, 140, 202, 5, 67, 137, 207, 10, 76, 134, 192, 15, 73, 131, 197,
0, 70, 140, 202, 5, 67, 137, 207, 10, 76, 134, 192, 15, 73, 131, 197,
0, 71, 142, 201, 1, 70, 143, 200, 2, 69, 140, 203, 3, 68, 141, 202,
0, 71, 142, 201, 1, 70, 143, 200, 2, 69, 140, 203, 3, 68, 141, 202,
0, 72, 144, 216, 61, 117, 173, 229, 122, 50, 234, 162, 71, 15, 215, 159,
0, 72, 144, 216, 61, 117, 173, 229, 122, 50, 234, 162, 71, 15, 215, 159,
0, 73, 146, 219, 57, 112, 171, 226, 114, 59, 224, 169, 75, 2, 217, 144,
0, 73, 146, 219, 57, 112, 171, 226, 114, 59, 224, 169, 75, 2, 217, 144,
0, 74, 148, 222, 53, 127, 161, 235, 106, 32, 254, 180, 95, 21, 203, 129,
0, 74, 148, 222, 53, 127, 161, 235, 106, 32, 254, 180, 95, 21, 203, 129,
0, 75, 150, 221, 49, 122, 167, 236, 98, 41, 244, 191, 83, 24, 197, 142,
0, 75, 150, 221, 49, 122, 167, 236, 98, 41, 244, 191, 83, 24, 197, 142,
0, 76, 152, 212, 45, 97, 181, 249, 90, 22, 194, 142, 119, 59, 239, 163,
0, 76, 152, 212, 45, 97, 181, 249, 90, 22, 194, 142, 119, 59, 239, 163,
0, 77, 154, 215, 41, 100, 179, 254, 82, 31, 200, 133, 123, 54, 225, 172,
0, 77, 154, 215, 41, 100, 179, 254, 82, 31, 200, 133, 123, 54, 225, 172,
0, 78, 156, 210, 37, 107, 185, 247, 74, 4, 214, 152, 111, 33, 243, 189,
0, 78, 156, 210, 37, 107, 185, 247, 74, 4, 214, 152, 111, 33, 243, 189,
0, 79, 158, 209, 33, 110, 191, 240, 66, 13, 220, 147, 99, 44, 253, 178,
0, 79, 158, 209, 33, 110, 191, 240, 66, 13, 220, 147, 99, 44, 253, 178,
0, 80, 160, 240, 93, 13, 253, 173, 186, 234, 26, 74, 231, 183, 71, 23,
0, 80, 160, 240, 93, 13, 253, 173, 186, 234, 26, 74, 231, 183, 71, 23,
0, 81, 162, 243, 89, 8, 251, 170, 178, 227, 16, 65, 235, 186, 73, 24,
0, 81, 162, 243, 89, 8, 251, 170, 178, 227, 16, 65, 235, 186, 73, 24,
0, 82, 164, 246, 85, 7, 241, 163, 170, 248, 14, 92, 255, 173, 91, 9,
0, 82, 164, 246, 85, 7, 241, 163, 170, 248, 14, 92, 255, 173, 91, 9,
0, 83, 166, 245, 81, 2, 247, 164, 162, 241, 4, 87, 243, 160, 85, 6,
0, 83, 166, 245, 81, 2, 247, 164, 162, 241, 4, 87, 243, 160, 85, 6,
0, 84, 168, 252, 77, 25, 229, 177, 154, 206, 50, 102, 215, 131, 127, 43,
0, 84, 168, 252, 77, 25, 229, 177, 154, 206, 50, 102, 215, 131, 127, 43,
0, 85, 170, 255, 73, 28, 227, 182, 146, 199, 56, 109, 219, 142, 113, 36,
0, 85, 170, 255, 73, 28, 227, 182, 146, 199, 56, 109, 219, 142, 113, 36,
0, 86, 172, 250, 69, 19, 233, 191, 138, 220, 38, 112, 207, 153, 99, 53,
0, 86, 172, 250, 69, 19, 233, 191, 138, 220, 38, 112, 207, 153, 99, 53,
0, 87, 174, 249, 65, 22, 239, 184, 130, 213, 44, 123, 195, 148, 109, 58,
Loading full blame...