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