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