Coverage Report

Created: 2020-11-21 08:34

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