Line data Source code
1 : /* Note: This file is auto generated. */
2 : #ifndef HEADER_fd_src_ballet_reedsol_fd_reedsol_ppt_h
3 : #define HEADER_fd_src_ballet_reedsol_fd_reedsol_ppt_h
4 :
5 : #include "fd_reedsol_fft.h"
6 :
7 : /* This file implements the Principal Pivot Transform for the Reed
8 : Solomon FFT operator as described in:
9 : S. -J. Lin, A. Alloum and T. Al-Naffouri, "Principal pivot
10 : transforms on radix-2 DFT-type matrices," 2017 IEEE International
11 : Symposium on Information Theory (ISIT), Aachen, Germany, 2017, pp.
12 : 2358-2362, doi: 10.1109/ISIT.2017.8006951
13 :
14 : The main macro this file provides is FD_REEDSOL_GENERATE_PPT. The
15 : rest of this file is auto-generated implementation details.
16 :
17 : When the number of data shreds we have is not a power of 2, the
18 : approach used in the 32-32 case doesn't apply. I found the paper
19 : extending it to the general case uninterpretable. So we use the
20 : principal pivot transform as an alternative with similar
21 : computational complexity.
22 :
23 : The goal of the first step of the 32-32 case is to find a polynomial
24 : of degree < 32 that interpolates the data shreds. If we only have k
25 : data shreds, where k<32, then instead we need a polynomial P of
26 : degree <k that passes through the k data shreds that we have. If we
27 : could somehow determine P(k), P(k+1), ... P(31), then we could just
28 : use the 32-32 fast case. The principal pivot transform gives us a
29 : way to do exactly that.
30 :
31 : In the 32-32 case, we have:
32 : ( m_0 ) ( y_0 )
33 : ( m_1 ) ( y_1 )
34 : F^{-1} * ( ... ) = ( ... )
35 : ( m_30 ) ( y_30 )
36 : ( m_31 ) ( y_31 )
37 :
38 : where m is in the evaluation domain (i.e. P(i) = m_i) and y is in the
39 : coefficient domain (coefficients of the special basis elements).
40 : Now, we don't know the last 32-k elements of the m vector, i.e.
41 :
42 : ( m_0 ) ( y_0 )
43 : ( m_1 ) ( y_1 )
44 : F^{-1} * ( ... ) = ( ... )
45 : ( ??? ) ( y_30 )
46 : ( ??? ) ( y_31 )
47 :
48 : but what we do know is that the last 32-k elements of the y vector
49 : must be 0 in order for P to have the right order. I.e.
50 :
51 : ( m_0 ) ( y_0 )
52 : ( m_1 ) ( y_1 )
53 : F^{-1} * ( ... ) = ( ... )
54 : ( ??? ) ( 0 )
55 : ( ??? ) ( 0 )
56 :
57 : The principal pivot transform solves this type of problem, and for
58 : certain operators F (including the one we care about here) has a
59 : complexity of O(n log n), where F is an nxn matrix. To keep
60 : consistent with the paper, we multiply through by F and name the
61 : unknowns, actually solving
62 :
63 : ( y_0 ) ( m_0 )
64 : ( y_1 ) ( m_1 )
65 : F * ( ... ) = ( ... )
66 : ( 0 ) ( x_30 )
67 : ( 0 ) ( x_31 )
68 :
69 : Once we've solved this, x_k gives us P(k), i.e. the first parity
70 : shred. If we need more than 32-k parity shreds, then we can just use
71 : the same strategy as the 32-32 case and use the shifted FFT operation
72 : to go back from the coefficient domain to the evaluation domain with
73 : an offset of 32, giving us P(32), P(33), ... P(63) cheaply.
74 :
75 : The paper describes a more general case than what we need, since we
76 : always know the first k elements of the product vector, and not an
77 : arbitrary subset of them. This file only implements the specific
78 : case. */
79 :
80 : /* FD_REEDSOL_GENERATE_PPT: Inserts code to compute the principal pivot
81 : transform of size n (must be a power of 2, currently 16, 32, 64, and
82 : 128 are emitted by the code generator) and when you have k known
83 : elements of the evaluation domain (i.e. k data shreds). k must be
84 : less than n, but the code generator adds the additional restrictions
85 : that k<=67 and only the smallest n is chosen for each k.
86 : Additionally, The remaining n arguments should be vector variables of
87 : type gf_t (which is a typedef for wb_t in the AVX case). These are
88 : used as input and output, since there's no other good way to return n
89 : vector values. As such, this macro is not robust.
90 :
91 : As explained above, the PPT computes the k non-zero elements of the
92 : coefficient domain, followed by the first n-k parity elements. If
93 : the last n-k return values are replaced with zero, they can then be
94 : used with FD_REEDSOL_GENERATE_FFT and the appropriate shift to
95 : compute many more parity elements. The PPT is computed in a
96 : vectorized fashion, i.e. the PPT of the ith byte is computed and
97 : stored in the ith byte of the output for each i independently. */
98 :
99 26625015 : #define FD_REEDSOL_GENERATE_PPT(n, k, ...) FD_REEDSOL_PPT_IMPL_##n##_##k( __VA_ARGS__ )
100 :
101 : /* For n>=32, this header also declares
102 : void fd_reedsol_ppt_n_k( gf_t *, ... )
103 : that takes n gf_t elements by reference. The arguments are used for
104 : input and output, and it performs the same operation as the similarly
105 : named macro, but this signature allows the function to be defined in
106 : a different compilation unit to speed up compile times. */
107 :
108 : #define GF_MUL22( inout0, inout1, c00, c01, c10, c11) \
109 666876603 : do { \
110 666876603 : gf_t temp = GF_ADD( GF_MUL( inout0, c00 ), GF_MUL( inout1, c01 ) ); \
111 666876603 : inout1 = GF_ADD( GF_MUL( inout0, c10 ), GF_MUL( inout1, c11 ) ); \
112 666876603 : inout0 = temp; \
113 666876603 : } while( 0 )
114 :
115 : #define FD_REEDSOL_PPT_IMPL_16_1( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09 , \
116 : in10, in11, in12, in13, in14, in15) \
117 277563 : do { \
118 277563 : gf_t scratch_2, scratch_4, scratch_8; \
119 277563 : scratch_8 = in08; \
120 277563 : in08 = GF_MUL( in08, 1 ); \
121 277563 : GF_MUL22( in01, in09, 1, 0, 1, 1 ); \
122 277563 : GF_MUL22( in02, in10, 1, 0, 1, 1 ); \
123 277563 : GF_MUL22( in03, in11, 1, 0, 1, 1 ); \
124 277563 : GF_MUL22( in04, in12, 1, 0, 1, 1 ); \
125 277563 : GF_MUL22( in05, in13, 1, 0, 1, 1 ); \
126 277563 : GF_MUL22( in06, in14, 1, 0, 1, 1 ); \
127 277563 : GF_MUL22( in07, in15, 1, 0, 1, 1 ); \
128 277563 : scratch_4 = in04; \
129 277563 : in04 = GF_MUL( in04, 1 ); \
130 277563 : GF_MUL22( in01, in05, 1, 0, 1, 1 ); \
131 277563 : GF_MUL22( in02, in06, 1, 0, 1, 1 ); \
132 277563 : GF_MUL22( in03, in07, 1, 0, 1, 1 ); \
133 277563 : scratch_2 = in02; \
134 277563 : in02 = GF_MUL( in02, 1 ); \
135 277563 : GF_MUL22( in01, in03, 1, 0, 1, 1 ); \
136 277563 : GF_MUL22( in00, in01, 1, 0, 1, 1 ); \
137 277563 : in02 = GF_ADD( GF_MUL( in00, 1 ), in02 ); \
138 277563 : GF_MUL22( in02, in03, 1, 2, 1, 3 ); \
139 277563 : in00 = GF_MUL( in00, 1 ); \
140 277563 : in00 = GF_ADD( GF_MUL( scratch_2, 0 ), in00 ); \
141 277563 : in04 = GF_ADD( GF_MUL( in00, 1 ), in04 ); \
142 277563 : FD_REEDSOL_GENERATE_FFT( 4, 4, in04, in05, in06, in07 ); \
143 277563 : in00 = GF_MUL( in00, 1 ); \
144 277563 : in00 = GF_ADD( GF_MUL( scratch_4, 0 ), in00 ); \
145 277563 : in08 = GF_ADD( GF_MUL( in00, 1 ), in08 ); \
146 277563 : FD_REEDSOL_GENERATE_FFT( 8, 8, in08, in09, in10, in11, in12, in13, in14, in15 ); \
147 277563 : in00 = GF_MUL( in00, 1 ); \
148 277563 : in00 = GF_ADD( GF_MUL( scratch_8, 0 ), in00 ); \
149 277563 : } while( 0 )
150 :
151 : #define FD_REEDSOL_PPT_IMPL_16_2( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09 , \
152 : in10, in11, in12, in13, in14, in15) \
153 277563 : do { \
154 277563 : gf_t scratch_2, scratch_3, scratch_4, scratch_5, scratch_8, scratch_9; \
155 277563 : scratch_8 = in08; \
156 277563 : in08 = GF_MUL( in08, 1 ); \
157 277563 : scratch_9 = in09; \
158 277563 : in09 = GF_MUL( in09, 1 ); \
159 277563 : GF_MUL22( in02, in10, 1, 0, 1, 1 ); \
160 277563 : GF_MUL22( in03, in11, 1, 0, 1, 1 ); \
161 277563 : GF_MUL22( in04, in12, 1, 0, 1, 1 ); \
162 277563 : GF_MUL22( in05, in13, 1, 0, 1, 1 ); \
163 277563 : GF_MUL22( in06, in14, 1, 0, 1, 1 ); \
164 277563 : GF_MUL22( in07, in15, 1, 0, 1, 1 ); \
165 277563 : scratch_4 = in04; \
166 277563 : in04 = GF_MUL( in04, 1 ); \
167 277563 : scratch_5 = in05; \
168 277563 : in05 = GF_MUL( in05, 1 ); \
169 277563 : GF_MUL22( in02, in06, 1, 0, 1, 1 ); \
170 277563 : GF_MUL22( in03, in07, 1, 0, 1, 1 ); \
171 277563 : scratch_2 = in02; \
172 277563 : in02 = GF_MUL( in02, 1 ); \
173 277563 : scratch_3 = in03; \
174 277563 : in03 = GF_MUL( in03, 1 ); \
175 277563 : GF_MUL22( in00, in01, 1, 0, 1, 1 ); \
176 277563 : in02 = GF_ADD( GF_MUL( in00, 1 ), in02 ); \
177 277563 : in03 = GF_ADD( GF_MUL( in01, 1 ), in03 ); \
178 277563 : GF_MUL22( in02, in03, 1, 2, 1, 3 ); \
179 277563 : in00 = GF_MUL( in00, 1 ); \
180 277563 : in00 = GF_ADD( GF_MUL( scratch_2, 0 ), in00 ); \
181 277563 : in01 = GF_MUL( in01, 1 ); \
182 277563 : in01 = GF_ADD( GF_MUL( scratch_3, 0 ), in01 ); \
183 277563 : in04 = GF_ADD( GF_MUL( in00, 1 ), in04 ); \
184 277563 : in05 = GF_ADD( GF_MUL( in01, 1 ), in05 ); \
185 277563 : FD_REEDSOL_GENERATE_FFT( 4, 4, in04, in05, in06, in07 ); \
186 277563 : in00 = GF_MUL( in00, 1 ); \
187 277563 : in00 = GF_ADD( GF_MUL( scratch_4, 0 ), in00 ); \
188 277563 : in01 = GF_MUL( in01, 1 ); \
189 277563 : in01 = GF_ADD( GF_MUL( scratch_5, 0 ), in01 ); \
190 277563 : in08 = GF_ADD( GF_MUL( in00, 1 ), in08 ); \
191 277563 : in09 = GF_ADD( GF_MUL( in01, 1 ), in09 ); \
192 277563 : FD_REEDSOL_GENERATE_FFT( 8, 8, in08, in09, in10, in11, in12, in13, in14, in15 ); \
193 277563 : in00 = GF_MUL( in00, 1 ); \
194 277563 : in00 = GF_ADD( GF_MUL( scratch_8, 0 ), in00 ); \
195 277563 : in01 = GF_MUL( in01, 1 ); \
196 277563 : in01 = GF_ADD( GF_MUL( scratch_9, 0 ), in01 ); \
197 277563 : } while( 0 )
198 :
199 : #define FD_REEDSOL_PPT_IMPL_16_3( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, \
200 : in11, in12, in13, in14, in15) \
201 277563 : do { \
202 277563 : gf_t scratch_10, scratch_3, scratch_4, scratch_5, scratch_6, scratch_8, scratch_9; \
203 277563 : scratch_8 = in08; \
204 277563 : in08 = GF_MUL( in08, 1 ); \
205 277563 : scratch_9 = in09; \
206 277563 : in09 = GF_MUL( in09, 1 ); \
207 277563 : scratch_10 = in10; \
208 277563 : in10 = GF_MUL( in10, 1 ); \
209 277563 : GF_MUL22( in03, in11, 1, 0, 1, 1 ); \
210 277563 : GF_MUL22( in04, in12, 1, 0, 1, 1 ); \
211 277563 : GF_MUL22( in05, in13, 1, 0, 1, 1 ); \
212 277563 : GF_MUL22( in06, in14, 1, 0, 1, 1 ); \
213 277563 : GF_MUL22( in07, in15, 1, 0, 1, 1 ); \
214 277563 : scratch_4 = in04; \
215 277563 : in04 = GF_MUL( in04, 1 ); \
216 277563 : scratch_5 = in05; \
217 277563 : in05 = GF_MUL( in05, 1 ); \
218 277563 : scratch_6 = in06; \
219 277563 : in06 = GF_MUL( in06, 1 ); \
220 277563 : GF_MUL22( in03, in07, 1, 0, 1, 1 ); \
221 277563 : scratch_3 = in03; \
222 277563 : in03 = GF_MUL( in03, 1 ); \
223 277563 : GF_MUL22( in00, in01, 1, 0, 1, 1 ); \
224 277563 : in03 = GF_ADD( GF_MUL( in01, 1 ), in03 ); \
225 277563 : GF_MUL22( in02, in03, 1, 2, 1, 1 ); \
226 277563 : GF_MUL22( in00, in02, 1, 0, 1, 1 ); \
227 277563 : in01 = GF_MUL( in01, 1 ); \
228 277563 : in01 = GF_ADD( GF_MUL( scratch_3, 0 ), in01 ); \
229 277563 : in04 = GF_ADD( GF_MUL( in00, 1 ), in04 ); \
230 277563 : in05 = GF_ADD( GF_MUL( in01, 1 ), in05 ); \
231 277563 : in06 = GF_ADD( GF_MUL( in02, 1 ), in06 ); \
232 277563 : FD_REEDSOL_GENERATE_FFT( 4, 4, in04, in05, in06, in07 ); \
233 277563 : in00 = GF_MUL( in00, 1 ); \
234 277563 : in00 = GF_ADD( GF_MUL( scratch_4, 0 ), in00 ); \
235 277563 : in01 = GF_MUL( in01, 1 ); \
236 277563 : in01 = GF_ADD( GF_MUL( scratch_5, 0 ), in01 ); \
237 277563 : in02 = GF_MUL( in02, 1 ); \
238 277563 : in02 = GF_ADD( GF_MUL( scratch_6, 0 ), in02 ); \
239 277563 : in08 = GF_ADD( GF_MUL( in00, 1 ), in08 ); \
240 277563 : in09 = GF_ADD( GF_MUL( in01, 1 ), in09 ); \
241 277563 : in10 = GF_ADD( GF_MUL( in02, 1 ), in10 ); \
242 277563 : FD_REEDSOL_GENERATE_FFT( 8, 8, in08, in09, in10, in11, in12, in13, in14, in15 ); \
243 277563 : in00 = GF_MUL( in00, 1 ); \
244 277563 : in00 = GF_ADD( GF_MUL( scratch_8, 0 ), in00 ); \
245 277563 : in01 = GF_MUL( in01, 1 ); \
246 277563 : in01 = GF_ADD( GF_MUL( scratch_9, 0 ), in01 ); \
247 277563 : in02 = GF_MUL( in02, 1 ); \
248 277563 : in02 = GF_ADD( GF_MUL( scratch_10, 0 ), in02 ); \
249 277563 : } while( 0 )
250 :
251 : #define FD_REEDSOL_PPT_IMPL_16_4( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, \
252 : in13, in14, in15) \
253 277563 : do { \
254 277563 : gf_t scratch_10, scratch_11, scratch_4, scratch_5, scratch_6, scratch_7, scratch_8, scratch_9; \
255 277563 : scratch_8 = in08; \
256 277563 : in08 = GF_MUL( in08, 1 ); \
257 277563 : scratch_9 = in09; \
258 277563 : in09 = GF_MUL( in09, 1 ); \
259 277563 : scratch_10 = in10; \
260 277563 : in10 = GF_MUL( in10, 1 ); \
261 277563 : scratch_11 = in11; \
262 277563 : in11 = GF_MUL( in11, 1 ); \
263 277563 : GF_MUL22( in04, in12, 1, 0, 1, 1 ); \
264 277563 : GF_MUL22( in05, in13, 1, 0, 1, 1 ); \
265 277563 : GF_MUL22( in06, in14, 1, 0, 1, 1 ); \
266 277563 : GF_MUL22( in07, in15, 1, 0, 1, 1 ); \
267 277563 : scratch_4 = in04; \
268 277563 : in04 = GF_MUL( in04, 1 ); \
269 277563 : scratch_5 = in05; \
270 277563 : in05 = GF_MUL( in05, 1 ); \
271 277563 : scratch_6 = in06; \
272 277563 : in06 = GF_MUL( in06, 1 ); \
273 277563 : scratch_7 = in07; \
274 277563 : in07 = GF_MUL( in07, 1 ); \
275 277563 : FD_REEDSOL_GENERATE_IFFT( 4, 0, in00, in01, in02, in03 ); \
276 277563 : in04 = GF_ADD( GF_MUL( in00, 1 ), in04 ); \
277 277563 : in05 = GF_ADD( GF_MUL( in01, 1 ), in05 ); \
278 277563 : in06 = GF_ADD( GF_MUL( in02, 1 ), in06 ); \
279 277563 : in07 = GF_ADD( GF_MUL( in03, 1 ), in07 ); \
280 277563 : FD_REEDSOL_GENERATE_FFT( 4, 4, in04, in05, in06, in07 ); \
281 277563 : in00 = GF_MUL( in00, 1 ); \
282 277563 : in00 = GF_ADD( GF_MUL( scratch_4, 0 ), in00 ); \
283 277563 : in01 = GF_MUL( in01, 1 ); \
284 277563 : in01 = GF_ADD( GF_MUL( scratch_5, 0 ), in01 ); \
285 277563 : in02 = GF_MUL( in02, 1 ); \
286 277563 : in02 = GF_ADD( GF_MUL( scratch_6, 0 ), in02 ); \
287 277563 : in03 = GF_MUL( in03, 1 ); \
288 277563 : in03 = GF_ADD( GF_MUL( scratch_7, 0 ), in03 ); \
289 277563 : in08 = GF_ADD( GF_MUL( in00, 1 ), in08 ); \
290 277563 : in09 = GF_ADD( GF_MUL( in01, 1 ), in09 ); \
291 277563 : in10 = GF_ADD( GF_MUL( in02, 1 ), in10 ); \
292 277563 : in11 = GF_ADD( GF_MUL( in03, 1 ), in11 ); \
293 277563 : FD_REEDSOL_GENERATE_FFT( 8, 8, in08, in09, in10, in11, in12, in13, in14, in15 ); \
294 277563 : in00 = GF_MUL( in00, 1 ); \
295 277563 : in00 = GF_ADD( GF_MUL( scratch_8, 0 ), in00 ); \
296 277563 : in01 = GF_MUL( in01, 1 ); \
297 277563 : in01 = GF_ADD( GF_MUL( scratch_9, 0 ), in01 ); \
298 277563 : in02 = GF_MUL( in02, 1 ); \
299 277563 : in02 = GF_ADD( GF_MUL( scratch_10, 0 ), in02 ); \
300 277563 : in03 = GF_MUL( in03, 1 ); \
301 277563 : in03 = GF_ADD( GF_MUL( scratch_11, 0 ), in03 ); \
302 277563 : } while( 0 )
303 :
304 : #define FD_REEDSOL_PPT_IMPL_16_5( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, \
305 : in15) \
306 277563 : do { \
307 277563 : gf_t scratch_10, scratch_11, scratch_12, scratch_2, scratch_5, scratch_6, scratch_7, scratch_8, scratch_9; \
308 277563 : scratch_8 = in08; \
309 277563 : in08 = GF_MUL( in08, 1 ); \
310 277563 : scratch_9 = in09; \
311 277563 : in09 = GF_MUL( in09, 1 ); \
312 277563 : scratch_10 = in10; \
313 277563 : in10 = GF_MUL( in10, 1 ); \
314 277563 : scratch_11 = in11; \
315 277563 : in11 = GF_MUL( in11, 1 ); \
316 277563 : scratch_12 = in12; \
317 277563 : in12 = GF_MUL( in12, 1 ); \
318 277563 : GF_MUL22( in05, in13, 1, 0, 1, 1 ); \
319 277563 : GF_MUL22( in06, in14, 1, 0, 1, 1 ); \
320 277563 : GF_MUL22( in07, in15, 1, 0, 1, 1 ); \
321 277563 : scratch_5 = in05; \
322 277563 : in05 = GF_MUL( in05, 1 ); \
323 277563 : scratch_6 = in06; \
324 277563 : in06 = GF_MUL( in06, 1 ); \
325 277563 : scratch_7 = in07; \
326 277563 : in07 = GF_MUL( in07, 1 ); \
327 277563 : FD_REEDSOL_GENERATE_IFFT( 4, 0, in00, in01, in02, in03 ); \
328 277563 : in05 = GF_ADD( GF_MUL( in01, 1 ), in05 ); \
329 277563 : in06 = GF_ADD( GF_MUL( in02, 1 ), in06 ); \
330 277563 : in07 = GF_ADD( GF_MUL( in03, 1 ), in07 ); \
331 277563 : scratch_2 = in06; \
332 277563 : in06 = GF_MUL( in06, 1 ); \
333 277563 : GF_MUL22( in05, in07, 1, 6, 1, 7 ); \
334 277563 : GF_MUL22( in04, in05, 1, 4, 1, 1 ); \
335 277563 : in06 = GF_ADD( GF_MUL( in04, 1 ), in06 ); \
336 277563 : GF_MUL22( in06, in07, 1, 6, 1, 7 ); \
337 277563 : in04 = GF_MUL( in04, 1 ); \
338 277563 : in04 = GF_ADD( GF_MUL( scratch_2, 6 ), in04 ); \
339 277563 : GF_MUL22( in00, in04, 1, 0, 1, 1 ); \
340 277563 : in01 = GF_MUL( in01, 1 ); \
341 277563 : in01 = GF_ADD( GF_MUL( scratch_5, 0 ), in01 ); \
342 277563 : in02 = GF_MUL( in02, 1 ); \
343 277563 : in02 = GF_ADD( GF_MUL( scratch_6, 0 ), in02 ); \
344 277563 : in03 = GF_MUL( in03, 1 ); \
345 277563 : in03 = GF_ADD( GF_MUL( scratch_7, 0 ), in03 ); \
346 277563 : in08 = GF_ADD( GF_MUL( in00, 1 ), in08 ); \
347 277563 : in09 = GF_ADD( GF_MUL( in01, 1 ), in09 ); \
348 277563 : in10 = GF_ADD( GF_MUL( in02, 1 ), in10 ); \
349 277563 : in11 = GF_ADD( GF_MUL( in03, 1 ), in11 ); \
350 277563 : in12 = GF_ADD( GF_MUL( in04, 1 ), in12 ); \
351 277563 : FD_REEDSOL_GENERATE_FFT( 8, 8, in08, in09, in10, in11, in12, in13, in14, in15 ); \
352 277563 : in00 = GF_MUL( in00, 1 ); \
353 277563 : in00 = GF_ADD( GF_MUL( scratch_8, 0 ), in00 ); \
354 277563 : in01 = GF_MUL( in01, 1 ); \
355 277563 : in01 = GF_ADD( GF_MUL( scratch_9, 0 ), in01 ); \
356 277563 : in02 = GF_MUL( in02, 1 ); \
357 277563 : in02 = GF_ADD( GF_MUL( scratch_10, 0 ), in02 ); \
358 277563 : in03 = GF_MUL( in03, 1 ); \
359 277563 : in03 = GF_ADD( GF_MUL( scratch_11, 0 ), in03 ); \
360 277563 : in04 = GF_MUL( in04, 1 ); \
361 277563 : in04 = GF_ADD( GF_MUL( scratch_12, 0 ), in04 ); \
362 277563 : } while( 0 )
363 :
364 : #define FD_REEDSOL_PPT_IMPL_16_6( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15) \
365 277563 : do { \
366 277563 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_2, scratch_3, scratch_6, scratch_7, scratch_8, scratch_9; \
367 277563 : scratch_8 = in08; \
368 277563 : in08 = GF_MUL( in08, 1 ); \
369 277563 : scratch_9 = in09; \
370 277563 : in09 = GF_MUL( in09, 1 ); \
371 277563 : scratch_10 = in10; \
372 277563 : in10 = GF_MUL( in10, 1 ); \
373 277563 : scratch_11 = in11; \
374 277563 : in11 = GF_MUL( in11, 1 ); \
375 277563 : scratch_12 = in12; \
376 277563 : in12 = GF_MUL( in12, 1 ); \
377 277563 : scratch_13 = in13; \
378 277563 : in13 = GF_MUL( in13, 1 ); \
379 277563 : GF_MUL22( in06, in14, 1, 0, 1, 1 ); \
380 277563 : GF_MUL22( in07, in15, 1, 0, 1, 1 ); \
381 277563 : scratch_6 = in06; \
382 277563 : in06 = GF_MUL( in06, 1 ); \
383 277563 : scratch_7 = in07; \
384 277563 : in07 = GF_MUL( in07, 1 ); \
385 277563 : FD_REEDSOL_GENERATE_IFFT( 4, 0, in00, in01, in02, in03 ); \
386 277563 : in06 = GF_ADD( GF_MUL( in02, 1 ), in06 ); \
387 277563 : in07 = GF_ADD( GF_MUL( in03, 1 ), in07 ); \
388 277563 : scratch_2 = in06; \
389 277563 : in06 = GF_MUL( in06, 1 ); \
390 277563 : scratch_3 = in07; \
391 277563 : in07 = GF_MUL( in07, 1 ); \
392 277563 : GF_MUL22( in04, in05, 5, 4, 1, 1 ); \
393 277563 : in06 = GF_ADD( GF_MUL( in04, 1 ), in06 ); \
394 277563 : in07 = GF_ADD( GF_MUL( in05, 1 ), in07 ); \
395 277563 : GF_MUL22( in06, in07, 1, 6, 1, 7 ); \
396 277563 : in04 = GF_MUL( in04, 1 ); \
397 277563 : in04 = GF_ADD( GF_MUL( scratch_2, 6 ), in04 ); \
398 277563 : in05 = GF_MUL( in05, 1 ); \
399 277563 : in05 = GF_ADD( GF_MUL( scratch_3, 6 ), in05 ); \
400 277563 : GF_MUL22( in00, in04, 1, 0, 1, 1 ); \
401 277563 : GF_MUL22( in01, in05, 1, 0, 1, 1 ); \
402 277563 : in02 = GF_MUL( in02, 1 ); \
403 277563 : in02 = GF_ADD( GF_MUL( scratch_6, 0 ), in02 ); \
404 277563 : in03 = GF_MUL( in03, 1 ); \
405 277563 : in03 = GF_ADD( GF_MUL( scratch_7, 0 ), in03 ); \
406 277563 : in08 = GF_ADD( GF_MUL( in00, 1 ), in08 ); \
407 277563 : in09 = GF_ADD( GF_MUL( in01, 1 ), in09 ); \
408 277563 : in10 = GF_ADD( GF_MUL( in02, 1 ), in10 ); \
409 277563 : in11 = GF_ADD( GF_MUL( in03, 1 ), in11 ); \
410 277563 : in12 = GF_ADD( GF_MUL( in04, 1 ), in12 ); \
411 277563 : in13 = GF_ADD( GF_MUL( in05, 1 ), in13 ); \
412 277563 : FD_REEDSOL_GENERATE_FFT( 8, 8, in08, in09, in10, in11, in12, in13, in14, in15 ); \
413 277563 : in00 = GF_MUL( in00, 1 ); \
414 277563 : in00 = GF_ADD( GF_MUL( scratch_8, 0 ), in00 ); \
415 277563 : in01 = GF_MUL( in01, 1 ); \
416 277563 : in01 = GF_ADD( GF_MUL( scratch_9, 0 ), in01 ); \
417 277563 : in02 = GF_MUL( in02, 1 ); \
418 277563 : in02 = GF_ADD( GF_MUL( scratch_10, 0 ), in02 ); \
419 277563 : in03 = GF_MUL( in03, 1 ); \
420 277563 : in03 = GF_ADD( GF_MUL( scratch_11, 0 ), in03 ); \
421 277563 : in04 = GF_MUL( in04, 1 ); \
422 277563 : in04 = GF_ADD( GF_MUL( scratch_12, 0 ), in04 ); \
423 277563 : in05 = GF_MUL( in05, 1 ); \
424 277563 : in05 = GF_ADD( GF_MUL( scratch_13, 0 ), in05 ); \
425 277563 : } while( 0 )
426 :
427 : #define FD_REEDSOL_PPT_IMPL_16_7( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14 , \
428 : in15) \
429 277563 : do { \
430 277563 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_3, scratch_7, scratch_8, scratch_9; \
431 277563 : scratch_8 = in08; \
432 277563 : in08 = GF_MUL( in08, 1 ); \
433 277563 : scratch_9 = in09; \
434 277563 : in09 = GF_MUL( in09, 1 ); \
435 277563 : scratch_10 = in10; \
436 277563 : in10 = GF_MUL( in10, 1 ); \
437 277563 : scratch_11 = in11; \
438 277563 : in11 = GF_MUL( in11, 1 ); \
439 277563 : scratch_12 = in12; \
440 277563 : in12 = GF_MUL( in12, 1 ); \
441 277563 : scratch_13 = in13; \
442 277563 : in13 = GF_MUL( in13, 1 ); \
443 277563 : scratch_14 = in14; \
444 277563 : in14 = GF_MUL( in14, 1 ); \
445 277563 : GF_MUL22( in07, in15, 1, 0, 1, 1 ); \
446 277563 : scratch_7 = in07; \
447 277563 : in07 = GF_MUL( in07, 1 ); \
448 277563 : FD_REEDSOL_GENERATE_IFFT( 4, 0, in00, in01, in02, in03 ); \
449 277563 : in07 = GF_ADD( GF_MUL( in03, 1 ), in07 ); \
450 277563 : scratch_3 = in07; \
451 277563 : in07 = GF_MUL( in07, 1 ); \
452 277563 : GF_MUL22( in04, in05, 5, 4, 1, 1 ); \
453 277563 : in07 = GF_ADD( GF_MUL( in05, 1 ), in07 ); \
454 277563 : GF_MUL22( in06, in07, 1, 6, 1, 1 ); \
455 277563 : GF_MUL22( in04, in06, 7, 6, 1, 1 ); \
456 277563 : in05 = GF_MUL( in05, 1 ); \
457 277563 : in05 = GF_ADD( GF_MUL( scratch_3, 6 ), in05 ); \
458 277563 : GF_MUL22( in00, in04, 1, 0, 1, 1 ); \
459 277563 : GF_MUL22( in01, in05, 1, 0, 1, 1 ); \
460 277563 : GF_MUL22( in02, in06, 1, 0, 1, 1 ); \
461 277563 : in03 = GF_MUL( in03, 1 ); \
462 277563 : in03 = GF_ADD( GF_MUL( scratch_7, 0 ), in03 ); \
463 277563 : in08 = GF_ADD( GF_MUL( in00, 1 ), in08 ); \
464 277563 : in09 = GF_ADD( GF_MUL( in01, 1 ), in09 ); \
465 277563 : in10 = GF_ADD( GF_MUL( in02, 1 ), in10 ); \
466 277563 : in11 = GF_ADD( GF_MUL( in03, 1 ), in11 ); \
467 277563 : in12 = GF_ADD( GF_MUL( in04, 1 ), in12 ); \
468 277563 : in13 = GF_ADD( GF_MUL( in05, 1 ), in13 ); \
469 277563 : in14 = GF_ADD( GF_MUL( in06, 1 ), in14 ); \
470 277563 : FD_REEDSOL_GENERATE_FFT( 8, 8, in08, in09, in10, in11, in12, in13, in14, in15 ); \
471 277563 : in00 = GF_MUL( in00, 1 ); \
472 277563 : in00 = GF_ADD( GF_MUL( scratch_8, 0 ), in00 ); \
473 277563 : in01 = GF_MUL( in01, 1 ); \
474 277563 : in01 = GF_ADD( GF_MUL( scratch_9, 0 ), in01 ); \
475 277563 : in02 = GF_MUL( in02, 1 ); \
476 277563 : in02 = GF_ADD( GF_MUL( scratch_10, 0 ), in02 ); \
477 277563 : in03 = GF_MUL( in03, 1 ); \
478 277563 : in03 = GF_ADD( GF_MUL( scratch_11, 0 ), in03 ); \
479 277563 : in04 = GF_MUL( in04, 1 ); \
480 277563 : in04 = GF_ADD( GF_MUL( scratch_12, 0 ), in04 ); \
481 277563 : in05 = GF_MUL( in05, 1 ); \
482 277563 : in05 = GF_ADD( GF_MUL( scratch_13, 0 ), in05 ); \
483 277563 : in06 = GF_MUL( in06, 1 ); \
484 277563 : in06 = GF_ADD( GF_MUL( scratch_14, 0 ), in06 ); \
485 277563 : } while( 0 )
486 :
487 : #define FD_REEDSOL_PPT_IMPL_16_8( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12 , \
488 : in13, in14, in15) \
489 277563 : do { \
490 277563 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_8, scratch_9; \
491 277563 : scratch_8 = in08; \
492 277563 : in08 = GF_MUL( in08, 1 ); \
493 277563 : scratch_9 = in09; \
494 277563 : in09 = GF_MUL( in09, 1 ); \
495 277563 : scratch_10 = in10; \
496 277563 : in10 = GF_MUL( in10, 1 ); \
497 277563 : scratch_11 = in11; \
498 277563 : in11 = GF_MUL( in11, 1 ); \
499 277563 : scratch_12 = in12; \
500 277563 : in12 = GF_MUL( in12, 1 ); \
501 277563 : scratch_13 = in13; \
502 277563 : in13 = GF_MUL( in13, 1 ); \
503 277563 : scratch_14 = in14; \
504 277563 : in14 = GF_MUL( in14, 1 ); \
505 277563 : scratch_15 = in15; \
506 277563 : in15 = GF_MUL( in15, 1 ); \
507 277563 : FD_REEDSOL_GENERATE_IFFT( 8, 0, in00, in01, in02, in03, in04, in05, in06, in07 ); \
508 277563 : in08 = GF_ADD( GF_MUL( in00, 1 ), in08 ); \
509 277563 : in09 = GF_ADD( GF_MUL( in01, 1 ), in09 ); \
510 277563 : in10 = GF_ADD( GF_MUL( in02, 1 ), in10 ); \
511 277563 : in11 = GF_ADD( GF_MUL( in03, 1 ), in11 ); \
512 277563 : in12 = GF_ADD( GF_MUL( in04, 1 ), in12 ); \
513 277563 : in13 = GF_ADD( GF_MUL( in05, 1 ), in13 ); \
514 277563 : in14 = GF_ADD( GF_MUL( in06, 1 ), in14 ); \
515 277563 : in15 = GF_ADD( GF_MUL( in07, 1 ), in15 ); \
516 277563 : FD_REEDSOL_GENERATE_FFT( 8, 8, in08, in09, in10, in11, in12, in13, in14, in15 ); \
517 277563 : in00 = GF_MUL( in00, 1 ); \
518 277563 : in00 = GF_ADD( GF_MUL( scratch_8, 0 ), in00 ); \
519 277563 : in01 = GF_MUL( in01, 1 ); \
520 277563 : in01 = GF_ADD( GF_MUL( scratch_9, 0 ), in01 ); \
521 277563 : in02 = GF_MUL( in02, 1 ); \
522 277563 : in02 = GF_ADD( GF_MUL( scratch_10, 0 ), in02 ); \
523 277563 : in03 = GF_MUL( in03, 1 ); \
524 277563 : in03 = GF_ADD( GF_MUL( scratch_11, 0 ), in03 ); \
525 277563 : in04 = GF_MUL( in04, 1 ); \
526 277563 : in04 = GF_ADD( GF_MUL( scratch_12, 0 ), in04 ); \
527 277563 : in05 = GF_MUL( in05, 1 ); \
528 277563 : in05 = GF_ADD( GF_MUL( scratch_13, 0 ), in05 ); \
529 277563 : in06 = GF_MUL( in06, 1 ); \
530 277563 : in06 = GF_ADD( GF_MUL( scratch_14, 0 ), in06 ); \
531 277563 : in07 = GF_MUL( in07, 1 ); \
532 277563 : in07 = GF_ADD( GF_MUL( scratch_15, 0 ), in07 ); \
533 277563 : } while( 0 )
534 :
535 : #define FD_REEDSOL_PPT_IMPL_16_9( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14 , \
536 : in15) \
537 277563 : do { \
538 277563 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_2, scratch_4, scratch_9; \
539 277563 : scratch_9 = in09; \
540 277563 : in09 = GF_MUL( in09, 1 ); \
541 277563 : scratch_10 = in10; \
542 277563 : in10 = GF_MUL( in10, 1 ); \
543 277563 : scratch_11 = in11; \
544 277563 : in11 = GF_MUL( in11, 1 ); \
545 277563 : scratch_12 = in12; \
546 277563 : in12 = GF_MUL( in12, 1 ); \
547 277563 : scratch_13 = in13; \
548 277563 : in13 = GF_MUL( in13, 1 ); \
549 277563 : scratch_14 = in14; \
550 277563 : in14 = GF_MUL( in14, 1 ); \
551 277563 : scratch_15 = in15; \
552 277563 : in15 = GF_MUL( in15, 1 ); \
553 277563 : FD_REEDSOL_GENERATE_IFFT( 8, 0, in00, in01, in02, in03, in04, in05, in06, in07 ); \
554 277563 : in09 = GF_ADD( GF_MUL( in01, 1 ), in09 ); \
555 277563 : in10 = GF_ADD( GF_MUL( in02, 1 ), in10 ); \
556 277563 : in11 = GF_ADD( GF_MUL( in03, 1 ), in11 ); \
557 277563 : in12 = GF_ADD( GF_MUL( in04, 1 ), in12 ); \
558 277563 : in13 = GF_ADD( GF_MUL( in05, 1 ), in13 ); \
559 277563 : in14 = GF_ADD( GF_MUL( in06, 1 ), in14 ); \
560 277563 : in15 = GF_ADD( GF_MUL( in07, 1 ), in15 ); \
561 277563 : scratch_4 = in12; \
562 277563 : in12 = GF_MUL( in12, 1 ); \
563 277563 : GF_MUL22( in09, in13, 1, 22, 1, 23 ); \
564 277563 : GF_MUL22( in10, in14, 1, 22, 1, 23 ); \
565 277563 : GF_MUL22( in11, in15, 1, 22, 1, 23 ); \
566 277563 : scratch_2 = in10; \
567 277563 : in10 = GF_MUL( in10, 1 ); \
568 277563 : GF_MUL22( in09, in11, 1, 28, 1, 29 ); \
569 277563 : GF_MUL22( in08, in09, 1, 8, 1, 1 ); \
570 277563 : in10 = GF_ADD( GF_MUL( in08, 1 ), in10 ); \
571 277563 : GF_MUL22( in10, in11, 1, 10, 1, 11 ); \
572 277563 : in08 = GF_MUL( in08, 1 ); \
573 277563 : in08 = GF_ADD( GF_MUL( scratch_2, 28 ), in08 ); \
574 277563 : in12 = GF_ADD( GF_MUL( in08, 1 ), in12 ); \
575 277563 : FD_REEDSOL_GENERATE_FFT( 4, 12, in12, in13, in14, in15 ); \
576 277563 : in08 = GF_MUL( in08, 1 ); \
577 277563 : in08 = GF_ADD( GF_MUL( scratch_4, 22 ), in08 ); \
578 277563 : GF_MUL22( in00, in08, 1, 0, 1, 1 ); \
579 277563 : in01 = GF_MUL( in01, 1 ); \
580 277563 : in01 = GF_ADD( GF_MUL( scratch_9, 0 ), in01 ); \
581 277563 : in02 = GF_MUL( in02, 1 ); \
582 277563 : in02 = GF_ADD( GF_MUL( scratch_10, 0 ), in02 ); \
583 277563 : in03 = GF_MUL( in03, 1 ); \
584 277563 : in03 = GF_ADD( GF_MUL( scratch_11, 0 ), in03 ); \
585 277563 : in04 = GF_MUL( in04, 1 ); \
586 277563 : in04 = GF_ADD( GF_MUL( scratch_12, 0 ), in04 ); \
587 277563 : in05 = GF_MUL( in05, 1 ); \
588 277563 : in05 = GF_ADD( GF_MUL( scratch_13, 0 ), in05 ); \
589 277563 : in06 = GF_MUL( in06, 1 ); \
590 277563 : in06 = GF_ADD( GF_MUL( scratch_14, 0 ), in06 ); \
591 277563 : in07 = GF_MUL( in07, 1 ); \
592 277563 : in07 = GF_ADD( GF_MUL( scratch_15, 0 ), in07 ); \
593 277563 : } while( 0 )
594 :
595 : #define FD_REEDSOL_PPT_IMPL_16_10( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15) \
596 213612 : do { \
597 213612 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_2, scratch_3, scratch_4, scratch_5; \
598 213612 : scratch_10 = in10; \
599 213612 : in10 = GF_MUL( in10, 1 ); \
600 213612 : scratch_11 = in11; \
601 213612 : in11 = GF_MUL( in11, 1 ); \
602 213612 : scratch_12 = in12; \
603 213612 : in12 = GF_MUL( in12, 1 ); \
604 213612 : scratch_13 = in13; \
605 213612 : in13 = GF_MUL( in13, 1 ); \
606 213612 : scratch_14 = in14; \
607 213612 : in14 = GF_MUL( in14, 1 ); \
608 213612 : scratch_15 = in15; \
609 213612 : in15 = GF_MUL( in15, 1 ); \
610 213612 : FD_REEDSOL_GENERATE_IFFT( 8, 0, in00, in01, in02, in03, in04, in05, in06, in07 ); \
611 213612 : in10 = GF_ADD( GF_MUL( in02, 1 ), in10 ); \
612 213612 : in11 = GF_ADD( GF_MUL( in03, 1 ), in11 ); \
613 213612 : in12 = GF_ADD( GF_MUL( in04, 1 ), in12 ); \
614 213612 : in13 = GF_ADD( GF_MUL( in05, 1 ), in13 ); \
615 213612 : in14 = GF_ADD( GF_MUL( in06, 1 ), in14 ); \
616 213612 : in15 = GF_ADD( GF_MUL( in07, 1 ), in15 ); \
617 213612 : scratch_4 = in12; \
618 213612 : in12 = GF_MUL( in12, 1 ); \
619 213612 : scratch_5 = in13; \
620 213612 : in13 = GF_MUL( in13, 1 ); \
621 213612 : GF_MUL22( in10, in14, 1, 22, 1, 23 ); \
622 213612 : GF_MUL22( in11, in15, 1, 22, 1, 23 ); \
623 213612 : scratch_2 = in10; \
624 213612 : in10 = GF_MUL( in10, 1 ); \
625 213612 : scratch_3 = in11; \
626 213612 : in11 = GF_MUL( in11, 1 ); \
627 213612 : GF_MUL22( in08, in09, 9, 8, 1, 1 ); \
628 213612 : in10 = GF_ADD( GF_MUL( in08, 1 ), in10 ); \
629 213612 : in11 = GF_ADD( GF_MUL( in09, 1 ), in11 ); \
630 213612 : GF_MUL22( in10, in11, 1, 10, 1, 11 ); \
631 213612 : in08 = GF_MUL( in08, 1 ); \
632 213612 : in08 = GF_ADD( GF_MUL( scratch_2, 28 ), in08 ); \
633 213612 : in09 = GF_MUL( in09, 1 ); \
634 213612 : in09 = GF_ADD( GF_MUL( scratch_3, 28 ), in09 ); \
635 213612 : in12 = GF_ADD( GF_MUL( in08, 1 ), in12 ); \
636 213612 : in13 = GF_ADD( GF_MUL( in09, 1 ), in13 ); \
637 213612 : FD_REEDSOL_GENERATE_FFT( 4, 12, in12, in13, in14, in15 ); \
638 213612 : in08 = GF_MUL( in08, 1 ); \
639 213612 : in08 = GF_ADD( GF_MUL( scratch_4, 22 ), in08 ); \
640 213612 : in09 = GF_MUL( in09, 1 ); \
641 213612 : in09 = GF_ADD( GF_MUL( scratch_5, 22 ), in09 ); \
642 213612 : GF_MUL22( in00, in08, 1, 0, 1, 1 ); \
643 213612 : GF_MUL22( in01, in09, 1, 0, 1, 1 ); \
644 213612 : in02 = GF_MUL( in02, 1 ); \
645 213612 : in02 = GF_ADD( GF_MUL( scratch_10, 0 ), in02 ); \
646 213612 : in03 = GF_MUL( in03, 1 ); \
647 213612 : in03 = GF_ADD( GF_MUL( scratch_11, 0 ), in03 ); \
648 213612 : in04 = GF_MUL( in04, 1 ); \
649 213612 : in04 = GF_ADD( GF_MUL( scratch_12, 0 ), in04 ); \
650 213612 : in05 = GF_MUL( in05, 1 ); \
651 213612 : in05 = GF_ADD( GF_MUL( scratch_13, 0 ), in05 ); \
652 213612 : in06 = GF_MUL( in06, 1 ); \
653 213612 : in06 = GF_ADD( GF_MUL( scratch_14, 0 ), in06 ); \
654 213612 : in07 = GF_MUL( in07, 1 ); \
655 213612 : in07 = GF_ADD( GF_MUL( scratch_15, 0 ), in07 ); \
656 213612 : } while( 0 )
657 :
658 : #define FD_REEDSOL_PPT_IMPL_16_11( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, \
659 : in15) \
660 263292 : do { \
661 263292 : gf_t scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_3, scratch_4, scratch_5, scratch_6; \
662 263292 : scratch_11 = in11; \
663 263292 : in11 = GF_MUL( in11, 1 ); \
664 263292 : scratch_12 = in12; \
665 263292 : in12 = GF_MUL( in12, 1 ); \
666 263292 : scratch_13 = in13; \
667 263292 : in13 = GF_MUL( in13, 1 ); \
668 263292 : scratch_14 = in14; \
669 263292 : in14 = GF_MUL( in14, 1 ); \
670 263292 : scratch_15 = in15; \
671 263292 : in15 = GF_MUL( in15, 1 ); \
672 263292 : FD_REEDSOL_GENERATE_IFFT( 8, 0, in00, in01, in02, in03, in04, in05, in06, in07 ); \
673 263292 : in11 = GF_ADD( GF_MUL( in03, 1 ), in11 ); \
674 263292 : in12 = GF_ADD( GF_MUL( in04, 1 ), in12 ); \
675 263292 : in13 = GF_ADD( GF_MUL( in05, 1 ), in13 ); \
676 263292 : in14 = GF_ADD( GF_MUL( in06, 1 ), in14 ); \
677 263292 : in15 = GF_ADD( GF_MUL( in07, 1 ), in15 ); \
678 263292 : scratch_4 = in12; \
679 263292 : in12 = GF_MUL( in12, 1 ); \
680 263292 : scratch_5 = in13; \
681 263292 : in13 = GF_MUL( in13, 1 ); \
682 263292 : scratch_6 = in14; \
683 263292 : in14 = GF_MUL( in14, 1 ); \
684 263292 : GF_MUL22( in11, in15, 1, 22, 1, 23 ); \
685 263292 : scratch_3 = in11; \
686 263292 : in11 = GF_MUL( in11, 1 ); \
687 263292 : GF_MUL22( in08, in09, 9, 8, 1, 1 ); \
688 263292 : in11 = GF_ADD( GF_MUL( in09, 1 ), in11 ); \
689 263292 : GF_MUL22( in10, in11, 1, 10, 1, 1 ); \
690 263292 : GF_MUL22( in08, in10, 29, 28, 1, 1 ); \
691 263292 : in09 = GF_MUL( in09, 1 ); \
692 263292 : in09 = GF_ADD( GF_MUL( scratch_3, 28 ), in09 ); \
693 263292 : in12 = GF_ADD( GF_MUL( in08, 1 ), in12 ); \
694 263292 : in13 = GF_ADD( GF_MUL( in09, 1 ), in13 ); \
695 263292 : in14 = GF_ADD( GF_MUL( in10, 1 ), in14 ); \
696 263292 : FD_REEDSOL_GENERATE_FFT( 4, 12, in12, in13, in14, in15 ); \
697 263292 : in08 = GF_MUL( in08, 1 ); \
698 263292 : in08 = GF_ADD( GF_MUL( scratch_4, 22 ), in08 ); \
699 263292 : in09 = GF_MUL( in09, 1 ); \
700 263292 : in09 = GF_ADD( GF_MUL( scratch_5, 22 ), in09 ); \
701 263292 : in10 = GF_MUL( in10, 1 ); \
702 263292 : in10 = GF_ADD( GF_MUL( scratch_6, 22 ), in10 ); \
703 263292 : GF_MUL22( in00, in08, 1, 0, 1, 1 ); \
704 263292 : GF_MUL22( in01, in09, 1, 0, 1, 1 ); \
705 263292 : GF_MUL22( in02, in10, 1, 0, 1, 1 ); \
706 263292 : in03 = GF_MUL( in03, 1 ); \
707 263292 : in03 = GF_ADD( GF_MUL( scratch_11, 0 ), in03 ); \
708 263292 : in04 = GF_MUL( in04, 1 ); \
709 263292 : in04 = GF_ADD( GF_MUL( scratch_12, 0 ), in04 ); \
710 263292 : in05 = GF_MUL( in05, 1 ); \
711 263292 : in05 = GF_ADD( GF_MUL( scratch_13, 0 ), in05 ); \
712 263292 : in06 = GF_MUL( in06, 1 ); \
713 263292 : in06 = GF_ADD( GF_MUL( scratch_14, 0 ), in06 ); \
714 263292 : in07 = GF_MUL( in07, 1 ); \
715 263292 : in07 = GF_ADD( GF_MUL( scratch_15, 0 ), in07 ); \
716 263292 : } while( 0 )
717 :
718 : #define FD_REEDSOL_PPT_IMPL_16_12( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, \
719 : in13, in14, in15) \
720 263292 : do { \
721 263292 : gf_t scratch_12, scratch_13, scratch_14, scratch_15, scratch_4, scratch_5, scratch_6, scratch_7; \
722 263292 : scratch_12 = in12; \
723 263292 : in12 = GF_MUL( in12, 1 ); \
724 263292 : scratch_13 = in13; \
725 263292 : in13 = GF_MUL( in13, 1 ); \
726 263292 : scratch_14 = in14; \
727 263292 : in14 = GF_MUL( in14, 1 ); \
728 263292 : scratch_15 = in15; \
729 263292 : in15 = GF_MUL( in15, 1 ); \
730 263292 : FD_REEDSOL_GENERATE_IFFT( 8, 0, in00, in01, in02, in03, in04, in05, in06, in07 ); \
731 263292 : in12 = GF_ADD( GF_MUL( in04, 1 ), in12 ); \
732 263292 : in13 = GF_ADD( GF_MUL( in05, 1 ), in13 ); \
733 263292 : in14 = GF_ADD( GF_MUL( in06, 1 ), in14 ); \
734 263292 : in15 = GF_ADD( GF_MUL( in07, 1 ), in15 ); \
735 263292 : scratch_4 = in12; \
736 263292 : in12 = GF_MUL( in12, 1 ); \
737 263292 : scratch_5 = in13; \
738 263292 : in13 = GF_MUL( in13, 1 ); \
739 263292 : scratch_6 = in14; \
740 263292 : in14 = GF_MUL( in14, 1 ); \
741 263292 : scratch_7 = in15; \
742 263292 : in15 = GF_MUL( in15, 1 ); \
743 263292 : FD_REEDSOL_GENERATE_IFFT( 4, 8, in08, in09, in10, in11 ); \
744 263292 : in12 = GF_ADD( GF_MUL( in08, 1 ), in12 ); \
745 263292 : in13 = GF_ADD( GF_MUL( in09, 1 ), in13 ); \
746 263292 : in14 = GF_ADD( GF_MUL( in10, 1 ), in14 ); \
747 263292 : in15 = GF_ADD( GF_MUL( in11, 1 ), in15 ); \
748 263292 : FD_REEDSOL_GENERATE_FFT( 4, 12, in12, in13, in14, in15 ); \
749 263292 : in08 = GF_MUL( in08, 1 ); \
750 263292 : in08 = GF_ADD( GF_MUL( scratch_4, 22 ), in08 ); \
751 263292 : in09 = GF_MUL( in09, 1 ); \
752 263292 : in09 = GF_ADD( GF_MUL( scratch_5, 22 ), in09 ); \
753 263292 : in10 = GF_MUL( in10, 1 ); \
754 263292 : in10 = GF_ADD( GF_MUL( scratch_6, 22 ), in10 ); \
755 263292 : in11 = GF_MUL( in11, 1 ); \
756 263292 : in11 = GF_ADD( GF_MUL( scratch_7, 22 ), in11 ); \
757 263292 : GF_MUL22( in00, in08, 1, 0, 1, 1 ); \
758 263292 : GF_MUL22( in01, in09, 1, 0, 1, 1 ); \
759 263292 : GF_MUL22( in02, in10, 1, 0, 1, 1 ); \
760 263292 : GF_MUL22( in03, in11, 1, 0, 1, 1 ); \
761 263292 : in04 = GF_MUL( in04, 1 ); \
762 263292 : in04 = GF_ADD( GF_MUL( scratch_12, 0 ), in04 ); \
763 263292 : in05 = GF_MUL( in05, 1 ); \
764 263292 : in05 = GF_ADD( GF_MUL( scratch_13, 0 ), in05 ); \
765 263292 : in06 = GF_MUL( in06, 1 ); \
766 263292 : in06 = GF_ADD( GF_MUL( scratch_14, 0 ), in06 ); \
767 263292 : in07 = GF_MUL( in07, 1 ); \
768 263292 : in07 = GF_ADD( GF_MUL( scratch_15, 0 ), in07 ); \
769 263292 : } while( 0 )
770 :
771 : #define FD_REEDSOL_PPT_IMPL_16_13( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, \
772 : in11, in12, in13, in14, in15) \
773 263292 : do { \
774 263292 : gf_t scratch_13, scratch_14, scratch_15, scratch_2, scratch_5, scratch_6, scratch_7; \
775 263292 : scratch_13 = in13; \
776 263292 : in13 = GF_MUL( in13, 1 ); \
777 263292 : scratch_14 = in14; \
778 263292 : in14 = GF_MUL( in14, 1 ); \
779 263292 : scratch_15 = in15; \
780 263292 : in15 = GF_MUL( in15, 1 ); \
781 263292 : FD_REEDSOL_GENERATE_IFFT( 8, 0, in00, in01, in02, in03, in04, in05, in06, in07 ); \
782 263292 : in13 = GF_ADD( GF_MUL( in05, 1 ), in13 ); \
783 263292 : in14 = GF_ADD( GF_MUL( in06, 1 ), in14 ); \
784 263292 : in15 = GF_ADD( GF_MUL( in07, 1 ), in15 ); \
785 263292 : scratch_5 = in13; \
786 263292 : in13 = GF_MUL( in13, 1 ); \
787 263292 : scratch_6 = in14; \
788 263292 : in14 = GF_MUL( in14, 1 ); \
789 263292 : scratch_7 = in15; \
790 263292 : in15 = GF_MUL( in15, 1 ); \
791 263292 : FD_REEDSOL_GENERATE_IFFT( 4, 8, in08, in09, in10, in11 ); \
792 263292 : in13 = GF_ADD( GF_MUL( in09, 1 ), in13 ); \
793 263292 : in14 = GF_ADD( GF_MUL( in10, 1 ), in14 ); \
794 263292 : in15 = GF_ADD( GF_MUL( in11, 1 ), in15 ); \
795 263292 : scratch_2 = in14; \
796 263292 : in14 = GF_MUL( in14, 1 ); \
797 263292 : GF_MUL22( in13, in15, 1, 26, 1, 27 ); \
798 263292 : GF_MUL22( in12, in13, 1, 12, 1, 1 ); \
799 263292 : in14 = GF_ADD( GF_MUL( in12, 1 ), in14 ); \
800 263292 : GF_MUL22( in14, in15, 1, 14, 1, 15 ); \
801 263292 : in12 = GF_MUL( in12, 1 ); \
802 263292 : in12 = GF_ADD( GF_MUL( scratch_2, 26 ), in12 ); \
803 263292 : GF_MUL22( in08, in12, 23, 22, 1, 1 ); \
804 263292 : in09 = GF_MUL( in09, 1 ); \
805 263292 : in09 = GF_ADD( GF_MUL( scratch_5, 22 ), in09 ); \
806 263292 : in10 = GF_MUL( in10, 1 ); \
807 263292 : in10 = GF_ADD( GF_MUL( scratch_6, 22 ), in10 ); \
808 263292 : in11 = GF_MUL( in11, 1 ); \
809 263292 : in11 = GF_ADD( GF_MUL( scratch_7, 22 ), in11 ); \
810 263292 : GF_MUL22( in00, in08, 1, 0, 1, 1 ); \
811 263292 : GF_MUL22( in01, in09, 1, 0, 1, 1 ); \
812 263292 : GF_MUL22( in02, in10, 1, 0, 1, 1 ); \
813 263292 : GF_MUL22( in03, in11, 1, 0, 1, 1 ); \
814 263292 : GF_MUL22( in04, in12, 1, 0, 1, 1 ); \
815 263292 : in05 = GF_MUL( in05, 1 ); \
816 263292 : in05 = GF_ADD( GF_MUL( scratch_13, 0 ), in05 ); \
817 263292 : in06 = GF_MUL( in06, 1 ); \
818 263292 : in06 = GF_ADD( GF_MUL( scratch_14, 0 ), in06 ); \
819 263292 : in07 = GF_MUL( in07, 1 ); \
820 263292 : in07 = GF_ADD( GF_MUL( scratch_15, 0 ), in07 ); \
821 263292 : } while( 0 )
822 :
823 : #define FD_REEDSOL_PPT_IMPL_16_14( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09 , \
824 : in10, in11, in12, in13, in14, in15) \
825 263292 : do { \
826 263292 : gf_t scratch_14, scratch_15, scratch_2, scratch_3, scratch_6, scratch_7; \
827 263292 : scratch_14 = in14; \
828 263292 : in14 = GF_MUL( in14, 1 ); \
829 263292 : scratch_15 = in15; \
830 263292 : in15 = GF_MUL( in15, 1 ); \
831 263292 : FD_REEDSOL_GENERATE_IFFT( 8, 0, in00, in01, in02, in03, in04, in05, in06, in07 ); \
832 263292 : in14 = GF_ADD( GF_MUL( in06, 1 ), in14 ); \
833 263292 : in15 = GF_ADD( GF_MUL( in07, 1 ), in15 ); \
834 263292 : scratch_6 = in14; \
835 263292 : in14 = GF_MUL( in14, 1 ); \
836 263292 : scratch_7 = in15; \
837 263292 : in15 = GF_MUL( in15, 1 ); \
838 263292 : FD_REEDSOL_GENERATE_IFFT( 4, 8, in08, in09, in10, in11 ); \
839 263292 : in14 = GF_ADD( GF_MUL( in10, 1 ), in14 ); \
840 263292 : in15 = GF_ADD( GF_MUL( in11, 1 ), in15 ); \
841 263292 : scratch_2 = in14; \
842 263292 : in14 = GF_MUL( in14, 1 ); \
843 263292 : scratch_3 = in15; \
844 263292 : in15 = GF_MUL( in15, 1 ); \
845 263292 : GF_MUL22( in12, in13, 13, 12, 1, 1 ); \
846 263292 : in14 = GF_ADD( GF_MUL( in12, 1 ), in14 ); \
847 263292 : in15 = GF_ADD( GF_MUL( in13, 1 ), in15 ); \
848 263292 : GF_MUL22( in14, in15, 1, 14, 1, 15 ); \
849 263292 : in12 = GF_MUL( in12, 1 ); \
850 263292 : in12 = GF_ADD( GF_MUL( scratch_2, 26 ), in12 ); \
851 263292 : in13 = GF_MUL( in13, 1 ); \
852 263292 : in13 = GF_ADD( GF_MUL( scratch_3, 26 ), in13 ); \
853 263292 : GF_MUL22( in08, in12, 23, 22, 1, 1 ); \
854 263292 : GF_MUL22( in09, in13, 23, 22, 1, 1 ); \
855 263292 : in10 = GF_MUL( in10, 1 ); \
856 263292 : in10 = GF_ADD( GF_MUL( scratch_6, 22 ), in10 ); \
857 263292 : in11 = GF_MUL( in11, 1 ); \
858 263292 : in11 = GF_ADD( GF_MUL( scratch_7, 22 ), in11 ); \
859 263292 : GF_MUL22( in00, in08, 1, 0, 1, 1 ); \
860 263292 : GF_MUL22( in01, in09, 1, 0, 1, 1 ); \
861 263292 : GF_MUL22( in02, in10, 1, 0, 1, 1 ); \
862 263292 : GF_MUL22( in03, in11, 1, 0, 1, 1 ); \
863 263292 : GF_MUL22( in04, in12, 1, 0, 1, 1 ); \
864 263292 : GF_MUL22( in05, in13, 1, 0, 1, 1 ); \
865 263292 : in06 = GF_MUL( in06, 1 ); \
866 263292 : in06 = GF_ADD( GF_MUL( scratch_14, 0 ), in06 ); \
867 263292 : in07 = GF_MUL( in07, 1 ); \
868 263292 : in07 = GF_ADD( GF_MUL( scratch_15, 0 ), in07 ); \
869 263292 : } while( 0 )
870 :
871 : #define FD_REEDSOL_PPT_IMPL_16_15( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09 , \
872 : in10, in11, in12, in13, in14, in15) \
873 263292 : do { \
874 263292 : gf_t scratch_15, scratch_3, scratch_7; \
875 263292 : scratch_15 = in15; \
876 263292 : in15 = GF_MUL( in15, 1 ); \
877 263292 : FD_REEDSOL_GENERATE_IFFT( 8, 0, in00, in01, in02, in03, in04, in05, in06, in07 ); \
878 263292 : in15 = GF_ADD( GF_MUL( in07, 1 ), in15 ); \
879 263292 : scratch_7 = in15; \
880 263292 : in15 = GF_MUL( in15, 1 ); \
881 263292 : FD_REEDSOL_GENERATE_IFFT( 4, 8, in08, in09, in10, in11 ); \
882 263292 : in15 = GF_ADD( GF_MUL( in11, 1 ), in15 ); \
883 263292 : scratch_3 = in15; \
884 263292 : in15 = GF_MUL( in15, 1 ); \
885 263292 : GF_MUL22( in12, in13, 13, 12, 1, 1 ); \
886 263292 : in15 = GF_ADD( GF_MUL( in13, 1 ), in15 ); \
887 263292 : GF_MUL22( in14, in15, 1, 14, 1, 1 ); \
888 263292 : GF_MUL22( in12, in14, 27, 26, 1, 1 ); \
889 263292 : in13 = GF_MUL( in13, 1 ); \
890 263292 : in13 = GF_ADD( GF_MUL( scratch_3, 26 ), in13 ); \
891 263292 : GF_MUL22( in08, in12, 23, 22, 1, 1 ); \
892 263292 : GF_MUL22( in09, in13, 23, 22, 1, 1 ); \
893 263292 : GF_MUL22( in10, in14, 23, 22, 1, 1 ); \
894 263292 : in11 = GF_MUL( in11, 1 ); \
895 263292 : in11 = GF_ADD( GF_MUL( scratch_7, 22 ), in11 ); \
896 263292 : GF_MUL22( in00, in08, 1, 0, 1, 1 ); \
897 263292 : GF_MUL22( in01, in09, 1, 0, 1, 1 ); \
898 263292 : GF_MUL22( in02, in10, 1, 0, 1, 1 ); \
899 263292 : GF_MUL22( in03, in11, 1, 0, 1, 1 ); \
900 263292 : GF_MUL22( in04, in12, 1, 0, 1, 1 ); \
901 263292 : GF_MUL22( in05, in13, 1, 0, 1, 1 ); \
902 263292 : GF_MUL22( in06, in14, 1, 0, 1, 1 ); \
903 263292 : in07 = GF_MUL( in07, 1 ); \
904 263292 : in07 = GF_ADD( GF_MUL( scratch_15, 0 ), in07 ); \
905 263292 : } while( 0 )
906 :
907 : void fd_reedsol_ppt_32_17( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
908 : #define FD_REEDSOL_PPT_IMPL_32_17( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28 , \
909 : in29, in30, in31) \
910 263292 : do { \
911 263292 : gf_t scratch_17, scratch_18, scratch_19, scratch_2, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_30, scratch_31; \
912 263292 : gf_t scratch_4, scratch_8; \
913 263292 : scratch_17 = in17; \
914 263292 : in17 = GF_MUL( in17, 1 ); \
915 263292 : scratch_18 = in18; \
916 263292 : in18 = GF_MUL( in18, 1 ); \
917 263292 : scratch_19 = in19; \
918 263292 : in19 = GF_MUL( in19, 1 ); \
919 263292 : scratch_20 = in20; \
920 263292 : in20 = GF_MUL( in20, 1 ); \
921 263292 : scratch_21 = in21; \
922 263292 : in21 = GF_MUL( in21, 1 ); \
923 263292 : scratch_22 = in22; \
924 263292 : in22 = GF_MUL( in22, 1 ); \
925 263292 : scratch_23 = in23; \
926 263292 : in23 = GF_MUL( in23, 1 ); \
927 263292 : scratch_24 = in24; \
928 263292 : in24 = GF_MUL( in24, 1 ); \
929 263292 : scratch_25 = in25; \
930 263292 : in25 = GF_MUL( in25, 1 ); \
931 263292 : scratch_26 = in26; \
932 263292 : in26 = GF_MUL( in26, 1 ); \
933 263292 : scratch_27 = in27; \
934 263292 : in27 = GF_MUL( in27, 1 ); \
935 263292 : scratch_28 = in28; \
936 263292 : in28 = GF_MUL( in28, 1 ); \
937 263292 : scratch_29 = in29; \
938 263292 : in29 = GF_MUL( in29, 1 ); \
939 263292 : scratch_30 = in30; \
940 263292 : in30 = GF_MUL( in30, 1 ); \
941 263292 : scratch_31 = in31; \
942 263292 : in31 = GF_MUL( in31, 1 ); \
943 263292 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
944 263292 : in17 = GF_ADD( GF_MUL( in01, 1 ), in17 ); \
945 263292 : in18 = GF_ADD( GF_MUL( in02, 1 ), in18 ); \
946 263292 : in19 = GF_ADD( GF_MUL( in03, 1 ), in19 ); \
947 263292 : in20 = GF_ADD( GF_MUL( in04, 1 ), in20 ); \
948 263292 : in21 = GF_ADD( GF_MUL( in05, 1 ), in21 ); \
949 263292 : in22 = GF_ADD( GF_MUL( in06, 1 ), in22 ); \
950 263292 : in23 = GF_ADD( GF_MUL( in07, 1 ), in23 ); \
951 263292 : in24 = GF_ADD( GF_MUL( in08, 1 ), in24 ); \
952 263292 : in25 = GF_ADD( GF_MUL( in09, 1 ), in25 ); \
953 263292 : in26 = GF_ADD( GF_MUL( in10, 1 ), in26 ); \
954 263292 : in27 = GF_ADD( GF_MUL( in11, 1 ), in27 ); \
955 263292 : in28 = GF_ADD( GF_MUL( in12, 1 ), in28 ); \
956 263292 : in29 = GF_ADD( GF_MUL( in13, 1 ), in29 ); \
957 263292 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
958 263292 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
959 263292 : scratch_8 = in24; \
960 263292 : in24 = GF_MUL( in24, 1 ); \
961 263292 : GF_MUL22( in17, in25, 1, 11, 1, 10 ); \
962 263292 : GF_MUL22( in18, in26, 1, 11, 1, 10 ); \
963 263292 : GF_MUL22( in19, in27, 1, 11, 1, 10 ); \
964 263292 : GF_MUL22( in20, in28, 1, 11, 1, 10 ); \
965 263292 : GF_MUL22( in21, in29, 1, 11, 1, 10 ); \
966 263292 : GF_MUL22( in22, in30, 1, 11, 1, 10 ); \
967 263292 : GF_MUL22( in23, in31, 1, 11, 1, 10 ); \
968 263292 : scratch_4 = in20; \
969 263292 : in20 = GF_MUL( in20, 1 ); \
970 263292 : GF_MUL22( in17, in21, 1, 97, 1, 96 ); \
971 263292 : GF_MUL22( in18, in22, 1, 97, 1, 96 ); \
972 263292 : GF_MUL22( in19, in23, 1, 97, 1, 96 ); \
973 263292 : scratch_2 = in18; \
974 263292 : in18 = GF_MUL( in18, 1 ); \
975 263292 : GF_MUL22( in17, in19, 1, 120, 1, 121 ); \
976 263292 : GF_MUL22( in16, in17, 1, 16, 1, 1 ); \
977 263292 : in18 = GF_ADD( GF_MUL( in16, 1 ), in18 ); \
978 263292 : GF_MUL22( in18, in19, 1, 18, 1, 19 ); \
979 263292 : in16 = GF_MUL( in16, 1 ); \
980 263292 : in16 = GF_ADD( GF_MUL( scratch_2, 120 ), in16 ); \
981 263292 : in20 = GF_ADD( GF_MUL( in16, 1 ), in20 ); \
982 263292 : FD_REEDSOL_GENERATE_FFT( 4, 20, in20, in21, in22, in23 ); \
983 263292 : in16 = GF_MUL( in16, 1 ); \
984 263292 : in16 = GF_ADD( GF_MUL( scratch_4, 97 ), in16 ); \
985 263292 : in24 = GF_ADD( GF_MUL( in16, 1 ), in24 ); \
986 263292 : FD_REEDSOL_GENERATE_FFT( 8, 24, in24, in25, in26, in27, in28, in29, in30, in31 ); \
987 263292 : in16 = GF_MUL( in16, 1 ); \
988 263292 : in16 = GF_ADD( GF_MUL( scratch_8, 11 ), in16 ); \
989 263292 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
990 263292 : in01 = GF_MUL( in01, 1 ); \
991 263292 : in01 = GF_ADD( GF_MUL( scratch_17, 0 ), in01 ); \
992 263292 : in02 = GF_MUL( in02, 1 ); \
993 263292 : in02 = GF_ADD( GF_MUL( scratch_18, 0 ), in02 ); \
994 263292 : in03 = GF_MUL( in03, 1 ); \
995 263292 : in03 = GF_ADD( GF_MUL( scratch_19, 0 ), in03 ); \
996 263292 : in04 = GF_MUL( in04, 1 ); \
997 263292 : in04 = GF_ADD( GF_MUL( scratch_20, 0 ), in04 ); \
998 263292 : in05 = GF_MUL( in05, 1 ); \
999 263292 : in05 = GF_ADD( GF_MUL( scratch_21, 0 ), in05 ); \
1000 263292 : in06 = GF_MUL( in06, 1 ); \
1001 263292 : in06 = GF_ADD( GF_MUL( scratch_22, 0 ), in06 ); \
1002 263292 : in07 = GF_MUL( in07, 1 ); \
1003 263292 : in07 = GF_ADD( GF_MUL( scratch_23, 0 ), in07 ); \
1004 263292 : in08 = GF_MUL( in08, 1 ); \
1005 263292 : in08 = GF_ADD( GF_MUL( scratch_24, 0 ), in08 ); \
1006 263292 : in09 = GF_MUL( in09, 1 ); \
1007 263292 : in09 = GF_ADD( GF_MUL( scratch_25, 0 ), in09 ); \
1008 263292 : in10 = GF_MUL( in10, 1 ); \
1009 263292 : in10 = GF_ADD( GF_MUL( scratch_26, 0 ), in10 ); \
1010 263292 : in11 = GF_MUL( in11, 1 ); \
1011 263292 : in11 = GF_ADD( GF_MUL( scratch_27, 0 ), in11 ); \
1012 263292 : in12 = GF_MUL( in12, 1 ); \
1013 263292 : in12 = GF_ADD( GF_MUL( scratch_28, 0 ), in12 ); \
1014 263292 : in13 = GF_MUL( in13, 1 ); \
1015 263292 : in13 = GF_ADD( GF_MUL( scratch_29, 0 ), in13 ); \
1016 263292 : in14 = GF_MUL( in14, 1 ); \
1017 263292 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
1018 263292 : in15 = GF_MUL( in15, 1 ); \
1019 263292 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
1020 263292 : } while( 0 )
1021 :
1022 : void fd_reedsol_ppt_32_18( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
1023 : #define FD_REEDSOL_PPT_IMPL_32_18( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28 , \
1024 : in29, in30, in31) \
1025 263388 : do { \
1026 263388 : gf_t scratch_18, scratch_19, scratch_2, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_3, scratch_30, scratch_31; \
1027 263388 : gf_t scratch_4, scratch_5, scratch_8, scratch_9; \
1028 263388 : scratch_18 = in18; \
1029 263388 : in18 = GF_MUL( in18, 1 ); \
1030 263388 : scratch_19 = in19; \
1031 263388 : in19 = GF_MUL( in19, 1 ); \
1032 263388 : scratch_20 = in20; \
1033 263388 : in20 = GF_MUL( in20, 1 ); \
1034 263388 : scratch_21 = in21; \
1035 263388 : in21 = GF_MUL( in21, 1 ); \
1036 263388 : scratch_22 = in22; \
1037 263388 : in22 = GF_MUL( in22, 1 ); \
1038 263388 : scratch_23 = in23; \
1039 263388 : in23 = GF_MUL( in23, 1 ); \
1040 263388 : scratch_24 = in24; \
1041 263388 : in24 = GF_MUL( in24, 1 ); \
1042 263388 : scratch_25 = in25; \
1043 263388 : in25 = GF_MUL( in25, 1 ); \
1044 263388 : scratch_26 = in26; \
1045 263388 : in26 = GF_MUL( in26, 1 ); \
1046 263388 : scratch_27 = in27; \
1047 263388 : in27 = GF_MUL( in27, 1 ); \
1048 263388 : scratch_28 = in28; \
1049 263388 : in28 = GF_MUL( in28, 1 ); \
1050 263388 : scratch_29 = in29; \
1051 263388 : in29 = GF_MUL( in29, 1 ); \
1052 263388 : scratch_30 = in30; \
1053 263388 : in30 = GF_MUL( in30, 1 ); \
1054 263388 : scratch_31 = in31; \
1055 263388 : in31 = GF_MUL( in31, 1 ); \
1056 263388 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
1057 263388 : in18 = GF_ADD( GF_MUL( in02, 1 ), in18 ); \
1058 263388 : in19 = GF_ADD( GF_MUL( in03, 1 ), in19 ); \
1059 263388 : in20 = GF_ADD( GF_MUL( in04, 1 ), in20 ); \
1060 263388 : in21 = GF_ADD( GF_MUL( in05, 1 ), in21 ); \
1061 263388 : in22 = GF_ADD( GF_MUL( in06, 1 ), in22 ); \
1062 263388 : in23 = GF_ADD( GF_MUL( in07, 1 ), in23 ); \
1063 263388 : in24 = GF_ADD( GF_MUL( in08, 1 ), in24 ); \
1064 263388 : in25 = GF_ADD( GF_MUL( in09, 1 ), in25 ); \
1065 263388 : in26 = GF_ADD( GF_MUL( in10, 1 ), in26 ); \
1066 263388 : in27 = GF_ADD( GF_MUL( in11, 1 ), in27 ); \
1067 263388 : in28 = GF_ADD( GF_MUL( in12, 1 ), in28 ); \
1068 263388 : in29 = GF_ADD( GF_MUL( in13, 1 ), in29 ); \
1069 263388 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
1070 263388 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
1071 263388 : scratch_8 = in24; \
1072 263388 : in24 = GF_MUL( in24, 1 ); \
1073 263388 : scratch_9 = in25; \
1074 263388 : in25 = GF_MUL( in25, 1 ); \
1075 263388 : GF_MUL22( in18, in26, 1, 11, 1, 10 ); \
1076 263388 : GF_MUL22( in19, in27, 1, 11, 1, 10 ); \
1077 263388 : GF_MUL22( in20, in28, 1, 11, 1, 10 ); \
1078 263388 : GF_MUL22( in21, in29, 1, 11, 1, 10 ); \
1079 263388 : GF_MUL22( in22, in30, 1, 11, 1, 10 ); \
1080 263388 : GF_MUL22( in23, in31, 1, 11, 1, 10 ); \
1081 263388 : scratch_4 = in20; \
1082 263388 : in20 = GF_MUL( in20, 1 ); \
1083 263388 : scratch_5 = in21; \
1084 263388 : in21 = GF_MUL( in21, 1 ); \
1085 263388 : GF_MUL22( in18, in22, 1, 97, 1, 96 ); \
1086 263388 : GF_MUL22( in19, in23, 1, 97, 1, 96 ); \
1087 263388 : scratch_2 = in18; \
1088 263388 : in18 = GF_MUL( in18, 1 ); \
1089 263388 : scratch_3 = in19; \
1090 263388 : in19 = GF_MUL( in19, 1 ); \
1091 263388 : GF_MUL22( in16, in17, 17, 16, 1, 1 ); \
1092 263388 : in18 = GF_ADD( GF_MUL( in16, 1 ), in18 ); \
1093 263388 : in19 = GF_ADD( GF_MUL( in17, 1 ), in19 ); \
1094 263388 : GF_MUL22( in18, in19, 1, 18, 1, 19 ); \
1095 263388 : in16 = GF_MUL( in16, 1 ); \
1096 263388 : in16 = GF_ADD( GF_MUL( scratch_2, 120 ), in16 ); \
1097 263388 : in17 = GF_MUL( in17, 1 ); \
1098 263388 : in17 = GF_ADD( GF_MUL( scratch_3, 120 ), in17 ); \
1099 263388 : in20 = GF_ADD( GF_MUL( in16, 1 ), in20 ); \
1100 263388 : in21 = GF_ADD( GF_MUL( in17, 1 ), in21 ); \
1101 263388 : FD_REEDSOL_GENERATE_FFT( 4, 20, in20, in21, in22, in23 ); \
1102 263388 : in16 = GF_MUL( in16, 1 ); \
1103 263388 : in16 = GF_ADD( GF_MUL( scratch_4, 97 ), in16 ); \
1104 263388 : in17 = GF_MUL( in17, 1 ); \
1105 263388 : in17 = GF_ADD( GF_MUL( scratch_5, 97 ), in17 ); \
1106 263388 : in24 = GF_ADD( GF_MUL( in16, 1 ), in24 ); \
1107 263388 : in25 = GF_ADD( GF_MUL( in17, 1 ), in25 ); \
1108 263388 : FD_REEDSOL_GENERATE_FFT( 8, 24, in24, in25, in26, in27, in28, in29, in30, in31 ); \
1109 263388 : in16 = GF_MUL( in16, 1 ); \
1110 263388 : in16 = GF_ADD( GF_MUL( scratch_8, 11 ), in16 ); \
1111 263388 : in17 = GF_MUL( in17, 1 ); \
1112 263388 : in17 = GF_ADD( GF_MUL( scratch_9, 11 ), in17 ); \
1113 263388 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
1114 263388 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
1115 263388 : in02 = GF_MUL( in02, 1 ); \
1116 263388 : in02 = GF_ADD( GF_MUL( scratch_18, 0 ), in02 ); \
1117 263388 : in03 = GF_MUL( in03, 1 ); \
1118 263388 : in03 = GF_ADD( GF_MUL( scratch_19, 0 ), in03 ); \
1119 263388 : in04 = GF_MUL( in04, 1 ); \
1120 263388 : in04 = GF_ADD( GF_MUL( scratch_20, 0 ), in04 ); \
1121 263388 : in05 = GF_MUL( in05, 1 ); \
1122 263388 : in05 = GF_ADD( GF_MUL( scratch_21, 0 ), in05 ); \
1123 263388 : in06 = GF_MUL( in06, 1 ); \
1124 263388 : in06 = GF_ADD( GF_MUL( scratch_22, 0 ), in06 ); \
1125 263388 : in07 = GF_MUL( in07, 1 ); \
1126 263388 : in07 = GF_ADD( GF_MUL( scratch_23, 0 ), in07 ); \
1127 263388 : in08 = GF_MUL( in08, 1 ); \
1128 263388 : in08 = GF_ADD( GF_MUL( scratch_24, 0 ), in08 ); \
1129 263388 : in09 = GF_MUL( in09, 1 ); \
1130 263388 : in09 = GF_ADD( GF_MUL( scratch_25, 0 ), in09 ); \
1131 263388 : in10 = GF_MUL( in10, 1 ); \
1132 263388 : in10 = GF_ADD( GF_MUL( scratch_26, 0 ), in10 ); \
1133 263388 : in11 = GF_MUL( in11, 1 ); \
1134 263388 : in11 = GF_ADD( GF_MUL( scratch_27, 0 ), in11 ); \
1135 263388 : in12 = GF_MUL( in12, 1 ); \
1136 263388 : in12 = GF_ADD( GF_MUL( scratch_28, 0 ), in12 ); \
1137 263388 : in13 = GF_MUL( in13, 1 ); \
1138 263388 : in13 = GF_ADD( GF_MUL( scratch_29, 0 ), in13 ); \
1139 263388 : in14 = GF_MUL( in14, 1 ); \
1140 263388 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
1141 263388 : in15 = GF_MUL( in15, 1 ); \
1142 263388 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
1143 263388 : } while( 0 )
1144 :
1145 : void fd_reedsol_ppt_32_19( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
1146 : #define FD_REEDSOL_PPT_IMPL_32_19( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28 , \
1147 : in29, in30, in31) \
1148 263292 : do { \
1149 263292 : gf_t scratch_10, scratch_19, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_3, scratch_30, scratch_31, scratch_4; \
1150 263292 : gf_t scratch_5, scratch_6, scratch_8, scratch_9; \
1151 263292 : scratch_19 = in19; \
1152 263292 : in19 = GF_MUL( in19, 1 ); \
1153 263292 : scratch_20 = in20; \
1154 263292 : in20 = GF_MUL( in20, 1 ); \
1155 263292 : scratch_21 = in21; \
1156 263292 : in21 = GF_MUL( in21, 1 ); \
1157 263292 : scratch_22 = in22; \
1158 263292 : in22 = GF_MUL( in22, 1 ); \
1159 263292 : scratch_23 = in23; \
1160 263292 : in23 = GF_MUL( in23, 1 ); \
1161 263292 : scratch_24 = in24; \
1162 263292 : in24 = GF_MUL( in24, 1 ); \
1163 263292 : scratch_25 = in25; \
1164 263292 : in25 = GF_MUL( in25, 1 ); \
1165 263292 : scratch_26 = in26; \
1166 263292 : in26 = GF_MUL( in26, 1 ); \
1167 263292 : scratch_27 = in27; \
1168 263292 : in27 = GF_MUL( in27, 1 ); \
1169 263292 : scratch_28 = in28; \
1170 263292 : in28 = GF_MUL( in28, 1 ); \
1171 263292 : scratch_29 = in29; \
1172 263292 : in29 = GF_MUL( in29, 1 ); \
1173 263292 : scratch_30 = in30; \
1174 263292 : in30 = GF_MUL( in30, 1 ); \
1175 263292 : scratch_31 = in31; \
1176 263292 : in31 = GF_MUL( in31, 1 ); \
1177 263292 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
1178 263292 : in19 = GF_ADD( GF_MUL( in03, 1 ), in19 ); \
1179 263292 : in20 = GF_ADD( GF_MUL( in04, 1 ), in20 ); \
1180 263292 : in21 = GF_ADD( GF_MUL( in05, 1 ), in21 ); \
1181 263292 : in22 = GF_ADD( GF_MUL( in06, 1 ), in22 ); \
1182 263292 : in23 = GF_ADD( GF_MUL( in07, 1 ), in23 ); \
1183 263292 : in24 = GF_ADD( GF_MUL( in08, 1 ), in24 ); \
1184 263292 : in25 = GF_ADD( GF_MUL( in09, 1 ), in25 ); \
1185 263292 : in26 = GF_ADD( GF_MUL( in10, 1 ), in26 ); \
1186 263292 : in27 = GF_ADD( GF_MUL( in11, 1 ), in27 ); \
1187 263292 : in28 = GF_ADD( GF_MUL( in12, 1 ), in28 ); \
1188 263292 : in29 = GF_ADD( GF_MUL( in13, 1 ), in29 ); \
1189 263292 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
1190 263292 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
1191 263292 : scratch_8 = in24; \
1192 263292 : in24 = GF_MUL( in24, 1 ); \
1193 263292 : scratch_9 = in25; \
1194 263292 : in25 = GF_MUL( in25, 1 ); \
1195 263292 : scratch_10 = in26; \
1196 263292 : in26 = GF_MUL( in26, 1 ); \
1197 263292 : GF_MUL22( in19, in27, 1, 11, 1, 10 ); \
1198 263292 : GF_MUL22( in20, in28, 1, 11, 1, 10 ); \
1199 263292 : GF_MUL22( in21, in29, 1, 11, 1, 10 ); \
1200 263292 : GF_MUL22( in22, in30, 1, 11, 1, 10 ); \
1201 263292 : GF_MUL22( in23, in31, 1, 11, 1, 10 ); \
1202 263292 : scratch_4 = in20; \
1203 263292 : in20 = GF_MUL( in20, 1 ); \
1204 263292 : scratch_5 = in21; \
1205 263292 : in21 = GF_MUL( in21, 1 ); \
1206 263292 : scratch_6 = in22; \
1207 263292 : in22 = GF_MUL( in22, 1 ); \
1208 263292 : GF_MUL22( in19, in23, 1, 97, 1, 96 ); \
1209 263292 : scratch_3 = in19; \
1210 263292 : in19 = GF_MUL( in19, 1 ); \
1211 263292 : GF_MUL22( in16, in17, 17, 16, 1, 1 ); \
1212 263292 : in19 = GF_ADD( GF_MUL( in17, 1 ), in19 ); \
1213 263292 : GF_MUL22( in18, in19, 1, 18, 1, 1 ); \
1214 263292 : GF_MUL22( in16, in18, 121, 120, 1, 1 ); \
1215 263292 : in17 = GF_MUL( in17, 1 ); \
1216 263292 : in17 = GF_ADD( GF_MUL( scratch_3, 120 ), in17 ); \
1217 263292 : in20 = GF_ADD( GF_MUL( in16, 1 ), in20 ); \
1218 263292 : in21 = GF_ADD( GF_MUL( in17, 1 ), in21 ); \
1219 263292 : in22 = GF_ADD( GF_MUL( in18, 1 ), in22 ); \
1220 263292 : FD_REEDSOL_GENERATE_FFT( 4, 20, in20, in21, in22, in23 ); \
1221 263292 : in16 = GF_MUL( in16, 1 ); \
1222 263292 : in16 = GF_ADD( GF_MUL( scratch_4, 97 ), in16 ); \
1223 263292 : in17 = GF_MUL( in17, 1 ); \
1224 263292 : in17 = GF_ADD( GF_MUL( scratch_5, 97 ), in17 ); \
1225 263292 : in18 = GF_MUL( in18, 1 ); \
1226 263292 : in18 = GF_ADD( GF_MUL( scratch_6, 97 ), in18 ); \
1227 263292 : in24 = GF_ADD( GF_MUL( in16, 1 ), in24 ); \
1228 263292 : in25 = GF_ADD( GF_MUL( in17, 1 ), in25 ); \
1229 263292 : in26 = GF_ADD( GF_MUL( in18, 1 ), in26 ); \
1230 263292 : FD_REEDSOL_GENERATE_FFT( 8, 24, in24, in25, in26, in27, in28, in29, in30, in31 ); \
1231 263292 : in16 = GF_MUL( in16, 1 ); \
1232 263292 : in16 = GF_ADD( GF_MUL( scratch_8, 11 ), in16 ); \
1233 263292 : in17 = GF_MUL( in17, 1 ); \
1234 263292 : in17 = GF_ADD( GF_MUL( scratch_9, 11 ), in17 ); \
1235 263292 : in18 = GF_MUL( in18, 1 ); \
1236 263292 : in18 = GF_ADD( GF_MUL( scratch_10, 11 ), in18 ); \
1237 263292 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
1238 263292 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
1239 263292 : GF_MUL22( in02, in18, 1, 0, 1, 1 ); \
1240 263292 : in03 = GF_MUL( in03, 1 ); \
1241 263292 : in03 = GF_ADD( GF_MUL( scratch_19, 0 ), in03 ); \
1242 263292 : in04 = GF_MUL( in04, 1 ); \
1243 263292 : in04 = GF_ADD( GF_MUL( scratch_20, 0 ), in04 ); \
1244 263292 : in05 = GF_MUL( in05, 1 ); \
1245 263292 : in05 = GF_ADD( GF_MUL( scratch_21, 0 ), in05 ); \
1246 263292 : in06 = GF_MUL( in06, 1 ); \
1247 263292 : in06 = GF_ADD( GF_MUL( scratch_22, 0 ), in06 ); \
1248 263292 : in07 = GF_MUL( in07, 1 ); \
1249 263292 : in07 = GF_ADD( GF_MUL( scratch_23, 0 ), in07 ); \
1250 263292 : in08 = GF_MUL( in08, 1 ); \
1251 263292 : in08 = GF_ADD( GF_MUL( scratch_24, 0 ), in08 ); \
1252 263292 : in09 = GF_MUL( in09, 1 ); \
1253 263292 : in09 = GF_ADD( GF_MUL( scratch_25, 0 ), in09 ); \
1254 263292 : in10 = GF_MUL( in10, 1 ); \
1255 263292 : in10 = GF_ADD( GF_MUL( scratch_26, 0 ), in10 ); \
1256 263292 : in11 = GF_MUL( in11, 1 ); \
1257 263292 : in11 = GF_ADD( GF_MUL( scratch_27, 0 ), in11 ); \
1258 263292 : in12 = GF_MUL( in12, 1 ); \
1259 263292 : in12 = GF_ADD( GF_MUL( scratch_28, 0 ), in12 ); \
1260 263292 : in13 = GF_MUL( in13, 1 ); \
1261 263292 : in13 = GF_ADD( GF_MUL( scratch_29, 0 ), in13 ); \
1262 263292 : in14 = GF_MUL( in14, 1 ); \
1263 263292 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
1264 263292 : in15 = GF_MUL( in15, 1 ); \
1265 263292 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
1266 263292 : } while( 0 )
1267 :
1268 : void fd_reedsol_ppt_32_20( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
1269 : #define FD_REEDSOL_PPT_IMPL_32_20( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28 , \
1270 : in29, in30, in31) \
1271 263292 : do { \
1272 263292 : gf_t scratch_10, scratch_11, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_30, scratch_31, scratch_4, scratch_5; \
1273 263292 : gf_t scratch_6, scratch_7, scratch_8, scratch_9; \
1274 263292 : scratch_20 = in20; \
1275 263292 : in20 = GF_MUL( in20, 1 ); \
1276 263292 : scratch_21 = in21; \
1277 263292 : in21 = GF_MUL( in21, 1 ); \
1278 263292 : scratch_22 = in22; \
1279 263292 : in22 = GF_MUL( in22, 1 ); \
1280 263292 : scratch_23 = in23; \
1281 263292 : in23 = GF_MUL( in23, 1 ); \
1282 263292 : scratch_24 = in24; \
1283 263292 : in24 = GF_MUL( in24, 1 ); \
1284 263292 : scratch_25 = in25; \
1285 263292 : in25 = GF_MUL( in25, 1 ); \
1286 263292 : scratch_26 = in26; \
1287 263292 : in26 = GF_MUL( in26, 1 ); \
1288 263292 : scratch_27 = in27; \
1289 263292 : in27 = GF_MUL( in27, 1 ); \
1290 263292 : scratch_28 = in28; \
1291 263292 : in28 = GF_MUL( in28, 1 ); \
1292 263292 : scratch_29 = in29; \
1293 263292 : in29 = GF_MUL( in29, 1 ); \
1294 263292 : scratch_30 = in30; \
1295 263292 : in30 = GF_MUL( in30, 1 ); \
1296 263292 : scratch_31 = in31; \
1297 263292 : in31 = GF_MUL( in31, 1 ); \
1298 263292 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
1299 263292 : in20 = GF_ADD( GF_MUL( in04, 1 ), in20 ); \
1300 263292 : in21 = GF_ADD( GF_MUL( in05, 1 ), in21 ); \
1301 263292 : in22 = GF_ADD( GF_MUL( in06, 1 ), in22 ); \
1302 263292 : in23 = GF_ADD( GF_MUL( in07, 1 ), in23 ); \
1303 263292 : in24 = GF_ADD( GF_MUL( in08, 1 ), in24 ); \
1304 263292 : in25 = GF_ADD( GF_MUL( in09, 1 ), in25 ); \
1305 263292 : in26 = GF_ADD( GF_MUL( in10, 1 ), in26 ); \
1306 263292 : in27 = GF_ADD( GF_MUL( in11, 1 ), in27 ); \
1307 263292 : in28 = GF_ADD( GF_MUL( in12, 1 ), in28 ); \
1308 263292 : in29 = GF_ADD( GF_MUL( in13, 1 ), in29 ); \
1309 263292 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
1310 263292 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
1311 263292 : scratch_8 = in24; \
1312 263292 : in24 = GF_MUL( in24, 1 ); \
1313 263292 : scratch_9 = in25; \
1314 263292 : in25 = GF_MUL( in25, 1 ); \
1315 263292 : scratch_10 = in26; \
1316 263292 : in26 = GF_MUL( in26, 1 ); \
1317 263292 : scratch_11 = in27; \
1318 263292 : in27 = GF_MUL( in27, 1 ); \
1319 263292 : GF_MUL22( in20, in28, 1, 11, 1, 10 ); \
1320 263292 : GF_MUL22( in21, in29, 1, 11, 1, 10 ); \
1321 263292 : GF_MUL22( in22, in30, 1, 11, 1, 10 ); \
1322 263292 : GF_MUL22( in23, in31, 1, 11, 1, 10 ); \
1323 263292 : scratch_4 = in20; \
1324 263292 : in20 = GF_MUL( in20, 1 ); \
1325 263292 : scratch_5 = in21; \
1326 263292 : in21 = GF_MUL( in21, 1 ); \
1327 263292 : scratch_6 = in22; \
1328 263292 : in22 = GF_MUL( in22, 1 ); \
1329 263292 : scratch_7 = in23; \
1330 263292 : in23 = GF_MUL( in23, 1 ); \
1331 263292 : FD_REEDSOL_GENERATE_IFFT( 4, 16, in16, in17, in18, in19 ); \
1332 263292 : in20 = GF_ADD( GF_MUL( in16, 1 ), in20 ); \
1333 263292 : in21 = GF_ADD( GF_MUL( in17, 1 ), in21 ); \
1334 263292 : in22 = GF_ADD( GF_MUL( in18, 1 ), in22 ); \
1335 263292 : in23 = GF_ADD( GF_MUL( in19, 1 ), in23 ); \
1336 263292 : FD_REEDSOL_GENERATE_FFT( 4, 20, in20, in21, in22, in23 ); \
1337 263292 : in16 = GF_MUL( in16, 1 ); \
1338 263292 : in16 = GF_ADD( GF_MUL( scratch_4, 97 ), in16 ); \
1339 263292 : in17 = GF_MUL( in17, 1 ); \
1340 263292 : in17 = GF_ADD( GF_MUL( scratch_5, 97 ), in17 ); \
1341 263292 : in18 = GF_MUL( in18, 1 ); \
1342 263292 : in18 = GF_ADD( GF_MUL( scratch_6, 97 ), in18 ); \
1343 263292 : in19 = GF_MUL( in19, 1 ); \
1344 263292 : in19 = GF_ADD( GF_MUL( scratch_7, 97 ), in19 ); \
1345 263292 : in24 = GF_ADD( GF_MUL( in16, 1 ), in24 ); \
1346 263292 : in25 = GF_ADD( GF_MUL( in17, 1 ), in25 ); \
1347 263292 : in26 = GF_ADD( GF_MUL( in18, 1 ), in26 ); \
1348 263292 : in27 = GF_ADD( GF_MUL( in19, 1 ), in27 ); \
1349 263292 : FD_REEDSOL_GENERATE_FFT( 8, 24, in24, in25, in26, in27, in28, in29, in30, in31 ); \
1350 263292 : in16 = GF_MUL( in16, 1 ); \
1351 263292 : in16 = GF_ADD( GF_MUL( scratch_8, 11 ), in16 ); \
1352 263292 : in17 = GF_MUL( in17, 1 ); \
1353 263292 : in17 = GF_ADD( GF_MUL( scratch_9, 11 ), in17 ); \
1354 263292 : in18 = GF_MUL( in18, 1 ); \
1355 263292 : in18 = GF_ADD( GF_MUL( scratch_10, 11 ), in18 ); \
1356 263292 : in19 = GF_MUL( in19, 1 ); \
1357 263292 : in19 = GF_ADD( GF_MUL( scratch_11, 11 ), in19 ); \
1358 263292 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
1359 263292 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
1360 263292 : GF_MUL22( in02, in18, 1, 0, 1, 1 ); \
1361 263292 : GF_MUL22( in03, in19, 1, 0, 1, 1 ); \
1362 263292 : in04 = GF_MUL( in04, 1 ); \
1363 263292 : in04 = GF_ADD( GF_MUL( scratch_20, 0 ), in04 ); \
1364 263292 : in05 = GF_MUL( in05, 1 ); \
1365 263292 : in05 = GF_ADD( GF_MUL( scratch_21, 0 ), in05 ); \
1366 263292 : in06 = GF_MUL( in06, 1 ); \
1367 263292 : in06 = GF_ADD( GF_MUL( scratch_22, 0 ), in06 ); \
1368 263292 : in07 = GF_MUL( in07, 1 ); \
1369 263292 : in07 = GF_ADD( GF_MUL( scratch_23, 0 ), in07 ); \
1370 263292 : in08 = GF_MUL( in08, 1 ); \
1371 263292 : in08 = GF_ADD( GF_MUL( scratch_24, 0 ), in08 ); \
1372 263292 : in09 = GF_MUL( in09, 1 ); \
1373 263292 : in09 = GF_ADD( GF_MUL( scratch_25, 0 ), in09 ); \
1374 263292 : in10 = GF_MUL( in10, 1 ); \
1375 263292 : in10 = GF_ADD( GF_MUL( scratch_26, 0 ), in10 ); \
1376 263292 : in11 = GF_MUL( in11, 1 ); \
1377 263292 : in11 = GF_ADD( GF_MUL( scratch_27, 0 ), in11 ); \
1378 263292 : in12 = GF_MUL( in12, 1 ); \
1379 263292 : in12 = GF_ADD( GF_MUL( scratch_28, 0 ), in12 ); \
1380 263292 : in13 = GF_MUL( in13, 1 ); \
1381 263292 : in13 = GF_ADD( GF_MUL( scratch_29, 0 ), in13 ); \
1382 263292 : in14 = GF_MUL( in14, 1 ); \
1383 263292 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
1384 263292 : in15 = GF_MUL( in15, 1 ); \
1385 263292 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
1386 263292 : } while( 0 )
1387 :
1388 : void fd_reedsol_ppt_32_21( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
1389 : #define FD_REEDSOL_PPT_IMPL_32_21( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28 , \
1390 : in29, in30, in31) \
1391 263292 : do { \
1392 263292 : gf_t scratch_10, scratch_11, scratch_12, scratch_2, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_30, scratch_31, scratch_5; \
1393 263292 : gf_t scratch_6, scratch_7, scratch_8, scratch_9; \
1394 263292 : scratch_21 = in21; \
1395 263292 : in21 = GF_MUL( in21, 1 ); \
1396 263292 : scratch_22 = in22; \
1397 263292 : in22 = GF_MUL( in22, 1 ); \
1398 263292 : scratch_23 = in23; \
1399 263292 : in23 = GF_MUL( in23, 1 ); \
1400 263292 : scratch_24 = in24; \
1401 263292 : in24 = GF_MUL( in24, 1 ); \
1402 263292 : scratch_25 = in25; \
1403 263292 : in25 = GF_MUL( in25, 1 ); \
1404 263292 : scratch_26 = in26; \
1405 263292 : in26 = GF_MUL( in26, 1 ); \
1406 263292 : scratch_27 = in27; \
1407 263292 : in27 = GF_MUL( in27, 1 ); \
1408 263292 : scratch_28 = in28; \
1409 263292 : in28 = GF_MUL( in28, 1 ); \
1410 263292 : scratch_29 = in29; \
1411 263292 : in29 = GF_MUL( in29, 1 ); \
1412 263292 : scratch_30 = in30; \
1413 263292 : in30 = GF_MUL( in30, 1 ); \
1414 263292 : scratch_31 = in31; \
1415 263292 : in31 = GF_MUL( in31, 1 ); \
1416 263292 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
1417 263292 : in21 = GF_ADD( GF_MUL( in05, 1 ), in21 ); \
1418 263292 : in22 = GF_ADD( GF_MUL( in06, 1 ), in22 ); \
1419 263292 : in23 = GF_ADD( GF_MUL( in07, 1 ), in23 ); \
1420 263292 : in24 = GF_ADD( GF_MUL( in08, 1 ), in24 ); \
1421 263292 : in25 = GF_ADD( GF_MUL( in09, 1 ), in25 ); \
1422 263292 : in26 = GF_ADD( GF_MUL( in10, 1 ), in26 ); \
1423 263292 : in27 = GF_ADD( GF_MUL( in11, 1 ), in27 ); \
1424 263292 : in28 = GF_ADD( GF_MUL( in12, 1 ), in28 ); \
1425 263292 : in29 = GF_ADD( GF_MUL( in13, 1 ), in29 ); \
1426 263292 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
1427 263292 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
1428 263292 : scratch_8 = in24; \
1429 263292 : in24 = GF_MUL( in24, 1 ); \
1430 263292 : scratch_9 = in25; \
1431 263292 : in25 = GF_MUL( in25, 1 ); \
1432 263292 : scratch_10 = in26; \
1433 263292 : in26 = GF_MUL( in26, 1 ); \
1434 263292 : scratch_11 = in27; \
1435 263292 : in27 = GF_MUL( in27, 1 ); \
1436 263292 : scratch_12 = in28; \
1437 263292 : in28 = GF_MUL( in28, 1 ); \
1438 263292 : GF_MUL22( in21, in29, 1, 11, 1, 10 ); \
1439 263292 : GF_MUL22( in22, in30, 1, 11, 1, 10 ); \
1440 263292 : GF_MUL22( in23, in31, 1, 11, 1, 10 ); \
1441 263292 : scratch_5 = in21; \
1442 263292 : in21 = GF_MUL( in21, 1 ); \
1443 263292 : scratch_6 = in22; \
1444 263292 : in22 = GF_MUL( in22, 1 ); \
1445 263292 : scratch_7 = in23; \
1446 263292 : in23 = GF_MUL( in23, 1 ); \
1447 263292 : FD_REEDSOL_GENERATE_IFFT( 4, 16, in16, in17, in18, in19 ); \
1448 263292 : in21 = GF_ADD( GF_MUL( in17, 1 ), in21 ); \
1449 263292 : in22 = GF_ADD( GF_MUL( in18, 1 ), in22 ); \
1450 263292 : in23 = GF_ADD( GF_MUL( in19, 1 ), in23 ); \
1451 263292 : scratch_2 = in22; \
1452 263292 : in22 = GF_MUL( in22, 1 ); \
1453 263292 : GF_MUL22( in21, in23, 1, 126, 1, 127 ); \
1454 263292 : GF_MUL22( in20, in21, 1, 20, 1, 1 ); \
1455 263292 : in22 = GF_ADD( GF_MUL( in20, 1 ), in22 ); \
1456 263292 : GF_MUL22( in22, in23, 1, 22, 1, 23 ); \
1457 263292 : in20 = GF_MUL( in20, 1 ); \
1458 263292 : in20 = GF_ADD( GF_MUL( scratch_2, 126 ), in20 ); \
1459 263292 : GF_MUL22( in16, in20, 96, 97, 1, 1 ); \
1460 263292 : in17 = GF_MUL( in17, 1 ); \
1461 263292 : in17 = GF_ADD( GF_MUL( scratch_5, 97 ), in17 ); \
1462 263292 : in18 = GF_MUL( in18, 1 ); \
1463 263292 : in18 = GF_ADD( GF_MUL( scratch_6, 97 ), in18 ); \
1464 263292 : in19 = GF_MUL( in19, 1 ); \
1465 263292 : in19 = GF_ADD( GF_MUL( scratch_7, 97 ), in19 ); \
1466 263292 : in24 = GF_ADD( GF_MUL( in16, 1 ), in24 ); \
1467 263292 : in25 = GF_ADD( GF_MUL( in17, 1 ), in25 ); \
1468 263292 : in26 = GF_ADD( GF_MUL( in18, 1 ), in26 ); \
1469 263292 : in27 = GF_ADD( GF_MUL( in19, 1 ), in27 ); \
1470 263292 : in28 = GF_ADD( GF_MUL( in20, 1 ), in28 ); \
1471 263292 : FD_REEDSOL_GENERATE_FFT( 8, 24, in24, in25, in26, in27, in28, in29, in30, in31 ); \
1472 263292 : in16 = GF_MUL( in16, 1 ); \
1473 263292 : in16 = GF_ADD( GF_MUL( scratch_8, 11 ), in16 ); \
1474 263292 : in17 = GF_MUL( in17, 1 ); \
1475 263292 : in17 = GF_ADD( GF_MUL( scratch_9, 11 ), in17 ); \
1476 263292 : in18 = GF_MUL( in18, 1 ); \
1477 263292 : in18 = GF_ADD( GF_MUL( scratch_10, 11 ), in18 ); \
1478 263292 : in19 = GF_MUL( in19, 1 ); \
1479 263292 : in19 = GF_ADD( GF_MUL( scratch_11, 11 ), in19 ); \
1480 263292 : in20 = GF_MUL( in20, 1 ); \
1481 263292 : in20 = GF_ADD( GF_MUL( scratch_12, 11 ), in20 ); \
1482 263292 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
1483 263292 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
1484 263292 : GF_MUL22( in02, in18, 1, 0, 1, 1 ); \
1485 263292 : GF_MUL22( in03, in19, 1, 0, 1, 1 ); \
1486 263292 : GF_MUL22( in04, in20, 1, 0, 1, 1 ); \
1487 263292 : in05 = GF_MUL( in05, 1 ); \
1488 263292 : in05 = GF_ADD( GF_MUL( scratch_21, 0 ), in05 ); \
1489 263292 : in06 = GF_MUL( in06, 1 ); \
1490 263292 : in06 = GF_ADD( GF_MUL( scratch_22, 0 ), in06 ); \
1491 263292 : in07 = GF_MUL( in07, 1 ); \
1492 263292 : in07 = GF_ADD( GF_MUL( scratch_23, 0 ), in07 ); \
1493 263292 : in08 = GF_MUL( in08, 1 ); \
1494 263292 : in08 = GF_ADD( GF_MUL( scratch_24, 0 ), in08 ); \
1495 263292 : in09 = GF_MUL( in09, 1 ); \
1496 263292 : in09 = GF_ADD( GF_MUL( scratch_25, 0 ), in09 ); \
1497 263292 : in10 = GF_MUL( in10, 1 ); \
1498 263292 : in10 = GF_ADD( GF_MUL( scratch_26, 0 ), in10 ); \
1499 263292 : in11 = GF_MUL( in11, 1 ); \
1500 263292 : in11 = GF_ADD( GF_MUL( scratch_27, 0 ), in11 ); \
1501 263292 : in12 = GF_MUL( in12, 1 ); \
1502 263292 : in12 = GF_ADD( GF_MUL( scratch_28, 0 ), in12 ); \
1503 263292 : in13 = GF_MUL( in13, 1 ); \
1504 263292 : in13 = GF_ADD( GF_MUL( scratch_29, 0 ), in13 ); \
1505 263292 : in14 = GF_MUL( in14, 1 ); \
1506 263292 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
1507 263292 : in15 = GF_MUL( in15, 1 ); \
1508 263292 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
1509 263292 : } while( 0 )
1510 :
1511 : void fd_reedsol_ppt_32_22( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
1512 : #define FD_REEDSOL_PPT_IMPL_32_22( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28 , \
1513 : in29, in30, in31) \
1514 263292 : do { \
1515 263292 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_2, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_3, scratch_30, scratch_31; \
1516 263292 : gf_t scratch_6, scratch_7, scratch_8, scratch_9; \
1517 263292 : scratch_22 = in22; \
1518 263292 : in22 = GF_MUL( in22, 1 ); \
1519 263292 : scratch_23 = in23; \
1520 263292 : in23 = GF_MUL( in23, 1 ); \
1521 263292 : scratch_24 = in24; \
1522 263292 : in24 = GF_MUL( in24, 1 ); \
1523 263292 : scratch_25 = in25; \
1524 263292 : in25 = GF_MUL( in25, 1 ); \
1525 263292 : scratch_26 = in26; \
1526 263292 : in26 = GF_MUL( in26, 1 ); \
1527 263292 : scratch_27 = in27; \
1528 263292 : in27 = GF_MUL( in27, 1 ); \
1529 263292 : scratch_28 = in28; \
1530 263292 : in28 = GF_MUL( in28, 1 ); \
1531 263292 : scratch_29 = in29; \
1532 263292 : in29 = GF_MUL( in29, 1 ); \
1533 263292 : scratch_30 = in30; \
1534 263292 : in30 = GF_MUL( in30, 1 ); \
1535 263292 : scratch_31 = in31; \
1536 263292 : in31 = GF_MUL( in31, 1 ); \
1537 263292 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
1538 263292 : in22 = GF_ADD( GF_MUL( in06, 1 ), in22 ); \
1539 263292 : in23 = GF_ADD( GF_MUL( in07, 1 ), in23 ); \
1540 263292 : in24 = GF_ADD( GF_MUL( in08, 1 ), in24 ); \
1541 263292 : in25 = GF_ADD( GF_MUL( in09, 1 ), in25 ); \
1542 263292 : in26 = GF_ADD( GF_MUL( in10, 1 ), in26 ); \
1543 263292 : in27 = GF_ADD( GF_MUL( in11, 1 ), in27 ); \
1544 263292 : in28 = GF_ADD( GF_MUL( in12, 1 ), in28 ); \
1545 263292 : in29 = GF_ADD( GF_MUL( in13, 1 ), in29 ); \
1546 263292 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
1547 263292 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
1548 263292 : scratch_8 = in24; \
1549 263292 : in24 = GF_MUL( in24, 1 ); \
1550 263292 : scratch_9 = in25; \
1551 263292 : in25 = GF_MUL( in25, 1 ); \
1552 263292 : scratch_10 = in26; \
1553 263292 : in26 = GF_MUL( in26, 1 ); \
1554 263292 : scratch_11 = in27; \
1555 263292 : in27 = GF_MUL( in27, 1 ); \
1556 263292 : scratch_12 = in28; \
1557 263292 : in28 = GF_MUL( in28, 1 ); \
1558 263292 : scratch_13 = in29; \
1559 263292 : in29 = GF_MUL( in29, 1 ); \
1560 263292 : GF_MUL22( in22, in30, 1, 11, 1, 10 ); \
1561 263292 : GF_MUL22( in23, in31, 1, 11, 1, 10 ); \
1562 263292 : scratch_6 = in22; \
1563 263292 : in22 = GF_MUL( in22, 1 ); \
1564 263292 : scratch_7 = in23; \
1565 263292 : in23 = GF_MUL( in23, 1 ); \
1566 263292 : FD_REEDSOL_GENERATE_IFFT( 4, 16, in16, in17, in18, in19 ); \
1567 263292 : in22 = GF_ADD( GF_MUL( in18, 1 ), in22 ); \
1568 263292 : in23 = GF_ADD( GF_MUL( in19, 1 ), in23 ); \
1569 263292 : scratch_2 = in22; \
1570 263292 : in22 = GF_MUL( in22, 1 ); \
1571 263292 : scratch_3 = in23; \
1572 263292 : in23 = GF_MUL( in23, 1 ); \
1573 263292 : GF_MUL22( in20, in21, 21, 20, 1, 1 ); \
1574 263292 : in22 = GF_ADD( GF_MUL( in20, 1 ), in22 ); \
1575 263292 : in23 = GF_ADD( GF_MUL( in21, 1 ), in23 ); \
1576 263292 : GF_MUL22( in22, in23, 1, 22, 1, 23 ); \
1577 263292 : in20 = GF_MUL( in20, 1 ); \
1578 263292 : in20 = GF_ADD( GF_MUL( scratch_2, 126 ), in20 ); \
1579 263292 : in21 = GF_MUL( in21, 1 ); \
1580 263292 : in21 = GF_ADD( GF_MUL( scratch_3, 126 ), in21 ); \
1581 263292 : GF_MUL22( in16, in20, 96, 97, 1, 1 ); \
1582 263292 : GF_MUL22( in17, in21, 96, 97, 1, 1 ); \
1583 263292 : in18 = GF_MUL( in18, 1 ); \
1584 263292 : in18 = GF_ADD( GF_MUL( scratch_6, 97 ), in18 ); \
1585 263292 : in19 = GF_MUL( in19, 1 ); \
1586 263292 : in19 = GF_ADD( GF_MUL( scratch_7, 97 ), in19 ); \
1587 263292 : in24 = GF_ADD( GF_MUL( in16, 1 ), in24 ); \
1588 263292 : in25 = GF_ADD( GF_MUL( in17, 1 ), in25 ); \
1589 263292 : in26 = GF_ADD( GF_MUL( in18, 1 ), in26 ); \
1590 263292 : in27 = GF_ADD( GF_MUL( in19, 1 ), in27 ); \
1591 263292 : in28 = GF_ADD( GF_MUL( in20, 1 ), in28 ); \
1592 263292 : in29 = GF_ADD( GF_MUL( in21, 1 ), in29 ); \
1593 263292 : FD_REEDSOL_GENERATE_FFT( 8, 24, in24, in25, in26, in27, in28, in29, in30, in31 ); \
1594 263292 : in16 = GF_MUL( in16, 1 ); \
1595 263292 : in16 = GF_ADD( GF_MUL( scratch_8, 11 ), in16 ); \
1596 263292 : in17 = GF_MUL( in17, 1 ); \
1597 263292 : in17 = GF_ADD( GF_MUL( scratch_9, 11 ), in17 ); \
1598 263292 : in18 = GF_MUL( in18, 1 ); \
1599 263292 : in18 = GF_ADD( GF_MUL( scratch_10, 11 ), in18 ); \
1600 263292 : in19 = GF_MUL( in19, 1 ); \
1601 263292 : in19 = GF_ADD( GF_MUL( scratch_11, 11 ), in19 ); \
1602 263292 : in20 = GF_MUL( in20, 1 ); \
1603 263292 : in20 = GF_ADD( GF_MUL( scratch_12, 11 ), in20 ); \
1604 263292 : in21 = GF_MUL( in21, 1 ); \
1605 263292 : in21 = GF_ADD( GF_MUL( scratch_13, 11 ), in21 ); \
1606 263292 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
1607 263292 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
1608 263292 : GF_MUL22( in02, in18, 1, 0, 1, 1 ); \
1609 263292 : GF_MUL22( in03, in19, 1, 0, 1, 1 ); \
1610 263292 : GF_MUL22( in04, in20, 1, 0, 1, 1 ); \
1611 263292 : GF_MUL22( in05, in21, 1, 0, 1, 1 ); \
1612 263292 : in06 = GF_MUL( in06, 1 ); \
1613 263292 : in06 = GF_ADD( GF_MUL( scratch_22, 0 ), in06 ); \
1614 263292 : in07 = GF_MUL( in07, 1 ); \
1615 263292 : in07 = GF_ADD( GF_MUL( scratch_23, 0 ), in07 ); \
1616 263292 : in08 = GF_MUL( in08, 1 ); \
1617 263292 : in08 = GF_ADD( GF_MUL( scratch_24, 0 ), in08 ); \
1618 263292 : in09 = GF_MUL( in09, 1 ); \
1619 263292 : in09 = GF_ADD( GF_MUL( scratch_25, 0 ), in09 ); \
1620 263292 : in10 = GF_MUL( in10, 1 ); \
1621 263292 : in10 = GF_ADD( GF_MUL( scratch_26, 0 ), in10 ); \
1622 263292 : in11 = GF_MUL( in11, 1 ); \
1623 263292 : in11 = GF_ADD( GF_MUL( scratch_27, 0 ), in11 ); \
1624 263292 : in12 = GF_MUL( in12, 1 ); \
1625 263292 : in12 = GF_ADD( GF_MUL( scratch_28, 0 ), in12 ); \
1626 263292 : in13 = GF_MUL( in13, 1 ); \
1627 263292 : in13 = GF_ADD( GF_MUL( scratch_29, 0 ), in13 ); \
1628 263292 : in14 = GF_MUL( in14, 1 ); \
1629 263292 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
1630 263292 : in15 = GF_MUL( in15, 1 ); \
1631 263292 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
1632 263292 : } while( 0 )
1633 :
1634 : void fd_reedsol_ppt_32_23( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
1635 : #define FD_REEDSOL_PPT_IMPL_32_23( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28 , \
1636 : in29, in30, in31) \
1637 263292 : do { \
1638 263292 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_3, scratch_30, scratch_31, scratch_7; \
1639 263292 : gf_t scratch_8, scratch_9; \
1640 263292 : scratch_23 = in23; \
1641 263292 : in23 = GF_MUL( in23, 1 ); \
1642 263292 : scratch_24 = in24; \
1643 263292 : in24 = GF_MUL( in24, 1 ); \
1644 263292 : scratch_25 = in25; \
1645 263292 : in25 = GF_MUL( in25, 1 ); \
1646 263292 : scratch_26 = in26; \
1647 263292 : in26 = GF_MUL( in26, 1 ); \
1648 263292 : scratch_27 = in27; \
1649 263292 : in27 = GF_MUL( in27, 1 ); \
1650 263292 : scratch_28 = in28; \
1651 263292 : in28 = GF_MUL( in28, 1 ); \
1652 263292 : scratch_29 = in29; \
1653 263292 : in29 = GF_MUL( in29, 1 ); \
1654 263292 : scratch_30 = in30; \
1655 263292 : in30 = GF_MUL( in30, 1 ); \
1656 263292 : scratch_31 = in31; \
1657 263292 : in31 = GF_MUL( in31, 1 ); \
1658 263292 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
1659 263292 : in23 = GF_ADD( GF_MUL( in07, 1 ), in23 ); \
1660 263292 : in24 = GF_ADD( GF_MUL( in08, 1 ), in24 ); \
1661 263292 : in25 = GF_ADD( GF_MUL( in09, 1 ), in25 ); \
1662 263292 : in26 = GF_ADD( GF_MUL( in10, 1 ), in26 ); \
1663 263292 : in27 = GF_ADD( GF_MUL( in11, 1 ), in27 ); \
1664 263292 : in28 = GF_ADD( GF_MUL( in12, 1 ), in28 ); \
1665 263292 : in29 = GF_ADD( GF_MUL( in13, 1 ), in29 ); \
1666 263292 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
1667 263292 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
1668 263292 : scratch_8 = in24; \
1669 263292 : in24 = GF_MUL( in24, 1 ); \
1670 263292 : scratch_9 = in25; \
1671 263292 : in25 = GF_MUL( in25, 1 ); \
1672 263292 : scratch_10 = in26; \
1673 263292 : in26 = GF_MUL( in26, 1 ); \
1674 263292 : scratch_11 = in27; \
1675 263292 : in27 = GF_MUL( in27, 1 ); \
1676 263292 : scratch_12 = in28; \
1677 263292 : in28 = GF_MUL( in28, 1 ); \
1678 263292 : scratch_13 = in29; \
1679 263292 : in29 = GF_MUL( in29, 1 ); \
1680 263292 : scratch_14 = in30; \
1681 263292 : in30 = GF_MUL( in30, 1 ); \
1682 263292 : GF_MUL22( in23, in31, 1, 11, 1, 10 ); \
1683 263292 : scratch_7 = in23; \
1684 263292 : in23 = GF_MUL( in23, 1 ); \
1685 263292 : FD_REEDSOL_GENERATE_IFFT( 4, 16, in16, in17, in18, in19 ); \
1686 263292 : in23 = GF_ADD( GF_MUL( in19, 1 ), in23 ); \
1687 263292 : scratch_3 = in23; \
1688 263292 : in23 = GF_MUL( in23, 1 ); \
1689 263292 : GF_MUL22( in20, in21, 21, 20, 1, 1 ); \
1690 263292 : in23 = GF_ADD( GF_MUL( in21, 1 ), in23 ); \
1691 263292 : GF_MUL22( in22, in23, 1, 22, 1, 1 ); \
1692 263292 : GF_MUL22( in20, in22, 127, 126, 1, 1 ); \
1693 263292 : in21 = GF_MUL( in21, 1 ); \
1694 263292 : in21 = GF_ADD( GF_MUL( scratch_3, 126 ), in21 ); \
1695 263292 : GF_MUL22( in16, in20, 96, 97, 1, 1 ); \
1696 263292 : GF_MUL22( in17, in21, 96, 97, 1, 1 ); \
1697 263292 : GF_MUL22( in18, in22, 96, 97, 1, 1 ); \
1698 263292 : in19 = GF_MUL( in19, 1 ); \
1699 263292 : in19 = GF_ADD( GF_MUL( scratch_7, 97 ), in19 ); \
1700 263292 : in24 = GF_ADD( GF_MUL( in16, 1 ), in24 ); \
1701 263292 : in25 = GF_ADD( GF_MUL( in17, 1 ), in25 ); \
1702 263292 : in26 = GF_ADD( GF_MUL( in18, 1 ), in26 ); \
1703 263292 : in27 = GF_ADD( GF_MUL( in19, 1 ), in27 ); \
1704 263292 : in28 = GF_ADD( GF_MUL( in20, 1 ), in28 ); \
1705 263292 : in29 = GF_ADD( GF_MUL( in21, 1 ), in29 ); \
1706 263292 : in30 = GF_ADD( GF_MUL( in22, 1 ), in30 ); \
1707 263292 : FD_REEDSOL_GENERATE_FFT( 8, 24, in24, in25, in26, in27, in28, in29, in30, in31 ); \
1708 263292 : in16 = GF_MUL( in16, 1 ); \
1709 263292 : in16 = GF_ADD( GF_MUL( scratch_8, 11 ), in16 ); \
1710 263292 : in17 = GF_MUL( in17, 1 ); \
1711 263292 : in17 = GF_ADD( GF_MUL( scratch_9, 11 ), in17 ); \
1712 263292 : in18 = GF_MUL( in18, 1 ); \
1713 263292 : in18 = GF_ADD( GF_MUL( scratch_10, 11 ), in18 ); \
1714 263292 : in19 = GF_MUL( in19, 1 ); \
1715 263292 : in19 = GF_ADD( GF_MUL( scratch_11, 11 ), in19 ); \
1716 263292 : in20 = GF_MUL( in20, 1 ); \
1717 263292 : in20 = GF_ADD( GF_MUL( scratch_12, 11 ), in20 ); \
1718 263292 : in21 = GF_MUL( in21, 1 ); \
1719 263292 : in21 = GF_ADD( GF_MUL( scratch_13, 11 ), in21 ); \
1720 263292 : in22 = GF_MUL( in22, 1 ); \
1721 263292 : in22 = GF_ADD( GF_MUL( scratch_14, 11 ), in22 ); \
1722 263292 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
1723 263292 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
1724 263292 : GF_MUL22( in02, in18, 1, 0, 1, 1 ); \
1725 263292 : GF_MUL22( in03, in19, 1, 0, 1, 1 ); \
1726 263292 : GF_MUL22( in04, in20, 1, 0, 1, 1 ); \
1727 263292 : GF_MUL22( in05, in21, 1, 0, 1, 1 ); \
1728 263292 : GF_MUL22( in06, in22, 1, 0, 1, 1 ); \
1729 263292 : in07 = GF_MUL( in07, 1 ); \
1730 263292 : in07 = GF_ADD( GF_MUL( scratch_23, 0 ), in07 ); \
1731 263292 : in08 = GF_MUL( in08, 1 ); \
1732 263292 : in08 = GF_ADD( GF_MUL( scratch_24, 0 ), in08 ); \
1733 263292 : in09 = GF_MUL( in09, 1 ); \
1734 263292 : in09 = GF_ADD( GF_MUL( scratch_25, 0 ), in09 ); \
1735 263292 : in10 = GF_MUL( in10, 1 ); \
1736 263292 : in10 = GF_ADD( GF_MUL( scratch_26, 0 ), in10 ); \
1737 263292 : in11 = GF_MUL( in11, 1 ); \
1738 263292 : in11 = GF_ADD( GF_MUL( scratch_27, 0 ), in11 ); \
1739 263292 : in12 = GF_MUL( in12, 1 ); \
1740 263292 : in12 = GF_ADD( GF_MUL( scratch_28, 0 ), in12 ); \
1741 263292 : in13 = GF_MUL( in13, 1 ); \
1742 263292 : in13 = GF_ADD( GF_MUL( scratch_29, 0 ), in13 ); \
1743 263292 : in14 = GF_MUL( in14, 1 ); \
1744 263292 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
1745 263292 : in15 = GF_MUL( in15, 1 ); \
1746 263292 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
1747 263292 : } while( 0 )
1748 :
1749 : void fd_reedsol_ppt_32_24( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
1750 : #define FD_REEDSOL_PPT_IMPL_32_24( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28 , \
1751 : in29, in30, in31) \
1752 263292 : do { \
1753 263292 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_30, scratch_31, scratch_8, scratch_9; \
1754 263292 : scratch_24 = in24; \
1755 263292 : in24 = GF_MUL( in24, 1 ); \
1756 263292 : scratch_25 = in25; \
1757 263292 : in25 = GF_MUL( in25, 1 ); \
1758 263292 : scratch_26 = in26; \
1759 263292 : in26 = GF_MUL( in26, 1 ); \
1760 263292 : scratch_27 = in27; \
1761 263292 : in27 = GF_MUL( in27, 1 ); \
1762 263292 : scratch_28 = in28; \
1763 263292 : in28 = GF_MUL( in28, 1 ); \
1764 263292 : scratch_29 = in29; \
1765 263292 : in29 = GF_MUL( in29, 1 ); \
1766 263292 : scratch_30 = in30; \
1767 263292 : in30 = GF_MUL( in30, 1 ); \
1768 263292 : scratch_31 = in31; \
1769 263292 : in31 = GF_MUL( in31, 1 ); \
1770 263292 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
1771 263292 : in24 = GF_ADD( GF_MUL( in08, 1 ), in24 ); \
1772 263292 : in25 = GF_ADD( GF_MUL( in09, 1 ), in25 ); \
1773 263292 : in26 = GF_ADD( GF_MUL( in10, 1 ), in26 ); \
1774 263292 : in27 = GF_ADD( GF_MUL( in11, 1 ), in27 ); \
1775 263292 : in28 = GF_ADD( GF_MUL( in12, 1 ), in28 ); \
1776 263292 : in29 = GF_ADD( GF_MUL( in13, 1 ), in29 ); \
1777 263292 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
1778 263292 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
1779 263292 : scratch_8 = in24; \
1780 263292 : in24 = GF_MUL( in24, 1 ); \
1781 263292 : scratch_9 = in25; \
1782 263292 : in25 = GF_MUL( in25, 1 ); \
1783 263292 : scratch_10 = in26; \
1784 263292 : in26 = GF_MUL( in26, 1 ); \
1785 263292 : scratch_11 = in27; \
1786 263292 : in27 = GF_MUL( in27, 1 ); \
1787 263292 : scratch_12 = in28; \
1788 263292 : in28 = GF_MUL( in28, 1 ); \
1789 263292 : scratch_13 = in29; \
1790 263292 : in29 = GF_MUL( in29, 1 ); \
1791 263292 : scratch_14 = in30; \
1792 263292 : in30 = GF_MUL( in30, 1 ); \
1793 263292 : scratch_15 = in31; \
1794 263292 : in31 = GF_MUL( in31, 1 ); \
1795 263292 : FD_REEDSOL_GENERATE_IFFT( 8, 16, in16, in17, in18, in19, in20, in21, in22, in23 ); \
1796 263292 : in24 = GF_ADD( GF_MUL( in16, 1 ), in24 ); \
1797 263292 : in25 = GF_ADD( GF_MUL( in17, 1 ), in25 ); \
1798 263292 : in26 = GF_ADD( GF_MUL( in18, 1 ), in26 ); \
1799 263292 : in27 = GF_ADD( GF_MUL( in19, 1 ), in27 ); \
1800 263292 : in28 = GF_ADD( GF_MUL( in20, 1 ), in28 ); \
1801 263292 : in29 = GF_ADD( GF_MUL( in21, 1 ), in29 ); \
1802 263292 : in30 = GF_ADD( GF_MUL( in22, 1 ), in30 ); \
1803 263292 : in31 = GF_ADD( GF_MUL( in23, 1 ), in31 ); \
1804 263292 : FD_REEDSOL_GENERATE_FFT( 8, 24, in24, in25, in26, in27, in28, in29, in30, in31 ); \
1805 263292 : in16 = GF_MUL( in16, 1 ); \
1806 263292 : in16 = GF_ADD( GF_MUL( scratch_8, 11 ), in16 ); \
1807 263292 : in17 = GF_MUL( in17, 1 ); \
1808 263292 : in17 = GF_ADD( GF_MUL( scratch_9, 11 ), in17 ); \
1809 263292 : in18 = GF_MUL( in18, 1 ); \
1810 263292 : in18 = GF_ADD( GF_MUL( scratch_10, 11 ), in18 ); \
1811 263292 : in19 = GF_MUL( in19, 1 ); \
1812 263292 : in19 = GF_ADD( GF_MUL( scratch_11, 11 ), in19 ); \
1813 263292 : in20 = GF_MUL( in20, 1 ); \
1814 263292 : in20 = GF_ADD( GF_MUL( scratch_12, 11 ), in20 ); \
1815 263292 : in21 = GF_MUL( in21, 1 ); \
1816 263292 : in21 = GF_ADD( GF_MUL( scratch_13, 11 ), in21 ); \
1817 263292 : in22 = GF_MUL( in22, 1 ); \
1818 263292 : in22 = GF_ADD( GF_MUL( scratch_14, 11 ), in22 ); \
1819 263292 : in23 = GF_MUL( in23, 1 ); \
1820 263292 : in23 = GF_ADD( GF_MUL( scratch_15, 11 ), in23 ); \
1821 263292 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
1822 263292 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
1823 263292 : GF_MUL22( in02, in18, 1, 0, 1, 1 ); \
1824 263292 : GF_MUL22( in03, in19, 1, 0, 1, 1 ); \
1825 263292 : GF_MUL22( in04, in20, 1, 0, 1, 1 ); \
1826 263292 : GF_MUL22( in05, in21, 1, 0, 1, 1 ); \
1827 263292 : GF_MUL22( in06, in22, 1, 0, 1, 1 ); \
1828 263292 : GF_MUL22( in07, in23, 1, 0, 1, 1 ); \
1829 263292 : in08 = GF_MUL( in08, 1 ); \
1830 263292 : in08 = GF_ADD( GF_MUL( scratch_24, 0 ), in08 ); \
1831 263292 : in09 = GF_MUL( in09, 1 ); \
1832 263292 : in09 = GF_ADD( GF_MUL( scratch_25, 0 ), in09 ); \
1833 263292 : in10 = GF_MUL( in10, 1 ); \
1834 263292 : in10 = GF_ADD( GF_MUL( scratch_26, 0 ), in10 ); \
1835 263292 : in11 = GF_MUL( in11, 1 ); \
1836 263292 : in11 = GF_ADD( GF_MUL( scratch_27, 0 ), in11 ); \
1837 263292 : in12 = GF_MUL( in12, 1 ); \
1838 263292 : in12 = GF_ADD( GF_MUL( scratch_28, 0 ), in12 ); \
1839 263292 : in13 = GF_MUL( in13, 1 ); \
1840 263292 : in13 = GF_ADD( GF_MUL( scratch_29, 0 ), in13 ); \
1841 263292 : in14 = GF_MUL( in14, 1 ); \
1842 263292 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
1843 263292 : in15 = GF_MUL( in15, 1 ); \
1844 263292 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
1845 263292 : } while( 0 )
1846 :
1847 : void fd_reedsol_ppt_32_25( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
1848 : #define FD_REEDSOL_PPT_IMPL_32_25( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28 , \
1849 : in29, in30, in31) \
1850 263388 : do { \
1851 263388 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_2, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_30, scratch_31, scratch_4, scratch_9; \
1852 263388 : scratch_25 = in25; \
1853 263388 : in25 = GF_MUL( in25, 1 ); \
1854 263388 : scratch_26 = in26; \
1855 263388 : in26 = GF_MUL( in26, 1 ); \
1856 263388 : scratch_27 = in27; \
1857 263388 : in27 = GF_MUL( in27, 1 ); \
1858 263388 : scratch_28 = in28; \
1859 263388 : in28 = GF_MUL( in28, 1 ); \
1860 263388 : scratch_29 = in29; \
1861 263388 : in29 = GF_MUL( in29, 1 ); \
1862 263388 : scratch_30 = in30; \
1863 263388 : in30 = GF_MUL( in30, 1 ); \
1864 263388 : scratch_31 = in31; \
1865 263388 : in31 = GF_MUL( in31, 1 ); \
1866 263388 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
1867 263388 : in25 = GF_ADD( GF_MUL( in09, 1 ), in25 ); \
1868 263388 : in26 = GF_ADD( GF_MUL( in10, 1 ), in26 ); \
1869 263388 : in27 = GF_ADD( GF_MUL( in11, 1 ), in27 ); \
1870 263388 : in28 = GF_ADD( GF_MUL( in12, 1 ), in28 ); \
1871 263388 : in29 = GF_ADD( GF_MUL( in13, 1 ), in29 ); \
1872 263388 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
1873 263388 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
1874 263388 : scratch_9 = in25; \
1875 263388 : in25 = GF_MUL( in25, 1 ); \
1876 263388 : scratch_10 = in26; \
1877 263388 : in26 = GF_MUL( in26, 1 ); \
1878 263388 : scratch_11 = in27; \
1879 263388 : in27 = GF_MUL( in27, 1 ); \
1880 263388 : scratch_12 = in28; \
1881 263388 : in28 = GF_MUL( in28, 1 ); \
1882 263388 : scratch_13 = in29; \
1883 263388 : in29 = GF_MUL( in29, 1 ); \
1884 263388 : scratch_14 = in30; \
1885 263388 : in30 = GF_MUL( in30, 1 ); \
1886 263388 : scratch_15 = in31; \
1887 263388 : in31 = GF_MUL( in31, 1 ); \
1888 263388 : FD_REEDSOL_GENERATE_IFFT( 8, 16, in16, in17, in18, in19, in20, in21, in22, in23 ); \
1889 263388 : in25 = GF_ADD( GF_MUL( in17, 1 ), in25 ); \
1890 263388 : in26 = GF_ADD( GF_MUL( in18, 1 ), in26 ); \
1891 263388 : in27 = GF_ADD( GF_MUL( in19, 1 ), in27 ); \
1892 263388 : in28 = GF_ADD( GF_MUL( in20, 1 ), in28 ); \
1893 263388 : in29 = GF_ADD( GF_MUL( in21, 1 ), in29 ); \
1894 263388 : in30 = GF_ADD( GF_MUL( in22, 1 ), in30 ); \
1895 263388 : in31 = GF_ADD( GF_MUL( in23, 1 ), in31 ); \
1896 263388 : scratch_4 = in28; \
1897 263388 : in28 = GF_MUL( in28, 1 ); \
1898 263388 : GF_MUL22( in25, in29, 1, 119, 1, 118 ); \
1899 263388 : GF_MUL22( in26, in30, 1, 119, 1, 118 ); \
1900 263388 : GF_MUL22( in27, in31, 1, 119, 1, 118 ); \
1901 263388 : scratch_2 = in26; \
1902 263388 : in26 = GF_MUL( in26, 1 ); \
1903 263388 : GF_MUL22( in25, in27, 1, 100, 1, 101 ); \
1904 263388 : GF_MUL22( in24, in25, 1, 24, 1, 1 ); \
1905 263388 : in26 = GF_ADD( GF_MUL( in24, 1 ), in26 ); \
1906 263388 : GF_MUL22( in26, in27, 1, 26, 1, 27 ); \
1907 263388 : in24 = GF_MUL( in24, 1 ); \
1908 263388 : in24 = GF_ADD( GF_MUL( scratch_2, 100 ), in24 ); \
1909 263388 : in28 = GF_ADD( GF_MUL( in24, 1 ), in28 ); \
1910 263388 : FD_REEDSOL_GENERATE_FFT( 4, 28, in28, in29, in30, in31 ); \
1911 263388 : in24 = GF_MUL( in24, 1 ); \
1912 263388 : in24 = GF_ADD( GF_MUL( scratch_4, 119 ), in24 ); \
1913 263388 : GF_MUL22( in16, in24, 10, 11, 1, 1 ); \
1914 263388 : in17 = GF_MUL( in17, 1 ); \
1915 263388 : in17 = GF_ADD( GF_MUL( scratch_9, 11 ), in17 ); \
1916 263388 : in18 = GF_MUL( in18, 1 ); \
1917 263388 : in18 = GF_ADD( GF_MUL( scratch_10, 11 ), in18 ); \
1918 263388 : in19 = GF_MUL( in19, 1 ); \
1919 263388 : in19 = GF_ADD( GF_MUL( scratch_11, 11 ), in19 ); \
1920 263388 : in20 = GF_MUL( in20, 1 ); \
1921 263388 : in20 = GF_ADD( GF_MUL( scratch_12, 11 ), in20 ); \
1922 263388 : in21 = GF_MUL( in21, 1 ); \
1923 263388 : in21 = GF_ADD( GF_MUL( scratch_13, 11 ), in21 ); \
1924 263388 : in22 = GF_MUL( in22, 1 ); \
1925 263388 : in22 = GF_ADD( GF_MUL( scratch_14, 11 ), in22 ); \
1926 263388 : in23 = GF_MUL( in23, 1 ); \
1927 263388 : in23 = GF_ADD( GF_MUL( scratch_15, 11 ), in23 ); \
1928 263388 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
1929 263388 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
1930 263388 : GF_MUL22( in02, in18, 1, 0, 1, 1 ); \
1931 263388 : GF_MUL22( in03, in19, 1, 0, 1, 1 ); \
1932 263388 : GF_MUL22( in04, in20, 1, 0, 1, 1 ); \
1933 263388 : GF_MUL22( in05, in21, 1, 0, 1, 1 ); \
1934 263388 : GF_MUL22( in06, in22, 1, 0, 1, 1 ); \
1935 263388 : GF_MUL22( in07, in23, 1, 0, 1, 1 ); \
1936 263388 : GF_MUL22( in08, in24, 1, 0, 1, 1 ); \
1937 263388 : in09 = GF_MUL( in09, 1 ); \
1938 263388 : in09 = GF_ADD( GF_MUL( scratch_25, 0 ), in09 ); \
1939 263388 : in10 = GF_MUL( in10, 1 ); \
1940 263388 : in10 = GF_ADD( GF_MUL( scratch_26, 0 ), in10 ); \
1941 263388 : in11 = GF_MUL( in11, 1 ); \
1942 263388 : in11 = GF_ADD( GF_MUL( scratch_27, 0 ), in11 ); \
1943 263388 : in12 = GF_MUL( in12, 1 ); \
1944 263388 : in12 = GF_ADD( GF_MUL( scratch_28, 0 ), in12 ); \
1945 263388 : in13 = GF_MUL( in13, 1 ); \
1946 263388 : in13 = GF_ADD( GF_MUL( scratch_29, 0 ), in13 ); \
1947 263388 : in14 = GF_MUL( in14, 1 ); \
1948 263388 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
1949 263388 : in15 = GF_MUL( in15, 1 ); \
1950 263388 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
1951 263388 : } while( 0 )
1952 :
1953 : void fd_reedsol_ppt_32_26( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
1954 : #define FD_REEDSOL_PPT_IMPL_32_26( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, \
1955 : in29, in30, in31) \
1956 263292 : do { \
1957 263292 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_2, scratch_26, scratch_27, scratch_28, scratch_29, scratch_3, scratch_30, scratch_31, scratch_4, scratch_5; \
1958 263292 : scratch_26 = in26; \
1959 263292 : in26 = GF_MUL( in26, 1 ); \
1960 263292 : scratch_27 = in27; \
1961 263292 : in27 = GF_MUL( in27, 1 ); \
1962 263292 : scratch_28 = in28; \
1963 263292 : in28 = GF_MUL( in28, 1 ); \
1964 263292 : scratch_29 = in29; \
1965 263292 : in29 = GF_MUL( in29, 1 ); \
1966 263292 : scratch_30 = in30; \
1967 263292 : in30 = GF_MUL( in30, 1 ); \
1968 263292 : scratch_31 = in31; \
1969 263292 : in31 = GF_MUL( in31, 1 ); \
1970 263292 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
1971 263292 : in26 = GF_ADD( GF_MUL( in10, 1 ), in26 ); \
1972 263292 : in27 = GF_ADD( GF_MUL( in11, 1 ), in27 ); \
1973 263292 : in28 = GF_ADD( GF_MUL( in12, 1 ), in28 ); \
1974 263292 : in29 = GF_ADD( GF_MUL( in13, 1 ), in29 ); \
1975 263292 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
1976 263292 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
1977 263292 : scratch_10 = in26; \
1978 263292 : in26 = GF_MUL( in26, 1 ); \
1979 263292 : scratch_11 = in27; \
1980 263292 : in27 = GF_MUL( in27, 1 ); \
1981 263292 : scratch_12 = in28; \
1982 263292 : in28 = GF_MUL( in28, 1 ); \
1983 263292 : scratch_13 = in29; \
1984 263292 : in29 = GF_MUL( in29, 1 ); \
1985 263292 : scratch_14 = in30; \
1986 263292 : in30 = GF_MUL( in30, 1 ); \
1987 263292 : scratch_15 = in31; \
1988 263292 : in31 = GF_MUL( in31, 1 ); \
1989 263292 : FD_REEDSOL_GENERATE_IFFT( 8, 16, in16, in17, in18, in19, in20, in21, in22, in23 ); \
1990 263292 : in26 = GF_ADD( GF_MUL( in18, 1 ), in26 ); \
1991 263292 : in27 = GF_ADD( GF_MUL( in19, 1 ), in27 ); \
1992 263292 : in28 = GF_ADD( GF_MUL( in20, 1 ), in28 ); \
1993 263292 : in29 = GF_ADD( GF_MUL( in21, 1 ), in29 ); \
1994 263292 : in30 = GF_ADD( GF_MUL( in22, 1 ), in30 ); \
1995 263292 : in31 = GF_ADD( GF_MUL( in23, 1 ), in31 ); \
1996 263292 : scratch_4 = in28; \
1997 263292 : in28 = GF_MUL( in28, 1 ); \
1998 263292 : scratch_5 = in29; \
1999 263292 : in29 = GF_MUL( in29, 1 ); \
2000 263292 : GF_MUL22( in26, in30, 1, 119, 1, 118 ); \
2001 263292 : GF_MUL22( in27, in31, 1, 119, 1, 118 ); \
2002 263292 : scratch_2 = in26; \
2003 263292 : in26 = GF_MUL( in26, 1 ); \
2004 263292 : scratch_3 = in27; \
2005 263292 : in27 = GF_MUL( in27, 1 ); \
2006 263292 : GF_MUL22( in24, in25, 25, 24, 1, 1 ); \
2007 263292 : in26 = GF_ADD( GF_MUL( in24, 1 ), in26 ); \
2008 263292 : in27 = GF_ADD( GF_MUL( in25, 1 ), in27 ); \
2009 263292 : GF_MUL22( in26, in27, 1, 26, 1, 27 ); \
2010 263292 : in24 = GF_MUL( in24, 1 ); \
2011 263292 : in24 = GF_ADD( GF_MUL( scratch_2, 100 ), in24 ); \
2012 263292 : in25 = GF_MUL( in25, 1 ); \
2013 263292 : in25 = GF_ADD( GF_MUL( scratch_3, 100 ), in25 ); \
2014 263292 : in28 = GF_ADD( GF_MUL( in24, 1 ), in28 ); \
2015 263292 : in29 = GF_ADD( GF_MUL( in25, 1 ), in29 ); \
2016 263292 : FD_REEDSOL_GENERATE_FFT( 4, 28, in28, in29, in30, in31 ); \
2017 263292 : in24 = GF_MUL( in24, 1 ); \
2018 263292 : in24 = GF_ADD( GF_MUL( scratch_4, 119 ), in24 ); \
2019 263292 : in25 = GF_MUL( in25, 1 ); \
2020 263292 : in25 = GF_ADD( GF_MUL( scratch_5, 119 ), in25 ); \
2021 263292 : GF_MUL22( in16, in24, 10, 11, 1, 1 ); \
2022 263292 : GF_MUL22( in17, in25, 10, 11, 1, 1 ); \
2023 263292 : in18 = GF_MUL( in18, 1 ); \
2024 263292 : in18 = GF_ADD( GF_MUL( scratch_10, 11 ), in18 ); \
2025 263292 : in19 = GF_MUL( in19, 1 ); \
2026 263292 : in19 = GF_ADD( GF_MUL( scratch_11, 11 ), in19 ); \
2027 263292 : in20 = GF_MUL( in20, 1 ); \
2028 263292 : in20 = GF_ADD( GF_MUL( scratch_12, 11 ), in20 ); \
2029 263292 : in21 = GF_MUL( in21, 1 ); \
2030 263292 : in21 = GF_ADD( GF_MUL( scratch_13, 11 ), in21 ); \
2031 263292 : in22 = GF_MUL( in22, 1 ); \
2032 263292 : in22 = GF_ADD( GF_MUL( scratch_14, 11 ), in22 ); \
2033 263292 : in23 = GF_MUL( in23, 1 ); \
2034 263292 : in23 = GF_ADD( GF_MUL( scratch_15, 11 ), in23 ); \
2035 263292 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
2036 263292 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
2037 263292 : GF_MUL22( in02, in18, 1, 0, 1, 1 ); \
2038 263292 : GF_MUL22( in03, in19, 1, 0, 1, 1 ); \
2039 263292 : GF_MUL22( in04, in20, 1, 0, 1, 1 ); \
2040 263292 : GF_MUL22( in05, in21, 1, 0, 1, 1 ); \
2041 263292 : GF_MUL22( in06, in22, 1, 0, 1, 1 ); \
2042 263292 : GF_MUL22( in07, in23, 1, 0, 1, 1 ); \
2043 263292 : GF_MUL22( in08, in24, 1, 0, 1, 1 ); \
2044 263292 : GF_MUL22( in09, in25, 1, 0, 1, 1 ); \
2045 263292 : in10 = GF_MUL( in10, 1 ); \
2046 263292 : in10 = GF_ADD( GF_MUL( scratch_26, 0 ), in10 ); \
2047 263292 : in11 = GF_MUL( in11, 1 ); \
2048 263292 : in11 = GF_ADD( GF_MUL( scratch_27, 0 ), in11 ); \
2049 263292 : in12 = GF_MUL( in12, 1 ); \
2050 263292 : in12 = GF_ADD( GF_MUL( scratch_28, 0 ), in12 ); \
2051 263292 : in13 = GF_MUL( in13, 1 ); \
2052 263292 : in13 = GF_ADD( GF_MUL( scratch_29, 0 ), in13 ); \
2053 263292 : in14 = GF_MUL( in14, 1 ); \
2054 263292 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
2055 263292 : in15 = GF_MUL( in15, 1 ); \
2056 263292 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
2057 263292 : } while( 0 )
2058 :
2059 : void fd_reedsol_ppt_32_27( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
2060 : #define FD_REEDSOL_PPT_IMPL_32_27( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, \
2061 : in25, in26, in27, in28, in29, in30, in31) \
2062 263292 : do { \
2063 263292 : gf_t scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_27, scratch_28, scratch_29, scratch_3, scratch_30, scratch_31, scratch_4, scratch_5, scratch_6; \
2064 263292 : scratch_27 = in27; \
2065 263292 : in27 = GF_MUL( in27, 1 ); \
2066 263292 : scratch_28 = in28; \
2067 263292 : in28 = GF_MUL( in28, 1 ); \
2068 263292 : scratch_29 = in29; \
2069 263292 : in29 = GF_MUL( in29, 1 ); \
2070 263292 : scratch_30 = in30; \
2071 263292 : in30 = GF_MUL( in30, 1 ); \
2072 263292 : scratch_31 = in31; \
2073 263292 : in31 = GF_MUL( in31, 1 ); \
2074 263292 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
2075 263292 : in27 = GF_ADD( GF_MUL( in11, 1 ), in27 ); \
2076 263292 : in28 = GF_ADD( GF_MUL( in12, 1 ), in28 ); \
2077 263292 : in29 = GF_ADD( GF_MUL( in13, 1 ), in29 ); \
2078 263292 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
2079 263292 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
2080 263292 : scratch_11 = in27; \
2081 263292 : in27 = GF_MUL( in27, 1 ); \
2082 263292 : scratch_12 = in28; \
2083 263292 : in28 = GF_MUL( in28, 1 ); \
2084 263292 : scratch_13 = in29; \
2085 263292 : in29 = GF_MUL( in29, 1 ); \
2086 263292 : scratch_14 = in30; \
2087 263292 : in30 = GF_MUL( in30, 1 ); \
2088 263292 : scratch_15 = in31; \
2089 263292 : in31 = GF_MUL( in31, 1 ); \
2090 263292 : FD_REEDSOL_GENERATE_IFFT( 8, 16, in16, in17, in18, in19, in20, in21, in22, in23 ); \
2091 263292 : in27 = GF_ADD( GF_MUL( in19, 1 ), in27 ); \
2092 263292 : in28 = GF_ADD( GF_MUL( in20, 1 ), in28 ); \
2093 263292 : in29 = GF_ADD( GF_MUL( in21, 1 ), in29 ); \
2094 263292 : in30 = GF_ADD( GF_MUL( in22, 1 ), in30 ); \
2095 263292 : in31 = GF_ADD( GF_MUL( in23, 1 ), in31 ); \
2096 263292 : scratch_4 = in28; \
2097 263292 : in28 = GF_MUL( in28, 1 ); \
2098 263292 : scratch_5 = in29; \
2099 263292 : in29 = GF_MUL( in29, 1 ); \
2100 263292 : scratch_6 = in30; \
2101 263292 : in30 = GF_MUL( in30, 1 ); \
2102 263292 : GF_MUL22( in27, in31, 1, 119, 1, 118 ); \
2103 263292 : scratch_3 = in27; \
2104 263292 : in27 = GF_MUL( in27, 1 ); \
2105 263292 : GF_MUL22( in24, in25, 25, 24, 1, 1 ); \
2106 263292 : in27 = GF_ADD( GF_MUL( in25, 1 ), in27 ); \
2107 263292 : GF_MUL22( in26, in27, 1, 26, 1, 1 ); \
2108 263292 : GF_MUL22( in24, in26, 101, 100, 1, 1 ); \
2109 263292 : in25 = GF_MUL( in25, 1 ); \
2110 263292 : in25 = GF_ADD( GF_MUL( scratch_3, 100 ), in25 ); \
2111 263292 : in28 = GF_ADD( GF_MUL( in24, 1 ), in28 ); \
2112 263292 : in29 = GF_ADD( GF_MUL( in25, 1 ), in29 ); \
2113 263292 : in30 = GF_ADD( GF_MUL( in26, 1 ), in30 ); \
2114 263292 : FD_REEDSOL_GENERATE_FFT( 4, 28, in28, in29, in30, in31 ); \
2115 263292 : in24 = GF_MUL( in24, 1 ); \
2116 263292 : in24 = GF_ADD( GF_MUL( scratch_4, 119 ), in24 ); \
2117 263292 : in25 = GF_MUL( in25, 1 ); \
2118 263292 : in25 = GF_ADD( GF_MUL( scratch_5, 119 ), in25 ); \
2119 263292 : in26 = GF_MUL( in26, 1 ); \
2120 263292 : in26 = GF_ADD( GF_MUL( scratch_6, 119 ), in26 ); \
2121 263292 : GF_MUL22( in16, in24, 10, 11, 1, 1 ); \
2122 263292 : GF_MUL22( in17, in25, 10, 11, 1, 1 ); \
2123 263292 : GF_MUL22( in18, in26, 10, 11, 1, 1 ); \
2124 263292 : in19 = GF_MUL( in19, 1 ); \
2125 263292 : in19 = GF_ADD( GF_MUL( scratch_11, 11 ), in19 ); \
2126 263292 : in20 = GF_MUL( in20, 1 ); \
2127 263292 : in20 = GF_ADD( GF_MUL( scratch_12, 11 ), in20 ); \
2128 263292 : in21 = GF_MUL( in21, 1 ); \
2129 263292 : in21 = GF_ADD( GF_MUL( scratch_13, 11 ), in21 ); \
2130 263292 : in22 = GF_MUL( in22, 1 ); \
2131 263292 : in22 = GF_ADD( GF_MUL( scratch_14, 11 ), in22 ); \
2132 263292 : in23 = GF_MUL( in23, 1 ); \
2133 263292 : in23 = GF_ADD( GF_MUL( scratch_15, 11 ), in23 ); \
2134 263292 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
2135 263292 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
2136 263292 : GF_MUL22( in02, in18, 1, 0, 1, 1 ); \
2137 263292 : GF_MUL22( in03, in19, 1, 0, 1, 1 ); \
2138 263292 : GF_MUL22( in04, in20, 1, 0, 1, 1 ); \
2139 263292 : GF_MUL22( in05, in21, 1, 0, 1, 1 ); \
2140 263292 : GF_MUL22( in06, in22, 1, 0, 1, 1 ); \
2141 263292 : GF_MUL22( in07, in23, 1, 0, 1, 1 ); \
2142 263292 : GF_MUL22( in08, in24, 1, 0, 1, 1 ); \
2143 263292 : GF_MUL22( in09, in25, 1, 0, 1, 1 ); \
2144 263292 : GF_MUL22( in10, in26, 1, 0, 1, 1 ); \
2145 263292 : in11 = GF_MUL( in11, 1 ); \
2146 263292 : in11 = GF_ADD( GF_MUL( scratch_27, 0 ), in11 ); \
2147 263292 : in12 = GF_MUL( in12, 1 ); \
2148 263292 : in12 = GF_ADD( GF_MUL( scratch_28, 0 ), in12 ); \
2149 263292 : in13 = GF_MUL( in13, 1 ); \
2150 263292 : in13 = GF_ADD( GF_MUL( scratch_29, 0 ), in13 ); \
2151 263292 : in14 = GF_MUL( in14, 1 ); \
2152 263292 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
2153 263292 : in15 = GF_MUL( in15, 1 ); \
2154 263292 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
2155 263292 : } while( 0 )
2156 :
2157 : void fd_reedsol_ppt_32_28( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
2158 : #define FD_REEDSOL_PPT_IMPL_32_28( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, \
2159 : in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31) \
2160 263292 : do { \
2161 263292 : gf_t scratch_12, scratch_13, scratch_14, scratch_15, scratch_28, scratch_29, scratch_30, scratch_31, scratch_4, scratch_5, scratch_6, scratch_7; \
2162 263292 : scratch_28 = in28; \
2163 263292 : in28 = GF_MUL( in28, 1 ); \
2164 263292 : scratch_29 = in29; \
2165 263292 : in29 = GF_MUL( in29, 1 ); \
2166 263292 : scratch_30 = in30; \
2167 263292 : in30 = GF_MUL( in30, 1 ); \
2168 263292 : scratch_31 = in31; \
2169 263292 : in31 = GF_MUL( in31, 1 ); \
2170 263292 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
2171 263292 : in28 = GF_ADD( GF_MUL( in12, 1 ), in28 ); \
2172 263292 : in29 = GF_ADD( GF_MUL( in13, 1 ), in29 ); \
2173 263292 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
2174 263292 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
2175 263292 : scratch_12 = in28; \
2176 263292 : in28 = GF_MUL( in28, 1 ); \
2177 263292 : scratch_13 = in29; \
2178 263292 : in29 = GF_MUL( in29, 1 ); \
2179 263292 : scratch_14 = in30; \
2180 263292 : in30 = GF_MUL( in30, 1 ); \
2181 263292 : scratch_15 = in31; \
2182 263292 : in31 = GF_MUL( in31, 1 ); \
2183 263292 : FD_REEDSOL_GENERATE_IFFT( 8, 16, in16, in17, in18, in19, in20, in21, in22, in23 ); \
2184 263292 : in28 = GF_ADD( GF_MUL( in20, 1 ), in28 ); \
2185 263292 : in29 = GF_ADD( GF_MUL( in21, 1 ), in29 ); \
2186 263292 : in30 = GF_ADD( GF_MUL( in22, 1 ), in30 ); \
2187 263292 : in31 = GF_ADD( GF_MUL( in23, 1 ), in31 ); \
2188 263292 : scratch_4 = in28; \
2189 263292 : in28 = GF_MUL( in28, 1 ); \
2190 263292 : scratch_5 = in29; \
2191 263292 : in29 = GF_MUL( in29, 1 ); \
2192 263292 : scratch_6 = in30; \
2193 263292 : in30 = GF_MUL( in30, 1 ); \
2194 263292 : scratch_7 = in31; \
2195 263292 : in31 = GF_MUL( in31, 1 ); \
2196 263292 : FD_REEDSOL_GENERATE_IFFT( 4, 24, in24, in25, in26, in27 ); \
2197 263292 : in28 = GF_ADD( GF_MUL( in24, 1 ), in28 ); \
2198 263292 : in29 = GF_ADD( GF_MUL( in25, 1 ), in29 ); \
2199 263292 : in30 = GF_ADD( GF_MUL( in26, 1 ), in30 ); \
2200 263292 : in31 = GF_ADD( GF_MUL( in27, 1 ), in31 ); \
2201 263292 : FD_REEDSOL_GENERATE_FFT( 4, 28, in28, in29, in30, in31 ); \
2202 263292 : in24 = GF_MUL( in24, 1 ); \
2203 263292 : in24 = GF_ADD( GF_MUL( scratch_4, 119 ), in24 ); \
2204 263292 : in25 = GF_MUL( in25, 1 ); \
2205 263292 : in25 = GF_ADD( GF_MUL( scratch_5, 119 ), in25 ); \
2206 263292 : in26 = GF_MUL( in26, 1 ); \
2207 263292 : in26 = GF_ADD( GF_MUL( scratch_6, 119 ), in26 ); \
2208 263292 : in27 = GF_MUL( in27, 1 ); \
2209 263292 : in27 = GF_ADD( GF_MUL( scratch_7, 119 ), in27 ); \
2210 263292 : GF_MUL22( in16, in24, 10, 11, 1, 1 ); \
2211 263292 : GF_MUL22( in17, in25, 10, 11, 1, 1 ); \
2212 263292 : GF_MUL22( in18, in26, 10, 11, 1, 1 ); \
2213 263292 : GF_MUL22( in19, in27, 10, 11, 1, 1 ); \
2214 263292 : in20 = GF_MUL( in20, 1 ); \
2215 263292 : in20 = GF_ADD( GF_MUL( scratch_12, 11 ), in20 ); \
2216 263292 : in21 = GF_MUL( in21, 1 ); \
2217 263292 : in21 = GF_ADD( GF_MUL( scratch_13, 11 ), in21 ); \
2218 263292 : in22 = GF_MUL( in22, 1 ); \
2219 263292 : in22 = GF_ADD( GF_MUL( scratch_14, 11 ), in22 ); \
2220 263292 : in23 = GF_MUL( in23, 1 ); \
2221 263292 : in23 = GF_ADD( GF_MUL( scratch_15, 11 ), in23 ); \
2222 263292 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
2223 263292 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
2224 263292 : GF_MUL22( in02, in18, 1, 0, 1, 1 ); \
2225 263292 : GF_MUL22( in03, in19, 1, 0, 1, 1 ); \
2226 263292 : GF_MUL22( in04, in20, 1, 0, 1, 1 ); \
2227 263292 : GF_MUL22( in05, in21, 1, 0, 1, 1 ); \
2228 263292 : GF_MUL22( in06, in22, 1, 0, 1, 1 ); \
2229 263292 : GF_MUL22( in07, in23, 1, 0, 1, 1 ); \
2230 263292 : GF_MUL22( in08, in24, 1, 0, 1, 1 ); \
2231 263292 : GF_MUL22( in09, in25, 1, 0, 1, 1 ); \
2232 263292 : GF_MUL22( in10, in26, 1, 0, 1, 1 ); \
2233 263292 : GF_MUL22( in11, in27, 1, 0, 1, 1 ); \
2234 263292 : in12 = GF_MUL( in12, 1 ); \
2235 263292 : in12 = GF_ADD( GF_MUL( scratch_28, 0 ), in12 ); \
2236 263292 : in13 = GF_MUL( in13, 1 ); \
2237 263292 : in13 = GF_ADD( GF_MUL( scratch_29, 0 ), in13 ); \
2238 263292 : in14 = GF_MUL( in14, 1 ); \
2239 263292 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
2240 263292 : in15 = GF_MUL( in15, 1 ); \
2241 263292 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
2242 263292 : } while( 0 )
2243 :
2244 : void fd_reedsol_ppt_32_29( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
2245 : #define FD_REEDSOL_PPT_IMPL_32_29( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17 , \
2246 : in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31) \
2247 263292 : do { \
2248 263292 : gf_t scratch_13, scratch_14, scratch_15, scratch_2, scratch_29, scratch_30, scratch_31, scratch_5, scratch_6, scratch_7; \
2249 263292 : scratch_29 = in29; \
2250 263292 : in29 = GF_MUL( in29, 1 ); \
2251 263292 : scratch_30 = in30; \
2252 263292 : in30 = GF_MUL( in30, 1 ); \
2253 263292 : scratch_31 = in31; \
2254 263292 : in31 = GF_MUL( in31, 1 ); \
2255 263292 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
2256 263292 : in29 = GF_ADD( GF_MUL( in13, 1 ), in29 ); \
2257 263292 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
2258 263292 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
2259 263292 : scratch_13 = in29; \
2260 263292 : in29 = GF_MUL( in29, 1 ); \
2261 263292 : scratch_14 = in30; \
2262 263292 : in30 = GF_MUL( in30, 1 ); \
2263 263292 : scratch_15 = in31; \
2264 263292 : in31 = GF_MUL( in31, 1 ); \
2265 263292 : FD_REEDSOL_GENERATE_IFFT( 8, 16, in16, in17, in18, in19, in20, in21, in22, in23 ); \
2266 263292 : in29 = GF_ADD( GF_MUL( in21, 1 ), in29 ); \
2267 263292 : in30 = GF_ADD( GF_MUL( in22, 1 ), in30 ); \
2268 263292 : in31 = GF_ADD( GF_MUL( in23, 1 ), in31 ); \
2269 263292 : scratch_5 = in29; \
2270 263292 : in29 = GF_MUL( in29, 1 ); \
2271 263292 : scratch_6 = in30; \
2272 263292 : in30 = GF_MUL( in30, 1 ); \
2273 263292 : scratch_7 = in31; \
2274 263292 : in31 = GF_MUL( in31, 1 ); \
2275 263292 : FD_REEDSOL_GENERATE_IFFT( 4, 24, in24, in25, in26, in27 ); \
2276 263292 : in29 = GF_ADD( GF_MUL( in25, 1 ), in29 ); \
2277 263292 : in30 = GF_ADD( GF_MUL( in26, 1 ), in30 ); \
2278 263292 : in31 = GF_ADD( GF_MUL( in27, 1 ), in31 ); \
2279 263292 : scratch_2 = in30; \
2280 263292 : in30 = GF_MUL( in30, 1 ); \
2281 263292 : GF_MUL22( in29, in31, 1, 98, 1, 99 ); \
2282 263292 : GF_MUL22( in28, in29, 1, 28, 1, 1 ); \
2283 263292 : in30 = GF_ADD( GF_MUL( in28, 1 ), in30 ); \
2284 263292 : GF_MUL22( in30, in31, 1, 30, 1, 31 ); \
2285 263292 : in28 = GF_MUL( in28, 1 ); \
2286 263292 : in28 = GF_ADD( GF_MUL( scratch_2, 98 ), in28 ); \
2287 263292 : GF_MUL22( in24, in28, 118, 119, 1, 1 ); \
2288 263292 : in25 = GF_MUL( in25, 1 ); \
2289 263292 : in25 = GF_ADD( GF_MUL( scratch_5, 119 ), in25 ); \
2290 263292 : in26 = GF_MUL( in26, 1 ); \
2291 263292 : in26 = GF_ADD( GF_MUL( scratch_6, 119 ), in26 ); \
2292 263292 : in27 = GF_MUL( in27, 1 ); \
2293 263292 : in27 = GF_ADD( GF_MUL( scratch_7, 119 ), in27 ); \
2294 263292 : GF_MUL22( in16, in24, 10, 11, 1, 1 ); \
2295 263292 : GF_MUL22( in17, in25, 10, 11, 1, 1 ); \
2296 263292 : GF_MUL22( in18, in26, 10, 11, 1, 1 ); \
2297 263292 : GF_MUL22( in19, in27, 10, 11, 1, 1 ); \
2298 263292 : GF_MUL22( in20, in28, 10, 11, 1, 1 ); \
2299 263292 : in21 = GF_MUL( in21, 1 ); \
2300 263292 : in21 = GF_ADD( GF_MUL( scratch_13, 11 ), in21 ); \
2301 263292 : in22 = GF_MUL( in22, 1 ); \
2302 263292 : in22 = GF_ADD( GF_MUL( scratch_14, 11 ), in22 ); \
2303 263292 : in23 = GF_MUL( in23, 1 ); \
2304 263292 : in23 = GF_ADD( GF_MUL( scratch_15, 11 ), in23 ); \
2305 263292 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
2306 263292 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
2307 263292 : GF_MUL22( in02, in18, 1, 0, 1, 1 ); \
2308 263292 : GF_MUL22( in03, in19, 1, 0, 1, 1 ); \
2309 263292 : GF_MUL22( in04, in20, 1, 0, 1, 1 ); \
2310 263292 : GF_MUL22( in05, in21, 1, 0, 1, 1 ); \
2311 263292 : GF_MUL22( in06, in22, 1, 0, 1, 1 ); \
2312 263292 : GF_MUL22( in07, in23, 1, 0, 1, 1 ); \
2313 263292 : GF_MUL22( in08, in24, 1, 0, 1, 1 ); \
2314 263292 : GF_MUL22( in09, in25, 1, 0, 1, 1 ); \
2315 263292 : GF_MUL22( in10, in26, 1, 0, 1, 1 ); \
2316 263292 : GF_MUL22( in11, in27, 1, 0, 1, 1 ); \
2317 263292 : GF_MUL22( in12, in28, 1, 0, 1, 1 ); \
2318 263292 : in13 = GF_MUL( in13, 1 ); \
2319 263292 : in13 = GF_ADD( GF_MUL( scratch_29, 0 ), in13 ); \
2320 263292 : in14 = GF_MUL( in14, 1 ); \
2321 263292 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
2322 263292 : in15 = GF_MUL( in15, 1 ); \
2323 263292 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
2324 263292 : } while( 0 )
2325 :
2326 : void fd_reedsol_ppt_32_30( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
2327 : #define FD_REEDSOL_PPT_IMPL_32_30( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17 , \
2328 : in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31) \
2329 263292 : do { \
2330 263292 : gf_t scratch_14, scratch_15, scratch_2, scratch_3, scratch_30, scratch_31, scratch_6, scratch_7; \
2331 263292 : scratch_30 = in30; \
2332 263292 : in30 = GF_MUL( in30, 1 ); \
2333 263292 : scratch_31 = in31; \
2334 263292 : in31 = GF_MUL( in31, 1 ); \
2335 263292 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
2336 263292 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
2337 263292 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
2338 263292 : scratch_14 = in30; \
2339 263292 : in30 = GF_MUL( in30, 1 ); \
2340 263292 : scratch_15 = in31; \
2341 263292 : in31 = GF_MUL( in31, 1 ); \
2342 263292 : FD_REEDSOL_GENERATE_IFFT( 8, 16, in16, in17, in18, in19, in20, in21, in22, in23 ); \
2343 263292 : in30 = GF_ADD( GF_MUL( in22, 1 ), in30 ); \
2344 263292 : in31 = GF_ADD( GF_MUL( in23, 1 ), in31 ); \
2345 263292 : scratch_6 = in30; \
2346 263292 : in30 = GF_MUL( in30, 1 ); \
2347 263292 : scratch_7 = in31; \
2348 263292 : in31 = GF_MUL( in31, 1 ); \
2349 263292 : FD_REEDSOL_GENERATE_IFFT( 4, 24, in24, in25, in26, in27 ); \
2350 263292 : in30 = GF_ADD( GF_MUL( in26, 1 ), in30 ); \
2351 263292 : in31 = GF_ADD( GF_MUL( in27, 1 ), in31 ); \
2352 263292 : scratch_2 = in30; \
2353 263292 : in30 = GF_MUL( in30, 1 ); \
2354 263292 : scratch_3 = in31; \
2355 263292 : in31 = GF_MUL( in31, 1 ); \
2356 263292 : GF_MUL22( in28, in29, 29, 28, 1, 1 ); \
2357 263292 : in30 = GF_ADD( GF_MUL( in28, 1 ), in30 ); \
2358 263292 : in31 = GF_ADD( GF_MUL( in29, 1 ), in31 ); \
2359 263292 : GF_MUL22( in30, in31, 1, 30, 1, 31 ); \
2360 263292 : in28 = GF_MUL( in28, 1 ); \
2361 263292 : in28 = GF_ADD( GF_MUL( scratch_2, 98 ), in28 ); \
2362 263292 : in29 = GF_MUL( in29, 1 ); \
2363 263292 : in29 = GF_ADD( GF_MUL( scratch_3, 98 ), in29 ); \
2364 263292 : GF_MUL22( in24, in28, 118, 119, 1, 1 ); \
2365 263292 : GF_MUL22( in25, in29, 118, 119, 1, 1 ); \
2366 263292 : in26 = GF_MUL( in26, 1 ); \
2367 263292 : in26 = GF_ADD( GF_MUL( scratch_6, 119 ), in26 ); \
2368 263292 : in27 = GF_MUL( in27, 1 ); \
2369 263292 : in27 = GF_ADD( GF_MUL( scratch_7, 119 ), in27 ); \
2370 263292 : GF_MUL22( in16, in24, 10, 11, 1, 1 ); \
2371 263292 : GF_MUL22( in17, in25, 10, 11, 1, 1 ); \
2372 263292 : GF_MUL22( in18, in26, 10, 11, 1, 1 ); \
2373 263292 : GF_MUL22( in19, in27, 10, 11, 1, 1 ); \
2374 263292 : GF_MUL22( in20, in28, 10, 11, 1, 1 ); \
2375 263292 : GF_MUL22( in21, in29, 10, 11, 1, 1 ); \
2376 263292 : in22 = GF_MUL( in22, 1 ); \
2377 263292 : in22 = GF_ADD( GF_MUL( scratch_14, 11 ), in22 ); \
2378 263292 : in23 = GF_MUL( in23, 1 ); \
2379 263292 : in23 = GF_ADD( GF_MUL( scratch_15, 11 ), in23 ); \
2380 263292 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
2381 263292 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
2382 263292 : GF_MUL22( in02, in18, 1, 0, 1, 1 ); \
2383 263292 : GF_MUL22( in03, in19, 1, 0, 1, 1 ); \
2384 263292 : GF_MUL22( in04, in20, 1, 0, 1, 1 ); \
2385 263292 : GF_MUL22( in05, in21, 1, 0, 1, 1 ); \
2386 263292 : GF_MUL22( in06, in22, 1, 0, 1, 1 ); \
2387 263292 : GF_MUL22( in07, in23, 1, 0, 1, 1 ); \
2388 263292 : GF_MUL22( in08, in24, 1, 0, 1, 1 ); \
2389 263292 : GF_MUL22( in09, in25, 1, 0, 1, 1 ); \
2390 263292 : GF_MUL22( in10, in26, 1, 0, 1, 1 ); \
2391 263292 : GF_MUL22( in11, in27, 1, 0, 1, 1 ); \
2392 263292 : GF_MUL22( in12, in28, 1, 0, 1, 1 ); \
2393 263292 : GF_MUL22( in13, in29, 1, 0, 1, 1 ); \
2394 263292 : in14 = GF_MUL( in14, 1 ); \
2395 263292 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
2396 263292 : in15 = GF_MUL( in15, 1 ); \
2397 263292 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
2398 263292 : } while( 0 )
2399 :
2400 : void fd_reedsol_ppt_32_31( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
2401 : #define FD_REEDSOL_PPT_IMPL_32_31( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17 , \
2402 : in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31) \
2403 263388 : do { \
2404 263388 : gf_t scratch_15, scratch_3, scratch_31, scratch_7; \
2405 263388 : scratch_31 = in31; \
2406 263388 : in31 = GF_MUL( in31, 1 ); \
2407 263388 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
2408 263388 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
2409 263388 : scratch_15 = in31; \
2410 263388 : in31 = GF_MUL( in31, 1 ); \
2411 263388 : FD_REEDSOL_GENERATE_IFFT( 8, 16, in16, in17, in18, in19, in20, in21, in22, in23 ); \
2412 263388 : in31 = GF_ADD( GF_MUL( in23, 1 ), in31 ); \
2413 263388 : scratch_7 = in31; \
2414 263388 : in31 = GF_MUL( in31, 1 ); \
2415 263388 : FD_REEDSOL_GENERATE_IFFT( 4, 24, in24, in25, in26, in27 ); \
2416 263388 : in31 = GF_ADD( GF_MUL( in27, 1 ), in31 ); \
2417 263388 : scratch_3 = in31; \
2418 263388 : in31 = GF_MUL( in31, 1 ); \
2419 263388 : GF_MUL22( in28, in29, 29, 28, 1, 1 ); \
2420 263388 : in31 = GF_ADD( GF_MUL( in29, 1 ), in31 ); \
2421 263388 : GF_MUL22( in30, in31, 1, 30, 1, 1 ); \
2422 263388 : GF_MUL22( in28, in30, 99, 98, 1, 1 ); \
2423 263388 : in29 = GF_MUL( in29, 1 ); \
2424 263388 : in29 = GF_ADD( GF_MUL( scratch_3, 98 ), in29 ); \
2425 263388 : GF_MUL22( in24, in28, 118, 119, 1, 1 ); \
2426 263388 : GF_MUL22( in25, in29, 118, 119, 1, 1 ); \
2427 263388 : GF_MUL22( in26, in30, 118, 119, 1, 1 ); \
2428 263388 : in27 = GF_MUL( in27, 1 ); \
2429 263388 : in27 = GF_ADD( GF_MUL( scratch_7, 119 ), in27 ); \
2430 263388 : GF_MUL22( in16, in24, 10, 11, 1, 1 ); \
2431 263388 : GF_MUL22( in17, in25, 10, 11, 1, 1 ); \
2432 263388 : GF_MUL22( in18, in26, 10, 11, 1, 1 ); \
2433 263388 : GF_MUL22( in19, in27, 10, 11, 1, 1 ); \
2434 263388 : GF_MUL22( in20, in28, 10, 11, 1, 1 ); \
2435 263388 : GF_MUL22( in21, in29, 10, 11, 1, 1 ); \
2436 263388 : GF_MUL22( in22, in30, 10, 11, 1, 1 ); \
2437 263388 : in23 = GF_MUL( in23, 1 ); \
2438 263388 : in23 = GF_ADD( GF_MUL( scratch_15, 11 ), in23 ); \
2439 263388 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
2440 263388 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
2441 263388 : GF_MUL22( in02, in18, 1, 0, 1, 1 ); \
2442 263388 : GF_MUL22( in03, in19, 1, 0, 1, 1 ); \
2443 263388 : GF_MUL22( in04, in20, 1, 0, 1, 1 ); \
2444 263388 : GF_MUL22( in05, in21, 1, 0, 1, 1 ); \
2445 263388 : GF_MUL22( in06, in22, 1, 0, 1, 1 ); \
2446 263388 : GF_MUL22( in07, in23, 1, 0, 1, 1 ); \
2447 263388 : GF_MUL22( in08, in24, 1, 0, 1, 1 ); \
2448 263388 : GF_MUL22( in09, in25, 1, 0, 1, 1 ); \
2449 263388 : GF_MUL22( in10, in26, 1, 0, 1, 1 ); \
2450 263388 : GF_MUL22( in11, in27, 1, 0, 1, 1 ); \
2451 263388 : GF_MUL22( in12, in28, 1, 0, 1, 1 ); \
2452 263388 : GF_MUL22( in13, in29, 1, 0, 1, 1 ); \
2453 263388 : GF_MUL22( in14, in30, 1, 0, 1, 1 ); \
2454 263388 : in15 = GF_MUL( in15, 1 ); \
2455 263388 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
2456 263388 : } while( 0 )
2457 :
2458 : void fd_reedsol_ppt_64_33( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
2459 : #define FD_REEDSOL_PPT_IMPL_64_33( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
2460 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
2461 243396 : do { \
2462 243396 : gf_t scratch_16, scratch_2, scratch_33, scratch_34, scratch_35, scratch_36, scratch_37, scratch_38, scratch_39, scratch_4, scratch_40, scratch_41, scratch_42, scratch_43, scratch_44, scratch_45; \
2463 243396 : gf_t scratch_46, scratch_47, scratch_48, scratch_49, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59, scratch_60, scratch_61; \
2464 243396 : gf_t scratch_62, scratch_63, scratch_8; \
2465 243396 : scratch_33 = in33; \
2466 243396 : in33 = GF_MUL( in33, 1 ); \
2467 243396 : scratch_34 = in34; \
2468 243396 : in34 = GF_MUL( in34, 1 ); \
2469 243396 : scratch_35 = in35; \
2470 243396 : in35 = GF_MUL( in35, 1 ); \
2471 243396 : scratch_36 = in36; \
2472 243396 : in36 = GF_MUL( in36, 1 ); \
2473 243396 : scratch_37 = in37; \
2474 243396 : in37 = GF_MUL( in37, 1 ); \
2475 243396 : scratch_38 = in38; \
2476 243396 : in38 = GF_MUL( in38, 1 ); \
2477 243396 : scratch_39 = in39; \
2478 243396 : in39 = GF_MUL( in39, 1 ); \
2479 243396 : scratch_40 = in40; \
2480 243396 : in40 = GF_MUL( in40, 1 ); \
2481 243396 : scratch_41 = in41; \
2482 243396 : in41 = GF_MUL( in41, 1 ); \
2483 243396 : scratch_42 = in42; \
2484 243396 : in42 = GF_MUL( in42, 1 ); \
2485 243396 : scratch_43 = in43; \
2486 243396 : in43 = GF_MUL( in43, 1 ); \
2487 243396 : scratch_44 = in44; \
2488 243396 : in44 = GF_MUL( in44, 1 ); \
2489 243396 : scratch_45 = in45; \
2490 243396 : in45 = GF_MUL( in45, 1 ); \
2491 243396 : scratch_46 = in46; \
2492 243396 : in46 = GF_MUL( in46, 1 ); \
2493 243396 : scratch_47 = in47; \
2494 243396 : in47 = GF_MUL( in47, 1 ); \
2495 243396 : scratch_48 = in48; \
2496 243396 : in48 = GF_MUL( in48, 1 ); \
2497 243396 : scratch_49 = in49; \
2498 243396 : in49 = GF_MUL( in49, 1 ); \
2499 243396 : scratch_50 = in50; \
2500 243396 : in50 = GF_MUL( in50, 1 ); \
2501 243396 : scratch_51 = in51; \
2502 243396 : in51 = GF_MUL( in51, 1 ); \
2503 243396 : scratch_52 = in52; \
2504 243396 : in52 = GF_MUL( in52, 1 ); \
2505 243396 : scratch_53 = in53; \
2506 243396 : in53 = GF_MUL( in53, 1 ); \
2507 243396 : scratch_54 = in54; \
2508 243396 : in54 = GF_MUL( in54, 1 ); \
2509 243396 : scratch_55 = in55; \
2510 243396 : in55 = GF_MUL( in55, 1 ); \
2511 243396 : scratch_56 = in56; \
2512 243396 : in56 = GF_MUL( in56, 1 ); \
2513 243396 : scratch_57 = in57; \
2514 243396 : in57 = GF_MUL( in57, 1 ); \
2515 243396 : scratch_58 = in58; \
2516 243396 : in58 = GF_MUL( in58, 1 ); \
2517 243396 : scratch_59 = in59; \
2518 243396 : in59 = GF_MUL( in59, 1 ); \
2519 243396 : scratch_60 = in60; \
2520 243396 : in60 = GF_MUL( in60, 1 ); \
2521 243396 : scratch_61 = in61; \
2522 243396 : in61 = GF_MUL( in61, 1 ); \
2523 243396 : scratch_62 = in62; \
2524 243396 : in62 = GF_MUL( in62, 1 ); \
2525 243396 : scratch_63 = in63; \
2526 243396 : in63 = GF_MUL( in63, 1 ); \
2527 243396 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
2528 243396 : in33 = GF_ADD( GF_MUL( in01, 1 ), in33 ); \
2529 243396 : in34 = GF_ADD( GF_MUL( in02, 1 ), in34 ); \
2530 243396 : in35 = GF_ADD( GF_MUL( in03, 1 ), in35 ); \
2531 243396 : in36 = GF_ADD( GF_MUL( in04, 1 ), in36 ); \
2532 243396 : in37 = GF_ADD( GF_MUL( in05, 1 ), in37 ); \
2533 243396 : in38 = GF_ADD( GF_MUL( in06, 1 ), in38 ); \
2534 243396 : in39 = GF_ADD( GF_MUL( in07, 1 ), in39 ); \
2535 243396 : in40 = GF_ADD( GF_MUL( in08, 1 ), in40 ); \
2536 243396 : in41 = GF_ADD( GF_MUL( in09, 1 ), in41 ); \
2537 243396 : in42 = GF_ADD( GF_MUL( in10, 1 ), in42 ); \
2538 243396 : in43 = GF_ADD( GF_MUL( in11, 1 ), in43 ); \
2539 243396 : in44 = GF_ADD( GF_MUL( in12, 1 ), in44 ); \
2540 243396 : in45 = GF_ADD( GF_MUL( in13, 1 ), in45 ); \
2541 243396 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
2542 243396 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
2543 243396 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
2544 243396 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
2545 243396 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
2546 243396 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
2547 243396 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
2548 243396 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
2549 243396 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
2550 243396 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
2551 243396 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
2552 243396 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
2553 243396 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
2554 243396 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
2555 243396 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
2556 243396 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
2557 243396 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
2558 243396 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
2559 243396 : scratch_16 = in48; \
2560 243396 : in48 = GF_MUL( in48, 1 ); \
2561 243396 : GF_MUL22( in33, in49, 1, 71, 1, 70 ); \
2562 243396 : GF_MUL22( in34, in50, 1, 71, 1, 70 ); \
2563 243396 : GF_MUL22( in35, in51, 1, 71, 1, 70 ); \
2564 243396 : GF_MUL22( in36, in52, 1, 71, 1, 70 ); \
2565 243396 : GF_MUL22( in37, in53, 1, 71, 1, 70 ); \
2566 243396 : GF_MUL22( in38, in54, 1, 71, 1, 70 ); \
2567 243396 : GF_MUL22( in39, in55, 1, 71, 1, 70 ); \
2568 243396 : GF_MUL22( in40, in56, 1, 71, 1, 70 ); \
2569 243396 : GF_MUL22( in41, in57, 1, 71, 1, 70 ); \
2570 243396 : GF_MUL22( in42, in58, 1, 71, 1, 70 ); \
2571 243396 : GF_MUL22( in43, in59, 1, 71, 1, 70 ); \
2572 243396 : GF_MUL22( in44, in60, 1, 71, 1, 70 ); \
2573 243396 : GF_MUL22( in45, in61, 1, 71, 1, 70 ); \
2574 243396 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
2575 243396 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
2576 243396 : scratch_8 = in40; \
2577 243396 : in40 = GF_MUL( in40, 1 ); \
2578 243396 : GF_MUL22( in33, in41, 1, 174, 1, 175 ); \
2579 243396 : GF_MUL22( in34, in42, 1, 174, 1, 175 ); \
2580 243396 : GF_MUL22( in35, in43, 1, 174, 1, 175 ); \
2581 243396 : GF_MUL22( in36, in44, 1, 174, 1, 175 ); \
2582 243396 : GF_MUL22( in37, in45, 1, 174, 1, 175 ); \
2583 243396 : GF_MUL22( in38, in46, 1, 174, 1, 175 ); \
2584 243396 : GF_MUL22( in39, in47, 1, 174, 1, 175 ); \
2585 243396 : scratch_4 = in36; \
2586 243396 : in36 = GF_MUL( in36, 1 ); \
2587 243396 : GF_MUL22( in33, in37, 1, 38, 1, 39 ); \
2588 243396 : GF_MUL22( in34, in38, 1, 38, 1, 39 ); \
2589 243396 : GF_MUL22( in35, in39, 1, 38, 1, 39 ); \
2590 243396 : scratch_2 = in34; \
2591 243396 : in34 = GF_MUL( in34, 1 ); \
2592 243396 : GF_MUL22( in33, in35, 1, 237, 1, 236 ); \
2593 243396 : GF_MUL22( in32, in33, 1, 32, 1, 1 ); \
2594 243396 : in34 = GF_ADD( GF_MUL( in32, 1 ), in34 ); \
2595 243396 : GF_MUL22( in34, in35, 1, 34, 1, 35 ); \
2596 243396 : in32 = GF_MUL( in32, 1 ); \
2597 243396 : in32 = GF_ADD( GF_MUL( scratch_2, 237 ), in32 ); \
2598 243396 : in36 = GF_ADD( GF_MUL( in32, 1 ), in36 ); \
2599 243396 : FD_REEDSOL_GENERATE_FFT( 4, 36, in36, in37, in38, in39 ); \
2600 243396 : in32 = GF_MUL( in32, 1 ); \
2601 243396 : in32 = GF_ADD( GF_MUL( scratch_4, 38 ), in32 ); \
2602 243396 : in40 = GF_ADD( GF_MUL( in32, 1 ), in40 ); \
2603 243396 : FD_REEDSOL_GENERATE_FFT( 8, 40, in40, in41, in42, in43, in44, in45, in46, in47 ); \
2604 243396 : in32 = GF_MUL( in32, 1 ); \
2605 243396 : in32 = GF_ADD( GF_MUL( scratch_8, 174 ), in32 ); \
2606 243396 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
2607 243396 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
2608 243396 : in32 = GF_MUL( in32, 1 ); \
2609 243396 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
2610 243396 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
2611 243396 : in01 = GF_MUL( in01, 1 ); \
2612 243396 : in01 = GF_ADD( GF_MUL( scratch_33, 0 ), in01 ); \
2613 243396 : in02 = GF_MUL( in02, 1 ); \
2614 243396 : in02 = GF_ADD( GF_MUL( scratch_34, 0 ), in02 ); \
2615 243396 : in03 = GF_MUL( in03, 1 ); \
2616 243396 : in03 = GF_ADD( GF_MUL( scratch_35, 0 ), in03 ); \
2617 243396 : in04 = GF_MUL( in04, 1 ); \
2618 243396 : in04 = GF_ADD( GF_MUL( scratch_36, 0 ), in04 ); \
2619 243396 : in05 = GF_MUL( in05, 1 ); \
2620 243396 : in05 = GF_ADD( GF_MUL( scratch_37, 0 ), in05 ); \
2621 243396 : in06 = GF_MUL( in06, 1 ); \
2622 243396 : in06 = GF_ADD( GF_MUL( scratch_38, 0 ), in06 ); \
2623 243396 : in07 = GF_MUL( in07, 1 ); \
2624 243396 : in07 = GF_ADD( GF_MUL( scratch_39, 0 ), in07 ); \
2625 243396 : in08 = GF_MUL( in08, 1 ); \
2626 243396 : in08 = GF_ADD( GF_MUL( scratch_40, 0 ), in08 ); \
2627 243396 : in09 = GF_MUL( in09, 1 ); \
2628 243396 : in09 = GF_ADD( GF_MUL( scratch_41, 0 ), in09 ); \
2629 243396 : in10 = GF_MUL( in10, 1 ); \
2630 243396 : in10 = GF_ADD( GF_MUL( scratch_42, 0 ), in10 ); \
2631 243396 : in11 = GF_MUL( in11, 1 ); \
2632 243396 : in11 = GF_ADD( GF_MUL( scratch_43, 0 ), in11 ); \
2633 243396 : in12 = GF_MUL( in12, 1 ); \
2634 243396 : in12 = GF_ADD( GF_MUL( scratch_44, 0 ), in12 ); \
2635 243396 : in13 = GF_MUL( in13, 1 ); \
2636 243396 : in13 = GF_ADD( GF_MUL( scratch_45, 0 ), in13 ); \
2637 243396 : in14 = GF_MUL( in14, 1 ); \
2638 243396 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
2639 243396 : in15 = GF_MUL( in15, 1 ); \
2640 243396 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
2641 243396 : in16 = GF_MUL( in16, 1 ); \
2642 243396 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
2643 243396 : in17 = GF_MUL( in17, 1 ); \
2644 243396 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
2645 243396 : in18 = GF_MUL( in18, 1 ); \
2646 243396 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
2647 243396 : in19 = GF_MUL( in19, 1 ); \
2648 243396 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
2649 243396 : in20 = GF_MUL( in20, 1 ); \
2650 243396 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
2651 243396 : in21 = GF_MUL( in21, 1 ); \
2652 243396 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
2653 243396 : in22 = GF_MUL( in22, 1 ); \
2654 243396 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
2655 243396 : in23 = GF_MUL( in23, 1 ); \
2656 243396 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
2657 243396 : in24 = GF_MUL( in24, 1 ); \
2658 243396 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
2659 243396 : in25 = GF_MUL( in25, 1 ); \
2660 243396 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
2661 243396 : in26 = GF_MUL( in26, 1 ); \
2662 243396 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
2663 243396 : in27 = GF_MUL( in27, 1 ); \
2664 243396 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
2665 243396 : in28 = GF_MUL( in28, 1 ); \
2666 243396 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
2667 243396 : in29 = GF_MUL( in29, 1 ); \
2668 243396 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
2669 243396 : in30 = GF_MUL( in30, 1 ); \
2670 243396 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
2671 243396 : in31 = GF_MUL( in31, 1 ); \
2672 243396 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
2673 243396 : } while( 0 )
2674 :
2675 : void fd_reedsol_ppt_64_34( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
2676 : #define FD_REEDSOL_PPT_IMPL_64_34( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
2677 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
2678 773412 : do { \
2679 773412 : gf_t scratch_16, scratch_17, scratch_2, scratch_3, scratch_34, scratch_35, scratch_36, scratch_37, scratch_38, scratch_39, scratch_4, scratch_40, scratch_41, scratch_42, scratch_43, scratch_44; \
2680 773412 : gf_t scratch_45, scratch_46, scratch_47, scratch_48, scratch_49, scratch_5, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59; \
2681 773412 : gf_t scratch_60, scratch_61, scratch_62, scratch_63, scratch_8, scratch_9; \
2682 773412 : scratch_34 = in34; \
2683 773412 : in34 = GF_MUL( in34, 1 ); \
2684 773412 : scratch_35 = in35; \
2685 773412 : in35 = GF_MUL( in35, 1 ); \
2686 773412 : scratch_36 = in36; \
2687 773412 : in36 = GF_MUL( in36, 1 ); \
2688 773412 : scratch_37 = in37; \
2689 773412 : in37 = GF_MUL( in37, 1 ); \
2690 773412 : scratch_38 = in38; \
2691 773412 : in38 = GF_MUL( in38, 1 ); \
2692 773412 : scratch_39 = in39; \
2693 773412 : in39 = GF_MUL( in39, 1 ); \
2694 773412 : scratch_40 = in40; \
2695 773412 : in40 = GF_MUL( in40, 1 ); \
2696 773412 : scratch_41 = in41; \
2697 773412 : in41 = GF_MUL( in41, 1 ); \
2698 773412 : scratch_42 = in42; \
2699 773412 : in42 = GF_MUL( in42, 1 ); \
2700 773412 : scratch_43 = in43; \
2701 773412 : in43 = GF_MUL( in43, 1 ); \
2702 773412 : scratch_44 = in44; \
2703 773412 : in44 = GF_MUL( in44, 1 ); \
2704 773412 : scratch_45 = in45; \
2705 773412 : in45 = GF_MUL( in45, 1 ); \
2706 773412 : scratch_46 = in46; \
2707 773412 : in46 = GF_MUL( in46, 1 ); \
2708 773412 : scratch_47 = in47; \
2709 773412 : in47 = GF_MUL( in47, 1 ); \
2710 773412 : scratch_48 = in48; \
2711 773412 : in48 = GF_MUL( in48, 1 ); \
2712 773412 : scratch_49 = in49; \
2713 773412 : in49 = GF_MUL( in49, 1 ); \
2714 773412 : scratch_50 = in50; \
2715 773412 : in50 = GF_MUL( in50, 1 ); \
2716 773412 : scratch_51 = in51; \
2717 773412 : in51 = GF_MUL( in51, 1 ); \
2718 773412 : scratch_52 = in52; \
2719 773412 : in52 = GF_MUL( in52, 1 ); \
2720 773412 : scratch_53 = in53; \
2721 773412 : in53 = GF_MUL( in53, 1 ); \
2722 773412 : scratch_54 = in54; \
2723 773412 : in54 = GF_MUL( in54, 1 ); \
2724 773412 : scratch_55 = in55; \
2725 773412 : in55 = GF_MUL( in55, 1 ); \
2726 773412 : scratch_56 = in56; \
2727 773412 : in56 = GF_MUL( in56, 1 ); \
2728 773412 : scratch_57 = in57; \
2729 773412 : in57 = GF_MUL( in57, 1 ); \
2730 773412 : scratch_58 = in58; \
2731 773412 : in58 = GF_MUL( in58, 1 ); \
2732 773412 : scratch_59 = in59; \
2733 773412 : in59 = GF_MUL( in59, 1 ); \
2734 773412 : scratch_60 = in60; \
2735 773412 : in60 = GF_MUL( in60, 1 ); \
2736 773412 : scratch_61 = in61; \
2737 773412 : in61 = GF_MUL( in61, 1 ); \
2738 773412 : scratch_62 = in62; \
2739 773412 : in62 = GF_MUL( in62, 1 ); \
2740 773412 : scratch_63 = in63; \
2741 773412 : in63 = GF_MUL( in63, 1 ); \
2742 773412 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
2743 773412 : in34 = GF_ADD( GF_MUL( in02, 1 ), in34 ); \
2744 773412 : in35 = GF_ADD( GF_MUL( in03, 1 ), in35 ); \
2745 773412 : in36 = GF_ADD( GF_MUL( in04, 1 ), in36 ); \
2746 773412 : in37 = GF_ADD( GF_MUL( in05, 1 ), in37 ); \
2747 773412 : in38 = GF_ADD( GF_MUL( in06, 1 ), in38 ); \
2748 773412 : in39 = GF_ADD( GF_MUL( in07, 1 ), in39 ); \
2749 773412 : in40 = GF_ADD( GF_MUL( in08, 1 ), in40 ); \
2750 773412 : in41 = GF_ADD( GF_MUL( in09, 1 ), in41 ); \
2751 773412 : in42 = GF_ADD( GF_MUL( in10, 1 ), in42 ); \
2752 773412 : in43 = GF_ADD( GF_MUL( in11, 1 ), in43 ); \
2753 773412 : in44 = GF_ADD( GF_MUL( in12, 1 ), in44 ); \
2754 773412 : in45 = GF_ADD( GF_MUL( in13, 1 ), in45 ); \
2755 773412 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
2756 773412 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
2757 773412 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
2758 773412 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
2759 773412 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
2760 773412 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
2761 773412 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
2762 773412 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
2763 773412 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
2764 773412 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
2765 773412 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
2766 773412 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
2767 773412 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
2768 773412 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
2769 773412 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
2770 773412 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
2771 773412 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
2772 773412 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
2773 773412 : scratch_16 = in48; \
2774 773412 : in48 = GF_MUL( in48, 1 ); \
2775 773412 : scratch_17 = in49; \
2776 773412 : in49 = GF_MUL( in49, 1 ); \
2777 773412 : GF_MUL22( in34, in50, 1, 71, 1, 70 ); \
2778 773412 : GF_MUL22( in35, in51, 1, 71, 1, 70 ); \
2779 773412 : GF_MUL22( in36, in52, 1, 71, 1, 70 ); \
2780 773412 : GF_MUL22( in37, in53, 1, 71, 1, 70 ); \
2781 773412 : GF_MUL22( in38, in54, 1, 71, 1, 70 ); \
2782 773412 : GF_MUL22( in39, in55, 1, 71, 1, 70 ); \
2783 773412 : GF_MUL22( in40, in56, 1, 71, 1, 70 ); \
2784 773412 : GF_MUL22( in41, in57, 1, 71, 1, 70 ); \
2785 773412 : GF_MUL22( in42, in58, 1, 71, 1, 70 ); \
2786 773412 : GF_MUL22( in43, in59, 1, 71, 1, 70 ); \
2787 773412 : GF_MUL22( in44, in60, 1, 71, 1, 70 ); \
2788 773412 : GF_MUL22( in45, in61, 1, 71, 1, 70 ); \
2789 773412 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
2790 773412 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
2791 773412 : scratch_8 = in40; \
2792 773412 : in40 = GF_MUL( in40, 1 ); \
2793 773412 : scratch_9 = in41; \
2794 773412 : in41 = GF_MUL( in41, 1 ); \
2795 773412 : GF_MUL22( in34, in42, 1, 174, 1, 175 ); \
2796 773412 : GF_MUL22( in35, in43, 1, 174, 1, 175 ); \
2797 773412 : GF_MUL22( in36, in44, 1, 174, 1, 175 ); \
2798 773412 : GF_MUL22( in37, in45, 1, 174, 1, 175 ); \
2799 773412 : GF_MUL22( in38, in46, 1, 174, 1, 175 ); \
2800 773412 : GF_MUL22( in39, in47, 1, 174, 1, 175 ); \
2801 773412 : scratch_4 = in36; \
2802 773412 : in36 = GF_MUL( in36, 1 ); \
2803 773412 : scratch_5 = in37; \
2804 773412 : in37 = GF_MUL( in37, 1 ); \
2805 773412 : GF_MUL22( in34, in38, 1, 38, 1, 39 ); \
2806 773412 : GF_MUL22( in35, in39, 1, 38, 1, 39 ); \
2807 773412 : scratch_2 = in34; \
2808 773412 : in34 = GF_MUL( in34, 1 ); \
2809 773412 : scratch_3 = in35; \
2810 773412 : in35 = GF_MUL( in35, 1 ); \
2811 773412 : GF_MUL22( in32, in33, 33, 32, 1, 1 ); \
2812 773412 : in34 = GF_ADD( GF_MUL( in32, 1 ), in34 ); \
2813 773412 : in35 = GF_ADD( GF_MUL( in33, 1 ), in35 ); \
2814 773412 : GF_MUL22( in34, in35, 1, 34, 1, 35 ); \
2815 773412 : in32 = GF_MUL( in32, 1 ); \
2816 773412 : in32 = GF_ADD( GF_MUL( scratch_2, 237 ), in32 ); \
2817 773412 : in33 = GF_MUL( in33, 1 ); \
2818 773412 : in33 = GF_ADD( GF_MUL( scratch_3, 237 ), in33 ); \
2819 773412 : in36 = GF_ADD( GF_MUL( in32, 1 ), in36 ); \
2820 773412 : in37 = GF_ADD( GF_MUL( in33, 1 ), in37 ); \
2821 773412 : FD_REEDSOL_GENERATE_FFT( 4, 36, in36, in37, in38, in39 ); \
2822 773412 : in32 = GF_MUL( in32, 1 ); \
2823 773412 : in32 = GF_ADD( GF_MUL( scratch_4, 38 ), in32 ); \
2824 773412 : in33 = GF_MUL( in33, 1 ); \
2825 773412 : in33 = GF_ADD( GF_MUL( scratch_5, 38 ), in33 ); \
2826 773412 : in40 = GF_ADD( GF_MUL( in32, 1 ), in40 ); \
2827 773412 : in41 = GF_ADD( GF_MUL( in33, 1 ), in41 ); \
2828 773412 : FD_REEDSOL_GENERATE_FFT( 8, 40, in40, in41, in42, in43, in44, in45, in46, in47 ); \
2829 773412 : in32 = GF_MUL( in32, 1 ); \
2830 773412 : in32 = GF_ADD( GF_MUL( scratch_8, 174 ), in32 ); \
2831 773412 : in33 = GF_MUL( in33, 1 ); \
2832 773412 : in33 = GF_ADD( GF_MUL( scratch_9, 174 ), in33 ); \
2833 773412 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
2834 773412 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
2835 773412 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
2836 773412 : in32 = GF_MUL( in32, 1 ); \
2837 773412 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
2838 773412 : in33 = GF_MUL( in33, 1 ); \
2839 773412 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
2840 773412 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
2841 773412 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
2842 773412 : in02 = GF_MUL( in02, 1 ); \
2843 773412 : in02 = GF_ADD( GF_MUL( scratch_34, 0 ), in02 ); \
2844 773412 : in03 = GF_MUL( in03, 1 ); \
2845 773412 : in03 = GF_ADD( GF_MUL( scratch_35, 0 ), in03 ); \
2846 773412 : in04 = GF_MUL( in04, 1 ); \
2847 773412 : in04 = GF_ADD( GF_MUL( scratch_36, 0 ), in04 ); \
2848 773412 : in05 = GF_MUL( in05, 1 ); \
2849 773412 : in05 = GF_ADD( GF_MUL( scratch_37, 0 ), in05 ); \
2850 773412 : in06 = GF_MUL( in06, 1 ); \
2851 773412 : in06 = GF_ADD( GF_MUL( scratch_38, 0 ), in06 ); \
2852 773412 : in07 = GF_MUL( in07, 1 ); \
2853 773412 : in07 = GF_ADD( GF_MUL( scratch_39, 0 ), in07 ); \
2854 773412 : in08 = GF_MUL( in08, 1 ); \
2855 773412 : in08 = GF_ADD( GF_MUL( scratch_40, 0 ), in08 ); \
2856 773412 : in09 = GF_MUL( in09, 1 ); \
2857 773412 : in09 = GF_ADD( GF_MUL( scratch_41, 0 ), in09 ); \
2858 773412 : in10 = GF_MUL( in10, 1 ); \
2859 773412 : in10 = GF_ADD( GF_MUL( scratch_42, 0 ), in10 ); \
2860 773412 : in11 = GF_MUL( in11, 1 ); \
2861 773412 : in11 = GF_ADD( GF_MUL( scratch_43, 0 ), in11 ); \
2862 773412 : in12 = GF_MUL( in12, 1 ); \
2863 773412 : in12 = GF_ADD( GF_MUL( scratch_44, 0 ), in12 ); \
2864 773412 : in13 = GF_MUL( in13, 1 ); \
2865 773412 : in13 = GF_ADD( GF_MUL( scratch_45, 0 ), in13 ); \
2866 773412 : in14 = GF_MUL( in14, 1 ); \
2867 773412 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
2868 773412 : in15 = GF_MUL( in15, 1 ); \
2869 773412 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
2870 773412 : in16 = GF_MUL( in16, 1 ); \
2871 773412 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
2872 773412 : in17 = GF_MUL( in17, 1 ); \
2873 773412 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
2874 773412 : in18 = GF_MUL( in18, 1 ); \
2875 773412 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
2876 773412 : in19 = GF_MUL( in19, 1 ); \
2877 773412 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
2878 773412 : in20 = GF_MUL( in20, 1 ); \
2879 773412 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
2880 773412 : in21 = GF_MUL( in21, 1 ); \
2881 773412 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
2882 773412 : in22 = GF_MUL( in22, 1 ); \
2883 773412 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
2884 773412 : in23 = GF_MUL( in23, 1 ); \
2885 773412 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
2886 773412 : in24 = GF_MUL( in24, 1 ); \
2887 773412 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
2888 773412 : in25 = GF_MUL( in25, 1 ); \
2889 773412 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
2890 773412 : in26 = GF_MUL( in26, 1 ); \
2891 773412 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
2892 773412 : in27 = GF_MUL( in27, 1 ); \
2893 773412 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
2894 773412 : in28 = GF_MUL( in28, 1 ); \
2895 773412 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
2896 773412 : in29 = GF_MUL( in29, 1 ); \
2897 773412 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
2898 773412 : in30 = GF_MUL( in30, 1 ); \
2899 773412 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
2900 773412 : in31 = GF_MUL( in31, 1 ); \
2901 773412 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
2902 773412 : } while( 0 )
2903 :
2904 : void fd_reedsol_ppt_64_35( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
2905 : #define FD_REEDSOL_PPT_IMPL_64_35( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
2906 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
2907 773838 : do { \
2908 773838 : gf_t scratch_10, scratch_16, scratch_17, scratch_18, scratch_3, scratch_35, scratch_36, scratch_37, scratch_38, scratch_39, scratch_4, scratch_40, scratch_41, scratch_42, scratch_43, scratch_44; \
2909 773838 : gf_t scratch_45, scratch_46, scratch_47, scratch_48, scratch_49, scratch_5, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59; \
2910 773838 : gf_t scratch_6, scratch_60, scratch_61, scratch_62, scratch_63, scratch_8, scratch_9; \
2911 773838 : scratch_35 = in35; \
2912 773838 : in35 = GF_MUL( in35, 1 ); \
2913 773838 : scratch_36 = in36; \
2914 773838 : in36 = GF_MUL( in36, 1 ); \
2915 773838 : scratch_37 = in37; \
2916 773838 : in37 = GF_MUL( in37, 1 ); \
2917 773838 : scratch_38 = in38; \
2918 773838 : in38 = GF_MUL( in38, 1 ); \
2919 773838 : scratch_39 = in39; \
2920 773838 : in39 = GF_MUL( in39, 1 ); \
2921 773838 : scratch_40 = in40; \
2922 773838 : in40 = GF_MUL( in40, 1 ); \
2923 773838 : scratch_41 = in41; \
2924 773838 : in41 = GF_MUL( in41, 1 ); \
2925 773838 : scratch_42 = in42; \
2926 773838 : in42 = GF_MUL( in42, 1 ); \
2927 773838 : scratch_43 = in43; \
2928 773838 : in43 = GF_MUL( in43, 1 ); \
2929 773838 : scratch_44 = in44; \
2930 773838 : in44 = GF_MUL( in44, 1 ); \
2931 773838 : scratch_45 = in45; \
2932 773838 : in45 = GF_MUL( in45, 1 ); \
2933 773838 : scratch_46 = in46; \
2934 773838 : in46 = GF_MUL( in46, 1 ); \
2935 773838 : scratch_47 = in47; \
2936 773838 : in47 = GF_MUL( in47, 1 ); \
2937 773838 : scratch_48 = in48; \
2938 773838 : in48 = GF_MUL( in48, 1 ); \
2939 773838 : scratch_49 = in49; \
2940 773838 : in49 = GF_MUL( in49, 1 ); \
2941 773838 : scratch_50 = in50; \
2942 773838 : in50 = GF_MUL( in50, 1 ); \
2943 773838 : scratch_51 = in51; \
2944 773838 : in51 = GF_MUL( in51, 1 ); \
2945 773838 : scratch_52 = in52; \
2946 773838 : in52 = GF_MUL( in52, 1 ); \
2947 773838 : scratch_53 = in53; \
2948 773838 : in53 = GF_MUL( in53, 1 ); \
2949 773838 : scratch_54 = in54; \
2950 773838 : in54 = GF_MUL( in54, 1 ); \
2951 773838 : scratch_55 = in55; \
2952 773838 : in55 = GF_MUL( in55, 1 ); \
2953 773838 : scratch_56 = in56; \
2954 773838 : in56 = GF_MUL( in56, 1 ); \
2955 773838 : scratch_57 = in57; \
2956 773838 : in57 = GF_MUL( in57, 1 ); \
2957 773838 : scratch_58 = in58; \
2958 773838 : in58 = GF_MUL( in58, 1 ); \
2959 773838 : scratch_59 = in59; \
2960 773838 : in59 = GF_MUL( in59, 1 ); \
2961 773838 : scratch_60 = in60; \
2962 773838 : in60 = GF_MUL( in60, 1 ); \
2963 773838 : scratch_61 = in61; \
2964 773838 : in61 = GF_MUL( in61, 1 ); \
2965 773838 : scratch_62 = in62; \
2966 773838 : in62 = GF_MUL( in62, 1 ); \
2967 773838 : scratch_63 = in63; \
2968 773838 : in63 = GF_MUL( in63, 1 ); \
2969 773838 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
2970 773838 : in35 = GF_ADD( GF_MUL( in03, 1 ), in35 ); \
2971 773838 : in36 = GF_ADD( GF_MUL( in04, 1 ), in36 ); \
2972 773838 : in37 = GF_ADD( GF_MUL( in05, 1 ), in37 ); \
2973 773838 : in38 = GF_ADD( GF_MUL( in06, 1 ), in38 ); \
2974 773838 : in39 = GF_ADD( GF_MUL( in07, 1 ), in39 ); \
2975 773838 : in40 = GF_ADD( GF_MUL( in08, 1 ), in40 ); \
2976 773838 : in41 = GF_ADD( GF_MUL( in09, 1 ), in41 ); \
2977 773838 : in42 = GF_ADD( GF_MUL( in10, 1 ), in42 ); \
2978 773838 : in43 = GF_ADD( GF_MUL( in11, 1 ), in43 ); \
2979 773838 : in44 = GF_ADD( GF_MUL( in12, 1 ), in44 ); \
2980 773838 : in45 = GF_ADD( GF_MUL( in13, 1 ), in45 ); \
2981 773838 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
2982 773838 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
2983 773838 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
2984 773838 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
2985 773838 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
2986 773838 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
2987 773838 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
2988 773838 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
2989 773838 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
2990 773838 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
2991 773838 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
2992 773838 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
2993 773838 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
2994 773838 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
2995 773838 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
2996 773838 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
2997 773838 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
2998 773838 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
2999 773838 : scratch_16 = in48; \
3000 773838 : in48 = GF_MUL( in48, 1 ); \
3001 773838 : scratch_17 = in49; \
3002 773838 : in49 = GF_MUL( in49, 1 ); \
3003 773838 : scratch_18 = in50; \
3004 773838 : in50 = GF_MUL( in50, 1 ); \
3005 773838 : GF_MUL22( in35, in51, 1, 71, 1, 70 ); \
3006 773838 : GF_MUL22( in36, in52, 1, 71, 1, 70 ); \
3007 773838 : GF_MUL22( in37, in53, 1, 71, 1, 70 ); \
3008 773838 : GF_MUL22( in38, in54, 1, 71, 1, 70 ); \
3009 773838 : GF_MUL22( in39, in55, 1, 71, 1, 70 ); \
3010 773838 : GF_MUL22( in40, in56, 1, 71, 1, 70 ); \
3011 773838 : GF_MUL22( in41, in57, 1, 71, 1, 70 ); \
3012 773838 : GF_MUL22( in42, in58, 1, 71, 1, 70 ); \
3013 773838 : GF_MUL22( in43, in59, 1, 71, 1, 70 ); \
3014 773838 : GF_MUL22( in44, in60, 1, 71, 1, 70 ); \
3015 773838 : GF_MUL22( in45, in61, 1, 71, 1, 70 ); \
3016 773838 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
3017 773838 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
3018 773838 : scratch_8 = in40; \
3019 773838 : in40 = GF_MUL( in40, 1 ); \
3020 773838 : scratch_9 = in41; \
3021 773838 : in41 = GF_MUL( in41, 1 ); \
3022 773838 : scratch_10 = in42; \
3023 773838 : in42 = GF_MUL( in42, 1 ); \
3024 773838 : GF_MUL22( in35, in43, 1, 174, 1, 175 ); \
3025 773838 : GF_MUL22( in36, in44, 1, 174, 1, 175 ); \
3026 773838 : GF_MUL22( in37, in45, 1, 174, 1, 175 ); \
3027 773838 : GF_MUL22( in38, in46, 1, 174, 1, 175 ); \
3028 773838 : GF_MUL22( in39, in47, 1, 174, 1, 175 ); \
3029 773838 : scratch_4 = in36; \
3030 773838 : in36 = GF_MUL( in36, 1 ); \
3031 773838 : scratch_5 = in37; \
3032 773838 : in37 = GF_MUL( in37, 1 ); \
3033 773838 : scratch_6 = in38; \
3034 773838 : in38 = GF_MUL( in38, 1 ); \
3035 773838 : GF_MUL22( in35, in39, 1, 38, 1, 39 ); \
3036 773838 : scratch_3 = in35; \
3037 773838 : in35 = GF_MUL( in35, 1 ); \
3038 773838 : GF_MUL22( in32, in33, 33, 32, 1, 1 ); \
3039 773838 : in35 = GF_ADD( GF_MUL( in33, 1 ), in35 ); \
3040 773838 : GF_MUL22( in34, in35, 1, 34, 1, 1 ); \
3041 773838 : GF_MUL22( in32, in34, 236, 237, 1, 1 ); \
3042 773838 : in33 = GF_MUL( in33, 1 ); \
3043 773838 : in33 = GF_ADD( GF_MUL( scratch_3, 237 ), in33 ); \
3044 773838 : in36 = GF_ADD( GF_MUL( in32, 1 ), in36 ); \
3045 773838 : in37 = GF_ADD( GF_MUL( in33, 1 ), in37 ); \
3046 773838 : in38 = GF_ADD( GF_MUL( in34, 1 ), in38 ); \
3047 773838 : FD_REEDSOL_GENERATE_FFT( 4, 36, in36, in37, in38, in39 ); \
3048 773838 : in32 = GF_MUL( in32, 1 ); \
3049 773838 : in32 = GF_ADD( GF_MUL( scratch_4, 38 ), in32 ); \
3050 773838 : in33 = GF_MUL( in33, 1 ); \
3051 773838 : in33 = GF_ADD( GF_MUL( scratch_5, 38 ), in33 ); \
3052 773838 : in34 = GF_MUL( in34, 1 ); \
3053 773838 : in34 = GF_ADD( GF_MUL( scratch_6, 38 ), in34 ); \
3054 773838 : in40 = GF_ADD( GF_MUL( in32, 1 ), in40 ); \
3055 773838 : in41 = GF_ADD( GF_MUL( in33, 1 ), in41 ); \
3056 773838 : in42 = GF_ADD( GF_MUL( in34, 1 ), in42 ); \
3057 773838 : FD_REEDSOL_GENERATE_FFT( 8, 40, in40, in41, in42, in43, in44, in45, in46, in47 ); \
3058 773838 : in32 = GF_MUL( in32, 1 ); \
3059 773838 : in32 = GF_ADD( GF_MUL( scratch_8, 174 ), in32 ); \
3060 773838 : in33 = GF_MUL( in33, 1 ); \
3061 773838 : in33 = GF_ADD( GF_MUL( scratch_9, 174 ), in33 ); \
3062 773838 : in34 = GF_MUL( in34, 1 ); \
3063 773838 : in34 = GF_ADD( GF_MUL( scratch_10, 174 ), in34 ); \
3064 773838 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
3065 773838 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
3066 773838 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
3067 773838 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
3068 773838 : in32 = GF_MUL( in32, 1 ); \
3069 773838 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
3070 773838 : in33 = GF_MUL( in33, 1 ); \
3071 773838 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
3072 773838 : in34 = GF_MUL( in34, 1 ); \
3073 773838 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
3074 773838 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
3075 773838 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
3076 773838 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
3077 773838 : in03 = GF_MUL( in03, 1 ); \
3078 773838 : in03 = GF_ADD( GF_MUL( scratch_35, 0 ), in03 ); \
3079 773838 : in04 = GF_MUL( in04, 1 ); \
3080 773838 : in04 = GF_ADD( GF_MUL( scratch_36, 0 ), in04 ); \
3081 773838 : in05 = GF_MUL( in05, 1 ); \
3082 773838 : in05 = GF_ADD( GF_MUL( scratch_37, 0 ), in05 ); \
3083 773838 : in06 = GF_MUL( in06, 1 ); \
3084 773838 : in06 = GF_ADD( GF_MUL( scratch_38, 0 ), in06 ); \
3085 773838 : in07 = GF_MUL( in07, 1 ); \
3086 773838 : in07 = GF_ADD( GF_MUL( scratch_39, 0 ), in07 ); \
3087 773838 : in08 = GF_MUL( in08, 1 ); \
3088 773838 : in08 = GF_ADD( GF_MUL( scratch_40, 0 ), in08 ); \
3089 773838 : in09 = GF_MUL( in09, 1 ); \
3090 773838 : in09 = GF_ADD( GF_MUL( scratch_41, 0 ), in09 ); \
3091 773838 : in10 = GF_MUL( in10, 1 ); \
3092 773838 : in10 = GF_ADD( GF_MUL( scratch_42, 0 ), in10 ); \
3093 773838 : in11 = GF_MUL( in11, 1 ); \
3094 773838 : in11 = GF_ADD( GF_MUL( scratch_43, 0 ), in11 ); \
3095 773838 : in12 = GF_MUL( in12, 1 ); \
3096 773838 : in12 = GF_ADD( GF_MUL( scratch_44, 0 ), in12 ); \
3097 773838 : in13 = GF_MUL( in13, 1 ); \
3098 773838 : in13 = GF_ADD( GF_MUL( scratch_45, 0 ), in13 ); \
3099 773838 : in14 = GF_MUL( in14, 1 ); \
3100 773838 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
3101 773838 : in15 = GF_MUL( in15, 1 ); \
3102 773838 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
3103 773838 : in16 = GF_MUL( in16, 1 ); \
3104 773838 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
3105 773838 : in17 = GF_MUL( in17, 1 ); \
3106 773838 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
3107 773838 : in18 = GF_MUL( in18, 1 ); \
3108 773838 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
3109 773838 : in19 = GF_MUL( in19, 1 ); \
3110 773838 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
3111 773838 : in20 = GF_MUL( in20, 1 ); \
3112 773838 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
3113 773838 : in21 = GF_MUL( in21, 1 ); \
3114 773838 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
3115 773838 : in22 = GF_MUL( in22, 1 ); \
3116 773838 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
3117 773838 : in23 = GF_MUL( in23, 1 ); \
3118 773838 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
3119 773838 : in24 = GF_MUL( in24, 1 ); \
3120 773838 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
3121 773838 : in25 = GF_MUL( in25, 1 ); \
3122 773838 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
3123 773838 : in26 = GF_MUL( in26, 1 ); \
3124 773838 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
3125 773838 : in27 = GF_MUL( in27, 1 ); \
3126 773838 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
3127 773838 : in28 = GF_MUL( in28, 1 ); \
3128 773838 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
3129 773838 : in29 = GF_MUL( in29, 1 ); \
3130 773838 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
3131 773838 : in30 = GF_MUL( in30, 1 ); \
3132 773838 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
3133 773838 : in31 = GF_MUL( in31, 1 ); \
3134 773838 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
3135 773838 : } while( 0 )
3136 :
3137 : void fd_reedsol_ppt_64_36( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
3138 : #define FD_REEDSOL_PPT_IMPL_64_36( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
3139 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
3140 773316 : do { \
3141 773316 : gf_t scratch_10, scratch_11, scratch_16, scratch_17, scratch_18, scratch_19, scratch_36, scratch_37, scratch_38, scratch_39, scratch_4, scratch_40, scratch_41, scratch_42, scratch_43, scratch_44; \
3142 773316 : gf_t scratch_45, scratch_46, scratch_47, scratch_48, scratch_49, scratch_5, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59; \
3143 773316 : gf_t scratch_6, scratch_60, scratch_61, scratch_62, scratch_63, scratch_7, scratch_8, scratch_9; \
3144 773316 : scratch_36 = in36; \
3145 773316 : in36 = GF_MUL( in36, 1 ); \
3146 773316 : scratch_37 = in37; \
3147 773316 : in37 = GF_MUL( in37, 1 ); \
3148 773316 : scratch_38 = in38; \
3149 773316 : in38 = GF_MUL( in38, 1 ); \
3150 773316 : scratch_39 = in39; \
3151 773316 : in39 = GF_MUL( in39, 1 ); \
3152 773316 : scratch_40 = in40; \
3153 773316 : in40 = GF_MUL( in40, 1 ); \
3154 773316 : scratch_41 = in41; \
3155 773316 : in41 = GF_MUL( in41, 1 ); \
3156 773316 : scratch_42 = in42; \
3157 773316 : in42 = GF_MUL( in42, 1 ); \
3158 773316 : scratch_43 = in43; \
3159 773316 : in43 = GF_MUL( in43, 1 ); \
3160 773316 : scratch_44 = in44; \
3161 773316 : in44 = GF_MUL( in44, 1 ); \
3162 773316 : scratch_45 = in45; \
3163 773316 : in45 = GF_MUL( in45, 1 ); \
3164 773316 : scratch_46 = in46; \
3165 773316 : in46 = GF_MUL( in46, 1 ); \
3166 773316 : scratch_47 = in47; \
3167 773316 : in47 = GF_MUL( in47, 1 ); \
3168 773316 : scratch_48 = in48; \
3169 773316 : in48 = GF_MUL( in48, 1 ); \
3170 773316 : scratch_49 = in49; \
3171 773316 : in49 = GF_MUL( in49, 1 ); \
3172 773316 : scratch_50 = in50; \
3173 773316 : in50 = GF_MUL( in50, 1 ); \
3174 773316 : scratch_51 = in51; \
3175 773316 : in51 = GF_MUL( in51, 1 ); \
3176 773316 : scratch_52 = in52; \
3177 773316 : in52 = GF_MUL( in52, 1 ); \
3178 773316 : scratch_53 = in53; \
3179 773316 : in53 = GF_MUL( in53, 1 ); \
3180 773316 : scratch_54 = in54; \
3181 773316 : in54 = GF_MUL( in54, 1 ); \
3182 773316 : scratch_55 = in55; \
3183 773316 : in55 = GF_MUL( in55, 1 ); \
3184 773316 : scratch_56 = in56; \
3185 773316 : in56 = GF_MUL( in56, 1 ); \
3186 773316 : scratch_57 = in57; \
3187 773316 : in57 = GF_MUL( in57, 1 ); \
3188 773316 : scratch_58 = in58; \
3189 773316 : in58 = GF_MUL( in58, 1 ); \
3190 773316 : scratch_59 = in59; \
3191 773316 : in59 = GF_MUL( in59, 1 ); \
3192 773316 : scratch_60 = in60; \
3193 773316 : in60 = GF_MUL( in60, 1 ); \
3194 773316 : scratch_61 = in61; \
3195 773316 : in61 = GF_MUL( in61, 1 ); \
3196 773316 : scratch_62 = in62; \
3197 773316 : in62 = GF_MUL( in62, 1 ); \
3198 773316 : scratch_63 = in63; \
3199 773316 : in63 = GF_MUL( in63, 1 ); \
3200 773316 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
3201 773316 : in36 = GF_ADD( GF_MUL( in04, 1 ), in36 ); \
3202 773316 : in37 = GF_ADD( GF_MUL( in05, 1 ), in37 ); \
3203 773316 : in38 = GF_ADD( GF_MUL( in06, 1 ), in38 ); \
3204 773316 : in39 = GF_ADD( GF_MUL( in07, 1 ), in39 ); \
3205 773316 : in40 = GF_ADD( GF_MUL( in08, 1 ), in40 ); \
3206 773316 : in41 = GF_ADD( GF_MUL( in09, 1 ), in41 ); \
3207 773316 : in42 = GF_ADD( GF_MUL( in10, 1 ), in42 ); \
3208 773316 : in43 = GF_ADD( GF_MUL( in11, 1 ), in43 ); \
3209 773316 : in44 = GF_ADD( GF_MUL( in12, 1 ), in44 ); \
3210 773316 : in45 = GF_ADD( GF_MUL( in13, 1 ), in45 ); \
3211 773316 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
3212 773316 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
3213 773316 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
3214 773316 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
3215 773316 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
3216 773316 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
3217 773316 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
3218 773316 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
3219 773316 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
3220 773316 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
3221 773316 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
3222 773316 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
3223 773316 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
3224 773316 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
3225 773316 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
3226 773316 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
3227 773316 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
3228 773316 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
3229 773316 : scratch_16 = in48; \
3230 773316 : in48 = GF_MUL( in48, 1 ); \
3231 773316 : scratch_17 = in49; \
3232 773316 : in49 = GF_MUL( in49, 1 ); \
3233 773316 : scratch_18 = in50; \
3234 773316 : in50 = GF_MUL( in50, 1 ); \
3235 773316 : scratch_19 = in51; \
3236 773316 : in51 = GF_MUL( in51, 1 ); \
3237 773316 : GF_MUL22( in36, in52, 1, 71, 1, 70 ); \
3238 773316 : GF_MUL22( in37, in53, 1, 71, 1, 70 ); \
3239 773316 : GF_MUL22( in38, in54, 1, 71, 1, 70 ); \
3240 773316 : GF_MUL22( in39, in55, 1, 71, 1, 70 ); \
3241 773316 : GF_MUL22( in40, in56, 1, 71, 1, 70 ); \
3242 773316 : GF_MUL22( in41, in57, 1, 71, 1, 70 ); \
3243 773316 : GF_MUL22( in42, in58, 1, 71, 1, 70 ); \
3244 773316 : GF_MUL22( in43, in59, 1, 71, 1, 70 ); \
3245 773316 : GF_MUL22( in44, in60, 1, 71, 1, 70 ); \
3246 773316 : GF_MUL22( in45, in61, 1, 71, 1, 70 ); \
3247 773316 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
3248 773316 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
3249 773316 : scratch_8 = in40; \
3250 773316 : in40 = GF_MUL( in40, 1 ); \
3251 773316 : scratch_9 = in41; \
3252 773316 : in41 = GF_MUL( in41, 1 ); \
3253 773316 : scratch_10 = in42; \
3254 773316 : in42 = GF_MUL( in42, 1 ); \
3255 773316 : scratch_11 = in43; \
3256 773316 : in43 = GF_MUL( in43, 1 ); \
3257 773316 : GF_MUL22( in36, in44, 1, 174, 1, 175 ); \
3258 773316 : GF_MUL22( in37, in45, 1, 174, 1, 175 ); \
3259 773316 : GF_MUL22( in38, in46, 1, 174, 1, 175 ); \
3260 773316 : GF_MUL22( in39, in47, 1, 174, 1, 175 ); \
3261 773316 : scratch_4 = in36; \
3262 773316 : in36 = GF_MUL( in36, 1 ); \
3263 773316 : scratch_5 = in37; \
3264 773316 : in37 = GF_MUL( in37, 1 ); \
3265 773316 : scratch_6 = in38; \
3266 773316 : in38 = GF_MUL( in38, 1 ); \
3267 773316 : scratch_7 = in39; \
3268 773316 : in39 = GF_MUL( in39, 1 ); \
3269 773316 : FD_REEDSOL_GENERATE_IFFT( 4, 32, in32, in33, in34, in35 ); \
3270 773316 : in36 = GF_ADD( GF_MUL( in32, 1 ), in36 ); \
3271 773316 : in37 = GF_ADD( GF_MUL( in33, 1 ), in37 ); \
3272 773316 : in38 = GF_ADD( GF_MUL( in34, 1 ), in38 ); \
3273 773316 : in39 = GF_ADD( GF_MUL( in35, 1 ), in39 ); \
3274 773316 : FD_REEDSOL_GENERATE_FFT( 4, 36, in36, in37, in38, in39 ); \
3275 773316 : in32 = GF_MUL( in32, 1 ); \
3276 773316 : in32 = GF_ADD( GF_MUL( scratch_4, 38 ), in32 ); \
3277 773316 : in33 = GF_MUL( in33, 1 ); \
3278 773316 : in33 = GF_ADD( GF_MUL( scratch_5, 38 ), in33 ); \
3279 773316 : in34 = GF_MUL( in34, 1 ); \
3280 773316 : in34 = GF_ADD( GF_MUL( scratch_6, 38 ), in34 ); \
3281 773316 : in35 = GF_MUL( in35, 1 ); \
3282 773316 : in35 = GF_ADD( GF_MUL( scratch_7, 38 ), in35 ); \
3283 773316 : in40 = GF_ADD( GF_MUL( in32, 1 ), in40 ); \
3284 773316 : in41 = GF_ADD( GF_MUL( in33, 1 ), in41 ); \
3285 773316 : in42 = GF_ADD( GF_MUL( in34, 1 ), in42 ); \
3286 773316 : in43 = GF_ADD( GF_MUL( in35, 1 ), in43 ); \
3287 773316 : FD_REEDSOL_GENERATE_FFT( 8, 40, in40, in41, in42, in43, in44, in45, in46, in47 ); \
3288 773316 : in32 = GF_MUL( in32, 1 ); \
3289 773316 : in32 = GF_ADD( GF_MUL( scratch_8, 174 ), in32 ); \
3290 773316 : in33 = GF_MUL( in33, 1 ); \
3291 773316 : in33 = GF_ADD( GF_MUL( scratch_9, 174 ), in33 ); \
3292 773316 : in34 = GF_MUL( in34, 1 ); \
3293 773316 : in34 = GF_ADD( GF_MUL( scratch_10, 174 ), in34 ); \
3294 773316 : in35 = GF_MUL( in35, 1 ); \
3295 773316 : in35 = GF_ADD( GF_MUL( scratch_11, 174 ), in35 ); \
3296 773316 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
3297 773316 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
3298 773316 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
3299 773316 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
3300 773316 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
3301 773316 : in32 = GF_MUL( in32, 1 ); \
3302 773316 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
3303 773316 : in33 = GF_MUL( in33, 1 ); \
3304 773316 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
3305 773316 : in34 = GF_MUL( in34, 1 ); \
3306 773316 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
3307 773316 : in35 = GF_MUL( in35, 1 ); \
3308 773316 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
3309 773316 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
3310 773316 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
3311 773316 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
3312 773316 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
3313 773316 : in04 = GF_MUL( in04, 1 ); \
3314 773316 : in04 = GF_ADD( GF_MUL( scratch_36, 0 ), in04 ); \
3315 773316 : in05 = GF_MUL( in05, 1 ); \
3316 773316 : in05 = GF_ADD( GF_MUL( scratch_37, 0 ), in05 ); \
3317 773316 : in06 = GF_MUL( in06, 1 ); \
3318 773316 : in06 = GF_ADD( GF_MUL( scratch_38, 0 ), in06 ); \
3319 773316 : in07 = GF_MUL( in07, 1 ); \
3320 773316 : in07 = GF_ADD( GF_MUL( scratch_39, 0 ), in07 ); \
3321 773316 : in08 = GF_MUL( in08, 1 ); \
3322 773316 : in08 = GF_ADD( GF_MUL( scratch_40, 0 ), in08 ); \
3323 773316 : in09 = GF_MUL( in09, 1 ); \
3324 773316 : in09 = GF_ADD( GF_MUL( scratch_41, 0 ), in09 ); \
3325 773316 : in10 = GF_MUL( in10, 1 ); \
3326 773316 : in10 = GF_ADD( GF_MUL( scratch_42, 0 ), in10 ); \
3327 773316 : in11 = GF_MUL( in11, 1 ); \
3328 773316 : in11 = GF_ADD( GF_MUL( scratch_43, 0 ), in11 ); \
3329 773316 : in12 = GF_MUL( in12, 1 ); \
3330 773316 : in12 = GF_ADD( GF_MUL( scratch_44, 0 ), in12 ); \
3331 773316 : in13 = GF_MUL( in13, 1 ); \
3332 773316 : in13 = GF_ADD( GF_MUL( scratch_45, 0 ), in13 ); \
3333 773316 : in14 = GF_MUL( in14, 1 ); \
3334 773316 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
3335 773316 : in15 = GF_MUL( in15, 1 ); \
3336 773316 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
3337 773316 : in16 = GF_MUL( in16, 1 ); \
3338 773316 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
3339 773316 : in17 = GF_MUL( in17, 1 ); \
3340 773316 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
3341 773316 : in18 = GF_MUL( in18, 1 ); \
3342 773316 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
3343 773316 : in19 = GF_MUL( in19, 1 ); \
3344 773316 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
3345 773316 : in20 = GF_MUL( in20, 1 ); \
3346 773316 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
3347 773316 : in21 = GF_MUL( in21, 1 ); \
3348 773316 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
3349 773316 : in22 = GF_MUL( in22, 1 ); \
3350 773316 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
3351 773316 : in23 = GF_MUL( in23, 1 ); \
3352 773316 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
3353 773316 : in24 = GF_MUL( in24, 1 ); \
3354 773316 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
3355 773316 : in25 = GF_MUL( in25, 1 ); \
3356 773316 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
3357 773316 : in26 = GF_MUL( in26, 1 ); \
3358 773316 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
3359 773316 : in27 = GF_MUL( in27, 1 ); \
3360 773316 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
3361 773316 : in28 = GF_MUL( in28, 1 ); \
3362 773316 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
3363 773316 : in29 = GF_MUL( in29, 1 ); \
3364 773316 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
3365 773316 : in30 = GF_MUL( in30, 1 ); \
3366 773316 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
3367 773316 : in31 = GF_MUL( in31, 1 ); \
3368 773316 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
3369 773316 : } while( 0 )
3370 :
3371 : void fd_reedsol_ppt_64_37( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
3372 : #define FD_REEDSOL_PPT_IMPL_64_37( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
3373 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
3374 773508 : do { \
3375 773508 : gf_t scratch_10, scratch_11, scratch_12, scratch_16, scratch_17, scratch_18, scratch_19, scratch_2, scratch_20, scratch_37, scratch_38, scratch_39, scratch_40, scratch_41, scratch_42, scratch_43; \
3376 773508 : gf_t scratch_44, scratch_45, scratch_46, scratch_47, scratch_48, scratch_49, scratch_5, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58; \
3377 773508 : gf_t scratch_59, scratch_6, scratch_60, scratch_61, scratch_62, scratch_63, scratch_7, scratch_8, scratch_9; \
3378 773508 : scratch_37 = in37; \
3379 773508 : in37 = GF_MUL( in37, 1 ); \
3380 773508 : scratch_38 = in38; \
3381 773508 : in38 = GF_MUL( in38, 1 ); \
3382 773508 : scratch_39 = in39; \
3383 773508 : in39 = GF_MUL( in39, 1 ); \
3384 773508 : scratch_40 = in40; \
3385 773508 : in40 = GF_MUL( in40, 1 ); \
3386 773508 : scratch_41 = in41; \
3387 773508 : in41 = GF_MUL( in41, 1 ); \
3388 773508 : scratch_42 = in42; \
3389 773508 : in42 = GF_MUL( in42, 1 ); \
3390 773508 : scratch_43 = in43; \
3391 773508 : in43 = GF_MUL( in43, 1 ); \
3392 773508 : scratch_44 = in44; \
3393 773508 : in44 = GF_MUL( in44, 1 ); \
3394 773508 : scratch_45 = in45; \
3395 773508 : in45 = GF_MUL( in45, 1 ); \
3396 773508 : scratch_46 = in46; \
3397 773508 : in46 = GF_MUL( in46, 1 ); \
3398 773508 : scratch_47 = in47; \
3399 773508 : in47 = GF_MUL( in47, 1 ); \
3400 773508 : scratch_48 = in48; \
3401 773508 : in48 = GF_MUL( in48, 1 ); \
3402 773508 : scratch_49 = in49; \
3403 773508 : in49 = GF_MUL( in49, 1 ); \
3404 773508 : scratch_50 = in50; \
3405 773508 : in50 = GF_MUL( in50, 1 ); \
3406 773508 : scratch_51 = in51; \
3407 773508 : in51 = GF_MUL( in51, 1 ); \
3408 773508 : scratch_52 = in52; \
3409 773508 : in52 = GF_MUL( in52, 1 ); \
3410 773508 : scratch_53 = in53; \
3411 773508 : in53 = GF_MUL( in53, 1 ); \
3412 773508 : scratch_54 = in54; \
3413 773508 : in54 = GF_MUL( in54, 1 ); \
3414 773508 : scratch_55 = in55; \
3415 773508 : in55 = GF_MUL( in55, 1 ); \
3416 773508 : scratch_56 = in56; \
3417 773508 : in56 = GF_MUL( in56, 1 ); \
3418 773508 : scratch_57 = in57; \
3419 773508 : in57 = GF_MUL( in57, 1 ); \
3420 773508 : scratch_58 = in58; \
3421 773508 : in58 = GF_MUL( in58, 1 ); \
3422 773508 : scratch_59 = in59; \
3423 773508 : in59 = GF_MUL( in59, 1 ); \
3424 773508 : scratch_60 = in60; \
3425 773508 : in60 = GF_MUL( in60, 1 ); \
3426 773508 : scratch_61 = in61; \
3427 773508 : in61 = GF_MUL( in61, 1 ); \
3428 773508 : scratch_62 = in62; \
3429 773508 : in62 = GF_MUL( in62, 1 ); \
3430 773508 : scratch_63 = in63; \
3431 773508 : in63 = GF_MUL( in63, 1 ); \
3432 773508 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
3433 773508 : in37 = GF_ADD( GF_MUL( in05, 1 ), in37 ); \
3434 773508 : in38 = GF_ADD( GF_MUL( in06, 1 ), in38 ); \
3435 773508 : in39 = GF_ADD( GF_MUL( in07, 1 ), in39 ); \
3436 773508 : in40 = GF_ADD( GF_MUL( in08, 1 ), in40 ); \
3437 773508 : in41 = GF_ADD( GF_MUL( in09, 1 ), in41 ); \
3438 773508 : in42 = GF_ADD( GF_MUL( in10, 1 ), in42 ); \
3439 773508 : in43 = GF_ADD( GF_MUL( in11, 1 ), in43 ); \
3440 773508 : in44 = GF_ADD( GF_MUL( in12, 1 ), in44 ); \
3441 773508 : in45 = GF_ADD( GF_MUL( in13, 1 ), in45 ); \
3442 773508 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
3443 773508 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
3444 773508 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
3445 773508 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
3446 773508 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
3447 773508 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
3448 773508 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
3449 773508 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
3450 773508 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
3451 773508 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
3452 773508 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
3453 773508 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
3454 773508 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
3455 773508 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
3456 773508 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
3457 773508 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
3458 773508 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
3459 773508 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
3460 773508 : scratch_16 = in48; \
3461 773508 : in48 = GF_MUL( in48, 1 ); \
3462 773508 : scratch_17 = in49; \
3463 773508 : in49 = GF_MUL( in49, 1 ); \
3464 773508 : scratch_18 = in50; \
3465 773508 : in50 = GF_MUL( in50, 1 ); \
3466 773508 : scratch_19 = in51; \
3467 773508 : in51 = GF_MUL( in51, 1 ); \
3468 773508 : scratch_20 = in52; \
3469 773508 : in52 = GF_MUL( in52, 1 ); \
3470 773508 : GF_MUL22( in37, in53, 1, 71, 1, 70 ); \
3471 773508 : GF_MUL22( in38, in54, 1, 71, 1, 70 ); \
3472 773508 : GF_MUL22( in39, in55, 1, 71, 1, 70 ); \
3473 773508 : GF_MUL22( in40, in56, 1, 71, 1, 70 ); \
3474 773508 : GF_MUL22( in41, in57, 1, 71, 1, 70 ); \
3475 773508 : GF_MUL22( in42, in58, 1, 71, 1, 70 ); \
3476 773508 : GF_MUL22( in43, in59, 1, 71, 1, 70 ); \
3477 773508 : GF_MUL22( in44, in60, 1, 71, 1, 70 ); \
3478 773508 : GF_MUL22( in45, in61, 1, 71, 1, 70 ); \
3479 773508 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
3480 773508 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
3481 773508 : scratch_8 = in40; \
3482 773508 : in40 = GF_MUL( in40, 1 ); \
3483 773508 : scratch_9 = in41; \
3484 773508 : in41 = GF_MUL( in41, 1 ); \
3485 773508 : scratch_10 = in42; \
3486 773508 : in42 = GF_MUL( in42, 1 ); \
3487 773508 : scratch_11 = in43; \
3488 773508 : in43 = GF_MUL( in43, 1 ); \
3489 773508 : scratch_12 = in44; \
3490 773508 : in44 = GF_MUL( in44, 1 ); \
3491 773508 : GF_MUL22( in37, in45, 1, 174, 1, 175 ); \
3492 773508 : GF_MUL22( in38, in46, 1, 174, 1, 175 ); \
3493 773508 : GF_MUL22( in39, in47, 1, 174, 1, 175 ); \
3494 773508 : scratch_5 = in37; \
3495 773508 : in37 = GF_MUL( in37, 1 ); \
3496 773508 : scratch_6 = in38; \
3497 773508 : in38 = GF_MUL( in38, 1 ); \
3498 773508 : scratch_7 = in39; \
3499 773508 : in39 = GF_MUL( in39, 1 ); \
3500 773508 : FD_REEDSOL_GENERATE_IFFT( 4, 32, in32, in33, in34, in35 ); \
3501 773508 : in37 = GF_ADD( GF_MUL( in33, 1 ), in37 ); \
3502 773508 : in38 = GF_ADD( GF_MUL( in34, 1 ), in38 ); \
3503 773508 : in39 = GF_ADD( GF_MUL( in35, 1 ), in39 ); \
3504 773508 : scratch_2 = in38; \
3505 773508 : in38 = GF_MUL( in38, 1 ); \
3506 773508 : GF_MUL22( in37, in39, 1, 235, 1, 234 ); \
3507 773508 : GF_MUL22( in36, in37, 1, 36, 1, 1 ); \
3508 773508 : in38 = GF_ADD( GF_MUL( in36, 1 ), in38 ); \
3509 773508 : GF_MUL22( in38, in39, 1, 38, 1, 39 ); \
3510 773508 : in36 = GF_MUL( in36, 1 ); \
3511 773508 : in36 = GF_ADD( GF_MUL( scratch_2, 235 ), in36 ); \
3512 773508 : GF_MUL22( in32, in36, 39, 38, 1, 1 ); \
3513 773508 : in33 = GF_MUL( in33, 1 ); \
3514 773508 : in33 = GF_ADD( GF_MUL( scratch_5, 38 ), in33 ); \
3515 773508 : in34 = GF_MUL( in34, 1 ); \
3516 773508 : in34 = GF_ADD( GF_MUL( scratch_6, 38 ), in34 ); \
3517 773508 : in35 = GF_MUL( in35, 1 ); \
3518 773508 : in35 = GF_ADD( GF_MUL( scratch_7, 38 ), in35 ); \
3519 773508 : in40 = GF_ADD( GF_MUL( in32, 1 ), in40 ); \
3520 773508 : in41 = GF_ADD( GF_MUL( in33, 1 ), in41 ); \
3521 773508 : in42 = GF_ADD( GF_MUL( in34, 1 ), in42 ); \
3522 773508 : in43 = GF_ADD( GF_MUL( in35, 1 ), in43 ); \
3523 773508 : in44 = GF_ADD( GF_MUL( in36, 1 ), in44 ); \
3524 773508 : FD_REEDSOL_GENERATE_FFT( 8, 40, in40, in41, in42, in43, in44, in45, in46, in47 ); \
3525 773508 : in32 = GF_MUL( in32, 1 ); \
3526 773508 : in32 = GF_ADD( GF_MUL( scratch_8, 174 ), in32 ); \
3527 773508 : in33 = GF_MUL( in33, 1 ); \
3528 773508 : in33 = GF_ADD( GF_MUL( scratch_9, 174 ), in33 ); \
3529 773508 : in34 = GF_MUL( in34, 1 ); \
3530 773508 : in34 = GF_ADD( GF_MUL( scratch_10, 174 ), in34 ); \
3531 773508 : in35 = GF_MUL( in35, 1 ); \
3532 773508 : in35 = GF_ADD( GF_MUL( scratch_11, 174 ), in35 ); \
3533 773508 : in36 = GF_MUL( in36, 1 ); \
3534 773508 : in36 = GF_ADD( GF_MUL( scratch_12, 174 ), in36 ); \
3535 773508 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
3536 773508 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
3537 773508 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
3538 773508 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
3539 773508 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
3540 773508 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
3541 773508 : in32 = GF_MUL( in32, 1 ); \
3542 773508 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
3543 773508 : in33 = GF_MUL( in33, 1 ); \
3544 773508 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
3545 773508 : in34 = GF_MUL( in34, 1 ); \
3546 773508 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
3547 773508 : in35 = GF_MUL( in35, 1 ); \
3548 773508 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
3549 773508 : in36 = GF_MUL( in36, 1 ); \
3550 773508 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
3551 773508 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
3552 773508 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
3553 773508 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
3554 773508 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
3555 773508 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
3556 773508 : in05 = GF_MUL( in05, 1 ); \
3557 773508 : in05 = GF_ADD( GF_MUL( scratch_37, 0 ), in05 ); \
3558 773508 : in06 = GF_MUL( in06, 1 ); \
3559 773508 : in06 = GF_ADD( GF_MUL( scratch_38, 0 ), in06 ); \
3560 773508 : in07 = GF_MUL( in07, 1 ); \
3561 773508 : in07 = GF_ADD( GF_MUL( scratch_39, 0 ), in07 ); \
3562 773508 : in08 = GF_MUL( in08, 1 ); \
3563 773508 : in08 = GF_ADD( GF_MUL( scratch_40, 0 ), in08 ); \
3564 773508 : in09 = GF_MUL( in09, 1 ); \
3565 773508 : in09 = GF_ADD( GF_MUL( scratch_41, 0 ), in09 ); \
3566 773508 : in10 = GF_MUL( in10, 1 ); \
3567 773508 : in10 = GF_ADD( GF_MUL( scratch_42, 0 ), in10 ); \
3568 773508 : in11 = GF_MUL( in11, 1 ); \
3569 773508 : in11 = GF_ADD( GF_MUL( scratch_43, 0 ), in11 ); \
3570 773508 : in12 = GF_MUL( in12, 1 ); \
3571 773508 : in12 = GF_ADD( GF_MUL( scratch_44, 0 ), in12 ); \
3572 773508 : in13 = GF_MUL( in13, 1 ); \
3573 773508 : in13 = GF_ADD( GF_MUL( scratch_45, 0 ), in13 ); \
3574 773508 : in14 = GF_MUL( in14, 1 ); \
3575 773508 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
3576 773508 : in15 = GF_MUL( in15, 1 ); \
3577 773508 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
3578 773508 : in16 = GF_MUL( in16, 1 ); \
3579 773508 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
3580 773508 : in17 = GF_MUL( in17, 1 ); \
3581 773508 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
3582 773508 : in18 = GF_MUL( in18, 1 ); \
3583 773508 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
3584 773508 : in19 = GF_MUL( in19, 1 ); \
3585 773508 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
3586 773508 : in20 = GF_MUL( in20, 1 ); \
3587 773508 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
3588 773508 : in21 = GF_MUL( in21, 1 ); \
3589 773508 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
3590 773508 : in22 = GF_MUL( in22, 1 ); \
3591 773508 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
3592 773508 : in23 = GF_MUL( in23, 1 ); \
3593 773508 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
3594 773508 : in24 = GF_MUL( in24, 1 ); \
3595 773508 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
3596 773508 : in25 = GF_MUL( in25, 1 ); \
3597 773508 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
3598 773508 : in26 = GF_MUL( in26, 1 ); \
3599 773508 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
3600 773508 : in27 = GF_MUL( in27, 1 ); \
3601 773508 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
3602 773508 : in28 = GF_MUL( in28, 1 ); \
3603 773508 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
3604 773508 : in29 = GF_MUL( in29, 1 ); \
3605 773508 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
3606 773508 : in30 = GF_MUL( in30, 1 ); \
3607 773508 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
3608 773508 : in31 = GF_MUL( in31, 1 ); \
3609 773508 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
3610 773508 : } while( 0 )
3611 :
3612 : void fd_reedsol_ppt_64_38( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
3613 : #define FD_REEDSOL_PPT_IMPL_64_38( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
3614 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
3615 703236 : do { \
3616 703236 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_16, scratch_17, scratch_18, scratch_19, scratch_2, scratch_20, scratch_21, scratch_3, scratch_38, scratch_39, scratch_40, scratch_41; \
3617 703236 : gf_t scratch_42, scratch_43, scratch_44, scratch_45, scratch_46, scratch_47, scratch_48, scratch_49, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57; \
3618 703236 : gf_t scratch_58, scratch_59, scratch_6, scratch_60, scratch_61, scratch_62, scratch_63, scratch_7, scratch_8, scratch_9; \
3619 703236 : scratch_38 = in38; \
3620 703236 : in38 = GF_MUL( in38, 1 ); \
3621 703236 : scratch_39 = in39; \
3622 703236 : in39 = GF_MUL( in39, 1 ); \
3623 703236 : scratch_40 = in40; \
3624 703236 : in40 = GF_MUL( in40, 1 ); \
3625 703236 : scratch_41 = in41; \
3626 703236 : in41 = GF_MUL( in41, 1 ); \
3627 703236 : scratch_42 = in42; \
3628 703236 : in42 = GF_MUL( in42, 1 ); \
3629 703236 : scratch_43 = in43; \
3630 703236 : in43 = GF_MUL( in43, 1 ); \
3631 703236 : scratch_44 = in44; \
3632 703236 : in44 = GF_MUL( in44, 1 ); \
3633 703236 : scratch_45 = in45; \
3634 703236 : in45 = GF_MUL( in45, 1 ); \
3635 703236 : scratch_46 = in46; \
3636 703236 : in46 = GF_MUL( in46, 1 ); \
3637 703236 : scratch_47 = in47; \
3638 703236 : in47 = GF_MUL( in47, 1 ); \
3639 703236 : scratch_48 = in48; \
3640 703236 : in48 = GF_MUL( in48, 1 ); \
3641 703236 : scratch_49 = in49; \
3642 703236 : in49 = GF_MUL( in49, 1 ); \
3643 703236 : scratch_50 = in50; \
3644 703236 : in50 = GF_MUL( in50, 1 ); \
3645 703236 : scratch_51 = in51; \
3646 703236 : in51 = GF_MUL( in51, 1 ); \
3647 703236 : scratch_52 = in52; \
3648 703236 : in52 = GF_MUL( in52, 1 ); \
3649 703236 : scratch_53 = in53; \
3650 703236 : in53 = GF_MUL( in53, 1 ); \
3651 703236 : scratch_54 = in54; \
3652 703236 : in54 = GF_MUL( in54, 1 ); \
3653 703236 : scratch_55 = in55; \
3654 703236 : in55 = GF_MUL( in55, 1 ); \
3655 703236 : scratch_56 = in56; \
3656 703236 : in56 = GF_MUL( in56, 1 ); \
3657 703236 : scratch_57 = in57; \
3658 703236 : in57 = GF_MUL( in57, 1 ); \
3659 703236 : scratch_58 = in58; \
3660 703236 : in58 = GF_MUL( in58, 1 ); \
3661 703236 : scratch_59 = in59; \
3662 703236 : in59 = GF_MUL( in59, 1 ); \
3663 703236 : scratch_60 = in60; \
3664 703236 : in60 = GF_MUL( in60, 1 ); \
3665 703236 : scratch_61 = in61; \
3666 703236 : in61 = GF_MUL( in61, 1 ); \
3667 703236 : scratch_62 = in62; \
3668 703236 : in62 = GF_MUL( in62, 1 ); \
3669 703236 : scratch_63 = in63; \
3670 703236 : in63 = GF_MUL( in63, 1 ); \
3671 703236 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
3672 703236 : in38 = GF_ADD( GF_MUL( in06, 1 ), in38 ); \
3673 703236 : in39 = GF_ADD( GF_MUL( in07, 1 ), in39 ); \
3674 703236 : in40 = GF_ADD( GF_MUL( in08, 1 ), in40 ); \
3675 703236 : in41 = GF_ADD( GF_MUL( in09, 1 ), in41 ); \
3676 703236 : in42 = GF_ADD( GF_MUL( in10, 1 ), in42 ); \
3677 703236 : in43 = GF_ADD( GF_MUL( in11, 1 ), in43 ); \
3678 703236 : in44 = GF_ADD( GF_MUL( in12, 1 ), in44 ); \
3679 703236 : in45 = GF_ADD( GF_MUL( in13, 1 ), in45 ); \
3680 703236 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
3681 703236 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
3682 703236 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
3683 703236 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
3684 703236 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
3685 703236 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
3686 703236 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
3687 703236 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
3688 703236 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
3689 703236 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
3690 703236 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
3691 703236 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
3692 703236 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
3693 703236 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
3694 703236 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
3695 703236 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
3696 703236 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
3697 703236 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
3698 703236 : scratch_16 = in48; \
3699 703236 : in48 = GF_MUL( in48, 1 ); \
3700 703236 : scratch_17 = in49; \
3701 703236 : in49 = GF_MUL( in49, 1 ); \
3702 703236 : scratch_18 = in50; \
3703 703236 : in50 = GF_MUL( in50, 1 ); \
3704 703236 : scratch_19 = in51; \
3705 703236 : in51 = GF_MUL( in51, 1 ); \
3706 703236 : scratch_20 = in52; \
3707 703236 : in52 = GF_MUL( in52, 1 ); \
3708 703236 : scratch_21 = in53; \
3709 703236 : in53 = GF_MUL( in53, 1 ); \
3710 703236 : GF_MUL22( in38, in54, 1, 71, 1, 70 ); \
3711 703236 : GF_MUL22( in39, in55, 1, 71, 1, 70 ); \
3712 703236 : GF_MUL22( in40, in56, 1, 71, 1, 70 ); \
3713 703236 : GF_MUL22( in41, in57, 1, 71, 1, 70 ); \
3714 703236 : GF_MUL22( in42, in58, 1, 71, 1, 70 ); \
3715 703236 : GF_MUL22( in43, in59, 1, 71, 1, 70 ); \
3716 703236 : GF_MUL22( in44, in60, 1, 71, 1, 70 ); \
3717 703236 : GF_MUL22( in45, in61, 1, 71, 1, 70 ); \
3718 703236 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
3719 703236 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
3720 703236 : scratch_8 = in40; \
3721 703236 : in40 = GF_MUL( in40, 1 ); \
3722 703236 : scratch_9 = in41; \
3723 703236 : in41 = GF_MUL( in41, 1 ); \
3724 703236 : scratch_10 = in42; \
3725 703236 : in42 = GF_MUL( in42, 1 ); \
3726 703236 : scratch_11 = in43; \
3727 703236 : in43 = GF_MUL( in43, 1 ); \
3728 703236 : scratch_12 = in44; \
3729 703236 : in44 = GF_MUL( in44, 1 ); \
3730 703236 : scratch_13 = in45; \
3731 703236 : in45 = GF_MUL( in45, 1 ); \
3732 703236 : GF_MUL22( in38, in46, 1, 174, 1, 175 ); \
3733 703236 : GF_MUL22( in39, in47, 1, 174, 1, 175 ); \
3734 703236 : scratch_6 = in38; \
3735 703236 : in38 = GF_MUL( in38, 1 ); \
3736 703236 : scratch_7 = in39; \
3737 703236 : in39 = GF_MUL( in39, 1 ); \
3738 703236 : FD_REEDSOL_GENERATE_IFFT( 4, 32, in32, in33, in34, in35 ); \
3739 703236 : in38 = GF_ADD( GF_MUL( in34, 1 ), in38 ); \
3740 703236 : in39 = GF_ADD( GF_MUL( in35, 1 ), in39 ); \
3741 703236 : scratch_2 = in38; \
3742 703236 : in38 = GF_MUL( in38, 1 ); \
3743 703236 : scratch_3 = in39; \
3744 703236 : in39 = GF_MUL( in39, 1 ); \
3745 703236 : GF_MUL22( in36, in37, 37, 36, 1, 1 ); \
3746 703236 : in38 = GF_ADD( GF_MUL( in36, 1 ), in38 ); \
3747 703236 : in39 = GF_ADD( GF_MUL( in37, 1 ), in39 ); \
3748 703236 : GF_MUL22( in38, in39, 1, 38, 1, 39 ); \
3749 703236 : in36 = GF_MUL( in36, 1 ); \
3750 703236 : in36 = GF_ADD( GF_MUL( scratch_2, 235 ), in36 ); \
3751 703236 : in37 = GF_MUL( in37, 1 ); \
3752 703236 : in37 = GF_ADD( GF_MUL( scratch_3, 235 ), in37 ); \
3753 703236 : GF_MUL22( in32, in36, 39, 38, 1, 1 ); \
3754 703236 : GF_MUL22( in33, in37, 39, 38, 1, 1 ); \
3755 703236 : in34 = GF_MUL( in34, 1 ); \
3756 703236 : in34 = GF_ADD( GF_MUL( scratch_6, 38 ), in34 ); \
3757 703236 : in35 = GF_MUL( in35, 1 ); \
3758 703236 : in35 = GF_ADD( GF_MUL( scratch_7, 38 ), in35 ); \
3759 703236 : in40 = GF_ADD( GF_MUL( in32, 1 ), in40 ); \
3760 703236 : in41 = GF_ADD( GF_MUL( in33, 1 ), in41 ); \
3761 703236 : in42 = GF_ADD( GF_MUL( in34, 1 ), in42 ); \
3762 703236 : in43 = GF_ADD( GF_MUL( in35, 1 ), in43 ); \
3763 703236 : in44 = GF_ADD( GF_MUL( in36, 1 ), in44 ); \
3764 703236 : in45 = GF_ADD( GF_MUL( in37, 1 ), in45 ); \
3765 703236 : FD_REEDSOL_GENERATE_FFT( 8, 40, in40, in41, in42, in43, in44, in45, in46, in47 ); \
3766 703236 : in32 = GF_MUL( in32, 1 ); \
3767 703236 : in32 = GF_ADD( GF_MUL( scratch_8, 174 ), in32 ); \
3768 703236 : in33 = GF_MUL( in33, 1 ); \
3769 703236 : in33 = GF_ADD( GF_MUL( scratch_9, 174 ), in33 ); \
3770 703236 : in34 = GF_MUL( in34, 1 ); \
3771 703236 : in34 = GF_ADD( GF_MUL( scratch_10, 174 ), in34 ); \
3772 703236 : in35 = GF_MUL( in35, 1 ); \
3773 703236 : in35 = GF_ADD( GF_MUL( scratch_11, 174 ), in35 ); \
3774 703236 : in36 = GF_MUL( in36, 1 ); \
3775 703236 : in36 = GF_ADD( GF_MUL( scratch_12, 174 ), in36 ); \
3776 703236 : in37 = GF_MUL( in37, 1 ); \
3777 703236 : in37 = GF_ADD( GF_MUL( scratch_13, 174 ), in37 ); \
3778 703236 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
3779 703236 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
3780 703236 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
3781 703236 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
3782 703236 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
3783 703236 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
3784 703236 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
3785 703236 : in32 = GF_MUL( in32, 1 ); \
3786 703236 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
3787 703236 : in33 = GF_MUL( in33, 1 ); \
3788 703236 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
3789 703236 : in34 = GF_MUL( in34, 1 ); \
3790 703236 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
3791 703236 : in35 = GF_MUL( in35, 1 ); \
3792 703236 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
3793 703236 : in36 = GF_MUL( in36, 1 ); \
3794 703236 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
3795 703236 : in37 = GF_MUL( in37, 1 ); \
3796 703236 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
3797 703236 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
3798 703236 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
3799 703236 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
3800 703236 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
3801 703236 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
3802 703236 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
3803 703236 : in06 = GF_MUL( in06, 1 ); \
3804 703236 : in06 = GF_ADD( GF_MUL( scratch_38, 0 ), in06 ); \
3805 703236 : in07 = GF_MUL( in07, 1 ); \
3806 703236 : in07 = GF_ADD( GF_MUL( scratch_39, 0 ), in07 ); \
3807 703236 : in08 = GF_MUL( in08, 1 ); \
3808 703236 : in08 = GF_ADD( GF_MUL( scratch_40, 0 ), in08 ); \
3809 703236 : in09 = GF_MUL( in09, 1 ); \
3810 703236 : in09 = GF_ADD( GF_MUL( scratch_41, 0 ), in09 ); \
3811 703236 : in10 = GF_MUL( in10, 1 ); \
3812 703236 : in10 = GF_ADD( GF_MUL( scratch_42, 0 ), in10 ); \
3813 703236 : in11 = GF_MUL( in11, 1 ); \
3814 703236 : in11 = GF_ADD( GF_MUL( scratch_43, 0 ), in11 ); \
3815 703236 : in12 = GF_MUL( in12, 1 ); \
3816 703236 : in12 = GF_ADD( GF_MUL( scratch_44, 0 ), in12 ); \
3817 703236 : in13 = GF_MUL( in13, 1 ); \
3818 703236 : in13 = GF_ADD( GF_MUL( scratch_45, 0 ), in13 ); \
3819 703236 : in14 = GF_MUL( in14, 1 ); \
3820 703236 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
3821 703236 : in15 = GF_MUL( in15, 1 ); \
3822 703236 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
3823 703236 : in16 = GF_MUL( in16, 1 ); \
3824 703236 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
3825 703236 : in17 = GF_MUL( in17, 1 ); \
3826 703236 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
3827 703236 : in18 = GF_MUL( in18, 1 ); \
3828 703236 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
3829 703236 : in19 = GF_MUL( in19, 1 ); \
3830 703236 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
3831 703236 : in20 = GF_MUL( in20, 1 ); \
3832 703236 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
3833 703236 : in21 = GF_MUL( in21, 1 ); \
3834 703236 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
3835 703236 : in22 = GF_MUL( in22, 1 ); \
3836 703236 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
3837 703236 : in23 = GF_MUL( in23, 1 ); \
3838 703236 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
3839 703236 : in24 = GF_MUL( in24, 1 ); \
3840 703236 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
3841 703236 : in25 = GF_MUL( in25, 1 ); \
3842 703236 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
3843 703236 : in26 = GF_MUL( in26, 1 ); \
3844 703236 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
3845 703236 : in27 = GF_MUL( in27, 1 ); \
3846 703236 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
3847 703236 : in28 = GF_MUL( in28, 1 ); \
3848 703236 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
3849 703236 : in29 = GF_MUL( in29, 1 ); \
3850 703236 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
3851 703236 : in30 = GF_MUL( in30, 1 ); \
3852 703236 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
3853 703236 : in31 = GF_MUL( in31, 1 ); \
3854 703236 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
3855 703236 : } while( 0 )
3856 :
3857 : void fd_reedsol_ppt_64_39( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
3858 : #define FD_REEDSOL_PPT_IMPL_64_39( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
3859 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
3860 679716 : do { \
3861 679716 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_16, scratch_17, scratch_18, scratch_19, scratch_20, scratch_21, scratch_22, scratch_3, scratch_39, scratch_40, scratch_41; \
3862 679716 : gf_t scratch_42, scratch_43, scratch_44, scratch_45, scratch_46, scratch_47, scratch_48, scratch_49, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57; \
3863 679716 : gf_t scratch_58, scratch_59, scratch_60, scratch_61, scratch_62, scratch_63, scratch_7, scratch_8, scratch_9; \
3864 679716 : scratch_39 = in39; \
3865 679716 : in39 = GF_MUL( in39, 1 ); \
3866 679716 : scratch_40 = in40; \
3867 679716 : in40 = GF_MUL( in40, 1 ); \
3868 679716 : scratch_41 = in41; \
3869 679716 : in41 = GF_MUL( in41, 1 ); \
3870 679716 : scratch_42 = in42; \
3871 679716 : in42 = GF_MUL( in42, 1 ); \
3872 679716 : scratch_43 = in43; \
3873 679716 : in43 = GF_MUL( in43, 1 ); \
3874 679716 : scratch_44 = in44; \
3875 679716 : in44 = GF_MUL( in44, 1 ); \
3876 679716 : scratch_45 = in45; \
3877 679716 : in45 = GF_MUL( in45, 1 ); \
3878 679716 : scratch_46 = in46; \
3879 679716 : in46 = GF_MUL( in46, 1 ); \
3880 679716 : scratch_47 = in47; \
3881 679716 : in47 = GF_MUL( in47, 1 ); \
3882 679716 : scratch_48 = in48; \
3883 679716 : in48 = GF_MUL( in48, 1 ); \
3884 679716 : scratch_49 = in49; \
3885 679716 : in49 = GF_MUL( in49, 1 ); \
3886 679716 : scratch_50 = in50; \
3887 679716 : in50 = GF_MUL( in50, 1 ); \
3888 679716 : scratch_51 = in51; \
3889 679716 : in51 = GF_MUL( in51, 1 ); \
3890 679716 : scratch_52 = in52; \
3891 679716 : in52 = GF_MUL( in52, 1 ); \
3892 679716 : scratch_53 = in53; \
3893 679716 : in53 = GF_MUL( in53, 1 ); \
3894 679716 : scratch_54 = in54; \
3895 679716 : in54 = GF_MUL( in54, 1 ); \
3896 679716 : scratch_55 = in55; \
3897 679716 : in55 = GF_MUL( in55, 1 ); \
3898 679716 : scratch_56 = in56; \
3899 679716 : in56 = GF_MUL( in56, 1 ); \
3900 679716 : scratch_57 = in57; \
3901 679716 : in57 = GF_MUL( in57, 1 ); \
3902 679716 : scratch_58 = in58; \
3903 679716 : in58 = GF_MUL( in58, 1 ); \
3904 679716 : scratch_59 = in59; \
3905 679716 : in59 = GF_MUL( in59, 1 ); \
3906 679716 : scratch_60 = in60; \
3907 679716 : in60 = GF_MUL( in60, 1 ); \
3908 679716 : scratch_61 = in61; \
3909 679716 : in61 = GF_MUL( in61, 1 ); \
3910 679716 : scratch_62 = in62; \
3911 679716 : in62 = GF_MUL( in62, 1 ); \
3912 679716 : scratch_63 = in63; \
3913 679716 : in63 = GF_MUL( in63, 1 ); \
3914 679716 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
3915 679716 : in39 = GF_ADD( GF_MUL( in07, 1 ), in39 ); \
3916 679716 : in40 = GF_ADD( GF_MUL( in08, 1 ), in40 ); \
3917 679716 : in41 = GF_ADD( GF_MUL( in09, 1 ), in41 ); \
3918 679716 : in42 = GF_ADD( GF_MUL( in10, 1 ), in42 ); \
3919 679716 : in43 = GF_ADD( GF_MUL( in11, 1 ), in43 ); \
3920 679716 : in44 = GF_ADD( GF_MUL( in12, 1 ), in44 ); \
3921 679716 : in45 = GF_ADD( GF_MUL( in13, 1 ), in45 ); \
3922 679716 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
3923 679716 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
3924 679716 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
3925 679716 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
3926 679716 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
3927 679716 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
3928 679716 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
3929 679716 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
3930 679716 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
3931 679716 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
3932 679716 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
3933 679716 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
3934 679716 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
3935 679716 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
3936 679716 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
3937 679716 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
3938 679716 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
3939 679716 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
3940 679716 : scratch_16 = in48; \
3941 679716 : in48 = GF_MUL( in48, 1 ); \
3942 679716 : scratch_17 = in49; \
3943 679716 : in49 = GF_MUL( in49, 1 ); \
3944 679716 : scratch_18 = in50; \
3945 679716 : in50 = GF_MUL( in50, 1 ); \
3946 679716 : scratch_19 = in51; \
3947 679716 : in51 = GF_MUL( in51, 1 ); \
3948 679716 : scratch_20 = in52; \
3949 679716 : in52 = GF_MUL( in52, 1 ); \
3950 679716 : scratch_21 = in53; \
3951 679716 : in53 = GF_MUL( in53, 1 ); \
3952 679716 : scratch_22 = in54; \
3953 679716 : in54 = GF_MUL( in54, 1 ); \
3954 679716 : GF_MUL22( in39, in55, 1, 71, 1, 70 ); \
3955 679716 : GF_MUL22( in40, in56, 1, 71, 1, 70 ); \
3956 679716 : GF_MUL22( in41, in57, 1, 71, 1, 70 ); \
3957 679716 : GF_MUL22( in42, in58, 1, 71, 1, 70 ); \
3958 679716 : GF_MUL22( in43, in59, 1, 71, 1, 70 ); \
3959 679716 : GF_MUL22( in44, in60, 1, 71, 1, 70 ); \
3960 679716 : GF_MUL22( in45, in61, 1, 71, 1, 70 ); \
3961 679716 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
3962 679716 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
3963 679716 : scratch_8 = in40; \
3964 679716 : in40 = GF_MUL( in40, 1 ); \
3965 679716 : scratch_9 = in41; \
3966 679716 : in41 = GF_MUL( in41, 1 ); \
3967 679716 : scratch_10 = in42; \
3968 679716 : in42 = GF_MUL( in42, 1 ); \
3969 679716 : scratch_11 = in43; \
3970 679716 : in43 = GF_MUL( in43, 1 ); \
3971 679716 : scratch_12 = in44; \
3972 679716 : in44 = GF_MUL( in44, 1 ); \
3973 679716 : scratch_13 = in45; \
3974 679716 : in45 = GF_MUL( in45, 1 ); \
3975 679716 : scratch_14 = in46; \
3976 679716 : in46 = GF_MUL( in46, 1 ); \
3977 679716 : GF_MUL22( in39, in47, 1, 174, 1, 175 ); \
3978 679716 : scratch_7 = in39; \
3979 679716 : in39 = GF_MUL( in39, 1 ); \
3980 679716 : FD_REEDSOL_GENERATE_IFFT( 4, 32, in32, in33, in34, in35 ); \
3981 679716 : in39 = GF_ADD( GF_MUL( in35, 1 ), in39 ); \
3982 679716 : scratch_3 = in39; \
3983 679716 : in39 = GF_MUL( in39, 1 ); \
3984 679716 : GF_MUL22( in36, in37, 37, 36, 1, 1 ); \
3985 679716 : in39 = GF_ADD( GF_MUL( in37, 1 ), in39 ); \
3986 679716 : GF_MUL22( in38, in39, 1, 38, 1, 1 ); \
3987 679716 : GF_MUL22( in36, in38, 234, 235, 1, 1 ); \
3988 679716 : in37 = GF_MUL( in37, 1 ); \
3989 679716 : in37 = GF_ADD( GF_MUL( scratch_3, 235 ), in37 ); \
3990 679716 : GF_MUL22( in32, in36, 39, 38, 1, 1 ); \
3991 679716 : GF_MUL22( in33, in37, 39, 38, 1, 1 ); \
3992 679716 : GF_MUL22( in34, in38, 39, 38, 1, 1 ); \
3993 679716 : in35 = GF_MUL( in35, 1 ); \
3994 679716 : in35 = GF_ADD( GF_MUL( scratch_7, 38 ), in35 ); \
3995 679716 : in40 = GF_ADD( GF_MUL( in32, 1 ), in40 ); \
3996 679716 : in41 = GF_ADD( GF_MUL( in33, 1 ), in41 ); \
3997 679716 : in42 = GF_ADD( GF_MUL( in34, 1 ), in42 ); \
3998 679716 : in43 = GF_ADD( GF_MUL( in35, 1 ), in43 ); \
3999 679716 : in44 = GF_ADD( GF_MUL( in36, 1 ), in44 ); \
4000 679716 : in45 = GF_ADD( GF_MUL( in37, 1 ), in45 ); \
4001 679716 : in46 = GF_ADD( GF_MUL( in38, 1 ), in46 ); \
4002 679716 : FD_REEDSOL_GENERATE_FFT( 8, 40, in40, in41, in42, in43, in44, in45, in46, in47 ); \
4003 679716 : in32 = GF_MUL( in32, 1 ); \
4004 679716 : in32 = GF_ADD( GF_MUL( scratch_8, 174 ), in32 ); \
4005 679716 : in33 = GF_MUL( in33, 1 ); \
4006 679716 : in33 = GF_ADD( GF_MUL( scratch_9, 174 ), in33 ); \
4007 679716 : in34 = GF_MUL( in34, 1 ); \
4008 679716 : in34 = GF_ADD( GF_MUL( scratch_10, 174 ), in34 ); \
4009 679716 : in35 = GF_MUL( in35, 1 ); \
4010 679716 : in35 = GF_ADD( GF_MUL( scratch_11, 174 ), in35 ); \
4011 679716 : in36 = GF_MUL( in36, 1 ); \
4012 679716 : in36 = GF_ADD( GF_MUL( scratch_12, 174 ), in36 ); \
4013 679716 : in37 = GF_MUL( in37, 1 ); \
4014 679716 : in37 = GF_ADD( GF_MUL( scratch_13, 174 ), in37 ); \
4015 679716 : in38 = GF_MUL( in38, 1 ); \
4016 679716 : in38 = GF_ADD( GF_MUL( scratch_14, 174 ), in38 ); \
4017 679716 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
4018 679716 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
4019 679716 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
4020 679716 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
4021 679716 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
4022 679716 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
4023 679716 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
4024 679716 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
4025 679716 : in32 = GF_MUL( in32, 1 ); \
4026 679716 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
4027 679716 : in33 = GF_MUL( in33, 1 ); \
4028 679716 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
4029 679716 : in34 = GF_MUL( in34, 1 ); \
4030 679716 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
4031 679716 : in35 = GF_MUL( in35, 1 ); \
4032 679716 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
4033 679716 : in36 = GF_MUL( in36, 1 ); \
4034 679716 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
4035 679716 : in37 = GF_MUL( in37, 1 ); \
4036 679716 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
4037 679716 : in38 = GF_MUL( in38, 1 ); \
4038 679716 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
4039 679716 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
4040 679716 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
4041 679716 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
4042 679716 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
4043 679716 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
4044 679716 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
4045 679716 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
4046 679716 : in07 = GF_MUL( in07, 1 ); \
4047 679716 : in07 = GF_ADD( GF_MUL( scratch_39, 0 ), in07 ); \
4048 679716 : in08 = GF_MUL( in08, 1 ); \
4049 679716 : in08 = GF_ADD( GF_MUL( scratch_40, 0 ), in08 ); \
4050 679716 : in09 = GF_MUL( in09, 1 ); \
4051 679716 : in09 = GF_ADD( GF_MUL( scratch_41, 0 ), in09 ); \
4052 679716 : in10 = GF_MUL( in10, 1 ); \
4053 679716 : in10 = GF_ADD( GF_MUL( scratch_42, 0 ), in10 ); \
4054 679716 : in11 = GF_MUL( in11, 1 ); \
4055 679716 : in11 = GF_ADD( GF_MUL( scratch_43, 0 ), in11 ); \
4056 679716 : in12 = GF_MUL( in12, 1 ); \
4057 679716 : in12 = GF_ADD( GF_MUL( scratch_44, 0 ), in12 ); \
4058 679716 : in13 = GF_MUL( in13, 1 ); \
4059 679716 : in13 = GF_ADD( GF_MUL( scratch_45, 0 ), in13 ); \
4060 679716 : in14 = GF_MUL( in14, 1 ); \
4061 679716 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
4062 679716 : in15 = GF_MUL( in15, 1 ); \
4063 679716 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
4064 679716 : in16 = GF_MUL( in16, 1 ); \
4065 679716 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
4066 679716 : in17 = GF_MUL( in17, 1 ); \
4067 679716 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
4068 679716 : in18 = GF_MUL( in18, 1 ); \
4069 679716 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
4070 679716 : in19 = GF_MUL( in19, 1 ); \
4071 679716 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
4072 679716 : in20 = GF_MUL( in20, 1 ); \
4073 679716 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
4074 679716 : in21 = GF_MUL( in21, 1 ); \
4075 679716 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
4076 679716 : in22 = GF_MUL( in22, 1 ); \
4077 679716 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
4078 679716 : in23 = GF_MUL( in23, 1 ); \
4079 679716 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
4080 679716 : in24 = GF_MUL( in24, 1 ); \
4081 679716 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
4082 679716 : in25 = GF_MUL( in25, 1 ); \
4083 679716 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
4084 679716 : in26 = GF_MUL( in26, 1 ); \
4085 679716 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
4086 679716 : in27 = GF_MUL( in27, 1 ); \
4087 679716 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
4088 679716 : in28 = GF_MUL( in28, 1 ); \
4089 679716 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
4090 679716 : in29 = GF_MUL( in29, 1 ); \
4091 679716 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
4092 679716 : in30 = GF_MUL( in30, 1 ); \
4093 679716 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
4094 679716 : in31 = GF_MUL( in31, 1 ); \
4095 679716 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
4096 679716 : } while( 0 )
4097 :
4098 : void fd_reedsol_ppt_64_40( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
4099 : #define FD_REEDSOL_PPT_IMPL_64_40( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
4100 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
4101 679716 : do { \
4102 679716 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_16, scratch_17, scratch_18, scratch_19, scratch_20, scratch_21, scratch_22, scratch_23, scratch_40, scratch_41; \
4103 679716 : gf_t scratch_42, scratch_43, scratch_44, scratch_45, scratch_46, scratch_47, scratch_48, scratch_49, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57; \
4104 679716 : gf_t scratch_58, scratch_59, scratch_60, scratch_61, scratch_62, scratch_63, scratch_8, scratch_9; \
4105 679716 : scratch_40 = in40; \
4106 679716 : in40 = GF_MUL( in40, 1 ); \
4107 679716 : scratch_41 = in41; \
4108 679716 : in41 = GF_MUL( in41, 1 ); \
4109 679716 : scratch_42 = in42; \
4110 679716 : in42 = GF_MUL( in42, 1 ); \
4111 679716 : scratch_43 = in43; \
4112 679716 : in43 = GF_MUL( in43, 1 ); \
4113 679716 : scratch_44 = in44; \
4114 679716 : in44 = GF_MUL( in44, 1 ); \
4115 679716 : scratch_45 = in45; \
4116 679716 : in45 = GF_MUL( in45, 1 ); \
4117 679716 : scratch_46 = in46; \
4118 679716 : in46 = GF_MUL( in46, 1 ); \
4119 679716 : scratch_47 = in47; \
4120 679716 : in47 = GF_MUL( in47, 1 ); \
4121 679716 : scratch_48 = in48; \
4122 679716 : in48 = GF_MUL( in48, 1 ); \
4123 679716 : scratch_49 = in49; \
4124 679716 : in49 = GF_MUL( in49, 1 ); \
4125 679716 : scratch_50 = in50; \
4126 679716 : in50 = GF_MUL( in50, 1 ); \
4127 679716 : scratch_51 = in51; \
4128 679716 : in51 = GF_MUL( in51, 1 ); \
4129 679716 : scratch_52 = in52; \
4130 679716 : in52 = GF_MUL( in52, 1 ); \
4131 679716 : scratch_53 = in53; \
4132 679716 : in53 = GF_MUL( in53, 1 ); \
4133 679716 : scratch_54 = in54; \
4134 679716 : in54 = GF_MUL( in54, 1 ); \
4135 679716 : scratch_55 = in55; \
4136 679716 : in55 = GF_MUL( in55, 1 ); \
4137 679716 : scratch_56 = in56; \
4138 679716 : in56 = GF_MUL( in56, 1 ); \
4139 679716 : scratch_57 = in57; \
4140 679716 : in57 = GF_MUL( in57, 1 ); \
4141 679716 : scratch_58 = in58; \
4142 679716 : in58 = GF_MUL( in58, 1 ); \
4143 679716 : scratch_59 = in59; \
4144 679716 : in59 = GF_MUL( in59, 1 ); \
4145 679716 : scratch_60 = in60; \
4146 679716 : in60 = GF_MUL( in60, 1 ); \
4147 679716 : scratch_61 = in61; \
4148 679716 : in61 = GF_MUL( in61, 1 ); \
4149 679716 : scratch_62 = in62; \
4150 679716 : in62 = GF_MUL( in62, 1 ); \
4151 679716 : scratch_63 = in63; \
4152 679716 : in63 = GF_MUL( in63, 1 ); \
4153 679716 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
4154 679716 : in40 = GF_ADD( GF_MUL( in08, 1 ), in40 ); \
4155 679716 : in41 = GF_ADD( GF_MUL( in09, 1 ), in41 ); \
4156 679716 : in42 = GF_ADD( GF_MUL( in10, 1 ), in42 ); \
4157 679716 : in43 = GF_ADD( GF_MUL( in11, 1 ), in43 ); \
4158 679716 : in44 = GF_ADD( GF_MUL( in12, 1 ), in44 ); \
4159 679716 : in45 = GF_ADD( GF_MUL( in13, 1 ), in45 ); \
4160 679716 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
4161 679716 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
4162 679716 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
4163 679716 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
4164 679716 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
4165 679716 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
4166 679716 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
4167 679716 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
4168 679716 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
4169 679716 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
4170 679716 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
4171 679716 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
4172 679716 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
4173 679716 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
4174 679716 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
4175 679716 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
4176 679716 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
4177 679716 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
4178 679716 : scratch_16 = in48; \
4179 679716 : in48 = GF_MUL( in48, 1 ); \
4180 679716 : scratch_17 = in49; \
4181 679716 : in49 = GF_MUL( in49, 1 ); \
4182 679716 : scratch_18 = in50; \
4183 679716 : in50 = GF_MUL( in50, 1 ); \
4184 679716 : scratch_19 = in51; \
4185 679716 : in51 = GF_MUL( in51, 1 ); \
4186 679716 : scratch_20 = in52; \
4187 679716 : in52 = GF_MUL( in52, 1 ); \
4188 679716 : scratch_21 = in53; \
4189 679716 : in53 = GF_MUL( in53, 1 ); \
4190 679716 : scratch_22 = in54; \
4191 679716 : in54 = GF_MUL( in54, 1 ); \
4192 679716 : scratch_23 = in55; \
4193 679716 : in55 = GF_MUL( in55, 1 ); \
4194 679716 : GF_MUL22( in40, in56, 1, 71, 1, 70 ); \
4195 679716 : GF_MUL22( in41, in57, 1, 71, 1, 70 ); \
4196 679716 : GF_MUL22( in42, in58, 1, 71, 1, 70 ); \
4197 679716 : GF_MUL22( in43, in59, 1, 71, 1, 70 ); \
4198 679716 : GF_MUL22( in44, in60, 1, 71, 1, 70 ); \
4199 679716 : GF_MUL22( in45, in61, 1, 71, 1, 70 ); \
4200 679716 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
4201 679716 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
4202 679716 : scratch_8 = in40; \
4203 679716 : in40 = GF_MUL( in40, 1 ); \
4204 679716 : scratch_9 = in41; \
4205 679716 : in41 = GF_MUL( in41, 1 ); \
4206 679716 : scratch_10 = in42; \
4207 679716 : in42 = GF_MUL( in42, 1 ); \
4208 679716 : scratch_11 = in43; \
4209 679716 : in43 = GF_MUL( in43, 1 ); \
4210 679716 : scratch_12 = in44; \
4211 679716 : in44 = GF_MUL( in44, 1 ); \
4212 679716 : scratch_13 = in45; \
4213 679716 : in45 = GF_MUL( in45, 1 ); \
4214 679716 : scratch_14 = in46; \
4215 679716 : in46 = GF_MUL( in46, 1 ); \
4216 679716 : scratch_15 = in47; \
4217 679716 : in47 = GF_MUL( in47, 1 ); \
4218 679716 : FD_REEDSOL_GENERATE_IFFT( 8, 32, in32, in33, in34, in35, in36, in37, in38, in39 ); \
4219 679716 : in40 = GF_ADD( GF_MUL( in32, 1 ), in40 ); \
4220 679716 : in41 = GF_ADD( GF_MUL( in33, 1 ), in41 ); \
4221 679716 : in42 = GF_ADD( GF_MUL( in34, 1 ), in42 ); \
4222 679716 : in43 = GF_ADD( GF_MUL( in35, 1 ), in43 ); \
4223 679716 : in44 = GF_ADD( GF_MUL( in36, 1 ), in44 ); \
4224 679716 : in45 = GF_ADD( GF_MUL( in37, 1 ), in45 ); \
4225 679716 : in46 = GF_ADD( GF_MUL( in38, 1 ), in46 ); \
4226 679716 : in47 = GF_ADD( GF_MUL( in39, 1 ), in47 ); \
4227 679716 : FD_REEDSOL_GENERATE_FFT( 8, 40, in40, in41, in42, in43, in44, in45, in46, in47 ); \
4228 679716 : in32 = GF_MUL( in32, 1 ); \
4229 679716 : in32 = GF_ADD( GF_MUL( scratch_8, 174 ), in32 ); \
4230 679716 : in33 = GF_MUL( in33, 1 ); \
4231 679716 : in33 = GF_ADD( GF_MUL( scratch_9, 174 ), in33 ); \
4232 679716 : in34 = GF_MUL( in34, 1 ); \
4233 679716 : in34 = GF_ADD( GF_MUL( scratch_10, 174 ), in34 ); \
4234 679716 : in35 = GF_MUL( in35, 1 ); \
4235 679716 : in35 = GF_ADD( GF_MUL( scratch_11, 174 ), in35 ); \
4236 679716 : in36 = GF_MUL( in36, 1 ); \
4237 679716 : in36 = GF_ADD( GF_MUL( scratch_12, 174 ), in36 ); \
4238 679716 : in37 = GF_MUL( in37, 1 ); \
4239 679716 : in37 = GF_ADD( GF_MUL( scratch_13, 174 ), in37 ); \
4240 679716 : in38 = GF_MUL( in38, 1 ); \
4241 679716 : in38 = GF_ADD( GF_MUL( scratch_14, 174 ), in38 ); \
4242 679716 : in39 = GF_MUL( in39, 1 ); \
4243 679716 : in39 = GF_ADD( GF_MUL( scratch_15, 174 ), in39 ); \
4244 679716 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
4245 679716 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
4246 679716 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
4247 679716 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
4248 679716 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
4249 679716 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
4250 679716 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
4251 679716 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
4252 679716 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
4253 679716 : in32 = GF_MUL( in32, 1 ); \
4254 679716 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
4255 679716 : in33 = GF_MUL( in33, 1 ); \
4256 679716 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
4257 679716 : in34 = GF_MUL( in34, 1 ); \
4258 679716 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
4259 679716 : in35 = GF_MUL( in35, 1 ); \
4260 679716 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
4261 679716 : in36 = GF_MUL( in36, 1 ); \
4262 679716 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
4263 679716 : in37 = GF_MUL( in37, 1 ); \
4264 679716 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
4265 679716 : in38 = GF_MUL( in38, 1 ); \
4266 679716 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
4267 679716 : in39 = GF_MUL( in39, 1 ); \
4268 679716 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
4269 679716 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
4270 679716 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
4271 679716 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
4272 679716 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
4273 679716 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
4274 679716 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
4275 679716 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
4276 679716 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
4277 679716 : in08 = GF_MUL( in08, 1 ); \
4278 679716 : in08 = GF_ADD( GF_MUL( scratch_40, 0 ), in08 ); \
4279 679716 : in09 = GF_MUL( in09, 1 ); \
4280 679716 : in09 = GF_ADD( GF_MUL( scratch_41, 0 ), in09 ); \
4281 679716 : in10 = GF_MUL( in10, 1 ); \
4282 679716 : in10 = GF_ADD( GF_MUL( scratch_42, 0 ), in10 ); \
4283 679716 : in11 = GF_MUL( in11, 1 ); \
4284 679716 : in11 = GF_ADD( GF_MUL( scratch_43, 0 ), in11 ); \
4285 679716 : in12 = GF_MUL( in12, 1 ); \
4286 679716 : in12 = GF_ADD( GF_MUL( scratch_44, 0 ), in12 ); \
4287 679716 : in13 = GF_MUL( in13, 1 ); \
4288 679716 : in13 = GF_ADD( GF_MUL( scratch_45, 0 ), in13 ); \
4289 679716 : in14 = GF_MUL( in14, 1 ); \
4290 679716 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
4291 679716 : in15 = GF_MUL( in15, 1 ); \
4292 679716 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
4293 679716 : in16 = GF_MUL( in16, 1 ); \
4294 679716 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
4295 679716 : in17 = GF_MUL( in17, 1 ); \
4296 679716 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
4297 679716 : in18 = GF_MUL( in18, 1 ); \
4298 679716 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
4299 679716 : in19 = GF_MUL( in19, 1 ); \
4300 679716 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
4301 679716 : in20 = GF_MUL( in20, 1 ); \
4302 679716 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
4303 679716 : in21 = GF_MUL( in21, 1 ); \
4304 679716 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
4305 679716 : in22 = GF_MUL( in22, 1 ); \
4306 679716 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
4307 679716 : in23 = GF_MUL( in23, 1 ); \
4308 679716 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
4309 679716 : in24 = GF_MUL( in24, 1 ); \
4310 679716 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
4311 679716 : in25 = GF_MUL( in25, 1 ); \
4312 679716 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
4313 679716 : in26 = GF_MUL( in26, 1 ); \
4314 679716 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
4315 679716 : in27 = GF_MUL( in27, 1 ); \
4316 679716 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
4317 679716 : in28 = GF_MUL( in28, 1 ); \
4318 679716 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
4319 679716 : in29 = GF_MUL( in29, 1 ); \
4320 679716 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
4321 679716 : in30 = GF_MUL( in30, 1 ); \
4322 679716 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
4323 679716 : in31 = GF_MUL( in31, 1 ); \
4324 679716 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
4325 679716 : } while( 0 )
4326 :
4327 : void fd_reedsol_ppt_64_41( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
4328 : #define FD_REEDSOL_PPT_IMPL_64_41( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
4329 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
4330 652284 : do { \
4331 652284 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_16, scratch_17, scratch_18, scratch_19, scratch_2, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24; \
4332 652284 : gf_t scratch_4, scratch_41, scratch_42, scratch_43, scratch_44, scratch_45, scratch_46, scratch_47, scratch_48, scratch_49, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55; \
4333 652284 : gf_t scratch_56, scratch_57, scratch_58, scratch_59, scratch_60, scratch_61, scratch_62, scratch_63, scratch_9; \
4334 652284 : scratch_41 = in41; \
4335 652284 : in41 = GF_MUL( in41, 1 ); \
4336 652284 : scratch_42 = in42; \
4337 652284 : in42 = GF_MUL( in42, 1 ); \
4338 652284 : scratch_43 = in43; \
4339 652284 : in43 = GF_MUL( in43, 1 ); \
4340 652284 : scratch_44 = in44; \
4341 652284 : in44 = GF_MUL( in44, 1 ); \
4342 652284 : scratch_45 = in45; \
4343 652284 : in45 = GF_MUL( in45, 1 ); \
4344 652284 : scratch_46 = in46; \
4345 652284 : in46 = GF_MUL( in46, 1 ); \
4346 652284 : scratch_47 = in47; \
4347 652284 : in47 = GF_MUL( in47, 1 ); \
4348 652284 : scratch_48 = in48; \
4349 652284 : in48 = GF_MUL( in48, 1 ); \
4350 652284 : scratch_49 = in49; \
4351 652284 : in49 = GF_MUL( in49, 1 ); \
4352 652284 : scratch_50 = in50; \
4353 652284 : in50 = GF_MUL( in50, 1 ); \
4354 652284 : scratch_51 = in51; \
4355 652284 : in51 = GF_MUL( in51, 1 ); \
4356 652284 : scratch_52 = in52; \
4357 652284 : in52 = GF_MUL( in52, 1 ); \
4358 652284 : scratch_53 = in53; \
4359 652284 : in53 = GF_MUL( in53, 1 ); \
4360 652284 : scratch_54 = in54; \
4361 652284 : in54 = GF_MUL( in54, 1 ); \
4362 652284 : scratch_55 = in55; \
4363 652284 : in55 = GF_MUL( in55, 1 ); \
4364 652284 : scratch_56 = in56; \
4365 652284 : in56 = GF_MUL( in56, 1 ); \
4366 652284 : scratch_57 = in57; \
4367 652284 : in57 = GF_MUL( in57, 1 ); \
4368 652284 : scratch_58 = in58; \
4369 652284 : in58 = GF_MUL( in58, 1 ); \
4370 652284 : scratch_59 = in59; \
4371 652284 : in59 = GF_MUL( in59, 1 ); \
4372 652284 : scratch_60 = in60; \
4373 652284 : in60 = GF_MUL( in60, 1 ); \
4374 652284 : scratch_61 = in61; \
4375 652284 : in61 = GF_MUL( in61, 1 ); \
4376 652284 : scratch_62 = in62; \
4377 652284 : in62 = GF_MUL( in62, 1 ); \
4378 652284 : scratch_63 = in63; \
4379 652284 : in63 = GF_MUL( in63, 1 ); \
4380 652284 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
4381 652284 : in41 = GF_ADD( GF_MUL( in09, 1 ), in41 ); \
4382 652284 : in42 = GF_ADD( GF_MUL( in10, 1 ), in42 ); \
4383 652284 : in43 = GF_ADD( GF_MUL( in11, 1 ), in43 ); \
4384 652284 : in44 = GF_ADD( GF_MUL( in12, 1 ), in44 ); \
4385 652284 : in45 = GF_ADD( GF_MUL( in13, 1 ), in45 ); \
4386 652284 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
4387 652284 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
4388 652284 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
4389 652284 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
4390 652284 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
4391 652284 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
4392 652284 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
4393 652284 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
4394 652284 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
4395 652284 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
4396 652284 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
4397 652284 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
4398 652284 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
4399 652284 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
4400 652284 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
4401 652284 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
4402 652284 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
4403 652284 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
4404 652284 : scratch_16 = in48; \
4405 652284 : in48 = GF_MUL( in48, 1 ); \
4406 652284 : scratch_17 = in49; \
4407 652284 : in49 = GF_MUL( in49, 1 ); \
4408 652284 : scratch_18 = in50; \
4409 652284 : in50 = GF_MUL( in50, 1 ); \
4410 652284 : scratch_19 = in51; \
4411 652284 : in51 = GF_MUL( in51, 1 ); \
4412 652284 : scratch_20 = in52; \
4413 652284 : in52 = GF_MUL( in52, 1 ); \
4414 652284 : scratch_21 = in53; \
4415 652284 : in53 = GF_MUL( in53, 1 ); \
4416 652284 : scratch_22 = in54; \
4417 652284 : in54 = GF_MUL( in54, 1 ); \
4418 652284 : scratch_23 = in55; \
4419 652284 : in55 = GF_MUL( in55, 1 ); \
4420 652284 : scratch_24 = in56; \
4421 652284 : in56 = GF_MUL( in56, 1 ); \
4422 652284 : GF_MUL22( in41, in57, 1, 71, 1, 70 ); \
4423 652284 : GF_MUL22( in42, in58, 1, 71, 1, 70 ); \
4424 652284 : GF_MUL22( in43, in59, 1, 71, 1, 70 ); \
4425 652284 : GF_MUL22( in44, in60, 1, 71, 1, 70 ); \
4426 652284 : GF_MUL22( in45, in61, 1, 71, 1, 70 ); \
4427 652284 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
4428 652284 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
4429 652284 : scratch_9 = in41; \
4430 652284 : in41 = GF_MUL( in41, 1 ); \
4431 652284 : scratch_10 = in42; \
4432 652284 : in42 = GF_MUL( in42, 1 ); \
4433 652284 : scratch_11 = in43; \
4434 652284 : in43 = GF_MUL( in43, 1 ); \
4435 652284 : scratch_12 = in44; \
4436 652284 : in44 = GF_MUL( in44, 1 ); \
4437 652284 : scratch_13 = in45; \
4438 652284 : in45 = GF_MUL( in45, 1 ); \
4439 652284 : scratch_14 = in46; \
4440 652284 : in46 = GF_MUL( in46, 1 ); \
4441 652284 : scratch_15 = in47; \
4442 652284 : in47 = GF_MUL( in47, 1 ); \
4443 652284 : FD_REEDSOL_GENERATE_IFFT( 8, 32, in32, in33, in34, in35, in36, in37, in38, in39 ); \
4444 652284 : in41 = GF_ADD( GF_MUL( in33, 1 ), in41 ); \
4445 652284 : in42 = GF_ADD( GF_MUL( in34, 1 ), in42 ); \
4446 652284 : in43 = GF_ADD( GF_MUL( in35, 1 ), in43 ); \
4447 652284 : in44 = GF_ADD( GF_MUL( in36, 1 ), in44 ); \
4448 652284 : in45 = GF_ADD( GF_MUL( in37, 1 ), in45 ); \
4449 652284 : in46 = GF_ADD( GF_MUL( in38, 1 ), in46 ); \
4450 652284 : in47 = GF_ADD( GF_MUL( in39, 1 ), in47 ); \
4451 652284 : scratch_4 = in44; \
4452 652284 : in44 = GF_MUL( in44, 1 ); \
4453 652284 : GF_MUL22( in41, in45, 1, 48, 1, 49 ); \
4454 652284 : GF_MUL22( in42, in46, 1, 48, 1, 49 ); \
4455 652284 : GF_MUL22( in43, in47, 1, 48, 1, 49 ); \
4456 652284 : scratch_2 = in42; \
4457 652284 : in42 = GF_MUL( in42, 1 ); \
4458 652284 : GF_MUL22( in41, in43, 1, 241, 1, 240 ); \
4459 652284 : GF_MUL22( in40, in41, 1, 40, 1, 1 ); \
4460 652284 : in42 = GF_ADD( GF_MUL( in40, 1 ), in42 ); \
4461 652284 : GF_MUL22( in42, in43, 1, 42, 1, 43 ); \
4462 652284 : in40 = GF_MUL( in40, 1 ); \
4463 652284 : in40 = GF_ADD( GF_MUL( scratch_2, 241 ), in40 ); \
4464 652284 : in44 = GF_ADD( GF_MUL( in40, 1 ), in44 ); \
4465 652284 : FD_REEDSOL_GENERATE_FFT( 4, 44, in44, in45, in46, in47 ); \
4466 652284 : in40 = GF_MUL( in40, 1 ); \
4467 652284 : in40 = GF_ADD( GF_MUL( scratch_4, 48 ), in40 ); \
4468 652284 : GF_MUL22( in32, in40, 175, 174, 1, 1 ); \
4469 652284 : in33 = GF_MUL( in33, 1 ); \
4470 652284 : in33 = GF_ADD( GF_MUL( scratch_9, 174 ), in33 ); \
4471 652284 : in34 = GF_MUL( in34, 1 ); \
4472 652284 : in34 = GF_ADD( GF_MUL( scratch_10, 174 ), in34 ); \
4473 652284 : in35 = GF_MUL( in35, 1 ); \
4474 652284 : in35 = GF_ADD( GF_MUL( scratch_11, 174 ), in35 ); \
4475 652284 : in36 = GF_MUL( in36, 1 ); \
4476 652284 : in36 = GF_ADD( GF_MUL( scratch_12, 174 ), in36 ); \
4477 652284 : in37 = GF_MUL( in37, 1 ); \
4478 652284 : in37 = GF_ADD( GF_MUL( scratch_13, 174 ), in37 ); \
4479 652284 : in38 = GF_MUL( in38, 1 ); \
4480 652284 : in38 = GF_ADD( GF_MUL( scratch_14, 174 ), in38 ); \
4481 652284 : in39 = GF_MUL( in39, 1 ); \
4482 652284 : in39 = GF_ADD( GF_MUL( scratch_15, 174 ), in39 ); \
4483 652284 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
4484 652284 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
4485 652284 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
4486 652284 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
4487 652284 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
4488 652284 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
4489 652284 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
4490 652284 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
4491 652284 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
4492 652284 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
4493 652284 : in32 = GF_MUL( in32, 1 ); \
4494 652284 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
4495 652284 : in33 = GF_MUL( in33, 1 ); \
4496 652284 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
4497 652284 : in34 = GF_MUL( in34, 1 ); \
4498 652284 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
4499 652284 : in35 = GF_MUL( in35, 1 ); \
4500 652284 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
4501 652284 : in36 = GF_MUL( in36, 1 ); \
4502 652284 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
4503 652284 : in37 = GF_MUL( in37, 1 ); \
4504 652284 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
4505 652284 : in38 = GF_MUL( in38, 1 ); \
4506 652284 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
4507 652284 : in39 = GF_MUL( in39, 1 ); \
4508 652284 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
4509 652284 : in40 = GF_MUL( in40, 1 ); \
4510 652284 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
4511 652284 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
4512 652284 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
4513 652284 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
4514 652284 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
4515 652284 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
4516 652284 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
4517 652284 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
4518 652284 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
4519 652284 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
4520 652284 : in09 = GF_MUL( in09, 1 ); \
4521 652284 : in09 = GF_ADD( GF_MUL( scratch_41, 0 ), in09 ); \
4522 652284 : in10 = GF_MUL( in10, 1 ); \
4523 652284 : in10 = GF_ADD( GF_MUL( scratch_42, 0 ), in10 ); \
4524 652284 : in11 = GF_MUL( in11, 1 ); \
4525 652284 : in11 = GF_ADD( GF_MUL( scratch_43, 0 ), in11 ); \
4526 652284 : in12 = GF_MUL( in12, 1 ); \
4527 652284 : in12 = GF_ADD( GF_MUL( scratch_44, 0 ), in12 ); \
4528 652284 : in13 = GF_MUL( in13, 1 ); \
4529 652284 : in13 = GF_ADD( GF_MUL( scratch_45, 0 ), in13 ); \
4530 652284 : in14 = GF_MUL( in14, 1 ); \
4531 652284 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
4532 652284 : in15 = GF_MUL( in15, 1 ); \
4533 652284 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
4534 652284 : in16 = GF_MUL( in16, 1 ); \
4535 652284 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
4536 652284 : in17 = GF_MUL( in17, 1 ); \
4537 652284 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
4538 652284 : in18 = GF_MUL( in18, 1 ); \
4539 652284 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
4540 652284 : in19 = GF_MUL( in19, 1 ); \
4541 652284 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
4542 652284 : in20 = GF_MUL( in20, 1 ); \
4543 652284 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
4544 652284 : in21 = GF_MUL( in21, 1 ); \
4545 652284 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
4546 652284 : in22 = GF_MUL( in22, 1 ); \
4547 652284 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
4548 652284 : in23 = GF_MUL( in23, 1 ); \
4549 652284 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
4550 652284 : in24 = GF_MUL( in24, 1 ); \
4551 652284 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
4552 652284 : in25 = GF_MUL( in25, 1 ); \
4553 652284 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
4554 652284 : in26 = GF_MUL( in26, 1 ); \
4555 652284 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
4556 652284 : in27 = GF_MUL( in27, 1 ); \
4557 652284 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
4558 652284 : in28 = GF_MUL( in28, 1 ); \
4559 652284 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
4560 652284 : in29 = GF_MUL( in29, 1 ); \
4561 652284 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
4562 652284 : in30 = GF_MUL( in30, 1 ); \
4563 652284 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
4564 652284 : in31 = GF_MUL( in31, 1 ); \
4565 652284 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
4566 652284 : } while( 0 )
4567 :
4568 : void fd_reedsol_ppt_64_42( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
4569 : #define FD_REEDSOL_PPT_IMPL_64_42( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
4570 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
4571 592017 : do { \
4572 592017 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_16, scratch_17, scratch_18, scratch_19, scratch_2, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24; \
4573 592017 : gf_t scratch_25, scratch_3, scratch_4, scratch_42, scratch_43, scratch_44, scratch_45, scratch_46, scratch_47, scratch_48, scratch_49, scratch_5, scratch_50, scratch_51, scratch_52, scratch_53; \
4574 592017 : gf_t scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59, scratch_60, scratch_61, scratch_62, scratch_63; \
4575 592017 : scratch_42 = in42; \
4576 592017 : in42 = GF_MUL( in42, 1 ); \
4577 592017 : scratch_43 = in43; \
4578 592017 : in43 = GF_MUL( in43, 1 ); \
4579 592017 : scratch_44 = in44; \
4580 592017 : in44 = GF_MUL( in44, 1 ); \
4581 592017 : scratch_45 = in45; \
4582 592017 : in45 = GF_MUL( in45, 1 ); \
4583 592017 : scratch_46 = in46; \
4584 592017 : in46 = GF_MUL( in46, 1 ); \
4585 592017 : scratch_47 = in47; \
4586 592017 : in47 = GF_MUL( in47, 1 ); \
4587 592017 : scratch_48 = in48; \
4588 592017 : in48 = GF_MUL( in48, 1 ); \
4589 592017 : scratch_49 = in49; \
4590 592017 : in49 = GF_MUL( in49, 1 ); \
4591 592017 : scratch_50 = in50; \
4592 592017 : in50 = GF_MUL( in50, 1 ); \
4593 592017 : scratch_51 = in51; \
4594 592017 : in51 = GF_MUL( in51, 1 ); \
4595 592017 : scratch_52 = in52; \
4596 592017 : in52 = GF_MUL( in52, 1 ); \
4597 592017 : scratch_53 = in53; \
4598 592017 : in53 = GF_MUL( in53, 1 ); \
4599 592017 : scratch_54 = in54; \
4600 592017 : in54 = GF_MUL( in54, 1 ); \
4601 592017 : scratch_55 = in55; \
4602 592017 : in55 = GF_MUL( in55, 1 ); \
4603 592017 : scratch_56 = in56; \
4604 592017 : in56 = GF_MUL( in56, 1 ); \
4605 592017 : scratch_57 = in57; \
4606 592017 : in57 = GF_MUL( in57, 1 ); \
4607 592017 : scratch_58 = in58; \
4608 592017 : in58 = GF_MUL( in58, 1 ); \
4609 592017 : scratch_59 = in59; \
4610 592017 : in59 = GF_MUL( in59, 1 ); \
4611 592017 : scratch_60 = in60; \
4612 592017 : in60 = GF_MUL( in60, 1 ); \
4613 592017 : scratch_61 = in61; \
4614 592017 : in61 = GF_MUL( in61, 1 ); \
4615 592017 : scratch_62 = in62; \
4616 592017 : in62 = GF_MUL( in62, 1 ); \
4617 592017 : scratch_63 = in63; \
4618 592017 : in63 = GF_MUL( in63, 1 ); \
4619 592017 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
4620 592017 : in42 = GF_ADD( GF_MUL( in10, 1 ), in42 ); \
4621 592017 : in43 = GF_ADD( GF_MUL( in11, 1 ), in43 ); \
4622 592017 : in44 = GF_ADD( GF_MUL( in12, 1 ), in44 ); \
4623 592017 : in45 = GF_ADD( GF_MUL( in13, 1 ), in45 ); \
4624 592017 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
4625 592017 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
4626 592017 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
4627 592017 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
4628 592017 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
4629 592017 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
4630 592017 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
4631 592017 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
4632 592017 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
4633 592017 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
4634 592017 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
4635 592017 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
4636 592017 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
4637 592017 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
4638 592017 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
4639 592017 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
4640 592017 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
4641 592017 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
4642 592017 : scratch_16 = in48; \
4643 592017 : in48 = GF_MUL( in48, 1 ); \
4644 592017 : scratch_17 = in49; \
4645 592017 : in49 = GF_MUL( in49, 1 ); \
4646 592017 : scratch_18 = in50; \
4647 592017 : in50 = GF_MUL( in50, 1 ); \
4648 592017 : scratch_19 = in51; \
4649 592017 : in51 = GF_MUL( in51, 1 ); \
4650 592017 : scratch_20 = in52; \
4651 592017 : in52 = GF_MUL( in52, 1 ); \
4652 592017 : scratch_21 = in53; \
4653 592017 : in53 = GF_MUL( in53, 1 ); \
4654 592017 : scratch_22 = in54; \
4655 592017 : in54 = GF_MUL( in54, 1 ); \
4656 592017 : scratch_23 = in55; \
4657 592017 : in55 = GF_MUL( in55, 1 ); \
4658 592017 : scratch_24 = in56; \
4659 592017 : in56 = GF_MUL( in56, 1 ); \
4660 592017 : scratch_25 = in57; \
4661 592017 : in57 = GF_MUL( in57, 1 ); \
4662 592017 : GF_MUL22( in42, in58, 1, 71, 1, 70 ); \
4663 592017 : GF_MUL22( in43, in59, 1, 71, 1, 70 ); \
4664 592017 : GF_MUL22( in44, in60, 1, 71, 1, 70 ); \
4665 592017 : GF_MUL22( in45, in61, 1, 71, 1, 70 ); \
4666 592017 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
4667 592017 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
4668 592017 : scratch_10 = in42; \
4669 592017 : in42 = GF_MUL( in42, 1 ); \
4670 592017 : scratch_11 = in43; \
4671 592017 : in43 = GF_MUL( in43, 1 ); \
4672 592017 : scratch_12 = in44; \
4673 592017 : in44 = GF_MUL( in44, 1 ); \
4674 592017 : scratch_13 = in45; \
4675 592017 : in45 = GF_MUL( in45, 1 ); \
4676 592017 : scratch_14 = in46; \
4677 592017 : in46 = GF_MUL( in46, 1 ); \
4678 592017 : scratch_15 = in47; \
4679 592017 : in47 = GF_MUL( in47, 1 ); \
4680 592017 : FD_REEDSOL_GENERATE_IFFT( 8, 32, in32, in33, in34, in35, in36, in37, in38, in39 ); \
4681 592017 : in42 = GF_ADD( GF_MUL( in34, 1 ), in42 ); \
4682 592017 : in43 = GF_ADD( GF_MUL( in35, 1 ), in43 ); \
4683 592017 : in44 = GF_ADD( GF_MUL( in36, 1 ), in44 ); \
4684 592017 : in45 = GF_ADD( GF_MUL( in37, 1 ), in45 ); \
4685 592017 : in46 = GF_ADD( GF_MUL( in38, 1 ), in46 ); \
4686 592017 : in47 = GF_ADD( GF_MUL( in39, 1 ), in47 ); \
4687 592017 : scratch_4 = in44; \
4688 592017 : in44 = GF_MUL( in44, 1 ); \
4689 592017 : scratch_5 = in45; \
4690 592017 : in45 = GF_MUL( in45, 1 ); \
4691 592017 : GF_MUL22( in42, in46, 1, 48, 1, 49 ); \
4692 592017 : GF_MUL22( in43, in47, 1, 48, 1, 49 ); \
4693 592017 : scratch_2 = in42; \
4694 592017 : in42 = GF_MUL( in42, 1 ); \
4695 592017 : scratch_3 = in43; \
4696 592017 : in43 = GF_MUL( in43, 1 ); \
4697 592017 : GF_MUL22( in40, in41, 41, 40, 1, 1 ); \
4698 592017 : in42 = GF_ADD( GF_MUL( in40, 1 ), in42 ); \
4699 592017 : in43 = GF_ADD( GF_MUL( in41, 1 ), in43 ); \
4700 592017 : GF_MUL22( in42, in43, 1, 42, 1, 43 ); \
4701 592017 : in40 = GF_MUL( in40, 1 ); \
4702 592017 : in40 = GF_ADD( GF_MUL( scratch_2, 241 ), in40 ); \
4703 592017 : in41 = GF_MUL( in41, 1 ); \
4704 592017 : in41 = GF_ADD( GF_MUL( scratch_3, 241 ), in41 ); \
4705 592017 : in44 = GF_ADD( GF_MUL( in40, 1 ), in44 ); \
4706 592017 : in45 = GF_ADD( GF_MUL( in41, 1 ), in45 ); \
4707 592017 : FD_REEDSOL_GENERATE_FFT( 4, 44, in44, in45, in46, in47 ); \
4708 592017 : in40 = GF_MUL( in40, 1 ); \
4709 592017 : in40 = GF_ADD( GF_MUL( scratch_4, 48 ), in40 ); \
4710 592017 : in41 = GF_MUL( in41, 1 ); \
4711 592017 : in41 = GF_ADD( GF_MUL( scratch_5, 48 ), in41 ); \
4712 592017 : GF_MUL22( in32, in40, 175, 174, 1, 1 ); \
4713 592017 : GF_MUL22( in33, in41, 175, 174, 1, 1 ); \
4714 592017 : in34 = GF_MUL( in34, 1 ); \
4715 592017 : in34 = GF_ADD( GF_MUL( scratch_10, 174 ), in34 ); \
4716 592017 : in35 = GF_MUL( in35, 1 ); \
4717 592017 : in35 = GF_ADD( GF_MUL( scratch_11, 174 ), in35 ); \
4718 592017 : in36 = GF_MUL( in36, 1 ); \
4719 592017 : in36 = GF_ADD( GF_MUL( scratch_12, 174 ), in36 ); \
4720 592017 : in37 = GF_MUL( in37, 1 ); \
4721 592017 : in37 = GF_ADD( GF_MUL( scratch_13, 174 ), in37 ); \
4722 592017 : in38 = GF_MUL( in38, 1 ); \
4723 592017 : in38 = GF_ADD( GF_MUL( scratch_14, 174 ), in38 ); \
4724 592017 : in39 = GF_MUL( in39, 1 ); \
4725 592017 : in39 = GF_ADD( GF_MUL( scratch_15, 174 ), in39 ); \
4726 592017 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
4727 592017 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
4728 592017 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
4729 592017 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
4730 592017 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
4731 592017 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
4732 592017 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
4733 592017 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
4734 592017 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
4735 592017 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
4736 592017 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
4737 592017 : in32 = GF_MUL( in32, 1 ); \
4738 592017 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
4739 592017 : in33 = GF_MUL( in33, 1 ); \
4740 592017 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
4741 592017 : in34 = GF_MUL( in34, 1 ); \
4742 592017 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
4743 592017 : in35 = GF_MUL( in35, 1 ); \
4744 592017 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
4745 592017 : in36 = GF_MUL( in36, 1 ); \
4746 592017 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
4747 592017 : in37 = GF_MUL( in37, 1 ); \
4748 592017 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
4749 592017 : in38 = GF_MUL( in38, 1 ); \
4750 592017 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
4751 592017 : in39 = GF_MUL( in39, 1 ); \
4752 592017 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
4753 592017 : in40 = GF_MUL( in40, 1 ); \
4754 592017 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
4755 592017 : in41 = GF_MUL( in41, 1 ); \
4756 592017 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
4757 592017 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
4758 592017 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
4759 592017 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
4760 592017 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
4761 592017 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
4762 592017 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
4763 592017 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
4764 592017 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
4765 592017 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
4766 592017 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
4767 592017 : in10 = GF_MUL( in10, 1 ); \
4768 592017 : in10 = GF_ADD( GF_MUL( scratch_42, 0 ), in10 ); \
4769 592017 : in11 = GF_MUL( in11, 1 ); \
4770 592017 : in11 = GF_ADD( GF_MUL( scratch_43, 0 ), in11 ); \
4771 592017 : in12 = GF_MUL( in12, 1 ); \
4772 592017 : in12 = GF_ADD( GF_MUL( scratch_44, 0 ), in12 ); \
4773 592017 : in13 = GF_MUL( in13, 1 ); \
4774 592017 : in13 = GF_ADD( GF_MUL( scratch_45, 0 ), in13 ); \
4775 592017 : in14 = GF_MUL( in14, 1 ); \
4776 592017 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
4777 592017 : in15 = GF_MUL( in15, 1 ); \
4778 592017 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
4779 592017 : in16 = GF_MUL( in16, 1 ); \
4780 592017 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
4781 592017 : in17 = GF_MUL( in17, 1 ); \
4782 592017 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
4783 592017 : in18 = GF_MUL( in18, 1 ); \
4784 592017 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
4785 592017 : in19 = GF_MUL( in19, 1 ); \
4786 592017 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
4787 592017 : in20 = GF_MUL( in20, 1 ); \
4788 592017 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
4789 592017 : in21 = GF_MUL( in21, 1 ); \
4790 592017 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
4791 592017 : in22 = GF_MUL( in22, 1 ); \
4792 592017 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
4793 592017 : in23 = GF_MUL( in23, 1 ); \
4794 592017 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
4795 592017 : in24 = GF_MUL( in24, 1 ); \
4796 592017 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
4797 592017 : in25 = GF_MUL( in25, 1 ); \
4798 592017 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
4799 592017 : in26 = GF_MUL( in26, 1 ); \
4800 592017 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
4801 592017 : in27 = GF_MUL( in27, 1 ); \
4802 592017 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
4803 592017 : in28 = GF_MUL( in28, 1 ); \
4804 592017 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
4805 592017 : in29 = GF_MUL( in29, 1 ); \
4806 592017 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
4807 592017 : in30 = GF_MUL( in30, 1 ); \
4808 592017 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
4809 592017 : in31 = GF_MUL( in31, 1 ); \
4810 592017 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
4811 592017 : } while( 0 )
4812 :
4813 : void fd_reedsol_ppt_64_43( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
4814 : #define FD_REEDSOL_PPT_IMPL_64_43( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
4815 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
4816 592017 : do { \
4817 592017 : gf_t scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_16, scratch_17, scratch_18, scratch_19, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26; \
4818 592017 : gf_t scratch_3, scratch_4, scratch_43, scratch_44, scratch_45, scratch_46, scratch_47, scratch_48, scratch_49, scratch_5, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55; \
4819 592017 : gf_t scratch_56, scratch_57, scratch_58, scratch_59, scratch_6, scratch_60, scratch_61, scratch_62, scratch_63; \
4820 592017 : scratch_43 = in43; \
4821 592017 : in43 = GF_MUL( in43, 1 ); \
4822 592017 : scratch_44 = in44; \
4823 592017 : in44 = GF_MUL( in44, 1 ); \
4824 592017 : scratch_45 = in45; \
4825 592017 : in45 = GF_MUL( in45, 1 ); \
4826 592017 : scratch_46 = in46; \
4827 592017 : in46 = GF_MUL( in46, 1 ); \
4828 592017 : scratch_47 = in47; \
4829 592017 : in47 = GF_MUL( in47, 1 ); \
4830 592017 : scratch_48 = in48; \
4831 592017 : in48 = GF_MUL( in48, 1 ); \
4832 592017 : scratch_49 = in49; \
4833 592017 : in49 = GF_MUL( in49, 1 ); \
4834 592017 : scratch_50 = in50; \
4835 592017 : in50 = GF_MUL( in50, 1 ); \
4836 592017 : scratch_51 = in51; \
4837 592017 : in51 = GF_MUL( in51, 1 ); \
4838 592017 : scratch_52 = in52; \
4839 592017 : in52 = GF_MUL( in52, 1 ); \
4840 592017 : scratch_53 = in53; \
4841 592017 : in53 = GF_MUL( in53, 1 ); \
4842 592017 : scratch_54 = in54; \
4843 592017 : in54 = GF_MUL( in54, 1 ); \
4844 592017 : scratch_55 = in55; \
4845 592017 : in55 = GF_MUL( in55, 1 ); \
4846 592017 : scratch_56 = in56; \
4847 592017 : in56 = GF_MUL( in56, 1 ); \
4848 592017 : scratch_57 = in57; \
4849 592017 : in57 = GF_MUL( in57, 1 ); \
4850 592017 : scratch_58 = in58; \
4851 592017 : in58 = GF_MUL( in58, 1 ); \
4852 592017 : scratch_59 = in59; \
4853 592017 : in59 = GF_MUL( in59, 1 ); \
4854 592017 : scratch_60 = in60; \
4855 592017 : in60 = GF_MUL( in60, 1 ); \
4856 592017 : scratch_61 = in61; \
4857 592017 : in61 = GF_MUL( in61, 1 ); \
4858 592017 : scratch_62 = in62; \
4859 592017 : in62 = GF_MUL( in62, 1 ); \
4860 592017 : scratch_63 = in63; \
4861 592017 : in63 = GF_MUL( in63, 1 ); \
4862 592017 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
4863 592017 : in43 = GF_ADD( GF_MUL( in11, 1 ), in43 ); \
4864 592017 : in44 = GF_ADD( GF_MUL( in12, 1 ), in44 ); \
4865 592017 : in45 = GF_ADD( GF_MUL( in13, 1 ), in45 ); \
4866 592017 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
4867 592017 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
4868 592017 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
4869 592017 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
4870 592017 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
4871 592017 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
4872 592017 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
4873 592017 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
4874 592017 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
4875 592017 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
4876 592017 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
4877 592017 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
4878 592017 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
4879 592017 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
4880 592017 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
4881 592017 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
4882 592017 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
4883 592017 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
4884 592017 : scratch_16 = in48; \
4885 592017 : in48 = GF_MUL( in48, 1 ); \
4886 592017 : scratch_17 = in49; \
4887 592017 : in49 = GF_MUL( in49, 1 ); \
4888 592017 : scratch_18 = in50; \
4889 592017 : in50 = GF_MUL( in50, 1 ); \
4890 592017 : scratch_19 = in51; \
4891 592017 : in51 = GF_MUL( in51, 1 ); \
4892 592017 : scratch_20 = in52; \
4893 592017 : in52 = GF_MUL( in52, 1 ); \
4894 592017 : scratch_21 = in53; \
4895 592017 : in53 = GF_MUL( in53, 1 ); \
4896 592017 : scratch_22 = in54; \
4897 592017 : in54 = GF_MUL( in54, 1 ); \
4898 592017 : scratch_23 = in55; \
4899 592017 : in55 = GF_MUL( in55, 1 ); \
4900 592017 : scratch_24 = in56; \
4901 592017 : in56 = GF_MUL( in56, 1 ); \
4902 592017 : scratch_25 = in57; \
4903 592017 : in57 = GF_MUL( in57, 1 ); \
4904 592017 : scratch_26 = in58; \
4905 592017 : in58 = GF_MUL( in58, 1 ); \
4906 592017 : GF_MUL22( in43, in59, 1, 71, 1, 70 ); \
4907 592017 : GF_MUL22( in44, in60, 1, 71, 1, 70 ); \
4908 592017 : GF_MUL22( in45, in61, 1, 71, 1, 70 ); \
4909 592017 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
4910 592017 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
4911 592017 : scratch_11 = in43; \
4912 592017 : in43 = GF_MUL( in43, 1 ); \
4913 592017 : scratch_12 = in44; \
4914 592017 : in44 = GF_MUL( in44, 1 ); \
4915 592017 : scratch_13 = in45; \
4916 592017 : in45 = GF_MUL( in45, 1 ); \
4917 592017 : scratch_14 = in46; \
4918 592017 : in46 = GF_MUL( in46, 1 ); \
4919 592017 : scratch_15 = in47; \
4920 592017 : in47 = GF_MUL( in47, 1 ); \
4921 592017 : FD_REEDSOL_GENERATE_IFFT( 8, 32, in32, in33, in34, in35, in36, in37, in38, in39 ); \
4922 592017 : in43 = GF_ADD( GF_MUL( in35, 1 ), in43 ); \
4923 592017 : in44 = GF_ADD( GF_MUL( in36, 1 ), in44 ); \
4924 592017 : in45 = GF_ADD( GF_MUL( in37, 1 ), in45 ); \
4925 592017 : in46 = GF_ADD( GF_MUL( in38, 1 ), in46 ); \
4926 592017 : in47 = GF_ADD( GF_MUL( in39, 1 ), in47 ); \
4927 592017 : scratch_4 = in44; \
4928 592017 : in44 = GF_MUL( in44, 1 ); \
4929 592017 : scratch_5 = in45; \
4930 592017 : in45 = GF_MUL( in45, 1 ); \
4931 592017 : scratch_6 = in46; \
4932 592017 : in46 = GF_MUL( in46, 1 ); \
4933 592017 : GF_MUL22( in43, in47, 1, 48, 1, 49 ); \
4934 592017 : scratch_3 = in43; \
4935 592017 : in43 = GF_MUL( in43, 1 ); \
4936 592017 : GF_MUL22( in40, in41, 41, 40, 1, 1 ); \
4937 592017 : in43 = GF_ADD( GF_MUL( in41, 1 ), in43 ); \
4938 592017 : GF_MUL22( in42, in43, 1, 42, 1, 1 ); \
4939 592017 : GF_MUL22( in40, in42, 240, 241, 1, 1 ); \
4940 592017 : in41 = GF_MUL( in41, 1 ); \
4941 592017 : in41 = GF_ADD( GF_MUL( scratch_3, 241 ), in41 ); \
4942 592017 : in44 = GF_ADD( GF_MUL( in40, 1 ), in44 ); \
4943 592017 : in45 = GF_ADD( GF_MUL( in41, 1 ), in45 ); \
4944 592017 : in46 = GF_ADD( GF_MUL( in42, 1 ), in46 ); \
4945 592017 : FD_REEDSOL_GENERATE_FFT( 4, 44, in44, in45, in46, in47 ); \
4946 592017 : in40 = GF_MUL( in40, 1 ); \
4947 592017 : in40 = GF_ADD( GF_MUL( scratch_4, 48 ), in40 ); \
4948 592017 : in41 = GF_MUL( in41, 1 ); \
4949 592017 : in41 = GF_ADD( GF_MUL( scratch_5, 48 ), in41 ); \
4950 592017 : in42 = GF_MUL( in42, 1 ); \
4951 592017 : in42 = GF_ADD( GF_MUL( scratch_6, 48 ), in42 ); \
4952 592017 : GF_MUL22( in32, in40, 175, 174, 1, 1 ); \
4953 592017 : GF_MUL22( in33, in41, 175, 174, 1, 1 ); \
4954 592017 : GF_MUL22( in34, in42, 175, 174, 1, 1 ); \
4955 592017 : in35 = GF_MUL( in35, 1 ); \
4956 592017 : in35 = GF_ADD( GF_MUL( scratch_11, 174 ), in35 ); \
4957 592017 : in36 = GF_MUL( in36, 1 ); \
4958 592017 : in36 = GF_ADD( GF_MUL( scratch_12, 174 ), in36 ); \
4959 592017 : in37 = GF_MUL( in37, 1 ); \
4960 592017 : in37 = GF_ADD( GF_MUL( scratch_13, 174 ), in37 ); \
4961 592017 : in38 = GF_MUL( in38, 1 ); \
4962 592017 : in38 = GF_ADD( GF_MUL( scratch_14, 174 ), in38 ); \
4963 592017 : in39 = GF_MUL( in39, 1 ); \
4964 592017 : in39 = GF_ADD( GF_MUL( scratch_15, 174 ), in39 ); \
4965 592017 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
4966 592017 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
4967 592017 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
4968 592017 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
4969 592017 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
4970 592017 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
4971 592017 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
4972 592017 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
4973 592017 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
4974 592017 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
4975 592017 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
4976 592017 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
4977 592017 : in32 = GF_MUL( in32, 1 ); \
4978 592017 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
4979 592017 : in33 = GF_MUL( in33, 1 ); \
4980 592017 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
4981 592017 : in34 = GF_MUL( in34, 1 ); \
4982 592017 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
4983 592017 : in35 = GF_MUL( in35, 1 ); \
4984 592017 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
4985 592017 : in36 = GF_MUL( in36, 1 ); \
4986 592017 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
4987 592017 : in37 = GF_MUL( in37, 1 ); \
4988 592017 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
4989 592017 : in38 = GF_MUL( in38, 1 ); \
4990 592017 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
4991 592017 : in39 = GF_MUL( in39, 1 ); \
4992 592017 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
4993 592017 : in40 = GF_MUL( in40, 1 ); \
4994 592017 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
4995 592017 : in41 = GF_MUL( in41, 1 ); \
4996 592017 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
4997 592017 : in42 = GF_MUL( in42, 1 ); \
4998 592017 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
4999 592017 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
5000 592017 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
5001 592017 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
5002 592017 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
5003 592017 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
5004 592017 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
5005 592017 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
5006 592017 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
5007 592017 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
5008 592017 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
5009 592017 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
5010 592017 : in11 = GF_MUL( in11, 1 ); \
5011 592017 : in11 = GF_ADD( GF_MUL( scratch_43, 0 ), in11 ); \
5012 592017 : in12 = GF_MUL( in12, 1 ); \
5013 592017 : in12 = GF_ADD( GF_MUL( scratch_44, 0 ), in12 ); \
5014 592017 : in13 = GF_MUL( in13, 1 ); \
5015 592017 : in13 = GF_ADD( GF_MUL( scratch_45, 0 ), in13 ); \
5016 592017 : in14 = GF_MUL( in14, 1 ); \
5017 592017 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
5018 592017 : in15 = GF_MUL( in15, 1 ); \
5019 592017 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
5020 592017 : in16 = GF_MUL( in16, 1 ); \
5021 592017 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
5022 592017 : in17 = GF_MUL( in17, 1 ); \
5023 592017 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
5024 592017 : in18 = GF_MUL( in18, 1 ); \
5025 592017 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
5026 592017 : in19 = GF_MUL( in19, 1 ); \
5027 592017 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
5028 592017 : in20 = GF_MUL( in20, 1 ); \
5029 592017 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
5030 592017 : in21 = GF_MUL( in21, 1 ); \
5031 592017 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
5032 592017 : in22 = GF_MUL( in22, 1 ); \
5033 592017 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
5034 592017 : in23 = GF_MUL( in23, 1 ); \
5035 592017 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
5036 592017 : in24 = GF_MUL( in24, 1 ); \
5037 592017 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
5038 592017 : in25 = GF_MUL( in25, 1 ); \
5039 592017 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
5040 592017 : in26 = GF_MUL( in26, 1 ); \
5041 592017 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
5042 592017 : in27 = GF_MUL( in27, 1 ); \
5043 592017 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
5044 592017 : in28 = GF_MUL( in28, 1 ); \
5045 592017 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
5046 592017 : in29 = GF_MUL( in29, 1 ); \
5047 592017 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
5048 592017 : in30 = GF_MUL( in30, 1 ); \
5049 592017 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
5050 592017 : in31 = GF_MUL( in31, 1 ); \
5051 592017 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
5052 592017 : } while( 0 )
5053 :
5054 : void fd_reedsol_ppt_64_44( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
5055 : #define FD_REEDSOL_PPT_IMPL_64_44( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
5056 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
5057 601713 : do { \
5058 601713 : gf_t scratch_12, scratch_13, scratch_14, scratch_15, scratch_16, scratch_17, scratch_18, scratch_19, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27; \
5059 601713 : gf_t scratch_4, scratch_44, scratch_45, scratch_46, scratch_47, scratch_48, scratch_49, scratch_5, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57; \
5060 601713 : gf_t scratch_58, scratch_59, scratch_6, scratch_60, scratch_61, scratch_62, scratch_63, scratch_7; \
5061 601713 : scratch_44 = in44; \
5062 601713 : in44 = GF_MUL( in44, 1 ); \
5063 601713 : scratch_45 = in45; \
5064 601713 : in45 = GF_MUL( in45, 1 ); \
5065 601713 : scratch_46 = in46; \
5066 601713 : in46 = GF_MUL( in46, 1 ); \
5067 601713 : scratch_47 = in47; \
5068 601713 : in47 = GF_MUL( in47, 1 ); \
5069 601713 : scratch_48 = in48; \
5070 601713 : in48 = GF_MUL( in48, 1 ); \
5071 601713 : scratch_49 = in49; \
5072 601713 : in49 = GF_MUL( in49, 1 ); \
5073 601713 : scratch_50 = in50; \
5074 601713 : in50 = GF_MUL( in50, 1 ); \
5075 601713 : scratch_51 = in51; \
5076 601713 : in51 = GF_MUL( in51, 1 ); \
5077 601713 : scratch_52 = in52; \
5078 601713 : in52 = GF_MUL( in52, 1 ); \
5079 601713 : scratch_53 = in53; \
5080 601713 : in53 = GF_MUL( in53, 1 ); \
5081 601713 : scratch_54 = in54; \
5082 601713 : in54 = GF_MUL( in54, 1 ); \
5083 601713 : scratch_55 = in55; \
5084 601713 : in55 = GF_MUL( in55, 1 ); \
5085 601713 : scratch_56 = in56; \
5086 601713 : in56 = GF_MUL( in56, 1 ); \
5087 601713 : scratch_57 = in57; \
5088 601713 : in57 = GF_MUL( in57, 1 ); \
5089 601713 : scratch_58 = in58; \
5090 601713 : in58 = GF_MUL( in58, 1 ); \
5091 601713 : scratch_59 = in59; \
5092 601713 : in59 = GF_MUL( in59, 1 ); \
5093 601713 : scratch_60 = in60; \
5094 601713 : in60 = GF_MUL( in60, 1 ); \
5095 601713 : scratch_61 = in61; \
5096 601713 : in61 = GF_MUL( in61, 1 ); \
5097 601713 : scratch_62 = in62; \
5098 601713 : in62 = GF_MUL( in62, 1 ); \
5099 601713 : scratch_63 = in63; \
5100 601713 : in63 = GF_MUL( in63, 1 ); \
5101 601713 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
5102 601713 : in44 = GF_ADD( GF_MUL( in12, 1 ), in44 ); \
5103 601713 : in45 = GF_ADD( GF_MUL( in13, 1 ), in45 ); \
5104 601713 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
5105 601713 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
5106 601713 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
5107 601713 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
5108 601713 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
5109 601713 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
5110 601713 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
5111 601713 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
5112 601713 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
5113 601713 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
5114 601713 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
5115 601713 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
5116 601713 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
5117 601713 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
5118 601713 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
5119 601713 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
5120 601713 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
5121 601713 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
5122 601713 : scratch_16 = in48; \
5123 601713 : in48 = GF_MUL( in48, 1 ); \
5124 601713 : scratch_17 = in49; \
5125 601713 : in49 = GF_MUL( in49, 1 ); \
5126 601713 : scratch_18 = in50; \
5127 601713 : in50 = GF_MUL( in50, 1 ); \
5128 601713 : scratch_19 = in51; \
5129 601713 : in51 = GF_MUL( in51, 1 ); \
5130 601713 : scratch_20 = in52; \
5131 601713 : in52 = GF_MUL( in52, 1 ); \
5132 601713 : scratch_21 = in53; \
5133 601713 : in53 = GF_MUL( in53, 1 ); \
5134 601713 : scratch_22 = in54; \
5135 601713 : in54 = GF_MUL( in54, 1 ); \
5136 601713 : scratch_23 = in55; \
5137 601713 : in55 = GF_MUL( in55, 1 ); \
5138 601713 : scratch_24 = in56; \
5139 601713 : in56 = GF_MUL( in56, 1 ); \
5140 601713 : scratch_25 = in57; \
5141 601713 : in57 = GF_MUL( in57, 1 ); \
5142 601713 : scratch_26 = in58; \
5143 601713 : in58 = GF_MUL( in58, 1 ); \
5144 601713 : scratch_27 = in59; \
5145 601713 : in59 = GF_MUL( in59, 1 ); \
5146 601713 : GF_MUL22( in44, in60, 1, 71, 1, 70 ); \
5147 601713 : GF_MUL22( in45, in61, 1, 71, 1, 70 ); \
5148 601713 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
5149 601713 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
5150 601713 : scratch_12 = in44; \
5151 601713 : in44 = GF_MUL( in44, 1 ); \
5152 601713 : scratch_13 = in45; \
5153 601713 : in45 = GF_MUL( in45, 1 ); \
5154 601713 : scratch_14 = in46; \
5155 601713 : in46 = GF_MUL( in46, 1 ); \
5156 601713 : scratch_15 = in47; \
5157 601713 : in47 = GF_MUL( in47, 1 ); \
5158 601713 : FD_REEDSOL_GENERATE_IFFT( 8, 32, in32, in33, in34, in35, in36, in37, in38, in39 ); \
5159 601713 : in44 = GF_ADD( GF_MUL( in36, 1 ), in44 ); \
5160 601713 : in45 = GF_ADD( GF_MUL( in37, 1 ), in45 ); \
5161 601713 : in46 = GF_ADD( GF_MUL( in38, 1 ), in46 ); \
5162 601713 : in47 = GF_ADD( GF_MUL( in39, 1 ), in47 ); \
5163 601713 : scratch_4 = in44; \
5164 601713 : in44 = GF_MUL( in44, 1 ); \
5165 601713 : scratch_5 = in45; \
5166 601713 : in45 = GF_MUL( in45, 1 ); \
5167 601713 : scratch_6 = in46; \
5168 601713 : in46 = GF_MUL( in46, 1 ); \
5169 601713 : scratch_7 = in47; \
5170 601713 : in47 = GF_MUL( in47, 1 ); \
5171 601713 : FD_REEDSOL_GENERATE_IFFT( 4, 40, in40, in41, in42, in43 ); \
5172 601713 : in44 = GF_ADD( GF_MUL( in40, 1 ), in44 ); \
5173 601713 : in45 = GF_ADD( GF_MUL( in41, 1 ), in45 ); \
5174 601713 : in46 = GF_ADD( GF_MUL( in42, 1 ), in46 ); \
5175 601713 : in47 = GF_ADD( GF_MUL( in43, 1 ), in47 ); \
5176 601713 : FD_REEDSOL_GENERATE_FFT( 4, 44, in44, in45, in46, in47 ); \
5177 601713 : in40 = GF_MUL( in40, 1 ); \
5178 601713 : in40 = GF_ADD( GF_MUL( scratch_4, 48 ), in40 ); \
5179 601713 : in41 = GF_MUL( in41, 1 ); \
5180 601713 : in41 = GF_ADD( GF_MUL( scratch_5, 48 ), in41 ); \
5181 601713 : in42 = GF_MUL( in42, 1 ); \
5182 601713 : in42 = GF_ADD( GF_MUL( scratch_6, 48 ), in42 ); \
5183 601713 : in43 = GF_MUL( in43, 1 ); \
5184 601713 : in43 = GF_ADD( GF_MUL( scratch_7, 48 ), in43 ); \
5185 601713 : GF_MUL22( in32, in40, 175, 174, 1, 1 ); \
5186 601713 : GF_MUL22( in33, in41, 175, 174, 1, 1 ); \
5187 601713 : GF_MUL22( in34, in42, 175, 174, 1, 1 ); \
5188 601713 : GF_MUL22( in35, in43, 175, 174, 1, 1 ); \
5189 601713 : in36 = GF_MUL( in36, 1 ); \
5190 601713 : in36 = GF_ADD( GF_MUL( scratch_12, 174 ), in36 ); \
5191 601713 : in37 = GF_MUL( in37, 1 ); \
5192 601713 : in37 = GF_ADD( GF_MUL( scratch_13, 174 ), in37 ); \
5193 601713 : in38 = GF_MUL( in38, 1 ); \
5194 601713 : in38 = GF_ADD( GF_MUL( scratch_14, 174 ), in38 ); \
5195 601713 : in39 = GF_MUL( in39, 1 ); \
5196 601713 : in39 = GF_ADD( GF_MUL( scratch_15, 174 ), in39 ); \
5197 601713 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
5198 601713 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
5199 601713 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
5200 601713 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
5201 601713 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
5202 601713 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
5203 601713 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
5204 601713 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
5205 601713 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
5206 601713 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
5207 601713 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
5208 601713 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
5209 601713 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
5210 601713 : in32 = GF_MUL( in32, 1 ); \
5211 601713 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
5212 601713 : in33 = GF_MUL( in33, 1 ); \
5213 601713 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
5214 601713 : in34 = GF_MUL( in34, 1 ); \
5215 601713 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
5216 601713 : in35 = GF_MUL( in35, 1 ); \
5217 601713 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
5218 601713 : in36 = GF_MUL( in36, 1 ); \
5219 601713 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
5220 601713 : in37 = GF_MUL( in37, 1 ); \
5221 601713 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
5222 601713 : in38 = GF_MUL( in38, 1 ); \
5223 601713 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
5224 601713 : in39 = GF_MUL( in39, 1 ); \
5225 601713 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
5226 601713 : in40 = GF_MUL( in40, 1 ); \
5227 601713 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
5228 601713 : in41 = GF_MUL( in41, 1 ); \
5229 601713 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
5230 601713 : in42 = GF_MUL( in42, 1 ); \
5231 601713 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
5232 601713 : in43 = GF_MUL( in43, 1 ); \
5233 601713 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
5234 601713 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
5235 601713 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
5236 601713 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
5237 601713 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
5238 601713 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
5239 601713 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
5240 601713 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
5241 601713 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
5242 601713 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
5243 601713 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
5244 601713 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
5245 601713 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
5246 601713 : in12 = GF_MUL( in12, 1 ); \
5247 601713 : in12 = GF_ADD( GF_MUL( scratch_44, 0 ), in12 ); \
5248 601713 : in13 = GF_MUL( in13, 1 ); \
5249 601713 : in13 = GF_ADD( GF_MUL( scratch_45, 0 ), in13 ); \
5250 601713 : in14 = GF_MUL( in14, 1 ); \
5251 601713 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
5252 601713 : in15 = GF_MUL( in15, 1 ); \
5253 601713 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
5254 601713 : in16 = GF_MUL( in16, 1 ); \
5255 601713 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
5256 601713 : in17 = GF_MUL( in17, 1 ); \
5257 601713 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
5258 601713 : in18 = GF_MUL( in18, 1 ); \
5259 601713 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
5260 601713 : in19 = GF_MUL( in19, 1 ); \
5261 601713 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
5262 601713 : in20 = GF_MUL( in20, 1 ); \
5263 601713 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
5264 601713 : in21 = GF_MUL( in21, 1 ); \
5265 601713 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
5266 601713 : in22 = GF_MUL( in22, 1 ); \
5267 601713 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
5268 601713 : in23 = GF_MUL( in23, 1 ); \
5269 601713 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
5270 601713 : in24 = GF_MUL( in24, 1 ); \
5271 601713 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
5272 601713 : in25 = GF_MUL( in25, 1 ); \
5273 601713 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
5274 601713 : in26 = GF_MUL( in26, 1 ); \
5275 601713 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
5276 601713 : in27 = GF_MUL( in27, 1 ); \
5277 601713 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
5278 601713 : in28 = GF_MUL( in28, 1 ); \
5279 601713 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
5280 601713 : in29 = GF_MUL( in29, 1 ); \
5281 601713 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
5282 601713 : in30 = GF_MUL( in30, 1 ); \
5283 601713 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
5284 601713 : in31 = GF_MUL( in31, 1 ); \
5285 601713 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
5286 601713 : } while( 0 )
5287 :
5288 : void fd_reedsol_ppt_64_45( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
5289 : #define FD_REEDSOL_PPT_IMPL_64_45( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
5290 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
5291 592113 : do { \
5292 592113 : gf_t scratch_13, scratch_14, scratch_15, scratch_16, scratch_17, scratch_18, scratch_19, scratch_2, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27; \
5293 592113 : gf_t scratch_28, scratch_45, scratch_46, scratch_47, scratch_48, scratch_49, scratch_5, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58; \
5294 592113 : gf_t scratch_59, scratch_6, scratch_60, scratch_61, scratch_62, scratch_63, scratch_7; \
5295 592113 : scratch_45 = in45; \
5296 592113 : in45 = GF_MUL( in45, 1 ); \
5297 592113 : scratch_46 = in46; \
5298 592113 : in46 = GF_MUL( in46, 1 ); \
5299 592113 : scratch_47 = in47; \
5300 592113 : in47 = GF_MUL( in47, 1 ); \
5301 592113 : scratch_48 = in48; \
5302 592113 : in48 = GF_MUL( in48, 1 ); \
5303 592113 : scratch_49 = in49; \
5304 592113 : in49 = GF_MUL( in49, 1 ); \
5305 592113 : scratch_50 = in50; \
5306 592113 : in50 = GF_MUL( in50, 1 ); \
5307 592113 : scratch_51 = in51; \
5308 592113 : in51 = GF_MUL( in51, 1 ); \
5309 592113 : scratch_52 = in52; \
5310 592113 : in52 = GF_MUL( in52, 1 ); \
5311 592113 : scratch_53 = in53; \
5312 592113 : in53 = GF_MUL( in53, 1 ); \
5313 592113 : scratch_54 = in54; \
5314 592113 : in54 = GF_MUL( in54, 1 ); \
5315 592113 : scratch_55 = in55; \
5316 592113 : in55 = GF_MUL( in55, 1 ); \
5317 592113 : scratch_56 = in56; \
5318 592113 : in56 = GF_MUL( in56, 1 ); \
5319 592113 : scratch_57 = in57; \
5320 592113 : in57 = GF_MUL( in57, 1 ); \
5321 592113 : scratch_58 = in58; \
5322 592113 : in58 = GF_MUL( in58, 1 ); \
5323 592113 : scratch_59 = in59; \
5324 592113 : in59 = GF_MUL( in59, 1 ); \
5325 592113 : scratch_60 = in60; \
5326 592113 : in60 = GF_MUL( in60, 1 ); \
5327 592113 : scratch_61 = in61; \
5328 592113 : in61 = GF_MUL( in61, 1 ); \
5329 592113 : scratch_62 = in62; \
5330 592113 : in62 = GF_MUL( in62, 1 ); \
5331 592113 : scratch_63 = in63; \
5332 592113 : in63 = GF_MUL( in63, 1 ); \
5333 592113 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
5334 592113 : in45 = GF_ADD( GF_MUL( in13, 1 ), in45 ); \
5335 592113 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
5336 592113 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
5337 592113 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
5338 592113 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
5339 592113 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
5340 592113 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
5341 592113 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
5342 592113 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
5343 592113 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
5344 592113 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
5345 592113 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
5346 592113 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
5347 592113 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
5348 592113 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
5349 592113 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
5350 592113 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
5351 592113 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
5352 592113 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
5353 592113 : scratch_16 = in48; \
5354 592113 : in48 = GF_MUL( in48, 1 ); \
5355 592113 : scratch_17 = in49; \
5356 592113 : in49 = GF_MUL( in49, 1 ); \
5357 592113 : scratch_18 = in50; \
5358 592113 : in50 = GF_MUL( in50, 1 ); \
5359 592113 : scratch_19 = in51; \
5360 592113 : in51 = GF_MUL( in51, 1 ); \
5361 592113 : scratch_20 = in52; \
5362 592113 : in52 = GF_MUL( in52, 1 ); \
5363 592113 : scratch_21 = in53; \
5364 592113 : in53 = GF_MUL( in53, 1 ); \
5365 592113 : scratch_22 = in54; \
5366 592113 : in54 = GF_MUL( in54, 1 ); \
5367 592113 : scratch_23 = in55; \
5368 592113 : in55 = GF_MUL( in55, 1 ); \
5369 592113 : scratch_24 = in56; \
5370 592113 : in56 = GF_MUL( in56, 1 ); \
5371 592113 : scratch_25 = in57; \
5372 592113 : in57 = GF_MUL( in57, 1 ); \
5373 592113 : scratch_26 = in58; \
5374 592113 : in58 = GF_MUL( in58, 1 ); \
5375 592113 : scratch_27 = in59; \
5376 592113 : in59 = GF_MUL( in59, 1 ); \
5377 592113 : scratch_28 = in60; \
5378 592113 : in60 = GF_MUL( in60, 1 ); \
5379 592113 : GF_MUL22( in45, in61, 1, 71, 1, 70 ); \
5380 592113 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
5381 592113 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
5382 592113 : scratch_13 = in45; \
5383 592113 : in45 = GF_MUL( in45, 1 ); \
5384 592113 : scratch_14 = in46; \
5385 592113 : in46 = GF_MUL( in46, 1 ); \
5386 592113 : scratch_15 = in47; \
5387 592113 : in47 = GF_MUL( in47, 1 ); \
5388 592113 : FD_REEDSOL_GENERATE_IFFT( 8, 32, in32, in33, in34, in35, in36, in37, in38, in39 ); \
5389 592113 : in45 = GF_ADD( GF_MUL( in37, 1 ), in45 ); \
5390 592113 : in46 = GF_ADD( GF_MUL( in38, 1 ), in46 ); \
5391 592113 : in47 = GF_ADD( GF_MUL( in39, 1 ), in47 ); \
5392 592113 : scratch_5 = in45; \
5393 592113 : in45 = GF_MUL( in45, 1 ); \
5394 592113 : scratch_6 = in46; \
5395 592113 : in46 = GF_MUL( in46, 1 ); \
5396 592113 : scratch_7 = in47; \
5397 592113 : in47 = GF_MUL( in47, 1 ); \
5398 592113 : FD_REEDSOL_GENERATE_IFFT( 4, 40, in40, in41, in42, in43 ); \
5399 592113 : in45 = GF_ADD( GF_MUL( in41, 1 ), in45 ); \
5400 592113 : in46 = GF_ADD( GF_MUL( in42, 1 ), in46 ); \
5401 592113 : in47 = GF_ADD( GF_MUL( in43, 1 ), in47 ); \
5402 592113 : scratch_2 = in46; \
5403 592113 : in46 = GF_MUL( in46, 1 ); \
5404 592113 : GF_MUL22( in45, in47, 1, 247, 1, 246 ); \
5405 592113 : GF_MUL22( in44, in45, 1, 44, 1, 1 ); \
5406 592113 : in46 = GF_ADD( GF_MUL( in44, 1 ), in46 ); \
5407 592113 : GF_MUL22( in46, in47, 1, 46, 1, 47 ); \
5408 592113 : in44 = GF_MUL( in44, 1 ); \
5409 592113 : in44 = GF_ADD( GF_MUL( scratch_2, 247 ), in44 ); \
5410 592113 : GF_MUL22( in40, in44, 49, 48, 1, 1 ); \
5411 592113 : in41 = GF_MUL( in41, 1 ); \
5412 592113 : in41 = GF_ADD( GF_MUL( scratch_5, 48 ), in41 ); \
5413 592113 : in42 = GF_MUL( in42, 1 ); \
5414 592113 : in42 = GF_ADD( GF_MUL( scratch_6, 48 ), in42 ); \
5415 592113 : in43 = GF_MUL( in43, 1 ); \
5416 592113 : in43 = GF_ADD( GF_MUL( scratch_7, 48 ), in43 ); \
5417 592113 : GF_MUL22( in32, in40, 175, 174, 1, 1 ); \
5418 592113 : GF_MUL22( in33, in41, 175, 174, 1, 1 ); \
5419 592113 : GF_MUL22( in34, in42, 175, 174, 1, 1 ); \
5420 592113 : GF_MUL22( in35, in43, 175, 174, 1, 1 ); \
5421 592113 : GF_MUL22( in36, in44, 175, 174, 1, 1 ); \
5422 592113 : in37 = GF_MUL( in37, 1 ); \
5423 592113 : in37 = GF_ADD( GF_MUL( scratch_13, 174 ), in37 ); \
5424 592113 : in38 = GF_MUL( in38, 1 ); \
5425 592113 : in38 = GF_ADD( GF_MUL( scratch_14, 174 ), in38 ); \
5426 592113 : in39 = GF_MUL( in39, 1 ); \
5427 592113 : in39 = GF_ADD( GF_MUL( scratch_15, 174 ), in39 ); \
5428 592113 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
5429 592113 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
5430 592113 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
5431 592113 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
5432 592113 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
5433 592113 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
5434 592113 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
5435 592113 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
5436 592113 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
5437 592113 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
5438 592113 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
5439 592113 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
5440 592113 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
5441 592113 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
5442 592113 : in32 = GF_MUL( in32, 1 ); \
5443 592113 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
5444 592113 : in33 = GF_MUL( in33, 1 ); \
5445 592113 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
5446 592113 : in34 = GF_MUL( in34, 1 ); \
5447 592113 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
5448 592113 : in35 = GF_MUL( in35, 1 ); \
5449 592113 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
5450 592113 : in36 = GF_MUL( in36, 1 ); \
5451 592113 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
5452 592113 : in37 = GF_MUL( in37, 1 ); \
5453 592113 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
5454 592113 : in38 = GF_MUL( in38, 1 ); \
5455 592113 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
5456 592113 : in39 = GF_MUL( in39, 1 ); \
5457 592113 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
5458 592113 : in40 = GF_MUL( in40, 1 ); \
5459 592113 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
5460 592113 : in41 = GF_MUL( in41, 1 ); \
5461 592113 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
5462 592113 : in42 = GF_MUL( in42, 1 ); \
5463 592113 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
5464 592113 : in43 = GF_MUL( in43, 1 ); \
5465 592113 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
5466 592113 : in44 = GF_MUL( in44, 1 ); \
5467 592113 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
5468 592113 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
5469 592113 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
5470 592113 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
5471 592113 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
5472 592113 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
5473 592113 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
5474 592113 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
5475 592113 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
5476 592113 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
5477 592113 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
5478 592113 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
5479 592113 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
5480 592113 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
5481 592113 : in13 = GF_MUL( in13, 1 ); \
5482 592113 : in13 = GF_ADD( GF_MUL( scratch_45, 0 ), in13 ); \
5483 592113 : in14 = GF_MUL( in14, 1 ); \
5484 592113 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
5485 592113 : in15 = GF_MUL( in15, 1 ); \
5486 592113 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
5487 592113 : in16 = GF_MUL( in16, 1 ); \
5488 592113 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
5489 592113 : in17 = GF_MUL( in17, 1 ); \
5490 592113 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
5491 592113 : in18 = GF_MUL( in18, 1 ); \
5492 592113 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
5493 592113 : in19 = GF_MUL( in19, 1 ); \
5494 592113 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
5495 592113 : in20 = GF_MUL( in20, 1 ); \
5496 592113 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
5497 592113 : in21 = GF_MUL( in21, 1 ); \
5498 592113 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
5499 592113 : in22 = GF_MUL( in22, 1 ); \
5500 592113 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
5501 592113 : in23 = GF_MUL( in23, 1 ); \
5502 592113 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
5503 592113 : in24 = GF_MUL( in24, 1 ); \
5504 592113 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
5505 592113 : in25 = GF_MUL( in25, 1 ); \
5506 592113 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
5507 592113 : in26 = GF_MUL( in26, 1 ); \
5508 592113 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
5509 592113 : in27 = GF_MUL( in27, 1 ); \
5510 592113 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
5511 592113 : in28 = GF_MUL( in28, 1 ); \
5512 592113 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
5513 592113 : in29 = GF_MUL( in29, 1 ); \
5514 592113 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
5515 592113 : in30 = GF_MUL( in30, 1 ); \
5516 592113 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
5517 592113 : in31 = GF_MUL( in31, 1 ); \
5518 592113 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
5519 592113 : } while( 0 )
5520 :
5521 : void fd_reedsol_ppt_64_46( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
5522 : #define FD_REEDSOL_PPT_IMPL_64_46( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
5523 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
5524 592305 : do { \
5525 592305 : gf_t scratch_14, scratch_15, scratch_16, scratch_17, scratch_18, scratch_19, scratch_2, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28; \
5526 592305 : gf_t scratch_29, scratch_3, scratch_46, scratch_47, scratch_48, scratch_49, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59; \
5527 592305 : gf_t scratch_6, scratch_60, scratch_61, scratch_62, scratch_63, scratch_7; \
5528 592305 : scratch_46 = in46; \
5529 592305 : in46 = GF_MUL( in46, 1 ); \
5530 592305 : scratch_47 = in47; \
5531 592305 : in47 = GF_MUL( in47, 1 ); \
5532 592305 : scratch_48 = in48; \
5533 592305 : in48 = GF_MUL( in48, 1 ); \
5534 592305 : scratch_49 = in49; \
5535 592305 : in49 = GF_MUL( in49, 1 ); \
5536 592305 : scratch_50 = in50; \
5537 592305 : in50 = GF_MUL( in50, 1 ); \
5538 592305 : scratch_51 = in51; \
5539 592305 : in51 = GF_MUL( in51, 1 ); \
5540 592305 : scratch_52 = in52; \
5541 592305 : in52 = GF_MUL( in52, 1 ); \
5542 592305 : scratch_53 = in53; \
5543 592305 : in53 = GF_MUL( in53, 1 ); \
5544 592305 : scratch_54 = in54; \
5545 592305 : in54 = GF_MUL( in54, 1 ); \
5546 592305 : scratch_55 = in55; \
5547 592305 : in55 = GF_MUL( in55, 1 ); \
5548 592305 : scratch_56 = in56; \
5549 592305 : in56 = GF_MUL( in56, 1 ); \
5550 592305 : scratch_57 = in57; \
5551 592305 : in57 = GF_MUL( in57, 1 ); \
5552 592305 : scratch_58 = in58; \
5553 592305 : in58 = GF_MUL( in58, 1 ); \
5554 592305 : scratch_59 = in59; \
5555 592305 : in59 = GF_MUL( in59, 1 ); \
5556 592305 : scratch_60 = in60; \
5557 592305 : in60 = GF_MUL( in60, 1 ); \
5558 592305 : scratch_61 = in61; \
5559 592305 : in61 = GF_MUL( in61, 1 ); \
5560 592305 : scratch_62 = in62; \
5561 592305 : in62 = GF_MUL( in62, 1 ); \
5562 592305 : scratch_63 = in63; \
5563 592305 : in63 = GF_MUL( in63, 1 ); \
5564 592305 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
5565 592305 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
5566 592305 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
5567 592305 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
5568 592305 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
5569 592305 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
5570 592305 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
5571 592305 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
5572 592305 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
5573 592305 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
5574 592305 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
5575 592305 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
5576 592305 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
5577 592305 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
5578 592305 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
5579 592305 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
5580 592305 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
5581 592305 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
5582 592305 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
5583 592305 : scratch_16 = in48; \
5584 592305 : in48 = GF_MUL( in48, 1 ); \
5585 592305 : scratch_17 = in49; \
5586 592305 : in49 = GF_MUL( in49, 1 ); \
5587 592305 : scratch_18 = in50; \
5588 592305 : in50 = GF_MUL( in50, 1 ); \
5589 592305 : scratch_19 = in51; \
5590 592305 : in51 = GF_MUL( in51, 1 ); \
5591 592305 : scratch_20 = in52; \
5592 592305 : in52 = GF_MUL( in52, 1 ); \
5593 592305 : scratch_21 = in53; \
5594 592305 : in53 = GF_MUL( in53, 1 ); \
5595 592305 : scratch_22 = in54; \
5596 592305 : in54 = GF_MUL( in54, 1 ); \
5597 592305 : scratch_23 = in55; \
5598 592305 : in55 = GF_MUL( in55, 1 ); \
5599 592305 : scratch_24 = in56; \
5600 592305 : in56 = GF_MUL( in56, 1 ); \
5601 592305 : scratch_25 = in57; \
5602 592305 : in57 = GF_MUL( in57, 1 ); \
5603 592305 : scratch_26 = in58; \
5604 592305 : in58 = GF_MUL( in58, 1 ); \
5605 592305 : scratch_27 = in59; \
5606 592305 : in59 = GF_MUL( in59, 1 ); \
5607 592305 : scratch_28 = in60; \
5608 592305 : in60 = GF_MUL( in60, 1 ); \
5609 592305 : scratch_29 = in61; \
5610 592305 : in61 = GF_MUL( in61, 1 ); \
5611 592305 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
5612 592305 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
5613 592305 : scratch_14 = in46; \
5614 592305 : in46 = GF_MUL( in46, 1 ); \
5615 592305 : scratch_15 = in47; \
5616 592305 : in47 = GF_MUL( in47, 1 ); \
5617 592305 : FD_REEDSOL_GENERATE_IFFT( 8, 32, in32, in33, in34, in35, in36, in37, in38, in39 ); \
5618 592305 : in46 = GF_ADD( GF_MUL( in38, 1 ), in46 ); \
5619 592305 : in47 = GF_ADD( GF_MUL( in39, 1 ), in47 ); \
5620 592305 : scratch_6 = in46; \
5621 592305 : in46 = GF_MUL( in46, 1 ); \
5622 592305 : scratch_7 = in47; \
5623 592305 : in47 = GF_MUL( in47, 1 ); \
5624 592305 : FD_REEDSOL_GENERATE_IFFT( 4, 40, in40, in41, in42, in43 ); \
5625 592305 : in46 = GF_ADD( GF_MUL( in42, 1 ), in46 ); \
5626 592305 : in47 = GF_ADD( GF_MUL( in43, 1 ), in47 ); \
5627 592305 : scratch_2 = in46; \
5628 592305 : in46 = GF_MUL( in46, 1 ); \
5629 592305 : scratch_3 = in47; \
5630 592305 : in47 = GF_MUL( in47, 1 ); \
5631 592305 : GF_MUL22( in44, in45, 45, 44, 1, 1 ); \
5632 592305 : in46 = GF_ADD( GF_MUL( in44, 1 ), in46 ); \
5633 592305 : in47 = GF_ADD( GF_MUL( in45, 1 ), in47 ); \
5634 592305 : GF_MUL22( in46, in47, 1, 46, 1, 47 ); \
5635 592305 : in44 = GF_MUL( in44, 1 ); \
5636 592305 : in44 = GF_ADD( GF_MUL( scratch_2, 247 ), in44 ); \
5637 592305 : in45 = GF_MUL( in45, 1 ); \
5638 592305 : in45 = GF_ADD( GF_MUL( scratch_3, 247 ), in45 ); \
5639 592305 : GF_MUL22( in40, in44, 49, 48, 1, 1 ); \
5640 592305 : GF_MUL22( in41, in45, 49, 48, 1, 1 ); \
5641 592305 : in42 = GF_MUL( in42, 1 ); \
5642 592305 : in42 = GF_ADD( GF_MUL( scratch_6, 48 ), in42 ); \
5643 592305 : in43 = GF_MUL( in43, 1 ); \
5644 592305 : in43 = GF_ADD( GF_MUL( scratch_7, 48 ), in43 ); \
5645 592305 : GF_MUL22( in32, in40, 175, 174, 1, 1 ); \
5646 592305 : GF_MUL22( in33, in41, 175, 174, 1, 1 ); \
5647 592305 : GF_MUL22( in34, in42, 175, 174, 1, 1 ); \
5648 592305 : GF_MUL22( in35, in43, 175, 174, 1, 1 ); \
5649 592305 : GF_MUL22( in36, in44, 175, 174, 1, 1 ); \
5650 592305 : GF_MUL22( in37, in45, 175, 174, 1, 1 ); \
5651 592305 : in38 = GF_MUL( in38, 1 ); \
5652 592305 : in38 = GF_ADD( GF_MUL( scratch_14, 174 ), in38 ); \
5653 592305 : in39 = GF_MUL( in39, 1 ); \
5654 592305 : in39 = GF_ADD( GF_MUL( scratch_15, 174 ), in39 ); \
5655 592305 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
5656 592305 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
5657 592305 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
5658 592305 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
5659 592305 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
5660 592305 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
5661 592305 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
5662 592305 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
5663 592305 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
5664 592305 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
5665 592305 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
5666 592305 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
5667 592305 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
5668 592305 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
5669 592305 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
5670 592305 : in32 = GF_MUL( in32, 1 ); \
5671 592305 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
5672 592305 : in33 = GF_MUL( in33, 1 ); \
5673 592305 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
5674 592305 : in34 = GF_MUL( in34, 1 ); \
5675 592305 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
5676 592305 : in35 = GF_MUL( in35, 1 ); \
5677 592305 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
5678 592305 : in36 = GF_MUL( in36, 1 ); \
5679 592305 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
5680 592305 : in37 = GF_MUL( in37, 1 ); \
5681 592305 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
5682 592305 : in38 = GF_MUL( in38, 1 ); \
5683 592305 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
5684 592305 : in39 = GF_MUL( in39, 1 ); \
5685 592305 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
5686 592305 : in40 = GF_MUL( in40, 1 ); \
5687 592305 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
5688 592305 : in41 = GF_MUL( in41, 1 ); \
5689 592305 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
5690 592305 : in42 = GF_MUL( in42, 1 ); \
5691 592305 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
5692 592305 : in43 = GF_MUL( in43, 1 ); \
5693 592305 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
5694 592305 : in44 = GF_MUL( in44, 1 ); \
5695 592305 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
5696 592305 : in45 = GF_MUL( in45, 1 ); \
5697 592305 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
5698 592305 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
5699 592305 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
5700 592305 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
5701 592305 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
5702 592305 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
5703 592305 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
5704 592305 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
5705 592305 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
5706 592305 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
5707 592305 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
5708 592305 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
5709 592305 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
5710 592305 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
5711 592305 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
5712 592305 : in14 = GF_MUL( in14, 1 ); \
5713 592305 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
5714 592305 : in15 = GF_MUL( in15, 1 ); \
5715 592305 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
5716 592305 : in16 = GF_MUL( in16, 1 ); \
5717 592305 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
5718 592305 : in17 = GF_MUL( in17, 1 ); \
5719 592305 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
5720 592305 : in18 = GF_MUL( in18, 1 ); \
5721 592305 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
5722 592305 : in19 = GF_MUL( in19, 1 ); \
5723 592305 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
5724 592305 : in20 = GF_MUL( in20, 1 ); \
5725 592305 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
5726 592305 : in21 = GF_MUL( in21, 1 ); \
5727 592305 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
5728 592305 : in22 = GF_MUL( in22, 1 ); \
5729 592305 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
5730 592305 : in23 = GF_MUL( in23, 1 ); \
5731 592305 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
5732 592305 : in24 = GF_MUL( in24, 1 ); \
5733 592305 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
5734 592305 : in25 = GF_MUL( in25, 1 ); \
5735 592305 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
5736 592305 : in26 = GF_MUL( in26, 1 ); \
5737 592305 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
5738 592305 : in27 = GF_MUL( in27, 1 ); \
5739 592305 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
5740 592305 : in28 = GF_MUL( in28, 1 ); \
5741 592305 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
5742 592305 : in29 = GF_MUL( in29, 1 ); \
5743 592305 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
5744 592305 : in30 = GF_MUL( in30, 1 ); \
5745 592305 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
5746 592305 : in31 = GF_MUL( in31, 1 ); \
5747 592305 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
5748 592305 : } while( 0 )
5749 :
5750 : void fd_reedsol_ppt_64_47( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
5751 : #define FD_REEDSOL_PPT_IMPL_64_47( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
5752 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
5753 592017 : do { \
5754 592017 : gf_t scratch_15, scratch_16, scratch_17, scratch_18, scratch_19, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_3; \
5755 592017 : gf_t scratch_30, scratch_47, scratch_48, scratch_49, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59, scratch_60, scratch_61; \
5756 592017 : gf_t scratch_62, scratch_63, scratch_7; \
5757 592017 : scratch_47 = in47; \
5758 592017 : in47 = GF_MUL( in47, 1 ); \
5759 592017 : scratch_48 = in48; \
5760 592017 : in48 = GF_MUL( in48, 1 ); \
5761 592017 : scratch_49 = in49; \
5762 592017 : in49 = GF_MUL( in49, 1 ); \
5763 592017 : scratch_50 = in50; \
5764 592017 : in50 = GF_MUL( in50, 1 ); \
5765 592017 : scratch_51 = in51; \
5766 592017 : in51 = GF_MUL( in51, 1 ); \
5767 592017 : scratch_52 = in52; \
5768 592017 : in52 = GF_MUL( in52, 1 ); \
5769 592017 : scratch_53 = in53; \
5770 592017 : in53 = GF_MUL( in53, 1 ); \
5771 592017 : scratch_54 = in54; \
5772 592017 : in54 = GF_MUL( in54, 1 ); \
5773 592017 : scratch_55 = in55; \
5774 592017 : in55 = GF_MUL( in55, 1 ); \
5775 592017 : scratch_56 = in56; \
5776 592017 : in56 = GF_MUL( in56, 1 ); \
5777 592017 : scratch_57 = in57; \
5778 592017 : in57 = GF_MUL( in57, 1 ); \
5779 592017 : scratch_58 = in58; \
5780 592017 : in58 = GF_MUL( in58, 1 ); \
5781 592017 : scratch_59 = in59; \
5782 592017 : in59 = GF_MUL( in59, 1 ); \
5783 592017 : scratch_60 = in60; \
5784 592017 : in60 = GF_MUL( in60, 1 ); \
5785 592017 : scratch_61 = in61; \
5786 592017 : in61 = GF_MUL( in61, 1 ); \
5787 592017 : scratch_62 = in62; \
5788 592017 : in62 = GF_MUL( in62, 1 ); \
5789 592017 : scratch_63 = in63; \
5790 592017 : in63 = GF_MUL( in63, 1 ); \
5791 592017 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
5792 592017 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
5793 592017 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
5794 592017 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
5795 592017 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
5796 592017 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
5797 592017 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
5798 592017 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
5799 592017 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
5800 592017 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
5801 592017 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
5802 592017 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
5803 592017 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
5804 592017 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
5805 592017 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
5806 592017 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
5807 592017 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
5808 592017 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
5809 592017 : scratch_16 = in48; \
5810 592017 : in48 = GF_MUL( in48, 1 ); \
5811 592017 : scratch_17 = in49; \
5812 592017 : in49 = GF_MUL( in49, 1 ); \
5813 592017 : scratch_18 = in50; \
5814 592017 : in50 = GF_MUL( in50, 1 ); \
5815 592017 : scratch_19 = in51; \
5816 592017 : in51 = GF_MUL( in51, 1 ); \
5817 592017 : scratch_20 = in52; \
5818 592017 : in52 = GF_MUL( in52, 1 ); \
5819 592017 : scratch_21 = in53; \
5820 592017 : in53 = GF_MUL( in53, 1 ); \
5821 592017 : scratch_22 = in54; \
5822 592017 : in54 = GF_MUL( in54, 1 ); \
5823 592017 : scratch_23 = in55; \
5824 592017 : in55 = GF_MUL( in55, 1 ); \
5825 592017 : scratch_24 = in56; \
5826 592017 : in56 = GF_MUL( in56, 1 ); \
5827 592017 : scratch_25 = in57; \
5828 592017 : in57 = GF_MUL( in57, 1 ); \
5829 592017 : scratch_26 = in58; \
5830 592017 : in58 = GF_MUL( in58, 1 ); \
5831 592017 : scratch_27 = in59; \
5832 592017 : in59 = GF_MUL( in59, 1 ); \
5833 592017 : scratch_28 = in60; \
5834 592017 : in60 = GF_MUL( in60, 1 ); \
5835 592017 : scratch_29 = in61; \
5836 592017 : in61 = GF_MUL( in61, 1 ); \
5837 592017 : scratch_30 = in62; \
5838 592017 : in62 = GF_MUL( in62, 1 ); \
5839 592017 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
5840 592017 : scratch_15 = in47; \
5841 592017 : in47 = GF_MUL( in47, 1 ); \
5842 592017 : FD_REEDSOL_GENERATE_IFFT( 8, 32, in32, in33, in34, in35, in36, in37, in38, in39 ); \
5843 592017 : in47 = GF_ADD( GF_MUL( in39, 1 ), in47 ); \
5844 592017 : scratch_7 = in47; \
5845 592017 : in47 = GF_MUL( in47, 1 ); \
5846 592017 : FD_REEDSOL_GENERATE_IFFT( 4, 40, in40, in41, in42, in43 ); \
5847 592017 : in47 = GF_ADD( GF_MUL( in43, 1 ), in47 ); \
5848 592017 : scratch_3 = in47; \
5849 592017 : in47 = GF_MUL( in47, 1 ); \
5850 592017 : GF_MUL22( in44, in45, 45, 44, 1, 1 ); \
5851 592017 : in47 = GF_ADD( GF_MUL( in45, 1 ), in47 ); \
5852 592017 : GF_MUL22( in46, in47, 1, 46, 1, 1 ); \
5853 592017 : GF_MUL22( in44, in46, 246, 247, 1, 1 ); \
5854 592017 : in45 = GF_MUL( in45, 1 ); \
5855 592017 : in45 = GF_ADD( GF_MUL( scratch_3, 247 ), in45 ); \
5856 592017 : GF_MUL22( in40, in44, 49, 48, 1, 1 ); \
5857 592017 : GF_MUL22( in41, in45, 49, 48, 1, 1 ); \
5858 592017 : GF_MUL22( in42, in46, 49, 48, 1, 1 ); \
5859 592017 : in43 = GF_MUL( in43, 1 ); \
5860 592017 : in43 = GF_ADD( GF_MUL( scratch_7, 48 ), in43 ); \
5861 592017 : GF_MUL22( in32, in40, 175, 174, 1, 1 ); \
5862 592017 : GF_MUL22( in33, in41, 175, 174, 1, 1 ); \
5863 592017 : GF_MUL22( in34, in42, 175, 174, 1, 1 ); \
5864 592017 : GF_MUL22( in35, in43, 175, 174, 1, 1 ); \
5865 592017 : GF_MUL22( in36, in44, 175, 174, 1, 1 ); \
5866 592017 : GF_MUL22( in37, in45, 175, 174, 1, 1 ); \
5867 592017 : GF_MUL22( in38, in46, 175, 174, 1, 1 ); \
5868 592017 : in39 = GF_MUL( in39, 1 ); \
5869 592017 : in39 = GF_ADD( GF_MUL( scratch_15, 174 ), in39 ); \
5870 592017 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
5871 592017 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
5872 592017 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
5873 592017 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
5874 592017 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
5875 592017 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
5876 592017 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
5877 592017 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
5878 592017 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
5879 592017 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
5880 592017 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
5881 592017 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
5882 592017 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
5883 592017 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
5884 592017 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
5885 592017 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
5886 592017 : in32 = GF_MUL( in32, 1 ); \
5887 592017 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
5888 592017 : in33 = GF_MUL( in33, 1 ); \
5889 592017 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
5890 592017 : in34 = GF_MUL( in34, 1 ); \
5891 592017 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
5892 592017 : in35 = GF_MUL( in35, 1 ); \
5893 592017 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
5894 592017 : in36 = GF_MUL( in36, 1 ); \
5895 592017 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
5896 592017 : in37 = GF_MUL( in37, 1 ); \
5897 592017 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
5898 592017 : in38 = GF_MUL( in38, 1 ); \
5899 592017 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
5900 592017 : in39 = GF_MUL( in39, 1 ); \
5901 592017 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
5902 592017 : in40 = GF_MUL( in40, 1 ); \
5903 592017 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
5904 592017 : in41 = GF_MUL( in41, 1 ); \
5905 592017 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
5906 592017 : in42 = GF_MUL( in42, 1 ); \
5907 592017 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
5908 592017 : in43 = GF_MUL( in43, 1 ); \
5909 592017 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
5910 592017 : in44 = GF_MUL( in44, 1 ); \
5911 592017 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
5912 592017 : in45 = GF_MUL( in45, 1 ); \
5913 592017 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
5914 592017 : in46 = GF_MUL( in46, 1 ); \
5915 592017 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
5916 592017 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
5917 592017 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
5918 592017 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
5919 592017 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
5920 592017 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
5921 592017 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
5922 592017 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
5923 592017 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
5924 592017 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
5925 592017 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
5926 592017 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
5927 592017 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
5928 592017 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
5929 592017 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
5930 592017 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
5931 592017 : in15 = GF_MUL( in15, 1 ); \
5932 592017 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
5933 592017 : in16 = GF_MUL( in16, 1 ); \
5934 592017 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
5935 592017 : in17 = GF_MUL( in17, 1 ); \
5936 592017 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
5937 592017 : in18 = GF_MUL( in18, 1 ); \
5938 592017 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
5939 592017 : in19 = GF_MUL( in19, 1 ); \
5940 592017 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
5941 592017 : in20 = GF_MUL( in20, 1 ); \
5942 592017 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
5943 592017 : in21 = GF_MUL( in21, 1 ); \
5944 592017 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
5945 592017 : in22 = GF_MUL( in22, 1 ); \
5946 592017 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
5947 592017 : in23 = GF_MUL( in23, 1 ); \
5948 592017 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
5949 592017 : in24 = GF_MUL( in24, 1 ); \
5950 592017 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
5951 592017 : in25 = GF_MUL( in25, 1 ); \
5952 592017 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
5953 592017 : in26 = GF_MUL( in26, 1 ); \
5954 592017 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
5955 592017 : in27 = GF_MUL( in27, 1 ); \
5956 592017 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
5957 592017 : in28 = GF_MUL( in28, 1 ); \
5958 592017 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
5959 592017 : in29 = GF_MUL( in29, 1 ); \
5960 592017 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
5961 592017 : in30 = GF_MUL( in30, 1 ); \
5962 592017 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
5963 592017 : in31 = GF_MUL( in31, 1 ); \
5964 592017 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
5965 592017 : } while( 0 )
5966 :
5967 : void fd_reedsol_ppt_64_48( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
5968 : #define FD_REEDSOL_PPT_IMPL_64_48( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
5969 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
5970 592305 : do { \
5971 592305 : gf_t scratch_16, scratch_17, scratch_18, scratch_19, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_30, scratch_31; \
5972 592305 : gf_t scratch_48, scratch_49, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59, scratch_60, scratch_61, scratch_62, scratch_63; \
5973 592305 : scratch_48 = in48; \
5974 592305 : in48 = GF_MUL( in48, 1 ); \
5975 592305 : scratch_49 = in49; \
5976 592305 : in49 = GF_MUL( in49, 1 ); \
5977 592305 : scratch_50 = in50; \
5978 592305 : in50 = GF_MUL( in50, 1 ); \
5979 592305 : scratch_51 = in51; \
5980 592305 : in51 = GF_MUL( in51, 1 ); \
5981 592305 : scratch_52 = in52; \
5982 592305 : in52 = GF_MUL( in52, 1 ); \
5983 592305 : scratch_53 = in53; \
5984 592305 : in53 = GF_MUL( in53, 1 ); \
5985 592305 : scratch_54 = in54; \
5986 592305 : in54 = GF_MUL( in54, 1 ); \
5987 592305 : scratch_55 = in55; \
5988 592305 : in55 = GF_MUL( in55, 1 ); \
5989 592305 : scratch_56 = in56; \
5990 592305 : in56 = GF_MUL( in56, 1 ); \
5991 592305 : scratch_57 = in57; \
5992 592305 : in57 = GF_MUL( in57, 1 ); \
5993 592305 : scratch_58 = in58; \
5994 592305 : in58 = GF_MUL( in58, 1 ); \
5995 592305 : scratch_59 = in59; \
5996 592305 : in59 = GF_MUL( in59, 1 ); \
5997 592305 : scratch_60 = in60; \
5998 592305 : in60 = GF_MUL( in60, 1 ); \
5999 592305 : scratch_61 = in61; \
6000 592305 : in61 = GF_MUL( in61, 1 ); \
6001 592305 : scratch_62 = in62; \
6002 592305 : in62 = GF_MUL( in62, 1 ); \
6003 592305 : scratch_63 = in63; \
6004 592305 : in63 = GF_MUL( in63, 1 ); \
6005 592305 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
6006 592305 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
6007 592305 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
6008 592305 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
6009 592305 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
6010 592305 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
6011 592305 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
6012 592305 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
6013 592305 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
6014 592305 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
6015 592305 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
6016 592305 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
6017 592305 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
6018 592305 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
6019 592305 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
6020 592305 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
6021 592305 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
6022 592305 : scratch_16 = in48; \
6023 592305 : in48 = GF_MUL( in48, 1 ); \
6024 592305 : scratch_17 = in49; \
6025 592305 : in49 = GF_MUL( in49, 1 ); \
6026 592305 : scratch_18 = in50; \
6027 592305 : in50 = GF_MUL( in50, 1 ); \
6028 592305 : scratch_19 = in51; \
6029 592305 : in51 = GF_MUL( in51, 1 ); \
6030 592305 : scratch_20 = in52; \
6031 592305 : in52 = GF_MUL( in52, 1 ); \
6032 592305 : scratch_21 = in53; \
6033 592305 : in53 = GF_MUL( in53, 1 ); \
6034 592305 : scratch_22 = in54; \
6035 592305 : in54 = GF_MUL( in54, 1 ); \
6036 592305 : scratch_23 = in55; \
6037 592305 : in55 = GF_MUL( in55, 1 ); \
6038 592305 : scratch_24 = in56; \
6039 592305 : in56 = GF_MUL( in56, 1 ); \
6040 592305 : scratch_25 = in57; \
6041 592305 : in57 = GF_MUL( in57, 1 ); \
6042 592305 : scratch_26 = in58; \
6043 592305 : in58 = GF_MUL( in58, 1 ); \
6044 592305 : scratch_27 = in59; \
6045 592305 : in59 = GF_MUL( in59, 1 ); \
6046 592305 : scratch_28 = in60; \
6047 592305 : in60 = GF_MUL( in60, 1 ); \
6048 592305 : scratch_29 = in61; \
6049 592305 : in61 = GF_MUL( in61, 1 ); \
6050 592305 : scratch_30 = in62; \
6051 592305 : in62 = GF_MUL( in62, 1 ); \
6052 592305 : scratch_31 = in63; \
6053 592305 : in63 = GF_MUL( in63, 1 ); \
6054 592305 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
6055 592305 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
6056 592305 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
6057 592305 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
6058 592305 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
6059 592305 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
6060 592305 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
6061 592305 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
6062 592305 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
6063 592305 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
6064 592305 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
6065 592305 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
6066 592305 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
6067 592305 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
6068 592305 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
6069 592305 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
6070 592305 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
6071 592305 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
6072 592305 : in32 = GF_MUL( in32, 1 ); \
6073 592305 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
6074 592305 : in33 = GF_MUL( in33, 1 ); \
6075 592305 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
6076 592305 : in34 = GF_MUL( in34, 1 ); \
6077 592305 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
6078 592305 : in35 = GF_MUL( in35, 1 ); \
6079 592305 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
6080 592305 : in36 = GF_MUL( in36, 1 ); \
6081 592305 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
6082 592305 : in37 = GF_MUL( in37, 1 ); \
6083 592305 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
6084 592305 : in38 = GF_MUL( in38, 1 ); \
6085 592305 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
6086 592305 : in39 = GF_MUL( in39, 1 ); \
6087 592305 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
6088 592305 : in40 = GF_MUL( in40, 1 ); \
6089 592305 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
6090 592305 : in41 = GF_MUL( in41, 1 ); \
6091 592305 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
6092 592305 : in42 = GF_MUL( in42, 1 ); \
6093 592305 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
6094 592305 : in43 = GF_MUL( in43, 1 ); \
6095 592305 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
6096 592305 : in44 = GF_MUL( in44, 1 ); \
6097 592305 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
6098 592305 : in45 = GF_MUL( in45, 1 ); \
6099 592305 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
6100 592305 : in46 = GF_MUL( in46, 1 ); \
6101 592305 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
6102 592305 : in47 = GF_MUL( in47, 1 ); \
6103 592305 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
6104 592305 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
6105 592305 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
6106 592305 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
6107 592305 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
6108 592305 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
6109 592305 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
6110 592305 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
6111 592305 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
6112 592305 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
6113 592305 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
6114 592305 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
6115 592305 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
6116 592305 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
6117 592305 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
6118 592305 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
6119 592305 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
6120 592305 : in16 = GF_MUL( in16, 1 ); \
6121 592305 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
6122 592305 : in17 = GF_MUL( in17, 1 ); \
6123 592305 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
6124 592305 : in18 = GF_MUL( in18, 1 ); \
6125 592305 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
6126 592305 : in19 = GF_MUL( in19, 1 ); \
6127 592305 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
6128 592305 : in20 = GF_MUL( in20, 1 ); \
6129 592305 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
6130 592305 : in21 = GF_MUL( in21, 1 ); \
6131 592305 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
6132 592305 : in22 = GF_MUL( in22, 1 ); \
6133 592305 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
6134 592305 : in23 = GF_MUL( in23, 1 ); \
6135 592305 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
6136 592305 : in24 = GF_MUL( in24, 1 ); \
6137 592305 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
6138 592305 : in25 = GF_MUL( in25, 1 ); \
6139 592305 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
6140 592305 : in26 = GF_MUL( in26, 1 ); \
6141 592305 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
6142 592305 : in27 = GF_MUL( in27, 1 ); \
6143 592305 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
6144 592305 : in28 = GF_MUL( in28, 1 ); \
6145 592305 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
6146 592305 : in29 = GF_MUL( in29, 1 ); \
6147 592305 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
6148 592305 : in30 = GF_MUL( in30, 1 ); \
6149 592305 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
6150 592305 : in31 = GF_MUL( in31, 1 ); \
6151 592305 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
6152 592305 : } while( 0 )
6153 :
6154 : void fd_reedsol_ppt_64_49( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
6155 : #define FD_REEDSOL_PPT_IMPL_64_49( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
6156 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
6157 539121 : do { \
6158 539121 : gf_t scratch_17, scratch_18, scratch_19, scratch_2, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_30, scratch_31; \
6159 539121 : gf_t scratch_4, scratch_49, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59, scratch_60, scratch_61, scratch_62, scratch_63; \
6160 539121 : gf_t scratch_8; \
6161 539121 : scratch_49 = in49; \
6162 539121 : in49 = GF_MUL( in49, 1 ); \
6163 539121 : scratch_50 = in50; \
6164 539121 : in50 = GF_MUL( in50, 1 ); \
6165 539121 : scratch_51 = in51; \
6166 539121 : in51 = GF_MUL( in51, 1 ); \
6167 539121 : scratch_52 = in52; \
6168 539121 : in52 = GF_MUL( in52, 1 ); \
6169 539121 : scratch_53 = in53; \
6170 539121 : in53 = GF_MUL( in53, 1 ); \
6171 539121 : scratch_54 = in54; \
6172 539121 : in54 = GF_MUL( in54, 1 ); \
6173 539121 : scratch_55 = in55; \
6174 539121 : in55 = GF_MUL( in55, 1 ); \
6175 539121 : scratch_56 = in56; \
6176 539121 : in56 = GF_MUL( in56, 1 ); \
6177 539121 : scratch_57 = in57; \
6178 539121 : in57 = GF_MUL( in57, 1 ); \
6179 539121 : scratch_58 = in58; \
6180 539121 : in58 = GF_MUL( in58, 1 ); \
6181 539121 : scratch_59 = in59; \
6182 539121 : in59 = GF_MUL( in59, 1 ); \
6183 539121 : scratch_60 = in60; \
6184 539121 : in60 = GF_MUL( in60, 1 ); \
6185 539121 : scratch_61 = in61; \
6186 539121 : in61 = GF_MUL( in61, 1 ); \
6187 539121 : scratch_62 = in62; \
6188 539121 : in62 = GF_MUL( in62, 1 ); \
6189 539121 : scratch_63 = in63; \
6190 539121 : in63 = GF_MUL( in63, 1 ); \
6191 539121 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
6192 539121 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
6193 539121 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
6194 539121 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
6195 539121 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
6196 539121 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
6197 539121 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
6198 539121 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
6199 539121 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
6200 539121 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
6201 539121 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
6202 539121 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
6203 539121 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
6204 539121 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
6205 539121 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
6206 539121 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
6207 539121 : scratch_17 = in49; \
6208 539121 : in49 = GF_MUL( in49, 1 ); \
6209 539121 : scratch_18 = in50; \
6210 539121 : in50 = GF_MUL( in50, 1 ); \
6211 539121 : scratch_19 = in51; \
6212 539121 : in51 = GF_MUL( in51, 1 ); \
6213 539121 : scratch_20 = in52; \
6214 539121 : in52 = GF_MUL( in52, 1 ); \
6215 539121 : scratch_21 = in53; \
6216 539121 : in53 = GF_MUL( in53, 1 ); \
6217 539121 : scratch_22 = in54; \
6218 539121 : in54 = GF_MUL( in54, 1 ); \
6219 539121 : scratch_23 = in55; \
6220 539121 : in55 = GF_MUL( in55, 1 ); \
6221 539121 : scratch_24 = in56; \
6222 539121 : in56 = GF_MUL( in56, 1 ); \
6223 539121 : scratch_25 = in57; \
6224 539121 : in57 = GF_MUL( in57, 1 ); \
6225 539121 : scratch_26 = in58; \
6226 539121 : in58 = GF_MUL( in58, 1 ); \
6227 539121 : scratch_27 = in59; \
6228 539121 : in59 = GF_MUL( in59, 1 ); \
6229 539121 : scratch_28 = in60; \
6230 539121 : in60 = GF_MUL( in60, 1 ); \
6231 539121 : scratch_29 = in61; \
6232 539121 : in61 = GF_MUL( in61, 1 ); \
6233 539121 : scratch_30 = in62; \
6234 539121 : in62 = GF_MUL( in62, 1 ); \
6235 539121 : scratch_31 = in63; \
6236 539121 : in63 = GF_MUL( in63, 1 ); \
6237 539121 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
6238 539121 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
6239 539121 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
6240 539121 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
6241 539121 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
6242 539121 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
6243 539121 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
6244 539121 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
6245 539121 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
6246 539121 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
6247 539121 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
6248 539121 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
6249 539121 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
6250 539121 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
6251 539121 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
6252 539121 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
6253 539121 : scratch_8 = in56; \
6254 539121 : in56 = GF_MUL( in56, 1 ); \
6255 539121 : GF_MUL22( in49, in57, 1, 165, 1, 164 ); \
6256 539121 : GF_MUL22( in50, in58, 1, 165, 1, 164 ); \
6257 539121 : GF_MUL22( in51, in59, 1, 165, 1, 164 ); \
6258 539121 : GF_MUL22( in52, in60, 1, 165, 1, 164 ); \
6259 539121 : GF_MUL22( in53, in61, 1, 165, 1, 164 ); \
6260 539121 : GF_MUL22( in54, in62, 1, 165, 1, 164 ); \
6261 539121 : GF_MUL22( in55, in63, 1, 165, 1, 164 ); \
6262 539121 : scratch_4 = in52; \
6263 539121 : in52 = GF_MUL( in52, 1 ); \
6264 539121 : GF_MUL22( in49, in53, 1, 71, 1, 70 ); \
6265 539121 : GF_MUL22( in50, in54, 1, 71, 1, 70 ); \
6266 539121 : GF_MUL22( in51, in55, 1, 71, 1, 70 ); \
6267 539121 : scratch_2 = in50; \
6268 539121 : in50 = GF_MUL( in50, 1 ); \
6269 539121 : GF_MUL22( in49, in51, 1, 149, 1, 148 ); \
6270 539121 : GF_MUL22( in48, in49, 1, 48, 1, 1 ); \
6271 539121 : in50 = GF_ADD( GF_MUL( in48, 1 ), in50 ); \
6272 539121 : GF_MUL22( in50, in51, 1, 50, 1, 51 ); \
6273 539121 : in48 = GF_MUL( in48, 1 ); \
6274 539121 : in48 = GF_ADD( GF_MUL( scratch_2, 149 ), in48 ); \
6275 539121 : in52 = GF_ADD( GF_MUL( in48, 1 ), in52 ); \
6276 539121 : FD_REEDSOL_GENERATE_FFT( 4, 52, in52, in53, in54, in55 ); \
6277 539121 : in48 = GF_MUL( in48, 1 ); \
6278 539121 : in48 = GF_ADD( GF_MUL( scratch_4, 71 ), in48 ); \
6279 539121 : in56 = GF_ADD( GF_MUL( in48, 1 ), in56 ); \
6280 539121 : FD_REEDSOL_GENERATE_FFT( 8, 56, in56, in57, in58, in59, in60, in61, in62, in63 ); \
6281 539121 : in48 = GF_MUL( in48, 1 ); \
6282 539121 : in48 = GF_ADD( GF_MUL( scratch_8, 165 ), in48 ); \
6283 539121 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
6284 539121 : in33 = GF_MUL( in33, 1 ); \
6285 539121 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
6286 539121 : in34 = GF_MUL( in34, 1 ); \
6287 539121 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
6288 539121 : in35 = GF_MUL( in35, 1 ); \
6289 539121 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
6290 539121 : in36 = GF_MUL( in36, 1 ); \
6291 539121 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
6292 539121 : in37 = GF_MUL( in37, 1 ); \
6293 539121 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
6294 539121 : in38 = GF_MUL( in38, 1 ); \
6295 539121 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
6296 539121 : in39 = GF_MUL( in39, 1 ); \
6297 539121 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
6298 539121 : in40 = GF_MUL( in40, 1 ); \
6299 539121 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
6300 539121 : in41 = GF_MUL( in41, 1 ); \
6301 539121 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
6302 539121 : in42 = GF_MUL( in42, 1 ); \
6303 539121 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
6304 539121 : in43 = GF_MUL( in43, 1 ); \
6305 539121 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
6306 539121 : in44 = GF_MUL( in44, 1 ); \
6307 539121 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
6308 539121 : in45 = GF_MUL( in45, 1 ); \
6309 539121 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
6310 539121 : in46 = GF_MUL( in46, 1 ); \
6311 539121 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
6312 539121 : in47 = GF_MUL( in47, 1 ); \
6313 539121 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
6314 539121 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
6315 539121 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
6316 539121 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
6317 539121 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
6318 539121 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
6319 539121 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
6320 539121 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
6321 539121 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
6322 539121 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
6323 539121 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
6324 539121 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
6325 539121 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
6326 539121 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
6327 539121 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
6328 539121 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
6329 539121 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
6330 539121 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
6331 539121 : in17 = GF_MUL( in17, 1 ); \
6332 539121 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
6333 539121 : in18 = GF_MUL( in18, 1 ); \
6334 539121 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
6335 539121 : in19 = GF_MUL( in19, 1 ); \
6336 539121 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
6337 539121 : in20 = GF_MUL( in20, 1 ); \
6338 539121 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
6339 539121 : in21 = GF_MUL( in21, 1 ); \
6340 539121 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
6341 539121 : in22 = GF_MUL( in22, 1 ); \
6342 539121 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
6343 539121 : in23 = GF_MUL( in23, 1 ); \
6344 539121 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
6345 539121 : in24 = GF_MUL( in24, 1 ); \
6346 539121 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
6347 539121 : in25 = GF_MUL( in25, 1 ); \
6348 539121 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
6349 539121 : in26 = GF_MUL( in26, 1 ); \
6350 539121 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
6351 539121 : in27 = GF_MUL( in27, 1 ); \
6352 539121 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
6353 539121 : in28 = GF_MUL( in28, 1 ); \
6354 539121 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
6355 539121 : in29 = GF_MUL( in29, 1 ); \
6356 539121 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
6357 539121 : in30 = GF_MUL( in30, 1 ); \
6358 539121 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
6359 539121 : in31 = GF_MUL( in31, 1 ); \
6360 539121 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
6361 539121 : } while( 0 )
6362 :
6363 : void fd_reedsol_ppt_64_50( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
6364 : #define FD_REEDSOL_PPT_IMPL_64_50( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
6365 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
6366 515640 : do { \
6367 515640 : gf_t scratch_18, scratch_19, scratch_2, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_3, scratch_30, scratch_31; \
6368 515640 : gf_t scratch_4, scratch_5, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59, scratch_60, scratch_61, scratch_62, scratch_63; \
6369 515640 : gf_t scratch_8, scratch_9; \
6370 515640 : scratch_50 = in50; \
6371 515640 : in50 = GF_MUL( in50, 1 ); \
6372 515640 : scratch_51 = in51; \
6373 515640 : in51 = GF_MUL( in51, 1 ); \
6374 515640 : scratch_52 = in52; \
6375 515640 : in52 = GF_MUL( in52, 1 ); \
6376 515640 : scratch_53 = in53; \
6377 515640 : in53 = GF_MUL( in53, 1 ); \
6378 515640 : scratch_54 = in54; \
6379 515640 : in54 = GF_MUL( in54, 1 ); \
6380 515640 : scratch_55 = in55; \
6381 515640 : in55 = GF_MUL( in55, 1 ); \
6382 515640 : scratch_56 = in56; \
6383 515640 : in56 = GF_MUL( in56, 1 ); \
6384 515640 : scratch_57 = in57; \
6385 515640 : in57 = GF_MUL( in57, 1 ); \
6386 515640 : scratch_58 = in58; \
6387 515640 : in58 = GF_MUL( in58, 1 ); \
6388 515640 : scratch_59 = in59; \
6389 515640 : in59 = GF_MUL( in59, 1 ); \
6390 515640 : scratch_60 = in60; \
6391 515640 : in60 = GF_MUL( in60, 1 ); \
6392 515640 : scratch_61 = in61; \
6393 515640 : in61 = GF_MUL( in61, 1 ); \
6394 515640 : scratch_62 = in62; \
6395 515640 : in62 = GF_MUL( in62, 1 ); \
6396 515640 : scratch_63 = in63; \
6397 515640 : in63 = GF_MUL( in63, 1 ); \
6398 515640 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
6399 515640 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
6400 515640 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
6401 515640 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
6402 515640 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
6403 515640 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
6404 515640 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
6405 515640 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
6406 515640 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
6407 515640 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
6408 515640 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
6409 515640 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
6410 515640 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
6411 515640 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
6412 515640 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
6413 515640 : scratch_18 = in50; \
6414 515640 : in50 = GF_MUL( in50, 1 ); \
6415 515640 : scratch_19 = in51; \
6416 515640 : in51 = GF_MUL( in51, 1 ); \
6417 515640 : scratch_20 = in52; \
6418 515640 : in52 = GF_MUL( in52, 1 ); \
6419 515640 : scratch_21 = in53; \
6420 515640 : in53 = GF_MUL( in53, 1 ); \
6421 515640 : scratch_22 = in54; \
6422 515640 : in54 = GF_MUL( in54, 1 ); \
6423 515640 : scratch_23 = in55; \
6424 515640 : in55 = GF_MUL( in55, 1 ); \
6425 515640 : scratch_24 = in56; \
6426 515640 : in56 = GF_MUL( in56, 1 ); \
6427 515640 : scratch_25 = in57; \
6428 515640 : in57 = GF_MUL( in57, 1 ); \
6429 515640 : scratch_26 = in58; \
6430 515640 : in58 = GF_MUL( in58, 1 ); \
6431 515640 : scratch_27 = in59; \
6432 515640 : in59 = GF_MUL( in59, 1 ); \
6433 515640 : scratch_28 = in60; \
6434 515640 : in60 = GF_MUL( in60, 1 ); \
6435 515640 : scratch_29 = in61; \
6436 515640 : in61 = GF_MUL( in61, 1 ); \
6437 515640 : scratch_30 = in62; \
6438 515640 : in62 = GF_MUL( in62, 1 ); \
6439 515640 : scratch_31 = in63; \
6440 515640 : in63 = GF_MUL( in63, 1 ); \
6441 515640 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
6442 515640 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
6443 515640 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
6444 515640 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
6445 515640 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
6446 515640 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
6447 515640 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
6448 515640 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
6449 515640 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
6450 515640 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
6451 515640 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
6452 515640 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
6453 515640 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
6454 515640 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
6455 515640 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
6456 515640 : scratch_8 = in56; \
6457 515640 : in56 = GF_MUL( in56, 1 ); \
6458 515640 : scratch_9 = in57; \
6459 515640 : in57 = GF_MUL( in57, 1 ); \
6460 515640 : GF_MUL22( in50, in58, 1, 165, 1, 164 ); \
6461 515640 : GF_MUL22( in51, in59, 1, 165, 1, 164 ); \
6462 515640 : GF_MUL22( in52, in60, 1, 165, 1, 164 ); \
6463 515640 : GF_MUL22( in53, in61, 1, 165, 1, 164 ); \
6464 515640 : GF_MUL22( in54, in62, 1, 165, 1, 164 ); \
6465 515640 : GF_MUL22( in55, in63, 1, 165, 1, 164 ); \
6466 515640 : scratch_4 = in52; \
6467 515640 : in52 = GF_MUL( in52, 1 ); \
6468 515640 : scratch_5 = in53; \
6469 515640 : in53 = GF_MUL( in53, 1 ); \
6470 515640 : GF_MUL22( in50, in54, 1, 71, 1, 70 ); \
6471 515640 : GF_MUL22( in51, in55, 1, 71, 1, 70 ); \
6472 515640 : scratch_2 = in50; \
6473 515640 : in50 = GF_MUL( in50, 1 ); \
6474 515640 : scratch_3 = in51; \
6475 515640 : in51 = GF_MUL( in51, 1 ); \
6476 515640 : GF_MUL22( in48, in49, 49, 48, 1, 1 ); \
6477 515640 : in50 = GF_ADD( GF_MUL( in48, 1 ), in50 ); \
6478 515640 : in51 = GF_ADD( GF_MUL( in49, 1 ), in51 ); \
6479 515640 : GF_MUL22( in50, in51, 1, 50, 1, 51 ); \
6480 515640 : in48 = GF_MUL( in48, 1 ); \
6481 515640 : in48 = GF_ADD( GF_MUL( scratch_2, 149 ), in48 ); \
6482 515640 : in49 = GF_MUL( in49, 1 ); \
6483 515640 : in49 = GF_ADD( GF_MUL( scratch_3, 149 ), in49 ); \
6484 515640 : in52 = GF_ADD( GF_MUL( in48, 1 ), in52 ); \
6485 515640 : in53 = GF_ADD( GF_MUL( in49, 1 ), in53 ); \
6486 515640 : FD_REEDSOL_GENERATE_FFT( 4, 52, in52, in53, in54, in55 ); \
6487 515640 : in48 = GF_MUL( in48, 1 ); \
6488 515640 : in48 = GF_ADD( GF_MUL( scratch_4, 71 ), in48 ); \
6489 515640 : in49 = GF_MUL( in49, 1 ); \
6490 515640 : in49 = GF_ADD( GF_MUL( scratch_5, 71 ), in49 ); \
6491 515640 : in56 = GF_ADD( GF_MUL( in48, 1 ), in56 ); \
6492 515640 : in57 = GF_ADD( GF_MUL( in49, 1 ), in57 ); \
6493 515640 : FD_REEDSOL_GENERATE_FFT( 8, 56, in56, in57, in58, in59, in60, in61, in62, in63 ); \
6494 515640 : in48 = GF_MUL( in48, 1 ); \
6495 515640 : in48 = GF_ADD( GF_MUL( scratch_8, 165 ), in48 ); \
6496 515640 : in49 = GF_MUL( in49, 1 ); \
6497 515640 : in49 = GF_ADD( GF_MUL( scratch_9, 165 ), in49 ); \
6498 515640 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
6499 515640 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
6500 515640 : in34 = GF_MUL( in34, 1 ); \
6501 515640 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
6502 515640 : in35 = GF_MUL( in35, 1 ); \
6503 515640 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
6504 515640 : in36 = GF_MUL( in36, 1 ); \
6505 515640 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
6506 515640 : in37 = GF_MUL( in37, 1 ); \
6507 515640 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
6508 515640 : in38 = GF_MUL( in38, 1 ); \
6509 515640 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
6510 515640 : in39 = GF_MUL( in39, 1 ); \
6511 515640 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
6512 515640 : in40 = GF_MUL( in40, 1 ); \
6513 515640 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
6514 515640 : in41 = GF_MUL( in41, 1 ); \
6515 515640 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
6516 515640 : in42 = GF_MUL( in42, 1 ); \
6517 515640 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
6518 515640 : in43 = GF_MUL( in43, 1 ); \
6519 515640 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
6520 515640 : in44 = GF_MUL( in44, 1 ); \
6521 515640 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
6522 515640 : in45 = GF_MUL( in45, 1 ); \
6523 515640 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
6524 515640 : in46 = GF_MUL( in46, 1 ); \
6525 515640 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
6526 515640 : in47 = GF_MUL( in47, 1 ); \
6527 515640 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
6528 515640 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
6529 515640 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
6530 515640 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
6531 515640 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
6532 515640 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
6533 515640 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
6534 515640 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
6535 515640 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
6536 515640 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
6537 515640 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
6538 515640 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
6539 515640 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
6540 515640 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
6541 515640 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
6542 515640 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
6543 515640 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
6544 515640 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
6545 515640 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
6546 515640 : in18 = GF_MUL( in18, 1 ); \
6547 515640 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
6548 515640 : in19 = GF_MUL( in19, 1 ); \
6549 515640 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
6550 515640 : in20 = GF_MUL( in20, 1 ); \
6551 515640 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
6552 515640 : in21 = GF_MUL( in21, 1 ); \
6553 515640 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
6554 515640 : in22 = GF_MUL( in22, 1 ); \
6555 515640 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
6556 515640 : in23 = GF_MUL( in23, 1 ); \
6557 515640 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
6558 515640 : in24 = GF_MUL( in24, 1 ); \
6559 515640 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
6560 515640 : in25 = GF_MUL( in25, 1 ); \
6561 515640 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
6562 515640 : in26 = GF_MUL( in26, 1 ); \
6563 515640 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
6564 515640 : in27 = GF_MUL( in27, 1 ); \
6565 515640 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
6566 515640 : in28 = GF_MUL( in28, 1 ); \
6567 515640 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
6568 515640 : in29 = GF_MUL( in29, 1 ); \
6569 515640 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
6570 515640 : in30 = GF_MUL( in30, 1 ); \
6571 515640 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
6572 515640 : in31 = GF_MUL( in31, 1 ); \
6573 515640 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
6574 515640 : } while( 0 )
6575 :
6576 : void fd_reedsol_ppt_64_51( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
6577 : #define FD_REEDSOL_PPT_IMPL_64_51( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
6578 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
6579 515544 : do { \
6580 515544 : gf_t scratch_10, scratch_19, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_3, scratch_30, scratch_31, scratch_4; \
6581 515544 : gf_t scratch_5, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59, scratch_6, scratch_60, scratch_61, scratch_62, scratch_63, scratch_8; \
6582 515544 : gf_t scratch_9; \
6583 515544 : scratch_51 = in51; \
6584 515544 : in51 = GF_MUL( in51, 1 ); \
6585 515544 : scratch_52 = in52; \
6586 515544 : in52 = GF_MUL( in52, 1 ); \
6587 515544 : scratch_53 = in53; \
6588 515544 : in53 = GF_MUL( in53, 1 ); \
6589 515544 : scratch_54 = in54; \
6590 515544 : in54 = GF_MUL( in54, 1 ); \
6591 515544 : scratch_55 = in55; \
6592 515544 : in55 = GF_MUL( in55, 1 ); \
6593 515544 : scratch_56 = in56; \
6594 515544 : in56 = GF_MUL( in56, 1 ); \
6595 515544 : scratch_57 = in57; \
6596 515544 : in57 = GF_MUL( in57, 1 ); \
6597 515544 : scratch_58 = in58; \
6598 515544 : in58 = GF_MUL( in58, 1 ); \
6599 515544 : scratch_59 = in59; \
6600 515544 : in59 = GF_MUL( in59, 1 ); \
6601 515544 : scratch_60 = in60; \
6602 515544 : in60 = GF_MUL( in60, 1 ); \
6603 515544 : scratch_61 = in61; \
6604 515544 : in61 = GF_MUL( in61, 1 ); \
6605 515544 : scratch_62 = in62; \
6606 515544 : in62 = GF_MUL( in62, 1 ); \
6607 515544 : scratch_63 = in63; \
6608 515544 : in63 = GF_MUL( in63, 1 ); \
6609 515544 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
6610 515544 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
6611 515544 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
6612 515544 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
6613 515544 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
6614 515544 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
6615 515544 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
6616 515544 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
6617 515544 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
6618 515544 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
6619 515544 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
6620 515544 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
6621 515544 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
6622 515544 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
6623 515544 : scratch_19 = in51; \
6624 515544 : in51 = GF_MUL( in51, 1 ); \
6625 515544 : scratch_20 = in52; \
6626 515544 : in52 = GF_MUL( in52, 1 ); \
6627 515544 : scratch_21 = in53; \
6628 515544 : in53 = GF_MUL( in53, 1 ); \
6629 515544 : scratch_22 = in54; \
6630 515544 : in54 = GF_MUL( in54, 1 ); \
6631 515544 : scratch_23 = in55; \
6632 515544 : in55 = GF_MUL( in55, 1 ); \
6633 515544 : scratch_24 = in56; \
6634 515544 : in56 = GF_MUL( in56, 1 ); \
6635 515544 : scratch_25 = in57; \
6636 515544 : in57 = GF_MUL( in57, 1 ); \
6637 515544 : scratch_26 = in58; \
6638 515544 : in58 = GF_MUL( in58, 1 ); \
6639 515544 : scratch_27 = in59; \
6640 515544 : in59 = GF_MUL( in59, 1 ); \
6641 515544 : scratch_28 = in60; \
6642 515544 : in60 = GF_MUL( in60, 1 ); \
6643 515544 : scratch_29 = in61; \
6644 515544 : in61 = GF_MUL( in61, 1 ); \
6645 515544 : scratch_30 = in62; \
6646 515544 : in62 = GF_MUL( in62, 1 ); \
6647 515544 : scratch_31 = in63; \
6648 515544 : in63 = GF_MUL( in63, 1 ); \
6649 515544 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
6650 515544 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
6651 515544 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
6652 515544 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
6653 515544 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
6654 515544 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
6655 515544 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
6656 515544 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
6657 515544 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
6658 515544 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
6659 515544 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
6660 515544 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
6661 515544 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
6662 515544 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
6663 515544 : scratch_8 = in56; \
6664 515544 : in56 = GF_MUL( in56, 1 ); \
6665 515544 : scratch_9 = in57; \
6666 515544 : in57 = GF_MUL( in57, 1 ); \
6667 515544 : scratch_10 = in58; \
6668 515544 : in58 = GF_MUL( in58, 1 ); \
6669 515544 : GF_MUL22( in51, in59, 1, 165, 1, 164 ); \
6670 515544 : GF_MUL22( in52, in60, 1, 165, 1, 164 ); \
6671 515544 : GF_MUL22( in53, in61, 1, 165, 1, 164 ); \
6672 515544 : GF_MUL22( in54, in62, 1, 165, 1, 164 ); \
6673 515544 : GF_MUL22( in55, in63, 1, 165, 1, 164 ); \
6674 515544 : scratch_4 = in52; \
6675 515544 : in52 = GF_MUL( in52, 1 ); \
6676 515544 : scratch_5 = in53; \
6677 515544 : in53 = GF_MUL( in53, 1 ); \
6678 515544 : scratch_6 = in54; \
6679 515544 : in54 = GF_MUL( in54, 1 ); \
6680 515544 : GF_MUL22( in51, in55, 1, 71, 1, 70 ); \
6681 515544 : scratch_3 = in51; \
6682 515544 : in51 = GF_MUL( in51, 1 ); \
6683 515544 : GF_MUL22( in48, in49, 49, 48, 1, 1 ); \
6684 515544 : in51 = GF_ADD( GF_MUL( in49, 1 ), in51 ); \
6685 515544 : GF_MUL22( in50, in51, 1, 50, 1, 1 ); \
6686 515544 : GF_MUL22( in48, in50, 148, 149, 1, 1 ); \
6687 515544 : in49 = GF_MUL( in49, 1 ); \
6688 515544 : in49 = GF_ADD( GF_MUL( scratch_3, 149 ), in49 ); \
6689 515544 : in52 = GF_ADD( GF_MUL( in48, 1 ), in52 ); \
6690 515544 : in53 = GF_ADD( GF_MUL( in49, 1 ), in53 ); \
6691 515544 : in54 = GF_ADD( GF_MUL( in50, 1 ), in54 ); \
6692 515544 : FD_REEDSOL_GENERATE_FFT( 4, 52, in52, in53, in54, in55 ); \
6693 515544 : in48 = GF_MUL( in48, 1 ); \
6694 515544 : in48 = GF_ADD( GF_MUL( scratch_4, 71 ), in48 ); \
6695 515544 : in49 = GF_MUL( in49, 1 ); \
6696 515544 : in49 = GF_ADD( GF_MUL( scratch_5, 71 ), in49 ); \
6697 515544 : in50 = GF_MUL( in50, 1 ); \
6698 515544 : in50 = GF_ADD( GF_MUL( scratch_6, 71 ), in50 ); \
6699 515544 : in56 = GF_ADD( GF_MUL( in48, 1 ), in56 ); \
6700 515544 : in57 = GF_ADD( GF_MUL( in49, 1 ), in57 ); \
6701 515544 : in58 = GF_ADD( GF_MUL( in50, 1 ), in58 ); \
6702 515544 : FD_REEDSOL_GENERATE_FFT( 8, 56, in56, in57, in58, in59, in60, in61, in62, in63 ); \
6703 515544 : in48 = GF_MUL( in48, 1 ); \
6704 515544 : in48 = GF_ADD( GF_MUL( scratch_8, 165 ), in48 ); \
6705 515544 : in49 = GF_MUL( in49, 1 ); \
6706 515544 : in49 = GF_ADD( GF_MUL( scratch_9, 165 ), in49 ); \
6707 515544 : in50 = GF_MUL( in50, 1 ); \
6708 515544 : in50 = GF_ADD( GF_MUL( scratch_10, 165 ), in50 ); \
6709 515544 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
6710 515544 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
6711 515544 : GF_MUL22( in34, in50, 70, 71, 1, 1 ); \
6712 515544 : in35 = GF_MUL( in35, 1 ); \
6713 515544 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
6714 515544 : in36 = GF_MUL( in36, 1 ); \
6715 515544 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
6716 515544 : in37 = GF_MUL( in37, 1 ); \
6717 515544 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
6718 515544 : in38 = GF_MUL( in38, 1 ); \
6719 515544 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
6720 515544 : in39 = GF_MUL( in39, 1 ); \
6721 515544 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
6722 515544 : in40 = GF_MUL( in40, 1 ); \
6723 515544 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
6724 515544 : in41 = GF_MUL( in41, 1 ); \
6725 515544 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
6726 515544 : in42 = GF_MUL( in42, 1 ); \
6727 515544 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
6728 515544 : in43 = GF_MUL( in43, 1 ); \
6729 515544 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
6730 515544 : in44 = GF_MUL( in44, 1 ); \
6731 515544 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
6732 515544 : in45 = GF_MUL( in45, 1 ); \
6733 515544 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
6734 515544 : in46 = GF_MUL( in46, 1 ); \
6735 515544 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
6736 515544 : in47 = GF_MUL( in47, 1 ); \
6737 515544 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
6738 515544 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
6739 515544 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
6740 515544 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
6741 515544 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
6742 515544 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
6743 515544 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
6744 515544 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
6745 515544 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
6746 515544 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
6747 515544 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
6748 515544 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
6749 515544 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
6750 515544 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
6751 515544 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
6752 515544 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
6753 515544 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
6754 515544 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
6755 515544 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
6756 515544 : GF_MUL22( in18, in50, 1, 0, 1, 1 ); \
6757 515544 : in19 = GF_MUL( in19, 1 ); \
6758 515544 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
6759 515544 : in20 = GF_MUL( in20, 1 ); \
6760 515544 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
6761 515544 : in21 = GF_MUL( in21, 1 ); \
6762 515544 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
6763 515544 : in22 = GF_MUL( in22, 1 ); \
6764 515544 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
6765 515544 : in23 = GF_MUL( in23, 1 ); \
6766 515544 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
6767 515544 : in24 = GF_MUL( in24, 1 ); \
6768 515544 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
6769 515544 : in25 = GF_MUL( in25, 1 ); \
6770 515544 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
6771 515544 : in26 = GF_MUL( in26, 1 ); \
6772 515544 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
6773 515544 : in27 = GF_MUL( in27, 1 ); \
6774 515544 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
6775 515544 : in28 = GF_MUL( in28, 1 ); \
6776 515544 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
6777 515544 : in29 = GF_MUL( in29, 1 ); \
6778 515544 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
6779 515544 : in30 = GF_MUL( in30, 1 ); \
6780 515544 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
6781 515544 : in31 = GF_MUL( in31, 1 ); \
6782 515544 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
6783 515544 : } while( 0 )
6784 :
6785 : void fd_reedsol_ppt_64_52( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
6786 : #define FD_REEDSOL_PPT_IMPL_64_52( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
6787 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
6788 515544 : do { \
6789 515544 : gf_t scratch_10, scratch_11, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_30, scratch_31, scratch_4, scratch_5; \
6790 515544 : gf_t scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59, scratch_6, scratch_60, scratch_61, scratch_62, scratch_63, scratch_7, scratch_8, scratch_9; \
6791 515544 : scratch_52 = in52; \
6792 515544 : in52 = GF_MUL( in52, 1 ); \
6793 515544 : scratch_53 = in53; \
6794 515544 : in53 = GF_MUL( in53, 1 ); \
6795 515544 : scratch_54 = in54; \
6796 515544 : in54 = GF_MUL( in54, 1 ); \
6797 515544 : scratch_55 = in55; \
6798 515544 : in55 = GF_MUL( in55, 1 ); \
6799 515544 : scratch_56 = in56; \
6800 515544 : in56 = GF_MUL( in56, 1 ); \
6801 515544 : scratch_57 = in57; \
6802 515544 : in57 = GF_MUL( in57, 1 ); \
6803 515544 : scratch_58 = in58; \
6804 515544 : in58 = GF_MUL( in58, 1 ); \
6805 515544 : scratch_59 = in59; \
6806 515544 : in59 = GF_MUL( in59, 1 ); \
6807 515544 : scratch_60 = in60; \
6808 515544 : in60 = GF_MUL( in60, 1 ); \
6809 515544 : scratch_61 = in61; \
6810 515544 : in61 = GF_MUL( in61, 1 ); \
6811 515544 : scratch_62 = in62; \
6812 515544 : in62 = GF_MUL( in62, 1 ); \
6813 515544 : scratch_63 = in63; \
6814 515544 : in63 = GF_MUL( in63, 1 ); \
6815 515544 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
6816 515544 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
6817 515544 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
6818 515544 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
6819 515544 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
6820 515544 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
6821 515544 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
6822 515544 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
6823 515544 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
6824 515544 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
6825 515544 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
6826 515544 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
6827 515544 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
6828 515544 : scratch_20 = in52; \
6829 515544 : in52 = GF_MUL( in52, 1 ); \
6830 515544 : scratch_21 = in53; \
6831 515544 : in53 = GF_MUL( in53, 1 ); \
6832 515544 : scratch_22 = in54; \
6833 515544 : in54 = GF_MUL( in54, 1 ); \
6834 515544 : scratch_23 = in55; \
6835 515544 : in55 = GF_MUL( in55, 1 ); \
6836 515544 : scratch_24 = in56; \
6837 515544 : in56 = GF_MUL( in56, 1 ); \
6838 515544 : scratch_25 = in57; \
6839 515544 : in57 = GF_MUL( in57, 1 ); \
6840 515544 : scratch_26 = in58; \
6841 515544 : in58 = GF_MUL( in58, 1 ); \
6842 515544 : scratch_27 = in59; \
6843 515544 : in59 = GF_MUL( in59, 1 ); \
6844 515544 : scratch_28 = in60; \
6845 515544 : in60 = GF_MUL( in60, 1 ); \
6846 515544 : scratch_29 = in61; \
6847 515544 : in61 = GF_MUL( in61, 1 ); \
6848 515544 : scratch_30 = in62; \
6849 515544 : in62 = GF_MUL( in62, 1 ); \
6850 515544 : scratch_31 = in63; \
6851 515544 : in63 = GF_MUL( in63, 1 ); \
6852 515544 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
6853 515544 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
6854 515544 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
6855 515544 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
6856 515544 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
6857 515544 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
6858 515544 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
6859 515544 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
6860 515544 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
6861 515544 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
6862 515544 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
6863 515544 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
6864 515544 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
6865 515544 : scratch_8 = in56; \
6866 515544 : in56 = GF_MUL( in56, 1 ); \
6867 515544 : scratch_9 = in57; \
6868 515544 : in57 = GF_MUL( in57, 1 ); \
6869 515544 : scratch_10 = in58; \
6870 515544 : in58 = GF_MUL( in58, 1 ); \
6871 515544 : scratch_11 = in59; \
6872 515544 : in59 = GF_MUL( in59, 1 ); \
6873 515544 : GF_MUL22( in52, in60, 1, 165, 1, 164 ); \
6874 515544 : GF_MUL22( in53, in61, 1, 165, 1, 164 ); \
6875 515544 : GF_MUL22( in54, in62, 1, 165, 1, 164 ); \
6876 515544 : GF_MUL22( in55, in63, 1, 165, 1, 164 ); \
6877 515544 : scratch_4 = in52; \
6878 515544 : in52 = GF_MUL( in52, 1 ); \
6879 515544 : scratch_5 = in53; \
6880 515544 : in53 = GF_MUL( in53, 1 ); \
6881 515544 : scratch_6 = in54; \
6882 515544 : in54 = GF_MUL( in54, 1 ); \
6883 515544 : scratch_7 = in55; \
6884 515544 : in55 = GF_MUL( in55, 1 ); \
6885 515544 : FD_REEDSOL_GENERATE_IFFT( 4, 48, in48, in49, in50, in51 ); \
6886 515544 : in52 = GF_ADD( GF_MUL( in48, 1 ), in52 ); \
6887 515544 : in53 = GF_ADD( GF_MUL( in49, 1 ), in53 ); \
6888 515544 : in54 = GF_ADD( GF_MUL( in50, 1 ), in54 ); \
6889 515544 : in55 = GF_ADD( GF_MUL( in51, 1 ), in55 ); \
6890 515544 : FD_REEDSOL_GENERATE_FFT( 4, 52, in52, in53, in54, in55 ); \
6891 515544 : in48 = GF_MUL( in48, 1 ); \
6892 515544 : in48 = GF_ADD( GF_MUL( scratch_4, 71 ), in48 ); \
6893 515544 : in49 = GF_MUL( in49, 1 ); \
6894 515544 : in49 = GF_ADD( GF_MUL( scratch_5, 71 ), in49 ); \
6895 515544 : in50 = GF_MUL( in50, 1 ); \
6896 515544 : in50 = GF_ADD( GF_MUL( scratch_6, 71 ), in50 ); \
6897 515544 : in51 = GF_MUL( in51, 1 ); \
6898 515544 : in51 = GF_ADD( GF_MUL( scratch_7, 71 ), in51 ); \
6899 515544 : in56 = GF_ADD( GF_MUL( in48, 1 ), in56 ); \
6900 515544 : in57 = GF_ADD( GF_MUL( in49, 1 ), in57 ); \
6901 515544 : in58 = GF_ADD( GF_MUL( in50, 1 ), in58 ); \
6902 515544 : in59 = GF_ADD( GF_MUL( in51, 1 ), in59 ); \
6903 515544 : FD_REEDSOL_GENERATE_FFT( 8, 56, in56, in57, in58, in59, in60, in61, in62, in63 ); \
6904 515544 : in48 = GF_MUL( in48, 1 ); \
6905 515544 : in48 = GF_ADD( GF_MUL( scratch_8, 165 ), in48 ); \
6906 515544 : in49 = GF_MUL( in49, 1 ); \
6907 515544 : in49 = GF_ADD( GF_MUL( scratch_9, 165 ), in49 ); \
6908 515544 : in50 = GF_MUL( in50, 1 ); \
6909 515544 : in50 = GF_ADD( GF_MUL( scratch_10, 165 ), in50 ); \
6910 515544 : in51 = GF_MUL( in51, 1 ); \
6911 515544 : in51 = GF_ADD( GF_MUL( scratch_11, 165 ), in51 ); \
6912 515544 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
6913 515544 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
6914 515544 : GF_MUL22( in34, in50, 70, 71, 1, 1 ); \
6915 515544 : GF_MUL22( in35, in51, 70, 71, 1, 1 ); \
6916 515544 : in36 = GF_MUL( in36, 1 ); \
6917 515544 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
6918 515544 : in37 = GF_MUL( in37, 1 ); \
6919 515544 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
6920 515544 : in38 = GF_MUL( in38, 1 ); \
6921 515544 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
6922 515544 : in39 = GF_MUL( in39, 1 ); \
6923 515544 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
6924 515544 : in40 = GF_MUL( in40, 1 ); \
6925 515544 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
6926 515544 : in41 = GF_MUL( in41, 1 ); \
6927 515544 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
6928 515544 : in42 = GF_MUL( in42, 1 ); \
6929 515544 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
6930 515544 : in43 = GF_MUL( in43, 1 ); \
6931 515544 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
6932 515544 : in44 = GF_MUL( in44, 1 ); \
6933 515544 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
6934 515544 : in45 = GF_MUL( in45, 1 ); \
6935 515544 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
6936 515544 : in46 = GF_MUL( in46, 1 ); \
6937 515544 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
6938 515544 : in47 = GF_MUL( in47, 1 ); \
6939 515544 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
6940 515544 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
6941 515544 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
6942 515544 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
6943 515544 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
6944 515544 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
6945 515544 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
6946 515544 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
6947 515544 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
6948 515544 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
6949 515544 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
6950 515544 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
6951 515544 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
6952 515544 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
6953 515544 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
6954 515544 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
6955 515544 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
6956 515544 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
6957 515544 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
6958 515544 : GF_MUL22( in18, in50, 1, 0, 1, 1 ); \
6959 515544 : GF_MUL22( in19, in51, 1, 0, 1, 1 ); \
6960 515544 : in20 = GF_MUL( in20, 1 ); \
6961 515544 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
6962 515544 : in21 = GF_MUL( in21, 1 ); \
6963 515544 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
6964 515544 : in22 = GF_MUL( in22, 1 ); \
6965 515544 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
6966 515544 : in23 = GF_MUL( in23, 1 ); \
6967 515544 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
6968 515544 : in24 = GF_MUL( in24, 1 ); \
6969 515544 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
6970 515544 : in25 = GF_MUL( in25, 1 ); \
6971 515544 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
6972 515544 : in26 = GF_MUL( in26, 1 ); \
6973 515544 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
6974 515544 : in27 = GF_MUL( in27, 1 ); \
6975 515544 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
6976 515544 : in28 = GF_MUL( in28, 1 ); \
6977 515544 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
6978 515544 : in29 = GF_MUL( in29, 1 ); \
6979 515544 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
6980 515544 : in30 = GF_MUL( in30, 1 ); \
6981 515544 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
6982 515544 : in31 = GF_MUL( in31, 1 ); \
6983 515544 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
6984 515544 : } while( 0 )
6985 :
6986 : void fd_reedsol_ppt_64_53( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
6987 : #define FD_REEDSOL_PPT_IMPL_64_53( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
6988 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
6989 515736 : do { \
6990 515736 : gf_t scratch_10, scratch_11, scratch_12, scratch_2, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_30, scratch_31, scratch_5; \
6991 515736 : gf_t scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59, scratch_6, scratch_60, scratch_61, scratch_62, scratch_63, scratch_7, scratch_8, scratch_9; \
6992 515736 : scratch_53 = in53; \
6993 515736 : in53 = GF_MUL( in53, 1 ); \
6994 515736 : scratch_54 = in54; \
6995 515736 : in54 = GF_MUL( in54, 1 ); \
6996 515736 : scratch_55 = in55; \
6997 515736 : in55 = GF_MUL( in55, 1 ); \
6998 515736 : scratch_56 = in56; \
6999 515736 : in56 = GF_MUL( in56, 1 ); \
7000 515736 : scratch_57 = in57; \
7001 515736 : in57 = GF_MUL( in57, 1 ); \
7002 515736 : scratch_58 = in58; \
7003 515736 : in58 = GF_MUL( in58, 1 ); \
7004 515736 : scratch_59 = in59; \
7005 515736 : in59 = GF_MUL( in59, 1 ); \
7006 515736 : scratch_60 = in60; \
7007 515736 : in60 = GF_MUL( in60, 1 ); \
7008 515736 : scratch_61 = in61; \
7009 515736 : in61 = GF_MUL( in61, 1 ); \
7010 515736 : scratch_62 = in62; \
7011 515736 : in62 = GF_MUL( in62, 1 ); \
7012 515736 : scratch_63 = in63; \
7013 515736 : in63 = GF_MUL( in63, 1 ); \
7014 515736 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
7015 515736 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
7016 515736 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
7017 515736 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
7018 515736 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
7019 515736 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
7020 515736 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
7021 515736 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
7022 515736 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
7023 515736 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
7024 515736 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
7025 515736 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
7026 515736 : scratch_21 = in53; \
7027 515736 : in53 = GF_MUL( in53, 1 ); \
7028 515736 : scratch_22 = in54; \
7029 515736 : in54 = GF_MUL( in54, 1 ); \
7030 515736 : scratch_23 = in55; \
7031 515736 : in55 = GF_MUL( in55, 1 ); \
7032 515736 : scratch_24 = in56; \
7033 515736 : in56 = GF_MUL( in56, 1 ); \
7034 515736 : scratch_25 = in57; \
7035 515736 : in57 = GF_MUL( in57, 1 ); \
7036 515736 : scratch_26 = in58; \
7037 515736 : in58 = GF_MUL( in58, 1 ); \
7038 515736 : scratch_27 = in59; \
7039 515736 : in59 = GF_MUL( in59, 1 ); \
7040 515736 : scratch_28 = in60; \
7041 515736 : in60 = GF_MUL( in60, 1 ); \
7042 515736 : scratch_29 = in61; \
7043 515736 : in61 = GF_MUL( in61, 1 ); \
7044 515736 : scratch_30 = in62; \
7045 515736 : in62 = GF_MUL( in62, 1 ); \
7046 515736 : scratch_31 = in63; \
7047 515736 : in63 = GF_MUL( in63, 1 ); \
7048 515736 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
7049 515736 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
7050 515736 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
7051 515736 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
7052 515736 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
7053 515736 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
7054 515736 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
7055 515736 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
7056 515736 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
7057 515736 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
7058 515736 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
7059 515736 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
7060 515736 : scratch_8 = in56; \
7061 515736 : in56 = GF_MUL( in56, 1 ); \
7062 515736 : scratch_9 = in57; \
7063 515736 : in57 = GF_MUL( in57, 1 ); \
7064 515736 : scratch_10 = in58; \
7065 515736 : in58 = GF_MUL( in58, 1 ); \
7066 515736 : scratch_11 = in59; \
7067 515736 : in59 = GF_MUL( in59, 1 ); \
7068 515736 : scratch_12 = in60; \
7069 515736 : in60 = GF_MUL( in60, 1 ); \
7070 515736 : GF_MUL22( in53, in61, 1, 165, 1, 164 ); \
7071 515736 : GF_MUL22( in54, in62, 1, 165, 1, 164 ); \
7072 515736 : GF_MUL22( in55, in63, 1, 165, 1, 164 ); \
7073 515736 : scratch_5 = in53; \
7074 515736 : in53 = GF_MUL( in53, 1 ); \
7075 515736 : scratch_6 = in54; \
7076 515736 : in54 = GF_MUL( in54, 1 ); \
7077 515736 : scratch_7 = in55; \
7078 515736 : in55 = GF_MUL( in55, 1 ); \
7079 515736 : FD_REEDSOL_GENERATE_IFFT( 4, 48, in48, in49, in50, in51 ); \
7080 515736 : in53 = GF_ADD( GF_MUL( in49, 1 ), in53 ); \
7081 515736 : in54 = GF_ADD( GF_MUL( in50, 1 ), in54 ); \
7082 515736 : in55 = GF_ADD( GF_MUL( in51, 1 ), in55 ); \
7083 515736 : scratch_2 = in54; \
7084 515736 : in54 = GF_MUL( in54, 1 ); \
7085 515736 : GF_MUL22( in53, in55, 1, 147, 1, 146 ); \
7086 515736 : GF_MUL22( in52, in53, 1, 52, 1, 1 ); \
7087 515736 : in54 = GF_ADD( GF_MUL( in52, 1 ), in54 ); \
7088 515736 : GF_MUL22( in54, in55, 1, 54, 1, 55 ); \
7089 515736 : in52 = GF_MUL( in52, 1 ); \
7090 515736 : in52 = GF_ADD( GF_MUL( scratch_2, 147 ), in52 ); \
7091 515736 : GF_MUL22( in48, in52, 70, 71, 1, 1 ); \
7092 515736 : in49 = GF_MUL( in49, 1 ); \
7093 515736 : in49 = GF_ADD( GF_MUL( scratch_5, 71 ), in49 ); \
7094 515736 : in50 = GF_MUL( in50, 1 ); \
7095 515736 : in50 = GF_ADD( GF_MUL( scratch_6, 71 ), in50 ); \
7096 515736 : in51 = GF_MUL( in51, 1 ); \
7097 515736 : in51 = GF_ADD( GF_MUL( scratch_7, 71 ), in51 ); \
7098 515736 : in56 = GF_ADD( GF_MUL( in48, 1 ), in56 ); \
7099 515736 : in57 = GF_ADD( GF_MUL( in49, 1 ), in57 ); \
7100 515736 : in58 = GF_ADD( GF_MUL( in50, 1 ), in58 ); \
7101 515736 : in59 = GF_ADD( GF_MUL( in51, 1 ), in59 ); \
7102 515736 : in60 = GF_ADD( GF_MUL( in52, 1 ), in60 ); \
7103 515736 : FD_REEDSOL_GENERATE_FFT( 8, 56, in56, in57, in58, in59, in60, in61, in62, in63 ); \
7104 515736 : in48 = GF_MUL( in48, 1 ); \
7105 515736 : in48 = GF_ADD( GF_MUL( scratch_8, 165 ), in48 ); \
7106 515736 : in49 = GF_MUL( in49, 1 ); \
7107 515736 : in49 = GF_ADD( GF_MUL( scratch_9, 165 ), in49 ); \
7108 515736 : in50 = GF_MUL( in50, 1 ); \
7109 515736 : in50 = GF_ADD( GF_MUL( scratch_10, 165 ), in50 ); \
7110 515736 : in51 = GF_MUL( in51, 1 ); \
7111 515736 : in51 = GF_ADD( GF_MUL( scratch_11, 165 ), in51 ); \
7112 515736 : in52 = GF_MUL( in52, 1 ); \
7113 515736 : in52 = GF_ADD( GF_MUL( scratch_12, 165 ), in52 ); \
7114 515736 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
7115 515736 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
7116 515736 : GF_MUL22( in34, in50, 70, 71, 1, 1 ); \
7117 515736 : GF_MUL22( in35, in51, 70, 71, 1, 1 ); \
7118 515736 : GF_MUL22( in36, in52, 70, 71, 1, 1 ); \
7119 515736 : in37 = GF_MUL( in37, 1 ); \
7120 515736 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
7121 515736 : in38 = GF_MUL( in38, 1 ); \
7122 515736 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
7123 515736 : in39 = GF_MUL( in39, 1 ); \
7124 515736 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
7125 515736 : in40 = GF_MUL( in40, 1 ); \
7126 515736 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
7127 515736 : in41 = GF_MUL( in41, 1 ); \
7128 515736 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
7129 515736 : in42 = GF_MUL( in42, 1 ); \
7130 515736 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
7131 515736 : in43 = GF_MUL( in43, 1 ); \
7132 515736 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
7133 515736 : in44 = GF_MUL( in44, 1 ); \
7134 515736 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
7135 515736 : in45 = GF_MUL( in45, 1 ); \
7136 515736 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
7137 515736 : in46 = GF_MUL( in46, 1 ); \
7138 515736 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
7139 515736 : in47 = GF_MUL( in47, 1 ); \
7140 515736 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
7141 515736 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
7142 515736 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
7143 515736 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
7144 515736 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
7145 515736 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
7146 515736 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
7147 515736 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
7148 515736 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
7149 515736 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
7150 515736 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
7151 515736 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
7152 515736 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
7153 515736 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
7154 515736 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
7155 515736 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
7156 515736 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
7157 515736 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
7158 515736 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
7159 515736 : GF_MUL22( in18, in50, 1, 0, 1, 1 ); \
7160 515736 : GF_MUL22( in19, in51, 1, 0, 1, 1 ); \
7161 515736 : GF_MUL22( in20, in52, 1, 0, 1, 1 ); \
7162 515736 : in21 = GF_MUL( in21, 1 ); \
7163 515736 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
7164 515736 : in22 = GF_MUL( in22, 1 ); \
7165 515736 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
7166 515736 : in23 = GF_MUL( in23, 1 ); \
7167 515736 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
7168 515736 : in24 = GF_MUL( in24, 1 ); \
7169 515736 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
7170 515736 : in25 = GF_MUL( in25, 1 ); \
7171 515736 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
7172 515736 : in26 = GF_MUL( in26, 1 ); \
7173 515736 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
7174 515736 : in27 = GF_MUL( in27, 1 ); \
7175 515736 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
7176 515736 : in28 = GF_MUL( in28, 1 ); \
7177 515736 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
7178 515736 : in29 = GF_MUL( in29, 1 ); \
7179 515736 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
7180 515736 : in30 = GF_MUL( in30, 1 ); \
7181 515736 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
7182 515736 : in31 = GF_MUL( in31, 1 ); \
7183 515736 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
7184 515736 : } while( 0 )
7185 :
7186 : void fd_reedsol_ppt_64_54( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
7187 : #define FD_REEDSOL_PPT_IMPL_64_54( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
7188 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
7189 515544 : do { \
7190 515544 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_2, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_3, scratch_30, scratch_31; \
7191 515544 : gf_t scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59, scratch_6, scratch_60, scratch_61, scratch_62, scratch_63, scratch_7, scratch_8, scratch_9; \
7192 515544 : scratch_54 = in54; \
7193 515544 : in54 = GF_MUL( in54, 1 ); \
7194 515544 : scratch_55 = in55; \
7195 515544 : in55 = GF_MUL( in55, 1 ); \
7196 515544 : scratch_56 = in56; \
7197 515544 : in56 = GF_MUL( in56, 1 ); \
7198 515544 : scratch_57 = in57; \
7199 515544 : in57 = GF_MUL( in57, 1 ); \
7200 515544 : scratch_58 = in58; \
7201 515544 : in58 = GF_MUL( in58, 1 ); \
7202 515544 : scratch_59 = in59; \
7203 515544 : in59 = GF_MUL( in59, 1 ); \
7204 515544 : scratch_60 = in60; \
7205 515544 : in60 = GF_MUL( in60, 1 ); \
7206 515544 : scratch_61 = in61; \
7207 515544 : in61 = GF_MUL( in61, 1 ); \
7208 515544 : scratch_62 = in62; \
7209 515544 : in62 = GF_MUL( in62, 1 ); \
7210 515544 : scratch_63 = in63; \
7211 515544 : in63 = GF_MUL( in63, 1 ); \
7212 515544 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
7213 515544 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
7214 515544 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
7215 515544 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
7216 515544 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
7217 515544 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
7218 515544 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
7219 515544 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
7220 515544 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
7221 515544 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
7222 515544 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
7223 515544 : scratch_22 = in54; \
7224 515544 : in54 = GF_MUL( in54, 1 ); \
7225 515544 : scratch_23 = in55; \
7226 515544 : in55 = GF_MUL( in55, 1 ); \
7227 515544 : scratch_24 = in56; \
7228 515544 : in56 = GF_MUL( in56, 1 ); \
7229 515544 : scratch_25 = in57; \
7230 515544 : in57 = GF_MUL( in57, 1 ); \
7231 515544 : scratch_26 = in58; \
7232 515544 : in58 = GF_MUL( in58, 1 ); \
7233 515544 : scratch_27 = in59; \
7234 515544 : in59 = GF_MUL( in59, 1 ); \
7235 515544 : scratch_28 = in60; \
7236 515544 : in60 = GF_MUL( in60, 1 ); \
7237 515544 : scratch_29 = in61; \
7238 515544 : in61 = GF_MUL( in61, 1 ); \
7239 515544 : scratch_30 = in62; \
7240 515544 : in62 = GF_MUL( in62, 1 ); \
7241 515544 : scratch_31 = in63; \
7242 515544 : in63 = GF_MUL( in63, 1 ); \
7243 515544 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
7244 515544 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
7245 515544 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
7246 515544 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
7247 515544 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
7248 515544 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
7249 515544 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
7250 515544 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
7251 515544 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
7252 515544 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
7253 515544 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
7254 515544 : scratch_8 = in56; \
7255 515544 : in56 = GF_MUL( in56, 1 ); \
7256 515544 : scratch_9 = in57; \
7257 515544 : in57 = GF_MUL( in57, 1 ); \
7258 515544 : scratch_10 = in58; \
7259 515544 : in58 = GF_MUL( in58, 1 ); \
7260 515544 : scratch_11 = in59; \
7261 515544 : in59 = GF_MUL( in59, 1 ); \
7262 515544 : scratch_12 = in60; \
7263 515544 : in60 = GF_MUL( in60, 1 ); \
7264 515544 : scratch_13 = in61; \
7265 515544 : in61 = GF_MUL( in61, 1 ); \
7266 515544 : GF_MUL22( in54, in62, 1, 165, 1, 164 ); \
7267 515544 : GF_MUL22( in55, in63, 1, 165, 1, 164 ); \
7268 515544 : scratch_6 = in54; \
7269 515544 : in54 = GF_MUL( in54, 1 ); \
7270 515544 : scratch_7 = in55; \
7271 515544 : in55 = GF_MUL( in55, 1 ); \
7272 515544 : FD_REEDSOL_GENERATE_IFFT( 4, 48, in48, in49, in50, in51 ); \
7273 515544 : in54 = GF_ADD( GF_MUL( in50, 1 ), in54 ); \
7274 515544 : in55 = GF_ADD( GF_MUL( in51, 1 ), in55 ); \
7275 515544 : scratch_2 = in54; \
7276 515544 : in54 = GF_MUL( in54, 1 ); \
7277 515544 : scratch_3 = in55; \
7278 515544 : in55 = GF_MUL( in55, 1 ); \
7279 515544 : GF_MUL22( in52, in53, 53, 52, 1, 1 ); \
7280 515544 : in54 = GF_ADD( GF_MUL( in52, 1 ), in54 ); \
7281 515544 : in55 = GF_ADD( GF_MUL( in53, 1 ), in55 ); \
7282 515544 : GF_MUL22( in54, in55, 1, 54, 1, 55 ); \
7283 515544 : in52 = GF_MUL( in52, 1 ); \
7284 515544 : in52 = GF_ADD( GF_MUL( scratch_2, 147 ), in52 ); \
7285 515544 : in53 = GF_MUL( in53, 1 ); \
7286 515544 : in53 = GF_ADD( GF_MUL( scratch_3, 147 ), in53 ); \
7287 515544 : GF_MUL22( in48, in52, 70, 71, 1, 1 ); \
7288 515544 : GF_MUL22( in49, in53, 70, 71, 1, 1 ); \
7289 515544 : in50 = GF_MUL( in50, 1 ); \
7290 515544 : in50 = GF_ADD( GF_MUL( scratch_6, 71 ), in50 ); \
7291 515544 : in51 = GF_MUL( in51, 1 ); \
7292 515544 : in51 = GF_ADD( GF_MUL( scratch_7, 71 ), in51 ); \
7293 515544 : in56 = GF_ADD( GF_MUL( in48, 1 ), in56 ); \
7294 515544 : in57 = GF_ADD( GF_MUL( in49, 1 ), in57 ); \
7295 515544 : in58 = GF_ADD( GF_MUL( in50, 1 ), in58 ); \
7296 515544 : in59 = GF_ADD( GF_MUL( in51, 1 ), in59 ); \
7297 515544 : in60 = GF_ADD( GF_MUL( in52, 1 ), in60 ); \
7298 515544 : in61 = GF_ADD( GF_MUL( in53, 1 ), in61 ); \
7299 515544 : FD_REEDSOL_GENERATE_FFT( 8, 56, in56, in57, in58, in59, in60, in61, in62, in63 ); \
7300 515544 : in48 = GF_MUL( in48, 1 ); \
7301 515544 : in48 = GF_ADD( GF_MUL( scratch_8, 165 ), in48 ); \
7302 515544 : in49 = GF_MUL( in49, 1 ); \
7303 515544 : in49 = GF_ADD( GF_MUL( scratch_9, 165 ), in49 ); \
7304 515544 : in50 = GF_MUL( in50, 1 ); \
7305 515544 : in50 = GF_ADD( GF_MUL( scratch_10, 165 ), in50 ); \
7306 515544 : in51 = GF_MUL( in51, 1 ); \
7307 515544 : in51 = GF_ADD( GF_MUL( scratch_11, 165 ), in51 ); \
7308 515544 : in52 = GF_MUL( in52, 1 ); \
7309 515544 : in52 = GF_ADD( GF_MUL( scratch_12, 165 ), in52 ); \
7310 515544 : in53 = GF_MUL( in53, 1 ); \
7311 515544 : in53 = GF_ADD( GF_MUL( scratch_13, 165 ), in53 ); \
7312 515544 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
7313 515544 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
7314 515544 : GF_MUL22( in34, in50, 70, 71, 1, 1 ); \
7315 515544 : GF_MUL22( in35, in51, 70, 71, 1, 1 ); \
7316 515544 : GF_MUL22( in36, in52, 70, 71, 1, 1 ); \
7317 515544 : GF_MUL22( in37, in53, 70, 71, 1, 1 ); \
7318 515544 : in38 = GF_MUL( in38, 1 ); \
7319 515544 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
7320 515544 : in39 = GF_MUL( in39, 1 ); \
7321 515544 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
7322 515544 : in40 = GF_MUL( in40, 1 ); \
7323 515544 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
7324 515544 : in41 = GF_MUL( in41, 1 ); \
7325 515544 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
7326 515544 : in42 = GF_MUL( in42, 1 ); \
7327 515544 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
7328 515544 : in43 = GF_MUL( in43, 1 ); \
7329 515544 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
7330 515544 : in44 = GF_MUL( in44, 1 ); \
7331 515544 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
7332 515544 : in45 = GF_MUL( in45, 1 ); \
7333 515544 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
7334 515544 : in46 = GF_MUL( in46, 1 ); \
7335 515544 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
7336 515544 : in47 = GF_MUL( in47, 1 ); \
7337 515544 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
7338 515544 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
7339 515544 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
7340 515544 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
7341 515544 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
7342 515544 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
7343 515544 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
7344 515544 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
7345 515544 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
7346 515544 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
7347 515544 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
7348 515544 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
7349 515544 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
7350 515544 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
7351 515544 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
7352 515544 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
7353 515544 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
7354 515544 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
7355 515544 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
7356 515544 : GF_MUL22( in18, in50, 1, 0, 1, 1 ); \
7357 515544 : GF_MUL22( in19, in51, 1, 0, 1, 1 ); \
7358 515544 : GF_MUL22( in20, in52, 1, 0, 1, 1 ); \
7359 515544 : GF_MUL22( in21, in53, 1, 0, 1, 1 ); \
7360 515544 : in22 = GF_MUL( in22, 1 ); \
7361 515544 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
7362 515544 : in23 = GF_MUL( in23, 1 ); \
7363 515544 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
7364 515544 : in24 = GF_MUL( in24, 1 ); \
7365 515544 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
7366 515544 : in25 = GF_MUL( in25, 1 ); \
7367 515544 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
7368 515544 : in26 = GF_MUL( in26, 1 ); \
7369 515544 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
7370 515544 : in27 = GF_MUL( in27, 1 ); \
7371 515544 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
7372 515544 : in28 = GF_MUL( in28, 1 ); \
7373 515544 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
7374 515544 : in29 = GF_MUL( in29, 1 ); \
7375 515544 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
7376 515544 : in30 = GF_MUL( in30, 1 ); \
7377 515544 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
7378 515544 : in31 = GF_MUL( in31, 1 ); \
7379 515544 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
7380 515544 : } while( 0 )
7381 :
7382 : void fd_reedsol_ppt_64_55( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
7383 : #define FD_REEDSOL_PPT_IMPL_64_55( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
7384 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
7385 515544 : do { \
7386 515544 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_3, scratch_30, scratch_31, scratch_55; \
7387 515544 : gf_t scratch_56, scratch_57, scratch_58, scratch_59, scratch_60, scratch_61, scratch_62, scratch_63, scratch_7, scratch_8, scratch_9; \
7388 515544 : scratch_55 = in55; \
7389 515544 : in55 = GF_MUL( in55, 1 ); \
7390 515544 : scratch_56 = in56; \
7391 515544 : in56 = GF_MUL( in56, 1 ); \
7392 515544 : scratch_57 = in57; \
7393 515544 : in57 = GF_MUL( in57, 1 ); \
7394 515544 : scratch_58 = in58; \
7395 515544 : in58 = GF_MUL( in58, 1 ); \
7396 515544 : scratch_59 = in59; \
7397 515544 : in59 = GF_MUL( in59, 1 ); \
7398 515544 : scratch_60 = in60; \
7399 515544 : in60 = GF_MUL( in60, 1 ); \
7400 515544 : scratch_61 = in61; \
7401 515544 : in61 = GF_MUL( in61, 1 ); \
7402 515544 : scratch_62 = in62; \
7403 515544 : in62 = GF_MUL( in62, 1 ); \
7404 515544 : scratch_63 = in63; \
7405 515544 : in63 = GF_MUL( in63, 1 ); \
7406 515544 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
7407 515544 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
7408 515544 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
7409 515544 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
7410 515544 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
7411 515544 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
7412 515544 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
7413 515544 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
7414 515544 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
7415 515544 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
7416 515544 : scratch_23 = in55; \
7417 515544 : in55 = GF_MUL( in55, 1 ); \
7418 515544 : scratch_24 = in56; \
7419 515544 : in56 = GF_MUL( in56, 1 ); \
7420 515544 : scratch_25 = in57; \
7421 515544 : in57 = GF_MUL( in57, 1 ); \
7422 515544 : scratch_26 = in58; \
7423 515544 : in58 = GF_MUL( in58, 1 ); \
7424 515544 : scratch_27 = in59; \
7425 515544 : in59 = GF_MUL( in59, 1 ); \
7426 515544 : scratch_28 = in60; \
7427 515544 : in60 = GF_MUL( in60, 1 ); \
7428 515544 : scratch_29 = in61; \
7429 515544 : in61 = GF_MUL( in61, 1 ); \
7430 515544 : scratch_30 = in62; \
7431 515544 : in62 = GF_MUL( in62, 1 ); \
7432 515544 : scratch_31 = in63; \
7433 515544 : in63 = GF_MUL( in63, 1 ); \
7434 515544 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
7435 515544 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
7436 515544 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
7437 515544 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
7438 515544 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
7439 515544 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
7440 515544 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
7441 515544 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
7442 515544 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
7443 515544 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
7444 515544 : scratch_8 = in56; \
7445 515544 : in56 = GF_MUL( in56, 1 ); \
7446 515544 : scratch_9 = in57; \
7447 515544 : in57 = GF_MUL( in57, 1 ); \
7448 515544 : scratch_10 = in58; \
7449 515544 : in58 = GF_MUL( in58, 1 ); \
7450 515544 : scratch_11 = in59; \
7451 515544 : in59 = GF_MUL( in59, 1 ); \
7452 515544 : scratch_12 = in60; \
7453 515544 : in60 = GF_MUL( in60, 1 ); \
7454 515544 : scratch_13 = in61; \
7455 515544 : in61 = GF_MUL( in61, 1 ); \
7456 515544 : scratch_14 = in62; \
7457 515544 : in62 = GF_MUL( in62, 1 ); \
7458 515544 : GF_MUL22( in55, in63, 1, 165, 1, 164 ); \
7459 515544 : scratch_7 = in55; \
7460 515544 : in55 = GF_MUL( in55, 1 ); \
7461 515544 : FD_REEDSOL_GENERATE_IFFT( 4, 48, in48, in49, in50, in51 ); \
7462 515544 : in55 = GF_ADD( GF_MUL( in51, 1 ), in55 ); \
7463 515544 : scratch_3 = in55; \
7464 515544 : in55 = GF_MUL( in55, 1 ); \
7465 515544 : GF_MUL22( in52, in53, 53, 52, 1, 1 ); \
7466 515544 : in55 = GF_ADD( GF_MUL( in53, 1 ), in55 ); \
7467 515544 : GF_MUL22( in54, in55, 1, 54, 1, 1 ); \
7468 515544 : GF_MUL22( in52, in54, 146, 147, 1, 1 ); \
7469 515544 : in53 = GF_MUL( in53, 1 ); \
7470 515544 : in53 = GF_ADD( GF_MUL( scratch_3, 147 ), in53 ); \
7471 515544 : GF_MUL22( in48, in52, 70, 71, 1, 1 ); \
7472 515544 : GF_MUL22( in49, in53, 70, 71, 1, 1 ); \
7473 515544 : GF_MUL22( in50, in54, 70, 71, 1, 1 ); \
7474 515544 : in51 = GF_MUL( in51, 1 ); \
7475 515544 : in51 = GF_ADD( GF_MUL( scratch_7, 71 ), in51 ); \
7476 515544 : in56 = GF_ADD( GF_MUL( in48, 1 ), in56 ); \
7477 515544 : in57 = GF_ADD( GF_MUL( in49, 1 ), in57 ); \
7478 515544 : in58 = GF_ADD( GF_MUL( in50, 1 ), in58 ); \
7479 515544 : in59 = GF_ADD( GF_MUL( in51, 1 ), in59 ); \
7480 515544 : in60 = GF_ADD( GF_MUL( in52, 1 ), in60 ); \
7481 515544 : in61 = GF_ADD( GF_MUL( in53, 1 ), in61 ); \
7482 515544 : in62 = GF_ADD( GF_MUL( in54, 1 ), in62 ); \
7483 515544 : FD_REEDSOL_GENERATE_FFT( 8, 56, in56, in57, in58, in59, in60, in61, in62, in63 ); \
7484 515544 : in48 = GF_MUL( in48, 1 ); \
7485 515544 : in48 = GF_ADD( GF_MUL( scratch_8, 165 ), in48 ); \
7486 515544 : in49 = GF_MUL( in49, 1 ); \
7487 515544 : in49 = GF_ADD( GF_MUL( scratch_9, 165 ), in49 ); \
7488 515544 : in50 = GF_MUL( in50, 1 ); \
7489 515544 : in50 = GF_ADD( GF_MUL( scratch_10, 165 ), in50 ); \
7490 515544 : in51 = GF_MUL( in51, 1 ); \
7491 515544 : in51 = GF_ADD( GF_MUL( scratch_11, 165 ), in51 ); \
7492 515544 : in52 = GF_MUL( in52, 1 ); \
7493 515544 : in52 = GF_ADD( GF_MUL( scratch_12, 165 ), in52 ); \
7494 515544 : in53 = GF_MUL( in53, 1 ); \
7495 515544 : in53 = GF_ADD( GF_MUL( scratch_13, 165 ), in53 ); \
7496 515544 : in54 = GF_MUL( in54, 1 ); \
7497 515544 : in54 = GF_ADD( GF_MUL( scratch_14, 165 ), in54 ); \
7498 515544 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
7499 515544 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
7500 515544 : GF_MUL22( in34, in50, 70, 71, 1, 1 ); \
7501 515544 : GF_MUL22( in35, in51, 70, 71, 1, 1 ); \
7502 515544 : GF_MUL22( in36, in52, 70, 71, 1, 1 ); \
7503 515544 : GF_MUL22( in37, in53, 70, 71, 1, 1 ); \
7504 515544 : GF_MUL22( in38, in54, 70, 71, 1, 1 ); \
7505 515544 : in39 = GF_MUL( in39, 1 ); \
7506 515544 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
7507 515544 : in40 = GF_MUL( in40, 1 ); \
7508 515544 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
7509 515544 : in41 = GF_MUL( in41, 1 ); \
7510 515544 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
7511 515544 : in42 = GF_MUL( in42, 1 ); \
7512 515544 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
7513 515544 : in43 = GF_MUL( in43, 1 ); \
7514 515544 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
7515 515544 : in44 = GF_MUL( in44, 1 ); \
7516 515544 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
7517 515544 : in45 = GF_MUL( in45, 1 ); \
7518 515544 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
7519 515544 : in46 = GF_MUL( in46, 1 ); \
7520 515544 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
7521 515544 : in47 = GF_MUL( in47, 1 ); \
7522 515544 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
7523 515544 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
7524 515544 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
7525 515544 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
7526 515544 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
7527 515544 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
7528 515544 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
7529 515544 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
7530 515544 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
7531 515544 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
7532 515544 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
7533 515544 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
7534 515544 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
7535 515544 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
7536 515544 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
7537 515544 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
7538 515544 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
7539 515544 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
7540 515544 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
7541 515544 : GF_MUL22( in18, in50, 1, 0, 1, 1 ); \
7542 515544 : GF_MUL22( in19, in51, 1, 0, 1, 1 ); \
7543 515544 : GF_MUL22( in20, in52, 1, 0, 1, 1 ); \
7544 515544 : GF_MUL22( in21, in53, 1, 0, 1, 1 ); \
7545 515544 : GF_MUL22( in22, in54, 1, 0, 1, 1 ); \
7546 515544 : in23 = GF_MUL( in23, 1 ); \
7547 515544 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
7548 515544 : in24 = GF_MUL( in24, 1 ); \
7549 515544 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
7550 515544 : in25 = GF_MUL( in25, 1 ); \
7551 515544 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
7552 515544 : in26 = GF_MUL( in26, 1 ); \
7553 515544 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
7554 515544 : in27 = GF_MUL( in27, 1 ); \
7555 515544 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
7556 515544 : in28 = GF_MUL( in28, 1 ); \
7557 515544 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
7558 515544 : in29 = GF_MUL( in29, 1 ); \
7559 515544 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
7560 515544 : in30 = GF_MUL( in30, 1 ); \
7561 515544 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
7562 515544 : in31 = GF_MUL( in31, 1 ); \
7563 515544 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
7564 515544 : } while( 0 )
7565 :
7566 : void fd_reedsol_ppt_64_56( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
7567 : #define FD_REEDSOL_PPT_IMPL_64_56( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
7568 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
7569 515544 : do { \
7570 515544 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_30, scratch_31, scratch_56, scratch_57; \
7571 515544 : gf_t scratch_58, scratch_59, scratch_60, scratch_61, scratch_62, scratch_63, scratch_8, scratch_9; \
7572 515544 : scratch_56 = in56; \
7573 515544 : in56 = GF_MUL( in56, 1 ); \
7574 515544 : scratch_57 = in57; \
7575 515544 : in57 = GF_MUL( in57, 1 ); \
7576 515544 : scratch_58 = in58; \
7577 515544 : in58 = GF_MUL( in58, 1 ); \
7578 515544 : scratch_59 = in59; \
7579 515544 : in59 = GF_MUL( in59, 1 ); \
7580 515544 : scratch_60 = in60; \
7581 515544 : in60 = GF_MUL( in60, 1 ); \
7582 515544 : scratch_61 = in61; \
7583 515544 : in61 = GF_MUL( in61, 1 ); \
7584 515544 : scratch_62 = in62; \
7585 515544 : in62 = GF_MUL( in62, 1 ); \
7586 515544 : scratch_63 = in63; \
7587 515544 : in63 = GF_MUL( in63, 1 ); \
7588 515544 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
7589 515544 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
7590 515544 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
7591 515544 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
7592 515544 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
7593 515544 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
7594 515544 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
7595 515544 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
7596 515544 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
7597 515544 : scratch_24 = in56; \
7598 515544 : in56 = GF_MUL( in56, 1 ); \
7599 515544 : scratch_25 = in57; \
7600 515544 : in57 = GF_MUL( in57, 1 ); \
7601 515544 : scratch_26 = in58; \
7602 515544 : in58 = GF_MUL( in58, 1 ); \
7603 515544 : scratch_27 = in59; \
7604 515544 : in59 = GF_MUL( in59, 1 ); \
7605 515544 : scratch_28 = in60; \
7606 515544 : in60 = GF_MUL( in60, 1 ); \
7607 515544 : scratch_29 = in61; \
7608 515544 : in61 = GF_MUL( in61, 1 ); \
7609 515544 : scratch_30 = in62; \
7610 515544 : in62 = GF_MUL( in62, 1 ); \
7611 515544 : scratch_31 = in63; \
7612 515544 : in63 = GF_MUL( in63, 1 ); \
7613 515544 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
7614 515544 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
7615 515544 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
7616 515544 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
7617 515544 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
7618 515544 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
7619 515544 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
7620 515544 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
7621 515544 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
7622 515544 : scratch_8 = in56; \
7623 515544 : in56 = GF_MUL( in56, 1 ); \
7624 515544 : scratch_9 = in57; \
7625 515544 : in57 = GF_MUL( in57, 1 ); \
7626 515544 : scratch_10 = in58; \
7627 515544 : in58 = GF_MUL( in58, 1 ); \
7628 515544 : scratch_11 = in59; \
7629 515544 : in59 = GF_MUL( in59, 1 ); \
7630 515544 : scratch_12 = in60; \
7631 515544 : in60 = GF_MUL( in60, 1 ); \
7632 515544 : scratch_13 = in61; \
7633 515544 : in61 = GF_MUL( in61, 1 ); \
7634 515544 : scratch_14 = in62; \
7635 515544 : in62 = GF_MUL( in62, 1 ); \
7636 515544 : scratch_15 = in63; \
7637 515544 : in63 = GF_MUL( in63, 1 ); \
7638 515544 : FD_REEDSOL_GENERATE_IFFT( 8, 48, in48, in49, in50, in51, in52, in53, in54, in55 ); \
7639 515544 : in56 = GF_ADD( GF_MUL( in48, 1 ), in56 ); \
7640 515544 : in57 = GF_ADD( GF_MUL( in49, 1 ), in57 ); \
7641 515544 : in58 = GF_ADD( GF_MUL( in50, 1 ), in58 ); \
7642 515544 : in59 = GF_ADD( GF_MUL( in51, 1 ), in59 ); \
7643 515544 : in60 = GF_ADD( GF_MUL( in52, 1 ), in60 ); \
7644 515544 : in61 = GF_ADD( GF_MUL( in53, 1 ), in61 ); \
7645 515544 : in62 = GF_ADD( GF_MUL( in54, 1 ), in62 ); \
7646 515544 : in63 = GF_ADD( GF_MUL( in55, 1 ), in63 ); \
7647 515544 : FD_REEDSOL_GENERATE_FFT( 8, 56, in56, in57, in58, in59, in60, in61, in62, in63 ); \
7648 515544 : in48 = GF_MUL( in48, 1 ); \
7649 515544 : in48 = GF_ADD( GF_MUL( scratch_8, 165 ), in48 ); \
7650 515544 : in49 = GF_MUL( in49, 1 ); \
7651 515544 : in49 = GF_ADD( GF_MUL( scratch_9, 165 ), in49 ); \
7652 515544 : in50 = GF_MUL( in50, 1 ); \
7653 515544 : in50 = GF_ADD( GF_MUL( scratch_10, 165 ), in50 ); \
7654 515544 : in51 = GF_MUL( in51, 1 ); \
7655 515544 : in51 = GF_ADD( GF_MUL( scratch_11, 165 ), in51 ); \
7656 515544 : in52 = GF_MUL( in52, 1 ); \
7657 515544 : in52 = GF_ADD( GF_MUL( scratch_12, 165 ), in52 ); \
7658 515544 : in53 = GF_MUL( in53, 1 ); \
7659 515544 : in53 = GF_ADD( GF_MUL( scratch_13, 165 ), in53 ); \
7660 515544 : in54 = GF_MUL( in54, 1 ); \
7661 515544 : in54 = GF_ADD( GF_MUL( scratch_14, 165 ), in54 ); \
7662 515544 : in55 = GF_MUL( in55, 1 ); \
7663 515544 : in55 = GF_ADD( GF_MUL( scratch_15, 165 ), in55 ); \
7664 515544 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
7665 515544 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
7666 515544 : GF_MUL22( in34, in50, 70, 71, 1, 1 ); \
7667 515544 : GF_MUL22( in35, in51, 70, 71, 1, 1 ); \
7668 515544 : GF_MUL22( in36, in52, 70, 71, 1, 1 ); \
7669 515544 : GF_MUL22( in37, in53, 70, 71, 1, 1 ); \
7670 515544 : GF_MUL22( in38, in54, 70, 71, 1, 1 ); \
7671 515544 : GF_MUL22( in39, in55, 70, 71, 1, 1 ); \
7672 515544 : in40 = GF_MUL( in40, 1 ); \
7673 515544 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
7674 515544 : in41 = GF_MUL( in41, 1 ); \
7675 515544 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
7676 515544 : in42 = GF_MUL( in42, 1 ); \
7677 515544 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
7678 515544 : in43 = GF_MUL( in43, 1 ); \
7679 515544 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
7680 515544 : in44 = GF_MUL( in44, 1 ); \
7681 515544 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
7682 515544 : in45 = GF_MUL( in45, 1 ); \
7683 515544 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
7684 515544 : in46 = GF_MUL( in46, 1 ); \
7685 515544 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
7686 515544 : in47 = GF_MUL( in47, 1 ); \
7687 515544 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
7688 515544 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
7689 515544 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
7690 515544 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
7691 515544 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
7692 515544 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
7693 515544 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
7694 515544 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
7695 515544 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
7696 515544 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
7697 515544 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
7698 515544 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
7699 515544 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
7700 515544 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
7701 515544 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
7702 515544 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
7703 515544 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
7704 515544 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
7705 515544 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
7706 515544 : GF_MUL22( in18, in50, 1, 0, 1, 1 ); \
7707 515544 : GF_MUL22( in19, in51, 1, 0, 1, 1 ); \
7708 515544 : GF_MUL22( in20, in52, 1, 0, 1, 1 ); \
7709 515544 : GF_MUL22( in21, in53, 1, 0, 1, 1 ); \
7710 515544 : GF_MUL22( in22, in54, 1, 0, 1, 1 ); \
7711 515544 : GF_MUL22( in23, in55, 1, 0, 1, 1 ); \
7712 515544 : in24 = GF_MUL( in24, 1 ); \
7713 515544 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
7714 515544 : in25 = GF_MUL( in25, 1 ); \
7715 515544 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
7716 515544 : in26 = GF_MUL( in26, 1 ); \
7717 515544 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
7718 515544 : in27 = GF_MUL( in27, 1 ); \
7719 515544 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
7720 515544 : in28 = GF_MUL( in28, 1 ); \
7721 515544 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
7722 515544 : in29 = GF_MUL( in29, 1 ); \
7723 515544 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
7724 515544 : in30 = GF_MUL( in30, 1 ); \
7725 515544 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
7726 515544 : in31 = GF_MUL( in31, 1 ); \
7727 515544 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
7728 515544 : } while( 0 )
7729 :
7730 : void fd_reedsol_ppt_64_57( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
7731 : #define FD_REEDSOL_PPT_IMPL_64_57( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
7732 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
7733 515544 : do { \
7734 515544 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_2, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_30, scratch_31, scratch_4, scratch_57; \
7735 515544 : gf_t scratch_58, scratch_59, scratch_60, scratch_61, scratch_62, scratch_63, scratch_9; \
7736 515544 : scratch_57 = in57; \
7737 515544 : in57 = GF_MUL( in57, 1 ); \
7738 515544 : scratch_58 = in58; \
7739 515544 : in58 = GF_MUL( in58, 1 ); \
7740 515544 : scratch_59 = in59; \
7741 515544 : in59 = GF_MUL( in59, 1 ); \
7742 515544 : scratch_60 = in60; \
7743 515544 : in60 = GF_MUL( in60, 1 ); \
7744 515544 : scratch_61 = in61; \
7745 515544 : in61 = GF_MUL( in61, 1 ); \
7746 515544 : scratch_62 = in62; \
7747 515544 : in62 = GF_MUL( in62, 1 ); \
7748 515544 : scratch_63 = in63; \
7749 515544 : in63 = GF_MUL( in63, 1 ); \
7750 515544 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
7751 515544 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
7752 515544 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
7753 515544 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
7754 515544 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
7755 515544 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
7756 515544 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
7757 515544 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
7758 515544 : scratch_25 = in57; \
7759 515544 : in57 = GF_MUL( in57, 1 ); \
7760 515544 : scratch_26 = in58; \
7761 515544 : in58 = GF_MUL( in58, 1 ); \
7762 515544 : scratch_27 = in59; \
7763 515544 : in59 = GF_MUL( in59, 1 ); \
7764 515544 : scratch_28 = in60; \
7765 515544 : in60 = GF_MUL( in60, 1 ); \
7766 515544 : scratch_29 = in61; \
7767 515544 : in61 = GF_MUL( in61, 1 ); \
7768 515544 : scratch_30 = in62; \
7769 515544 : in62 = GF_MUL( in62, 1 ); \
7770 515544 : scratch_31 = in63; \
7771 515544 : in63 = GF_MUL( in63, 1 ); \
7772 515544 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
7773 515544 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
7774 515544 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
7775 515544 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
7776 515544 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
7777 515544 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
7778 515544 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
7779 515544 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
7780 515544 : scratch_9 = in57; \
7781 515544 : in57 = GF_MUL( in57, 1 ); \
7782 515544 : scratch_10 = in58; \
7783 515544 : in58 = GF_MUL( in58, 1 ); \
7784 515544 : scratch_11 = in59; \
7785 515544 : in59 = GF_MUL( in59, 1 ); \
7786 515544 : scratch_12 = in60; \
7787 515544 : in60 = GF_MUL( in60, 1 ); \
7788 515544 : scratch_13 = in61; \
7789 515544 : in61 = GF_MUL( in61, 1 ); \
7790 515544 : scratch_14 = in62; \
7791 515544 : in62 = GF_MUL( in62, 1 ); \
7792 515544 : scratch_15 = in63; \
7793 515544 : in63 = GF_MUL( in63, 1 ); \
7794 515544 : FD_REEDSOL_GENERATE_IFFT( 8, 48, in48, in49, in50, in51, in52, in53, in54, in55 ); \
7795 515544 : in57 = GF_ADD( GF_MUL( in49, 1 ), in57 ); \
7796 515544 : in58 = GF_ADD( GF_MUL( in50, 1 ), in58 ); \
7797 515544 : in59 = GF_ADD( GF_MUL( in51, 1 ), in59 ); \
7798 515544 : in60 = GF_ADD( GF_MUL( in52, 1 ), in60 ); \
7799 515544 : in61 = GF_ADD( GF_MUL( in53, 1 ), in61 ); \
7800 515544 : in62 = GF_ADD( GF_MUL( in54, 1 ), in62 ); \
7801 515544 : in63 = GF_ADD( GF_MUL( in55, 1 ), in63 ); \
7802 515544 : scratch_4 = in60; \
7803 515544 : in60 = GF_MUL( in60, 1 ); \
7804 515544 : GF_MUL22( in57, in61, 1, 81, 1, 80 ); \
7805 515544 : GF_MUL22( in58, in62, 1, 81, 1, 80 ); \
7806 515544 : GF_MUL22( in59, in63, 1, 81, 1, 80 ); \
7807 515544 : scratch_2 = in58; \
7808 515544 : in58 = GF_MUL( in58, 1 ); \
7809 515544 : GF_MUL22( in57, in59, 1, 137, 1, 136 ); \
7810 515544 : GF_MUL22( in56, in57, 1, 56, 1, 1 ); \
7811 515544 : in58 = GF_ADD( GF_MUL( in56, 1 ), in58 ); \
7812 515544 : GF_MUL22( in58, in59, 1, 58, 1, 59 ); \
7813 515544 : in56 = GF_MUL( in56, 1 ); \
7814 515544 : in56 = GF_ADD( GF_MUL( scratch_2, 137 ), in56 ); \
7815 515544 : in60 = GF_ADD( GF_MUL( in56, 1 ), in60 ); \
7816 515544 : FD_REEDSOL_GENERATE_FFT( 4, 60, in60, in61, in62, in63 ); \
7817 515544 : in56 = GF_MUL( in56, 1 ); \
7818 515544 : in56 = GF_ADD( GF_MUL( scratch_4, 81 ), in56 ); \
7819 515544 : GF_MUL22( in48, in56, 164, 165, 1, 1 ); \
7820 515544 : in49 = GF_MUL( in49, 1 ); \
7821 515544 : in49 = GF_ADD( GF_MUL( scratch_9, 165 ), in49 ); \
7822 515544 : in50 = GF_MUL( in50, 1 ); \
7823 515544 : in50 = GF_ADD( GF_MUL( scratch_10, 165 ), in50 ); \
7824 515544 : in51 = GF_MUL( in51, 1 ); \
7825 515544 : in51 = GF_ADD( GF_MUL( scratch_11, 165 ), in51 ); \
7826 515544 : in52 = GF_MUL( in52, 1 ); \
7827 515544 : in52 = GF_ADD( GF_MUL( scratch_12, 165 ), in52 ); \
7828 515544 : in53 = GF_MUL( in53, 1 ); \
7829 515544 : in53 = GF_ADD( GF_MUL( scratch_13, 165 ), in53 ); \
7830 515544 : in54 = GF_MUL( in54, 1 ); \
7831 515544 : in54 = GF_ADD( GF_MUL( scratch_14, 165 ), in54 ); \
7832 515544 : in55 = GF_MUL( in55, 1 ); \
7833 515544 : in55 = GF_ADD( GF_MUL( scratch_15, 165 ), in55 ); \
7834 515544 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
7835 515544 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
7836 515544 : GF_MUL22( in34, in50, 70, 71, 1, 1 ); \
7837 515544 : GF_MUL22( in35, in51, 70, 71, 1, 1 ); \
7838 515544 : GF_MUL22( in36, in52, 70, 71, 1, 1 ); \
7839 515544 : GF_MUL22( in37, in53, 70, 71, 1, 1 ); \
7840 515544 : GF_MUL22( in38, in54, 70, 71, 1, 1 ); \
7841 515544 : GF_MUL22( in39, in55, 70, 71, 1, 1 ); \
7842 515544 : GF_MUL22( in40, in56, 70, 71, 1, 1 ); \
7843 515544 : in41 = GF_MUL( in41, 1 ); \
7844 515544 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
7845 515544 : in42 = GF_MUL( in42, 1 ); \
7846 515544 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
7847 515544 : in43 = GF_MUL( in43, 1 ); \
7848 515544 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
7849 515544 : in44 = GF_MUL( in44, 1 ); \
7850 515544 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
7851 515544 : in45 = GF_MUL( in45, 1 ); \
7852 515544 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
7853 515544 : in46 = GF_MUL( in46, 1 ); \
7854 515544 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
7855 515544 : in47 = GF_MUL( in47, 1 ); \
7856 515544 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
7857 515544 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
7858 515544 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
7859 515544 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
7860 515544 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
7861 515544 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
7862 515544 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
7863 515544 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
7864 515544 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
7865 515544 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
7866 515544 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
7867 515544 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
7868 515544 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
7869 515544 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
7870 515544 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
7871 515544 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
7872 515544 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
7873 515544 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
7874 515544 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
7875 515544 : GF_MUL22( in18, in50, 1, 0, 1, 1 ); \
7876 515544 : GF_MUL22( in19, in51, 1, 0, 1, 1 ); \
7877 515544 : GF_MUL22( in20, in52, 1, 0, 1, 1 ); \
7878 515544 : GF_MUL22( in21, in53, 1, 0, 1, 1 ); \
7879 515544 : GF_MUL22( in22, in54, 1, 0, 1, 1 ); \
7880 515544 : GF_MUL22( in23, in55, 1, 0, 1, 1 ); \
7881 515544 : GF_MUL22( in24, in56, 1, 0, 1, 1 ); \
7882 515544 : in25 = GF_MUL( in25, 1 ); \
7883 515544 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
7884 515544 : in26 = GF_MUL( in26, 1 ); \
7885 515544 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
7886 515544 : in27 = GF_MUL( in27, 1 ); \
7887 515544 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
7888 515544 : in28 = GF_MUL( in28, 1 ); \
7889 515544 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
7890 515544 : in29 = GF_MUL( in29, 1 ); \
7891 515544 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
7892 515544 : in30 = GF_MUL( in30, 1 ); \
7893 515544 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
7894 515544 : in31 = GF_MUL( in31, 1 ); \
7895 515544 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
7896 515544 : } while( 0 )
7897 :
7898 : void fd_reedsol_ppt_64_58( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
7899 : #define FD_REEDSOL_PPT_IMPL_64_58( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
7900 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
7901 515640 : do { \
7902 515640 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_2, scratch_26, scratch_27, scratch_28, scratch_29, scratch_3, scratch_30, scratch_31, scratch_4, scratch_5; \
7903 515640 : gf_t scratch_58, scratch_59, scratch_60, scratch_61, scratch_62, scratch_63; \
7904 515640 : scratch_58 = in58; \
7905 515640 : in58 = GF_MUL( in58, 1 ); \
7906 515640 : scratch_59 = in59; \
7907 515640 : in59 = GF_MUL( in59, 1 ); \
7908 515640 : scratch_60 = in60; \
7909 515640 : in60 = GF_MUL( in60, 1 ); \
7910 515640 : scratch_61 = in61; \
7911 515640 : in61 = GF_MUL( in61, 1 ); \
7912 515640 : scratch_62 = in62; \
7913 515640 : in62 = GF_MUL( in62, 1 ); \
7914 515640 : scratch_63 = in63; \
7915 515640 : in63 = GF_MUL( in63, 1 ); \
7916 515640 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
7917 515640 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
7918 515640 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
7919 515640 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
7920 515640 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
7921 515640 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
7922 515640 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
7923 515640 : scratch_26 = in58; \
7924 515640 : in58 = GF_MUL( in58, 1 ); \
7925 515640 : scratch_27 = in59; \
7926 515640 : in59 = GF_MUL( in59, 1 ); \
7927 515640 : scratch_28 = in60; \
7928 515640 : in60 = GF_MUL( in60, 1 ); \
7929 515640 : scratch_29 = in61; \
7930 515640 : in61 = GF_MUL( in61, 1 ); \
7931 515640 : scratch_30 = in62; \
7932 515640 : in62 = GF_MUL( in62, 1 ); \
7933 515640 : scratch_31 = in63; \
7934 515640 : in63 = GF_MUL( in63, 1 ); \
7935 515640 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
7936 515640 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
7937 515640 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
7938 515640 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
7939 515640 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
7940 515640 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
7941 515640 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
7942 515640 : scratch_10 = in58; \
7943 515640 : in58 = GF_MUL( in58, 1 ); \
7944 515640 : scratch_11 = in59; \
7945 515640 : in59 = GF_MUL( in59, 1 ); \
7946 515640 : scratch_12 = in60; \
7947 515640 : in60 = GF_MUL( in60, 1 ); \
7948 515640 : scratch_13 = in61; \
7949 515640 : in61 = GF_MUL( in61, 1 ); \
7950 515640 : scratch_14 = in62; \
7951 515640 : in62 = GF_MUL( in62, 1 ); \
7952 515640 : scratch_15 = in63; \
7953 515640 : in63 = GF_MUL( in63, 1 ); \
7954 515640 : FD_REEDSOL_GENERATE_IFFT( 8, 48, in48, in49, in50, in51, in52, in53, in54, in55 ); \
7955 515640 : in58 = GF_ADD( GF_MUL( in50, 1 ), in58 ); \
7956 515640 : in59 = GF_ADD( GF_MUL( in51, 1 ), in59 ); \
7957 515640 : in60 = GF_ADD( GF_MUL( in52, 1 ), in60 ); \
7958 515640 : in61 = GF_ADD( GF_MUL( in53, 1 ), in61 ); \
7959 515640 : in62 = GF_ADD( GF_MUL( in54, 1 ), in62 ); \
7960 515640 : in63 = GF_ADD( GF_MUL( in55, 1 ), in63 ); \
7961 515640 : scratch_4 = in60; \
7962 515640 : in60 = GF_MUL( in60, 1 ); \
7963 515640 : scratch_5 = in61; \
7964 515640 : in61 = GF_MUL( in61, 1 ); \
7965 515640 : GF_MUL22( in58, in62, 1, 81, 1, 80 ); \
7966 515640 : GF_MUL22( in59, in63, 1, 81, 1, 80 ); \
7967 515640 : scratch_2 = in58; \
7968 515640 : in58 = GF_MUL( in58, 1 ); \
7969 515640 : scratch_3 = in59; \
7970 515640 : in59 = GF_MUL( in59, 1 ); \
7971 515640 : GF_MUL22( in56, in57, 57, 56, 1, 1 ); \
7972 515640 : in58 = GF_ADD( GF_MUL( in56, 1 ), in58 ); \
7973 515640 : in59 = GF_ADD( GF_MUL( in57, 1 ), in59 ); \
7974 515640 : GF_MUL22( in58, in59, 1, 58, 1, 59 ); \
7975 515640 : in56 = GF_MUL( in56, 1 ); \
7976 515640 : in56 = GF_ADD( GF_MUL( scratch_2, 137 ), in56 ); \
7977 515640 : in57 = GF_MUL( in57, 1 ); \
7978 515640 : in57 = GF_ADD( GF_MUL( scratch_3, 137 ), in57 ); \
7979 515640 : in60 = GF_ADD( GF_MUL( in56, 1 ), in60 ); \
7980 515640 : in61 = GF_ADD( GF_MUL( in57, 1 ), in61 ); \
7981 515640 : FD_REEDSOL_GENERATE_FFT( 4, 60, in60, in61, in62, in63 ); \
7982 515640 : in56 = GF_MUL( in56, 1 ); \
7983 515640 : in56 = GF_ADD( GF_MUL( scratch_4, 81 ), in56 ); \
7984 515640 : in57 = GF_MUL( in57, 1 ); \
7985 515640 : in57 = GF_ADD( GF_MUL( scratch_5, 81 ), in57 ); \
7986 515640 : GF_MUL22( in48, in56, 164, 165, 1, 1 ); \
7987 515640 : GF_MUL22( in49, in57, 164, 165, 1, 1 ); \
7988 515640 : in50 = GF_MUL( in50, 1 ); \
7989 515640 : in50 = GF_ADD( GF_MUL( scratch_10, 165 ), in50 ); \
7990 515640 : in51 = GF_MUL( in51, 1 ); \
7991 515640 : in51 = GF_ADD( GF_MUL( scratch_11, 165 ), in51 ); \
7992 515640 : in52 = GF_MUL( in52, 1 ); \
7993 515640 : in52 = GF_ADD( GF_MUL( scratch_12, 165 ), in52 ); \
7994 515640 : in53 = GF_MUL( in53, 1 ); \
7995 515640 : in53 = GF_ADD( GF_MUL( scratch_13, 165 ), in53 ); \
7996 515640 : in54 = GF_MUL( in54, 1 ); \
7997 515640 : in54 = GF_ADD( GF_MUL( scratch_14, 165 ), in54 ); \
7998 515640 : in55 = GF_MUL( in55, 1 ); \
7999 515640 : in55 = GF_ADD( GF_MUL( scratch_15, 165 ), in55 ); \
8000 515640 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
8001 515640 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
8002 515640 : GF_MUL22( in34, in50, 70, 71, 1, 1 ); \
8003 515640 : GF_MUL22( in35, in51, 70, 71, 1, 1 ); \
8004 515640 : GF_MUL22( in36, in52, 70, 71, 1, 1 ); \
8005 515640 : GF_MUL22( in37, in53, 70, 71, 1, 1 ); \
8006 515640 : GF_MUL22( in38, in54, 70, 71, 1, 1 ); \
8007 515640 : GF_MUL22( in39, in55, 70, 71, 1, 1 ); \
8008 515640 : GF_MUL22( in40, in56, 70, 71, 1, 1 ); \
8009 515640 : GF_MUL22( in41, in57, 70, 71, 1, 1 ); \
8010 515640 : in42 = GF_MUL( in42, 1 ); \
8011 515640 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
8012 515640 : in43 = GF_MUL( in43, 1 ); \
8013 515640 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
8014 515640 : in44 = GF_MUL( in44, 1 ); \
8015 515640 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
8016 515640 : in45 = GF_MUL( in45, 1 ); \
8017 515640 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
8018 515640 : in46 = GF_MUL( in46, 1 ); \
8019 515640 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
8020 515640 : in47 = GF_MUL( in47, 1 ); \
8021 515640 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
8022 515640 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
8023 515640 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
8024 515640 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
8025 515640 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
8026 515640 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
8027 515640 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
8028 515640 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
8029 515640 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
8030 515640 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
8031 515640 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
8032 515640 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
8033 515640 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
8034 515640 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
8035 515640 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
8036 515640 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
8037 515640 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
8038 515640 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
8039 515640 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
8040 515640 : GF_MUL22( in18, in50, 1, 0, 1, 1 ); \
8041 515640 : GF_MUL22( in19, in51, 1, 0, 1, 1 ); \
8042 515640 : GF_MUL22( in20, in52, 1, 0, 1, 1 ); \
8043 515640 : GF_MUL22( in21, in53, 1, 0, 1, 1 ); \
8044 515640 : GF_MUL22( in22, in54, 1, 0, 1, 1 ); \
8045 515640 : GF_MUL22( in23, in55, 1, 0, 1, 1 ); \
8046 515640 : GF_MUL22( in24, in56, 1, 0, 1, 1 ); \
8047 515640 : GF_MUL22( in25, in57, 1, 0, 1, 1 ); \
8048 515640 : in26 = GF_MUL( in26, 1 ); \
8049 515640 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
8050 515640 : in27 = GF_MUL( in27, 1 ); \
8051 515640 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
8052 515640 : in28 = GF_MUL( in28, 1 ); \
8053 515640 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
8054 515640 : in29 = GF_MUL( in29, 1 ); \
8055 515640 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
8056 515640 : in30 = GF_MUL( in30, 1 ); \
8057 515640 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
8058 515640 : in31 = GF_MUL( in31, 1 ); \
8059 515640 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
8060 515640 : } while( 0 )
8061 :
8062 : void fd_reedsol_ppt_64_59( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
8063 : #define FD_REEDSOL_PPT_IMPL_64_59( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
8064 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
8065 515544 : do { \
8066 515544 : gf_t scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_27, scratch_28, scratch_29, scratch_3, scratch_30, scratch_31, scratch_4, scratch_5, scratch_59, scratch_6, scratch_60; \
8067 515544 : gf_t scratch_61, scratch_62, scratch_63; \
8068 515544 : scratch_59 = in59; \
8069 515544 : in59 = GF_MUL( in59, 1 ); \
8070 515544 : scratch_60 = in60; \
8071 515544 : in60 = GF_MUL( in60, 1 ); \
8072 515544 : scratch_61 = in61; \
8073 515544 : in61 = GF_MUL( in61, 1 ); \
8074 515544 : scratch_62 = in62; \
8075 515544 : in62 = GF_MUL( in62, 1 ); \
8076 515544 : scratch_63 = in63; \
8077 515544 : in63 = GF_MUL( in63, 1 ); \
8078 515544 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
8079 515544 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
8080 515544 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
8081 515544 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
8082 515544 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
8083 515544 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
8084 515544 : scratch_27 = in59; \
8085 515544 : in59 = GF_MUL( in59, 1 ); \
8086 515544 : scratch_28 = in60; \
8087 515544 : in60 = GF_MUL( in60, 1 ); \
8088 515544 : scratch_29 = in61; \
8089 515544 : in61 = GF_MUL( in61, 1 ); \
8090 515544 : scratch_30 = in62; \
8091 515544 : in62 = GF_MUL( in62, 1 ); \
8092 515544 : scratch_31 = in63; \
8093 515544 : in63 = GF_MUL( in63, 1 ); \
8094 515544 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
8095 515544 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
8096 515544 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
8097 515544 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
8098 515544 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
8099 515544 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
8100 515544 : scratch_11 = in59; \
8101 515544 : in59 = GF_MUL( in59, 1 ); \
8102 515544 : scratch_12 = in60; \
8103 515544 : in60 = GF_MUL( in60, 1 ); \
8104 515544 : scratch_13 = in61; \
8105 515544 : in61 = GF_MUL( in61, 1 ); \
8106 515544 : scratch_14 = in62; \
8107 515544 : in62 = GF_MUL( in62, 1 ); \
8108 515544 : scratch_15 = in63; \
8109 515544 : in63 = GF_MUL( in63, 1 ); \
8110 515544 : FD_REEDSOL_GENERATE_IFFT( 8, 48, in48, in49, in50, in51, in52, in53, in54, in55 ); \
8111 515544 : in59 = GF_ADD( GF_MUL( in51, 1 ), in59 ); \
8112 515544 : in60 = GF_ADD( GF_MUL( in52, 1 ), in60 ); \
8113 515544 : in61 = GF_ADD( GF_MUL( in53, 1 ), in61 ); \
8114 515544 : in62 = GF_ADD( GF_MUL( in54, 1 ), in62 ); \
8115 515544 : in63 = GF_ADD( GF_MUL( in55, 1 ), in63 ); \
8116 515544 : scratch_4 = in60; \
8117 515544 : in60 = GF_MUL( in60, 1 ); \
8118 515544 : scratch_5 = in61; \
8119 515544 : in61 = GF_MUL( in61, 1 ); \
8120 515544 : scratch_6 = in62; \
8121 515544 : in62 = GF_MUL( in62, 1 ); \
8122 515544 : GF_MUL22( in59, in63, 1, 81, 1, 80 ); \
8123 515544 : scratch_3 = in59; \
8124 515544 : in59 = GF_MUL( in59, 1 ); \
8125 515544 : GF_MUL22( in56, in57, 57, 56, 1, 1 ); \
8126 515544 : in59 = GF_ADD( GF_MUL( in57, 1 ), in59 ); \
8127 515544 : GF_MUL22( in58, in59, 1, 58, 1, 1 ); \
8128 515544 : GF_MUL22( in56, in58, 136, 137, 1, 1 ); \
8129 515544 : in57 = GF_MUL( in57, 1 ); \
8130 515544 : in57 = GF_ADD( GF_MUL( scratch_3, 137 ), in57 ); \
8131 515544 : in60 = GF_ADD( GF_MUL( in56, 1 ), in60 ); \
8132 515544 : in61 = GF_ADD( GF_MUL( in57, 1 ), in61 ); \
8133 515544 : in62 = GF_ADD( GF_MUL( in58, 1 ), in62 ); \
8134 515544 : FD_REEDSOL_GENERATE_FFT( 4, 60, in60, in61, in62, in63 ); \
8135 515544 : in56 = GF_MUL( in56, 1 ); \
8136 515544 : in56 = GF_ADD( GF_MUL( scratch_4, 81 ), in56 ); \
8137 515544 : in57 = GF_MUL( in57, 1 ); \
8138 515544 : in57 = GF_ADD( GF_MUL( scratch_5, 81 ), in57 ); \
8139 515544 : in58 = GF_MUL( in58, 1 ); \
8140 515544 : in58 = GF_ADD( GF_MUL( scratch_6, 81 ), in58 ); \
8141 515544 : GF_MUL22( in48, in56, 164, 165, 1, 1 ); \
8142 515544 : GF_MUL22( in49, in57, 164, 165, 1, 1 ); \
8143 515544 : GF_MUL22( in50, in58, 164, 165, 1, 1 ); \
8144 515544 : in51 = GF_MUL( in51, 1 ); \
8145 515544 : in51 = GF_ADD( GF_MUL( scratch_11, 165 ), in51 ); \
8146 515544 : in52 = GF_MUL( in52, 1 ); \
8147 515544 : in52 = GF_ADD( GF_MUL( scratch_12, 165 ), in52 ); \
8148 515544 : in53 = GF_MUL( in53, 1 ); \
8149 515544 : in53 = GF_ADD( GF_MUL( scratch_13, 165 ), in53 ); \
8150 515544 : in54 = GF_MUL( in54, 1 ); \
8151 515544 : in54 = GF_ADD( GF_MUL( scratch_14, 165 ), in54 ); \
8152 515544 : in55 = GF_MUL( in55, 1 ); \
8153 515544 : in55 = GF_ADD( GF_MUL( scratch_15, 165 ), in55 ); \
8154 515544 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
8155 515544 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
8156 515544 : GF_MUL22( in34, in50, 70, 71, 1, 1 ); \
8157 515544 : GF_MUL22( in35, in51, 70, 71, 1, 1 ); \
8158 515544 : GF_MUL22( in36, in52, 70, 71, 1, 1 ); \
8159 515544 : GF_MUL22( in37, in53, 70, 71, 1, 1 ); \
8160 515544 : GF_MUL22( in38, in54, 70, 71, 1, 1 ); \
8161 515544 : GF_MUL22( in39, in55, 70, 71, 1, 1 ); \
8162 515544 : GF_MUL22( in40, in56, 70, 71, 1, 1 ); \
8163 515544 : GF_MUL22( in41, in57, 70, 71, 1, 1 ); \
8164 515544 : GF_MUL22( in42, in58, 70, 71, 1, 1 ); \
8165 515544 : in43 = GF_MUL( in43, 1 ); \
8166 515544 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
8167 515544 : in44 = GF_MUL( in44, 1 ); \
8168 515544 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
8169 515544 : in45 = GF_MUL( in45, 1 ); \
8170 515544 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
8171 515544 : in46 = GF_MUL( in46, 1 ); \
8172 515544 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
8173 515544 : in47 = GF_MUL( in47, 1 ); \
8174 515544 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
8175 515544 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
8176 515544 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
8177 515544 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
8178 515544 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
8179 515544 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
8180 515544 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
8181 515544 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
8182 515544 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
8183 515544 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
8184 515544 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
8185 515544 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
8186 515544 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
8187 515544 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
8188 515544 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
8189 515544 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
8190 515544 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
8191 515544 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
8192 515544 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
8193 515544 : GF_MUL22( in18, in50, 1, 0, 1, 1 ); \
8194 515544 : GF_MUL22( in19, in51, 1, 0, 1, 1 ); \
8195 515544 : GF_MUL22( in20, in52, 1, 0, 1, 1 ); \
8196 515544 : GF_MUL22( in21, in53, 1, 0, 1, 1 ); \
8197 515544 : GF_MUL22( in22, in54, 1, 0, 1, 1 ); \
8198 515544 : GF_MUL22( in23, in55, 1, 0, 1, 1 ); \
8199 515544 : GF_MUL22( in24, in56, 1, 0, 1, 1 ); \
8200 515544 : GF_MUL22( in25, in57, 1, 0, 1, 1 ); \
8201 515544 : GF_MUL22( in26, in58, 1, 0, 1, 1 ); \
8202 515544 : in27 = GF_MUL( in27, 1 ); \
8203 515544 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
8204 515544 : in28 = GF_MUL( in28, 1 ); \
8205 515544 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
8206 515544 : in29 = GF_MUL( in29, 1 ); \
8207 515544 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
8208 515544 : in30 = GF_MUL( in30, 1 ); \
8209 515544 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
8210 515544 : in31 = GF_MUL( in31, 1 ); \
8211 515544 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
8212 515544 : } while( 0 )
8213 :
8214 : void fd_reedsol_ppt_64_60( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
8215 : #define FD_REEDSOL_PPT_IMPL_64_60( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
8216 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
8217 515640 : do { \
8218 515640 : gf_t scratch_12, scratch_13, scratch_14, scratch_15, scratch_28, scratch_29, scratch_30, scratch_31, scratch_4, scratch_5, scratch_6, scratch_60, scratch_61, scratch_62, scratch_63, scratch_7; \
8219 515640 : scratch_60 = in60; \
8220 515640 : in60 = GF_MUL( in60, 1 ); \
8221 515640 : scratch_61 = in61; \
8222 515640 : in61 = GF_MUL( in61, 1 ); \
8223 515640 : scratch_62 = in62; \
8224 515640 : in62 = GF_MUL( in62, 1 ); \
8225 515640 : scratch_63 = in63; \
8226 515640 : in63 = GF_MUL( in63, 1 ); \
8227 515640 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
8228 515640 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
8229 515640 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
8230 515640 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
8231 515640 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
8232 515640 : scratch_28 = in60; \
8233 515640 : in60 = GF_MUL( in60, 1 ); \
8234 515640 : scratch_29 = in61; \
8235 515640 : in61 = GF_MUL( in61, 1 ); \
8236 515640 : scratch_30 = in62; \
8237 515640 : in62 = GF_MUL( in62, 1 ); \
8238 515640 : scratch_31 = in63; \
8239 515640 : in63 = GF_MUL( in63, 1 ); \
8240 515640 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
8241 515640 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
8242 515640 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
8243 515640 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
8244 515640 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
8245 515640 : scratch_12 = in60; \
8246 515640 : in60 = GF_MUL( in60, 1 ); \
8247 515640 : scratch_13 = in61; \
8248 515640 : in61 = GF_MUL( in61, 1 ); \
8249 515640 : scratch_14 = in62; \
8250 515640 : in62 = GF_MUL( in62, 1 ); \
8251 515640 : scratch_15 = in63; \
8252 515640 : in63 = GF_MUL( in63, 1 ); \
8253 515640 : FD_REEDSOL_GENERATE_IFFT( 8, 48, in48, in49, in50, in51, in52, in53, in54, in55 ); \
8254 515640 : in60 = GF_ADD( GF_MUL( in52, 1 ), in60 ); \
8255 515640 : in61 = GF_ADD( GF_MUL( in53, 1 ), in61 ); \
8256 515640 : in62 = GF_ADD( GF_MUL( in54, 1 ), in62 ); \
8257 515640 : in63 = GF_ADD( GF_MUL( in55, 1 ), in63 ); \
8258 515640 : scratch_4 = in60; \
8259 515640 : in60 = GF_MUL( in60, 1 ); \
8260 515640 : scratch_5 = in61; \
8261 515640 : in61 = GF_MUL( in61, 1 ); \
8262 515640 : scratch_6 = in62; \
8263 515640 : in62 = GF_MUL( in62, 1 ); \
8264 515640 : scratch_7 = in63; \
8265 515640 : in63 = GF_MUL( in63, 1 ); \
8266 515640 : FD_REEDSOL_GENERATE_IFFT( 4, 56, in56, in57, in58, in59 ); \
8267 515640 : in60 = GF_ADD( GF_MUL( in56, 1 ), in60 ); \
8268 515640 : in61 = GF_ADD( GF_MUL( in57, 1 ), in61 ); \
8269 515640 : in62 = GF_ADD( GF_MUL( in58, 1 ), in62 ); \
8270 515640 : in63 = GF_ADD( GF_MUL( in59, 1 ), in63 ); \
8271 515640 : FD_REEDSOL_GENERATE_FFT( 4, 60, in60, in61, in62, in63 ); \
8272 515640 : in56 = GF_MUL( in56, 1 ); \
8273 515640 : in56 = GF_ADD( GF_MUL( scratch_4, 81 ), in56 ); \
8274 515640 : in57 = GF_MUL( in57, 1 ); \
8275 515640 : in57 = GF_ADD( GF_MUL( scratch_5, 81 ), in57 ); \
8276 515640 : in58 = GF_MUL( in58, 1 ); \
8277 515640 : in58 = GF_ADD( GF_MUL( scratch_6, 81 ), in58 ); \
8278 515640 : in59 = GF_MUL( in59, 1 ); \
8279 515640 : in59 = GF_ADD( GF_MUL( scratch_7, 81 ), in59 ); \
8280 515640 : GF_MUL22( in48, in56, 164, 165, 1, 1 ); \
8281 515640 : GF_MUL22( in49, in57, 164, 165, 1, 1 ); \
8282 515640 : GF_MUL22( in50, in58, 164, 165, 1, 1 ); \
8283 515640 : GF_MUL22( in51, in59, 164, 165, 1, 1 ); \
8284 515640 : in52 = GF_MUL( in52, 1 ); \
8285 515640 : in52 = GF_ADD( GF_MUL( scratch_12, 165 ), in52 ); \
8286 515640 : in53 = GF_MUL( in53, 1 ); \
8287 515640 : in53 = GF_ADD( GF_MUL( scratch_13, 165 ), in53 ); \
8288 515640 : in54 = GF_MUL( in54, 1 ); \
8289 515640 : in54 = GF_ADD( GF_MUL( scratch_14, 165 ), in54 ); \
8290 515640 : in55 = GF_MUL( in55, 1 ); \
8291 515640 : in55 = GF_ADD( GF_MUL( scratch_15, 165 ), in55 ); \
8292 515640 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
8293 515640 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
8294 515640 : GF_MUL22( in34, in50, 70, 71, 1, 1 ); \
8295 515640 : GF_MUL22( in35, in51, 70, 71, 1, 1 ); \
8296 515640 : GF_MUL22( in36, in52, 70, 71, 1, 1 ); \
8297 515640 : GF_MUL22( in37, in53, 70, 71, 1, 1 ); \
8298 515640 : GF_MUL22( in38, in54, 70, 71, 1, 1 ); \
8299 515640 : GF_MUL22( in39, in55, 70, 71, 1, 1 ); \
8300 515640 : GF_MUL22( in40, in56, 70, 71, 1, 1 ); \
8301 515640 : GF_MUL22( in41, in57, 70, 71, 1, 1 ); \
8302 515640 : GF_MUL22( in42, in58, 70, 71, 1, 1 ); \
8303 515640 : GF_MUL22( in43, in59, 70, 71, 1, 1 ); \
8304 515640 : in44 = GF_MUL( in44, 1 ); \
8305 515640 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
8306 515640 : in45 = GF_MUL( in45, 1 ); \
8307 515640 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
8308 515640 : in46 = GF_MUL( in46, 1 ); \
8309 515640 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
8310 515640 : in47 = GF_MUL( in47, 1 ); \
8311 515640 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
8312 515640 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
8313 515640 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
8314 515640 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
8315 515640 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
8316 515640 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
8317 515640 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
8318 515640 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
8319 515640 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
8320 515640 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
8321 515640 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
8322 515640 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
8323 515640 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
8324 515640 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
8325 515640 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
8326 515640 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
8327 515640 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
8328 515640 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
8329 515640 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
8330 515640 : GF_MUL22( in18, in50, 1, 0, 1, 1 ); \
8331 515640 : GF_MUL22( in19, in51, 1, 0, 1, 1 ); \
8332 515640 : GF_MUL22( in20, in52, 1, 0, 1, 1 ); \
8333 515640 : GF_MUL22( in21, in53, 1, 0, 1, 1 ); \
8334 515640 : GF_MUL22( in22, in54, 1, 0, 1, 1 ); \
8335 515640 : GF_MUL22( in23, in55, 1, 0, 1, 1 ); \
8336 515640 : GF_MUL22( in24, in56, 1, 0, 1, 1 ); \
8337 515640 : GF_MUL22( in25, in57, 1, 0, 1, 1 ); \
8338 515640 : GF_MUL22( in26, in58, 1, 0, 1, 1 ); \
8339 515640 : GF_MUL22( in27, in59, 1, 0, 1, 1 ); \
8340 515640 : in28 = GF_MUL( in28, 1 ); \
8341 515640 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
8342 515640 : in29 = GF_MUL( in29, 1 ); \
8343 515640 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
8344 515640 : in30 = GF_MUL( in30, 1 ); \
8345 515640 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
8346 515640 : in31 = GF_MUL( in31, 1 ); \
8347 515640 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
8348 515640 : } while( 0 )
8349 :
8350 : void fd_reedsol_ppt_64_61( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
8351 : #define FD_REEDSOL_PPT_IMPL_64_61( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
8352 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
8353 515640 : do { \
8354 515640 : gf_t scratch_13, scratch_14, scratch_15, scratch_2, scratch_29, scratch_30, scratch_31, scratch_5, scratch_6, scratch_61, scratch_62, scratch_63, scratch_7; \
8355 515640 : scratch_61 = in61; \
8356 515640 : in61 = GF_MUL( in61, 1 ); \
8357 515640 : scratch_62 = in62; \
8358 515640 : in62 = GF_MUL( in62, 1 ); \
8359 515640 : scratch_63 = in63; \
8360 515640 : in63 = GF_MUL( in63, 1 ); \
8361 515640 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
8362 515640 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
8363 515640 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
8364 515640 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
8365 515640 : scratch_29 = in61; \
8366 515640 : in61 = GF_MUL( in61, 1 ); \
8367 515640 : scratch_30 = in62; \
8368 515640 : in62 = GF_MUL( in62, 1 ); \
8369 515640 : scratch_31 = in63; \
8370 515640 : in63 = GF_MUL( in63, 1 ); \
8371 515640 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
8372 515640 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
8373 515640 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
8374 515640 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
8375 515640 : scratch_13 = in61; \
8376 515640 : in61 = GF_MUL( in61, 1 ); \
8377 515640 : scratch_14 = in62; \
8378 515640 : in62 = GF_MUL( in62, 1 ); \
8379 515640 : scratch_15 = in63; \
8380 515640 : in63 = GF_MUL( in63, 1 ); \
8381 515640 : FD_REEDSOL_GENERATE_IFFT( 8, 48, in48, in49, in50, in51, in52, in53, in54, in55 ); \
8382 515640 : in61 = GF_ADD( GF_MUL( in53, 1 ), in61 ); \
8383 515640 : in62 = GF_ADD( GF_MUL( in54, 1 ), in62 ); \
8384 515640 : in63 = GF_ADD( GF_MUL( in55, 1 ), in63 ); \
8385 515640 : scratch_5 = in61; \
8386 515640 : in61 = GF_MUL( in61, 1 ); \
8387 515640 : scratch_6 = in62; \
8388 515640 : in62 = GF_MUL( in62, 1 ); \
8389 515640 : scratch_7 = in63; \
8390 515640 : in63 = GF_MUL( in63, 1 ); \
8391 515640 : FD_REEDSOL_GENERATE_IFFT( 4, 56, in56, in57, in58, in59 ); \
8392 515640 : in61 = GF_ADD( GF_MUL( in57, 1 ), in61 ); \
8393 515640 : in62 = GF_ADD( GF_MUL( in58, 1 ), in62 ); \
8394 515640 : in63 = GF_ADD( GF_MUL( in59, 1 ), in63 ); \
8395 515640 : scratch_2 = in62; \
8396 515640 : in62 = GF_MUL( in62, 1 ); \
8397 515640 : GF_MUL22( in61, in63, 1, 143, 1, 142 ); \
8398 515640 : GF_MUL22( in60, in61, 1, 60, 1, 1 ); \
8399 515640 : in62 = GF_ADD( GF_MUL( in60, 1 ), in62 ); \
8400 515640 : GF_MUL22( in62, in63, 1, 62, 1, 63 ); \
8401 515640 : in60 = GF_MUL( in60, 1 ); \
8402 515640 : in60 = GF_ADD( GF_MUL( scratch_2, 143 ), in60 ); \
8403 515640 : GF_MUL22( in56, in60, 80, 81, 1, 1 ); \
8404 515640 : in57 = GF_MUL( in57, 1 ); \
8405 515640 : in57 = GF_ADD( GF_MUL( scratch_5, 81 ), in57 ); \
8406 515640 : in58 = GF_MUL( in58, 1 ); \
8407 515640 : in58 = GF_ADD( GF_MUL( scratch_6, 81 ), in58 ); \
8408 515640 : in59 = GF_MUL( in59, 1 ); \
8409 515640 : in59 = GF_ADD( GF_MUL( scratch_7, 81 ), in59 ); \
8410 515640 : GF_MUL22( in48, in56, 164, 165, 1, 1 ); \
8411 515640 : GF_MUL22( in49, in57, 164, 165, 1, 1 ); \
8412 515640 : GF_MUL22( in50, in58, 164, 165, 1, 1 ); \
8413 515640 : GF_MUL22( in51, in59, 164, 165, 1, 1 ); \
8414 515640 : GF_MUL22( in52, in60, 164, 165, 1, 1 ); \
8415 515640 : in53 = GF_MUL( in53, 1 ); \
8416 515640 : in53 = GF_ADD( GF_MUL( scratch_13, 165 ), in53 ); \
8417 515640 : in54 = GF_MUL( in54, 1 ); \
8418 515640 : in54 = GF_ADD( GF_MUL( scratch_14, 165 ), in54 ); \
8419 515640 : in55 = GF_MUL( in55, 1 ); \
8420 515640 : in55 = GF_ADD( GF_MUL( scratch_15, 165 ), in55 ); \
8421 515640 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
8422 515640 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
8423 515640 : GF_MUL22( in34, in50, 70, 71, 1, 1 ); \
8424 515640 : GF_MUL22( in35, in51, 70, 71, 1, 1 ); \
8425 515640 : GF_MUL22( in36, in52, 70, 71, 1, 1 ); \
8426 515640 : GF_MUL22( in37, in53, 70, 71, 1, 1 ); \
8427 515640 : GF_MUL22( in38, in54, 70, 71, 1, 1 ); \
8428 515640 : GF_MUL22( in39, in55, 70, 71, 1, 1 ); \
8429 515640 : GF_MUL22( in40, in56, 70, 71, 1, 1 ); \
8430 515640 : GF_MUL22( in41, in57, 70, 71, 1, 1 ); \
8431 515640 : GF_MUL22( in42, in58, 70, 71, 1, 1 ); \
8432 515640 : GF_MUL22( in43, in59, 70, 71, 1, 1 ); \
8433 515640 : GF_MUL22( in44, in60, 70, 71, 1, 1 ); \
8434 515640 : in45 = GF_MUL( in45, 1 ); \
8435 515640 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
8436 515640 : in46 = GF_MUL( in46, 1 ); \
8437 515640 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
8438 515640 : in47 = GF_MUL( in47, 1 ); \
8439 515640 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
8440 515640 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
8441 515640 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
8442 515640 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
8443 515640 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
8444 515640 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
8445 515640 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
8446 515640 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
8447 515640 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
8448 515640 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
8449 515640 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
8450 515640 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
8451 515640 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
8452 515640 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
8453 515640 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
8454 515640 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
8455 515640 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
8456 515640 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
8457 515640 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
8458 515640 : GF_MUL22( in18, in50, 1, 0, 1, 1 ); \
8459 515640 : GF_MUL22( in19, in51, 1, 0, 1, 1 ); \
8460 515640 : GF_MUL22( in20, in52, 1, 0, 1, 1 ); \
8461 515640 : GF_MUL22( in21, in53, 1, 0, 1, 1 ); \
8462 515640 : GF_MUL22( in22, in54, 1, 0, 1, 1 ); \
8463 515640 : GF_MUL22( in23, in55, 1, 0, 1, 1 ); \
8464 515640 : GF_MUL22( in24, in56, 1, 0, 1, 1 ); \
8465 515640 : GF_MUL22( in25, in57, 1, 0, 1, 1 ); \
8466 515640 : GF_MUL22( in26, in58, 1, 0, 1, 1 ); \
8467 515640 : GF_MUL22( in27, in59, 1, 0, 1, 1 ); \
8468 515640 : GF_MUL22( in28, in60, 1, 0, 1, 1 ); \
8469 515640 : in29 = GF_MUL( in29, 1 ); \
8470 515640 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
8471 515640 : in30 = GF_MUL( in30, 1 ); \
8472 515640 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
8473 515640 : in31 = GF_MUL( in31, 1 ); \
8474 515640 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
8475 515640 : } while( 0 )
8476 :
8477 : void fd_reedsol_ppt_64_62( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
8478 : #define FD_REEDSOL_PPT_IMPL_64_62( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
8479 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
8480 515544 : do { \
8481 515544 : gf_t scratch_14, scratch_15, scratch_2, scratch_3, scratch_30, scratch_31, scratch_6, scratch_62, scratch_63, scratch_7; \
8482 515544 : scratch_62 = in62; \
8483 515544 : in62 = GF_MUL( in62, 1 ); \
8484 515544 : scratch_63 = in63; \
8485 515544 : in63 = GF_MUL( in63, 1 ); \
8486 515544 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
8487 515544 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
8488 515544 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
8489 515544 : scratch_30 = in62; \
8490 515544 : in62 = GF_MUL( in62, 1 ); \
8491 515544 : scratch_31 = in63; \
8492 515544 : in63 = GF_MUL( in63, 1 ); \
8493 515544 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
8494 515544 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
8495 515544 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
8496 515544 : scratch_14 = in62; \
8497 515544 : in62 = GF_MUL( in62, 1 ); \
8498 515544 : scratch_15 = in63; \
8499 515544 : in63 = GF_MUL( in63, 1 ); \
8500 515544 : FD_REEDSOL_GENERATE_IFFT( 8, 48, in48, in49, in50, in51, in52, in53, in54, in55 ); \
8501 515544 : in62 = GF_ADD( GF_MUL( in54, 1 ), in62 ); \
8502 515544 : in63 = GF_ADD( GF_MUL( in55, 1 ), in63 ); \
8503 515544 : scratch_6 = in62; \
8504 515544 : in62 = GF_MUL( in62, 1 ); \
8505 515544 : scratch_7 = in63; \
8506 515544 : in63 = GF_MUL( in63, 1 ); \
8507 515544 : FD_REEDSOL_GENERATE_IFFT( 4, 56, in56, in57, in58, in59 ); \
8508 515544 : in62 = GF_ADD( GF_MUL( in58, 1 ), in62 ); \
8509 515544 : in63 = GF_ADD( GF_MUL( in59, 1 ), in63 ); \
8510 515544 : scratch_2 = in62; \
8511 515544 : in62 = GF_MUL( in62, 1 ); \
8512 515544 : scratch_3 = in63; \
8513 515544 : in63 = GF_MUL( in63, 1 ); \
8514 515544 : GF_MUL22( in60, in61, 61, 60, 1, 1 ); \
8515 515544 : in62 = GF_ADD( GF_MUL( in60, 1 ), in62 ); \
8516 515544 : in63 = GF_ADD( GF_MUL( in61, 1 ), in63 ); \
8517 515544 : GF_MUL22( in62, in63, 1, 62, 1, 63 ); \
8518 515544 : in60 = GF_MUL( in60, 1 ); \
8519 515544 : in60 = GF_ADD( GF_MUL( scratch_2, 143 ), in60 ); \
8520 515544 : in61 = GF_MUL( in61, 1 ); \
8521 515544 : in61 = GF_ADD( GF_MUL( scratch_3, 143 ), in61 ); \
8522 515544 : GF_MUL22( in56, in60, 80, 81, 1, 1 ); \
8523 515544 : GF_MUL22( in57, in61, 80, 81, 1, 1 ); \
8524 515544 : in58 = GF_MUL( in58, 1 ); \
8525 515544 : in58 = GF_ADD( GF_MUL( scratch_6, 81 ), in58 ); \
8526 515544 : in59 = GF_MUL( in59, 1 ); \
8527 515544 : in59 = GF_ADD( GF_MUL( scratch_7, 81 ), in59 ); \
8528 515544 : GF_MUL22( in48, in56, 164, 165, 1, 1 ); \
8529 515544 : GF_MUL22( in49, in57, 164, 165, 1, 1 ); \
8530 515544 : GF_MUL22( in50, in58, 164, 165, 1, 1 ); \
8531 515544 : GF_MUL22( in51, in59, 164, 165, 1, 1 ); \
8532 515544 : GF_MUL22( in52, in60, 164, 165, 1, 1 ); \
8533 515544 : GF_MUL22( in53, in61, 164, 165, 1, 1 ); \
8534 515544 : in54 = GF_MUL( in54, 1 ); \
8535 515544 : in54 = GF_ADD( GF_MUL( scratch_14, 165 ), in54 ); \
8536 515544 : in55 = GF_MUL( in55, 1 ); \
8537 515544 : in55 = GF_ADD( GF_MUL( scratch_15, 165 ), in55 ); \
8538 515544 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
8539 515544 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
8540 515544 : GF_MUL22( in34, in50, 70, 71, 1, 1 ); \
8541 515544 : GF_MUL22( in35, in51, 70, 71, 1, 1 ); \
8542 515544 : GF_MUL22( in36, in52, 70, 71, 1, 1 ); \
8543 515544 : GF_MUL22( in37, in53, 70, 71, 1, 1 ); \
8544 515544 : GF_MUL22( in38, in54, 70, 71, 1, 1 ); \
8545 515544 : GF_MUL22( in39, in55, 70, 71, 1, 1 ); \
8546 515544 : GF_MUL22( in40, in56, 70, 71, 1, 1 ); \
8547 515544 : GF_MUL22( in41, in57, 70, 71, 1, 1 ); \
8548 515544 : GF_MUL22( in42, in58, 70, 71, 1, 1 ); \
8549 515544 : GF_MUL22( in43, in59, 70, 71, 1, 1 ); \
8550 515544 : GF_MUL22( in44, in60, 70, 71, 1, 1 ); \
8551 515544 : GF_MUL22( in45, in61, 70, 71, 1, 1 ); \
8552 515544 : in46 = GF_MUL( in46, 1 ); \
8553 515544 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
8554 515544 : in47 = GF_MUL( in47, 1 ); \
8555 515544 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
8556 515544 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
8557 515544 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
8558 515544 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
8559 515544 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
8560 515544 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
8561 515544 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
8562 515544 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
8563 515544 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
8564 515544 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
8565 515544 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
8566 515544 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
8567 515544 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
8568 515544 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
8569 515544 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
8570 515544 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
8571 515544 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
8572 515544 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
8573 515544 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
8574 515544 : GF_MUL22( in18, in50, 1, 0, 1, 1 ); \
8575 515544 : GF_MUL22( in19, in51, 1, 0, 1, 1 ); \
8576 515544 : GF_MUL22( in20, in52, 1, 0, 1, 1 ); \
8577 515544 : GF_MUL22( in21, in53, 1, 0, 1, 1 ); \
8578 515544 : GF_MUL22( in22, in54, 1, 0, 1, 1 ); \
8579 515544 : GF_MUL22( in23, in55, 1, 0, 1, 1 ); \
8580 515544 : GF_MUL22( in24, in56, 1, 0, 1, 1 ); \
8581 515544 : GF_MUL22( in25, in57, 1, 0, 1, 1 ); \
8582 515544 : GF_MUL22( in26, in58, 1, 0, 1, 1 ); \
8583 515544 : GF_MUL22( in27, in59, 1, 0, 1, 1 ); \
8584 515544 : GF_MUL22( in28, in60, 1, 0, 1, 1 ); \
8585 515544 : GF_MUL22( in29, in61, 1, 0, 1, 1 ); \
8586 515544 : in30 = GF_MUL( in30, 1 ); \
8587 515544 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
8588 515544 : in31 = GF_MUL( in31, 1 ); \
8589 515544 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
8590 515544 : } while( 0 )
8591 :
8592 : void fd_reedsol_ppt_64_63( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
8593 : #define FD_REEDSOL_PPT_IMPL_64_63( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
8594 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
8595 515544 : do { \
8596 515544 : gf_t scratch_15, scratch_3, scratch_31, scratch_63, scratch_7; \
8597 515544 : scratch_63 = in63; \
8598 515544 : in63 = GF_MUL( in63, 1 ); \
8599 515544 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
8600 515544 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
8601 515544 : scratch_31 = in63; \
8602 515544 : in63 = GF_MUL( in63, 1 ); \
8603 515544 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
8604 515544 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
8605 515544 : scratch_15 = in63; \
8606 515544 : in63 = GF_MUL( in63, 1 ); \
8607 515544 : FD_REEDSOL_GENERATE_IFFT( 8, 48, in48, in49, in50, in51, in52, in53, in54, in55 ); \
8608 515544 : in63 = GF_ADD( GF_MUL( in55, 1 ), in63 ); \
8609 515544 : scratch_7 = in63; \
8610 515544 : in63 = GF_MUL( in63, 1 ); \
8611 515544 : FD_REEDSOL_GENERATE_IFFT( 4, 56, in56, in57, in58, in59 ); \
8612 515544 : in63 = GF_ADD( GF_MUL( in59, 1 ), in63 ); \
8613 515544 : scratch_3 = in63; \
8614 515544 : in63 = GF_MUL( in63, 1 ); \
8615 515544 : GF_MUL22( in60, in61, 61, 60, 1, 1 ); \
8616 515544 : in63 = GF_ADD( GF_MUL( in61, 1 ), in63 ); \
8617 515544 : GF_MUL22( in62, in63, 1, 62, 1, 1 ); \
8618 515544 : GF_MUL22( in60, in62, 142, 143, 1, 1 ); \
8619 515544 : in61 = GF_MUL( in61, 1 ); \
8620 515544 : in61 = GF_ADD( GF_MUL( scratch_3, 143 ), in61 ); \
8621 515544 : GF_MUL22( in56, in60, 80, 81, 1, 1 ); \
8622 515544 : GF_MUL22( in57, in61, 80, 81, 1, 1 ); \
8623 515544 : GF_MUL22( in58, in62, 80, 81, 1, 1 ); \
8624 515544 : in59 = GF_MUL( in59, 1 ); \
8625 515544 : in59 = GF_ADD( GF_MUL( scratch_7, 81 ), in59 ); \
8626 515544 : GF_MUL22( in48, in56, 164, 165, 1, 1 ); \
8627 515544 : GF_MUL22( in49, in57, 164, 165, 1, 1 ); \
8628 515544 : GF_MUL22( in50, in58, 164, 165, 1, 1 ); \
8629 515544 : GF_MUL22( in51, in59, 164, 165, 1, 1 ); \
8630 515544 : GF_MUL22( in52, in60, 164, 165, 1, 1 ); \
8631 515544 : GF_MUL22( in53, in61, 164, 165, 1, 1 ); \
8632 515544 : GF_MUL22( in54, in62, 164, 165, 1, 1 ); \
8633 515544 : in55 = GF_MUL( in55, 1 ); \
8634 515544 : in55 = GF_ADD( GF_MUL( scratch_15, 165 ), in55 ); \
8635 515544 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
8636 515544 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
8637 515544 : GF_MUL22( in34, in50, 70, 71, 1, 1 ); \
8638 515544 : GF_MUL22( in35, in51, 70, 71, 1, 1 ); \
8639 515544 : GF_MUL22( in36, in52, 70, 71, 1, 1 ); \
8640 515544 : GF_MUL22( in37, in53, 70, 71, 1, 1 ); \
8641 515544 : GF_MUL22( in38, in54, 70, 71, 1, 1 ); \
8642 515544 : GF_MUL22( in39, in55, 70, 71, 1, 1 ); \
8643 515544 : GF_MUL22( in40, in56, 70, 71, 1, 1 ); \
8644 515544 : GF_MUL22( in41, in57, 70, 71, 1, 1 ); \
8645 515544 : GF_MUL22( in42, in58, 70, 71, 1, 1 ); \
8646 515544 : GF_MUL22( in43, in59, 70, 71, 1, 1 ); \
8647 515544 : GF_MUL22( in44, in60, 70, 71, 1, 1 ); \
8648 515544 : GF_MUL22( in45, in61, 70, 71, 1, 1 ); \
8649 515544 : GF_MUL22( in46, in62, 70, 71, 1, 1 ); \
8650 515544 : in47 = GF_MUL( in47, 1 ); \
8651 515544 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
8652 515544 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
8653 515544 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
8654 515544 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
8655 515544 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
8656 515544 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
8657 515544 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
8658 515544 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
8659 515544 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
8660 515544 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
8661 515544 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
8662 515544 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
8663 515544 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
8664 515544 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
8665 515544 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
8666 515544 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
8667 515544 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
8668 515544 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
8669 515544 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
8670 515544 : GF_MUL22( in18, in50, 1, 0, 1, 1 ); \
8671 515544 : GF_MUL22( in19, in51, 1, 0, 1, 1 ); \
8672 515544 : GF_MUL22( in20, in52, 1, 0, 1, 1 ); \
8673 515544 : GF_MUL22( in21, in53, 1, 0, 1, 1 ); \
8674 515544 : GF_MUL22( in22, in54, 1, 0, 1, 1 ); \
8675 515544 : GF_MUL22( in23, in55, 1, 0, 1, 1 ); \
8676 515544 : GF_MUL22( in24, in56, 1, 0, 1, 1 ); \
8677 515544 : GF_MUL22( in25, in57, 1, 0, 1, 1 ); \
8678 515544 : GF_MUL22( in26, in58, 1, 0, 1, 1 ); \
8679 515544 : GF_MUL22( in27, in59, 1, 0, 1, 1 ); \
8680 515544 : GF_MUL22( in28, in60, 1, 0, 1, 1 ); \
8681 515544 : GF_MUL22( in29, in61, 1, 0, 1, 1 ); \
8682 515544 : GF_MUL22( in30, in62, 1, 0, 1, 1 ); \
8683 515544 : in31 = GF_MUL( in31, 1 ); \
8684 515544 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
8685 515544 : } while( 0 )
8686 :
8687 : void fd_reedsol_ppt_128_65( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
8688 : #define FD_REEDSOL_PPT_IMPL_128_65( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63, in64, in65 , \
8689 : in66, in67, in68, in69, in70, in71, in72, in73, in74, in75, in76, in77, in78, in79, in80, in81, in82, in83, in84, in85, in86, in87, in88, in89, in90, in91, in92, in93, in94, in95, in96, in97, in98, in99, in100, in101, in102, in103, in104, in105, in106, in107, in108, in109, in110, in111, in112, in113, in114, in115, in116, in117, in118, in119, in120, in121, in122, in123, in124, in125, in126, in127) \
8690 0 : do { \
8691 0 : gf_t scratch_100, scratch_101, scratch_102, scratch_103, scratch_104, scratch_105, scratch_106, scratch_107, scratch_108, scratch_109, scratch_110, scratch_111, scratch_112, scratch_113, scratch_114, scratch_115; \
8692 0 : gf_t scratch_116, scratch_117, scratch_118, scratch_119, scratch_120, scratch_121, scratch_122, scratch_123, scratch_124, scratch_125, scratch_126, scratch_127, scratch_16, scratch_2, scratch_32, scratch_4; \
8693 0 : gf_t scratch_65, scratch_66, scratch_67, scratch_68, scratch_69, scratch_70, scratch_71, scratch_72, scratch_73, scratch_74, scratch_75, scratch_76, scratch_77, scratch_78, scratch_79, scratch_8; \
8694 0 : gf_t scratch_80, scratch_81, scratch_82, scratch_83, scratch_84, scratch_85, scratch_86, scratch_87, scratch_88, scratch_89, scratch_90, scratch_91, scratch_92, scratch_93, scratch_94, scratch_95; \
8695 0 : gf_t scratch_96, scratch_97, scratch_98, scratch_99; \
8696 0 : scratch_65 = in65; \
8697 0 : in65 = GF_MUL( in65, 1 ); \
8698 0 : scratch_66 = in66; \
8699 0 : in66 = GF_MUL( in66, 1 ); \
8700 0 : scratch_67 = in67; \
8701 0 : in67 = GF_MUL( in67, 1 ); \
8702 0 : scratch_68 = in68; \
8703 0 : in68 = GF_MUL( in68, 1 ); \
8704 0 : scratch_69 = in69; \
8705 0 : in69 = GF_MUL( in69, 1 ); \
8706 0 : scratch_70 = in70; \
8707 0 : in70 = GF_MUL( in70, 1 ); \
8708 0 : scratch_71 = in71; \
8709 0 : in71 = GF_MUL( in71, 1 ); \
8710 0 : scratch_72 = in72; \
8711 0 : in72 = GF_MUL( in72, 1 ); \
8712 0 : scratch_73 = in73; \
8713 0 : in73 = GF_MUL( in73, 1 ); \
8714 0 : scratch_74 = in74; \
8715 0 : in74 = GF_MUL( in74, 1 ); \
8716 0 : scratch_75 = in75; \
8717 0 : in75 = GF_MUL( in75, 1 ); \
8718 0 : scratch_76 = in76; \
8719 0 : in76 = GF_MUL( in76, 1 ); \
8720 0 : scratch_77 = in77; \
8721 0 : in77 = GF_MUL( in77, 1 ); \
8722 0 : scratch_78 = in78; \
8723 0 : in78 = GF_MUL( in78, 1 ); \
8724 0 : scratch_79 = in79; \
8725 0 : in79 = GF_MUL( in79, 1 ); \
8726 0 : scratch_80 = in80; \
8727 0 : in80 = GF_MUL( in80, 1 ); \
8728 0 : scratch_81 = in81; \
8729 0 : in81 = GF_MUL( in81, 1 ); \
8730 0 : scratch_82 = in82; \
8731 0 : in82 = GF_MUL( in82, 1 ); \
8732 0 : scratch_83 = in83; \
8733 0 : in83 = GF_MUL( in83, 1 ); \
8734 0 : scratch_84 = in84; \
8735 0 : in84 = GF_MUL( in84, 1 ); \
8736 0 : scratch_85 = in85; \
8737 0 : in85 = GF_MUL( in85, 1 ); \
8738 0 : scratch_86 = in86; \
8739 0 : in86 = GF_MUL( in86, 1 ); \
8740 0 : scratch_87 = in87; \
8741 0 : in87 = GF_MUL( in87, 1 ); \
8742 0 : scratch_88 = in88; \
8743 0 : in88 = GF_MUL( in88, 1 ); \
8744 0 : scratch_89 = in89; \
8745 0 : in89 = GF_MUL( in89, 1 ); \
8746 0 : scratch_90 = in90; \
8747 0 : in90 = GF_MUL( in90, 1 ); \
8748 0 : scratch_91 = in91; \
8749 0 : in91 = GF_MUL( in91, 1 ); \
8750 0 : scratch_92 = in92; \
8751 0 : in92 = GF_MUL( in92, 1 ); \
8752 0 : scratch_93 = in93; \
8753 0 : in93 = GF_MUL( in93, 1 ); \
8754 0 : scratch_94 = in94; \
8755 0 : in94 = GF_MUL( in94, 1 ); \
8756 0 : scratch_95 = in95; \
8757 0 : in95 = GF_MUL( in95, 1 ); \
8758 0 : scratch_96 = in96; \
8759 0 : in96 = GF_MUL( in96, 1 ); \
8760 0 : scratch_97 = in97; \
8761 0 : in97 = GF_MUL( in97, 1 ); \
8762 0 : scratch_98 = in98; \
8763 0 : in98 = GF_MUL( in98, 1 ); \
8764 0 : scratch_99 = in99; \
8765 0 : in99 = GF_MUL( in99, 1 ); \
8766 0 : scratch_100 = in100; \
8767 0 : in100 = GF_MUL( in100, 1 ); \
8768 0 : scratch_101 = in101; \
8769 0 : in101 = GF_MUL( in101, 1 ); \
8770 0 : scratch_102 = in102; \
8771 0 : in102 = GF_MUL( in102, 1 ); \
8772 0 : scratch_103 = in103; \
8773 0 : in103 = GF_MUL( in103, 1 ); \
8774 0 : scratch_104 = in104; \
8775 0 : in104 = GF_MUL( in104, 1 ); \
8776 0 : scratch_105 = in105; \
8777 0 : in105 = GF_MUL( in105, 1 ); \
8778 0 : scratch_106 = in106; \
8779 0 : in106 = GF_MUL( in106, 1 ); \
8780 0 : scratch_107 = in107; \
8781 0 : in107 = GF_MUL( in107, 1 ); \
8782 0 : scratch_108 = in108; \
8783 0 : in108 = GF_MUL( in108, 1 ); \
8784 0 : scratch_109 = in109; \
8785 0 : in109 = GF_MUL( in109, 1 ); \
8786 0 : scratch_110 = in110; \
8787 0 : in110 = GF_MUL( in110, 1 ); \
8788 0 : scratch_111 = in111; \
8789 0 : in111 = GF_MUL( in111, 1 ); \
8790 0 : scratch_112 = in112; \
8791 0 : in112 = GF_MUL( in112, 1 ); \
8792 0 : scratch_113 = in113; \
8793 0 : in113 = GF_MUL( in113, 1 ); \
8794 0 : scratch_114 = in114; \
8795 0 : in114 = GF_MUL( in114, 1 ); \
8796 0 : scratch_115 = in115; \
8797 0 : in115 = GF_MUL( in115, 1 ); \
8798 0 : scratch_116 = in116; \
8799 0 : in116 = GF_MUL( in116, 1 ); \
8800 0 : scratch_117 = in117; \
8801 0 : in117 = GF_MUL( in117, 1 ); \
8802 0 : scratch_118 = in118; \
8803 0 : in118 = GF_MUL( in118, 1 ); \
8804 0 : scratch_119 = in119; \
8805 0 : in119 = GF_MUL( in119, 1 ); \
8806 0 : scratch_120 = in120; \
8807 0 : in120 = GF_MUL( in120, 1 ); \
8808 0 : scratch_121 = in121; \
8809 0 : in121 = GF_MUL( in121, 1 ); \
8810 0 : scratch_122 = in122; \
8811 0 : in122 = GF_MUL( in122, 1 ); \
8812 0 : scratch_123 = in123; \
8813 0 : in123 = GF_MUL( in123, 1 ); \
8814 0 : scratch_124 = in124; \
8815 0 : in124 = GF_MUL( in124, 1 ); \
8816 0 : scratch_125 = in125; \
8817 0 : in125 = GF_MUL( in125, 1 ); \
8818 0 : scratch_126 = in126; \
8819 0 : in126 = GF_MUL( in126, 1 ); \
8820 0 : scratch_127 = in127; \
8821 0 : in127 = GF_MUL( in127, 1 ); \
8822 0 : FD_REEDSOL_GENERATE_IFFT( 64, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
8823 0 : in65 = GF_ADD( GF_MUL( in01, 1 ), in65 ); \
8824 0 : in66 = GF_ADD( GF_MUL( in02, 1 ), in66 ); \
8825 0 : in67 = GF_ADD( GF_MUL( in03, 1 ), in67 ); \
8826 0 : in68 = GF_ADD( GF_MUL( in04, 1 ), in68 ); \
8827 0 : in69 = GF_ADD( GF_MUL( in05, 1 ), in69 ); \
8828 0 : in70 = GF_ADD( GF_MUL( in06, 1 ), in70 ); \
8829 0 : in71 = GF_ADD( GF_MUL( in07, 1 ), in71 ); \
8830 0 : in72 = GF_ADD( GF_MUL( in08, 1 ), in72 ); \
8831 0 : in73 = GF_ADD( GF_MUL( in09, 1 ), in73 ); \
8832 0 : in74 = GF_ADD( GF_MUL( in10, 1 ), in74 ); \
8833 0 : in75 = GF_ADD( GF_MUL( in11, 1 ), in75 ); \
8834 0 : in76 = GF_ADD( GF_MUL( in12, 1 ), in76 ); \
8835 0 : in77 = GF_ADD( GF_MUL( in13, 1 ), in77 ); \
8836 0 : in78 = GF_ADD( GF_MUL( in14, 1 ), in78 ); \
8837 0 : in79 = GF_ADD( GF_MUL( in15, 1 ), in79 ); \
8838 0 : in80 = GF_ADD( GF_MUL( in16, 1 ), in80 ); \
8839 0 : in81 = GF_ADD( GF_MUL( in17, 1 ), in81 ); \
8840 0 : in82 = GF_ADD( GF_MUL( in18, 1 ), in82 ); \
8841 0 : in83 = GF_ADD( GF_MUL( in19, 1 ), in83 ); \
8842 0 : in84 = GF_ADD( GF_MUL( in20, 1 ), in84 ); \
8843 0 : in85 = GF_ADD( GF_MUL( in21, 1 ), in85 ); \
8844 0 : in86 = GF_ADD( GF_MUL( in22, 1 ), in86 ); \
8845 0 : in87 = GF_ADD( GF_MUL( in23, 1 ), in87 ); \
8846 0 : in88 = GF_ADD( GF_MUL( in24, 1 ), in88 ); \
8847 0 : in89 = GF_ADD( GF_MUL( in25, 1 ), in89 ); \
8848 0 : in90 = GF_ADD( GF_MUL( in26, 1 ), in90 ); \
8849 0 : in91 = GF_ADD( GF_MUL( in27, 1 ), in91 ); \
8850 0 : in92 = GF_ADD( GF_MUL( in28, 1 ), in92 ); \
8851 0 : in93 = GF_ADD( GF_MUL( in29, 1 ), in93 ); \
8852 0 : in94 = GF_ADD( GF_MUL( in30, 1 ), in94 ); \
8853 0 : in95 = GF_ADD( GF_MUL( in31, 1 ), in95 ); \
8854 0 : in96 = GF_ADD( GF_MUL( in32, 1 ), in96 ); \
8855 0 : in97 = GF_ADD( GF_MUL( in33, 1 ), in97 ); \
8856 0 : in98 = GF_ADD( GF_MUL( in34, 1 ), in98 ); \
8857 0 : in99 = GF_ADD( GF_MUL( in35, 1 ), in99 ); \
8858 0 : in100 = GF_ADD( GF_MUL( in36, 1 ), in100 ); \
8859 0 : in101 = GF_ADD( GF_MUL( in37, 1 ), in101 ); \
8860 0 : in102 = GF_ADD( GF_MUL( in38, 1 ), in102 ); \
8861 0 : in103 = GF_ADD( GF_MUL( in39, 1 ), in103 ); \
8862 0 : in104 = GF_ADD( GF_MUL( in40, 1 ), in104 ); \
8863 0 : in105 = GF_ADD( GF_MUL( in41, 1 ), in105 ); \
8864 0 : in106 = GF_ADD( GF_MUL( in42, 1 ), in106 ); \
8865 0 : in107 = GF_ADD( GF_MUL( in43, 1 ), in107 ); \
8866 0 : in108 = GF_ADD( GF_MUL( in44, 1 ), in108 ); \
8867 0 : in109 = GF_ADD( GF_MUL( in45, 1 ), in109 ); \
8868 0 : in110 = GF_ADD( GF_MUL( in46, 1 ), in110 ); \
8869 0 : in111 = GF_ADD( GF_MUL( in47, 1 ), in111 ); \
8870 0 : in112 = GF_ADD( GF_MUL( in48, 1 ), in112 ); \
8871 0 : in113 = GF_ADD( GF_MUL( in49, 1 ), in113 ); \
8872 0 : in114 = GF_ADD( GF_MUL( in50, 1 ), in114 ); \
8873 0 : in115 = GF_ADD( GF_MUL( in51, 1 ), in115 ); \
8874 0 : in116 = GF_ADD( GF_MUL( in52, 1 ), in116 ); \
8875 0 : in117 = GF_ADD( GF_MUL( in53, 1 ), in117 ); \
8876 0 : in118 = GF_ADD( GF_MUL( in54, 1 ), in118 ); \
8877 0 : in119 = GF_ADD( GF_MUL( in55, 1 ), in119 ); \
8878 0 : in120 = GF_ADD( GF_MUL( in56, 1 ), in120 ); \
8879 0 : in121 = GF_ADD( GF_MUL( in57, 1 ), in121 ); \
8880 0 : in122 = GF_ADD( GF_MUL( in58, 1 ), in122 ); \
8881 0 : in123 = GF_ADD( GF_MUL( in59, 1 ), in123 ); \
8882 0 : in124 = GF_ADD( GF_MUL( in60, 1 ), in124 ); \
8883 0 : in125 = GF_ADD( GF_MUL( in61, 1 ), in125 ); \
8884 0 : in126 = GF_ADD( GF_MUL( in62, 1 ), in126 ); \
8885 0 : in127 = GF_ADD( GF_MUL( in63, 1 ), in127 ); \
8886 0 : scratch_32 = in96; \
8887 0 : in96 = GF_MUL( in96, 1 ); \
8888 0 : GF_MUL22( in65, in97, 1, 218, 1, 219 ); \
8889 0 : GF_MUL22( in66, in98, 1, 218, 1, 219 ); \
8890 0 : GF_MUL22( in67, in99, 1, 218, 1, 219 ); \
8891 0 : GF_MUL22( in68, in100, 1, 218, 1, 219 ); \
8892 0 : GF_MUL22( in69, in101, 1, 218, 1, 219 ); \
8893 0 : GF_MUL22( in70, in102, 1, 218, 1, 219 ); \
8894 0 : GF_MUL22( in71, in103, 1, 218, 1, 219 ); \
8895 0 : GF_MUL22( in72, in104, 1, 218, 1, 219 ); \
8896 0 : GF_MUL22( in73, in105, 1, 218, 1, 219 ); \
8897 0 : GF_MUL22( in74, in106, 1, 218, 1, 219 ); \
8898 0 : GF_MUL22( in75, in107, 1, 218, 1, 219 ); \
8899 0 : GF_MUL22( in76, in108, 1, 218, 1, 219 ); \
8900 0 : GF_MUL22( in77, in109, 1, 218, 1, 219 ); \
8901 0 : GF_MUL22( in78, in110, 1, 218, 1, 219 ); \
8902 0 : GF_MUL22( in79, in111, 1, 218, 1, 219 ); \
8903 0 : GF_MUL22( in80, in112, 1, 218, 1, 219 ); \
8904 0 : GF_MUL22( in81, in113, 1, 218, 1, 219 ); \
8905 0 : GF_MUL22( in82, in114, 1, 218, 1, 219 ); \
8906 0 : GF_MUL22( in83, in115, 1, 218, 1, 219 ); \
8907 0 : GF_MUL22( in84, in116, 1, 218, 1, 219 ); \
8908 0 : GF_MUL22( in85, in117, 1, 218, 1, 219 ); \
8909 0 : GF_MUL22( in86, in118, 1, 218, 1, 219 ); \
8910 0 : GF_MUL22( in87, in119, 1, 218, 1, 219 ); \
8911 0 : GF_MUL22( in88, in120, 1, 218, 1, 219 ); \
8912 0 : GF_MUL22( in89, in121, 1, 218, 1, 219 ); \
8913 0 : GF_MUL22( in90, in122, 1, 218, 1, 219 ); \
8914 0 : GF_MUL22( in91, in123, 1, 218, 1, 219 ); \
8915 0 : GF_MUL22( in92, in124, 1, 218, 1, 219 ); \
8916 0 : GF_MUL22( in93, in125, 1, 218, 1, 219 ); \
8917 0 : GF_MUL22( in94, in126, 1, 218, 1, 219 ); \
8918 0 : GF_MUL22( in95, in127, 1, 218, 1, 219 ); \
8919 0 : scratch_16 = in80; \
8920 0 : in80 = GF_MUL( in80, 1 ); \
8921 0 : GF_MUL22( in65, in81, 1, 189, 1, 188 ); \
8922 0 : GF_MUL22( in66, in82, 1, 189, 1, 188 ); \
8923 0 : GF_MUL22( in67, in83, 1, 189, 1, 188 ); \
8924 0 : GF_MUL22( in68, in84, 1, 189, 1, 188 ); \
8925 0 : GF_MUL22( in69, in85, 1, 189, 1, 188 ); \
8926 0 : GF_MUL22( in70, in86, 1, 189, 1, 188 ); \
8927 0 : GF_MUL22( in71, in87, 1, 189, 1, 188 ); \
8928 0 : GF_MUL22( in72, in88, 1, 189, 1, 188 ); \
8929 0 : GF_MUL22( in73, in89, 1, 189, 1, 188 ); \
8930 0 : GF_MUL22( in74, in90, 1, 189, 1, 188 ); \
8931 0 : GF_MUL22( in75, in91, 1, 189, 1, 188 ); \
8932 0 : GF_MUL22( in76, in92, 1, 189, 1, 188 ); \
8933 0 : GF_MUL22( in77, in93, 1, 189, 1, 188 ); \
8934 0 : GF_MUL22( in78, in94, 1, 189, 1, 188 ); \
8935 0 : GF_MUL22( in79, in95, 1, 189, 1, 188 ); \
8936 0 : scratch_8 = in72; \
8937 0 : in72 = GF_MUL( in72, 1 ); \
8938 0 : GF_MUL22( in65, in73, 1, 33, 1, 32 ); \
8939 0 : GF_MUL22( in66, in74, 1, 33, 1, 32 ); \
8940 0 : GF_MUL22( in67, in75, 1, 33, 1, 32 ); \
8941 0 : GF_MUL22( in68, in76, 1, 33, 1, 32 ); \
8942 0 : GF_MUL22( in69, in77, 1, 33, 1, 32 ); \
8943 0 : GF_MUL22( in70, in78, 1, 33, 1, 32 ); \
8944 0 : GF_MUL22( in71, in79, 1, 33, 1, 32 ); \
8945 0 : scratch_4 = in68; \
8946 0 : in68 = GF_MUL( in68, 1 ); \
8947 0 : GF_MUL22( in65, in69, 1, 183, 1, 182 ); \
8948 0 : GF_MUL22( in66, in70, 1, 183, 1, 182 ); \
8949 0 : GF_MUL22( in67, in71, 1, 183, 1, 182 ); \
8950 0 : scratch_2 = in66; \
8951 0 : in66 = GF_MUL( in66, 1 ); \
8952 0 : GF_MUL22( in65, in67, 1, 179, 1, 178 ); \
8953 0 : GF_MUL22( in64, in65, 1, 64, 1, 1 ); \
8954 0 : in66 = GF_ADD( GF_MUL( in64, 1 ), in66 ); \
8955 0 : GF_MUL22( in66, in67, 1, 66, 1, 67 ); \
8956 0 : in64 = GF_MUL( in64, 1 ); \
8957 0 : in64 = GF_ADD( GF_MUL( scratch_2, 179 ), in64 ); \
8958 0 : in68 = GF_ADD( GF_MUL( in64, 1 ), in68 ); \
8959 0 : FD_REEDSOL_GENERATE_FFT( 4, 68, in68, in69, in70, in71 ); \
8960 0 : in64 = GF_MUL( in64, 1 ); \
8961 0 : in64 = GF_ADD( GF_MUL( scratch_4, 183 ), in64 ); \
8962 0 : in72 = GF_ADD( GF_MUL( in64, 1 ), in72 ); \
8963 0 : FD_REEDSOL_GENERATE_FFT( 8, 72, in72, in73, in74, in75, in76, in77, in78, in79 ); \
8964 0 : in64 = GF_MUL( in64, 1 ); \
8965 0 : in64 = GF_ADD( GF_MUL( scratch_8, 33 ), in64 ); \
8966 0 : in80 = GF_ADD( GF_MUL( in64, 1 ), in80 ); \
8967 0 : FD_REEDSOL_GENERATE_FFT( 16, 80, in80, in81, in82, in83, in84, in85, in86, in87, in88, in89, in90, in91, in92, in93, in94, in95 ); \
8968 0 : in64 = GF_MUL( in64, 1 ); \
8969 0 : in64 = GF_ADD( GF_MUL( scratch_16, 189 ), in64 ); \
8970 0 : in96 = GF_ADD( GF_MUL( in64, 1 ), in96 ); \
8971 0 : FD_REEDSOL_GENERATE_FFT( 32, 96, in96, in97, in98, in99, in100, in101, in102, in103, in104, in105, in106, in107, in108, in109, in110, in111, in112, in113, in114, in115, in116, in117, in118, in119, in120, in121, in122, in123, in124, in125, in126, in127 ); \
8972 0 : in64 = GF_MUL( in64, 1 ); \
8973 0 : in64 = GF_ADD( GF_MUL( scratch_32, 218 ), in64 ); \
8974 0 : GF_MUL22( in00, in64, 1, 0, 1, 1 ); \
8975 0 : in01 = GF_MUL( in01, 1 ); \
8976 0 : in01 = GF_ADD( GF_MUL( scratch_65, 0 ), in01 ); \
8977 0 : in02 = GF_MUL( in02, 1 ); \
8978 0 : in02 = GF_ADD( GF_MUL( scratch_66, 0 ), in02 ); \
8979 0 : in03 = GF_MUL( in03, 1 ); \
8980 0 : in03 = GF_ADD( GF_MUL( scratch_67, 0 ), in03 ); \
8981 0 : in04 = GF_MUL( in04, 1 ); \
8982 0 : in04 = GF_ADD( GF_MUL( scratch_68, 0 ), in04 ); \
8983 0 : in05 = GF_MUL( in05, 1 ); \
8984 0 : in05 = GF_ADD( GF_MUL( scratch_69, 0 ), in05 ); \
8985 0 : in06 = GF_MUL( in06, 1 ); \
8986 0 : in06 = GF_ADD( GF_MUL( scratch_70, 0 ), in06 ); \
8987 0 : in07 = GF_MUL( in07, 1 ); \
8988 0 : in07 = GF_ADD( GF_MUL( scratch_71, 0 ), in07 ); \
8989 0 : in08 = GF_MUL( in08, 1 ); \
8990 0 : in08 = GF_ADD( GF_MUL( scratch_72, 0 ), in08 ); \
8991 0 : in09 = GF_MUL( in09, 1 ); \
8992 0 : in09 = GF_ADD( GF_MUL( scratch_73, 0 ), in09 ); \
8993 0 : in10 = GF_MUL( in10, 1 ); \
8994 0 : in10 = GF_ADD( GF_MUL( scratch_74, 0 ), in10 ); \
8995 0 : in11 = GF_MUL( in11, 1 ); \
8996 0 : in11 = GF_ADD( GF_MUL( scratch_75, 0 ), in11 ); \
8997 0 : in12 = GF_MUL( in12, 1 ); \
8998 0 : in12 = GF_ADD( GF_MUL( scratch_76, 0 ), in12 ); \
8999 0 : in13 = GF_MUL( in13, 1 ); \
9000 0 : in13 = GF_ADD( GF_MUL( scratch_77, 0 ), in13 ); \
9001 0 : in14 = GF_MUL( in14, 1 ); \
9002 0 : in14 = GF_ADD( GF_MUL( scratch_78, 0 ), in14 ); \
9003 0 : in15 = GF_MUL( in15, 1 ); \
9004 0 : in15 = GF_ADD( GF_MUL( scratch_79, 0 ), in15 ); \
9005 0 : in16 = GF_MUL( in16, 1 ); \
9006 0 : in16 = GF_ADD( GF_MUL( scratch_80, 0 ), in16 ); \
9007 0 : in17 = GF_MUL( in17, 1 ); \
9008 0 : in17 = GF_ADD( GF_MUL( scratch_81, 0 ), in17 ); \
9009 0 : in18 = GF_MUL( in18, 1 ); \
9010 0 : in18 = GF_ADD( GF_MUL( scratch_82, 0 ), in18 ); \
9011 0 : in19 = GF_MUL( in19, 1 ); \
9012 0 : in19 = GF_ADD( GF_MUL( scratch_83, 0 ), in19 ); \
9013 0 : in20 = GF_MUL( in20, 1 ); \
9014 0 : in20 = GF_ADD( GF_MUL( scratch_84, 0 ), in20 ); \
9015 0 : in21 = GF_MUL( in21, 1 ); \
9016 0 : in21 = GF_ADD( GF_MUL( scratch_85, 0 ), in21 ); \
9017 0 : in22 = GF_MUL( in22, 1 ); \
9018 0 : in22 = GF_ADD( GF_MUL( scratch_86, 0 ), in22 ); \
9019 0 : in23 = GF_MUL( in23, 1 ); \
9020 0 : in23 = GF_ADD( GF_MUL( scratch_87, 0 ), in23 ); \
9021 0 : in24 = GF_MUL( in24, 1 ); \
9022 0 : in24 = GF_ADD( GF_MUL( scratch_88, 0 ), in24 ); \
9023 0 : in25 = GF_MUL( in25, 1 ); \
9024 0 : in25 = GF_ADD( GF_MUL( scratch_89, 0 ), in25 ); \
9025 0 : in26 = GF_MUL( in26, 1 ); \
9026 0 : in26 = GF_ADD( GF_MUL( scratch_90, 0 ), in26 ); \
9027 0 : in27 = GF_MUL( in27, 1 ); \
9028 0 : in27 = GF_ADD( GF_MUL( scratch_91, 0 ), in27 ); \
9029 0 : in28 = GF_MUL( in28, 1 ); \
9030 0 : in28 = GF_ADD( GF_MUL( scratch_92, 0 ), in28 ); \
9031 0 : in29 = GF_MUL( in29, 1 ); \
9032 0 : in29 = GF_ADD( GF_MUL( scratch_93, 0 ), in29 ); \
9033 0 : in30 = GF_MUL( in30, 1 ); \
9034 0 : in30 = GF_ADD( GF_MUL( scratch_94, 0 ), in30 ); \
9035 0 : in31 = GF_MUL( in31, 1 ); \
9036 0 : in31 = GF_ADD( GF_MUL( scratch_95, 0 ), in31 ); \
9037 0 : in32 = GF_MUL( in32, 1 ); \
9038 0 : in32 = GF_ADD( GF_MUL( scratch_96, 0 ), in32 ); \
9039 0 : in33 = GF_MUL( in33, 1 ); \
9040 0 : in33 = GF_ADD( GF_MUL( scratch_97, 0 ), in33 ); \
9041 0 : in34 = GF_MUL( in34, 1 ); \
9042 0 : in34 = GF_ADD( GF_MUL( scratch_98, 0 ), in34 ); \
9043 0 : in35 = GF_MUL( in35, 1 ); \
9044 0 : in35 = GF_ADD( GF_MUL( scratch_99, 0 ), in35 ); \
9045 0 : in36 = GF_MUL( in36, 1 ); \
9046 0 : in36 = GF_ADD( GF_MUL( scratch_100, 0 ), in36 ); \
9047 0 : in37 = GF_MUL( in37, 1 ); \
9048 0 : in37 = GF_ADD( GF_MUL( scratch_101, 0 ), in37 ); \
9049 0 : in38 = GF_MUL( in38, 1 ); \
9050 0 : in38 = GF_ADD( GF_MUL( scratch_102, 0 ), in38 ); \
9051 0 : in39 = GF_MUL( in39, 1 ); \
9052 0 : in39 = GF_ADD( GF_MUL( scratch_103, 0 ), in39 ); \
9053 0 : in40 = GF_MUL( in40, 1 ); \
9054 0 : in40 = GF_ADD( GF_MUL( scratch_104, 0 ), in40 ); \
9055 0 : in41 = GF_MUL( in41, 1 ); \
9056 0 : in41 = GF_ADD( GF_MUL( scratch_105, 0 ), in41 ); \
9057 0 : in42 = GF_MUL( in42, 1 ); \
9058 0 : in42 = GF_ADD( GF_MUL( scratch_106, 0 ), in42 ); \
9059 0 : in43 = GF_MUL( in43, 1 ); \
9060 0 : in43 = GF_ADD( GF_MUL( scratch_107, 0 ), in43 ); \
9061 0 : in44 = GF_MUL( in44, 1 ); \
9062 0 : in44 = GF_ADD( GF_MUL( scratch_108, 0 ), in44 ); \
9063 0 : in45 = GF_MUL( in45, 1 ); \
9064 0 : in45 = GF_ADD( GF_MUL( scratch_109, 0 ), in45 ); \
9065 0 : in46 = GF_MUL( in46, 1 ); \
9066 0 : in46 = GF_ADD( GF_MUL( scratch_110, 0 ), in46 ); \
9067 0 : in47 = GF_MUL( in47, 1 ); \
9068 0 : in47 = GF_ADD( GF_MUL( scratch_111, 0 ), in47 ); \
9069 0 : in48 = GF_MUL( in48, 1 ); \
9070 0 : in48 = GF_ADD( GF_MUL( scratch_112, 0 ), in48 ); \
9071 0 : in49 = GF_MUL( in49, 1 ); \
9072 0 : in49 = GF_ADD( GF_MUL( scratch_113, 0 ), in49 ); \
9073 0 : in50 = GF_MUL( in50, 1 ); \
9074 0 : in50 = GF_ADD( GF_MUL( scratch_114, 0 ), in50 ); \
9075 0 : in51 = GF_MUL( in51, 1 ); \
9076 0 : in51 = GF_ADD( GF_MUL( scratch_115, 0 ), in51 ); \
9077 0 : in52 = GF_MUL( in52, 1 ); \
9078 0 : in52 = GF_ADD( GF_MUL( scratch_116, 0 ), in52 ); \
9079 0 : in53 = GF_MUL( in53, 1 ); \
9080 0 : in53 = GF_ADD( GF_MUL( scratch_117, 0 ), in53 ); \
9081 0 : in54 = GF_MUL( in54, 1 ); \
9082 0 : in54 = GF_ADD( GF_MUL( scratch_118, 0 ), in54 ); \
9083 0 : in55 = GF_MUL( in55, 1 ); \
9084 0 : in55 = GF_ADD( GF_MUL( scratch_119, 0 ), in55 ); \
9085 0 : in56 = GF_MUL( in56, 1 ); \
9086 0 : in56 = GF_ADD( GF_MUL( scratch_120, 0 ), in56 ); \
9087 0 : in57 = GF_MUL( in57, 1 ); \
9088 0 : in57 = GF_ADD( GF_MUL( scratch_121, 0 ), in57 ); \
9089 0 : in58 = GF_MUL( in58, 1 ); \
9090 0 : in58 = GF_ADD( GF_MUL( scratch_122, 0 ), in58 ); \
9091 0 : in59 = GF_MUL( in59, 1 ); \
9092 0 : in59 = GF_ADD( GF_MUL( scratch_123, 0 ), in59 ); \
9093 0 : in60 = GF_MUL( in60, 1 ); \
9094 0 : in60 = GF_ADD( GF_MUL( scratch_124, 0 ), in60 ); \
9095 0 : in61 = GF_MUL( in61, 1 ); \
9096 0 : in61 = GF_ADD( GF_MUL( scratch_125, 0 ), in61 ); \
9097 0 : in62 = GF_MUL( in62, 1 ); \
9098 0 : in62 = GF_ADD( GF_MUL( scratch_126, 0 ), in62 ); \
9099 0 : in63 = GF_MUL( in63, 1 ); \
9100 0 : in63 = GF_ADD( GF_MUL( scratch_127, 0 ), in63 ); \
9101 0 : } while( 0 )
9102 :
9103 : void fd_reedsol_ppt_128_66( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
9104 : #define FD_REEDSOL_PPT_IMPL_128_66( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63, in64, in65 , \
9105 : in66, in67, in68, in69, in70, in71, in72, in73, in74, in75, in76, in77, in78, in79, in80, in81, in82, in83, in84, in85, in86, in87, in88, in89, in90, in91, in92, in93, in94, in95, in96, in97, in98, in99, in100, in101, in102, in103, in104, in105, in106, in107, in108, in109, in110, in111, in112, in113, in114, in115, in116, in117, in118, in119, in120, in121, in122, in123, in124, in125, in126, in127) \
9106 292644 : do { \
9107 292644 : gf_t scratch_100, scratch_101, scratch_102, scratch_103, scratch_104, scratch_105, scratch_106, scratch_107, scratch_108, scratch_109, scratch_110, scratch_111, scratch_112, scratch_113, scratch_114, scratch_115; \
9108 292644 : gf_t scratch_116, scratch_117, scratch_118, scratch_119, scratch_120, scratch_121, scratch_122, scratch_123, scratch_124, scratch_125, scratch_126, scratch_127, scratch_16, scratch_17, scratch_2, scratch_3; \
9109 292644 : gf_t scratch_32, scratch_33, scratch_4, scratch_5, scratch_66, scratch_67, scratch_68, scratch_69, scratch_70, scratch_71, scratch_72, scratch_73, scratch_74, scratch_75, scratch_76, scratch_77; \
9110 292644 : gf_t scratch_78, scratch_79, scratch_8, scratch_80, scratch_81, scratch_82, scratch_83, scratch_84, scratch_85, scratch_86, scratch_87, scratch_88, scratch_89, scratch_9, scratch_90, scratch_91; \
9111 292644 : gf_t scratch_92, scratch_93, scratch_94, scratch_95, scratch_96, scratch_97, scratch_98, scratch_99; \
9112 292644 : scratch_66 = in66; \
9113 292644 : in66 = GF_MUL( in66, 1 ); \
9114 292644 : scratch_67 = in67; \
9115 292644 : in67 = GF_MUL( in67, 1 ); \
9116 292644 : scratch_68 = in68; \
9117 292644 : in68 = GF_MUL( in68, 1 ); \
9118 292644 : scratch_69 = in69; \
9119 292644 : in69 = GF_MUL( in69, 1 ); \
9120 292644 : scratch_70 = in70; \
9121 292644 : in70 = GF_MUL( in70, 1 ); \
9122 292644 : scratch_71 = in71; \
9123 292644 : in71 = GF_MUL( in71, 1 ); \
9124 292644 : scratch_72 = in72; \
9125 292644 : in72 = GF_MUL( in72, 1 ); \
9126 292644 : scratch_73 = in73; \
9127 292644 : in73 = GF_MUL( in73, 1 ); \
9128 292644 : scratch_74 = in74; \
9129 292644 : in74 = GF_MUL( in74, 1 ); \
9130 292644 : scratch_75 = in75; \
9131 292644 : in75 = GF_MUL( in75, 1 ); \
9132 292644 : scratch_76 = in76; \
9133 292644 : in76 = GF_MUL( in76, 1 ); \
9134 292644 : scratch_77 = in77; \
9135 292644 : in77 = GF_MUL( in77, 1 ); \
9136 292644 : scratch_78 = in78; \
9137 292644 : in78 = GF_MUL( in78, 1 ); \
9138 292644 : scratch_79 = in79; \
9139 292644 : in79 = GF_MUL( in79, 1 ); \
9140 292644 : scratch_80 = in80; \
9141 292644 : in80 = GF_MUL( in80, 1 ); \
9142 292644 : scratch_81 = in81; \
9143 292644 : in81 = GF_MUL( in81, 1 ); \
9144 292644 : scratch_82 = in82; \
9145 292644 : in82 = GF_MUL( in82, 1 ); \
9146 292644 : scratch_83 = in83; \
9147 292644 : in83 = GF_MUL( in83, 1 ); \
9148 292644 : scratch_84 = in84; \
9149 292644 : in84 = GF_MUL( in84, 1 ); \
9150 292644 : scratch_85 = in85; \
9151 292644 : in85 = GF_MUL( in85, 1 ); \
9152 292644 : scratch_86 = in86; \
9153 292644 : in86 = GF_MUL( in86, 1 ); \
9154 292644 : scratch_87 = in87; \
9155 292644 : in87 = GF_MUL( in87, 1 ); \
9156 292644 : scratch_88 = in88; \
9157 292644 : in88 = GF_MUL( in88, 1 ); \
9158 292644 : scratch_89 = in89; \
9159 292644 : in89 = GF_MUL( in89, 1 ); \
9160 292644 : scratch_90 = in90; \
9161 292644 : in90 = GF_MUL( in90, 1 ); \
9162 292644 : scratch_91 = in91; \
9163 292644 : in91 = GF_MUL( in91, 1 ); \
9164 292644 : scratch_92 = in92; \
9165 292644 : in92 = GF_MUL( in92, 1 ); \
9166 292644 : scratch_93 = in93; \
9167 292644 : in93 = GF_MUL( in93, 1 ); \
9168 292644 : scratch_94 = in94; \
9169 292644 : in94 = GF_MUL( in94, 1 ); \
9170 292644 : scratch_95 = in95; \
9171 292644 : in95 = GF_MUL( in95, 1 ); \
9172 292644 : scratch_96 = in96; \
9173 292644 : in96 = GF_MUL( in96, 1 ); \
9174 292644 : scratch_97 = in97; \
9175 292644 : in97 = GF_MUL( in97, 1 ); \
9176 292644 : scratch_98 = in98; \
9177 292644 : in98 = GF_MUL( in98, 1 ); \
9178 292644 : scratch_99 = in99; \
9179 292644 : in99 = GF_MUL( in99, 1 ); \
9180 292644 : scratch_100 = in100; \
9181 292644 : in100 = GF_MUL( in100, 1 ); \
9182 292644 : scratch_101 = in101; \
9183 292644 : in101 = GF_MUL( in101, 1 ); \
9184 292644 : scratch_102 = in102; \
9185 292644 : in102 = GF_MUL( in102, 1 ); \
9186 292644 : scratch_103 = in103; \
9187 292644 : in103 = GF_MUL( in103, 1 ); \
9188 292644 : scratch_104 = in104; \
9189 292644 : in104 = GF_MUL( in104, 1 ); \
9190 292644 : scratch_105 = in105; \
9191 292644 : in105 = GF_MUL( in105, 1 ); \
9192 292644 : scratch_106 = in106; \
9193 292644 : in106 = GF_MUL( in106, 1 ); \
9194 292644 : scratch_107 = in107; \
9195 292644 : in107 = GF_MUL( in107, 1 ); \
9196 292644 : scratch_108 = in108; \
9197 292644 : in108 = GF_MUL( in108, 1 ); \
9198 292644 : scratch_109 = in109; \
9199 292644 : in109 = GF_MUL( in109, 1 ); \
9200 292644 : scratch_110 = in110; \
9201 292644 : in110 = GF_MUL( in110, 1 ); \
9202 292644 : scratch_111 = in111; \
9203 292644 : in111 = GF_MUL( in111, 1 ); \
9204 292644 : scratch_112 = in112; \
9205 292644 : in112 = GF_MUL( in112, 1 ); \
9206 292644 : scratch_113 = in113; \
9207 292644 : in113 = GF_MUL( in113, 1 ); \
9208 292644 : scratch_114 = in114; \
9209 292644 : in114 = GF_MUL( in114, 1 ); \
9210 292644 : scratch_115 = in115; \
9211 292644 : in115 = GF_MUL( in115, 1 ); \
9212 292644 : scratch_116 = in116; \
9213 292644 : in116 = GF_MUL( in116, 1 ); \
9214 292644 : scratch_117 = in117; \
9215 292644 : in117 = GF_MUL( in117, 1 ); \
9216 292644 : scratch_118 = in118; \
9217 292644 : in118 = GF_MUL( in118, 1 ); \
9218 292644 : scratch_119 = in119; \
9219 292644 : in119 = GF_MUL( in119, 1 ); \
9220 292644 : scratch_120 = in120; \
9221 292644 : in120 = GF_MUL( in120, 1 ); \
9222 292644 : scratch_121 = in121; \
9223 292644 : in121 = GF_MUL( in121, 1 ); \
9224 292644 : scratch_122 = in122; \
9225 292644 : in122 = GF_MUL( in122, 1 ); \
9226 292644 : scratch_123 = in123; \
9227 292644 : in123 = GF_MUL( in123, 1 ); \
9228 292644 : scratch_124 = in124; \
9229 292644 : in124 = GF_MUL( in124, 1 ); \
9230 292644 : scratch_125 = in125; \
9231 292644 : in125 = GF_MUL( in125, 1 ); \
9232 292644 : scratch_126 = in126; \
9233 292644 : in126 = GF_MUL( in126, 1 ); \
9234 292644 : scratch_127 = in127; \
9235 292644 : in127 = GF_MUL( in127, 1 ); \
9236 292644 : FD_REEDSOL_GENERATE_IFFT( 64, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
9237 292644 : in66 = GF_ADD( GF_MUL( in02, 1 ), in66 ); \
9238 292644 : in67 = GF_ADD( GF_MUL( in03, 1 ), in67 ); \
9239 292644 : in68 = GF_ADD( GF_MUL( in04, 1 ), in68 ); \
9240 292644 : in69 = GF_ADD( GF_MUL( in05, 1 ), in69 ); \
9241 292644 : in70 = GF_ADD( GF_MUL( in06, 1 ), in70 ); \
9242 292644 : in71 = GF_ADD( GF_MUL( in07, 1 ), in71 ); \
9243 292644 : in72 = GF_ADD( GF_MUL( in08, 1 ), in72 ); \
9244 292644 : in73 = GF_ADD( GF_MUL( in09, 1 ), in73 ); \
9245 292644 : in74 = GF_ADD( GF_MUL( in10, 1 ), in74 ); \
9246 292644 : in75 = GF_ADD( GF_MUL( in11, 1 ), in75 ); \
9247 292644 : in76 = GF_ADD( GF_MUL( in12, 1 ), in76 ); \
9248 292644 : in77 = GF_ADD( GF_MUL( in13, 1 ), in77 ); \
9249 292644 : in78 = GF_ADD( GF_MUL( in14, 1 ), in78 ); \
9250 292644 : in79 = GF_ADD( GF_MUL( in15, 1 ), in79 ); \
9251 292644 : in80 = GF_ADD( GF_MUL( in16, 1 ), in80 ); \
9252 292644 : in81 = GF_ADD( GF_MUL( in17, 1 ), in81 ); \
9253 292644 : in82 = GF_ADD( GF_MUL( in18, 1 ), in82 ); \
9254 292644 : in83 = GF_ADD( GF_MUL( in19, 1 ), in83 ); \
9255 292644 : in84 = GF_ADD( GF_MUL( in20, 1 ), in84 ); \
9256 292644 : in85 = GF_ADD( GF_MUL( in21, 1 ), in85 ); \
9257 292644 : in86 = GF_ADD( GF_MUL( in22, 1 ), in86 ); \
9258 292644 : in87 = GF_ADD( GF_MUL( in23, 1 ), in87 ); \
9259 292644 : in88 = GF_ADD( GF_MUL( in24, 1 ), in88 ); \
9260 292644 : in89 = GF_ADD( GF_MUL( in25, 1 ), in89 ); \
9261 292644 : in90 = GF_ADD( GF_MUL( in26, 1 ), in90 ); \
9262 292644 : in91 = GF_ADD( GF_MUL( in27, 1 ), in91 ); \
9263 292644 : in92 = GF_ADD( GF_MUL( in28, 1 ), in92 ); \
9264 292644 : in93 = GF_ADD( GF_MUL( in29, 1 ), in93 ); \
9265 292644 : in94 = GF_ADD( GF_MUL( in30, 1 ), in94 ); \
9266 292644 : in95 = GF_ADD( GF_MUL( in31, 1 ), in95 ); \
9267 292644 : in96 = GF_ADD( GF_MUL( in32, 1 ), in96 ); \
9268 292644 : in97 = GF_ADD( GF_MUL( in33, 1 ), in97 ); \
9269 292644 : in98 = GF_ADD( GF_MUL( in34, 1 ), in98 ); \
9270 292644 : in99 = GF_ADD( GF_MUL( in35, 1 ), in99 ); \
9271 292644 : in100 = GF_ADD( GF_MUL( in36, 1 ), in100 ); \
9272 292644 : in101 = GF_ADD( GF_MUL( in37, 1 ), in101 ); \
9273 292644 : in102 = GF_ADD( GF_MUL( in38, 1 ), in102 ); \
9274 292644 : in103 = GF_ADD( GF_MUL( in39, 1 ), in103 ); \
9275 292644 : in104 = GF_ADD( GF_MUL( in40, 1 ), in104 ); \
9276 292644 : in105 = GF_ADD( GF_MUL( in41, 1 ), in105 ); \
9277 292644 : in106 = GF_ADD( GF_MUL( in42, 1 ), in106 ); \
9278 292644 : in107 = GF_ADD( GF_MUL( in43, 1 ), in107 ); \
9279 292644 : in108 = GF_ADD( GF_MUL( in44, 1 ), in108 ); \
9280 292644 : in109 = GF_ADD( GF_MUL( in45, 1 ), in109 ); \
9281 292644 : in110 = GF_ADD( GF_MUL( in46, 1 ), in110 ); \
9282 292644 : in111 = GF_ADD( GF_MUL( in47, 1 ), in111 ); \
9283 292644 : in112 = GF_ADD( GF_MUL( in48, 1 ), in112 ); \
9284 292644 : in113 = GF_ADD( GF_MUL( in49, 1 ), in113 ); \
9285 292644 : in114 = GF_ADD( GF_MUL( in50, 1 ), in114 ); \
9286 292644 : in115 = GF_ADD( GF_MUL( in51, 1 ), in115 ); \
9287 292644 : in116 = GF_ADD( GF_MUL( in52, 1 ), in116 ); \
9288 292644 : in117 = GF_ADD( GF_MUL( in53, 1 ), in117 ); \
9289 292644 : in118 = GF_ADD( GF_MUL( in54, 1 ), in118 ); \
9290 292644 : in119 = GF_ADD( GF_MUL( in55, 1 ), in119 ); \
9291 292644 : in120 = GF_ADD( GF_MUL( in56, 1 ), in120 ); \
9292 292644 : in121 = GF_ADD( GF_MUL( in57, 1 ), in121 ); \
9293 292644 : in122 = GF_ADD( GF_MUL( in58, 1 ), in122 ); \
9294 292644 : in123 = GF_ADD( GF_MUL( in59, 1 ), in123 ); \
9295 292644 : in124 = GF_ADD( GF_MUL( in60, 1 ), in124 ); \
9296 292644 : in125 = GF_ADD( GF_MUL( in61, 1 ), in125 ); \
9297 292644 : in126 = GF_ADD( GF_MUL( in62, 1 ), in126 ); \
9298 292644 : in127 = GF_ADD( GF_MUL( in63, 1 ), in127 ); \
9299 292644 : scratch_32 = in96; \
9300 292644 : in96 = GF_MUL( in96, 1 ); \
9301 292644 : scratch_33 = in97; \
9302 292644 : in97 = GF_MUL( in97, 1 ); \
9303 292644 : GF_MUL22( in66, in98, 1, 218, 1, 219 ); \
9304 292644 : GF_MUL22( in67, in99, 1, 218, 1, 219 ); \
9305 292644 : GF_MUL22( in68, in100, 1, 218, 1, 219 ); \
9306 292644 : GF_MUL22( in69, in101, 1, 218, 1, 219 ); \
9307 292644 : GF_MUL22( in70, in102, 1, 218, 1, 219 ); \
9308 292644 : GF_MUL22( in71, in103, 1, 218, 1, 219 ); \
9309 292644 : GF_MUL22( in72, in104, 1, 218, 1, 219 ); \
9310 292644 : GF_MUL22( in73, in105, 1, 218, 1, 219 ); \
9311 292644 : GF_MUL22( in74, in106, 1, 218, 1, 219 ); \
9312 292644 : GF_MUL22( in75, in107, 1, 218, 1, 219 ); \
9313 292644 : GF_MUL22( in76, in108, 1, 218, 1, 219 ); \
9314 292644 : GF_MUL22( in77, in109, 1, 218, 1, 219 ); \
9315 292644 : GF_MUL22( in78, in110, 1, 218, 1, 219 ); \
9316 292644 : GF_MUL22( in79, in111, 1, 218, 1, 219 ); \
9317 292644 : GF_MUL22( in80, in112, 1, 218, 1, 219 ); \
9318 292644 : GF_MUL22( in81, in113, 1, 218, 1, 219 ); \
9319 292644 : GF_MUL22( in82, in114, 1, 218, 1, 219 ); \
9320 292644 : GF_MUL22( in83, in115, 1, 218, 1, 219 ); \
9321 292644 : GF_MUL22( in84, in116, 1, 218, 1, 219 ); \
9322 292644 : GF_MUL22( in85, in117, 1, 218, 1, 219 ); \
9323 292644 : GF_MUL22( in86, in118, 1, 218, 1, 219 ); \
9324 292644 : GF_MUL22( in87, in119, 1, 218, 1, 219 ); \
9325 292644 : GF_MUL22( in88, in120, 1, 218, 1, 219 ); \
9326 292644 : GF_MUL22( in89, in121, 1, 218, 1, 219 ); \
9327 292644 : GF_MUL22( in90, in122, 1, 218, 1, 219 ); \
9328 292644 : GF_MUL22( in91, in123, 1, 218, 1, 219 ); \
9329 292644 : GF_MUL22( in92, in124, 1, 218, 1, 219 ); \
9330 292644 : GF_MUL22( in93, in125, 1, 218, 1, 219 ); \
9331 292644 : GF_MUL22( in94, in126, 1, 218, 1, 219 ); \
9332 292644 : GF_MUL22( in95, in127, 1, 218, 1, 219 ); \
9333 292644 : scratch_16 = in80; \
9334 292644 : in80 = GF_MUL( in80, 1 ); \
9335 292644 : scratch_17 = in81; \
9336 292644 : in81 = GF_MUL( in81, 1 ); \
9337 292644 : GF_MUL22( in66, in82, 1, 189, 1, 188 ); \
9338 292644 : GF_MUL22( in67, in83, 1, 189, 1, 188 ); \
9339 292644 : GF_MUL22( in68, in84, 1, 189, 1, 188 ); \
9340 292644 : GF_MUL22( in69, in85, 1, 189, 1, 188 ); \
9341 292644 : GF_MUL22( in70, in86, 1, 189, 1, 188 ); \
9342 292644 : GF_MUL22( in71, in87, 1, 189, 1, 188 ); \
9343 292644 : GF_MUL22( in72, in88, 1, 189, 1, 188 ); \
9344 292644 : GF_MUL22( in73, in89, 1, 189, 1, 188 ); \
9345 292644 : GF_MUL22( in74, in90, 1, 189, 1, 188 ); \
9346 292644 : GF_MUL22( in75, in91, 1, 189, 1, 188 ); \
9347 292644 : GF_MUL22( in76, in92, 1, 189, 1, 188 ); \
9348 292644 : GF_MUL22( in77, in93, 1, 189, 1, 188 ); \
9349 292644 : GF_MUL22( in78, in94, 1, 189, 1, 188 ); \
9350 292644 : GF_MUL22( in79, in95, 1, 189, 1, 188 ); \
9351 292644 : scratch_8 = in72; \
9352 292644 : in72 = GF_MUL( in72, 1 ); \
9353 292644 : scratch_9 = in73; \
9354 292644 : in73 = GF_MUL( in73, 1 ); \
9355 292644 : GF_MUL22( in66, in74, 1, 33, 1, 32 ); \
9356 292644 : GF_MUL22( in67, in75, 1, 33, 1, 32 ); \
9357 292644 : GF_MUL22( in68, in76, 1, 33, 1, 32 ); \
9358 292644 : GF_MUL22( in69, in77, 1, 33, 1, 32 ); \
9359 292644 : GF_MUL22( in70, in78, 1, 33, 1, 32 ); \
9360 292644 : GF_MUL22( in71, in79, 1, 33, 1, 32 ); \
9361 292644 : scratch_4 = in68; \
9362 292644 : in68 = GF_MUL( in68, 1 ); \
9363 292644 : scratch_5 = in69; \
9364 292644 : in69 = GF_MUL( in69, 1 ); \
9365 292644 : GF_MUL22( in66, in70, 1, 183, 1, 182 ); \
9366 292644 : GF_MUL22( in67, in71, 1, 183, 1, 182 ); \
9367 292644 : scratch_2 = in66; \
9368 292644 : in66 = GF_MUL( in66, 1 ); \
9369 292644 : scratch_3 = in67; \
9370 292644 : in67 = GF_MUL( in67, 1 ); \
9371 292644 : GF_MUL22( in64, in65, 65, 64, 1, 1 ); \
9372 292644 : in66 = GF_ADD( GF_MUL( in64, 1 ), in66 ); \
9373 292644 : in67 = GF_ADD( GF_MUL( in65, 1 ), in67 ); \
9374 292644 : GF_MUL22( in66, in67, 1, 66, 1, 67 ); \
9375 292644 : in64 = GF_MUL( in64, 1 ); \
9376 292644 : in64 = GF_ADD( GF_MUL( scratch_2, 179 ), in64 ); \
9377 292644 : in65 = GF_MUL( in65, 1 ); \
9378 292644 : in65 = GF_ADD( GF_MUL( scratch_3, 179 ), in65 ); \
9379 292644 : in68 = GF_ADD( GF_MUL( in64, 1 ), in68 ); \
9380 292644 : in69 = GF_ADD( GF_MUL( in65, 1 ), in69 ); \
9381 292644 : FD_REEDSOL_GENERATE_FFT( 4, 68, in68, in69, in70, in71 ); \
9382 292644 : in64 = GF_MUL( in64, 1 ); \
9383 292644 : in64 = GF_ADD( GF_MUL( scratch_4, 183 ), in64 ); \
9384 292644 : in65 = GF_MUL( in65, 1 ); \
9385 292644 : in65 = GF_ADD( GF_MUL( scratch_5, 183 ), in65 ); \
9386 292644 : in72 = GF_ADD( GF_MUL( in64, 1 ), in72 ); \
9387 292644 : in73 = GF_ADD( GF_MUL( in65, 1 ), in73 ); \
9388 292644 : FD_REEDSOL_GENERATE_FFT( 8, 72, in72, in73, in74, in75, in76, in77, in78, in79 ); \
9389 292644 : in64 = GF_MUL( in64, 1 ); \
9390 292644 : in64 = GF_ADD( GF_MUL( scratch_8, 33 ), in64 ); \
9391 292644 : in65 = GF_MUL( in65, 1 ); \
9392 292644 : in65 = GF_ADD( GF_MUL( scratch_9, 33 ), in65 ); \
9393 292644 : in80 = GF_ADD( GF_MUL( in64, 1 ), in80 ); \
9394 292644 : in81 = GF_ADD( GF_MUL( in65, 1 ), in81 ); \
9395 292644 : FD_REEDSOL_GENERATE_FFT( 16, 80, in80, in81, in82, in83, in84, in85, in86, in87, in88, in89, in90, in91, in92, in93, in94, in95 ); \
9396 292644 : in64 = GF_MUL( in64, 1 ); \
9397 292644 : in64 = GF_ADD( GF_MUL( scratch_16, 189 ), in64 ); \
9398 292644 : in65 = GF_MUL( in65, 1 ); \
9399 292644 : in65 = GF_ADD( GF_MUL( scratch_17, 189 ), in65 ); \
9400 292644 : in96 = GF_ADD( GF_MUL( in64, 1 ), in96 ); \
9401 292644 : in97 = GF_ADD( GF_MUL( in65, 1 ), in97 ); \
9402 292644 : FD_REEDSOL_GENERATE_FFT( 32, 96, in96, in97, in98, in99, in100, in101, in102, in103, in104, in105, in106, in107, in108, in109, in110, in111, in112, in113, in114, in115, in116, in117, in118, in119, in120, in121, in122, in123, in124, in125, in126, in127 ); \
9403 292644 : in64 = GF_MUL( in64, 1 ); \
9404 292644 : in64 = GF_ADD( GF_MUL( scratch_32, 218 ), in64 ); \
9405 292644 : in65 = GF_MUL( in65, 1 ); \
9406 292644 : in65 = GF_ADD( GF_MUL( scratch_33, 218 ), in65 ); \
9407 292644 : GF_MUL22( in00, in64, 1, 0, 1, 1 ); \
9408 292644 : GF_MUL22( in01, in65, 1, 0, 1, 1 ); \
9409 292644 : in02 = GF_MUL( in02, 1 ); \
9410 292644 : in02 = GF_ADD( GF_MUL( scratch_66, 0 ), in02 ); \
9411 292644 : in03 = GF_MUL( in03, 1 ); \
9412 292644 : in03 = GF_ADD( GF_MUL( scratch_67, 0 ), in03 ); \
9413 292644 : in04 = GF_MUL( in04, 1 ); \
9414 292644 : in04 = GF_ADD( GF_MUL( scratch_68, 0 ), in04 ); \
9415 292644 : in05 = GF_MUL( in05, 1 ); \
9416 292644 : in05 = GF_ADD( GF_MUL( scratch_69, 0 ), in05 ); \
9417 292644 : in06 = GF_MUL( in06, 1 ); \
9418 292644 : in06 = GF_ADD( GF_MUL( scratch_70, 0 ), in06 ); \
9419 292644 : in07 = GF_MUL( in07, 1 ); \
9420 292644 : in07 = GF_ADD( GF_MUL( scratch_71, 0 ), in07 ); \
9421 292644 : in08 = GF_MUL( in08, 1 ); \
9422 292644 : in08 = GF_ADD( GF_MUL( scratch_72, 0 ), in08 ); \
9423 292644 : in09 = GF_MUL( in09, 1 ); \
9424 292644 : in09 = GF_ADD( GF_MUL( scratch_73, 0 ), in09 ); \
9425 292644 : in10 = GF_MUL( in10, 1 ); \
9426 292644 : in10 = GF_ADD( GF_MUL( scratch_74, 0 ), in10 ); \
9427 292644 : in11 = GF_MUL( in11, 1 ); \
9428 292644 : in11 = GF_ADD( GF_MUL( scratch_75, 0 ), in11 ); \
9429 292644 : in12 = GF_MUL( in12, 1 ); \
9430 292644 : in12 = GF_ADD( GF_MUL( scratch_76, 0 ), in12 ); \
9431 292644 : in13 = GF_MUL( in13, 1 ); \
9432 292644 : in13 = GF_ADD( GF_MUL( scratch_77, 0 ), in13 ); \
9433 292644 : in14 = GF_MUL( in14, 1 ); \
9434 292644 : in14 = GF_ADD( GF_MUL( scratch_78, 0 ), in14 ); \
9435 292644 : in15 = GF_MUL( in15, 1 ); \
9436 292644 : in15 = GF_ADD( GF_MUL( scratch_79, 0 ), in15 ); \
9437 292644 : in16 = GF_MUL( in16, 1 ); \
9438 292644 : in16 = GF_ADD( GF_MUL( scratch_80, 0 ), in16 ); \
9439 292644 : in17 = GF_MUL( in17, 1 ); \
9440 292644 : in17 = GF_ADD( GF_MUL( scratch_81, 0 ), in17 ); \
9441 292644 : in18 = GF_MUL( in18, 1 ); \
9442 292644 : in18 = GF_ADD( GF_MUL( scratch_82, 0 ), in18 ); \
9443 292644 : in19 = GF_MUL( in19, 1 ); \
9444 292644 : in19 = GF_ADD( GF_MUL( scratch_83, 0 ), in19 ); \
9445 292644 : in20 = GF_MUL( in20, 1 ); \
9446 292644 : in20 = GF_ADD( GF_MUL( scratch_84, 0 ), in20 ); \
9447 292644 : in21 = GF_MUL( in21, 1 ); \
9448 292644 : in21 = GF_ADD( GF_MUL( scratch_85, 0 ), in21 ); \
9449 292644 : in22 = GF_MUL( in22, 1 ); \
9450 292644 : in22 = GF_ADD( GF_MUL( scratch_86, 0 ), in22 ); \
9451 292644 : in23 = GF_MUL( in23, 1 ); \
9452 292644 : in23 = GF_ADD( GF_MUL( scratch_87, 0 ), in23 ); \
9453 292644 : in24 = GF_MUL( in24, 1 ); \
9454 292644 : in24 = GF_ADD( GF_MUL( scratch_88, 0 ), in24 ); \
9455 292644 : in25 = GF_MUL( in25, 1 ); \
9456 292644 : in25 = GF_ADD( GF_MUL( scratch_89, 0 ), in25 ); \
9457 292644 : in26 = GF_MUL( in26, 1 ); \
9458 292644 : in26 = GF_ADD( GF_MUL( scratch_90, 0 ), in26 ); \
9459 292644 : in27 = GF_MUL( in27, 1 ); \
9460 292644 : in27 = GF_ADD( GF_MUL( scratch_91, 0 ), in27 ); \
9461 292644 : in28 = GF_MUL( in28, 1 ); \
9462 292644 : in28 = GF_ADD( GF_MUL( scratch_92, 0 ), in28 ); \
9463 292644 : in29 = GF_MUL( in29, 1 ); \
9464 292644 : in29 = GF_ADD( GF_MUL( scratch_93, 0 ), in29 ); \
9465 292644 : in30 = GF_MUL( in30, 1 ); \
9466 292644 : in30 = GF_ADD( GF_MUL( scratch_94, 0 ), in30 ); \
9467 292644 : in31 = GF_MUL( in31, 1 ); \
9468 292644 : in31 = GF_ADD( GF_MUL( scratch_95, 0 ), in31 ); \
9469 292644 : in32 = GF_MUL( in32, 1 ); \
9470 292644 : in32 = GF_ADD( GF_MUL( scratch_96, 0 ), in32 ); \
9471 292644 : in33 = GF_MUL( in33, 1 ); \
9472 292644 : in33 = GF_ADD( GF_MUL( scratch_97, 0 ), in33 ); \
9473 292644 : in34 = GF_MUL( in34, 1 ); \
9474 292644 : in34 = GF_ADD( GF_MUL( scratch_98, 0 ), in34 ); \
9475 292644 : in35 = GF_MUL( in35, 1 ); \
9476 292644 : in35 = GF_ADD( GF_MUL( scratch_99, 0 ), in35 ); \
9477 292644 : in36 = GF_MUL( in36, 1 ); \
9478 292644 : in36 = GF_ADD( GF_MUL( scratch_100, 0 ), in36 ); \
9479 292644 : in37 = GF_MUL( in37, 1 ); \
9480 292644 : in37 = GF_ADD( GF_MUL( scratch_101, 0 ), in37 ); \
9481 292644 : in38 = GF_MUL( in38, 1 ); \
9482 292644 : in38 = GF_ADD( GF_MUL( scratch_102, 0 ), in38 ); \
9483 292644 : in39 = GF_MUL( in39, 1 ); \
9484 292644 : in39 = GF_ADD( GF_MUL( scratch_103, 0 ), in39 ); \
9485 292644 : in40 = GF_MUL( in40, 1 ); \
9486 292644 : in40 = GF_ADD( GF_MUL( scratch_104, 0 ), in40 ); \
9487 292644 : in41 = GF_MUL( in41, 1 ); \
9488 292644 : in41 = GF_ADD( GF_MUL( scratch_105, 0 ), in41 ); \
9489 292644 : in42 = GF_MUL( in42, 1 ); \
9490 292644 : in42 = GF_ADD( GF_MUL( scratch_106, 0 ), in42 ); \
9491 292644 : in43 = GF_MUL( in43, 1 ); \
9492 292644 : in43 = GF_ADD( GF_MUL( scratch_107, 0 ), in43 ); \
9493 292644 : in44 = GF_MUL( in44, 1 ); \
9494 292644 : in44 = GF_ADD( GF_MUL( scratch_108, 0 ), in44 ); \
9495 292644 : in45 = GF_MUL( in45, 1 ); \
9496 292644 : in45 = GF_ADD( GF_MUL( scratch_109, 0 ), in45 ); \
9497 292644 : in46 = GF_MUL( in46, 1 ); \
9498 292644 : in46 = GF_ADD( GF_MUL( scratch_110, 0 ), in46 ); \
9499 292644 : in47 = GF_MUL( in47, 1 ); \
9500 292644 : in47 = GF_ADD( GF_MUL( scratch_111, 0 ), in47 ); \
9501 292644 : in48 = GF_MUL( in48, 1 ); \
9502 292644 : in48 = GF_ADD( GF_MUL( scratch_112, 0 ), in48 ); \
9503 292644 : in49 = GF_MUL( in49, 1 ); \
9504 292644 : in49 = GF_ADD( GF_MUL( scratch_113, 0 ), in49 ); \
9505 292644 : in50 = GF_MUL( in50, 1 ); \
9506 292644 : in50 = GF_ADD( GF_MUL( scratch_114, 0 ), in50 ); \
9507 292644 : in51 = GF_MUL( in51, 1 ); \
9508 292644 : in51 = GF_ADD( GF_MUL( scratch_115, 0 ), in51 ); \
9509 292644 : in52 = GF_MUL( in52, 1 ); \
9510 292644 : in52 = GF_ADD( GF_MUL( scratch_116, 0 ), in52 ); \
9511 292644 : in53 = GF_MUL( in53, 1 ); \
9512 292644 : in53 = GF_ADD( GF_MUL( scratch_117, 0 ), in53 ); \
9513 292644 : in54 = GF_MUL( in54, 1 ); \
9514 292644 : in54 = GF_ADD( GF_MUL( scratch_118, 0 ), in54 ); \
9515 292644 : in55 = GF_MUL( in55, 1 ); \
9516 292644 : in55 = GF_ADD( GF_MUL( scratch_119, 0 ), in55 ); \
9517 292644 : in56 = GF_MUL( in56, 1 ); \
9518 292644 : in56 = GF_ADD( GF_MUL( scratch_120, 0 ), in56 ); \
9519 292644 : in57 = GF_MUL( in57, 1 ); \
9520 292644 : in57 = GF_ADD( GF_MUL( scratch_121, 0 ), in57 ); \
9521 292644 : in58 = GF_MUL( in58, 1 ); \
9522 292644 : in58 = GF_ADD( GF_MUL( scratch_122, 0 ), in58 ); \
9523 292644 : in59 = GF_MUL( in59, 1 ); \
9524 292644 : in59 = GF_ADD( GF_MUL( scratch_123, 0 ), in59 ); \
9525 292644 : in60 = GF_MUL( in60, 1 ); \
9526 292644 : in60 = GF_ADD( GF_MUL( scratch_124, 0 ), in60 ); \
9527 292644 : in61 = GF_MUL( in61, 1 ); \
9528 292644 : in61 = GF_ADD( GF_MUL( scratch_125, 0 ), in61 ); \
9529 292644 : in62 = GF_MUL( in62, 1 ); \
9530 292644 : in62 = GF_ADD( GF_MUL( scratch_126, 0 ), in62 ); \
9531 292644 : in63 = GF_MUL( in63, 1 ); \
9532 292644 : in63 = GF_ADD( GF_MUL( scratch_127, 0 ), in63 ); \
9533 292644 : } while( 0 )
9534 :
9535 : void fd_reedsol_ppt_128_67( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
9536 : #define FD_REEDSOL_PPT_IMPL_128_67( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63, in64, in65 , \
9537 : in66, in67, in68, in69, in70, in71, in72, in73, in74, in75, in76, in77, in78, in79, in80, in81, in82, in83, in84, in85, in86, in87, in88, in89, in90, in91, in92, in93, in94, in95, in96, in97, in98, in99, in100, in101, in102, in103, in104, in105, in106, in107, in108, in109, in110, in111, in112, in113, in114, in115, in116, in117, in118, in119, in120, in121, in122, in123, in124, in125, in126, in127) \
9538 390342 : do { \
9539 390342 : gf_t scratch_10, scratch_100, scratch_101, scratch_102, scratch_103, scratch_104, scratch_105, scratch_106, scratch_107, scratch_108, scratch_109, scratch_110, scratch_111, scratch_112, scratch_113, scratch_114; \
9540 390342 : gf_t scratch_115, scratch_116, scratch_117, scratch_118, scratch_119, scratch_120, scratch_121, scratch_122, scratch_123, scratch_124, scratch_125, scratch_126, scratch_127, scratch_16, scratch_17, scratch_18; \
9541 390342 : gf_t scratch_3, scratch_32, scratch_33, scratch_34, scratch_4, scratch_5, scratch_6, scratch_67, scratch_68, scratch_69, scratch_70, scratch_71, scratch_72, scratch_73, scratch_74, scratch_75; \
9542 390342 : gf_t scratch_76, scratch_77, scratch_78, scratch_79, scratch_8, scratch_80, scratch_81, scratch_82, scratch_83, scratch_84, scratch_85, scratch_86, scratch_87, scratch_88, scratch_89, scratch_9; \
9543 390342 : gf_t scratch_90, scratch_91, scratch_92, scratch_93, scratch_94, scratch_95, scratch_96, scratch_97, scratch_98, scratch_99; \
9544 390342 : scratch_67 = in67; \
9545 390342 : in67 = GF_MUL( in67, 1 ); \
9546 390342 : scratch_68 = in68; \
9547 390342 : in68 = GF_MUL( in68, 1 ); \
9548 390342 : scratch_69 = in69; \
9549 390342 : in69 = GF_MUL( in69, 1 ); \
9550 390342 : scratch_70 = in70; \
9551 390342 : in70 = GF_MUL( in70, 1 ); \
9552 390342 : scratch_71 = in71; \
9553 390342 : in71 = GF_MUL( in71, 1 ); \
9554 390342 : scratch_72 = in72; \
9555 390342 : in72 = GF_MUL( in72, 1 ); \
9556 390342 : scratch_73 = in73; \
9557 390342 : in73 = GF_MUL( in73, 1 ); \
9558 390342 : scratch_74 = in74; \
9559 390342 : in74 = GF_MUL( in74, 1 ); \
9560 390342 : scratch_75 = in75; \
9561 390342 : in75 = GF_MUL( in75, 1 ); \
9562 390342 : scratch_76 = in76; \
9563 390342 : in76 = GF_MUL( in76, 1 ); \
9564 390342 : scratch_77 = in77; \
9565 390342 : in77 = GF_MUL( in77, 1 ); \
9566 390342 : scratch_78 = in78; \
9567 390342 : in78 = GF_MUL( in78, 1 ); \
9568 390342 : scratch_79 = in79; \
9569 390342 : in79 = GF_MUL( in79, 1 ); \
9570 390342 : scratch_80 = in80; \
9571 390342 : in80 = GF_MUL( in80, 1 ); \
9572 390342 : scratch_81 = in81; \
9573 390342 : in81 = GF_MUL( in81, 1 ); \
9574 390342 : scratch_82 = in82; \
9575 390342 : in82 = GF_MUL( in82, 1 ); \
9576 390342 : scratch_83 = in83; \
9577 390342 : in83 = GF_MUL( in83, 1 ); \
9578 390342 : scratch_84 = in84; \
9579 390342 : in84 = GF_MUL( in84, 1 ); \
9580 390342 : scratch_85 = in85; \
9581 390342 : in85 = GF_MUL( in85, 1 ); \
9582 390342 : scratch_86 = in86; \
9583 390342 : in86 = GF_MUL( in86, 1 ); \
9584 390342 : scratch_87 = in87; \
9585 390342 : in87 = GF_MUL( in87, 1 ); \
9586 390342 : scratch_88 = in88; \
9587 390342 : in88 = GF_MUL( in88, 1 ); \
9588 390342 : scratch_89 = in89; \
9589 390342 : in89 = GF_MUL( in89, 1 ); \
9590 390342 : scratch_90 = in90; \
9591 390342 : in90 = GF_MUL( in90, 1 ); \
9592 390342 : scratch_91 = in91; \
9593 390342 : in91 = GF_MUL( in91, 1 ); \
9594 390342 : scratch_92 = in92; \
9595 390342 : in92 = GF_MUL( in92, 1 ); \
9596 390342 : scratch_93 = in93; \
9597 390342 : in93 = GF_MUL( in93, 1 ); \
9598 390342 : scratch_94 = in94; \
9599 390342 : in94 = GF_MUL( in94, 1 ); \
9600 390342 : scratch_95 = in95; \
9601 390342 : in95 = GF_MUL( in95, 1 ); \
9602 390342 : scratch_96 = in96; \
9603 390342 : in96 = GF_MUL( in96, 1 ); \
9604 390342 : scratch_97 = in97; \
9605 390342 : in97 = GF_MUL( in97, 1 ); \
9606 390342 : scratch_98 = in98; \
9607 390342 : in98 = GF_MUL( in98, 1 ); \
9608 390342 : scratch_99 = in99; \
9609 390342 : in99 = GF_MUL( in99, 1 ); \
9610 390342 : scratch_100 = in100; \
9611 390342 : in100 = GF_MUL( in100, 1 ); \
9612 390342 : scratch_101 = in101; \
9613 390342 : in101 = GF_MUL( in101, 1 ); \
9614 390342 : scratch_102 = in102; \
9615 390342 : in102 = GF_MUL( in102, 1 ); \
9616 390342 : scratch_103 = in103; \
9617 390342 : in103 = GF_MUL( in103, 1 ); \
9618 390342 : scratch_104 = in104; \
9619 390342 : in104 = GF_MUL( in104, 1 ); \
9620 390342 : scratch_105 = in105; \
9621 390342 : in105 = GF_MUL( in105, 1 ); \
9622 390342 : scratch_106 = in106; \
9623 390342 : in106 = GF_MUL( in106, 1 ); \
9624 390342 : scratch_107 = in107; \
9625 390342 : in107 = GF_MUL( in107, 1 ); \
9626 390342 : scratch_108 = in108; \
9627 390342 : in108 = GF_MUL( in108, 1 ); \
9628 390342 : scratch_109 = in109; \
9629 390342 : in109 = GF_MUL( in109, 1 ); \
9630 390342 : scratch_110 = in110; \
9631 390342 : in110 = GF_MUL( in110, 1 ); \
9632 390342 : scratch_111 = in111; \
9633 390342 : in111 = GF_MUL( in111, 1 ); \
9634 390342 : scratch_112 = in112; \
9635 390342 : in112 = GF_MUL( in112, 1 ); \
9636 390342 : scratch_113 = in113; \
9637 390342 : in113 = GF_MUL( in113, 1 ); \
9638 390342 : scratch_114 = in114; \
9639 390342 : in114 = GF_MUL( in114, 1 ); \
9640 390342 : scratch_115 = in115; \
9641 390342 : in115 = GF_MUL( in115, 1 ); \
9642 390342 : scratch_116 = in116; \
9643 390342 : in116 = GF_MUL( in116, 1 ); \
9644 390342 : scratch_117 = in117; \
9645 390342 : in117 = GF_MUL( in117, 1 ); \
9646 390342 : scratch_118 = in118; \
9647 390342 : in118 = GF_MUL( in118, 1 ); \
9648 390342 : scratch_119 = in119; \
9649 390342 : in119 = GF_MUL( in119, 1 ); \
9650 390342 : scratch_120 = in120; \
9651 390342 : in120 = GF_MUL( in120, 1 ); \
9652 390342 : scratch_121 = in121; \
9653 390342 : in121 = GF_MUL( in121, 1 ); \
9654 390342 : scratch_122 = in122; \
9655 390342 : in122 = GF_MUL( in122, 1 ); \
9656 390342 : scratch_123 = in123; \
9657 390342 : in123 = GF_MUL( in123, 1 ); \
9658 390342 : scratch_124 = in124; \
9659 390342 : in124 = GF_MUL( in124, 1 ); \
9660 390342 : scratch_125 = in125; \
9661 390342 : in125 = GF_MUL( in125, 1 ); \
9662 390342 : scratch_126 = in126; \
9663 390342 : in126 = GF_MUL( in126, 1 ); \
9664 390342 : scratch_127 = in127; \
9665 390342 : in127 = GF_MUL( in127, 1 ); \
9666 390342 : FD_REEDSOL_GENERATE_IFFT( 64, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
9667 390342 : in67 = GF_ADD( GF_MUL( in03, 1 ), in67 ); \
9668 390342 : in68 = GF_ADD( GF_MUL( in04, 1 ), in68 ); \
9669 390342 : in69 = GF_ADD( GF_MUL( in05, 1 ), in69 ); \
9670 390342 : in70 = GF_ADD( GF_MUL( in06, 1 ), in70 ); \
9671 390342 : in71 = GF_ADD( GF_MUL( in07, 1 ), in71 ); \
9672 390342 : in72 = GF_ADD( GF_MUL( in08, 1 ), in72 ); \
9673 390342 : in73 = GF_ADD( GF_MUL( in09, 1 ), in73 ); \
9674 390342 : in74 = GF_ADD( GF_MUL( in10, 1 ), in74 ); \
9675 390342 : in75 = GF_ADD( GF_MUL( in11, 1 ), in75 ); \
9676 390342 : in76 = GF_ADD( GF_MUL( in12, 1 ), in76 ); \
9677 390342 : in77 = GF_ADD( GF_MUL( in13, 1 ), in77 ); \
9678 390342 : in78 = GF_ADD( GF_MUL( in14, 1 ), in78 ); \
9679 390342 : in79 = GF_ADD( GF_MUL( in15, 1 ), in79 ); \
9680 390342 : in80 = GF_ADD( GF_MUL( in16, 1 ), in80 ); \
9681 390342 : in81 = GF_ADD( GF_MUL( in17, 1 ), in81 ); \
9682 390342 : in82 = GF_ADD( GF_MUL( in18, 1 ), in82 ); \
9683 390342 : in83 = GF_ADD( GF_MUL( in19, 1 ), in83 ); \
9684 390342 : in84 = GF_ADD( GF_MUL( in20, 1 ), in84 ); \
9685 390342 : in85 = GF_ADD( GF_MUL( in21, 1 ), in85 ); \
9686 390342 : in86 = GF_ADD( GF_MUL( in22, 1 ), in86 ); \
9687 390342 : in87 = GF_ADD( GF_MUL( in23, 1 ), in87 ); \
9688 390342 : in88 = GF_ADD( GF_MUL( in24, 1 ), in88 ); \
9689 390342 : in89 = GF_ADD( GF_MUL( in25, 1 ), in89 ); \
9690 390342 : in90 = GF_ADD( GF_MUL( in26, 1 ), in90 ); \
9691 390342 : in91 = GF_ADD( GF_MUL( in27, 1 ), in91 ); \
9692 390342 : in92 = GF_ADD( GF_MUL( in28, 1 ), in92 ); \
9693 390342 : in93 = GF_ADD( GF_MUL( in29, 1 ), in93 ); \
9694 390342 : in94 = GF_ADD( GF_MUL( in30, 1 ), in94 ); \
9695 390342 : in95 = GF_ADD( GF_MUL( in31, 1 ), in95 ); \
9696 390342 : in96 = GF_ADD( GF_MUL( in32, 1 ), in96 ); \
9697 390342 : in97 = GF_ADD( GF_MUL( in33, 1 ), in97 ); \
9698 390342 : in98 = GF_ADD( GF_MUL( in34, 1 ), in98 ); \
9699 390342 : in99 = GF_ADD( GF_MUL( in35, 1 ), in99 ); \
9700 390342 : in100 = GF_ADD( GF_MUL( in36, 1 ), in100 ); \
9701 390342 : in101 = GF_ADD( GF_MUL( in37, 1 ), in101 ); \
9702 390342 : in102 = GF_ADD( GF_MUL( in38, 1 ), in102 ); \
9703 390342 : in103 = GF_ADD( GF_MUL( in39, 1 ), in103 ); \
9704 390342 : in104 = GF_ADD( GF_MUL( in40, 1 ), in104 ); \
9705 390342 : in105 = GF_ADD( GF_MUL( in41, 1 ), in105 ); \
9706 390342 : in106 = GF_ADD( GF_MUL( in42, 1 ), in106 ); \
9707 390342 : in107 = GF_ADD( GF_MUL( in43, 1 ), in107 ); \
9708 390342 : in108 = GF_ADD( GF_MUL( in44, 1 ), in108 ); \
9709 390342 : in109 = GF_ADD( GF_MUL( in45, 1 ), in109 ); \
9710 390342 : in110 = GF_ADD( GF_MUL( in46, 1 ), in110 ); \
9711 390342 : in111 = GF_ADD( GF_MUL( in47, 1 ), in111 ); \
9712 390342 : in112 = GF_ADD( GF_MUL( in48, 1 ), in112 ); \
9713 390342 : in113 = GF_ADD( GF_MUL( in49, 1 ), in113 ); \
9714 390342 : in114 = GF_ADD( GF_MUL( in50, 1 ), in114 ); \
9715 390342 : in115 = GF_ADD( GF_MUL( in51, 1 ), in115 ); \
9716 390342 : in116 = GF_ADD( GF_MUL( in52, 1 ), in116 ); \
9717 390342 : in117 = GF_ADD( GF_MUL( in53, 1 ), in117 ); \
9718 390342 : in118 = GF_ADD( GF_MUL( in54, 1 ), in118 ); \
9719 390342 : in119 = GF_ADD( GF_MUL( in55, 1 ), in119 ); \
9720 390342 : in120 = GF_ADD( GF_MUL( in56, 1 ), in120 ); \
9721 390342 : in121 = GF_ADD( GF_MUL( in57, 1 ), in121 ); \
9722 390342 : in122 = GF_ADD( GF_MUL( in58, 1 ), in122 ); \
9723 390342 : in123 = GF_ADD( GF_MUL( in59, 1 ), in123 ); \
9724 390342 : in124 = GF_ADD( GF_MUL( in60, 1 ), in124 ); \
9725 390342 : in125 = GF_ADD( GF_MUL( in61, 1 ), in125 ); \
9726 390342 : in126 = GF_ADD( GF_MUL( in62, 1 ), in126 ); \
9727 390342 : in127 = GF_ADD( GF_MUL( in63, 1 ), in127 ); \
9728 390342 : scratch_32 = in96; \
9729 390342 : in96 = GF_MUL( in96, 1 ); \
9730 390342 : scratch_33 = in97; \
9731 390342 : in97 = GF_MUL( in97, 1 ); \
9732 390342 : scratch_34 = in98; \
9733 390342 : in98 = GF_MUL( in98, 1 ); \
9734 390342 : GF_MUL22( in67, in99, 1, 218, 1, 219 ); \
9735 390342 : GF_MUL22( in68, in100, 1, 218, 1, 219 ); \
9736 390342 : GF_MUL22( in69, in101, 1, 218, 1, 219 ); \
9737 390342 : GF_MUL22( in70, in102, 1, 218, 1, 219 ); \
9738 390342 : GF_MUL22( in71, in103, 1, 218, 1, 219 ); \
9739 390342 : GF_MUL22( in72, in104, 1, 218, 1, 219 ); \
9740 390342 : GF_MUL22( in73, in105, 1, 218, 1, 219 ); \
9741 390342 : GF_MUL22( in74, in106, 1, 218, 1, 219 ); \
9742 390342 : GF_MUL22( in75, in107, 1, 218, 1, 219 ); \
9743 390342 : GF_MUL22( in76, in108, 1, 218, 1, 219 ); \
9744 390342 : GF_MUL22( in77, in109, 1, 218, 1, 219 ); \
9745 390342 : GF_MUL22( in78, in110, 1, 218, 1, 219 ); \
9746 390342 : GF_MUL22( in79, in111, 1, 218, 1, 219 ); \
9747 390342 : GF_MUL22( in80, in112, 1, 218, 1, 219 ); \
9748 390342 : GF_MUL22( in81, in113, 1, 218, 1, 219 ); \
9749 390342 : GF_MUL22( in82, in114, 1, 218, 1, 219 ); \
9750 390342 : GF_MUL22( in83, in115, 1, 218, 1, 219 ); \
9751 390342 : GF_MUL22( in84, in116, 1, 218, 1, 219 ); \
9752 390342 : GF_MUL22( in85, in117, 1, 218, 1, 219 ); \
9753 390342 : GF_MUL22( in86, in118, 1, 218, 1, 219 ); \
9754 390342 : GF_MUL22( in87, in119, 1, 218, 1, 219 ); \
9755 390342 : GF_MUL22( in88, in120, 1, 218, 1, 219 ); \
9756 390342 : GF_MUL22( in89, in121, 1, 218, 1, 219 ); \
9757 390342 : GF_MUL22( in90, in122, 1, 218, 1, 219 ); \
9758 390342 : GF_MUL22( in91, in123, 1, 218, 1, 219 ); \
9759 390342 : GF_MUL22( in92, in124, 1, 218, 1, 219 ); \
9760 390342 : GF_MUL22( in93, in125, 1, 218, 1, 219 ); \
9761 390342 : GF_MUL22( in94, in126, 1, 218, 1, 219 ); \
9762 390342 : GF_MUL22( in95, in127, 1, 218, 1, 219 ); \
9763 390342 : scratch_16 = in80; \
9764 390342 : in80 = GF_MUL( in80, 1 ); \
9765 390342 : scratch_17 = in81; \
9766 390342 : in81 = GF_MUL( in81, 1 ); \
9767 390342 : scratch_18 = in82; \
9768 390342 : in82 = GF_MUL( in82, 1 ); \
9769 390342 : GF_MUL22( in67, in83, 1, 189, 1, 188 ); \
9770 390342 : GF_MUL22( in68, in84, 1, 189, 1, 188 ); \
9771 390342 : GF_MUL22( in69, in85, 1, 189, 1, 188 ); \
9772 390342 : GF_MUL22( in70, in86, 1, 189, 1, 188 ); \
9773 390342 : GF_MUL22( in71, in87, 1, 189, 1, 188 ); \
9774 390342 : GF_MUL22( in72, in88, 1, 189, 1, 188 ); \
9775 390342 : GF_MUL22( in73, in89, 1, 189, 1, 188 ); \
9776 390342 : GF_MUL22( in74, in90, 1, 189, 1, 188 ); \
9777 390342 : GF_MUL22( in75, in91, 1, 189, 1, 188 ); \
9778 390342 : GF_MUL22( in76, in92, 1, 189, 1, 188 ); \
9779 390342 : GF_MUL22( in77, in93, 1, 189, 1, 188 ); \
9780 390342 : GF_MUL22( in78, in94, 1, 189, 1, 188 ); \
9781 390342 : GF_MUL22( in79, in95, 1, 189, 1, 188 ); \
9782 390342 : scratch_8 = in72; \
9783 390342 : in72 = GF_MUL( in72, 1 ); \
9784 390342 : scratch_9 = in73; \
9785 390342 : in73 = GF_MUL( in73, 1 ); \
9786 390342 : scratch_10 = in74; \
9787 390342 : in74 = GF_MUL( in74, 1 ); \
9788 390342 : GF_MUL22( in67, in75, 1, 33, 1, 32 ); \
9789 390342 : GF_MUL22( in68, in76, 1, 33, 1, 32 ); \
9790 390342 : GF_MUL22( in69, in77, 1, 33, 1, 32 ); \
9791 390342 : GF_MUL22( in70, in78, 1, 33, 1, 32 ); \
9792 390342 : GF_MUL22( in71, in79, 1, 33, 1, 32 ); \
9793 390342 : scratch_4 = in68; \
9794 390342 : in68 = GF_MUL( in68, 1 ); \
9795 390342 : scratch_5 = in69; \
9796 390342 : in69 = GF_MUL( in69, 1 ); \
9797 390342 : scratch_6 = in70; \
9798 390342 : in70 = GF_MUL( in70, 1 ); \
9799 390342 : GF_MUL22( in67, in71, 1, 183, 1, 182 ); \
9800 390342 : scratch_3 = in67; \
9801 390342 : in67 = GF_MUL( in67, 1 ); \
9802 390342 : GF_MUL22( in64, in65, 65, 64, 1, 1 ); \
9803 390342 : in67 = GF_ADD( GF_MUL( in65, 1 ), in67 ); \
9804 390342 : GF_MUL22( in66, in67, 1, 66, 1, 1 ); \
9805 390342 : GF_MUL22( in64, in66, 178, 179, 1, 1 ); \
9806 390342 : in65 = GF_MUL( in65, 1 ); \
9807 390342 : in65 = GF_ADD( GF_MUL( scratch_3, 179 ), in65 ); \
9808 390342 : in68 = GF_ADD( GF_MUL( in64, 1 ), in68 ); \
9809 390342 : in69 = GF_ADD( GF_MUL( in65, 1 ), in69 ); \
9810 390342 : in70 = GF_ADD( GF_MUL( in66, 1 ), in70 ); \
9811 390342 : FD_REEDSOL_GENERATE_FFT( 4, 68, in68, in69, in70, in71 ); \
9812 390342 : in64 = GF_MUL( in64, 1 ); \
9813 390342 : in64 = GF_ADD( GF_MUL( scratch_4, 183 ), in64 ); \
9814 390342 : in65 = GF_MUL( in65, 1 ); \
9815 390342 : in65 = GF_ADD( GF_MUL( scratch_5, 183 ), in65 ); \
9816 390342 : in66 = GF_MUL( in66, 1 ); \
9817 390342 : in66 = GF_ADD( GF_MUL( scratch_6, 183 ), in66 ); \
9818 390342 : in72 = GF_ADD( GF_MUL( in64, 1 ), in72 ); \
9819 390342 : in73 = GF_ADD( GF_MUL( in65, 1 ), in73 ); \
9820 390342 : in74 = GF_ADD( GF_MUL( in66, 1 ), in74 ); \
9821 390342 : FD_REEDSOL_GENERATE_FFT( 8, 72, in72, in73, in74, in75, in76, in77, in78, in79 ); \
9822 390342 : in64 = GF_MUL( in64, 1 ); \
9823 390342 : in64 = GF_ADD( GF_MUL( scratch_8, 33 ), in64 ); \
9824 390342 : in65 = GF_MUL( in65, 1 ); \
9825 390342 : in65 = GF_ADD( GF_MUL( scratch_9, 33 ), in65 ); \
9826 390342 : in66 = GF_MUL( in66, 1 ); \
9827 390342 : in66 = GF_ADD( GF_MUL( scratch_10, 33 ), in66 ); \
9828 390342 : in80 = GF_ADD( GF_MUL( in64, 1 ), in80 ); \
9829 390342 : in81 = GF_ADD( GF_MUL( in65, 1 ), in81 ); \
9830 390342 : in82 = GF_ADD( GF_MUL( in66, 1 ), in82 ); \
9831 390342 : FD_REEDSOL_GENERATE_FFT( 16, 80, in80, in81, in82, in83, in84, in85, in86, in87, in88, in89, in90, in91, in92, in93, in94, in95 ); \
9832 390342 : in64 = GF_MUL( in64, 1 ); \
9833 390342 : in64 = GF_ADD( GF_MUL( scratch_16, 189 ), in64 ); \
9834 390342 : in65 = GF_MUL( in65, 1 ); \
9835 390342 : in65 = GF_ADD( GF_MUL( scratch_17, 189 ), in65 ); \
9836 390342 : in66 = GF_MUL( in66, 1 ); \
9837 390342 : in66 = GF_ADD( GF_MUL( scratch_18, 189 ), in66 ); \
9838 390342 : in96 = GF_ADD( GF_MUL( in64, 1 ), in96 ); \
9839 390342 : in97 = GF_ADD( GF_MUL( in65, 1 ), in97 ); \
9840 390342 : in98 = GF_ADD( GF_MUL( in66, 1 ), in98 ); \
9841 390342 : FD_REEDSOL_GENERATE_FFT( 32, 96, in96, in97, in98, in99, in100, in101, in102, in103, in104, in105, in106, in107, in108, in109, in110, in111, in112, in113, in114, in115, in116, in117, in118, in119, in120, in121, in122, in123, in124, in125, in126, in127 ); \
9842 390342 : in64 = GF_MUL( in64, 1 ); \
9843 390342 : in64 = GF_ADD( GF_MUL( scratch_32, 218 ), in64 ); \
9844 390342 : in65 = GF_MUL( in65, 1 ); \
9845 390342 : in65 = GF_ADD( GF_MUL( scratch_33, 218 ), in65 ); \
9846 390342 : in66 = GF_MUL( in66, 1 ); \
9847 390342 : in66 = GF_ADD( GF_MUL( scratch_34, 218 ), in66 ); \
9848 390342 : GF_MUL22( in00, in64, 1, 0, 1, 1 ); \
9849 390342 : GF_MUL22( in01, in65, 1, 0, 1, 1 ); \
9850 390342 : GF_MUL22( in02, in66, 1, 0, 1, 1 ); \
9851 390342 : in03 = GF_MUL( in03, 1 ); \
9852 390342 : in03 = GF_ADD( GF_MUL( scratch_67, 0 ), in03 ); \
9853 390342 : in04 = GF_MUL( in04, 1 ); \
9854 390342 : in04 = GF_ADD( GF_MUL( scratch_68, 0 ), in04 ); \
9855 390342 : in05 = GF_MUL( in05, 1 ); \
9856 390342 : in05 = GF_ADD( GF_MUL( scratch_69, 0 ), in05 ); \
9857 390342 : in06 = GF_MUL( in06, 1 ); \
9858 390342 : in06 = GF_ADD( GF_MUL( scratch_70, 0 ), in06 ); \
9859 390342 : in07 = GF_MUL( in07, 1 ); \
9860 390342 : in07 = GF_ADD( GF_MUL( scratch_71, 0 ), in07 ); \
9861 390342 : in08 = GF_MUL( in08, 1 ); \
9862 390342 : in08 = GF_ADD( GF_MUL( scratch_72, 0 ), in08 ); \
9863 390342 : in09 = GF_MUL( in09, 1 ); \
9864 390342 : in09 = GF_ADD( GF_MUL( scratch_73, 0 ), in09 ); \
9865 390342 : in10 = GF_MUL( in10, 1 ); \
9866 390342 : in10 = GF_ADD( GF_MUL( scratch_74, 0 ), in10 ); \
9867 390342 : in11 = GF_MUL( in11, 1 ); \
9868 390342 : in11 = GF_ADD( GF_MUL( scratch_75, 0 ), in11 ); \
9869 390342 : in12 = GF_MUL( in12, 1 ); \
9870 390342 : in12 = GF_ADD( GF_MUL( scratch_76, 0 ), in12 ); \
9871 390342 : in13 = GF_MUL( in13, 1 ); \
9872 390342 : in13 = GF_ADD( GF_MUL( scratch_77, 0 ), in13 ); \
9873 390342 : in14 = GF_MUL( in14, 1 ); \
9874 390342 : in14 = GF_ADD( GF_MUL( scratch_78, 0 ), in14 ); \
9875 390342 : in15 = GF_MUL( in15, 1 ); \
9876 390342 : in15 = GF_ADD( GF_MUL( scratch_79, 0 ), in15 ); \
9877 390342 : in16 = GF_MUL( in16, 1 ); \
9878 390342 : in16 = GF_ADD( GF_MUL( scratch_80, 0 ), in16 ); \
9879 390342 : in17 = GF_MUL( in17, 1 ); \
9880 390342 : in17 = GF_ADD( GF_MUL( scratch_81, 0 ), in17 ); \
9881 390342 : in18 = GF_MUL( in18, 1 ); \
9882 390342 : in18 = GF_ADD( GF_MUL( scratch_82, 0 ), in18 ); \
9883 390342 : in19 = GF_MUL( in19, 1 ); \
9884 390342 : in19 = GF_ADD( GF_MUL( scratch_83, 0 ), in19 ); \
9885 390342 : in20 = GF_MUL( in20, 1 ); \
9886 390342 : in20 = GF_ADD( GF_MUL( scratch_84, 0 ), in20 ); \
9887 390342 : in21 = GF_MUL( in21, 1 ); \
9888 390342 : in21 = GF_ADD( GF_MUL( scratch_85, 0 ), in21 ); \
9889 390342 : in22 = GF_MUL( in22, 1 ); \
9890 390342 : in22 = GF_ADD( GF_MUL( scratch_86, 0 ), in22 ); \
9891 390342 : in23 = GF_MUL( in23, 1 ); \
9892 390342 : in23 = GF_ADD( GF_MUL( scratch_87, 0 ), in23 ); \
9893 390342 : in24 = GF_MUL( in24, 1 ); \
9894 390342 : in24 = GF_ADD( GF_MUL( scratch_88, 0 ), in24 ); \
9895 390342 : in25 = GF_MUL( in25, 1 ); \
9896 390342 : in25 = GF_ADD( GF_MUL( scratch_89, 0 ), in25 ); \
9897 390342 : in26 = GF_MUL( in26, 1 ); \
9898 390342 : in26 = GF_ADD( GF_MUL( scratch_90, 0 ), in26 ); \
9899 390342 : in27 = GF_MUL( in27, 1 ); \
9900 390342 : in27 = GF_ADD( GF_MUL( scratch_91, 0 ), in27 ); \
9901 390342 : in28 = GF_MUL( in28, 1 ); \
9902 390342 : in28 = GF_ADD( GF_MUL( scratch_92, 0 ), in28 ); \
9903 390342 : in29 = GF_MUL( in29, 1 ); \
9904 390342 : in29 = GF_ADD( GF_MUL( scratch_93, 0 ), in29 ); \
9905 390342 : in30 = GF_MUL( in30, 1 ); \
9906 390342 : in30 = GF_ADD( GF_MUL( scratch_94, 0 ), in30 ); \
9907 390342 : in31 = GF_MUL( in31, 1 ); \
9908 390342 : in31 = GF_ADD( GF_MUL( scratch_95, 0 ), in31 ); \
9909 390342 : in32 = GF_MUL( in32, 1 ); \
9910 390342 : in32 = GF_ADD( GF_MUL( scratch_96, 0 ), in32 ); \
9911 390342 : in33 = GF_MUL( in33, 1 ); \
9912 390342 : in33 = GF_ADD( GF_MUL( scratch_97, 0 ), in33 ); \
9913 390342 : in34 = GF_MUL( in34, 1 ); \
9914 390342 : in34 = GF_ADD( GF_MUL( scratch_98, 0 ), in34 ); \
9915 390342 : in35 = GF_MUL( in35, 1 ); \
9916 390342 : in35 = GF_ADD( GF_MUL( scratch_99, 0 ), in35 ); \
9917 390342 : in36 = GF_MUL( in36, 1 ); \
9918 390342 : in36 = GF_ADD( GF_MUL( scratch_100, 0 ), in36 ); \
9919 390342 : in37 = GF_MUL( in37, 1 ); \
9920 390342 : in37 = GF_ADD( GF_MUL( scratch_101, 0 ), in37 ); \
9921 390342 : in38 = GF_MUL( in38, 1 ); \
9922 390342 : in38 = GF_ADD( GF_MUL( scratch_102, 0 ), in38 ); \
9923 390342 : in39 = GF_MUL( in39, 1 ); \
9924 390342 : in39 = GF_ADD( GF_MUL( scratch_103, 0 ), in39 ); \
9925 390342 : in40 = GF_MUL( in40, 1 ); \
9926 390342 : in40 = GF_ADD( GF_MUL( scratch_104, 0 ), in40 ); \
9927 390342 : in41 = GF_MUL( in41, 1 ); \
9928 390342 : in41 = GF_ADD( GF_MUL( scratch_105, 0 ), in41 ); \
9929 390342 : in42 = GF_MUL( in42, 1 ); \
9930 390342 : in42 = GF_ADD( GF_MUL( scratch_106, 0 ), in42 ); \
9931 390342 : in43 = GF_MUL( in43, 1 ); \
9932 390342 : in43 = GF_ADD( GF_MUL( scratch_107, 0 ), in43 ); \
9933 390342 : in44 = GF_MUL( in44, 1 ); \
9934 390342 : in44 = GF_ADD( GF_MUL( scratch_108, 0 ), in44 ); \
9935 390342 : in45 = GF_MUL( in45, 1 ); \
9936 390342 : in45 = GF_ADD( GF_MUL( scratch_109, 0 ), in45 ); \
9937 390342 : in46 = GF_MUL( in46, 1 ); \
9938 390342 : in46 = GF_ADD( GF_MUL( scratch_110, 0 ), in46 ); \
9939 390342 : in47 = GF_MUL( in47, 1 ); \
9940 390342 : in47 = GF_ADD( GF_MUL( scratch_111, 0 ), in47 ); \
9941 390342 : in48 = GF_MUL( in48, 1 ); \
9942 390342 : in48 = GF_ADD( GF_MUL( scratch_112, 0 ), in48 ); \
9943 390342 : in49 = GF_MUL( in49, 1 ); \
9944 390342 : in49 = GF_ADD( GF_MUL( scratch_113, 0 ), in49 ); \
9945 390342 : in50 = GF_MUL( in50, 1 ); \
9946 390342 : in50 = GF_ADD( GF_MUL( scratch_114, 0 ), in50 ); \
9947 390342 : in51 = GF_MUL( in51, 1 ); \
9948 390342 : in51 = GF_ADD( GF_MUL( scratch_115, 0 ), in51 ); \
9949 390342 : in52 = GF_MUL( in52, 1 ); \
9950 390342 : in52 = GF_ADD( GF_MUL( scratch_116, 0 ), in52 ); \
9951 390342 : in53 = GF_MUL( in53, 1 ); \
9952 390342 : in53 = GF_ADD( GF_MUL( scratch_117, 0 ), in53 ); \
9953 390342 : in54 = GF_MUL( in54, 1 ); \
9954 390342 : in54 = GF_ADD( GF_MUL( scratch_118, 0 ), in54 ); \
9955 390342 : in55 = GF_MUL( in55, 1 ); \
9956 390342 : in55 = GF_ADD( GF_MUL( scratch_119, 0 ), in55 ); \
9957 390342 : in56 = GF_MUL( in56, 1 ); \
9958 390342 : in56 = GF_ADD( GF_MUL( scratch_120, 0 ), in56 ); \
9959 390342 : in57 = GF_MUL( in57, 1 ); \
9960 390342 : in57 = GF_ADD( GF_MUL( scratch_121, 0 ), in57 ); \
9961 390342 : in58 = GF_MUL( in58, 1 ); \
9962 390342 : in58 = GF_ADD( GF_MUL( scratch_122, 0 ), in58 ); \
9963 390342 : in59 = GF_MUL( in59, 1 ); \
9964 390342 : in59 = GF_ADD( GF_MUL( scratch_123, 0 ), in59 ); \
9965 390342 : in60 = GF_MUL( in60, 1 ); \
9966 390342 : in60 = GF_ADD( GF_MUL( scratch_124, 0 ), in60 ); \
9967 390342 : in61 = GF_MUL( in61, 1 ); \
9968 390342 : in61 = GF_ADD( GF_MUL( scratch_125, 0 ), in61 ); \
9969 390342 : in62 = GF_MUL( in62, 1 ); \
9970 390342 : in62 = GF_ADD( GF_MUL( scratch_126, 0 ), in62 ); \
9971 390342 : in63 = GF_MUL( in63, 1 ); \
9972 390342 : in63 = GF_ADD( GF_MUL( scratch_127, 0 ), in63 ); \
9973 390342 : } while( 0 )
9974 :
9975 : void fd_reedsol_ppt_128_68( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
9976 : #define FD_REEDSOL_PPT_IMPL_128_68( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63, in64, in65 , \
9977 : in66, in67, in68, in69, in70, in71, in72, in73, in74, in75, in76, in77, in78, in79, in80, in81, in82, in83, in84, in85, in86, in87, in88, in89, in90, in91, in92, in93, in94, in95, in96, in97, in98, in99, in100, in101, in102, in103, in104, in105, in106, in107, in108, in109, in110, in111, in112, in113, in114, in115, in116, in117, in118, in119, in120, in121, in122, in123, in124, in125, in126, in127) \
9978 : do { \
9979 : gf_t scratch_10, scratch_100, scratch_101, scratch_102, scratch_103, scratch_104, scratch_105, scratch_106, scratch_107, scratch_108, scratch_109, scratch_11, scratch_110, scratch_111, scratch_112, scratch_113; \
9980 : gf_t scratch_114, scratch_115, scratch_116, scratch_117, scratch_118, scratch_119, scratch_120, scratch_121, scratch_122, scratch_123, scratch_124, scratch_125, scratch_126, scratch_127, scratch_16, scratch_17; \
9981 : gf_t scratch_18, scratch_19, scratch_32, scratch_33, scratch_34, scratch_35, scratch_4, scratch_5, scratch_6, scratch_68, scratch_69, scratch_7, scratch_70, scratch_71, scratch_72, scratch_73; \
9982 : gf_t scratch_74, scratch_75, scratch_76, scratch_77, scratch_78, scratch_79, scratch_8, scratch_80, scratch_81, scratch_82, scratch_83, scratch_84, scratch_85, scratch_86, scratch_87, scratch_88; \
9983 : gf_t scratch_89, scratch_9, scratch_90, scratch_91, scratch_92, scratch_93, scratch_94, scratch_95, scratch_96, scratch_97, scratch_98, scratch_99; \
9984 : scratch_68 = in68; \
9985 : in68 = GF_MUL( in68, 1 ); \
9986 : scratch_69 = in69; \
9987 : in69 = GF_MUL( in69, 1 ); \
9988 : scratch_70 = in70; \
9989 : in70 = GF_MUL( in70, 1 ); \
9990 : scratch_71 = in71; \
9991 : in71 = GF_MUL( in71, 1 ); \
9992 : scratch_72 = in72; \
9993 : in72 = GF_MUL( in72, 1 ); \
9994 : scratch_73 = in73; \
9995 : in73 = GF_MUL( in73, 1 ); \
9996 : scratch_74 = in74; \
9997 : in74 = GF_MUL( in74, 1 ); \
9998 : scratch_75 = in75; \
9999 : in75 = GF_MUL( in75, 1 ); \
10000 : scratch_76 = in76; \
10001 : in76 = GF_MUL( in76, 1 ); \
10002 : scratch_77 = in77; \
10003 : in77 = GF_MUL( in77, 1 ); \
10004 : scratch_78 = in78; \
10005 : in78 = GF_MUL( in78, 1 ); \
10006 : scratch_79 = in79; \
10007 : in79 = GF_MUL( in79, 1 ); \
10008 : scratch_80 = in80; \
10009 : in80 = GF_MUL( in80, 1 ); \
10010 : scratch_81 = in81; \
10011 : in81 = GF_MUL( in81, 1 ); \
10012 : scratch_82 = in82; \
10013 : in82 = GF_MUL( in82, 1 ); \
10014 : scratch_83 = in83; \
10015 : in83 = GF_MUL( in83, 1 ); \
10016 : scratch_84 = in84; \
10017 : in84 = GF_MUL( in84, 1 ); \
10018 : scratch_85 = in85; \
10019 : in85 = GF_MUL( in85, 1 ); \
10020 : scratch_86 = in86; \
10021 : in86 = GF_MUL( in86, 1 ); \
10022 : scratch_87 = in87; \
10023 : in87 = GF_MUL( in87, 1 ); \
10024 : scratch_88 = in88; \
10025 : in88 = GF_MUL( in88, 1 ); \
10026 : scratch_89 = in89; \
10027 : in89 = GF_MUL( in89, 1 ); \
10028 : scratch_90 = in90; \
10029 : in90 = GF_MUL( in90, 1 ); \
10030 : scratch_91 = in91; \
10031 : in91 = GF_MUL( in91, 1 ); \
10032 : scratch_92 = in92; \
10033 : in92 = GF_MUL( in92, 1 ); \
10034 : scratch_93 = in93; \
10035 : in93 = GF_MUL( in93, 1 ); \
10036 : scratch_94 = in94; \
10037 : in94 = GF_MUL( in94, 1 ); \
10038 : scratch_95 = in95; \
10039 : in95 = GF_MUL( in95, 1 ); \
10040 : scratch_96 = in96; \
10041 : in96 = GF_MUL( in96, 1 ); \
10042 : scratch_97 = in97; \
10043 : in97 = GF_MUL( in97, 1 ); \
10044 : scratch_98 = in98; \
10045 : in98 = GF_MUL( in98, 1 ); \
10046 : scratch_99 = in99; \
10047 : in99 = GF_MUL( in99, 1 ); \
10048 : scratch_100 = in100; \
10049 : in100 = GF_MUL( in100, 1 ); \
10050 : scratch_101 = in101; \
10051 : in101 = GF_MUL( in101, 1 ); \
10052 : scratch_102 = in102; \
10053 : in102 = GF_MUL( in102, 1 ); \
10054 : scratch_103 = in103; \
10055 : in103 = GF_MUL( in103, 1 ); \
10056 : scratch_104 = in104; \
10057 : in104 = GF_MUL( in104, 1 ); \
10058 : scratch_105 = in105; \
10059 : in105 = GF_MUL( in105, 1 ); \
10060 : scratch_106 = in106; \
10061 : in106 = GF_MUL( in106, 1 ); \
10062 : scratch_107 = in107; \
10063 : in107 = GF_MUL( in107, 1 ); \
10064 : scratch_108 = in108; \
10065 : in108 = GF_MUL( in108, 1 ); \
10066 : scratch_109 = in109; \
10067 : in109 = GF_MUL( in109, 1 ); \
10068 : scratch_110 = in110; \
10069 : in110 = GF_MUL( in110, 1 ); \
10070 : scratch_111 = in111; \
10071 : in111 = GF_MUL( in111, 1 ); \
10072 : scratch_112 = in112; \
10073 : in112 = GF_MUL( in112, 1 ); \
10074 : scratch_113 = in113; \
10075 : in113 = GF_MUL( in113, 1 ); \
10076 : scratch_114 = in114; \
10077 : in114 = GF_MUL( in114, 1 ); \
10078 : scratch_115 = in115; \
10079 : in115 = GF_MUL( in115, 1 ); \
10080 : scratch_116 = in116; \
10081 : in116 = GF_MUL( in116, 1 ); \
10082 : scratch_117 = in117; \
10083 : in117 = GF_MUL( in117, 1 ); \
10084 : scratch_118 = in118; \
10085 : in118 = GF_MUL( in118, 1 ); \
10086 : scratch_119 = in119; \
10087 : in119 = GF_MUL( in119, 1 ); \
10088 : scratch_120 = in120; \
10089 : in120 = GF_MUL( in120, 1 ); \
10090 : scratch_121 = in121; \
10091 : in121 = GF_MUL( in121, 1 ); \
10092 : scratch_122 = in122; \
10093 : in122 = GF_MUL( in122, 1 ); \
10094 : scratch_123 = in123; \
10095 : in123 = GF_MUL( in123, 1 ); \
10096 : scratch_124 = in124; \
10097 : in124 = GF_MUL( in124, 1 ); \
10098 : scratch_125 = in125; \
10099 : in125 = GF_MUL( in125, 1 ); \
10100 : scratch_126 = in126; \
10101 : in126 = GF_MUL( in126, 1 ); \
10102 : scratch_127 = in127; \
10103 : in127 = GF_MUL( in127, 1 ); \
10104 : FD_REEDSOL_GENERATE_IFFT( 64, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
10105 : in68 = GF_ADD( GF_MUL( in04, 1 ), in68 ); \
10106 : in69 = GF_ADD( GF_MUL( in05, 1 ), in69 ); \
10107 : in70 = GF_ADD( GF_MUL( in06, 1 ), in70 ); \
10108 : in71 = GF_ADD( GF_MUL( in07, 1 ), in71 ); \
10109 : in72 = GF_ADD( GF_MUL( in08, 1 ), in72 ); \
10110 : in73 = GF_ADD( GF_MUL( in09, 1 ), in73 ); \
10111 : in74 = GF_ADD( GF_MUL( in10, 1 ), in74 ); \
10112 : in75 = GF_ADD( GF_MUL( in11, 1 ), in75 ); \
10113 : in76 = GF_ADD( GF_MUL( in12, 1 ), in76 ); \
10114 : in77 = GF_ADD( GF_MUL( in13, 1 ), in77 ); \
10115 : in78 = GF_ADD( GF_MUL( in14, 1 ), in78 ); \
10116 : in79 = GF_ADD( GF_MUL( in15, 1 ), in79 ); \
10117 : in80 = GF_ADD( GF_MUL( in16, 1 ), in80 ); \
10118 : in81 = GF_ADD( GF_MUL( in17, 1 ), in81 ); \
10119 : in82 = GF_ADD( GF_MUL( in18, 1 ), in82 ); \
10120 : in83 = GF_ADD( GF_MUL( in19, 1 ), in83 ); \
10121 : in84 = GF_ADD( GF_MUL( in20, 1 ), in84 ); \
10122 : in85 = GF_ADD( GF_MUL( in21, 1 ), in85 ); \
10123 : in86 = GF_ADD( GF_MUL( in22, 1 ), in86 ); \
10124 : in87 = GF_ADD( GF_MUL( in23, 1 ), in87 ); \
10125 : in88 = GF_ADD( GF_MUL( in24, 1 ), in88 ); \
10126 : in89 = GF_ADD( GF_MUL( in25, 1 ), in89 ); \
10127 : in90 = GF_ADD( GF_MUL( in26, 1 ), in90 ); \
10128 : in91 = GF_ADD( GF_MUL( in27, 1 ), in91 ); \
10129 : in92 = GF_ADD( GF_MUL( in28, 1 ), in92 ); \
10130 : in93 = GF_ADD( GF_MUL( in29, 1 ), in93 ); \
10131 : in94 = GF_ADD( GF_MUL( in30, 1 ), in94 ); \
10132 : in95 = GF_ADD( GF_MUL( in31, 1 ), in95 ); \
10133 : in96 = GF_ADD( GF_MUL( in32, 1 ), in96 ); \
10134 : in97 = GF_ADD( GF_MUL( in33, 1 ), in97 ); \
10135 : in98 = GF_ADD( GF_MUL( in34, 1 ), in98 ); \
10136 : in99 = GF_ADD( GF_MUL( in35, 1 ), in99 ); \
10137 : in100 = GF_ADD( GF_MUL( in36, 1 ), in100 ); \
10138 : in101 = GF_ADD( GF_MUL( in37, 1 ), in101 ); \
10139 : in102 = GF_ADD( GF_MUL( in38, 1 ), in102 ); \
10140 : in103 = GF_ADD( GF_MUL( in39, 1 ), in103 ); \
10141 : in104 = GF_ADD( GF_MUL( in40, 1 ), in104 ); \
10142 : in105 = GF_ADD( GF_MUL( in41, 1 ), in105 ); \
10143 : in106 = GF_ADD( GF_MUL( in42, 1 ), in106 ); \
10144 : in107 = GF_ADD( GF_MUL( in43, 1 ), in107 ); \
10145 : in108 = GF_ADD( GF_MUL( in44, 1 ), in108 ); \
10146 : in109 = GF_ADD( GF_MUL( in45, 1 ), in109 ); \
10147 : in110 = GF_ADD( GF_MUL( in46, 1 ), in110 ); \
10148 : in111 = GF_ADD( GF_MUL( in47, 1 ), in111 ); \
10149 : in112 = GF_ADD( GF_MUL( in48, 1 ), in112 ); \
10150 : in113 = GF_ADD( GF_MUL( in49, 1 ), in113 ); \
10151 : in114 = GF_ADD( GF_MUL( in50, 1 ), in114 ); \
10152 : in115 = GF_ADD( GF_MUL( in51, 1 ), in115 ); \
10153 : in116 = GF_ADD( GF_MUL( in52, 1 ), in116 ); \
10154 : in117 = GF_ADD( GF_MUL( in53, 1 ), in117 ); \
10155 : in118 = GF_ADD( GF_MUL( in54, 1 ), in118 ); \
10156 : in119 = GF_ADD( GF_MUL( in55, 1 ), in119 ); \
10157 : in120 = GF_ADD( GF_MUL( in56, 1 ), in120 ); \
10158 : in121 = GF_ADD( GF_MUL( in57, 1 ), in121 ); \
10159 : in122 = GF_ADD( GF_MUL( in58, 1 ), in122 ); \
10160 : in123 = GF_ADD( GF_MUL( in59, 1 ), in123 ); \
10161 : in124 = GF_ADD( GF_MUL( in60, 1 ), in124 ); \
10162 : in125 = GF_ADD( GF_MUL( in61, 1 ), in125 ); \
10163 : in126 = GF_ADD( GF_MUL( in62, 1 ), in126 ); \
10164 : in127 = GF_ADD( GF_MUL( in63, 1 ), in127 ); \
10165 : scratch_32 = in96; \
10166 : in96 = GF_MUL( in96, 1 ); \
10167 : scratch_33 = in97; \
10168 : in97 = GF_MUL( in97, 1 ); \
10169 : scratch_34 = in98; \
10170 : in98 = GF_MUL( in98, 1 ); \
10171 : scratch_35 = in99; \
10172 : in99 = GF_MUL( in99, 1 ); \
10173 : GF_MUL22( in68, in100, 1, 218, 1, 219 ); \
10174 : GF_MUL22( in69, in101, 1, 218, 1, 219 ); \
10175 : GF_MUL22( in70, in102, 1, 218, 1, 219 ); \
10176 : GF_MUL22( in71, in103, 1, 218, 1, 219 ); \
10177 : GF_MUL22( in72, in104, 1, 218, 1, 219 ); \
10178 : GF_MUL22( in73, in105, 1, 218, 1, 219 ); \
10179 : GF_MUL22( in74, in106, 1, 218, 1, 219 ); \
10180 : GF_MUL22( in75, in107, 1, 218, 1, 219 ); \
10181 : GF_MUL22( in76, in108, 1, 218, 1, 219 ); \
10182 : GF_MUL22( in77, in109, 1, 218, 1, 219 ); \
10183 : GF_MUL22( in78, in110, 1, 218, 1, 219 ); \
10184 : GF_MUL22( in79, in111, 1, 218, 1, 219 ); \
10185 : GF_MUL22( in80, in112, 1, 218, 1, 219 ); \
10186 : GF_MUL22( in81, in113, 1, 218, 1, 219 ); \
10187 : GF_MUL22( in82, in114, 1, 218, 1, 219 ); \
10188 : GF_MUL22( in83, in115, 1, 218, 1, 219 ); \
10189 : GF_MUL22( in84, in116, 1, 218, 1, 219 ); \
10190 : GF_MUL22( in85, in117, 1, 218, 1, 219 ); \
10191 : GF_MUL22( in86, in118, 1, 218, 1, 219 ); \
10192 : GF_MUL22( in87, in119, 1, 218, 1, 219 ); \
10193 : GF_MUL22( in88, in120, 1, 218, 1, 219 ); \
10194 : GF_MUL22( in89, in121, 1, 218, 1, 219 ); \
10195 : GF_MUL22( in90, in122, 1, 218, 1, 219 ); \
10196 : GF_MUL22( in91, in123, 1, 218, 1, 219 ); \
10197 : GF_MUL22( in92, in124, 1, 218, 1, 219 ); \
10198 : GF_MUL22( in93, in125, 1, 218, 1, 219 ); \
10199 : GF_MUL22( in94, in126, 1, 218, 1, 219 ); \
10200 : GF_MUL22( in95, in127, 1, 218, 1, 219 ); \
10201 : scratch_16 = in80; \
10202 : in80 = GF_MUL( in80, 1 ); \
10203 : scratch_17 = in81; \
10204 : in81 = GF_MUL( in81, 1 ); \
10205 : scratch_18 = in82; \
10206 : in82 = GF_MUL( in82, 1 ); \
10207 : scratch_19 = in83; \
10208 : in83 = GF_MUL( in83, 1 ); \
10209 : GF_MUL22( in68, in84, 1, 189, 1, 188 ); \
10210 : GF_MUL22( in69, in85, 1, 189, 1, 188 ); \
10211 : GF_MUL22( in70, in86, 1, 189, 1, 188 ); \
10212 : GF_MUL22( in71, in87, 1, 189, 1, 188 ); \
10213 : GF_MUL22( in72, in88, 1, 189, 1, 188 ); \
10214 : GF_MUL22( in73, in89, 1, 189, 1, 188 ); \
10215 : GF_MUL22( in74, in90, 1, 189, 1, 188 ); \
10216 : GF_MUL22( in75, in91, 1, 189, 1, 188 ); \
10217 : GF_MUL22( in76, in92, 1, 189, 1, 188 ); \
10218 : GF_MUL22( in77, in93, 1, 189, 1, 188 ); \
10219 : GF_MUL22( in78, in94, 1, 189, 1, 188 ); \
10220 : GF_MUL22( in79, in95, 1, 189, 1, 188 ); \
10221 : scratch_8 = in72; \
10222 : in72 = GF_MUL( in72, 1 ); \
10223 : scratch_9 = in73; \
10224 : in73 = GF_MUL( in73, 1 ); \
10225 : scratch_10 = in74; \
10226 : in74 = GF_MUL( in74, 1 ); \
10227 : scratch_11 = in75; \
10228 : in75 = GF_MUL( in75, 1 ); \
10229 : GF_MUL22( in68, in76, 1, 33, 1, 32 ); \
10230 : GF_MUL22( in69, in77, 1, 33, 1, 32 ); \
10231 : GF_MUL22( in70, in78, 1, 33, 1, 32 ); \
10232 : GF_MUL22( in71, in79, 1, 33, 1, 32 ); \
10233 : scratch_4 = in68; \
10234 : in68 = GF_MUL( in68, 1 ); \
10235 : scratch_5 = in69; \
10236 : in69 = GF_MUL( in69, 1 ); \
10237 : scratch_6 = in70; \
10238 : in70 = GF_MUL( in70, 1 ); \
10239 : scratch_7 = in71; \
10240 : in71 = GF_MUL( in71, 1 ); \
10241 : FD_REEDSOL_GENERATE_IFFT( 4, 64, in64, in65, in66, in67 ); \
10242 : in68 = GF_ADD( GF_MUL( in64, 1 ), in68 ); \
10243 : in69 = GF_ADD( GF_MUL( in65, 1 ), in69 ); \
10244 : in70 = GF_ADD( GF_MUL( in66, 1 ), in70 ); \
10245 : in71 = GF_ADD( GF_MUL( in67, 1 ), in71 ); \
10246 : FD_REEDSOL_GENERATE_FFT( 4, 68, in68, in69, in70, in71 ); \
10247 : in64 = GF_MUL( in64, 1 ); \
10248 : in64 = GF_ADD( GF_MUL( scratch_4, 183 ), in64 ); \
10249 : in65 = GF_MUL( in65, 1 ); \
10250 : in65 = GF_ADD( GF_MUL( scratch_5, 183 ), in65 ); \
10251 : in66 = GF_MUL( in66, 1 ); \
10252 : in66 = GF_ADD( GF_MUL( scratch_6, 183 ), in66 ); \
10253 : in67 = GF_MUL( in67, 1 ); \
10254 : in67 = GF_ADD( GF_MUL( scratch_7, 183 ), in67 ); \
10255 : in72 = GF_ADD( GF_MUL( in64, 1 ), in72 ); \
10256 : in73 = GF_ADD( GF_MUL( in65, 1 ), in73 ); \
10257 : in74 = GF_ADD( GF_MUL( in66, 1 ), in74 ); \
10258 : in75 = GF_ADD( GF_MUL( in67, 1 ), in75 ); \
10259 : FD_REEDSOL_GENERATE_FFT( 8, 72, in72, in73, in74, in75, in76, in77, in78, in79 ); \
10260 : in64 = GF_MUL( in64, 1 ); \
10261 : in64 = GF_ADD( GF_MUL( scratch_8, 33 ), in64 ); \
10262 : in65 = GF_MUL( in65, 1 ); \
10263 : in65 = GF_ADD( GF_MUL( scratch_9, 33 ), in65 ); \
10264 : in66 = GF_MUL( in66, 1 ); \
10265 : in66 = GF_ADD( GF_MUL( scratch_10, 33 ), in66 ); \
10266 : in67 = GF_MUL( in67, 1 ); \
10267 : in67 = GF_ADD( GF_MUL( scratch_11, 33 ), in67 ); \
10268 : in80 = GF_ADD( GF_MUL( in64, 1 ), in80 ); \
10269 : in81 = GF_ADD( GF_MUL( in65, 1 ), in81 ); \
10270 : in82 = GF_ADD( GF_MUL( in66, 1 ), in82 ); \
10271 : in83 = GF_ADD( GF_MUL( in67, 1 ), in83 ); \
10272 : FD_REEDSOL_GENERATE_FFT( 16, 80, in80, in81, in82, in83, in84, in85, in86, in87, in88, in89, in90, in91, in92, in93, in94, in95 ); \
10273 : in64 = GF_MUL( in64, 1 ); \
10274 : in64 = GF_ADD( GF_MUL( scratch_16, 189 ), in64 ); \
10275 : in65 = GF_MUL( in65, 1 ); \
10276 : in65 = GF_ADD( GF_MUL( scratch_17, 189 ), in65 ); \
10277 : in66 = GF_MUL( in66, 1 ); \
10278 : in66 = GF_ADD( GF_MUL( scratch_18, 189 ), in66 ); \
10279 : in67 = GF_MUL( in67, 1 ); \
10280 : in67 = GF_ADD( GF_MUL( scratch_19, 189 ), in67 ); \
10281 : in96 = GF_ADD( GF_MUL( in64, 1 ), in96 ); \
10282 : in97 = GF_ADD( GF_MUL( in65, 1 ), in97 ); \
10283 : in98 = GF_ADD( GF_MUL( in66, 1 ), in98 ); \
10284 : in99 = GF_ADD( GF_MUL( in67, 1 ), in99 ); \
10285 : FD_REEDSOL_GENERATE_FFT( 32, 96, in96, in97, in98, in99, in100, in101, in102, in103, in104, in105, in106, in107, in108, in109, in110, in111, in112, in113, in114, in115, in116, in117, in118, in119, in120, in121, in122, in123, in124, in125, in126, in127 ); \
10286 : in64 = GF_MUL( in64, 1 ); \
10287 : in64 = GF_ADD( GF_MUL( scratch_32, 218 ), in64 ); \
10288 : in65 = GF_MUL( in65, 1 ); \
10289 : in65 = GF_ADD( GF_MUL( scratch_33, 218 ), in65 ); \
10290 : in66 = GF_MUL( in66, 1 ); \
10291 : in66 = GF_ADD( GF_MUL( scratch_34, 218 ), in66 ); \
10292 : in67 = GF_MUL( in67, 1 ); \
10293 : in67 = GF_ADD( GF_MUL( scratch_35, 218 ), in67 ); \
10294 : GF_MUL22( in00, in64, 1, 0, 1, 1 ); \
10295 : GF_MUL22( in01, in65, 1, 0, 1, 1 ); \
10296 : GF_MUL22( in02, in66, 1, 0, 1, 1 ); \
10297 : GF_MUL22( in03, in67, 1, 0, 1, 1 ); \
10298 : in04 = GF_MUL( in04, 1 ); \
10299 : in04 = GF_ADD( GF_MUL( scratch_68, 0 ), in04 ); \
10300 : in05 = GF_MUL( in05, 1 ); \
10301 : in05 = GF_ADD( GF_MUL( scratch_69, 0 ), in05 ); \
10302 : in06 = GF_MUL( in06, 1 ); \
10303 : in06 = GF_ADD( GF_MUL( scratch_70, 0 ), in06 ); \
10304 : in07 = GF_MUL( in07, 1 ); \
10305 : in07 = GF_ADD( GF_MUL( scratch_71, 0 ), in07 ); \
10306 : in08 = GF_MUL( in08, 1 ); \
10307 : in08 = GF_ADD( GF_MUL( scratch_72, 0 ), in08 ); \
10308 : in09 = GF_MUL( in09, 1 ); \
10309 : in09 = GF_ADD( GF_MUL( scratch_73, 0 ), in09 ); \
10310 : in10 = GF_MUL( in10, 1 ); \
10311 : in10 = GF_ADD( GF_MUL( scratch_74, 0 ), in10 ); \
10312 : in11 = GF_MUL( in11, 1 ); \
10313 : in11 = GF_ADD( GF_MUL( scratch_75, 0 ), in11 ); \
10314 : in12 = GF_MUL( in12, 1 ); \
10315 : in12 = GF_ADD( GF_MUL( scratch_76, 0 ), in12 ); \
10316 : in13 = GF_MUL( in13, 1 ); \
10317 : in13 = GF_ADD( GF_MUL( scratch_77, 0 ), in13 ); \
10318 : in14 = GF_MUL( in14, 1 ); \
10319 : in14 = GF_ADD( GF_MUL( scratch_78, 0 ), in14 ); \
10320 : in15 = GF_MUL( in15, 1 ); \
10321 : in15 = GF_ADD( GF_MUL( scratch_79, 0 ), in15 ); \
10322 : in16 = GF_MUL( in16, 1 ); \
10323 : in16 = GF_ADD( GF_MUL( scratch_80, 0 ), in16 ); \
10324 : in17 = GF_MUL( in17, 1 ); \
10325 : in17 = GF_ADD( GF_MUL( scratch_81, 0 ), in17 ); \
10326 : in18 = GF_MUL( in18, 1 ); \
10327 : in18 = GF_ADD( GF_MUL( scratch_82, 0 ), in18 ); \
10328 : in19 = GF_MUL( in19, 1 ); \
10329 : in19 = GF_ADD( GF_MUL( scratch_83, 0 ), in19 ); \
10330 : in20 = GF_MUL( in20, 1 ); \
10331 : in20 = GF_ADD( GF_MUL( scratch_84, 0 ), in20 ); \
10332 : in21 = GF_MUL( in21, 1 ); \
10333 : in21 = GF_ADD( GF_MUL( scratch_85, 0 ), in21 ); \
10334 : in22 = GF_MUL( in22, 1 ); \
10335 : in22 = GF_ADD( GF_MUL( scratch_86, 0 ), in22 ); \
10336 : in23 = GF_MUL( in23, 1 ); \
10337 : in23 = GF_ADD( GF_MUL( scratch_87, 0 ), in23 ); \
10338 : in24 = GF_MUL( in24, 1 ); \
10339 : in24 = GF_ADD( GF_MUL( scratch_88, 0 ), in24 ); \
10340 : in25 = GF_MUL( in25, 1 ); \
10341 : in25 = GF_ADD( GF_MUL( scratch_89, 0 ), in25 ); \
10342 : in26 = GF_MUL( in26, 1 ); \
10343 : in26 = GF_ADD( GF_MUL( scratch_90, 0 ), in26 ); \
10344 : in27 = GF_MUL( in27, 1 ); \
10345 : in27 = GF_ADD( GF_MUL( scratch_91, 0 ), in27 ); \
10346 : in28 = GF_MUL( in28, 1 ); \
10347 : in28 = GF_ADD( GF_MUL( scratch_92, 0 ), in28 ); \
10348 : in29 = GF_MUL( in29, 1 ); \
10349 : in29 = GF_ADD( GF_MUL( scratch_93, 0 ), in29 ); \
10350 : in30 = GF_MUL( in30, 1 ); \
10351 : in30 = GF_ADD( GF_MUL( scratch_94, 0 ), in30 ); \
10352 : in31 = GF_MUL( in31, 1 ); \
10353 : in31 = GF_ADD( GF_MUL( scratch_95, 0 ), in31 ); \
10354 : in32 = GF_MUL( in32, 1 ); \
10355 : in32 = GF_ADD( GF_MUL( scratch_96, 0 ), in32 ); \
10356 : in33 = GF_MUL( in33, 1 ); \
10357 : in33 = GF_ADD( GF_MUL( scratch_97, 0 ), in33 ); \
10358 : in34 = GF_MUL( in34, 1 ); \
10359 : in34 = GF_ADD( GF_MUL( scratch_98, 0 ), in34 ); \
10360 : in35 = GF_MUL( in35, 1 ); \
10361 : in35 = GF_ADD( GF_MUL( scratch_99, 0 ), in35 ); \
10362 : in36 = GF_MUL( in36, 1 ); \
10363 : in36 = GF_ADD( GF_MUL( scratch_100, 0 ), in36 ); \
10364 : in37 = GF_MUL( in37, 1 ); \
10365 : in37 = GF_ADD( GF_MUL( scratch_101, 0 ), in37 ); \
10366 : in38 = GF_MUL( in38, 1 ); \
10367 : in38 = GF_ADD( GF_MUL( scratch_102, 0 ), in38 ); \
10368 : in39 = GF_MUL( in39, 1 ); \
10369 : in39 = GF_ADD( GF_MUL( scratch_103, 0 ), in39 ); \
10370 : in40 = GF_MUL( in40, 1 ); \
10371 : in40 = GF_ADD( GF_MUL( scratch_104, 0 ), in40 ); \
10372 : in41 = GF_MUL( in41, 1 ); \
10373 : in41 = GF_ADD( GF_MUL( scratch_105, 0 ), in41 ); \
10374 : in42 = GF_MUL( in42, 1 ); \
10375 : in42 = GF_ADD( GF_MUL( scratch_106, 0 ), in42 ); \
10376 : in43 = GF_MUL( in43, 1 ); \
10377 : in43 = GF_ADD( GF_MUL( scratch_107, 0 ), in43 ); \
10378 : in44 = GF_MUL( in44, 1 ); \
10379 : in44 = GF_ADD( GF_MUL( scratch_108, 0 ), in44 ); \
10380 : in45 = GF_MUL( in45, 1 ); \
10381 : in45 = GF_ADD( GF_MUL( scratch_109, 0 ), in45 ); \
10382 : in46 = GF_MUL( in46, 1 ); \
10383 : in46 = GF_ADD( GF_MUL( scratch_110, 0 ), in46 ); \
10384 : in47 = GF_MUL( in47, 1 ); \
10385 : in47 = GF_ADD( GF_MUL( scratch_111, 0 ), in47 ); \
10386 : in48 = GF_MUL( in48, 1 ); \
10387 : in48 = GF_ADD( GF_MUL( scratch_112, 0 ), in48 ); \
10388 : in49 = GF_MUL( in49, 1 ); \
10389 : in49 = GF_ADD( GF_MUL( scratch_113, 0 ), in49 ); \
10390 : in50 = GF_MUL( in50, 1 ); \
10391 : in50 = GF_ADD( GF_MUL( scratch_114, 0 ), in50 ); \
10392 : in51 = GF_MUL( in51, 1 ); \
10393 : in51 = GF_ADD( GF_MUL( scratch_115, 0 ), in51 ); \
10394 : in52 = GF_MUL( in52, 1 ); \
10395 : in52 = GF_ADD( GF_MUL( scratch_116, 0 ), in52 ); \
10396 : in53 = GF_MUL( in53, 1 ); \
10397 : in53 = GF_ADD( GF_MUL( scratch_117, 0 ), in53 ); \
10398 : in54 = GF_MUL( in54, 1 ); \
10399 : in54 = GF_ADD( GF_MUL( scratch_118, 0 ), in54 ); \
10400 : in55 = GF_MUL( in55, 1 ); \
10401 : in55 = GF_ADD( GF_MUL( scratch_119, 0 ), in55 ); \
10402 : in56 = GF_MUL( in56, 1 ); \
10403 : in56 = GF_ADD( GF_MUL( scratch_120, 0 ), in56 ); \
10404 : in57 = GF_MUL( in57, 1 ); \
10405 : in57 = GF_ADD( GF_MUL( scratch_121, 0 ), in57 ); \
10406 : in58 = GF_MUL( in58, 1 ); \
10407 : in58 = GF_ADD( GF_MUL( scratch_122, 0 ), in58 ); \
10408 : in59 = GF_MUL( in59, 1 ); \
10409 : in59 = GF_ADD( GF_MUL( scratch_123, 0 ), in59 ); \
10410 : in60 = GF_MUL( in60, 1 ); \
10411 : in60 = GF_ADD( GF_MUL( scratch_124, 0 ), in60 ); \
10412 : in61 = GF_MUL( in61, 1 ); \
10413 : in61 = GF_ADD( GF_MUL( scratch_125, 0 ), in61 ); \
10414 : in62 = GF_MUL( in62, 1 ); \
10415 : in62 = GF_ADD( GF_MUL( scratch_126, 0 ), in62 ); \
10416 : in63 = GF_MUL( in63, 1 ); \
10417 : in63 = GF_ADD( GF_MUL( scratch_127, 0 ), in63 ); \
10418 : } while( 0 )
10419 :
10420 : #endif /* HEADER_fd_src_ballet_reedsol_fd_reedsol_ppt_h */
|