root/sys/crypto/openssl/powerpc64le/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     3,0(31)
        lwz     4,4(31)
        rotlwi  5,3,8
        rotlwi  16,4,8
        rlwimi  5,3,24,0,7
        rlwimi  16,4,24,0,7
        rlwimi  5,3,24,16,23
        rlwimi  16,4,24,16,23
        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     3,8(31)
        lwz     4,12(31)
        rotlwi  5,3,8
        rotlwi  17,4,8
        rlwimi  5,3,24,0,7
        rlwimi  17,4,24,0,7
        rlwimi  5,3,24,16,23
        rlwimi  17,4,24,16,23
        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     3,16(31)
        lwz     4,20(31)
        rotlwi  5,3,8
        rotlwi  18,4,8
        rlwimi  5,3,24,0,7
        rlwimi  18,4,24,0,7
        rlwimi  5,3,24,16,23
        rlwimi  18,4,24,16,23
        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     3,24(31)
        lwz     4,28(31)
        rotlwi  5,3,8
        rotlwi  19,4,8
        rlwimi  5,3,24,0,7
        rlwimi  19,4,24,0,7
        rlwimi  5,3,24,16,23
        rlwimi  19,4,24,16,23
        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     3,32(31)
        lwz     4,36(31)
        rotlwi  5,3,8
        rotlwi  20,4,8
        rlwimi  5,3,24,0,7
        rlwimi  20,4,24,0,7
        rlwimi  5,3,24,16,23
        rlwimi  20,4,24,16,23
        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     3,40(31)
        lwz     4,44(31)
        rotlwi  5,3,8
        rotlwi  21,4,8
        rlwimi  5,3,24,0,7
        rlwimi  21,4,24,0,7
        rlwimi  5,3,24,16,23
        rlwimi  21,4,24,16,23
        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     3,48(31)
        lwz     4,52(31)
        rotlwi  5,3,8
        rotlwi  22,4,8
        rlwimi  5,3,24,0,7
        rlwimi  22,4,24,0,7
        rlwimi  5,3,24,16,23
        rlwimi  22,4,24,16,23
        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     3,56(31)
        lwz     4,60(31)
        rotlwi  5,3,8
        rotlwi  23,4,8
        rlwimi  5,3,24,0,7
        rlwimi  23,4,24,0,7
        rlwimi  5,3,24,16,23
        rlwimi  23,4,24,16,23
        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     3,64(31)
        lwz     4,68(31)
        rotlwi  5,3,8
        rotlwi  24,4,8
        rlwimi  5,3,24,0,7
        rlwimi  24,4,24,0,7
        rlwimi  5,3,24,16,23
        rlwimi  24,4,24,16,23
        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     3,72(31)
        lwz     4,76(31)
        rotlwi  5,3,8
        rotlwi  25,4,8
        rlwimi  5,3,24,0,7
        rlwimi  25,4,24,0,7
        rlwimi  5,3,24,16,23
        rlwimi  25,4,24,16,23
        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     3,80(31)
        lwz     4,84(31)
        rotlwi  5,3,8
        rotlwi  26,4,8
        rlwimi  5,3,24,0,7
        rlwimi  26,4,24,0,7
        rlwimi  5,3,24,16,23
        rlwimi  26,4,24,16,23
        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     3,88(31)
        lwz     4,92(31)
        rotlwi  5,3,8
        rotlwi  27,4,8
        rlwimi  5,3,24,0,7
        rlwimi  27,4,24,0,7
        rlwimi  5,3,24,16,23
        rlwimi  27,4,24,16,23
        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     3,96(31)
        lwz     4,100(31)
        rotlwi  5,3,8
        rotlwi  28,4,8
        rlwimi  5,3,24,0,7
        rlwimi  28,4,24,0,7
        rlwimi  5,3,24,16,23
        rlwimi  28,4,24,16,23
        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     3,104(31)
        lwz     4,108(31)
        rotlwi  5,3,8
        rotlwi  29,4,8
        rlwimi  5,3,24,0,7
        rlwimi  29,4,24,0,7
        rlwimi  5,3,24,16,23
        rlwimi  29,4,24,16,23
        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     3,112(31)
        lwz     4,116(31)
        rotlwi  5,3,8
        rotlwi  30,4,8
        rlwimi  5,3,24,0,7
        rlwimi  30,4,24,0,7
        rlwimi  5,3,24,16,23
        rlwimi  30,4,24,16,23
        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     3,120(31)
        lwz     4,124(31)
        rotlwi  5,3,8
        rotlwi  31,4,8
        rlwimi  5,3,24,0,7
        rlwimi  31,4,24,0,7
        rlwimi  5,3,24,16,23
        rlwimi  31,4,24,16,23
        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   0xd728ae22,0x428a2f98
.long   0x23ef65cd,0x71374491
.long   0xec4d3b2f,0xb5c0fbcf
.long   0x8189dbbc,0xe9b5dba5
.long   0xf348b538,0x3956c25b
.long   0xb605d019,0x59f111f1
.long   0xaf194f9b,0x923f82a4
.long   0xda6d8118,0xab1c5ed5
.long   0xa3030242,0xd807aa98
.long   0x45706fbe,0x12835b01
.long   0x4ee4b28c,0x243185be
.long   0xd5ffb4e2,0x550c7dc3
.long   0xf27b896f,0x72be5d74
.long   0x3b1696b1,0x80deb1fe
.long   0x25c71235,0x9bdc06a7
.long   0xcf692694,0xc19bf174
.long   0x9ef14ad2,0xe49b69c1
.long   0x384f25e3,0xefbe4786
.long   0x8b8cd5b5,0x0fc19dc6
.long   0x77ac9c65,0x240ca1cc
.long   0x592b0275,0x2de92c6f
.long   0x6ea6e483,0x4a7484aa
.long   0xbd41fbd4,0x5cb0a9dc
.long   0x831153b5,0x76f988da
.long   0xee66dfab,0x983e5152
.long   0x2db43210,0xa831c66d
.long   0x98fb213f,0xb00327c8
.long   0xbeef0ee4,0xbf597fc7
.long   0x3da88fc2,0xc6e00bf3
.long   0x930aa725,0xd5a79147
.long   0xe003826f,0x06ca6351
.long   0x0a0e6e70,0x14292967
.long   0x46d22ffc,0x27b70a85
.long   0x5c26c926,0x2e1b2138
.long   0x5ac42aed,0x4d2c6dfc
.long   0x9d95b3df,0x53380d13
.long   0x8baf63de,0x650a7354
.long   0x3c77b2a8,0x766a0abb
.long   0x47edaee6,0x81c2c92e
.long   0x1482353b,0x92722c85
.long   0x4cf10364,0xa2bfe8a1
.long   0xbc423001,0xa81a664b
.long   0xd0f89791,0xc24b8b70
.long   0x0654be30,0xc76c51a3
.long   0xd6ef5218,0xd192e819
.long   0x5565a910,0xd6990624
.long   0x5771202a,0xf40e3585
.long   0x32bbd1b8,0x106aa070
.long   0xb8d2d0c8,0x19a4c116
.long   0x5141ab53,0x1e376c08
.long   0xdf8eeb99,0x2748774c
.long   0xe19b48a8,0x34b0bcb5
.long   0xc5c95a63,0x391c0cb3
.long   0xe3418acb,0x4ed8aa4a
.long   0x7763e373,0x5b9cca4f
.long   0xd6b2b8a3,0x682e6ff3
.long   0x5defb2fc,0x748f82ee
.long   0x43172f60,0x78a5636f
.long   0xa1f0ab72,0x84c87814
.long   0x1a6439ec,0x8cc70208
.long   0x23631e28,0x90befffa
.long   0xde82bde9,0xa4506ceb
.long   0xb2c67915,0xbef9a3f7
.long   0xe372532b,0xc67178f2
.long   0xea26619c,0xca273ece
.long   0x21c0c207,0xd186b8c7
.long   0xcde0eb1e,0xeada7dd6
.long   0xee6ed178,0xf57d4f7f
.long   0x72176fba,0x06f067aa
.long   0xa2c898a6,0x0a637dc5
.long   0xbef90dae,0x113f9804
.long   0x131c471b,0x1b710b35
.long   0x23047d84,0x28db77f5
.long   0x40c72493,0x32caab7b
.long   0x15c9bebc,0x3c9ebe0a
.long   0x9c100d4c,0x431d67c4
.long   0xcb3e42b6,0x4cc5d4be
.long   0xfc657e2a,0x597f299c
.long   0x3ad6faec,0x5fcb6fab
.long   0x4a475817,0x6c44198c