7 .quad 0xffffffffffffffff, 0x00000000ffffffff, 0x0000000000000000, 0xffffffff00000001
11 .quad 0x0000000000000003, 0xfffffffbffffffff, 0xfffffffffffffffe, 0x00000004fffffffd
20 .quad 0x0000000000000001, 0xffffffff00000000, 0xffffffffffffffff, 0x00000000fffffffe
22 .globl ecp_nistz256_mul_by_2
23 .type ecp_nistz256_mul_by_2,@function
25 ecp_nistz256_mul_by_2:
35 leaq .Lpoly(%rip),%rsi
62 .size ecp_nistz256_mul_by_2,.-ecp_nistz256_mul_by_2
66 .globl ecp_nistz256_div_by_2
67 .type ecp_nistz256_div_by_2,@function
69 ecp_nistz256_div_by_2:
78 leaq .Lpoly(%rip),%rsi
122 .size ecp_nistz256_div_by_2,.-ecp_nistz256_div_by_2
126 .globl ecp_nistz256_mul_by_3
127 .type ecp_nistz256_mul_by_3,@function
129 ecp_nistz256_mul_by_3:
148 sbbq .Lpoly+8(%rip),%r9
151 sbbq .Lpoly+24(%rip),%r11
170 sbbq .Lpoly+8(%rip),%r9
173 sbbq .Lpoly+24(%rip),%r11
188 .size ecp_nistz256_mul_by_3,.-ecp_nistz256_mul_by_3
192 .globl ecp_nistz256_add
193 .type ecp_nistz256_add,@function
204 leaq .Lpoly(%rip),%rsi
234 .size ecp_nistz256_add,.-ecp_nistz256_add
238 .globl ecp_nistz256_sub
239 .type ecp_nistz256_sub,@function
250 leaq .Lpoly(%rip),%rsi
280 .size ecp_nistz256_sub,.-ecp_nistz256_sub
284 .globl ecp_nistz256_neg
285 .type ecp_nistz256_neg,@function
302 leaq .Lpoly(%rip),%rsi
326 .size ecp_nistz256_neg,.-ecp_nistz256_neg
331 .globl ecp_nistz256_to_mont
332 .type ecp_nistz256_to_mont,@function
334 ecp_nistz256_to_mont:
337 .size ecp_nistz256_to_mont,.-ecp_nistz256_to_mont
345 .globl ecp_nistz256_mul_mont
346 .type ecp_nistz256_mul_mont,@function
348 ecp_nistz256_mul_mont:
363 call __ecp_nistz256_mul_montq
372 .size ecp_nistz256_mul_mont,.-ecp_nistz256_mul_mont
374 .type __ecp_nistz256_mul_montq,@function
376 __ecp_nistz256_mul_montq:
381 movq .Lpoly+8(%rip),%r14
387 movq .Lpoly+24(%rip),%r15
588 .size __ecp_nistz256_mul_montq,.-__ecp_nistz256_mul_montq
597 .globl ecp_nistz256_sqr_mont
598 .type ecp_nistz256_sqr_mont,@function
600 ecp_nistz256_sqr_mont:
612 call __ecp_nistz256_sqr_montq
621 .size ecp_nistz256_sqr_mont,.-ecp_nistz256_sqr_mont
623 .type __ecp_nistz256_sqr_montq,@function
625 __ecp_nistz256_sqr_montq:
700 movq .Lpoly+8(%rip),%rsi
701 movq .Lpoly+24(%rip),%rbp
783 .size __ecp_nistz256_sqr_montq,.-__ecp_nistz256_sqr_montq
790 .globl ecp_nistz256_from_mont
791 .type ecp_nistz256_from_mont,@function
793 ecp_nistz256_from_mont:
798 movq .Lpoly+24(%rip),%r13
803 movq .Lpoly+8(%rip),%r12
879 .size ecp_nistz256_from_mont,.-ecp_nistz256_from_mont
882 .globl ecp_nistz256_select_w5
883 .type ecp_nistz256_select_w5,@function
885 ecp_nistz256_select_w5:
886 movdqa .LOne(%rip),%xmm0
897 pshufd $0,%xmm1,%xmm1
900 .Lselect_loop_sse_w5:
907 movdqa 16(%rsi),%xmm10
908 movdqa 32(%rsi),%xmm11
909 movdqa 48(%rsi),%xmm12
910 movdqa 64(%rsi),%xmm13
911 movdqa 80(%rsi),%xmm14
928 jnz .Lselect_loop_sse_w5
931 movdqu %xmm3,16(%rdi)
932 movdqu %xmm4,32(%rdi)
933 movdqu %xmm5,48(%rdi)
934 movdqu %xmm6,64(%rdi)
935 movdqu %xmm7,80(%rdi)
937 .size ecp_nistz256_select_w5,.-ecp_nistz256_select_w5
941 .globl ecp_nistz256_select_w7
942 .type ecp_nistz256_select_w7,@function
944 ecp_nistz256_select_w7:
945 movdqa .LOne(%rip),%xmm8
954 pshufd $0,%xmm1,%xmm1
957 .Lselect_loop_sse_w7:
961 movdqa 16(%rsi),%xmm10
963 movdqa 32(%rsi),%xmm11
964 movdqa 48(%rsi),%xmm12
978 jnz .Lselect_loop_sse_w7
981 movdqu %xmm3,16(%rdi)
982 movdqu %xmm4,32(%rdi)
983 movdqu %xmm5,48(%rdi)
985 .size ecp_nistz256_select_w7,.-ecp_nistz256_select_w7
986 .globl ecp_nistz256_avx2_select_w7
987 .type ecp_nistz256_avx2_select_w7,@function
989 ecp_nistz256_avx2_select_w7:
992 .size ecp_nistz256_avx2_select_w7,.-ecp_nistz256_avx2_select_w7
993 .type __ecp_nistz256_add_toq,@function
995 __ecp_nistz256_add_toq:
1022 .size __ecp_nistz256_add_toq,.-__ecp_nistz256_add_toq
1024 .type __ecp_nistz256_sub_fromq,@function
1026 __ecp_nistz256_sub_fromq:
1053 .size __ecp_nistz256_sub_fromq,.-__ecp_nistz256_sub_fromq
1055 .type __ecp_nistz256_subq,@function
1057 __ecp_nistz256_subq:
1080 .size __ecp_nistz256_subq,.-__ecp_nistz256_subq
1082 .type __ecp_nistz256_mul_by_2q,@function
1084 __ecp_nistz256_mul_by_2q:
1111 .size __ecp_nistz256_mul_by_2q,.-__ecp_nistz256_mul_by_2q
1112 .globl ecp_nistz256_point_double
1113 .type ecp_nistz256_point_double,@function
1115 ecp_nistz256_point_double:
1124 .Lpoint_double_shortcutq:
1125 movdqu 0(%rsi),%xmm0
1127 movdqu 16(%rsi),%xmm1
1128 movq 32+0(%rsi),%r12
1129 movq 32+8(%rsi),%r13
1130 movq 32+16(%rsi),%r8
1131 movq 32+24(%rsi),%r9
1132 movq .Lpoly+8(%rip),%r14
1133 movq .Lpoly+24(%rip),%r15
1134 movdqa %xmm0,96(%rsp)
1135 movdqa %xmm1,96+16(%rsp)
1138 .byte 102,72,15,110,199
1139 .byte 102,73,15,110,202
1140 .byte 102,73,15,110,211
1143 call __ecp_nistz256_mul_by_2q
1145 movq 64+0(%rsi),%rax
1146 movq 64+8(%rsi),%r14
1147 movq 64+16(%rsi),%r15
1148 movq 64+24(%rsi),%r8
1149 leaq 64-0(%rsi),%rsi
1151 call __ecp_nistz256_sqr_montq
1156 movq 16+0(%rsp),%r15
1159 call __ecp_nistz256_sqr_montq
1163 movq 64+8(%rbx),%r10
1164 movq 64+16(%rbx),%r11
1165 movq 64+24(%rbx),%r12
1166 leaq 64-0(%rbx),%rsi
1168 .byte 102,72,15,126,215
1169 call __ecp_nistz256_mul_montq
1170 call __ecp_nistz256_mul_by_2q
1172 movq 96+0(%rsp),%r12
1173 movq 96+8(%rsp),%r13
1175 movq 96+16(%rsp),%r8
1176 movq 96+24(%rsp),%r9
1178 call __ecp_nistz256_add_toq
1180 movq 96+0(%rsp),%r12
1181 movq 96+8(%rsp),%r13
1183 movq 96+16(%rsp),%r8
1184 movq 96+24(%rsp),%r9
1186 call __ecp_nistz256_sub_fromq
1191 movq 16+0(%rsp),%r15
1193 .byte 102,72,15,126,207
1194 call __ecp_nistz256_sqr_montq
1236 movq 8+32(%rsp),%r10
1237 leaq 0+32(%rsp),%rsi
1238 movq 16+32(%rsp),%r11
1239 movq 24+32(%rsp),%r12
1241 call __ecp_nistz256_mul_montq
1244 call __ecp_nistz256_mul_by_2q
1248 call __ecp_nistz256_add_toq
1255 movq 16+0(%rsp),%r11
1256 movq 24+0(%rsp),%r12
1258 call __ecp_nistz256_mul_montq
1261 call __ecp_nistz256_mul_by_2q
1263 movq 0+32(%rsp),%rax
1264 movq 8+32(%rsp),%r14
1265 leaq 0+32(%rsp),%rsi
1266 movq 16+32(%rsp),%r15
1267 movq 24+32(%rsp),%r8
1268 .byte 102,72,15,126,199
1269 call __ecp_nistz256_sqr_montq
1276 call __ecp_nistz256_sub_fromq
1280 movq 0+16(%rsp),%rcx
1281 movq 0+24(%rsp),%r10
1283 call __ecp_nistz256_subq
1299 call __ecp_nistz256_mul_montq
1301 .byte 102,72,15,126,203
1302 .byte 102,72,15,126,207
1303 call __ecp_nistz256_sub_fromq
1313 .size ecp_nistz256_point_double,.-ecp_nistz256_point_double
1314 .globl ecp_nistz256_point_add
1315 .type ecp_nistz256_point_add,@function
1317 ecp_nistz256_point_add:
1326 movdqu 0(%rsi),%xmm0
1327 movdqu 16(%rsi),%xmm1
1328 movdqu 32(%rsi),%xmm2
1329 movdqu 48(%rsi),%xmm3
1330 movdqu 64(%rsi),%xmm4
1331 movdqu 80(%rsi),%xmm5
1334 movdqa %xmm0,384(%rsp)
1335 movdqa %xmm1,384+16(%rsp)
1337 movdqa %xmm2,416(%rsp)
1338 movdqa %xmm3,416+16(%rsp)
1340 movdqa %xmm4,448(%rsp)
1341 movdqa %xmm5,448+16(%rsp)
1344 movdqu 0(%rsi),%xmm0
1345 pshufd $0xb1,%xmm3,%xmm5
1346 movdqu 16(%rsi),%xmm1
1347 movdqu 32(%rsi),%xmm2
1349 movdqu 48(%rsi),%xmm3
1350 movq 64+0(%rsi),%rax
1351 movq 64+8(%rsi),%r14
1352 movq 64+16(%rsi),%r15
1353 movq 64+24(%rsi),%r8
1354 movdqa %xmm0,480(%rsp)
1355 pshufd $0x1e,%xmm5,%xmm4
1356 movdqa %xmm1,480+16(%rsp)
1358 .byte 102,72,15,110,199
1359 movdqa %xmm2,512(%rsp)
1360 movdqa %xmm3,512+16(%rsp)
1366 leaq 64-0(%rsi),%rsi
1367 movq %rax,544+0(%rsp)
1368 movq %r14,544+8(%rsp)
1369 movq %r15,544+16(%rsp)
1370 movq %r8,544+24(%rsp)
1372 call __ecp_nistz256_sqr_montq
1375 pshufd $0xb1,%xmm3,%xmm4
1377 pshufd $0,%xmm5,%xmm5
1378 pshufd $0x1e,%xmm4,%xmm3
1382 pshufd $0,%xmm4,%xmm4
1383 movq 64+0(%rbx),%rax
1384 movq 64+8(%rbx),%r14
1385 movq 64+16(%rbx),%r15
1386 movq 64+24(%rbx),%r8
1387 .byte 102,72,15,110,203
1389 leaq 64-0(%rbx),%rsi
1391 call __ecp_nistz256_sqr_montq
1396 movq 8+96(%rsp),%r10
1397 leaq 0+96(%rsp),%rsi
1398 movq 16+96(%rsp),%r11
1399 movq 24+96(%rsp),%r12
1401 call __ecp_nistz256_mul_montq
1406 movq 8+32(%rsp),%r10
1407 leaq 0+32(%rsp),%rsi
1408 movq 16+32(%rsp),%r11
1409 movq 24+32(%rsp),%r12
1411 call __ecp_nistz256_mul_montq
1415 movq 0+224(%rsp),%r9
1416 movq 8+224(%rsp),%r10
1417 leaq 0+224(%rsp),%rsi
1418 movq 16+224(%rsp),%r11
1419 movq 24+224(%rsp),%r12
1421 call __ecp_nistz256_mul_montq
1425 movq 0+256(%rsp),%r9
1426 movq 8+256(%rsp),%r10
1427 leaq 0+256(%rsp),%rsi
1428 movq 16+256(%rsp),%r11
1429 movq 24+256(%rsp),%r12
1431 call __ecp_nistz256_mul_montq
1435 call __ecp_nistz256_sub_fromq
1442 .byte 102,73,15,110,220
1447 movq 8+96(%rsp),%r10
1448 leaq 0+96(%rsp),%rsi
1449 movq 16+96(%rsp),%r11
1450 movq 24+96(%rsp),%r12
1452 call __ecp_nistz256_mul_montq
1457 movq 8+32(%rsp),%r10
1458 leaq 0+32(%rsp),%rsi
1459 movq 16+32(%rsp),%r11
1460 movq 24+32(%rsp),%r12
1462 call __ecp_nistz256_mul_montq
1466 call __ecp_nistz256_sub_fromq
1474 .byte 102,73,15,126,208
1475 .byte 102,73,15,126,217
1481 .byte 102,72,15,126,199
1483 movdqu %xmm0,0(%rdi)
1484 movdqu %xmm0,16(%rdi)
1485 movdqu %xmm0,32(%rdi)
1486 movdqu %xmm0,48(%rdi)
1487 movdqu %xmm0,64(%rdi)
1488 movdqu %xmm0,80(%rdi)
1493 .byte 102,72,15,126,206
1494 .byte 102,72,15,126,199
1496 jmp .Lpoint_double_shortcutq
1500 movq 0+64(%rsp),%rax
1501 movq 8+64(%rsp),%r14
1502 leaq 0+64(%rsp),%rsi
1503 movq 16+64(%rsp),%r15
1504 movq 24+64(%rsp),%r8
1506 call __ecp_nistz256_sqr_montq
1513 movq 16+0(%rsp),%r11
1514 movq 24+0(%rsp),%r12
1516 call __ecp_nistz256_mul_montq
1521 movq 16+0(%rsp),%r15
1524 call __ecp_nistz256_sqr_montq
1528 movq 0+352(%rsp),%r9
1529 movq 8+352(%rsp),%r10
1530 leaq 0+352(%rsp),%rsi
1531 movq 16+352(%rsp),%r11
1532 movq 24+352(%rsp),%r12
1534 call __ecp_nistz256_mul_montq
1539 movq 8+32(%rsp),%r10
1540 leaq 0+32(%rsp),%rsi
1541 movq 16+32(%rsp),%r11
1542 movq 24+32(%rsp),%r12
1544 call __ecp_nistz256_mul_montq
1549 movq 8+32(%rsp),%r10
1550 leaq 0+32(%rsp),%rsi
1551 movq 16+32(%rsp),%r11
1552 movq 24+32(%rsp),%r12
1554 call __ecp_nistz256_mul_montq
1585 call __ecp_nistz256_subq
1589 call __ecp_nistz256_sub_fromq
1591 movq 192+0(%rsp),%rax
1592 movq 192+8(%rsp),%rbp
1593 movq 192+16(%rsp),%rcx
1594 movq 192+24(%rsp),%r10
1597 call __ecp_nistz256_subq
1605 movq 0+224(%rsp),%r9
1606 movq 8+224(%rsp),%r10
1607 leaq 0+224(%rsp),%rsi
1608 movq 16+224(%rsp),%r11
1609 movq 24+224(%rsp),%r12
1611 call __ecp_nistz256_mul_montq
1616 movq 8+64(%rsp),%r10
1617 leaq 0+64(%rsp),%rsi
1618 movq 16+64(%rsp),%r11
1619 movq 24+64(%rsp),%r12
1621 call __ecp_nistz256_mul_montq
1625 call __ecp_nistz256_sub_fromq
1627 .byte 102,72,15,126,199
1631 pandn 352(%rsp),%xmm0
1633 pandn 352+16(%rsp),%xmm1
1635 pand 544(%rsp),%xmm2
1636 pand 544+16(%rsp),%xmm3
1646 pand 448(%rsp),%xmm2
1647 pand 448+16(%rsp),%xmm3
1650 movdqu %xmm2,64(%rdi)
1651 movdqu %xmm3,80(%rdi)
1655 pandn 288(%rsp),%xmm0
1657 pandn 288+16(%rsp),%xmm1
1659 pand 480(%rsp),%xmm2
1660 pand 480+16(%rsp),%xmm3
1670 pand 384(%rsp),%xmm2
1671 pand 384+16(%rsp),%xmm3
1674 movdqu %xmm2,0(%rdi)
1675 movdqu %xmm3,16(%rdi)
1679 pandn 320(%rsp),%xmm0
1681 pandn 320+16(%rsp),%xmm1
1683 pand 512(%rsp),%xmm2
1684 pand 512+16(%rsp),%xmm3
1694 pand 416(%rsp),%xmm2
1695 pand 416+16(%rsp),%xmm3
1698 movdqu %xmm2,32(%rdi)
1699 movdqu %xmm3,48(%rdi)
1710 .size ecp_nistz256_point_add,.-ecp_nistz256_point_add
1711 .globl ecp_nistz256_point_add_affine
1712 .type ecp_nistz256_point_add_affine,@function
1714 ecp_nistz256_point_add_affine:
1723 movdqu 0(%rsi),%xmm0
1725 movdqu 16(%rsi),%xmm1
1726 movdqu 32(%rsi),%xmm2
1727 movdqu 48(%rsi),%xmm3
1728 movdqu 64(%rsi),%xmm4
1729 movdqu 80(%rsi),%xmm5
1730 movq 64+0(%rsi),%rax
1731 movq 64+8(%rsi),%r14
1732 movq 64+16(%rsi),%r15
1733 movq 64+24(%rsi),%r8
1734 movdqa %xmm0,320(%rsp)
1735 movdqa %xmm1,320+16(%rsp)
1737 movdqa %xmm2,352(%rsp)
1738 movdqa %xmm3,352+16(%rsp)
1740 movdqa %xmm4,384(%rsp)
1741 movdqa %xmm5,384+16(%rsp)
1744 movdqu 0(%rbx),%xmm0
1745 pshufd $0xb1,%xmm3,%xmm5
1746 movdqu 16(%rbx),%xmm1
1747 movdqu 32(%rbx),%xmm2
1749 movdqu 48(%rbx),%xmm3
1750 movdqa %xmm0,416(%rsp)
1751 pshufd $0x1e,%xmm5,%xmm4
1752 movdqa %xmm1,416+16(%rsp)
1754 .byte 102,72,15,110,199
1755 movdqa %xmm2,448(%rsp)
1756 movdqa %xmm3,448+16(%rsp)
1762 leaq 64-0(%rsi),%rsi
1764 call __ecp_nistz256_sqr_montq
1767 pshufd $0xb1,%xmm3,%xmm4
1772 pshufd $0,%xmm5,%xmm5
1773 pshufd $0x1e,%xmm4,%xmm3
1779 pshufd $0,%xmm4,%xmm4
1781 leaq 32-0(%rsp),%rsi
1784 call __ecp_nistz256_mul_montq
1788 call __ecp_nistz256_sub_fromq
1793 movq 8+32(%rsp),%r10
1794 leaq 0+32(%rsp),%rsi
1795 movq 16+32(%rsp),%r11
1796 movq 24+32(%rsp),%r12
1798 call __ecp_nistz256_mul_montq
1803 movq 8+64(%rsp),%r10
1804 leaq 0+64(%rsp),%rsi
1805 movq 16+64(%rsp),%r11
1806 movq 24+64(%rsp),%r12
1808 call __ecp_nistz256_mul_montq
1813 movq 8+32(%rsp),%r10
1814 leaq 0+32(%rsp),%rsi
1815 movq 16+32(%rsp),%r11
1816 movq 24+32(%rsp),%r12
1818 call __ecp_nistz256_mul_montq
1822 call __ecp_nistz256_sub_fromq
1824 movq 0+64(%rsp),%rax
1825 movq 8+64(%rsp),%r14
1826 leaq 0+64(%rsp),%rsi
1827 movq 16+64(%rsp),%r15
1828 movq 24+64(%rsp),%r8
1830 call __ecp_nistz256_sqr_montq
1832 movq 0+96(%rsp),%rax
1833 movq 8+96(%rsp),%r14
1834 leaq 0+96(%rsp),%rsi
1835 movq 16+96(%rsp),%r15
1836 movq 24+96(%rsp),%r8
1838 call __ecp_nistz256_sqr_montq
1843 movq 8+64(%rsp),%r10
1844 leaq 0+64(%rsp),%rsi
1845 movq 16+64(%rsp),%r11
1846 movq 24+64(%rsp),%r12
1848 call __ecp_nistz256_mul_montq
1852 movq 0+128(%rsp),%r9
1853 movq 8+128(%rsp),%r10
1854 leaq 0+128(%rsp),%rsi
1855 movq 16+128(%rsp),%r11
1856 movq 24+128(%rsp),%r12
1858 call __ecp_nistz256_mul_montq
1889 call __ecp_nistz256_subq
1893 call __ecp_nistz256_sub_fromq
1897 movq 0+16(%rsp),%rcx
1898 movq 0+24(%rsp),%r10
1901 call __ecp_nistz256_subq
1909 movq 0+160(%rsp),%r9
1910 movq 8+160(%rsp),%r10
1911 leaq 0+160(%rsp),%rsi
1912 movq 16+160(%rsp),%r11
1913 movq 24+160(%rsp),%r12
1915 call __ecp_nistz256_mul_montq
1920 movq 8+64(%rsp),%r10
1921 leaq 0+64(%rsp),%rsi
1922 movq 16+64(%rsp),%r11
1923 movq 24+64(%rsp),%r12
1925 call __ecp_nistz256_mul_montq
1929 call __ecp_nistz256_sub_fromq
1931 .byte 102,72,15,126,199
1935 pandn 288(%rsp),%xmm0
1937 pandn 288+16(%rsp),%xmm1
1939 pand .LONE_mont(%rip),%xmm2
1940 pand .LONE_mont+16(%rip),%xmm3
1950 pand 384(%rsp),%xmm2
1951 pand 384+16(%rsp),%xmm3
1954 movdqu %xmm2,64(%rdi)
1955 movdqu %xmm3,80(%rdi)
1959 pandn 224(%rsp),%xmm0
1961 pandn 224+16(%rsp),%xmm1
1963 pand 416(%rsp),%xmm2
1964 pand 416+16(%rsp),%xmm3
1974 pand 320(%rsp),%xmm2
1975 pand 320+16(%rsp),%xmm3
1978 movdqu %xmm2,0(%rdi)
1979 movdqu %xmm3,16(%rdi)
1983 pandn 256(%rsp),%xmm0
1985 pandn 256+16(%rsp),%xmm1
1987 pand 448(%rsp),%xmm2
1988 pand 448+16(%rsp),%xmm3
1998 pand 352(%rsp),%xmm2
1999 pand 352+16(%rsp),%xmm3
2002 movdqu %xmm2,32(%rdi)
2003 movdqu %xmm3,48(%rdi)
2013 .size ecp_nistz256_point_add_affine,.-ecp_nistz256_point_add_affine
2014 .section .note.GNU-stack,"",%progbits