Coverage Report

Created: 2020-02-14 15:38

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