1*4724848cSchristos.machine "any" 2*4724848cSchristos.text 3*4724848cSchristos 4*4724848cSchristos.globl ChaCha20_ctr32_int 5*4724848cSchristos.type ChaCha20_ctr32_int,@function 6*4724848cSchristos.section ".opd","aw" 7*4724848cSchristos.align 3 8*4724848cSchristosChaCha20_ctr32_int: 9*4724848cSchristos.quad .ChaCha20_ctr32_int,.TOC.@tocbase,0 10*4724848cSchristos.previous 11*4724848cSchristos.align 5 12*4724848cSchristos.ChaCha20_ctr32_int: 13*4724848cSchristos__ChaCha20_ctr32_int: 14*4724848cSchristos cmpldi 5,0 15*4724848cSchristos beqlr 16*4724848cSchristos 17*4724848cSchristos stdu 1,-256(1) 18*4724848cSchristos mflr 0 19*4724848cSchristos 20*4724848cSchristos std 14,112(1) 21*4724848cSchristos std 15,120(1) 22*4724848cSchristos std 16,128(1) 23*4724848cSchristos std 17,136(1) 24*4724848cSchristos std 18,144(1) 25*4724848cSchristos std 19,152(1) 26*4724848cSchristos std 20,160(1) 27*4724848cSchristos std 21,168(1) 28*4724848cSchristos std 22,176(1) 29*4724848cSchristos std 23,184(1) 30*4724848cSchristos std 24,192(1) 31*4724848cSchristos std 25,200(1) 32*4724848cSchristos std 26,208(1) 33*4724848cSchristos std 27,216(1) 34*4724848cSchristos std 28,224(1) 35*4724848cSchristos std 29,232(1) 36*4724848cSchristos std 30,240(1) 37*4724848cSchristos std 31,248(1) 38*4724848cSchristos std 0,272(1) 39*4724848cSchristos 40*4724848cSchristos lwz 11,0(7) 41*4724848cSchristos lwz 12,4(7) 42*4724848cSchristos lwz 14,8(7) 43*4724848cSchristos lwz 15,12(7) 44*4724848cSchristos 45*4724848cSchristos bl __ChaCha20_1x 46*4724848cSchristos 47*4724848cSchristos ld 0,272(1) 48*4724848cSchristos ld 14,112(1) 49*4724848cSchristos ld 15,120(1) 50*4724848cSchristos ld 16,128(1) 51*4724848cSchristos ld 17,136(1) 52*4724848cSchristos ld 18,144(1) 53*4724848cSchristos ld 19,152(1) 54*4724848cSchristos ld 20,160(1) 55*4724848cSchristos ld 21,168(1) 56*4724848cSchristos ld 22,176(1) 57*4724848cSchristos ld 23,184(1) 58*4724848cSchristos ld 24,192(1) 59*4724848cSchristos ld 25,200(1) 60*4724848cSchristos ld 26,208(1) 61*4724848cSchristos ld 27,216(1) 62*4724848cSchristos ld 28,224(1) 63*4724848cSchristos ld 29,232(1) 64*4724848cSchristos ld 30,240(1) 65*4724848cSchristos ld 31,248(1) 66*4724848cSchristos mtlr 0 67*4724848cSchristos addi 1,1,256 68*4724848cSchristos blr 69*4724848cSchristos.long 0 70*4724848cSchristos.byte 0,12,4,1,0x80,18,5,0 71*4724848cSchristos.long 0 72*4724848cSchristos 73*4724848cSchristos 74*4724848cSchristos.align 5 75*4724848cSchristos__ChaCha20_1x: 76*4724848cSchristos.Loop_outer: 77*4724848cSchristos lis 16,0x6170 78*4724848cSchristos lis 17,0x3320 79*4724848cSchristos lis 18,0x7962 80*4724848cSchristos lis 19,0x6b20 81*4724848cSchristos ori 16,16,0x7865 82*4724848cSchristos ori 17,17,0x646e 83*4724848cSchristos ori 18,18,0x2d32 84*4724848cSchristos ori 19,19,0x6574 85*4724848cSchristos 86*4724848cSchristos li 0,10 87*4724848cSchristos lwz 20,0(6) 88*4724848cSchristos lwz 21,4(6) 89*4724848cSchristos lwz 22,8(6) 90*4724848cSchristos lwz 23,12(6) 91*4724848cSchristos lwz 24,16(6) 92*4724848cSchristos mr 28,11 93*4724848cSchristos lwz 25,20(6) 94*4724848cSchristos mr 29,12 95*4724848cSchristos lwz 26,24(6) 96*4724848cSchristos mr 30,14 97*4724848cSchristos lwz 27,28(6) 98*4724848cSchristos mr 31,15 99*4724848cSchristos 100*4724848cSchristos mr 7,20 101*4724848cSchristos mr 8,21 102*4724848cSchristos mr 9,22 103*4724848cSchristos mr 10,23 104*4724848cSchristos 105*4724848cSchristos mtctr 0 106*4724848cSchristos.Loop: 107*4724848cSchristos add 16,16,20 108*4724848cSchristos add 17,17,21 109*4724848cSchristos add 18,18,22 110*4724848cSchristos add 19,19,23 111*4724848cSchristos xor 28,28,16 112*4724848cSchristos xor 29,29,17 113*4724848cSchristos xor 30,30,18 114*4724848cSchristos xor 31,31,19 115*4724848cSchristos rotlwi 28,28,16 116*4724848cSchristos rotlwi 29,29,16 117*4724848cSchristos rotlwi 30,30,16 118*4724848cSchristos rotlwi 31,31,16 119*4724848cSchristos add 24,24,28 120*4724848cSchristos add 25,25,29 121*4724848cSchristos add 26,26,30 122*4724848cSchristos add 27,27,31 123*4724848cSchristos xor 20,20,24 124*4724848cSchristos xor 21,21,25 125*4724848cSchristos xor 22,22,26 126*4724848cSchristos xor 23,23,27 127*4724848cSchristos rotlwi 20,20,12 128*4724848cSchristos rotlwi 21,21,12 129*4724848cSchristos rotlwi 22,22,12 130*4724848cSchristos rotlwi 23,23,12 131*4724848cSchristos add 16,16,20 132*4724848cSchristos add 17,17,21 133*4724848cSchristos add 18,18,22 134*4724848cSchristos add 19,19,23 135*4724848cSchristos xor 28,28,16 136*4724848cSchristos xor 29,29,17 137*4724848cSchristos xor 30,30,18 138*4724848cSchristos xor 31,31,19 139*4724848cSchristos rotlwi 28,28,8 140*4724848cSchristos rotlwi 29,29,8 141*4724848cSchristos rotlwi 30,30,8 142*4724848cSchristos rotlwi 31,31,8 143*4724848cSchristos add 24,24,28 144*4724848cSchristos add 25,25,29 145*4724848cSchristos add 26,26,30 146*4724848cSchristos add 27,27,31 147*4724848cSchristos xor 20,20,24 148*4724848cSchristos xor 21,21,25 149*4724848cSchristos xor 22,22,26 150*4724848cSchristos xor 23,23,27 151*4724848cSchristos rotlwi 20,20,7 152*4724848cSchristos rotlwi 21,21,7 153*4724848cSchristos rotlwi 22,22,7 154*4724848cSchristos rotlwi 23,23,7 155*4724848cSchristos add 16,16,21 156*4724848cSchristos add 17,17,22 157*4724848cSchristos add 18,18,23 158*4724848cSchristos add 19,19,20 159*4724848cSchristos xor 31,31,16 160*4724848cSchristos xor 28,28,17 161*4724848cSchristos xor 29,29,18 162*4724848cSchristos xor 30,30,19 163*4724848cSchristos rotlwi 31,31,16 164*4724848cSchristos rotlwi 28,28,16 165*4724848cSchristos rotlwi 29,29,16 166*4724848cSchristos rotlwi 30,30,16 167*4724848cSchristos add 26,26,31 168*4724848cSchristos add 27,27,28 169*4724848cSchristos add 24,24,29 170*4724848cSchristos add 25,25,30 171*4724848cSchristos xor 21,21,26 172*4724848cSchristos xor 22,22,27 173*4724848cSchristos xor 23,23,24 174*4724848cSchristos xor 20,20,25 175*4724848cSchristos rotlwi 21,21,12 176*4724848cSchristos rotlwi 22,22,12 177*4724848cSchristos rotlwi 23,23,12 178*4724848cSchristos rotlwi 20,20,12 179*4724848cSchristos add 16,16,21 180*4724848cSchristos add 17,17,22 181*4724848cSchristos add 18,18,23 182*4724848cSchristos add 19,19,20 183*4724848cSchristos xor 31,31,16 184*4724848cSchristos xor 28,28,17 185*4724848cSchristos xor 29,29,18 186*4724848cSchristos xor 30,30,19 187*4724848cSchristos rotlwi 31,31,8 188*4724848cSchristos rotlwi 28,28,8 189*4724848cSchristos rotlwi 29,29,8 190*4724848cSchristos rotlwi 30,30,8 191*4724848cSchristos add 26,26,31 192*4724848cSchristos add 27,27,28 193*4724848cSchristos add 24,24,29 194*4724848cSchristos add 25,25,30 195*4724848cSchristos xor 21,21,26 196*4724848cSchristos xor 22,22,27 197*4724848cSchristos xor 23,23,24 198*4724848cSchristos xor 20,20,25 199*4724848cSchristos rotlwi 21,21,7 200*4724848cSchristos rotlwi 22,22,7 201*4724848cSchristos rotlwi 23,23,7 202*4724848cSchristos rotlwi 20,20,7 203*4724848cSchristos bc 16,0,.Loop 204*4724848cSchristos 205*4724848cSchristos subic 5,5,64 206*4724848cSchristos addi 16,16,0x7865 207*4724848cSchristos addi 17,17,0x646e 208*4724848cSchristos addi 18,18,0x2d32 209*4724848cSchristos addi 19,19,0x6574 210*4724848cSchristos addis 16,16,0x6170 211*4724848cSchristos addis 17,17,0x3320 212*4724848cSchristos addis 18,18,0x7962 213*4724848cSchristos addis 19,19,0x6b20 214*4724848cSchristos 215*4724848cSchristos subfe. 0,0,0 216*4724848cSchristos add 20,20,7 217*4724848cSchristos lwz 7,16(6) 218*4724848cSchristos add 21,21,8 219*4724848cSchristos lwz 8,20(6) 220*4724848cSchristos add 22,22,9 221*4724848cSchristos lwz 9,24(6) 222*4724848cSchristos add 23,23,10 223*4724848cSchristos lwz 10,28(6) 224*4724848cSchristos add 24,24,7 225*4724848cSchristos add 25,25,8 226*4724848cSchristos add 26,26,9 227*4724848cSchristos add 27,27,10 228*4724848cSchristos 229*4724848cSchristos add 28,28,11 230*4724848cSchristos add 29,29,12 231*4724848cSchristos add 30,30,14 232*4724848cSchristos add 31,31,15 233*4724848cSchristos addi 11,11,1 234*4724848cSchristos mr 7,16 235*4724848cSchristos rotlwi 16,16,8 236*4724848cSchristos rlwimi 16,7,24,0,7 237*4724848cSchristos rlwimi 16,7,24,16,23 238*4724848cSchristos mr 8,17 239*4724848cSchristos rotlwi 17,17,8 240*4724848cSchristos rlwimi 17,8,24,0,7 241*4724848cSchristos rlwimi 17,8,24,16,23 242*4724848cSchristos mr 9,18 243*4724848cSchristos rotlwi 18,18,8 244*4724848cSchristos rlwimi 18,9,24,0,7 245*4724848cSchristos rlwimi 18,9,24,16,23 246*4724848cSchristos mr 10,19 247*4724848cSchristos rotlwi 19,19,8 248*4724848cSchristos rlwimi 19,10,24,0,7 249*4724848cSchristos rlwimi 19,10,24,16,23 250*4724848cSchristos mr 7,20 251*4724848cSchristos rotlwi 20,20,8 252*4724848cSchristos rlwimi 20,7,24,0,7 253*4724848cSchristos rlwimi 20,7,24,16,23 254*4724848cSchristos mr 8,21 255*4724848cSchristos rotlwi 21,21,8 256*4724848cSchristos rlwimi 21,8,24,0,7 257*4724848cSchristos rlwimi 21,8,24,16,23 258*4724848cSchristos mr 9,22 259*4724848cSchristos rotlwi 22,22,8 260*4724848cSchristos rlwimi 22,9,24,0,7 261*4724848cSchristos rlwimi 22,9,24,16,23 262*4724848cSchristos mr 10,23 263*4724848cSchristos rotlwi 23,23,8 264*4724848cSchristos rlwimi 23,10,24,0,7 265*4724848cSchristos rlwimi 23,10,24,16,23 266*4724848cSchristos mr 7,24 267*4724848cSchristos rotlwi 24,24,8 268*4724848cSchristos rlwimi 24,7,24,0,7 269*4724848cSchristos rlwimi 24,7,24,16,23 270*4724848cSchristos mr 8,25 271*4724848cSchristos rotlwi 25,25,8 272*4724848cSchristos rlwimi 25,8,24,0,7 273*4724848cSchristos rlwimi 25,8,24,16,23 274*4724848cSchristos mr 9,26 275*4724848cSchristos rotlwi 26,26,8 276*4724848cSchristos rlwimi 26,9,24,0,7 277*4724848cSchristos rlwimi 26,9,24,16,23 278*4724848cSchristos mr 10,27 279*4724848cSchristos rotlwi 27,27,8 280*4724848cSchristos rlwimi 27,10,24,0,7 281*4724848cSchristos rlwimi 27,10,24,16,23 282*4724848cSchristos mr 7,28 283*4724848cSchristos rotlwi 28,28,8 284*4724848cSchristos rlwimi 28,7,24,0,7 285*4724848cSchristos rlwimi 28,7,24,16,23 286*4724848cSchristos mr 8,29 287*4724848cSchristos rotlwi 29,29,8 288*4724848cSchristos rlwimi 29,8,24,0,7 289*4724848cSchristos rlwimi 29,8,24,16,23 290*4724848cSchristos mr 9,30 291*4724848cSchristos rotlwi 30,30,8 292*4724848cSchristos rlwimi 30,9,24,0,7 293*4724848cSchristos rlwimi 30,9,24,16,23 294*4724848cSchristos mr 10,31 295*4724848cSchristos rotlwi 31,31,8 296*4724848cSchristos rlwimi 31,10,24,0,7 297*4724848cSchristos rlwimi 31,10,24,16,23 298*4724848cSchristos bne .Ltail 299*4724848cSchristos 300*4724848cSchristos lwz 7,0(4) 301*4724848cSchristos lwz 8,4(4) 302*4724848cSchristos cmpldi 5,0 303*4724848cSchristos lwz 9,8(4) 304*4724848cSchristos lwz 10,12(4) 305*4724848cSchristos xor 16,16,7 306*4724848cSchristos lwz 7,16(4) 307*4724848cSchristos xor 17,17,8 308*4724848cSchristos lwz 8,20(4) 309*4724848cSchristos xor 18,18,9 310*4724848cSchristos lwz 9,24(4) 311*4724848cSchristos xor 19,19,10 312*4724848cSchristos lwz 10,28(4) 313*4724848cSchristos xor 20,20,7 314*4724848cSchristos lwz 7,32(4) 315*4724848cSchristos xor 21,21,8 316*4724848cSchristos lwz 8,36(4) 317*4724848cSchristos xor 22,22,9 318*4724848cSchristos lwz 9,40(4) 319*4724848cSchristos xor 23,23,10 320*4724848cSchristos lwz 10,44(4) 321*4724848cSchristos xor 24,24,7 322*4724848cSchristos lwz 7,48(4) 323*4724848cSchristos xor 25,25,8 324*4724848cSchristos lwz 8,52(4) 325*4724848cSchristos xor 26,26,9 326*4724848cSchristos lwz 9,56(4) 327*4724848cSchristos xor 27,27,10 328*4724848cSchristos lwz 10,60(4) 329*4724848cSchristos xor 28,28,7 330*4724848cSchristos stw 16,0(3) 331*4724848cSchristos xor 29,29,8 332*4724848cSchristos stw 17,4(3) 333*4724848cSchristos xor 30,30,9 334*4724848cSchristos stw 18,8(3) 335*4724848cSchristos xor 31,31,10 336*4724848cSchristos stw 19,12(3) 337*4724848cSchristos stw 20,16(3) 338*4724848cSchristos stw 21,20(3) 339*4724848cSchristos stw 22,24(3) 340*4724848cSchristos stw 23,28(3) 341*4724848cSchristos stw 24,32(3) 342*4724848cSchristos stw 25,36(3) 343*4724848cSchristos stw 26,40(3) 344*4724848cSchristos stw 27,44(3) 345*4724848cSchristos stw 28,48(3) 346*4724848cSchristos stw 29,52(3) 347*4724848cSchristos stw 30,56(3) 348*4724848cSchristos addi 4,4,64 349*4724848cSchristos stw 31,60(3) 350*4724848cSchristos addi 3,3,64 351*4724848cSchristos 352*4724848cSchristos bne .Loop_outer 353*4724848cSchristos 354*4724848cSchristos blr 355*4724848cSchristos 356*4724848cSchristos.align 4 357*4724848cSchristos.Ltail: 358*4724848cSchristos addi 5,5,64 359*4724848cSchristos subi 4,4,1 360*4724848cSchristos subi 3,3,1 361*4724848cSchristos addi 7,1,48-1 362*4724848cSchristos mtctr 5 363*4724848cSchristos 364*4724848cSchristos stw 16,48(1) 365*4724848cSchristos stw 17,52(1) 366*4724848cSchristos stw 18,56(1) 367*4724848cSchristos stw 19,60(1) 368*4724848cSchristos stw 20,64(1) 369*4724848cSchristos stw 21,68(1) 370*4724848cSchristos stw 22,72(1) 371*4724848cSchristos stw 23,76(1) 372*4724848cSchristos stw 24,80(1) 373*4724848cSchristos stw 25,84(1) 374*4724848cSchristos stw 26,88(1) 375*4724848cSchristos stw 27,92(1) 376*4724848cSchristos stw 28,96(1) 377*4724848cSchristos stw 29,100(1) 378*4724848cSchristos stw 30,104(1) 379*4724848cSchristos stw 31,108(1) 380*4724848cSchristos 381*4724848cSchristos.Loop_tail: 382*4724848cSchristos lbzu 11,1(4) 383*4724848cSchristos lbzu 16,1(7) 384*4724848cSchristos xor 12,11,16 385*4724848cSchristos stbu 12,1(3) 386*4724848cSchristos bc 16,0,.Loop_tail 387*4724848cSchristos 388*4724848cSchristos stw 1,48(1) 389*4724848cSchristos stw 1,52(1) 390*4724848cSchristos stw 1,56(1) 391*4724848cSchristos stw 1,60(1) 392*4724848cSchristos stw 1,64(1) 393*4724848cSchristos stw 1,68(1) 394*4724848cSchristos stw 1,72(1) 395*4724848cSchristos stw 1,76(1) 396*4724848cSchristos stw 1,80(1) 397*4724848cSchristos stw 1,84(1) 398*4724848cSchristos stw 1,88(1) 399*4724848cSchristos stw 1,92(1) 400*4724848cSchristos stw 1,96(1) 401*4724848cSchristos stw 1,100(1) 402*4724848cSchristos stw 1,104(1) 403*4724848cSchristos stw 1,108(1) 404*4724848cSchristos 405*4724848cSchristos blr 406*4724848cSchristos.long 0 407*4724848cSchristos.byte 0,12,0x14,0,0,0,0,0 408*4724848cSchristos 409*4724848cSchristos.globl ChaCha20_ctr32_vmx 410*4724848cSchristos.type ChaCha20_ctr32_vmx,@function 411*4724848cSchristos.section ".opd","aw" 412*4724848cSchristos.align 3 413*4724848cSchristosChaCha20_ctr32_vmx: 414*4724848cSchristos.quad .ChaCha20_ctr32_vmx,.TOC.@tocbase,0 415*4724848cSchristos.previous 416*4724848cSchristos.align 5 417*4724848cSchristos.ChaCha20_ctr32_vmx: 418*4724848cSchristos cmpldi 5,256 419*4724848cSchristos blt __ChaCha20_ctr32_int 420*4724848cSchristos 421*4724848cSchristos stdu 1,-416(1) 422*4724848cSchristos mflr 0 423*4724848cSchristos li 10,127 424*4724848cSchristos li 11,143 425*4724848cSchristos mfspr 12,256 426*4724848cSchristos stvx 23,10,1 427*4724848cSchristos addi 10,10,32 428*4724848cSchristos stvx 24,11,1 429*4724848cSchristos addi 11,11,32 430*4724848cSchristos stvx 25,10,1 431*4724848cSchristos addi 10,10,32 432*4724848cSchristos stvx 26,11,1 433*4724848cSchristos addi 11,11,32 434*4724848cSchristos stvx 27,10,1 435*4724848cSchristos addi 10,10,32 436*4724848cSchristos stvx 28,11,1 437*4724848cSchristos addi 11,11,32 438*4724848cSchristos stvx 29,10,1 439*4724848cSchristos addi 10,10,32 440*4724848cSchristos stvx 30,11,1 441*4724848cSchristos stvx 31,10,1 442*4724848cSchristos stw 12,268(1) 443*4724848cSchristos std 14,272(1) 444*4724848cSchristos std 15,280(1) 445*4724848cSchristos std 16,288(1) 446*4724848cSchristos std 17,296(1) 447*4724848cSchristos std 18,304(1) 448*4724848cSchristos std 19,312(1) 449*4724848cSchristos std 20,320(1) 450*4724848cSchristos std 21,328(1) 451*4724848cSchristos std 22,336(1) 452*4724848cSchristos std 23,344(1) 453*4724848cSchristos std 24,352(1) 454*4724848cSchristos std 25,360(1) 455*4724848cSchristos std 26,368(1) 456*4724848cSchristos std 27,376(1) 457*4724848cSchristos std 28,384(1) 458*4724848cSchristos std 29,392(1) 459*4724848cSchristos std 30,400(1) 460*4724848cSchristos std 31,408(1) 461*4724848cSchristos li 12,-4096+511 462*4724848cSchristos std 0, 432(1) 463*4724848cSchristos mtspr 256,12 464*4724848cSchristos 465*4724848cSchristos bl .Lconsts 466*4724848cSchristos li 16,16 467*4724848cSchristos li 17,32 468*4724848cSchristos li 18,48 469*4724848cSchristos li 19,64 470*4724848cSchristos li 20,31 471*4724848cSchristos li 21,15 472*4724848cSchristos 473*4724848cSchristos lvx 13,0,6 474*4724848cSchristos lvsl 29,0,6 475*4724848cSchristos lvx 14,16,6 476*4724848cSchristos lvx 27,20,6 477*4724848cSchristos 478*4724848cSchristos lvx 15,0,7 479*4724848cSchristos lvsl 30,0,7 480*4724848cSchristos lvx 28,21,7 481*4724848cSchristos 482*4724848cSchristos lvx 12,0,12 483*4724848cSchristos lvx 17,16,12 484*4724848cSchristos lvx 18,17,12 485*4724848cSchristos lvx 19,18,12 486*4724848cSchristos lvx 23,19,12 487*4724848cSchristos 488*4724848cSchristos vperm 13,13,14,29 489*4724848cSchristos vperm 14,14,27,29 490*4724848cSchristos vperm 15,15,28,30 491*4724848cSchristos 492*4724848cSchristos lwz 11,0(7) 493*4724848cSchristos lwz 12,4(7) 494*4724848cSchristos vadduwm 15,15,17 495*4724848cSchristos lwz 14,8(7) 496*4724848cSchristos vadduwm 16,15,17 497*4724848cSchristos lwz 15,12(7) 498*4724848cSchristos vadduwm 17,16,17 499*4724848cSchristos 500*4724848cSchristos vxor 29,29,29 501*4724848cSchristos vspltisw 26,-1 502*4724848cSchristos lvsl 24,0,4 503*4724848cSchristos lvsr 25,0,3 504*4724848cSchristos vperm 26,29,26,25 505*4724848cSchristos 506*4724848cSchristos lvsl 29,0,16 507*4724848cSchristos vspltisb 30,3 508*4724848cSchristos vxor 29,29,30 509*4724848cSchristos vxor 25,25,30 510*4724848cSchristos vperm 24,24,24,29 511*4724848cSchristos 512*4724848cSchristos li 0,10 513*4724848cSchristos b .Loop_outer_vmx 514*4724848cSchristos 515*4724848cSchristos.align 4 516*4724848cSchristos.Loop_outer_vmx: 517*4724848cSchristos lis 16,0x6170 518*4724848cSchristos lis 17,0x3320 519*4724848cSchristos vor 0,12,12 520*4724848cSchristos lis 18,0x7962 521*4724848cSchristos lis 19,0x6b20 522*4724848cSchristos vor 4,12,12 523*4724848cSchristos ori 16,16,0x7865 524*4724848cSchristos ori 17,17,0x646e 525*4724848cSchristos vor 8,12,12 526*4724848cSchristos ori 18,18,0x2d32 527*4724848cSchristos ori 19,19,0x6574 528*4724848cSchristos vor 1,13,13 529*4724848cSchristos 530*4724848cSchristos lwz 20,0(6) 531*4724848cSchristos vor 5,13,13 532*4724848cSchristos lwz 21,4(6) 533*4724848cSchristos vor 9,13,13 534*4724848cSchristos lwz 22,8(6) 535*4724848cSchristos vor 2,14,14 536*4724848cSchristos lwz 23,12(6) 537*4724848cSchristos vor 6,14,14 538*4724848cSchristos lwz 24,16(6) 539*4724848cSchristos vor 10,14,14 540*4724848cSchristos mr 28,11 541*4724848cSchristos lwz 25,20(6) 542*4724848cSchristos vor 3,15,15 543*4724848cSchristos mr 29,12 544*4724848cSchristos lwz 26,24(6) 545*4724848cSchristos vor 7,16,16 546*4724848cSchristos mr 30,14 547*4724848cSchristos lwz 27,28(6) 548*4724848cSchristos vor 11,17,17 549*4724848cSchristos mr 31,15 550*4724848cSchristos 551*4724848cSchristos mr 7,20 552*4724848cSchristos mr 8,21 553*4724848cSchristos mr 9,22 554*4724848cSchristos mr 10,23 555*4724848cSchristos 556*4724848cSchristos vspltisw 27,12 557*4724848cSchristos vspltisw 28,7 558*4724848cSchristos 559*4724848cSchristos mtctr 0 560*4724848cSchristos nop 561*4724848cSchristos.Loop_vmx: 562*4724848cSchristos vadduwm 0,0,1 563*4724848cSchristos vadduwm 4,4,5 564*4724848cSchristos vadduwm 8,8,9 565*4724848cSchristos add 16,16,20 566*4724848cSchristos add 17,17,21 567*4724848cSchristos add 18,18,22 568*4724848cSchristos vxor 3,3,0 569*4724848cSchristos vxor 7,7,4 570*4724848cSchristos vxor 11,11,8 571*4724848cSchristos add 19,19,23 572*4724848cSchristos xor 28,28,16 573*4724848cSchristos xor 29,29,17 574*4724848cSchristos vperm 3,3,3,19 575*4724848cSchristos vperm 7,7,7,19 576*4724848cSchristos vperm 11,11,11,19 577*4724848cSchristos xor 30,30,18 578*4724848cSchristos xor 31,31,19 579*4724848cSchristos rotlwi 28,28,16 580*4724848cSchristos vadduwm 2,2,3 581*4724848cSchristos vadduwm 6,6,7 582*4724848cSchristos vadduwm 10,10,11 583*4724848cSchristos rotlwi 29,29,16 584*4724848cSchristos rotlwi 30,30,16 585*4724848cSchristos rotlwi 31,31,16 586*4724848cSchristos vxor 1,1,2 587*4724848cSchristos vxor 5,5,6 588*4724848cSchristos vxor 9,9,10 589*4724848cSchristos add 24,24,28 590*4724848cSchristos add 25,25,29 591*4724848cSchristos add 26,26,30 592*4724848cSchristos vrlw 1,1,27 593*4724848cSchristos vrlw 5,5,27 594*4724848cSchristos vrlw 9,9,27 595*4724848cSchristos add 27,27,31 596*4724848cSchristos xor 20,20,24 597*4724848cSchristos xor 21,21,25 598*4724848cSchristos vadduwm 0,0,1 599*4724848cSchristos vadduwm 4,4,5 600*4724848cSchristos vadduwm 8,8,9 601*4724848cSchristos xor 22,22,26 602*4724848cSchristos xor 23,23,27 603*4724848cSchristos rotlwi 20,20,12 604*4724848cSchristos vxor 3,3,0 605*4724848cSchristos vxor 7,7,4 606*4724848cSchristos vxor 11,11,8 607*4724848cSchristos rotlwi 21,21,12 608*4724848cSchristos rotlwi 22,22,12 609*4724848cSchristos rotlwi 23,23,12 610*4724848cSchristos vperm 3,3,3,23 611*4724848cSchristos vperm 7,7,7,23 612*4724848cSchristos vperm 11,11,11,23 613*4724848cSchristos add 16,16,20 614*4724848cSchristos add 17,17,21 615*4724848cSchristos add 18,18,22 616*4724848cSchristos vadduwm 2,2,3 617*4724848cSchristos vadduwm 6,6,7 618*4724848cSchristos vadduwm 10,10,11 619*4724848cSchristos add 19,19,23 620*4724848cSchristos xor 28,28,16 621*4724848cSchristos xor 29,29,17 622*4724848cSchristos vxor 1,1,2 623*4724848cSchristos vxor 5,5,6 624*4724848cSchristos vxor 9,9,10 625*4724848cSchristos xor 30,30,18 626*4724848cSchristos xor 31,31,19 627*4724848cSchristos rotlwi 28,28,8 628*4724848cSchristos vrlw 1,1,28 629*4724848cSchristos vrlw 5,5,28 630*4724848cSchristos vrlw 9,9,28 631*4724848cSchristos rotlwi 29,29,8 632*4724848cSchristos rotlwi 30,30,8 633*4724848cSchristos rotlwi 31,31,8 634*4724848cSchristos vsldoi 2,2,2, 16-8 635*4724848cSchristos vsldoi 6,6,6, 16-8 636*4724848cSchristos vsldoi 10,10,10, 16-8 637*4724848cSchristos add 24,24,28 638*4724848cSchristos add 25,25,29 639*4724848cSchristos add 26,26,30 640*4724848cSchristos vsldoi 1,1,1, 16-12 641*4724848cSchristos vsldoi 5,5,5, 16-12 642*4724848cSchristos vsldoi 9,9,9, 16-12 643*4724848cSchristos add 27,27,31 644*4724848cSchristos xor 20,20,24 645*4724848cSchristos xor 21,21,25 646*4724848cSchristos vsldoi 3,3,3, 16-4 647*4724848cSchristos vsldoi 7,7,7, 16-4 648*4724848cSchristos vsldoi 11,11,11, 16-4 649*4724848cSchristos xor 22,22,26 650*4724848cSchristos xor 23,23,27 651*4724848cSchristos rotlwi 20,20,7 652*4724848cSchristos rotlwi 21,21,7 653*4724848cSchristos rotlwi 22,22,7 654*4724848cSchristos rotlwi 23,23,7 655*4724848cSchristos vadduwm 0,0,1 656*4724848cSchristos vadduwm 4,4,5 657*4724848cSchristos vadduwm 8,8,9 658*4724848cSchristos add 16,16,21 659*4724848cSchristos add 17,17,22 660*4724848cSchristos add 18,18,23 661*4724848cSchristos vxor 3,3,0 662*4724848cSchristos vxor 7,7,4 663*4724848cSchristos vxor 11,11,8 664*4724848cSchristos add 19,19,20 665*4724848cSchristos xor 31,31,16 666*4724848cSchristos xor 28,28,17 667*4724848cSchristos vperm 3,3,3,19 668*4724848cSchristos vperm 7,7,7,19 669*4724848cSchristos vperm 11,11,11,19 670*4724848cSchristos xor 29,29,18 671*4724848cSchristos xor 30,30,19 672*4724848cSchristos rotlwi 31,31,16 673*4724848cSchristos vadduwm 2,2,3 674*4724848cSchristos vadduwm 6,6,7 675*4724848cSchristos vadduwm 10,10,11 676*4724848cSchristos rotlwi 28,28,16 677*4724848cSchristos rotlwi 29,29,16 678*4724848cSchristos rotlwi 30,30,16 679*4724848cSchristos vxor 1,1,2 680*4724848cSchristos vxor 5,5,6 681*4724848cSchristos vxor 9,9,10 682*4724848cSchristos add 26,26,31 683*4724848cSchristos add 27,27,28 684*4724848cSchristos add 24,24,29 685*4724848cSchristos vrlw 1,1,27 686*4724848cSchristos vrlw 5,5,27 687*4724848cSchristos vrlw 9,9,27 688*4724848cSchristos add 25,25,30 689*4724848cSchristos xor 21,21,26 690*4724848cSchristos xor 22,22,27 691*4724848cSchristos vadduwm 0,0,1 692*4724848cSchristos vadduwm 4,4,5 693*4724848cSchristos vadduwm 8,8,9 694*4724848cSchristos xor 23,23,24 695*4724848cSchristos xor 20,20,25 696*4724848cSchristos rotlwi 21,21,12 697*4724848cSchristos vxor 3,3,0 698*4724848cSchristos vxor 7,7,4 699*4724848cSchristos vxor 11,11,8 700*4724848cSchristos rotlwi 22,22,12 701*4724848cSchristos rotlwi 23,23,12 702*4724848cSchristos rotlwi 20,20,12 703*4724848cSchristos vperm 3,3,3,23 704*4724848cSchristos vperm 7,7,7,23 705*4724848cSchristos vperm 11,11,11,23 706*4724848cSchristos add 16,16,21 707*4724848cSchristos add 17,17,22 708*4724848cSchristos add 18,18,23 709*4724848cSchristos vadduwm 2,2,3 710*4724848cSchristos vadduwm 6,6,7 711*4724848cSchristos vadduwm 10,10,11 712*4724848cSchristos add 19,19,20 713*4724848cSchristos xor 31,31,16 714*4724848cSchristos xor 28,28,17 715*4724848cSchristos vxor 1,1,2 716*4724848cSchristos vxor 5,5,6 717*4724848cSchristos vxor 9,9,10 718*4724848cSchristos xor 29,29,18 719*4724848cSchristos xor 30,30,19 720*4724848cSchristos rotlwi 31,31,8 721*4724848cSchristos vrlw 1,1,28 722*4724848cSchristos vrlw 5,5,28 723*4724848cSchristos vrlw 9,9,28 724*4724848cSchristos rotlwi 28,28,8 725*4724848cSchristos rotlwi 29,29,8 726*4724848cSchristos rotlwi 30,30,8 727*4724848cSchristos vsldoi 2,2,2, 16-8 728*4724848cSchristos vsldoi 6,6,6, 16-8 729*4724848cSchristos vsldoi 10,10,10, 16-8 730*4724848cSchristos add 26,26,31 731*4724848cSchristos add 27,27,28 732*4724848cSchristos add 24,24,29 733*4724848cSchristos vsldoi 1,1,1, 16-4 734*4724848cSchristos vsldoi 5,5,5, 16-4 735*4724848cSchristos vsldoi 9,9,9, 16-4 736*4724848cSchristos add 25,25,30 737*4724848cSchristos xor 21,21,26 738*4724848cSchristos xor 22,22,27 739*4724848cSchristos vsldoi 3,3,3, 16-12 740*4724848cSchristos vsldoi 7,7,7, 16-12 741*4724848cSchristos vsldoi 11,11,11, 16-12 742*4724848cSchristos xor 23,23,24 743*4724848cSchristos xor 20,20,25 744*4724848cSchristos rotlwi 21,21,7 745*4724848cSchristos rotlwi 22,22,7 746*4724848cSchristos rotlwi 23,23,7 747*4724848cSchristos rotlwi 20,20,7 748*4724848cSchristos bc 16,0,.Loop_vmx 749*4724848cSchristos 750*4724848cSchristos subi 5,5,256 751*4724848cSchristos addi 16,16,0x7865 752*4724848cSchristos addi 17,17,0x646e 753*4724848cSchristos addi 18,18,0x2d32 754*4724848cSchristos addi 19,19,0x6574 755*4724848cSchristos addis 16,16,0x6170 756*4724848cSchristos addis 17,17,0x3320 757*4724848cSchristos addis 18,18,0x7962 758*4724848cSchristos addis 19,19,0x6b20 759*4724848cSchristos add 20,20,7 760*4724848cSchristos lwz 7,16(6) 761*4724848cSchristos add 21,21,8 762*4724848cSchristos lwz 8,20(6) 763*4724848cSchristos add 22,22,9 764*4724848cSchristos lwz 9,24(6) 765*4724848cSchristos add 23,23,10 766*4724848cSchristos lwz 10,28(6) 767*4724848cSchristos add 24,24,7 768*4724848cSchristos add 25,25,8 769*4724848cSchristos add 26,26,9 770*4724848cSchristos add 27,27,10 771*4724848cSchristos add 28,28,11 772*4724848cSchristos add 29,29,12 773*4724848cSchristos add 30,30,14 774*4724848cSchristos add 31,31,15 775*4724848cSchristos 776*4724848cSchristos vadduwm 0,0,12 777*4724848cSchristos vadduwm 4,4,12 778*4724848cSchristos vadduwm 8,8,12 779*4724848cSchristos vadduwm 1,1,13 780*4724848cSchristos vadduwm 5,5,13 781*4724848cSchristos vadduwm 9,9,13 782*4724848cSchristos vadduwm 2,2,14 783*4724848cSchristos vadduwm 6,6,14 784*4724848cSchristos vadduwm 10,10,14 785*4724848cSchristos vadduwm 3,3,15 786*4724848cSchristos vadduwm 7,7,16 787*4724848cSchristos vadduwm 11,11,17 788*4724848cSchristos 789*4724848cSchristos addi 11,11,4 790*4724848cSchristos vadduwm 15,15,18 791*4724848cSchristos vadduwm 16,16,18 792*4724848cSchristos vadduwm 17,17,18 793*4724848cSchristos 794*4724848cSchristos mr 7,16 795*4724848cSchristos rotlwi 16,16,8 796*4724848cSchristos rlwimi 16,7,24,0,7 797*4724848cSchristos rlwimi 16,7,24,16,23 798*4724848cSchristos mr 8,17 799*4724848cSchristos rotlwi 17,17,8 800*4724848cSchristos rlwimi 17,8,24,0,7 801*4724848cSchristos rlwimi 17,8,24,16,23 802*4724848cSchristos mr 9,18 803*4724848cSchristos rotlwi 18,18,8 804*4724848cSchristos rlwimi 18,9,24,0,7 805*4724848cSchristos rlwimi 18,9,24,16,23 806*4724848cSchristos mr 10,19 807*4724848cSchristos rotlwi 19,19,8 808*4724848cSchristos rlwimi 19,10,24,0,7 809*4724848cSchristos rlwimi 19,10,24,16,23 810*4724848cSchristos mr 7,20 811*4724848cSchristos rotlwi 20,20,8 812*4724848cSchristos rlwimi 20,7,24,0,7 813*4724848cSchristos rlwimi 20,7,24,16,23 814*4724848cSchristos mr 8,21 815*4724848cSchristos rotlwi 21,21,8 816*4724848cSchristos rlwimi 21,8,24,0,7 817*4724848cSchristos rlwimi 21,8,24,16,23 818*4724848cSchristos mr 9,22 819*4724848cSchristos rotlwi 22,22,8 820*4724848cSchristos rlwimi 22,9,24,0,7 821*4724848cSchristos rlwimi 22,9,24,16,23 822*4724848cSchristos mr 10,23 823*4724848cSchristos rotlwi 23,23,8 824*4724848cSchristos rlwimi 23,10,24,0,7 825*4724848cSchristos rlwimi 23,10,24,16,23 826*4724848cSchristos mr 7,24 827*4724848cSchristos rotlwi 24,24,8 828*4724848cSchristos rlwimi 24,7,24,0,7 829*4724848cSchristos rlwimi 24,7,24,16,23 830*4724848cSchristos mr 8,25 831*4724848cSchristos rotlwi 25,25,8 832*4724848cSchristos rlwimi 25,8,24,0,7 833*4724848cSchristos rlwimi 25,8,24,16,23 834*4724848cSchristos mr 9,26 835*4724848cSchristos rotlwi 26,26,8 836*4724848cSchristos rlwimi 26,9,24,0,7 837*4724848cSchristos rlwimi 26,9,24,16,23 838*4724848cSchristos mr 10,27 839*4724848cSchristos rotlwi 27,27,8 840*4724848cSchristos rlwimi 27,10,24,0,7 841*4724848cSchristos rlwimi 27,10,24,16,23 842*4724848cSchristos mr 7,28 843*4724848cSchristos rotlwi 28,28,8 844*4724848cSchristos rlwimi 28,7,24,0,7 845*4724848cSchristos rlwimi 28,7,24,16,23 846*4724848cSchristos mr 8,29 847*4724848cSchristos rotlwi 29,29,8 848*4724848cSchristos rlwimi 29,8,24,0,7 849*4724848cSchristos rlwimi 29,8,24,16,23 850*4724848cSchristos mr 9,30 851*4724848cSchristos rotlwi 30,30,8 852*4724848cSchristos rlwimi 30,9,24,0,7 853*4724848cSchristos rlwimi 30,9,24,16,23 854*4724848cSchristos mr 10,31 855*4724848cSchristos rotlwi 31,31,8 856*4724848cSchristos rlwimi 31,10,24,0,7 857*4724848cSchristos rlwimi 31,10,24,16,23 858*4724848cSchristos lwz 7,0(4) 859*4724848cSchristos lwz 8,4(4) 860*4724848cSchristos lwz 9,8(4) 861*4724848cSchristos lwz 10,12(4) 862*4724848cSchristos xor 16,16,7 863*4724848cSchristos lwz 7,16(4) 864*4724848cSchristos xor 17,17,8 865*4724848cSchristos lwz 8,20(4) 866*4724848cSchristos xor 18,18,9 867*4724848cSchristos lwz 9,24(4) 868*4724848cSchristos xor 19,19,10 869*4724848cSchristos lwz 10,28(4) 870*4724848cSchristos xor 20,20,7 871*4724848cSchristos lwz 7,32(4) 872*4724848cSchristos xor 21,21,8 873*4724848cSchristos lwz 8,36(4) 874*4724848cSchristos xor 22,22,9 875*4724848cSchristos lwz 9,40(4) 876*4724848cSchristos xor 23,23,10 877*4724848cSchristos lwz 10,44(4) 878*4724848cSchristos xor 24,24,7 879*4724848cSchristos lwz 7,48(4) 880*4724848cSchristos xor 25,25,8 881*4724848cSchristos lwz 8,52(4) 882*4724848cSchristos xor 26,26,9 883*4724848cSchristos lwz 9,56(4) 884*4724848cSchristos xor 27,27,10 885*4724848cSchristos lwz 10,60(4) 886*4724848cSchristos xor 28,28,7 887*4724848cSchristos stw 16,0(3) 888*4724848cSchristos xor 29,29,8 889*4724848cSchristos stw 17,4(3) 890*4724848cSchristos xor 30,30,9 891*4724848cSchristos stw 18,8(3) 892*4724848cSchristos xor 31,31,10 893*4724848cSchristos stw 19,12(3) 894*4724848cSchristos addi 4,4,64 895*4724848cSchristos stw 20,16(3) 896*4724848cSchristos li 7,16 897*4724848cSchristos stw 21,20(3) 898*4724848cSchristos li 8,32 899*4724848cSchristos stw 22,24(3) 900*4724848cSchristos li 9,48 901*4724848cSchristos stw 23,28(3) 902*4724848cSchristos li 10,64 903*4724848cSchristos stw 24,32(3) 904*4724848cSchristos stw 25,36(3) 905*4724848cSchristos stw 26,40(3) 906*4724848cSchristos stw 27,44(3) 907*4724848cSchristos stw 28,48(3) 908*4724848cSchristos stw 29,52(3) 909*4724848cSchristos stw 30,56(3) 910*4724848cSchristos stw 31,60(3) 911*4724848cSchristos addi 3,3,64 912*4724848cSchristos 913*4724848cSchristos lvx 27,0,4 914*4724848cSchristos lvx 28,7,4 915*4724848cSchristos lvx 29,8,4 916*4724848cSchristos lvx 30,9,4 917*4724848cSchristos lvx 31,10,4 918*4724848cSchristos addi 4,4,64 919*4724848cSchristos 920*4724848cSchristos vperm 27,27,28,24 921*4724848cSchristos vperm 28,28,29,24 922*4724848cSchristos vperm 29,29,30,24 923*4724848cSchristos vperm 30,30,31,24 924*4724848cSchristos vxor 0,0,27 925*4724848cSchristos vxor 1,1,28 926*4724848cSchristos lvx 28,7,4 927*4724848cSchristos vxor 2,2,29 928*4724848cSchristos lvx 29,8,4 929*4724848cSchristos vxor 3,3,30 930*4724848cSchristos lvx 30,9,4 931*4724848cSchristos lvx 27,10,4 932*4724848cSchristos addi 4,4,64 933*4724848cSchristos li 10,63 934*4724848cSchristos vperm 0,0,0,25 935*4724848cSchristos vperm 1,1,1,25 936*4724848cSchristos vperm 2,2,2,25 937*4724848cSchristos vperm 3,3,3,25 938*4724848cSchristos 939*4724848cSchristos vperm 31,31,28,24 940*4724848cSchristos vperm 28,28,29,24 941*4724848cSchristos vperm 29,29,30,24 942*4724848cSchristos vperm 30,30,27,24 943*4724848cSchristos vxor 4,4,31 944*4724848cSchristos vxor 5,5,28 945*4724848cSchristos lvx 28,7,4 946*4724848cSchristos vxor 6,6,29 947*4724848cSchristos lvx 29,8,4 948*4724848cSchristos vxor 7,7,30 949*4724848cSchristos lvx 30,9,4 950*4724848cSchristos lvx 31,10,4 951*4724848cSchristos addi 4,4,64 952*4724848cSchristos vperm 4,4,4,25 953*4724848cSchristos vperm 5,5,5,25 954*4724848cSchristos vperm 6,6,6,25 955*4724848cSchristos vperm 7,7,7,25 956*4724848cSchristos 957*4724848cSchristos vperm 27,27,28,24 958*4724848cSchristos vperm 28,28,29,24 959*4724848cSchristos vperm 29,29,30,24 960*4724848cSchristos vperm 30,30,31,24 961*4724848cSchristos vxor 8,8,27 962*4724848cSchristos vxor 9,9,28 963*4724848cSchristos vxor 10,10,29 964*4724848cSchristos vxor 11,11,30 965*4724848cSchristos vperm 8,8,8,25 966*4724848cSchristos vperm 9,9,9,25 967*4724848cSchristos vperm 10,10,10,25 968*4724848cSchristos vperm 11,11,11,25 969*4724848cSchristos 970*4724848cSchristos andi. 17,3,15 971*4724848cSchristos mr 16,3 972*4724848cSchristos 973*4724848cSchristos vsel 27,0,1,26 974*4724848cSchristos vsel 28,1,2,26 975*4724848cSchristos vsel 29,2,3,26 976*4724848cSchristos vsel 30,3,4,26 977*4724848cSchristos vsel 1,4,5,26 978*4724848cSchristos vsel 2,5,6,26 979*4724848cSchristos vsel 3,6,7,26 980*4724848cSchristos vsel 4,7,8,26 981*4724848cSchristos vsel 5,8,9,26 982*4724848cSchristos vsel 6,9,10,26 983*4724848cSchristos vsel 7,10,11,26 984*4724848cSchristos 985*4724848cSchristos 986*4724848cSchristos stvx 27,7,3 987*4724848cSchristos stvx 28,8,3 988*4724848cSchristos stvx 29,9,3 989*4724848cSchristos addi 3,3,64 990*4724848cSchristos stvx 30,0,3 991*4724848cSchristos stvx 1,7,3 992*4724848cSchristos stvx 2,8,3 993*4724848cSchristos stvx 3,9,3 994*4724848cSchristos addi 3,3,64 995*4724848cSchristos stvx 4,0,3 996*4724848cSchristos stvx 5,7,3 997*4724848cSchristos stvx 6,8,3 998*4724848cSchristos stvx 7,9,3 999*4724848cSchristos addi 3,3,64 1000*4724848cSchristos 1001*4724848cSchristos beq .Laligned_vmx 1002*4724848cSchristos 1003*4724848cSchristos sub 18,3,17 1004*4724848cSchristos li 19,0 1005*4724848cSchristos.Lunaligned_tail_vmx: 1006*4724848cSchristos stvebx 11,19,18 1007*4724848cSchristos addi 19,19,1 1008*4724848cSchristos cmpw 19,17 1009*4724848cSchristos bne .Lunaligned_tail_vmx 1010*4724848cSchristos 1011*4724848cSchristos sub 18,16,17 1012*4724848cSchristos.Lunaligned_head_vmx: 1013*4724848cSchristos stvebx 0,17,18 1014*4724848cSchristos cmpwi 17,15 1015*4724848cSchristos addi 17,17,1 1016*4724848cSchristos bne .Lunaligned_head_vmx 1017*4724848cSchristos 1018*4724848cSchristos cmpldi 5,255 1019*4724848cSchristos bgt .Loop_outer_vmx 1020*4724848cSchristos 1021*4724848cSchristos b .Ldone_vmx 1022*4724848cSchristos 1023*4724848cSchristos.align 4 1024*4724848cSchristos.Laligned_vmx: 1025*4724848cSchristos stvx 0,0,16 1026*4724848cSchristos 1027*4724848cSchristos cmpldi 5,255 1028*4724848cSchristos bgt .Loop_outer_vmx 1029*4724848cSchristos nop 1030*4724848cSchristos 1031*4724848cSchristos.Ldone_vmx: 1032*4724848cSchristos cmpldi 5,0 1033*4724848cSchristos bnel __ChaCha20_1x 1034*4724848cSchristos 1035*4724848cSchristos lwz 12,268(1) 1036*4724848cSchristos li 10,127 1037*4724848cSchristos li 11,143 1038*4724848cSchristos mtspr 256,12 1039*4724848cSchristos lvx 23,10,1 1040*4724848cSchristos addi 10,10,32 1041*4724848cSchristos lvx 24,11,1 1042*4724848cSchristos addi 11,11,32 1043*4724848cSchristos lvx 25,10,1 1044*4724848cSchristos addi 10,10,32 1045*4724848cSchristos lvx 26,11,1 1046*4724848cSchristos addi 11,11,32 1047*4724848cSchristos lvx 27,10,1 1048*4724848cSchristos addi 10,10,32 1049*4724848cSchristos lvx 28,11,1 1050*4724848cSchristos addi 11,11,32 1051*4724848cSchristos lvx 29,10,1 1052*4724848cSchristos addi 10,10,32 1053*4724848cSchristos lvx 30,11,1 1054*4724848cSchristos lvx 31,10,1 1055*4724848cSchristos ld 0, 432(1) 1056*4724848cSchristos ld 14,272(1) 1057*4724848cSchristos ld 15,280(1) 1058*4724848cSchristos ld 16,288(1) 1059*4724848cSchristos ld 17,296(1) 1060*4724848cSchristos ld 18,304(1) 1061*4724848cSchristos ld 19,312(1) 1062*4724848cSchristos ld 20,320(1) 1063*4724848cSchristos ld 21,328(1) 1064*4724848cSchristos ld 22,336(1) 1065*4724848cSchristos ld 23,344(1) 1066*4724848cSchristos ld 24,352(1) 1067*4724848cSchristos ld 25,360(1) 1068*4724848cSchristos ld 26,368(1) 1069*4724848cSchristos ld 27,376(1) 1070*4724848cSchristos ld 28,384(1) 1071*4724848cSchristos ld 29,392(1) 1072*4724848cSchristos ld 30,400(1) 1073*4724848cSchristos ld 31,408(1) 1074*4724848cSchristos mtlr 0 1075*4724848cSchristos addi 1,1,416 1076*4724848cSchristos blr 1077*4724848cSchristos.long 0 1078*4724848cSchristos.byte 0,12,0x04,1,0x80,18,5,0 1079*4724848cSchristos.long 0 1080*4724848cSchristos 1081*4724848cSchristos 1082*4724848cSchristos.globl ChaCha20_ctr32_vsx 1083*4724848cSchristos.type ChaCha20_ctr32_vsx,@function 1084*4724848cSchristos.section ".opd","aw" 1085*4724848cSchristos.align 3 1086*4724848cSchristosChaCha20_ctr32_vsx: 1087*4724848cSchristos.quad .ChaCha20_ctr32_vsx,.TOC.@tocbase,0 1088*4724848cSchristos.previous 1089*4724848cSchristos.align 5 1090*4724848cSchristos.ChaCha20_ctr32_vsx: 1091*4724848cSchristos stdu 1,-224(1) 1092*4724848cSchristos mflr 0 1093*4724848cSchristos li 10,127 1094*4724848cSchristos li 11,143 1095*4724848cSchristos mfspr 12,256 1096*4724848cSchristos stvx 26,10,1 1097*4724848cSchristos addi 10,10,32 1098*4724848cSchristos stvx 27,11,1 1099*4724848cSchristos addi 11,11,32 1100*4724848cSchristos stvx 28,10,1 1101*4724848cSchristos addi 10,10,32 1102*4724848cSchristos stvx 29,11,1 1103*4724848cSchristos addi 11,11,32 1104*4724848cSchristos stvx 30,10,1 1105*4724848cSchristos stvx 31,11,1 1106*4724848cSchristos stw 12,220(1) 1107*4724848cSchristos li 12,-4096+63 1108*4724848cSchristos std 0, 240(1) 1109*4724848cSchristos mtspr 256,12 1110*4724848cSchristos 1111*4724848cSchristos bl .Lconsts 1112*4724848cSchristos.long 0x7E006619 1113*4724848cSchristos addi 12,12,0x50 1114*4724848cSchristos li 8,16 1115*4724848cSchristos li 9,32 1116*4724848cSchristos li 10,48 1117*4724848cSchristos li 11,64 1118*4724848cSchristos 1119*4724848cSchristos.long 0x7E203619 1120*4724848cSchristos.long 0x7E483619 1121*4724848cSchristos.long 0x7E603E19 1122*4724848cSchristos 1123*4724848cSchristos vxor 27,27,27 1124*4724848cSchristos.long 0x7F8B6619 1125*4724848cSchristos vspltw 26,19,0 1126*4724848cSchristos vsldoi 19,19,27,4 1127*4724848cSchristos vsldoi 19,27,19,12 1128*4724848cSchristos vadduwm 26,26,28 1129*4724848cSchristos 1130*4724848cSchristos lvsl 31,0,8 1131*4724848cSchristos vspltisb 27,3 1132*4724848cSchristos vxor 31,31,27 1133*4724848cSchristos 1134*4724848cSchristos li 0,10 1135*4724848cSchristos mtctr 0 1136*4724848cSchristos b .Loop_outer_vsx 1137*4724848cSchristos 1138*4724848cSchristos.align 5 1139*4724848cSchristos.Loop_outer_vsx: 1140*4724848cSchristos lvx 0,0,12 1141*4724848cSchristos lvx 1,8,12 1142*4724848cSchristos lvx 2,9,12 1143*4724848cSchristos lvx 3,10,12 1144*4724848cSchristos 1145*4724848cSchristos vspltw 4,17,0 1146*4724848cSchristos vspltw 5,17,1 1147*4724848cSchristos vspltw 6,17,2 1148*4724848cSchristos vspltw 7,17,3 1149*4724848cSchristos 1150*4724848cSchristos vspltw 8,18,0 1151*4724848cSchristos vspltw 9,18,1 1152*4724848cSchristos vspltw 10,18,2 1153*4724848cSchristos vspltw 11,18,3 1154*4724848cSchristos 1155*4724848cSchristos vor 12,26,26 1156*4724848cSchristos vspltw 13,19,1 1157*4724848cSchristos vspltw 14,19,2 1158*4724848cSchristos vspltw 15,19,3 1159*4724848cSchristos 1160*4724848cSchristos vspltisw 27,-16 1161*4724848cSchristos vspltisw 28,12 1162*4724848cSchristos vspltisw 29,8 1163*4724848cSchristos vspltisw 30,7 1164*4724848cSchristos 1165*4724848cSchristos.Loop_vsx: 1166*4724848cSchristos vadduwm 0,0,4 1167*4724848cSchristos vadduwm 1,1,5 1168*4724848cSchristos vadduwm 2,2,6 1169*4724848cSchristos vadduwm 3,3,7 1170*4724848cSchristos vxor 12,12,0 1171*4724848cSchristos vxor 13,13,1 1172*4724848cSchristos vxor 14,14,2 1173*4724848cSchristos vxor 15,15,3 1174*4724848cSchristos vrlw 12,12,27 1175*4724848cSchristos vrlw 13,13,27 1176*4724848cSchristos vrlw 14,14,27 1177*4724848cSchristos vrlw 15,15,27 1178*4724848cSchristos vadduwm 8,8,12 1179*4724848cSchristos vadduwm 9,9,13 1180*4724848cSchristos vadduwm 10,10,14 1181*4724848cSchristos vadduwm 11,11,15 1182*4724848cSchristos vxor 4,4,8 1183*4724848cSchristos vxor 5,5,9 1184*4724848cSchristos vxor 6,6,10 1185*4724848cSchristos vxor 7,7,11 1186*4724848cSchristos vrlw 4,4,28 1187*4724848cSchristos vrlw 5,5,28 1188*4724848cSchristos vrlw 6,6,28 1189*4724848cSchristos vrlw 7,7,28 1190*4724848cSchristos vadduwm 0,0,4 1191*4724848cSchristos vadduwm 1,1,5 1192*4724848cSchristos vadduwm 2,2,6 1193*4724848cSchristos vadduwm 3,3,7 1194*4724848cSchristos vxor 12,12,0 1195*4724848cSchristos vxor 13,13,1 1196*4724848cSchristos vxor 14,14,2 1197*4724848cSchristos vxor 15,15,3 1198*4724848cSchristos vrlw 12,12,29 1199*4724848cSchristos vrlw 13,13,29 1200*4724848cSchristos vrlw 14,14,29 1201*4724848cSchristos vrlw 15,15,29 1202*4724848cSchristos vadduwm 8,8,12 1203*4724848cSchristos vadduwm 9,9,13 1204*4724848cSchristos vadduwm 10,10,14 1205*4724848cSchristos vadduwm 11,11,15 1206*4724848cSchristos vxor 4,4,8 1207*4724848cSchristos vxor 5,5,9 1208*4724848cSchristos vxor 6,6,10 1209*4724848cSchristos vxor 7,7,11 1210*4724848cSchristos vrlw 4,4,30 1211*4724848cSchristos vrlw 5,5,30 1212*4724848cSchristos vrlw 6,6,30 1213*4724848cSchristos vrlw 7,7,30 1214*4724848cSchristos vadduwm 0,0,5 1215*4724848cSchristos vadduwm 1,1,6 1216*4724848cSchristos vadduwm 2,2,7 1217*4724848cSchristos vadduwm 3,3,4 1218*4724848cSchristos vxor 15,15,0 1219*4724848cSchristos vxor 12,12,1 1220*4724848cSchristos vxor 13,13,2 1221*4724848cSchristos vxor 14,14,3 1222*4724848cSchristos vrlw 15,15,27 1223*4724848cSchristos vrlw 12,12,27 1224*4724848cSchristos vrlw 13,13,27 1225*4724848cSchristos vrlw 14,14,27 1226*4724848cSchristos vadduwm 10,10,15 1227*4724848cSchristos vadduwm 11,11,12 1228*4724848cSchristos vadduwm 8,8,13 1229*4724848cSchristos vadduwm 9,9,14 1230*4724848cSchristos vxor 5,5,10 1231*4724848cSchristos vxor 6,6,11 1232*4724848cSchristos vxor 7,7,8 1233*4724848cSchristos vxor 4,4,9 1234*4724848cSchristos vrlw 5,5,28 1235*4724848cSchristos vrlw 6,6,28 1236*4724848cSchristos vrlw 7,7,28 1237*4724848cSchristos vrlw 4,4,28 1238*4724848cSchristos vadduwm 0,0,5 1239*4724848cSchristos vadduwm 1,1,6 1240*4724848cSchristos vadduwm 2,2,7 1241*4724848cSchristos vadduwm 3,3,4 1242*4724848cSchristos vxor 15,15,0 1243*4724848cSchristos vxor 12,12,1 1244*4724848cSchristos vxor 13,13,2 1245*4724848cSchristos vxor 14,14,3 1246*4724848cSchristos vrlw 15,15,29 1247*4724848cSchristos vrlw 12,12,29 1248*4724848cSchristos vrlw 13,13,29 1249*4724848cSchristos vrlw 14,14,29 1250*4724848cSchristos vadduwm 10,10,15 1251*4724848cSchristos vadduwm 11,11,12 1252*4724848cSchristos vadduwm 8,8,13 1253*4724848cSchristos vadduwm 9,9,14 1254*4724848cSchristos vxor 5,5,10 1255*4724848cSchristos vxor 6,6,11 1256*4724848cSchristos vxor 7,7,8 1257*4724848cSchristos vxor 4,4,9 1258*4724848cSchristos vrlw 5,5,30 1259*4724848cSchristos vrlw 6,6,30 1260*4724848cSchristos vrlw 7,7,30 1261*4724848cSchristos vrlw 4,4,30 1262*4724848cSchristos bc 16,0,.Loop_vsx 1263*4724848cSchristos 1264*4724848cSchristos vadduwm 12,12,26 1265*4724848cSchristos 1266*4724848cSchristos.long 0x13600F8C 1267*4724848cSchristos.long 0x13821F8C 1268*4724848cSchristos.long 0x10000E8C 1269*4724848cSchristos.long 0x10421E8C 1270*4724848cSchristos.long 0x13A42F8C 1271*4724848cSchristos.long 0x13C63F8C 1272*4724848cSchristos.long 0xF0201057 1273*4724848cSchristos.long 0xF0601357 1274*4724848cSchristos.long 0xF01BE057 1275*4724848cSchristos.long 0xF05BE357 1276*4724848cSchristos 1277*4724848cSchristos.long 0x10842E8C 1278*4724848cSchristos.long 0x10C63E8C 1279*4724848cSchristos.long 0x13684F8C 1280*4724848cSchristos.long 0x138A5F8C 1281*4724848cSchristos.long 0xF0A43057 1282*4724848cSchristos.long 0xF0E43357 1283*4724848cSchristos.long 0xF09DF057 1284*4724848cSchristos.long 0xF0DDF357 1285*4724848cSchristos 1286*4724848cSchristos.long 0x11084E8C 1287*4724848cSchristos.long 0x114A5E8C 1288*4724848cSchristos.long 0x13AC6F8C 1289*4724848cSchristos.long 0x13CE7F8C 1290*4724848cSchristos.long 0xF1285057 1291*4724848cSchristos.long 0xF1685357 1292*4724848cSchristos.long 0xF11BE057 1293*4724848cSchristos.long 0xF15BE357 1294*4724848cSchristos 1295*4724848cSchristos.long 0x118C6E8C 1296*4724848cSchristos.long 0x11CE7E8C 1297*4724848cSchristos vspltisw 27,4 1298*4724848cSchristos vadduwm 26,26,27 1299*4724848cSchristos.long 0xF1AC7057 1300*4724848cSchristos.long 0xF1EC7357 1301*4724848cSchristos.long 0xF19DF057 1302*4724848cSchristos.long 0xF1DDF357 1303*4724848cSchristos 1304*4724848cSchristos vadduwm 0,0,16 1305*4724848cSchristos vadduwm 4,4,17 1306*4724848cSchristos vadduwm 8,8,18 1307*4724848cSchristos vadduwm 12,12,19 1308*4724848cSchristos 1309*4724848cSchristos vperm 0,0,0,31 1310*4724848cSchristos vperm 4,4,4,31 1311*4724848cSchristos vperm 8,8,8,31 1312*4724848cSchristos vperm 12,12,12,31 1313*4724848cSchristos 1314*4724848cSchristos cmpldi 5,0x40 1315*4724848cSchristos blt .Ltail_vsx 1316*4724848cSchristos 1317*4724848cSchristos.long 0x7F602619 1318*4724848cSchristos.long 0x7F882619 1319*4724848cSchristos.long 0x7FA92619 1320*4724848cSchristos.long 0x7FCA2619 1321*4724848cSchristos 1322*4724848cSchristos vxor 27,27,0 1323*4724848cSchristos vxor 28,28,4 1324*4724848cSchristos vxor 29,29,8 1325*4724848cSchristos vxor 30,30,12 1326*4724848cSchristos 1327*4724848cSchristos.long 0x7F601F19 1328*4724848cSchristos.long 0x7F881F19 1329*4724848cSchristos addi 4,4,0x40 1330*4724848cSchristos.long 0x7FA91F19 1331*4724848cSchristos subi 5,5,0x40 1332*4724848cSchristos.long 0x7FCA1F19 1333*4724848cSchristos addi 3,3,0x40 1334*4724848cSchristos beq .Ldone_vsx 1335*4724848cSchristos 1336*4724848cSchristos vadduwm 0,1,16 1337*4724848cSchristos vadduwm 4,5,17 1338*4724848cSchristos vadduwm 8,9,18 1339*4724848cSchristos vadduwm 12,13,19 1340*4724848cSchristos 1341*4724848cSchristos vperm 0,0,0,31 1342*4724848cSchristos vperm 4,4,4,31 1343*4724848cSchristos vperm 8,8,8,31 1344*4724848cSchristos vperm 12,12,12,31 1345*4724848cSchristos 1346*4724848cSchristos cmpldi 5,0x40 1347*4724848cSchristos blt .Ltail_vsx 1348*4724848cSchristos 1349*4724848cSchristos.long 0x7F602619 1350*4724848cSchristos.long 0x7F882619 1351*4724848cSchristos.long 0x7FA92619 1352*4724848cSchristos.long 0x7FCA2619 1353*4724848cSchristos 1354*4724848cSchristos vxor 27,27,0 1355*4724848cSchristos vxor 28,28,4 1356*4724848cSchristos vxor 29,29,8 1357*4724848cSchristos vxor 30,30,12 1358*4724848cSchristos 1359*4724848cSchristos.long 0x7F601F19 1360*4724848cSchristos.long 0x7F881F19 1361*4724848cSchristos addi 4,4,0x40 1362*4724848cSchristos.long 0x7FA91F19 1363*4724848cSchristos subi 5,5,0x40 1364*4724848cSchristos.long 0x7FCA1F19 1365*4724848cSchristos addi 3,3,0x40 1366*4724848cSchristos beq .Ldone_vsx 1367*4724848cSchristos 1368*4724848cSchristos vadduwm 0,2,16 1369*4724848cSchristos vadduwm 4,6,17 1370*4724848cSchristos vadduwm 8,10,18 1371*4724848cSchristos vadduwm 12,14,19 1372*4724848cSchristos 1373*4724848cSchristos vperm 0,0,0,31 1374*4724848cSchristos vperm 4,4,4,31 1375*4724848cSchristos vperm 8,8,8,31 1376*4724848cSchristos vperm 12,12,12,31 1377*4724848cSchristos 1378*4724848cSchristos cmpldi 5,0x40 1379*4724848cSchristos blt .Ltail_vsx 1380*4724848cSchristos 1381*4724848cSchristos.long 0x7F602619 1382*4724848cSchristos.long 0x7F882619 1383*4724848cSchristos.long 0x7FA92619 1384*4724848cSchristos.long 0x7FCA2619 1385*4724848cSchristos 1386*4724848cSchristos vxor 27,27,0 1387*4724848cSchristos vxor 28,28,4 1388*4724848cSchristos vxor 29,29,8 1389*4724848cSchristos vxor 30,30,12 1390*4724848cSchristos 1391*4724848cSchristos.long 0x7F601F19 1392*4724848cSchristos.long 0x7F881F19 1393*4724848cSchristos addi 4,4,0x40 1394*4724848cSchristos.long 0x7FA91F19 1395*4724848cSchristos subi 5,5,0x40 1396*4724848cSchristos.long 0x7FCA1F19 1397*4724848cSchristos addi 3,3,0x40 1398*4724848cSchristos beq .Ldone_vsx 1399*4724848cSchristos 1400*4724848cSchristos vadduwm 0,3,16 1401*4724848cSchristos vadduwm 4,7,17 1402*4724848cSchristos vadduwm 8,11,18 1403*4724848cSchristos vadduwm 12,15,19 1404*4724848cSchristos 1405*4724848cSchristos vperm 0,0,0,31 1406*4724848cSchristos vperm 4,4,4,31 1407*4724848cSchristos vperm 8,8,8,31 1408*4724848cSchristos vperm 12,12,12,31 1409*4724848cSchristos 1410*4724848cSchristos cmpldi 5,0x40 1411*4724848cSchristos blt .Ltail_vsx 1412*4724848cSchristos 1413*4724848cSchristos.long 0x7F602619 1414*4724848cSchristos.long 0x7F882619 1415*4724848cSchristos.long 0x7FA92619 1416*4724848cSchristos.long 0x7FCA2619 1417*4724848cSchristos 1418*4724848cSchristos vxor 27,27,0 1419*4724848cSchristos vxor 28,28,4 1420*4724848cSchristos vxor 29,29,8 1421*4724848cSchristos vxor 30,30,12 1422*4724848cSchristos 1423*4724848cSchristos.long 0x7F601F19 1424*4724848cSchristos.long 0x7F881F19 1425*4724848cSchristos addi 4,4,0x40 1426*4724848cSchristos.long 0x7FA91F19 1427*4724848cSchristos subi 5,5,0x40 1428*4724848cSchristos.long 0x7FCA1F19 1429*4724848cSchristos addi 3,3,0x40 1430*4724848cSchristos mtctr 0 1431*4724848cSchristos bne .Loop_outer_vsx 1432*4724848cSchristos 1433*4724848cSchristos.Ldone_vsx: 1434*4724848cSchristos lwz 12,220(1) 1435*4724848cSchristos li 10,127 1436*4724848cSchristos li 11,143 1437*4724848cSchristos ld 0, 240(1) 1438*4724848cSchristos mtspr 256,12 1439*4724848cSchristos lvx 26,10,1 1440*4724848cSchristos addi 10,10,32 1441*4724848cSchristos lvx 27,11,1 1442*4724848cSchristos addi 11,11,32 1443*4724848cSchristos lvx 28,10,1 1444*4724848cSchristos addi 10,10,32 1445*4724848cSchristos lvx 29,11,1 1446*4724848cSchristos addi 11,11,32 1447*4724848cSchristos lvx 30,10,1 1448*4724848cSchristos lvx 31,11,1 1449*4724848cSchristos mtlr 0 1450*4724848cSchristos addi 1,1,224 1451*4724848cSchristos blr 1452*4724848cSchristos 1453*4724848cSchristos.align 4 1454*4724848cSchristos.Ltail_vsx: 1455*4724848cSchristos addi 11,1,48 1456*4724848cSchristos mtctr 5 1457*4724848cSchristos.long 0x7C005F19 1458*4724848cSchristos.long 0x7C885F19 1459*4724848cSchristos.long 0x7D095F19 1460*4724848cSchristos.long 0x7D8A5F19 1461*4724848cSchristos subi 12,11,1 1462*4724848cSchristos subi 4,4,1 1463*4724848cSchristos subi 3,3,1 1464*4724848cSchristos 1465*4724848cSchristos.Loop_tail_vsx: 1466*4724848cSchristos lbzu 6,1(12) 1467*4724848cSchristos lbzu 7,1(4) 1468*4724848cSchristos xor 6,6,7 1469*4724848cSchristos stbu 6,1(3) 1470*4724848cSchristos bc 16,0,.Loop_tail_vsx 1471*4724848cSchristos 1472*4724848cSchristos.long 0x7E005F19 1473*4724848cSchristos.long 0x7E085F19 1474*4724848cSchristos.long 0x7E095F19 1475*4724848cSchristos.long 0x7E0A5F19 1476*4724848cSchristos 1477*4724848cSchristos b .Ldone_vsx 1478*4724848cSchristos.long 0 1479*4724848cSchristos.byte 0,12,0x04,1,0x80,0,5,0 1480*4724848cSchristos.long 0 1481*4724848cSchristos 1482*4724848cSchristos.align 5 1483*4724848cSchristos.Lconsts: 1484*4724848cSchristos mflr 0 1485*4724848cSchristos bcl 20,31,$+4 1486*4724848cSchristos mflr 12 1487*4724848cSchristos addi 12,12,56 1488*4724848cSchristos mtlr 0 1489*4724848cSchristos blr 1490*4724848cSchristos.long 0 1491*4724848cSchristos.byte 0,12,0x14,0,0,0,0,0 1492*4724848cSchristos.space 28 1493*4724848cSchristos.Lsigma: 1494*4724848cSchristos.long 0x61707865,0x3320646e,0x79622d32,0x6b206574 1495*4724848cSchristos.long 1,0,0,0 1496*4724848cSchristos.long 4,0,0,0 1497*4724848cSchristos.long 0x02030001,0x06070405,0x0a0b0809,0x0e0f0c0d 1498*4724848cSchristos.long 0x01020300,0x05060704,0x090a0b08,0x0d0e0f0c 1499*4724848cSchristos.long 0x61707865,0x61707865,0x61707865,0x61707865 1500*4724848cSchristos.long 0x3320646e,0x3320646e,0x3320646e,0x3320646e 1501*4724848cSchristos.long 0x79622d32,0x79622d32,0x79622d32,0x79622d32 1502*4724848cSchristos.long 0x6b206574,0x6b206574,0x6b206574,0x6b206574 1503*4724848cSchristos.long 0,1,2,3 1504*4724848cSchristos.byte 67,104,97,67,104,97,50,48,32,102,111,114,32,80,111,119,101,114,80,67,47,65,108,116,105,86,101,99,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 1505*4724848cSchristos.align 2 1506*4724848cSchristos.align 2 1507