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