Coverage Report

Created: 2021-02-21 07:20

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