1// This file is generated from a similarly-named Perl script in the BoringSSL 2// source tree. Do not edit by hand. 3 4#include <openssl/asm_base.h> 5 6#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__APPLE__) 7.text 8.globl _bn_mul_comba8 9.private_extern _bn_mul_comba8 10.align 4 11_bn_mul_comba8: 12L_bn_mul_comba8_begin: 13 pushl %esi 14 movl 12(%esp),%esi 15 pushl %edi 16 movl 20(%esp),%edi 17 pushl %ebp 18 pushl %ebx 19 xorl %ebx,%ebx 20 movl (%esi),%eax 21 xorl %ecx,%ecx 22 movl (%edi),%edx 23 # ################## Calculate word 0 24 xorl %ebp,%ebp 25 # mul a[0]*b[0] 26 mull %edx 27 addl %eax,%ebx 28 movl 20(%esp),%eax 29 adcl %edx,%ecx 30 movl (%edi),%edx 31 adcl $0,%ebp 32 movl %ebx,(%eax) 33 movl 4(%esi),%eax 34 # saved r[0] 35 # ################## Calculate word 1 36 xorl %ebx,%ebx 37 # mul a[1]*b[0] 38 mull %edx 39 addl %eax,%ecx 40 movl (%esi),%eax 41 adcl %edx,%ebp 42 movl 4(%edi),%edx 43 adcl $0,%ebx 44 # mul a[0]*b[1] 45 mull %edx 46 addl %eax,%ecx 47 movl 20(%esp),%eax 48 adcl %edx,%ebp 49 movl (%edi),%edx 50 adcl $0,%ebx 51 movl %ecx,4(%eax) 52 movl 8(%esi),%eax 53 # saved r[1] 54 # ################## Calculate word 2 55 xorl %ecx,%ecx 56 # mul a[2]*b[0] 57 mull %edx 58 addl %eax,%ebp 59 movl 4(%esi),%eax 60 adcl %edx,%ebx 61 movl 4(%edi),%edx 62 adcl $0,%ecx 63 # mul a[1]*b[1] 64 mull %edx 65 addl %eax,%ebp 66 movl (%esi),%eax 67 adcl %edx,%ebx 68 movl 8(%edi),%edx 69 adcl $0,%ecx 70 # mul a[0]*b[2] 71 mull %edx 72 addl %eax,%ebp 73 movl 20(%esp),%eax 74 adcl %edx,%ebx 75 movl (%edi),%edx 76 adcl $0,%ecx 77 movl %ebp,8(%eax) 78 movl 12(%esi),%eax 79 # saved r[2] 80 # ################## Calculate word 3 81 xorl %ebp,%ebp 82 # mul a[3]*b[0] 83 mull %edx 84 addl %eax,%ebx 85 movl 8(%esi),%eax 86 adcl %edx,%ecx 87 movl 4(%edi),%edx 88 adcl $0,%ebp 89 # mul a[2]*b[1] 90 mull %edx 91 addl %eax,%ebx 92 movl 4(%esi),%eax 93 adcl %edx,%ecx 94 movl 8(%edi),%edx 95 adcl $0,%ebp 96 # mul a[1]*b[2] 97 mull %edx 98 addl %eax,%ebx 99 movl (%esi),%eax 100 adcl %edx,%ecx 101 movl 12(%edi),%edx 102 adcl $0,%ebp 103 # mul a[0]*b[3] 104 mull %edx 105 addl %eax,%ebx 106 movl 20(%esp),%eax 107 adcl %edx,%ecx 108 movl (%edi),%edx 109 adcl $0,%ebp 110 movl %ebx,12(%eax) 111 movl 16(%esi),%eax 112 # saved r[3] 113 # ################## Calculate word 4 114 xorl %ebx,%ebx 115 # mul a[4]*b[0] 116 mull %edx 117 addl %eax,%ecx 118 movl 12(%esi),%eax 119 adcl %edx,%ebp 120 movl 4(%edi),%edx 121 adcl $0,%ebx 122 # mul a[3]*b[1] 123 mull %edx 124 addl %eax,%ecx 125 movl 8(%esi),%eax 126 adcl %edx,%ebp 127 movl 8(%edi),%edx 128 adcl $0,%ebx 129 # mul a[2]*b[2] 130 mull %edx 131 addl %eax,%ecx 132 movl 4(%esi),%eax 133 adcl %edx,%ebp 134 movl 12(%edi),%edx 135 adcl $0,%ebx 136 # mul a[1]*b[3] 137 mull %edx 138 addl %eax,%ecx 139 movl (%esi),%eax 140 adcl %edx,%ebp 141 movl 16(%edi),%edx 142 adcl $0,%ebx 143 # mul a[0]*b[4] 144 mull %edx 145 addl %eax,%ecx 146 movl 20(%esp),%eax 147 adcl %edx,%ebp 148 movl (%edi),%edx 149 adcl $0,%ebx 150 movl %ecx,16(%eax) 151 movl 20(%esi),%eax 152 # saved r[4] 153 # ################## Calculate word 5 154 xorl %ecx,%ecx 155 # mul a[5]*b[0] 156 mull %edx 157 addl %eax,%ebp 158 movl 16(%esi),%eax 159 adcl %edx,%ebx 160 movl 4(%edi),%edx 161 adcl $0,%ecx 162 # mul a[4]*b[1] 163 mull %edx 164 addl %eax,%ebp 165 movl 12(%esi),%eax 166 adcl %edx,%ebx 167 movl 8(%edi),%edx 168 adcl $0,%ecx 169 # mul a[3]*b[2] 170 mull %edx 171 addl %eax,%ebp 172 movl 8(%esi),%eax 173 adcl %edx,%ebx 174 movl 12(%edi),%edx 175 adcl $0,%ecx 176 # mul a[2]*b[3] 177 mull %edx 178 addl %eax,%ebp 179 movl 4(%esi),%eax 180 adcl %edx,%ebx 181 movl 16(%edi),%edx 182 adcl $0,%ecx 183 # mul a[1]*b[4] 184 mull %edx 185 addl %eax,%ebp 186 movl (%esi),%eax 187 adcl %edx,%ebx 188 movl 20(%edi),%edx 189 adcl $0,%ecx 190 # mul a[0]*b[5] 191 mull %edx 192 addl %eax,%ebp 193 movl 20(%esp),%eax 194 adcl %edx,%ebx 195 movl (%edi),%edx 196 adcl $0,%ecx 197 movl %ebp,20(%eax) 198 movl 24(%esi),%eax 199 # saved r[5] 200 # ################## Calculate word 6 201 xorl %ebp,%ebp 202 # mul a[6]*b[0] 203 mull %edx 204 addl %eax,%ebx 205 movl 20(%esi),%eax 206 adcl %edx,%ecx 207 movl 4(%edi),%edx 208 adcl $0,%ebp 209 # mul a[5]*b[1] 210 mull %edx 211 addl %eax,%ebx 212 movl 16(%esi),%eax 213 adcl %edx,%ecx 214 movl 8(%edi),%edx 215 adcl $0,%ebp 216 # mul a[4]*b[2] 217 mull %edx 218 addl %eax,%ebx 219 movl 12(%esi),%eax 220 adcl %edx,%ecx 221 movl 12(%edi),%edx 222 adcl $0,%ebp 223 # mul a[3]*b[3] 224 mull %edx 225 addl %eax,%ebx 226 movl 8(%esi),%eax 227 adcl %edx,%ecx 228 movl 16(%edi),%edx 229 adcl $0,%ebp 230 # mul a[2]*b[4] 231 mull %edx 232 addl %eax,%ebx 233 movl 4(%esi),%eax 234 adcl %edx,%ecx 235 movl 20(%edi),%edx 236 adcl $0,%ebp 237 # mul a[1]*b[5] 238 mull %edx 239 addl %eax,%ebx 240 movl (%esi),%eax 241 adcl %edx,%ecx 242 movl 24(%edi),%edx 243 adcl $0,%ebp 244 # mul a[0]*b[6] 245 mull %edx 246 addl %eax,%ebx 247 movl 20(%esp),%eax 248 adcl %edx,%ecx 249 movl (%edi),%edx 250 adcl $0,%ebp 251 movl %ebx,24(%eax) 252 movl 28(%esi),%eax 253 # saved r[6] 254 # ################## Calculate word 7 255 xorl %ebx,%ebx 256 # mul a[7]*b[0] 257 mull %edx 258 addl %eax,%ecx 259 movl 24(%esi),%eax 260 adcl %edx,%ebp 261 movl 4(%edi),%edx 262 adcl $0,%ebx 263 # mul a[6]*b[1] 264 mull %edx 265 addl %eax,%ecx 266 movl 20(%esi),%eax 267 adcl %edx,%ebp 268 movl 8(%edi),%edx 269 adcl $0,%ebx 270 # mul a[5]*b[2] 271 mull %edx 272 addl %eax,%ecx 273 movl 16(%esi),%eax 274 adcl %edx,%ebp 275 movl 12(%edi),%edx 276 adcl $0,%ebx 277 # mul a[4]*b[3] 278 mull %edx 279 addl %eax,%ecx 280 movl 12(%esi),%eax 281 adcl %edx,%ebp 282 movl 16(%edi),%edx 283 adcl $0,%ebx 284 # mul a[3]*b[4] 285 mull %edx 286 addl %eax,%ecx 287 movl 8(%esi),%eax 288 adcl %edx,%ebp 289 movl 20(%edi),%edx 290 adcl $0,%ebx 291 # mul a[2]*b[5] 292 mull %edx 293 addl %eax,%ecx 294 movl 4(%esi),%eax 295 adcl %edx,%ebp 296 movl 24(%edi),%edx 297 adcl $0,%ebx 298 # mul a[1]*b[6] 299 mull %edx 300 addl %eax,%ecx 301 movl (%esi),%eax 302 adcl %edx,%ebp 303 movl 28(%edi),%edx 304 adcl $0,%ebx 305 # mul a[0]*b[7] 306 mull %edx 307 addl %eax,%ecx 308 movl 20(%esp),%eax 309 adcl %edx,%ebp 310 movl 4(%edi),%edx 311 adcl $0,%ebx 312 movl %ecx,28(%eax) 313 movl 28(%esi),%eax 314 # saved r[7] 315 # ################## Calculate word 8 316 xorl %ecx,%ecx 317 # mul a[7]*b[1] 318 mull %edx 319 addl %eax,%ebp 320 movl 24(%esi),%eax 321 adcl %edx,%ebx 322 movl 8(%edi),%edx 323 adcl $0,%ecx 324 # mul a[6]*b[2] 325 mull %edx 326 addl %eax,%ebp 327 movl 20(%esi),%eax 328 adcl %edx,%ebx 329 movl 12(%edi),%edx 330 adcl $0,%ecx 331 # mul a[5]*b[3] 332 mull %edx 333 addl %eax,%ebp 334 movl 16(%esi),%eax 335 adcl %edx,%ebx 336 movl 16(%edi),%edx 337 adcl $0,%ecx 338 # mul a[4]*b[4] 339 mull %edx 340 addl %eax,%ebp 341 movl 12(%esi),%eax 342 adcl %edx,%ebx 343 movl 20(%edi),%edx 344 adcl $0,%ecx 345 # mul a[3]*b[5] 346 mull %edx 347 addl %eax,%ebp 348 movl 8(%esi),%eax 349 adcl %edx,%ebx 350 movl 24(%edi),%edx 351 adcl $0,%ecx 352 # mul a[2]*b[6] 353 mull %edx 354 addl %eax,%ebp 355 movl 4(%esi),%eax 356 adcl %edx,%ebx 357 movl 28(%edi),%edx 358 adcl $0,%ecx 359 # mul a[1]*b[7] 360 mull %edx 361 addl %eax,%ebp 362 movl 20(%esp),%eax 363 adcl %edx,%ebx 364 movl 8(%edi),%edx 365 adcl $0,%ecx 366 movl %ebp,32(%eax) 367 movl 28(%esi),%eax 368 # saved r[8] 369 # ################## Calculate word 9 370 xorl %ebp,%ebp 371 # mul a[7]*b[2] 372 mull %edx 373 addl %eax,%ebx 374 movl 24(%esi),%eax 375 adcl %edx,%ecx 376 movl 12(%edi),%edx 377 adcl $0,%ebp 378 # mul a[6]*b[3] 379 mull %edx 380 addl %eax,%ebx 381 movl 20(%esi),%eax 382 adcl %edx,%ecx 383 movl 16(%edi),%edx 384 adcl $0,%ebp 385 # mul a[5]*b[4] 386 mull %edx 387 addl %eax,%ebx 388 movl 16(%esi),%eax 389 adcl %edx,%ecx 390 movl 20(%edi),%edx 391 adcl $0,%ebp 392 # mul a[4]*b[5] 393 mull %edx 394 addl %eax,%ebx 395 movl 12(%esi),%eax 396 adcl %edx,%ecx 397 movl 24(%edi),%edx 398 adcl $0,%ebp 399 # mul a[3]*b[6] 400 mull %edx 401 addl %eax,%ebx 402 movl 8(%esi),%eax 403 adcl %edx,%ecx 404 movl 28(%edi),%edx 405 adcl $0,%ebp 406 # mul a[2]*b[7] 407 mull %edx 408 addl %eax,%ebx 409 movl 20(%esp),%eax 410 adcl %edx,%ecx 411 movl 12(%edi),%edx 412 adcl $0,%ebp 413 movl %ebx,36(%eax) 414 movl 28(%esi),%eax 415 # saved r[9] 416 # ################## Calculate word 10 417 xorl %ebx,%ebx 418 # mul a[7]*b[3] 419 mull %edx 420 addl %eax,%ecx 421 movl 24(%esi),%eax 422 adcl %edx,%ebp 423 movl 16(%edi),%edx 424 adcl $0,%ebx 425 # mul a[6]*b[4] 426 mull %edx 427 addl %eax,%ecx 428 movl 20(%esi),%eax 429 adcl %edx,%ebp 430 movl 20(%edi),%edx 431 adcl $0,%ebx 432 # mul a[5]*b[5] 433 mull %edx 434 addl %eax,%ecx 435 movl 16(%esi),%eax 436 adcl %edx,%ebp 437 movl 24(%edi),%edx 438 adcl $0,%ebx 439 # mul a[4]*b[6] 440 mull %edx 441 addl %eax,%ecx 442 movl 12(%esi),%eax 443 adcl %edx,%ebp 444 movl 28(%edi),%edx 445 adcl $0,%ebx 446 # mul a[3]*b[7] 447 mull %edx 448 addl %eax,%ecx 449 movl 20(%esp),%eax 450 adcl %edx,%ebp 451 movl 16(%edi),%edx 452 adcl $0,%ebx 453 movl %ecx,40(%eax) 454 movl 28(%esi),%eax 455 # saved r[10] 456 # ################## Calculate word 11 457 xorl %ecx,%ecx 458 # mul a[7]*b[4] 459 mull %edx 460 addl %eax,%ebp 461 movl 24(%esi),%eax 462 adcl %edx,%ebx 463 movl 20(%edi),%edx 464 adcl $0,%ecx 465 # mul a[6]*b[5] 466 mull %edx 467 addl %eax,%ebp 468 movl 20(%esi),%eax 469 adcl %edx,%ebx 470 movl 24(%edi),%edx 471 adcl $0,%ecx 472 # mul a[5]*b[6] 473 mull %edx 474 addl %eax,%ebp 475 movl 16(%esi),%eax 476 adcl %edx,%ebx 477 movl 28(%edi),%edx 478 adcl $0,%ecx 479 # mul a[4]*b[7] 480 mull %edx 481 addl %eax,%ebp 482 movl 20(%esp),%eax 483 adcl %edx,%ebx 484 movl 20(%edi),%edx 485 adcl $0,%ecx 486 movl %ebp,44(%eax) 487 movl 28(%esi),%eax 488 # saved r[11] 489 # ################## Calculate word 12 490 xorl %ebp,%ebp 491 # mul a[7]*b[5] 492 mull %edx 493 addl %eax,%ebx 494 movl 24(%esi),%eax 495 adcl %edx,%ecx 496 movl 24(%edi),%edx 497 adcl $0,%ebp 498 # mul a[6]*b[6] 499 mull %edx 500 addl %eax,%ebx 501 movl 20(%esi),%eax 502 adcl %edx,%ecx 503 movl 28(%edi),%edx 504 adcl $0,%ebp 505 # mul a[5]*b[7] 506 mull %edx 507 addl %eax,%ebx 508 movl 20(%esp),%eax 509 adcl %edx,%ecx 510 movl 24(%edi),%edx 511 adcl $0,%ebp 512 movl %ebx,48(%eax) 513 movl 28(%esi),%eax 514 # saved r[12] 515 # ################## Calculate word 13 516 xorl %ebx,%ebx 517 # mul a[7]*b[6] 518 mull %edx 519 addl %eax,%ecx 520 movl 24(%esi),%eax 521 adcl %edx,%ebp 522 movl 28(%edi),%edx 523 adcl $0,%ebx 524 # mul a[6]*b[7] 525 mull %edx 526 addl %eax,%ecx 527 movl 20(%esp),%eax 528 adcl %edx,%ebp 529 movl 28(%edi),%edx 530 adcl $0,%ebx 531 movl %ecx,52(%eax) 532 movl 28(%esi),%eax 533 # saved r[13] 534 # ################## Calculate word 14 535 xorl %ecx,%ecx 536 # mul a[7]*b[7] 537 mull %edx 538 addl %eax,%ebp 539 movl 20(%esp),%eax 540 adcl %edx,%ebx 541 adcl $0,%ecx 542 movl %ebp,56(%eax) 543 # saved r[14] 544 # save r[15] 545 movl %ebx,60(%eax) 546 popl %ebx 547 popl %ebp 548 popl %edi 549 popl %esi 550 ret 551.globl _bn_mul_comba4 552.private_extern _bn_mul_comba4 553.align 4 554_bn_mul_comba4: 555L_bn_mul_comba4_begin: 556 pushl %esi 557 movl 12(%esp),%esi 558 pushl %edi 559 movl 20(%esp),%edi 560 pushl %ebp 561 pushl %ebx 562 xorl %ebx,%ebx 563 movl (%esi),%eax 564 xorl %ecx,%ecx 565 movl (%edi),%edx 566 # ################## Calculate word 0 567 xorl %ebp,%ebp 568 # mul a[0]*b[0] 569 mull %edx 570 addl %eax,%ebx 571 movl 20(%esp),%eax 572 adcl %edx,%ecx 573 movl (%edi),%edx 574 adcl $0,%ebp 575 movl %ebx,(%eax) 576 movl 4(%esi),%eax 577 # saved r[0] 578 # ################## Calculate word 1 579 xorl %ebx,%ebx 580 # mul a[1]*b[0] 581 mull %edx 582 addl %eax,%ecx 583 movl (%esi),%eax 584 adcl %edx,%ebp 585 movl 4(%edi),%edx 586 adcl $0,%ebx 587 # mul a[0]*b[1] 588 mull %edx 589 addl %eax,%ecx 590 movl 20(%esp),%eax 591 adcl %edx,%ebp 592 movl (%edi),%edx 593 adcl $0,%ebx 594 movl %ecx,4(%eax) 595 movl 8(%esi),%eax 596 # saved r[1] 597 # ################## Calculate word 2 598 xorl %ecx,%ecx 599 # mul a[2]*b[0] 600 mull %edx 601 addl %eax,%ebp 602 movl 4(%esi),%eax 603 adcl %edx,%ebx 604 movl 4(%edi),%edx 605 adcl $0,%ecx 606 # mul a[1]*b[1] 607 mull %edx 608 addl %eax,%ebp 609 movl (%esi),%eax 610 adcl %edx,%ebx 611 movl 8(%edi),%edx 612 adcl $0,%ecx 613 # mul a[0]*b[2] 614 mull %edx 615 addl %eax,%ebp 616 movl 20(%esp),%eax 617 adcl %edx,%ebx 618 movl (%edi),%edx 619 adcl $0,%ecx 620 movl %ebp,8(%eax) 621 movl 12(%esi),%eax 622 # saved r[2] 623 # ################## Calculate word 3 624 xorl %ebp,%ebp 625 # mul a[3]*b[0] 626 mull %edx 627 addl %eax,%ebx 628 movl 8(%esi),%eax 629 adcl %edx,%ecx 630 movl 4(%edi),%edx 631 adcl $0,%ebp 632 # mul a[2]*b[1] 633 mull %edx 634 addl %eax,%ebx 635 movl 4(%esi),%eax 636 adcl %edx,%ecx 637 movl 8(%edi),%edx 638 adcl $0,%ebp 639 # mul a[1]*b[2] 640 mull %edx 641 addl %eax,%ebx 642 movl (%esi),%eax 643 adcl %edx,%ecx 644 movl 12(%edi),%edx 645 adcl $0,%ebp 646 # mul a[0]*b[3] 647 mull %edx 648 addl %eax,%ebx 649 movl 20(%esp),%eax 650 adcl %edx,%ecx 651 movl 4(%edi),%edx 652 adcl $0,%ebp 653 movl %ebx,12(%eax) 654 movl 12(%esi),%eax 655 # saved r[3] 656 # ################## Calculate word 4 657 xorl %ebx,%ebx 658 # mul a[3]*b[1] 659 mull %edx 660 addl %eax,%ecx 661 movl 8(%esi),%eax 662 adcl %edx,%ebp 663 movl 8(%edi),%edx 664 adcl $0,%ebx 665 # mul a[2]*b[2] 666 mull %edx 667 addl %eax,%ecx 668 movl 4(%esi),%eax 669 adcl %edx,%ebp 670 movl 12(%edi),%edx 671 adcl $0,%ebx 672 # mul a[1]*b[3] 673 mull %edx 674 addl %eax,%ecx 675 movl 20(%esp),%eax 676 adcl %edx,%ebp 677 movl 8(%edi),%edx 678 adcl $0,%ebx 679 movl %ecx,16(%eax) 680 movl 12(%esi),%eax 681 # saved r[4] 682 # ################## Calculate word 5 683 xorl %ecx,%ecx 684 # mul a[3]*b[2] 685 mull %edx 686 addl %eax,%ebp 687 movl 8(%esi),%eax 688 adcl %edx,%ebx 689 movl 12(%edi),%edx 690 adcl $0,%ecx 691 # mul a[2]*b[3] 692 mull %edx 693 addl %eax,%ebp 694 movl 20(%esp),%eax 695 adcl %edx,%ebx 696 movl 12(%edi),%edx 697 adcl $0,%ecx 698 movl %ebp,20(%eax) 699 movl 12(%esi),%eax 700 # saved r[5] 701 # ################## Calculate word 6 702 xorl %ebp,%ebp 703 # mul a[3]*b[3] 704 mull %edx 705 addl %eax,%ebx 706 movl 20(%esp),%eax 707 adcl %edx,%ecx 708 adcl $0,%ebp 709 movl %ebx,24(%eax) 710 # saved r[6] 711 # save r[7] 712 movl %ecx,28(%eax) 713 popl %ebx 714 popl %ebp 715 popl %edi 716 popl %esi 717 ret 718.globl _bn_sqr_comba8 719.private_extern _bn_sqr_comba8 720.align 4 721_bn_sqr_comba8: 722L_bn_sqr_comba8_begin: 723 pushl %esi 724 pushl %edi 725 pushl %ebp 726 pushl %ebx 727 movl 20(%esp),%edi 728 movl 24(%esp),%esi 729 xorl %ebx,%ebx 730 xorl %ecx,%ecx 731 movl (%esi),%eax 732 # ############### Calculate word 0 733 xorl %ebp,%ebp 734 # sqr a[0]*a[0] 735 mull %eax 736 addl %eax,%ebx 737 adcl %edx,%ecx 738 movl (%esi),%edx 739 adcl $0,%ebp 740 movl %ebx,(%edi) 741 movl 4(%esi),%eax 742 # saved r[0] 743 # ############### Calculate word 1 744 xorl %ebx,%ebx 745 # sqr a[1]*a[0] 746 mull %edx 747 addl %eax,%eax 748 adcl %edx,%edx 749 adcl $0,%ebx 750 addl %eax,%ecx 751 adcl %edx,%ebp 752 movl 8(%esi),%eax 753 adcl $0,%ebx 754 movl %ecx,4(%edi) 755 movl (%esi),%edx 756 # saved r[1] 757 # ############### Calculate word 2 758 xorl %ecx,%ecx 759 # sqr a[2]*a[0] 760 mull %edx 761 addl %eax,%eax 762 adcl %edx,%edx 763 adcl $0,%ecx 764 addl %eax,%ebp 765 adcl %edx,%ebx 766 movl 4(%esi),%eax 767 adcl $0,%ecx 768 # sqr a[1]*a[1] 769 mull %eax 770 addl %eax,%ebp 771 adcl %edx,%ebx 772 movl (%esi),%edx 773 adcl $0,%ecx 774 movl %ebp,8(%edi) 775 movl 12(%esi),%eax 776 # saved r[2] 777 # ############### Calculate word 3 778 xorl %ebp,%ebp 779 # sqr a[3]*a[0] 780 mull %edx 781 addl %eax,%eax 782 adcl %edx,%edx 783 adcl $0,%ebp 784 addl %eax,%ebx 785 adcl %edx,%ecx 786 movl 8(%esi),%eax 787 adcl $0,%ebp 788 movl 4(%esi),%edx 789 # sqr a[2]*a[1] 790 mull %edx 791 addl %eax,%eax 792 adcl %edx,%edx 793 adcl $0,%ebp 794 addl %eax,%ebx 795 adcl %edx,%ecx 796 movl 16(%esi),%eax 797 adcl $0,%ebp 798 movl %ebx,12(%edi) 799 movl (%esi),%edx 800 # saved r[3] 801 # ############### Calculate word 4 802 xorl %ebx,%ebx 803 # sqr a[4]*a[0] 804 mull %edx 805 addl %eax,%eax 806 adcl %edx,%edx 807 adcl $0,%ebx 808 addl %eax,%ecx 809 adcl %edx,%ebp 810 movl 12(%esi),%eax 811 adcl $0,%ebx 812 movl 4(%esi),%edx 813 # sqr a[3]*a[1] 814 mull %edx 815 addl %eax,%eax 816 adcl %edx,%edx 817 adcl $0,%ebx 818 addl %eax,%ecx 819 adcl %edx,%ebp 820 movl 8(%esi),%eax 821 adcl $0,%ebx 822 # sqr a[2]*a[2] 823 mull %eax 824 addl %eax,%ecx 825 adcl %edx,%ebp 826 movl (%esi),%edx 827 adcl $0,%ebx 828 movl %ecx,16(%edi) 829 movl 20(%esi),%eax 830 # saved r[4] 831 # ############### Calculate word 5 832 xorl %ecx,%ecx 833 # sqr a[5]*a[0] 834 mull %edx 835 addl %eax,%eax 836 adcl %edx,%edx 837 adcl $0,%ecx 838 addl %eax,%ebp 839 adcl %edx,%ebx 840 movl 16(%esi),%eax 841 adcl $0,%ecx 842 movl 4(%esi),%edx 843 # sqr a[4]*a[1] 844 mull %edx 845 addl %eax,%eax 846 adcl %edx,%edx 847 adcl $0,%ecx 848 addl %eax,%ebp 849 adcl %edx,%ebx 850 movl 12(%esi),%eax 851 adcl $0,%ecx 852 movl 8(%esi),%edx 853 # sqr a[3]*a[2] 854 mull %edx 855 addl %eax,%eax 856 adcl %edx,%edx 857 adcl $0,%ecx 858 addl %eax,%ebp 859 adcl %edx,%ebx 860 movl 24(%esi),%eax 861 adcl $0,%ecx 862 movl %ebp,20(%edi) 863 movl (%esi),%edx 864 # saved r[5] 865 # ############### Calculate word 6 866 xorl %ebp,%ebp 867 # sqr a[6]*a[0] 868 mull %edx 869 addl %eax,%eax 870 adcl %edx,%edx 871 adcl $0,%ebp 872 addl %eax,%ebx 873 adcl %edx,%ecx 874 movl 20(%esi),%eax 875 adcl $0,%ebp 876 movl 4(%esi),%edx 877 # sqr a[5]*a[1] 878 mull %edx 879 addl %eax,%eax 880 adcl %edx,%edx 881 adcl $0,%ebp 882 addl %eax,%ebx 883 adcl %edx,%ecx 884 movl 16(%esi),%eax 885 adcl $0,%ebp 886 movl 8(%esi),%edx 887 # sqr a[4]*a[2] 888 mull %edx 889 addl %eax,%eax 890 adcl %edx,%edx 891 adcl $0,%ebp 892 addl %eax,%ebx 893 adcl %edx,%ecx 894 movl 12(%esi),%eax 895 adcl $0,%ebp 896 # sqr a[3]*a[3] 897 mull %eax 898 addl %eax,%ebx 899 adcl %edx,%ecx 900 movl (%esi),%edx 901 adcl $0,%ebp 902 movl %ebx,24(%edi) 903 movl 28(%esi),%eax 904 # saved r[6] 905 # ############### Calculate word 7 906 xorl %ebx,%ebx 907 # sqr a[7]*a[0] 908 mull %edx 909 addl %eax,%eax 910 adcl %edx,%edx 911 adcl $0,%ebx 912 addl %eax,%ecx 913 adcl %edx,%ebp 914 movl 24(%esi),%eax 915 adcl $0,%ebx 916 movl 4(%esi),%edx 917 # sqr a[6]*a[1] 918 mull %edx 919 addl %eax,%eax 920 adcl %edx,%edx 921 adcl $0,%ebx 922 addl %eax,%ecx 923 adcl %edx,%ebp 924 movl 20(%esi),%eax 925 adcl $0,%ebx 926 movl 8(%esi),%edx 927 # sqr a[5]*a[2] 928 mull %edx 929 addl %eax,%eax 930 adcl %edx,%edx 931 adcl $0,%ebx 932 addl %eax,%ecx 933 adcl %edx,%ebp 934 movl 16(%esi),%eax 935 adcl $0,%ebx 936 movl 12(%esi),%edx 937 # sqr a[4]*a[3] 938 mull %edx 939 addl %eax,%eax 940 adcl %edx,%edx 941 adcl $0,%ebx 942 addl %eax,%ecx 943 adcl %edx,%ebp 944 movl 28(%esi),%eax 945 adcl $0,%ebx 946 movl %ecx,28(%edi) 947 movl 4(%esi),%edx 948 # saved r[7] 949 # ############### Calculate word 8 950 xorl %ecx,%ecx 951 # sqr a[7]*a[1] 952 mull %edx 953 addl %eax,%eax 954 adcl %edx,%edx 955 adcl $0,%ecx 956 addl %eax,%ebp 957 adcl %edx,%ebx 958 movl 24(%esi),%eax 959 adcl $0,%ecx 960 movl 8(%esi),%edx 961 # sqr a[6]*a[2] 962 mull %edx 963 addl %eax,%eax 964 adcl %edx,%edx 965 adcl $0,%ecx 966 addl %eax,%ebp 967 adcl %edx,%ebx 968 movl 20(%esi),%eax 969 adcl $0,%ecx 970 movl 12(%esi),%edx 971 # sqr a[5]*a[3] 972 mull %edx 973 addl %eax,%eax 974 adcl %edx,%edx 975 adcl $0,%ecx 976 addl %eax,%ebp 977 adcl %edx,%ebx 978 movl 16(%esi),%eax 979 adcl $0,%ecx 980 # sqr a[4]*a[4] 981 mull %eax 982 addl %eax,%ebp 983 adcl %edx,%ebx 984 movl 8(%esi),%edx 985 adcl $0,%ecx 986 movl %ebp,32(%edi) 987 movl 28(%esi),%eax 988 # saved r[8] 989 # ############### Calculate word 9 990 xorl %ebp,%ebp 991 # sqr a[7]*a[2] 992 mull %edx 993 addl %eax,%eax 994 adcl %edx,%edx 995 adcl $0,%ebp 996 addl %eax,%ebx 997 adcl %edx,%ecx 998 movl 24(%esi),%eax 999 adcl $0,%ebp 1000 movl 12(%esi),%edx 1001 # sqr a[6]*a[3] 1002 mull %edx 1003 addl %eax,%eax 1004 adcl %edx,%edx 1005 adcl $0,%ebp 1006 addl %eax,%ebx 1007 adcl %edx,%ecx 1008 movl 20(%esi),%eax 1009 adcl $0,%ebp 1010 movl 16(%esi),%edx 1011 # sqr a[5]*a[4] 1012 mull %edx 1013 addl %eax,%eax 1014 adcl %edx,%edx 1015 adcl $0,%ebp 1016 addl %eax,%ebx 1017 adcl %edx,%ecx 1018 movl 28(%esi),%eax 1019 adcl $0,%ebp 1020 movl %ebx,36(%edi) 1021 movl 12(%esi),%edx 1022 # saved r[9] 1023 # ############### Calculate word 10 1024 xorl %ebx,%ebx 1025 # sqr a[7]*a[3] 1026 mull %edx 1027 addl %eax,%eax 1028 adcl %edx,%edx 1029 adcl $0,%ebx 1030 addl %eax,%ecx 1031 adcl %edx,%ebp 1032 movl 24(%esi),%eax 1033 adcl $0,%ebx 1034 movl 16(%esi),%edx 1035 # sqr a[6]*a[4] 1036 mull %edx 1037 addl %eax,%eax 1038 adcl %edx,%edx 1039 adcl $0,%ebx 1040 addl %eax,%ecx 1041 adcl %edx,%ebp 1042 movl 20(%esi),%eax 1043 adcl $0,%ebx 1044 # sqr a[5]*a[5] 1045 mull %eax 1046 addl %eax,%ecx 1047 adcl %edx,%ebp 1048 movl 16(%esi),%edx 1049 adcl $0,%ebx 1050 movl %ecx,40(%edi) 1051 movl 28(%esi),%eax 1052 # saved r[10] 1053 # ############### Calculate word 11 1054 xorl %ecx,%ecx 1055 # sqr a[7]*a[4] 1056 mull %edx 1057 addl %eax,%eax 1058 adcl %edx,%edx 1059 adcl $0,%ecx 1060 addl %eax,%ebp 1061 adcl %edx,%ebx 1062 movl 24(%esi),%eax 1063 adcl $0,%ecx 1064 movl 20(%esi),%edx 1065 # sqr a[6]*a[5] 1066 mull %edx 1067 addl %eax,%eax 1068 adcl %edx,%edx 1069 adcl $0,%ecx 1070 addl %eax,%ebp 1071 adcl %edx,%ebx 1072 movl 28(%esi),%eax 1073 adcl $0,%ecx 1074 movl %ebp,44(%edi) 1075 movl 20(%esi),%edx 1076 # saved r[11] 1077 # ############### Calculate word 12 1078 xorl %ebp,%ebp 1079 # sqr a[7]*a[5] 1080 mull %edx 1081 addl %eax,%eax 1082 adcl %edx,%edx 1083 adcl $0,%ebp 1084 addl %eax,%ebx 1085 adcl %edx,%ecx 1086 movl 24(%esi),%eax 1087 adcl $0,%ebp 1088 # sqr a[6]*a[6] 1089 mull %eax 1090 addl %eax,%ebx 1091 adcl %edx,%ecx 1092 movl 24(%esi),%edx 1093 adcl $0,%ebp 1094 movl %ebx,48(%edi) 1095 movl 28(%esi),%eax 1096 # saved r[12] 1097 # ############### Calculate word 13 1098 xorl %ebx,%ebx 1099 # sqr a[7]*a[6] 1100 mull %edx 1101 addl %eax,%eax 1102 adcl %edx,%edx 1103 adcl $0,%ebx 1104 addl %eax,%ecx 1105 adcl %edx,%ebp 1106 movl 28(%esi),%eax 1107 adcl $0,%ebx 1108 movl %ecx,52(%edi) 1109 # saved r[13] 1110 # ############### Calculate word 14 1111 xorl %ecx,%ecx 1112 # sqr a[7]*a[7] 1113 mull %eax 1114 addl %eax,%ebp 1115 adcl %edx,%ebx 1116 adcl $0,%ecx 1117 movl %ebp,56(%edi) 1118 # saved r[14] 1119 movl %ebx,60(%edi) 1120 popl %ebx 1121 popl %ebp 1122 popl %edi 1123 popl %esi 1124 ret 1125.globl _bn_sqr_comba4 1126.private_extern _bn_sqr_comba4 1127.align 4 1128_bn_sqr_comba4: 1129L_bn_sqr_comba4_begin: 1130 pushl %esi 1131 pushl %edi 1132 pushl %ebp 1133 pushl %ebx 1134 movl 20(%esp),%edi 1135 movl 24(%esp),%esi 1136 xorl %ebx,%ebx 1137 xorl %ecx,%ecx 1138 movl (%esi),%eax 1139 # ############### Calculate word 0 1140 xorl %ebp,%ebp 1141 # sqr a[0]*a[0] 1142 mull %eax 1143 addl %eax,%ebx 1144 adcl %edx,%ecx 1145 movl (%esi),%edx 1146 adcl $0,%ebp 1147 movl %ebx,(%edi) 1148 movl 4(%esi),%eax 1149 # saved r[0] 1150 # ############### Calculate word 1 1151 xorl %ebx,%ebx 1152 # sqr a[1]*a[0] 1153 mull %edx 1154 addl %eax,%eax 1155 adcl %edx,%edx 1156 adcl $0,%ebx 1157 addl %eax,%ecx 1158 adcl %edx,%ebp 1159 movl 8(%esi),%eax 1160 adcl $0,%ebx 1161 movl %ecx,4(%edi) 1162 movl (%esi),%edx 1163 # saved r[1] 1164 # ############### Calculate word 2 1165 xorl %ecx,%ecx 1166 # sqr a[2]*a[0] 1167 mull %edx 1168 addl %eax,%eax 1169 adcl %edx,%edx 1170 adcl $0,%ecx 1171 addl %eax,%ebp 1172 adcl %edx,%ebx 1173 movl 4(%esi),%eax 1174 adcl $0,%ecx 1175 # sqr a[1]*a[1] 1176 mull %eax 1177 addl %eax,%ebp 1178 adcl %edx,%ebx 1179 movl (%esi),%edx 1180 adcl $0,%ecx 1181 movl %ebp,8(%edi) 1182 movl 12(%esi),%eax 1183 # saved r[2] 1184 # ############### Calculate word 3 1185 xorl %ebp,%ebp 1186 # sqr a[3]*a[0] 1187 mull %edx 1188 addl %eax,%eax 1189 adcl %edx,%edx 1190 adcl $0,%ebp 1191 addl %eax,%ebx 1192 adcl %edx,%ecx 1193 movl 8(%esi),%eax 1194 adcl $0,%ebp 1195 movl 4(%esi),%edx 1196 # sqr a[2]*a[1] 1197 mull %edx 1198 addl %eax,%eax 1199 adcl %edx,%edx 1200 adcl $0,%ebp 1201 addl %eax,%ebx 1202 adcl %edx,%ecx 1203 movl 12(%esi),%eax 1204 adcl $0,%ebp 1205 movl %ebx,12(%edi) 1206 movl 4(%esi),%edx 1207 # saved r[3] 1208 # ############### Calculate word 4 1209 xorl %ebx,%ebx 1210 # sqr a[3]*a[1] 1211 mull %edx 1212 addl %eax,%eax 1213 adcl %edx,%edx 1214 adcl $0,%ebx 1215 addl %eax,%ecx 1216 adcl %edx,%ebp 1217 movl 8(%esi),%eax 1218 adcl $0,%ebx 1219 # sqr a[2]*a[2] 1220 mull %eax 1221 addl %eax,%ecx 1222 adcl %edx,%ebp 1223 movl 8(%esi),%edx 1224 adcl $0,%ebx 1225 movl %ecx,16(%edi) 1226 movl 12(%esi),%eax 1227 # saved r[4] 1228 # ############### Calculate word 5 1229 xorl %ecx,%ecx 1230 # sqr a[3]*a[2] 1231 mull %edx 1232 addl %eax,%eax 1233 adcl %edx,%edx 1234 adcl $0,%ecx 1235 addl %eax,%ebp 1236 adcl %edx,%ebx 1237 movl 12(%esi),%eax 1238 adcl $0,%ecx 1239 movl %ebp,20(%edi) 1240 # saved r[5] 1241 # ############### Calculate word 6 1242 xorl %ebp,%ebp 1243 # sqr a[3]*a[3] 1244 mull %eax 1245 addl %eax,%ebx 1246 adcl %edx,%ecx 1247 adcl $0,%ebp 1248 movl %ebx,24(%edi) 1249 # saved r[6] 1250 movl %ecx,28(%edi) 1251 popl %ebx 1252 popl %ebp 1253 popl %edi 1254 popl %esi 1255 ret 1256#endif // !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__APPLE__) 1257