2 #include "fp_mul_comba.c"
4 #if defined(TFM_SMALL_SET)
5 void fp_mul_comba_small(fp_int *A, fp_int *B, fp_int *C)
7 fp_digit c0, c1, c2, at[32];
8 switch (MAX(A->used, B->used)) {
11 memcpy(at, A->dp, 1 * sizeof(fp_digit));
12 memcpy(at+1, B->dp, 1 * sizeof(fp_digit));
18 COMBA_STORE(C->dp[0]);
19 COMBA_STORE2(C->dp[1]);
21 C->sign = A->sign ^ B->sign;
27 memcpy(at, A->dp, 2 * sizeof(fp_digit));
28 memcpy(at+2, B->dp, 2 * sizeof(fp_digit));
34 COMBA_STORE(C->dp[0]);
37 MULADD(at[0], at[3]); MULADD(at[1], at[2]);
38 COMBA_STORE(C->dp[1]);
42 COMBA_STORE(C->dp[2]);
43 COMBA_STORE2(C->dp[3]);
45 C->sign = A->sign ^ B->sign;
51 memcpy(at, A->dp, 3 * sizeof(fp_digit));
52 memcpy(at+3, B->dp, 3 * sizeof(fp_digit));
58 COMBA_STORE(C->dp[0]);
61 MULADD(at[0], at[4]); MULADD(at[1], at[3]);
62 COMBA_STORE(C->dp[1]);
65 MULADD(at[0], at[5]); MULADD(at[1], at[4]); MULADD(at[2], at[3]);
66 COMBA_STORE(C->dp[2]);
69 MULADD(at[1], at[5]); MULADD(at[2], at[4]);
70 COMBA_STORE(C->dp[3]);
74 COMBA_STORE(C->dp[4]);
75 COMBA_STORE2(C->dp[5]);
77 C->sign = A->sign ^ B->sign;
83 memcpy(at, A->dp, 4 * sizeof(fp_digit));
84 memcpy(at+4, B->dp, 4 * sizeof(fp_digit));
90 COMBA_STORE(C->dp[0]);
93 MULADD(at[0], at[5]); MULADD(at[1], at[4]);
94 COMBA_STORE(C->dp[1]);
97 MULADD(at[0], at[6]); MULADD(at[1], at[5]); MULADD(at[2], at[4]);
98 COMBA_STORE(C->dp[2]);
101 MULADD(at[0], at[7]); MULADD(at[1], at[6]); MULADD(at[2], at[5]); MULADD(at[3], at[4]);
102 COMBA_STORE(C->dp[3]);
105 MULADD(at[1], at[7]); MULADD(at[2], at[6]); MULADD(at[3], at[5]);
106 COMBA_STORE(C->dp[4]);
109 MULADD(at[2], at[7]); MULADD(at[3], at[6]);
110 COMBA_STORE(C->dp[5]);
113 MULADD(at[3], at[7]);
114 COMBA_STORE(C->dp[6]);
115 COMBA_STORE2(C->dp[7]);
117 C->sign = A->sign ^ B->sign;
123 memcpy(at, A->dp, 5 * sizeof(fp_digit));
124 memcpy(at+5, B->dp, 5 * sizeof(fp_digit));
129 MULADD(at[0], at[5]);
130 COMBA_STORE(C->dp[0]);
133 MULADD(at[0], at[6]); MULADD(at[1], at[5]);
134 COMBA_STORE(C->dp[1]);
137 MULADD(at[0], at[7]); MULADD(at[1], at[6]); MULADD(at[2], at[5]);
138 COMBA_STORE(C->dp[2]);
141 MULADD(at[0], at[8]); MULADD(at[1], at[7]); MULADD(at[2], at[6]); MULADD(at[3], at[5]);
142 COMBA_STORE(C->dp[3]);
145 MULADD(at[0], at[9]); MULADD(at[1], at[8]); MULADD(at[2], at[7]); MULADD(at[3], at[6]); MULADD(at[4], at[5]);
146 COMBA_STORE(C->dp[4]);
149 MULADD(at[1], at[9]); MULADD(at[2], at[8]); MULADD(at[3], at[7]); MULADD(at[4], at[6]);
150 COMBA_STORE(C->dp[5]);
153 MULADD(at[2], at[9]); MULADD(at[3], at[8]); MULADD(at[4], at[7]);
154 COMBA_STORE(C->dp[6]);
157 MULADD(at[3], at[9]); MULADD(at[4], at[8]);
158 COMBA_STORE(C->dp[7]);
161 MULADD(at[4], at[9]);
162 COMBA_STORE(C->dp[8]);
163 COMBA_STORE2(C->dp[9]);
165 C->sign = A->sign ^ B->sign;
171 memcpy(at, A->dp, 6 * sizeof(fp_digit));
172 memcpy(at+6, B->dp, 6 * sizeof(fp_digit));
177 MULADD(at[0], at[6]);
178 COMBA_STORE(C->dp[0]);
181 MULADD(at[0], at[7]); MULADD(at[1], at[6]);
182 COMBA_STORE(C->dp[1]);
185 MULADD(at[0], at[8]); MULADD(at[1], at[7]); MULADD(at[2], at[6]);
186 COMBA_STORE(C->dp[2]);
189 MULADD(at[0], at[9]); MULADD(at[1], at[8]); MULADD(at[2], at[7]); MULADD(at[3], at[6]);
190 COMBA_STORE(C->dp[3]);
193 MULADD(at[0], at[10]); MULADD(at[1], at[9]); MULADD(at[2], at[8]); MULADD(at[3], at[7]); MULADD(at[4], at[6]);
194 COMBA_STORE(C->dp[4]);
197 MULADD(at[0], at[11]); MULADD(at[1], at[10]); MULADD(at[2], at[9]); MULADD(at[3], at[8]); MULADD(at[4], at[7]); MULADD(at[5], at[6]);
198 COMBA_STORE(C->dp[5]);
201 MULADD(at[1], at[11]); MULADD(at[2], at[10]); MULADD(at[3], at[9]); MULADD(at[4], at[8]); MULADD(at[5], at[7]);
202 COMBA_STORE(C->dp[6]);
205 MULADD(at[2], at[11]); MULADD(at[3], at[10]); MULADD(at[4], at[9]); MULADD(at[5], at[8]);
206 COMBA_STORE(C->dp[7]);
209 MULADD(at[3], at[11]); MULADD(at[4], at[10]); MULADD(at[5], at[9]);
210 COMBA_STORE(C->dp[8]);
213 MULADD(at[4], at[11]); MULADD(at[5], at[10]);
214 COMBA_STORE(C->dp[9]);
217 MULADD(at[5], at[11]);
218 COMBA_STORE(C->dp[10]);
219 COMBA_STORE2(C->dp[11]);
221 C->sign = A->sign ^ B->sign;
227 memcpy(at, A->dp, 7 * sizeof(fp_digit));
228 memcpy(at+7, B->dp, 7 * sizeof(fp_digit));
233 MULADD(at[0], at[7]);
234 COMBA_STORE(C->dp[0]);
237 MULADD(at[0], at[8]); MULADD(at[1], at[7]);
238 COMBA_STORE(C->dp[1]);
241 MULADD(at[0], at[9]); MULADD(at[1], at[8]); MULADD(at[2], at[7]);
242 COMBA_STORE(C->dp[2]);
245 MULADD(at[0], at[10]); MULADD(at[1], at[9]); MULADD(at[2], at[8]); MULADD(at[3], at[7]);
246 COMBA_STORE(C->dp[3]);
249 MULADD(at[0], at[11]); MULADD(at[1], at[10]); MULADD(at[2], at[9]); MULADD(at[3], at[8]); MULADD(at[4], at[7]);
250 COMBA_STORE(C->dp[4]);
253 MULADD(at[0], at[12]); MULADD(at[1], at[11]); MULADD(at[2], at[10]); MULADD(at[3], at[9]); MULADD(at[4], at[8]); MULADD(at[5], at[7]);
254 COMBA_STORE(C->dp[5]);
257 MULADD(at[0], at[13]); MULADD(at[1], at[12]); MULADD(at[2], at[11]); MULADD(at[3], at[10]); MULADD(at[4], at[9]); MULADD(at[5], at[8]); MULADD(at[6], at[7]);
258 COMBA_STORE(C->dp[6]);
261 MULADD(at[1], at[13]); MULADD(at[2], at[12]); MULADD(at[3], at[11]); MULADD(at[4], at[10]); MULADD(at[5], at[9]); MULADD(at[6], at[8]);
262 COMBA_STORE(C->dp[7]);
265 MULADD(at[2], at[13]); MULADD(at[3], at[12]); MULADD(at[4], at[11]); MULADD(at[5], at[10]); MULADD(at[6], at[9]);
266 COMBA_STORE(C->dp[8]);
269 MULADD(at[3], at[13]); MULADD(at[4], at[12]); MULADD(at[5], at[11]); MULADD(at[6], at[10]);
270 COMBA_STORE(C->dp[9]);
273 MULADD(at[4], at[13]); MULADD(at[5], at[12]); MULADD(at[6], at[11]);
274 COMBA_STORE(C->dp[10]);
277 MULADD(at[5], at[13]); MULADD(at[6], at[12]);
278 COMBA_STORE(C->dp[11]);
281 MULADD(at[6], at[13]);
282 COMBA_STORE(C->dp[12]);
283 COMBA_STORE2(C->dp[13]);
285 C->sign = A->sign ^ B->sign;
291 memcpy(at, A->dp, 8 * sizeof(fp_digit));
292 memcpy(at+8, B->dp, 8 * sizeof(fp_digit));
297 MULADD(at[0], at[8]);
298 COMBA_STORE(C->dp[0]);
301 MULADD(at[0], at[9]); MULADD(at[1], at[8]);
302 COMBA_STORE(C->dp[1]);
305 MULADD(at[0], at[10]); MULADD(at[1], at[9]); MULADD(at[2], at[8]);
306 COMBA_STORE(C->dp[2]);
309 MULADD(at[0], at[11]); MULADD(at[1], at[10]); MULADD(at[2], at[9]); MULADD(at[3], at[8]);
310 COMBA_STORE(C->dp[3]);
313 MULADD(at[0], at[12]); MULADD(at[1], at[11]); MULADD(at[2], at[10]); MULADD(at[3], at[9]); MULADD(at[4], at[8]);
314 COMBA_STORE(C->dp[4]);
317 MULADD(at[0], at[13]); MULADD(at[1], at[12]); MULADD(at[2], at[11]); MULADD(at[3], at[10]); MULADD(at[4], at[9]); MULADD(at[5], at[8]);
318 COMBA_STORE(C->dp[5]);
321 MULADD(at[0], at[14]); MULADD(at[1], at[13]); MULADD(at[2], at[12]); MULADD(at[3], at[11]); MULADD(at[4], at[10]); MULADD(at[5], at[9]); MULADD(at[6], at[8]);
322 COMBA_STORE(C->dp[6]);
325 MULADD(at[0], at[15]); MULADD(at[1], at[14]); MULADD(at[2], at[13]); MULADD(at[3], at[12]); MULADD(at[4], at[11]); MULADD(at[5], at[10]); MULADD(at[6], at[9]); MULADD(at[7], at[8]);
326 COMBA_STORE(C->dp[7]);
329 MULADD(at[1], at[15]); MULADD(at[2], at[14]); MULADD(at[3], at[13]); MULADD(at[4], at[12]); MULADD(at[5], at[11]); MULADD(at[6], at[10]); MULADD(at[7], at[9]);
330 COMBA_STORE(C->dp[8]);
333 MULADD(at[2], at[15]); MULADD(at[3], at[14]); MULADD(at[4], at[13]); MULADD(at[5], at[12]); MULADD(at[6], at[11]); MULADD(at[7], at[10]);
334 COMBA_STORE(C->dp[9]);
337 MULADD(at[3], at[15]); MULADD(at[4], at[14]); MULADD(at[5], at[13]); MULADD(at[6], at[12]); MULADD(at[7], at[11]);
338 COMBA_STORE(C->dp[10]);
341 MULADD(at[4], at[15]); MULADD(at[5], at[14]); MULADD(at[6], at[13]); MULADD(at[7], at[12]);
342 COMBA_STORE(C->dp[11]);
345 MULADD(at[5], at[15]); MULADD(at[6], at[14]); MULADD(at[7], at[13]);
346 COMBA_STORE(C->dp[12]);
349 MULADD(at[6], at[15]); MULADD(at[7], at[14]);
350 COMBA_STORE(C->dp[13]);
353 MULADD(at[7], at[15]);
354 COMBA_STORE(C->dp[14]);
355 COMBA_STORE2(C->dp[15]);
357 C->sign = A->sign ^ B->sign;
363 memcpy(at, A->dp, 9 * sizeof(fp_digit));
364 memcpy(at+9, B->dp, 9 * sizeof(fp_digit));
369 MULADD(at[0], at[9]);
370 COMBA_STORE(C->dp[0]);
373 MULADD(at[0], at[10]); MULADD(at[1], at[9]);
374 COMBA_STORE(C->dp[1]);
377 MULADD(at[0], at[11]); MULADD(at[1], at[10]); MULADD(at[2], at[9]);
378 COMBA_STORE(C->dp[2]);
381 MULADD(at[0], at[12]); MULADD(at[1], at[11]); MULADD(at[2], at[10]); MULADD(at[3], at[9]);
382 COMBA_STORE(C->dp[3]);
385 MULADD(at[0], at[13]); MULADD(at[1], at[12]); MULADD(at[2], at[11]); MULADD(at[3], at[10]); MULADD(at[4], at[9]);
386 COMBA_STORE(C->dp[4]);
389 MULADD(at[0], at[14]); MULADD(at[1], at[13]); MULADD(at[2], at[12]); MULADD(at[3], at[11]); MULADD(at[4], at[10]); MULADD(at[5], at[9]);
390 COMBA_STORE(C->dp[5]);
393 MULADD(at[0], at[15]); MULADD(at[1], at[14]); MULADD(at[2], at[13]); MULADD(at[3], at[12]); MULADD(at[4], at[11]); MULADD(at[5], at[10]); MULADD(at[6], at[9]);
394 COMBA_STORE(C->dp[6]);
397 MULADD(at[0], at[16]); MULADD(at[1], at[15]); MULADD(at[2], at[14]); MULADD(at[3], at[13]); MULADD(at[4], at[12]); MULADD(at[5], at[11]); MULADD(at[6], at[10]); MULADD(at[7], at[9]);
398 COMBA_STORE(C->dp[7]);
401 MULADD(at[0], at[17]); MULADD(at[1], at[16]); MULADD(at[2], at[15]); MULADD(at[3], at[14]); MULADD(at[4], at[13]); MULADD(at[5], at[12]); MULADD(at[6], at[11]); MULADD(at[7], at[10]); MULADD(at[8], at[9]);
402 COMBA_STORE(C->dp[8]);
405 MULADD(at[1], at[17]); MULADD(at[2], at[16]); MULADD(at[3], at[15]); MULADD(at[4], at[14]); MULADD(at[5], at[13]); MULADD(at[6], at[12]); MULADD(at[7], at[11]); MULADD(at[8], at[10]);
406 COMBA_STORE(C->dp[9]);
409 MULADD(at[2], at[17]); MULADD(at[3], at[16]); MULADD(at[4], at[15]); MULADD(at[5], at[14]); MULADD(at[6], at[13]); MULADD(at[7], at[12]); MULADD(at[8], at[11]);
410 COMBA_STORE(C->dp[10]);
413 MULADD(at[3], at[17]); MULADD(at[4], at[16]); MULADD(at[5], at[15]); MULADD(at[6], at[14]); MULADD(at[7], at[13]); MULADD(at[8], at[12]);
414 COMBA_STORE(C->dp[11]);
417 MULADD(at[4], at[17]); MULADD(at[5], at[16]); MULADD(at[6], at[15]); MULADD(at[7], at[14]); MULADD(at[8], at[13]);
418 COMBA_STORE(C->dp[12]);
421 MULADD(at[5], at[17]); MULADD(at[6], at[16]); MULADD(at[7], at[15]); MULADD(at[8], at[14]);
422 COMBA_STORE(C->dp[13]);
425 MULADD(at[6], at[17]); MULADD(at[7], at[16]); MULADD(at[8], at[15]);
426 COMBA_STORE(C->dp[14]);
429 MULADD(at[7], at[17]); MULADD(at[8], at[16]);
430 COMBA_STORE(C->dp[15]);
433 MULADD(at[8], at[17]);
434 COMBA_STORE(C->dp[16]);
435 COMBA_STORE2(C->dp[17]);
437 C->sign = A->sign ^ B->sign;
443 memcpy(at, A->dp, 10 * sizeof(fp_digit));
444 memcpy(at+10, B->dp, 10 * sizeof(fp_digit));
449 MULADD(at[0], at[10]);
450 COMBA_STORE(C->dp[0]);
453 MULADD(at[0], at[11]); MULADD(at[1], at[10]);
454 COMBA_STORE(C->dp[1]);
457 MULADD(at[0], at[12]); MULADD(at[1], at[11]); MULADD(at[2], at[10]);
458 COMBA_STORE(C->dp[2]);
461 MULADD(at[0], at[13]); MULADD(at[1], at[12]); MULADD(at[2], at[11]); MULADD(at[3], at[10]);
462 COMBA_STORE(C->dp[3]);
465 MULADD(at[0], at[14]); MULADD(at[1], at[13]); MULADD(at[2], at[12]); MULADD(at[3], at[11]); MULADD(at[4], at[10]);
466 COMBA_STORE(C->dp[4]);
469 MULADD(at[0], at[15]); MULADD(at[1], at[14]); MULADD(at[2], at[13]); MULADD(at[3], at[12]); MULADD(at[4], at[11]); MULADD(at[5], at[10]);
470 COMBA_STORE(C->dp[5]);
473 MULADD(at[0], at[16]); MULADD(at[1], at[15]); MULADD(at[2], at[14]); MULADD(at[3], at[13]); MULADD(at[4], at[12]); MULADD(at[5], at[11]); MULADD(at[6], at[10]);
474 COMBA_STORE(C->dp[6]);
477 MULADD(at[0], at[17]); MULADD(at[1], at[16]); MULADD(at[2], at[15]); MULADD(at[3], at[14]); MULADD(at[4], at[13]); MULADD(at[5], at[12]); MULADD(at[6], at[11]); MULADD(at[7], at[10]);
478 COMBA_STORE(C->dp[7]);
481 MULADD(at[0], at[18]); MULADD(at[1], at[17]); MULADD(at[2], at[16]); MULADD(at[3], at[15]); MULADD(at[4], at[14]); MULADD(at[5], at[13]); MULADD(at[6], at[12]); MULADD(at[7], at[11]); MULADD(at[8], at[10]);
482 COMBA_STORE(C->dp[8]);
485 MULADD(at[0], at[19]); MULADD(at[1], at[18]); MULADD(at[2], at[17]); MULADD(at[3], at[16]); MULADD(at[4], at[15]); MULADD(at[5], at[14]); MULADD(at[6], at[13]); MULADD(at[7], at[12]); MULADD(at[8], at[11]); MULADD(at[9], at[10]);
486 COMBA_STORE(C->dp[9]);
489 MULADD(at[1], at[19]); MULADD(at[2], at[18]); MULADD(at[3], at[17]); MULADD(at[4], at[16]); MULADD(at[5], at[15]); MULADD(at[6], at[14]); MULADD(at[7], at[13]); MULADD(at[8], at[12]); MULADD(at[9], at[11]);
490 COMBA_STORE(C->dp[10]);
493 MULADD(at[2], at[19]); MULADD(at[3], at[18]); MULADD(at[4], at[17]); MULADD(at[5], at[16]); MULADD(at[6], at[15]); MULADD(at[7], at[14]); MULADD(at[8], at[13]); MULADD(at[9], at[12]);
494 COMBA_STORE(C->dp[11]);
497 MULADD(at[3], at[19]); MULADD(at[4], at[18]); MULADD(at[5], at[17]); MULADD(at[6], at[16]); MULADD(at[7], at[15]); MULADD(at[8], at[14]); MULADD(at[9], at[13]);
498 COMBA_STORE(C->dp[12]);
501 MULADD(at[4], at[19]); MULADD(at[5], at[18]); MULADD(at[6], at[17]); MULADD(at[7], at[16]); MULADD(at[8], at[15]); MULADD(at[9], at[14]);
502 COMBA_STORE(C->dp[13]);
505 MULADD(at[5], at[19]); MULADD(at[6], at[18]); MULADD(at[7], at[17]); MULADD(at[8], at[16]); MULADD(at[9], at[15]);
506 COMBA_STORE(C->dp[14]);
509 MULADD(at[6], at[19]); MULADD(at[7], at[18]); MULADD(at[8], at[17]); MULADD(at[9], at[16]);
510 COMBA_STORE(C->dp[15]);
513 MULADD(at[7], at[19]); MULADD(at[8], at[18]); MULADD(at[9], at[17]);
514 COMBA_STORE(C->dp[16]);
517 MULADD(at[8], at[19]); MULADD(at[9], at[18]);
518 COMBA_STORE(C->dp[17]);
521 MULADD(at[9], at[19]);
522 COMBA_STORE(C->dp[18]);
523 COMBA_STORE2(C->dp[19]);
525 C->sign = A->sign ^ B->sign;
531 memcpy(at, A->dp, 11 * sizeof(fp_digit));
532 memcpy(at+11, B->dp, 11 * sizeof(fp_digit));
537 MULADD(at[0], at[11]);
538 COMBA_STORE(C->dp[0]);
541 MULADD(at[0], at[12]); MULADD(at[1], at[11]);
542 COMBA_STORE(C->dp[1]);
545 MULADD(at[0], at[13]); MULADD(at[1], at[12]); MULADD(at[2], at[11]);
546 COMBA_STORE(C->dp[2]);
549 MULADD(at[0], at[14]); MULADD(at[1], at[13]); MULADD(at[2], at[12]); MULADD(at[3], at[11]);
550 COMBA_STORE(C->dp[3]);
553 MULADD(at[0], at[15]); MULADD(at[1], at[14]); MULADD(at[2], at[13]); MULADD(at[3], at[12]); MULADD(at[4], at[11]);
554 COMBA_STORE(C->dp[4]);
557 MULADD(at[0], at[16]); MULADD(at[1], at[15]); MULADD(at[2], at[14]); MULADD(at[3], at[13]); MULADD(at[4], at[12]); MULADD(at[5], at[11]);
558 COMBA_STORE(C->dp[5]);
561 MULADD(at[0], at[17]); MULADD(at[1], at[16]); MULADD(at[2], at[15]); MULADD(at[3], at[14]); MULADD(at[4], at[13]); MULADD(at[5], at[12]); MULADD(at[6], at[11]);
562 COMBA_STORE(C->dp[6]);
565 MULADD(at[0], at[18]); MULADD(at[1], at[17]); MULADD(at[2], at[16]); MULADD(at[3], at[15]); MULADD(at[4], at[14]); MULADD(at[5], at[13]); MULADD(at[6], at[12]); MULADD(at[7], at[11]);
566 COMBA_STORE(C->dp[7]);
569 MULADD(at[0], at[19]); MULADD(at[1], at[18]); MULADD(at[2], at[17]); MULADD(at[3], at[16]); MULADD(at[4], at[15]); MULADD(at[5], at[14]); MULADD(at[6], at[13]); MULADD(at[7], at[12]); MULADD(at[8], at[11]);
570 COMBA_STORE(C->dp[8]);
573 MULADD(at[0], at[20]); MULADD(at[1], at[19]); MULADD(at[2], at[18]); MULADD(at[3], at[17]); MULADD(at[4], at[16]); MULADD(at[5], at[15]); MULADD(at[6], at[14]); MULADD(at[7], at[13]); MULADD(at[8], at[12]); MULADD(at[9], at[11]);
574 COMBA_STORE(C->dp[9]);
577 MULADD(at[0], at[21]); MULADD(at[1], at[20]); MULADD(at[2], at[19]); MULADD(at[3], at[18]); MULADD(at[4], at[17]); MULADD(at[5], at[16]); MULADD(at[6], at[15]); MULADD(at[7], at[14]); MULADD(at[8], at[13]); MULADD(at[9], at[12]); MULADD(at[10], at[11]);
578 COMBA_STORE(C->dp[10]);
581 MULADD(at[1], at[21]); MULADD(at[2], at[20]); MULADD(at[3], at[19]); MULADD(at[4], at[18]); MULADD(at[5], at[17]); MULADD(at[6], at[16]); MULADD(at[7], at[15]); MULADD(at[8], at[14]); MULADD(at[9], at[13]); MULADD(at[10], at[12]);
582 COMBA_STORE(C->dp[11]);
585 MULADD(at[2], at[21]); MULADD(at[3], at[20]); MULADD(at[4], at[19]); MULADD(at[5], at[18]); MULADD(at[6], at[17]); MULADD(at[7], at[16]); MULADD(at[8], at[15]); MULADD(at[9], at[14]); MULADD(at[10], at[13]);
586 COMBA_STORE(C->dp[12]);
589 MULADD(at[3], at[21]); MULADD(at[4], at[20]); MULADD(at[5], at[19]); MULADD(at[6], at[18]); MULADD(at[7], at[17]); MULADD(at[8], at[16]); MULADD(at[9], at[15]); MULADD(at[10], at[14]);
590 COMBA_STORE(C->dp[13]);
593 MULADD(at[4], at[21]); MULADD(at[5], at[20]); MULADD(at[6], at[19]); MULADD(at[7], at[18]); MULADD(at[8], at[17]); MULADD(at[9], at[16]); MULADD(at[10], at[15]);
594 COMBA_STORE(C->dp[14]);
597 MULADD(at[5], at[21]); MULADD(at[6], at[20]); MULADD(at[7], at[19]); MULADD(at[8], at[18]); MULADD(at[9], at[17]); MULADD(at[10], at[16]);
598 COMBA_STORE(C->dp[15]);
601 MULADD(at[6], at[21]); MULADD(at[7], at[20]); MULADD(at[8], at[19]); MULADD(at[9], at[18]); MULADD(at[10], at[17]);
602 COMBA_STORE(C->dp[16]);
605 MULADD(at[7], at[21]); MULADD(at[8], at[20]); MULADD(at[9], at[19]); MULADD(at[10], at[18]);
606 COMBA_STORE(C->dp[17]);
609 MULADD(at[8], at[21]); MULADD(at[9], at[20]); MULADD(at[10], at[19]);
610 COMBA_STORE(C->dp[18]);
613 MULADD(at[9], at[21]); MULADD(at[10], at[20]);
614 COMBA_STORE(C->dp[19]);
617 MULADD(at[10], at[21]);
618 COMBA_STORE(C->dp[20]);
619 COMBA_STORE2(C->dp[21]);
621 C->sign = A->sign ^ B->sign;
627 memcpy(at, A->dp, 12 * sizeof(fp_digit));
628 memcpy(at+12, B->dp, 12 * sizeof(fp_digit));
633 MULADD(at[0], at[12]);
634 COMBA_STORE(C->dp[0]);
637 MULADD(at[0], at[13]); MULADD(at[1], at[12]);
638 COMBA_STORE(C->dp[1]);
641 MULADD(at[0], at[14]); MULADD(at[1], at[13]); MULADD(at[2], at[12]);
642 COMBA_STORE(C->dp[2]);
645 MULADD(at[0], at[15]); MULADD(at[1], at[14]); MULADD(at[2], at[13]); MULADD(at[3], at[12]);
646 COMBA_STORE(C->dp[3]);
649 MULADD(at[0], at[16]); MULADD(at[1], at[15]); MULADD(at[2], at[14]); MULADD(at[3], at[13]); MULADD(at[4], at[12]);
650 COMBA_STORE(C->dp[4]);
653 MULADD(at[0], at[17]); MULADD(at[1], at[16]); MULADD(at[2], at[15]); MULADD(at[3], at[14]); MULADD(at[4], at[13]); MULADD(at[5], at[12]);
654 COMBA_STORE(C->dp[5]);
657 MULADD(at[0], at[18]); MULADD(at[1], at[17]); MULADD(at[2], at[16]); MULADD(at[3], at[15]); MULADD(at[4], at[14]); MULADD(at[5], at[13]); MULADD(at[6], at[12]);
658 COMBA_STORE(C->dp[6]);
661 MULADD(at[0], at[19]); MULADD(at[1], at[18]); MULADD(at[2], at[17]); MULADD(at[3], at[16]); MULADD(at[4], at[15]); MULADD(at[5], at[14]); MULADD(at[6], at[13]); MULADD(at[7], at[12]);
662 COMBA_STORE(C->dp[7]);
665 MULADD(at[0], at[20]); MULADD(at[1], at[19]); MULADD(at[2], at[18]); MULADD(at[3], at[17]); MULADD(at[4], at[16]); MULADD(at[5], at[15]); MULADD(at[6], at[14]); MULADD(at[7], at[13]); MULADD(at[8], at[12]);
666 COMBA_STORE(C->dp[8]);
669 MULADD(at[0], at[21]); MULADD(at[1], at[20]); MULADD(at[2], at[19]); MULADD(at[3], at[18]); MULADD(at[4], at[17]); MULADD(at[5], at[16]); MULADD(at[6], at[15]); MULADD(at[7], at[14]); MULADD(at[8], at[13]); MULADD(at[9], at[12]);
670 COMBA_STORE(C->dp[9]);
673 MULADD(at[0], at[22]); MULADD(at[1], at[21]); MULADD(at[2], at[20]); MULADD(at[3], at[19]); MULADD(at[4], at[18]); MULADD(at[5], at[17]); MULADD(at[6], at[16]); MULADD(at[7], at[15]); MULADD(at[8], at[14]); MULADD(at[9], at[13]); MULADD(at[10], at[12]);
674 COMBA_STORE(C->dp[10]);
677 MULADD(at[0], at[23]); MULADD(at[1], at[22]); MULADD(at[2], at[21]); MULADD(at[3], at[20]); MULADD(at[4], at[19]); MULADD(at[5], at[18]); MULADD(at[6], at[17]); MULADD(at[7], at[16]); MULADD(at[8], at[15]); MULADD(at[9], at[14]); MULADD(at[10], at[13]); MULADD(at[11], at[12]);
678 COMBA_STORE(C->dp[11]);
681 MULADD(at[1], at[23]); MULADD(at[2], at[22]); MULADD(at[3], at[21]); MULADD(at[4], at[20]); MULADD(at[5], at[19]); MULADD(at[6], at[18]); MULADD(at[7], at[17]); MULADD(at[8], at[16]); MULADD(at[9], at[15]); MULADD(at[10], at[14]); MULADD(at[11], at[13]);
682 COMBA_STORE(C->dp[12]);
685 MULADD(at[2], at[23]); MULADD(at[3], at[22]); MULADD(at[4], at[21]); MULADD(at[5], at[20]); MULADD(at[6], at[19]); MULADD(at[7], at[18]); MULADD(at[8], at[17]); MULADD(at[9], at[16]); MULADD(at[10], at[15]); MULADD(at[11], at[14]);
686 COMBA_STORE(C->dp[13]);
689 MULADD(at[3], at[23]); MULADD(at[4], at[22]); MULADD(at[5], at[21]); MULADD(at[6], at[20]); MULADD(at[7], at[19]); MULADD(at[8], at[18]); MULADD(at[9], at[17]); MULADD(at[10], at[16]); MULADD(at[11], at[15]);
690 COMBA_STORE(C->dp[14]);
693 MULADD(at[4], at[23]); MULADD(at[5], at[22]); MULADD(at[6], at[21]); MULADD(at[7], at[20]); MULADD(at[8], at[19]); MULADD(at[9], at[18]); MULADD(at[10], at[17]); MULADD(at[11], at[16]);
694 COMBA_STORE(C->dp[15]);
697 MULADD(at[5], at[23]); MULADD(at[6], at[22]); MULADD(at[7], at[21]); MULADD(at[8], at[20]); MULADD(at[9], at[19]); MULADD(at[10], at[18]); MULADD(at[11], at[17]);
698 COMBA_STORE(C->dp[16]);
701 MULADD(at[6], at[23]); MULADD(at[7], at[22]); MULADD(at[8], at[21]); MULADD(at[9], at[20]); MULADD(at[10], at[19]); MULADD(at[11], at[18]);
702 COMBA_STORE(C->dp[17]);
705 MULADD(at[7], at[23]); MULADD(at[8], at[22]); MULADD(at[9], at[21]); MULADD(at[10], at[20]); MULADD(at[11], at[19]);
706 COMBA_STORE(C->dp[18]);
709 MULADD(at[8], at[23]); MULADD(at[9], at[22]); MULADD(at[10], at[21]); MULADD(at[11], at[20]);
710 COMBA_STORE(C->dp[19]);
713 MULADD(at[9], at[23]); MULADD(at[10], at[22]); MULADD(at[11], at[21]);
714 COMBA_STORE(C->dp[20]);
717 MULADD(at[10], at[23]); MULADD(at[11], at[22]);
718 COMBA_STORE(C->dp[21]);
721 MULADD(at[11], at[23]);
722 COMBA_STORE(C->dp[22]);
723 COMBA_STORE2(C->dp[23]);
725 C->sign = A->sign ^ B->sign;
731 memcpy(at, A->dp, 13 * sizeof(fp_digit));
732 memcpy(at+13, B->dp, 13 * sizeof(fp_digit));
737 MULADD(at[0], at[13]);
738 COMBA_STORE(C->dp[0]);
741 MULADD(at[0], at[14]); MULADD(at[1], at[13]);
742 COMBA_STORE(C->dp[1]);
745 MULADD(at[0], at[15]); MULADD(at[1], at[14]); MULADD(at[2], at[13]);
746 COMBA_STORE(C->dp[2]);
749 MULADD(at[0], at[16]); MULADD(at[1], at[15]); MULADD(at[2], at[14]); MULADD(at[3], at[13]);
750 COMBA_STORE(C->dp[3]);
753 MULADD(at[0], at[17]); MULADD(at[1], at[16]); MULADD(at[2], at[15]); MULADD(at[3], at[14]); MULADD(at[4], at[13]);
754 COMBA_STORE(C->dp[4]);
757 MULADD(at[0], at[18]); MULADD(at[1], at[17]); MULADD(at[2], at[16]); MULADD(at[3], at[15]); MULADD(at[4], at[14]); MULADD(at[5], at[13]);
758 COMBA_STORE(C->dp[5]);
761 MULADD(at[0], at[19]); MULADD(at[1], at[18]); MULADD(at[2], at[17]); MULADD(at[3], at[16]); MULADD(at[4], at[15]); MULADD(at[5], at[14]); MULADD(at[6], at[13]);
762 COMBA_STORE(C->dp[6]);
765 MULADD(at[0], at[20]); MULADD(at[1], at[19]); MULADD(at[2], at[18]); MULADD(at[3], at[17]); MULADD(at[4], at[16]); MULADD(at[5], at[15]); MULADD(at[6], at[14]); MULADD(at[7], at[13]);
766 COMBA_STORE(C->dp[7]);
769 MULADD(at[0], at[21]); MULADD(at[1], at[20]); MULADD(at[2], at[19]); MULADD(at[3], at[18]); MULADD(at[4], at[17]); MULADD(at[5], at[16]); MULADD(at[6], at[15]); MULADD(at[7], at[14]); MULADD(at[8], at[13]);
770 COMBA_STORE(C->dp[8]);
773 MULADD(at[0], at[22]); MULADD(at[1], at[21]); MULADD(at[2], at[20]); MULADD(at[3], at[19]); MULADD(at[4], at[18]); MULADD(at[5], at[17]); MULADD(at[6], at[16]); MULADD(at[7], at[15]); MULADD(at[8], at[14]); MULADD(at[9], at[13]);
774 COMBA_STORE(C->dp[9]);
777 MULADD(at[0], at[23]); MULADD(at[1], at[22]); MULADD(at[2], at[21]); MULADD(at[3], at[20]); MULADD(at[4], at[19]); MULADD(at[5], at[18]); MULADD(at[6], at[17]); MULADD(at[7], at[16]); MULADD(at[8], at[15]); MULADD(at[9], at[14]); MULADD(at[10], at[13]);
778 COMBA_STORE(C->dp[10]);
781 MULADD(at[0], at[24]); MULADD(at[1], at[23]); MULADD(at[2], at[22]); MULADD(at[3], at[21]); MULADD(at[4], at[20]); MULADD(at[5], at[19]); MULADD(at[6], at[18]); MULADD(at[7], at[17]); MULADD(at[8], at[16]); MULADD(at[9], at[15]); MULADD(at[10], at[14]); MULADD(at[11], at[13]);
782 COMBA_STORE(C->dp[11]);
785 MULADD(at[0], at[25]); MULADD(at[1], at[24]); MULADD(at[2], at[23]); MULADD(at[3], at[22]); MULADD(at[4], at[21]); MULADD(at[5], at[20]); MULADD(at[6], at[19]); MULADD(at[7], at[18]); MULADD(at[8], at[17]); MULADD(at[9], at[16]); MULADD(at[10], at[15]); MULADD(at[11], at[14]); MULADD(at[12], at[13]);
786 COMBA_STORE(C->dp[12]);
789 MULADD(at[1], at[25]); MULADD(at[2], at[24]); MULADD(at[3], at[23]); MULADD(at[4], at[22]); MULADD(at[5], at[21]); MULADD(at[6], at[20]); MULADD(at[7], at[19]); MULADD(at[8], at[18]); MULADD(at[9], at[17]); MULADD(at[10], at[16]); MULADD(at[11], at[15]); MULADD(at[12], at[14]);
790 COMBA_STORE(C->dp[13]);
793 MULADD(at[2], at[25]); MULADD(at[3], at[24]); MULADD(at[4], at[23]); MULADD(at[5], at[22]); MULADD(at[6], at[21]); MULADD(at[7], at[20]); MULADD(at[8], at[19]); MULADD(at[9], at[18]); MULADD(at[10], at[17]); MULADD(at[11], at[16]); MULADD(at[12], at[15]);
794 COMBA_STORE(C->dp[14]);
797 MULADD(at[3], at[25]); MULADD(at[4], at[24]); MULADD(at[5], at[23]); MULADD(at[6], at[22]); MULADD(at[7], at[21]); MULADD(at[8], at[20]); MULADD(at[9], at[19]); MULADD(at[10], at[18]); MULADD(at[11], at[17]); MULADD(at[12], at[16]);
798 COMBA_STORE(C->dp[15]);
801 MULADD(at[4], at[25]); MULADD(at[5], at[24]); MULADD(at[6], at[23]); MULADD(at[7], at[22]); MULADD(at[8], at[21]); MULADD(at[9], at[20]); MULADD(at[10], at[19]); MULADD(at[11], at[18]); MULADD(at[12], at[17]);
802 COMBA_STORE(C->dp[16]);
805 MULADD(at[5], at[25]); MULADD(at[6], at[24]); MULADD(at[7], at[23]); MULADD(at[8], at[22]); MULADD(at[9], at[21]); MULADD(at[10], at[20]); MULADD(at[11], at[19]); MULADD(at[12], at[18]);
806 COMBA_STORE(C->dp[17]);
809 MULADD(at[6], at[25]); MULADD(at[7], at[24]); MULADD(at[8], at[23]); MULADD(at[9], at[22]); MULADD(at[10], at[21]); MULADD(at[11], at[20]); MULADD(at[12], at[19]);
810 COMBA_STORE(C->dp[18]);
813 MULADD(at[7], at[25]); MULADD(at[8], at[24]); MULADD(at[9], at[23]); MULADD(at[10], at[22]); MULADD(at[11], at[21]); MULADD(at[12], at[20]);
814 COMBA_STORE(C->dp[19]);
817 MULADD(at[8], at[25]); MULADD(at[9], at[24]); MULADD(at[10], at[23]); MULADD(at[11], at[22]); MULADD(at[12], at[21]);
818 COMBA_STORE(C->dp[20]);
821 MULADD(at[9], at[25]); MULADD(at[10], at[24]); MULADD(at[11], at[23]); MULADD(at[12], at[22]);
822 COMBA_STORE(C->dp[21]);
825 MULADD(at[10], at[25]); MULADD(at[11], at[24]); MULADD(at[12], at[23]);
826 COMBA_STORE(C->dp[22]);
829 MULADD(at[11], at[25]); MULADD(at[12], at[24]);
830 COMBA_STORE(C->dp[23]);
833 MULADD(at[12], at[25]);
834 COMBA_STORE(C->dp[24]);
835 COMBA_STORE2(C->dp[25]);
837 C->sign = A->sign ^ B->sign;
843 memcpy(at, A->dp, 14 * sizeof(fp_digit));
844 memcpy(at+14, B->dp, 14 * sizeof(fp_digit));
849 MULADD(at[0], at[14]);
850 COMBA_STORE(C->dp[0]);
853 MULADD(at[0], at[15]); MULADD(at[1], at[14]);
854 COMBA_STORE(C->dp[1]);
857 MULADD(at[0], at[16]); MULADD(at[1], at[15]); MULADD(at[2], at[14]);
858 COMBA_STORE(C->dp[2]);
861 MULADD(at[0], at[17]); MULADD(at[1], at[16]); MULADD(at[2], at[15]); MULADD(at[3], at[14]);
862 COMBA_STORE(C->dp[3]);
865 MULADD(at[0], at[18]); MULADD(at[1], at[17]); MULADD(at[2], at[16]); MULADD(at[3], at[15]); MULADD(at[4], at[14]);
866 COMBA_STORE(C->dp[4]);
869 MULADD(at[0], at[19]); MULADD(at[1], at[18]); MULADD(at[2], at[17]); MULADD(at[3], at[16]); MULADD(at[4], at[15]); MULADD(at[5], at[14]);
870 COMBA_STORE(C->dp[5]);
873 MULADD(at[0], at[20]); MULADD(at[1], at[19]); MULADD(at[2], at[18]); MULADD(at[3], at[17]); MULADD(at[4], at[16]); MULADD(at[5], at[15]); MULADD(at[6], at[14]);
874 COMBA_STORE(C->dp[6]);
877 MULADD(at[0], at[21]); MULADD(at[1], at[20]); MULADD(at[2], at[19]); MULADD(at[3], at[18]); MULADD(at[4], at[17]); MULADD(at[5], at[16]); MULADD(at[6], at[15]); MULADD(at[7], at[14]);
878 COMBA_STORE(C->dp[7]);
881 MULADD(at[0], at[22]); MULADD(at[1], at[21]); MULADD(at[2], at[20]); MULADD(at[3], at[19]); MULADD(at[4], at[18]); MULADD(at[5], at[17]); MULADD(at[6], at[16]); MULADD(at[7], at[15]); MULADD(at[8], at[14]);
882 COMBA_STORE(C->dp[8]);
885 MULADD(at[0], at[23]); MULADD(at[1], at[22]); MULADD(at[2], at[21]); MULADD(at[3], at[20]); MULADD(at[4], at[19]); MULADD(at[5], at[18]); MULADD(at[6], at[17]); MULADD(at[7], at[16]); MULADD(at[8], at[15]); MULADD(at[9], at[14]);
886 COMBA_STORE(C->dp[9]);
889 MULADD(at[0], at[24]); MULADD(at[1], at[23]); MULADD(at[2], at[22]); MULADD(at[3], at[21]); MULADD(at[4], at[20]); MULADD(at[5], at[19]); MULADD(at[6], at[18]); MULADD(at[7], at[17]); MULADD(at[8], at[16]); MULADD(at[9], at[15]); MULADD(at[10], at[14]);
890 COMBA_STORE(C->dp[10]);
893 MULADD(at[0], at[25]); MULADD(at[1], at[24]); MULADD(at[2], at[23]); MULADD(at[3], at[22]); MULADD(at[4], at[21]); MULADD(at[5], at[20]); MULADD(at[6], at[19]); MULADD(at[7], at[18]); MULADD(at[8], at[17]); MULADD(at[9], at[16]); MULADD(at[10], at[15]); MULADD(at[11], at[14]);
894 COMBA_STORE(C->dp[11]);
897 MULADD(at[0], at[26]); MULADD(at[1], at[25]); MULADD(at[2], at[24]); MULADD(at[3], at[23]); MULADD(at[4], at[22]); MULADD(at[5], at[21]); MULADD(at[6], at[20]); MULADD(at[7], at[19]); MULADD(at[8], at[18]); MULADD(at[9], at[17]); MULADD(at[10], at[16]); MULADD(at[11], at[15]); MULADD(at[12], at[14]);
898 COMBA_STORE(C->dp[12]);
901 MULADD(at[0], at[27]); MULADD(at[1], at[26]); MULADD(at[2], at[25]); MULADD(at[3], at[24]); MULADD(at[4], at[23]); MULADD(at[5], at[22]); MULADD(at[6], at[21]); MULADD(at[7], at[20]); MULADD(at[8], at[19]); MULADD(at[9], at[18]); MULADD(at[10], at[17]); MULADD(at[11], at[16]); MULADD(at[12], at[15]); MULADD(at[13], at[14]);
902 COMBA_STORE(C->dp[13]);
905 MULADD(at[1], at[27]); MULADD(at[2], at[26]); MULADD(at[3], at[25]); MULADD(at[4], at[24]); MULADD(at[5], at[23]); MULADD(at[6], at[22]); MULADD(at[7], at[21]); MULADD(at[8], at[20]); MULADD(at[9], at[19]); MULADD(at[10], at[18]); MULADD(at[11], at[17]); MULADD(at[12], at[16]); MULADD(at[13], at[15]);
906 COMBA_STORE(C->dp[14]);
909 MULADD(at[2], at[27]); MULADD(at[3], at[26]); MULADD(at[4], at[25]); MULADD(at[5], at[24]); MULADD(at[6], at[23]); MULADD(at[7], at[22]); MULADD(at[8], at[21]); MULADD(at[9], at[20]); MULADD(at[10], at[19]); MULADD(at[11], at[18]); MULADD(at[12], at[17]); MULADD(at[13], at[16]);
910 COMBA_STORE(C->dp[15]);
913 MULADD(at[3], at[27]); MULADD(at[4], at[26]); MULADD(at[5], at[25]); MULADD(at[6], at[24]); MULADD(at[7], at[23]); MULADD(at[8], at[22]); MULADD(at[9], at[21]); MULADD(at[10], at[20]); MULADD(at[11], at[19]); MULADD(at[12], at[18]); MULADD(at[13], at[17]);
914 COMBA_STORE(C->dp[16]);
917 MULADD(at[4], at[27]); MULADD(at[5], at[26]); MULADD(at[6], at[25]); MULADD(at[7], at[24]); MULADD(at[8], at[23]); MULADD(at[9], at[22]); MULADD(at[10], at[21]); MULADD(at[11], at[20]); MULADD(at[12], at[19]); MULADD(at[13], at[18]);
918 COMBA_STORE(C->dp[17]);
921 MULADD(at[5], at[27]); MULADD(at[6], at[26]); MULADD(at[7], at[25]); MULADD(at[8], at[24]); MULADD(at[9], at[23]); MULADD(at[10], at[22]); MULADD(at[11], at[21]); MULADD(at[12], at[20]); MULADD(at[13], at[19]);
922 COMBA_STORE(C->dp[18]);
925 MULADD(at[6], at[27]); MULADD(at[7], at[26]); MULADD(at[8], at[25]); MULADD(at[9], at[24]); MULADD(at[10], at[23]); MULADD(at[11], at[22]); MULADD(at[12], at[21]); MULADD(at[13], at[20]);
926 COMBA_STORE(C->dp[19]);
929 MULADD(at[7], at[27]); MULADD(at[8], at[26]); MULADD(at[9], at[25]); MULADD(at[10], at[24]); MULADD(at[11], at[23]); MULADD(at[12], at[22]); MULADD(at[13], at[21]);
930 COMBA_STORE(C->dp[20]);
933 MULADD(at[8], at[27]); MULADD(at[9], at[26]); MULADD(at[10], at[25]); MULADD(at[11], at[24]); MULADD(at[12], at[23]); MULADD(at[13], at[22]);
934 COMBA_STORE(C->dp[21]);
937 MULADD(at[9], at[27]); MULADD(at[10], at[26]); MULADD(at[11], at[25]); MULADD(at[12], at[24]); MULADD(at[13], at[23]);
938 COMBA_STORE(C->dp[22]);
941 MULADD(at[10], at[27]); MULADD(at[11], at[26]); MULADD(at[12], at[25]); MULADD(at[13], at[24]);
942 COMBA_STORE(C->dp[23]);
945 MULADD(at[11], at[27]); MULADD(at[12], at[26]); MULADD(at[13], at[25]);
946 COMBA_STORE(C->dp[24]);
949 MULADD(at[12], at[27]); MULADD(at[13], at[26]);
950 COMBA_STORE(C->dp[25]);
953 MULADD(at[13], at[27]);
954 COMBA_STORE(C->dp[26]);
955 COMBA_STORE2(C->dp[27]);
957 C->sign = A->sign ^ B->sign;
963 memcpy(at, A->dp, 15 * sizeof(fp_digit));
964 memcpy(at+15, B->dp, 15 * sizeof(fp_digit));
969 MULADD(at[0], at[15]);
970 COMBA_STORE(C->dp[0]);
973 MULADD(at[0], at[16]); MULADD(at[1], at[15]);
974 COMBA_STORE(C->dp[1]);
977 MULADD(at[0], at[17]); MULADD(at[1], at[16]); MULADD(at[2], at[15]);
978 COMBA_STORE(C->dp[2]);
981 MULADD(at[0], at[18]); MULADD(at[1], at[17]); MULADD(at[2], at[16]); MULADD(at[3], at[15]);
982 COMBA_STORE(C->dp[3]);
985 MULADD(at[0], at[19]); MULADD(at[1], at[18]); MULADD(at[2], at[17]); MULADD(at[3], at[16]); MULADD(at[4], at[15]);
986 COMBA_STORE(C->dp[4]);
989 MULADD(at[0], at[20]); MULADD(at[1], at[19]); MULADD(at[2], at[18]); MULADD(at[3], at[17]); MULADD(at[4], at[16]); MULADD(at[5], at[15]);
990 COMBA_STORE(C->dp[5]);
993 MULADD(at[0], at[21]); MULADD(at[1], at[20]); MULADD(at[2], at[19]); MULADD(at[3], at[18]); MULADD(at[4], at[17]); MULADD(at[5], at[16]); MULADD(at[6], at[15]);
994 COMBA_STORE(C->dp[6]);
997 MULADD(at[0], at[22]); MULADD(at[1], at[21]); MULADD(at[2], at[20]); MULADD(at[3], at[19]); MULADD(at[4], at[18]); MULADD(at[5], at[17]); MULADD(at[6], at[16]); MULADD(at[7], at[15]);
998 COMBA_STORE(C->dp[7]);
1001 MULADD(at[0], at[23]); MULADD(at[1], at[22]); MULADD(at[2], at[21]); MULADD(at[3], at[20]); MULADD(at[4], at[19]); MULADD(at[5], at[18]); MULADD(at[6], at[17]); MULADD(at[7], at[16]); MULADD(at[8], at[15]);
1002 COMBA_STORE(C->dp[8]);
1005 MULADD(at[0], at[24]); MULADD(at[1], at[23]); MULADD(at[2], at[22]); MULADD(at[3], at[21]); MULADD(at[4], at[20]); MULADD(at[5], at[19]); MULADD(at[6], at[18]); MULADD(at[7], at[17]); MULADD(at[8], at[16]); MULADD(at[9], at[15]);
1006 COMBA_STORE(C->dp[9]);
1009 MULADD(at[0], at[25]); MULADD(at[1], at[24]); MULADD(at[2], at[23]); MULADD(at[3], at[22]); MULADD(at[4], at[21]); MULADD(at[5], at[20]); MULADD(at[6], at[19]); MULADD(at[7], at[18]); MULADD(at[8], at[17]); MULADD(at[9], at[16]); MULADD(at[10], at[15]);
1010 COMBA_STORE(C->dp[10]);
1013 MULADD(at[0], at[26]); MULADD(at[1], at[25]); MULADD(at[2], at[24]); MULADD(at[3], at[23]); MULADD(at[4], at[22]); MULADD(at[5], at[21]); MULADD(at[6], at[20]); MULADD(at[7], at[19]); MULADD(at[8], at[18]); MULADD(at[9], at[17]); MULADD(at[10], at[16]); MULADD(at[11], at[15]);
1014 COMBA_STORE(C->dp[11]);
1017 MULADD(at[0], at[27]); MULADD(at[1], at[26]); MULADD(at[2], at[25]); MULADD(at[3], at[24]); MULADD(at[4], at[23]); MULADD(at[5], at[22]); MULADD(at[6], at[21]); MULADD(at[7], at[20]); MULADD(at[8], at[19]); MULADD(at[9], at[18]); MULADD(at[10], at[17]); MULADD(at[11], at[16]); MULADD(at[12], at[15]);
1018 COMBA_STORE(C->dp[12]);
1021 MULADD(at[0], at[28]); MULADD(at[1], at[27]); MULADD(at[2], at[26]); MULADD(at[3], at[25]); MULADD(at[4], at[24]); MULADD(at[5], at[23]); MULADD(at[6], at[22]); MULADD(at[7], at[21]); MULADD(at[8], at[20]); MULADD(at[9], at[19]); MULADD(at[10], at[18]); MULADD(at[11], at[17]); MULADD(at[12], at[16]); MULADD(at[13], at[15]);
1022 COMBA_STORE(C->dp[13]);
1025 MULADD(at[0], at[29]); MULADD(at[1], at[28]); MULADD(at[2], at[27]); MULADD(at[3], at[26]); MULADD(at[4], at[25]); MULADD(at[5], at[24]); MULADD(at[6], at[23]); MULADD(at[7], at[22]); MULADD(at[8], at[21]); MULADD(at[9], at[20]); MULADD(at[10], at[19]); MULADD(at[11], at[18]); MULADD(at[12], at[17]); MULADD(at[13], at[16]); MULADD(at[14], at[15]);
1026 COMBA_STORE(C->dp[14]);
1029 MULADD(at[1], at[29]); MULADD(at[2], at[28]); MULADD(at[3], at[27]); MULADD(at[4], at[26]); MULADD(at[5], at[25]); MULADD(at[6], at[24]); MULADD(at[7], at[23]); MULADD(at[8], at[22]); MULADD(at[9], at[21]); MULADD(at[10], at[20]); MULADD(at[11], at[19]); MULADD(at[12], at[18]); MULADD(at[13], at[17]); MULADD(at[14], at[16]);
1030 COMBA_STORE(C->dp[15]);
1033 MULADD(at[2], at[29]); MULADD(at[3], at[28]); MULADD(at[4], at[27]); MULADD(at[5], at[26]); MULADD(at[6], at[25]); MULADD(at[7], at[24]); MULADD(at[8], at[23]); MULADD(at[9], at[22]); MULADD(at[10], at[21]); MULADD(at[11], at[20]); MULADD(at[12], at[19]); MULADD(at[13], at[18]); MULADD(at[14], at[17]);
1034 COMBA_STORE(C->dp[16]);
1037 MULADD(at[3], at[29]); MULADD(at[4], at[28]); MULADD(at[5], at[27]); MULADD(at[6], at[26]); MULADD(at[7], at[25]); MULADD(at[8], at[24]); MULADD(at[9], at[23]); MULADD(at[10], at[22]); MULADD(at[11], at[21]); MULADD(at[12], at[20]); MULADD(at[13], at[19]); MULADD(at[14], at[18]);
1038 COMBA_STORE(C->dp[17]);
1041 MULADD(at[4], at[29]); MULADD(at[5], at[28]); MULADD(at[6], at[27]); MULADD(at[7], at[26]); MULADD(at[8], at[25]); MULADD(at[9], at[24]); MULADD(at[10], at[23]); MULADD(at[11], at[22]); MULADD(at[12], at[21]); MULADD(at[13], at[20]); MULADD(at[14], at[19]);
1042 COMBA_STORE(C->dp[18]);
1045 MULADD(at[5], at[29]); MULADD(at[6], at[28]); MULADD(at[7], at[27]); MULADD(at[8], at[26]); MULADD(at[9], at[25]); MULADD(at[10], at[24]); MULADD(at[11], at[23]); MULADD(at[12], at[22]); MULADD(at[13], at[21]); MULADD(at[14], at[20]);
1046 COMBA_STORE(C->dp[19]);
1049 MULADD(at[6], at[29]); MULADD(at[7], at[28]); MULADD(at[8], at[27]); MULADD(at[9], at[26]); MULADD(at[10], at[25]); MULADD(at[11], at[24]); MULADD(at[12], at[23]); MULADD(at[13], at[22]); MULADD(at[14], at[21]);
1050 COMBA_STORE(C->dp[20]);
1053 MULADD(at[7], at[29]); MULADD(at[8], at[28]); MULADD(at[9], at[27]); MULADD(at[10], at[26]); MULADD(at[11], at[25]); MULADD(at[12], at[24]); MULADD(at[13], at[23]); MULADD(at[14], at[22]);
1054 COMBA_STORE(C->dp[21]);
1057 MULADD(at[8], at[29]); MULADD(at[9], at[28]); MULADD(at[10], at[27]); MULADD(at[11], at[26]); MULADD(at[12], at[25]); MULADD(at[13], at[24]); MULADD(at[14], at[23]);
1058 COMBA_STORE(C->dp[22]);
1061 MULADD(at[9], at[29]); MULADD(at[10], at[28]); MULADD(at[11], at[27]); MULADD(at[12], at[26]); MULADD(at[13], at[25]); MULADD(at[14], at[24]);
1062 COMBA_STORE(C->dp[23]);
1065 MULADD(at[10], at[29]); MULADD(at[11], at[28]); MULADD(at[12], at[27]); MULADD(at[13], at[26]); MULADD(at[14], at[25]);
1066 COMBA_STORE(C->dp[24]);
1069 MULADD(at[11], at[29]); MULADD(at[12], at[28]); MULADD(at[13], at[27]); MULADD(at[14], at[26]);
1070 COMBA_STORE(C->dp[25]);
1073 MULADD(at[12], at[29]); MULADD(at[13], at[28]); MULADD(at[14], at[27]);
1074 COMBA_STORE(C->dp[26]);
1077 MULADD(at[13], at[29]); MULADD(at[14], at[28]);
1078 COMBA_STORE(C->dp[27]);
1081 MULADD(at[14], at[29]);
1082 COMBA_STORE(C->dp[28]);
1083 COMBA_STORE2(C->dp[29]);
1085 C->sign = A->sign ^ B->sign;
1091 memcpy(at, A->dp, 16 * sizeof(fp_digit));
1092 memcpy(at+16, B->dp, 16 * sizeof(fp_digit));
1097 MULADD(at[0], at[16]);
1098 COMBA_STORE(C->dp[0]);
1101 MULADD(at[0], at[17]); MULADD(at[1], at[16]);
1102 COMBA_STORE(C->dp[1]);
1105 MULADD(at[0], at[18]); MULADD(at[1], at[17]); MULADD(at[2], at[16]);
1106 COMBA_STORE(C->dp[2]);
1109 MULADD(at[0], at[19]); MULADD(at[1], at[18]); MULADD(at[2], at[17]); MULADD(at[3], at[16]);
1110 COMBA_STORE(C->dp[3]);
1113 MULADD(at[0], at[20]); MULADD(at[1], at[19]); MULADD(at[2], at[18]); MULADD(at[3], at[17]); MULADD(at[4], at[16]);
1114 COMBA_STORE(C->dp[4]);
1117 MULADD(at[0], at[21]); MULADD(at[1], at[20]); MULADD(at[2], at[19]); MULADD(at[3], at[18]); MULADD(at[4], at[17]); MULADD(at[5], at[16]);
1118 COMBA_STORE(C->dp[5]);
1121 MULADD(at[0], at[22]); MULADD(at[1], at[21]); MULADD(at[2], at[20]); MULADD(at[3], at[19]); MULADD(at[4], at[18]); MULADD(at[5], at[17]); MULADD(at[6], at[16]);
1122 COMBA_STORE(C->dp[6]);
1125 MULADD(at[0], at[23]); MULADD(at[1], at[22]); MULADD(at[2], at[21]); MULADD(at[3], at[20]); MULADD(at[4], at[19]); MULADD(at[5], at[18]); MULADD(at[6], at[17]); MULADD(at[7], at[16]);
1126 COMBA_STORE(C->dp[7]);
1129 MULADD(at[0], at[24]); MULADD(at[1], at[23]); MULADD(at[2], at[22]); MULADD(at[3], at[21]); MULADD(at[4], at[20]); MULADD(at[5], at[19]); MULADD(at[6], at[18]); MULADD(at[7], at[17]); MULADD(at[8], at[16]);
1130 COMBA_STORE(C->dp[8]);
1133 MULADD(at[0], at[25]); MULADD(at[1], at[24]); MULADD(at[2], at[23]); MULADD(at[3], at[22]); MULADD(at[4], at[21]); MULADD(at[5], at[20]); MULADD(at[6], at[19]); MULADD(at[7], at[18]); MULADD(at[8], at[17]); MULADD(at[9], at[16]);
1134 COMBA_STORE(C->dp[9]);
1137 MULADD(at[0], at[26]); MULADD(at[1], at[25]); MULADD(at[2], at[24]); MULADD(at[3], at[23]); MULADD(at[4], at[22]); MULADD(at[5], at[21]); MULADD(at[6], at[20]); MULADD(at[7], at[19]); MULADD(at[8], at[18]); MULADD(at[9], at[17]); MULADD(at[10], at[16]);
1138 COMBA_STORE(C->dp[10]);
1141 MULADD(at[0], at[27]); MULADD(at[1], at[26]); MULADD(at[2], at[25]); MULADD(at[3], at[24]); MULADD(at[4], at[23]); MULADD(at[5], at[22]); MULADD(at[6], at[21]); MULADD(at[7], at[20]); MULADD(at[8], at[19]); MULADD(at[9], at[18]); MULADD(at[10], at[17]); MULADD(at[11], at[16]);
1142 COMBA_STORE(C->dp[11]);
1145 MULADD(at[0], at[28]); MULADD(at[1], at[27]); MULADD(at[2], at[26]); MULADD(at[3], at[25]); MULADD(at[4], at[24]); MULADD(at[5], at[23]); MULADD(at[6], at[22]); MULADD(at[7], at[21]); MULADD(at[8], at[20]); MULADD(at[9], at[19]); MULADD(at[10], at[18]); MULADD(at[11], at[17]); MULADD(at[12], at[16]);
1146 COMBA_STORE(C->dp[12]);
1149 MULADD(at[0], at[29]); MULADD(at[1], at[28]); MULADD(at[2], at[27]); MULADD(at[3], at[26]); MULADD(at[4], at[25]); MULADD(at[5], at[24]); MULADD(at[6], at[23]); MULADD(at[7], at[22]); MULADD(at[8], at[21]); MULADD(at[9], at[20]); MULADD(at[10], at[19]); MULADD(at[11], at[18]); MULADD(at[12], at[17]); MULADD(at[13], at[16]);
1150 COMBA_STORE(C->dp[13]);
1153 MULADD(at[0], at[30]); MULADD(at[1], at[29]); MULADD(at[2], at[28]); MULADD(at[3], at[27]); MULADD(at[4], at[26]); MULADD(at[5], at[25]); MULADD(at[6], at[24]); MULADD(at[7], at[23]); MULADD(at[8], at[22]); MULADD(at[9], at[21]); MULADD(at[10], at[20]); MULADD(at[11], at[19]); MULADD(at[12], at[18]); MULADD(at[13], at[17]); MULADD(at[14], at[16]);
1154 COMBA_STORE(C->dp[14]);
1157 MULADD(at[0], at[31]); MULADD(at[1], at[30]); MULADD(at[2], at[29]); MULADD(at[3], at[28]); MULADD(at[4], at[27]); MULADD(at[5], at[26]); MULADD(at[6], at[25]); MULADD(at[7], at[24]); MULADD(at[8], at[23]); MULADD(at[9], at[22]); MULADD(at[10], at[21]); MULADD(at[11], at[20]); MULADD(at[12], at[19]); MULADD(at[13], at[18]); MULADD(at[14], at[17]); MULADD(at[15], at[16]);
1158 COMBA_STORE(C->dp[15]);
1161 MULADD(at[1], at[31]); MULADD(at[2], at[30]); MULADD(at[3], at[29]); MULADD(at[4], at[28]); MULADD(at[5], at[27]); MULADD(at[6], at[26]); MULADD(at[7], at[25]); MULADD(at[8], at[24]); MULADD(at[9], at[23]); MULADD(at[10], at[22]); MULADD(at[11], at[21]); MULADD(at[12], at[20]); MULADD(at[13], at[19]); MULADD(at[14], at[18]); MULADD(at[15], at[17]);
1162 COMBA_STORE(C->dp[16]);
1165 MULADD(at[2], at[31]); MULADD(at[3], at[30]); MULADD(at[4], at[29]); MULADD(at[5], at[28]); MULADD(at[6], at[27]); MULADD(at[7], at[26]); MULADD(at[8], at[25]); MULADD(at[9], at[24]); MULADD(at[10], at[23]); MULADD(at[11], at[22]); MULADD(at[12], at[21]); MULADD(at[13], at[20]); MULADD(at[14], at[19]); MULADD(at[15], at[18]);
1166 COMBA_STORE(C->dp[17]);
1169 MULADD(at[3], at[31]); MULADD(at[4], at[30]); MULADD(at[5], at[29]); MULADD(at[6], at[28]); MULADD(at[7], at[27]); MULADD(at[8], at[26]); MULADD(at[9], at[25]); MULADD(at[10], at[24]); MULADD(at[11], at[23]); MULADD(at[12], at[22]); MULADD(at[13], at[21]); MULADD(at[14], at[20]); MULADD(at[15], at[19]);
1170 COMBA_STORE(C->dp[18]);
1173 MULADD(at[4], at[31]); MULADD(at[5], at[30]); MULADD(at[6], at[29]); MULADD(at[7], at[28]); MULADD(at[8], at[27]); MULADD(at[9], at[26]); MULADD(at[10], at[25]); MULADD(at[11], at[24]); MULADD(at[12], at[23]); MULADD(at[13], at[22]); MULADD(at[14], at[21]); MULADD(at[15], at[20]);
1174 COMBA_STORE(C->dp[19]);
1177 MULADD(at[5], at[31]); MULADD(at[6], at[30]); MULADD(at[7], at[29]); MULADD(at[8], at[28]); MULADD(at[9], at[27]); MULADD(at[10], at[26]); MULADD(at[11], at[25]); MULADD(at[12], at[24]); MULADD(at[13], at[23]); MULADD(at[14], at[22]); MULADD(at[15], at[21]);
1178 COMBA_STORE(C->dp[20]);
1181 MULADD(at[6], at[31]); MULADD(at[7], at[30]); MULADD(at[8], at[29]); MULADD(at[9], at[28]); MULADD(at[10], at[27]); MULADD(at[11], at[26]); MULADD(at[12], at[25]); MULADD(at[13], at[24]); MULADD(at[14], at[23]); MULADD(at[15], at[22]);
1182 COMBA_STORE(C->dp[21]);
1185 MULADD(at[7], at[31]); MULADD(at[8], at[30]); MULADD(at[9], at[29]); MULADD(at[10], at[28]); MULADD(at[11], at[27]); MULADD(at[12], at[26]); MULADD(at[13], at[25]); MULADD(at[14], at[24]); MULADD(at[15], at[23]);
1186 COMBA_STORE(C->dp[22]);
1189 MULADD(at[8], at[31]); MULADD(at[9], at[30]); MULADD(at[10], at[29]); MULADD(at[11], at[28]); MULADD(at[12], at[27]); MULADD(at[13], at[26]); MULADD(at[14], at[25]); MULADD(at[15], at[24]);
1190 COMBA_STORE(C->dp[23]);
1193 MULADD(at[9], at[31]); MULADD(at[10], at[30]); MULADD(at[11], at[29]); MULADD(at[12], at[28]); MULADD(at[13], at[27]); MULADD(at[14], at[26]); MULADD(at[15], at[25]);
1194 COMBA_STORE(C->dp[24]);
1197 MULADD(at[10], at[31]); MULADD(at[11], at[30]); MULADD(at[12], at[29]); MULADD(at[13], at[28]); MULADD(at[14], at[27]); MULADD(at[15], at[26]);
1198 COMBA_STORE(C->dp[25]);
1201 MULADD(at[11], at[31]); MULADD(at[12], at[30]); MULADD(at[13], at[29]); MULADD(at[14], at[28]); MULADD(at[15], at[27]);
1202 COMBA_STORE(C->dp[26]);
1205 MULADD(at[12], at[31]); MULADD(at[13], at[30]); MULADD(at[14], at[29]); MULADD(at[15], at[28]);
1206 COMBA_STORE(C->dp[27]);
1209 MULADD(at[13], at[31]); MULADD(at[14], at[30]); MULADD(at[15], at[29]);
1210 COMBA_STORE(C->dp[28]);
1213 MULADD(at[14], at[31]); MULADD(at[15], at[30]);
1214 COMBA_STORE(C->dp[29]);
1217 MULADD(at[15], at[31]);
1218 COMBA_STORE(C->dp[30]);
1219 COMBA_STORE2(C->dp[31]);
1221 C->sign = A->sign ^ B->sign;