root/sys/crypto/openssl/powerpc64le/chachap10-ppc.S
/* Do not modify. This file is auto-generated from chachap10-ppc.pl. */

.globl  ChaCha20_ctr32_vsx_p10
.type   ChaCha20_ctr32_vsx_p10,@function
.align  5
ChaCha20_ctr32_vsx_p10:
.localentry     ChaCha20_ctr32_vsx_p10,0

        cmpldi  5,255
        ble     .Not_greater_than_8x
        b       ChaCha20_ctr32_vsx_8x
.Not_greater_than_8x:
        stdu    1,-224(1)
        mflr    0
        li      10,127
        li      11,143
        li      12,-1
        stvx    26,10,1
        addi    10,10,32
        stvx    27,11,1
        addi    11,11,32
        stvx    28,10,1
        addi    10,10,32
        stvx    29,11,1
        addi    11,11,32
        stvx    30,10,1
        stvx    31,11,1
        stw     12,220(1)
        li      12,-4096+63
        std     0, 240(1)
        or      12,12,12

        bl      .Lconsts
        .long   0x7E006619
        addi    12,12,0x70
        li      8,16
        li      9,32
        li      10,48
        li      11,64

        .long   0x7E203619
        .long   0x7E483619
        .long   0x7E603E19

        vxor    27,27,27
        .long   0x7F8B6619
        vspltw  26,19,0
        vsldoi  19,19,27,4
        vsldoi  19,27,19,12
        vadduwm 26,26,28





        li      0,10
        mtctr   0
        b       .Loop_outer_vsx

.align  5
.Loop_outer_vsx:
        lvx     0,0,12
        lvx     1,8,12
        lvx     2,9,12
        lvx     3,10,12

        vspltw  4,17,0
        vspltw  5,17,1
        vspltw  6,17,2
        vspltw  7,17,3

        vspltw  8,18,0
        vspltw  9,18,1
        vspltw  10,18,2
        vspltw  11,18,3

        vor     12,26,26
        vspltw  13,19,1
        vspltw  14,19,2
        vspltw  15,19,3

        vspltisw        27,-16
        vspltisw        28,12
        vspltisw        29,8
        vspltisw        30,7

.Loop_vsx_4x:
        vadduwm 0,0,4
        vadduwm 1,1,5
        vadduwm 2,2,6
        vadduwm 3,3,7
        vxor    12,12,0
        vxor    13,13,1
        vxor    14,14,2
        vxor    15,15,3
        vrlw    12,12,27
        vrlw    13,13,27
        vrlw    14,14,27
        vrlw    15,15,27
        vadduwm 8,8,12
        vadduwm 9,9,13
        vadduwm 10,10,14
        vadduwm 11,11,15
        vxor    4,4,8
        vxor    5,5,9
        vxor    6,6,10
        vxor    7,7,11
        vrlw    4,4,28
        vrlw    5,5,28
        vrlw    6,6,28
        vrlw    7,7,28
        vadduwm 0,0,4
        vadduwm 1,1,5
        vadduwm 2,2,6
        vadduwm 3,3,7
        vxor    12,12,0
        vxor    13,13,1
        vxor    14,14,2
        vxor    15,15,3
        vrlw    12,12,29
        vrlw    13,13,29
        vrlw    14,14,29
        vrlw    15,15,29
        vadduwm 8,8,12
        vadduwm 9,9,13
        vadduwm 10,10,14
        vadduwm 11,11,15
        vxor    4,4,8
        vxor    5,5,9
        vxor    6,6,10
        vxor    7,7,11
        vrlw    4,4,30
        vrlw    5,5,30
        vrlw    6,6,30
        vrlw    7,7,30
        vadduwm 0,0,5
        vadduwm 1,1,6
        vadduwm 2,2,7
        vadduwm 3,3,4
        vxor    15,15,0
        vxor    12,12,1
        vxor    13,13,2
        vxor    14,14,3
        vrlw    15,15,27
        vrlw    12,12,27
        vrlw    13,13,27
        vrlw    14,14,27
        vadduwm 10,10,15
        vadduwm 11,11,12
        vadduwm 8,8,13
        vadduwm 9,9,14
        vxor    5,5,10
        vxor    6,6,11
        vxor    7,7,8
        vxor    4,4,9
        vrlw    5,5,28
        vrlw    6,6,28
        vrlw    7,7,28
        vrlw    4,4,28
        vadduwm 0,0,5
        vadduwm 1,1,6
        vadduwm 2,2,7
        vadduwm 3,3,4
        vxor    15,15,0
        vxor    12,12,1
        vxor    13,13,2
        vxor    14,14,3
        vrlw    15,15,29
        vrlw    12,12,29
        vrlw    13,13,29
        vrlw    14,14,29
        vadduwm 10,10,15
        vadduwm 11,11,12
        vadduwm 8,8,13
        vadduwm 9,9,14
        vxor    5,5,10
        vxor    6,6,11
        vxor    7,7,8
        vxor    4,4,9
        vrlw    5,5,30
        vrlw    6,6,30
        vrlw    7,7,30
        vrlw    4,4,30

        bdnz    .Loop_vsx_4x

        vadduwm 12,12,26

        .long   0x13600F8C
        .long   0x13821F8C
        .long   0x10000E8C
        .long   0x10421E8C
        .long   0x13A42F8C
        .long   0x13C63F8C
        .long   0xF0201057
        .long   0xF0601357
        .long   0xF01BE057
        .long   0xF05BE357

        .long   0x10842E8C
        .long   0x10C63E8C
        .long   0x13684F8C
        .long   0x138A5F8C
        .long   0xF0A43057
        .long   0xF0E43357
        .long   0xF09DF057
        .long   0xF0DDF357

        .long   0x11084E8C
        .long   0x114A5E8C
        .long   0x13AC6F8C
        .long   0x13CE7F8C
        .long   0xF1285057
        .long   0xF1685357
        .long   0xF11BE057
        .long   0xF15BE357

        .long   0x118C6E8C
        .long   0x11CE7E8C
        vspltisw        27,4
        vadduwm 26,26,27
        .long   0xF1AC7057
        .long   0xF1EC7357
        .long   0xF19DF057
        .long   0xF1DDF357

        vadduwm 0,0,16
        vadduwm 4,4,17
        vadduwm 8,8,18
        vadduwm 12,12,19






        cmpldi  5,0x40
        blt     .Ltail_vsx

        .long   0x7F602619
        .long   0x7F882619
        .long   0x7FA92619
        .long   0x7FCA2619

        vxor    27,27,0
        vxor    28,28,4
        vxor    29,29,8
        vxor    30,30,12

        .long   0x7F601F19
        .long   0x7F881F19
        addi    4,4,0x40
        .long   0x7FA91F19
        subi    5,5,0x40
        .long   0x7FCA1F19
        addi    3,3,0x40
        beq     .Ldone_vsx

        vadduwm 0,1,16
        vadduwm 4,5,17
        vadduwm 8,9,18
        vadduwm 12,13,19






        cmpldi  5,0x40
        blt     .Ltail_vsx

        .long   0x7F602619
        .long   0x7F882619
        .long   0x7FA92619
        .long   0x7FCA2619

        vxor    27,27,0
        vxor    28,28,4
        vxor    29,29,8
        vxor    30,30,12

        .long   0x7F601F19
        .long   0x7F881F19
        addi    4,4,0x40
        .long   0x7FA91F19
        subi    5,5,0x40
        .long   0x7FCA1F19
        addi    3,3,0x40
        beq     .Ldone_vsx

        vadduwm 0,2,16
        vadduwm 4,6,17
        vadduwm 8,10,18
        vadduwm 12,14,19






        cmpldi  5,0x40
        blt     .Ltail_vsx

        .long   0x7F602619
        .long   0x7F882619
        .long   0x7FA92619
        .long   0x7FCA2619

        vxor    27,27,0
        vxor    28,28,4
        vxor    29,29,8
        vxor    30,30,12

        .long   0x7F601F19
        .long   0x7F881F19
        addi    4,4,0x40
        .long   0x7FA91F19
        subi    5,5,0x40
        .long   0x7FCA1F19
        addi    3,3,0x40
        beq     .Ldone_vsx

        vadduwm 0,3,16
        vadduwm 4,7,17
        vadduwm 8,11,18
        vadduwm 12,15,19






        cmpldi  5,0x40
        blt     .Ltail_vsx

        .long   0x7F602619
        .long   0x7F882619
        .long   0x7FA92619
        .long   0x7FCA2619

        vxor    27,27,0
        vxor    28,28,4
        vxor    29,29,8
        vxor    30,30,12

        .long   0x7F601F19
        .long   0x7F881F19
        addi    4,4,0x40
        .long   0x7FA91F19
        subi    5,5,0x40
        .long   0x7FCA1F19
        addi    3,3,0x40
        mtctr   0
        bne     .Loop_outer_vsx

.Ldone_vsx:
        lwz     12,220(1)
        li      10,127
        li      11,143
        ld      0, 240(1)
        or      12,12,12
        lvx     26,10,1
        addi    10,10,32
        lvx     27,11,1
        addi    11,11,32
        lvx     28,10,1
        addi    10,10,32
        lvx     29,11,1
        addi    11,11,32
        lvx     30,10,1
        lvx     31,11,1
        mtlr    0
        addi    1,1,224
        blr     

.align  4
.Ltail_vsx:
        addi    11,1,48
        mtctr   5
        .long   0x7C005F19
        .long   0x7C885F19
        .long   0x7D095F19
        .long   0x7D8A5F19
        subi    12,11,1
        subi    4,4,1
        subi    3,3,1

.Loop_tail_vsx:
        lbzu    6,1(12)
        lbzu    7,1(4)
        xor     6,6,7
        stbu    6,1(3)
        bdnz    .Loop_tail_vsx

        .long   0x7E005F19
        .long   0x7E085F19
        .long   0x7E095F19
        .long   0x7E0A5F19

        b       .Ldone_vsx
.long   0
.byte   0,12,0x04,1,0x80,0,5,0
.long   0
.size   ChaCha20_ctr32_vsx_p10,.-ChaCha20_ctr32_vsx_p10

.globl  ChaCha20_ctr32_vsx_8x
.type   ChaCha20_ctr32_vsx_8x,@function
.align  5
ChaCha20_ctr32_vsx_8x:
.localentry     ChaCha20_ctr32_vsx_8x,0

        stdu    1,-256(1)
        mflr    0
        li      10,127
        li      11,143
        li      12,-1
        stvx    24,10,1
        addi    10,10,32
        stvx    25,11,1
        addi    11,11,32
        stvx    26,10,1
        addi    10,10,32
        stvx    27,11,1
        addi    11,11,32
        stvx    28,10,1
        addi    10,10,32
        stvx    29,11,1
        addi    11,11,32
        stvx    30,10,1
        stvx    31,11,1
        stw     12,252(1)
        li      12,-4096+63
        std     0, 272(1)
        or      12,12,12

        bl      .Lconsts

        .long   0x7F606619
        addi    12,12,0x70
        li      8,16
        li      9,32
        li      10,48
        li      11,64

        vspltisw        16,-16
        vspltisw        20,12
        vspltisw        24,8
        vspltisw        28,7

        lvx     0,0,12
        lvx     1,8,12
        lvx     2,9,12
        lvx     3,10,12

        .long   0xF1308496
        .long   0xF154A496
        .long   0xF178C496
        .long   0xF19CE496
        .long   0xF2C00496
        .long   0xF2E10C96
        .long   0xF3021496
        .long   0xF3231C96

        .long   0x7F003619
        .long   0x7F283619
        .long   0x7F403E19
        vspltisw        30,4


        vxor    29,29,29
        .long   0x7F8B6619
        vspltw  2,26,0
        vsldoi  26,26,29,4
        vsldoi  26,29,26,12
        vadduwm 28,2,28
        vadduwm 30,28,30
        vspltw  0,25,2






        .long   0xF01BDC96
        .long   0xF038C496
        .long   0xF059CC96
        .long   0xF07AD496
        .long   0xF09CE496
        .long   0xF0BEF496
        .long   0xF1000496

        li      0,10
        mtctr   0
        b       .Loop_outer_vsx_8x

.align  5
.Loop_outer_vsx_8x:
        .long   0xF016B491
        .long   0xF037BC91
        .long   0xF058C491
        .long   0xF079CC91
        .long   0xF216B491
        .long   0xF237BC91
        .long   0xF258C491
        .long   0xF279CC91

        vspltw  4,24,0
        vspltw  5,24,1
        vspltw  6,24,2
        vspltw  7,24,3
        vspltw  20,24,0
        vspltw  21,24,1
        vspltw  22,24,2
        vspltw  23,24,3

        vspltw  8,25,0
        vspltw  9,25,1
        vspltw  10,25,2
        vspltw  11,25,3
        vspltw  24,25,0
        vspltw  27,25,3
        vspltw  25,25,1

        .long   0xF1842491
        vspltw  13,26,1
        vspltw  14,26,2
        vspltw  15,26,3
        .long   0xF3852C91
        vspltw  29,26,1
        vspltw  30,26,2
        vspltw  31,26,3
        .long   0xF3484491

.Loop_vsx_8x:
        .long   0xF1FBDC96
        .long   0xF3694C91
        vadduwm 0,0,4
        vadduwm 1,1,5
        vadduwm 2,2,6
        vadduwm 3,3,7
        vadduwm 16,16,20
        vadduwm 17,17,21
        vadduwm 18,18,22
        vadduwm 19,19,23
        vxor    12,12,0
        vxor    13,13,1
        vxor    14,14,2
        vxor    15,15,3
        vxor    28,28,16
        vxor    29,29,17
        vxor    30,30,18
        vxor    31,31,19
        vrlw    12,12,27
        vrlw    13,13,27
        vrlw    14,14,27
        vrlw    15,15,27
        vrlw    28,28,27
        vrlw    29,29,27
        vrlw    30,30,27
        vrlw    31,31,27
        .long   0xF1B39C96
        .long   0xF36F7C91
        .long   0xF26A5491
        vadduwm 8,8,12
        vadduwm 9,9,13
        vadduwm 10,10,14
        vadduwm 11,11,15
        vadduwm 24,24,28
        vadduwm 25,25,29
        vadduwm 26,26,30
        vadduwm 27,27,31
        vxor    4,4,8
        vxor    5,5,9
        vxor    6,6,10
        vxor    7,7,11
        vxor    20,20,24
        vxor    21,21,25
        vxor    22,22,26
        vxor    23,23,27
        vrlw    4,4,19
        vrlw    5,5,19
        vrlw    6,6,19
        vrlw    7,7,19
        vrlw    20,20,19
        vrlw    21,21,19
        vrlw    22,22,19
        vrlw    23,23,19
        .long   0xF26D6C91
        .long   0xF1FBDC96
        .long   0xF36B5C91
        vadduwm 0,0,4
        vadduwm 1,1,5
        vadduwm 2,2,6
        vadduwm 3,3,7
        vadduwm 16,16,20
        vadduwm 17,17,21
        vadduwm 18,18,22
        vadduwm 19,19,23
        vxor    12,12,0
        vxor    13,13,1
        vxor    14,14,2
        vxor    15,15,3
        vxor    28,28,16
        vxor    29,29,17
        vxor    30,30,18
        vxor    31,31,19
        vrlw    12,12,27
        vrlw    13,13,27
        vrlw    14,14,27
        vrlw    15,15,27
        vrlw    28,28,27
        vrlw    29,29,27
        vrlw    30,30,27
        vrlw    31,31,27
        .long   0xF36F7C91
        .long   0xF1B39C96
        .long   0xF26C6491
        vadduwm 8,8,12
        vadduwm 9,9,13
        vadduwm 10,10,14
        vadduwm 11,11,15
        vadduwm 24,24,28
        vadduwm 25,25,29
        vadduwm 26,26,30
        vadduwm 27,27,31
        vxor    4,4,8
        vxor    5,5,9
        vxor    6,6,10
        vxor    7,7,11
        vxor    20,20,24
        vxor    21,21,25
        vxor    22,22,26
        vxor    23,23,27
        vrlw    4,4,19
        vrlw    5,5,19
        vrlw    6,6,19
        vrlw    7,7,19
        vrlw    20,20,19
        vrlw    21,21,19
        vrlw    22,22,19
        vrlw    23,23,19
        .long   0xF26D6C91
        .long   0xF1F9CC96
        .long   0xF3294C91
        vadduwm 0,0,5
        vadduwm 1,1,6
        vadduwm 2,2,7
        vadduwm 3,3,4
        vadduwm 16,16,21
        vadduwm 17,17,22
        vadduwm 18,18,23
        vadduwm 19,19,20
        vxor    15,15,0
        vxor    12,12,1
        vxor    13,13,2
        vxor    14,14,3
        vxor    31,31,16
        vxor    28,28,17
        vxor    29,29,18
        vxor    30,30,19
        vrlw    15,15,25
        vrlw    12,12,25
        vrlw    13,13,25
        vrlw    14,14,25
        vrlw    31,31,25
        vrlw    28,28,25
        vrlw    29,29,25
        vrlw    30,30,25
        .long   0xF1B39C96
        .long   0xF32F7C91
        .long   0xF26A5491
        vadduwm 10,10,15
        vadduwm 11,11,12
        vadduwm 8,8,13
        vadduwm 9,9,14
        vadduwm 26,26,31
        vadduwm 27,27,28
        vadduwm 24,24,29
        vadduwm 25,25,30
        vxor    5,5,10
        vxor    6,6,11
        vxor    7,7,8
        vxor    4,4,9
        vxor    21,21,26
        vxor    22,22,27
        vxor    23,23,24
        vxor    20,20,25
        vrlw    5,5,19
        vrlw    6,6,19
        vrlw    7,7,19
        vrlw    4,4,19
        vrlw    21,21,19
        vrlw    22,22,19
        vrlw    23,23,19
        vrlw    20,20,19
        .long   0xF26D6C91
        .long   0xF1F9CC96
        .long   0xF32B5C91
        vadduwm 0,0,5
        vadduwm 1,1,6
        vadduwm 2,2,7
        vadduwm 3,3,4
        vadduwm 16,16,21
        vadduwm 17,17,22
        vadduwm 18,18,23
        vadduwm 19,19,20
        vxor    15,15,0
        vxor    12,12,1
        vxor    13,13,2
        vxor    14,14,3
        vxor    31,31,16
        vxor    28,28,17
        vxor    29,29,18
        vxor    30,30,19
        vrlw    15,15,25
        vrlw    12,12,25
        vrlw    13,13,25
        vrlw    14,14,25
        vrlw    31,31,25
        vrlw    28,28,25
        vrlw    29,29,25
        vrlw    30,30,25
        .long   0xF32F7C91
        .long   0xF1B39C96
        .long   0xF26C6491
        vadduwm 10,10,15
        vadduwm 11,11,12
        vadduwm 8,8,13
        vadduwm 9,9,14
        vadduwm 26,26,31
        vadduwm 27,27,28
        vadduwm 24,24,29
        vadduwm 25,25,30
        vxor    5,5,10
        vxor    6,6,11
        vxor    7,7,8
        vxor    4,4,9
        vxor    21,21,26
        vxor    22,22,27
        vxor    23,23,24
        vxor    20,20,25
        vrlw    5,5,19
        vrlw    6,6,19
        vrlw    7,7,19
        vrlw    4,4,19
        vrlw    21,21,19
        vrlw    22,22,19
        vrlw    23,23,19
        vrlw    20,20,19
        .long   0xF26D6C91

        bdnz    .Loop_vsx_8x
        .long   0xF1BCE496
        .long   0xF1DDEC96
        .long   0xF1FEF496
        .long   0xF21FFC96

        .long   0xF258C496
        .long   0xF279CC96
        .long   0xF29AD496
        .long   0xF2BBDC96

        .long   0xF0D6B496
        .long   0xF0F7BC96


        .long   0xF3600491
        .long   0xF3010C91
        .long   0xF3221491
        .long   0xF3431C91
        .long   0xF2C42491


        .long   0x12E00F8C
        .long   0x13821F8C
        .long   0x10000E8C
        .long   0x10421E8C

        .long   0x13A42F8C
        .long   0x13C63F8C
        .long   0x10842E8C
        .long   0x10C63E8C

        vadduwm 12,12,22

        .long   0xF0201057
        .long   0xF0601357
        .long   0xF017E057
        .long   0xF057E357
        .long   0xF0A43057
        .long   0xF0E43357
        .long   0xF09DF057
        .long   0xF0DDF357

        .long   0x12E84F8C
        .long   0x138A5F8C
        .long   0x11084E8C
        .long   0x114A5E8C
        .long   0x13AC6F8C
        .long   0x13CE7F8C
        .long   0x118C6E8C
        .long   0x11CE7E8C

        .long   0xF1285057
        .long   0xF1685357
        .long   0xF117E057
        .long   0xF157E357
        .long   0xF1AC7057
        .long   0xF1EC7357
        .long   0xF19DF057
        .long   0xF1DDF357

        vspltisw        23,8
        vadduwm 22,22,23
        .long   0xF096B496

        vadduwm 0,0,27
        vadduwm 4,4,24
        vadduwm 8,8,25
        vadduwm 12,12,26






        cmpldi  5,0x40
        blt     .Ltail_vsx_8x

        .long   0x7EE02619
        .long   0x7F882619
        .long   0x7FA92619
        .long   0x7FCA2619

        vxor    23,23,0
        vxor    28,28,4
        vxor    29,29,8
        vxor    30,30,12

        .long   0x7EE01F19
        .long   0x7F881F19
        addi    4,4,0x40
        .long   0x7FA91F19
        subi    5,5,0x40
        .long   0x7FCA1F19
        addi    3,3,0x40
        beq     .Ldone_vsx_8x

        vadduwm 0,1,27
        vadduwm 4,5,24
        vadduwm 8,9,25
        vadduwm 12,13,26






        cmpldi  5,0x40
        blt     .Ltail_vsx_8x

        .long   0x7EE02619
        .long   0x7F882619
        .long   0x7FA92619
        .long   0x7FCA2619

        vxor    23,23,0
        vxor    28,28,4
        vxor    29,29,8
        vxor    30,30,12

        .long   0x7EE01F19
        .long   0x7F881F19
        addi    4,4,0x40
        .long   0x7FA91F19
        subi    5,5,0x40
        .long   0x7FCA1F19
        addi    3,3,0x40
        beq     .Ldone_vsx_8x

        vadduwm 0,2,27
        vadduwm 4,6,24
        vadduwm 8,10,25
        vadduwm 12,14,26






        cmpldi  5,0x40
        blt     .Ltail_vsx_8x

        .long   0x7EE02619
        .long   0x7F882619
        .long   0x7FA92619
        .long   0x7FCA2619

        vxor    23,23,0
        vxor    28,28,4
        vxor    29,29,8
        vxor    30,30,12

        .long   0x7EE01F19
        .long   0x7F881F19
        addi    4,4,0x40
        .long   0x7FA91F19
        subi    5,5,0x40
        .long   0x7FCA1F19
        addi    3,3,0x40
        beq     .Ldone_vsx_8x

        vadduwm 0,3,27
        vadduwm 4,7,24
        vadduwm 8,11,25
        vadduwm 12,15,26






        cmpldi  5,0x40
        blt     .Ltail_vsx_8x

        .long   0x7EE02619
        .long   0x7F882619
        .long   0x7FA92619
        .long   0x7FCA2619

        vxor    23,23,0
        vxor    28,28,4
        vxor    29,29,8
        vxor    30,30,12

        .long   0x7EE01F19
        .long   0x7F881F19
        addi    4,4,0x40
        .long   0x7FA91F19
        subi    5,5,0x40
        .long   0x7FCA1F19
        addi    3,3,0x40
        beq     .Ldone_vsx_8x




        .long   0xF0A52C91

        .long   0xF1129491
        .long   0xF1339C91
        .long   0xF154A491
        .long   0xF175AC91

        .long   0xF18D6C91
        .long   0xF1AE7491
        .long   0xF1CF7C91
        .long   0xF1F08491
        vadduwm 12,12,5

        .long   0xF2C63491
        .long   0xF2E73C91


        .long   0x10908F8C
        .long   0x13929F8C
        .long   0x12108E8C
        .long   0x12529E8C
        .long   0x13B4AF8C
        .long   0x13D6BF8C
        .long   0x1294AE8C
        .long   0x12D6BE8C

        .long   0xF2309057
        .long   0xF2709357
        .long   0xF204E057
        .long   0xF244E357
        .long   0xF2B4B057
        .long   0xF2F4B357
        .long   0xF29DF057
        .long   0xF2DDF357

        .long   0x10884F8C
        .long   0x138A5F8C
        .long   0x11084E8C
        .long   0x114A5E8C
        .long   0x13AC6F8C
        .long   0x13CE7F8C
        .long   0x118C6E8C
        .long   0x11CE7E8C

        .long   0xF1285057
        .long   0xF1685357
        .long   0xF104E057
        .long   0xF144E357
        .long   0xF1AC7057
        .long   0xF1EC7357
        .long   0xF19DF057
        .long   0xF1DDF357

        vspltisw        4,8
        vadduwm 5,5,4
        .long   0xF0A52C96

        vadduwm 0,16,27
        vadduwm 1,20,24
        vadduwm 2,8,25
        vadduwm 3,12,26






        cmpldi  5,0x40
        blt     .Ltail_vsx_8x_1

        .long   0x7C802619
        .long   0x7F882619
        .long   0x7FA92619
        .long   0x7FCA2619

        vxor    4,4,0
        vxor    28,28,1
        vxor    29,29,2
        vxor    30,30,3

        .long   0x7C801F19
        .long   0x7F881F19
        addi    4,4,0x40
        .long   0x7FA91F19
        subi    5,5,0x40
        .long   0x7FCA1F19
        addi    3,3,0x40
        beq     .Ldone_vsx_8x

        vadduwm 0,17,27
        vadduwm 1,21,24
        vadduwm 2,9,25
        vadduwm 3,13,26






        cmpldi  5,0x40
        blt     .Ltail_vsx_8x_1

        .long   0x7C802619
        .long   0x7F882619
        .long   0x7FA92619
        .long   0x7FCA2619

        vxor    4,4,0
        vxor    28,28,1
        vxor    29,29,2
        vxor    30,30,3

        .long   0x7C801F19
        .long   0x7F881F19
        addi    4,4,0x40
        .long   0x7FA91F19
        subi    5,5,0x40
        .long   0x7FCA1F19
        addi    3,3,0x40
        beq     .Ldone_vsx_8x

        vadduwm 0,18,27
        vadduwm 1,22,24
        vadduwm 2,10,25
        vadduwm 3,14,26






        cmpldi  5,0x40
        blt     .Ltail_vsx_8x_1

        .long   0x7C802619
        .long   0x7F882619
        .long   0x7FA92619
        .long   0x7FCA2619

        vxor    4,4,0
        vxor    28,28,1
        vxor    29,29,2
        vxor    30,30,3

        .long   0x7C801F19
        .long   0x7F881F19
        addi    4,4,0x40
        .long   0x7FA91F19
        subi    5,5,0x40
        .long   0x7FCA1F19
        addi    3,3,0x40
        beq     .Ldone_vsx_8x

        vadduwm 0,19,27
        vadduwm 1,23,24
        vadduwm 2,11,25
        vadduwm 3,15,26






        cmpldi  5,0x40
        blt     .Ltail_vsx_8x_1

        .long   0x7C802619
        .long   0x7F882619
        .long   0x7FA92619
        .long   0x7FCA2619

        vxor    4,4,0
        vxor    28,28,1
        vxor    29,29,2
        vxor    30,30,3

        .long   0x7C801F19
        .long   0x7F881F19
        addi    4,4,0x40
        .long   0x7FA91F19
        subi    5,5,0x40
        .long   0x7FCA1F19
        addi    3,3,0x40
        beq     .Ldone_vsx_8x

        mtctr   0
        bne     .Loop_outer_vsx_8x

.Ldone_vsx_8x:
        lwz     12,252(1)
        li      10,127
        li      11,143
        ld      0, 272(1)
        or      12,12,12
        lvx     24,10,1
        addi    10,10,32
        lvx     25,11,1
        addi    11,11,32
        lvx     26,10,1
        addi    10,10,32
        lvx     27,11,1
        addi    11,11,32
        lvx     28,10,1
        addi    10,10,32
        lvx     29,11,1
        addi    11,11,32
        lvx     30,10,1
        lvx     31,11,1
        mtlr    0
        addi    1,1,256
        blr     

.align  4
.Ltail_vsx_8x:
        addi    11,1,48
        mtctr   5
        .long   0x7C005F19
        .long   0x7C885F19
        .long   0x7D095F19
        .long   0x7D8A5F19
        subi    12,11,1
        subi    4,4,1
        subi    3,3,1
        bl      .Loop_tail_vsx_8x
.Ltail_vsx_8x_1:
        addi    11,1,48
        mtctr   5
        .long   0x7C005F19
        .long   0x7C285F19
        .long   0x7C495F19
        .long   0x7C6A5F19
        subi    12,11,1
        subi    4,4,1
        subi    3,3,1
        bl      .Loop_tail_vsx_8x

.Loop_tail_vsx_8x:
        lbzu    6,1(12)
        lbzu    7,1(4)
        xor     6,6,7
        stbu    6,1(3)
        bdnz    .Loop_tail_vsx_8x

        .long   0x7F605F19
        .long   0x7F685F19
        .long   0x7F695F19
        .long   0x7F6A5F19

        b       .Ldone_vsx_8x
.long   0
.byte   0,12,0x04,1,0x80,0,5,0
.long   0
.size   ChaCha20_ctr32_vsx_8x,.-ChaCha20_ctr32_vsx_8x
.align  5
.Lconsts:
        mflr    0
        bcl     20,31,$+4
        mflr    12
        addi    12,12,56
        mtlr    0
        blr     
.long   0
.byte   0,12,0x14,0,0,0,0,0
.space  28
.Lsigma:
.long   0x61707865,0x3320646e,0x79622d32,0x6b206574
.long   1,0,0,0
.long   2,0,0,0
.long   3,0,0,0
.long   4,0,0,0
.long   0x0e0f0c0d,0x0a0b0809,0x06070405,0x02030001
.long   0x0d0e0f0c,0x090a0b08,0x05060704,0x01020300
.long   0x61707865,0x61707865,0x61707865,0x61707865
.long   0x3320646e,0x3320646e,0x3320646e,0x3320646e
.long   0x79622d32,0x79622d32,0x79622d32,0x79622d32
.long   0x6b206574,0x6b206574,0x6b206574,0x6b206574
.long   0,1,2,3
.long   0x03020100,0x07060504,0x0b0a0908,0x0f0e0d0c
.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
.align  2
.align  2