root/sys/crypto/openssl/powerpc64/sha512-ppc.S
/* Do not modify. This file is auto-generated from sha512-ppc.pl. */
.machine        "any"
.abiversion     2
.text

.globl  sha512_block_ppc
.type   sha512_block_ppc,@function
.align  6
sha512_block_ppc:
.localentry     sha512_block_ppc,0

        stdu    1,-384(1)
        mflr    0
        sldi    5,5,7

        std     3,208(1)

        std     14,240(1)
        std     15,248(1)
        std     16,256(1)
        std     17,264(1)
        std     18,272(1)
        std     19,280(1)
        std     20,288(1)
        std     21,296(1)
        std     22,304(1)
        std     23,312(1)
        std     24,320(1)
        std     25,328(1)
        std     26,336(1)
        std     27,344(1)
        std     28,352(1)
        std     29,360(1)
        std     30,368(1)
        std     31,376(1)
        std     0,400(1)
        ld      8,0(3)
        mr      31,4
        ld      9,8(3)
        ld      10,16(3)
        ld      11,24(3)
        ld      12,32(3)
        ld      6,40(3)
        ld      14,48(3)
        ld      15,56(3)
        bl      .LPICmeup
.LPICedup:
        andi.   0,31,3
        bne     .Lunaligned
.Laligned:
        add     5,31,5
        std     5,192(1)
        std     31,200(1)
        bl      .Lsha2_block_private
        b       .Ldone







.align  4
.Lunaligned:
        subfic  0,31,4096
        andi.   0,0,3968
        beq     .Lcross_page
        cmpld   5,0
        ble     .Laligned
        subfc   5,0,5
        add     0,31,0
        std     5,184(1)
        std     0,192(1)
        std     31,200(1)
        bl      .Lsha2_block_private

        ld      5,184(1)
.Lcross_page:
        li      0,32
        mtctr   0
        addi    20,1,48
.Lmemcpy:
        lbz     16,0(31)
        lbz     17,1(31)
        lbz     18,2(31)
        lbz     19,3(31)
        addi    31,31,4
        stb     16,0(20)
        stb     17,1(20)
        stb     18,2(20)
        stb     19,3(20)
        addi    20,20,4
        bdnz    .Lmemcpy
        std     31,176(1)
        addi    0,1,176
        addi    31,1,48
        std     5,184(1)
        std     0,192(1)
        std     31,200(1)
        bl      .Lsha2_block_private
        ld      31,176(1)
        ld      5,184(1)
        addic.  5,5,-128
        bne     .Lunaligned

.Ldone:
        ld      0,400(1)
        ld      14,240(1)
        ld      15,248(1)
        ld      16,256(1)
        ld      17,264(1)
        ld      18,272(1)
        ld      19,280(1)
        ld      20,288(1)
        ld      21,296(1)
        ld      22,304(1)
        ld      23,312(1)
        ld      24,320(1)
        ld      25,328(1)
        ld      26,336(1)
        ld      27,344(1)
        ld      28,352(1)
        ld      29,360(1)
        ld      30,368(1)
        ld      31,376(1)
        mtlr    0
        addi    1,1,384
        blr     
.long   0
.byte   0,12,4,1,0x80,18,3,0
.long   0
.align  4
.Lsha2_block_private:
        ld      0,0(7)
        lwz     5,0(31)
        lwz     16,4(31)
        insrdi  16,5,32,0
        rotrdi  3,12,14
        rotrdi  4,12,18
        and     5,6,12
        xor     3,3,4
        add     15,15,0
        andc    0,14,12
        rotrdi  4,4,23
        or      5,5,0
        add     15,15,16
        xor     3,3,4
        add     15,15,5
        add     15,15,3

        rotrdi  3,8,28
        rotrdi  4,8,34
        and     5,8,9
        and     0,8,10
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,9,10
        xor     3,3,4
        add     11,11,15
        xor     5,5,0
        ld      0,8(7)
        add     15,15,3
        add     15,15,5

        lwz     5,8(31)
        lwz     17,12(31)
        insrdi  17,5,32,0
        rotrdi  3,11,14
        rotrdi  4,11,18
        and     5,12,11
        xor     3,3,4
        add     14,14,0
        andc    0,6,11
        rotrdi  4,4,23
        or      5,5,0
        add     14,14,17
        xor     3,3,4
        add     14,14,5
        add     14,14,3

        rotrdi  3,15,28
        rotrdi  4,15,34
        and     5,15,8
        and     0,15,9
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,8,9
        xor     3,3,4
        add     10,10,14
        xor     5,5,0
        ld      0,16(7)
        add     14,14,3
        add     14,14,5

        lwz     5,16(31)
        lwz     18,20(31)
        insrdi  18,5,32,0
        rotrdi  3,10,14
        rotrdi  4,10,18
        and     5,11,10
        xor     3,3,4
        add     6,6,0
        andc    0,12,10
        rotrdi  4,4,23
        or      5,5,0
        add     6,6,18
        xor     3,3,4
        add     6,6,5
        add     6,6,3

        rotrdi  3,14,28
        rotrdi  4,14,34
        and     5,14,15
        and     0,14,8
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,15,8
        xor     3,3,4
        add     9,9,6
        xor     5,5,0
        ld      0,24(7)
        add     6,6,3
        add     6,6,5

        lwz     5,24(31)
        lwz     19,28(31)
        insrdi  19,5,32,0
        rotrdi  3,9,14
        rotrdi  4,9,18
        and     5,10,9
        xor     3,3,4
        add     12,12,0
        andc    0,11,9
        rotrdi  4,4,23
        or      5,5,0
        add     12,12,19
        xor     3,3,4
        add     12,12,5
        add     12,12,3

        rotrdi  3,6,28
        rotrdi  4,6,34
        and     5,6,14
        and     0,6,15
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,14,15
        xor     3,3,4
        add     8,8,12
        xor     5,5,0
        ld      0,32(7)
        add     12,12,3
        add     12,12,5

        lwz     5,32(31)
        lwz     20,36(31)
        insrdi  20,5,32,0
        rotrdi  3,8,14
        rotrdi  4,8,18
        and     5,9,8
        xor     3,3,4
        add     11,11,0
        andc    0,10,8
        rotrdi  4,4,23
        or      5,5,0
        add     11,11,20
        xor     3,3,4
        add     11,11,5
        add     11,11,3

        rotrdi  3,12,28
        rotrdi  4,12,34
        and     5,12,6
        and     0,12,14
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,6,14
        xor     3,3,4
        add     15,15,11
        xor     5,5,0
        ld      0,40(7)
        add     11,11,3
        add     11,11,5

        lwz     5,40(31)
        lwz     21,44(31)
        insrdi  21,5,32,0
        rotrdi  3,15,14
        rotrdi  4,15,18
        and     5,8,15
        xor     3,3,4
        add     10,10,0
        andc    0,9,15
        rotrdi  4,4,23
        or      5,5,0
        add     10,10,21
        xor     3,3,4
        add     10,10,5
        add     10,10,3

        rotrdi  3,11,28
        rotrdi  4,11,34
        and     5,11,12
        and     0,11,6
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,12,6
        xor     3,3,4
        add     14,14,10
        xor     5,5,0
        ld      0,48(7)
        add     10,10,3
        add     10,10,5

        lwz     5,48(31)
        lwz     22,52(31)
        insrdi  22,5,32,0
        rotrdi  3,14,14
        rotrdi  4,14,18
        and     5,15,14
        xor     3,3,4
        add     9,9,0
        andc    0,8,14
        rotrdi  4,4,23
        or      5,5,0
        add     9,9,22
        xor     3,3,4
        add     9,9,5
        add     9,9,3

        rotrdi  3,10,28
        rotrdi  4,10,34
        and     5,10,11
        and     0,10,12
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,11,12
        xor     3,3,4
        add     6,6,9
        xor     5,5,0
        ld      0,56(7)
        add     9,9,3
        add     9,9,5

        lwz     5,56(31)
        lwz     23,60(31)
        insrdi  23,5,32,0
        rotrdi  3,6,14
        rotrdi  4,6,18
        and     5,14,6
        xor     3,3,4
        add     8,8,0
        andc    0,15,6
        rotrdi  4,4,23
        or      5,5,0
        add     8,8,23
        xor     3,3,4
        add     8,8,5
        add     8,8,3

        rotrdi  3,9,28
        rotrdi  4,9,34
        and     5,9,10
        and     0,9,11
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,10,11
        xor     3,3,4
        add     12,12,8
        xor     5,5,0
        ld      0,64(7)
        add     8,8,3
        add     8,8,5

        lwz     5,64(31)
        lwz     24,68(31)
        insrdi  24,5,32,0
        rotrdi  3,12,14
        rotrdi  4,12,18
        and     5,6,12
        xor     3,3,4
        add     15,15,0
        andc    0,14,12
        rotrdi  4,4,23
        or      5,5,0
        add     15,15,24
        xor     3,3,4
        add     15,15,5
        add     15,15,3

        rotrdi  3,8,28
        rotrdi  4,8,34
        and     5,8,9
        and     0,8,10
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,9,10
        xor     3,3,4
        add     11,11,15
        xor     5,5,0
        ld      0,72(7)
        add     15,15,3
        add     15,15,5

        lwz     5,72(31)
        lwz     25,76(31)
        insrdi  25,5,32,0
        rotrdi  3,11,14
        rotrdi  4,11,18
        and     5,12,11
        xor     3,3,4
        add     14,14,0
        andc    0,6,11
        rotrdi  4,4,23
        or      5,5,0
        add     14,14,25
        xor     3,3,4
        add     14,14,5
        add     14,14,3

        rotrdi  3,15,28
        rotrdi  4,15,34
        and     5,15,8
        and     0,15,9
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,8,9
        xor     3,3,4
        add     10,10,14
        xor     5,5,0
        ld      0,80(7)
        add     14,14,3
        add     14,14,5

        lwz     5,80(31)
        lwz     26,84(31)
        insrdi  26,5,32,0
        rotrdi  3,10,14
        rotrdi  4,10,18
        and     5,11,10
        xor     3,3,4
        add     6,6,0
        andc    0,12,10
        rotrdi  4,4,23
        or      5,5,0
        add     6,6,26
        xor     3,3,4
        add     6,6,5
        add     6,6,3

        rotrdi  3,14,28
        rotrdi  4,14,34
        and     5,14,15
        and     0,14,8
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,15,8
        xor     3,3,4
        add     9,9,6
        xor     5,5,0
        ld      0,88(7)
        add     6,6,3
        add     6,6,5

        lwz     5,88(31)
        lwz     27,92(31)
        insrdi  27,5,32,0
        rotrdi  3,9,14
        rotrdi  4,9,18
        and     5,10,9
        xor     3,3,4
        add     12,12,0
        andc    0,11,9
        rotrdi  4,4,23
        or      5,5,0
        add     12,12,27
        xor     3,3,4
        add     12,12,5
        add     12,12,3

        rotrdi  3,6,28
        rotrdi  4,6,34
        and     5,6,14
        and     0,6,15
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,14,15
        xor     3,3,4
        add     8,8,12
        xor     5,5,0
        ld      0,96(7)
        add     12,12,3
        add     12,12,5

        lwz     5,96(31)
        lwz     28,100(31)
        insrdi  28,5,32,0
        rotrdi  3,8,14
        rotrdi  4,8,18
        and     5,9,8
        xor     3,3,4
        add     11,11,0
        andc    0,10,8
        rotrdi  4,4,23
        or      5,5,0
        add     11,11,28
        xor     3,3,4
        add     11,11,5
        add     11,11,3

        rotrdi  3,12,28
        rotrdi  4,12,34
        and     5,12,6
        and     0,12,14
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,6,14
        xor     3,3,4
        add     15,15,11
        xor     5,5,0
        ld      0,104(7)
        add     11,11,3
        add     11,11,5

        lwz     5,104(31)
        lwz     29,108(31)
        insrdi  29,5,32,0
        rotrdi  3,15,14
        rotrdi  4,15,18
        and     5,8,15
        xor     3,3,4
        add     10,10,0
        andc    0,9,15
        rotrdi  4,4,23
        or      5,5,0
        add     10,10,29
        xor     3,3,4
        add     10,10,5
        add     10,10,3

        rotrdi  3,11,28
        rotrdi  4,11,34
        and     5,11,12
        and     0,11,6
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,12,6
        xor     3,3,4
        add     14,14,10
        xor     5,5,0
        ld      0,112(7)
        add     10,10,3
        add     10,10,5

        lwz     5,112(31)
        lwz     30,116(31)
        insrdi  30,5,32,0
        rotrdi  3,14,14
        rotrdi  4,14,18
        and     5,15,14
        xor     3,3,4
        add     9,9,0
        andc    0,8,14
        rotrdi  4,4,23
        or      5,5,0
        add     9,9,30
        xor     3,3,4
        add     9,9,5
        add     9,9,3

        rotrdi  3,10,28
        rotrdi  4,10,34
        and     5,10,11
        and     0,10,12
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,11,12
        xor     3,3,4
        add     6,6,9
        xor     5,5,0
        ld      0,120(7)
        add     9,9,3
        add     9,9,5

        lwz     5,120(31)
        lwz     31,124(31)
        insrdi  31,5,32,0
        rotrdi  3,6,14
        rotrdi  4,6,18
        and     5,14,6
        xor     3,3,4
        add     8,8,0
        andc    0,15,6
        rotrdi  4,4,23
        or      5,5,0
        add     8,8,31
        xor     3,3,4
        add     8,8,5
        add     8,8,3

        rotrdi  3,9,28
        rotrdi  4,9,34
        and     5,9,10
        and     0,9,11
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,10,11
        xor     3,3,4
        add     12,12,8
        xor     5,5,0
        add     8,8,3
        add     8,8,5

        li      5,4
        mtctr   5
.align  4
.Lrounds:
        addi    7,7,128
        rotrdi  3,17,1
        rotrdi  4,17,8
        rotrdi  5,30,19
        rotrdi  0,30,61
        xor     3,3,4
        srdi    4,17,7
        xor     5,5,0
        srdi    0,30,6
        add     16,16,25
        xor     3,3,4
        xor     5,5,0
        ld      0,0(7)
        add     16,16,3
        add     16,16,5
        rotrdi  3,12,14
        rotrdi  4,12,18
        and     5,6,12
        xor     3,3,4
        add     15,15,0
        andc    0,14,12
        rotrdi  4,4,23
        or      5,5,0
        add     15,15,16
        xor     3,3,4
        add     15,15,5
        add     15,15,3

        rotrdi  3,8,28
        rotrdi  4,8,34
        and     5,8,9
        and     0,8,10
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,9,10
        xor     3,3,4
        add     11,11,15
        xor     5,5,0
        add     15,15,3
        add     15,15,5

        rotrdi  3,18,1
        rotrdi  4,18,8
        rotrdi  5,31,19
        rotrdi  0,31,61
        xor     3,3,4
        srdi    4,18,7
        xor     5,5,0
        srdi    0,31,6
        add     17,17,26
        xor     3,3,4
        xor     5,5,0
        ld      0,8(7)
        add     17,17,3
        add     17,17,5
        rotrdi  3,11,14
        rotrdi  4,11,18
        and     5,12,11
        xor     3,3,4
        add     14,14,0
        andc    0,6,11
        rotrdi  4,4,23
        or      5,5,0
        add     14,14,17
        xor     3,3,4
        add     14,14,5
        add     14,14,3

        rotrdi  3,15,28
        rotrdi  4,15,34
        and     5,15,8
        and     0,15,9
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,8,9
        xor     3,3,4
        add     10,10,14
        xor     5,5,0
        add     14,14,3
        add     14,14,5

        rotrdi  3,19,1
        rotrdi  4,19,8
        rotrdi  5,16,19
        rotrdi  0,16,61
        xor     3,3,4
        srdi    4,19,7
        xor     5,5,0
        srdi    0,16,6
        add     18,18,27
        xor     3,3,4
        xor     5,5,0
        ld      0,16(7)
        add     18,18,3
        add     18,18,5
        rotrdi  3,10,14
        rotrdi  4,10,18
        and     5,11,10
        xor     3,3,4
        add     6,6,0
        andc    0,12,10
        rotrdi  4,4,23
        or      5,5,0
        add     6,6,18
        xor     3,3,4
        add     6,6,5
        add     6,6,3

        rotrdi  3,14,28
        rotrdi  4,14,34
        and     5,14,15
        and     0,14,8
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,15,8
        xor     3,3,4
        add     9,9,6
        xor     5,5,0
        add     6,6,3
        add     6,6,5

        rotrdi  3,20,1
        rotrdi  4,20,8
        rotrdi  5,17,19
        rotrdi  0,17,61
        xor     3,3,4
        srdi    4,20,7
        xor     5,5,0
        srdi    0,17,6
        add     19,19,28
        xor     3,3,4
        xor     5,5,0
        ld      0,24(7)
        add     19,19,3
        add     19,19,5
        rotrdi  3,9,14
        rotrdi  4,9,18
        and     5,10,9
        xor     3,3,4
        add     12,12,0
        andc    0,11,9
        rotrdi  4,4,23
        or      5,5,0
        add     12,12,19
        xor     3,3,4
        add     12,12,5
        add     12,12,3

        rotrdi  3,6,28
        rotrdi  4,6,34
        and     5,6,14
        and     0,6,15
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,14,15
        xor     3,3,4
        add     8,8,12
        xor     5,5,0
        add     12,12,3
        add     12,12,5

        rotrdi  3,21,1
        rotrdi  4,21,8
        rotrdi  5,18,19
        rotrdi  0,18,61
        xor     3,3,4
        srdi    4,21,7
        xor     5,5,0
        srdi    0,18,6
        add     20,20,29
        xor     3,3,4
        xor     5,5,0
        ld      0,32(7)
        add     20,20,3
        add     20,20,5
        rotrdi  3,8,14
        rotrdi  4,8,18
        and     5,9,8
        xor     3,3,4
        add     11,11,0
        andc    0,10,8
        rotrdi  4,4,23
        or      5,5,0
        add     11,11,20
        xor     3,3,4
        add     11,11,5
        add     11,11,3

        rotrdi  3,12,28
        rotrdi  4,12,34
        and     5,12,6
        and     0,12,14
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,6,14
        xor     3,3,4
        add     15,15,11
        xor     5,5,0
        add     11,11,3
        add     11,11,5

        rotrdi  3,22,1
        rotrdi  4,22,8
        rotrdi  5,19,19
        rotrdi  0,19,61
        xor     3,3,4
        srdi    4,22,7
        xor     5,5,0
        srdi    0,19,6
        add     21,21,30
        xor     3,3,4
        xor     5,5,0
        ld      0,40(7)
        add     21,21,3
        add     21,21,5
        rotrdi  3,15,14
        rotrdi  4,15,18
        and     5,8,15
        xor     3,3,4
        add     10,10,0
        andc    0,9,15
        rotrdi  4,4,23
        or      5,5,0
        add     10,10,21
        xor     3,3,4
        add     10,10,5
        add     10,10,3

        rotrdi  3,11,28
        rotrdi  4,11,34
        and     5,11,12
        and     0,11,6
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,12,6
        xor     3,3,4
        add     14,14,10
        xor     5,5,0
        add     10,10,3
        add     10,10,5

        rotrdi  3,23,1
        rotrdi  4,23,8
        rotrdi  5,20,19
        rotrdi  0,20,61
        xor     3,3,4
        srdi    4,23,7
        xor     5,5,0
        srdi    0,20,6
        add     22,22,31
        xor     3,3,4
        xor     5,5,0
        ld      0,48(7)
        add     22,22,3
        add     22,22,5
        rotrdi  3,14,14
        rotrdi  4,14,18
        and     5,15,14
        xor     3,3,4
        add     9,9,0
        andc    0,8,14
        rotrdi  4,4,23
        or      5,5,0
        add     9,9,22
        xor     3,3,4
        add     9,9,5
        add     9,9,3

        rotrdi  3,10,28
        rotrdi  4,10,34
        and     5,10,11
        and     0,10,12
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,11,12
        xor     3,3,4
        add     6,6,9
        xor     5,5,0
        add     9,9,3
        add     9,9,5

        rotrdi  3,24,1
        rotrdi  4,24,8
        rotrdi  5,21,19
        rotrdi  0,21,61
        xor     3,3,4
        srdi    4,24,7
        xor     5,5,0
        srdi    0,21,6
        add     23,23,16
        xor     3,3,4
        xor     5,5,0
        ld      0,56(7)
        add     23,23,3
        add     23,23,5
        rotrdi  3,6,14
        rotrdi  4,6,18
        and     5,14,6
        xor     3,3,4
        add     8,8,0
        andc    0,15,6
        rotrdi  4,4,23
        or      5,5,0
        add     8,8,23
        xor     3,3,4
        add     8,8,5
        add     8,8,3

        rotrdi  3,9,28
        rotrdi  4,9,34
        and     5,9,10
        and     0,9,11
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,10,11
        xor     3,3,4
        add     12,12,8
        xor     5,5,0
        add     8,8,3
        add     8,8,5

        rotrdi  3,25,1
        rotrdi  4,25,8
        rotrdi  5,22,19
        rotrdi  0,22,61
        xor     3,3,4
        srdi    4,25,7
        xor     5,5,0
        srdi    0,22,6
        add     24,24,17
        xor     3,3,4
        xor     5,5,0
        ld      0,64(7)
        add     24,24,3
        add     24,24,5
        rotrdi  3,12,14
        rotrdi  4,12,18
        and     5,6,12
        xor     3,3,4
        add     15,15,0
        andc    0,14,12
        rotrdi  4,4,23
        or      5,5,0
        add     15,15,24
        xor     3,3,4
        add     15,15,5
        add     15,15,3

        rotrdi  3,8,28
        rotrdi  4,8,34
        and     5,8,9
        and     0,8,10
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,9,10
        xor     3,3,4
        add     11,11,15
        xor     5,5,0
        add     15,15,3
        add     15,15,5

        rotrdi  3,26,1
        rotrdi  4,26,8
        rotrdi  5,23,19
        rotrdi  0,23,61
        xor     3,3,4
        srdi    4,26,7
        xor     5,5,0
        srdi    0,23,6
        add     25,25,18
        xor     3,3,4
        xor     5,5,0
        ld      0,72(7)
        add     25,25,3
        add     25,25,5
        rotrdi  3,11,14
        rotrdi  4,11,18
        and     5,12,11
        xor     3,3,4
        add     14,14,0
        andc    0,6,11
        rotrdi  4,4,23
        or      5,5,0
        add     14,14,25
        xor     3,3,4
        add     14,14,5
        add     14,14,3

        rotrdi  3,15,28
        rotrdi  4,15,34
        and     5,15,8
        and     0,15,9
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,8,9
        xor     3,3,4
        add     10,10,14
        xor     5,5,0
        add     14,14,3
        add     14,14,5

        rotrdi  3,27,1
        rotrdi  4,27,8
        rotrdi  5,24,19
        rotrdi  0,24,61
        xor     3,3,4
        srdi    4,27,7
        xor     5,5,0
        srdi    0,24,6
        add     26,26,19
        xor     3,3,4
        xor     5,5,0
        ld      0,80(7)
        add     26,26,3
        add     26,26,5
        rotrdi  3,10,14
        rotrdi  4,10,18
        and     5,11,10
        xor     3,3,4
        add     6,6,0
        andc    0,12,10
        rotrdi  4,4,23
        or      5,5,0
        add     6,6,26
        xor     3,3,4
        add     6,6,5
        add     6,6,3

        rotrdi  3,14,28
        rotrdi  4,14,34
        and     5,14,15
        and     0,14,8
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,15,8
        xor     3,3,4
        add     9,9,6
        xor     5,5,0
        add     6,6,3
        add     6,6,5

        rotrdi  3,28,1
        rotrdi  4,28,8
        rotrdi  5,25,19
        rotrdi  0,25,61
        xor     3,3,4
        srdi    4,28,7
        xor     5,5,0
        srdi    0,25,6
        add     27,27,20
        xor     3,3,4
        xor     5,5,0
        ld      0,88(7)
        add     27,27,3
        add     27,27,5
        rotrdi  3,9,14
        rotrdi  4,9,18
        and     5,10,9
        xor     3,3,4
        add     12,12,0
        andc    0,11,9
        rotrdi  4,4,23
        or      5,5,0
        add     12,12,27
        xor     3,3,4
        add     12,12,5
        add     12,12,3

        rotrdi  3,6,28
        rotrdi  4,6,34
        and     5,6,14
        and     0,6,15
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,14,15
        xor     3,3,4
        add     8,8,12
        xor     5,5,0
        add     12,12,3
        add     12,12,5

        rotrdi  3,29,1
        rotrdi  4,29,8
        rotrdi  5,26,19
        rotrdi  0,26,61
        xor     3,3,4
        srdi    4,29,7
        xor     5,5,0
        srdi    0,26,6
        add     28,28,21
        xor     3,3,4
        xor     5,5,0
        ld      0,96(7)
        add     28,28,3
        add     28,28,5
        rotrdi  3,8,14
        rotrdi  4,8,18
        and     5,9,8
        xor     3,3,4
        add     11,11,0
        andc    0,10,8
        rotrdi  4,4,23
        or      5,5,0
        add     11,11,28
        xor     3,3,4
        add     11,11,5
        add     11,11,3

        rotrdi  3,12,28
        rotrdi  4,12,34
        and     5,12,6
        and     0,12,14
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,6,14
        xor     3,3,4
        add     15,15,11
        xor     5,5,0
        add     11,11,3
        add     11,11,5

        rotrdi  3,30,1
        rotrdi  4,30,8
        rotrdi  5,27,19
        rotrdi  0,27,61
        xor     3,3,4
        srdi    4,30,7
        xor     5,5,0
        srdi    0,27,6
        add     29,29,22
        xor     3,3,4
        xor     5,5,0
        ld      0,104(7)
        add     29,29,3
        add     29,29,5
        rotrdi  3,15,14
        rotrdi  4,15,18
        and     5,8,15
        xor     3,3,4
        add     10,10,0
        andc    0,9,15
        rotrdi  4,4,23
        or      5,5,0
        add     10,10,29
        xor     3,3,4
        add     10,10,5
        add     10,10,3

        rotrdi  3,11,28
        rotrdi  4,11,34
        and     5,11,12
        and     0,11,6
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,12,6
        xor     3,3,4
        add     14,14,10
        xor     5,5,0
        add     10,10,3
        add     10,10,5

        rotrdi  3,31,1
        rotrdi  4,31,8
        rotrdi  5,28,19
        rotrdi  0,28,61
        xor     3,3,4
        srdi    4,31,7
        xor     5,5,0
        srdi    0,28,6
        add     30,30,23
        xor     3,3,4
        xor     5,5,0
        ld      0,112(7)
        add     30,30,3
        add     30,30,5
        rotrdi  3,14,14
        rotrdi  4,14,18
        and     5,15,14
        xor     3,3,4
        add     9,9,0
        andc    0,8,14
        rotrdi  4,4,23
        or      5,5,0
        add     9,9,30
        xor     3,3,4
        add     9,9,5
        add     9,9,3

        rotrdi  3,10,28
        rotrdi  4,10,34
        and     5,10,11
        and     0,10,12
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,11,12
        xor     3,3,4
        add     6,6,9
        xor     5,5,0
        add     9,9,3
        add     9,9,5

        rotrdi  3,16,1
        rotrdi  4,16,8
        rotrdi  5,29,19
        rotrdi  0,29,61
        xor     3,3,4
        srdi    4,16,7
        xor     5,5,0
        srdi    0,29,6
        add     31,31,24
        xor     3,3,4
        xor     5,5,0
        ld      0,120(7)
        add     31,31,3
        add     31,31,5
        rotrdi  3,6,14
        rotrdi  4,6,18
        and     5,14,6
        xor     3,3,4
        add     8,8,0
        andc    0,15,6
        rotrdi  4,4,23
        or      5,5,0
        add     8,8,31
        xor     3,3,4
        add     8,8,5
        add     8,8,3

        rotrdi  3,9,28
        rotrdi  4,9,34
        and     5,9,10
        and     0,9,11
        xor     3,3,4
        rotrdi  4,4,5
        xor     5,5,0
        and     0,10,11
        xor     3,3,4
        add     12,12,8
        xor     5,5,0
        add     8,8,3
        add     8,8,5

        bdnz    .Lrounds

        ld      3,208(1)
        ld      31,200(1)
        ld      5,192(1)
        subi    7,7,512

        ld      16,0(3)
        ld      17,8(3)
        ld      18,16(3)
        ld      19,24(3)
        ld      20,32(3)
        ld      21,40(3)
        ld      22,48(3)
        addi    31,31,128
        ld      23,56(3)
        add     8,8,16
        add     9,9,17
        std     31,200(1)
        add     10,10,18
        std     8,0(3)
        add     11,11,19
        std     9,8(3)
        add     12,12,20
        std     10,16(3)
        add     6,6,21
        std     11,24(3)
        add     14,14,22
        std     12,32(3)
        add     15,15,23
        std     6,40(3)
        std     14,48(3)
        cmpld   31,5
        std     15,56(3)
        bne     .Lsha2_block_private
        blr     
.long   0
.byte   0,12,0x14,0,0,0,0,0
.size   sha512_block_ppc,.-sha512_block_ppc
.align  6
.LPICmeup:
        mflr    0
        bcl     20,31,$+4
        mflr    7
        addi    7,7,56
        mtlr    0
        blr     
.long   0
.byte   0,12,0x14,0,0,0,0,0
.space  28
.long   0x428a2f98,0xd728ae22
.long   0x71374491,0x23ef65cd
.long   0xb5c0fbcf,0xec4d3b2f
.long   0xe9b5dba5,0x8189dbbc
.long   0x3956c25b,0xf348b538
.long   0x59f111f1,0xb605d019
.long   0x923f82a4,0xaf194f9b
.long   0xab1c5ed5,0xda6d8118
.long   0xd807aa98,0xa3030242
.long   0x12835b01,0x45706fbe
.long   0x243185be,0x4ee4b28c
.long   0x550c7dc3,0xd5ffb4e2
.long   0x72be5d74,0xf27b896f
.long   0x80deb1fe,0x3b1696b1
.long   0x9bdc06a7,0x25c71235
.long   0xc19bf174,0xcf692694
.long   0xe49b69c1,0x9ef14ad2
.long   0xefbe4786,0x384f25e3
.long   0x0fc19dc6,0x8b8cd5b5
.long   0x240ca1cc,0x77ac9c65
.long   0x2de92c6f,0x592b0275
.long   0x4a7484aa,0x6ea6e483
.long   0x5cb0a9dc,0xbd41fbd4
.long   0x76f988da,0x831153b5
.long   0x983e5152,0xee66dfab
.long   0xa831c66d,0x2db43210
.long   0xb00327c8,0x98fb213f
.long   0xbf597fc7,0xbeef0ee4
.long   0xc6e00bf3,0x3da88fc2
.long   0xd5a79147,0x930aa725
.long   0x06ca6351,0xe003826f
.long   0x14292967,0x0a0e6e70
.long   0x27b70a85,0x46d22ffc
.long   0x2e1b2138,0x5c26c926
.long   0x4d2c6dfc,0x5ac42aed
.long   0x53380d13,0x9d95b3df
.long   0x650a7354,0x8baf63de
.long   0x766a0abb,0x3c77b2a8
.long   0x81c2c92e,0x47edaee6
.long   0x92722c85,0x1482353b
.long   0xa2bfe8a1,0x4cf10364
.long   0xa81a664b,0xbc423001
.long   0xc24b8b70,0xd0f89791
.long   0xc76c51a3,0x0654be30
.long   0xd192e819,0xd6ef5218
.long   0xd6990624,0x5565a910
.long   0xf40e3585,0x5771202a
.long   0x106aa070,0x32bbd1b8
.long   0x19a4c116,0xb8d2d0c8
.long   0x1e376c08,0x5141ab53
.long   0x2748774c,0xdf8eeb99
.long   0x34b0bcb5,0xe19b48a8
.long   0x391c0cb3,0xc5c95a63
.long   0x4ed8aa4a,0xe3418acb
.long   0x5b9cca4f,0x7763e373
.long   0x682e6ff3,0xd6b2b8a3
.long   0x748f82ee,0x5defb2fc
.long   0x78a5636f,0x43172f60
.long   0x84c87814,0xa1f0ab72
.long   0x8cc70208,0x1a6439ec
.long   0x90befffa,0x23631e28
.long   0xa4506ceb,0xde82bde9
.long   0xbef9a3f7,0xb2c67915
.long   0xc67178f2,0xe372532b
.long   0xca273ece,0xea26619c
.long   0xd186b8c7,0x21c0c207
.long   0xeada7dd6,0xcde0eb1e
.long   0xf57d4f7f,0xee6ed178
.long   0x06f067aa,0x72176fba
.long   0x0a637dc5,0xa2c898a6
.long   0x113f9804,0xbef90dae
.long   0x1b710b35,0x131c471b
.long   0x28db77f5,0x23047d84
.long   0x32caab7b,0x40c72493
.long   0x3c9ebe0a,0x15c9bebc
.long   0x431d67c4,0x9c100d4c
.long   0x4cc5d4be,0xcb3e42b6
.long   0x597f299c,0xfc657e2a
.long   0x5fcb6fab,0x3ad6faec
.long   0x6c44198c,0x4a475817