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 302.type dword_le_load,@function 303.align 5 304dword_le_load: 305.localentry dword_le_load,0 306 307 lbz 0,1(3) 308 lbz 4,2(3) 309 lbz 5,3(3) 310 insrdi 0,4,8,48 311 lbz 4,4(3) 312 insrdi 0,5,8,40 313 lbz 5,5(3) 314 insrdi 0,4,8,32 315 lbz 4,6(3) 316 insrdi 0,5,8,24 317 lbz 5,7(3) 318 insrdi 0,4,8,16 319 lbzu 4,8(3) 320 insrdi 0,5,8,8 321 insrdi 0,4,8,0 322 blr 323.long 0 324.byte 0,12,0x14,0,0,0,1,0 325.long 0 326.size dword_le_load,.-dword_le_load 327 328.globl SHA3_absorb 329.type SHA3_absorb,@function 330.type SHA3_absorb,@function 331.align 5 332SHA3_absorb: 333.localentry SHA3_absorb,0 334 335 stdu 1,-272(1) 336 mflr 0 337 std 14,128(1) 338 std 15,136(1) 339 std 16,144(1) 340 std 17,152(1) 341 std 18,160(1) 342 std 19,168(1) 343 std 20,176(1) 344 std 21,184(1) 345 std 22,192(1) 346 std 23,200(1) 347 std 24,208(1) 348 std 25,216(1) 349 std 26,224(1) 350 std 27,232(1) 351 std 28,240(1) 352 std 29,248(1) 353 std 30,256(1) 354 std 31,264(1) 355 std 0,288(1) 356 357 bl PICmeup 358 subi 4,4,1 359 subi 12,12,8 360 361 std 3,48(1) 362 std 4,56(1) 363 std 5,64(1) 364 std 6,72(1) 365 mr 0,6 366 std 12,80(1) 367 368 ld 7,0(3) 369 ld 8,8(3) 370 ld 9,16(3) 371 ld 10,24(3) 372 ld 11,32(3) 373 ld 12,40(3) 374 ld 6,48(3) 375 ld 14,56(3) 376 ld 15,64(3) 377 ld 16,72(3) 378 ld 17,80(3) 379 ld 18,88(3) 380 ld 19,96(3) 381 ld 20,104(3) 382 ld 21,112(3) 383 ld 22,120(3) 384 ld 23,128(3) 385 ld 24,136(3) 386 ld 25,144(3) 387 ld 26,152(3) 388 ld 27,160(3) 389 ld 28,168(3) 390 ld 29,176(3) 391 ld 30,184(3) 392 ld 31,192(3) 393 394 mr 3,4 395 mr 4,5 396 mr 5,0 397 398 b .Loop_absorb 399 400.align 4 401.Loop_absorb: 402 cmpld 4,5 403 blt .Labsorbed 404 405 sub 4,4,5 406 srwi 5,5,3 407 std 4,64(1) 408 mtctr 5 409 bl dword_le_load 410 xor 7,7,0 411 bdz .Lprocess_block 412 bl dword_le_load 413 xor 8,8,0 414 bdz .Lprocess_block 415 bl dword_le_load 416 xor 9,9,0 417 bdz .Lprocess_block 418 bl dword_le_load 419 xor 10,10,0 420 bdz .Lprocess_block 421 bl dword_le_load 422 xor 11,11,0 423 bdz .Lprocess_block 424 bl dword_le_load 425 xor 12,12,0 426 bdz .Lprocess_block 427 bl dword_le_load 428 xor 6,6,0 429 bdz .Lprocess_block 430 bl dword_le_load 431 xor 14,14,0 432 bdz .Lprocess_block 433 bl dword_le_load 434 xor 15,15,0 435 bdz .Lprocess_block 436 bl dword_le_load 437 xor 16,16,0 438 bdz .Lprocess_block 439 bl dword_le_load 440 xor 17,17,0 441 bdz .Lprocess_block 442 bl dword_le_load 443 xor 18,18,0 444 bdz .Lprocess_block 445 bl dword_le_load 446 xor 19,19,0 447 bdz .Lprocess_block 448 bl dword_le_load 449 xor 20,20,0 450 bdz .Lprocess_block 451 bl dword_le_load 452 xor 21,21,0 453 bdz .Lprocess_block 454 bl dword_le_load 455 xor 22,22,0 456 bdz .Lprocess_block 457 bl dword_le_load 458 xor 23,23,0 459 bdz .Lprocess_block 460 bl dword_le_load 461 xor 24,24,0 462 bdz .Lprocess_block 463 bl dword_le_load 464 xor 25,25,0 465 bdz .Lprocess_block 466 bl dword_le_load 467 xor 26,26,0 468 bdz .Lprocess_block 469 bl dword_le_load 470 xor 27,27,0 471 bdz .Lprocess_block 472 bl dword_le_load 473 xor 28,28,0 474 bdz .Lprocess_block 475 bl dword_le_load 476 xor 29,29,0 477 bdz .Lprocess_block 478 bl dword_le_load 479 xor 30,30,0 480 bdz .Lprocess_block 481 bl dword_le_load 482 xor 31,31,0 483 484.Lprocess_block: 485 std 3,56(1) 486 487 bl KeccakF1600_int 488 489 ld 0,80(1) 490 ld 5,72(1) 491 ld 4,64(1) 492 ld 3,56(1) 493 addic 0,0,-192 494 std 0,80(1) 495 496 b .Loop_absorb 497 498.align 4 499.Labsorbed: 500 ld 3,48(1) 501 std 7,0(3) 502 std 8,8(3) 503 std 9,16(3) 504 std 10,24(3) 505 std 11,32(3) 506 std 12,40(3) 507 std 6,48(3) 508 std 14,56(3) 509 std 15,64(3) 510 std 16,72(3) 511 std 17,80(3) 512 std 18,88(3) 513 std 19,96(3) 514 std 20,104(3) 515 std 21,112(3) 516 std 22,120(3) 517 std 23,128(3) 518 std 24,136(3) 519 std 25,144(3) 520 std 26,152(3) 521 std 27,160(3) 522 std 28,168(3) 523 std 29,176(3) 524 std 30,184(3) 525 std 31,192(3) 526 527 mr 3,4 528 ld 0,288(1) 529 ld 14,128(1) 530 ld 15,136(1) 531 ld 16,144(1) 532 ld 17,152(1) 533 ld 18,160(1) 534 ld 19,168(1) 535 ld 20,176(1) 536 ld 21,184(1) 537 ld 22,192(1) 538 ld 23,200(1) 539 ld 24,208(1) 540 ld 25,216(1) 541 ld 26,224(1) 542 ld 27,232(1) 543 ld 28,240(1) 544 ld 29,248(1) 545 ld 30,256(1) 546 ld 31,264(1) 547 mtlr 0 548 addi 1,1,272 549 blr 550.long 0 551.byte 0,12,4,1,0x80,18,4,0 552.long 0 553.size SHA3_absorb,.-SHA3_absorb 554.globl SHA3_squeeze 555.type SHA3_squeeze,@function 556.type SHA3_squeeze,@function 557.align 5 558SHA3_squeeze: 559.localentry SHA3_squeeze,0 560 561 stdu 1,-80(1) 562 mflr 0 563 std 28,48(1) 564 std 29,56(1) 565 std 30,64(1) 566 std 31,72(1) 567 std 0,96(1) 568 569 mr 28,3 570 subi 3,3,8 571 subi 29,4,1 572 mr 30,5 573 mr 31,6 574 b .Loop_squeeze 575 576.align 4 577.Loop_squeeze: 578 ldu 0,8(3) 579 cmpldi 30,8 580 blt .Lsqueeze_tail 581 582 stb 0,1(29) 583 srdi 0,0,8 584 stb 0,2(29) 585 srdi 0,0,8 586 stb 0,3(29) 587 srdi 0,0,8 588 stb 0,4(29) 589 srdi 0,0,8 590 stb 0,5(29) 591 srdi 0,0,8 592 stb 0,6(29) 593 srdi 0,0,8 594 stb 0,7(29) 595 srdi 0,0,8 596 stbu 0,8(29) 597 598 subic. 30,30,8 599 beq .Lsqueeze_done 600 601 subic. 6,6,8 602 bgt .Loop_squeeze 603 604 mr 3,28 605 bl KeccakF1600 606 subi 3,28,8 607 mr 6,31 608 b .Loop_squeeze 609 610.align 4 611.Lsqueeze_tail: 612 mtctr 30 613.Loop_tail: 614 stbu 0,1(29) 615 srdi 0,0,8 616 bdnz .Loop_tail 617 618.Lsqueeze_done: 619 ld 0,96(1) 620 ld 28,48(1) 621 ld 29,56(1) 622 ld 30,64(1) 623 ld 31,72(1) 624 mtlr 0 625 addi 1,1,80 626 blr 627.long 0 628.byte 0,12,4,1,0x80,4,4,0 629.long 0 630.size SHA3_squeeze,.-SHA3_squeeze 631.align 6 632PICmeup: 633 mflr 0 634 bcl 20,31,$+4 635 mflr 12 636 addi 12,12,56 637 mtlr 0 638 blr 639.long 0 640.byte 0,12,0x14,0,0,0,0,0 641.space 28 642.type iotas,@object 643iotas: 644.long 0x00000000,0x00000001 645.long 0x00000000,0x00008082 646.long 0x80000000,0x0000808a 647.long 0x80000000,0x80008000 648.long 0x00000000,0x0000808b 649.long 0x00000000,0x80000001 650.long 0x80000000,0x80008081 651.long 0x80000000,0x00008009 652.long 0x00000000,0x0000008a 653.long 0x00000000,0x00000088 654.long 0x00000000,0x80008009 655.long 0x00000000,0x8000000a 656.long 0x00000000,0x8000808b 657.long 0x80000000,0x0000008b 658.long 0x80000000,0x00008089 659.long 0x80000000,0x00008003 660.long 0x80000000,0x00008002 661.long 0x80000000,0x00000080 662.long 0x00000000,0x0000800a 663.long 0x80000000,0x8000000a 664.long 0x80000000,0x80008081 665.long 0x80000000,0x00008080 666.long 0x00000000,0x80000001 667.long 0x80000000,0x80008008 668.size iotas,.-iotas 669.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 670.align 2 671