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