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,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 .Lctr32_enc8x_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 .Lctr32_enc8x_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.globl aes_p8_xts_encrypt 1836.type aes_p8_xts_encrypt,@function 1837.align 5 1838aes_p8_xts_encrypt: 1839 mr 10,3 1840 li 3,-1 1841 cmplwi 5,16 1842 bltlr 1843 1844 lis 0,0xfff0 1845 mfspr 12,256 1846 li 11,0 1847 mtspr 256,0 1848 1849 vspltisb 9,0x07 1850 1851 1852 1853 1854 li 3,15 1855 lvx 8,0,8 1856 lvsl 5,0,8 1857 lvx 4,3,8 1858 1859 vperm 8,8,4,5 1860 1861 neg 11,10 1862 lvsr 5,0,11 1863 lvx 2,0,10 1864 addi 10,10,15 1865 1866 1867 cmplwi 7,0 1868 beq .Lxts_enc_no_key2 1869 1870 lvsl 7,0,7 1871 lwz 9,240(7) 1872 srwi 9,9,1 1873 subi 9,9,1 1874 li 3,16 1875 1876 lvx 0,0,7 1877 lvx 1,3,7 1878 addi 3,3,16 1879 vperm 0,0,1,7 1880 vxor 8,8,0 1881 lvx 0,3,7 1882 addi 3,3,16 1883 mtctr 9 1884 1885.Ltweak_xts_enc: 1886 vperm 1,1,0,7 1887.long 0x11080D08 1888 lvx 1,3,7 1889 addi 3,3,16 1890 vperm 0,0,1,7 1891.long 0x11080508 1892 lvx 0,3,7 1893 addi 3,3,16 1894 bc 16,0,.Ltweak_xts_enc 1895 1896 vperm 1,1,0,7 1897.long 0x11080D08 1898 lvx 1,3,7 1899 vperm 0,0,1,7 1900.long 0x11080509 1901 1902 li 8,0 1903 b .Lxts_enc 1904 1905.Lxts_enc_no_key2: 1906 li 3,-16 1907 and 5,5,3 1908 1909 1910.Lxts_enc: 1911 lvx 4,0,10 1912 addi 10,10,16 1913 1914 lvsl 7,0,6 1915 lwz 9,240(6) 1916 srwi 9,9,1 1917 subi 9,9,1 1918 li 3,16 1919 1920 vslb 10,9,9 1921 vor 10,10,9 1922 vspltisb 11,1 1923 vsldoi 10,10,11,15 1924 1925 cmplwi 5,96 1926 bge _aesp8_xts_encrypt6x 1927 1928 andi. 7,5,15 1929 subic 0,5,32 1930 subi 7,7,16 1931 subfe 0,0,0 1932 and 0,0,7 1933 add 10,10,0 1934 1935 lvx 0,0,6 1936 lvx 1,3,6 1937 addi 3,3,16 1938 vperm 2,2,4,5 1939 vperm 0,0,1,7 1940 vxor 2,2,8 1941 vxor 2,2,0 1942 lvx 0,3,6 1943 addi 3,3,16 1944 mtctr 9 1945 b .Loop_xts_enc 1946 1947.align 5 1948.Loop_xts_enc: 1949 vperm 1,1,0,7 1950.long 0x10420D08 1951 lvx 1,3,6 1952 addi 3,3,16 1953 vperm 0,0,1,7 1954.long 0x10420508 1955 lvx 0,3,6 1956 addi 3,3,16 1957 bc 16,0,.Loop_xts_enc 1958 1959 vperm 1,1,0,7 1960.long 0x10420D08 1961 lvx 1,3,6 1962 li 3,16 1963 vperm 0,0,1,7 1964 vxor 0,0,8 1965.long 0x10620509 1966 1967 1968 nop 1969 1970.long 0x7C602799 1971 addi 4,4,16 1972 1973 subic. 5,5,16 1974 beq .Lxts_enc_done 1975 1976 vor 2,4,4 1977 lvx 4,0,10 1978 addi 10,10,16 1979 lvx 0,0,6 1980 lvx 1,3,6 1981 addi 3,3,16 1982 1983 subic 0,5,32 1984 subfe 0,0,0 1985 and 0,0,7 1986 add 10,10,0 1987 1988 vsrab 11,8,9 1989 vaddubm 8,8,8 1990 vsldoi 11,11,11,15 1991 vand 11,11,10 1992 vxor 8,8,11 1993 1994 vperm 2,2,4,5 1995 vperm 0,0,1,7 1996 vxor 2,2,8 1997 vxor 3,3,0 1998 vxor 2,2,0 1999 lvx 0,3,6 2000 addi 3,3,16 2001 2002 mtctr 9 2003 cmplwi 5,16 2004 bge .Loop_xts_enc 2005 2006 vxor 3,3,8 2007 lvsr 5,0,5 2008 vxor 4,4,4 2009 vspltisb 11,-1 2010 vperm 4,4,11,5 2011 vsel 2,2,3,4 2012 2013 subi 11,4,17 2014 subi 4,4,16 2015 mtctr 5 2016 li 5,16 2017.Loop_xts_enc_steal: 2018 lbzu 0,1(11) 2019 stb 0,16(11) 2020 bc 16,0,.Loop_xts_enc_steal 2021 2022 mtctr 9 2023 b .Loop_xts_enc 2024 2025.Lxts_enc_done: 2026 cmplwi 8,0 2027 beq .Lxts_enc_ret 2028 2029 vsrab 11,8,9 2030 vaddubm 8,8,8 2031 vsldoi 11,11,11,15 2032 vand 11,11,10 2033 vxor 8,8,11 2034 2035 2036.long 0x7D004799 2037 2038.Lxts_enc_ret: 2039 mtspr 256,12 2040 li 3,0 2041 blr 2042.long 0 2043.byte 0,12,0x04,0,0x80,6,6,0 2044.long 0 2045 2046 2047.globl aes_p8_xts_decrypt 2048.type aes_p8_xts_decrypt,@function 2049.align 5 2050aes_p8_xts_decrypt: 2051 mr 10,3 2052 li 3,-1 2053 cmplwi 5,16 2054 bltlr 2055 2056 lis 0,0xfff8 2057 mfspr 12,256 2058 li 11,0 2059 mtspr 256,0 2060 2061 andi. 0,5,15 2062 neg 0,0 2063 andi. 0,0,16 2064 sub 5,5,0 2065 2066 vspltisb 9,0x07 2067 2068 2069 2070 2071 li 3,15 2072 lvx 8,0,8 2073 lvsl 5,0,8 2074 lvx 4,3,8 2075 2076 vperm 8,8,4,5 2077 2078 neg 11,10 2079 lvsr 5,0,11 2080 lvx 2,0,10 2081 addi 10,10,15 2082 2083 2084 cmplwi 7,0 2085 beq .Lxts_dec_no_key2 2086 2087 lvsl 7,0,7 2088 lwz 9,240(7) 2089 srwi 9,9,1 2090 subi 9,9,1 2091 li 3,16 2092 2093 lvx 0,0,7 2094 lvx 1,3,7 2095 addi 3,3,16 2096 vperm 0,0,1,7 2097 vxor 8,8,0 2098 lvx 0,3,7 2099 addi 3,3,16 2100 mtctr 9 2101 2102.Ltweak_xts_dec: 2103 vperm 1,1,0,7 2104.long 0x11080D08 2105 lvx 1,3,7 2106 addi 3,3,16 2107 vperm 0,0,1,7 2108.long 0x11080508 2109 lvx 0,3,7 2110 addi 3,3,16 2111 bc 16,0,.Ltweak_xts_dec 2112 2113 vperm 1,1,0,7 2114.long 0x11080D08 2115 lvx 1,3,7 2116 vperm 0,0,1,7 2117.long 0x11080509 2118 2119 li 8,0 2120 b .Lxts_dec 2121 2122.Lxts_dec_no_key2: 2123 neg 3,5 2124 andi. 3,3,15 2125 add 5,5,3 2126 2127 2128.Lxts_dec: 2129 lvx 4,0,10 2130 addi 10,10,16 2131 2132 lvsl 7,0,6 2133 lwz 9,240(6) 2134 srwi 9,9,1 2135 subi 9,9,1 2136 li 3,16 2137 2138 vslb 10,9,9 2139 vor 10,10,9 2140 vspltisb 11,1 2141 vsldoi 10,10,11,15 2142 2143 cmplwi 5,96 2144 bge _aesp8_xts_decrypt6x 2145 2146 lvx 0,0,6 2147 lvx 1,3,6 2148 addi 3,3,16 2149 vperm 2,2,4,5 2150 vperm 0,0,1,7 2151 vxor 2,2,8 2152 vxor 2,2,0 2153 lvx 0,3,6 2154 addi 3,3,16 2155 mtctr 9 2156 2157 cmplwi 5,16 2158 blt .Ltail_xts_dec 2159 b .Loop_xts_dec 2160 2161.align 5 2162.Loop_xts_dec: 2163 vperm 1,1,0,7 2164.long 0x10420D48 2165 lvx 1,3,6 2166 addi 3,3,16 2167 vperm 0,0,1,7 2168.long 0x10420548 2169 lvx 0,3,6 2170 addi 3,3,16 2171 bc 16,0,.Loop_xts_dec 2172 2173 vperm 1,1,0,7 2174.long 0x10420D48 2175 lvx 1,3,6 2176 li 3,16 2177 vperm 0,0,1,7 2178 vxor 0,0,8 2179.long 0x10620549 2180 2181 2182 nop 2183 2184.long 0x7C602799 2185 addi 4,4,16 2186 2187 subic. 5,5,16 2188 beq .Lxts_dec_done 2189 2190 vor 2,4,4 2191 lvx 4,0,10 2192 addi 10,10,16 2193 lvx 0,0,6 2194 lvx 1,3,6 2195 addi 3,3,16 2196 2197 vsrab 11,8,9 2198 vaddubm 8,8,8 2199 vsldoi 11,11,11,15 2200 vand 11,11,10 2201 vxor 8,8,11 2202 2203 vperm 2,2,4,5 2204 vperm 0,0,1,7 2205 vxor 2,2,8 2206 vxor 2,2,0 2207 lvx 0,3,6 2208 addi 3,3,16 2209 2210 mtctr 9 2211 cmplwi 5,16 2212 bge .Loop_xts_dec 2213 2214.Ltail_xts_dec: 2215 vsrab 11,8,9 2216 vaddubm 12,8,8 2217 vsldoi 11,11,11,15 2218 vand 11,11,10 2219 vxor 12,12,11 2220 2221 subi 10,10,16 2222 add 10,10,5 2223 2224 vxor 2,2,8 2225 vxor 2,2,12 2226 2227.Loop_xts_dec_short: 2228 vperm 1,1,0,7 2229.long 0x10420D48 2230 lvx 1,3,6 2231 addi 3,3,16 2232 vperm 0,0,1,7 2233.long 0x10420548 2234 lvx 0,3,6 2235 addi 3,3,16 2236 bc 16,0,.Loop_xts_dec_short 2237 2238 vperm 1,1,0,7 2239.long 0x10420D48 2240 lvx 1,3,6 2241 li 3,16 2242 vperm 0,0,1,7 2243 vxor 0,0,12 2244.long 0x10620549 2245 2246 2247 nop 2248 2249.long 0x7C602799 2250 2251 vor 2,4,4 2252 lvx 4,0,10 2253 2254 lvx 0,0,6 2255 lvx 1,3,6 2256 addi 3,3,16 2257 vperm 2,2,4,5 2258 vperm 0,0,1,7 2259 2260 lvsr 5,0,5 2261 vxor 4,4,4 2262 vspltisb 11,-1 2263 vperm 4,4,11,5 2264 vsel 2,2,3,4 2265 2266 vxor 0,0,8 2267 vxor 2,2,0 2268 lvx 0,3,6 2269 addi 3,3,16 2270 2271 subi 11,4,1 2272 mtctr 5 2273 li 5,16 2274.Loop_xts_dec_steal: 2275 lbzu 0,1(11) 2276 stb 0,16(11) 2277 bc 16,0,.Loop_xts_dec_steal 2278 2279 mtctr 9 2280 b .Loop_xts_dec 2281 2282.Lxts_dec_done: 2283 cmplwi 8,0 2284 beq .Lxts_dec_ret 2285 2286 vsrab 11,8,9 2287 vaddubm 8,8,8 2288 vsldoi 11,11,11,15 2289 vand 11,11,10 2290 vxor 8,8,11 2291 2292 2293.long 0x7D004799 2294 2295.Lxts_dec_ret: 2296 mtspr 256,12 2297 li 3,0 2298 blr 2299.long 0 2300.byte 0,12,0x04,0,0x80,6,6,0 2301.long 0 2302 2303.align 5 2304_aesp8_xts_encrypt6x: 2305 stwu 1,-392(1) 2306 mflr 11 2307 li 7,175 2308 li 3,191 2309 stw 11,396(1) 2310 stvx 20,7,1 2311 addi 7,7,32 2312 stvx 21,3,1 2313 addi 3,3,32 2314 stvx 22,7,1 2315 addi 7,7,32 2316 stvx 23,3,1 2317 addi 3,3,32 2318 stvx 24,7,1 2319 addi 7,7,32 2320 stvx 25,3,1 2321 addi 3,3,32 2322 stvx 26,7,1 2323 addi 7,7,32 2324 stvx 27,3,1 2325 addi 3,3,32 2326 stvx 28,7,1 2327 addi 7,7,32 2328 stvx 29,3,1 2329 addi 3,3,32 2330 stvx 30,7,1 2331 stvx 31,3,1 2332 li 0,-1 2333 stw 12,364(1) 2334 li 3,0x10 2335 stw 26,368(1) 2336 li 26,0x20 2337 stw 27,372(1) 2338 li 27,0x30 2339 stw 28,376(1) 2340 li 28,0x40 2341 stw 29,380(1) 2342 li 29,0x50 2343 stw 30,384(1) 2344 li 30,0x60 2345 stw 31,388(1) 2346 li 31,0x70 2347 mtspr 256,0 2348 2349 subi 9,9,3 2350 2351 lvx 23,0,6 2352 lvx 30,3,6 2353 addi 6,6,0x20 2354 lvx 31,0,6 2355 vperm 23,23,30,7 2356 addi 7,1,32+15 2357 mtctr 9 2358 2359.Load_xts_enc_key: 2360 vperm 24,30,31,7 2361 lvx 30,3,6 2362 addi 6,6,0x20 2363 stvx 24,0,7 2364 vperm 25,31,30,7 2365 lvx 31,0,6 2366 stvx 25,3,7 2367 addi 7,7,0x20 2368 bc 16,0,.Load_xts_enc_key 2369 2370 lvx 26,3,6 2371 vperm 24,30,31,7 2372 lvx 27,26,6 2373 stvx 24,0,7 2374 vperm 25,31,26,7 2375 lvx 28,27,6 2376 stvx 25,3,7 2377 addi 7,1,32+15 2378 vperm 26,26,27,7 2379 lvx 29,28,6 2380 vperm 27,27,28,7 2381 lvx 30,29,6 2382 vperm 28,28,29,7 2383 lvx 31,30,6 2384 vperm 29,29,30,7 2385 lvx 22,31,6 2386 vperm 30,30,31,7 2387 lvx 24,0,7 2388 vperm 31,31,22,7 2389 lvx 25,3,7 2390 2391 vperm 0,2,4,5 2392 subi 10,10,31 2393 vxor 17,8,23 2394 vsrab 11,8,9 2395 vaddubm 8,8,8 2396 vsldoi 11,11,11,15 2397 vand 11,11,10 2398 vxor 7,0,17 2399 vxor 8,8,11 2400 2401.long 0x7C235699 2402 vxor 18,8,23 2403 vsrab 11,8,9 2404 vaddubm 8,8,8 2405 vsldoi 11,11,11,15 2406 2407 vand 11,11,10 2408 vxor 12,1,18 2409 vxor 8,8,11 2410 2411.long 0x7C5A5699 2412 andi. 31,5,15 2413 vxor 19,8,23 2414 vsrab 11,8,9 2415 vaddubm 8,8,8 2416 vsldoi 11,11,11,15 2417 2418 vand 11,11,10 2419 vxor 13,2,19 2420 vxor 8,8,11 2421 2422.long 0x7C7B5699 2423 sub 5,5,31 2424 vxor 20,8,23 2425 vsrab 11,8,9 2426 vaddubm 8,8,8 2427 vsldoi 11,11,11,15 2428 2429 vand 11,11,10 2430 vxor 14,3,20 2431 vxor 8,8,11 2432 2433.long 0x7C9C5699 2434 subi 5,5,0x60 2435 vxor 21,8,23 2436 vsrab 11,8,9 2437 vaddubm 8,8,8 2438 vsldoi 11,11,11,15 2439 2440 vand 11,11,10 2441 vxor 15,4,21 2442 vxor 8,8,11 2443 2444.long 0x7CBD5699 2445 addi 10,10,0x60 2446 vxor 22,8,23 2447 vsrab 11,8,9 2448 vaddubm 8,8,8 2449 vsldoi 11,11,11,15 2450 2451 vand 11,11,10 2452 vxor 16,5,22 2453 vxor 8,8,11 2454 2455 vxor 31,31,23 2456 mtctr 9 2457 b .Loop_xts_enc6x 2458 2459.align 5 2460.Loop_xts_enc6x: 2461.long 0x10E7C508 2462.long 0x118CC508 2463.long 0x11ADC508 2464.long 0x11CEC508 2465.long 0x11EFC508 2466.long 0x1210C508 2467 lvx 24,26,7 2468 addi 7,7,0x20 2469 2470.long 0x10E7CD08 2471.long 0x118CCD08 2472.long 0x11ADCD08 2473.long 0x11CECD08 2474.long 0x11EFCD08 2475.long 0x1210CD08 2476 lvx 25,3,7 2477 bc 16,0,.Loop_xts_enc6x 2478 2479 subic 5,5,96 2480 vxor 0,17,31 2481.long 0x10E7C508 2482.long 0x118CC508 2483 vsrab 11,8,9 2484 vxor 17,8,23 2485 vaddubm 8,8,8 2486.long 0x11ADC508 2487.long 0x11CEC508 2488 vsldoi 11,11,11,15 2489.long 0x11EFC508 2490.long 0x1210C508 2491 2492 subfe. 0,0,0 2493 vand 11,11,10 2494.long 0x10E7CD08 2495.long 0x118CCD08 2496 vxor 8,8,11 2497.long 0x11ADCD08 2498.long 0x11CECD08 2499 vxor 1,18,31 2500 vsrab 11,8,9 2501 vxor 18,8,23 2502.long 0x11EFCD08 2503.long 0x1210CD08 2504 2505 and 0,0,5 2506 vaddubm 8,8,8 2507 vsldoi 11,11,11,15 2508.long 0x10E7D508 2509.long 0x118CD508 2510 vand 11,11,10 2511.long 0x11ADD508 2512.long 0x11CED508 2513 vxor 8,8,11 2514.long 0x11EFD508 2515.long 0x1210D508 2516 2517 add 10,10,0 2518 2519 2520 2521 vxor 2,19,31 2522 vsrab 11,8,9 2523 vxor 19,8,23 2524 vaddubm 8,8,8 2525.long 0x10E7DD08 2526.long 0x118CDD08 2527 vsldoi 11,11,11,15 2528.long 0x11ADDD08 2529.long 0x11CEDD08 2530 vand 11,11,10 2531.long 0x11EFDD08 2532.long 0x1210DD08 2533 2534 addi 7,1,32+15 2535 vxor 8,8,11 2536.long 0x10E7E508 2537.long 0x118CE508 2538 vxor 3,20,31 2539 vsrab 11,8,9 2540 vxor 20,8,23 2541.long 0x11ADE508 2542.long 0x11CEE508 2543 vaddubm 8,8,8 2544 vsldoi 11,11,11,15 2545.long 0x11EFE508 2546.long 0x1210E508 2547 lvx 24,0,7 2548 vand 11,11,10 2549 2550.long 0x10E7ED08 2551.long 0x118CED08 2552 vxor 8,8,11 2553.long 0x11ADED08 2554.long 0x11CEED08 2555 vxor 4,21,31 2556 vsrab 11,8,9 2557 vxor 21,8,23 2558.long 0x11EFED08 2559.long 0x1210ED08 2560 lvx 25,3,7 2561 vaddubm 8,8,8 2562 vsldoi 11,11,11,15 2563 2564.long 0x10E7F508 2565.long 0x118CF508 2566 vand 11,11,10 2567.long 0x11ADF508 2568.long 0x11CEF508 2569 vxor 8,8,11 2570.long 0x11EFF508 2571.long 0x1210F508 2572 vxor 5,22,31 2573 vsrab 11,8,9 2574 vxor 22,8,23 2575 2576.long 0x10E70509 2577.long 0x7C005699 2578 vaddubm 8,8,8 2579 vsldoi 11,11,11,15 2580.long 0x118C0D09 2581.long 0x7C235699 2582.long 0x11AD1509 2583 2584.long 0x7C5A5699 2585 vand 11,11,10 2586.long 0x11CE1D09 2587 2588.long 0x7C7B5699 2589.long 0x11EF2509 2590 2591.long 0x7C9C5699 2592 vxor 8,8,11 2593.long 0x11702D09 2594 2595 2596.long 0x7CBD5699 2597 addi 10,10,0x60 2598 2599 2600 2601 2602 2603.long 0x7CE02799 2604 vxor 7,0,17 2605 2606.long 0x7D832799 2607 vxor 12,1,18 2608 2609.long 0x7DBA2799 2610 vxor 13,2,19 2611 2612.long 0x7DDB2799 2613 vxor 14,3,20 2614 2615.long 0x7DFC2799 2616 vxor 15,4,21 2617 2618.long 0x7D7D2799 2619 vxor 16,5,22 2620 addi 4,4,0x60 2621 2622 mtctr 9 2623 beq .Loop_xts_enc6x 2624 2625 addic. 5,5,0x60 2626 beq .Lxts_enc6x_zero 2627 cmpwi 5,0x20 2628 blt .Lxts_enc6x_one 2629 nop 2630 beq .Lxts_enc6x_two 2631 cmpwi 5,0x40 2632 blt .Lxts_enc6x_three 2633 nop 2634 beq .Lxts_enc6x_four 2635 2636.Lxts_enc6x_five: 2637 vxor 7,1,17 2638 vxor 12,2,18 2639 vxor 13,3,19 2640 vxor 14,4,20 2641 vxor 15,5,21 2642 2643 bl _aesp8_xts_enc5x 2644 2645 2646 vor 17,22,22 2647 2648.long 0x7CE02799 2649 2650.long 0x7D832799 2651 2652.long 0x7DBA2799 2653 vxor 11,15,22 2654 2655.long 0x7DDB2799 2656.long 0x7DFC2799 2657 addi 4,4,0x50 2658 bne .Lxts_enc6x_steal 2659 b .Lxts_enc6x_done 2660 2661.align 4 2662.Lxts_enc6x_four: 2663 vxor 7,2,17 2664 vxor 12,3,18 2665 vxor 13,4,19 2666 vxor 14,5,20 2667 vxor 15,15,15 2668 2669 bl _aesp8_xts_enc5x 2670 2671 2672 vor 17,21,21 2673 2674.long 0x7CE02799 2675 2676.long 0x7D832799 2677 vxor 11,14,21 2678 2679.long 0x7DBA2799 2680.long 0x7DDB2799 2681 addi 4,4,0x40 2682 bne .Lxts_enc6x_steal 2683 b .Lxts_enc6x_done 2684 2685.align 4 2686.Lxts_enc6x_three: 2687 vxor 7,3,17 2688 vxor 12,4,18 2689 vxor 13,5,19 2690 vxor 14,14,14 2691 vxor 15,15,15 2692 2693 bl _aesp8_xts_enc5x 2694 2695 2696 vor 17,20,20 2697 2698.long 0x7CE02799 2699 vxor 11,13,20 2700 2701.long 0x7D832799 2702.long 0x7DBA2799 2703 addi 4,4,0x30 2704 bne .Lxts_enc6x_steal 2705 b .Lxts_enc6x_done 2706 2707.align 4 2708.Lxts_enc6x_two: 2709 vxor 7,4,17 2710 vxor 12,5,18 2711 vxor 13,13,13 2712 vxor 14,14,14 2713 vxor 15,15,15 2714 2715 bl _aesp8_xts_enc5x 2716 2717 2718 vor 17,19,19 2719 vxor 11,12,19 2720 2721.long 0x7CE02799 2722.long 0x7D832799 2723 addi 4,4,0x20 2724 bne .Lxts_enc6x_steal 2725 b .Lxts_enc6x_done 2726 2727.align 4 2728.Lxts_enc6x_one: 2729 vxor 7,5,17 2730 nop 2731.Loop_xts_enc1x: 2732.long 0x10E7C508 2733 lvx 24,26,7 2734 addi 7,7,0x20 2735 2736.long 0x10E7CD08 2737 lvx 25,3,7 2738 bc 16,0,.Loop_xts_enc1x 2739 2740 add 10,10,31 2741 cmpwi 31,0 2742.long 0x10E7C508 2743 2744 subi 10,10,16 2745.long 0x10E7CD08 2746 2747 lvsr 5,0,31 2748.long 0x10E7D508 2749 2750.long 0x7C005699 2751.long 0x10E7DD08 2752 2753 addi 7,1,32+15 2754.long 0x10E7E508 2755 lvx 24,0,7 2756 2757.long 0x10E7ED08 2758 lvx 25,3,7 2759 vxor 17,17,31 2760 2761 2762.long 0x10E7F508 2763 2764 vperm 0,0,0,5 2765.long 0x10E78D09 2766 2767 vor 17,18,18 2768 vxor 11,7,18 2769 2770.long 0x7CE02799 2771 addi 4,4,0x10 2772 bne .Lxts_enc6x_steal 2773 b .Lxts_enc6x_done 2774 2775.align 4 2776.Lxts_enc6x_zero: 2777 cmpwi 31,0 2778 beq .Lxts_enc6x_done 2779 2780 add 10,10,31 2781 subi 10,10,16 2782.long 0x7C005699 2783 lvsr 5,0,31 2784 2785 vperm 0,0,0,5 2786 vxor 11,11,17 2787.Lxts_enc6x_steal: 2788 vxor 0,0,17 2789 vxor 7,7,7 2790 vspltisb 12,-1 2791 vperm 7,7,12,5 2792 vsel 7,0,11,7 2793 2794 subi 30,4,17 2795 subi 4,4,16 2796 mtctr 31 2797.Loop_xts_enc6x_steal: 2798 lbzu 0,1(30) 2799 stb 0,16(30) 2800 bc 16,0,.Loop_xts_enc6x_steal 2801 2802 li 31,0 2803 mtctr 9 2804 b .Loop_xts_enc1x 2805 2806.align 4 2807.Lxts_enc6x_done: 2808 cmplwi 8,0 2809 beq .Lxts_enc6x_ret 2810 2811 vxor 8,17,23 2812 2813.long 0x7D004799 2814 2815.Lxts_enc6x_ret: 2816 mtlr 11 2817 li 10,47 2818 li 11,63 2819 stvx 9,10,1 2820 addi 10,10,32 2821 stvx 9,11,1 2822 addi 11,11,32 2823 stvx 9,10,1 2824 addi 10,10,32 2825 stvx 9,11,1 2826 addi 11,11,32 2827 stvx 9,10,1 2828 addi 10,10,32 2829 stvx 9,11,1 2830 addi 11,11,32 2831 stvx 9,10,1 2832 addi 10,10,32 2833 stvx 9,11,1 2834 addi 11,11,32 2835 2836 mtspr 256,12 2837 lvx 20,10,1 2838 addi 10,10,32 2839 lvx 21,11,1 2840 addi 11,11,32 2841 lvx 22,10,1 2842 addi 10,10,32 2843 lvx 23,11,1 2844 addi 11,11,32 2845 lvx 24,10,1 2846 addi 10,10,32 2847 lvx 25,11,1 2848 addi 11,11,32 2849 lvx 26,10,1 2850 addi 10,10,32 2851 lvx 27,11,1 2852 addi 11,11,32 2853 lvx 28,10,1 2854 addi 10,10,32 2855 lvx 29,11,1 2856 addi 11,11,32 2857 lvx 30,10,1 2858 lvx 31,11,1 2859 lwz 26,368(1) 2860 lwz 27,372(1) 2861 lwz 28,376(1) 2862 lwz 29,380(1) 2863 lwz 30,384(1) 2864 lwz 31,388(1) 2865 addi 1,1,392 2866 blr 2867.long 0 2868.byte 0,12,0x04,1,0x80,6,6,0 2869.long 0 2870 2871.align 5 2872_aesp8_xts_enc5x: 2873.long 0x10E7C508 2874.long 0x118CC508 2875.long 0x11ADC508 2876.long 0x11CEC508 2877.long 0x11EFC508 2878 lvx 24,26,7 2879 addi 7,7,0x20 2880 2881.long 0x10E7CD08 2882.long 0x118CCD08 2883.long 0x11ADCD08 2884.long 0x11CECD08 2885.long 0x11EFCD08 2886 lvx 25,3,7 2887 bc 16,0,_aesp8_xts_enc5x 2888 2889 add 10,10,31 2890 cmpwi 31,0 2891.long 0x10E7C508 2892.long 0x118CC508 2893.long 0x11ADC508 2894.long 0x11CEC508 2895.long 0x11EFC508 2896 2897 subi 10,10,16 2898.long 0x10E7CD08 2899.long 0x118CCD08 2900.long 0x11ADCD08 2901.long 0x11CECD08 2902.long 0x11EFCD08 2903 vxor 17,17,31 2904 2905.long 0x10E7D508 2906 lvsr 5,0,31 2907.long 0x118CD508 2908.long 0x11ADD508 2909.long 0x11CED508 2910.long 0x11EFD508 2911 vxor 1,18,31 2912 2913.long 0x10E7DD08 2914.long 0x7C005699 2915.long 0x118CDD08 2916.long 0x11ADDD08 2917.long 0x11CEDD08 2918.long 0x11EFDD08 2919 vxor 2,19,31 2920 2921 addi 7,1,32+15 2922.long 0x10E7E508 2923.long 0x118CE508 2924.long 0x11ADE508 2925.long 0x11CEE508 2926.long 0x11EFE508 2927 lvx 24,0,7 2928 vxor 3,20,31 2929 2930.long 0x10E7ED08 2931 2932.long 0x118CED08 2933.long 0x11ADED08 2934.long 0x11CEED08 2935.long 0x11EFED08 2936 lvx 25,3,7 2937 vxor 4,21,31 2938 2939.long 0x10E7F508 2940 vperm 0,0,0,5 2941.long 0x118CF508 2942.long 0x11ADF508 2943.long 0x11CEF508 2944.long 0x11EFF508 2945 2946.long 0x10E78D09 2947.long 0x118C0D09 2948.long 0x11AD1509 2949.long 0x11CE1D09 2950.long 0x11EF2509 2951 blr 2952.long 0 2953.byte 0,12,0x14,0,0,0,0,0 2954 2955.align 5 2956_aesp8_xts_decrypt6x: 2957 stwu 1,-392(1) 2958 mflr 11 2959 li 7,175 2960 li 3,191 2961 stw 11,396(1) 2962 stvx 20,7,1 2963 addi 7,7,32 2964 stvx 21,3,1 2965 addi 3,3,32 2966 stvx 22,7,1 2967 addi 7,7,32 2968 stvx 23,3,1 2969 addi 3,3,32 2970 stvx 24,7,1 2971 addi 7,7,32 2972 stvx 25,3,1 2973 addi 3,3,32 2974 stvx 26,7,1 2975 addi 7,7,32 2976 stvx 27,3,1 2977 addi 3,3,32 2978 stvx 28,7,1 2979 addi 7,7,32 2980 stvx 29,3,1 2981 addi 3,3,32 2982 stvx 30,7,1 2983 stvx 31,3,1 2984 li 0,-1 2985 stw 12,364(1) 2986 li 3,0x10 2987 stw 26,368(1) 2988 li 26,0x20 2989 stw 27,372(1) 2990 li 27,0x30 2991 stw 28,376(1) 2992 li 28,0x40 2993 stw 29,380(1) 2994 li 29,0x50 2995 stw 30,384(1) 2996 li 30,0x60 2997 stw 31,388(1) 2998 li 31,0x70 2999 mtspr 256,0 3000 3001 subi 9,9,3 3002 3003 lvx 23,0,6 3004 lvx 30,3,6 3005 addi 6,6,0x20 3006 lvx 31,0,6 3007 vperm 23,23,30,7 3008 addi 7,1,32+15 3009 mtctr 9 3010 3011.Load_xts_dec_key: 3012 vperm 24,30,31,7 3013 lvx 30,3,6 3014 addi 6,6,0x20 3015 stvx 24,0,7 3016 vperm 25,31,30,7 3017 lvx 31,0,6 3018 stvx 25,3,7 3019 addi 7,7,0x20 3020 bc 16,0,.Load_xts_dec_key 3021 3022 lvx 26,3,6 3023 vperm 24,30,31,7 3024 lvx 27,26,6 3025 stvx 24,0,7 3026 vperm 25,31,26,7 3027 lvx 28,27,6 3028 stvx 25,3,7 3029 addi 7,1,32+15 3030 vperm 26,26,27,7 3031 lvx 29,28,6 3032 vperm 27,27,28,7 3033 lvx 30,29,6 3034 vperm 28,28,29,7 3035 lvx 31,30,6 3036 vperm 29,29,30,7 3037 lvx 22,31,6 3038 vperm 30,30,31,7 3039 lvx 24,0,7 3040 vperm 31,31,22,7 3041 lvx 25,3,7 3042 3043 vperm 0,2,4,5 3044 subi 10,10,31 3045 vxor 17,8,23 3046 vsrab 11,8,9 3047 vaddubm 8,8,8 3048 vsldoi 11,11,11,15 3049 vand 11,11,10 3050 vxor 7,0,17 3051 vxor 8,8,11 3052 3053.long 0x7C235699 3054 vxor 18,8,23 3055 vsrab 11,8,9 3056 vaddubm 8,8,8 3057 vsldoi 11,11,11,15 3058 3059 vand 11,11,10 3060 vxor 12,1,18 3061 vxor 8,8,11 3062 3063.long 0x7C5A5699 3064 andi. 31,5,15 3065 vxor 19,8,23 3066 vsrab 11,8,9 3067 vaddubm 8,8,8 3068 vsldoi 11,11,11,15 3069 3070 vand 11,11,10 3071 vxor 13,2,19 3072 vxor 8,8,11 3073 3074.long 0x7C7B5699 3075 sub 5,5,31 3076 vxor 20,8,23 3077 vsrab 11,8,9 3078 vaddubm 8,8,8 3079 vsldoi 11,11,11,15 3080 3081 vand 11,11,10 3082 vxor 14,3,20 3083 vxor 8,8,11 3084 3085.long 0x7C9C5699 3086 subi 5,5,0x60 3087 vxor 21,8,23 3088 vsrab 11,8,9 3089 vaddubm 8,8,8 3090 vsldoi 11,11,11,15 3091 3092 vand 11,11,10 3093 vxor 15,4,21 3094 vxor 8,8,11 3095 3096.long 0x7CBD5699 3097 addi 10,10,0x60 3098 vxor 22,8,23 3099 vsrab 11,8,9 3100 vaddubm 8,8,8 3101 vsldoi 11,11,11,15 3102 3103 vand 11,11,10 3104 vxor 16,5,22 3105 vxor 8,8,11 3106 3107 vxor 31,31,23 3108 mtctr 9 3109 b .Loop_xts_dec6x 3110 3111.align 5 3112.Loop_xts_dec6x: 3113.long 0x10E7C548 3114.long 0x118CC548 3115.long 0x11ADC548 3116.long 0x11CEC548 3117.long 0x11EFC548 3118.long 0x1210C548 3119 lvx 24,26,7 3120 addi 7,7,0x20 3121 3122.long 0x10E7CD48 3123.long 0x118CCD48 3124.long 0x11ADCD48 3125.long 0x11CECD48 3126.long 0x11EFCD48 3127.long 0x1210CD48 3128 lvx 25,3,7 3129 bc 16,0,.Loop_xts_dec6x 3130 3131 subic 5,5,96 3132 vxor 0,17,31 3133.long 0x10E7C548 3134.long 0x118CC548 3135 vsrab 11,8,9 3136 vxor 17,8,23 3137 vaddubm 8,8,8 3138.long 0x11ADC548 3139.long 0x11CEC548 3140 vsldoi 11,11,11,15 3141.long 0x11EFC548 3142.long 0x1210C548 3143 3144 subfe. 0,0,0 3145 vand 11,11,10 3146.long 0x10E7CD48 3147.long 0x118CCD48 3148 vxor 8,8,11 3149.long 0x11ADCD48 3150.long 0x11CECD48 3151 vxor 1,18,31 3152 vsrab 11,8,9 3153 vxor 18,8,23 3154.long 0x11EFCD48 3155.long 0x1210CD48 3156 3157 and 0,0,5 3158 vaddubm 8,8,8 3159 vsldoi 11,11,11,15 3160.long 0x10E7D548 3161.long 0x118CD548 3162 vand 11,11,10 3163.long 0x11ADD548 3164.long 0x11CED548 3165 vxor 8,8,11 3166.long 0x11EFD548 3167.long 0x1210D548 3168 3169 add 10,10,0 3170 3171 3172 3173 vxor 2,19,31 3174 vsrab 11,8,9 3175 vxor 19,8,23 3176 vaddubm 8,8,8 3177.long 0x10E7DD48 3178.long 0x118CDD48 3179 vsldoi 11,11,11,15 3180.long 0x11ADDD48 3181.long 0x11CEDD48 3182 vand 11,11,10 3183.long 0x11EFDD48 3184.long 0x1210DD48 3185 3186 addi 7,1,32+15 3187 vxor 8,8,11 3188.long 0x10E7E548 3189.long 0x118CE548 3190 vxor 3,20,31 3191 vsrab 11,8,9 3192 vxor 20,8,23 3193.long 0x11ADE548 3194.long 0x11CEE548 3195 vaddubm 8,8,8 3196 vsldoi 11,11,11,15 3197.long 0x11EFE548 3198.long 0x1210E548 3199 lvx 24,0,7 3200 vand 11,11,10 3201 3202.long 0x10E7ED48 3203.long 0x118CED48 3204 vxor 8,8,11 3205.long 0x11ADED48 3206.long 0x11CEED48 3207 vxor 4,21,31 3208 vsrab 11,8,9 3209 vxor 21,8,23 3210.long 0x11EFED48 3211.long 0x1210ED48 3212 lvx 25,3,7 3213 vaddubm 8,8,8 3214 vsldoi 11,11,11,15 3215 3216.long 0x10E7F548 3217.long 0x118CF548 3218 vand 11,11,10 3219.long 0x11ADF548 3220.long 0x11CEF548 3221 vxor 8,8,11 3222.long 0x11EFF548 3223.long 0x1210F548 3224 vxor 5,22,31 3225 vsrab 11,8,9 3226 vxor 22,8,23 3227 3228.long 0x10E70549 3229.long 0x7C005699 3230 vaddubm 8,8,8 3231 vsldoi 11,11,11,15 3232.long 0x118C0D49 3233.long 0x7C235699 3234.long 0x11AD1549 3235 3236.long 0x7C5A5699 3237 vand 11,11,10 3238.long 0x11CE1D49 3239 3240.long 0x7C7B5699 3241.long 0x11EF2549 3242 3243.long 0x7C9C5699 3244 vxor 8,8,11 3245.long 0x12102D49 3246 3247.long 0x7CBD5699 3248 addi 10,10,0x60 3249 3250 3251 3252 3253 3254.long 0x7CE02799 3255 vxor 7,0,17 3256 3257.long 0x7D832799 3258 vxor 12,1,18 3259 3260.long 0x7DBA2799 3261 vxor 13,2,19 3262 3263.long 0x7DDB2799 3264 vxor 14,3,20 3265 3266.long 0x7DFC2799 3267 vxor 15,4,21 3268.long 0x7E1D2799 3269 vxor 16,5,22 3270 addi 4,4,0x60 3271 3272 mtctr 9 3273 beq .Loop_xts_dec6x 3274 3275 addic. 5,5,0x60 3276 beq .Lxts_dec6x_zero 3277 cmpwi 5,0x20 3278 blt .Lxts_dec6x_one 3279 nop 3280 beq .Lxts_dec6x_two 3281 cmpwi 5,0x40 3282 blt .Lxts_dec6x_three 3283 nop 3284 beq .Lxts_dec6x_four 3285 3286.Lxts_dec6x_five: 3287 vxor 7,1,17 3288 vxor 12,2,18 3289 vxor 13,3,19 3290 vxor 14,4,20 3291 vxor 15,5,21 3292 3293 bl _aesp8_xts_dec5x 3294 3295 3296 vor 17,22,22 3297 vxor 18,8,23 3298 3299.long 0x7CE02799 3300 vxor 7,0,18 3301 3302.long 0x7D832799 3303 3304.long 0x7DBA2799 3305 3306.long 0x7DDB2799 3307.long 0x7DFC2799 3308 addi 4,4,0x50 3309 bne .Lxts_dec6x_steal 3310 b .Lxts_dec6x_done 3311 3312.align 4 3313.Lxts_dec6x_four: 3314 vxor 7,2,17 3315 vxor 12,3,18 3316 vxor 13,4,19 3317 vxor 14,5,20 3318 vxor 15,15,15 3319 3320 bl _aesp8_xts_dec5x 3321 3322 3323 vor 17,21,21 3324 vor 18,22,22 3325 3326.long 0x7CE02799 3327 vxor 7,0,22 3328 3329.long 0x7D832799 3330 3331.long 0x7DBA2799 3332.long 0x7DDB2799 3333 addi 4,4,0x40 3334 bne .Lxts_dec6x_steal 3335 b .Lxts_dec6x_done 3336 3337.align 4 3338.Lxts_dec6x_three: 3339 vxor 7,3,17 3340 vxor 12,4,18 3341 vxor 13,5,19 3342 vxor 14,14,14 3343 vxor 15,15,15 3344 3345 bl _aesp8_xts_dec5x 3346 3347 3348 vor 17,20,20 3349 vor 18,21,21 3350 3351.long 0x7CE02799 3352 vxor 7,0,21 3353 3354.long 0x7D832799 3355.long 0x7DBA2799 3356 addi 4,4,0x30 3357 bne .Lxts_dec6x_steal 3358 b .Lxts_dec6x_done 3359 3360.align 4 3361.Lxts_dec6x_two: 3362 vxor 7,4,17 3363 vxor 12,5,18 3364 vxor 13,13,13 3365 vxor 14,14,14 3366 vxor 15,15,15 3367 3368 bl _aesp8_xts_dec5x 3369 3370 3371 vor 17,19,19 3372 vor 18,20,20 3373 3374.long 0x7CE02799 3375 vxor 7,0,20 3376.long 0x7D832799 3377 addi 4,4,0x20 3378 bne .Lxts_dec6x_steal 3379 b .Lxts_dec6x_done 3380 3381.align 4 3382.Lxts_dec6x_one: 3383 vxor 7,5,17 3384 nop 3385.Loop_xts_dec1x: 3386.long 0x10E7C548 3387 lvx 24,26,7 3388 addi 7,7,0x20 3389 3390.long 0x10E7CD48 3391 lvx 25,3,7 3392 bc 16,0,.Loop_xts_dec1x 3393 3394 subi 0,31,1 3395.long 0x10E7C548 3396 3397 andi. 0,0,16 3398 cmpwi 31,0 3399.long 0x10E7CD48 3400 3401 sub 10,10,0 3402.long 0x10E7D548 3403 3404.long 0x7C005699 3405.long 0x10E7DD48 3406 3407 addi 7,1,32+15 3408.long 0x10E7E548 3409 lvx 24,0,7 3410 3411.long 0x10E7ED48 3412 lvx 25,3,7 3413 vxor 17,17,31 3414 3415 3416.long 0x10E7F548 3417 3418 mtctr 9 3419.long 0x10E78D49 3420 3421 vor 17,18,18 3422 vor 18,19,19 3423 3424.long 0x7CE02799 3425 addi 4,4,0x10 3426 vxor 7,0,19 3427 bne .Lxts_dec6x_steal 3428 b .Lxts_dec6x_done 3429 3430.align 4 3431.Lxts_dec6x_zero: 3432 cmpwi 31,0 3433 beq .Lxts_dec6x_done 3434 3435.long 0x7C005699 3436 3437 vxor 7,0,18 3438.Lxts_dec6x_steal: 3439.long 0x10E7C548 3440 lvx 24,26,7 3441 addi 7,7,0x20 3442 3443.long 0x10E7CD48 3444 lvx 25,3,7 3445 bc 16,0,.Lxts_dec6x_steal 3446 3447 add 10,10,31 3448.long 0x10E7C548 3449 3450 cmpwi 31,0 3451.long 0x10E7CD48 3452 3453.long 0x7C005699 3454.long 0x10E7D548 3455 3456 lvsr 5,0,31 3457.long 0x10E7DD48 3458 3459 addi 7,1,32+15 3460.long 0x10E7E548 3461 lvx 24,0,7 3462 3463.long 0x10E7ED48 3464 lvx 25,3,7 3465 vxor 18,18,31 3466 3467 3468.long 0x10E7F548 3469 3470 vperm 0,0,0,5 3471.long 0x11679549 3472 3473 3474 3475.long 0x7D602799 3476 3477 vxor 7,7,7 3478 vspltisb 12,-1 3479 vperm 7,7,12,5 3480 vsel 7,0,11,7 3481 vxor 7,7,17 3482 3483 subi 30,4,1 3484 mtctr 31 3485.Loop_xts_dec6x_steal: 3486 lbzu 0,1(30) 3487 stb 0,16(30) 3488 bc 16,0,.Loop_xts_dec6x_steal 3489 3490 li 31,0 3491 mtctr 9 3492 b .Loop_xts_dec1x 3493 3494.align 4 3495.Lxts_dec6x_done: 3496 cmplwi 8,0 3497 beq .Lxts_dec6x_ret 3498 3499 vxor 8,17,23 3500 3501.long 0x7D004799 3502 3503.Lxts_dec6x_ret: 3504 mtlr 11 3505 li 10,47 3506 li 11,63 3507 stvx 9,10,1 3508 addi 10,10,32 3509 stvx 9,11,1 3510 addi 11,11,32 3511 stvx 9,10,1 3512 addi 10,10,32 3513 stvx 9,11,1 3514 addi 11,11,32 3515 stvx 9,10,1 3516 addi 10,10,32 3517 stvx 9,11,1 3518 addi 11,11,32 3519 stvx 9,10,1 3520 addi 10,10,32 3521 stvx 9,11,1 3522 addi 11,11,32 3523 3524 mtspr 256,12 3525 lvx 20,10,1 3526 addi 10,10,32 3527 lvx 21,11,1 3528 addi 11,11,32 3529 lvx 22,10,1 3530 addi 10,10,32 3531 lvx 23,11,1 3532 addi 11,11,32 3533 lvx 24,10,1 3534 addi 10,10,32 3535 lvx 25,11,1 3536 addi 11,11,32 3537 lvx 26,10,1 3538 addi 10,10,32 3539 lvx 27,11,1 3540 addi 11,11,32 3541 lvx 28,10,1 3542 addi 10,10,32 3543 lvx 29,11,1 3544 addi 11,11,32 3545 lvx 30,10,1 3546 lvx 31,11,1 3547 lwz 26,368(1) 3548 lwz 27,372(1) 3549 lwz 28,376(1) 3550 lwz 29,380(1) 3551 lwz 30,384(1) 3552 lwz 31,388(1) 3553 addi 1,1,392 3554 blr 3555.long 0 3556.byte 0,12,0x04,1,0x80,6,6,0 3557.long 0 3558 3559.align 5 3560_aesp8_xts_dec5x: 3561.long 0x10E7C548 3562.long 0x118CC548 3563.long 0x11ADC548 3564.long 0x11CEC548 3565.long 0x11EFC548 3566 lvx 24,26,7 3567 addi 7,7,0x20 3568 3569.long 0x10E7CD48 3570.long 0x118CCD48 3571.long 0x11ADCD48 3572.long 0x11CECD48 3573.long 0x11EFCD48 3574 lvx 25,3,7 3575 bc 16,0,_aesp8_xts_dec5x 3576 3577 subi 0,31,1 3578.long 0x10E7C548 3579.long 0x118CC548 3580.long 0x11ADC548 3581.long 0x11CEC548 3582.long 0x11EFC548 3583 3584 andi. 0,0,16 3585 cmpwi 31,0 3586.long 0x10E7CD48 3587.long 0x118CCD48 3588.long 0x11ADCD48 3589.long 0x11CECD48 3590.long 0x11EFCD48 3591 vxor 17,17,31 3592 3593 sub 10,10,0 3594.long 0x10E7D548 3595.long 0x118CD548 3596.long 0x11ADD548 3597.long 0x11CED548 3598.long 0x11EFD548 3599 vxor 1,18,31 3600 3601.long 0x10E7DD48 3602.long 0x7C005699 3603.long 0x118CDD48 3604.long 0x11ADDD48 3605.long 0x11CEDD48 3606.long 0x11EFDD48 3607 vxor 2,19,31 3608 3609 addi 7,1,32+15 3610.long 0x10E7E548 3611.long 0x118CE548 3612.long 0x11ADE548 3613.long 0x11CEE548 3614.long 0x11EFE548 3615 lvx 24,0,7 3616 vxor 3,20,31 3617 3618.long 0x10E7ED48 3619 3620.long 0x118CED48 3621.long 0x11ADED48 3622.long 0x11CEED48 3623.long 0x11EFED48 3624 lvx 25,3,7 3625 vxor 4,21,31 3626 3627.long 0x10E7F548 3628.long 0x118CF548 3629.long 0x11ADF548 3630.long 0x11CEF548 3631.long 0x11EFF548 3632 3633.long 0x10E78D49 3634.long 0x118C0D49 3635.long 0x11AD1549 3636.long 0x11CE1D49 3637.long 0x11EF2549 3638 mtctr 9 3639 blr 3640.long 0 3641.byte 0,12,0x14,0,0,0,0,0 3642