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.long 0x0f102132, 0x43546576, 0x8798a9ba, 0xcbdcedfe 12.Lconsts: 13 mflr 0 14 bcl 20,31,$+4 15 mflr 6 16 addi 6,6,-0x58 17 mtlr 0 18 blr 19.long 0 20.byte 0,12,0x14,0,0,0,0,0 21.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 22.align 2 23 24.globl aes_p8_set_encrypt_key 25.type aes_p8_set_encrypt_key,@function 26.align 5 27aes_p8_set_encrypt_key: 28.Lset_encrypt_key: 29 mflr 11 30 stw 11,4(1) 31 32 li 6,-1 33 cmplwi 3,0 34 beq- .Lenc_key_abort 35 cmplwi 5,0 36 beq- .Lenc_key_abort 37 li 6,-2 38 cmpwi 4,128 39 blt- .Lenc_key_abort 40 cmpwi 4,256 41 bgt- .Lenc_key_abort 42 andi. 0,4,0x3f 43 bne- .Lenc_key_abort 44 45 lis 0,0xfff0 46 mfspr 12,256 47 mtspr 256,0 48 49 bl .Lconsts 50 mtlr 11 51 52 neg 9,3 53 lvx 1,0,3 54 addi 3,3,15 55 lvsr 3,0,9 56 li 8,0x20 57 cmpwi 4,192 58 lvx 2,0,3 59 60 lvx 4,0,6 61 62 lvx 5,8,6 63 addi 6,6,0x10 64 vperm 1,1,2,3 65 li 7,8 66 vxor 0,0,0 67 mtctr 7 68 69 lvsr 8,0,5 70 vspltisb 9,-1 71 lvx 10,0,5 72 vperm 9,0,9,8 73 74 blt .Loop128 75 addi 3,3,8 76 beq .L192 77 addi 3,3,8 78 b .L256 79 80.align 4 81.Loop128: 82 vperm 3,1,1,5 83 vsldoi 6,0,1,12 84 vperm 11,1,1,8 85 vsel 7,10,11,9 86 vor 10,11,11 87.long 0x10632509 88 stvx 7,0,5 89 addi 5,5,16 90 91 vxor 1,1,6 92 vsldoi 6,0,6,12 93 vxor 1,1,6 94 vsldoi 6,0,6,12 95 vxor 1,1,6 96 vadduwm 4,4,4 97 vxor 1,1,3 98 bc 16,0,.Loop128 99 100 lvx 4,0,6 101 102 vperm 3,1,1,5 103 vsldoi 6,0,1,12 104 vperm 11,1,1,8 105 vsel 7,10,11,9 106 vor 10,11,11 107.long 0x10632509 108 stvx 7,0,5 109 addi 5,5,16 110 111 vxor 1,1,6 112 vsldoi 6,0,6,12 113 vxor 1,1,6 114 vsldoi 6,0,6,12 115 vxor 1,1,6 116 vadduwm 4,4,4 117 vxor 1,1,3 118 119 vperm 3,1,1,5 120 vsldoi 6,0,1,12 121 vperm 11,1,1,8 122 vsel 7,10,11,9 123 vor 10,11,11 124.long 0x10632509 125 stvx 7,0,5 126 addi 5,5,16 127 128 vxor 1,1,6 129 vsldoi 6,0,6,12 130 vxor 1,1,6 131 vsldoi 6,0,6,12 132 vxor 1,1,6 133 vxor 1,1,3 134 vperm 11,1,1,8 135 vsel 7,10,11,9 136 vor 10,11,11 137 stvx 7,0,5 138 139 addi 3,5,15 140 addi 5,5,0x50 141 142 li 8,10 143 b .Ldone 144 145.align 4 146.L192: 147 lvx 6,0,3 148 li 7,4 149 vperm 11,1,1,8 150 vsel 7,10,11,9 151 vor 10,11,11 152 stvx 7,0,5 153 addi 5,5,16 154 vperm 2,2,6,3 155 vspltisb 3,8 156 mtctr 7 157 vsububm 5,5,3 158 159.Loop192: 160 vperm 3,2,2,5 161 vsldoi 6,0,1,12 162.long 0x10632509 163 164 vxor 1,1,6 165 vsldoi 6,0,6,12 166 vxor 1,1,6 167 vsldoi 6,0,6,12 168 vxor 1,1,6 169 170 vsldoi 7,0,2,8 171 vspltw 6,1,3 172 vxor 6,6,2 173 vsldoi 2,0,2,12 174 vadduwm 4,4,4 175 vxor 2,2,6 176 vxor 1,1,3 177 vxor 2,2,3 178 vsldoi 7,7,1,8 179 180 vperm 3,2,2,5 181 vsldoi 6,0,1,12 182 vperm 11,7,7,8 183 vsel 7,10,11,9 184 vor 10,11,11 185.long 0x10632509 186 stvx 7,0,5 187 addi 5,5,16 188 189 vsldoi 7,1,2,8 190 vxor 1,1,6 191 vsldoi 6,0,6,12 192 vperm 11,7,7,8 193 vsel 7,10,11,9 194 vor 10,11,11 195 vxor 1,1,6 196 vsldoi 6,0,6,12 197 vxor 1,1,6 198 stvx 7,0,5 199 addi 5,5,16 200 201 vspltw 6,1,3 202 vxor 6,6,2 203 vsldoi 2,0,2,12 204 vadduwm 4,4,4 205 vxor 2,2,6 206 vxor 1,1,3 207 vxor 2,2,3 208 vperm 11,1,1,8 209 vsel 7,10,11,9 210 vor 10,11,11 211 stvx 7,0,5 212 addi 3,5,15 213 addi 5,5,16 214 bc 16,0,.Loop192 215 216 li 8,12 217 addi 5,5,0x20 218 b .Ldone 219 220.align 4 221.L256: 222 lvx 6,0,3 223 li 7,7 224 li 8,14 225 vperm 11,1,1,8 226 vsel 7,10,11,9 227 vor 10,11,11 228 stvx 7,0,5 229 addi 5,5,16 230 vperm 2,2,6,3 231 mtctr 7 232 233.Loop256: 234 vperm 3,2,2,5 235 vsldoi 6,0,1,12 236 vperm 11,2,2,8 237 vsel 7,10,11,9 238 vor 10,11,11 239.long 0x10632509 240 stvx 7,0,5 241 addi 5,5,16 242 243 vxor 1,1,6 244 vsldoi 6,0,6,12 245 vxor 1,1,6 246 vsldoi 6,0,6,12 247 vxor 1,1,6 248 vadduwm 4,4,4 249 vxor 1,1,3 250 vperm 11,1,1,8 251 vsel 7,10,11,9 252 vor 10,11,11 253 stvx 7,0,5 254 addi 3,5,15 255 addi 5,5,16 256 bdz .Ldone 257 258 vspltw 3,1,3 259 vsldoi 6,0,2,12 260.long 0x106305C8 261 262 vxor 2,2,6 263 vsldoi 6,0,6,12 264 vxor 2,2,6 265 vsldoi 6,0,6,12 266 vxor 2,2,6 267 268 vxor 2,2,3 269 b .Loop256 270 271.align 4 272.Ldone: 273 lvx 2,0,3 274 vsel 2,10,2,9 275 stvx 2,0,3 276 li 6,0 277 mtspr 256,12 278 stw 8,0(5) 279 280.Lenc_key_abort: 281 mr 3,6 282 blr 283.long 0 284.byte 0,12,0x14,1,0,0,3,0 285.long 0 286 287 288.globl aes_p8_set_decrypt_key 289.type aes_p8_set_decrypt_key,@function 290.align 5 291aes_p8_set_decrypt_key: 292 stwu 1,-32(1) 293 mflr 10 294 stw 10,32+4(1) 295 bl .Lset_encrypt_key 296 mtlr 10 297 298 cmpwi 3,0 299 bne- .Ldec_key_abort 300 301 slwi 7,8,4 302 subi 3,5,240 303 srwi 8,8,1 304 add 5,3,7 305 mtctr 8 306 307.Ldeckey: 308 lwz 0, 0(3) 309 lwz 6, 4(3) 310 lwz 7, 8(3) 311 lwz 8, 12(3) 312 addi 3,3,16 313 lwz 9, 0(5) 314 lwz 10,4(5) 315 lwz 11,8(5) 316 lwz 12,12(5) 317 stw 0, 0(5) 318 stw 6, 4(5) 319 stw 7, 8(5) 320 stw 8, 12(5) 321 subi 5,5,16 322 stw 9, -16(3) 323 stw 10,-12(3) 324 stw 11,-8(3) 325 stw 12,-4(3) 326 bc 16,0,.Ldeckey 327 328 xor 3,3,3 329.Ldec_key_abort: 330 addi 1,1,32 331 blr 332.long 0 333.byte 0,12,4,1,0x80,0,3,0 334.long 0 335 336.globl aes_p8_encrypt 337.type aes_p8_encrypt,@function 338.align 5 339aes_p8_encrypt: 340 lwz 6,240(5) 341 lis 0,0xfc00 342 mfspr 12,256 343 li 7,15 344 mtspr 256,0 345 346 lvx 0,0,3 347 neg 11,4 348 lvx 1,7,3 349 lvsl 2,0,3 350 351 lvsl 3,0,11 352 353 li 7,16 354 vperm 0,0,1,2 355 lvx 1,0,5 356 lvsl 5,0,5 357 srwi 6,6,1 358 lvx 2,7,5 359 addi 7,7,16 360 subi 6,6,1 361 vperm 1,1,2,5 362 363 vxor 0,0,1 364 lvx 1,7,5 365 addi 7,7,16 366 mtctr 6 367 368.Loop_enc: 369 vperm 2,2,1,5 370.long 0x10001508 371 lvx 2,7,5 372 addi 7,7,16 373 vperm 1,1,2,5 374.long 0x10000D08 375 lvx 1,7,5 376 addi 7,7,16 377 bc 16,0,.Loop_enc 378 379 vperm 2,2,1,5 380.long 0x10001508 381 lvx 2,7,5 382 vperm 1,1,2,5 383.long 0x10000D09 384 385 vspltisb 2,-1 386 vxor 1,1,1 387 li 7,15 388 vperm 2,1,2,3 389 390 lvx 1,0,4 391 vperm 0,0,0,3 392 vsel 1,1,0,2 393 lvx 4,7,4 394 stvx 1,0,4 395 vsel 0,0,4,2 396 stvx 0,7,4 397 398 mtspr 256,12 399 blr 400.long 0 401.byte 0,12,0x14,0,0,0,3,0 402.long 0 403 404.globl aes_p8_decrypt 405.type aes_p8_decrypt,@function 406.align 5 407aes_p8_decrypt: 408 lwz 6,240(5) 409 lis 0,0xfc00 410 mfspr 12,256 411 li 7,15 412 mtspr 256,0 413 414 lvx 0,0,3 415 neg 11,4 416 lvx 1,7,3 417 lvsl 2,0,3 418 419 lvsl 3,0,11 420 421 li 7,16 422 vperm 0,0,1,2 423 lvx 1,0,5 424 lvsl 5,0,5 425 srwi 6,6,1 426 lvx 2,7,5 427 addi 7,7,16 428 subi 6,6,1 429 vperm 1,1,2,5 430 431 vxor 0,0,1 432 lvx 1,7,5 433 addi 7,7,16 434 mtctr 6 435 436.Loop_dec: 437 vperm 2,2,1,5 438.long 0x10001548 439 lvx 2,7,5 440 addi 7,7,16 441 vperm 1,1,2,5 442.long 0x10000D48 443 lvx 1,7,5 444 addi 7,7,16 445 bc 16,0,.Loop_dec 446 447 vperm 2,2,1,5 448.long 0x10001548 449 lvx 2,7,5 450 vperm 1,1,2,5 451.long 0x10000D49 452 453 vspltisb 2,-1 454 vxor 1,1,1 455 li 7,15 456 vperm 2,1,2,3 457 458 lvx 1,0,4 459 vperm 0,0,0,3 460 vsel 1,1,0,2 461 lvx 4,7,4 462 stvx 1,0,4 463 vsel 0,0,4,2 464 stvx 0,7,4 465 466 mtspr 256,12 467 blr 468.long 0 469.byte 0,12,0x14,0,0,0,3,0 470.long 0 471 472.globl aes_p8_cbc_encrypt 473.type aes_p8_cbc_encrypt,@function 474.align 5 475aes_p8_cbc_encrypt: 476 cmplwi 5,16 477 bltlr 478 479 cmpwi 8,0 480 lis 0,0xffe0 481 mfspr 12,256 482 mtspr 256,0 483 484 li 10,15 485 vxor 0,0,0 486 487 488 lvx 4,0,7 489 lvsl 6,0,7 490 lvx 5,10,7 491 492 vperm 4,4,5,6 493 494 neg 11,3 495 lvsl 10,0,6 496 lwz 9,240(6) 497 498 lvsr 6,0,11 499 lvx 5,0,3 500 addi 3,3,15 501 502 503 lvsr 8,0,4 504 vspltisb 9,-1 505 lvx 7,0,4 506 vperm 9,0,9,8 507 508 509 srwi 9,9,1 510 li 10,16 511 subi 9,9,1 512 beq .Lcbc_dec 513 514.Lcbc_enc: 515 vor 2,5,5 516 lvx 5,0,3 517 addi 3,3,16 518 mtctr 9 519 subi 5,5,16 520 521 lvx 0,0,6 522 vperm 2,2,5,6 523 lvx 1,10,6 524 addi 10,10,16 525 vperm 0,0,1,10 526 vxor 2,2,0 527 lvx 0,10,6 528 addi 10,10,16 529 vxor 2,2,4 530 531.Loop_cbc_enc: 532 vperm 1,1,0,10 533.long 0x10420D08 534 lvx 1,10,6 535 addi 10,10,16 536 vperm 0,0,1,10 537.long 0x10420508 538 lvx 0,10,6 539 addi 10,10,16 540 bc 16,0,.Loop_cbc_enc 541 542 vperm 1,1,0,10 543.long 0x10420D08 544 lvx 1,10,6 545 li 10,16 546 vperm 0,0,1,10 547.long 0x10820509 548 cmplwi 5,16 549 550 vperm 3,4,4,8 551 vsel 2,7,3,9 552 vor 7,3,3 553 stvx 2,0,4 554 addi 4,4,16 555 bge .Lcbc_enc 556 557 b .Lcbc_done 558 559.align 4 560.Lcbc_dec: 561 cmplwi 5,128 562 bge _aesp8_cbc_decrypt8x 563 vor 3,5,5 564 lvx 5,0,3 565 addi 3,3,16 566 mtctr 9 567 subi 5,5,16 568 569 lvx 0,0,6 570 vperm 3,3,5,6 571 lvx 1,10,6 572 addi 10,10,16 573 vperm 0,0,1,10 574 vxor 2,3,0 575 lvx 0,10,6 576 addi 10,10,16 577 578.Loop_cbc_dec: 579 vperm 1,1,0,10 580.long 0x10420D48 581 lvx 1,10,6 582 addi 10,10,16 583 vperm 0,0,1,10 584.long 0x10420548 585 lvx 0,10,6 586 addi 10,10,16 587 bc 16,0,.Loop_cbc_dec 588 589 vperm 1,1,0,10 590.long 0x10420D48 591 lvx 1,10,6 592 li 10,16 593 vperm 0,0,1,10 594.long 0x10420549 595 cmplwi 5,16 596 597 vxor 2,2,4 598 vor 4,3,3 599 vperm 3,2,2,8 600 vsel 2,7,3,9 601 vor 7,3,3 602 stvx 2,0,4 603 addi 4,4,16 604 bge .Lcbc_dec 605 606.Lcbc_done: 607 addi 4,4,-1 608 lvx 2,0,4 609 vsel 2,7,2,9 610 stvx 2,0,4 611 612 neg 8,7 613 li 10,15 614 vxor 0,0,0 615 vspltisb 9,-1 616 617 lvsl 8,0,8 618 vperm 9,0,9,8 619 620 lvx 7,0,7 621 vperm 4,4,4,8 622 vsel 2,7,4,9 623 lvx 5,10,7 624 stvx 2,0,7 625 vsel 2,4,5,9 626 stvx 2,10,7 627 628 mtspr 256,12 629 blr 630.long 0 631.byte 0,12,0x14,0,0,0,6,0 632.long 0 633.align 5 634_aesp8_cbc_decrypt8x: 635 stwu 1,-392(1) 636 li 10,175 637 li 11,191 638 stvx 20,10,1 639 addi 10,10,32 640 stvx 21,11,1 641 addi 11,11,32 642 stvx 22,10,1 643 addi 10,10,32 644 stvx 23,11,1 645 addi 11,11,32 646 stvx 24,10,1 647 addi 10,10,32 648 stvx 25,11,1 649 addi 11,11,32 650 stvx 26,10,1 651 addi 10,10,32 652 stvx 27,11,1 653 addi 11,11,32 654 stvx 28,10,1 655 addi 10,10,32 656 stvx 29,11,1 657 addi 11,11,32 658 stvx 30,10,1 659 stvx 31,11,1 660 li 0,-1 661 stw 12,364(1) 662 li 8,0x10 663 stw 26,368(1) 664 li 26,0x20 665 stw 27,372(1) 666 li 27,0x30 667 stw 28,376(1) 668 li 28,0x40 669 stw 29,380(1) 670 li 29,0x50 671 stw 30,384(1) 672 li 30,0x60 673 stw 31,388(1) 674 li 31,0x70 675 mtspr 256,0 676 677 subi 9,9,3 678 subi 5,5,128 679 680 lvx 23,0,6 681 lvx 30,8,6 682 addi 6,6,0x20 683 lvx 31,0,6 684 vperm 23,23,30,10 685 addi 11,1,32+15 686 mtctr 9 687 688.Load_cbc_dec_key: 689 vperm 24,30,31,10 690 lvx 30,8,6 691 addi 6,6,0x20 692 stvx 24,0,11 693 vperm 25,31,30,10 694 lvx 31,0,6 695 stvx 25,8,11 696 addi 11,11,0x20 697 bc 16,0,.Load_cbc_dec_key 698 699 lvx 26,8,6 700 vperm 24,30,31,10 701 lvx 27,26,6 702 stvx 24,0,11 703 vperm 25,31,26,10 704 lvx 28,27,6 705 stvx 25,8,11 706 addi 11,1,32+15 707 vperm 26,26,27,10 708 lvx 29,28,6 709 vperm 27,27,28,10 710 lvx 30,29,6 711 vperm 28,28,29,10 712 lvx 31,30,6 713 vperm 29,29,30,10 714 lvx 14,31,6 715 vperm 30,30,31,10 716 lvx 24,0,11 717 vperm 31,31,14,10 718 lvx 25,8,11 719 720 721 722 subi 3,3,15 723 724 725.long 0x7C001E99 726 727 728.long 0x7C281E99 729 730.long 0x7C5A1E99 731 732.long 0x7C7B1E99 733 734.long 0x7D5C1E99 735 736 vxor 14,0,23 737.long 0x7D7D1E99 738 739 vxor 15,1,23 740.long 0x7D9E1E99 741 742 vxor 16,2,23 743.long 0x7DBF1E99 744 addi 3,3,0x80 745 746 vxor 17,3,23 747 748 vxor 18,10,23 749 750 vxor 19,11,23 751 vxor 20,12,23 752 vxor 21,13,23 753 754 mtctr 9 755 b .Loop_cbc_dec8x 756.align 5 757.Loop_cbc_dec8x: 758.long 0x11CEC548 759.long 0x11EFC548 760.long 0x1210C548 761.long 0x1231C548 762.long 0x1252C548 763.long 0x1273C548 764.long 0x1294C548 765.long 0x12B5C548 766 lvx 24,26,11 767 addi 11,11,0x20 768 769.long 0x11CECD48 770.long 0x11EFCD48 771.long 0x1210CD48 772.long 0x1231CD48 773.long 0x1252CD48 774.long 0x1273CD48 775.long 0x1294CD48 776.long 0x12B5CD48 777 lvx 25,8,11 778 bc 16,0,.Loop_cbc_dec8x 779 780 subic 5,5,128 781.long 0x11CEC548 782.long 0x11EFC548 783.long 0x1210C548 784.long 0x1231C548 785.long 0x1252C548 786.long 0x1273C548 787.long 0x1294C548 788.long 0x12B5C548 789 790 subfe. 0,0,0 791.long 0x11CECD48 792.long 0x11EFCD48 793.long 0x1210CD48 794.long 0x1231CD48 795.long 0x1252CD48 796.long 0x1273CD48 797.long 0x1294CD48 798.long 0x12B5CD48 799 800 and 0,0,5 801.long 0x11CED548 802.long 0x11EFD548 803.long 0x1210D548 804.long 0x1231D548 805.long 0x1252D548 806.long 0x1273D548 807.long 0x1294D548 808.long 0x12B5D548 809 810 add 3,3,0 811 812 813 814.long 0x11CEDD48 815.long 0x11EFDD48 816.long 0x1210DD48 817.long 0x1231DD48 818.long 0x1252DD48 819.long 0x1273DD48 820.long 0x1294DD48 821.long 0x12B5DD48 822 823 addi 11,1,32+15 824.long 0x11CEE548 825.long 0x11EFE548 826.long 0x1210E548 827.long 0x1231E548 828.long 0x1252E548 829.long 0x1273E548 830.long 0x1294E548 831.long 0x12B5E548 832 lvx 24,0,11 833 834.long 0x11CEED48 835.long 0x11EFED48 836.long 0x1210ED48 837.long 0x1231ED48 838.long 0x1252ED48 839.long 0x1273ED48 840.long 0x1294ED48 841.long 0x12B5ED48 842 lvx 25,8,11 843 844.long 0x11CEF548 845 vxor 4,4,31 846.long 0x11EFF548 847 vxor 0,0,31 848.long 0x1210F548 849 vxor 1,1,31 850.long 0x1231F548 851 vxor 2,2,31 852.long 0x1252F548 853 vxor 3,3,31 854.long 0x1273F548 855 vxor 10,10,31 856.long 0x1294F548 857 vxor 11,11,31 858.long 0x12B5F548 859 vxor 12,12,31 860 861.long 0x11CE2549 862.long 0x11EF0549 863.long 0x7C001E99 864.long 0x12100D49 865.long 0x7C281E99 866.long 0x12311549 867 868.long 0x7C5A1E99 869.long 0x12521D49 870 871.long 0x7C7B1E99 872.long 0x12735549 873 874.long 0x7D5C1E99 875.long 0x12945D49 876 877.long 0x7D7D1E99 878.long 0x12B56549 879 880.long 0x7D9E1E99 881 vor 4,13,13 882 883.long 0x7DBF1E99 884 addi 3,3,0x80 885 886 887 888.long 0x7DC02799 889 890 vxor 14,0,23 891 892.long 0x7DE82799 893 894 vxor 15,1,23 895 896.long 0x7E1A2799 897 vxor 16,2,23 898 899.long 0x7E3B2799 900 vxor 17,3,23 901 902.long 0x7E5C2799 903 vxor 18,10,23 904 905.long 0x7E7D2799 906 vxor 19,11,23 907 908.long 0x7E9E2799 909 vxor 20,12,23 910.long 0x7EBF2799 911 addi 4,4,0x80 912 vxor 21,13,23 913 914 mtctr 9 915 beq .Loop_cbc_dec8x 916 917 addic. 5,5,128 918 beq .Lcbc_dec8x_done 919 nop 920 nop 921 922.Loop_cbc_dec8x_tail: 923.long 0x11EFC548 924.long 0x1210C548 925.long 0x1231C548 926.long 0x1252C548 927.long 0x1273C548 928.long 0x1294C548 929.long 0x12B5C548 930 lvx 24,26,11 931 addi 11,11,0x20 932 933.long 0x11EFCD48 934.long 0x1210CD48 935.long 0x1231CD48 936.long 0x1252CD48 937.long 0x1273CD48 938.long 0x1294CD48 939.long 0x12B5CD48 940 lvx 25,8,11 941 bc 16,0,.Loop_cbc_dec8x_tail 942 943.long 0x11EFC548 944.long 0x1210C548 945.long 0x1231C548 946.long 0x1252C548 947.long 0x1273C548 948.long 0x1294C548 949.long 0x12B5C548 950 951.long 0x11EFCD48 952.long 0x1210CD48 953.long 0x1231CD48 954.long 0x1252CD48 955.long 0x1273CD48 956.long 0x1294CD48 957.long 0x12B5CD48 958 959.long 0x11EFD548 960.long 0x1210D548 961.long 0x1231D548 962.long 0x1252D548 963.long 0x1273D548 964.long 0x1294D548 965.long 0x12B5D548 966 967.long 0x11EFDD48 968.long 0x1210DD48 969.long 0x1231DD48 970.long 0x1252DD48 971.long 0x1273DD48 972.long 0x1294DD48 973.long 0x12B5DD48 974 975.long 0x11EFE548 976.long 0x1210E548 977.long 0x1231E548 978.long 0x1252E548 979.long 0x1273E548 980.long 0x1294E548 981.long 0x12B5E548 982 983.long 0x11EFED48 984.long 0x1210ED48 985.long 0x1231ED48 986.long 0x1252ED48 987.long 0x1273ED48 988.long 0x1294ED48 989.long 0x12B5ED48 990 991.long 0x11EFF548 992 vxor 4,4,31 993.long 0x1210F548 994 vxor 1,1,31 995.long 0x1231F548 996 vxor 2,2,31 997.long 0x1252F548 998 vxor 3,3,31 999.long 0x1273F548 1000 vxor 10,10,31 1001.long 0x1294F548 1002 vxor 11,11,31 1003.long 0x12B5F548 1004 vxor 12,12,31 1005 1006 cmplwi 5,32 1007 blt .Lcbc_dec8x_one 1008 nop 1009 beq .Lcbc_dec8x_two 1010 cmplwi 5,64 1011 blt .Lcbc_dec8x_three 1012 nop 1013 beq .Lcbc_dec8x_four 1014 cmplwi 5,96 1015 blt .Lcbc_dec8x_five 1016 nop 1017 beq .Lcbc_dec8x_six 1018 1019.Lcbc_dec8x_seven: 1020.long 0x11EF2549 1021.long 0x12100D49 1022.long 0x12311549 1023.long 0x12521D49 1024.long 0x12735549 1025.long 0x12945D49 1026.long 0x12B56549 1027 vor 4,13,13 1028 1029 1030 1031.long 0x7DE02799 1032 1033.long 0x7E082799 1034 1035.long 0x7E3A2799 1036 1037.long 0x7E5B2799 1038 1039.long 0x7E7C2799 1040 1041.long 0x7E9D2799 1042.long 0x7EBE2799 1043 addi 4,4,0x70 1044 b .Lcbc_dec8x_done 1045 1046.align 5 1047.Lcbc_dec8x_six: 1048.long 0x12102549 1049.long 0x12311549 1050.long 0x12521D49 1051.long 0x12735549 1052.long 0x12945D49 1053.long 0x12B56549 1054 vor 4,13,13 1055 1056 1057 1058.long 0x7E002799 1059 1060.long 0x7E282799 1061 1062.long 0x7E5A2799 1063 1064.long 0x7E7B2799 1065 1066.long 0x7E9C2799 1067.long 0x7EBD2799 1068 addi 4,4,0x60 1069 b .Lcbc_dec8x_done 1070 1071.align 5 1072.Lcbc_dec8x_five: 1073.long 0x12312549 1074.long 0x12521D49 1075.long 0x12735549 1076.long 0x12945D49 1077.long 0x12B56549 1078 vor 4,13,13 1079 1080 1081 1082.long 0x7E202799 1083 1084.long 0x7E482799 1085 1086.long 0x7E7A2799 1087 1088.long 0x7E9B2799 1089.long 0x7EBC2799 1090 addi 4,4,0x50 1091 b .Lcbc_dec8x_done 1092 1093.align 5 1094.Lcbc_dec8x_four: 1095.long 0x12522549 1096.long 0x12735549 1097.long 0x12945D49 1098.long 0x12B56549 1099 vor 4,13,13 1100 1101 1102 1103.long 0x7E402799 1104 1105.long 0x7E682799 1106 1107.long 0x7E9A2799 1108.long 0x7EBB2799 1109 addi 4,4,0x40 1110 b .Lcbc_dec8x_done 1111 1112.align 5 1113.Lcbc_dec8x_three: 1114.long 0x12732549 1115.long 0x12945D49 1116.long 0x12B56549 1117 vor 4,13,13 1118 1119 1120 1121.long 0x7E602799 1122 1123.long 0x7E882799 1124.long 0x7EBA2799 1125 addi 4,4,0x30 1126 b .Lcbc_dec8x_done 1127 1128.align 5 1129.Lcbc_dec8x_two: 1130.long 0x12942549 1131.long 0x12B56549 1132 vor 4,13,13 1133 1134 1135 1136.long 0x7E802799 1137.long 0x7EA82799 1138 addi 4,4,0x20 1139 b .Lcbc_dec8x_done 1140 1141.align 5 1142.Lcbc_dec8x_one: 1143.long 0x12B52549 1144 vor 4,13,13 1145 1146 1147.long 0x7EA02799 1148 addi 4,4,0x10 1149 1150.Lcbc_dec8x_done: 1151 1152.long 0x7C803F99 1153 1154 li 10,47 1155 li 11,63 1156 stvx 6,10,1 1157 addi 10,10,32 1158 stvx 6,11,1 1159 addi 11,11,32 1160 stvx 6,10,1 1161 addi 10,10,32 1162 stvx 6,11,1 1163 addi 11,11,32 1164 stvx 6,10,1 1165 addi 10,10,32 1166 stvx 6,11,1 1167 addi 11,11,32 1168 stvx 6,10,1 1169 addi 10,10,32 1170 stvx 6,11,1 1171 addi 11,11,32 1172 1173 mtspr 256,12 1174 lvx 20,10,1 1175 addi 10,10,32 1176 lvx 21,11,1 1177 addi 11,11,32 1178 lvx 22,10,1 1179 addi 10,10,32 1180 lvx 23,11,1 1181 addi 11,11,32 1182 lvx 24,10,1 1183 addi 10,10,32 1184 lvx 25,11,1 1185 addi 11,11,32 1186 lvx 26,10,1 1187 addi 10,10,32 1188 lvx 27,11,1 1189 addi 11,11,32 1190 lvx 28,10,1 1191 addi 10,10,32 1192 lvx 29,11,1 1193 addi 11,11,32 1194 lvx 30,10,1 1195 lvx 31,11,1 1196 lwz 26,368(1) 1197 lwz 27,372(1) 1198 lwz 28,376(1) 1199 lwz 29,380(1) 1200 lwz 30,384(1) 1201 lwz 31,388(1) 1202 addi 1,1,392 1203 blr 1204.long 0 1205.byte 0,12,0x04,0,0x80,6,6,0 1206.long 0 1207 1208.globl aes_p8_ctr32_encrypt_blocks 1209.type aes_p8_ctr32_encrypt_blocks,@function 1210.align 5 1211aes_p8_ctr32_encrypt_blocks: 1212 cmplwi 5,1 1213 bltlr 1214 1215 lis 0,0xfff0 1216 mfspr 12,256 1217 mtspr 256,0 1218 1219 li 10,15 1220 vxor 0,0,0 1221 1222 1223 lvx 4,0,7 1224 lvsl 6,0,7 1225 lvx 5,10,7 1226 vspltisb 11,1 1227 1228 vperm 4,4,5,6 1229 vsldoi 11,0,11,1 1230 1231 neg 11,3 1232 lvsl 10,0,6 1233 lwz 9,240(6) 1234 1235 lvsr 6,0,11 1236 lvx 5,0,3 1237 addi 3,3,15 1238 1239 1240 srwi 9,9,1 1241 li 10,16 1242 subi 9,9,1 1243 1244 cmplwi 5,8 1245 bge _aesp8_ctr32_encrypt8x 1246 1247 lvsr 8,0,4 1248 vspltisb 9,-1 1249 lvx 7,0,4 1250 vperm 9,0,9,8 1251 1252 1253 lvx 0,0,6 1254 mtctr 9 1255 lvx 1,10,6 1256 addi 10,10,16 1257 vperm 0,0,1,10 1258 vxor 2,4,0 1259 lvx 0,10,6 1260 addi 10,10,16 1261 b .Loop_ctr32_enc 1262 1263.align 5 1264.Loop_ctr32_enc: 1265 vperm 1,1,0,10 1266.long 0x10420D08 1267 lvx 1,10,6 1268 addi 10,10,16 1269 vperm 0,0,1,10 1270.long 0x10420508 1271 lvx 0,10,6 1272 addi 10,10,16 1273 bc 16,0,.Loop_ctr32_enc 1274 1275 vadduwm 4,4,11 1276 vor 3,5,5 1277 lvx 5,0,3 1278 addi 3,3,16 1279 subic. 5,5,1 1280 1281 vperm 1,1,0,10 1282.long 0x10420D08 1283 lvx 1,10,6 1284 vperm 3,3,5,6 1285 li 10,16 1286 vperm 1,0,1,10 1287 lvx 0,0,6 1288 vxor 3,3,1 1289.long 0x10421D09 1290 1291 lvx 1,10,6 1292 addi 10,10,16 1293 vperm 2,2,2,8 1294 vsel 3,7,2,9 1295 mtctr 9 1296 vperm 0,0,1,10 1297 vor 7,2,2 1298 vxor 2,4,0 1299 lvx 0,10,6 1300 addi 10,10,16 1301 stvx 3,0,4 1302 addi 4,4,16 1303 bne .Loop_ctr32_enc 1304 1305 addi 4,4,-1 1306 lvx 2,0,4 1307 vsel 2,7,2,9 1308 stvx 2,0,4 1309 1310 mtspr 256,12 1311 blr 1312.long 0 1313.byte 0,12,0x14,0,0,0,6,0 1314.long 0 1315.align 5 1316_aesp8_ctr32_encrypt8x: 1317 stwu 1,-392(1) 1318 li 10,175 1319 li 11,191 1320 stvx 20,10,1 1321 addi 10,10,32 1322 stvx 21,11,1 1323 addi 11,11,32 1324 stvx 22,10,1 1325 addi 10,10,32 1326 stvx 23,11,1 1327 addi 11,11,32 1328 stvx 24,10,1 1329 addi 10,10,32 1330 stvx 25,11,1 1331 addi 11,11,32 1332 stvx 26,10,1 1333 addi 10,10,32 1334 stvx 27,11,1 1335 addi 11,11,32 1336 stvx 28,10,1 1337 addi 10,10,32 1338 stvx 29,11,1 1339 addi 11,11,32 1340 stvx 30,10,1 1341 stvx 31,11,1 1342 li 0,-1 1343 stw 12,364(1) 1344 li 8,0x10 1345 stw 26,368(1) 1346 li 26,0x20 1347 stw 27,372(1) 1348 li 27,0x30 1349 stw 28,376(1) 1350 li 28,0x40 1351 stw 29,380(1) 1352 li 29,0x50 1353 stw 30,384(1) 1354 li 30,0x60 1355 stw 31,388(1) 1356 li 31,0x70 1357 mtspr 256,0 1358 1359 subi 9,9,3 1360 1361 lvx 23,0,6 1362 lvx 30,8,6 1363 addi 6,6,0x20 1364 lvx 31,0,6 1365 vperm 23,23,30,10 1366 addi 11,1,32+15 1367 mtctr 9 1368 1369.Load_ctr32_enc_key: 1370 vperm 24,30,31,10 1371 lvx 30,8,6 1372 addi 6,6,0x20 1373 stvx 24,0,11 1374 vperm 25,31,30,10 1375 lvx 31,0,6 1376 stvx 25,8,11 1377 addi 11,11,0x20 1378 bc 16,0,.Load_ctr32_enc_key 1379 1380 lvx 26,8,6 1381 vperm 24,30,31,10 1382 lvx 27,26,6 1383 stvx 24,0,11 1384 vperm 25,31,26,10 1385 lvx 28,27,6 1386 stvx 25,8,11 1387 addi 11,1,32+15 1388 vperm 26,26,27,10 1389 lvx 29,28,6 1390 vperm 27,27,28,10 1391 lvx 30,29,6 1392 vperm 28,28,29,10 1393 lvx 31,30,6 1394 vperm 29,29,30,10 1395 lvx 15,31,6 1396 vperm 30,30,31,10 1397 lvx 24,0,11 1398 vperm 31,31,15,10 1399 lvx 25,8,11 1400 1401 vadduwm 7,11,11 1402 subi 3,3,15 1403 slwi 5,5,4 1404 1405 vadduwm 16,4,11 1406 vadduwm 17,4,7 1407 vxor 15,4,23 1408 1409 vadduwm 18,16,7 1410 vxor 16,16,23 1411 1412 vadduwm 19,17,7 1413 vxor 17,17,23 1414 1415 vadduwm 20,18,7 1416 vxor 18,18,23 1417 1418 vadduwm 21,19,7 1419 vxor 19,19,23 1420 vadduwm 22,20,7 1421 vxor 20,20,23 1422 vadduwm 4,21,7 1423 vxor 21,21,23 1424 vxor 22,22,23 1425 1426 mtctr 9 1427 b .Loop_ctr32_enc8x 1428.align 5 1429.Loop_ctr32_enc8x: 1430.long 0x11EFC508 1431.long 0x1210C508 1432.long 0x1231C508 1433.long 0x1252C508 1434.long 0x1273C508 1435.long 0x1294C508 1436.long 0x12B5C508 1437.long 0x12D6C508 1438.Loop_ctr32_enc8x_middle: 1439 lvx 24,26,11 1440 addi 11,11,0x20 1441 1442.long 0x11EFCD08 1443.long 0x1210CD08 1444.long 0x1231CD08 1445.long 0x1252CD08 1446.long 0x1273CD08 1447.long 0x1294CD08 1448.long 0x12B5CD08 1449.long 0x12D6CD08 1450 lvx 25,8,11 1451 bc 16,0,.Loop_ctr32_enc8x 1452 1453 subic 11,5,256 1454.long 0x11EFC508 1455.long 0x1210C508 1456.long 0x1231C508 1457.long 0x1252C508 1458.long 0x1273C508 1459.long 0x1294C508 1460.long 0x12B5C508 1461.long 0x12D6C508 1462 1463 subfe 0,0,0 1464.long 0x11EFCD08 1465.long 0x1210CD08 1466.long 0x1231CD08 1467.long 0x1252CD08 1468.long 0x1273CD08 1469.long 0x1294CD08 1470.long 0x12B5CD08 1471.long 0x12D6CD08 1472 1473 and 0,0,11 1474 addi 11,1,32+15 1475.long 0x11EFD508 1476.long 0x1210D508 1477.long 0x1231D508 1478.long 0x1252D508 1479.long 0x1273D508 1480.long 0x1294D508 1481.long 0x12B5D508 1482.long 0x12D6D508 1483 lvx 24,0,11 1484 1485 subic 5,5,129 1486.long 0x11EFDD08 1487 addi 5,5,1 1488.long 0x1210DD08 1489.long 0x1231DD08 1490.long 0x1252DD08 1491.long 0x1273DD08 1492.long 0x1294DD08 1493.long 0x12B5DD08 1494.long 0x12D6DD08 1495 lvx 25,8,11 1496 1497.long 0x11EFE508 1498.long 0x7C001E99 1499.long 0x1210E508 1500.long 0x7C281E99 1501.long 0x1231E508 1502.long 0x7C5A1E99 1503.long 0x1252E508 1504.long 0x7C7B1E99 1505.long 0x1273E508 1506.long 0x7D5C1E99 1507.long 0x1294E508 1508.long 0x7D9D1E99 1509.long 0x12B5E508 1510.long 0x7DBE1E99 1511.long 0x12D6E508 1512.long 0x7DDF1E99 1513 addi 3,3,0x80 1514 1515.long 0x11EFED08 1516 1517.long 0x1210ED08 1518 1519.long 0x1231ED08 1520 1521.long 0x1252ED08 1522 1523.long 0x1273ED08 1524 1525.long 0x1294ED08 1526 1527.long 0x12B5ED08 1528 1529.long 0x12D6ED08 1530 1531 1532 add 3,3,0 1533 1534 1535 1536 subfe. 0,0,0 1537.long 0x11EFF508 1538 vxor 0,0,31 1539.long 0x1210F508 1540 vxor 1,1,31 1541.long 0x1231F508 1542 vxor 2,2,31 1543.long 0x1252F508 1544 vxor 3,3,31 1545.long 0x1273F508 1546 vxor 10,10,31 1547.long 0x1294F508 1548 vxor 12,12,31 1549.long 0x12B5F508 1550 vxor 13,13,31 1551.long 0x12D6F508 1552 vxor 14,14,31 1553 1554 bne .Lctr32_enc8x_break 1555 1556.long 0x100F0509 1557.long 0x10300D09 1558 vadduwm 16,4,11 1559.long 0x10511509 1560 vadduwm 17,4,7 1561 vxor 15,4,23 1562.long 0x10721D09 1563 vadduwm 18,16,7 1564 vxor 16,16,23 1565.long 0x11535509 1566 vadduwm 19,17,7 1567 vxor 17,17,23 1568.long 0x11946509 1569 vadduwm 20,18,7 1570 vxor 18,18,23 1571.long 0x11B56D09 1572 vadduwm 21,19,7 1573 vxor 19,19,23 1574.long 0x11D67509 1575 vadduwm 22,20,7 1576 vxor 20,20,23 1577 1578 vadduwm 4,21,7 1579 vxor 21,21,23 1580 1581 vxor 22,22,23 1582 mtctr 9 1583 1584.long 0x11EFC508 1585.long 0x7C002799 1586 1587.long 0x1210C508 1588.long 0x7C282799 1589 1590.long 0x1231C508 1591.long 0x7C5A2799 1592 1593.long 0x1252C508 1594.long 0x7C7B2799 1595 1596.long 0x1273C508 1597.long 0x7D5C2799 1598 1599.long 0x1294C508 1600.long 0x7D9D2799 1601 1602.long 0x12B5C508 1603.long 0x7DBE2799 1604.long 0x12D6C508 1605.long 0x7DDF2799 1606 addi 4,4,0x80 1607 1608 b .Loop_ctr32_enc8x_middle 1609 1610.align 5 1611.Lctr32_enc8x_break: 1612 cmpwi 5,-0x60 1613 blt .Lctr32_enc8x_one 1614 nop 1615 beq .Lctr32_enc8x_two 1616 cmpwi 5,-0x40 1617 blt .Lctr32_enc8x_three 1618 nop 1619 beq .Lctr32_enc8x_four 1620 cmpwi 5,-0x20 1621 blt .Lctr32_enc8x_five 1622 nop 1623 beq .Lctr32_enc8x_six 1624 cmpwi 5,0x00 1625 blt .Lctr32_enc8x_seven 1626 1627.Lctr32_enc8x_eight: 1628.long 0x11EF0509 1629.long 0x12100D09 1630.long 0x12311509 1631.long 0x12521D09 1632.long 0x12735509 1633.long 0x12946509 1634.long 0x12B56D09 1635.long 0x12D67509 1636 1637 1638 1639.long 0x7DE02799 1640 1641.long 0x7E082799 1642 1643.long 0x7E3A2799 1644 1645.long 0x7E5B2799 1646 1647.long 0x7E7C2799 1648 1649.long 0x7E9D2799 1650 1651.long 0x7EBE2799 1652.long 0x7EDF2799 1653 addi 4,4,0x80 1654 b .Lctr32_enc8x_done 1655 1656.align 5 1657.Lctr32_enc8x_seven: 1658.long 0x11EF0D09 1659.long 0x12101509 1660.long 0x12311D09 1661.long 0x12525509 1662.long 0x12736509 1663.long 0x12946D09 1664.long 0x12B57509 1665 1666 1667 1668.long 0x7DE02799 1669 1670.long 0x7E082799 1671 1672.long 0x7E3A2799 1673 1674.long 0x7E5B2799 1675 1676.long 0x7E7C2799 1677 1678.long 0x7E9D2799 1679.long 0x7EBE2799 1680 addi 4,4,0x70 1681 b .Lctr32_enc8x_done 1682 1683.align 5 1684.Lctr32_enc8x_six: 1685.long 0x11EF1509 1686.long 0x12101D09 1687.long 0x12315509 1688.long 0x12526509 1689.long 0x12736D09 1690.long 0x12947509 1691 1692 1693 1694.long 0x7DE02799 1695 1696.long 0x7E082799 1697 1698.long 0x7E3A2799 1699 1700.long 0x7E5B2799 1701 1702.long 0x7E7C2799 1703.long 0x7E9D2799 1704 addi 4,4,0x60 1705 b .Lctr32_enc8x_done 1706 1707.align 5 1708.Lctr32_enc8x_five: 1709.long 0x11EF1D09 1710.long 0x12105509 1711.long 0x12316509 1712.long 0x12526D09 1713.long 0x12737509 1714 1715 1716 1717.long 0x7DE02799 1718 1719.long 0x7E082799 1720 1721.long 0x7E3A2799 1722 1723.long 0x7E5B2799 1724.long 0x7E7C2799 1725 addi 4,4,0x50 1726 b .Lctr32_enc8x_done 1727 1728.align 5 1729.Lctr32_enc8x_four: 1730.long 0x11EF5509 1731.long 0x12106509 1732.long 0x12316D09 1733.long 0x12527509 1734 1735 1736 1737.long 0x7DE02799 1738 1739.long 0x7E082799 1740 1741.long 0x7E3A2799 1742.long 0x7E5B2799 1743 addi 4,4,0x40 1744 b .Lctr32_enc8x_done 1745 1746.align 5 1747.Lctr32_enc8x_three: 1748.long 0x11EF6509 1749.long 0x12106D09 1750.long 0x12317509 1751 1752 1753 1754.long 0x7DE02799 1755 1756.long 0x7E082799 1757.long 0x7E3A2799 1758 addi 4,4,0x30 1759 b .Lctr32_enc8x_done 1760 1761.align 5 1762.Lctr32_enc8x_two: 1763.long 0x11EF6D09 1764.long 0x12107509 1765 1766 1767 1768.long 0x7DE02799 1769.long 0x7E082799 1770 addi 4,4,0x20 1771 b .Lctr32_enc8x_done 1772 1773.align 5 1774.Lctr32_enc8x_one: 1775.long 0x11EF7509 1776 1777 1778.long 0x7DE02799 1779 addi 4,4,0x10 1780 1781.Lctr32_enc8x_done: 1782 li 10,47 1783 li 11,63 1784 stvx 6,10,1 1785 addi 10,10,32 1786 stvx 6,11,1 1787 addi 11,11,32 1788 stvx 6,10,1 1789 addi 10,10,32 1790 stvx 6,11,1 1791 addi 11,11,32 1792 stvx 6,10,1 1793 addi 10,10,32 1794 stvx 6,11,1 1795 addi 11,11,32 1796 stvx 6,10,1 1797 addi 10,10,32 1798 stvx 6,11,1 1799 addi 11,11,32 1800 1801 mtspr 256,12 1802 lvx 20,10,1 1803 addi 10,10,32 1804 lvx 21,11,1 1805 addi 11,11,32 1806 lvx 22,10,1 1807 addi 10,10,32 1808 lvx 23,11,1 1809 addi 11,11,32 1810 lvx 24,10,1 1811 addi 10,10,32 1812 lvx 25,11,1 1813 addi 11,11,32 1814 lvx 26,10,1 1815 addi 10,10,32 1816 lvx 27,11,1 1817 addi 11,11,32 1818 lvx 28,10,1 1819 addi 10,10,32 1820 lvx 29,11,1 1821 addi 11,11,32 1822 lvx 30,10,1 1823 lvx 31,11,1 1824 lwz 26,368(1) 1825 lwz 27,372(1) 1826 lwz 28,376(1) 1827 lwz 29,380(1) 1828 lwz 30,384(1) 1829 lwz 31,388(1) 1830 addi 1,1,392 1831 blr 1832.long 0 1833.byte 0,12,0x04,0,0x80,6,6,0 1834.long 0 1835 1836.globl aes_p8_xts_encrypt 1837.type aes_p8_xts_encrypt,@function 1838.align 5 1839aes_p8_xts_encrypt: 1840 mr 10,3 1841 li 3,-1 1842 cmplwi 5,16 1843 bltlr 1844 1845 lis 0,0xfff0 1846 mfspr 12,256 1847 li 11,0 1848 mtspr 256,0 1849 1850 vspltisb 9,0x07 1851 1852 1853 1854 1855 li 3,15 1856 lvx 8,0,8 1857 lvsl 5,0,8 1858 lvx 4,3,8 1859 1860 vperm 8,8,4,5 1861 1862 neg 11,10 1863 lvsr 5,0,11 1864 lvx 2,0,10 1865 addi 10,10,15 1866 1867 1868 cmplwi 7,0 1869 beq .Lxts_enc_no_key2 1870 1871 lvsl 7,0,7 1872 lwz 9,240(7) 1873 srwi 9,9,1 1874 subi 9,9,1 1875 li 3,16 1876 1877 lvx 0,0,7 1878 lvx 1,3,7 1879 addi 3,3,16 1880 vperm 0,0,1,7 1881 vxor 8,8,0 1882 lvx 0,3,7 1883 addi 3,3,16 1884 mtctr 9 1885 1886.Ltweak_xts_enc: 1887 vperm 1,1,0,7 1888.long 0x11080D08 1889 lvx 1,3,7 1890 addi 3,3,16 1891 vperm 0,0,1,7 1892.long 0x11080508 1893 lvx 0,3,7 1894 addi 3,3,16 1895 bc 16,0,.Ltweak_xts_enc 1896 1897 vperm 1,1,0,7 1898.long 0x11080D08 1899 lvx 1,3,7 1900 vperm 0,0,1,7 1901.long 0x11080509 1902 1903 li 8,0 1904 b .Lxts_enc 1905 1906.Lxts_enc_no_key2: 1907 li 3,-16 1908 and 5,5,3 1909 1910 1911.Lxts_enc: 1912 lvx 4,0,10 1913 addi 10,10,16 1914 1915 lvsl 7,0,6 1916 lwz 9,240(6) 1917 srwi 9,9,1 1918 subi 9,9,1 1919 li 3,16 1920 1921 vslb 10,9,9 1922 vor 10,10,9 1923 vspltisb 11,1 1924 vsldoi 10,10,11,15 1925 1926 cmplwi 5,96 1927 bge _aesp8_xts_encrypt6x 1928 1929 andi. 7,5,15 1930 subic 0,5,32 1931 subi 7,7,16 1932 subfe 0,0,0 1933 and 0,0,7 1934 add 10,10,0 1935 1936 lvx 0,0,6 1937 lvx 1,3,6 1938 addi 3,3,16 1939 vperm 2,2,4,5 1940 vperm 0,0,1,7 1941 vxor 2,2,8 1942 vxor 2,2,0 1943 lvx 0,3,6 1944 addi 3,3,16 1945 mtctr 9 1946 b .Loop_xts_enc 1947 1948.align 5 1949.Loop_xts_enc: 1950 vperm 1,1,0,7 1951.long 0x10420D08 1952 lvx 1,3,6 1953 addi 3,3,16 1954 vperm 0,0,1,7 1955.long 0x10420508 1956 lvx 0,3,6 1957 addi 3,3,16 1958 bc 16,0,.Loop_xts_enc 1959 1960 vperm 1,1,0,7 1961.long 0x10420D08 1962 lvx 1,3,6 1963 li 3,16 1964 vperm 0,0,1,7 1965 vxor 0,0,8 1966.long 0x10620509 1967 1968 1969 nop 1970 1971.long 0x7C602799 1972 addi 4,4,16 1973 1974 subic. 5,5,16 1975 beq .Lxts_enc_done 1976 1977 vor 2,4,4 1978 lvx 4,0,10 1979 addi 10,10,16 1980 lvx 0,0,6 1981 lvx 1,3,6 1982 addi 3,3,16 1983 1984 subic 0,5,32 1985 subfe 0,0,0 1986 and 0,0,7 1987 add 10,10,0 1988 1989 vsrab 11,8,9 1990 vaddubm 8,8,8 1991 vsldoi 11,11,11,15 1992 vand 11,11,10 1993 vxor 8,8,11 1994 1995 vperm 2,2,4,5 1996 vperm 0,0,1,7 1997 vxor 2,2,8 1998 vxor 3,3,0 1999 vxor 2,2,0 2000 lvx 0,3,6 2001 addi 3,3,16 2002 2003 mtctr 9 2004 cmplwi 5,16 2005 bge .Loop_xts_enc 2006 2007 vxor 3,3,8 2008 lvsr 5,0,5 2009 vxor 4,4,4 2010 vspltisb 11,-1 2011 vperm 4,4,11,5 2012 vsel 2,2,3,4 2013 2014 subi 11,4,17 2015 subi 4,4,16 2016 mtctr 5 2017 li 5,16 2018.Loop_xts_enc_steal: 2019 lbzu 0,1(11) 2020 stb 0,16(11) 2021 bc 16,0,.Loop_xts_enc_steal 2022 2023 mtctr 9 2024 b .Loop_xts_enc 2025 2026.Lxts_enc_done: 2027 cmplwi 8,0 2028 beq .Lxts_enc_ret 2029 2030 vsrab 11,8,9 2031 vaddubm 8,8,8 2032 vsldoi 11,11,11,15 2033 vand 11,11,10 2034 vxor 8,8,11 2035 2036 2037.long 0x7D004799 2038 2039.Lxts_enc_ret: 2040 mtspr 256,12 2041 li 3,0 2042 blr 2043.long 0 2044.byte 0,12,0x04,0,0x80,6,6,0 2045.long 0 2046 2047 2048.globl aes_p8_xts_decrypt 2049.type aes_p8_xts_decrypt,@function 2050.align 5 2051aes_p8_xts_decrypt: 2052 mr 10,3 2053 li 3,-1 2054 cmplwi 5,16 2055 bltlr 2056 2057 lis 0,0xfff8 2058 mfspr 12,256 2059 li 11,0 2060 mtspr 256,0 2061 2062 andi. 0,5,15 2063 neg 0,0 2064 andi. 0,0,16 2065 sub 5,5,0 2066 2067 vspltisb 9,0x07 2068 2069 2070 2071 2072 li 3,15 2073 lvx 8,0,8 2074 lvsl 5,0,8 2075 lvx 4,3,8 2076 2077 vperm 8,8,4,5 2078 2079 neg 11,10 2080 lvsr 5,0,11 2081 lvx 2,0,10 2082 addi 10,10,15 2083 2084 2085 cmplwi 7,0 2086 beq .Lxts_dec_no_key2 2087 2088 lvsl 7,0,7 2089 lwz 9,240(7) 2090 srwi 9,9,1 2091 subi 9,9,1 2092 li 3,16 2093 2094 lvx 0,0,7 2095 lvx 1,3,7 2096 addi 3,3,16 2097 vperm 0,0,1,7 2098 vxor 8,8,0 2099 lvx 0,3,7 2100 addi 3,3,16 2101 mtctr 9 2102 2103.Ltweak_xts_dec: 2104 vperm 1,1,0,7 2105.long 0x11080D08 2106 lvx 1,3,7 2107 addi 3,3,16 2108 vperm 0,0,1,7 2109.long 0x11080508 2110 lvx 0,3,7 2111 addi 3,3,16 2112 bc 16,0,.Ltweak_xts_dec 2113 2114 vperm 1,1,0,7 2115.long 0x11080D08 2116 lvx 1,3,7 2117 vperm 0,0,1,7 2118.long 0x11080509 2119 2120 li 8,0 2121 b .Lxts_dec 2122 2123.Lxts_dec_no_key2: 2124 neg 3,5 2125 andi. 3,3,15 2126 add 5,5,3 2127 2128 2129.Lxts_dec: 2130 lvx 4,0,10 2131 addi 10,10,16 2132 2133 lvsl 7,0,6 2134 lwz 9,240(6) 2135 srwi 9,9,1 2136 subi 9,9,1 2137 li 3,16 2138 2139 vslb 10,9,9 2140 vor 10,10,9 2141 vspltisb 11,1 2142 vsldoi 10,10,11,15 2143 2144 cmplwi 5,96 2145 bge _aesp8_xts_decrypt6x 2146 2147 lvx 0,0,6 2148 lvx 1,3,6 2149 addi 3,3,16 2150 vperm 2,2,4,5 2151 vperm 0,0,1,7 2152 vxor 2,2,8 2153 vxor 2,2,0 2154 lvx 0,3,6 2155 addi 3,3,16 2156 mtctr 9 2157 2158 cmplwi 5,16 2159 blt .Ltail_xts_dec 2160 b .Loop_xts_dec 2161 2162.align 5 2163.Loop_xts_dec: 2164 vperm 1,1,0,7 2165.long 0x10420D48 2166 lvx 1,3,6 2167 addi 3,3,16 2168 vperm 0,0,1,7 2169.long 0x10420548 2170 lvx 0,3,6 2171 addi 3,3,16 2172 bc 16,0,.Loop_xts_dec 2173 2174 vperm 1,1,0,7 2175.long 0x10420D48 2176 lvx 1,3,6 2177 li 3,16 2178 vperm 0,0,1,7 2179 vxor 0,0,8 2180.long 0x10620549 2181 2182 2183 nop 2184 2185.long 0x7C602799 2186 addi 4,4,16 2187 2188 subic. 5,5,16 2189 beq .Lxts_dec_done 2190 2191 vor 2,4,4 2192 lvx 4,0,10 2193 addi 10,10,16 2194 lvx 0,0,6 2195 lvx 1,3,6 2196 addi 3,3,16 2197 2198 vsrab 11,8,9 2199 vaddubm 8,8,8 2200 vsldoi 11,11,11,15 2201 vand 11,11,10 2202 vxor 8,8,11 2203 2204 vperm 2,2,4,5 2205 vperm 0,0,1,7 2206 vxor 2,2,8 2207 vxor 2,2,0 2208 lvx 0,3,6 2209 addi 3,3,16 2210 2211 mtctr 9 2212 cmplwi 5,16 2213 bge .Loop_xts_dec 2214 2215.Ltail_xts_dec: 2216 vsrab 11,8,9 2217 vaddubm 12,8,8 2218 vsldoi 11,11,11,15 2219 vand 11,11,10 2220 vxor 12,12,11 2221 2222 subi 10,10,16 2223 add 10,10,5 2224 2225 vxor 2,2,8 2226 vxor 2,2,12 2227 2228.Loop_xts_dec_short: 2229 vperm 1,1,0,7 2230.long 0x10420D48 2231 lvx 1,3,6 2232 addi 3,3,16 2233 vperm 0,0,1,7 2234.long 0x10420548 2235 lvx 0,3,6 2236 addi 3,3,16 2237 bc 16,0,.Loop_xts_dec_short 2238 2239 vperm 1,1,0,7 2240.long 0x10420D48 2241 lvx 1,3,6 2242 li 3,16 2243 vperm 0,0,1,7 2244 vxor 0,0,12 2245.long 0x10620549 2246 2247 2248 nop 2249 2250.long 0x7C602799 2251 2252 vor 2,4,4 2253 lvx 4,0,10 2254 2255 lvx 0,0,6 2256 lvx 1,3,6 2257 addi 3,3,16 2258 vperm 2,2,4,5 2259 vperm 0,0,1,7 2260 2261 lvsr 5,0,5 2262 vxor 4,4,4 2263 vspltisb 11,-1 2264 vperm 4,4,11,5 2265 vsel 2,2,3,4 2266 2267 vxor 0,0,8 2268 vxor 2,2,0 2269 lvx 0,3,6 2270 addi 3,3,16 2271 2272 subi 11,4,1 2273 mtctr 5 2274 li 5,16 2275.Loop_xts_dec_steal: 2276 lbzu 0,1(11) 2277 stb 0,16(11) 2278 bc 16,0,.Loop_xts_dec_steal 2279 2280 mtctr 9 2281 b .Loop_xts_dec 2282 2283.Lxts_dec_done: 2284 cmplwi 8,0 2285 beq .Lxts_dec_ret 2286 2287 vsrab 11,8,9 2288 vaddubm 8,8,8 2289 vsldoi 11,11,11,15 2290 vand 11,11,10 2291 vxor 8,8,11 2292 2293 2294.long 0x7D004799 2295 2296.Lxts_dec_ret: 2297 mtspr 256,12 2298 li 3,0 2299 blr 2300.long 0 2301.byte 0,12,0x04,0,0x80,6,6,0 2302.long 0 2303 2304.align 5 2305_aesp8_xts_encrypt6x: 2306 stwu 1,-392(1) 2307 mflr 11 2308 li 7,175 2309 li 3,191 2310 stw 11,396(1) 2311 stvx 20,7,1 2312 addi 7,7,32 2313 stvx 21,3,1 2314 addi 3,3,32 2315 stvx 22,7,1 2316 addi 7,7,32 2317 stvx 23,3,1 2318 addi 3,3,32 2319 stvx 24,7,1 2320 addi 7,7,32 2321 stvx 25,3,1 2322 addi 3,3,32 2323 stvx 26,7,1 2324 addi 7,7,32 2325 stvx 27,3,1 2326 addi 3,3,32 2327 stvx 28,7,1 2328 addi 7,7,32 2329 stvx 29,3,1 2330 addi 3,3,32 2331 stvx 30,7,1 2332 stvx 31,3,1 2333 li 0,-1 2334 stw 12,364(1) 2335 li 3,0x10 2336 stw 26,368(1) 2337 li 26,0x20 2338 stw 27,372(1) 2339 li 27,0x30 2340 stw 28,376(1) 2341 li 28,0x40 2342 stw 29,380(1) 2343 li 29,0x50 2344 stw 30,384(1) 2345 li 30,0x60 2346 stw 31,388(1) 2347 li 31,0x70 2348 mtspr 256,0 2349 2350 2351 xxlor 2, 32+10, 32+10 2352 vsldoi 10,11,10,1 2353 xxlor 1, 32+10, 32+10 2354 2355 2356 mr 31, 6 2357 bl .Lconsts 2358 lxvw4x 0, 28, 6 2359 mr 6, 31 2360 li 31,0x70 2361 2362 subi 9,9,3 2363 2364 lvx 23,0,6 2365 lvx 30,3,6 2366 addi 6,6,0x20 2367 lvx 31,0,6 2368 vperm 23,23,30,7 2369 addi 7,1,32+15 2370 mtctr 9 2371 2372.Load_xts_enc_key: 2373 vperm 24,30,31,7 2374 lvx 30,3,6 2375 addi 6,6,0x20 2376 stvx 24,0,7 2377 vperm 25,31,30,7 2378 lvx 31,0,6 2379 stvx 25,3,7 2380 addi 7,7,0x20 2381 bc 16,0,.Load_xts_enc_key 2382 2383 lvx 26,3,6 2384 vperm 24,30,31,7 2385 lvx 27,26,6 2386 stvx 24,0,7 2387 vperm 25,31,26,7 2388 lvx 28,27,6 2389 stvx 25,3,7 2390 addi 7,1,32+15 2391 vperm 26,26,27,7 2392 lvx 29,28,6 2393 vperm 27,27,28,7 2394 lvx 30,29,6 2395 vperm 28,28,29,7 2396 lvx 31,30,6 2397 vperm 29,29,30,7 2398 lvx 22,31,6 2399 vperm 30,30,31,7 2400 lvx 24,0,7 2401 vperm 31,31,22,7 2402 lvx 25,3,7 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 vperm 0,2,4,5 2413 subi 10,10,31 2414 vxor 17,8,23 2415 vsrab 11,8,9 2416 vaddubm 8,8,8 2417 vand 11,11,10 2418 vxor 7,0,17 2419 xxlor 32+1, 0, 0 2420 vpermxor 8, 8, 11, 1 2421 2422.long 0x7C235699 2423 vxor 18,8,23 2424 vsrab 11,8,9 2425 vaddubm 8,8,8 2426 2427 vand 11,11,10 2428 vxor 12,1,18 2429 xxlor 32+2, 0, 0 2430 vpermxor 8, 8, 11, 2 2431 2432.long 0x7C5A5699 2433 andi. 31,5,15 2434 vxor 19,8,23 2435 vsrab 11,8,9 2436 vaddubm 8,8,8 2437 2438 vand 11,11,10 2439 vxor 13,2,19 2440 xxlor 32+3, 0, 0 2441 vpermxor 8, 8, 11, 3 2442 2443.long 0x7C7B5699 2444 sub 5,5,31 2445 vxor 20,8,23 2446 vsrab 11,8,9 2447 vaddubm 8,8,8 2448 2449 vand 11,11,10 2450 vxor 14,3,20 2451 xxlor 32+4, 0, 0 2452 vpermxor 8, 8, 11, 4 2453 2454.long 0x7C9C5699 2455 subi 5,5,0x60 2456 vxor 21,8,23 2457 vsrab 11,8,9 2458 vaddubm 8,8,8 2459 2460 vand 11,11,10 2461 vxor 15,4,21 2462 xxlor 32+5, 0, 0 2463 vpermxor 8, 8, 11, 5 2464 2465.long 0x7CBD5699 2466 addi 10,10,0x60 2467 vxor 22,8,23 2468 vsrab 11,8,9 2469 vaddubm 8,8,8 2470 2471 vand 11,11,10 2472 vxor 16,5,22 2473 xxlor 32+0, 0, 0 2474 vpermxor 8, 8, 11, 0 2475 2476 vxor 31,31,23 2477 mtctr 9 2478 b .Loop_xts_enc6x 2479 2480.align 5 2481.Loop_xts_enc6x: 2482.long 0x10E7C508 2483.long 0x118CC508 2484.long 0x11ADC508 2485.long 0x11CEC508 2486.long 0x11EFC508 2487.long 0x1210C508 2488 lvx 24,26,7 2489 addi 7,7,0x20 2490 2491.long 0x10E7CD08 2492.long 0x118CCD08 2493.long 0x11ADCD08 2494.long 0x11CECD08 2495.long 0x11EFCD08 2496.long 0x1210CD08 2497 lvx 25,3,7 2498 bc 16,0,.Loop_xts_enc6x 2499 2500 xxlor 32+10, 1, 1 2501 2502 subic 5,5,96 2503 vxor 0,17,31 2504.long 0x10E7C508 2505.long 0x118CC508 2506 vsrab 11,8,9 2507 vxor 17,8,23 2508 vaddubm 8,8,8 2509.long 0x11ADC508 2510.long 0x11CEC508 2511.long 0x11EFC508 2512.long 0x1210C508 2513 2514 subfe. 0,0,0 2515 vand 11,11,10 2516.long 0x10E7CD08 2517.long 0x118CCD08 2518 xxlor 32+1, 0, 0 2519 vpermxor 8, 8, 11, 1 2520.long 0x11ADCD08 2521.long 0x11CECD08 2522 vxor 1,18,31 2523 vsrab 11,8,9 2524 vxor 18,8,23 2525.long 0x11EFCD08 2526.long 0x1210CD08 2527 2528 and 0,0,5 2529 vaddubm 8,8,8 2530.long 0x10E7D508 2531.long 0x118CD508 2532 vand 11,11,10 2533.long 0x11ADD508 2534.long 0x11CED508 2535 xxlor 32+2, 0, 0 2536 vpermxor 8, 8, 11, 2 2537.long 0x11EFD508 2538.long 0x1210D508 2539 2540 add 10,10,0 2541 2542 2543 2544 vxor 2,19,31 2545 vsrab 11,8,9 2546 vxor 19,8,23 2547 vaddubm 8,8,8 2548.long 0x10E7DD08 2549.long 0x118CDD08 2550.long 0x11ADDD08 2551.long 0x11CEDD08 2552 vand 11,11,10 2553.long 0x11EFDD08 2554.long 0x1210DD08 2555 2556 addi 7,1,32+15 2557 xxlor 32+3, 0, 0 2558 vpermxor 8, 8, 11, 3 2559.long 0x10E7E508 2560.long 0x118CE508 2561 vxor 3,20,31 2562 vsrab 11,8,9 2563 vxor 20,8,23 2564.long 0x11ADE508 2565.long 0x11CEE508 2566 vaddubm 8,8,8 2567.long 0x11EFE508 2568.long 0x1210E508 2569 lvx 24,0,7 2570 vand 11,11,10 2571 2572.long 0x10E7ED08 2573.long 0x118CED08 2574 xxlor 32+4, 0, 0 2575 vpermxor 8, 8, 11, 4 2576.long 0x11ADED08 2577.long 0x11CEED08 2578 vxor 4,21,31 2579 vsrab 11,8,9 2580 vxor 21,8,23 2581.long 0x11EFED08 2582.long 0x1210ED08 2583 lvx 25,3,7 2584 vaddubm 8,8,8 2585 2586.long 0x10E7F508 2587.long 0x118CF508 2588 vand 11,11,10 2589.long 0x11ADF508 2590.long 0x11CEF508 2591 xxlor 32+5, 0, 0 2592 vpermxor 8, 8, 11, 5 2593.long 0x11EFF508 2594.long 0x1210F508 2595 vxor 5,22,31 2596 vsrab 11,8,9 2597 vxor 22,8,23 2598 2599.long 0x10E70509 2600.long 0x7C005699 2601 vaddubm 8,8,8 2602.long 0x118C0D09 2603.long 0x7C235699 2604.long 0x11AD1509 2605 2606.long 0x7C5A5699 2607 vand 11,11,10 2608.long 0x11CE1D09 2609 2610.long 0x7C7B5699 2611.long 0x11EF2509 2612 2613.long 0x7C9C5699 2614 xxlor 10, 32+0, 32+0 2615 xxlor 32+0, 0, 0 2616 vpermxor 8, 8, 11, 0 2617 xxlor 32+0, 10, 10 2618.long 0x11702D09 2619 2620 2621.long 0x7CBD5699 2622 addi 10,10,0x60 2623 2624 2625 2626 2627 2628.long 0x7CE02799 2629 vxor 7,0,17 2630 2631.long 0x7D832799 2632 vxor 12,1,18 2633 2634.long 0x7DBA2799 2635 vxor 13,2,19 2636 2637.long 0x7DDB2799 2638 vxor 14,3,20 2639 2640.long 0x7DFC2799 2641 vxor 15,4,21 2642 2643.long 0x7D7D2799 2644 vxor 16,5,22 2645 addi 4,4,0x60 2646 2647 mtctr 9 2648 beq .Loop_xts_enc6x 2649 2650 xxlor 32+10, 2, 2 2651 2652 addic. 5,5,0x60 2653 beq .Lxts_enc6x_zero 2654 cmpwi 5,0x20 2655 blt .Lxts_enc6x_one 2656 nop 2657 beq .Lxts_enc6x_two 2658 cmpwi 5,0x40 2659 blt .Lxts_enc6x_three 2660 nop 2661 beq .Lxts_enc6x_four 2662 2663.Lxts_enc6x_five: 2664 vxor 7,1,17 2665 vxor 12,2,18 2666 vxor 13,3,19 2667 vxor 14,4,20 2668 vxor 15,5,21 2669 2670 bl _aesp8_xts_enc5x 2671 2672 2673 vor 17,22,22 2674 2675.long 0x7CE02799 2676 2677.long 0x7D832799 2678 2679.long 0x7DBA2799 2680 vxor 11,15,22 2681 2682.long 0x7DDB2799 2683.long 0x7DFC2799 2684 addi 4,4,0x50 2685 bne .Lxts_enc6x_steal 2686 b .Lxts_enc6x_done 2687 2688.align 4 2689.Lxts_enc6x_four: 2690 vxor 7,2,17 2691 vxor 12,3,18 2692 vxor 13,4,19 2693 vxor 14,5,20 2694 vxor 15,15,15 2695 2696 bl _aesp8_xts_enc5x 2697 2698 2699 vor 17,21,21 2700 2701.long 0x7CE02799 2702 2703.long 0x7D832799 2704 vxor 11,14,21 2705 2706.long 0x7DBA2799 2707.long 0x7DDB2799 2708 addi 4,4,0x40 2709 bne .Lxts_enc6x_steal 2710 b .Lxts_enc6x_done 2711 2712.align 4 2713.Lxts_enc6x_three: 2714 vxor 7,3,17 2715 vxor 12,4,18 2716 vxor 13,5,19 2717 vxor 14,14,14 2718 vxor 15,15,15 2719 2720 bl _aesp8_xts_enc5x 2721 2722 2723 vor 17,20,20 2724 2725.long 0x7CE02799 2726 vxor 11,13,20 2727 2728.long 0x7D832799 2729.long 0x7DBA2799 2730 addi 4,4,0x30 2731 bne .Lxts_enc6x_steal 2732 b .Lxts_enc6x_done 2733 2734.align 4 2735.Lxts_enc6x_two: 2736 vxor 7,4,17 2737 vxor 12,5,18 2738 vxor 13,13,13 2739 vxor 14,14,14 2740 vxor 15,15,15 2741 2742 bl _aesp8_xts_enc5x 2743 2744 2745 vor 17,19,19 2746 vxor 11,12,19 2747 2748.long 0x7CE02799 2749.long 0x7D832799 2750 addi 4,4,0x20 2751 bne .Lxts_enc6x_steal 2752 b .Lxts_enc6x_done 2753 2754.align 4 2755.Lxts_enc6x_one: 2756 vxor 7,5,17 2757 nop 2758.Loop_xts_enc1x: 2759.long 0x10E7C508 2760 lvx 24,26,7 2761 addi 7,7,0x20 2762 2763.long 0x10E7CD08 2764 lvx 25,3,7 2765 bc 16,0,.Loop_xts_enc1x 2766 2767 add 10,10,31 2768 cmpwi 31,0 2769.long 0x10E7C508 2770 2771 subi 10,10,16 2772.long 0x10E7CD08 2773 2774 lvsr 5,0,31 2775.long 0x10E7D508 2776 2777.long 0x7C005699 2778.long 0x10E7DD08 2779 2780 addi 7,1,32+15 2781.long 0x10E7E508 2782 lvx 24,0,7 2783 2784.long 0x10E7ED08 2785 lvx 25,3,7 2786 vxor 17,17,31 2787 2788 2789.long 0x10E7F508 2790 2791 vperm 0,0,0,5 2792.long 0x10E78D09 2793 2794 vor 17,18,18 2795 vxor 11,7,18 2796 2797.long 0x7CE02799 2798 addi 4,4,0x10 2799 bne .Lxts_enc6x_steal 2800 b .Lxts_enc6x_done 2801 2802.align 4 2803.Lxts_enc6x_zero: 2804 cmpwi 31,0 2805 beq .Lxts_enc6x_done 2806 2807 add 10,10,31 2808 subi 10,10,16 2809.long 0x7C005699 2810 lvsr 5,0,31 2811 2812 vperm 0,0,0,5 2813 vxor 11,11,17 2814.Lxts_enc6x_steal: 2815 vxor 0,0,17 2816 vxor 7,7,7 2817 vspltisb 12,-1 2818 vperm 7,7,12,5 2819 vsel 7,0,11,7 2820 2821 subi 30,4,17 2822 subi 4,4,16 2823 mtctr 31 2824.Loop_xts_enc6x_steal: 2825 lbzu 0,1(30) 2826 stb 0,16(30) 2827 bc 16,0,.Loop_xts_enc6x_steal 2828 2829 li 31,0 2830 mtctr 9 2831 b .Loop_xts_enc1x 2832 2833.align 4 2834.Lxts_enc6x_done: 2835 cmplwi 8,0 2836 beq .Lxts_enc6x_ret 2837 2838 vxor 8,17,23 2839 2840.long 0x7D004799 2841 2842.Lxts_enc6x_ret: 2843 mtlr 11 2844 li 10,47 2845 li 11,63 2846 stvx 9,10,1 2847 addi 10,10,32 2848 stvx 9,11,1 2849 addi 11,11,32 2850 stvx 9,10,1 2851 addi 10,10,32 2852 stvx 9,11,1 2853 addi 11,11,32 2854 stvx 9,10,1 2855 addi 10,10,32 2856 stvx 9,11,1 2857 addi 11,11,32 2858 stvx 9,10,1 2859 addi 10,10,32 2860 stvx 9,11,1 2861 addi 11,11,32 2862 2863 mtspr 256,12 2864 lvx 20,10,1 2865 addi 10,10,32 2866 lvx 21,11,1 2867 addi 11,11,32 2868 lvx 22,10,1 2869 addi 10,10,32 2870 lvx 23,11,1 2871 addi 11,11,32 2872 lvx 24,10,1 2873 addi 10,10,32 2874 lvx 25,11,1 2875 addi 11,11,32 2876 lvx 26,10,1 2877 addi 10,10,32 2878 lvx 27,11,1 2879 addi 11,11,32 2880 lvx 28,10,1 2881 addi 10,10,32 2882 lvx 29,11,1 2883 addi 11,11,32 2884 lvx 30,10,1 2885 lvx 31,11,1 2886 lwz 26,368(1) 2887 lwz 27,372(1) 2888 lwz 28,376(1) 2889 lwz 29,380(1) 2890 lwz 30,384(1) 2891 lwz 31,388(1) 2892 addi 1,1,392 2893 blr 2894.long 0 2895.byte 0,12,0x04,1,0x80,6,6,0 2896.long 0 2897 2898.align 5 2899_aesp8_xts_enc5x: 2900.long 0x10E7C508 2901.long 0x118CC508 2902.long 0x11ADC508 2903.long 0x11CEC508 2904.long 0x11EFC508 2905 lvx 24,26,7 2906 addi 7,7,0x20 2907 2908.long 0x10E7CD08 2909.long 0x118CCD08 2910.long 0x11ADCD08 2911.long 0x11CECD08 2912.long 0x11EFCD08 2913 lvx 25,3,7 2914 bc 16,0,_aesp8_xts_enc5x 2915 2916 add 10,10,31 2917 cmpwi 31,0 2918.long 0x10E7C508 2919.long 0x118CC508 2920.long 0x11ADC508 2921.long 0x11CEC508 2922.long 0x11EFC508 2923 2924 subi 10,10,16 2925.long 0x10E7CD08 2926.long 0x118CCD08 2927.long 0x11ADCD08 2928.long 0x11CECD08 2929.long 0x11EFCD08 2930 vxor 17,17,31 2931 2932.long 0x10E7D508 2933 lvsr 5,0,31 2934.long 0x118CD508 2935.long 0x11ADD508 2936.long 0x11CED508 2937.long 0x11EFD508 2938 vxor 1,18,31 2939 2940.long 0x10E7DD08 2941.long 0x7C005699 2942.long 0x118CDD08 2943.long 0x11ADDD08 2944.long 0x11CEDD08 2945.long 0x11EFDD08 2946 vxor 2,19,31 2947 2948 addi 7,1,32+15 2949.long 0x10E7E508 2950.long 0x118CE508 2951.long 0x11ADE508 2952.long 0x11CEE508 2953.long 0x11EFE508 2954 lvx 24,0,7 2955 vxor 3,20,31 2956 2957.long 0x10E7ED08 2958 2959.long 0x118CED08 2960.long 0x11ADED08 2961.long 0x11CEED08 2962.long 0x11EFED08 2963 lvx 25,3,7 2964 vxor 4,21,31 2965 2966.long 0x10E7F508 2967 vperm 0,0,0,5 2968.long 0x118CF508 2969.long 0x11ADF508 2970.long 0x11CEF508 2971.long 0x11EFF508 2972 2973.long 0x10E78D09 2974.long 0x118C0D09 2975.long 0x11AD1509 2976.long 0x11CE1D09 2977.long 0x11EF2509 2978 blr 2979.long 0 2980.byte 0,12,0x14,0,0,0,0,0 2981 2982.align 5 2983_aesp8_xts_decrypt6x: 2984 stwu 1,-392(1) 2985 mflr 11 2986 li 7,175 2987 li 3,191 2988 stw 11,396(1) 2989 stvx 20,7,1 2990 addi 7,7,32 2991 stvx 21,3,1 2992 addi 3,3,32 2993 stvx 22,7,1 2994 addi 7,7,32 2995 stvx 23,3,1 2996 addi 3,3,32 2997 stvx 24,7,1 2998 addi 7,7,32 2999 stvx 25,3,1 3000 addi 3,3,32 3001 stvx 26,7,1 3002 addi 7,7,32 3003 stvx 27,3,1 3004 addi 3,3,32 3005 stvx 28,7,1 3006 addi 7,7,32 3007 stvx 29,3,1 3008 addi 3,3,32 3009 stvx 30,7,1 3010 stvx 31,3,1 3011 li 0,-1 3012 stw 12,364(1) 3013 li 3,0x10 3014 stw 26,368(1) 3015 li 26,0x20 3016 stw 27,372(1) 3017 li 27,0x30 3018 stw 28,376(1) 3019 li 28,0x40 3020 stw 29,380(1) 3021 li 29,0x50 3022 stw 30,384(1) 3023 li 30,0x60 3024 stw 31,388(1) 3025 li 31,0x70 3026 mtspr 256,0 3027 3028 3029 xxlor 2, 32+10, 32+10 3030 vsldoi 10,11,10,1 3031 xxlor 1, 32+10, 32+10 3032 3033 3034 mr 31, 6 3035 bl .Lconsts 3036 lxvw4x 0, 28, 6 3037 mr 6, 31 3038 li 31,0x70 3039 3040 subi 9,9,3 3041 3042 lvx 23,0,6 3043 lvx 30,3,6 3044 addi 6,6,0x20 3045 lvx 31,0,6 3046 vperm 23,23,30,7 3047 addi 7,1,32+15 3048 mtctr 9 3049 3050.Load_xts_dec_key: 3051 vperm 24,30,31,7 3052 lvx 30,3,6 3053 addi 6,6,0x20 3054 stvx 24,0,7 3055 vperm 25,31,30,7 3056 lvx 31,0,6 3057 stvx 25,3,7 3058 addi 7,7,0x20 3059 bc 16,0,.Load_xts_dec_key 3060 3061 lvx 26,3,6 3062 vperm 24,30,31,7 3063 lvx 27,26,6 3064 stvx 24,0,7 3065 vperm 25,31,26,7 3066 lvx 28,27,6 3067 stvx 25,3,7 3068 addi 7,1,32+15 3069 vperm 26,26,27,7 3070 lvx 29,28,6 3071 vperm 27,27,28,7 3072 lvx 30,29,6 3073 vperm 28,28,29,7 3074 lvx 31,30,6 3075 vperm 29,29,30,7 3076 lvx 22,31,6 3077 vperm 30,30,31,7 3078 lvx 24,0,7 3079 vperm 31,31,22,7 3080 lvx 25,3,7 3081 3082 vperm 0,2,4,5 3083 subi 10,10,31 3084 vxor 17,8,23 3085 vsrab 11,8,9 3086 vaddubm 8,8,8 3087 vand 11,11,10 3088 vxor 7,0,17 3089 xxlor 32+1, 0, 0 3090 vpermxor 8, 8, 11, 1 3091 3092.long 0x7C235699 3093 vxor 18,8,23 3094 vsrab 11,8,9 3095 vaddubm 8,8,8 3096 3097 vand 11,11,10 3098 vxor 12,1,18 3099 xxlor 32+2, 0, 0 3100 vpermxor 8, 8, 11, 2 3101 3102.long 0x7C5A5699 3103 andi. 31,5,15 3104 vxor 19,8,23 3105 vsrab 11,8,9 3106 vaddubm 8,8,8 3107 3108 vand 11,11,10 3109 vxor 13,2,19 3110 xxlor 32+3, 0, 0 3111 vpermxor 8, 8, 11, 3 3112 3113.long 0x7C7B5699 3114 sub 5,5,31 3115 vxor 20,8,23 3116 vsrab 11,8,9 3117 vaddubm 8,8,8 3118 3119 vand 11,11,10 3120 vxor 14,3,20 3121 xxlor 32+4, 0, 0 3122 vpermxor 8, 8, 11, 4 3123 3124.long 0x7C9C5699 3125 subi 5,5,0x60 3126 vxor 21,8,23 3127 vsrab 11,8,9 3128 vaddubm 8,8,8 3129 3130 vand 11,11,10 3131 vxor 15,4,21 3132 xxlor 32+5, 0, 0 3133 vpermxor 8, 8, 11, 5 3134 3135.long 0x7CBD5699 3136 addi 10,10,0x60 3137 vxor 22,8,23 3138 vsrab 11,8,9 3139 vaddubm 8,8,8 3140 3141 vand 11,11,10 3142 vxor 16,5,22 3143 xxlor 32+0, 0, 0 3144 vpermxor 8, 8, 11, 0 3145 3146 vxor 31,31,23 3147 mtctr 9 3148 b .Loop_xts_dec6x 3149 3150.align 5 3151.Loop_xts_dec6x: 3152.long 0x10E7C548 3153.long 0x118CC548 3154.long 0x11ADC548 3155.long 0x11CEC548 3156.long 0x11EFC548 3157.long 0x1210C548 3158 lvx 24,26,7 3159 addi 7,7,0x20 3160 3161.long 0x10E7CD48 3162.long 0x118CCD48 3163.long 0x11ADCD48 3164.long 0x11CECD48 3165.long 0x11EFCD48 3166.long 0x1210CD48 3167 lvx 25,3,7 3168 bc 16,0,.Loop_xts_dec6x 3169 3170 xxlor 32+10, 1, 1 3171 3172 subic 5,5,96 3173 vxor 0,17,31 3174.long 0x10E7C548 3175.long 0x118CC548 3176 vsrab 11,8,9 3177 vxor 17,8,23 3178 vaddubm 8,8,8 3179.long 0x11ADC548 3180.long 0x11CEC548 3181.long 0x11EFC548 3182.long 0x1210C548 3183 3184 subfe. 0,0,0 3185 vand 11,11,10 3186.long 0x10E7CD48 3187.long 0x118CCD48 3188 xxlor 32+1, 0, 0 3189 vpermxor 8, 8, 11, 1 3190.long 0x11ADCD48 3191.long 0x11CECD48 3192 vxor 1,18,31 3193 vsrab 11,8,9 3194 vxor 18,8,23 3195.long 0x11EFCD48 3196.long 0x1210CD48 3197 3198 and 0,0,5 3199 vaddubm 8,8,8 3200.long 0x10E7D548 3201.long 0x118CD548 3202 vand 11,11,10 3203.long 0x11ADD548 3204.long 0x11CED548 3205 xxlor 32+2, 0, 0 3206 vpermxor 8, 8, 11, 2 3207.long 0x11EFD548 3208.long 0x1210D548 3209 3210 add 10,10,0 3211 3212 3213 3214 vxor 2,19,31 3215 vsrab 11,8,9 3216 vxor 19,8,23 3217 vaddubm 8,8,8 3218.long 0x10E7DD48 3219.long 0x118CDD48 3220.long 0x11ADDD48 3221.long 0x11CEDD48 3222 vand 11,11,10 3223.long 0x11EFDD48 3224.long 0x1210DD48 3225 3226 addi 7,1,32+15 3227 xxlor 32+3, 0, 0 3228 vpermxor 8, 8, 11, 3 3229.long 0x10E7E548 3230.long 0x118CE548 3231 vxor 3,20,31 3232 vsrab 11,8,9 3233 vxor 20,8,23 3234.long 0x11ADE548 3235.long 0x11CEE548 3236 vaddubm 8,8,8 3237.long 0x11EFE548 3238.long 0x1210E548 3239 lvx 24,0,7 3240 vand 11,11,10 3241 3242.long 0x10E7ED48 3243.long 0x118CED48 3244 xxlor 32+4, 0, 0 3245 vpermxor 8, 8, 11, 4 3246.long 0x11ADED48 3247.long 0x11CEED48 3248 vxor 4,21,31 3249 vsrab 11,8,9 3250 vxor 21,8,23 3251.long 0x11EFED48 3252.long 0x1210ED48 3253 lvx 25,3,7 3254 vaddubm 8,8,8 3255 3256.long 0x10E7F548 3257.long 0x118CF548 3258 vand 11,11,10 3259.long 0x11ADF548 3260.long 0x11CEF548 3261 xxlor 32+5, 0, 0 3262 vpermxor 8, 8, 11, 5 3263.long 0x11EFF548 3264.long 0x1210F548 3265 vxor 5,22,31 3266 vsrab 11,8,9 3267 vxor 22,8,23 3268 3269.long 0x10E70549 3270.long 0x7C005699 3271 vaddubm 8,8,8 3272.long 0x118C0D49 3273.long 0x7C235699 3274.long 0x11AD1549 3275 3276.long 0x7C5A5699 3277 vand 11,11,10 3278.long 0x11CE1D49 3279 3280.long 0x7C7B5699 3281.long 0x11EF2549 3282 3283.long 0x7C9C5699 3284 xxlor 10, 32+0, 32+0 3285 xxlor 32+0, 0, 0 3286 vpermxor 8, 8, 11, 0 3287 xxlor 32+0, 10, 10 3288.long 0x12102D49 3289 3290.long 0x7CBD5699 3291 addi 10,10,0x60 3292 3293 3294 3295 3296 3297.long 0x7CE02799 3298 vxor 7,0,17 3299 3300.long 0x7D832799 3301 vxor 12,1,18 3302 3303.long 0x7DBA2799 3304 vxor 13,2,19 3305 3306.long 0x7DDB2799 3307 vxor 14,3,20 3308 3309.long 0x7DFC2799 3310 vxor 15,4,21 3311.long 0x7E1D2799 3312 vxor 16,5,22 3313 addi 4,4,0x60 3314 3315 mtctr 9 3316 beq .Loop_xts_dec6x 3317 3318 xxlor 32+10, 2, 2 3319 3320 addic. 5,5,0x60 3321 beq .Lxts_dec6x_zero 3322 cmpwi 5,0x20 3323 blt .Lxts_dec6x_one 3324 nop 3325 beq .Lxts_dec6x_two 3326 cmpwi 5,0x40 3327 blt .Lxts_dec6x_three 3328 nop 3329 beq .Lxts_dec6x_four 3330 3331.Lxts_dec6x_five: 3332 vxor 7,1,17 3333 vxor 12,2,18 3334 vxor 13,3,19 3335 vxor 14,4,20 3336 vxor 15,5,21 3337 3338 bl _aesp8_xts_dec5x 3339 3340 3341 vor 17,22,22 3342 vxor 18,8,23 3343 3344.long 0x7CE02799 3345 vxor 7,0,18 3346 3347.long 0x7D832799 3348 3349.long 0x7DBA2799 3350 3351.long 0x7DDB2799 3352.long 0x7DFC2799 3353 addi 4,4,0x50 3354 bne .Lxts_dec6x_steal 3355 b .Lxts_dec6x_done 3356 3357.align 4 3358.Lxts_dec6x_four: 3359 vxor 7,2,17 3360 vxor 12,3,18 3361 vxor 13,4,19 3362 vxor 14,5,20 3363 vxor 15,15,15 3364 3365 bl _aesp8_xts_dec5x 3366 3367 3368 vor 17,21,21 3369 vor 18,22,22 3370 3371.long 0x7CE02799 3372 vxor 7,0,22 3373 3374.long 0x7D832799 3375 3376.long 0x7DBA2799 3377.long 0x7DDB2799 3378 addi 4,4,0x40 3379 bne .Lxts_dec6x_steal 3380 b .Lxts_dec6x_done 3381 3382.align 4 3383.Lxts_dec6x_three: 3384 vxor 7,3,17 3385 vxor 12,4,18 3386 vxor 13,5,19 3387 vxor 14,14,14 3388 vxor 15,15,15 3389 3390 bl _aesp8_xts_dec5x 3391 3392 3393 vor 17,20,20 3394 vor 18,21,21 3395 3396.long 0x7CE02799 3397 vxor 7,0,21 3398 3399.long 0x7D832799 3400.long 0x7DBA2799 3401 addi 4,4,0x30 3402 bne .Lxts_dec6x_steal 3403 b .Lxts_dec6x_done 3404 3405.align 4 3406.Lxts_dec6x_two: 3407 vxor 7,4,17 3408 vxor 12,5,18 3409 vxor 13,13,13 3410 vxor 14,14,14 3411 vxor 15,15,15 3412 3413 bl _aesp8_xts_dec5x 3414 3415 3416 vor 17,19,19 3417 vor 18,20,20 3418 3419.long 0x7CE02799 3420 vxor 7,0,20 3421.long 0x7D832799 3422 addi 4,4,0x20 3423 bne .Lxts_dec6x_steal 3424 b .Lxts_dec6x_done 3425 3426.align 4 3427.Lxts_dec6x_one: 3428 vxor 7,5,17 3429 nop 3430.Loop_xts_dec1x: 3431.long 0x10E7C548 3432 lvx 24,26,7 3433 addi 7,7,0x20 3434 3435.long 0x10E7CD48 3436 lvx 25,3,7 3437 bc 16,0,.Loop_xts_dec1x 3438 3439 subi 0,31,1 3440.long 0x10E7C548 3441 3442 andi. 0,0,16 3443 cmpwi 31,0 3444.long 0x10E7CD48 3445 3446 sub 10,10,0 3447.long 0x10E7D548 3448 3449.long 0x7C005699 3450.long 0x10E7DD48 3451 3452 addi 7,1,32+15 3453.long 0x10E7E548 3454 lvx 24,0,7 3455 3456.long 0x10E7ED48 3457 lvx 25,3,7 3458 vxor 17,17,31 3459 3460 3461.long 0x10E7F548 3462 3463 mtctr 9 3464.long 0x10E78D49 3465 3466 vor 17,18,18 3467 vor 18,19,19 3468 3469.long 0x7CE02799 3470 addi 4,4,0x10 3471 vxor 7,0,19 3472 bne .Lxts_dec6x_steal 3473 b .Lxts_dec6x_done 3474 3475.align 4 3476.Lxts_dec6x_zero: 3477 cmpwi 31,0 3478 beq .Lxts_dec6x_done 3479 3480.long 0x7C005699 3481 3482 vxor 7,0,18 3483.Lxts_dec6x_steal: 3484.long 0x10E7C548 3485 lvx 24,26,7 3486 addi 7,7,0x20 3487 3488.long 0x10E7CD48 3489 lvx 25,3,7 3490 bc 16,0,.Lxts_dec6x_steal 3491 3492 add 10,10,31 3493.long 0x10E7C548 3494 3495 cmpwi 31,0 3496.long 0x10E7CD48 3497 3498.long 0x7C005699 3499.long 0x10E7D548 3500 3501 lvsr 5,0,31 3502.long 0x10E7DD48 3503 3504 addi 7,1,32+15 3505.long 0x10E7E548 3506 lvx 24,0,7 3507 3508.long 0x10E7ED48 3509 lvx 25,3,7 3510 vxor 18,18,31 3511 3512 3513.long 0x10E7F548 3514 3515 vperm 0,0,0,5 3516.long 0x11679549 3517 3518 3519 3520.long 0x7D602799 3521 3522 vxor 7,7,7 3523 vspltisb 12,-1 3524 vperm 7,7,12,5 3525 vsel 7,0,11,7 3526 vxor 7,7,17 3527 3528 subi 30,4,1 3529 mtctr 31 3530.Loop_xts_dec6x_steal: 3531 lbzu 0,1(30) 3532 stb 0,16(30) 3533 bc 16,0,.Loop_xts_dec6x_steal 3534 3535 li 31,0 3536 mtctr 9 3537 b .Loop_xts_dec1x 3538 3539.align 4 3540.Lxts_dec6x_done: 3541 cmplwi 8,0 3542 beq .Lxts_dec6x_ret 3543 3544 vxor 8,17,23 3545 3546.long 0x7D004799 3547 3548.Lxts_dec6x_ret: 3549 mtlr 11 3550 li 10,47 3551 li 11,63 3552 stvx 9,10,1 3553 addi 10,10,32 3554 stvx 9,11,1 3555 addi 11,11,32 3556 stvx 9,10,1 3557 addi 10,10,32 3558 stvx 9,11,1 3559 addi 11,11,32 3560 stvx 9,10,1 3561 addi 10,10,32 3562 stvx 9,11,1 3563 addi 11,11,32 3564 stvx 9,10,1 3565 addi 10,10,32 3566 stvx 9,11,1 3567 addi 11,11,32 3568 3569 mtspr 256,12 3570 lvx 20,10,1 3571 addi 10,10,32 3572 lvx 21,11,1 3573 addi 11,11,32 3574 lvx 22,10,1 3575 addi 10,10,32 3576 lvx 23,11,1 3577 addi 11,11,32 3578 lvx 24,10,1 3579 addi 10,10,32 3580 lvx 25,11,1 3581 addi 11,11,32 3582 lvx 26,10,1 3583 addi 10,10,32 3584 lvx 27,11,1 3585 addi 11,11,32 3586 lvx 28,10,1 3587 addi 10,10,32 3588 lvx 29,11,1 3589 addi 11,11,32 3590 lvx 30,10,1 3591 lvx 31,11,1 3592 lwz 26,368(1) 3593 lwz 27,372(1) 3594 lwz 28,376(1) 3595 lwz 29,380(1) 3596 lwz 30,384(1) 3597 lwz 31,388(1) 3598 addi 1,1,392 3599 blr 3600.long 0 3601.byte 0,12,0x04,1,0x80,6,6,0 3602.long 0 3603 3604.align 5 3605_aesp8_xts_dec5x: 3606.long 0x10E7C548 3607.long 0x118CC548 3608.long 0x11ADC548 3609.long 0x11CEC548 3610.long 0x11EFC548 3611 lvx 24,26,7 3612 addi 7,7,0x20 3613 3614.long 0x10E7CD48 3615.long 0x118CCD48 3616.long 0x11ADCD48 3617.long 0x11CECD48 3618.long 0x11EFCD48 3619 lvx 25,3,7 3620 bc 16,0,_aesp8_xts_dec5x 3621 3622 subi 0,31,1 3623.long 0x10E7C548 3624.long 0x118CC548 3625.long 0x11ADC548 3626.long 0x11CEC548 3627.long 0x11EFC548 3628 3629 andi. 0,0,16 3630 cmpwi 31,0 3631.long 0x10E7CD48 3632.long 0x118CCD48 3633.long 0x11ADCD48 3634.long 0x11CECD48 3635.long 0x11EFCD48 3636 vxor 17,17,31 3637 3638 sub 10,10,0 3639.long 0x10E7D548 3640.long 0x118CD548 3641.long 0x11ADD548 3642.long 0x11CED548 3643.long 0x11EFD548 3644 vxor 1,18,31 3645 3646.long 0x10E7DD48 3647.long 0x7C005699 3648.long 0x118CDD48 3649.long 0x11ADDD48 3650.long 0x11CEDD48 3651.long 0x11EFDD48 3652 vxor 2,19,31 3653 3654 addi 7,1,32+15 3655.long 0x10E7E548 3656.long 0x118CE548 3657.long 0x11ADE548 3658.long 0x11CEE548 3659.long 0x11EFE548 3660 lvx 24,0,7 3661 vxor 3,20,31 3662 3663.long 0x10E7ED48 3664 3665.long 0x118CED48 3666.long 0x11ADED48 3667.long 0x11CEED48 3668.long 0x11EFED48 3669 lvx 25,3,7 3670 vxor 4,21,31 3671 3672.long 0x10E7F548 3673.long 0x118CF548 3674.long 0x11ADF548 3675.long 0x11CEF548 3676.long 0x11EFF548 3677 3678.long 0x10E78D49 3679.long 0x118C0D49 3680.long 0x11AD1549 3681.long 0x11CE1D49 3682.long 0x11EF2549 3683 mtctr 9 3684 blr 3685.long 0 3686.byte 0,12,0x14,0,0,0,0,0 3687