8#include <botan/internal/mp_core.h>
9#include <botan/internal/ct_utils.h>
15 word w2 = 0, w1 = 0, w0 = 0;
19 w0 = w1; w1 = w2; w2 = 0;
24 w0 = w1; w1 = w2; w2 = 0;
30 w0 = w1; w1 = w2; w2 = 0;
37 w0 = w1; w1 = w2; w2 = 0;
43 w0 = w1; w1 = w2; w2 = 0;
48 w0 = w1; w1 = w2; w2 = 0;
52 w0 = w1; w1 = w2; w2 = 0;
55 w0 = w1; w1 = w2; w2 = 0;
59 word borrow =
bigint_sub3(ws + 4 + 1, ws, 4 + 1, p, 4);
66 word w2 = 0, w1 = 0, w0 = 0;
70 w0 = w1; w1 = w2; w2 = 0;
75 w0 = w1; w1 = w2; w2 = 0;
81 w0 = w1; w1 = w2; w2 = 0;
88 w0 = w1; w1 = w2; w2 = 0;
96 w0 = w1; w1 = w2; w2 = 0;
105 w0 = w1; w1 = w2; w2 = 0;
113 w0 = w1; w1 = w2; w2 = 0;
120 w0 = w1; w1 = w2; w2 = 0;
126 w0 = w1; w1 = w2; w2 = 0;
131 w0 = w1; w1 = w2; w2 = 0;
135 w0 = w1; w1 = w2; w2 = 0;
138 w0 = w1; w1 = w2; w2 = 0;
142 word borrow =
bigint_sub3(ws + 6 + 1, ws, 6 + 1, p, 6);
149 word w2 = 0, w1 = 0, w0 = 0;
153 w0 = w1; w1 = w2; w2 = 0;
158 w0 = w1; w1 = w2; w2 = 0;
164 w0 = w1; w1 = w2; w2 = 0;
171 w0 = w1; w1 = w2; w2 = 0;
179 w0 = w1; w1 = w2; w2 = 0;
188 w0 = w1; w1 = w2; w2 = 0;
198 w0 = w1; w1 = w2; w2 = 0;
209 w0 = w1; w1 = w2; w2 = 0;
219 w0 = w1; w1 = w2; w2 = 0;
228 w0 = w1; w1 = w2; w2 = 0;
236 w0 = w1; w1 = w2; w2 = 0;
243 w0 = w1; w1 = w2; w2 = 0;
249 w0 = w1; w1 = w2; w2 = 0;
254 w0 = w1; w1 = w2; w2 = 0;
258 w0 = w1; w1 = w2; w2 = 0;
261 w0 = w1; w1 = w2; w2 = 0;
265 word borrow =
bigint_sub3(ws + 8 + 1, ws, 8 + 1, p, 8);
272 word w2 = 0, w1 = 0, w0 = 0;
276 w0 = w1; w1 = w2; w2 = 0;
281 w0 = w1; w1 = w2; w2 = 0;
287 w0 = w1; w1 = w2; w2 = 0;
294 w0 = w1; w1 = w2; w2 = 0;
302 w0 = w1; w1 = w2; w2 = 0;
311 w0 = w1; w1 = w2; w2 = 0;
321 w0 = w1; w1 = w2; w2 = 0;
332 w0 = w1; w1 = w2; w2 = 0;
344 w0 = w1; w1 = w2; w2 = 0;
357 w0 = w1; w1 = w2; w2 = 0;
369 ws[10] = w0 * p_dash;
371 w0 = w1; w1 = w2; w2 = 0;
384 ws[11] = w0 * p_dash;
386 w0 = w1; w1 = w2; w2 = 0;
400 ws[12] = w0 * p_dash;
402 w0 = w1; w1 = w2; w2 = 0;
417 ws[13] = w0 * p_dash;
419 w0 = w1; w1 = w2; w2 = 0;
435 ws[14] = w0 * p_dash;
437 w0 = w1; w1 = w2; w2 = 0;
454 ws[15] = w0 * p_dash;
456 w0 = w1; w1 = w2; w2 = 0;
474 w0 = w1; w1 = w2; w2 = 0;
491 w0 = w1; w1 = w2; w2 = 0;
507 w0 = w1; w1 = w2; w2 = 0;
522 w0 = w1; w1 = w2; w2 = 0;
536 w0 = w1; w1 = w2; w2 = 0;
549 w0 = w1; w1 = w2; w2 = 0;
561 w0 = w1; w1 = w2; w2 = 0;
572 w0 = w1; w1 = w2; w2 = 0;
582 w0 = w1; w1 = w2; w2 = 0;
591 w0 = w1; w1 = w2; w2 = 0;
599 w0 = w1; w1 = w2; w2 = 0;
606 w0 = w1; w1 = w2; w2 = 0;
612 w0 = w1; w1 = w2; w2 = 0;
617 w0 = w1; w1 = w2; w2 = 0;
621 w0 = w1; w1 = w2; w2 = 0;
624 w0 = w1; w1 = w2; w2 = 0;
628 word borrow =
bigint_sub3(ws + 16 + 1, ws, 16 + 1, p, 16);
635 word w2 = 0, w1 = 0, w0 = 0;
639 w0 = w1; w1 = w2; w2 = 0;
644 w0 = w1; w1 = w2; w2 = 0;
650 w0 = w1; w1 = w2; w2 = 0;
657 w0 = w1; w1 = w2; w2 = 0;
665 w0 = w1; w1 = w2; w2 = 0;
674 w0 = w1; w1 = w2; w2 = 0;
684 w0 = w1; w1 = w2; w2 = 0;
695 w0 = w1; w1 = w2; w2 = 0;
707 w0 = w1; w1 = w2; w2 = 0;
720 w0 = w1; w1 = w2; w2 = 0;
732 ws[10] = w0 * p_dash;
734 w0 = w1; w1 = w2; w2 = 0;
747 ws[11] = w0 * p_dash;
749 w0 = w1; w1 = w2; w2 = 0;
763 ws[12] = w0 * p_dash;
765 w0 = w1; w1 = w2; w2 = 0;
780 ws[13] = w0 * p_dash;
782 w0 = w1; w1 = w2; w2 = 0;
798 ws[14] = w0 * p_dash;
800 w0 = w1; w1 = w2; w2 = 0;
817 ws[15] = w0 * p_dash;
819 w0 = w1; w1 = w2; w2 = 0;
837 ws[16] = w0 * p_dash;
839 w0 = w1; w1 = w2; w2 = 0;
858 ws[17] = w0 * p_dash;
860 w0 = w1; w1 = w2; w2 = 0;
880 ws[18] = w0 * p_dash;
882 w0 = w1; w1 = w2; w2 = 0;
903 ws[19] = w0 * p_dash;
905 w0 = w1; w1 = w2; w2 = 0;
927 ws[20] = w0 * p_dash;
929 w0 = w1; w1 = w2; w2 = 0;
952 ws[21] = w0 * p_dash;
954 w0 = w1; w1 = w2; w2 = 0;
978 ws[22] = w0 * p_dash;
980 w0 = w1; w1 = w2; w2 = 0;
1005 ws[23] = w0 * p_dash;
1007 w0 = w1; w1 = w2; w2 = 0;
1033 w0 = w1; w1 = w2; w2 = 0;
1058 w0 = w1; w1 = w2; w2 = 0;
1082 w0 = w1; w1 = w2; w2 = 0;
1105 w0 = w1; w1 = w2; w2 = 0;
1127 w0 = w1; w1 = w2; w2 = 0;
1148 w0 = w1; w1 = w2; w2 = 0;
1168 w0 = w1; w1 = w2; w2 = 0;
1187 w0 = w1; w1 = w2; w2 = 0;
1205 w0 = w1; w1 = w2; w2 = 0;
1222 w0 = w1; w1 = w2; w2 = 0;
1238 w0 = w1; w1 = w2; w2 = 0;
1253 w0 = w1; w1 = w2; w2 = 0;
1267 w0 = w1; w1 = w2; w2 = 0;
1280 w0 = w1; w1 = w2; w2 = 0;
1292 w0 = w1; w1 = w2; w2 = 0;
1303 w0 = w1; w1 = w2; w2 = 0;
1313 w0 = w1; w1 = w2; w2 = 0;
1322 w0 = w1; w1 = w2; w2 = 0;
1330 w0 = w1; w1 = w2; w2 = 0;
1337 w0 = w1; w1 = w2; w2 = 0;
1343 w0 = w1; w1 = w2; w2 = 0;
1348 w0 = w1; w1 = w2; w2 = 0;
1352 w0 = w1; w1 = w2; w2 = 0;
1355 w0 = w1; w1 = w2; w2 = 0;
1359 word borrow =
bigint_sub3(ws + 24 + 1, ws, 24 + 1, p, 24);
1366 word w2 = 0, w1 = 0, w0 = 0;
1368 ws[0] = w0 * p_dash;
1370 w0 = w1; w1 = w2; w2 = 0;
1373 ws[1] = w0 * p_dash;
1375 w0 = w1; w1 = w2; w2 = 0;
1379 ws[2] = w0 * p_dash;
1381 w0 = w1; w1 = w2; w2 = 0;
1386 ws[3] = w0 * p_dash;
1388 w0 = w1; w1 = w2; w2 = 0;
1394 ws[4] = w0 * p_dash;
1396 w0 = w1; w1 = w2; w2 = 0;
1403 ws[5] = w0 * p_dash;
1405 w0 = w1; w1 = w2; w2 = 0;
1413 ws[6] = w0 * p_dash;
1415 w0 = w1; w1 = w2; w2 = 0;
1424 ws[7] = w0 * p_dash;
1426 w0 = w1; w1 = w2; w2 = 0;
1436 ws[8] = w0 * p_dash;
1438 w0 = w1; w1 = w2; w2 = 0;
1449 ws[9] = w0 * p_dash;
1451 w0 = w1; w1 = w2; w2 = 0;
1463 ws[10] = w0 * p_dash;
1465 w0 = w1; w1 = w2; w2 = 0;
1478 ws[11] = w0 * p_dash;
1480 w0 = w1; w1 = w2; w2 = 0;
1494 ws[12] = w0 * p_dash;
1496 w0 = w1; w1 = w2; w2 = 0;
1511 ws[13] = w0 * p_dash;
1513 w0 = w1; w1 = w2; w2 = 0;
1529 ws[14] = w0 * p_dash;
1531 w0 = w1; w1 = w2; w2 = 0;
1548 ws[15] = w0 * p_dash;
1550 w0 = w1; w1 = w2; w2 = 0;
1568 ws[16] = w0 * p_dash;
1570 w0 = w1; w1 = w2; w2 = 0;
1589 ws[17] = w0 * p_dash;
1591 w0 = w1; w1 = w2; w2 = 0;
1611 ws[18] = w0 * p_dash;
1613 w0 = w1; w1 = w2; w2 = 0;
1634 ws[19] = w0 * p_dash;
1636 w0 = w1; w1 = w2; w2 = 0;
1658 ws[20] = w0 * p_dash;
1660 w0 = w1; w1 = w2; w2 = 0;
1683 ws[21] = w0 * p_dash;
1685 w0 = w1; w1 = w2; w2 = 0;
1709 ws[22] = w0 * p_dash;
1711 w0 = w1; w1 = w2; w2 = 0;
1736 ws[23] = w0 * p_dash;
1738 w0 = w1; w1 = w2; w2 = 0;
1764 ws[24] = w0 * p_dash;
1766 w0 = w1; w1 = w2; w2 = 0;
1793 ws[25] = w0 * p_dash;
1795 w0 = w1; w1 = w2; w2 = 0;
1823 ws[26] = w0 * p_dash;
1825 w0 = w1; w1 = w2; w2 = 0;
1854 ws[27] = w0 * p_dash;
1856 w0 = w1; w1 = w2; w2 = 0;
1886 ws[28] = w0 * p_dash;
1888 w0 = w1; w1 = w2; w2 = 0;
1919 ws[29] = w0 * p_dash;
1921 w0 = w1; w1 = w2; w2 = 0;
1953 ws[30] = w0 * p_dash;
1955 w0 = w1; w1 = w2; w2 = 0;
1988 ws[31] = w0 * p_dash;
1990 w0 = w1; w1 = w2; w2 = 0;
2024 w0 = w1; w1 = w2; w2 = 0;
2057 w0 = w1; w1 = w2; w2 = 0;
2089 w0 = w1; w1 = w2; w2 = 0;
2120 w0 = w1; w1 = w2; w2 = 0;
2150 w0 = w1; w1 = w2; w2 = 0;
2179 w0 = w1; w1 = w2; w2 = 0;
2207 w0 = w1; w1 = w2; w2 = 0;
2234 w0 = w1; w1 = w2; w2 = 0;
2260 w0 = w1; w1 = w2; w2 = 0;
2285 w0 = w1; w1 = w2; w2 = 0;
2309 w0 = w1; w1 = w2; w2 = 0;
2332 w0 = w1; w1 = w2; w2 = 0;
2354 w0 = w1; w1 = w2; w2 = 0;
2375 w0 = w1; w1 = w2; w2 = 0;
2395 w0 = w1; w1 = w2; w2 = 0;
2414 w0 = w1; w1 = w2; w2 = 0;
2432 w0 = w1; w1 = w2; w2 = 0;
2449 w0 = w1; w1 = w2; w2 = 0;
2465 w0 = w1; w1 = w2; w2 = 0;
2480 w0 = w1; w1 = w2; w2 = 0;
2494 w0 = w1; w1 = w2; w2 = 0;
2507 w0 = w1; w1 = w2; w2 = 0;
2519 w0 = w1; w1 = w2; w2 = 0;
2530 w0 = w1; w1 = w2; w2 = 0;
2540 w0 = w1; w1 = w2; w2 = 0;
2549 w0 = w1; w1 = w2; w2 = 0;
2557 w0 = w1; w1 = w2; w2 = 0;
2564 w0 = w1; w1 = w2; w2 = 0;
2570 w0 = w1; w1 = w2; w2 = 0;
2575 w0 = w1; w1 = w2; w2 = 0;
2579 w0 = w1; w1 = w2; w2 = 0;
2582 w0 = w1; w1 = w2; w2 = 0;
2586 word borrow =
bigint_sub3(ws + 32 + 1, ws, 32 + 1, p, 32);
Mask< T > conditional_copy_mem(T cnd, T *to, const T *from0, const T *from1, size_t elems)
void bigint_monty_redc_4(word z[], const word p[4], word p_dash, word ws[])
void bigint_monty_redc_32(word z[], const word p[32], word p_dash, word ws[])
void bigint_monty_redc_16(word z[], const word p[16], word p_dash, word ws[])
void bigint_monty_redc_6(word z[], const word p[6], word p_dash, word ws[])
void bigint_monty_redc_8(word z[], const word p[8], word p_dash, word ws[])
void word3_muladd(word *w2, word *w1, word *w0, word x, word y)
void word3_add(word *w2, word *w1, word *w0, word x)
void bigint_monty_redc_24(word z[], const word p[24], word p_dash, word ws[])
word bigint_sub3(word z[], const word x[], size_t x_size, const word y[], size_t y_size)
constexpr void clear_mem(T *ptr, size_t n)