1.machine "any" 2 3.text 4 5.align 7 6rcon: 7.byte 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00 8.byte 0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00 9.byte 0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c 10.byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 11.Lconsts: 12 mflr 0 13 bcl 20,31,$+4 14 mflr 6 15 addi 6,6,-0x48 16 mtlr 0 17 blr 18.long 0 19.byte 0,12,0x14,0,0,0,0,0 20.byte 65,69,83,32,102,111,114,32,80,111,119,101,114,73,83,65,32,50,46,48,55,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 21.align 2 22 23.globl aes_p8_set_encrypt_key 24.type aes_p8_set_encrypt_key,@function 25.align 5 26aes_p8_set_encrypt_key: 27.Lset_encrypt_key: 28 mflr 11 29 stw 11,4(1) 30 31 li 6,-1 32 cmplwi 3,0 33 beq- .Lenc_key_abort 34 cmplwi 5,0 35 beq- .Lenc_key_abort 36 li 6,-2 37 cmpwi 4,128 38 blt- .Lenc_key_abort 39 cmpwi 4,256 40 bgt- .Lenc_key_abort 41 andi. 0,4,0x3f 42 bne- .Lenc_key_abort 43 44 lis 0,0xfff0 45 mfspr 12,256 46 mtspr 256,0 47 48 bl .Lconsts 49 mtlr 11 50 51 neg 9,3 52 lvx 1,0,3 53 addi 3,3,15 54 lvsr 3,0,9 55 li 8,0x20 56 cmpwi 4,192 57 lvx 2,0,3 58 59 lvx 4,0,6 60 61 lvx 5,8,6 62 addi 6,6,0x10 63 vperm 1,1,2,3 64 li 7,8 65 vxor 0,0,0 66 mtctr 7 67 68 lvsr 8,0,5 69 vspltisb 9,-1 70 lvx 10,0,5 71 vperm 9,0,9,8 72 73 blt .Loop128 74 addi 3,3,8 75 beq .L192 76 addi 3,3,8 77 b .L256 78 79.align 4 80.Loop128: 81 vperm 3,1,1,5 82 vsldoi 6,0,1,12 83 vperm 11,1,1,8 84 vsel 7,10,11,9 85 vor 10,11,11 86.long 0x10632509 87 stvx 7,0,5 88 addi 5,5,16 89 90 vxor 1,1,6 91 vsldoi 6,0,6,12 92 vxor 1,1,6 93 vsldoi 6,0,6,12 94 vxor 1,1,6 95 vadduwm 4,4,4 96 vxor 1,1,3 97 bc 16,0,.Loop128 98 99 lvx 4,0,6 100 101 vperm 3,1,1,5 102 vsldoi 6,0,1,12 103 vperm 11,1,1,8 104 vsel 7,10,11,9 105 vor 10,11,11 106.long 0x10632509 107 stvx 7,0,5 108 addi 5,5,16 109 110 vxor 1,1,6 111 vsldoi 6,0,6,12 112 vxor 1,1,6 113 vsldoi 6,0,6,12 114 vxor 1,1,6 115 vadduwm 4,4,4 116 vxor 1,1,3 117 118 vperm 3,1,1,5 119 vsldoi 6,0,1,12 120 vperm 11,1,1,8 121 vsel 7,10,11,9 122 vor 10,11,11 123.long 0x10632509 124 stvx 7,0,5 125 addi 5,5,16 126 127 vxor 1,1,6 128 vsldoi 6,0,6,12 129 vxor 1,1,6 130 vsldoi 6,0,6,12 131 vxor 1,1,6 132 vxor 1,1,3 133 vperm 11,1,1,8 134 vsel 7,10,11,9 135 vor 10,11,11 136 stvx 7,0,5 137 138 addi 3,5,15 139 addi 5,5,0x50 140 141 li 8,10 142 b .Ldone 143 144.align 4 145.L192: 146 lvx 6,0,3 147 li 7,4 148 vperm 11,1,1,8 149 vsel 7,10,11,9 150 vor 10,11,11 151 stvx 7,0,5 152 addi 5,5,16 153 vperm 2,2,6,3 154 vspltisb 3,8 155 mtctr 7 156 vsububm 5,5,3 157 158.Loop192: 159 vperm 3,2,2,5 160 vsldoi 6,0,1,12 161.long 0x10632509 162 163 vxor 1,1,6 164 vsldoi 6,0,6,12 165 vxor 1,1,6 166 vsldoi 6,0,6,12 167 vxor 1,1,6 168 169 vsldoi 7,0,2,8 170 vspltw 6,1,3 171 vxor 6,6,2 172 vsldoi 2,0,2,12 173 vadduwm 4,4,4 174 vxor 2,2,6 175 vxor 1,1,3 176 vxor 2,2,3 177 vsldoi 7,7,1,8 178 179 vperm 3,2,2,5 180 vsldoi 6,0,1,12 181 vperm 11,7,7,8 182 vsel 7,10,11,9 183 vor 10,11,11 184.long 0x10632509 185 stvx 7,0,5 186 addi 5,5,16 187 188 vsldoi 7,1,2,8 189 vxor 1,1,6 190 vsldoi 6,0,6,12 191 vperm 11,7,7,8 192 vsel 7,10,11,9 193 vor 10,11,11 194 vxor 1,1,6 195 vsldoi 6,0,6,12 196 vxor 1,1,6 197 stvx 7,0,5 198 addi 5,5,16 199 200 vspltw 6,1,3 201 vxor 6,6,2 202 vsldoi 2,0,2,12 203 vadduwm 4,4,4 204 vxor 2,2,6 205 vxor 1,1,3 206 vxor 2,2,3 207 vperm 11,1,1,8 208 vsel 7,10,11,9 209 vor 10,11,11 210 stvx 7,0,5 211 addi 3,5,15 212 addi 5,5,16 213 bc 16,0,.Loop192 214 215 li 8,12 216 addi 5,5,0x20 217 b .Ldone 218 219.align 4 220.L256: 221 lvx 6,0,3 222 li 7,7 223 li 8,14 224 vperm 11,1,1,8 225 vsel 7,10,11,9 226 vor 10,11,11 227 stvx 7,0,5 228 addi 5,5,16 229 vperm 2,2,6,3 230 mtctr 7 231 232.Loop256: 233 vperm 3,2,2,5 234 vsldoi 6,0,1,12 235 vperm 11,2,2,8 236 vsel 7,10,11,9 237 vor 10,11,11 238.long 0x10632509 239 stvx 7,0,5 240 addi 5,5,16 241 242 vxor 1,1,6 243 vsldoi 6,0,6,12 244 vxor 1,1,6 245 vsldoi 6,0,6,12 246 vxor 1,1,6 247 vadduwm 4,4,4 248 vxor 1,1,3 249 vperm 11,1,1,8 250 vsel 7,10,11,9 251 vor 10,11,11 252 stvx 7,0,5 253 addi 3,5,15 254 addi 5,5,16 255 bdz .Ldone 256 257 vspltw 3,1,3 258 vsldoi 6,0,2,12 259.long 0x106305C8 260 261 vxor 2,2,6 262 vsldoi 6,0,6,12 263 vxor 2,2,6 264 vsldoi 6,0,6,12 265 vxor 2,2,6 266 267 vxor 2,2,3 268 b .Loop256 269 270.align 4 271.Ldone: 272 lvx 2,0,3 273 vsel 2,10,2,9 274 stvx 2,0,3 275 li 6,0 276 mtspr 256,12 277 stw 8,0(5) 278 279.Lenc_key_abort: 280 mr 3,6 281 blr 282.long 0 283.byte 0,12,0x14,1,0,0,3,0 284.long 0 285 286 287.globl aes_p8_set_decrypt_key 288.type aes_p8_set_decrypt_key,@function 289.align 5 290aes_p8_set_decrypt_key: 291 stwu 1,-32(1) 292 mflr 10 293 stw 10,32+4(1) 294 bl .Lset_encrypt_key 295 mtlr 10 296 297 cmpwi 3,0 298 bne- .Ldec_key_abort 299 300 slwi 7,8,4 301 subi 3,5,240 302 srwi 8,8,1 303 add 5,3,7 304 mtctr 8 305 306.Ldeckey: 307 lwz 0, 0(3) 308 lwz 6, 4(3) 309 lwz 7, 8(3) 310 lwz 8, 12(3) 311 addi 3,3,16 312 lwz 9, 0(5) 313 lwz 10,4(5) 314 lwz 11,8(5) 315 lwz 12,12(5) 316 stw 0, 0(5) 317 stw 6, 4(5) 318 stw 7, 8(5) 319 stw 8, 12(5) 320 subi 5,5,16 321 stw 9, -16(3) 322 stw 10,-12(3) 323 stw 11,-8(3) 324 stw 12,-4(3) 325 bc 16,0,.Ldeckey 326 327 xor 3,3,3 328.Ldec_key_abort: 329 addi 1,1,32 330 blr 331.long 0 332.byte 0,12,4,1,0x80,0,3,0 333.long 0 334 335.globl aes_p8_encrypt 336.type aes_p8_encrypt,@function 337.align 5 338aes_p8_encrypt: 339 lwz 6,240(5) 340 lis 0,0xfc00 341 mfspr 12,256 342 li 7,15 343 mtspr 256,0 344 345 lvx 0,0,3 346 neg 11,4 347 lvx 1,7,3 348 lvsl 2,0,3 349 350 lvsl 3,0,11 351 352 li 7,16 353 vperm 0,0,1,2 354 lvx 1,0,5 355 lvsl 5,0,5 356 srwi 6,6,1 357 lvx 2,7,5 358 addi 7,7,16 359 subi 6,6,1 360 vperm 1,1,2,5 361 362 vxor 0,0,1 363 lvx 1,7,5 364 addi 7,7,16 365 mtctr 6 366 367.Loop_enc: 368 vperm 2,2,1,5 369.long 0x10001508 370 lvx 2,7,5 371 addi 7,7,16 372 vperm 1,1,2,5 373.long 0x10000D08 374 lvx 1,7,5 375 addi 7,7,16 376 bc 16,0,.Loop_enc 377 378 vperm 2,2,1,5 379.long 0x10001508 380 lvx 2,7,5 381 vperm 1,1,2,5 382.long 0x10000D09 383 384 vspltisb 2,-1 385 vxor 1,1,1 386 li 7,15 387 vperm 2,1,2,3 388 389 lvx 1,0,4 390 vperm 0,0,0,3 391 vsel 1,1,0,2 392 lvx 4,7,4 393 stvx 1,0,4 394 vsel 0,0,4,2 395 stvx 0,7,4 396 397 mtspr 256,12 398 blr 399.long 0 400.byte 0,12,0x14,0,0,0,3,0 401.long 0 402 403.globl aes_p8_decrypt 404.type aes_p8_decrypt,@function 405.align 5 406aes_p8_decrypt: 407 lwz 6,240(5) 408 lis 0,0xfc00 409 mfspr 12,256 410 li 7,15 411 mtspr 256,0 412 413 lvx 0,0,3 414 neg 11,4 415 lvx 1,7,3 416 lvsl 2,0,3 417 418 lvsl 3,0,11 419 420 li 7,16 421 vperm 0,0,1,2 422 lvx 1,0,5 423 lvsl 5,0,5 424 srwi 6,6,1 425 lvx 2,7,5 426 addi 7,7,16 427 subi 6,6,1 428 vperm 1,1,2,5 429 430 vxor 0,0,1 431 lvx 1,7,5 432 addi 7,7,16 433 mtctr 6 434 435.Loop_dec: 436 vperm 2,2,1,5 437.long 0x10001548 438 lvx 2,7,5 439 addi 7,7,16 440 vperm 1,1,2,5 441.long 0x10000D48 442 lvx 1,7,5 443 addi 7,7,16 444 bc 16,0,.Loop_dec 445 446 vperm 2,2,1,5 447.long 0x10001548 448 lvx 2,7,5 449 vperm 1,1,2,5 450.long 0x10000D49 451 452 vspltisb 2,-1 453 vxor 1,1,1 454 li 7,15 455 vperm 2,1,2,3 456 457 lvx 1,0,4 458 vperm 0,0,0,3 459 vsel 1,1,0,2 460 lvx 4,7,4 461 stvx 1,0,4 462 vsel 0,0,4,2 463 stvx 0,7,4 464 465 mtspr 256,12 466 blr 467.long 0 468.byte 0,12,0x14,0,0,0,3,0 469.long 0 470 471.globl aes_p8_cbc_encrypt 472.type aes_p8_cbc_encrypt,@function 473.align 5 474aes_p8_cbc_encrypt: 475 cmplwi 5,16 476 bltlr 477 478 cmpwi 8,0 479 lis 0,0xffe0 480 mfspr 12,256 481 mtspr 256,0 482 483 li 10,15 484 vxor 0,0,0 485 486 487 lvx 4,0,7 488 lvsl 6,0,7 489 lvx 5,10,7 490 491 vperm 4,4,5,6 492 493 neg 11,3 494 lvsl 10,0,6 495 lwz 9,240(6) 496 497 lvsr 6,0,11 498 lvx 5,0,3 499 addi 3,3,15 500 501 502 lvsr 8,0,4 503 vspltisb 9,-1 504 lvx 7,0,4 505 vperm 9,0,9,8 506 507 508 srwi 9,9,1 509 li 10,16 510 subi 9,9,1 511 beq .Lcbc_dec 512 513.Lcbc_enc: 514 vor 2,5,5 515 lvx 5,0,3 516 addi 3,3,16 517 mtctr 9 518 subi 5,5,16 519 520 lvx 0,0,6 521 vperm 2,2,5,6 522 lvx 1,10,6 523 addi 10,10,16 524 vperm 0,0,1,10 525 vxor 2,2,0 526 lvx 0,10,6 527 addi 10,10,16 528 vxor 2,2,4 529 530.Loop_cbc_enc: 531 vperm 1,1,0,10 532.long 0x10420D08 533 lvx 1,10,6 534 addi 10,10,16 535 vperm 0,0,1,10 536.long 0x10420508 537 lvx 0,10,6 538 addi 10,10,16 539 bc 16,0,.Loop_cbc_enc 540 541 vperm 1,1,0,10 542.long 0x10420D08 543 lvx 1,10,6 544 li 10,16 545 vperm 0,0,1,10 546.long 0x10820509 547 cmplwi 5,16 548 549 vperm 3,4,4,8 550 vsel 2,7,3,9 551 vor 7,3,3 552 stvx 2,0,4 553 addi 4,4,16 554 bge .Lcbc_enc 555 556 b .Lcbc_done 557 558.align 4 559.Lcbc_dec: 560 cmplwi 5,128 561 bge _aesp8_cbc_decrypt8x 562 vor 3,5,5 563 lvx 5,0,3 564 addi 3,3,16 565 mtctr 9 566 subi 5,5,16 567 568 lvx 0,0,6 569 vperm 3,3,5,6 570 lvx 1,10,6 571 addi 10,10,16 572 vperm 0,0,1,10 573 vxor 2,3,0 574 lvx 0,10,6 575 addi 10,10,16 576 577.Loop_cbc_dec: 578 vperm 1,1,0,10 579.long 0x10420D48 580 lvx 1,10,6 581 addi 10,10,16 582 vperm 0,0,1,10 583.long 0x10420548 584 lvx 0,10,6 585 addi 10,10,16 586 bc 16,0,.Loop_cbc_dec 587 588 vperm 1,1,0,10 589.long 0x10420D48 590 lvx 1,10,6 591 li 10,16 592 vperm 0,0,1,10 593.long 0x10420549 594 cmplwi 5,16 595 596 vxor 2,2,4 597 vor 4,3,3 598 vperm 3,2,2,8 599 vsel 2,7,3,9 600 vor 7,3,3 601 stvx 2,0,4 602 addi 4,4,16 603 bge .Lcbc_dec 604 605.Lcbc_done: 606 addi 4,4,-1 607 lvx 2,0,4 608 vsel 2,7,2,9 609 stvx 2,0,4 610 611 neg 8,7 612 li 10,15 613 vxor 0,0,0 614 vspltisb 9,-1 615 616 lvsl 8,0,8 617 vperm 9,0,9,8 618 619 lvx 7,0,7 620 vperm 4,4,4,8 621 vsel 2,7,4,9 622 lvx 5,10,7 623 stvx 2,0,7 624 vsel 2,4,5,9 625 stvx 2,10,7 626 627 mtspr 256,12 628 blr 629.long 0 630.byte 0,12,0x14,0,0,0,6,0 631.long 0 632.align 5 633_aesp8_cbc_decrypt8x: 634 stwu 1,-392(1) 635 li 10,175 636 li 11,191 637 stvx 20,10,1 638 addi 10,10,32 639 stvx 21,11,1 640 addi 11,11,32 641 stvx 22,10,1 642 addi 10,10,32 643 stvx 23,11,1 644 addi 11,11,32 645 stvx 24,10,1 646 addi 10,10,32 647 stvx 25,11,1 648 addi 11,11,32 649 stvx 26,10,1 650 addi 10,10,32 651 stvx 27,11,1 652 addi 11,11,32 653 stvx 28,10,1 654 addi 10,10,32 655 stvx 29,11,1 656 addi 11,11,32 657 stvx 30,10,1 658 stvx 31,11,1 659 li 0,-1 660 stw 12,364(1) 661 li 8,0x10 662 stw 26,368(1) 663 li 26,0x20 664 stw 27,372(1) 665 li 27,0x30 666 stw 28,376(1) 667 li 28,0x40 668 stw 29,380(1) 669 li 29,0x50 670 stw 30,384(1) 671 li 30,0x60 672 stw 31,388(1) 673 li 31,0x70 674 mtspr 256,0 675 676 subi 9,9,3 677 subi 5,5,128 678 679 lvx 23,0,6 680 lvx 30,8,6 681 addi 6,6,0x20 682 lvx 31,0,6 683 vperm 23,23,30,10 684 addi 11,1,32+15 685 mtctr 9 686 687.Load_cbc_dec_key: 688 vperm 24,30,31,10 689 lvx 30,8,6 690 addi 6,6,0x20 691 stvx 24,0,11 692 vperm 25,31,30,10 693 lvx 31,0,6 694 stvx 25,8,11 695 addi 11,11,0x20 696 bc 16,0,.Load_cbc_dec_key 697 698 lvx 26,8,6 699 vperm 24,30,31,10 700 lvx 27,26,6 701 stvx 24,0,11 702 vperm 25,31,26,10 703 lvx 28,27,6 704 stvx 25,8,11 705 addi 11,1,32+15 706 vperm 26,26,27,10 707 lvx 29,28,6 708 vperm 27,27,28,10 709 lvx 30,29,6 710 vperm 28,28,29,10 711 lvx 31,30,6 712 vperm 29,29,30,10 713 lvx 14,31,6 714 vperm 30,30,31,10 715 lvx 24,0,11 716 vperm 31,31,14,10 717 lvx 25,8,11 718 719 720 721 subi 3,3,15 722 723 724.long 0x7C001E99 725 726 727.long 0x7C281E99 728 729.long 0x7C5A1E99 730 731.long 0x7C7B1E99 732 733.long 0x7D5C1E99 734 735 vxor 14,0,23 736.long 0x7D7D1E99 737 738 vxor 15,1,23 739.long 0x7D9E1E99 740 741 vxor 16,2,23 742.long 0x7DBF1E99 743 addi 3,3,0x80 744 745 vxor 17,3,23 746 747 vxor 18,10,23 748 749 vxor 19,11,23 750 vxor 20,12,23 751 vxor 21,13,23 752 753 mtctr 9 754 b .Loop_cbc_dec8x 755.align 5 756.Loop_cbc_dec8x: 757.long 0x11CEC548 758.long 0x11EFC548 759.long 0x1210C548 760.long 0x1231C548 761.long 0x1252C548 762.long 0x1273C548 763.long 0x1294C548 764.long 0x12B5C548 765 lvx 24,26,11 766 addi 11,11,0x20 767 768.long 0x11CECD48 769.long 0x11EFCD48 770.long 0x1210CD48 771.long 0x1231CD48 772.long 0x1252CD48 773.long 0x1273CD48 774.long 0x1294CD48 775.long 0x12B5CD48 776 lvx 25,8,11 777 bc 16,0,.Loop_cbc_dec8x 778 779 subic 5,5,128 780.long 0x11CEC548 781.long 0x11EFC548 782.long 0x1210C548 783.long 0x1231C548 784.long 0x1252C548 785.long 0x1273C548 786.long 0x1294C548 787.long 0x12B5C548 788 789 subfe. 0,0,0 790.long 0x11CECD48 791.long 0x11EFCD48 792.long 0x1210CD48 793.long 0x1231CD48 794.long 0x1252CD48 795.long 0x1273CD48 796.long 0x1294CD48 797.long 0x12B5CD48 798 799 and 0,0,5 800.long 0x11CED548 801.long 0x11EFD548 802.long 0x1210D548 803.long 0x1231D548 804.long 0x1252D548 805.long 0x1273D548 806.long 0x1294D548 807.long 0x12B5D548 808 809 add 3,3,0 810 811 812 813.long 0x11CEDD48 814.long 0x11EFDD48 815.long 0x1210DD48 816.long 0x1231DD48 817.long 0x1252DD48 818.long 0x1273DD48 819.long 0x1294DD48 820.long 0x12B5DD48 821 822 addi 11,1,32+15 823.long 0x11CEE548 824.long 0x11EFE548 825.long 0x1210E548 826.long 0x1231E548 827.long 0x1252E548 828.long 0x1273E548 829.long 0x1294E548 830.long 0x12B5E548 831 lvx 24,0,11 832 833.long 0x11CEED48 834.long 0x11EFED48 835.long 0x1210ED48 836.long 0x1231ED48 837.long 0x1252ED48 838.long 0x1273ED48 839.long 0x1294ED48 840.long 0x12B5ED48 841 lvx 25,8,11 842 843.long 0x11CEF548 844 vxor 4,4,31 845.long 0x11EFF548 846 vxor 0,0,31 847.long 0x1210F548 848 vxor 1,1,31 849.long 0x1231F548 850 vxor 2,2,31 851.long 0x1252F548 852 vxor 3,3,31 853.long 0x1273F548 854 vxor 10,10,31 855.long 0x1294F548 856 vxor 11,11,31 857.long 0x12B5F548 858 vxor 12,12,31 859 860.long 0x11CE2549 861.long 0x11EF0549 862.long 0x7C001E99 863.long 0x12100D49 864.long 0x7C281E99 865.long 0x12311549 866 867.long 0x7C5A1E99 868.long 0x12521D49 869 870.long 0x7C7B1E99 871.long 0x12735549 872 873.long 0x7D5C1E99 874.long 0x12945D49 875 876.long 0x7D7D1E99 877.long 0x12B56549 878 879.long 0x7D9E1E99 880 vor 4,13,13 881 882.long 0x7DBF1E99 883 addi 3,3,0x80 884 885 886 887.long 0x7DC02799 888 889 vxor 14,0,23 890 891.long 0x7DE82799 892 893 vxor 15,1,23 894 895.long 0x7E1A2799 896 vxor 16,2,23 897 898.long 0x7E3B2799 899 vxor 17,3,23 900 901.long 0x7E5C2799 902 vxor 18,10,23 903 904.long 0x7E7D2799 905 vxor 19,11,23 906 907.long 0x7E9E2799 908 vxor 20,12,23 909.long 0x7EBF2799 910 addi 4,4,0x80 911 vxor 21,13,23 912 913 mtctr 9 914 beq .Loop_cbc_dec8x 915 916 addic. 5,5,128 917 beq .Lcbc_dec8x_done 918 nop 919 nop 920 921.Loop_cbc_dec8x_tail: 922.long 0x11EFC548 923.long 0x1210C548 924.long 0x1231C548 925.long 0x1252C548 926.long 0x1273C548 927.long 0x1294C548 928.long 0x12B5C548 929 lvx 24,26,11 930 addi 11,11,0x20 931 932.long 0x11EFCD48 933.long 0x1210CD48 934.long 0x1231CD48 935.long 0x1252CD48 936.long 0x1273CD48 937.long 0x1294CD48 938.long 0x12B5CD48 939 lvx 25,8,11 940 bc 16,0,.Loop_cbc_dec8x_tail 941 942.long 0x11EFC548 943.long 0x1210C548 944.long 0x1231C548 945.long 0x1252C548 946.long 0x1273C548 947.long 0x1294C548 948.long 0x12B5C548 949 950.long 0x11EFCD48 951.long 0x1210CD48 952.long 0x1231CD48 953.long 0x1252CD48 954.long 0x1273CD48 955.long 0x1294CD48 956.long 0x12B5CD48 957 958.long 0x11EFD548 959.long 0x1210D548 960.long 0x1231D548 961.long 0x1252D548 962.long 0x1273D548 963.long 0x1294D548 964.long 0x12B5D548 965 966.long 0x11EFDD48 967.long 0x1210DD48 968.long 0x1231DD48 969.long 0x1252DD48 970.long 0x1273DD48 971.long 0x1294DD48 972.long 0x12B5DD48 973 974.long 0x11EFE548 975.long 0x1210E548 976.long 0x1231E548 977.long 0x1252E548 978.long 0x1273E548 979.long 0x1294E548 980.long 0x12B5E548 981 982.long 0x11EFED48 983.long 0x1210ED48 984.long 0x1231ED48 985.long 0x1252ED48 986.long 0x1273ED48 987.long 0x1294ED48 988.long 0x12B5ED48 989 990.long 0x11EFF548 991 vxor 4,4,31 992.long 0x1210F548 993 vxor 1,1,31 994.long 0x1231F548 995 vxor 2,2,31 996.long 0x1252F548 997 vxor 3,3,31 998.long 0x1273F548 999 vxor 10,10,31 1000.long 0x1294F548 1001 vxor 11,11,31 1002.long 0x12B5F548 1003 vxor 12,12,31 1004 1005 cmplwi 5,32 1006 blt .Lcbc_dec8x_one 1007 nop 1008 beq .Lcbc_dec8x_two 1009 cmplwi 5,64 1010 blt .Lcbc_dec8x_three 1011 nop 1012 beq .Lcbc_dec8x_four 1013 cmplwi 5,96 1014 blt .Lcbc_dec8x_five 1015 nop 1016 beq .Lcbc_dec8x_six 1017 1018.Lcbc_dec8x_seven: 1019.long 0x11EF2549 1020.long 0x12100D49 1021.long 0x12311549 1022.long 0x12521D49 1023.long 0x12735549 1024.long 0x12945D49 1025.long 0x12B56549 1026 vor 4,13,13 1027 1028 1029 1030.long 0x7DE02799 1031 1032.long 0x7E082799 1033 1034.long 0x7E3A2799 1035 1036.long 0x7E5B2799 1037 1038.long 0x7E7C2799 1039 1040.long 0x7E9D2799 1041.long 0x7EBE2799 1042 addi 4,4,0x70 1043 b .Lcbc_dec8x_done 1044 1045.align 5 1046.Lcbc_dec8x_six: 1047.long 0x12102549 1048.long 0x12311549 1049.long 0x12521D49 1050.long 0x12735549 1051.long 0x12945D49 1052.long 0x12B56549 1053 vor 4,13,13 1054 1055 1056 1057.long 0x7E002799 1058 1059.long 0x7E282799 1060 1061.long 0x7E5A2799 1062 1063.long 0x7E7B2799 1064 1065.long 0x7E9C2799 1066.long 0x7EBD2799 1067 addi 4,4,0x60 1068 b .Lcbc_dec8x_done 1069 1070.align 5 1071.Lcbc_dec8x_five: 1072.long 0x12312549 1073.long 0x12521D49 1074.long 0x12735549 1075.long 0x12945D49 1076.long 0x12B56549 1077 vor 4,13,13 1078 1079 1080 1081.long 0x7E202799 1082 1083.long 0x7E482799 1084 1085.long 0x7E7A2799 1086 1087.long 0x7E9B2799 1088.long 0x7EBC2799 1089 addi 4,4,0x50 1090 b .Lcbc_dec8x_done 1091 1092.align 5 1093.Lcbc_dec8x_four: 1094.long 0x12522549 1095.long 0x12735549 1096.long 0x12945D49 1097.long 0x12B56549 1098 vor 4,13,13 1099 1100 1101 1102.long 0x7E402799 1103 1104.long 0x7E682799 1105 1106.long 0x7E9A2799 1107.long 0x7EBB2799 1108 addi 4,4,0x40 1109 b .Lcbc_dec8x_done 1110 1111.align 5 1112.Lcbc_dec8x_three: 1113.long 0x12732549 1114.long 0x12945D49 1115.long 0x12B56549 1116 vor 4,13,13 1117 1118 1119 1120.long 0x7E602799 1121 1122.long 0x7E882799 1123.long 0x7EBA2799 1124 addi 4,4,0x30 1125 b .Lcbc_dec8x_done 1126 1127.align 5 1128.Lcbc_dec8x_two: 1129.long 0x12942549 1130.long 0x12B56549 1131 vor 4,13,13 1132 1133 1134 1135.long 0x7E802799 1136.long 0x7EA82799 1137 addi 4,4,0x20 1138 b .Lcbc_dec8x_done 1139 1140.align 5 1141.Lcbc_dec8x_one: 1142.long 0x12B52549 1143 vor 4,13,13 1144 1145 1146.long 0x7EA02799 1147 addi 4,4,0x10 1148 1149.Lcbc_dec8x_done: 1150 1151.long 0x7C803F99 1152 1153 li 10,47 1154 li 11,63 1155 stvx 6,10,1 1156 addi 10,10,32 1157 stvx 6,11,1 1158 addi 11,11,32 1159 stvx 6,10,1 1160 addi 10,10,32 1161 stvx 6,11,1 1162 addi 11,11,32 1163 stvx 6,10,1 1164 addi 10,10,32 1165 stvx 6,11,1 1166 addi 11,11,32 1167 stvx 6,10,1 1168 addi 10,10,32 1169 stvx 6,11,1 1170 addi 11,11,32 1171 1172 mtspr 256,12 1173 lvx 20,10,1 1174 addi 10,10,32 1175 lvx 21,11,1 1176 addi 11,11,32 1177 lvx 22,10,1 1178 addi 10,10,32 1179 lvx 23,11,1 1180 addi 11,11,32 1181 lvx 24,10,1 1182 addi 10,10,32 1183 lvx 25,11,1 1184 addi 11,11,32 1185 lvx 26,10,1 1186 addi 10,10,32 1187 lvx 27,11,1 1188 addi 11,11,32 1189 lvx 28,10,1 1190 addi 10,10,32 1191 lvx 29,11,1 1192 addi 11,11,32 1193 lvx 30,10,1 1194 lvx 31,11,1 1195 lwz 26,368(1) 1196 lwz 27,372(1) 1197 lwz 28,376(1) 1198 lwz 29,380(1) 1199 lwz 30,384(1) 1200 lwz 31,388(1) 1201 addi 1,1,392 1202 blr 1203.long 0 1204.byte 0,12,0x04,0,0x80,6,6,0 1205.long 0 1206 1207.globl aes_p8_ctr32_encrypt_blocks 1208.type aes_p8_ctr32_encrypt_blocks,@function 1209.align 5 1210aes_p8_ctr32_encrypt_blocks: 1211 cmplwi 5,1 1212 bltlr 1213 1214 lis 0,0xfff0 1215 mfspr 12,256 1216 mtspr 256,0 1217 1218 li 10,15 1219 vxor 0,0,0 1220 1221 1222 lvx 4,0,7 1223 lvsl 6,0,7 1224 lvx 5,10,7 1225 vspltisb 11,1 1226 1227 vperm 4,4,5,6 1228 vsldoi 11,0,11,1 1229 1230 neg 11,3 1231 lvsl 10,0,6 1232 lwz 9,240(6) 1233 1234 lvsr 6,0,11 1235 lvx 5,0,3 1236 addi 3,3,15 1237 1238 1239 srwi 9,9,1 1240 li 10,16 1241 subi 9,9,1 1242 1243 cmplwi 5,8 1244 bge _aesp8_ctr32_encrypt8x 1245 1246 lvsr 8,0,4 1247 vspltisb 9,-1 1248 lvx 7,0,4 1249 vperm 9,0,9,8 1250 1251 1252 lvx 0,0,6 1253 mtctr 9 1254 lvx 1,10,6 1255 addi 10,10,16 1256 vperm 0,0,1,10 1257 vxor 2,4,0 1258 lvx 0,10,6 1259 addi 10,10,16 1260 b .Loop_ctr32_enc 1261 1262.align 5 1263.Loop_ctr32_enc: 1264 vperm 1,1,0,10 1265.long 0x10420D08 1266 lvx 1,10,6 1267 addi 10,10,16 1268 vperm 0,0,1,10 1269.long 0x10420508 1270 lvx 0,10,6 1271 addi 10,10,16 1272 bc 16,0,.Loop_ctr32_enc 1273 1274 vadduwm 4,4,11 1275 vor 3,5,5 1276 lvx 5,0,3 1277 addi 3,3,16 1278 subic. 5,5,1 1279 1280 vperm 1,1,0,10 1281.long 0x10420D08 1282 lvx 1,10,6 1283 vperm 3,3,5,6 1284 li 10,16 1285 vperm 1,0,1,10 1286 lvx 0,0,6 1287 vxor 3,3,1 1288.long 0x10421D09 1289 1290 lvx 1,10,6 1291 addi 10,10,16 1292 vperm 2,2,2,8 1293 vsel 3,7,2,9 1294 mtctr 9 1295 vperm 0,0,1,10 1296 vor 7,2,2 1297 vxor 2,4,0 1298 lvx 0,10,6 1299 addi 10,10,16 1300 stvx 3,0,4 1301 addi 4,4,16 1302 bne .Loop_ctr32_enc 1303 1304 addi 4,4,-1 1305 lvx 2,0,4 1306 vsel 2,7,2,9 1307 stvx 2,0,4 1308 1309 mtspr 256,12 1310 blr 1311.long 0 1312.byte 0,12,0x14,0,0,0,6,0 1313.long 0 1314.align 5 1315_aesp8_ctr32_encrypt8x: 1316 stwu 1,-392(1) 1317 li 10,175 1318 li 11,191 1319 stvx 20,10,1 1320 addi 10,10,32 1321 stvx 21,11,1 1322 addi 11,11,32 1323 stvx 22,10,1 1324 addi 10,10,32 1325 stvx 23,11,1 1326 addi 11,11,32 1327 stvx 24,10,1 1328 addi 10,10,32 1329 stvx 25,11,1 1330 addi 11,11,32 1331 stvx 26,10,1 1332 addi 10,10,32 1333 stvx 27,11,1 1334 addi 11,11,32 1335 stvx 28,10,1 1336 addi 10,10,32 1337 stvx 29,11,1 1338 addi 11,11,32 1339 stvx 30,10,1 1340 stvx 31,11,1 1341 li 0,-1 1342 stw 12,364(1) 1343 li 8,0x10 1344 stw 26,368(1) 1345 li 26,0x20 1346 stw 27,372(1) 1347 li 27,0x30 1348 stw 28,376(1) 1349 li 28,0x40 1350 stw 29,380(1) 1351 li 29,0x50 1352 stw 30,384(1) 1353 li 30,0x60 1354 stw 31,388(1) 1355 li 31,0x70 1356 mtspr 256,0 1357 1358 subi 9,9,3 1359 1360 lvx 23,0,6 1361 lvx 30,8,6 1362 addi 6,6,0x20 1363 lvx 31,0,6 1364 vperm 23,23,30,10 1365 addi 11,1,32+15 1366 mtctr 9 1367 1368.Load_ctr32_enc_key: 1369 vperm 24,30,31,10 1370 lvx 30,8,6 1371 addi 6,6,0x20 1372 stvx 24,0,11 1373 vperm 25,31,30,10 1374 lvx 31,0,6 1375 stvx 25,8,11 1376 addi 11,11,0x20 1377 bc 16,0,.Load_ctr32_enc_key 1378 1379 lvx 26,8,6 1380 vperm 24,30,31,10 1381 lvx 27,26,6 1382 stvx 24,0,11 1383 vperm 25,31,26,10 1384 lvx 28,27,6 1385 stvx 25,8,11 1386 addi 11,1,32+15 1387 vperm 26,26,27,10 1388 lvx 29,28,6 1389 vperm 27,27,28,10 1390 lvx 30,29,6 1391 vperm 28,28,29,10 1392 lvx 31,30,6 1393 vperm 29,29,30,10 1394 lvx 15,31,6 1395 vperm 30,30,31,10 1396 lvx 24,0,11 1397 vperm 31,31,15,10 1398 lvx 25,8,11 1399 1400 vadduwm 7,11,11 1401 subi 3,3,15 1402 slwi 5,5,4 1403 1404 vadduwm 16,4,11 1405 vadduwm 17,4,7 1406 vxor 15,4,23 1407 1408 vadduwm 18,16,7 1409 vxor 16,16,23 1410 1411 vadduwm 19,17,7 1412 vxor 17,17,23 1413 1414 vadduwm 20,18,7 1415 vxor 18,18,23 1416 1417 vadduwm 21,19,7 1418 vxor 19,19,23 1419 vadduwm 22,20,7 1420 vxor 20,20,23 1421 vadduwm 4,21,7 1422 vxor 21,21,23 1423 vxor 22,22,23 1424 1425 mtctr 9 1426 b .Loop_ctr32_enc8x 1427.align 5 1428.Loop_ctr32_enc8x: 1429.long 0x11EFC508 1430.long 0x1210C508 1431.long 0x1231C508 1432.long 0x1252C508 1433.long 0x1273C508 1434.long 0x1294C508 1435.long 0x12B5C508 1436.long 0x12D6C508 1437.Loop_ctr32_enc8x_middle: 1438 lvx 24,26,11 1439 addi 11,11,0x20 1440 1441.long 0x11EFCD08 1442.long 0x1210CD08 1443.long 0x1231CD08 1444.long 0x1252CD08 1445.long 0x1273CD08 1446.long 0x1294CD08 1447.long 0x12B5CD08 1448.long 0x12D6CD08 1449 lvx 25,8,11 1450 bc 16,0,.Loop_ctr32_enc8x 1451 1452 subic 11,5,256 1453.long 0x11EFC508 1454.long 0x1210C508 1455.long 0x1231C508 1456.long 0x1252C508 1457.long 0x1273C508 1458.long 0x1294C508 1459.long 0x12B5C508 1460.long 0x12D6C508 1461 1462 subfe 0,0,0 1463.long 0x11EFCD08 1464.long 0x1210CD08 1465.long 0x1231CD08 1466.long 0x1252CD08 1467.long 0x1273CD08 1468.long 0x1294CD08 1469.long 0x12B5CD08 1470.long 0x12D6CD08 1471 1472 and 0,0,11 1473 addi 11,1,32+15 1474.long 0x11EFD508 1475.long 0x1210D508 1476.long 0x1231D508 1477.long 0x1252D508 1478.long 0x1273D508 1479.long 0x1294D508 1480.long 0x12B5D508 1481.long 0x12D6D508 1482 lvx 24,0,11 1483 1484 subic 5,5,129 1485.long 0x11EFDD08 1486 addi 5,5,1 1487.long 0x1210DD08 1488.long 0x1231DD08 1489.long 0x1252DD08 1490.long 0x1273DD08 1491.long 0x1294DD08 1492.long 0x12B5DD08 1493.long 0x12D6DD08 1494 lvx 25,8,11 1495 1496.long 0x11EFE508 1497.long 0x7C001E99 1498.long 0x1210E508 1499.long 0x7C281E99 1500.long 0x1231E508 1501.long 0x7C5A1E99 1502.long 0x1252E508 1503.long 0x7C7B1E99 1504.long 0x1273E508 1505.long 0x7D5C1E99 1506.long 0x1294E508 1507.long 0x7D9D1E99 1508.long 0x12B5E508 1509.long 0x7DBE1E99 1510.long 0x12D6E508 1511.long 0x7DDF1E99 1512 addi 3,3,0x80 1513 1514.long 0x11EFED08 1515 1516.long 0x1210ED08 1517 1518.long 0x1231ED08 1519 1520.long 0x1252ED08 1521 1522.long 0x1273ED08 1523 1524.long 0x1294ED08 1525 1526.long 0x12B5ED08 1527 1528.long 0x12D6ED08 1529 1530 1531 add 3,3,0 1532 1533 1534 1535 subfe. 0,0,0 1536.long 0x11EFF508 1537 vxor 0,0,31 1538.long 0x1210F508 1539 vxor 1,1,31 1540.long 0x1231F508 1541 vxor 2,2,31 1542.long 0x1252F508 1543 vxor 3,3,31 1544.long 0x1273F508 1545 vxor 10,10,31 1546.long 0x1294F508 1547 vxor 12,12,31 1548.long 0x12B5F508 1549 vxor 13,13,31 1550.long 0x12D6F508 1551 vxor 14,14,31 1552 1553 bne .Lctr32_enc8x_break 1554 1555.long 0x100F0509 1556.long 0x10300D09 1557 vadduwm 16,4,11 1558.long 0x10511509 1559 vadduwm 17,4,7 1560 vxor 15,4,23 1561.long 0x10721D09 1562 vadduwm 18,16,7 1563 vxor 16,16,23 1564.long 0x11535509 1565 vadduwm 19,17,7 1566 vxor 17,17,23 1567.long 0x11946509 1568 vadduwm 20,18,7 1569 vxor 18,18,23 1570.long 0x11B56D09 1571 vadduwm 21,19,7 1572 vxor 19,19,23 1573.long 0x11D67509 1574 vadduwm 22,20,7 1575 vxor 20,20,23 1576 1577 vadduwm 4,21,7 1578 vxor 21,21,23 1579 1580 vxor 22,22,23 1581 mtctr 9 1582 1583.long 0x11EFC508 1584.long 0x7C002799 1585 1586.long 0x1210C508 1587.long 0x7C282799 1588 1589.long 0x1231C508 1590.long 0x7C5A2799 1591 1592.long 0x1252C508 1593.long 0x7C7B2799 1594 1595.long 0x1273C508 1596.long 0x7D5C2799 1597 1598.long 0x1294C508 1599.long 0x7D9D2799 1600 1601.long 0x12B5C508 1602.long 0x7DBE2799 1603.long 0x12D6C508 1604.long 0x7DDF2799 1605 addi 4,4,0x80 1606 1607 b .Loop_ctr32_enc8x_middle 1608 1609.align 5 1610.Lctr32_enc8x_break: 1611 cmpwi 5,-0x60 1612 blt .Lctr32_enc8x_one 1613 nop 1614 beq .Lctr32_enc8x_two 1615 cmpwi 5,-0x40 1616 blt .Lctr32_enc8x_three 1617 nop 1618 beq .Lctr32_enc8x_four 1619 cmpwi 5,-0x20 1620 blt .Lctr32_enc8x_five 1621 nop 1622 beq .Lctr32_enc8x_six 1623 cmpwi 5,0x00 1624 blt .Lctr32_enc8x_seven 1625 1626.Lctr32_enc8x_eight: 1627.long 0x11EF0509 1628.long 0x12100D09 1629.long 0x12311509 1630.long 0x12521D09 1631.long 0x12735509 1632.long 0x12946509 1633.long 0x12B56D09 1634.long 0x12D67509 1635 1636 1637 1638.long 0x7DE02799 1639 1640.long 0x7E082799 1641 1642.long 0x7E3A2799 1643 1644.long 0x7E5B2799 1645 1646.long 0x7E7C2799 1647 1648.long 0x7E9D2799 1649 1650.long 0x7EBE2799 1651.long 0x7EDF2799 1652 addi 4,4,0x80 1653 b .Lctr32_enc8x_done 1654 1655.align 5 1656.Lctr32_enc8x_seven: 1657.long 0x11EF0D09 1658.long 0x12101509 1659.long 0x12311D09 1660.long 0x12525509 1661.long 0x12736509 1662.long 0x12946D09 1663.long 0x12B57509 1664 1665 1666 1667.long 0x7DE02799 1668 1669.long 0x7E082799 1670 1671.long 0x7E3A2799 1672 1673.long 0x7E5B2799 1674 1675.long 0x7E7C2799 1676 1677.long 0x7E9D2799 1678.long 0x7EBE2799 1679 addi 4,4,0x70 1680 b .Lctr32_enc8x_done 1681 1682.align 5 1683.Lctr32_enc8x_six: 1684.long 0x11EF1509 1685.long 0x12101D09 1686.long 0x12315509 1687.long 0x12526509 1688.long 0x12736D09 1689.long 0x12947509 1690 1691 1692 1693.long 0x7DE02799 1694 1695.long 0x7E082799 1696 1697.long 0x7E3A2799 1698 1699.long 0x7E5B2799 1700 1701.long 0x7E7C2799 1702.long 0x7E9D2799 1703 addi 4,4,0x60 1704 b .Lctr32_enc8x_done 1705 1706.align 5 1707.Lctr32_enc8x_five: 1708.long 0x11EF1D09 1709.long 0x12105509 1710.long 0x12316509 1711.long 0x12526D09 1712.long 0x12737509 1713 1714 1715 1716.long 0x7DE02799 1717 1718.long 0x7E082799 1719 1720.long 0x7E3A2799 1721 1722.long 0x7E5B2799 1723.long 0x7E7C2799 1724 addi 4,4,0x50 1725 b .Lctr32_enc8x_done 1726 1727.align 5 1728.Lctr32_enc8x_four: 1729.long 0x11EF5509 1730.long 0x12106509 1731.long 0x12316D09 1732.long 0x12527509 1733 1734 1735 1736.long 0x7DE02799 1737 1738.long 0x7E082799 1739 1740.long 0x7E3A2799 1741.long 0x7E5B2799 1742 addi 4,4,0x40 1743 b .Lctr32_enc8x_done 1744 1745.align 5 1746.Lctr32_enc8x_three: 1747.long 0x11EF6509 1748.long 0x12106D09 1749.long 0x12317509 1750 1751 1752 1753.long 0x7DE02799 1754 1755.long 0x7E082799 1756.long 0x7E3A2799 1757 addi 4,4,0x30 1758 b .Lcbc_dec8x_done 1759 1760.align 5 1761.Lctr32_enc8x_two: 1762.long 0x11EF6D09 1763.long 0x12107509 1764 1765 1766 1767.long 0x7DE02799 1768.long 0x7E082799 1769 addi 4,4,0x20 1770 b .Lcbc_dec8x_done 1771 1772.align 5 1773.Lctr32_enc8x_one: 1774.long 0x11EF7509 1775 1776 1777.long 0x7DE02799 1778 addi 4,4,0x10 1779 1780.Lctr32_enc8x_done: 1781 li 10,47 1782 li 11,63 1783 stvx 6,10,1 1784 addi 10,10,32 1785 stvx 6,11,1 1786 addi 11,11,32 1787 stvx 6,10,1 1788 addi 10,10,32 1789 stvx 6,11,1 1790 addi 11,11,32 1791 stvx 6,10,1 1792 addi 10,10,32 1793 stvx 6,11,1 1794 addi 11,11,32 1795 stvx 6,10,1 1796 addi 10,10,32 1797 stvx 6,11,1 1798 addi 11,11,32 1799 1800 mtspr 256,12 1801 lvx 20,10,1 1802 addi 10,10,32 1803 lvx 21,11,1 1804 addi 11,11,32 1805 lvx 22,10,1 1806 addi 10,10,32 1807 lvx 23,11,1 1808 addi 11,11,32 1809 lvx 24,10,1 1810 addi 10,10,32 1811 lvx 25,11,1 1812 addi 11,11,32 1813 lvx 26,10,1 1814 addi 10,10,32 1815 lvx 27,11,1 1816 addi 11,11,32 1817 lvx 28,10,1 1818 addi 10,10,32 1819 lvx 29,11,1 1820 addi 11,11,32 1821 lvx 30,10,1 1822 lvx 31,11,1 1823 lwz 26,368(1) 1824 lwz 27,372(1) 1825 lwz 28,376(1) 1826 lwz 29,380(1) 1827 lwz 30,384(1) 1828 lwz 31,388(1) 1829 addi 1,1,392 1830 blr 1831.long 0 1832.byte 0,12,0x04,0,0x80,6,6,0 1833.long 0 1834 1835