1/* Do not modify. This file is auto-generated from keccak1600-ppc64.pl. */ 2.abiversion 2 3.text 4 5.type KeccakF1600_int,@function 6.align 5 7KeccakF1600_int: 8.localentry KeccakF1600_int,0 9 10 li 0,24 11 mtctr 0 12 b .Loop 13.align 4 14.Loop: 15 xor 0,7,12 16 std 11,96(1) 17 xor 3,8,6 18 std 16,104(1) 19 xor 4,9,14 20 std 21,112(1) 21 xor 5,10,15 22 std 26,120(1) 23 xor 11,11,16 24 xor 0,0,17 25 xor 3,3,18 26 xor 4,4,19 27 xor 5,5,20 28 xor 11,11,21 29 xor 0,0,22 30 xor 3,3,23 31 xor 4,4,24 32 xor 5,5,25 33 xor 11,11,26 34 xor 0,0,27 35 xor 4,4,29 36 xor 3,3,28 37 xor 5,5,30 38 rotldi 16,4,1 39 xor 11,11,31 40 rotldi 21,5,1 41 xor 16,16,0 42 rotldi 26,11,1 43 44 xor 8,8,16 45 xor 6,6,16 46 xor 18,18,16 47 xor 23,23,16 48 xor 28,28,16 49 50 rotldi 16,0,1 51 xor 21,21,3 52 xor 4,4,26 53 rotldi 26,3,1 54 xor 5,5,16 55 xor 11,11,26 56 57 xor 3, 9,21 58 xor 14,14,21 59 xor 19,19,21 60 xor 24,24,21 61 xor 29,29,21 62 63 xor 7,7,11 64 xor 12,12,11 65 xor 17,17,11 66 xor 22,22,11 67 xor 27,27,11 68 ld 11,96(1) 69 xor 0, 10,4 70 ld 16,104(1) 71 xor 15,15,4 72 ld 21,112(1) 73 xor 20,20,4 74 ld 26,120(1) 75 xor 25,25,4 76 xor 30,30,4 77 78 xor 4, 11,5 79 xor 16,16,5 80 xor 21,21,5 81 xor 26,26,5 82 xor 31,31,5 83 84 mr 5,8 85 rotldi 8,6,44 86 87 rotldi 9,19,43 88 89 rotldi 10,25,21 90 91 rotldi 11,31,14 92 93 rotldi 6,16,20 94 rotldi 19,20,25 95 rotldi 25,24,15 96 rotldi 31,28,2 97 98 rotldi 16,29,61 99 rotldi 20,26,8 100 rotldi 24,18,10 101 rotldi 28,15,55 102 103 rotldi 29,21,39 104 rotldi 26,30,56 105 rotldi 18,14,6 106 rotldi 15,23,45 107 108 rotldi 21,27,18 109 rotldi 30,22,41 110 rotldi 14,17,3 111 rotldi 23,12,36 112 113 rotldi 12,0,28 114 rotldi 17,5,1 115 rotldi 22,4,27 116 rotldi 27,3,62 117 118 andc 0,9,8 119 andc 3,10,9 120 andc 4,7,11 121 andc 5,8,7 122 xor 7,7,0 123 andc 0,11,10 124 xor 8,8,3 125 ld 3,80(1) 126 xor 10,10,4 127 xor 11,11,5 128 xor 9,9,0 129 ldu 5,8(3) 130 131 andc 0,14,6 132 std 3,80(1) 133 andc 3,15,14 134 andc 4,12,16 135 xor 7,7,5 136 andc 5,6,12 137 xor 12,12,0 138 andc 0,16,15 139 xor 6,6,3 140 xor 15,15,4 141 xor 16,16,5 142 xor 14,14,0 143 144 andc 0,19,18 145 andc 3,20,19 146 andc 4,17,21 147 andc 5,18,17 148 xor 17,17,0 149 andc 0,21,20 150 xor 18,18,3 151 xor 20,20,4 152 xor 21,21,5 153 xor 19,19,0 154 155 andc 0,24,23 156 andc 3,25,24 157 andc 4,22,26 158 andc 5,23,22 159 xor 22,22,0 160 andc 0,26,25 161 xor 23,23,3 162 xor 25,25,4 163 xor 26,26,5 164 xor 24,24,0 165 166 andc 0,29,28 167 andc 3,30,29 168 andc 4,27,31 169 andc 5,28,27 170 xor 27,27,0 171 andc 0,31,30 172 xor 28,28,3 173 xor 30,30,4 174 xor 31,31,5 175 xor 29,29,0 176 177 bdnz .Loop 178 179 blr 180.long 0 181.byte 0,12,0x14,0,0,0,0,0 182.size KeccakF1600_int,.-KeccakF1600_int 183 184.type KeccakF1600,@function 185.align 5 186KeccakF1600: 187.localentry KeccakF1600,0 188 189 stdu 1,-272(1) 190 mflr 0 191 std 14,128(1) 192 std 15,136(1) 193 std 16,144(1) 194 std 17,152(1) 195 std 18,160(1) 196 std 19,168(1) 197 std 20,176(1) 198 std 21,184(1) 199 std 22,192(1) 200 std 23,200(1) 201 std 24,208(1) 202 std 25,216(1) 203 std 26,224(1) 204 std 27,232(1) 205 std 28,240(1) 206 std 29,248(1) 207 std 30,256(1) 208 std 31,264(1) 209 std 0,288(1) 210 211 bl PICmeup 212 subi 12,12,8 213 214 std 3,48(1) 215 216 217 218 std 12,80(1) 219 220 ld 7,0(3) 221 ld 8,8(3) 222 ld 9,16(3) 223 ld 10,24(3) 224 ld 11,32(3) 225 ld 12,40(3) 226 ld 6,48(3) 227 ld 14,56(3) 228 ld 15,64(3) 229 ld 16,72(3) 230 ld 17,80(3) 231 ld 18,88(3) 232 ld 19,96(3) 233 ld 20,104(3) 234 ld 21,112(3) 235 ld 22,120(3) 236 ld 23,128(3) 237 ld 24,136(3) 238 ld 25,144(3) 239 ld 26,152(3) 240 ld 27,160(3) 241 ld 28,168(3) 242 ld 29,176(3) 243 ld 30,184(3) 244 ld 31,192(3) 245 246 bl KeccakF1600_int 247 248 ld 3,48(1) 249 std 7,0(3) 250 std 8,8(3) 251 std 9,16(3) 252 std 10,24(3) 253 std 11,32(3) 254 std 12,40(3) 255 std 6,48(3) 256 std 14,56(3) 257 std 15,64(3) 258 std 16,72(3) 259 std 17,80(3) 260 std 18,88(3) 261 std 19,96(3) 262 std 20,104(3) 263 std 21,112(3) 264 std 22,120(3) 265 std 23,128(3) 266 std 24,136(3) 267 std 25,144(3) 268 std 26,152(3) 269 std 27,160(3) 270 std 28,168(3) 271 std 29,176(3) 272 std 30,184(3) 273 std 31,192(3) 274 275 ld 0,288(1) 276 ld 14,128(1) 277 ld 15,136(1) 278 ld 16,144(1) 279 ld 17,152(1) 280 ld 18,160(1) 281 ld 19,168(1) 282 ld 20,176(1) 283 ld 21,184(1) 284 ld 22,192(1) 285 ld 23,200(1) 286 ld 24,208(1) 287 ld 25,216(1) 288 ld 26,224(1) 289 ld 27,232(1) 290 ld 28,240(1) 291 ld 29,248(1) 292 ld 30,256(1) 293 ld 31,264(1) 294 mtlr 0 295 addi 1,1,272 296 blr 297.long 0 298.byte 0,12,4,1,0x80,18,1,0 299.long 0 300.size KeccakF1600,.-KeccakF1600 301.globl SHA3_absorb 302.type SHA3_absorb,@function 303.type SHA3_absorb,@function 304.align 5 305SHA3_absorb: 306.localentry SHA3_absorb,0 307 308 stdu 1,-272(1) 309 mflr 0 310 std 14,128(1) 311 std 15,136(1) 312 std 16,144(1) 313 std 17,152(1) 314 std 18,160(1) 315 std 19,168(1) 316 std 20,176(1) 317 std 21,184(1) 318 std 22,192(1) 319 std 23,200(1) 320 std 24,208(1) 321 std 25,216(1) 322 std 26,224(1) 323 std 27,232(1) 324 std 28,240(1) 325 std 29,248(1) 326 std 30,256(1) 327 std 31,264(1) 328 std 0,288(1) 329 330 bl PICmeup 331 subi 4,4,8 332 subi 12,12,8 333 334 std 3,48(1) 335 std 4,56(1) 336 std 5,64(1) 337 std 6,72(1) 338 mr 0,6 339 std 12,80(1) 340 341 ld 7,0(3) 342 ld 8,8(3) 343 ld 9,16(3) 344 ld 10,24(3) 345 ld 11,32(3) 346 ld 12,40(3) 347 ld 6,48(3) 348 ld 14,56(3) 349 ld 15,64(3) 350 ld 16,72(3) 351 ld 17,80(3) 352 ld 18,88(3) 353 ld 19,96(3) 354 ld 20,104(3) 355 ld 21,112(3) 356 ld 22,120(3) 357 ld 23,128(3) 358 ld 24,136(3) 359 ld 25,144(3) 360 ld 26,152(3) 361 ld 27,160(3) 362 ld 28,168(3) 363 ld 29,176(3) 364 ld 30,184(3) 365 ld 31,192(3) 366 367 mr 3,4 368 mr 4,5 369 mr 5,0 370 371 b .Loop_absorb 372 373.align 4 374.Loop_absorb: 375 cmpld 4,5 376 blt .Labsorbed 377 378 sub 4,4,5 379 srwi 5,5,3 380 std 4,64(1) 381 mtctr 5 382 ldu 0,8(3) 383 xor 7,7,0 384 bdz .Lprocess_block 385 ldu 0,8(3) 386 xor 8,8,0 387 bdz .Lprocess_block 388 ldu 0,8(3) 389 xor 9,9,0 390 bdz .Lprocess_block 391 ldu 0,8(3) 392 xor 10,10,0 393 bdz .Lprocess_block 394 ldu 0,8(3) 395 xor 11,11,0 396 bdz .Lprocess_block 397 ldu 0,8(3) 398 xor 12,12,0 399 bdz .Lprocess_block 400 ldu 0,8(3) 401 xor 6,6,0 402 bdz .Lprocess_block 403 ldu 0,8(3) 404 xor 14,14,0 405 bdz .Lprocess_block 406 ldu 0,8(3) 407 xor 15,15,0 408 bdz .Lprocess_block 409 ldu 0,8(3) 410 xor 16,16,0 411 bdz .Lprocess_block 412 ldu 0,8(3) 413 xor 17,17,0 414 bdz .Lprocess_block 415 ldu 0,8(3) 416 xor 18,18,0 417 bdz .Lprocess_block 418 ldu 0,8(3) 419 xor 19,19,0 420 bdz .Lprocess_block 421 ldu 0,8(3) 422 xor 20,20,0 423 bdz .Lprocess_block 424 ldu 0,8(3) 425 xor 21,21,0 426 bdz .Lprocess_block 427 ldu 0,8(3) 428 xor 22,22,0 429 bdz .Lprocess_block 430 ldu 0,8(3) 431 xor 23,23,0 432 bdz .Lprocess_block 433 ldu 0,8(3) 434 xor 24,24,0 435 bdz .Lprocess_block 436 ldu 0,8(3) 437 xor 25,25,0 438 bdz .Lprocess_block 439 ldu 0,8(3) 440 xor 26,26,0 441 bdz .Lprocess_block 442 ldu 0,8(3) 443 xor 27,27,0 444 bdz .Lprocess_block 445 ldu 0,8(3) 446 xor 28,28,0 447 bdz .Lprocess_block 448 ldu 0,8(3) 449 xor 29,29,0 450 bdz .Lprocess_block 451 ldu 0,8(3) 452 xor 30,30,0 453 bdz .Lprocess_block 454 ldu 0,8(3) 455 xor 31,31,0 456 457.Lprocess_block: 458 std 3,56(1) 459 460 bl KeccakF1600_int 461 462 ld 0,80(1) 463 ld 5,72(1) 464 ld 4,64(1) 465 ld 3,56(1) 466 addic 0,0,-192 467 std 0,80(1) 468 469 b .Loop_absorb 470 471.align 4 472.Labsorbed: 473 ld 3,48(1) 474 std 7,0(3) 475 std 8,8(3) 476 std 9,16(3) 477 std 10,24(3) 478 std 11,32(3) 479 std 12,40(3) 480 std 6,48(3) 481 std 14,56(3) 482 std 15,64(3) 483 std 16,72(3) 484 std 17,80(3) 485 std 18,88(3) 486 std 19,96(3) 487 std 20,104(3) 488 std 21,112(3) 489 std 22,120(3) 490 std 23,128(3) 491 std 24,136(3) 492 std 25,144(3) 493 std 26,152(3) 494 std 27,160(3) 495 std 28,168(3) 496 std 29,176(3) 497 std 30,184(3) 498 std 31,192(3) 499 500 mr 3,4 501 ld 0,288(1) 502 ld 14,128(1) 503 ld 15,136(1) 504 ld 16,144(1) 505 ld 17,152(1) 506 ld 18,160(1) 507 ld 19,168(1) 508 ld 20,176(1) 509 ld 21,184(1) 510 ld 22,192(1) 511 ld 23,200(1) 512 ld 24,208(1) 513 ld 25,216(1) 514 ld 26,224(1) 515 ld 27,232(1) 516 ld 28,240(1) 517 ld 29,248(1) 518 ld 30,256(1) 519 ld 31,264(1) 520 mtlr 0 521 addi 1,1,272 522 blr 523.long 0 524.byte 0,12,4,1,0x80,18,4,0 525.long 0 526.size SHA3_absorb,.-SHA3_absorb 527.globl SHA3_squeeze 528.type SHA3_squeeze,@function 529.type SHA3_squeeze,@function 530.align 5 531SHA3_squeeze: 532.localentry SHA3_squeeze,0 533 534 stdu 1,-80(1) 535 mflr 0 536 std 28,48(1) 537 std 29,56(1) 538 std 30,64(1) 539 std 31,72(1) 540 std 0,96(1) 541 542 mr 28,3 543 subi 3,3,8 544 subi 29,4,1 545 mr 30,5 546 mr 31,6 547 cmplwi 7,0 548 bne .Lnext_block 549 b .Loop_squeeze 550 551.align 4 552.Loop_squeeze: 553 ldu 0,8(3) 554 cmpldi 30,8 555 blt .Lsqueeze_tail 556 557 stb 0,1(29) 558 srdi 0,0,8 559 stb 0,2(29) 560 srdi 0,0,8 561 stb 0,3(29) 562 srdi 0,0,8 563 stb 0,4(29) 564 srdi 0,0,8 565 stb 0,5(29) 566 srdi 0,0,8 567 stb 0,6(29) 568 srdi 0,0,8 569 stb 0,7(29) 570 srdi 0,0,8 571 stbu 0,8(29) 572 573 subic. 30,30,8 574 beq .Lsqueeze_done 575 576 subic. 6,6,8 577 bgt .Loop_squeeze 578 579.Lnext_block: 580 mr 3,28 581 bl KeccakF1600 582 subi 3,28,8 583 mr 6,31 584 b .Loop_squeeze 585 586.align 4 587.Lsqueeze_tail: 588 mtctr 30 589.Loop_tail: 590 stbu 0,1(29) 591 srdi 0,0,8 592 bdnz .Loop_tail 593 594.Lsqueeze_done: 595 ld 0,96(1) 596 ld 28,48(1) 597 ld 29,56(1) 598 ld 30,64(1) 599 ld 31,72(1) 600 mtlr 0 601 addi 1,1,80 602 blr 603.long 0 604.byte 0,12,4,1,0x80,4,4,0 605.long 0 606.size SHA3_squeeze,.-SHA3_squeeze 607.align 6 608PICmeup: 609 mflr 0 610 bcl 20,31,$+4 611 mflr 12 612 addi 12,12,56 613 mtlr 0 614 blr 615.long 0 616.byte 0,12,0x14,0,0,0,0,0 617.space 28 618.type iotas,@object 619iotas: 620.long 0x00000001,0x00000000 621.long 0x00008082,0x00000000 622.long 0x0000808a,0x80000000 623.long 0x80008000,0x80000000 624.long 0x0000808b,0x00000000 625.long 0x80000001,0x00000000 626.long 0x80008081,0x80000000 627.long 0x00008009,0x80000000 628.long 0x0000008a,0x00000000 629.long 0x00000088,0x00000000 630.long 0x80008009,0x00000000 631.long 0x8000000a,0x00000000 632.long 0x8000808b,0x00000000 633.long 0x0000008b,0x80000000 634.long 0x00008089,0x80000000 635.long 0x00008003,0x80000000 636.long 0x00008002,0x80000000 637.long 0x00000080,0x80000000 638.long 0x0000800a,0x00000000 639.long 0x8000000a,0x80000000 640.long 0x80008081,0x80000000 641.long 0x00008080,0x80000000 642.long 0x80000001,0x00000000 643.long 0x80008008,0x80000000 644.size iotas,.-iotas 645.byte 75,101,99,99,97,107,45,49,54,48,48,32,97,98,115,111,114,98,32,97,110,100,32,115,113,117,101,101,122,101,32,102,111,114,32,80,80,67,54,52,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 646.align 2 647