Coverage Report

Created: 2020-06-30 13:58

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