
.globl	ChaCha20_ctr32_vsx_p10
.type	ChaCha20_ctr32_vsx_p10,@function
.align	5
ChaCha20_ctr32_vsx_p10:
	cmplwi	5,255
	ble	.Not_greater_than_8x
	b	ChaCha20_ctr32_vsx_8x
.Not_greater_than_8x:
	stwu	1,-200(1)
	mflr	0
	li	10,103
	li	11,119
	mfspr	12,256
	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,196(1)
	li	12,-4096+63
	stw	0, 204(1)
	mtspr	256,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

	lvsl	31,0,8
	vspltisb	27,3
	vxor	31,31,27

	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

	bc	16,0,.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

	vperm	0,0,0,31
	vperm	4,4,4,31
	vperm	8,8,8,31
	vperm	12,12,12,31

	cmplwi	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

	vperm	0,0,0,31
	vperm	4,4,4,31
	vperm	8,8,8,31
	vperm	12,12,12,31

	cmplwi	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

	vperm	0,0,0,31
	vperm	4,4,4,31
	vperm	8,8,8,31
	vperm	12,12,12,31

	cmplwi	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

	vperm	0,0,0,31
	vperm	4,4,4,31
	vperm	8,8,8,31
	vperm	12,12,12,31

	cmplwi	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,196(1)
	li	10,103
	li	11,119
	lwz	0, 204(1)
	mtspr	256,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,200
	blr	

.align	4
.Ltail_vsx:
	addi	11,1,24
	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)
	bc	16,0,.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


.globl	ChaCha20_ctr32_vsx_8x
.type	ChaCha20_ctr32_vsx_8x,@function
.align	5
ChaCha20_ctr32_vsx_8x:
	stwu	1,-232(1)
	mflr	0
	li	10,103
	li	11,119
	mfspr	12,256
	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,228(1)
	li	12,-4096+63
	stw	0, 236(1)
	mtspr	256,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

	lvsl	31,0,8
	vspltisb	23,3
	vxor	31,31,23
.long	0xF35FFC96

.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

	bc	16,0,.Loop_vsx_8x
.long	0xF1BCE496
.long	0xF1DDEC96
.long	0xF1FEF496
.long	0xF21FFC96

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

.long	0xF0D6B496
.long	0xF0F7BC96
.long	0xF3FAD491

.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

	vperm	0,0,0,31
	vperm	4,4,4,31
	vperm	8,8,8,31
	vperm	12,12,12,31

	cmplwi	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

	vperm	0,0,0,31
	vperm	4,4,4,31
	vperm	8,8,8,31
	vperm	12,12,12,31

	cmplwi	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

	vperm	0,0,0,31
	vperm	4,4,4,31
	vperm	8,8,8,31
	vperm	12,12,12,31

	cmplwi	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

	vperm	0,0,0,31
	vperm	4,4,4,31
	vperm	8,8,8,31
	vperm	12,12,12,31

	cmplwi	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

	vperm	0,0,0,31
	vperm	1,1,1,31
	vperm	2,2,2,31
	vperm	3,3,3,31

	cmplwi	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

	vperm	0,0,0,31
	vperm	1,1,1,31
	vperm	2,2,2,31
	vperm	3,3,3,31

	cmplwi	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

	vperm	0,0,0,31
	vperm	1,1,1,31
	vperm	2,2,2,31
	vperm	3,3,3,31

	cmplwi	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

	vperm	0,0,0,31
	vperm	1,1,1,31
	vperm	2,2,2,31
	vperm	3,3,3,31

	cmplwi	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,228(1)
	li	10,103
	li	11,119
	lwz	0, 236(1)
	mtspr	256,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,232
	blr	

.align	4
.Ltail_vsx_8x:
	addi	11,1,24
	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,24
	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)
	bc	16,0,.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

.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	0x02030001,0x06070405,0x0a0b0809,0x0e0f0c0d
.long	0x01020300,0x05060704,0x090a0b08,0x0d0e0f0c
.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
