NetBSD-5.0.2/lib/libcrypto/arch/powerpc/ppc.S



















































































.globl	bn_sqr_comba4
.type	bn_sqr_comba4,@function
.globl	bn_sqr_comba8
.type	bn_sqr_comba8,@function
.globl	bn_mul_comba4
.type	bn_mul_comba4,@function
.globl	bn_mul_comba8
.type	bn_mul_comba8,@function
.globl	bn_sub_words
.type	bn_sub_words,@function
.globl	bn_add_words
.type	bn_add_words,@function
.globl	bn_div_words
.type	bn_div_words,@function
.globl	bn_sqr_words
.type	bn_sqr_words,@function
.globl	bn_mul_words
.type	bn_mul_words,@function
.globl	bn_mul_add_words
.type	bn_mul_add_words,@function



.machine	"ppc"








.align	4
bn_sqr_comba4:















	xor	0,0,0



	lwz	5,0(4)
	mullw	9,5,5
	mulhwu	10,5,5




	stw	9,0(3)

	lwz	6,4(4)
	mullw	7,5,6
	mulhwu	8,5,6

	addc	7,7,7
	adde	8,8,8
	addze	9,0


	addc	10,7,10
	addze	11,8
	addze	9,9

	stw	10,4(3)

	mullw	7,6,6
	mulhwu	8,6,6
	addc	11,7,11
	adde	9,8,9
	addze	10,0

	lwz	6,8(4)
	mullw	7,5,6
	mulhwu	8,5,6

	addc	7,7,7
	adde	8,8,8
	addze	10,10

	addc	11,7,11
	adde	9,8,9
	addze	10,10
	stw	11,8(3)

	lwz	6,12(4)
	mullw	7,5,6
	mulhwu	8,5,6
	addc	7,7,7
	adde	8,8,8
	addze	11,0

	addc	9,7,9
	adde	10,8,10
	addze	11,11

	lwz	5,4(4)
	lwz	6,8(4)
	mullw	7,5,6
	mulhwu	8,5,6

	addc	7,7,7
	adde	8,8,8
	addze	11,11
	addc	9,7,9
	adde	10,8,10
	addze	11,11
	stw	9,12(3)

	mullw	7,6,6
	mulhwu	8,6,6
	addc	10,7,10
	adde	11,8,11
	addze	9,0

	lwz	6,12(4)
	mullw	7,5,6
	mulhwu	8,5,6
	addc	7,7,7
	adde	8,8,8
	addze	9,9

	addc	10,7,10
	adde	11,8,11
	addze	9,9
	stw	10,16(3)

	lwz	5,8(4)
	mullw	7,5,6
	mulhwu	8,5,6
	addc	7,7,7
	adde	8,8,8
	addze	10,0

	addc	11,7,11
	adde	9,8,9
	addze	10,10
	stw	11,20(3)

	mullw	7,6,6
	mulhwu	8,6,6
	addc	9,7,9
	adde	10,8,10

	stw	9,24(3)
	stw	10,28(3)
	blr	
.long	0x00000000








.align	4
bn_sqr_comba8:



















	xor	0,0,0



	lwz	5,0(4)
	mullw	9,5,5
	mulhwu	10,5,5
	stw	9,0(3)

	lwz	6,4(4)
	mullw	7,5,6
	mulhwu	8,5,6

	addc	10,7,10
	adde	11,8,0
	addze	9,0

	addc	10,7,10
	adde	11,8,11
	addze	9,9

	stw	10,4(3)


	mullw	7,6,6
	mulhwu	8,6,6
	addc	11,7,11
	adde	9,8,9
	addze	10,0

	lwz	6,8(4)
	mullw	7,5,6
	mulhwu	8,5,6

	addc	11,7,11
	adde	9,8,9
	addze	10,10

	addc	11,7,11
	adde	9,8,9
	addze	10,10

	stw	11,8(3)

	lwz	6,12(4)
	mullw	7,5,6
	mulhwu	8,5,6

	addc	9,7,9
	adde	10,8,10
	addze	11,0

	addc	9,7,9
	adde	10,8,10
	addze	11,11

	lwz	5,4(4)
	lwz	6,8(4)
	mullw	7,5,6
	mulhwu	8,5,6

	addc	9,7,9
	adde	10,8,10
	addze	11,11

	addc	9,7,9
	adde	10,8,10
	addze	11,11

	stw	9,12(3)

	mullw	7,6,6
	mulhwu	8,6,6

	addc	10,7,10
	adde	11,8,11
	addze	9,0

	lwz	6,12(4)
	mullw	7,5,6
	mulhwu	8,5,6

	addc	10,7,10
	adde	11,8,11
	addze	9,9

	addc	10,7,10
	adde	11,8,11
	addze	9,9

	lwz	5,0(4)
	lwz	6,16(4)
	mullw	7,5,6
	mulhwu	8,5,6

	addc	10,7,10
	adde	11,8,11
	addze	9,9

	addc	10,7,10
	adde	11,8,11
	addze	9,9
	stw	10,16(3)

	lwz	6,20(4)
	mullw	7,5,6
	mulhwu	8,5,6

	addc	11,7,11
	adde	9,8,9
	addze	10,0

	addc	11,7,11
	adde	9,8,9
	addze	10,10

	lwz	5,4(4)
	lwz	6,16(4)
	mullw	7,5,6
	mulhwu	8,5,6

	addc	11,7,11
	adde	9,8,9
	addze	10,10

	addc	11,7,11
	adde	9,8,9
	addze	10,10

	lwz	5,8(4)
	lwz	6,12(4)
	mullw	7,5,6
	mulhwu	8,5,6

	addc	11,7,11
	adde	9,8,9
	addze	10,10

	addc	11,7,11
	adde	9,8,9
	addze	10,10
	stw	11,20(3)

	mullw	7,6,6
	mulhwu	8,6,6
	addc	9,7,9
	adde	10,8,10
	addze	11,0

	lwz	6,16(4)
	mullw	7,5,6
	mulhwu	8,5,6

	addc	9,7,9
	adde	10,8,10
	addze	11,11

	addc	9,7,9
	adde	10,8,10
	addze	11,11

	lwz	5,4(4)
	lwz	6,20(4)
	mullw	7,5,6
	mulhwu	8,5,6

	addc	9,7,9
	adde	10,8,10
	addze	11,11

	addc	9,7,9
	adde	10,8,10
	addze	11,11

	lwz	5,0(4)
	lwz	6,24(4)
	mullw	7,5,6
	mulhwu	8,5,6
	addc	9,7,9
	adde	10,8,10
	addze	11,11
	addc	9,7,9
	adde	10,8,10
	addze	11,11
	stw	9,24(3)

	lwz	6,28(4)
	mullw	7,5,6
	mulhwu	8,5,6

	addc	10,7,10
	adde	11,8,11
	addze	9,0
	addc	10,7,10
	adde	11,8,11
	addze	9,9

	lwz	5,4(4)
	lwz	6,24(4)
	mullw	7,5,6
	mulhwu	8,5,6

	addc	10,7,10
	adde	11,8,11
	addze	9,9
	addc	10,7,10
	adde	11,8,11
	addze	9,9

	lwz	5,8(4)
	lwz	6,20(4)
	mullw	7,5,6
	mulhwu	8,5,6
	addc	10,7,10
	adde	11,8,11
	addze	9,9
	addc	10,7,10
	adde	11,8,11
	addze	9,9

	lwz	5,12(4)
	lwz	6,16(4)
	mullw	7,5,6
	mulhwu	8,5,6

	addc	10,7,10
	adde	11,8,11
	addze	9,9
	addc	10,7,10
	adde	11,8,11
	addze	9,9
	stw	10,28(3)

	mullw	7,6,6
	mulhwu	8,6,6
	addc	11,7,11
	adde	9,8,9
	addze	10,0

	lwz	6,20(4)
	mullw	7,5,6
	mulhwu	8,5,6
	addc	11,7,11
	adde	9,8,9
	addze	10,10
	addc	11,7,11
	adde	9,8,9
	addze	10,10

	lwz	5,8(4)
	lwz	6,24(4)
	mullw	7,5,6
	mulhwu	8,5,6
	addc	11,7,11
	adde	9,8,9
	addze	10,10

	addc	11,7,11
	adde	9,8,9
	addze	10,10

	lwz	5,4(4)
	lwz	6,28(4)
	mullw	7,5,6
	mulhwu	8,5,6
	addc	11,7,11
	adde	9,8,9
	addze	10,10
	addc	11,7,11
	adde	9,8,9
	addze	10,10
	stw	11,32(3)

	lwz	5,8(4)
	mullw	7,5,6
	mulhwu	8,5,6

	addc	9,7,9
	adde	10,8,10
	addze	11,0
	addc	9,7,9
	adde	10,8,10
	addze	11,11

	lwz	5,12(4)
	lwz	6,24(4)
	mullw	7,5,6
	mulhwu	8,5,6
	addc	9,7,9
	adde	10,8,10
	addze	11,11
	addc	9,7,9
	adde	10,8,10
	addze	11,11

	lwz	5,16(4)
	lwz	6,20(4)
	mullw	7,5,6
	mulhwu	8,5,6
	addc	9,7,9
	adde	10,8,10
	addze	11,11
	addc	9,7,9
	adde	10,8,10
	addze	11,11
	stw	9,36(3)

	mullw	7,6,6
	mulhwu	8,6,6
	addc	10,7,10
	adde	11,8,11
	addze	9,0

	lwz	6,24(4)
	mullw	7,5,6
	mulhwu	8,5,6
	addc	10,7,10
	adde	11,8,11
	addze	9,9
	addc	10,7,10
	adde	11,8,11
	addze	9,9

	lwz	5,12(4)
	lwz	6,28(4)
	mullw	7,5,6
	mulhwu	8,5,6
	addc	10,7,10
	adde	11,8,11
	addze	9,9
	addc	10,7,10
	adde	11,8,11
	addze	9,9
	stw	10,40(3)

	lwz	5,16(4)
	mullw	7,5,6
	mulhwu	8,5,6
	addc	11,7,11
	adde	9,8,9
	addze	10,0
	addc	11,7,11
	adde	9,8,9
	addze	10,10

	lwz	5,20(4)
	lwz	6,24(4)
	mullw	7,5,6
	mulhwu	8,5,6
	addc	11,7,11
	adde	9,8,9
	addze	10,10
	addc	11,7,11
	adde	9,8,9
	addze	10,10
	stw	11,44(3)

	mullw	7,6,6
	mulhwu	8,6,6
	addc	9,7,9
	adde	10,8,10
	addze	11,0

	lwz	6,28(4)
	mullw	7,5,6
	mulhwu	8,5,6
	addc	9,7,9
	adde	10,8,10
	addze	11,11
	addc	9,7,9
	adde	10,8,10
	addze	11,11
	stw	9,48(3)


	lwz	5,24(4)
	mullw	7,5,6
	mulhwu	8,5,6
	addc	10,7,10
	adde	11,8,11
	addze	9,0
	addc	10,7,10
	adde	11,8,11
	addze	9,9
	stw	10,52(3)

	mullw	7,6,6
	mulhwu	8,6,6
	addc	11,7,11
	adde	9,8,9
	stw	11,56(3)
	stw	9, 60(3)


	blr	

.long	0x00000000








.align	4
bn_mul_comba4:











	xor	0,0,0

	lwz	6,0(4)
	lwz	7,0(5)
	mullw	10,6,7
	mulhwu	11,6,7
	stw	10,0(3)

	lwz	7,4(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,8,11
	adde	12,9,0
	addze	10,0

	lwz	6, 4(4)
	lwz	7, 0(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,8,11
	adde	12,9,12
	addze	10,10
	stw	11,4(3)

	lwz	6,8(4)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	12,8,12
	adde	10,9,10
	addze	11,0

	lwz	6,4(4)
	lwz	7,4(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	12,8,12
	adde	10,9,10
	addze	11,11

	lwz	6,0(4)
	lwz	7,8(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	12,8,12
	adde	10,9,10
	addze	11,11
	stw	12,8(3)

	lwz	7,12(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	10,8,10
	adde	11,9,11
	addze	12,0

	lwz	6,4(4)
	lwz	7,8(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	10,8,10
	adde	11,9,11
	addze	12,12

	lwz	6,8(4)
	lwz	7,4(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	10,8,10
	adde	11,9,11
	addze	12,12

	lwz	6,12(4)
	lwz	7,0(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	10,8,10
	adde	11,9,11
	addze	12,12
	stw	10,12(3)

	lwz	7,4(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,8,11
	adde	12,9,12
	addze	10,0

	lwz	6,8(4)
	lwz	7,8(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,8,11
	adde	12,9,12
	addze	10,10

	lwz	6,4(4)
	lwz	7,12(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,8,11
	adde	12,9,12
	addze	10,10
	stw	11,16(3)

	lwz	6,8(4)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	12,8,12
	adde	10,9,10
	addze	11,0

	lwz	6,12(4)
	lwz	7,8(4)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	12,8,12
	adde	10,9,10
	addze	11,11
	stw	12,20(3)

	lwz	7,12(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	10,8,10
	adde	11,9,11

	stw	10,24(3)
	stw	11,28(3)
	blr	
.long	0x00000000








.align	4
bn_mul_comba8:











	xor	0,0,0


	lwz	6,0(4)
	lwz	7,0(5)
	mullw	10,6,7
	mulhwu	11,6,7
	stw	10,0(3)

	lwz	7,4(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,11,8
	addze	12,9
	addze	10,0

	lwz	6,4(4)
	lwz	7,0(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10
	stw	11,4(3)

	lwz	6,8(4)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,0

	lwz	6,4(4)
	lwz	7,4(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11

	lwz	6,0(4)
	lwz	7,8(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11
	stw	12,8(3)

	lwz	7,12(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,0

	lwz	6,4(4)
	lwz	7,8(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12


	lwz	6,8(4)
	lwz	7,4(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12

	lwz	6,12(4)
	lwz	7,0(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12
	stw	10,12(3)

	lwz	6,16(4)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,0

	lwz	6,12(4)
	lwz	7,4(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10

	lwz	6,8(4)
	lwz	7,8(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10

	lwz	6,4(4)
	lwz	7,12(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10

	lwz	6,0(4)
	lwz	7,16(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10
	stw	11,16(3)

	lwz	7,20(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,0

	lwz	6,4(4)
	lwz	7,16(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11

	lwz	6,8(4)
	lwz	7,12(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11

	lwz	6,12(4)
	lwz	7,8(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11

	lwz	6,16(4)
	lwz	7,4(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11

	lwz	6,20(4)
	lwz	7,0(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11
	stw	12,20(3)

	lwz	6,24(4)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,0

	lwz	6,20(4)
	lwz	7,4(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12

	lwz	6,16(4)
	lwz	7,8(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12

	lwz	6,12(4)
	lwz	7,12(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12

	lwz	6,8(4)
	lwz	7,16(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12

	lwz	6,4(4)
	lwz	7,20(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12

	lwz	6,0(4)
	lwz	7,24(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12
	stw	10,24(3)

	lwz	7,28(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,0

	lwz	6,4(4)
	lwz	7,24(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10

	lwz	6,8(4)
	lwz	7,20(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10

	lwz	6,12(4)
	lwz	7,16(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10

	lwz	6,16(4)
	lwz	7,12(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10

	lwz	6,20(4)
	lwz	7,8(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10

	lwz	6,24(4)
	lwz	7,4(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10

	lwz	6,28(4)
	lwz	7,0(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10
	stw	11,28(3)

	lwz	7,4(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,0

	lwz	6,24(4)
	lwz	7,8(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11

	lwz	6,20(4)
	lwz	7,12(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11

	lwz	6,16(4)
	lwz	7,16(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11

	lwz	6,12(4)
	lwz	7,20(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11

	lwz	6,8(4)
	lwz	7,24(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11

	lwz	6,4(4)
	lwz	7,28(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11
	stw	12,32(3)

	lwz	6,8(4)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,0

	lwz	6,12(4)
	lwz	7,24(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12

	lwz	6,16(4)
	lwz	7,20(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12

	lwz	6,20(4)
	lwz	7,16(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12

	lwz	6,24(4)
	lwz	7,12(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12

	lwz	6,28(4)
	lwz	7,8(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12
	stw	10,36(3)

	lwz	7,12(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,0

	lwz	6,24(4)
	lwz	7,16(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10

	lwz	6,20(4)
	lwz	7,20(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10

	lwz	6,16(4)
	lwz	7,24(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10

	lwz	6,12(4)
	lwz	7,28(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10
	stw	11,40(3)

	lwz	6,16(4)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,0

	lwz	6,20(4)
	lwz	7,24(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11

	lwz	6,24(4)
	lwz	7,20(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11

	lwz	6,28(4)
	lwz	7,16(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11
	stw	12,44(3)

	lwz	7,20(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,0

	lwz	6,24(4)
	lwz	7,24(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12

	lwz	6,20(4)
	lwz	7,28(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12
	stw	10,48(3)

	lwz	6,24(4)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,0

	lwz	6,28(4)
	lwz	7,24(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10
	stw	11,52(3)

	lwz	7,28(5)
	mullw	8,6,7
	mulhwu	9,6,7
	addc	12,12,8
	adde	10,10,9
	stw	12,56(3)
	stw	10,60(3)
	blr	
.long	0x00000000








.align	4
bn_sub_words:













	xor	0,0,0



	subfc.	7,0,6


	beq	.Lppcasm_sub_adios
	addi	4,4,-4
	addi	3,3,-4
	addi	5,5,-4
	mtctr	6
.Lppcasm_sub_mainloop:
	lwzu	7,4(4)
	lwzu	8,4(5)
	subfe	6,8,7


	stwu	6,4(3)
	bdnz+	.Lppcasm_sub_mainloop
.Lppcasm_sub_adios:
	subfze	3,0
	andi.	3,3,1
	blr	
.long	0x00000000









.align	4
bn_add_words:













	xor	0,0,0



	addic.	6,6,0
	beq	.Lppcasm_add_adios
	addi	4,4,-4
	addi	3,3,-4
	addi	5,5,-4
	mtctr	6
.Lppcasm_add_mainloop:
	lwzu	7,4(4)
	lwzu	8,4(5)
	adde	8,7,8
	stwu	8,4(3)
	bdnz+	.Lppcasm_add_mainloop
.Lppcasm_add_adios:
	addze	3,0
	blr	
.long	0x00000000








.align	4
bn_div_words:











	cmplwi	0,5,0
	bne	.Lppcasm_div1
	li	3,-1
	blr	
.Lppcasm_div1:
	xor	0,0,0
	li	8,32
	cntlzw.	7,5
	beq	.Lppcasm_div2
	subf	8,7,8
	srw.	9,3,8
	tw	16,9,0
.Lppcasm_div2:
	.long	0x7c032840
	blt	.Lppcasm_div3
	subf	3,5,3
.Lppcasm_div3:
	cmpi	0,0,7,0
	beq	.Lppcasm_div4
	slw	3,3,7
	srw	8,4,8
	slw	5,5,7
	or	3,3,8
	slw	4,4,7
.Lppcasm_div4:
	srwi	9,5,16


	li	6,2
	mtctr	6
.Lppcasm_divouterloop:
	srwi	8,3,16
	srwi	11,4,16

	.long	0x7c084840
	bne	.Lppcasm_div5

	li	8,-1
	clrlwi	8,8,16
	b	.Lppcasm_div6
.Lppcasm_div5:
	divwu	8,3,9
.Lppcasm_div6:
	mullw	12,9,8
	clrlwi	10,5,16
	mullw	6,8,10

.Lppcasm_divinnerloop:
	subf	10,12,3
	srwi	7,10,16
	addic.	7,7,0



	slwi	7,10,16
	or	7,7,11
	.long	0x7c863840
	bne	.Lppcasm_divinnerexit
	ble	1,.Lppcasm_divinnerexit
	addi	8,8,-1
	subf	12,9,12
	clrlwi	10,5,16
	subf	6,10,6
	b	.Lppcasm_divinnerloop
.Lppcasm_divinnerexit:
	srwi	10,6,16
	slwi	11,6,16
	.long	0x7c845840
	add	12,12,10
	bge	1,.Lppcasm_div7
	addi	12,12,1
.Lppcasm_div7:
	subf	11,11,4
	.long	0x7c836040
	bge	1,.Lppcasm_div8
	addi	8,8,-1
	add	3,5,3
.Lppcasm_div8:
	subf	12,12,3
	slwi	4,11,16



	insrwi	11,12,16,16
	rotlwi	3,11,16
	bdz	.Lppcasm_div9
	slwi	0,8,16
	b	.Lppcasm_divouterloop
.Lppcasm_div9:
	or	3,8,0
	blr	
.long	0x00000000







.align	4
bn_sqr_words:














	addic.	5,5,0
	beq	.Lppcasm_sqr_adios
	addi	4,4,-4
	addi	3,3,-4
	mtctr	5
.Lppcasm_sqr_mainloop:

	lwzu	6,4(4)
	mullw	7,6,6
	mulhwu	8,6,6
	stwu	7,4(3)
	stwu	8,4(3)
	bdnz+	.Lppcasm_sqr_mainloop
.Lppcasm_sqr_adios:
	blr	
.long	0x00000000









.align	4
bn_mul_words:







	xor	0,0,0
	xor	12,12,12
	rlwinm.	7,5,30,2,31
	beq	.Lppcasm_mw_REM
	mtctr	7
.Lppcasm_mw_LOOP:

	lwz	8,0(4)
	mullw	9,6,8
	mulhwu	10,6,8
	addc	9,9,12




	stw	9,0(3)

	lwz	8,4(4)
	mullw	11,6,8
	mulhwu	12,6,8
	adde	11,11,10

	stw	11,4(3)

	lwz	8,8(4)
	mullw	9,6,8
	mulhwu	10,6,8
	adde	9,9,12

	stw	9,8(3)

	lwz	8,12(4)
	mullw	11,6,8
	mulhwu	12,6,8
	adde	11,11,10
	addze	12,12

	stw	11,12(3)

	addi	3,3,16
	addi	4,4,16
	bdnz+	.Lppcasm_mw_LOOP

.Lppcasm_mw_REM:
	andi.	5,5,0x3
	beq	.Lppcasm_mw_OVER

	lwz	8,0(4)
	mullw	9,6,8
	mulhwu	10,6,8
	addc	9,9,12
	addze	10,10
	stw	9,0(3)
	addi	12,10,0

	addi	5,5,-1
	cmpli	0,0,5,0
	beq	.Lppcasm_mw_OVER



	lwz	8,4(4)
	mullw	9,6,8
	mulhwu	10,6,8
	addc	9,9,12
	addze	10,10
	stw	9,4(3)
	addi	12,10,0

	addi	5,5,-1
	cmpli	0,0,5,0
	beq	.Lppcasm_mw_OVER


	lwz	8,8(4)
	mullw	9,6,8
	mulhwu	10,6,8
	addc	9,9,12
	addze	10,10
	stw	9,8(3)
	addi	12,10,0

.Lppcasm_mw_OVER:
	addi	3,12,0
	blr	
.long	0x00000000








.align	4
bn_mul_add_words:










	xor	0,0,0
	xor	12,12,12
	rlwinm.	7,5,30,2,31
	beq	.Lppcasm_maw_leftover
	mtctr	7
.Lppcasm_maw_mainloop:

	lwz	8,0(4)
	lwz	11,0(3)
	mullw	9,6,8
	mulhwu	10,6,8
	addc	9,9,12
	addze	10,10
	addc	9,9,11






	stw	9,0(3)


	lwz	8,4(4)
	lwz	9,4(3)
	mullw	11,6,8
	mulhwu	12,6,8
	adde	11,11,10
	addze	12,12
	addc	11,11,9

	stw	11,4(3)


	lwz	8,8(4)
	mullw	9,6,8
	lwz	11,8(3)
	mulhwu	10,6,8
	adde	9,9,12
	addze	10,10
	addc	9,9,11

	stw	9,8(3)


	lwz	8,12(4)
	mullw	11,6,8
	lwz	9,12(3)
	mulhwu	12,6,8
	adde	11,11,10
	addze	12,12
	addc	11,11,9
	addze	12,12
	stw	11,12(3)
	addi	3,3,16
	addi	4,4,16
	bdnz+	.Lppcasm_maw_mainloop

.Lppcasm_maw_leftover:
	andi.	5,5,0x3
	beq	.Lppcasm_maw_adios
	addi	3,3,-4
	addi	4,4,-4

	mtctr	5
	lwzu	8,4(4)
	mullw	9,6,8
	mulhwu	10,6,8
	lwzu	11,4(3)
	addc	9,9,11
	addze	10,10
	addc	9,9,12
	addze	12,10
	stw	9,0(3)

	bdz	.Lppcasm_maw_adios

	lwzu	8,4(4)
	mullw	9,6,8
	mulhwu	10,6,8
	lwzu	11,4(3)
	addc	9,9,11
	addze	10,10
	addc	9,9,12
	addze	12,10
	stw	9,0(3)

	bdz	.Lppcasm_maw_adios

	lwzu	8,4(4)
	mullw	9,6,8
	mulhwu	10,6,8
	lwzu	11,4(3)
	addc	9,9,11
	addze	10,10
	addc	9,9,12
	addze	12,10
	stw	9,0(3)

.Lppcasm_maw_adios:
	addi	3,12,0
	blr	
.long	0x00000000
.align	4