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