Coverage Report

Created: 2021-05-04 09:02

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