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