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