Botan 3.3.0
Crypto and TLS for C&
mp_monty_n.cpp
Go to the documentation of this file.
1/*
2* This file was automatically generated by ./src/scripts/dev_tools/gen_mp_monty.py on 2023-05-29
3* All manual changes will be lost. Edit the script instead.
4*
5* Botan is released under the Simplified BSD License (see license.txt)
6*/
7
8#include <botan/internal/mp_core.h>
9
10#include <botan/internal/ct_utils.h>
11
12namespace Botan {
13
14void bigint_monty_redc_4(word z[8], const word p[4], word p_dash, word ws[]) {
15 word w2 = 0, w1 = 0, w0 = 0;
16 w0 = z[0];
17 ws[0] = w0 * p_dash;
18 word3_muladd(&w2, &w1, &w0, ws[0], p[0]);
19 w0 = w1;
20 w1 = w2;
21 w2 = 0;
22 word3_muladd(&w2, &w1, &w0, ws[0], p[1]);
23 word3_add(&w2, &w1, &w0, z[1]);
24 ws[1] = w0 * p_dash;
25 word3_muladd(&w2, &w1, &w0, ws[1], p[0]);
26 w0 = w1;
27 w1 = w2;
28 w2 = 0;
29 word3_muladd(&w2, &w1, &w0, ws[0], p[2]);
30 word3_muladd(&w2, &w1, &w0, ws[1], p[1]);
31 word3_add(&w2, &w1, &w0, z[2]);
32 ws[2] = w0 * p_dash;
33 word3_muladd(&w2, &w1, &w0, ws[2], p[0]);
34 w0 = w1;
35 w1 = w2;
36 w2 = 0;
37 word3_muladd(&w2, &w1, &w0, ws[0], p[3]);
38 word3_muladd(&w2, &w1, &w0, ws[1], p[2]);
39 word3_muladd(&w2, &w1, &w0, ws[2], p[1]);
40 word3_add(&w2, &w1, &w0, z[3]);
41 ws[3] = w0 * p_dash;
42 word3_muladd(&w2, &w1, &w0, ws[3], p[0]);
43 w0 = w1;
44 w1 = w2;
45 w2 = 0;
46 word3_muladd(&w2, &w1, &w0, ws[1], p[3]);
47 word3_muladd(&w2, &w1, &w0, ws[2], p[2]);
48 word3_muladd(&w2, &w1, &w0, ws[3], p[1]);
49 word3_add(&w2, &w1, &w0, z[4]);
50 ws[0] = w0;
51 w0 = w1;
52 w1 = w2;
53 w2 = 0;
54 word3_muladd(&w2, &w1, &w0, ws[2], p[3]);
55 word3_muladd(&w2, &w1, &w0, ws[3], p[2]);
56 word3_add(&w2, &w1, &w0, z[5]);
57 ws[1] = w0;
58 w0 = w1;
59 w1 = w2;
60 w2 = 0;
61 word3_muladd(&w2, &w1, &w0, ws[3], p[3]);
62 word3_add(&w2, &w1, &w0, z[6]);
63 ws[2] = w0;
64 w0 = w1;
65 w1 = w2;
66 w2 = 0;
67 word3_add(&w2, &w1, &w0, z[7]);
68 ws[3] = w0;
69 ws[4] = w1;
70 word borrow = bigint_sub3(z, ws, 4 + 1, p, 4);
71 CT::conditional_assign_mem(borrow, z, ws, 4);
72 clear_mem(z + 4, 4);
73}
74
75void bigint_monty_redc_6(word z[12], const word p[6], word p_dash, word ws[]) {
76 word w2 = 0, w1 = 0, w0 = 0;
77 w0 = z[0];
78 ws[0] = w0 * p_dash;
79 word3_muladd(&w2, &w1, &w0, ws[0], p[0]);
80 w0 = w1;
81 w1 = w2;
82 w2 = 0;
83 word3_muladd(&w2, &w1, &w0, ws[0], p[1]);
84 word3_add(&w2, &w1, &w0, z[1]);
85 ws[1] = w0 * p_dash;
86 word3_muladd(&w2, &w1, &w0, ws[1], p[0]);
87 w0 = w1;
88 w1 = w2;
89 w2 = 0;
90 word3_muladd(&w2, &w1, &w0, ws[0], p[2]);
91 word3_muladd(&w2, &w1, &w0, ws[1], p[1]);
92 word3_add(&w2, &w1, &w0, z[2]);
93 ws[2] = w0 * p_dash;
94 word3_muladd(&w2, &w1, &w0, ws[2], p[0]);
95 w0 = w1;
96 w1 = w2;
97 w2 = 0;
98 word3_muladd(&w2, &w1, &w0, ws[0], p[3]);
99 word3_muladd(&w2, &w1, &w0, ws[1], p[2]);
100 word3_muladd(&w2, &w1, &w0, ws[2], p[1]);
101 word3_add(&w2, &w1, &w0, z[3]);
102 ws[3] = w0 * p_dash;
103 word3_muladd(&w2, &w1, &w0, ws[3], p[0]);
104 w0 = w1;
105 w1 = w2;
106 w2 = 0;
107 word3_muladd(&w2, &w1, &w0, ws[0], p[4]);
108 word3_muladd(&w2, &w1, &w0, ws[1], p[3]);
109 word3_muladd(&w2, &w1, &w0, ws[2], p[2]);
110 word3_muladd(&w2, &w1, &w0, ws[3], p[1]);
111 word3_add(&w2, &w1, &w0, z[4]);
112 ws[4] = w0 * p_dash;
113 word3_muladd(&w2, &w1, &w0, ws[4], p[0]);
114 w0 = w1;
115 w1 = w2;
116 w2 = 0;
117 word3_muladd(&w2, &w1, &w0, ws[0], p[5]);
118 word3_muladd(&w2, &w1, &w0, ws[1], p[4]);
119 word3_muladd(&w2, &w1, &w0, ws[2], p[3]);
120 word3_muladd(&w2, &w1, &w0, ws[3], p[2]);
121 word3_muladd(&w2, &w1, &w0, ws[4], p[1]);
122 word3_add(&w2, &w1, &w0, z[5]);
123 ws[5] = w0 * p_dash;
124 word3_muladd(&w2, &w1, &w0, ws[5], p[0]);
125 w0 = w1;
126 w1 = w2;
127 w2 = 0;
128 word3_muladd(&w2, &w1, &w0, ws[1], p[5]);
129 word3_muladd(&w2, &w1, &w0, ws[2], p[4]);
130 word3_muladd(&w2, &w1, &w0, ws[3], p[3]);
131 word3_muladd(&w2, &w1, &w0, ws[4], p[2]);
132 word3_muladd(&w2, &w1, &w0, ws[5], p[1]);
133 word3_add(&w2, &w1, &w0, z[6]);
134 ws[0] = w0;
135 w0 = w1;
136 w1 = w2;
137 w2 = 0;
138 word3_muladd(&w2, &w1, &w0, ws[2], p[5]);
139 word3_muladd(&w2, &w1, &w0, ws[3], p[4]);
140 word3_muladd(&w2, &w1, &w0, ws[4], p[3]);
141 word3_muladd(&w2, &w1, &w0, ws[5], p[2]);
142 word3_add(&w2, &w1, &w0, z[7]);
143 ws[1] = w0;
144 w0 = w1;
145 w1 = w2;
146 w2 = 0;
147 word3_muladd(&w2, &w1, &w0, ws[3], p[5]);
148 word3_muladd(&w2, &w1, &w0, ws[4], p[4]);
149 word3_muladd(&w2, &w1, &w0, ws[5], p[3]);
150 word3_add(&w2, &w1, &w0, z[8]);
151 ws[2] = w0;
152 w0 = w1;
153 w1 = w2;
154 w2 = 0;
155 word3_muladd(&w2, &w1, &w0, ws[4], p[5]);
156 word3_muladd(&w2, &w1, &w0, ws[5], p[4]);
157 word3_add(&w2, &w1, &w0, z[9]);
158 ws[3] = w0;
159 w0 = w1;
160 w1 = w2;
161 w2 = 0;
162 word3_muladd(&w2, &w1, &w0, ws[5], p[5]);
163 word3_add(&w2, &w1, &w0, z[10]);
164 ws[4] = w0;
165 w0 = w1;
166 w1 = w2;
167 w2 = 0;
168 word3_add(&w2, &w1, &w0, z[11]);
169 ws[5] = w0;
170 ws[6] = w1;
171 word borrow = bigint_sub3(z, ws, 6 + 1, p, 6);
172 CT::conditional_assign_mem(borrow, z, ws, 6);
173 clear_mem(z + 6, 6);
174}
175
176void bigint_monty_redc_8(word z[16], const word p[8], word p_dash, word ws[]) {
177 word w2 = 0, w1 = 0, w0 = 0;
178 w0 = z[0];
179 ws[0] = w0 * p_dash;
180 word3_muladd(&w2, &w1, &w0, ws[0], p[0]);
181 w0 = w1;
182 w1 = w2;
183 w2 = 0;
184 word3_muladd(&w2, &w1, &w0, ws[0], p[1]);
185 word3_add(&w2, &w1, &w0, z[1]);
186 ws[1] = w0 * p_dash;
187 word3_muladd(&w2, &w1, &w0, ws[1], p[0]);
188 w0 = w1;
189 w1 = w2;
190 w2 = 0;
191 word3_muladd(&w2, &w1, &w0, ws[0], p[2]);
192 word3_muladd(&w2, &w1, &w0, ws[1], p[1]);
193 word3_add(&w2, &w1, &w0, z[2]);
194 ws[2] = w0 * p_dash;
195 word3_muladd(&w2, &w1, &w0, ws[2], p[0]);
196 w0 = w1;
197 w1 = w2;
198 w2 = 0;
199 word3_muladd(&w2, &w1, &w0, ws[0], p[3]);
200 word3_muladd(&w2, &w1, &w0, ws[1], p[2]);
201 word3_muladd(&w2, &w1, &w0, ws[2], p[1]);
202 word3_add(&w2, &w1, &w0, z[3]);
203 ws[3] = w0 * p_dash;
204 word3_muladd(&w2, &w1, &w0, ws[3], p[0]);
205 w0 = w1;
206 w1 = w2;
207 w2 = 0;
208 word3_muladd(&w2, &w1, &w0, ws[0], p[4]);
209 word3_muladd(&w2, &w1, &w0, ws[1], p[3]);
210 word3_muladd(&w2, &w1, &w0, ws[2], p[2]);
211 word3_muladd(&w2, &w1, &w0, ws[3], p[1]);
212 word3_add(&w2, &w1, &w0, z[4]);
213 ws[4] = w0 * p_dash;
214 word3_muladd(&w2, &w1, &w0, ws[4], p[0]);
215 w0 = w1;
216 w1 = w2;
217 w2 = 0;
218 word3_muladd(&w2, &w1, &w0, ws[0], p[5]);
219 word3_muladd(&w2, &w1, &w0, ws[1], p[4]);
220 word3_muladd(&w2, &w1, &w0, ws[2], p[3]);
221 word3_muladd(&w2, &w1, &w0, ws[3], p[2]);
222 word3_muladd(&w2, &w1, &w0, ws[4], p[1]);
223 word3_add(&w2, &w1, &w0, z[5]);
224 ws[5] = w0 * p_dash;
225 word3_muladd(&w2, &w1, &w0, ws[5], p[0]);
226 w0 = w1;
227 w1 = w2;
228 w2 = 0;
229 word3_muladd(&w2, &w1, &w0, ws[0], p[6]);
230 word3_muladd(&w2, &w1, &w0, ws[1], p[5]);
231 word3_muladd(&w2, &w1, &w0, ws[2], p[4]);
232 word3_muladd(&w2, &w1, &w0, ws[3], p[3]);
233 word3_muladd(&w2, &w1, &w0, ws[4], p[2]);
234 word3_muladd(&w2, &w1, &w0, ws[5], p[1]);
235 word3_add(&w2, &w1, &w0, z[6]);
236 ws[6] = w0 * p_dash;
237 word3_muladd(&w2, &w1, &w0, ws[6], p[0]);
238 w0 = w1;
239 w1 = w2;
240 w2 = 0;
241 word3_muladd(&w2, &w1, &w0, ws[0], p[7]);
242 word3_muladd(&w2, &w1, &w0, ws[1], p[6]);
243 word3_muladd(&w2, &w1, &w0, ws[2], p[5]);
244 word3_muladd(&w2, &w1, &w0, ws[3], p[4]);
245 word3_muladd(&w2, &w1, &w0, ws[4], p[3]);
246 word3_muladd(&w2, &w1, &w0, ws[5], p[2]);
247 word3_muladd(&w2, &w1, &w0, ws[6], p[1]);
248 word3_add(&w2, &w1, &w0, z[7]);
249 ws[7] = w0 * p_dash;
250 word3_muladd(&w2, &w1, &w0, ws[7], p[0]);
251 w0 = w1;
252 w1 = w2;
253 w2 = 0;
254 word3_muladd(&w2, &w1, &w0, ws[1], p[7]);
255 word3_muladd(&w2, &w1, &w0, ws[2], p[6]);
256 word3_muladd(&w2, &w1, &w0, ws[3], p[5]);
257 word3_muladd(&w2, &w1, &w0, ws[4], p[4]);
258 word3_muladd(&w2, &w1, &w0, ws[5], p[3]);
259 word3_muladd(&w2, &w1, &w0, ws[6], p[2]);
260 word3_muladd(&w2, &w1, &w0, ws[7], p[1]);
261 word3_add(&w2, &w1, &w0, z[8]);
262 ws[0] = w0;
263 w0 = w1;
264 w1 = w2;
265 w2 = 0;
266 word3_muladd(&w2, &w1, &w0, ws[2], p[7]);
267 word3_muladd(&w2, &w1, &w0, ws[3], p[6]);
268 word3_muladd(&w2, &w1, &w0, ws[4], p[5]);
269 word3_muladd(&w2, &w1, &w0, ws[5], p[4]);
270 word3_muladd(&w2, &w1, &w0, ws[6], p[3]);
271 word3_muladd(&w2, &w1, &w0, ws[7], p[2]);
272 word3_add(&w2, &w1, &w0, z[9]);
273 ws[1] = w0;
274 w0 = w1;
275 w1 = w2;
276 w2 = 0;
277 word3_muladd(&w2, &w1, &w0, ws[3], p[7]);
278 word3_muladd(&w2, &w1, &w0, ws[4], p[6]);
279 word3_muladd(&w2, &w1, &w0, ws[5], p[5]);
280 word3_muladd(&w2, &w1, &w0, ws[6], p[4]);
281 word3_muladd(&w2, &w1, &w0, ws[7], p[3]);
282 word3_add(&w2, &w1, &w0, z[10]);
283 ws[2] = w0;
284 w0 = w1;
285 w1 = w2;
286 w2 = 0;
287 word3_muladd(&w2, &w1, &w0, ws[4], p[7]);
288 word3_muladd(&w2, &w1, &w0, ws[5], p[6]);
289 word3_muladd(&w2, &w1, &w0, ws[6], p[5]);
290 word3_muladd(&w2, &w1, &w0, ws[7], p[4]);
291 word3_add(&w2, &w1, &w0, z[11]);
292 ws[3] = w0;
293 w0 = w1;
294 w1 = w2;
295 w2 = 0;
296 word3_muladd(&w2, &w1, &w0, ws[5], p[7]);
297 word3_muladd(&w2, &w1, &w0, ws[6], p[6]);
298 word3_muladd(&w2, &w1, &w0, ws[7], p[5]);
299 word3_add(&w2, &w1, &w0, z[12]);
300 ws[4] = w0;
301 w0 = w1;
302 w1 = w2;
303 w2 = 0;
304 word3_muladd(&w2, &w1, &w0, ws[6], p[7]);
305 word3_muladd(&w2, &w1, &w0, ws[7], p[6]);
306 word3_add(&w2, &w1, &w0, z[13]);
307 ws[5] = w0;
308 w0 = w1;
309 w1 = w2;
310 w2 = 0;
311 word3_muladd(&w2, &w1, &w0, ws[7], p[7]);
312 word3_add(&w2, &w1, &w0, z[14]);
313 ws[6] = w0;
314 w0 = w1;
315 w1 = w2;
316 w2 = 0;
317 word3_add(&w2, &w1, &w0, z[15]);
318 ws[7] = w0;
319 ws[8] = w1;
320 word borrow = bigint_sub3(z, ws, 8 + 1, p, 8);
321 CT::conditional_assign_mem(borrow, z, ws, 8);
322 clear_mem(z + 8, 8);
323}
324
325void bigint_monty_redc_16(word z[32], const word p[16], word p_dash, word ws[]) {
326 word w2 = 0, w1 = 0, w0 = 0;
327 w0 = z[0];
328 ws[0] = w0 * p_dash;
329 word3_muladd(&w2, &w1, &w0, ws[0], p[0]);
330 w0 = w1;
331 w1 = w2;
332 w2 = 0;
333 word3_muladd(&w2, &w1, &w0, ws[0], p[1]);
334 word3_add(&w2, &w1, &w0, z[1]);
335 ws[1] = w0 * p_dash;
336 word3_muladd(&w2, &w1, &w0, ws[1], p[0]);
337 w0 = w1;
338 w1 = w2;
339 w2 = 0;
340 word3_muladd(&w2, &w1, &w0, ws[0], p[2]);
341 word3_muladd(&w2, &w1, &w0, ws[1], p[1]);
342 word3_add(&w2, &w1, &w0, z[2]);
343 ws[2] = w0 * p_dash;
344 word3_muladd(&w2, &w1, &w0, ws[2], p[0]);
345 w0 = w1;
346 w1 = w2;
347 w2 = 0;
348 word3_muladd(&w2, &w1, &w0, ws[0], p[3]);
349 word3_muladd(&w2, &w1, &w0, ws[1], p[2]);
350 word3_muladd(&w2, &w1, &w0, ws[2], p[1]);
351 word3_add(&w2, &w1, &w0, z[3]);
352 ws[3] = w0 * p_dash;
353 word3_muladd(&w2, &w1, &w0, ws[3], p[0]);
354 w0 = w1;
355 w1 = w2;
356 w2 = 0;
357 word3_muladd(&w2, &w1, &w0, ws[0], p[4]);
358 word3_muladd(&w2, &w1, &w0, ws[1], p[3]);
359 word3_muladd(&w2, &w1, &w0, ws[2], p[2]);
360 word3_muladd(&w2, &w1, &w0, ws[3], p[1]);
361 word3_add(&w2, &w1, &w0, z[4]);
362 ws[4] = w0 * p_dash;
363 word3_muladd(&w2, &w1, &w0, ws[4], p[0]);
364 w0 = w1;
365 w1 = w2;
366 w2 = 0;
367 word3_muladd(&w2, &w1, &w0, ws[0], p[5]);
368 word3_muladd(&w2, &w1, &w0, ws[1], p[4]);
369 word3_muladd(&w2, &w1, &w0, ws[2], p[3]);
370 word3_muladd(&w2, &w1, &w0, ws[3], p[2]);
371 word3_muladd(&w2, &w1, &w0, ws[4], p[1]);
372 word3_add(&w2, &w1, &w0, z[5]);
373 ws[5] = w0 * p_dash;
374 word3_muladd(&w2, &w1, &w0, ws[5], p[0]);
375 w0 = w1;
376 w1 = w2;
377 w2 = 0;
378 word3_muladd(&w2, &w1, &w0, ws[0], p[6]);
379 word3_muladd(&w2, &w1, &w0, ws[1], p[5]);
380 word3_muladd(&w2, &w1, &w0, ws[2], p[4]);
381 word3_muladd(&w2, &w1, &w0, ws[3], p[3]);
382 word3_muladd(&w2, &w1, &w0, ws[4], p[2]);
383 word3_muladd(&w2, &w1, &w0, ws[5], p[1]);
384 word3_add(&w2, &w1, &w0, z[6]);
385 ws[6] = w0 * p_dash;
386 word3_muladd(&w2, &w1, &w0, ws[6], p[0]);
387 w0 = w1;
388 w1 = w2;
389 w2 = 0;
390 word3_muladd(&w2, &w1, &w0, ws[0], p[7]);
391 word3_muladd(&w2, &w1, &w0, ws[1], p[6]);
392 word3_muladd(&w2, &w1, &w0, ws[2], p[5]);
393 word3_muladd(&w2, &w1, &w0, ws[3], p[4]);
394 word3_muladd(&w2, &w1, &w0, ws[4], p[3]);
395 word3_muladd(&w2, &w1, &w0, ws[5], p[2]);
396 word3_muladd(&w2, &w1, &w0, ws[6], p[1]);
397 word3_add(&w2, &w1, &w0, z[7]);
398 ws[7] = w0 * p_dash;
399 word3_muladd(&w2, &w1, &w0, ws[7], p[0]);
400 w0 = w1;
401 w1 = w2;
402 w2 = 0;
403 word3_muladd(&w2, &w1, &w0, ws[0], p[8]);
404 word3_muladd(&w2, &w1, &w0, ws[1], p[7]);
405 word3_muladd(&w2, &w1, &w0, ws[2], p[6]);
406 word3_muladd(&w2, &w1, &w0, ws[3], p[5]);
407 word3_muladd(&w2, &w1, &w0, ws[4], p[4]);
408 word3_muladd(&w2, &w1, &w0, ws[5], p[3]);
409 word3_muladd(&w2, &w1, &w0, ws[6], p[2]);
410 word3_muladd(&w2, &w1, &w0, ws[7], p[1]);
411 word3_add(&w2, &w1, &w0, z[8]);
412 ws[8] = w0 * p_dash;
413 word3_muladd(&w2, &w1, &w0, ws[8], p[0]);
414 w0 = w1;
415 w1 = w2;
416 w2 = 0;
417 word3_muladd(&w2, &w1, &w0, ws[0], p[9]);
418 word3_muladd(&w2, &w1, &w0, ws[1], p[8]);
419 word3_muladd(&w2, &w1, &w0, ws[2], p[7]);
420 word3_muladd(&w2, &w1, &w0, ws[3], p[6]);
421 word3_muladd(&w2, &w1, &w0, ws[4], p[5]);
422 word3_muladd(&w2, &w1, &w0, ws[5], p[4]);
423 word3_muladd(&w2, &w1, &w0, ws[6], p[3]);
424 word3_muladd(&w2, &w1, &w0, ws[7], p[2]);
425 word3_muladd(&w2, &w1, &w0, ws[8], p[1]);
426 word3_add(&w2, &w1, &w0, z[9]);
427 ws[9] = w0 * p_dash;
428 word3_muladd(&w2, &w1, &w0, ws[9], p[0]);
429 w0 = w1;
430 w1 = w2;
431 w2 = 0;
432 word3_muladd(&w2, &w1, &w0, ws[0], p[10]);
433 word3_muladd(&w2, &w1, &w0, ws[1], p[9]);
434 word3_muladd(&w2, &w1, &w0, ws[2], p[8]);
435 word3_muladd(&w2, &w1, &w0, ws[3], p[7]);
436 word3_muladd(&w2, &w1, &w0, ws[4], p[6]);
437 word3_muladd(&w2, &w1, &w0, ws[5], p[5]);
438 word3_muladd(&w2, &w1, &w0, ws[6], p[4]);
439 word3_muladd(&w2, &w1, &w0, ws[7], p[3]);
440 word3_muladd(&w2, &w1, &w0, ws[8], p[2]);
441 word3_muladd(&w2, &w1, &w0, ws[9], p[1]);
442 word3_add(&w2, &w1, &w0, z[10]);
443 ws[10] = w0 * p_dash;
444 word3_muladd(&w2, &w1, &w0, ws[10], p[0]);
445 w0 = w1;
446 w1 = w2;
447 w2 = 0;
448 word3_muladd(&w2, &w1, &w0, ws[0], p[11]);
449 word3_muladd(&w2, &w1, &w0, ws[1], p[10]);
450 word3_muladd(&w2, &w1, &w0, ws[2], p[9]);
451 word3_muladd(&w2, &w1, &w0, ws[3], p[8]);
452 word3_muladd(&w2, &w1, &w0, ws[4], p[7]);
453 word3_muladd(&w2, &w1, &w0, ws[5], p[6]);
454 word3_muladd(&w2, &w1, &w0, ws[6], p[5]);
455 word3_muladd(&w2, &w1, &w0, ws[7], p[4]);
456 word3_muladd(&w2, &w1, &w0, ws[8], p[3]);
457 word3_muladd(&w2, &w1, &w0, ws[9], p[2]);
458 word3_muladd(&w2, &w1, &w0, ws[10], p[1]);
459 word3_add(&w2, &w1, &w0, z[11]);
460 ws[11] = w0 * p_dash;
461 word3_muladd(&w2, &w1, &w0, ws[11], p[0]);
462 w0 = w1;
463 w1 = w2;
464 w2 = 0;
465 word3_muladd(&w2, &w1, &w0, ws[0], p[12]);
466 word3_muladd(&w2, &w1, &w0, ws[1], p[11]);
467 word3_muladd(&w2, &w1, &w0, ws[2], p[10]);
468 word3_muladd(&w2, &w1, &w0, ws[3], p[9]);
469 word3_muladd(&w2, &w1, &w0, ws[4], p[8]);
470 word3_muladd(&w2, &w1, &w0, ws[5], p[7]);
471 word3_muladd(&w2, &w1, &w0, ws[6], p[6]);
472 word3_muladd(&w2, &w1, &w0, ws[7], p[5]);
473 word3_muladd(&w2, &w1, &w0, ws[8], p[4]);
474 word3_muladd(&w2, &w1, &w0, ws[9], p[3]);
475 word3_muladd(&w2, &w1, &w0, ws[10], p[2]);
476 word3_muladd(&w2, &w1, &w0, ws[11], p[1]);
477 word3_add(&w2, &w1, &w0, z[12]);
478 ws[12] = w0 * p_dash;
479 word3_muladd(&w2, &w1, &w0, ws[12], p[0]);
480 w0 = w1;
481 w1 = w2;
482 w2 = 0;
483 word3_muladd(&w2, &w1, &w0, ws[0], p[13]);
484 word3_muladd(&w2, &w1, &w0, ws[1], p[12]);
485 word3_muladd(&w2, &w1, &w0, ws[2], p[11]);
486 word3_muladd(&w2, &w1, &w0, ws[3], p[10]);
487 word3_muladd(&w2, &w1, &w0, ws[4], p[9]);
488 word3_muladd(&w2, &w1, &w0, ws[5], p[8]);
489 word3_muladd(&w2, &w1, &w0, ws[6], p[7]);
490 word3_muladd(&w2, &w1, &w0, ws[7], p[6]);
491 word3_muladd(&w2, &w1, &w0, ws[8], p[5]);
492 word3_muladd(&w2, &w1, &w0, ws[9], p[4]);
493 word3_muladd(&w2, &w1, &w0, ws[10], p[3]);
494 word3_muladd(&w2, &w1, &w0, ws[11], p[2]);
495 word3_muladd(&w2, &w1, &w0, ws[12], p[1]);
496 word3_add(&w2, &w1, &w0, z[13]);
497 ws[13] = w0 * p_dash;
498 word3_muladd(&w2, &w1, &w0, ws[13], p[0]);
499 w0 = w1;
500 w1 = w2;
501 w2 = 0;
502 word3_muladd(&w2, &w1, &w0, ws[0], p[14]);
503 word3_muladd(&w2, &w1, &w0, ws[1], p[13]);
504 word3_muladd(&w2, &w1, &w0, ws[2], p[12]);
505 word3_muladd(&w2, &w1, &w0, ws[3], p[11]);
506 word3_muladd(&w2, &w1, &w0, ws[4], p[10]);
507 word3_muladd(&w2, &w1, &w0, ws[5], p[9]);
508 word3_muladd(&w2, &w1, &w0, ws[6], p[8]);
509 word3_muladd(&w2, &w1, &w0, ws[7], p[7]);
510 word3_muladd(&w2, &w1, &w0, ws[8], p[6]);
511 word3_muladd(&w2, &w1, &w0, ws[9], p[5]);
512 word3_muladd(&w2, &w1, &w0, ws[10], p[4]);
513 word3_muladd(&w2, &w1, &w0, ws[11], p[3]);
514 word3_muladd(&w2, &w1, &w0, ws[12], p[2]);
515 word3_muladd(&w2, &w1, &w0, ws[13], p[1]);
516 word3_add(&w2, &w1, &w0, z[14]);
517 ws[14] = w0 * p_dash;
518 word3_muladd(&w2, &w1, &w0, ws[14], p[0]);
519 w0 = w1;
520 w1 = w2;
521 w2 = 0;
522 word3_muladd(&w2, &w1, &w0, ws[0], p[15]);
523 word3_muladd(&w2, &w1, &w0, ws[1], p[14]);
524 word3_muladd(&w2, &w1, &w0, ws[2], p[13]);
525 word3_muladd(&w2, &w1, &w0, ws[3], p[12]);
526 word3_muladd(&w2, &w1, &w0, ws[4], p[11]);
527 word3_muladd(&w2, &w1, &w0, ws[5], p[10]);
528 word3_muladd(&w2, &w1, &w0, ws[6], p[9]);
529 word3_muladd(&w2, &w1, &w0, ws[7], p[8]);
530 word3_muladd(&w2, &w1, &w0, ws[8], p[7]);
531 word3_muladd(&w2, &w1, &w0, ws[9], p[6]);
532 word3_muladd(&w2, &w1, &w0, ws[10], p[5]);
533 word3_muladd(&w2, &w1, &w0, ws[11], p[4]);
534 word3_muladd(&w2, &w1, &w0, ws[12], p[3]);
535 word3_muladd(&w2, &w1, &w0, ws[13], p[2]);
536 word3_muladd(&w2, &w1, &w0, ws[14], p[1]);
537 word3_add(&w2, &w1, &w0, z[15]);
538 ws[15] = w0 * p_dash;
539 word3_muladd(&w2, &w1, &w0, ws[15], p[0]);
540 w0 = w1;
541 w1 = w2;
542 w2 = 0;
543 word3_muladd(&w2, &w1, &w0, ws[1], p[15]);
544 word3_muladd(&w2, &w1, &w0, ws[2], p[14]);
545 word3_muladd(&w2, &w1, &w0, ws[3], p[13]);
546 word3_muladd(&w2, &w1, &w0, ws[4], p[12]);
547 word3_muladd(&w2, &w1, &w0, ws[5], p[11]);
548 word3_muladd(&w2, &w1, &w0, ws[6], p[10]);
549 word3_muladd(&w2, &w1, &w0, ws[7], p[9]);
550 word3_muladd(&w2, &w1, &w0, ws[8], p[8]);
551 word3_muladd(&w2, &w1, &w0, ws[9], p[7]);
552 word3_muladd(&w2, &w1, &w0, ws[10], p[6]);
553 word3_muladd(&w2, &w1, &w0, ws[11], p[5]);
554 word3_muladd(&w2, &w1, &w0, ws[12], p[4]);
555 word3_muladd(&w2, &w1, &w0, ws[13], p[3]);
556 word3_muladd(&w2, &w1, &w0, ws[14], p[2]);
557 word3_muladd(&w2, &w1, &w0, ws[15], p[1]);
558 word3_add(&w2, &w1, &w0, z[16]);
559 ws[0] = w0;
560 w0 = w1;
561 w1 = w2;
562 w2 = 0;
563 word3_muladd(&w2, &w1, &w0, ws[2], p[15]);
564 word3_muladd(&w2, &w1, &w0, ws[3], p[14]);
565 word3_muladd(&w2, &w1, &w0, ws[4], p[13]);
566 word3_muladd(&w2, &w1, &w0, ws[5], p[12]);
567 word3_muladd(&w2, &w1, &w0, ws[6], p[11]);
568 word3_muladd(&w2, &w1, &w0, ws[7], p[10]);
569 word3_muladd(&w2, &w1, &w0, ws[8], p[9]);
570 word3_muladd(&w2, &w1, &w0, ws[9], p[8]);
571 word3_muladd(&w2, &w1, &w0, ws[10], p[7]);
572 word3_muladd(&w2, &w1, &w0, ws[11], p[6]);
573 word3_muladd(&w2, &w1, &w0, ws[12], p[5]);
574 word3_muladd(&w2, &w1, &w0, ws[13], p[4]);
575 word3_muladd(&w2, &w1, &w0, ws[14], p[3]);
576 word3_muladd(&w2, &w1, &w0, ws[15], p[2]);
577 word3_add(&w2, &w1, &w0, z[17]);
578 ws[1] = w0;
579 w0 = w1;
580 w1 = w2;
581 w2 = 0;
582 word3_muladd(&w2, &w1, &w0, ws[3], p[15]);
583 word3_muladd(&w2, &w1, &w0, ws[4], p[14]);
584 word3_muladd(&w2, &w1, &w0, ws[5], p[13]);
585 word3_muladd(&w2, &w1, &w0, ws[6], p[12]);
586 word3_muladd(&w2, &w1, &w0, ws[7], p[11]);
587 word3_muladd(&w2, &w1, &w0, ws[8], p[10]);
588 word3_muladd(&w2, &w1, &w0, ws[9], p[9]);
589 word3_muladd(&w2, &w1, &w0, ws[10], p[8]);
590 word3_muladd(&w2, &w1, &w0, ws[11], p[7]);
591 word3_muladd(&w2, &w1, &w0, ws[12], p[6]);
592 word3_muladd(&w2, &w1, &w0, ws[13], p[5]);
593 word3_muladd(&w2, &w1, &w0, ws[14], p[4]);
594 word3_muladd(&w2, &w1, &w0, ws[15], p[3]);
595 word3_add(&w2, &w1, &w0, z[18]);
596 ws[2] = w0;
597 w0 = w1;
598 w1 = w2;
599 w2 = 0;
600 word3_muladd(&w2, &w1, &w0, ws[4], p[15]);
601 word3_muladd(&w2, &w1, &w0, ws[5], p[14]);
602 word3_muladd(&w2, &w1, &w0, ws[6], p[13]);
603 word3_muladd(&w2, &w1, &w0, ws[7], p[12]);
604 word3_muladd(&w2, &w1, &w0, ws[8], p[11]);
605 word3_muladd(&w2, &w1, &w0, ws[9], p[10]);
606 word3_muladd(&w2, &w1, &w0, ws[10], p[9]);
607 word3_muladd(&w2, &w1, &w0, ws[11], p[8]);
608 word3_muladd(&w2, &w1, &w0, ws[12], p[7]);
609 word3_muladd(&w2, &w1, &w0, ws[13], p[6]);
610 word3_muladd(&w2, &w1, &w0, ws[14], p[5]);
611 word3_muladd(&w2, &w1, &w0, ws[15], p[4]);
612 word3_add(&w2, &w1, &w0, z[19]);
613 ws[3] = w0;
614 w0 = w1;
615 w1 = w2;
616 w2 = 0;
617 word3_muladd(&w2, &w1, &w0, ws[5], p[15]);
618 word3_muladd(&w2, &w1, &w0, ws[6], p[14]);
619 word3_muladd(&w2, &w1, &w0, ws[7], p[13]);
620 word3_muladd(&w2, &w1, &w0, ws[8], p[12]);
621 word3_muladd(&w2, &w1, &w0, ws[9], p[11]);
622 word3_muladd(&w2, &w1, &w0, ws[10], p[10]);
623 word3_muladd(&w2, &w1, &w0, ws[11], p[9]);
624 word3_muladd(&w2, &w1, &w0, ws[12], p[8]);
625 word3_muladd(&w2, &w1, &w0, ws[13], p[7]);
626 word3_muladd(&w2, &w1, &w0, ws[14], p[6]);
627 word3_muladd(&w2, &w1, &w0, ws[15], p[5]);
628 word3_add(&w2, &w1, &w0, z[20]);
629 ws[4] = w0;
630 w0 = w1;
631 w1 = w2;
632 w2 = 0;
633 word3_muladd(&w2, &w1, &w0, ws[6], p[15]);
634 word3_muladd(&w2, &w1, &w0, ws[7], p[14]);
635 word3_muladd(&w2, &w1, &w0, ws[8], p[13]);
636 word3_muladd(&w2, &w1, &w0, ws[9], p[12]);
637 word3_muladd(&w2, &w1, &w0, ws[10], p[11]);
638 word3_muladd(&w2, &w1, &w0, ws[11], p[10]);
639 word3_muladd(&w2, &w1, &w0, ws[12], p[9]);
640 word3_muladd(&w2, &w1, &w0, ws[13], p[8]);
641 word3_muladd(&w2, &w1, &w0, ws[14], p[7]);
642 word3_muladd(&w2, &w1, &w0, ws[15], p[6]);
643 word3_add(&w2, &w1, &w0, z[21]);
644 ws[5] = w0;
645 w0 = w1;
646 w1 = w2;
647 w2 = 0;
648 word3_muladd(&w2, &w1, &w0, ws[7], p[15]);
649 word3_muladd(&w2, &w1, &w0, ws[8], p[14]);
650 word3_muladd(&w2, &w1, &w0, ws[9], p[13]);
651 word3_muladd(&w2, &w1, &w0, ws[10], p[12]);
652 word3_muladd(&w2, &w1, &w0, ws[11], p[11]);
653 word3_muladd(&w2, &w1, &w0, ws[12], p[10]);
654 word3_muladd(&w2, &w1, &w0, ws[13], p[9]);
655 word3_muladd(&w2, &w1, &w0, ws[14], p[8]);
656 word3_muladd(&w2, &w1, &w0, ws[15], p[7]);
657 word3_add(&w2, &w1, &w0, z[22]);
658 ws[6] = w0;
659 w0 = w1;
660 w1 = w2;
661 w2 = 0;
662 word3_muladd(&w2, &w1, &w0, ws[8], p[15]);
663 word3_muladd(&w2, &w1, &w0, ws[9], p[14]);
664 word3_muladd(&w2, &w1, &w0, ws[10], p[13]);
665 word3_muladd(&w2, &w1, &w0, ws[11], p[12]);
666 word3_muladd(&w2, &w1, &w0, ws[12], p[11]);
667 word3_muladd(&w2, &w1, &w0, ws[13], p[10]);
668 word3_muladd(&w2, &w1, &w0, ws[14], p[9]);
669 word3_muladd(&w2, &w1, &w0, ws[15], p[8]);
670 word3_add(&w2, &w1, &w0, z[23]);
671 ws[7] = w0;
672 w0 = w1;
673 w1 = w2;
674 w2 = 0;
675 word3_muladd(&w2, &w1, &w0, ws[9], p[15]);
676 word3_muladd(&w2, &w1, &w0, ws[10], p[14]);
677 word3_muladd(&w2, &w1, &w0, ws[11], p[13]);
678 word3_muladd(&w2, &w1, &w0, ws[12], p[12]);
679 word3_muladd(&w2, &w1, &w0, ws[13], p[11]);
680 word3_muladd(&w2, &w1, &w0, ws[14], p[10]);
681 word3_muladd(&w2, &w1, &w0, ws[15], p[9]);
682 word3_add(&w2, &w1, &w0, z[24]);
683 ws[8] = w0;
684 w0 = w1;
685 w1 = w2;
686 w2 = 0;
687 word3_muladd(&w2, &w1, &w0, ws[10], p[15]);
688 word3_muladd(&w2, &w1, &w0, ws[11], p[14]);
689 word3_muladd(&w2, &w1, &w0, ws[12], p[13]);
690 word3_muladd(&w2, &w1, &w0, ws[13], p[12]);
691 word3_muladd(&w2, &w1, &w0, ws[14], p[11]);
692 word3_muladd(&w2, &w1, &w0, ws[15], p[10]);
693 word3_add(&w2, &w1, &w0, z[25]);
694 ws[9] = w0;
695 w0 = w1;
696 w1 = w2;
697 w2 = 0;
698 word3_muladd(&w2, &w1, &w0, ws[11], p[15]);
699 word3_muladd(&w2, &w1, &w0, ws[12], p[14]);
700 word3_muladd(&w2, &w1, &w0, ws[13], p[13]);
701 word3_muladd(&w2, &w1, &w0, ws[14], p[12]);
702 word3_muladd(&w2, &w1, &w0, ws[15], p[11]);
703 word3_add(&w2, &w1, &w0, z[26]);
704 ws[10] = w0;
705 w0 = w1;
706 w1 = w2;
707 w2 = 0;
708 word3_muladd(&w2, &w1, &w0, ws[12], p[15]);
709 word3_muladd(&w2, &w1, &w0, ws[13], p[14]);
710 word3_muladd(&w2, &w1, &w0, ws[14], p[13]);
711 word3_muladd(&w2, &w1, &w0, ws[15], p[12]);
712 word3_add(&w2, &w1, &w0, z[27]);
713 ws[11] = w0;
714 w0 = w1;
715 w1 = w2;
716 w2 = 0;
717 word3_muladd(&w2, &w1, &w0, ws[13], p[15]);
718 word3_muladd(&w2, &w1, &w0, ws[14], p[14]);
719 word3_muladd(&w2, &w1, &w0, ws[15], p[13]);
720 word3_add(&w2, &w1, &w0, z[28]);
721 ws[12] = w0;
722 w0 = w1;
723 w1 = w2;
724 w2 = 0;
725 word3_muladd(&w2, &w1, &w0, ws[14], p[15]);
726 word3_muladd(&w2, &w1, &w0, ws[15], p[14]);
727 word3_add(&w2, &w1, &w0, z[29]);
728 ws[13] = w0;
729 w0 = w1;
730 w1 = w2;
731 w2 = 0;
732 word3_muladd(&w2, &w1, &w0, ws[15], p[15]);
733 word3_add(&w2, &w1, &w0, z[30]);
734 ws[14] = w0;
735 w0 = w1;
736 w1 = w2;
737 w2 = 0;
738 word3_add(&w2, &w1, &w0, z[31]);
739 ws[15] = w0;
740 ws[16] = w1;
741 word borrow = bigint_sub3(z, ws, 16 + 1, p, 16);
742 CT::conditional_assign_mem(borrow, z, ws, 16);
743 clear_mem(z + 16, 16);
744}
745
746void bigint_monty_redc_24(word z[48], const word p[24], word p_dash, word ws[]) {
747 word w2 = 0, w1 = 0, w0 = 0;
748 w0 = z[0];
749 ws[0] = w0 * p_dash;
750 word3_muladd(&w2, &w1, &w0, ws[0], p[0]);
751 w0 = w1;
752 w1 = w2;
753 w2 = 0;
754 word3_muladd(&w2, &w1, &w0, ws[0], p[1]);
755 word3_add(&w2, &w1, &w0, z[1]);
756 ws[1] = w0 * p_dash;
757 word3_muladd(&w2, &w1, &w0, ws[1], p[0]);
758 w0 = w1;
759 w1 = w2;
760 w2 = 0;
761 word3_muladd(&w2, &w1, &w0, ws[0], p[2]);
762 word3_muladd(&w2, &w1, &w0, ws[1], p[1]);
763 word3_add(&w2, &w1, &w0, z[2]);
764 ws[2] = w0 * p_dash;
765 word3_muladd(&w2, &w1, &w0, ws[2], p[0]);
766 w0 = w1;
767 w1 = w2;
768 w2 = 0;
769 word3_muladd(&w2, &w1, &w0, ws[0], p[3]);
770 word3_muladd(&w2, &w1, &w0, ws[1], p[2]);
771 word3_muladd(&w2, &w1, &w0, ws[2], p[1]);
772 word3_add(&w2, &w1, &w0, z[3]);
773 ws[3] = w0 * p_dash;
774 word3_muladd(&w2, &w1, &w0, ws[3], p[0]);
775 w0 = w1;
776 w1 = w2;
777 w2 = 0;
778 word3_muladd(&w2, &w1, &w0, ws[0], p[4]);
779 word3_muladd(&w2, &w1, &w0, ws[1], p[3]);
780 word3_muladd(&w2, &w1, &w0, ws[2], p[2]);
781 word3_muladd(&w2, &w1, &w0, ws[3], p[1]);
782 word3_add(&w2, &w1, &w0, z[4]);
783 ws[4] = w0 * p_dash;
784 word3_muladd(&w2, &w1, &w0, ws[4], p[0]);
785 w0 = w1;
786 w1 = w2;
787 w2 = 0;
788 word3_muladd(&w2, &w1, &w0, ws[0], p[5]);
789 word3_muladd(&w2, &w1, &w0, ws[1], p[4]);
790 word3_muladd(&w2, &w1, &w0, ws[2], p[3]);
791 word3_muladd(&w2, &w1, &w0, ws[3], p[2]);
792 word3_muladd(&w2, &w1, &w0, ws[4], p[1]);
793 word3_add(&w2, &w1, &w0, z[5]);
794 ws[5] = w0 * p_dash;
795 word3_muladd(&w2, &w1, &w0, ws[5], p[0]);
796 w0 = w1;
797 w1 = w2;
798 w2 = 0;
799 word3_muladd(&w2, &w1, &w0, ws[0], p[6]);
800 word3_muladd(&w2, &w1, &w0, ws[1], p[5]);
801 word3_muladd(&w2, &w1, &w0, ws[2], p[4]);
802 word3_muladd(&w2, &w1, &w0, ws[3], p[3]);
803 word3_muladd(&w2, &w1, &w0, ws[4], p[2]);
804 word3_muladd(&w2, &w1, &w0, ws[5], p[1]);
805 word3_add(&w2, &w1, &w0, z[6]);
806 ws[6] = w0 * p_dash;
807 word3_muladd(&w2, &w1, &w0, ws[6], p[0]);
808 w0 = w1;
809 w1 = w2;
810 w2 = 0;
811 word3_muladd(&w2, &w1, &w0, ws[0], p[7]);
812 word3_muladd(&w2, &w1, &w0, ws[1], p[6]);
813 word3_muladd(&w2, &w1, &w0, ws[2], p[5]);
814 word3_muladd(&w2, &w1, &w0, ws[3], p[4]);
815 word3_muladd(&w2, &w1, &w0, ws[4], p[3]);
816 word3_muladd(&w2, &w1, &w0, ws[5], p[2]);
817 word3_muladd(&w2, &w1, &w0, ws[6], p[1]);
818 word3_add(&w2, &w1, &w0, z[7]);
819 ws[7] = w0 * p_dash;
820 word3_muladd(&w2, &w1, &w0, ws[7], p[0]);
821 w0 = w1;
822 w1 = w2;
823 w2 = 0;
824 word3_muladd(&w2, &w1, &w0, ws[0], p[8]);
825 word3_muladd(&w2, &w1, &w0, ws[1], p[7]);
826 word3_muladd(&w2, &w1, &w0, ws[2], p[6]);
827 word3_muladd(&w2, &w1, &w0, ws[3], p[5]);
828 word3_muladd(&w2, &w1, &w0, ws[4], p[4]);
829 word3_muladd(&w2, &w1, &w0, ws[5], p[3]);
830 word3_muladd(&w2, &w1, &w0, ws[6], p[2]);
831 word3_muladd(&w2, &w1, &w0, ws[7], p[1]);
832 word3_add(&w2, &w1, &w0, z[8]);
833 ws[8] = w0 * p_dash;
834 word3_muladd(&w2, &w1, &w0, ws[8], p[0]);
835 w0 = w1;
836 w1 = w2;
837 w2 = 0;
838 word3_muladd(&w2, &w1, &w0, ws[0], p[9]);
839 word3_muladd(&w2, &w1, &w0, ws[1], p[8]);
840 word3_muladd(&w2, &w1, &w0, ws[2], p[7]);
841 word3_muladd(&w2, &w1, &w0, ws[3], p[6]);
842 word3_muladd(&w2, &w1, &w0, ws[4], p[5]);
843 word3_muladd(&w2, &w1, &w0, ws[5], p[4]);
844 word3_muladd(&w2, &w1, &w0, ws[6], p[3]);
845 word3_muladd(&w2, &w1, &w0, ws[7], p[2]);
846 word3_muladd(&w2, &w1, &w0, ws[8], p[1]);
847 word3_add(&w2, &w1, &w0, z[9]);
848 ws[9] = w0 * p_dash;
849 word3_muladd(&w2, &w1, &w0, ws[9], p[0]);
850 w0 = w1;
851 w1 = w2;
852 w2 = 0;
853 word3_muladd(&w2, &w1, &w0, ws[0], p[10]);
854 word3_muladd(&w2, &w1, &w0, ws[1], p[9]);
855 word3_muladd(&w2, &w1, &w0, ws[2], p[8]);
856 word3_muladd(&w2, &w1, &w0, ws[3], p[7]);
857 word3_muladd(&w2, &w1, &w0, ws[4], p[6]);
858 word3_muladd(&w2, &w1, &w0, ws[5], p[5]);
859 word3_muladd(&w2, &w1, &w0, ws[6], p[4]);
860 word3_muladd(&w2, &w1, &w0, ws[7], p[3]);
861 word3_muladd(&w2, &w1, &w0, ws[8], p[2]);
862 word3_muladd(&w2, &w1, &w0, ws[9], p[1]);
863 word3_add(&w2, &w1, &w0, z[10]);
864 ws[10] = w0 * p_dash;
865 word3_muladd(&w2, &w1, &w0, ws[10], p[0]);
866 w0 = w1;
867 w1 = w2;
868 w2 = 0;
869 word3_muladd(&w2, &w1, &w0, ws[0], p[11]);
870 word3_muladd(&w2, &w1, &w0, ws[1], p[10]);
871 word3_muladd(&w2, &w1, &w0, ws[2], p[9]);
872 word3_muladd(&w2, &w1, &w0, ws[3], p[8]);
873 word3_muladd(&w2, &w1, &w0, ws[4], p[7]);
874 word3_muladd(&w2, &w1, &w0, ws[5], p[6]);
875 word3_muladd(&w2, &w1, &w0, ws[6], p[5]);
876 word3_muladd(&w2, &w1, &w0, ws[7], p[4]);
877 word3_muladd(&w2, &w1, &w0, ws[8], p[3]);
878 word3_muladd(&w2, &w1, &w0, ws[9], p[2]);
879 word3_muladd(&w2, &w1, &w0, ws[10], p[1]);
880 word3_add(&w2, &w1, &w0, z[11]);
881 ws[11] = w0 * p_dash;
882 word3_muladd(&w2, &w1, &w0, ws[11], p[0]);
883 w0 = w1;
884 w1 = w2;
885 w2 = 0;
886 word3_muladd(&w2, &w1, &w0, ws[0], p[12]);
887 word3_muladd(&w2, &w1, &w0, ws[1], p[11]);
888 word3_muladd(&w2, &w1, &w0, ws[2], p[10]);
889 word3_muladd(&w2, &w1, &w0, ws[3], p[9]);
890 word3_muladd(&w2, &w1, &w0, ws[4], p[8]);
891 word3_muladd(&w2, &w1, &w0, ws[5], p[7]);
892 word3_muladd(&w2, &w1, &w0, ws[6], p[6]);
893 word3_muladd(&w2, &w1, &w0, ws[7], p[5]);
894 word3_muladd(&w2, &w1, &w0, ws[8], p[4]);
895 word3_muladd(&w2, &w1, &w0, ws[9], p[3]);
896 word3_muladd(&w2, &w1, &w0, ws[10], p[2]);
897 word3_muladd(&w2, &w1, &w0, ws[11], p[1]);
898 word3_add(&w2, &w1, &w0, z[12]);
899 ws[12] = w0 * p_dash;
900 word3_muladd(&w2, &w1, &w0, ws[12], p[0]);
901 w0 = w1;
902 w1 = w2;
903 w2 = 0;
904 word3_muladd(&w2, &w1, &w0, ws[0], p[13]);
905 word3_muladd(&w2, &w1, &w0, ws[1], p[12]);
906 word3_muladd(&w2, &w1, &w0, ws[2], p[11]);
907 word3_muladd(&w2, &w1, &w0, ws[3], p[10]);
908 word3_muladd(&w2, &w1, &w0, ws[4], p[9]);
909 word3_muladd(&w2, &w1, &w0, ws[5], p[8]);
910 word3_muladd(&w2, &w1, &w0, ws[6], p[7]);
911 word3_muladd(&w2, &w1, &w0, ws[7], p[6]);
912 word3_muladd(&w2, &w1, &w0, ws[8], p[5]);
913 word3_muladd(&w2, &w1, &w0, ws[9], p[4]);
914 word3_muladd(&w2, &w1, &w0, ws[10], p[3]);
915 word3_muladd(&w2, &w1, &w0, ws[11], p[2]);
916 word3_muladd(&w2, &w1, &w0, ws[12], p[1]);
917 word3_add(&w2, &w1, &w0, z[13]);
918 ws[13] = w0 * p_dash;
919 word3_muladd(&w2, &w1, &w0, ws[13], p[0]);
920 w0 = w1;
921 w1 = w2;
922 w2 = 0;
923 word3_muladd(&w2, &w1, &w0, ws[0], p[14]);
924 word3_muladd(&w2, &w1, &w0, ws[1], p[13]);
925 word3_muladd(&w2, &w1, &w0, ws[2], p[12]);
926 word3_muladd(&w2, &w1, &w0, ws[3], p[11]);
927 word3_muladd(&w2, &w1, &w0, ws[4], p[10]);
928 word3_muladd(&w2, &w1, &w0, ws[5], p[9]);
929 word3_muladd(&w2, &w1, &w0, ws[6], p[8]);
930 word3_muladd(&w2, &w1, &w0, ws[7], p[7]);
931 word3_muladd(&w2, &w1, &w0, ws[8], p[6]);
932 word3_muladd(&w2, &w1, &w0, ws[9], p[5]);
933 word3_muladd(&w2, &w1, &w0, ws[10], p[4]);
934 word3_muladd(&w2, &w1, &w0, ws[11], p[3]);
935 word3_muladd(&w2, &w1, &w0, ws[12], p[2]);
936 word3_muladd(&w2, &w1, &w0, ws[13], p[1]);
937 word3_add(&w2, &w1, &w0, z[14]);
938 ws[14] = w0 * p_dash;
939 word3_muladd(&w2, &w1, &w0, ws[14], p[0]);
940 w0 = w1;
941 w1 = w2;
942 w2 = 0;
943 word3_muladd(&w2, &w1, &w0, ws[0], p[15]);
944 word3_muladd(&w2, &w1, &w0, ws[1], p[14]);
945 word3_muladd(&w2, &w1, &w0, ws[2], p[13]);
946 word3_muladd(&w2, &w1, &w0, ws[3], p[12]);
947 word3_muladd(&w2, &w1, &w0, ws[4], p[11]);
948 word3_muladd(&w2, &w1, &w0, ws[5], p[10]);
949 word3_muladd(&w2, &w1, &w0, ws[6], p[9]);
950 word3_muladd(&w2, &w1, &w0, ws[7], p[8]);
951 word3_muladd(&w2, &w1, &w0, ws[8], p[7]);
952 word3_muladd(&w2, &w1, &w0, ws[9], p[6]);
953 word3_muladd(&w2, &w1, &w0, ws[10], p[5]);
954 word3_muladd(&w2, &w1, &w0, ws[11], p[4]);
955 word3_muladd(&w2, &w1, &w0, ws[12], p[3]);
956 word3_muladd(&w2, &w1, &w0, ws[13], p[2]);
957 word3_muladd(&w2, &w1, &w0, ws[14], p[1]);
958 word3_add(&w2, &w1, &w0, z[15]);
959 ws[15] = w0 * p_dash;
960 word3_muladd(&w2, &w1, &w0, ws[15], p[0]);
961 w0 = w1;
962 w1 = w2;
963 w2 = 0;
964 word3_muladd(&w2, &w1, &w0, ws[0], p[16]);
965 word3_muladd(&w2, &w1, &w0, ws[1], p[15]);
966 word3_muladd(&w2, &w1, &w0, ws[2], p[14]);
967 word3_muladd(&w2, &w1, &w0, ws[3], p[13]);
968 word3_muladd(&w2, &w1, &w0, ws[4], p[12]);
969 word3_muladd(&w2, &w1, &w0, ws[5], p[11]);
970 word3_muladd(&w2, &w1, &w0, ws[6], p[10]);
971 word3_muladd(&w2, &w1, &w0, ws[7], p[9]);
972 word3_muladd(&w2, &w1, &w0, ws[8], p[8]);
973 word3_muladd(&w2, &w1, &w0, ws[9], p[7]);
974 word3_muladd(&w2, &w1, &w0, ws[10], p[6]);
975 word3_muladd(&w2, &w1, &w0, ws[11], p[5]);
976 word3_muladd(&w2, &w1, &w0, ws[12], p[4]);
977 word3_muladd(&w2, &w1, &w0, ws[13], p[3]);
978 word3_muladd(&w2, &w1, &w0, ws[14], p[2]);
979 word3_muladd(&w2, &w1, &w0, ws[15], p[1]);
980 word3_add(&w2, &w1, &w0, z[16]);
981 ws[16] = w0 * p_dash;
982 word3_muladd(&w2, &w1, &w0, ws[16], p[0]);
983 w0 = w1;
984 w1 = w2;
985 w2 = 0;
986 word3_muladd(&w2, &w1, &w0, ws[0], p[17]);
987 word3_muladd(&w2, &w1, &w0, ws[1], p[16]);
988 word3_muladd(&w2, &w1, &w0, ws[2], p[15]);
989 word3_muladd(&w2, &w1, &w0, ws[3], p[14]);
990 word3_muladd(&w2, &w1, &w0, ws[4], p[13]);
991 word3_muladd(&w2, &w1, &w0, ws[5], p[12]);
992 word3_muladd(&w2, &w1, &w0, ws[6], p[11]);
993 word3_muladd(&w2, &w1, &w0, ws[7], p[10]);
994 word3_muladd(&w2, &w1, &w0, ws[8], p[9]);
995 word3_muladd(&w2, &w1, &w0, ws[9], p[8]);
996 word3_muladd(&w2, &w1, &w0, ws[10], p[7]);
997 word3_muladd(&w2, &w1, &w0, ws[11], p[6]);
998 word3_muladd(&w2, &w1, &w0, ws[12], p[5]);
999 word3_muladd(&w2, &w1, &w0, ws[13], p[4]);
1000 word3_muladd(&w2, &w1, &w0, ws[14], p[3]);
1001 word3_muladd(&w2, &w1, &w0, ws[15], p[2]);
1002 word3_muladd(&w2, &w1, &w0, ws[16], p[1]);
1003 word3_add(&w2, &w1, &w0, z[17]);
1004 ws[17] = w0 * p_dash;
1005 word3_muladd(&w2, &w1, &w0, ws[17], p[0]);
1006 w0 = w1;
1007 w1 = w2;
1008 w2 = 0;
1009 word3_muladd(&w2, &w1, &w0, ws[0], p[18]);
1010 word3_muladd(&w2, &w1, &w0, ws[1], p[17]);
1011 word3_muladd(&w2, &w1, &w0, ws[2], p[16]);
1012 word3_muladd(&w2, &w1, &w0, ws[3], p[15]);
1013 word3_muladd(&w2, &w1, &w0, ws[4], p[14]);
1014 word3_muladd(&w2, &w1, &w0, ws[5], p[13]);
1015 word3_muladd(&w2, &w1, &w0, ws[6], p[12]);
1016 word3_muladd(&w2, &w1, &w0, ws[7], p[11]);
1017 word3_muladd(&w2, &w1, &w0, ws[8], p[10]);
1018 word3_muladd(&w2, &w1, &w0, ws[9], p[9]);
1019 word3_muladd(&w2, &w1, &w0, ws[10], p[8]);
1020 word3_muladd(&w2, &w1, &w0, ws[11], p[7]);
1021 word3_muladd(&w2, &w1, &w0, ws[12], p[6]);
1022 word3_muladd(&w2, &w1, &w0, ws[13], p[5]);
1023 word3_muladd(&w2, &w1, &w0, ws[14], p[4]);
1024 word3_muladd(&w2, &w1, &w0, ws[15], p[3]);
1025 word3_muladd(&w2, &w1, &w0, ws[16], p[2]);
1026 word3_muladd(&w2, &w1, &w0, ws[17], p[1]);
1027 word3_add(&w2, &w1, &w0, z[18]);
1028 ws[18] = w0 * p_dash;
1029 word3_muladd(&w2, &w1, &w0, ws[18], p[0]);
1030 w0 = w1;
1031 w1 = w2;
1032 w2 = 0;
1033 word3_muladd(&w2, &w1, &w0, ws[0], p[19]);
1034 word3_muladd(&w2, &w1, &w0, ws[1], p[18]);
1035 word3_muladd(&w2, &w1, &w0, ws[2], p[17]);
1036 word3_muladd(&w2, &w1, &w0, ws[3], p[16]);
1037 word3_muladd(&w2, &w1, &w0, ws[4], p[15]);
1038 word3_muladd(&w2, &w1, &w0, ws[5], p[14]);
1039 word3_muladd(&w2, &w1, &w0, ws[6], p[13]);
1040 word3_muladd(&w2, &w1, &w0, ws[7], p[12]);
1041 word3_muladd(&w2, &w1, &w0, ws[8], p[11]);
1042 word3_muladd(&w2, &w1, &w0, ws[9], p[10]);
1043 word3_muladd(&w2, &w1, &w0, ws[10], p[9]);
1044 word3_muladd(&w2, &w1, &w0, ws[11], p[8]);
1045 word3_muladd(&w2, &w1, &w0, ws[12], p[7]);
1046 word3_muladd(&w2, &w1, &w0, ws[13], p[6]);
1047 word3_muladd(&w2, &w1, &w0, ws[14], p[5]);
1048 word3_muladd(&w2, &w1, &w0, ws[15], p[4]);
1049 word3_muladd(&w2, &w1, &w0, ws[16], p[3]);
1050 word3_muladd(&w2, &w1, &w0, ws[17], p[2]);
1051 word3_muladd(&w2, &w1, &w0, ws[18], p[1]);
1052 word3_add(&w2, &w1, &w0, z[19]);
1053 ws[19] = w0 * p_dash;
1054 word3_muladd(&w2, &w1, &w0, ws[19], p[0]);
1055 w0 = w1;
1056 w1 = w2;
1057 w2 = 0;
1058 word3_muladd(&w2, &w1, &w0, ws[0], p[20]);
1059 word3_muladd(&w2, &w1, &w0, ws[1], p[19]);
1060 word3_muladd(&w2, &w1, &w0, ws[2], p[18]);
1061 word3_muladd(&w2, &w1, &w0, ws[3], p[17]);
1062 word3_muladd(&w2, &w1, &w0, ws[4], p[16]);
1063 word3_muladd(&w2, &w1, &w0, ws[5], p[15]);
1064 word3_muladd(&w2, &w1, &w0, ws[6], p[14]);
1065 word3_muladd(&w2, &w1, &w0, ws[7], p[13]);
1066 word3_muladd(&w2, &w1, &w0, ws[8], p[12]);
1067 word3_muladd(&w2, &w1, &w0, ws[9], p[11]);
1068 word3_muladd(&w2, &w1, &w0, ws[10], p[10]);
1069 word3_muladd(&w2, &w1, &w0, ws[11], p[9]);
1070 word3_muladd(&w2, &w1, &w0, ws[12], p[8]);
1071 word3_muladd(&w2, &w1, &w0, ws[13], p[7]);
1072 word3_muladd(&w2, &w1, &w0, ws[14], p[6]);
1073 word3_muladd(&w2, &w1, &w0, ws[15], p[5]);
1074 word3_muladd(&w2, &w1, &w0, ws[16], p[4]);
1075 word3_muladd(&w2, &w1, &w0, ws[17], p[3]);
1076 word3_muladd(&w2, &w1, &w0, ws[18], p[2]);
1077 word3_muladd(&w2, &w1, &w0, ws[19], p[1]);
1078 word3_add(&w2, &w1, &w0, z[20]);
1079 ws[20] = w0 * p_dash;
1080 word3_muladd(&w2, &w1, &w0, ws[20], p[0]);
1081 w0 = w1;
1082 w1 = w2;
1083 w2 = 0;
1084 word3_muladd(&w2, &w1, &w0, ws[0], p[21]);
1085 word3_muladd(&w2, &w1, &w0, ws[1], p[20]);
1086 word3_muladd(&w2, &w1, &w0, ws[2], p[19]);
1087 word3_muladd(&w2, &w1, &w0, ws[3], p[18]);
1088 word3_muladd(&w2, &w1, &w0, ws[4], p[17]);
1089 word3_muladd(&w2, &w1, &w0, ws[5], p[16]);
1090 word3_muladd(&w2, &w1, &w0, ws[6], p[15]);
1091 word3_muladd(&w2, &w1, &w0, ws[7], p[14]);
1092 word3_muladd(&w2, &w1, &w0, ws[8], p[13]);
1093 word3_muladd(&w2, &w1, &w0, ws[9], p[12]);
1094 word3_muladd(&w2, &w1, &w0, ws[10], p[11]);
1095 word3_muladd(&w2, &w1, &w0, ws[11], p[10]);
1096 word3_muladd(&w2, &w1, &w0, ws[12], p[9]);
1097 word3_muladd(&w2, &w1, &w0, ws[13], p[8]);
1098 word3_muladd(&w2, &w1, &w0, ws[14], p[7]);
1099 word3_muladd(&w2, &w1, &w0, ws[15], p[6]);
1100 word3_muladd(&w2, &w1, &w0, ws[16], p[5]);
1101 word3_muladd(&w2, &w1, &w0, ws[17], p[4]);
1102 word3_muladd(&w2, &w1, &w0, ws[18], p[3]);
1103 word3_muladd(&w2, &w1, &w0, ws[19], p[2]);
1104 word3_muladd(&w2, &w1, &w0, ws[20], p[1]);
1105 word3_add(&w2, &w1, &w0, z[21]);
1106 ws[21] = w0 * p_dash;
1107 word3_muladd(&w2, &w1, &w0, ws[21], p[0]);
1108 w0 = w1;
1109 w1 = w2;
1110 w2 = 0;
1111 word3_muladd(&w2, &w1, &w0, ws[0], p[22]);
1112 word3_muladd(&w2, &w1, &w0, ws[1], p[21]);
1113 word3_muladd(&w2, &w1, &w0, ws[2], p[20]);
1114 word3_muladd(&w2, &w1, &w0, ws[3], p[19]);
1115 word3_muladd(&w2, &w1, &w0, ws[4], p[18]);
1116 word3_muladd(&w2, &w1, &w0, ws[5], p[17]);
1117 word3_muladd(&w2, &w1, &w0, ws[6], p[16]);
1118 word3_muladd(&w2, &w1, &w0, ws[7], p[15]);
1119 word3_muladd(&w2, &w1, &w0, ws[8], p[14]);
1120 word3_muladd(&w2, &w1, &w0, ws[9], p[13]);
1121 word3_muladd(&w2, &w1, &w0, ws[10], p[12]);
1122 word3_muladd(&w2, &w1, &w0, ws[11], p[11]);
1123 word3_muladd(&w2, &w1, &w0, ws[12], p[10]);
1124 word3_muladd(&w2, &w1, &w0, ws[13], p[9]);
1125 word3_muladd(&w2, &w1, &w0, ws[14], p[8]);
1126 word3_muladd(&w2, &w1, &w0, ws[15], p[7]);
1127 word3_muladd(&w2, &w1, &w0, ws[16], p[6]);
1128 word3_muladd(&w2, &w1, &w0, ws[17], p[5]);
1129 word3_muladd(&w2, &w1, &w0, ws[18], p[4]);
1130 word3_muladd(&w2, &w1, &w0, ws[19], p[3]);
1131 word3_muladd(&w2, &w1, &w0, ws[20], p[2]);
1132 word3_muladd(&w2, &w1, &w0, ws[21], p[1]);
1133 word3_add(&w2, &w1, &w0, z[22]);
1134 ws[22] = w0 * p_dash;
1135 word3_muladd(&w2, &w1, &w0, ws[22], p[0]);
1136 w0 = w1;
1137 w1 = w2;
1138 w2 = 0;
1139 word3_muladd(&w2, &w1, &w0, ws[0], p[23]);
1140 word3_muladd(&w2, &w1, &w0, ws[1], p[22]);
1141 word3_muladd(&w2, &w1, &w0, ws[2], p[21]);
1142 word3_muladd(&w2, &w1, &w0, ws[3], p[20]);
1143 word3_muladd(&w2, &w1, &w0, ws[4], p[19]);
1144 word3_muladd(&w2, &w1, &w0, ws[5], p[18]);
1145 word3_muladd(&w2, &w1, &w0, ws[6], p[17]);
1146 word3_muladd(&w2, &w1, &w0, ws[7], p[16]);
1147 word3_muladd(&w2, &w1, &w0, ws[8], p[15]);
1148 word3_muladd(&w2, &w1, &w0, ws[9], p[14]);
1149 word3_muladd(&w2, &w1, &w0, ws[10], p[13]);
1150 word3_muladd(&w2, &w1, &w0, ws[11], p[12]);
1151 word3_muladd(&w2, &w1, &w0, ws[12], p[11]);
1152 word3_muladd(&w2, &w1, &w0, ws[13], p[10]);
1153 word3_muladd(&w2, &w1, &w0, ws[14], p[9]);
1154 word3_muladd(&w2, &w1, &w0, ws[15], p[8]);
1155 word3_muladd(&w2, &w1, &w0, ws[16], p[7]);
1156 word3_muladd(&w2, &w1, &w0, ws[17], p[6]);
1157 word3_muladd(&w2, &w1, &w0, ws[18], p[5]);
1158 word3_muladd(&w2, &w1, &w0, ws[19], p[4]);
1159 word3_muladd(&w2, &w1, &w0, ws[20], p[3]);
1160 word3_muladd(&w2, &w1, &w0, ws[21], p[2]);
1161 word3_muladd(&w2, &w1, &w0, ws[22], p[1]);
1162 word3_add(&w2, &w1, &w0, z[23]);
1163 ws[23] = w0 * p_dash;
1164 word3_muladd(&w2, &w1, &w0, ws[23], p[0]);
1165 w0 = w1;
1166 w1 = w2;
1167 w2 = 0;
1168 word3_muladd(&w2, &w1, &w0, ws[1], p[23]);
1169 word3_muladd(&w2, &w1, &w0, ws[2], p[22]);
1170 word3_muladd(&w2, &w1, &w0, ws[3], p[21]);
1171 word3_muladd(&w2, &w1, &w0, ws[4], p[20]);
1172 word3_muladd(&w2, &w1, &w0, ws[5], p[19]);
1173 word3_muladd(&w2, &w1, &w0, ws[6], p[18]);
1174 word3_muladd(&w2, &w1, &w0, ws[7], p[17]);
1175 word3_muladd(&w2, &w1, &w0, ws[8], p[16]);
1176 word3_muladd(&w2, &w1, &w0, ws[9], p[15]);
1177 word3_muladd(&w2, &w1, &w0, ws[10], p[14]);
1178 word3_muladd(&w2, &w1, &w0, ws[11], p[13]);
1179 word3_muladd(&w2, &w1, &w0, ws[12], p[12]);
1180 word3_muladd(&w2, &w1, &w0, ws[13], p[11]);
1181 word3_muladd(&w2, &w1, &w0, ws[14], p[10]);
1182 word3_muladd(&w2, &w1, &w0, ws[15], p[9]);
1183 word3_muladd(&w2, &w1, &w0, ws[16], p[8]);
1184 word3_muladd(&w2, &w1, &w0, ws[17], p[7]);
1185 word3_muladd(&w2, &w1, &w0, ws[18], p[6]);
1186 word3_muladd(&w2, &w1, &w0, ws[19], p[5]);
1187 word3_muladd(&w2, &w1, &w0, ws[20], p[4]);
1188 word3_muladd(&w2, &w1, &w0, ws[21], p[3]);
1189 word3_muladd(&w2, &w1, &w0, ws[22], p[2]);
1190 word3_muladd(&w2, &w1, &w0, ws[23], p[1]);
1191 word3_add(&w2, &w1, &w0, z[24]);
1192 ws[0] = w0;
1193 w0 = w1;
1194 w1 = w2;
1195 w2 = 0;
1196 word3_muladd(&w2, &w1, &w0, ws[2], p[23]);
1197 word3_muladd(&w2, &w1, &w0, ws[3], p[22]);
1198 word3_muladd(&w2, &w1, &w0, ws[4], p[21]);
1199 word3_muladd(&w2, &w1, &w0, ws[5], p[20]);
1200 word3_muladd(&w2, &w1, &w0, ws[6], p[19]);
1201 word3_muladd(&w2, &w1, &w0, ws[7], p[18]);
1202 word3_muladd(&w2, &w1, &w0, ws[8], p[17]);
1203 word3_muladd(&w2, &w1, &w0, ws[9], p[16]);
1204 word3_muladd(&w2, &w1, &w0, ws[10], p[15]);
1205 word3_muladd(&w2, &w1, &w0, ws[11], p[14]);
1206 word3_muladd(&w2, &w1, &w0, ws[12], p[13]);
1207 word3_muladd(&w2, &w1, &w0, ws[13], p[12]);
1208 word3_muladd(&w2, &w1, &w0, ws[14], p[11]);
1209 word3_muladd(&w2, &w1, &w0, ws[15], p[10]);
1210 word3_muladd(&w2, &w1, &w0, ws[16], p[9]);
1211 word3_muladd(&w2, &w1, &w0, ws[17], p[8]);
1212 word3_muladd(&w2, &w1, &w0, ws[18], p[7]);
1213 word3_muladd(&w2, &w1, &w0, ws[19], p[6]);
1214 word3_muladd(&w2, &w1, &w0, ws[20], p[5]);
1215 word3_muladd(&w2, &w1, &w0, ws[21], p[4]);
1216 word3_muladd(&w2, &w1, &w0, ws[22], p[3]);
1217 word3_muladd(&w2, &w1, &w0, ws[23], p[2]);
1218 word3_add(&w2, &w1, &w0, z[25]);
1219 ws[1] = w0;
1220 w0 = w1;
1221 w1 = w2;
1222 w2 = 0;
1223 word3_muladd(&w2, &w1, &w0, ws[3], p[23]);
1224 word3_muladd(&w2, &w1, &w0, ws[4], p[22]);
1225 word3_muladd(&w2, &w1, &w0, ws[5], p[21]);
1226 word3_muladd(&w2, &w1, &w0, ws[6], p[20]);
1227 word3_muladd(&w2, &w1, &w0, ws[7], p[19]);
1228 word3_muladd(&w2, &w1, &w0, ws[8], p[18]);
1229 word3_muladd(&w2, &w1, &w0, ws[9], p[17]);
1230 word3_muladd(&w2, &w1, &w0, ws[10], p[16]);
1231 word3_muladd(&w2, &w1, &w0, ws[11], p[15]);
1232 word3_muladd(&w2, &w1, &w0, ws[12], p[14]);
1233 word3_muladd(&w2, &w1, &w0, ws[13], p[13]);
1234 word3_muladd(&w2, &w1, &w0, ws[14], p[12]);
1235 word3_muladd(&w2, &w1, &w0, ws[15], p[11]);
1236 word3_muladd(&w2, &w1, &w0, ws[16], p[10]);
1237 word3_muladd(&w2, &w1, &w0, ws[17], p[9]);
1238 word3_muladd(&w2, &w1, &w0, ws[18], p[8]);
1239 word3_muladd(&w2, &w1, &w0, ws[19], p[7]);
1240 word3_muladd(&w2, &w1, &w0, ws[20], p[6]);
1241 word3_muladd(&w2, &w1, &w0, ws[21], p[5]);
1242 word3_muladd(&w2, &w1, &w0, ws[22], p[4]);
1243 word3_muladd(&w2, &w1, &w0, ws[23], p[3]);
1244 word3_add(&w2, &w1, &w0, z[26]);
1245 ws[2] = w0;
1246 w0 = w1;
1247 w1 = w2;
1248 w2 = 0;
1249 word3_muladd(&w2, &w1, &w0, ws[4], p[23]);
1250 word3_muladd(&w2, &w1, &w0, ws[5], p[22]);
1251 word3_muladd(&w2, &w1, &w0, ws[6], p[21]);
1252 word3_muladd(&w2, &w1, &w0, ws[7], p[20]);
1253 word3_muladd(&w2, &w1, &w0, ws[8], p[19]);
1254 word3_muladd(&w2, &w1, &w0, ws[9], p[18]);
1255 word3_muladd(&w2, &w1, &w0, ws[10], p[17]);
1256 word3_muladd(&w2, &w1, &w0, ws[11], p[16]);
1257 word3_muladd(&w2, &w1, &w0, ws[12], p[15]);
1258 word3_muladd(&w2, &w1, &w0, ws[13], p[14]);
1259 word3_muladd(&w2, &w1, &w0, ws[14], p[13]);
1260 word3_muladd(&w2, &w1, &w0, ws[15], p[12]);
1261 word3_muladd(&w2, &w1, &w0, ws[16], p[11]);
1262 word3_muladd(&w2, &w1, &w0, ws[17], p[10]);
1263 word3_muladd(&w2, &w1, &w0, ws[18], p[9]);
1264 word3_muladd(&w2, &w1, &w0, ws[19], p[8]);
1265 word3_muladd(&w2, &w1, &w0, ws[20], p[7]);
1266 word3_muladd(&w2, &w1, &w0, ws[21], p[6]);
1267 word3_muladd(&w2, &w1, &w0, ws[22], p[5]);
1268 word3_muladd(&w2, &w1, &w0, ws[23], p[4]);
1269 word3_add(&w2, &w1, &w0, z[27]);
1270 ws[3] = w0;
1271 w0 = w1;
1272 w1 = w2;
1273 w2 = 0;
1274 word3_muladd(&w2, &w1, &w0, ws[5], p[23]);
1275 word3_muladd(&w2, &w1, &w0, ws[6], p[22]);
1276 word3_muladd(&w2, &w1, &w0, ws[7], p[21]);
1277 word3_muladd(&w2, &w1, &w0, ws[8], p[20]);
1278 word3_muladd(&w2, &w1, &w0, ws[9], p[19]);
1279 word3_muladd(&w2, &w1, &w0, ws[10], p[18]);
1280 word3_muladd(&w2, &w1, &w0, ws[11], p[17]);
1281 word3_muladd(&w2, &w1, &w0, ws[12], p[16]);
1282 word3_muladd(&w2, &w1, &w0, ws[13], p[15]);
1283 word3_muladd(&w2, &w1, &w0, ws[14], p[14]);
1284 word3_muladd(&w2, &w1, &w0, ws[15], p[13]);
1285 word3_muladd(&w2, &w1, &w0, ws[16], p[12]);
1286 word3_muladd(&w2, &w1, &w0, ws[17], p[11]);
1287 word3_muladd(&w2, &w1, &w0, ws[18], p[10]);
1288 word3_muladd(&w2, &w1, &w0, ws[19], p[9]);
1289 word3_muladd(&w2, &w1, &w0, ws[20], p[8]);
1290 word3_muladd(&w2, &w1, &w0, ws[21], p[7]);
1291 word3_muladd(&w2, &w1, &w0, ws[22], p[6]);
1292 word3_muladd(&w2, &w1, &w0, ws[23], p[5]);
1293 word3_add(&w2, &w1, &w0, z[28]);
1294 ws[4] = w0;
1295 w0 = w1;
1296 w1 = w2;
1297 w2 = 0;
1298 word3_muladd(&w2, &w1, &w0, ws[6], p[23]);
1299 word3_muladd(&w2, &w1, &w0, ws[7], p[22]);
1300 word3_muladd(&w2, &w1, &w0, ws[8], p[21]);
1301 word3_muladd(&w2, &w1, &w0, ws[9], p[20]);
1302 word3_muladd(&w2, &w1, &w0, ws[10], p[19]);
1303 word3_muladd(&w2, &w1, &w0, ws[11], p[18]);
1304 word3_muladd(&w2, &w1, &w0, ws[12], p[17]);
1305 word3_muladd(&w2, &w1, &w0, ws[13], p[16]);
1306 word3_muladd(&w2, &w1, &w0, ws[14], p[15]);
1307 word3_muladd(&w2, &w1, &w0, ws[15], p[14]);
1308 word3_muladd(&w2, &w1, &w0, ws[16], p[13]);
1309 word3_muladd(&w2, &w1, &w0, ws[17], p[12]);
1310 word3_muladd(&w2, &w1, &w0, ws[18], p[11]);
1311 word3_muladd(&w2, &w1, &w0, ws[19], p[10]);
1312 word3_muladd(&w2, &w1, &w0, ws[20], p[9]);
1313 word3_muladd(&w2, &w1, &w0, ws[21], p[8]);
1314 word3_muladd(&w2, &w1, &w0, ws[22], p[7]);
1315 word3_muladd(&w2, &w1, &w0, ws[23], p[6]);
1316 word3_add(&w2, &w1, &w0, z[29]);
1317 ws[5] = w0;
1318 w0 = w1;
1319 w1 = w2;
1320 w2 = 0;
1321 word3_muladd(&w2, &w1, &w0, ws[7], p[23]);
1322 word3_muladd(&w2, &w1, &w0, ws[8], p[22]);
1323 word3_muladd(&w2, &w1, &w0, ws[9], p[21]);
1324 word3_muladd(&w2, &w1, &w0, ws[10], p[20]);
1325 word3_muladd(&w2, &w1, &w0, ws[11], p[19]);
1326 word3_muladd(&w2, &w1, &w0, ws[12], p[18]);
1327 word3_muladd(&w2, &w1, &w0, ws[13], p[17]);
1328 word3_muladd(&w2, &w1, &w0, ws[14], p[16]);
1329 word3_muladd(&w2, &w1, &w0, ws[15], p[15]);
1330 word3_muladd(&w2, &w1, &w0, ws[16], p[14]);
1331 word3_muladd(&w2, &w1, &w0, ws[17], p[13]);
1332 word3_muladd(&w2, &w1, &w0, ws[18], p[12]);
1333 word3_muladd(&w2, &w1, &w0, ws[19], p[11]);
1334 word3_muladd(&w2, &w1, &w0, ws[20], p[10]);
1335 word3_muladd(&w2, &w1, &w0, ws[21], p[9]);
1336 word3_muladd(&w2, &w1, &w0, ws[22], p[8]);
1337 word3_muladd(&w2, &w1, &w0, ws[23], p[7]);
1338 word3_add(&w2, &w1, &w0, z[30]);
1339 ws[6] = w0;
1340 w0 = w1;
1341 w1 = w2;
1342 w2 = 0;
1343 word3_muladd(&w2, &w1, &w0, ws[8], p[23]);
1344 word3_muladd(&w2, &w1, &w0, ws[9], p[22]);
1345 word3_muladd(&w2, &w1, &w0, ws[10], p[21]);
1346 word3_muladd(&w2, &w1, &w0, ws[11], p[20]);
1347 word3_muladd(&w2, &w1, &w0, ws[12], p[19]);
1348 word3_muladd(&w2, &w1, &w0, ws[13], p[18]);
1349 word3_muladd(&w2, &w1, &w0, ws[14], p[17]);
1350 word3_muladd(&w2, &w1, &w0, ws[15], p[16]);
1351 word3_muladd(&w2, &w1, &w0, ws[16], p[15]);
1352 word3_muladd(&w2, &w1, &w0, ws[17], p[14]);
1353 word3_muladd(&w2, &w1, &w0, ws[18], p[13]);
1354 word3_muladd(&w2, &w1, &w0, ws[19], p[12]);
1355 word3_muladd(&w2, &w1, &w0, ws[20], p[11]);
1356 word3_muladd(&w2, &w1, &w0, ws[21], p[10]);
1357 word3_muladd(&w2, &w1, &w0, ws[22], p[9]);
1358 word3_muladd(&w2, &w1, &w0, ws[23], p[8]);
1359 word3_add(&w2, &w1, &w0, z[31]);
1360 ws[7] = w0;
1361 w0 = w1;
1362 w1 = w2;
1363 w2 = 0;
1364 word3_muladd(&w2, &w1, &w0, ws[9], p[23]);
1365 word3_muladd(&w2, &w1, &w0, ws[10], p[22]);
1366 word3_muladd(&w2, &w1, &w0, ws[11], p[21]);
1367 word3_muladd(&w2, &w1, &w0, ws[12], p[20]);
1368 word3_muladd(&w2, &w1, &w0, ws[13], p[19]);
1369 word3_muladd(&w2, &w1, &w0, ws[14], p[18]);
1370 word3_muladd(&w2, &w1, &w0, ws[15], p[17]);
1371 word3_muladd(&w2, &w1, &w0, ws[16], p[16]);
1372 word3_muladd(&w2, &w1, &w0, ws[17], p[15]);
1373 word3_muladd(&w2, &w1, &w0, ws[18], p[14]);
1374 word3_muladd(&w2, &w1, &w0, ws[19], p[13]);
1375 word3_muladd(&w2, &w1, &w0, ws[20], p[12]);
1376 word3_muladd(&w2, &w1, &w0, ws[21], p[11]);
1377 word3_muladd(&w2, &w1, &w0, ws[22], p[10]);
1378 word3_muladd(&w2, &w1, &w0, ws[23], p[9]);
1379 word3_add(&w2, &w1, &w0, z[32]);
1380 ws[8] = w0;
1381 w0 = w1;
1382 w1 = w2;
1383 w2 = 0;
1384 word3_muladd(&w2, &w1, &w0, ws[10], p[23]);
1385 word3_muladd(&w2, &w1, &w0, ws[11], p[22]);
1386 word3_muladd(&w2, &w1, &w0, ws[12], p[21]);
1387 word3_muladd(&w2, &w1, &w0, ws[13], p[20]);
1388 word3_muladd(&w2, &w1, &w0, ws[14], p[19]);
1389 word3_muladd(&w2, &w1, &w0, ws[15], p[18]);
1390 word3_muladd(&w2, &w1, &w0, ws[16], p[17]);
1391 word3_muladd(&w2, &w1, &w0, ws[17], p[16]);
1392 word3_muladd(&w2, &w1, &w0, ws[18], p[15]);
1393 word3_muladd(&w2, &w1, &w0, ws[19], p[14]);
1394 word3_muladd(&w2, &w1, &w0, ws[20], p[13]);
1395 word3_muladd(&w2, &w1, &w0, ws[21], p[12]);
1396 word3_muladd(&w2, &w1, &w0, ws[22], p[11]);
1397 word3_muladd(&w2, &w1, &w0, ws[23], p[10]);
1398 word3_add(&w2, &w1, &w0, z[33]);
1399 ws[9] = w0;
1400 w0 = w1;
1401 w1 = w2;
1402 w2 = 0;
1403 word3_muladd(&w2, &w1, &w0, ws[11], p[23]);
1404 word3_muladd(&w2, &w1, &w0, ws[12], p[22]);
1405 word3_muladd(&w2, &w1, &w0, ws[13], p[21]);
1406 word3_muladd(&w2, &w1, &w0, ws[14], p[20]);
1407 word3_muladd(&w2, &w1, &w0, ws[15], p[19]);
1408 word3_muladd(&w2, &w1, &w0, ws[16], p[18]);
1409 word3_muladd(&w2, &w1, &w0, ws[17], p[17]);
1410 word3_muladd(&w2, &w1, &w0, ws[18], p[16]);
1411 word3_muladd(&w2, &w1, &w0, ws[19], p[15]);
1412 word3_muladd(&w2, &w1, &w0, ws[20], p[14]);
1413 word3_muladd(&w2, &w1, &w0, ws[21], p[13]);
1414 word3_muladd(&w2, &w1, &w0, ws[22], p[12]);
1415 word3_muladd(&w2, &w1, &w0, ws[23], p[11]);
1416 word3_add(&w2, &w1, &w0, z[34]);
1417 ws[10] = w0;
1418 w0 = w1;
1419 w1 = w2;
1420 w2 = 0;
1421 word3_muladd(&w2, &w1, &w0, ws[12], p[23]);
1422 word3_muladd(&w2, &w1, &w0, ws[13], p[22]);
1423 word3_muladd(&w2, &w1, &w0, ws[14], p[21]);
1424 word3_muladd(&w2, &w1, &w0, ws[15], p[20]);
1425 word3_muladd(&w2, &w1, &w0, ws[16], p[19]);
1426 word3_muladd(&w2, &w1, &w0, ws[17], p[18]);
1427 word3_muladd(&w2, &w1, &w0, ws[18], p[17]);
1428 word3_muladd(&w2, &w1, &w0, ws[19], p[16]);
1429 word3_muladd(&w2, &w1, &w0, ws[20], p[15]);
1430 word3_muladd(&w2, &w1, &w0, ws[21], p[14]);
1431 word3_muladd(&w2, &w1, &w0, ws[22], p[13]);
1432 word3_muladd(&w2, &w1, &w0, ws[23], p[12]);
1433 word3_add(&w2, &w1, &w0, z[35]);
1434 ws[11] = w0;
1435 w0 = w1;
1436 w1 = w2;
1437 w2 = 0;
1438 word3_muladd(&w2, &w1, &w0, ws[13], p[23]);
1439 word3_muladd(&w2, &w1, &w0, ws[14], p[22]);
1440 word3_muladd(&w2, &w1, &w0, ws[15], p[21]);
1441 word3_muladd(&w2, &w1, &w0, ws[16], p[20]);
1442 word3_muladd(&w2, &w1, &w0, ws[17], p[19]);
1443 word3_muladd(&w2, &w1, &w0, ws[18], p[18]);
1444 word3_muladd(&w2, &w1, &w0, ws[19], p[17]);
1445 word3_muladd(&w2, &w1, &w0, ws[20], p[16]);
1446 word3_muladd(&w2, &w1, &w0, ws[21], p[15]);
1447 word3_muladd(&w2, &w1, &w0, ws[22], p[14]);
1448 word3_muladd(&w2, &w1, &w0, ws[23], p[13]);
1449 word3_add(&w2, &w1, &w0, z[36]);
1450 ws[12] = w0;
1451 w0 = w1;
1452 w1 = w2;
1453 w2 = 0;
1454 word3_muladd(&w2, &w1, &w0, ws[14], p[23]);
1455 word3_muladd(&w2, &w1, &w0, ws[15], p[22]);
1456 word3_muladd(&w2, &w1, &w0, ws[16], p[21]);
1457 word3_muladd(&w2, &w1, &w0, ws[17], p[20]);
1458 word3_muladd(&w2, &w1, &w0, ws[18], p[19]);
1459 word3_muladd(&w2, &w1, &w0, ws[19], p[18]);
1460 word3_muladd(&w2, &w1, &w0, ws[20], p[17]);
1461 word3_muladd(&w2, &w1, &w0, ws[21], p[16]);
1462 word3_muladd(&w2, &w1, &w0, ws[22], p[15]);
1463 word3_muladd(&w2, &w1, &w0, ws[23], p[14]);
1464 word3_add(&w2, &w1, &w0, z[37]);
1465 ws[13] = w0;
1466 w0 = w1;
1467 w1 = w2;
1468 w2 = 0;
1469 word3_muladd(&w2, &w1, &w0, ws[15], p[23]);
1470 word3_muladd(&w2, &w1, &w0, ws[16], p[22]);
1471 word3_muladd(&w2, &w1, &w0, ws[17], p[21]);
1472 word3_muladd(&w2, &w1, &w0, ws[18], p[20]);
1473 word3_muladd(&w2, &w1, &w0, ws[19], p[19]);
1474 word3_muladd(&w2, &w1, &w0, ws[20], p[18]);
1475 word3_muladd(&w2, &w1, &w0, ws[21], p[17]);
1476 word3_muladd(&w2, &w1, &w0, ws[22], p[16]);
1477 word3_muladd(&w2, &w1, &w0, ws[23], p[15]);
1478 word3_add(&w2, &w1, &w0, z[38]);
1479 ws[14] = w0;
1480 w0 = w1;
1481 w1 = w2;
1482 w2 = 0;
1483 word3_muladd(&w2, &w1, &w0, ws[16], p[23]);
1484 word3_muladd(&w2, &w1, &w0, ws[17], p[22]);
1485 word3_muladd(&w2, &w1, &w0, ws[18], p[21]);
1486 word3_muladd(&w2, &w1, &w0, ws[19], p[20]);
1487 word3_muladd(&w2, &w1, &w0, ws[20], p[19]);
1488 word3_muladd(&w2, &w1, &w0, ws[21], p[18]);
1489 word3_muladd(&w2, &w1, &w0, ws[22], p[17]);
1490 word3_muladd(&w2, &w1, &w0, ws[23], p[16]);
1491 word3_add(&w2, &w1, &w0, z[39]);
1492 ws[15] = w0;
1493 w0 = w1;
1494 w1 = w2;
1495 w2 = 0;
1496 word3_muladd(&w2, &w1, &w0, ws[17], p[23]);
1497 word3_muladd(&w2, &w1, &w0, ws[18], p[22]);
1498 word3_muladd(&w2, &w1, &w0, ws[19], p[21]);
1499 word3_muladd(&w2, &w1, &w0, ws[20], p[20]);
1500 word3_muladd(&w2, &w1, &w0, ws[21], p[19]);
1501 word3_muladd(&w2, &w1, &w0, ws[22], p[18]);
1502 word3_muladd(&w2, &w1, &w0, ws[23], p[17]);
1503 word3_add(&w2, &w1, &w0, z[40]);
1504 ws[16] = w0;
1505 w0 = w1;
1506 w1 = w2;
1507 w2 = 0;
1508 word3_muladd(&w2, &w1, &w0, ws[18], p[23]);
1509 word3_muladd(&w2, &w1, &w0, ws[19], p[22]);
1510 word3_muladd(&w2, &w1, &w0, ws[20], p[21]);
1511 word3_muladd(&w2, &w1, &w0, ws[21], p[20]);
1512 word3_muladd(&w2, &w1, &w0, ws[22], p[19]);
1513 word3_muladd(&w2, &w1, &w0, ws[23], p[18]);
1514 word3_add(&w2, &w1, &w0, z[41]);
1515 ws[17] = w0;
1516 w0 = w1;
1517 w1 = w2;
1518 w2 = 0;
1519 word3_muladd(&w2, &w1, &w0, ws[19], p[23]);
1520 word3_muladd(&w2, &w1, &w0, ws[20], p[22]);
1521 word3_muladd(&w2, &w1, &w0, ws[21], p[21]);
1522 word3_muladd(&w2, &w1, &w0, ws[22], p[20]);
1523 word3_muladd(&w2, &w1, &w0, ws[23], p[19]);
1524 word3_add(&w2, &w1, &w0, z[42]);
1525 ws[18] = w0;
1526 w0 = w1;
1527 w1 = w2;
1528 w2 = 0;
1529 word3_muladd(&w2, &w1, &w0, ws[20], p[23]);
1530 word3_muladd(&w2, &w1, &w0, ws[21], p[22]);
1531 word3_muladd(&w2, &w1, &w0, ws[22], p[21]);
1532 word3_muladd(&w2, &w1, &w0, ws[23], p[20]);
1533 word3_add(&w2, &w1, &w0, z[43]);
1534 ws[19] = w0;
1535 w0 = w1;
1536 w1 = w2;
1537 w2 = 0;
1538 word3_muladd(&w2, &w1, &w0, ws[21], p[23]);
1539 word3_muladd(&w2, &w1, &w0, ws[22], p[22]);
1540 word3_muladd(&w2, &w1, &w0, ws[23], p[21]);
1541 word3_add(&w2, &w1, &w0, z[44]);
1542 ws[20] = w0;
1543 w0 = w1;
1544 w1 = w2;
1545 w2 = 0;
1546 word3_muladd(&w2, &w1, &w0, ws[22], p[23]);
1547 word3_muladd(&w2, &w1, &w0, ws[23], p[22]);
1548 word3_add(&w2, &w1, &w0, z[45]);
1549 ws[21] = w0;
1550 w0 = w1;
1551 w1 = w2;
1552 w2 = 0;
1553 word3_muladd(&w2, &w1, &w0, ws[23], p[23]);
1554 word3_add(&w2, &w1, &w0, z[46]);
1555 ws[22] = w0;
1556 w0 = w1;
1557 w1 = w2;
1558 w2 = 0;
1559 word3_add(&w2, &w1, &w0, z[47]);
1560 ws[23] = w0;
1561 ws[24] = w1;
1562 word borrow = bigint_sub3(z, ws, 24 + 1, p, 24);
1563 CT::conditional_assign_mem(borrow, z, ws, 24);
1564 clear_mem(z + 24, 24);
1565}
1566
1567void bigint_monty_redc_32(word z[64], const word p[32], word p_dash, word ws[]) {
1568 word w2 = 0, w1 = 0, w0 = 0;
1569 w0 = z[0];
1570 ws[0] = w0 * p_dash;
1571 word3_muladd(&w2, &w1, &w0, ws[0], p[0]);
1572 w0 = w1;
1573 w1 = w2;
1574 w2 = 0;
1575 word3_muladd(&w2, &w1, &w0, ws[0], p[1]);
1576 word3_add(&w2, &w1, &w0, z[1]);
1577 ws[1] = w0 * p_dash;
1578 word3_muladd(&w2, &w1, &w0, ws[1], p[0]);
1579 w0 = w1;
1580 w1 = w2;
1581 w2 = 0;
1582 word3_muladd(&w2, &w1, &w0, ws[0], p[2]);
1583 word3_muladd(&w2, &w1, &w0, ws[1], p[1]);
1584 word3_add(&w2, &w1, &w0, z[2]);
1585 ws[2] = w0 * p_dash;
1586 word3_muladd(&w2, &w1, &w0, ws[2], p[0]);
1587 w0 = w1;
1588 w1 = w2;
1589 w2 = 0;
1590 word3_muladd(&w2, &w1, &w0, ws[0], p[3]);
1591 word3_muladd(&w2, &w1, &w0, ws[1], p[2]);
1592 word3_muladd(&w2, &w1, &w0, ws[2], p[1]);
1593 word3_add(&w2, &w1, &w0, z[3]);
1594 ws[3] = w0 * p_dash;
1595 word3_muladd(&w2, &w1, &w0, ws[3], p[0]);
1596 w0 = w1;
1597 w1 = w2;
1598 w2 = 0;
1599 word3_muladd(&w2, &w1, &w0, ws[0], p[4]);
1600 word3_muladd(&w2, &w1, &w0, ws[1], p[3]);
1601 word3_muladd(&w2, &w1, &w0, ws[2], p[2]);
1602 word3_muladd(&w2, &w1, &w0, ws[3], p[1]);
1603 word3_add(&w2, &w1, &w0, z[4]);
1604 ws[4] = w0 * p_dash;
1605 word3_muladd(&w2, &w1, &w0, ws[4], p[0]);
1606 w0 = w1;
1607 w1 = w2;
1608 w2 = 0;
1609 word3_muladd(&w2, &w1, &w0, ws[0], p[5]);
1610 word3_muladd(&w2, &w1, &w0, ws[1], p[4]);
1611 word3_muladd(&w2, &w1, &w0, ws[2], p[3]);
1612 word3_muladd(&w2, &w1, &w0, ws[3], p[2]);
1613 word3_muladd(&w2, &w1, &w0, ws[4], p[1]);
1614 word3_add(&w2, &w1, &w0, z[5]);
1615 ws[5] = w0 * p_dash;
1616 word3_muladd(&w2, &w1, &w0, ws[5], p[0]);
1617 w0 = w1;
1618 w1 = w2;
1619 w2 = 0;
1620 word3_muladd(&w2, &w1, &w0, ws[0], p[6]);
1621 word3_muladd(&w2, &w1, &w0, ws[1], p[5]);
1622 word3_muladd(&w2, &w1, &w0, ws[2], p[4]);
1623 word3_muladd(&w2, &w1, &w0, ws[3], p[3]);
1624 word3_muladd(&w2, &w1, &w0, ws[4], p[2]);
1625 word3_muladd(&w2, &w1, &w0, ws[5], p[1]);
1626 word3_add(&w2, &w1, &w0, z[6]);
1627 ws[6] = w0 * p_dash;
1628 word3_muladd(&w2, &w1, &w0, ws[6], p[0]);
1629 w0 = w1;
1630 w1 = w2;
1631 w2 = 0;
1632 word3_muladd(&w2, &w1, &w0, ws[0], p[7]);
1633 word3_muladd(&w2, &w1, &w0, ws[1], p[6]);
1634 word3_muladd(&w2, &w1, &w0, ws[2], p[5]);
1635 word3_muladd(&w2, &w1, &w0, ws[3], p[4]);
1636 word3_muladd(&w2, &w1, &w0, ws[4], p[3]);
1637 word3_muladd(&w2, &w1, &w0, ws[5], p[2]);
1638 word3_muladd(&w2, &w1, &w0, ws[6], p[1]);
1639 word3_add(&w2, &w1, &w0, z[7]);
1640 ws[7] = w0 * p_dash;
1641 word3_muladd(&w2, &w1, &w0, ws[7], p[0]);
1642 w0 = w1;
1643 w1 = w2;
1644 w2 = 0;
1645 word3_muladd(&w2, &w1, &w0, ws[0], p[8]);
1646 word3_muladd(&w2, &w1, &w0, ws[1], p[7]);
1647 word3_muladd(&w2, &w1, &w0, ws[2], p[6]);
1648 word3_muladd(&w2, &w1, &w0, ws[3], p[5]);
1649 word3_muladd(&w2, &w1, &w0, ws[4], p[4]);
1650 word3_muladd(&w2, &w1, &w0, ws[5], p[3]);
1651 word3_muladd(&w2, &w1, &w0, ws[6], p[2]);
1652 word3_muladd(&w2, &w1, &w0, ws[7], p[1]);
1653 word3_add(&w2, &w1, &w0, z[8]);
1654 ws[8] = w0 * p_dash;
1655 word3_muladd(&w2, &w1, &w0, ws[8], p[0]);
1656 w0 = w1;
1657 w1 = w2;
1658 w2 = 0;
1659 word3_muladd(&w2, &w1, &w0, ws[0], p[9]);
1660 word3_muladd(&w2, &w1, &w0, ws[1], p[8]);
1661 word3_muladd(&w2, &w1, &w0, ws[2], p[7]);
1662 word3_muladd(&w2, &w1, &w0, ws[3], p[6]);
1663 word3_muladd(&w2, &w1, &w0, ws[4], p[5]);
1664 word3_muladd(&w2, &w1, &w0, ws[5], p[4]);
1665 word3_muladd(&w2, &w1, &w0, ws[6], p[3]);
1666 word3_muladd(&w2, &w1, &w0, ws[7], p[2]);
1667 word3_muladd(&w2, &w1, &w0, ws[8], p[1]);
1668 word3_add(&w2, &w1, &w0, z[9]);
1669 ws[9] = w0 * p_dash;
1670 word3_muladd(&w2, &w1, &w0, ws[9], p[0]);
1671 w0 = w1;
1672 w1 = w2;
1673 w2 = 0;
1674 word3_muladd(&w2, &w1, &w0, ws[0], p[10]);
1675 word3_muladd(&w2, &w1, &w0, ws[1], p[9]);
1676 word3_muladd(&w2, &w1, &w0, ws[2], p[8]);
1677 word3_muladd(&w2, &w1, &w0, ws[3], p[7]);
1678 word3_muladd(&w2, &w1, &w0, ws[4], p[6]);
1679 word3_muladd(&w2, &w1, &w0, ws[5], p[5]);
1680 word3_muladd(&w2, &w1, &w0, ws[6], p[4]);
1681 word3_muladd(&w2, &w1, &w0, ws[7], p[3]);
1682 word3_muladd(&w2, &w1, &w0, ws[8], p[2]);
1683 word3_muladd(&w2, &w1, &w0, ws[9], p[1]);
1684 word3_add(&w2, &w1, &w0, z[10]);
1685 ws[10] = w0 * p_dash;
1686 word3_muladd(&w2, &w1, &w0, ws[10], p[0]);
1687 w0 = w1;
1688 w1 = w2;
1689 w2 = 0;
1690 word3_muladd(&w2, &w1, &w0, ws[0], p[11]);
1691 word3_muladd(&w2, &w1, &w0, ws[1], p[10]);
1692 word3_muladd(&w2, &w1, &w0, ws[2], p[9]);
1693 word3_muladd(&w2, &w1, &w0, ws[3], p[8]);
1694 word3_muladd(&w2, &w1, &w0, ws[4], p[7]);
1695 word3_muladd(&w2, &w1, &w0, ws[5], p[6]);
1696 word3_muladd(&w2, &w1, &w0, ws[6], p[5]);
1697 word3_muladd(&w2, &w1, &w0, ws[7], p[4]);
1698 word3_muladd(&w2, &w1, &w0, ws[8], p[3]);
1699 word3_muladd(&w2, &w1, &w0, ws[9], p[2]);
1700 word3_muladd(&w2, &w1, &w0, ws[10], p[1]);
1701 word3_add(&w2, &w1, &w0, z[11]);
1702 ws[11] = w0 * p_dash;
1703 word3_muladd(&w2, &w1, &w0, ws[11], p[0]);
1704 w0 = w1;
1705 w1 = w2;
1706 w2 = 0;
1707 word3_muladd(&w2, &w1, &w0, ws[0], p[12]);
1708 word3_muladd(&w2, &w1, &w0, ws[1], p[11]);
1709 word3_muladd(&w2, &w1, &w0, ws[2], p[10]);
1710 word3_muladd(&w2, &w1, &w0, ws[3], p[9]);
1711 word3_muladd(&w2, &w1, &w0, ws[4], p[8]);
1712 word3_muladd(&w2, &w1, &w0, ws[5], p[7]);
1713 word3_muladd(&w2, &w1, &w0, ws[6], p[6]);
1714 word3_muladd(&w2, &w1, &w0, ws[7], p[5]);
1715 word3_muladd(&w2, &w1, &w0, ws[8], p[4]);
1716 word3_muladd(&w2, &w1, &w0, ws[9], p[3]);
1717 word3_muladd(&w2, &w1, &w0, ws[10], p[2]);
1718 word3_muladd(&w2, &w1, &w0, ws[11], p[1]);
1719 word3_add(&w2, &w1, &w0, z[12]);
1720 ws[12] = w0 * p_dash;
1721 word3_muladd(&w2, &w1, &w0, ws[12], p[0]);
1722 w0 = w1;
1723 w1 = w2;
1724 w2 = 0;
1725 word3_muladd(&w2, &w1, &w0, ws[0], p[13]);
1726 word3_muladd(&w2, &w1, &w0, ws[1], p[12]);
1727 word3_muladd(&w2, &w1, &w0, ws[2], p[11]);
1728 word3_muladd(&w2, &w1, &w0, ws[3], p[10]);
1729 word3_muladd(&w2, &w1, &w0, ws[4], p[9]);
1730 word3_muladd(&w2, &w1, &w0, ws[5], p[8]);
1731 word3_muladd(&w2, &w1, &w0, ws[6], p[7]);
1732 word3_muladd(&w2, &w1, &w0, ws[7], p[6]);
1733 word3_muladd(&w2, &w1, &w0, ws[8], p[5]);
1734 word3_muladd(&w2, &w1, &w0, ws[9], p[4]);
1735 word3_muladd(&w2, &w1, &w0, ws[10], p[3]);
1736 word3_muladd(&w2, &w1, &w0, ws[11], p[2]);
1737 word3_muladd(&w2, &w1, &w0, ws[12], p[1]);
1738 word3_add(&w2, &w1, &w0, z[13]);
1739 ws[13] = w0 * p_dash;
1740 word3_muladd(&w2, &w1, &w0, ws[13], p[0]);
1741 w0 = w1;
1742 w1 = w2;
1743 w2 = 0;
1744 word3_muladd(&w2, &w1, &w0, ws[0], p[14]);
1745 word3_muladd(&w2, &w1, &w0, ws[1], p[13]);
1746 word3_muladd(&w2, &w1, &w0, ws[2], p[12]);
1747 word3_muladd(&w2, &w1, &w0, ws[3], p[11]);
1748 word3_muladd(&w2, &w1, &w0, ws[4], p[10]);
1749 word3_muladd(&w2, &w1, &w0, ws[5], p[9]);
1750 word3_muladd(&w2, &w1, &w0, ws[6], p[8]);
1751 word3_muladd(&w2, &w1, &w0, ws[7], p[7]);
1752 word3_muladd(&w2, &w1, &w0, ws[8], p[6]);
1753 word3_muladd(&w2, &w1, &w0, ws[9], p[5]);
1754 word3_muladd(&w2, &w1, &w0, ws[10], p[4]);
1755 word3_muladd(&w2, &w1, &w0, ws[11], p[3]);
1756 word3_muladd(&w2, &w1, &w0, ws[12], p[2]);
1757 word3_muladd(&w2, &w1, &w0, ws[13], p[1]);
1758 word3_add(&w2, &w1, &w0, z[14]);
1759 ws[14] = w0 * p_dash;
1760 word3_muladd(&w2, &w1, &w0, ws[14], p[0]);
1761 w0 = w1;
1762 w1 = w2;
1763 w2 = 0;
1764 word3_muladd(&w2, &w1, &w0, ws[0], p[15]);
1765 word3_muladd(&w2, &w1, &w0, ws[1], p[14]);
1766 word3_muladd(&w2, &w1, &w0, ws[2], p[13]);
1767 word3_muladd(&w2, &w1, &w0, ws[3], p[12]);
1768 word3_muladd(&w2, &w1, &w0, ws[4], p[11]);
1769 word3_muladd(&w2, &w1, &w0, ws[5], p[10]);
1770 word3_muladd(&w2, &w1, &w0, ws[6], p[9]);
1771 word3_muladd(&w2, &w1, &w0, ws[7], p[8]);
1772 word3_muladd(&w2, &w1, &w0, ws[8], p[7]);
1773 word3_muladd(&w2, &w1, &w0, ws[9], p[6]);
1774 word3_muladd(&w2, &w1, &w0, ws[10], p[5]);
1775 word3_muladd(&w2, &w1, &w0, ws[11], p[4]);
1776 word3_muladd(&w2, &w1, &w0, ws[12], p[3]);
1777 word3_muladd(&w2, &w1, &w0, ws[13], p[2]);
1778 word3_muladd(&w2, &w1, &w0, ws[14], p[1]);
1779 word3_add(&w2, &w1, &w0, z[15]);
1780 ws[15] = w0 * p_dash;
1781 word3_muladd(&w2, &w1, &w0, ws[15], p[0]);
1782 w0 = w1;
1783 w1 = w2;
1784 w2 = 0;
1785 word3_muladd(&w2, &w1, &w0, ws[0], p[16]);
1786 word3_muladd(&w2, &w1, &w0, ws[1], p[15]);
1787 word3_muladd(&w2, &w1, &w0, ws[2], p[14]);
1788 word3_muladd(&w2, &w1, &w0, ws[3], p[13]);
1789 word3_muladd(&w2, &w1, &w0, ws[4], p[12]);
1790 word3_muladd(&w2, &w1, &w0, ws[5], p[11]);
1791 word3_muladd(&w2, &w1, &w0, ws[6], p[10]);
1792 word3_muladd(&w2, &w1, &w0, ws[7], p[9]);
1793 word3_muladd(&w2, &w1, &w0, ws[8], p[8]);
1794 word3_muladd(&w2, &w1, &w0, ws[9], p[7]);
1795 word3_muladd(&w2, &w1, &w0, ws[10], p[6]);
1796 word3_muladd(&w2, &w1, &w0, ws[11], p[5]);
1797 word3_muladd(&w2, &w1, &w0, ws[12], p[4]);
1798 word3_muladd(&w2, &w1, &w0, ws[13], p[3]);
1799 word3_muladd(&w2, &w1, &w0, ws[14], p[2]);
1800 word3_muladd(&w2, &w1, &w0, ws[15], p[1]);
1801 word3_add(&w2, &w1, &w0, z[16]);
1802 ws[16] = w0 * p_dash;
1803 word3_muladd(&w2, &w1, &w0, ws[16], p[0]);
1804 w0 = w1;
1805 w1 = w2;
1806 w2 = 0;
1807 word3_muladd(&w2, &w1, &w0, ws[0], p[17]);
1808 word3_muladd(&w2, &w1, &w0, ws[1], p[16]);
1809 word3_muladd(&w2, &w1, &w0, ws[2], p[15]);
1810 word3_muladd(&w2, &w1, &w0, ws[3], p[14]);
1811 word3_muladd(&w2, &w1, &w0, ws[4], p[13]);
1812 word3_muladd(&w2, &w1, &w0, ws[5], p[12]);
1813 word3_muladd(&w2, &w1, &w0, ws[6], p[11]);
1814 word3_muladd(&w2, &w1, &w0, ws[7], p[10]);
1815 word3_muladd(&w2, &w1, &w0, ws[8], p[9]);
1816 word3_muladd(&w2, &w1, &w0, ws[9], p[8]);
1817 word3_muladd(&w2, &w1, &w0, ws[10], p[7]);
1818 word3_muladd(&w2, &w1, &w0, ws[11], p[6]);
1819 word3_muladd(&w2, &w1, &w0, ws[12], p[5]);
1820 word3_muladd(&w2, &w1, &w0, ws[13], p[4]);
1821 word3_muladd(&w2, &w1, &w0, ws[14], p[3]);
1822 word3_muladd(&w2, &w1, &w0, ws[15], p[2]);
1823 word3_muladd(&w2, &w1, &w0, ws[16], p[1]);
1824 word3_add(&w2, &w1, &w0, z[17]);
1825 ws[17] = w0 * p_dash;
1826 word3_muladd(&w2, &w1, &w0, ws[17], p[0]);
1827 w0 = w1;
1828 w1 = w2;
1829 w2 = 0;
1830 word3_muladd(&w2, &w1, &w0, ws[0], p[18]);
1831 word3_muladd(&w2, &w1, &w0, ws[1], p[17]);
1832 word3_muladd(&w2, &w1, &w0, ws[2], p[16]);
1833 word3_muladd(&w2, &w1, &w0, ws[3], p[15]);
1834 word3_muladd(&w2, &w1, &w0, ws[4], p[14]);
1835 word3_muladd(&w2, &w1, &w0, ws[5], p[13]);
1836 word3_muladd(&w2, &w1, &w0, ws[6], p[12]);
1837 word3_muladd(&w2, &w1, &w0, ws[7], p[11]);
1838 word3_muladd(&w2, &w1, &w0, ws[8], p[10]);
1839 word3_muladd(&w2, &w1, &w0, ws[9], p[9]);
1840 word3_muladd(&w2, &w1, &w0, ws[10], p[8]);
1841 word3_muladd(&w2, &w1, &w0, ws[11], p[7]);
1842 word3_muladd(&w2, &w1, &w0, ws[12], p[6]);
1843 word3_muladd(&w2, &w1, &w0, ws[13], p[5]);
1844 word3_muladd(&w2, &w1, &w0, ws[14], p[4]);
1845 word3_muladd(&w2, &w1, &w0, ws[15], p[3]);
1846 word3_muladd(&w2, &w1, &w0, ws[16], p[2]);
1847 word3_muladd(&w2, &w1, &w0, ws[17], p[1]);
1848 word3_add(&w2, &w1, &w0, z[18]);
1849 ws[18] = w0 * p_dash;
1850 word3_muladd(&w2, &w1, &w0, ws[18], p[0]);
1851 w0 = w1;
1852 w1 = w2;
1853 w2 = 0;
1854 word3_muladd(&w2, &w1, &w0, ws[0], p[19]);
1855 word3_muladd(&w2, &w1, &w0, ws[1], p[18]);
1856 word3_muladd(&w2, &w1, &w0, ws[2], p[17]);
1857 word3_muladd(&w2, &w1, &w0, ws[3], p[16]);
1858 word3_muladd(&w2, &w1, &w0, ws[4], p[15]);
1859 word3_muladd(&w2, &w1, &w0, ws[5], p[14]);
1860 word3_muladd(&w2, &w1, &w0, ws[6], p[13]);
1861 word3_muladd(&w2, &w1, &w0, ws[7], p[12]);
1862 word3_muladd(&w2, &w1, &w0, ws[8], p[11]);
1863 word3_muladd(&w2, &w1, &w0, ws[9], p[10]);
1864 word3_muladd(&w2, &w1, &w0, ws[10], p[9]);
1865 word3_muladd(&w2, &w1, &w0, ws[11], p[8]);
1866 word3_muladd(&w2, &w1, &w0, ws[12], p[7]);
1867 word3_muladd(&w2, &w1, &w0, ws[13], p[6]);
1868 word3_muladd(&w2, &w1, &w0, ws[14], p[5]);
1869 word3_muladd(&w2, &w1, &w0, ws[15], p[4]);
1870 word3_muladd(&w2, &w1, &w0, ws[16], p[3]);
1871 word3_muladd(&w2, &w1, &w0, ws[17], p[2]);
1872 word3_muladd(&w2, &w1, &w0, ws[18], p[1]);
1873 word3_add(&w2, &w1, &w0, z[19]);
1874 ws[19] = w0 * p_dash;
1875 word3_muladd(&w2, &w1, &w0, ws[19], p[0]);
1876 w0 = w1;
1877 w1 = w2;
1878 w2 = 0;
1879 word3_muladd(&w2, &w1, &w0, ws[0], p[20]);
1880 word3_muladd(&w2, &w1, &w0, ws[1], p[19]);
1881 word3_muladd(&w2, &w1, &w0, ws[2], p[18]);
1882 word3_muladd(&w2, &w1, &w0, ws[3], p[17]);
1883 word3_muladd(&w2, &w1, &w0, ws[4], p[16]);
1884 word3_muladd(&w2, &w1, &w0, ws[5], p[15]);
1885 word3_muladd(&w2, &w1, &w0, ws[6], p[14]);
1886 word3_muladd(&w2, &w1, &w0, ws[7], p[13]);
1887 word3_muladd(&w2, &w1, &w0, ws[8], p[12]);
1888 word3_muladd(&w2, &w1, &w0, ws[9], p[11]);
1889 word3_muladd(&w2, &w1, &w0, ws[10], p[10]);
1890 word3_muladd(&w2, &w1, &w0, ws[11], p[9]);
1891 word3_muladd(&w2, &w1, &w0, ws[12], p[8]);
1892 word3_muladd(&w2, &w1, &w0, ws[13], p[7]);
1893 word3_muladd(&w2, &w1, &w0, ws[14], p[6]);
1894 word3_muladd(&w2, &w1, &w0, ws[15], p[5]);
1895 word3_muladd(&w2, &w1, &w0, ws[16], p[4]);
1896 word3_muladd(&w2, &w1, &w0, ws[17], p[3]);
1897 word3_muladd(&w2, &w1, &w0, ws[18], p[2]);
1898 word3_muladd(&w2, &w1, &w0, ws[19], p[1]);
1899 word3_add(&w2, &w1, &w0, z[20]);
1900 ws[20] = w0 * p_dash;
1901 word3_muladd(&w2, &w1, &w0, ws[20], p[0]);
1902 w0 = w1;
1903 w1 = w2;
1904 w2 = 0;
1905 word3_muladd(&w2, &w1, &w0, ws[0], p[21]);
1906 word3_muladd(&w2, &w1, &w0, ws[1], p[20]);
1907 word3_muladd(&w2, &w1, &w0, ws[2], p[19]);
1908 word3_muladd(&w2, &w1, &w0, ws[3], p[18]);
1909 word3_muladd(&w2, &w1, &w0, ws[4], p[17]);
1910 word3_muladd(&w2, &w1, &w0, ws[5], p[16]);
1911 word3_muladd(&w2, &w1, &w0, ws[6], p[15]);
1912 word3_muladd(&w2, &w1, &w0, ws[7], p[14]);
1913 word3_muladd(&w2, &w1, &w0, ws[8], p[13]);
1914 word3_muladd(&w2, &w1, &w0, ws[9], p[12]);
1915 word3_muladd(&w2, &w1, &w0, ws[10], p[11]);
1916 word3_muladd(&w2, &w1, &w0, ws[11], p[10]);
1917 word3_muladd(&w2, &w1, &w0, ws[12], p[9]);
1918 word3_muladd(&w2, &w1, &w0, ws[13], p[8]);
1919 word3_muladd(&w2, &w1, &w0, ws[14], p[7]);
1920 word3_muladd(&w2, &w1, &w0, ws[15], p[6]);
1921 word3_muladd(&w2, &w1, &w0, ws[16], p[5]);
1922 word3_muladd(&w2, &w1, &w0, ws[17], p[4]);
1923 word3_muladd(&w2, &w1, &w0, ws[18], p[3]);
1924 word3_muladd(&w2, &w1, &w0, ws[19], p[2]);
1925 word3_muladd(&w2, &w1, &w0, ws[20], p[1]);
1926 word3_add(&w2, &w1, &w0, z[21]);
1927 ws[21] = w0 * p_dash;
1928 word3_muladd(&w2, &w1, &w0, ws[21], p[0]);
1929 w0 = w1;
1930 w1 = w2;
1931 w2 = 0;
1932 word3_muladd(&w2, &w1, &w0, ws[0], p[22]);
1933 word3_muladd(&w2, &w1, &w0, ws[1], p[21]);
1934 word3_muladd(&w2, &w1, &w0, ws[2], p[20]);
1935 word3_muladd(&w2, &w1, &w0, ws[3], p[19]);
1936 word3_muladd(&w2, &w1, &w0, ws[4], p[18]);
1937 word3_muladd(&w2, &w1, &w0, ws[5], p[17]);
1938 word3_muladd(&w2, &w1, &w0, ws[6], p[16]);
1939 word3_muladd(&w2, &w1, &w0, ws[7], p[15]);
1940 word3_muladd(&w2, &w1, &w0, ws[8], p[14]);
1941 word3_muladd(&w2, &w1, &w0, ws[9], p[13]);
1942 word3_muladd(&w2, &w1, &w0, ws[10], p[12]);
1943 word3_muladd(&w2, &w1, &w0, ws[11], p[11]);
1944 word3_muladd(&w2, &w1, &w0, ws[12], p[10]);
1945 word3_muladd(&w2, &w1, &w0, ws[13], p[9]);
1946 word3_muladd(&w2, &w1, &w0, ws[14], p[8]);
1947 word3_muladd(&w2, &w1, &w0, ws[15], p[7]);
1948 word3_muladd(&w2, &w1, &w0, ws[16], p[6]);
1949 word3_muladd(&w2, &w1, &w0, ws[17], p[5]);
1950 word3_muladd(&w2, &w1, &w0, ws[18], p[4]);
1951 word3_muladd(&w2, &w1, &w0, ws[19], p[3]);
1952 word3_muladd(&w2, &w1, &w0, ws[20], p[2]);
1953 word3_muladd(&w2, &w1, &w0, ws[21], p[1]);
1954 word3_add(&w2, &w1, &w0, z[22]);
1955 ws[22] = w0 * p_dash;
1956 word3_muladd(&w2, &w1, &w0, ws[22], p[0]);
1957 w0 = w1;
1958 w1 = w2;
1959 w2 = 0;
1960 word3_muladd(&w2, &w1, &w0, ws[0], p[23]);
1961 word3_muladd(&w2, &w1, &w0, ws[1], p[22]);
1962 word3_muladd(&w2, &w1, &w0, ws[2], p[21]);
1963 word3_muladd(&w2, &w1, &w0, ws[3], p[20]);
1964 word3_muladd(&w2, &w1, &w0, ws[4], p[19]);
1965 word3_muladd(&w2, &w1, &w0, ws[5], p[18]);
1966 word3_muladd(&w2, &w1, &w0, ws[6], p[17]);
1967 word3_muladd(&w2, &w1, &w0, ws[7], p[16]);
1968 word3_muladd(&w2, &w1, &w0, ws[8], p[15]);
1969 word3_muladd(&w2, &w1, &w0, ws[9], p[14]);
1970 word3_muladd(&w2, &w1, &w0, ws[10], p[13]);
1971 word3_muladd(&w2, &w1, &w0, ws[11], p[12]);
1972 word3_muladd(&w2, &w1, &w0, ws[12], p[11]);
1973 word3_muladd(&w2, &w1, &w0, ws[13], p[10]);
1974 word3_muladd(&w2, &w1, &w0, ws[14], p[9]);
1975 word3_muladd(&w2, &w1, &w0, ws[15], p[8]);
1976 word3_muladd(&w2, &w1, &w0, ws[16], p[7]);
1977 word3_muladd(&w2, &w1, &w0, ws[17], p[6]);
1978 word3_muladd(&w2, &w1, &w0, ws[18], p[5]);
1979 word3_muladd(&w2, &w1, &w0, ws[19], p[4]);
1980 word3_muladd(&w2, &w1, &w0, ws[20], p[3]);
1981 word3_muladd(&w2, &w1, &w0, ws[21], p[2]);
1982 word3_muladd(&w2, &w1, &w0, ws[22], p[1]);
1983 word3_add(&w2, &w1, &w0, z[23]);
1984 ws[23] = w0 * p_dash;
1985 word3_muladd(&w2, &w1, &w0, ws[23], p[0]);
1986 w0 = w1;
1987 w1 = w2;
1988 w2 = 0;
1989 word3_muladd(&w2, &w1, &w0, ws[0], p[24]);
1990 word3_muladd(&w2, &w1, &w0, ws[1], p[23]);
1991 word3_muladd(&w2, &w1, &w0, ws[2], p[22]);
1992 word3_muladd(&w2, &w1, &w0, ws[3], p[21]);
1993 word3_muladd(&w2, &w1, &w0, ws[4], p[20]);
1994 word3_muladd(&w2, &w1, &w0, ws[5], p[19]);
1995 word3_muladd(&w2, &w1, &w0, ws[6], p[18]);
1996 word3_muladd(&w2, &w1, &w0, ws[7], p[17]);
1997 word3_muladd(&w2, &w1, &w0, ws[8], p[16]);
1998 word3_muladd(&w2, &w1, &w0, ws[9], p[15]);
1999 word3_muladd(&w2, &w1, &w0, ws[10], p[14]);
2000 word3_muladd(&w2, &w1, &w0, ws[11], p[13]);
2001 word3_muladd(&w2, &w1, &w0, ws[12], p[12]);
2002 word3_muladd(&w2, &w1, &w0, ws[13], p[11]);
2003 word3_muladd(&w2, &w1, &w0, ws[14], p[10]);
2004 word3_muladd(&w2, &w1, &w0, ws[15], p[9]);
2005 word3_muladd(&w2, &w1, &w0, ws[16], p[8]);
2006 word3_muladd(&w2, &w1, &w0, ws[17], p[7]);
2007 word3_muladd(&w2, &w1, &w0, ws[18], p[6]);
2008 word3_muladd(&w2, &w1, &w0, ws[19], p[5]);
2009 word3_muladd(&w2, &w1, &w0, ws[20], p[4]);
2010 word3_muladd(&w2, &w1, &w0, ws[21], p[3]);
2011 word3_muladd(&w2, &w1, &w0, ws[22], p[2]);
2012 word3_muladd(&w2, &w1, &w0, ws[23], p[1]);
2013 word3_add(&w2, &w1, &w0, z[24]);
2014 ws[24] = w0 * p_dash;
2015 word3_muladd(&w2, &w1, &w0, ws[24], p[0]);
2016 w0 = w1;
2017 w1 = w2;
2018 w2 = 0;
2019 word3_muladd(&w2, &w1, &w0, ws[0], p[25]);
2020 word3_muladd(&w2, &w1, &w0, ws[1], p[24]);
2021 word3_muladd(&w2, &w1, &w0, ws[2], p[23]);
2022 word3_muladd(&w2, &w1, &w0, ws[3], p[22]);
2023 word3_muladd(&w2, &w1, &w0, ws[4], p[21]);
2024 word3_muladd(&w2, &w1, &w0, ws[5], p[20]);
2025 word3_muladd(&w2, &w1, &w0, ws[6], p[19]);
2026 word3_muladd(&w2, &w1, &w0, ws[7], p[18]);
2027 word3_muladd(&w2, &w1, &w0, ws[8], p[17]);
2028 word3_muladd(&w2, &w1, &w0, ws[9], p[16]);
2029 word3_muladd(&w2, &w1, &w0, ws[10], p[15]);
2030 word3_muladd(&w2, &w1, &w0, ws[11], p[14]);
2031 word3_muladd(&w2, &w1, &w0, ws[12], p[13]);
2032 word3_muladd(&w2, &w1, &w0, ws[13], p[12]);
2033 word3_muladd(&w2, &w1, &w0, ws[14], p[11]);
2034 word3_muladd(&w2, &w1, &w0, ws[15], p[10]);
2035 word3_muladd(&w2, &w1, &w0, ws[16], p[9]);
2036 word3_muladd(&w2, &w1, &w0, ws[17], p[8]);
2037 word3_muladd(&w2, &w1, &w0, ws[18], p[7]);
2038 word3_muladd(&w2, &w1, &w0, ws[19], p[6]);
2039 word3_muladd(&w2, &w1, &w0, ws[20], p[5]);
2040 word3_muladd(&w2, &w1, &w0, ws[21], p[4]);
2041 word3_muladd(&w2, &w1, &w0, ws[22], p[3]);
2042 word3_muladd(&w2, &w1, &w0, ws[23], p[2]);
2043 word3_muladd(&w2, &w1, &w0, ws[24], p[1]);
2044 word3_add(&w2, &w1, &w0, z[25]);
2045 ws[25] = w0 * p_dash;
2046 word3_muladd(&w2, &w1, &w0, ws[25], p[0]);
2047 w0 = w1;
2048 w1 = w2;
2049 w2 = 0;
2050 word3_muladd(&w2, &w1, &w0, ws[0], p[26]);
2051 word3_muladd(&w2, &w1, &w0, ws[1], p[25]);
2052 word3_muladd(&w2, &w1, &w0, ws[2], p[24]);
2053 word3_muladd(&w2, &w1, &w0, ws[3], p[23]);
2054 word3_muladd(&w2, &w1, &w0, ws[4], p[22]);
2055 word3_muladd(&w2, &w1, &w0, ws[5], p[21]);
2056 word3_muladd(&w2, &w1, &w0, ws[6], p[20]);
2057 word3_muladd(&w2, &w1, &w0, ws[7], p[19]);
2058 word3_muladd(&w2, &w1, &w0, ws[8], p[18]);
2059 word3_muladd(&w2, &w1, &w0, ws[9], p[17]);
2060 word3_muladd(&w2, &w1, &w0, ws[10], p[16]);
2061 word3_muladd(&w2, &w1, &w0, ws[11], p[15]);
2062 word3_muladd(&w2, &w1, &w0, ws[12], p[14]);
2063 word3_muladd(&w2, &w1, &w0, ws[13], p[13]);
2064 word3_muladd(&w2, &w1, &w0, ws[14], p[12]);
2065 word3_muladd(&w2, &w1, &w0, ws[15], p[11]);
2066 word3_muladd(&w2, &w1, &w0, ws[16], p[10]);
2067 word3_muladd(&w2, &w1, &w0, ws[17], p[9]);
2068 word3_muladd(&w2, &w1, &w0, ws[18], p[8]);
2069 word3_muladd(&w2, &w1, &w0, ws[19], p[7]);
2070 word3_muladd(&w2, &w1, &w0, ws[20], p[6]);
2071 word3_muladd(&w2, &w1, &w0, ws[21], p[5]);
2072 word3_muladd(&w2, &w1, &w0, ws[22], p[4]);
2073 word3_muladd(&w2, &w1, &w0, ws[23], p[3]);
2074 word3_muladd(&w2, &w1, &w0, ws[24], p[2]);
2075 word3_muladd(&w2, &w1, &w0, ws[25], p[1]);
2076 word3_add(&w2, &w1, &w0, z[26]);
2077 ws[26] = w0 * p_dash;
2078 word3_muladd(&w2, &w1, &w0, ws[26], p[0]);
2079 w0 = w1;
2080 w1 = w2;
2081 w2 = 0;
2082 word3_muladd(&w2, &w1, &w0, ws[0], p[27]);
2083 word3_muladd(&w2, &w1, &w0, ws[1], p[26]);
2084 word3_muladd(&w2, &w1, &w0, ws[2], p[25]);
2085 word3_muladd(&w2, &w1, &w0, ws[3], p[24]);
2086 word3_muladd(&w2, &w1, &w0, ws[4], p[23]);
2087 word3_muladd(&w2, &w1, &w0, ws[5], p[22]);
2088 word3_muladd(&w2, &w1, &w0, ws[6], p[21]);
2089 word3_muladd(&w2, &w1, &w0, ws[7], p[20]);
2090 word3_muladd(&w2, &w1, &w0, ws[8], p[19]);
2091 word3_muladd(&w2, &w1, &w0, ws[9], p[18]);
2092 word3_muladd(&w2, &w1, &w0, ws[10], p[17]);
2093 word3_muladd(&w2, &w1, &w0, ws[11], p[16]);
2094 word3_muladd(&w2, &w1, &w0, ws[12], p[15]);
2095 word3_muladd(&w2, &w1, &w0, ws[13], p[14]);
2096 word3_muladd(&w2, &w1, &w0, ws[14], p[13]);
2097 word3_muladd(&w2, &w1, &w0, ws[15], p[12]);
2098 word3_muladd(&w2, &w1, &w0, ws[16], p[11]);
2099 word3_muladd(&w2, &w1, &w0, ws[17], p[10]);
2100 word3_muladd(&w2, &w1, &w0, ws[18], p[9]);
2101 word3_muladd(&w2, &w1, &w0, ws[19], p[8]);
2102 word3_muladd(&w2, &w1, &w0, ws[20], p[7]);
2103 word3_muladd(&w2, &w1, &w0, ws[21], p[6]);
2104 word3_muladd(&w2, &w1, &w0, ws[22], p[5]);
2105 word3_muladd(&w2, &w1, &w0, ws[23], p[4]);
2106 word3_muladd(&w2, &w1, &w0, ws[24], p[3]);
2107 word3_muladd(&w2, &w1, &w0, ws[25], p[2]);
2108 word3_muladd(&w2, &w1, &w0, ws[26], p[1]);
2109 word3_add(&w2, &w1, &w0, z[27]);
2110 ws[27] = w0 * p_dash;
2111 word3_muladd(&w2, &w1, &w0, ws[27], p[0]);
2112 w0 = w1;
2113 w1 = w2;
2114 w2 = 0;
2115 word3_muladd(&w2, &w1, &w0, ws[0], p[28]);
2116 word3_muladd(&w2, &w1, &w0, ws[1], p[27]);
2117 word3_muladd(&w2, &w1, &w0, ws[2], p[26]);
2118 word3_muladd(&w2, &w1, &w0, ws[3], p[25]);
2119 word3_muladd(&w2, &w1, &w0, ws[4], p[24]);
2120 word3_muladd(&w2, &w1, &w0, ws[5], p[23]);
2121 word3_muladd(&w2, &w1, &w0, ws[6], p[22]);
2122 word3_muladd(&w2, &w1, &w0, ws[7], p[21]);
2123 word3_muladd(&w2, &w1, &w0, ws[8], p[20]);
2124 word3_muladd(&w2, &w1, &w0, ws[9], p[19]);
2125 word3_muladd(&w2, &w1, &w0, ws[10], p[18]);
2126 word3_muladd(&w2, &w1, &w0, ws[11], p[17]);
2127 word3_muladd(&w2, &w1, &w0, ws[12], p[16]);
2128 word3_muladd(&w2, &w1, &w0, ws[13], p[15]);
2129 word3_muladd(&w2, &w1, &w0, ws[14], p[14]);
2130 word3_muladd(&w2, &w1, &w0, ws[15], p[13]);
2131 word3_muladd(&w2, &w1, &w0, ws[16], p[12]);
2132 word3_muladd(&w2, &w1, &w0, ws[17], p[11]);
2133 word3_muladd(&w2, &w1, &w0, ws[18], p[10]);
2134 word3_muladd(&w2, &w1, &w0, ws[19], p[9]);
2135 word3_muladd(&w2, &w1, &w0, ws[20], p[8]);
2136 word3_muladd(&w2, &w1, &w0, ws[21], p[7]);
2137 word3_muladd(&w2, &w1, &w0, ws[22], p[6]);
2138 word3_muladd(&w2, &w1, &w0, ws[23], p[5]);
2139 word3_muladd(&w2, &w1, &w0, ws[24], p[4]);
2140 word3_muladd(&w2, &w1, &w0, ws[25], p[3]);
2141 word3_muladd(&w2, &w1, &w0, ws[26], p[2]);
2142 word3_muladd(&w2, &w1, &w0, ws[27], p[1]);
2143 word3_add(&w2, &w1, &w0, z[28]);
2144 ws[28] = w0 * p_dash;
2145 word3_muladd(&w2, &w1, &w0, ws[28], p[0]);
2146 w0 = w1;
2147 w1 = w2;
2148 w2 = 0;
2149 word3_muladd(&w2, &w1, &w0, ws[0], p[29]);
2150 word3_muladd(&w2, &w1, &w0, ws[1], p[28]);
2151 word3_muladd(&w2, &w1, &w0, ws[2], p[27]);
2152 word3_muladd(&w2, &w1, &w0, ws[3], p[26]);
2153 word3_muladd(&w2, &w1, &w0, ws[4], p[25]);
2154 word3_muladd(&w2, &w1, &w0, ws[5], p[24]);
2155 word3_muladd(&w2, &w1, &w0, ws[6], p[23]);
2156 word3_muladd(&w2, &w1, &w0, ws[7], p[22]);
2157 word3_muladd(&w2, &w1, &w0, ws[8], p[21]);
2158 word3_muladd(&w2, &w1, &w0, ws[9], p[20]);
2159 word3_muladd(&w2, &w1, &w0, ws[10], p[19]);
2160 word3_muladd(&w2, &w1, &w0, ws[11], p[18]);
2161 word3_muladd(&w2, &w1, &w0, ws[12], p[17]);
2162 word3_muladd(&w2, &w1, &w0, ws[13], p[16]);
2163 word3_muladd(&w2, &w1, &w0, ws[14], p[15]);
2164 word3_muladd(&w2, &w1, &w0, ws[15], p[14]);
2165 word3_muladd(&w2, &w1, &w0, ws[16], p[13]);
2166 word3_muladd(&w2, &w1, &w0, ws[17], p[12]);
2167 word3_muladd(&w2, &w1, &w0, ws[18], p[11]);
2168 word3_muladd(&w2, &w1, &w0, ws[19], p[10]);
2169 word3_muladd(&w2, &w1, &w0, ws[20], p[9]);
2170 word3_muladd(&w2, &w1, &w0, ws[21], p[8]);
2171 word3_muladd(&w2, &w1, &w0, ws[22], p[7]);
2172 word3_muladd(&w2, &w1, &w0, ws[23], p[6]);
2173 word3_muladd(&w2, &w1, &w0, ws[24], p[5]);
2174 word3_muladd(&w2, &w1, &w0, ws[25], p[4]);
2175 word3_muladd(&w2, &w1, &w0, ws[26], p[3]);
2176 word3_muladd(&w2, &w1, &w0, ws[27], p[2]);
2177 word3_muladd(&w2, &w1, &w0, ws[28], p[1]);
2178 word3_add(&w2, &w1, &w0, z[29]);
2179 ws[29] = w0 * p_dash;
2180 word3_muladd(&w2, &w1, &w0, ws[29], p[0]);
2181 w0 = w1;
2182 w1 = w2;
2183 w2 = 0;
2184 word3_muladd(&w2, &w1, &w0, ws[0], p[30]);
2185 word3_muladd(&w2, &w1, &w0, ws[1], p[29]);
2186 word3_muladd(&w2, &w1, &w0, ws[2], p[28]);
2187 word3_muladd(&w2, &w1, &w0, ws[3], p[27]);
2188 word3_muladd(&w2, &w1, &w0, ws[4], p[26]);
2189 word3_muladd(&w2, &w1, &w0, ws[5], p[25]);
2190 word3_muladd(&w2, &w1, &w0, ws[6], p[24]);
2191 word3_muladd(&w2, &w1, &w0, ws[7], p[23]);
2192 word3_muladd(&w2, &w1, &w0, ws[8], p[22]);
2193 word3_muladd(&w2, &w1, &w0, ws[9], p[21]);
2194 word3_muladd(&w2, &w1, &w0, ws[10], p[20]);
2195 word3_muladd(&w2, &w1, &w0, ws[11], p[19]);
2196 word3_muladd(&w2, &w1, &w0, ws[12], p[18]);
2197 word3_muladd(&w2, &w1, &w0, ws[13], p[17]);
2198 word3_muladd(&w2, &w1, &w0, ws[14], p[16]);
2199 word3_muladd(&w2, &w1, &w0, ws[15], p[15]);
2200 word3_muladd(&w2, &w1, &w0, ws[16], p[14]);
2201 word3_muladd(&w2, &w1, &w0, ws[17], p[13]);
2202 word3_muladd(&w2, &w1, &w0, ws[18], p[12]);
2203 word3_muladd(&w2, &w1, &w0, ws[19], p[11]);
2204 word3_muladd(&w2, &w1, &w0, ws[20], p[10]);
2205 word3_muladd(&w2, &w1, &w0, ws[21], p[9]);
2206 word3_muladd(&w2, &w1, &w0, ws[22], p[8]);
2207 word3_muladd(&w2, &w1, &w0, ws[23], p[7]);
2208 word3_muladd(&w2, &w1, &w0, ws[24], p[6]);
2209 word3_muladd(&w2, &w1, &w0, ws[25], p[5]);
2210 word3_muladd(&w2, &w1, &w0, ws[26], p[4]);
2211 word3_muladd(&w2, &w1, &w0, ws[27], p[3]);
2212 word3_muladd(&w2, &w1, &w0, ws[28], p[2]);
2213 word3_muladd(&w2, &w1, &w0, ws[29], p[1]);
2214 word3_add(&w2, &w1, &w0, z[30]);
2215 ws[30] = w0 * p_dash;
2216 word3_muladd(&w2, &w1, &w0, ws[30], p[0]);
2217 w0 = w1;
2218 w1 = w2;
2219 w2 = 0;
2220 word3_muladd(&w2, &w1, &w0, ws[0], p[31]);
2221 word3_muladd(&w2, &w1, &w0, ws[1], p[30]);
2222 word3_muladd(&w2, &w1, &w0, ws[2], p[29]);
2223 word3_muladd(&w2, &w1, &w0, ws[3], p[28]);
2224 word3_muladd(&w2, &w1, &w0, ws[4], p[27]);
2225 word3_muladd(&w2, &w1, &w0, ws[5], p[26]);
2226 word3_muladd(&w2, &w1, &w0, ws[6], p[25]);
2227 word3_muladd(&w2, &w1, &w0, ws[7], p[24]);
2228 word3_muladd(&w2, &w1, &w0, ws[8], p[23]);
2229 word3_muladd(&w2, &w1, &w0, ws[9], p[22]);
2230 word3_muladd(&w2, &w1, &w0, ws[10], p[21]);
2231 word3_muladd(&w2, &w1, &w0, ws[11], p[20]);
2232 word3_muladd(&w2, &w1, &w0, ws[12], p[19]);
2233 word3_muladd(&w2, &w1, &w0, ws[13], p[18]);
2234 word3_muladd(&w2, &w1, &w0, ws[14], p[17]);
2235 word3_muladd(&w2, &w1, &w0, ws[15], p[16]);
2236 word3_muladd(&w2, &w1, &w0, ws[16], p[15]);
2237 word3_muladd(&w2, &w1, &w0, ws[17], p[14]);
2238 word3_muladd(&w2, &w1, &w0, ws[18], p[13]);
2239 word3_muladd(&w2, &w1, &w0, ws[19], p[12]);
2240 word3_muladd(&w2, &w1, &w0, ws[20], p[11]);
2241 word3_muladd(&w2, &w1, &w0, ws[21], p[10]);
2242 word3_muladd(&w2, &w1, &w0, ws[22], p[9]);
2243 word3_muladd(&w2, &w1, &w0, ws[23], p[8]);
2244 word3_muladd(&w2, &w1, &w0, ws[24], p[7]);
2245 word3_muladd(&w2, &w1, &w0, ws[25], p[6]);
2246 word3_muladd(&w2, &w1, &w0, ws[26], p[5]);
2247 word3_muladd(&w2, &w1, &w0, ws[27], p[4]);
2248 word3_muladd(&w2, &w1, &w0, ws[28], p[3]);
2249 word3_muladd(&w2, &w1, &w0, ws[29], p[2]);
2250 word3_muladd(&w2, &w1, &w0, ws[30], p[1]);
2251 word3_add(&w2, &w1, &w0, z[31]);
2252 ws[31] = w0 * p_dash;
2253 word3_muladd(&w2, &w1, &w0, ws[31], p[0]);
2254 w0 = w1;
2255 w1 = w2;
2256 w2 = 0;
2257 word3_muladd(&w2, &w1, &w0, ws[1], p[31]);
2258 word3_muladd(&w2, &w1, &w0, ws[2], p[30]);
2259 word3_muladd(&w2, &w1, &w0, ws[3], p[29]);
2260 word3_muladd(&w2, &w1, &w0, ws[4], p[28]);
2261 word3_muladd(&w2, &w1, &w0, ws[5], p[27]);
2262 word3_muladd(&w2, &w1, &w0, ws[6], p[26]);
2263 word3_muladd(&w2, &w1, &w0, ws[7], p[25]);
2264 word3_muladd(&w2, &w1, &w0, ws[8], p[24]);
2265 word3_muladd(&w2, &w1, &w0, ws[9], p[23]);
2266 word3_muladd(&w2, &w1, &w0, ws[10], p[22]);
2267 word3_muladd(&w2, &w1, &w0, ws[11], p[21]);
2268 word3_muladd(&w2, &w1, &w0, ws[12], p[20]);
2269 word3_muladd(&w2, &w1, &w0, ws[13], p[19]);
2270 word3_muladd(&w2, &w1, &w0, ws[14], p[18]);
2271 word3_muladd(&w2, &w1, &w0, ws[15], p[17]);
2272 word3_muladd(&w2, &w1, &w0, ws[16], p[16]);
2273 word3_muladd(&w2, &w1, &w0, ws[17], p[15]);
2274 word3_muladd(&w2, &w1, &w0, ws[18], p[14]);
2275 word3_muladd(&w2, &w1, &w0, ws[19], p[13]);
2276 word3_muladd(&w2, &w1, &w0, ws[20], p[12]);
2277 word3_muladd(&w2, &w1, &w0, ws[21], p[11]);
2278 word3_muladd(&w2, &w1, &w0, ws[22], p[10]);
2279 word3_muladd(&w2, &w1, &w0, ws[23], p[9]);
2280 word3_muladd(&w2, &w1, &w0, ws[24], p[8]);
2281 word3_muladd(&w2, &w1, &w0, ws[25], p[7]);
2282 word3_muladd(&w2, &w1, &w0, ws[26], p[6]);
2283 word3_muladd(&w2, &w1, &w0, ws[27], p[5]);
2284 word3_muladd(&w2, &w1, &w0, ws[28], p[4]);
2285 word3_muladd(&w2, &w1, &w0, ws[29], p[3]);
2286 word3_muladd(&w2, &w1, &w0, ws[30], p[2]);
2287 word3_muladd(&w2, &w1, &w0, ws[31], p[1]);
2288 word3_add(&w2, &w1, &w0, z[32]);
2289 ws[0] = w0;
2290 w0 = w1;
2291 w1 = w2;
2292 w2 = 0;
2293 word3_muladd(&w2, &w1, &w0, ws[2], p[31]);
2294 word3_muladd(&w2, &w1, &w0, ws[3], p[30]);
2295 word3_muladd(&w2, &w1, &w0, ws[4], p[29]);
2296 word3_muladd(&w2, &w1, &w0, ws[5], p[28]);
2297 word3_muladd(&w2, &w1, &w0, ws[6], p[27]);
2298 word3_muladd(&w2, &w1, &w0, ws[7], p[26]);
2299 word3_muladd(&w2, &w1, &w0, ws[8], p[25]);
2300 word3_muladd(&w2, &w1, &w0, ws[9], p[24]);
2301 word3_muladd(&w2, &w1, &w0, ws[10], p[23]);
2302 word3_muladd(&w2, &w1, &w0, ws[11], p[22]);
2303 word3_muladd(&w2, &w1, &w0, ws[12], p[21]);
2304 word3_muladd(&w2, &w1, &w0, ws[13], p[20]);
2305 word3_muladd(&w2, &w1, &w0, ws[14], p[19]);
2306 word3_muladd(&w2, &w1, &w0, ws[15], p[18]);
2307 word3_muladd(&w2, &w1, &w0, ws[16], p[17]);
2308 word3_muladd(&w2, &w1, &w0, ws[17], p[16]);
2309 word3_muladd(&w2, &w1, &w0, ws[18], p[15]);
2310 word3_muladd(&w2, &w1, &w0, ws[19], p[14]);
2311 word3_muladd(&w2, &w1, &w0, ws[20], p[13]);
2312 word3_muladd(&w2, &w1, &w0, ws[21], p[12]);
2313 word3_muladd(&w2, &w1, &w0, ws[22], p[11]);
2314 word3_muladd(&w2, &w1, &w0, ws[23], p[10]);
2315 word3_muladd(&w2, &w1, &w0, ws[24], p[9]);
2316 word3_muladd(&w2, &w1, &w0, ws[25], p[8]);
2317 word3_muladd(&w2, &w1, &w0, ws[26], p[7]);
2318 word3_muladd(&w2, &w1, &w0, ws[27], p[6]);
2319 word3_muladd(&w2, &w1, &w0, ws[28], p[5]);
2320 word3_muladd(&w2, &w1, &w0, ws[29], p[4]);
2321 word3_muladd(&w2, &w1, &w0, ws[30], p[3]);
2322 word3_muladd(&w2, &w1, &w0, ws[31], p[2]);
2323 word3_add(&w2, &w1, &w0, z[33]);
2324 ws[1] = w0;
2325 w0 = w1;
2326 w1 = w2;
2327 w2 = 0;
2328 word3_muladd(&w2, &w1, &w0, ws[3], p[31]);
2329 word3_muladd(&w2, &w1, &w0, ws[4], p[30]);
2330 word3_muladd(&w2, &w1, &w0, ws[5], p[29]);
2331 word3_muladd(&w2, &w1, &w0, ws[6], p[28]);
2332 word3_muladd(&w2, &w1, &w0, ws[7], p[27]);
2333 word3_muladd(&w2, &w1, &w0, ws[8], p[26]);
2334 word3_muladd(&w2, &w1, &w0, ws[9], p[25]);
2335 word3_muladd(&w2, &w1, &w0, ws[10], p[24]);
2336 word3_muladd(&w2, &w1, &w0, ws[11], p[23]);
2337 word3_muladd(&w2, &w1, &w0, ws[12], p[22]);
2338 word3_muladd(&w2, &w1, &w0, ws[13], p[21]);
2339 word3_muladd(&w2, &w1, &w0, ws[14], p[20]);
2340 word3_muladd(&w2, &w1, &w0, ws[15], p[19]);
2341 word3_muladd(&w2, &w1, &w0, ws[16], p[18]);
2342 word3_muladd(&w2, &w1, &w0, ws[17], p[17]);
2343 word3_muladd(&w2, &w1, &w0, ws[18], p[16]);
2344 word3_muladd(&w2, &w1, &w0, ws[19], p[15]);
2345 word3_muladd(&w2, &w1, &w0, ws[20], p[14]);
2346 word3_muladd(&w2, &w1, &w0, ws[21], p[13]);
2347 word3_muladd(&w2, &w1, &w0, ws[22], p[12]);
2348 word3_muladd(&w2, &w1, &w0, ws[23], p[11]);
2349 word3_muladd(&w2, &w1, &w0, ws[24], p[10]);
2350 word3_muladd(&w2, &w1, &w0, ws[25], p[9]);
2351 word3_muladd(&w2, &w1, &w0, ws[26], p[8]);
2352 word3_muladd(&w2, &w1, &w0, ws[27], p[7]);
2353 word3_muladd(&w2, &w1, &w0, ws[28], p[6]);
2354 word3_muladd(&w2, &w1, &w0, ws[29], p[5]);
2355 word3_muladd(&w2, &w1, &w0, ws[30], p[4]);
2356 word3_muladd(&w2, &w1, &w0, ws[31], p[3]);
2357 word3_add(&w2, &w1, &w0, z[34]);
2358 ws[2] = w0;
2359 w0 = w1;
2360 w1 = w2;
2361 w2 = 0;
2362 word3_muladd(&w2, &w1, &w0, ws[4], p[31]);
2363 word3_muladd(&w2, &w1, &w0, ws[5], p[30]);
2364 word3_muladd(&w2, &w1, &w0, ws[6], p[29]);
2365 word3_muladd(&w2, &w1, &w0, ws[7], p[28]);
2366 word3_muladd(&w2, &w1, &w0, ws[8], p[27]);
2367 word3_muladd(&w2, &w1, &w0, ws[9], p[26]);
2368 word3_muladd(&w2, &w1, &w0, ws[10], p[25]);
2369 word3_muladd(&w2, &w1, &w0, ws[11], p[24]);
2370 word3_muladd(&w2, &w1, &w0, ws[12], p[23]);
2371 word3_muladd(&w2, &w1, &w0, ws[13], p[22]);
2372 word3_muladd(&w2, &w1, &w0, ws[14], p[21]);
2373 word3_muladd(&w2, &w1, &w0, ws[15], p[20]);
2374 word3_muladd(&w2, &w1, &w0, ws[16], p[19]);
2375 word3_muladd(&w2, &w1, &w0, ws[17], p[18]);
2376 word3_muladd(&w2, &w1, &w0, ws[18], p[17]);
2377 word3_muladd(&w2, &w1, &w0, ws[19], p[16]);
2378 word3_muladd(&w2, &w1, &w0, ws[20], p[15]);
2379 word3_muladd(&w2, &w1, &w0, ws[21], p[14]);
2380 word3_muladd(&w2, &w1, &w0, ws[22], p[13]);
2381 word3_muladd(&w2, &w1, &w0, ws[23], p[12]);
2382 word3_muladd(&w2, &w1, &w0, ws[24], p[11]);
2383 word3_muladd(&w2, &w1, &w0, ws[25], p[10]);
2384 word3_muladd(&w2, &w1, &w0, ws[26], p[9]);
2385 word3_muladd(&w2, &w1, &w0, ws[27], p[8]);
2386 word3_muladd(&w2, &w1, &w0, ws[28], p[7]);
2387 word3_muladd(&w2, &w1, &w0, ws[29], p[6]);
2388 word3_muladd(&w2, &w1, &w0, ws[30], p[5]);
2389 word3_muladd(&w2, &w1, &w0, ws[31], p[4]);
2390 word3_add(&w2, &w1, &w0, z[35]);
2391 ws[3] = w0;
2392 w0 = w1;
2393 w1 = w2;
2394 w2 = 0;
2395 word3_muladd(&w2, &w1, &w0, ws[5], p[31]);
2396 word3_muladd(&w2, &w1, &w0, ws[6], p[30]);
2397 word3_muladd(&w2, &w1, &w0, ws[7], p[29]);
2398 word3_muladd(&w2, &w1, &w0, ws[8], p[28]);
2399 word3_muladd(&w2, &w1, &w0, ws[9], p[27]);
2400 word3_muladd(&w2, &w1, &w0, ws[10], p[26]);
2401 word3_muladd(&w2, &w1, &w0, ws[11], p[25]);
2402 word3_muladd(&w2, &w1, &w0, ws[12], p[24]);
2403 word3_muladd(&w2, &w1, &w0, ws[13], p[23]);
2404 word3_muladd(&w2, &w1, &w0, ws[14], p[22]);
2405 word3_muladd(&w2, &w1, &w0, ws[15], p[21]);
2406 word3_muladd(&w2, &w1, &w0, ws[16], p[20]);
2407 word3_muladd(&w2, &w1, &w0, ws[17], p[19]);
2408 word3_muladd(&w2, &w1, &w0, ws[18], p[18]);
2409 word3_muladd(&w2, &w1, &w0, ws[19], p[17]);
2410 word3_muladd(&w2, &w1, &w0, ws[20], p[16]);
2411 word3_muladd(&w2, &w1, &w0, ws[21], p[15]);
2412 word3_muladd(&w2, &w1, &w0, ws[22], p[14]);
2413 word3_muladd(&w2, &w1, &w0, ws[23], p[13]);
2414 word3_muladd(&w2, &w1, &w0, ws[24], p[12]);
2415 word3_muladd(&w2, &w1, &w0, ws[25], p[11]);
2416 word3_muladd(&w2, &w1, &w0, ws[26], p[10]);
2417 word3_muladd(&w2, &w1, &w0, ws[27], p[9]);
2418 word3_muladd(&w2, &w1, &w0, ws[28], p[8]);
2419 word3_muladd(&w2, &w1, &w0, ws[29], p[7]);
2420 word3_muladd(&w2, &w1, &w0, ws[30], p[6]);
2421 word3_muladd(&w2, &w1, &w0, ws[31], p[5]);
2422 word3_add(&w2, &w1, &w0, z[36]);
2423 ws[4] = w0;
2424 w0 = w1;
2425 w1 = w2;
2426 w2 = 0;
2427 word3_muladd(&w2, &w1, &w0, ws[6], p[31]);
2428 word3_muladd(&w2, &w1, &w0, ws[7], p[30]);
2429 word3_muladd(&w2, &w1, &w0, ws[8], p[29]);
2430 word3_muladd(&w2, &w1, &w0, ws[9], p[28]);
2431 word3_muladd(&w2, &w1, &w0, ws[10], p[27]);
2432 word3_muladd(&w2, &w1, &w0, ws[11], p[26]);
2433 word3_muladd(&w2, &w1, &w0, ws[12], p[25]);
2434 word3_muladd(&w2, &w1, &w0, ws[13], p[24]);
2435 word3_muladd(&w2, &w1, &w0, ws[14], p[23]);
2436 word3_muladd(&w2, &w1, &w0, ws[15], p[22]);
2437 word3_muladd(&w2, &w1, &w0, ws[16], p[21]);
2438 word3_muladd(&w2, &w1, &w0, ws[17], p[20]);
2439 word3_muladd(&w2, &w1, &w0, ws[18], p[19]);
2440 word3_muladd(&w2, &w1, &w0, ws[19], p[18]);
2441 word3_muladd(&w2, &w1, &w0, ws[20], p[17]);
2442 word3_muladd(&w2, &w1, &w0, ws[21], p[16]);
2443 word3_muladd(&w2, &w1, &w0, ws[22], p[15]);
2444 word3_muladd(&w2, &w1, &w0, ws[23], p[14]);
2445 word3_muladd(&w2, &w1, &w0, ws[24], p[13]);
2446 word3_muladd(&w2, &w1, &w0, ws[25], p[12]);
2447 word3_muladd(&w2, &w1, &w0, ws[26], p[11]);
2448 word3_muladd(&w2, &w1, &w0, ws[27], p[10]);
2449 word3_muladd(&w2, &w1, &w0, ws[28], p[9]);
2450 word3_muladd(&w2, &w1, &w0, ws[29], p[8]);
2451 word3_muladd(&w2, &w1, &w0, ws[30], p[7]);
2452 word3_muladd(&w2, &w1, &w0, ws[31], p[6]);
2453 word3_add(&w2, &w1, &w0, z[37]);
2454 ws[5] = w0;
2455 w0 = w1;
2456 w1 = w2;
2457 w2 = 0;
2458 word3_muladd(&w2, &w1, &w0, ws[7], p[31]);
2459 word3_muladd(&w2, &w1, &w0, ws[8], p[30]);
2460 word3_muladd(&w2, &w1, &w0, ws[9], p[29]);
2461 word3_muladd(&w2, &w1, &w0, ws[10], p[28]);
2462 word3_muladd(&w2, &w1, &w0, ws[11], p[27]);
2463 word3_muladd(&w2, &w1, &w0, ws[12], p[26]);
2464 word3_muladd(&w2, &w1, &w0, ws[13], p[25]);
2465 word3_muladd(&w2, &w1, &w0, ws[14], p[24]);
2466 word3_muladd(&w2, &w1, &w0, ws[15], p[23]);
2467 word3_muladd(&w2, &w1, &w0, ws[16], p[22]);
2468 word3_muladd(&w2, &w1, &w0, ws[17], p[21]);
2469 word3_muladd(&w2, &w1, &w0, ws[18], p[20]);
2470 word3_muladd(&w2, &w1, &w0, ws[19], p[19]);
2471 word3_muladd(&w2, &w1, &w0, ws[20], p[18]);
2472 word3_muladd(&w2, &w1, &w0, ws[21], p[17]);
2473 word3_muladd(&w2, &w1, &w0, ws[22], p[16]);
2474 word3_muladd(&w2, &w1, &w0, ws[23], p[15]);
2475 word3_muladd(&w2, &w1, &w0, ws[24], p[14]);
2476 word3_muladd(&w2, &w1, &w0, ws[25], p[13]);
2477 word3_muladd(&w2, &w1, &w0, ws[26], p[12]);
2478 word3_muladd(&w2, &w1, &w0, ws[27], p[11]);
2479 word3_muladd(&w2, &w1, &w0, ws[28], p[10]);
2480 word3_muladd(&w2, &w1, &w0, ws[29], p[9]);
2481 word3_muladd(&w2, &w1, &w0, ws[30], p[8]);
2482 word3_muladd(&w2, &w1, &w0, ws[31], p[7]);
2483 word3_add(&w2, &w1, &w0, z[38]);
2484 ws[6] = w0;
2485 w0 = w1;
2486 w1 = w2;
2487 w2 = 0;
2488 word3_muladd(&w2, &w1, &w0, ws[8], p[31]);
2489 word3_muladd(&w2, &w1, &w0, ws[9], p[30]);
2490 word3_muladd(&w2, &w1, &w0, ws[10], p[29]);
2491 word3_muladd(&w2, &w1, &w0, ws[11], p[28]);
2492 word3_muladd(&w2, &w1, &w0, ws[12], p[27]);
2493 word3_muladd(&w2, &w1, &w0, ws[13], p[26]);
2494 word3_muladd(&w2, &w1, &w0, ws[14], p[25]);
2495 word3_muladd(&w2, &w1, &w0, ws[15], p[24]);
2496 word3_muladd(&w2, &w1, &w0, ws[16], p[23]);
2497 word3_muladd(&w2, &w1, &w0, ws[17], p[22]);
2498 word3_muladd(&w2, &w1, &w0, ws[18], p[21]);
2499 word3_muladd(&w2, &w1, &w0, ws[19], p[20]);
2500 word3_muladd(&w2, &w1, &w0, ws[20], p[19]);
2501 word3_muladd(&w2, &w1, &w0, ws[21], p[18]);
2502 word3_muladd(&w2, &w1, &w0, ws[22], p[17]);
2503 word3_muladd(&w2, &w1, &w0, ws[23], p[16]);
2504 word3_muladd(&w2, &w1, &w0, ws[24], p[15]);
2505 word3_muladd(&w2, &w1, &w0, ws[25], p[14]);
2506 word3_muladd(&w2, &w1, &w0, ws[26], p[13]);
2507 word3_muladd(&w2, &w1, &w0, ws[27], p[12]);
2508 word3_muladd(&w2, &w1, &w0, ws[28], p[11]);
2509 word3_muladd(&w2, &w1, &w0, ws[29], p[10]);
2510 word3_muladd(&w2, &w1, &w0, ws[30], p[9]);
2511 word3_muladd(&w2, &w1, &w0, ws[31], p[8]);
2512 word3_add(&w2, &w1, &w0, z[39]);
2513 ws[7] = w0;
2514 w0 = w1;
2515 w1 = w2;
2516 w2 = 0;
2517 word3_muladd(&w2, &w1, &w0, ws[9], p[31]);
2518 word3_muladd(&w2, &w1, &w0, ws[10], p[30]);
2519 word3_muladd(&w2, &w1, &w0, ws[11], p[29]);
2520 word3_muladd(&w2, &w1, &w0, ws[12], p[28]);
2521 word3_muladd(&w2, &w1, &w0, ws[13], p[27]);
2522 word3_muladd(&w2, &w1, &w0, ws[14], p[26]);
2523 word3_muladd(&w2, &w1, &w0, ws[15], p[25]);
2524 word3_muladd(&w2, &w1, &w0, ws[16], p[24]);
2525 word3_muladd(&w2, &w1, &w0, ws[17], p[23]);
2526 word3_muladd(&w2, &w1, &w0, ws[18], p[22]);
2527 word3_muladd(&w2, &w1, &w0, ws[19], p[21]);
2528 word3_muladd(&w2, &w1, &w0, ws[20], p[20]);
2529 word3_muladd(&w2, &w1, &w0, ws[21], p[19]);
2530 word3_muladd(&w2, &w1, &w0, ws[22], p[18]);
2531 word3_muladd(&w2, &w1, &w0, ws[23], p[17]);
2532 word3_muladd(&w2, &w1, &w0, ws[24], p[16]);
2533 word3_muladd(&w2, &w1, &w0, ws[25], p[15]);
2534 word3_muladd(&w2, &w1, &w0, ws[26], p[14]);
2535 word3_muladd(&w2, &w1, &w0, ws[27], p[13]);
2536 word3_muladd(&w2, &w1, &w0, ws[28], p[12]);
2537 word3_muladd(&w2, &w1, &w0, ws[29], p[11]);
2538 word3_muladd(&w2, &w1, &w0, ws[30], p[10]);
2539 word3_muladd(&w2, &w1, &w0, ws[31], p[9]);
2540 word3_add(&w2, &w1, &w0, z[40]);
2541 ws[8] = w0;
2542 w0 = w1;
2543 w1 = w2;
2544 w2 = 0;
2545 word3_muladd(&w2, &w1, &w0, ws[10], p[31]);
2546 word3_muladd(&w2, &w1, &w0, ws[11], p[30]);
2547 word3_muladd(&w2, &w1, &w0, ws[12], p[29]);
2548 word3_muladd(&w2, &w1, &w0, ws[13], p[28]);
2549 word3_muladd(&w2, &w1, &w0, ws[14], p[27]);
2550 word3_muladd(&w2, &w1, &w0, ws[15], p[26]);
2551 word3_muladd(&w2, &w1, &w0, ws[16], p[25]);
2552 word3_muladd(&w2, &w1, &w0, ws[17], p[24]);
2553 word3_muladd(&w2, &w1, &w0, ws[18], p[23]);
2554 word3_muladd(&w2, &w1, &w0, ws[19], p[22]);
2555 word3_muladd(&w2, &w1, &w0, ws[20], p[21]);
2556 word3_muladd(&w2, &w1, &w0, ws[21], p[20]);
2557 word3_muladd(&w2, &w1, &w0, ws[22], p[19]);
2558 word3_muladd(&w2, &w1, &w0, ws[23], p[18]);
2559 word3_muladd(&w2, &w1, &w0, ws[24], p[17]);
2560 word3_muladd(&w2, &w1, &w0, ws[25], p[16]);
2561 word3_muladd(&w2, &w1, &w0, ws[26], p[15]);
2562 word3_muladd(&w2, &w1, &w0, ws[27], p[14]);
2563 word3_muladd(&w2, &w1, &w0, ws[28], p[13]);
2564 word3_muladd(&w2, &w1, &w0, ws[29], p[12]);
2565 word3_muladd(&w2, &w1, &w0, ws[30], p[11]);
2566 word3_muladd(&w2, &w1, &w0, ws[31], p[10]);
2567 word3_add(&w2, &w1, &w0, z[41]);
2568 ws[9] = w0;
2569 w0 = w1;
2570 w1 = w2;
2571 w2 = 0;
2572 word3_muladd(&w2, &w1, &w0, ws[11], p[31]);
2573 word3_muladd(&w2, &w1, &w0, ws[12], p[30]);
2574 word3_muladd(&w2, &w1, &w0, ws[13], p[29]);
2575 word3_muladd(&w2, &w1, &w0, ws[14], p[28]);
2576 word3_muladd(&w2, &w1, &w0, ws[15], p[27]);
2577 word3_muladd(&w2, &w1, &w0, ws[16], p[26]);
2578 word3_muladd(&w2, &w1, &w0, ws[17], p[25]);
2579 word3_muladd(&w2, &w1, &w0, ws[18], p[24]);
2580 word3_muladd(&w2, &w1, &w0, ws[19], p[23]);
2581 word3_muladd(&w2, &w1, &w0, ws[20], p[22]);
2582 word3_muladd(&w2, &w1, &w0, ws[21], p[21]);
2583 word3_muladd(&w2, &w1, &w0, ws[22], p[20]);
2584 word3_muladd(&w2, &w1, &w0, ws[23], p[19]);
2585 word3_muladd(&w2, &w1, &w0, ws[24], p[18]);
2586 word3_muladd(&w2, &w1, &w0, ws[25], p[17]);
2587 word3_muladd(&w2, &w1, &w0, ws[26], p[16]);
2588 word3_muladd(&w2, &w1, &w0, ws[27], p[15]);
2589 word3_muladd(&w2, &w1, &w0, ws[28], p[14]);
2590 word3_muladd(&w2, &w1, &w0, ws[29], p[13]);
2591 word3_muladd(&w2, &w1, &w0, ws[30], p[12]);
2592 word3_muladd(&w2, &w1, &w0, ws[31], p[11]);
2593 word3_add(&w2, &w1, &w0, z[42]);
2594 ws[10] = w0;
2595 w0 = w1;
2596 w1 = w2;
2597 w2 = 0;
2598 word3_muladd(&w2, &w1, &w0, ws[12], p[31]);
2599 word3_muladd(&w2, &w1, &w0, ws[13], p[30]);
2600 word3_muladd(&w2, &w1, &w0, ws[14], p[29]);
2601 word3_muladd(&w2, &w1, &w0, ws[15], p[28]);
2602 word3_muladd(&w2, &w1, &w0, ws[16], p[27]);
2603 word3_muladd(&w2, &w1, &w0, ws[17], p[26]);
2604 word3_muladd(&w2, &w1, &w0, ws[18], p[25]);
2605 word3_muladd(&w2, &w1, &w0, ws[19], p[24]);
2606 word3_muladd(&w2, &w1, &w0, ws[20], p[23]);
2607 word3_muladd(&w2, &w1, &w0, ws[21], p[22]);
2608 word3_muladd(&w2, &w1, &w0, ws[22], p[21]);
2609 word3_muladd(&w2, &w1, &w0, ws[23], p[20]);
2610 word3_muladd(&w2, &w1, &w0, ws[24], p[19]);
2611 word3_muladd(&w2, &w1, &w0, ws[25], p[18]);
2612 word3_muladd(&w2, &w1, &w0, ws[26], p[17]);
2613 word3_muladd(&w2, &w1, &w0, ws[27], p[16]);
2614 word3_muladd(&w2, &w1, &w0, ws[28], p[15]);
2615 word3_muladd(&w2, &w1, &w0, ws[29], p[14]);
2616 word3_muladd(&w2, &w1, &w0, ws[30], p[13]);
2617 word3_muladd(&w2, &w1, &w0, ws[31], p[12]);
2618 word3_add(&w2, &w1, &w0, z[43]);
2619 ws[11] = w0;
2620 w0 = w1;
2621 w1 = w2;
2622 w2 = 0;
2623 word3_muladd(&w2, &w1, &w0, ws[13], p[31]);
2624 word3_muladd(&w2, &w1, &w0, ws[14], p[30]);
2625 word3_muladd(&w2, &w1, &w0, ws[15], p[29]);
2626 word3_muladd(&w2, &w1, &w0, ws[16], p[28]);
2627 word3_muladd(&w2, &w1, &w0, ws[17], p[27]);
2628 word3_muladd(&w2, &w1, &w0, ws[18], p[26]);
2629 word3_muladd(&w2, &w1, &w0, ws[19], p[25]);
2630 word3_muladd(&w2, &w1, &w0, ws[20], p[24]);
2631 word3_muladd(&w2, &w1, &w0, ws[21], p[23]);
2632 word3_muladd(&w2, &w1, &w0, ws[22], p[22]);
2633 word3_muladd(&w2, &w1, &w0, ws[23], p[21]);
2634 word3_muladd(&w2, &w1, &w0, ws[24], p[20]);
2635 word3_muladd(&w2, &w1, &w0, ws[25], p[19]);
2636 word3_muladd(&w2, &w1, &w0, ws[26], p[18]);
2637 word3_muladd(&w2, &w1, &w0, ws[27], p[17]);
2638 word3_muladd(&w2, &w1, &w0, ws[28], p[16]);
2639 word3_muladd(&w2, &w1, &w0, ws[29], p[15]);
2640 word3_muladd(&w2, &w1, &w0, ws[30], p[14]);
2641 word3_muladd(&w2, &w1, &w0, ws[31], p[13]);
2642 word3_add(&w2, &w1, &w0, z[44]);
2643 ws[12] = w0;
2644 w0 = w1;
2645 w1 = w2;
2646 w2 = 0;
2647 word3_muladd(&w2, &w1, &w0, ws[14], p[31]);
2648 word3_muladd(&w2, &w1, &w0, ws[15], p[30]);
2649 word3_muladd(&w2, &w1, &w0, ws[16], p[29]);
2650 word3_muladd(&w2, &w1, &w0, ws[17], p[28]);
2651 word3_muladd(&w2, &w1, &w0, ws[18], p[27]);
2652 word3_muladd(&w2, &w1, &w0, ws[19], p[26]);
2653 word3_muladd(&w2, &w1, &w0, ws[20], p[25]);
2654 word3_muladd(&w2, &w1, &w0, ws[21], p[24]);
2655 word3_muladd(&w2, &w1, &w0, ws[22], p[23]);
2656 word3_muladd(&w2, &w1, &w0, ws[23], p[22]);
2657 word3_muladd(&w2, &w1, &w0, ws[24], p[21]);
2658 word3_muladd(&w2, &w1, &w0, ws[25], p[20]);
2659 word3_muladd(&w2, &w1, &w0, ws[26], p[19]);
2660 word3_muladd(&w2, &w1, &w0, ws[27], p[18]);
2661 word3_muladd(&w2, &w1, &w0, ws[28], p[17]);
2662 word3_muladd(&w2, &w1, &w0, ws[29], p[16]);
2663 word3_muladd(&w2, &w1, &w0, ws[30], p[15]);
2664 word3_muladd(&w2, &w1, &w0, ws[31], p[14]);
2665 word3_add(&w2, &w1, &w0, z[45]);
2666 ws[13] = w0;
2667 w0 = w1;
2668 w1 = w2;
2669 w2 = 0;
2670 word3_muladd(&w2, &w1, &w0, ws[15], p[31]);
2671 word3_muladd(&w2, &w1, &w0, ws[16], p[30]);
2672 word3_muladd(&w2, &w1, &w0, ws[17], p[29]);
2673 word3_muladd(&w2, &w1, &w0, ws[18], p[28]);
2674 word3_muladd(&w2, &w1, &w0, ws[19], p[27]);
2675 word3_muladd(&w2, &w1, &w0, ws[20], p[26]);
2676 word3_muladd(&w2, &w1, &w0, ws[21], p[25]);
2677 word3_muladd(&w2, &w1, &w0, ws[22], p[24]);
2678 word3_muladd(&w2, &w1, &w0, ws[23], p[23]);
2679 word3_muladd(&w2, &w1, &w0, ws[24], p[22]);
2680 word3_muladd(&w2, &w1, &w0, ws[25], p[21]);
2681 word3_muladd(&w2, &w1, &w0, ws[26], p[20]);
2682 word3_muladd(&w2, &w1, &w0, ws[27], p[19]);
2683 word3_muladd(&w2, &w1, &w0, ws[28], p[18]);
2684 word3_muladd(&w2, &w1, &w0, ws[29], p[17]);
2685 word3_muladd(&w2, &w1, &w0, ws[30], p[16]);
2686 word3_muladd(&w2, &w1, &w0, ws[31], p[15]);
2687 word3_add(&w2, &w1, &w0, z[46]);
2688 ws[14] = w0;
2689 w0 = w1;
2690 w1 = w2;
2691 w2 = 0;
2692 word3_muladd(&w2, &w1, &w0, ws[16], p[31]);
2693 word3_muladd(&w2, &w1, &w0, ws[17], p[30]);
2694 word3_muladd(&w2, &w1, &w0, ws[18], p[29]);
2695 word3_muladd(&w2, &w1, &w0, ws[19], p[28]);
2696 word3_muladd(&w2, &w1, &w0, ws[20], p[27]);
2697 word3_muladd(&w2, &w1, &w0, ws[21], p[26]);
2698 word3_muladd(&w2, &w1, &w0, ws[22], p[25]);
2699 word3_muladd(&w2, &w1, &w0, ws[23], p[24]);
2700 word3_muladd(&w2, &w1, &w0, ws[24], p[23]);
2701 word3_muladd(&w2, &w1, &w0, ws[25], p[22]);
2702 word3_muladd(&w2, &w1, &w0, ws[26], p[21]);
2703 word3_muladd(&w2, &w1, &w0, ws[27], p[20]);
2704 word3_muladd(&w2, &w1, &w0, ws[28], p[19]);
2705 word3_muladd(&w2, &w1, &w0, ws[29], p[18]);
2706 word3_muladd(&w2, &w1, &w0, ws[30], p[17]);
2707 word3_muladd(&w2, &w1, &w0, ws[31], p[16]);
2708 word3_add(&w2, &w1, &w0, z[47]);
2709 ws[15] = w0;
2710 w0 = w1;
2711 w1 = w2;
2712 w2 = 0;
2713 word3_muladd(&w2, &w1, &w0, ws[17], p[31]);
2714 word3_muladd(&w2, &w1, &w0, ws[18], p[30]);
2715 word3_muladd(&w2, &w1, &w0, ws[19], p[29]);
2716 word3_muladd(&w2, &w1, &w0, ws[20], p[28]);
2717 word3_muladd(&w2, &w1, &w0, ws[21], p[27]);
2718 word3_muladd(&w2, &w1, &w0, ws[22], p[26]);
2719 word3_muladd(&w2, &w1, &w0, ws[23], p[25]);
2720 word3_muladd(&w2, &w1, &w0, ws[24], p[24]);
2721 word3_muladd(&w2, &w1, &w0, ws[25], p[23]);
2722 word3_muladd(&w2, &w1, &w0, ws[26], p[22]);
2723 word3_muladd(&w2, &w1, &w0, ws[27], p[21]);
2724 word3_muladd(&w2, &w1, &w0, ws[28], p[20]);
2725 word3_muladd(&w2, &w1, &w0, ws[29], p[19]);
2726 word3_muladd(&w2, &w1, &w0, ws[30], p[18]);
2727 word3_muladd(&w2, &w1, &w0, ws[31], p[17]);
2728 word3_add(&w2, &w1, &w0, z[48]);
2729 ws[16] = w0;
2730 w0 = w1;
2731 w1 = w2;
2732 w2 = 0;
2733 word3_muladd(&w2, &w1, &w0, ws[18], p[31]);
2734 word3_muladd(&w2, &w1, &w0, ws[19], p[30]);
2735 word3_muladd(&w2, &w1, &w0, ws[20], p[29]);
2736 word3_muladd(&w2, &w1, &w0, ws[21], p[28]);
2737 word3_muladd(&w2, &w1, &w0, ws[22], p[27]);
2738 word3_muladd(&w2, &w1, &w0, ws[23], p[26]);
2739 word3_muladd(&w2, &w1, &w0, ws[24], p[25]);
2740 word3_muladd(&w2, &w1, &w0, ws[25], p[24]);
2741 word3_muladd(&w2, &w1, &w0, ws[26], p[23]);
2742 word3_muladd(&w2, &w1, &w0, ws[27], p[22]);
2743 word3_muladd(&w2, &w1, &w0, ws[28], p[21]);
2744 word3_muladd(&w2, &w1, &w0, ws[29], p[20]);
2745 word3_muladd(&w2, &w1, &w0, ws[30], p[19]);
2746 word3_muladd(&w2, &w1, &w0, ws[31], p[18]);
2747 word3_add(&w2, &w1, &w0, z[49]);
2748 ws[17] = w0;
2749 w0 = w1;
2750 w1 = w2;
2751 w2 = 0;
2752 word3_muladd(&w2, &w1, &w0, ws[19], p[31]);
2753 word3_muladd(&w2, &w1, &w0, ws[20], p[30]);
2754 word3_muladd(&w2, &w1, &w0, ws[21], p[29]);
2755 word3_muladd(&w2, &w1, &w0, ws[22], p[28]);
2756 word3_muladd(&w2, &w1, &w0, ws[23], p[27]);
2757 word3_muladd(&w2, &w1, &w0, ws[24], p[26]);
2758 word3_muladd(&w2, &w1, &w0, ws[25], p[25]);
2759 word3_muladd(&w2, &w1, &w0, ws[26], p[24]);
2760 word3_muladd(&w2, &w1, &w0, ws[27], p[23]);
2761 word3_muladd(&w2, &w1, &w0, ws[28], p[22]);
2762 word3_muladd(&w2, &w1, &w0, ws[29], p[21]);
2763 word3_muladd(&w2, &w1, &w0, ws[30], p[20]);
2764 word3_muladd(&w2, &w1, &w0, ws[31], p[19]);
2765 word3_add(&w2, &w1, &w0, z[50]);
2766 ws[18] = w0;
2767 w0 = w1;
2768 w1 = w2;
2769 w2 = 0;
2770 word3_muladd(&w2, &w1, &w0, ws[20], p[31]);
2771 word3_muladd(&w2, &w1, &w0, ws[21], p[30]);
2772 word3_muladd(&w2, &w1, &w0, ws[22], p[29]);
2773 word3_muladd(&w2, &w1, &w0, ws[23], p[28]);
2774 word3_muladd(&w2, &w1, &w0, ws[24], p[27]);
2775 word3_muladd(&w2, &w1, &w0, ws[25], p[26]);
2776 word3_muladd(&w2, &w1, &w0, ws[26], p[25]);
2777 word3_muladd(&w2, &w1, &w0, ws[27], p[24]);
2778 word3_muladd(&w2, &w1, &w0, ws[28], p[23]);
2779 word3_muladd(&w2, &w1, &w0, ws[29], p[22]);
2780 word3_muladd(&w2, &w1, &w0, ws[30], p[21]);
2781 word3_muladd(&w2, &w1, &w0, ws[31], p[20]);
2782 word3_add(&w2, &w1, &w0, z[51]);
2783 ws[19] = w0;
2784 w0 = w1;
2785 w1 = w2;
2786 w2 = 0;
2787 word3_muladd(&w2, &w1, &w0, ws[21], p[31]);
2788 word3_muladd(&w2, &w1, &w0, ws[22], p[30]);
2789 word3_muladd(&w2, &w1, &w0, ws[23], p[29]);
2790 word3_muladd(&w2, &w1, &w0, ws[24], p[28]);
2791 word3_muladd(&w2, &w1, &w0, ws[25], p[27]);
2792 word3_muladd(&w2, &w1, &w0, ws[26], p[26]);
2793 word3_muladd(&w2, &w1, &w0, ws[27], p[25]);
2794 word3_muladd(&w2, &w1, &w0, ws[28], p[24]);
2795 word3_muladd(&w2, &w1, &w0, ws[29], p[23]);
2796 word3_muladd(&w2, &w1, &w0, ws[30], p[22]);
2797 word3_muladd(&w2, &w1, &w0, ws[31], p[21]);
2798 word3_add(&w2, &w1, &w0, z[52]);
2799 ws[20] = w0;
2800 w0 = w1;
2801 w1 = w2;
2802 w2 = 0;
2803 word3_muladd(&w2, &w1, &w0, ws[22], p[31]);
2804 word3_muladd(&w2, &w1, &w0, ws[23], p[30]);
2805 word3_muladd(&w2, &w1, &w0, ws[24], p[29]);
2806 word3_muladd(&w2, &w1, &w0, ws[25], p[28]);
2807 word3_muladd(&w2, &w1, &w0, ws[26], p[27]);
2808 word3_muladd(&w2, &w1, &w0, ws[27], p[26]);
2809 word3_muladd(&w2, &w1, &w0, ws[28], p[25]);
2810 word3_muladd(&w2, &w1, &w0, ws[29], p[24]);
2811 word3_muladd(&w2, &w1, &w0, ws[30], p[23]);
2812 word3_muladd(&w2, &w1, &w0, ws[31], p[22]);
2813 word3_add(&w2, &w1, &w0, z[53]);
2814 ws[21] = w0;
2815 w0 = w1;
2816 w1 = w2;
2817 w2 = 0;
2818 word3_muladd(&w2, &w1, &w0, ws[23], p[31]);
2819 word3_muladd(&w2, &w1, &w0, ws[24], p[30]);
2820 word3_muladd(&w2, &w1, &w0, ws[25], p[29]);
2821 word3_muladd(&w2, &w1, &w0, ws[26], p[28]);
2822 word3_muladd(&w2, &w1, &w0, ws[27], p[27]);
2823 word3_muladd(&w2, &w1, &w0, ws[28], p[26]);
2824 word3_muladd(&w2, &w1, &w0, ws[29], p[25]);
2825 word3_muladd(&w2, &w1, &w0, ws[30], p[24]);
2826 word3_muladd(&w2, &w1, &w0, ws[31], p[23]);
2827 word3_add(&w2, &w1, &w0, z[54]);
2828 ws[22] = w0;
2829 w0 = w1;
2830 w1 = w2;
2831 w2 = 0;
2832 word3_muladd(&w2, &w1, &w0, ws[24], p[31]);
2833 word3_muladd(&w2, &w1, &w0, ws[25], p[30]);
2834 word3_muladd(&w2, &w1, &w0, ws[26], p[29]);
2835 word3_muladd(&w2, &w1, &w0, ws[27], p[28]);
2836 word3_muladd(&w2, &w1, &w0, ws[28], p[27]);
2837 word3_muladd(&w2, &w1, &w0, ws[29], p[26]);
2838 word3_muladd(&w2, &w1, &w0, ws[30], p[25]);
2839 word3_muladd(&w2, &w1, &w0, ws[31], p[24]);
2840 word3_add(&w2, &w1, &w0, z[55]);
2841 ws[23] = w0;
2842 w0 = w1;
2843 w1 = w2;
2844 w2 = 0;
2845 word3_muladd(&w2, &w1, &w0, ws[25], p[31]);
2846 word3_muladd(&w2, &w1, &w0, ws[26], p[30]);
2847 word3_muladd(&w2, &w1, &w0, ws[27], p[29]);
2848 word3_muladd(&w2, &w1, &w0, ws[28], p[28]);
2849 word3_muladd(&w2, &w1, &w0, ws[29], p[27]);
2850 word3_muladd(&w2, &w1, &w0, ws[30], p[26]);
2851 word3_muladd(&w2, &w1, &w0, ws[31], p[25]);
2852 word3_add(&w2, &w1, &w0, z[56]);
2853 ws[24] = w0;
2854 w0 = w1;
2855 w1 = w2;
2856 w2 = 0;
2857 word3_muladd(&w2, &w1, &w0, ws[26], p[31]);
2858 word3_muladd(&w2, &w1, &w0, ws[27], p[30]);
2859 word3_muladd(&w2, &w1, &w0, ws[28], p[29]);
2860 word3_muladd(&w2, &w1, &w0, ws[29], p[28]);
2861 word3_muladd(&w2, &w1, &w0, ws[30], p[27]);
2862 word3_muladd(&w2, &w1, &w0, ws[31], p[26]);
2863 word3_add(&w2, &w1, &w0, z[57]);
2864 ws[25] = w0;
2865 w0 = w1;
2866 w1 = w2;
2867 w2 = 0;
2868 word3_muladd(&w2, &w1, &w0, ws[27], p[31]);
2869 word3_muladd(&w2, &w1, &w0, ws[28], p[30]);
2870 word3_muladd(&w2, &w1, &w0, ws[29], p[29]);
2871 word3_muladd(&w2, &w1, &w0, ws[30], p[28]);
2872 word3_muladd(&w2, &w1, &w0, ws[31], p[27]);
2873 word3_add(&w2, &w1, &w0, z[58]);
2874 ws[26] = w0;
2875 w0 = w1;
2876 w1 = w2;
2877 w2 = 0;
2878 word3_muladd(&w2, &w1, &w0, ws[28], p[31]);
2879 word3_muladd(&w2, &w1, &w0, ws[29], p[30]);
2880 word3_muladd(&w2, &w1, &w0, ws[30], p[29]);
2881 word3_muladd(&w2, &w1, &w0, ws[31], p[28]);
2882 word3_add(&w2, &w1, &w0, z[59]);
2883 ws[27] = w0;
2884 w0 = w1;
2885 w1 = w2;
2886 w2 = 0;
2887 word3_muladd(&w2, &w1, &w0, ws[29], p[31]);
2888 word3_muladd(&w2, &w1, &w0, ws[30], p[30]);
2889 word3_muladd(&w2, &w1, &w0, ws[31], p[29]);
2890 word3_add(&w2, &w1, &w0, z[60]);
2891 ws[28] = w0;
2892 w0 = w1;
2893 w1 = w2;
2894 w2 = 0;
2895 word3_muladd(&w2, &w1, &w0, ws[30], p[31]);
2896 word3_muladd(&w2, &w1, &w0, ws[31], p[30]);
2897 word3_add(&w2, &w1, &w0, z[61]);
2898 ws[29] = w0;
2899 w0 = w1;
2900 w1 = w2;
2901 w2 = 0;
2902 word3_muladd(&w2, &w1, &w0, ws[31], p[31]);
2903 word3_add(&w2, &w1, &w0, z[62]);
2904 ws[30] = w0;
2905 w0 = w1;
2906 w1 = w2;
2907 w2 = 0;
2908 word3_add(&w2, &w1, &w0, z[63]);
2909 ws[31] = w0;
2910 ws[32] = w1;
2911 word borrow = bigint_sub3(z, ws, 32 + 1, p, 32);
2912 CT::conditional_assign_mem(borrow, z, ws, 32);
2913 clear_mem(z + 32, 32);
2914}
2915
2916} // namespace Botan
Mask< T > conditional_assign_mem(T cnd, T *sink, const T *src, size_t elems)
Definition ct_utils.h:298
BOTAN_FUZZER_API void bigint_monty_redc_24(word z[48], const word p[24], word p_dash, word ws[])
BOTAN_FUZZER_API void bigint_monty_redc_4(word z[8], const word p[4], word p_dash, word ws[])
void word3_muladd(word *w2, word *w1, word *w0, word x, word y)
Definition mp_asmi.h:528
BOTAN_FUZZER_API void bigint_monty_redc_6(word z[12], const word p[6], word p_dash, word ws[])
void word3_add(word *w2, word *w1, word *w0, word x)
Definition mp_asmi.h:569
BOTAN_FUZZER_API void bigint_monty_redc_32(word z[64], const word p[32], word p_dash, word ws[])
BOTAN_FUZZER_API void bigint_monty_redc_16(word z[32], const word p[16], word p_dash, word ws[])
word bigint_sub3(word z[], const word x[], size_t x_size, const word y[], size_t y_size)
Definition mp_core.h:321
constexpr void clear_mem(T *ptr, size_t n)
Definition mem_ops.h:120
BOTAN_FUZZER_API void bigint_monty_redc_8(word z[16], const word p[8], word p_dash, word ws[])