Sat Oct 15 12:19:02 2016 UTC ()
Adapt from powerpc(32)


(christos)
diff -r0 -r1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/Makefile
diff -r0 -r1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/aes-ppc.S
diff -r0 -r1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/aes.inc
diff -r0 -r1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/aesp8-ppc.S
diff -r0 -r1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/bn.inc
diff -r0 -r1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/crypto.inc
diff -r0 -r1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/ghashp8-ppc.S
diff -r0 -r1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/modes.inc
diff -r0 -r1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/ppc-mont.S
diff -r0 -r1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/ppc.S
diff -r0 -r1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/ppc64-mont.S
diff -r0 -r1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/ppccpuid.S
diff -r0 -r1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/sha.inc
diff -r0 -r1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/sha1-ppc.S
diff -r0 -r1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/sha256-ppc.S
diff -r0 -r1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/sha256p8-ppc.S
diff -r0 -r1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/sha512-ppc.S
diff -r0 -r1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/sha512p8-ppc.S
diff -r0 -r1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/vpaes-ppc.S
diff -r1.1 -r1.2 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/des.inc

File Added: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/Makefile
#	$NetBSD: Makefile,v 1.1 2016/10/15 12:19:02 christos Exp $

BITS=64
.include "${.CURDIR}/../powerpc/Makefile"

File Added: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/aes-ppc.S
.machine	"any"
.text

.align	7
.LAES_Te:
	mflr	0
	bcl	20,31,$+4
	mflr	3
	addi	3,3,120
	mtlr	0
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0
.space	28
.LAES_Td:
	mflr	0
	bcl	20,31,$+4
	mflr	3
	addi	3,3,2360
	mtlr	0
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0
.space	28
.long	0xc66363a5,0xc66363a5
.long	0xf87c7c84,0xf87c7c84
.long	0xee777799,0xee777799
.long	0xf67b7b8d,0xf67b7b8d
.long	0xfff2f20d,0xfff2f20d
.long	0xd66b6bbd,0xd66b6bbd
.long	0xde6f6fb1,0xde6f6fb1
.long	0x91c5c554,0x91c5c554
.long	0x60303050,0x60303050
.long	0x02010103,0x02010103
.long	0xce6767a9,0xce6767a9
.long	0x562b2b7d,0x562b2b7d
.long	0xe7fefe19,0xe7fefe19
.long	0xb5d7d762,0xb5d7d762
.long	0x4dababe6,0x4dababe6
.long	0xec76769a,0xec76769a
.long	0x8fcaca45,0x8fcaca45
.long	0x1f82829d,0x1f82829d
.long	0x89c9c940,0x89c9c940
.long	0xfa7d7d87,0xfa7d7d87
.long	0xeffafa15,0xeffafa15
.long	0xb25959eb,0xb25959eb
.long	0x8e4747c9,0x8e4747c9
.long	0xfbf0f00b,0xfbf0f00b
.long	0x41adadec,0x41adadec
.long	0xb3d4d467,0xb3d4d467
.long	0x5fa2a2fd,0x5fa2a2fd
.long	0x45afafea,0x45afafea
.long	0x239c9cbf,0x239c9cbf
.long	0x53a4a4f7,0x53a4a4f7
.long	0xe4727296,0xe4727296
.long	0x9bc0c05b,0x9bc0c05b
.long	0x75b7b7c2,0x75b7b7c2
.long	0xe1fdfd1c,0xe1fdfd1c
.long	0x3d9393ae,0x3d9393ae
.long	0x4c26266a,0x4c26266a
.long	0x6c36365a,0x6c36365a
.long	0x7e3f3f41,0x7e3f3f41
.long	0xf5f7f702,0xf5f7f702
.long	0x83cccc4f,0x83cccc4f
.long	0x6834345c,0x6834345c
.long	0x51a5a5f4,0x51a5a5f4
.long	0xd1e5e534,0xd1e5e534
.long	0xf9f1f108,0xf9f1f108
.long	0xe2717193,0xe2717193
.long	0xabd8d873,0xabd8d873
.long	0x62313153,0x62313153
.long	0x2a15153f,0x2a15153f
.long	0x0804040c,0x0804040c
.long	0x95c7c752,0x95c7c752
.long	0x46232365,0x46232365
.long	0x9dc3c35e,0x9dc3c35e
.long	0x30181828,0x30181828
.long	0x379696a1,0x379696a1
.long	0x0a05050f,0x0a05050f
.long	0x2f9a9ab5,0x2f9a9ab5
.long	0x0e070709,0x0e070709
.long	0x24121236,0x24121236
.long	0x1b80809b,0x1b80809b
.long	0xdfe2e23d,0xdfe2e23d
.long	0xcdebeb26,0xcdebeb26
.long	0x4e272769,0x4e272769
.long	0x7fb2b2cd,0x7fb2b2cd
.long	0xea75759f,0xea75759f
.long	0x1209091b,0x1209091b
.long	0x1d83839e,0x1d83839e
.long	0x582c2c74,0x582c2c74
.long	0x341a1a2e,0x341a1a2e
.long	0x361b1b2d,0x361b1b2d
.long	0xdc6e6eb2,0xdc6e6eb2
.long	0xb45a5aee,0xb45a5aee
.long	0x5ba0a0fb,0x5ba0a0fb
.long	0xa45252f6,0xa45252f6
.long	0x763b3b4d,0x763b3b4d
.long	0xb7d6d661,0xb7d6d661
.long	0x7db3b3ce,0x7db3b3ce
.long	0x5229297b,0x5229297b
.long	0xdde3e33e,0xdde3e33e
.long	0x5e2f2f71,0x5e2f2f71
.long	0x13848497,0x13848497
.long	0xa65353f5,0xa65353f5
.long	0xb9d1d168,0xb9d1d168
.long	0x00000000,0x00000000
.long	0xc1eded2c,0xc1eded2c
.long	0x40202060,0x40202060
.long	0xe3fcfc1f,0xe3fcfc1f
.long	0x79b1b1c8,0x79b1b1c8
.long	0xb65b5bed,0xb65b5bed
.long	0xd46a6abe,0xd46a6abe
.long	0x8dcbcb46,0x8dcbcb46
.long	0x67bebed9,0x67bebed9
.long	0x7239394b,0x7239394b
.long	0x944a4ade,0x944a4ade
.long	0x984c4cd4,0x984c4cd4
.long	0xb05858e8,0xb05858e8
.long	0x85cfcf4a,0x85cfcf4a
.long	0xbbd0d06b,0xbbd0d06b
.long	0xc5efef2a,0xc5efef2a
.long	0x4faaaae5,0x4faaaae5
.long	0xedfbfb16,0xedfbfb16
.long	0x864343c5,0x864343c5
.long	0x9a4d4dd7,0x9a4d4dd7
.long	0x66333355,0x66333355
.long	0x11858594,0x11858594
.long	0x8a4545cf,0x8a4545cf
.long	0xe9f9f910,0xe9f9f910
.long	0x04020206,0x04020206
.long	0xfe7f7f81,0xfe7f7f81
.long	0xa05050f0,0xa05050f0
.long	0x783c3c44,0x783c3c44
.long	0x259f9fba,0x259f9fba
.long	0x4ba8a8e3,0x4ba8a8e3
.long	0xa25151f3,0xa25151f3
.long	0x5da3a3fe,0x5da3a3fe
.long	0x804040c0,0x804040c0
.long	0x058f8f8a,0x058f8f8a
.long	0x3f9292ad,0x3f9292ad
.long	0x219d9dbc,0x219d9dbc
.long	0x70383848,0x70383848
.long	0xf1f5f504,0xf1f5f504
.long	0x63bcbcdf,0x63bcbcdf
.long	0x77b6b6c1,0x77b6b6c1
.long	0xafdada75,0xafdada75
.long	0x42212163,0x42212163
.long	0x20101030,0x20101030
.long	0xe5ffff1a,0xe5ffff1a
.long	0xfdf3f30e,0xfdf3f30e
.long	0xbfd2d26d,0xbfd2d26d
.long	0x81cdcd4c,0x81cdcd4c
.long	0x180c0c14,0x180c0c14
.long	0x26131335,0x26131335
.long	0xc3ecec2f,0xc3ecec2f
.long	0xbe5f5fe1,0xbe5f5fe1
.long	0x359797a2,0x359797a2
.long	0x884444cc,0x884444cc
.long	0x2e171739,0x2e171739
.long	0x93c4c457,0x93c4c457
.long	0x55a7a7f2,0x55a7a7f2
.long	0xfc7e7e82,0xfc7e7e82
.long	0x7a3d3d47,0x7a3d3d47
.long	0xc86464ac,0xc86464ac
.long	0xba5d5de7,0xba5d5de7
.long	0x3219192b,0x3219192b
.long	0xe6737395,0xe6737395
.long	0xc06060a0,0xc06060a0
.long	0x19818198,0x19818198
.long	0x9e4f4fd1,0x9e4f4fd1
.long	0xa3dcdc7f,0xa3dcdc7f
.long	0x44222266,0x44222266
.long	0x542a2a7e,0x542a2a7e
.long	0x3b9090ab,0x3b9090ab
.long	0x0b888883,0x0b888883
.long	0x8c4646ca,0x8c4646ca
.long	0xc7eeee29,0xc7eeee29
.long	0x6bb8b8d3,0x6bb8b8d3
.long	0x2814143c,0x2814143c
.long	0xa7dede79,0xa7dede79
.long	0xbc5e5ee2,0xbc5e5ee2
.long	0x160b0b1d,0x160b0b1d
.long	0xaddbdb76,0xaddbdb76
.long	0xdbe0e03b,0xdbe0e03b
.long	0x64323256,0x64323256
.long	0x743a3a4e,0x743a3a4e
.long	0x140a0a1e,0x140a0a1e
.long	0x924949db,0x924949db
.long	0x0c06060a,0x0c06060a
.long	0x4824246c,0x4824246c
.long	0xb85c5ce4,0xb85c5ce4
.long	0x9fc2c25d,0x9fc2c25d
.long	0xbdd3d36e,0xbdd3d36e
.long	0x43acacef,0x43acacef
.long	0xc46262a6,0xc46262a6
.long	0x399191a8,0x399191a8
.long	0x319595a4,0x319595a4
.long	0xd3e4e437,0xd3e4e437
.long	0xf279798b,0xf279798b
.long	0xd5e7e732,0xd5e7e732
.long	0x8bc8c843,0x8bc8c843
.long	0x6e373759,0x6e373759
.long	0xda6d6db7,0xda6d6db7
.long	0x018d8d8c,0x018d8d8c
.long	0xb1d5d564,0xb1d5d564
.long	0x9c4e4ed2,0x9c4e4ed2
.long	0x49a9a9e0,0x49a9a9e0
.long	0xd86c6cb4,0xd86c6cb4
.long	0xac5656fa,0xac5656fa
.long	0xf3f4f407,0xf3f4f407
.long	0xcfeaea25,0xcfeaea25
.long	0xca6565af,0xca6565af
.long	0xf47a7a8e,0xf47a7a8e
.long	0x47aeaee9,0x47aeaee9
.long	0x10080818,0x10080818
.long	0x6fbabad5,0x6fbabad5
.long	0xf0787888,0xf0787888
.long	0x4a25256f,0x4a25256f
.long	0x5c2e2e72,0x5c2e2e72
.long	0x381c1c24,0x381c1c24
.long	0x57a6a6f1,0x57a6a6f1
.long	0x73b4b4c7,0x73b4b4c7
.long	0x97c6c651,0x97c6c651
.long	0xcbe8e823,0xcbe8e823
.long	0xa1dddd7c,0xa1dddd7c
.long	0xe874749c,0xe874749c
.long	0x3e1f1f21,0x3e1f1f21
.long	0x964b4bdd,0x964b4bdd
.long	0x61bdbddc,0x61bdbddc
.long	0x0d8b8b86,0x0d8b8b86
.long	0x0f8a8a85,0x0f8a8a85
.long	0xe0707090,0xe0707090
.long	0x7c3e3e42,0x7c3e3e42
.long	0x71b5b5c4,0x71b5b5c4
.long	0xcc6666aa,0xcc6666aa
.long	0x904848d8,0x904848d8
.long	0x06030305,0x06030305
.long	0xf7f6f601,0xf7f6f601
.long	0x1c0e0e12,0x1c0e0e12
.long	0xc26161a3,0xc26161a3
.long	0x6a35355f,0x6a35355f
.long	0xae5757f9,0xae5757f9
.long	0x69b9b9d0,0x69b9b9d0
.long	0x17868691,0x17868691
.long	0x99c1c158,0x99c1c158
.long	0x3a1d1d27,0x3a1d1d27
.long	0x279e9eb9,0x279e9eb9
.long	0xd9e1e138,0xd9e1e138
.long	0xebf8f813,0xebf8f813
.long	0x2b9898b3,0x2b9898b3
.long	0x22111133,0x22111133
.long	0xd26969bb,0xd26969bb
.long	0xa9d9d970,0xa9d9d970
.long	0x078e8e89,0x078e8e89
.long	0x339494a7,0x339494a7
.long	0x2d9b9bb6,0x2d9b9bb6
.long	0x3c1e1e22,0x3c1e1e22
.long	0x15878792,0x15878792
.long	0xc9e9e920,0xc9e9e920
.long	0x87cece49,0x87cece49
.long	0xaa5555ff,0xaa5555ff
.long	0x50282878,0x50282878
.long	0xa5dfdf7a,0xa5dfdf7a
.long	0x038c8c8f,0x038c8c8f
.long	0x59a1a1f8,0x59a1a1f8
.long	0x09898980,0x09898980
.long	0x1a0d0d17,0x1a0d0d17
.long	0x65bfbfda,0x65bfbfda
.long	0xd7e6e631,0xd7e6e631
.long	0x844242c6,0x844242c6
.long	0xd06868b8,0xd06868b8
.long	0x824141c3,0x824141c3
.long	0x299999b0,0x299999b0
.long	0x5a2d2d77,0x5a2d2d77
.long	0x1e0f0f11,0x1e0f0f11
.long	0x7bb0b0cb,0x7bb0b0cb
.long	0xa85454fc,0xa85454fc
.long	0x6dbbbbd6,0x6dbbbbd6
.long	0x2c16163a,0x2c16163a
.byte	0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5
.byte	0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76
.byte	0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0
.byte	0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0
.byte	0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc
.byte	0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15
.byte	0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a
.byte	0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75
.byte	0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0
.byte	0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84
.byte	0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b
.byte	0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf
.byte	0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85
.byte	0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8
.byte	0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5
.byte	0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2
.byte	0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17
.byte	0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73
.byte	0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88
.byte	0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb
.byte	0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c
.byte	0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79
.byte	0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9
.byte	0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08
.byte	0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6
.byte	0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a
.byte	0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e
.byte	0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e
.byte	0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94
.byte	0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf
.byte	0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68
.byte	0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16
.long	0x51f4a750,0x51f4a750
.long	0x7e416553,0x7e416553
.long	0x1a17a4c3,0x1a17a4c3
.long	0x3a275e96,0x3a275e96
.long	0x3bab6bcb,0x3bab6bcb
.long	0x1f9d45f1,0x1f9d45f1
.long	0xacfa58ab,0xacfa58ab
.long	0x4be30393,0x4be30393
.long	0x2030fa55,0x2030fa55
.long	0xad766df6,0xad766df6
.long	0x88cc7691,0x88cc7691
.long	0xf5024c25,0xf5024c25
.long	0x4fe5d7fc,0x4fe5d7fc
.long	0xc52acbd7,0xc52acbd7
.long	0x26354480,0x26354480
.long	0xb562a38f,0xb562a38f
.long	0xdeb15a49,0xdeb15a49
.long	0x25ba1b67,0x25ba1b67
.long	0x45ea0e98,0x45ea0e98
.long	0x5dfec0e1,0x5dfec0e1
.long	0xc32f7502,0xc32f7502
.long	0x814cf012,0x814cf012
.long	0x8d4697a3,0x8d4697a3
.long	0x6bd3f9c6,0x6bd3f9c6
.long	0x038f5fe7,0x038f5fe7
.long	0x15929c95,0x15929c95
.long	0xbf6d7aeb,0xbf6d7aeb
.long	0x955259da,0x955259da
.long	0xd4be832d,0xd4be832d
.long	0x587421d3,0x587421d3
.long	0x49e06929,0x49e06929
.long	0x8ec9c844,0x8ec9c844
.long	0x75c2896a,0x75c2896a
.long	0xf48e7978,0xf48e7978
.long	0x99583e6b,0x99583e6b
.long	0x27b971dd,0x27b971dd
.long	0xbee14fb6,0xbee14fb6
.long	0xf088ad17,0xf088ad17
.long	0xc920ac66,0xc920ac66
.long	0x7dce3ab4,0x7dce3ab4
.long	0x63df4a18,0x63df4a18
.long	0xe51a3182,0xe51a3182
.long	0x97513360,0x97513360
.long	0x62537f45,0x62537f45
.long	0xb16477e0,0xb16477e0
.long	0xbb6bae84,0xbb6bae84
.long	0xfe81a01c,0xfe81a01c
.long	0xf9082b94,0xf9082b94
.long	0x70486858,0x70486858
.long	0x8f45fd19,0x8f45fd19
.long	0x94de6c87,0x94de6c87
.long	0x527bf8b7,0x527bf8b7
.long	0xab73d323,0xab73d323
.long	0x724b02e2,0x724b02e2
.long	0xe31f8f57,0xe31f8f57
.long	0x6655ab2a,0x6655ab2a
.long	0xb2eb2807,0xb2eb2807
.long	0x2fb5c203,0x2fb5c203
.long	0x86c57b9a,0x86c57b9a
.long	0xd33708a5,0xd33708a5
.long	0x302887f2,0x302887f2
.long	0x23bfa5b2,0x23bfa5b2
.long	0x02036aba,0x02036aba
.long	0xed16825c,0xed16825c
.long	0x8acf1c2b,0x8acf1c2b
.long	0xa779b492,0xa779b492
.long	0xf307f2f0,0xf307f2f0
.long	0x4e69e2a1,0x4e69e2a1
.long	0x65daf4cd,0x65daf4cd
.long	0x0605bed5,0x0605bed5
.long	0xd134621f,0xd134621f
.long	0xc4a6fe8a,0xc4a6fe8a
.long	0x342e539d,0x342e539d
.long	0xa2f355a0,0xa2f355a0
.long	0x058ae132,0x058ae132
.long	0xa4f6eb75,0xa4f6eb75
.long	0x0b83ec39,0x0b83ec39
.long	0x4060efaa,0x4060efaa
.long	0x5e719f06,0x5e719f06
.long	0xbd6e1051,0xbd6e1051
.long	0x3e218af9,0x3e218af9
.long	0x96dd063d,0x96dd063d
.long	0xdd3e05ae,0xdd3e05ae
.long	0x4de6bd46,0x4de6bd46
.long	0x91548db5,0x91548db5
.long	0x71c45d05,0x71c45d05
.long	0x0406d46f,0x0406d46f
.long	0x605015ff,0x605015ff
.long	0x1998fb24,0x1998fb24
.long	0xd6bde997,0xd6bde997
.long	0x894043cc,0x894043cc
.long	0x67d99e77,0x67d99e77
.long	0xb0e842bd,0xb0e842bd
.long	0x07898b88,0x07898b88
.long	0xe7195b38,0xe7195b38
.long	0x79c8eedb,0x79c8eedb
.long	0xa17c0a47,0xa17c0a47
.long	0x7c420fe9,0x7c420fe9
.long	0xf8841ec9,0xf8841ec9
.long	0x00000000,0x00000000
.long	0x09808683,0x09808683
.long	0x322bed48,0x322bed48
.long	0x1e1170ac,0x1e1170ac
.long	0x6c5a724e,0x6c5a724e
.long	0xfd0efffb,0xfd0efffb
.long	0x0f853856,0x0f853856
.long	0x3daed51e,0x3daed51e
.long	0x362d3927,0x362d3927
.long	0x0a0fd964,0x0a0fd964
.long	0x685ca621,0x685ca621
.long	0x9b5b54d1,0x9b5b54d1
.long	0x24362e3a,0x24362e3a
.long	0x0c0a67b1,0x0c0a67b1
.long	0x9357e70f,0x9357e70f
.long	0xb4ee96d2,0xb4ee96d2
.long	0x1b9b919e,0x1b9b919e
.long	0x80c0c54f,0x80c0c54f
.long	0x61dc20a2,0x61dc20a2
.long	0x5a774b69,0x5a774b69
.long	0x1c121a16,0x1c121a16
.long	0xe293ba0a,0xe293ba0a
.long	0xc0a02ae5,0xc0a02ae5
.long	0x3c22e043,0x3c22e043
.long	0x121b171d,0x121b171d
.long	0x0e090d0b,0x0e090d0b
.long	0xf28bc7ad,0xf28bc7ad
.long	0x2db6a8b9,0x2db6a8b9
.long	0x141ea9c8,0x141ea9c8
.long	0x57f11985,0x57f11985
.long	0xaf75074c,0xaf75074c
.long	0xee99ddbb,0xee99ddbb
.long	0xa37f60fd,0xa37f60fd
.long	0xf701269f,0xf701269f
.long	0x5c72f5bc,0x5c72f5bc
.long	0x44663bc5,0x44663bc5
.long	0x5bfb7e34,0x5bfb7e34
.long	0x8b432976,0x8b432976
.long	0xcb23c6dc,0xcb23c6dc
.long	0xb6edfc68,0xb6edfc68
.long	0xb8e4f163,0xb8e4f163
.long	0xd731dcca,0xd731dcca
.long	0x42638510,0x42638510
.long	0x13972240,0x13972240
.long	0x84c61120,0x84c61120
.long	0x854a247d,0x854a247d
.long	0xd2bb3df8,0xd2bb3df8
.long	0xaef93211,0xaef93211
.long	0xc729a16d,0xc729a16d
.long	0x1d9e2f4b,0x1d9e2f4b
.long	0xdcb230f3,0xdcb230f3
.long	0x0d8652ec,0x0d8652ec
.long	0x77c1e3d0,0x77c1e3d0
.long	0x2bb3166c,0x2bb3166c
.long	0xa970b999,0xa970b999
.long	0x119448fa,0x119448fa
.long	0x47e96422,0x47e96422
.long	0xa8fc8cc4,0xa8fc8cc4
.long	0xa0f03f1a,0xa0f03f1a
.long	0x567d2cd8,0x567d2cd8
.long	0x223390ef,0x223390ef
.long	0x87494ec7,0x87494ec7
.long	0xd938d1c1,0xd938d1c1
.long	0x8ccaa2fe,0x8ccaa2fe
.long	0x98d40b36,0x98d40b36
.long	0xa6f581cf,0xa6f581cf
.long	0xa57ade28,0xa57ade28
.long	0xdab78e26,0xdab78e26
.long	0x3fadbfa4,0x3fadbfa4
.long	0x2c3a9de4,0x2c3a9de4
.long	0x5078920d,0x5078920d
.long	0x6a5fcc9b,0x6a5fcc9b
.long	0x547e4662,0x547e4662
.long	0xf68d13c2,0xf68d13c2
.long	0x90d8b8e8,0x90d8b8e8
.long	0x2e39f75e,0x2e39f75e
.long	0x82c3aff5,0x82c3aff5
.long	0x9f5d80be,0x9f5d80be
.long	0x69d0937c,0x69d0937c
.long	0x6fd52da9,0x6fd52da9
.long	0xcf2512b3,0xcf2512b3
.long	0xc8ac993b,0xc8ac993b
.long	0x10187da7,0x10187da7
.long	0xe89c636e,0xe89c636e
.long	0xdb3bbb7b,0xdb3bbb7b
.long	0xcd267809,0xcd267809
.long	0x6e5918f4,0x6e5918f4
.long	0xec9ab701,0xec9ab701
.long	0x834f9aa8,0x834f9aa8
.long	0xe6956e65,0xe6956e65
.long	0xaaffe67e,0xaaffe67e
.long	0x21bccf08,0x21bccf08
.long	0xef15e8e6,0xef15e8e6
.long	0xbae79bd9,0xbae79bd9
.long	0x4a6f36ce,0x4a6f36ce
.long	0xea9f09d4,0xea9f09d4
.long	0x29b07cd6,0x29b07cd6
.long	0x31a4b2af,0x31a4b2af
.long	0x2a3f2331,0x2a3f2331
.long	0xc6a59430,0xc6a59430
.long	0x35a266c0,0x35a266c0
.long	0x744ebc37,0x744ebc37
.long	0xfc82caa6,0xfc82caa6
.long	0xe090d0b0,0xe090d0b0
.long	0x33a7d815,0x33a7d815
.long	0xf104984a,0xf104984a
.long	0x41ecdaf7,0x41ecdaf7
.long	0x7fcd500e,0x7fcd500e
.long	0x1791f62f,0x1791f62f
.long	0x764dd68d,0x764dd68d
.long	0x43efb04d,0x43efb04d
.long	0xccaa4d54,0xccaa4d54
.long	0xe49604df,0xe49604df
.long	0x9ed1b5e3,0x9ed1b5e3
.long	0x4c6a881b,0x4c6a881b
.long	0xc12c1fb8,0xc12c1fb8
.long	0x4665517f,0x4665517f
.long	0x9d5eea04,0x9d5eea04
.long	0x018c355d,0x018c355d
.long	0xfa877473,0xfa877473
.long	0xfb0b412e,0xfb0b412e
.long	0xb3671d5a,0xb3671d5a
.long	0x92dbd252,0x92dbd252
.long	0xe9105633,0xe9105633
.long	0x6dd64713,0x6dd64713
.long	0x9ad7618c,0x9ad7618c
.long	0x37a10c7a,0x37a10c7a
.long	0x59f8148e,0x59f8148e
.long	0xeb133c89,0xeb133c89
.long	0xcea927ee,0xcea927ee
.long	0xb761c935,0xb761c935
.long	0xe11ce5ed,0xe11ce5ed
.long	0x7a47b13c,0x7a47b13c
.long	0x9cd2df59,0x9cd2df59
.long	0x55f2733f,0x55f2733f
.long	0x1814ce79,0x1814ce79
.long	0x73c737bf,0x73c737bf
.long	0x53f7cdea,0x53f7cdea
.long	0x5ffdaa5b,0x5ffdaa5b
.long	0xdf3d6f14,0xdf3d6f14
.long	0x7844db86,0x7844db86
.long	0xcaaff381,0xcaaff381
.long	0xb968c43e,0xb968c43e
.long	0x3824342c,0x3824342c
.long	0xc2a3405f,0xc2a3405f
.long	0x161dc372,0x161dc372
.long	0xbce2250c,0xbce2250c
.long	0x283c498b,0x283c498b
.long	0xff0d9541,0xff0d9541
.long	0x39a80171,0x39a80171
.long	0x080cb3de,0x080cb3de
.long	0xd8b4e49c,0xd8b4e49c
.long	0x6456c190,0x6456c190
.long	0x7bcb8461,0x7bcb8461
.long	0xd532b670,0xd532b670
.long	0x486c5c74,0x486c5c74
.long	0xd0b85742,0xd0b85742
.byte	0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38
.byte	0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb
.byte	0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87
.byte	0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb
.byte	0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d
.byte	0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e
.byte	0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2
.byte	0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25
.byte	0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16
.byte	0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92
.byte	0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda
.byte	0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84
.byte	0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a
.byte	0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06
.byte	0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02
.byte	0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b
.byte	0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea
.byte	0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73
.byte	0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85
.byte	0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e
.byte	0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89
.byte	0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b
.byte	0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20
.byte	0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4
.byte	0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31
.byte	0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f
.byte	0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d
.byte	0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef
.byte	0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0
.byte	0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61
.byte	0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26
.byte	0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d


.globl	AES_encrypt
.type	AES_encrypt,@function
.section	".opd","aw"
.align	3
AES_encrypt:
.quad	.AES_encrypt,.TOC.@tocbase,0
.previous

.align	7
.AES_encrypt:
	stdu	1,-256(1)
	mflr	0

	std	4,104(1)
	std	14,112(1)
	std	15,120(1)
	std	16,128(1)
	std	17,136(1)
	std	18,144(1)
	std	19,152(1)
	std	20,160(1)
	std	21,168(1)
	std	22,176(1)
	std	23,184(1)
	std	24,192(1)
	std	25,200(1)
	std	26,208(1)
	std	27,216(1)
	std	28,224(1)
	std	29,232(1)
	std	30,240(1)
	std	31,248(1)
	std	0,272(1)

	andi.	12,3,3
	andi.	0,4,3
	or.	12,12,0
	bne	.Lenc_unaligned

.Lenc_unaligned_ok:
	lwz	8,0(3)
	lwz	9,4(3)
	lwz	10,8(3)
	lwz	11,12(3)
	bl	.LAES_Te
	bl	.Lppc_AES_encrypt_compact
	ld	4,104(1)
	stw	8,0(4)
	stw	9,4(4)
	stw	10,8(4)
	stw	11,12(4)
	b	.Lenc_done

.Lenc_unaligned:
	subfic	12,3,4096
	subfic	0,4,4096
	andi.	12,12,4096-16
	beq	.Lenc_xpage
	andi.	0,0,4096-16
	bne	.Lenc_unaligned_ok

.Lenc_xpage:
	lbz	16,0(3)
	lbz	17,1(3)
	lbz	18,2(3)
	lbz	8,3(3)
	lbz	20,4(3)
	lbz	21,5(3)
	lbz	22,6(3)
	lbz	9,7(3)
	lbz	24,8(3)
	lbz	25,9(3)
	lbz	26,10(3)
	insrwi	8,16,8,0
	lbz	10,11(3)
	insrwi	9,20,8,0
	lbz	28,12(3)
	insrwi	8,17,8,8
	lbz	29,13(3)
	insrwi	9,21,8,8
	lbz	30,14(3)
	insrwi	8,18,8,16
	lbz	11,15(3)
	insrwi	9,22,8,16
	insrwi	10,24,8,0
	insrwi	11,28,8,0
	insrwi	10,25,8,8
	insrwi	11,29,8,8
	insrwi	10,26,8,16
	insrwi	11,30,8,16

	bl	.LAES_Te
	bl	.Lppc_AES_encrypt_compact
	ld	4,104(1)

	extrwi	16,8,8,0
	extrwi	17,8,8,8
	stb	16,0(4)
	extrwi	18,8,8,16
	stb	17,1(4)
	stb	18,2(4)
	extrwi	20,9,8,0
	stb	8,3(4)
	extrwi	21,9,8,8
	stb	20,4(4)
	extrwi	22,9,8,16
	stb	21,5(4)
	stb	22,6(4)
	extrwi	24,10,8,0
	stb	9,7(4)
	extrwi	25,10,8,8
	stb	24,8(4)
	extrwi	26,10,8,16
	stb	25,9(4)
	stb	26,10(4)
	extrwi	28,11,8,0
	stb	10,11(4)
	extrwi	29,11,8,8
	stb	28,12(4)
	extrwi	30,11,8,16
	stb	29,13(4)
	stb	30,14(4)
	stb	11,15(4)

.Lenc_done:
	ld	0,272(1)
	ld	14,112(1)
	ld	15,120(1)
	ld	16,128(1)
	ld	17,136(1)
	ld	18,144(1)
	ld	19,152(1)
	ld	20,160(1)
	ld	21,168(1)
	ld	22,176(1)
	ld	23,184(1)
	ld	24,192(1)
	ld	25,200(1)
	ld	26,208(1)
	ld	27,216(1)
	ld	28,224(1)
	ld	29,232(1)
	ld	30,240(1)
	ld	31,248(1)
	mtlr	0
	addi	1,1,256
	blr	
.long	0
.byte	0,12,4,1,0x80,18,3,0
.long	0

.align	5
.Lppc_AES_encrypt:
	lwz	16,240(5)
	addi	6,3,3
	lwz	12,0(5)
	addi	7,3,2
	lwz	0,4(5)
	addi	4,3,1
	lwz	14,8(5)
	addi	16,16,-1
	lwz	15,12(5)
	addi	5,5,16
	xor	8,8,12
	xor	9,9,0
	xor	10,10,14
	xor	11,11,15
	mtctr	16
.align	4
.Lenc_loop:
	rlwinm	16,8,11,21,28
	rlwinm	17,9,11,21,28
	rlwinm	18,10,11,21,28
	rlwinm	19,11,11,21,28
	lwz	12,0(5)
	rlwinm	20,9,19,21,28
	lwz	0,4(5)
	rlwinm	21,10,19,21,28
	lwz	14,8(5)
	rlwinm	22,11,19,21,28
	lwz	15,12(5)
	rlwinm	23,8,19,21,28
	lwzx	16,3,16
	rlwinm	24,10,27,21,28
	lwzx	17,3,17
	rlwinm	25,11,27,21,28
	lwzx	18,3,18
	rlwinm	26,8,27,21,28
	lwzx	19,3,19
	rlwinm	27,9,27,21,28
	lwzx	20,6,20
	rlwinm	28,11,3,21,28
	lwzx	21,6,21
	rlwinm	29,8,3,21,28
	lwzx	22,6,22
	rlwinm	30,9,3,21,28
	lwzx	23,6,23
	rlwinm	31,10,3,21,28
	lwzx	24,7,24
	xor	12,12,16
	lwzx	25,7,25
	xor	0,0,17
	lwzx	26,7,26
	xor	14,14,18
	lwzx	27,7,27
	xor	15,15,19
	lwzx	28,4,28
	xor	12,12,20
	lwzx	29,4,29
	xor	0,0,21
	lwzx	30,4,30
	xor	14,14,22
	lwzx	31,4,31
	xor	15,15,23
	xor	12,12,24
	xor	0,0,25
	xor	14,14,26
	xor	15,15,27
	xor	8,12,28
	xor	9,0,29
	xor	10,14,30
	xor	11,15,31
	addi	5,5,16
	bc	16,0,.Lenc_loop

	addi	7,3,2048
	nop	
	lwz	12,0(5)
	rlwinm	16,8,8,24,31
	lwz	0,4(5)
	rlwinm	17,9,8,24,31
	lwz	14,8(5)
	rlwinm	18,10,8,24,31
	lwz	15,12(5)
	rlwinm	19,11,8,24,31
	lwz	24,2048(3)
	rlwinm	20,9,16,24,31
	lwz	25,2080(3)
	rlwinm	21,10,16,24,31
	lwz	26,2112(3)
	rlwinm	22,11,16,24,31
	lwz	27,2144(3)
	rlwinm	23,8,16,24,31
	lwz	28,2176(3)
	rlwinm	24,10,24,24,31
	lwz	29,2208(3)
	rlwinm	25,11,24,24,31
	lwz	30,2240(3)
	rlwinm	26,8,24,24,31
	lwz	31,2272(3)
	rlwinm	27,9,24,24,31
	lbzx	16,7,16
	rlwinm	28,11,0,24,31
	lbzx	17,7,17
	rlwinm	29,8,0,24,31
	lbzx	18,7,18
	rlwinm	30,9,0,24,31
	lbzx	19,7,19
	rlwinm	31,10,0,24,31
	lbzx	20,7,20
	rlwinm	8,16,24,0,7
	lbzx	21,7,21
	rlwinm	9,17,24,0,7
	lbzx	22,7,22
	rlwinm	10,18,24,0,7
	lbzx	23,7,23
	rlwinm	11,19,24,0,7
	lbzx	24,7,24
	rlwimi	8,20,16,8,15
	lbzx	25,7,25
	rlwimi	9,21,16,8,15
	lbzx	26,7,26
	rlwimi	10,22,16,8,15
	lbzx	27,7,27
	rlwimi	11,23,16,8,15
	lbzx	28,7,28
	rlwimi	8,24,8,16,23
	lbzx	29,7,29
	rlwimi	9,25,8,16,23
	lbzx	30,7,30
	rlwimi	10,26,8,16,23
	lbzx	31,7,31
	rlwimi	11,27,8,16,23
	or	8,8,28
	or	9,9,29
	or	10,10,30
	or	11,11,31
	xor	8,8,12
	xor	9,9,0
	xor	10,10,14
	xor	11,11,15
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0

.align	4
.Lppc_AES_encrypt_compact:
	lwz	16,240(5)
	addi	6,3,2048
	lwz	12,0(5)
	lis	7,0x8080
	lwz	0,4(5)
	lis	4,0x1b1b
	lwz	14,8(5)
	ori	7,7,0x8080
	lwz	15,12(5)
	ori	4,4,0x1b1b
	addi	5,5,16
	mtctr	16
.align	4
.Lenc_compact_loop:
	xor	8,8,12
	xor	9,9,0
	rlwinm	16,8,8,24,31
	xor	10,10,14
	rlwinm	17,9,8,24,31
	xor	11,11,15
	rlwinm	18,10,8,24,31
	rlwinm	19,11,8,24,31
	rlwinm	20,9,16,24,31
	rlwinm	21,10,16,24,31
	rlwinm	22,11,16,24,31
	rlwinm	23,8,16,24,31
	lbzx	16,6,16
	rlwinm	24,10,24,24,31
	lbzx	17,6,17
	rlwinm	25,11,24,24,31
	lbzx	18,6,18
	rlwinm	26,8,24,24,31
	lbzx	19,6,19
	rlwinm	27,9,24,24,31
	lbzx	20,6,20
	rlwinm	28,11,0,24,31
	lbzx	21,6,21
	rlwinm	29,8,0,24,31
	lbzx	22,6,22
	rlwinm	30,9,0,24,31
	lbzx	23,6,23
	rlwinm	31,10,0,24,31
	lbzx	24,6,24
	rlwinm	8,16,24,0,7
	lbzx	25,6,25
	rlwinm	9,17,24,0,7
	lbzx	26,6,26
	rlwinm	10,18,24,0,7
	lbzx	27,6,27
	rlwinm	11,19,24,0,7
	lbzx	28,6,28
	rlwimi	8,20,16,8,15
	lbzx	29,6,29
	rlwimi	9,21,16,8,15
	lbzx	30,6,30
	rlwimi	10,22,16,8,15
	lbzx	31,6,31
	rlwimi	11,23,16,8,15
	rlwimi	8,24,8,16,23
	rlwimi	9,25,8,16,23
	rlwimi	10,26,8,16,23
	rlwimi	11,27,8,16,23
	lwz	12,0(5)
	or	8,8,28
	lwz	0,4(5)
	or	9,9,29
	lwz	14,8(5)
	or	10,10,30
	lwz	15,12(5)
	or	11,11,31

	addi	5,5,16
	bdz	.Lenc_compact_done

	and	16,8,7
	and	17,9,7
	and	18,10,7
	and	19,11,7
	srwi	20,16,7
	andc	24,8,7
	srwi	21,17,7
	andc	25,9,7
	srwi	22,18,7
	andc	26,10,7
	srwi	23,19,7
	andc	27,11,7
	sub	16,16,20
	sub	17,17,21
	sub	18,18,22
	sub	19,19,23
	add	24,24,24
	add	25,25,25
	add	26,26,26
	add	27,27,27
	and	16,16,4
	and	17,17,4
	and	18,18,4
	and	19,19,4
	xor	16,16,24
	xor	17,17,25
	rotlwi	28,8,16
	xor	18,18,26
	rotlwi	29,9,16
	xor	19,19,27
	rotlwi	30,10,16

	xor	8,8,16
	rotlwi	31,11,16
	xor	9,9,17
	rotrwi	8,8,24
	xor	10,10,18
	rotrwi	9,9,24
	xor	11,11,19
	rotrwi	10,10,24
	xor	8,8,16
	rotrwi	11,11,24
	xor	9,9,17
	xor	10,10,18
	xor	11,11,19
	rotlwi	24,28,8
	xor	8,8,28
	rotlwi	25,29,8
	xor	9,9,29
	rotlwi	26,30,8
	xor	10,10,30
	rotlwi	27,31,8
	xor	11,11,31
	xor	8,8,24
	xor	9,9,25
	xor	10,10,26
	xor	11,11,27

	b	.Lenc_compact_loop
.align	4
.Lenc_compact_done:
	xor	8,8,12
	xor	9,9,0
	xor	10,10,14
	xor	11,11,15
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0


.globl	AES_decrypt
.type	AES_decrypt,@function
.section	".opd","aw"
.align	3
AES_decrypt:
.quad	.AES_decrypt,.TOC.@tocbase,0
.previous

.align	7
.AES_decrypt:
	stdu	1,-256(1)
	mflr	0

	std	4,104(1)
	std	14,112(1)
	std	15,120(1)
	std	16,128(1)
	std	17,136(1)
	std	18,144(1)
	std	19,152(1)
	std	20,160(1)
	std	21,168(1)
	std	22,176(1)
	std	23,184(1)
	std	24,192(1)
	std	25,200(1)
	std	26,208(1)
	std	27,216(1)
	std	28,224(1)
	std	29,232(1)
	std	30,240(1)
	std	31,248(1)
	std	0,272(1)

	andi.	12,3,3
	andi.	0,4,3
	or.	12,12,0
	bne	.Ldec_unaligned

.Ldec_unaligned_ok:
	lwz	8,0(3)
	lwz	9,4(3)
	lwz	10,8(3)
	lwz	11,12(3)
	bl	.LAES_Td
	bl	.Lppc_AES_decrypt_compact
	ld	4,104(1)
	stw	8,0(4)
	stw	9,4(4)
	stw	10,8(4)
	stw	11,12(4)
	b	.Ldec_done

.Ldec_unaligned:
	subfic	12,3,4096
	subfic	0,4,4096
	andi.	12,12,4096-16
	beq	.Ldec_xpage
	andi.	0,0,4096-16
	bne	.Ldec_unaligned_ok

.Ldec_xpage:
	lbz	16,0(3)
	lbz	17,1(3)
	lbz	18,2(3)
	lbz	8,3(3)
	lbz	20,4(3)
	lbz	21,5(3)
	lbz	22,6(3)
	lbz	9,7(3)
	lbz	24,8(3)
	lbz	25,9(3)
	lbz	26,10(3)
	insrwi	8,16,8,0
	lbz	10,11(3)
	insrwi	9,20,8,0
	lbz	28,12(3)
	insrwi	8,17,8,8
	lbz	29,13(3)
	insrwi	9,21,8,8
	lbz	30,14(3)
	insrwi	8,18,8,16
	lbz	11,15(3)
	insrwi	9,22,8,16
	insrwi	10,24,8,0
	insrwi	11,28,8,0
	insrwi	10,25,8,8
	insrwi	11,29,8,8
	insrwi	10,26,8,16
	insrwi	11,30,8,16

	bl	.LAES_Td
	bl	.Lppc_AES_decrypt_compact
	ld	4,104(1)

	extrwi	16,8,8,0
	extrwi	17,8,8,8
	stb	16,0(4)
	extrwi	18,8,8,16
	stb	17,1(4)
	stb	18,2(4)
	extrwi	20,9,8,0
	stb	8,3(4)
	extrwi	21,9,8,8
	stb	20,4(4)
	extrwi	22,9,8,16
	stb	21,5(4)
	stb	22,6(4)
	extrwi	24,10,8,0
	stb	9,7(4)
	extrwi	25,10,8,8
	stb	24,8(4)
	extrwi	26,10,8,16
	stb	25,9(4)
	stb	26,10(4)
	extrwi	28,11,8,0
	stb	10,11(4)
	extrwi	29,11,8,8
	stb	28,12(4)
	extrwi	30,11,8,16
	stb	29,13(4)
	stb	30,14(4)
	stb	11,15(4)

.Ldec_done:
	ld	0,272(1)
	ld	14,112(1)
	ld	15,120(1)
	ld	16,128(1)
	ld	17,136(1)
	ld	18,144(1)
	ld	19,152(1)
	ld	20,160(1)
	ld	21,168(1)
	ld	22,176(1)
	ld	23,184(1)
	ld	24,192(1)
	ld	25,200(1)
	ld	26,208(1)
	ld	27,216(1)
	ld	28,224(1)
	ld	29,232(1)
	ld	30,240(1)
	ld	31,248(1)
	mtlr	0
	addi	1,1,256
	blr	
.long	0
.byte	0,12,4,1,0x80,18,3,0
.long	0

.align	5
.Lppc_AES_decrypt:
	lwz	16,240(5)
	addi	6,3,3
	lwz	12,0(5)
	addi	7,3,2
	lwz	0,4(5)
	addi	4,3,1
	lwz	14,8(5)
	addi	16,16,-1
	lwz	15,12(5)
	addi	5,5,16
	xor	8,8,12
	xor	9,9,0
	xor	10,10,14
	xor	11,11,15
	mtctr	16
.align	4
.Ldec_loop:
	rlwinm	16,8,11,21,28
	rlwinm	17,9,11,21,28
	rlwinm	18,10,11,21,28
	rlwinm	19,11,11,21,28
	lwz	12,0(5)
	rlwinm	20,11,19,21,28
	lwz	0,4(5)
	rlwinm	21,8,19,21,28
	lwz	14,8(5)
	rlwinm	22,9,19,21,28
	lwz	15,12(5)
	rlwinm	23,10,19,21,28
	lwzx	16,3,16
	rlwinm	24,10,27,21,28
	lwzx	17,3,17
	rlwinm	25,11,27,21,28
	lwzx	18,3,18
	rlwinm	26,8,27,21,28
	lwzx	19,3,19
	rlwinm	27,9,27,21,28
	lwzx	20,6,20
	rlwinm	28,9,3,21,28
	lwzx	21,6,21
	rlwinm	29,10,3,21,28
	lwzx	22,6,22
	rlwinm	30,11,3,21,28
	lwzx	23,6,23
	rlwinm	31,8,3,21,28
	lwzx	24,7,24
	xor	12,12,16
	lwzx	25,7,25
	xor	0,0,17
	lwzx	26,7,26
	xor	14,14,18
	lwzx	27,7,27
	xor	15,15,19
	lwzx	28,4,28
	xor	12,12,20
	lwzx	29,4,29
	xor	0,0,21
	lwzx	30,4,30
	xor	14,14,22
	lwzx	31,4,31
	xor	15,15,23
	xor	12,12,24
	xor	0,0,25
	xor	14,14,26
	xor	15,15,27
	xor	8,12,28
	xor	9,0,29
	xor	10,14,30
	xor	11,15,31
	addi	5,5,16
	bc	16,0,.Ldec_loop

	addi	7,3,2048
	nop	
	lwz	12,0(5)
	rlwinm	16,8,8,24,31
	lwz	0,4(5)
	rlwinm	17,9,8,24,31
	lwz	14,8(5)
	rlwinm	18,10,8,24,31
	lwz	15,12(5)
	rlwinm	19,11,8,24,31
	lwz	24,2048(3)
	rlwinm	20,11,16,24,31
	lwz	25,2080(3)
	rlwinm	21,8,16,24,31
	lwz	26,2112(3)
	lbzx	16,7,16
	lwz	27,2144(3)
	lbzx	17,7,17
	lwz	28,2176(3)
	rlwinm	22,9,16,24,31
	lwz	29,2208(3)
	rlwinm	23,10,16,24,31
	lwz	30,2240(3)
	rlwinm	24,10,24,24,31
	lwz	31,2272(3)
	rlwinm	25,11,24,24,31
	lbzx	18,7,18
	rlwinm	26,8,24,24,31
	lbzx	19,7,19
	rlwinm	27,9,24,24,31
	lbzx	20,7,20
	rlwinm	28,9,0,24,31
	lbzx	21,7,21
	rlwinm	29,10,0,24,31
	lbzx	22,7,22
	rlwinm	30,11,0,24,31
	lbzx	23,7,23
	rlwinm	31,8,0,24,31
	lbzx	24,7,24
	rlwinm	8,16,24,0,7
	lbzx	25,7,25
	rlwinm	9,17,24,0,7
	lbzx	26,7,26
	rlwinm	10,18,24,0,7
	lbzx	27,7,27
	rlwinm	11,19,24,0,7
	lbzx	28,7,28
	rlwimi	8,20,16,8,15
	lbzx	29,7,29
	rlwimi	9,21,16,8,15
	lbzx	30,7,30
	rlwimi	10,22,16,8,15
	lbzx	31,7,31
	rlwimi	11,23,16,8,15
	rlwimi	8,24,8,16,23
	rlwimi	9,25,8,16,23
	rlwimi	10,26,8,16,23
	rlwimi	11,27,8,16,23
	or	8,8,28
	or	9,9,29
	or	10,10,30
	or	11,11,31
	xor	8,8,12
	xor	9,9,0
	xor	10,10,14
	xor	11,11,15
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0

.align	4
.Lppc_AES_decrypt_compact:
	lwz	16,240(5)
	addi	6,3,2048
	lwz	12,0(5)
	lis	7,0x8080
	lwz	0,4(5)
	lis	4,0x1b1b
	lwz	14,8(5)
	ori	7,7,0x8080
	lwz	15,12(5)
	ori	4,4,0x1b1b
	addi	5,5,16
	insrdi	7,7,32,0
	insrdi	4,4,32,0
	mtctr	16
.align	4
.Ldec_compact_loop:
	xor	8,8,12
	xor	9,9,0
	rlwinm	16,8,8,24,31
	xor	10,10,14
	rlwinm	17,9,8,24,31
	xor	11,11,15
	rlwinm	18,10,8,24,31
	rlwinm	19,11,8,24,31
	rlwinm	20,11,16,24,31
	rlwinm	21,8,16,24,31
	rlwinm	22,9,16,24,31
	rlwinm	23,10,16,24,31
	lbzx	16,6,16
	rlwinm	24,10,24,24,31
	lbzx	17,6,17
	rlwinm	25,11,24,24,31
	lbzx	18,6,18
	rlwinm	26,8,24,24,31
	lbzx	19,6,19
	rlwinm	27,9,24,24,31
	lbzx	20,6,20
	rlwinm	28,9,0,24,31
	lbzx	21,6,21
	rlwinm	29,10,0,24,31
	lbzx	22,6,22
	rlwinm	30,11,0,24,31
	lbzx	23,6,23
	rlwinm	31,8,0,24,31
	lbzx	24,6,24
	rlwinm	8,16,24,0,7
	lbzx	25,6,25
	rlwinm	9,17,24,0,7
	lbzx	26,6,26
	rlwinm	10,18,24,0,7
	lbzx	27,6,27
	rlwinm	11,19,24,0,7
	lbzx	28,6,28
	rlwimi	8,20,16,8,15
	lbzx	29,6,29
	rlwimi	9,21,16,8,15
	lbzx	30,6,30
	rlwimi	10,22,16,8,15
	lbzx	31,6,31
	rlwimi	11,23,16,8,15
	rlwimi	8,24,8,16,23
	rlwimi	9,25,8,16,23
	rlwimi	10,26,8,16,23
	rlwimi	11,27,8,16,23
	lwz	12,0(5)
	or	8,8,28
	lwz	0,4(5)
	or	9,9,29
	lwz	14,8(5)
	or	10,10,30
	lwz	15,12(5)
	or	11,11,31

	addi	5,5,16
	bdz	.Ldec_compact_done

	insrdi	8,9,32,0
	insrdi	10,11,32,0

	and	16,8,7
	and	18,10,7
	srdi	20,16,7
	srdi	22,18,7
	andc	24,8,7
	andc	26,10,7
	sub	16,16,20
	sub	18,18,22
	add	24,24,24
	add	26,26,26
	and	16,16,4
	and	18,18,4
	xor	16,16,24
	xor	18,18,26

	and	20,16,7
	and	22,18,7
	srdi	24,20,7
	srdi	26,22,7
	andc	28,16,7
	andc	30,18,7
	sub	20,20,24
	sub	22,22,26
	add	28,28,28
	add	30,30,30
	and	20,20,4
	and	22,22,4
	xor	20,20,28
	xor	22,22,30

	and	24,20,7
	and	26,22,7
	srdi	28,24,7
	srdi	30,26,7
	sub	24,24,28
	sub	26,26,30
	andc	28,20,7
	andc	30,22,7
	add	28,28,28
	add	30,30,30
	and	24,24,4
	and	26,26,4
	xor	24,24,28
	xor	26,26,30

	xor	16,16,8
	xor	18,18,10
	xor	20,20,8
	xor	22,22,10

	rldicl	17,16,32,32
	rldicl	19,18,32,32
	rldicl	21,20,32,32
	rldicl	23,22,32,32
	rldicl	25,24,32,32
	rldicl	27,26,32,32
	rotrwi	8,8,8
	rotrwi	9,9,8
	xor	8,8,16
	rotrwi	10,10,8
	xor	9,9,17
	rotrwi	11,11,8
	xor	10,10,18
	xor	11,11,19
	xor	16,16,24
	xor	17,17,25
	xor	18,18,26
	xor	19,19,27
	xor	8,8,20
	rotrwi	16,16,24
	xor	9,9,21
	rotrwi	17,17,24
	xor	10,10,22
	rotrwi	18,18,24
	xor	11,11,23
	rotrwi	19,19,24
	xor	20,20,24
	xor	21,21,25
	xor	22,22,26
	xor	23,23,27
	xor	8,8,24
	rotrwi	20,20,16
	xor	9,9,25
	rotrwi	21,21,16
	xor	10,10,26
	rotrwi	22,22,16
	xor	11,11,27
	rotrwi	23,23,16
	xor	8,8,16
	rotrwi	24,24,8
	xor	9,9,17
	rotrwi	25,25,8
	xor	10,10,18
	rotrwi	26,26,8
	xor	11,11,19
	rotrwi	27,27,8
	xor	8,8,20
	xor	9,9,21
	xor	10,10,22
	xor	11,11,23
	xor	8,8,24
	xor	9,9,25
	xor	10,10,26
	xor	11,11,27

	b	.Ldec_compact_loop
.align	4
.Ldec_compact_done:
	xor	8,8,12
	xor	9,9,0
	xor	10,10,14
	xor	11,11,15
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0


.byte	65,69,83,32,102,111,114,32,80,80,67,44,32,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	7

File Added: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/aes.inc
.PATH.S: ${.PARSEDIR}
AES_SRCS = aes_core.c aes_cbc.c aes-ppc.S aesp8-ppc.S vpaes-ppc.S
AESCPPFLAGS = -DAES_ASM -DVPAES_ASM
.include "../../aes.inc"

File Added: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/aesp8-ppc.S
.machine	"any"

.text

.align	7
rcon:
.byte	0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00
.byte	0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00
.byte	0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c
.byte	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.Lconsts:
	mflr	0
	bcl	20,31,$+4
	mflr	6
	addi	6,6,-0x48
	mtlr	0
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0
.byte	65,69,83,32,102,111,114,32,80,111,119,101,114,73,83,65,32,50,46,48,55,44,32,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

.globl	aes_p8_set_encrypt_key
.type	aes_p8_set_encrypt_key,@function
.section	".opd","aw"
.align	3
aes_p8_set_encrypt_key:
.quad	.aes_p8_set_encrypt_key,.TOC.@tocbase,0
.previous

.align	5
.aes_p8_set_encrypt_key:
.Lset_encrypt_key:
	mflr	11
	std	11,16(1)

	li	6,-1
	cmpldi	3,0
	beq-	.Lenc_key_abort
	cmpldi	5,0
	beq-	.Lenc_key_abort
	li	6,-2
	cmpwi	4,128
	blt-	.Lenc_key_abort
	cmpwi	4,256
	bgt-	.Lenc_key_abort
	andi.	0,4,0x3f
	bne-	.Lenc_key_abort

	lis	0,0xfff0
	mfspr	12,256
	mtspr	256,0

	bl	.Lconsts
	mtlr	11

	neg	9,3
	lvx	1,0,3
	addi	3,3,15
	lvsr	3,0,9
	li	8,0x20
	cmpwi	4,192
	lvx	2,0,3

	lvx	4,0,6

	lvx	5,8,6
	addi	6,6,0x10
	vperm	1,1,2,3
	li	7,8
	vxor	0,0,0
	mtctr	7

	lvsr	8,0,5
	vspltisb	9,-1
	lvx	10,0,5
	vperm	9,0,9,8

	blt	.Loop128
	addi	3,3,8
	beq	.L192
	addi	3,3,8
	b	.L256

.align	4
.Loop128:
	vperm	3,1,1,5
	vsldoi	6,0,1,12
	vperm	11,1,1,8
	vsel	7,10,11,9
	vor	10,11,11
.long	0x10632509
	stvx	7,0,5
	addi	5,5,16

	vxor	1,1,6
	vsldoi	6,0,6,12
	vxor	1,1,6
	vsldoi	6,0,6,12
	vxor	1,1,6
	vadduwm	4,4,4
	vxor	1,1,3
	bc	16,0,.Loop128

	lvx	4,0,6

	vperm	3,1,1,5
	vsldoi	6,0,1,12
	vperm	11,1,1,8
	vsel	7,10,11,9
	vor	10,11,11
.long	0x10632509
	stvx	7,0,5
	addi	5,5,16

	vxor	1,1,6
	vsldoi	6,0,6,12
	vxor	1,1,6
	vsldoi	6,0,6,12
	vxor	1,1,6
	vadduwm	4,4,4
	vxor	1,1,3

	vperm	3,1,1,5
	vsldoi	6,0,1,12
	vperm	11,1,1,8
	vsel	7,10,11,9
	vor	10,11,11
.long	0x10632509
	stvx	7,0,5
	addi	5,5,16

	vxor	1,1,6
	vsldoi	6,0,6,12
	vxor	1,1,6
	vsldoi	6,0,6,12
	vxor	1,1,6
	vxor	1,1,3
	vperm	11,1,1,8
	vsel	7,10,11,9
	vor	10,11,11
	stvx	7,0,5

	addi	3,5,15
	addi	5,5,0x50

	li	8,10
	b	.Ldone

.align	4
.L192:
	lvx	6,0,3
	li	7,4
	vperm	11,1,1,8
	vsel	7,10,11,9
	vor	10,11,11
	stvx	7,0,5
	addi	5,5,16
	vperm	2,2,6,3
	vspltisb	3,8
	mtctr	7
	vsububm	5,5,3

.Loop192:
	vperm	3,2,2,5
	vsldoi	6,0,1,12
.long	0x10632509

	vxor	1,1,6
	vsldoi	6,0,6,12
	vxor	1,1,6
	vsldoi	6,0,6,12
	vxor	1,1,6

	vsldoi	7,0,2,8
	vspltw	6,1,3
	vxor	6,6,2
	vsldoi	2,0,2,12
	vadduwm	4,4,4
	vxor	2,2,6
	vxor	1,1,3
	vxor	2,2,3
	vsldoi	7,7,1,8

	vperm	3,2,2,5
	vsldoi	6,0,1,12
	vperm	11,7,7,8
	vsel	7,10,11,9
	vor	10,11,11
.long	0x10632509
	stvx	7,0,5
	addi	5,5,16

	vsldoi	7,1,2,8
	vxor	1,1,6
	vsldoi	6,0,6,12
	vperm	11,7,7,8
	vsel	7,10,11,9
	vor	10,11,11
	vxor	1,1,6
	vsldoi	6,0,6,12
	vxor	1,1,6
	stvx	7,0,5
	addi	5,5,16

	vspltw	6,1,3
	vxor	6,6,2
	vsldoi	2,0,2,12
	vadduwm	4,4,4
	vxor	2,2,6
	vxor	1,1,3
	vxor	2,2,3
	vperm	11,1,1,8
	vsel	7,10,11,9
	vor	10,11,11
	stvx	7,0,5
	addi	3,5,15
	addi	5,5,16
	bc	16,0,.Loop192

	li	8,12
	addi	5,5,0x20
	b	.Ldone

.align	4
.L256:
	lvx	6,0,3
	li	7,7
	li	8,14
	vperm	11,1,1,8
	vsel	7,10,11,9
	vor	10,11,11
	stvx	7,0,5
	addi	5,5,16
	vperm	2,2,6,3
	mtctr	7

.Loop256:
	vperm	3,2,2,5
	vsldoi	6,0,1,12
	vperm	11,2,2,8
	vsel	7,10,11,9
	vor	10,11,11
.long	0x10632509
	stvx	7,0,5
	addi	5,5,16

	vxor	1,1,6
	vsldoi	6,0,6,12
	vxor	1,1,6
	vsldoi	6,0,6,12
	vxor	1,1,6
	vadduwm	4,4,4
	vxor	1,1,3
	vperm	11,1,1,8
	vsel	7,10,11,9
	vor	10,11,11
	stvx	7,0,5
	addi	3,5,15
	addi	5,5,16
	bdz	.Ldone

	vspltw	3,1,3
	vsldoi	6,0,2,12
.long	0x106305C8

	vxor	2,2,6
	vsldoi	6,0,6,12
	vxor	2,2,6
	vsldoi	6,0,6,12
	vxor	2,2,6

	vxor	2,2,3
	b	.Loop256

.align	4
.Ldone:
	lvx	2,0,3
	vsel	2,10,2,9
	stvx	2,0,3
	li	6,0
	mtspr	256,12
	stw	8,0(5)

.Lenc_key_abort:
	mr	3,6
	blr	
.long	0
.byte	0,12,0x14,1,0,0,3,0
.long	0


.globl	aes_p8_set_decrypt_key
.type	aes_p8_set_decrypt_key,@function
.section	".opd","aw"
.align	3
aes_p8_set_decrypt_key:
.quad	.aes_p8_set_decrypt_key,.TOC.@tocbase,0
.previous

.align	5
.aes_p8_set_decrypt_key:
	stdu	1,-64(1)
	mflr	10
	std	10,64+16(1)
	bl	.Lset_encrypt_key
	mtlr	10

	cmpwi	3,0
	bne-	.Ldec_key_abort

	slwi	7,8,4
	subi	3,5,240
	srwi	8,8,1
	add	5,3,7
	mtctr	8

.Ldeckey:
	lwz	0, 0(3)
	lwz	6, 4(3)
	lwz	7, 8(3)
	lwz	8, 12(3)
	addi	3,3,16
	lwz	9, 0(5)
	lwz	10,4(5)
	lwz	11,8(5)
	lwz	12,12(5)
	stw	0, 0(5)
	stw	6, 4(5)
	stw	7, 8(5)
	stw	8, 12(5)
	subi	5,5,16
	stw	9, -16(3)
	stw	10,-12(3)
	stw	11,-8(3)
	stw	12,-4(3)
	bc	16,0,.Ldeckey

	xor	3,3,3
.Ldec_key_abort:
	addi	1,1,64
	blr	
.long	0
.byte	0,12,4,1,0x80,0,3,0
.long	0

.globl	aes_p8_encrypt
.type	aes_p8_encrypt,@function
.section	".opd","aw"
.align	3
aes_p8_encrypt:
.quad	.aes_p8_encrypt,.TOC.@tocbase,0
.previous

.align	5
.aes_p8_encrypt:
	lwz	6,240(5)
	lis	0,0xfc00
	mfspr	12,256
	li	7,15
	mtspr	256,0

	lvx	0,0,3
	neg	11,4
	lvx	1,7,3
	lvsl	2,0,3

	lvsl	3,0,11

	li	7,16
	vperm	0,0,1,2
	lvx	1,0,5
	lvsl	5,0,5
	srwi	6,6,1
	lvx	2,7,5
	addi	7,7,16
	subi	6,6,1
	vperm	1,1,2,5

	vxor	0,0,1
	lvx	1,7,5
	addi	7,7,16
	mtctr	6

.Loop_enc:
	vperm	2,2,1,5
.long	0x10001508
	lvx	2,7,5
	addi	7,7,16
	vperm	1,1,2,5
.long	0x10000D08
	lvx	1,7,5
	addi	7,7,16
	bc	16,0,.Loop_enc

	vperm	2,2,1,5
.long	0x10001508
	lvx	2,7,5
	vperm	1,1,2,5
.long	0x10000D09

	vspltisb	2,-1
	vxor	1,1,1
	li	7,15
	vperm	2,1,2,3

	lvx	1,0,4
	vperm	0,0,0,3
	vsel	1,1,0,2
	lvx	4,7,4
	stvx	1,0,4
	vsel	0,0,4,2
	stvx	0,7,4

	mtspr	256,12
	blr	
.long	0
.byte	0,12,0x14,0,0,0,3,0
.long	0

.globl	aes_p8_decrypt
.type	aes_p8_decrypt,@function
.section	".opd","aw"
.align	3
aes_p8_decrypt:
.quad	.aes_p8_decrypt,.TOC.@tocbase,0
.previous

.align	5
.aes_p8_decrypt:
	lwz	6,240(5)
	lis	0,0xfc00
	mfspr	12,256
	li	7,15
	mtspr	256,0

	lvx	0,0,3
	neg	11,4
	lvx	1,7,3
	lvsl	2,0,3

	lvsl	3,0,11

	li	7,16
	vperm	0,0,1,2
	lvx	1,0,5
	lvsl	5,0,5
	srwi	6,6,1
	lvx	2,7,5
	addi	7,7,16
	subi	6,6,1
	vperm	1,1,2,5

	vxor	0,0,1
	lvx	1,7,5
	addi	7,7,16
	mtctr	6

.Loop_dec:
	vperm	2,2,1,5
.long	0x10001548
	lvx	2,7,5
	addi	7,7,16
	vperm	1,1,2,5
.long	0x10000D48
	lvx	1,7,5
	addi	7,7,16
	bc	16,0,.Loop_dec

	vperm	2,2,1,5
.long	0x10001548
	lvx	2,7,5
	vperm	1,1,2,5
.long	0x10000D49

	vspltisb	2,-1
	vxor	1,1,1
	li	7,15
	vperm	2,1,2,3

	lvx	1,0,4
	vperm	0,0,0,3
	vsel	1,1,0,2
	lvx	4,7,4
	stvx	1,0,4
	vsel	0,0,4,2
	stvx	0,7,4

	mtspr	256,12
	blr	
.long	0
.byte	0,12,0x14,0,0,0,3,0
.long	0

.globl	aes_p8_cbc_encrypt
.type	aes_p8_cbc_encrypt,@function
.section	".opd","aw"
.align	3
aes_p8_cbc_encrypt:
.quad	.aes_p8_cbc_encrypt,.TOC.@tocbase,0
.previous

.align	5
.aes_p8_cbc_encrypt:
	cmpldi	5,16
	bltlr

	cmpwi	8,0
	lis	0,0xffe0
	mfspr	12,256
	mtspr	256,0

	li	10,15
	vxor	0,0,0


	lvx	4,0,7
	lvsl	6,0,7
	lvx	5,10,7

	vperm	4,4,5,6

	neg	11,3
	lvsl	10,0,6
	lwz	9,240(6)

	lvsr	6,0,11
	lvx	5,0,3
	addi	3,3,15


	lvsr	8,0,4
	vspltisb	9,-1
	lvx	7,0,4
	vperm	9,0,9,8


	srwi	9,9,1
	li	10,16
	subi	9,9,1
	beq	.Lcbc_dec

.Lcbc_enc:
	vor	2,5,5
	lvx	5,0,3
	addi	3,3,16
	mtctr	9
	subi	5,5,16

	lvx	0,0,6
	vperm	2,2,5,6
	lvx	1,10,6
	addi	10,10,16
	vperm	0,0,1,10
	vxor	2,2,0
	lvx	0,10,6
	addi	10,10,16
	vxor	2,2,4

.Loop_cbc_enc:
	vperm	1,1,0,10
.long	0x10420D08
	lvx	1,10,6
	addi	10,10,16
	vperm	0,0,1,10
.long	0x10420508
	lvx	0,10,6
	addi	10,10,16
	bc	16,0,.Loop_cbc_enc

	vperm	1,1,0,10
.long	0x10420D08
	lvx	1,10,6
	li	10,16
	vperm	0,0,1,10
.long	0x10820509
	cmpldi	5,16

	vperm	3,4,4,8
	vsel	2,7,3,9
	vor	7,3,3
	stvx	2,0,4
	addi	4,4,16
	bge	.Lcbc_enc

	b	.Lcbc_done

.align	4
.Lcbc_dec:
	cmpldi	5,128
	bge	_aesp8_cbc_decrypt8x
	vor	3,5,5
	lvx	5,0,3
	addi	3,3,16
	mtctr	9
	subi	5,5,16

	lvx	0,0,6
	vperm	3,3,5,6
	lvx	1,10,6
	addi	10,10,16
	vperm	0,0,1,10
	vxor	2,3,0
	lvx	0,10,6
	addi	10,10,16

.Loop_cbc_dec:
	vperm	1,1,0,10
.long	0x10420D48
	lvx	1,10,6
	addi	10,10,16
	vperm	0,0,1,10
.long	0x10420548
	lvx	0,10,6
	addi	10,10,16
	bc	16,0,.Loop_cbc_dec

	vperm	1,1,0,10
.long	0x10420D48
	lvx	1,10,6
	li	10,16
	vperm	0,0,1,10
.long	0x10420549
	cmpldi	5,16

	vxor	2,2,4
	vor	4,3,3
	vperm	3,2,2,8
	vsel	2,7,3,9
	vor	7,3,3
	stvx	2,0,4
	addi	4,4,16
	bge	.Lcbc_dec

.Lcbc_done:
	addi	4,4,-1
	lvx	2,0,4
	vsel	2,7,2,9
	stvx	2,0,4

	neg	8,7
	li	10,15
	vxor	0,0,0
	vspltisb	9,-1

	lvsl	8,0,8
	vperm	9,0,9,8

	lvx	7,0,7
	vperm	4,4,4,8
	vsel	2,7,4,9
	lvx	5,10,7
	stvx	2,0,7
	vsel	2,4,5,9
	stvx	2,10,7

	mtspr	256,12
	blr	
.long	0
.byte	0,12,0x14,0,0,0,6,0
.long	0
.align	5
_aesp8_cbc_decrypt8x:
	stdu	1,-448(1)
	li	10,207
	li	11,223
	stvx	20,10,1
	addi	10,10,32
	stvx	21,11,1
	addi	11,11,32
	stvx	22,10,1
	addi	10,10,32
	stvx	23,11,1
	addi	11,11,32
	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
	li	0,-1
	stw	12,396(1)
	li	8,0x10
	std	26,400(1)
	li	26,0x20
	std	27,408(1)
	li	27,0x30
	std	28,416(1)
	li	28,0x40
	std	29,424(1)
	li	29,0x50
	std	30,432(1)
	li	30,0x60
	std	31,440(1)
	li	31,0x70
	mtspr	256,0

	subi	9,9,3
	subi	5,5,128

	lvx	23,0,6
	lvx	30,8,6
	addi	6,6,0x20
	lvx	31,0,6
	vperm	23,23,30,10
	addi	11,1,64+15
	mtctr	9

.Load_cbc_dec_key:
	vperm	24,30,31,10
	lvx	30,8,6
	addi	6,6,0x20
	stvx	24,0,11
	vperm	25,31,30,10
	lvx	31,0,6
	stvx	25,8,11
	addi	11,11,0x20
	bc	16,0,.Load_cbc_dec_key

	lvx	26,8,6
	vperm	24,30,31,10
	lvx	27,26,6
	stvx	24,0,11
	vperm	25,31,26,10
	lvx	28,27,6
	stvx	25,8,11
	addi	11,1,64+15
	vperm	26,26,27,10
	lvx	29,28,6
	vperm	27,27,28,10
	lvx	30,29,6
	vperm	28,28,29,10
	lvx	31,30,6
	vperm	29,29,30,10
	lvx	14,31,6
	vperm	30,30,31,10
	lvx	24,0,11
	vperm	31,31,14,10
	lvx	25,8,11



	subi	3,3,15


.long	0x7C001E99


.long	0x7C281E99

.long	0x7C5A1E99

.long	0x7C7B1E99

.long	0x7D5C1E99

	vxor	14,0,23
.long	0x7D7D1E99

	vxor	15,1,23
.long	0x7D9E1E99

	vxor	16,2,23
.long	0x7DBF1E99
	addi	3,3,0x80

	vxor	17,3,23

	vxor	18,10,23

	vxor	19,11,23
	vxor	20,12,23
	vxor	21,13,23

	mtctr	9
	b	.Loop_cbc_dec8x
.align	5
.Loop_cbc_dec8x:
.long	0x11CEC548
.long	0x11EFC548
.long	0x1210C548
.long	0x1231C548
.long	0x1252C548
.long	0x1273C548
.long	0x1294C548
.long	0x12B5C548
	lvx	24,26,11
	addi	11,11,0x20

.long	0x11CECD48
.long	0x11EFCD48
.long	0x1210CD48
.long	0x1231CD48
.long	0x1252CD48
.long	0x1273CD48
.long	0x1294CD48
.long	0x12B5CD48
	lvx	25,8,11
	bc	16,0,.Loop_cbc_dec8x

	subic	5,5,128
.long	0x11CEC548
.long	0x11EFC548
.long	0x1210C548
.long	0x1231C548
.long	0x1252C548
.long	0x1273C548
.long	0x1294C548
.long	0x12B5C548

	subfe.	0,0,0
.long	0x11CECD48
.long	0x11EFCD48
.long	0x1210CD48
.long	0x1231CD48
.long	0x1252CD48
.long	0x1273CD48
.long	0x1294CD48
.long	0x12B5CD48

	and	0,0,5
.long	0x11CED548
.long	0x11EFD548
.long	0x1210D548
.long	0x1231D548
.long	0x1252D548
.long	0x1273D548
.long	0x1294D548
.long	0x12B5D548

	add	3,3,0



.long	0x11CEDD48
.long	0x11EFDD48
.long	0x1210DD48
.long	0x1231DD48
.long	0x1252DD48
.long	0x1273DD48
.long	0x1294DD48
.long	0x12B5DD48

	addi	11,1,64+15
.long	0x11CEE548
.long	0x11EFE548
.long	0x1210E548
.long	0x1231E548
.long	0x1252E548
.long	0x1273E548
.long	0x1294E548
.long	0x12B5E548
	lvx	24,0,11

.long	0x11CEED48
.long	0x11EFED48
.long	0x1210ED48
.long	0x1231ED48
.long	0x1252ED48
.long	0x1273ED48
.long	0x1294ED48
.long	0x12B5ED48
	lvx	25,8,11

.long	0x11CEF548
	vxor	4,4,31
.long	0x11EFF548
	vxor	0,0,31
.long	0x1210F548
	vxor	1,1,31
.long	0x1231F548
	vxor	2,2,31
.long	0x1252F548
	vxor	3,3,31
.long	0x1273F548
	vxor	10,10,31
.long	0x1294F548
	vxor	11,11,31
.long	0x12B5F548
	vxor	12,12,31

.long	0x11CE2549
.long	0x11EF0549
.long	0x7C001E99
.long	0x12100D49
.long	0x7C281E99
.long	0x12311549

.long	0x7C5A1E99
.long	0x12521D49

.long	0x7C7B1E99
.long	0x12735549

.long	0x7D5C1E99
.long	0x12945D49

.long	0x7D7D1E99
.long	0x12B56549

.long	0x7D9E1E99
	vor	4,13,13

.long	0x7DBF1E99
	addi	3,3,0x80



.long	0x7DC02799

	vxor	14,0,23

.long	0x7DE82799

	vxor	15,1,23

.long	0x7E1A2799
	vxor	16,2,23

.long	0x7E3B2799
	vxor	17,3,23

.long	0x7E5C2799
	vxor	18,10,23

.long	0x7E7D2799
	vxor	19,11,23

.long	0x7E9E2799
	vxor	20,12,23
.long	0x7EBF2799
	addi	4,4,0x80
	vxor	21,13,23

	mtctr	9
	beq	.Loop_cbc_dec8x

	addic.	5,5,128
	beq	.Lcbc_dec8x_done
	nop	
	nop	

.Loop_cbc_dec8x_tail:
.long	0x11EFC548
.long	0x1210C548
.long	0x1231C548
.long	0x1252C548
.long	0x1273C548
.long	0x1294C548
.long	0x12B5C548
	lvx	24,26,11
	addi	11,11,0x20

.long	0x11EFCD48
.long	0x1210CD48
.long	0x1231CD48
.long	0x1252CD48
.long	0x1273CD48
.long	0x1294CD48
.long	0x12B5CD48
	lvx	25,8,11
	bc	16,0,.Loop_cbc_dec8x_tail

.long	0x11EFC548
.long	0x1210C548
.long	0x1231C548
.long	0x1252C548
.long	0x1273C548
.long	0x1294C548
.long	0x12B5C548

.long	0x11EFCD48
.long	0x1210CD48
.long	0x1231CD48
.long	0x1252CD48
.long	0x1273CD48
.long	0x1294CD48
.long	0x12B5CD48

.long	0x11EFD548
.long	0x1210D548
.long	0x1231D548
.long	0x1252D548
.long	0x1273D548
.long	0x1294D548
.long	0x12B5D548

.long	0x11EFDD48
.long	0x1210DD48
.long	0x1231DD48
.long	0x1252DD48
.long	0x1273DD48
.long	0x1294DD48
.long	0x12B5DD48

.long	0x11EFE548
.long	0x1210E548
.long	0x1231E548
.long	0x1252E548
.long	0x1273E548
.long	0x1294E548
.long	0x12B5E548

.long	0x11EFED48
.long	0x1210ED48
.long	0x1231ED48
.long	0x1252ED48
.long	0x1273ED48
.long	0x1294ED48
.long	0x12B5ED48

.long	0x11EFF548
	vxor	4,4,31
.long	0x1210F548
	vxor	1,1,31
.long	0x1231F548
	vxor	2,2,31
.long	0x1252F548
	vxor	3,3,31
.long	0x1273F548
	vxor	10,10,31
.long	0x1294F548
	vxor	11,11,31
.long	0x12B5F548
	vxor	12,12,31

	cmplwi	5,32
	blt	.Lcbc_dec8x_one
	nop	
	beq	.Lcbc_dec8x_two
	cmplwi	5,64
	blt	.Lcbc_dec8x_three
	nop	
	beq	.Lcbc_dec8x_four
	cmplwi	5,96
	blt	.Lcbc_dec8x_five
	nop	
	beq	.Lcbc_dec8x_six

.Lcbc_dec8x_seven:
.long	0x11EF2549
.long	0x12100D49
.long	0x12311549
.long	0x12521D49
.long	0x12735549
.long	0x12945D49
.long	0x12B56549
	vor	4,13,13



.long	0x7DE02799

.long	0x7E082799

.long	0x7E3A2799

.long	0x7E5B2799

.long	0x7E7C2799

.long	0x7E9D2799
.long	0x7EBE2799
	addi	4,4,0x70
	b	.Lcbc_dec8x_done

.align	5
.Lcbc_dec8x_six:
.long	0x12102549
.long	0x12311549
.long	0x12521D49
.long	0x12735549
.long	0x12945D49
.long	0x12B56549
	vor	4,13,13



.long	0x7E002799

.long	0x7E282799

.long	0x7E5A2799

.long	0x7E7B2799

.long	0x7E9C2799
.long	0x7EBD2799
	addi	4,4,0x60
	b	.Lcbc_dec8x_done

.align	5
.Lcbc_dec8x_five:
.long	0x12312549
.long	0x12521D49
.long	0x12735549
.long	0x12945D49
.long	0x12B56549
	vor	4,13,13



.long	0x7E202799

.long	0x7E482799

.long	0x7E7A2799

.long	0x7E9B2799
.long	0x7EBC2799
	addi	4,4,0x50
	b	.Lcbc_dec8x_done

.align	5
.Lcbc_dec8x_four:
.long	0x12522549
.long	0x12735549
.long	0x12945D49
.long	0x12B56549
	vor	4,13,13



.long	0x7E402799

.long	0x7E682799

.long	0x7E9A2799
.long	0x7EBB2799
	addi	4,4,0x40
	b	.Lcbc_dec8x_done

.align	5
.Lcbc_dec8x_three:
.long	0x12732549
.long	0x12945D49
.long	0x12B56549
	vor	4,13,13



.long	0x7E602799

.long	0x7E882799
.long	0x7EBA2799
	addi	4,4,0x30
	b	.Lcbc_dec8x_done

.align	5
.Lcbc_dec8x_two:
.long	0x12942549
.long	0x12B56549
	vor	4,13,13



.long	0x7E802799
.long	0x7EA82799
	addi	4,4,0x20
	b	.Lcbc_dec8x_done

.align	5
.Lcbc_dec8x_one:
.long	0x12B52549
	vor	4,13,13


.long	0x7EA02799
	addi	4,4,0x10

.Lcbc_dec8x_done:

.long	0x7C803F99

	li	10,79
	li	11,95
	stvx	6,10,1
	addi	10,10,32
	stvx	6,11,1
	addi	11,11,32
	stvx	6,10,1
	addi	10,10,32
	stvx	6,11,1
	addi	11,11,32
	stvx	6,10,1
	addi	10,10,32
	stvx	6,11,1
	addi	11,11,32
	stvx	6,10,1
	addi	10,10,32
	stvx	6,11,1
	addi	11,11,32

	mtspr	256,12
	lvx	20,10,1
	addi	10,10,32
	lvx	21,11,1
	addi	11,11,32
	lvx	22,10,1
	addi	10,10,32
	lvx	23,11,1
	addi	11,11,32
	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
	ld	26,400(1)
	ld	27,408(1)
	ld	28,416(1)
	ld	29,424(1)
	ld	30,432(1)
	ld	31,440(1)
	addi	1,1,448
	blr	
.long	0
.byte	0,12,0x04,0,0x80,6,6,0
.long	0

.globl	aes_p8_ctr32_encrypt_blocks
.type	aes_p8_ctr32_encrypt_blocks,@function
.section	".opd","aw"
.align	3
aes_p8_ctr32_encrypt_blocks:
.quad	.aes_p8_ctr32_encrypt_blocks,.TOC.@tocbase,0
.previous

.align	5
.aes_p8_ctr32_encrypt_blocks:
	cmpldi	5,1
	bltlr

	lis	0,0xfff0
	mfspr	12,256
	mtspr	256,0

	li	10,15
	vxor	0,0,0


	lvx	4,0,7
	lvsl	6,0,7
	lvx	5,10,7
	vspltisb	11,1

	vperm	4,4,5,6
	vsldoi	11,0,11,1

	neg	11,3
	lvsl	10,0,6
	lwz	9,240(6)

	lvsr	6,0,11
	lvx	5,0,3
	addi	3,3,15


	srwi	9,9,1
	li	10,16
	subi	9,9,1

	cmpldi	5,8
	bge	_aesp8_ctr32_encrypt8x

	lvsr	8,0,4
	vspltisb	9,-1
	lvx	7,0,4
	vperm	9,0,9,8


	lvx	0,0,6
	mtctr	9
	lvx	1,10,6
	addi	10,10,16
	vperm	0,0,1,10
	vxor	2,4,0
	lvx	0,10,6
	addi	10,10,16
	b	.Loop_ctr32_enc

.align	5
.Loop_ctr32_enc:
	vperm	1,1,0,10
.long	0x10420D08
	lvx	1,10,6
	addi	10,10,16
	vperm	0,0,1,10
.long	0x10420508
	lvx	0,10,6
	addi	10,10,16
	bc	16,0,.Loop_ctr32_enc

	vadduwm	4,4,11
	vor	3,5,5
	lvx	5,0,3
	addi	3,3,16
	subic.	5,5,1

	vperm	1,1,0,10
.long	0x10420D08
	lvx	1,10,6
	vperm	3,3,5,6
	li	10,16
	vperm	1,0,1,10
	lvx	0,0,6
	vxor	3,3,1
.long	0x10421D09

	lvx	1,10,6
	addi	10,10,16
	vperm	2,2,2,8
	vsel	3,7,2,9
	mtctr	9
	vperm	0,0,1,10
	vor	7,2,2
	vxor	2,4,0
	lvx	0,10,6
	addi	10,10,16
	stvx	3,0,4
	addi	4,4,16
	bne	.Loop_ctr32_enc

	addi	4,4,-1
	lvx	2,0,4
	vsel	2,7,2,9
	stvx	2,0,4

	mtspr	256,12
	blr	
.long	0
.byte	0,12,0x14,0,0,0,6,0
.long	0
.align	5
_aesp8_ctr32_encrypt8x:
	stdu	1,-448(1)
	li	10,207
	li	11,223
	stvx	20,10,1
	addi	10,10,32
	stvx	21,11,1
	addi	11,11,32
	stvx	22,10,1
	addi	10,10,32
	stvx	23,11,1
	addi	11,11,32
	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
	li	0,-1
	stw	12,396(1)
	li	8,0x10
	std	26,400(1)
	li	26,0x20
	std	27,408(1)
	li	27,0x30
	std	28,416(1)
	li	28,0x40
	std	29,424(1)
	li	29,0x50
	std	30,432(1)
	li	30,0x60
	std	31,440(1)
	li	31,0x70
	mtspr	256,0

	subi	9,9,3

	lvx	23,0,6
	lvx	30,8,6
	addi	6,6,0x20
	lvx	31,0,6
	vperm	23,23,30,10
	addi	11,1,64+15
	mtctr	9

.Load_ctr32_enc_key:
	vperm	24,30,31,10
	lvx	30,8,6
	addi	6,6,0x20
	stvx	24,0,11
	vperm	25,31,30,10
	lvx	31,0,6
	stvx	25,8,11
	addi	11,11,0x20
	bc	16,0,.Load_ctr32_enc_key

	lvx	26,8,6
	vperm	24,30,31,10
	lvx	27,26,6
	stvx	24,0,11
	vperm	25,31,26,10
	lvx	28,27,6
	stvx	25,8,11
	addi	11,1,64+15
	vperm	26,26,27,10
	lvx	29,28,6
	vperm	27,27,28,10
	lvx	30,29,6
	vperm	28,28,29,10
	lvx	31,30,6
	vperm	29,29,30,10
	lvx	15,31,6
	vperm	30,30,31,10
	lvx	24,0,11
	vperm	31,31,15,10
	lvx	25,8,11

	vadduwm	7,11,11
	subi	3,3,15
	sldi	5,5,4

	vadduwm	16,4,11
	vadduwm	17,4,7
	vxor	15,4,23

	vadduwm	18,16,7
	vxor	16,16,23

	vadduwm	19,17,7
	vxor	17,17,23

	vadduwm	20,18,7
	vxor	18,18,23

	vadduwm	21,19,7
	vxor	19,19,23
	vadduwm	22,20,7
	vxor	20,20,23
	vadduwm	4,21,7
	vxor	21,21,23
	vxor	22,22,23

	mtctr	9
	b	.Loop_ctr32_enc8x
.align	5
.Loop_ctr32_enc8x:
.long	0x11EFC508
.long	0x1210C508
.long	0x1231C508
.long	0x1252C508
.long	0x1273C508
.long	0x1294C508
.long	0x12B5C508
.long	0x12D6C508
.Loop_ctr32_enc8x_middle:
	lvx	24,26,11
	addi	11,11,0x20

.long	0x11EFCD08
.long	0x1210CD08
.long	0x1231CD08
.long	0x1252CD08
.long	0x1273CD08
.long	0x1294CD08
.long	0x12B5CD08
.long	0x12D6CD08
	lvx	25,8,11
	bc	16,0,.Loop_ctr32_enc8x

	subic	11,5,256
.long	0x11EFC508
.long	0x1210C508
.long	0x1231C508
.long	0x1252C508
.long	0x1273C508
.long	0x1294C508
.long	0x12B5C508
.long	0x12D6C508

	subfe	0,0,0
.long	0x11EFCD08
.long	0x1210CD08
.long	0x1231CD08
.long	0x1252CD08
.long	0x1273CD08
.long	0x1294CD08
.long	0x12B5CD08
.long	0x12D6CD08

	and	0,0,11
	addi	11,1,64+15
.long	0x11EFD508
.long	0x1210D508
.long	0x1231D508
.long	0x1252D508
.long	0x1273D508
.long	0x1294D508
.long	0x12B5D508
.long	0x12D6D508
	lvx	24,0,11

	subic	5,5,129
.long	0x11EFDD08
	addi	5,5,1
.long	0x1210DD08
.long	0x1231DD08
.long	0x1252DD08
.long	0x1273DD08
.long	0x1294DD08
.long	0x12B5DD08
.long	0x12D6DD08
	lvx	25,8,11

.long	0x11EFE508
.long	0x7C001E99
.long	0x1210E508
.long	0x7C281E99
.long	0x1231E508
.long	0x7C5A1E99
.long	0x1252E508
.long	0x7C7B1E99
.long	0x1273E508
.long	0x7D5C1E99
.long	0x1294E508
.long	0x7D9D1E99
.long	0x12B5E508
.long	0x7DBE1E99
.long	0x12D6E508
.long	0x7DDF1E99
	addi	3,3,0x80

.long	0x11EFED08

.long	0x1210ED08

.long	0x1231ED08

.long	0x1252ED08

.long	0x1273ED08

.long	0x1294ED08

.long	0x12B5ED08

.long	0x12D6ED08


	add	3,3,0



	subfe.	0,0,0
.long	0x11EFF508
	vxor	0,0,31
.long	0x1210F508
	vxor	1,1,31
.long	0x1231F508
	vxor	2,2,31
.long	0x1252F508
	vxor	3,3,31
.long	0x1273F508
	vxor	10,10,31
.long	0x1294F508
	vxor	12,12,31
.long	0x12B5F508
	vxor	13,13,31
.long	0x12D6F508
	vxor	14,14,31

	bne	.Lctr32_enc8x_break

.long	0x100F0509
.long	0x10300D09
	vadduwm	16,4,11
.long	0x10511509
	vadduwm	17,4,7
	vxor	15,4,23
.long	0x10721D09
	vadduwm	18,16,7
	vxor	16,16,23
.long	0x11535509
	vadduwm	19,17,7
	vxor	17,17,23
.long	0x11946509
	vadduwm	20,18,7
	vxor	18,18,23
.long	0x11B56D09
	vadduwm	21,19,7
	vxor	19,19,23
.long	0x11D67509
	vadduwm	22,20,7
	vxor	20,20,23

	vadduwm	4,21,7
	vxor	21,21,23

	vxor	22,22,23
	mtctr	9

.long	0x11EFC508
.long	0x7C002799

.long	0x1210C508
.long	0x7C282799

.long	0x1231C508
.long	0x7C5A2799

.long	0x1252C508
.long	0x7C7B2799

.long	0x1273C508
.long	0x7D5C2799

.long	0x1294C508
.long	0x7D9D2799

.long	0x12B5C508
.long	0x7DBE2799
.long	0x12D6C508
.long	0x7DDF2799
	addi	4,4,0x80

	b	.Loop_ctr32_enc8x_middle

.align	5
.Lctr32_enc8x_break:
	cmpwi	5,-0x60
	blt	.Lctr32_enc8x_one
	nop	
	beq	.Lctr32_enc8x_two
	cmpwi	5,-0x40
	blt	.Lctr32_enc8x_three
	nop	
	beq	.Lctr32_enc8x_four
	cmpwi	5,-0x20
	blt	.Lctr32_enc8x_five
	nop	
	beq	.Lctr32_enc8x_six
	cmpwi	5,0x00
	blt	.Lctr32_enc8x_seven

.Lctr32_enc8x_eight:
.long	0x11EF0509
.long	0x12100D09
.long	0x12311509
.long	0x12521D09
.long	0x12735509
.long	0x12946509
.long	0x12B56D09
.long	0x12D67509



.long	0x7DE02799

.long	0x7E082799

.long	0x7E3A2799

.long	0x7E5B2799

.long	0x7E7C2799

.long	0x7E9D2799

.long	0x7EBE2799
.long	0x7EDF2799
	addi	4,4,0x80
	b	.Lctr32_enc8x_done

.align	5
.Lctr32_enc8x_seven:
.long	0x11EF0D09
.long	0x12101509
.long	0x12311D09
.long	0x12525509
.long	0x12736509
.long	0x12946D09
.long	0x12B57509



.long	0x7DE02799

.long	0x7E082799

.long	0x7E3A2799

.long	0x7E5B2799

.long	0x7E7C2799

.long	0x7E9D2799
.long	0x7EBE2799
	addi	4,4,0x70
	b	.Lctr32_enc8x_done

.align	5
.Lctr32_enc8x_six:
.long	0x11EF1509
.long	0x12101D09
.long	0x12315509
.long	0x12526509
.long	0x12736D09
.long	0x12947509



.long	0x7DE02799

.long	0x7E082799

.long	0x7E3A2799

.long	0x7E5B2799

.long	0x7E7C2799
.long	0x7E9D2799
	addi	4,4,0x60
	b	.Lctr32_enc8x_done

.align	5
.Lctr32_enc8x_five:
.long	0x11EF1D09
.long	0x12105509
.long	0x12316509
.long	0x12526D09
.long	0x12737509



.long	0x7DE02799

.long	0x7E082799

.long	0x7E3A2799

.long	0x7E5B2799
.long	0x7E7C2799
	addi	4,4,0x50
	b	.Lctr32_enc8x_done

.align	5
.Lctr32_enc8x_four:
.long	0x11EF5509
.long	0x12106509
.long	0x12316D09
.long	0x12527509



.long	0x7DE02799

.long	0x7E082799

.long	0x7E3A2799
.long	0x7E5B2799
	addi	4,4,0x40
	b	.Lctr32_enc8x_done

.align	5
.Lctr32_enc8x_three:
.long	0x11EF6509
.long	0x12106D09
.long	0x12317509



.long	0x7DE02799

.long	0x7E082799
.long	0x7E3A2799
	addi	4,4,0x30
	b	.Lcbc_dec8x_done

.align	5
.Lctr32_enc8x_two:
.long	0x11EF6D09
.long	0x12107509



.long	0x7DE02799
.long	0x7E082799
	addi	4,4,0x20
	b	.Lcbc_dec8x_done

.align	5
.Lctr32_enc8x_one:
.long	0x11EF7509


.long	0x7DE02799
	addi	4,4,0x10

.Lctr32_enc8x_done:
	li	10,79
	li	11,95
	stvx	6,10,1
	addi	10,10,32
	stvx	6,11,1
	addi	11,11,32
	stvx	6,10,1
	addi	10,10,32
	stvx	6,11,1
	addi	11,11,32
	stvx	6,10,1
	addi	10,10,32
	stvx	6,11,1
	addi	11,11,32
	stvx	6,10,1
	addi	10,10,32
	stvx	6,11,1
	addi	11,11,32

	mtspr	256,12
	lvx	20,10,1
	addi	10,10,32
	lvx	21,11,1
	addi	11,11,32
	lvx	22,10,1
	addi	10,10,32
	lvx	23,11,1
	addi	11,11,32
	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
	ld	26,400(1)
	ld	27,408(1)
	ld	28,416(1)
	ld	29,424(1)
	ld	30,432(1)
	ld	31,440(1)
	addi	1,1,448
	blr	
.long	0
.byte	0,12,0x04,0,0x80,6,6,0
.long	0


File Added: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/bn.inc
.PATH.S: ${.PARSEDIR}
BN_SRCS = ppc.S ppc-mont.S ppc64-mont.S
CPPFLAGS += -DOPENSSL_BN_ASM_MONT
.include "../../bn.inc"

File Added: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/crypto.inc
CPUID_SRCS = ppccap.c ppccpuid.S
CPUID = yes
.include "../../crypto.inc"

File Added: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/ghashp8-ppc.S
.machine	"any"

.text

.globl	gcm_init_p8
.type	gcm_init_p8,@function
.section	".opd","aw"
.align	3
gcm_init_p8:
.quad	.gcm_init_p8,.TOC.@tocbase,0
.previous

.align	5
.gcm_init_p8:
	lis	0,0xfff0
	li	8,0x10
	mfspr	12,256
	li	9,0x20
	mtspr	256,0
	li	10,0x30
.long	0x7D202699

	vspltisb	8,-16
	vspltisb	5,1
	vaddubm	8,8,8
	vxor	4,4,4
	vor	8,8,5
	vsldoi	8,8,4,15
	vsldoi	6,4,5,1
	vaddubm	8,8,8
	vspltisb	7,7
	vor	8,8,6
	vspltb	6,9,0
	vsl	9,9,5
	vsrab	6,6,7
	vand	6,6,8
	vxor	9,9,6

	vsldoi	9,9,9,8
	vsldoi	8,4,8,8
	vsldoi	11,4,9,8
	vsldoi	10,9,4,8

.long	0x7D001F99
.long	0x7D681F99
.long	0x7D291F99
.long	0x7D4A1F99

	mtspr	256,12
	blr	
.long	0
.byte	0,12,0x14,0,0,0,2,0
.long	0


.globl	gcm_gmult_p8
.type	gcm_gmult_p8,@function
.section	".opd","aw"
.align	3
gcm_gmult_p8:
.quad	.gcm_gmult_p8,.TOC.@tocbase,0
.previous

.align	5
.gcm_gmult_p8:
	lis	0,0xfff8
	li	8,0x10
	mfspr	12,256
	li	9,0x20
	mtspr	256,0
	li	10,0x30
.long	0x7C601E99

.long	0x7D682699

.long	0x7D292699

.long	0x7D4A2699

.long	0x7D002699

	vxor	4,4,4

.long	0x10035CC8
.long	0x10234CC8
.long	0x104354C8

.long	0x10E044C8

	vsldoi	5,1,4,8
	vsldoi	6,4,1,8
	vxor	0,0,5
	vxor	2,2,6

	vsldoi	0,0,0,8
	vxor	0,0,7

	vsldoi	6,0,0,8
.long	0x100044C8
	vxor	6,6,2
	vxor	0,0,6


.long	0x7C001F99

	mtspr	256,12
	blr	
.long	0
.byte	0,12,0x14,0,0,0,2,0
.long	0


.globl	gcm_ghash_p8
.type	gcm_ghash_p8,@function
.section	".opd","aw"
.align	3
gcm_ghash_p8:
.quad	.gcm_ghash_p8,.TOC.@tocbase,0
.previous

.align	5
.gcm_ghash_p8:
	lis	0,0xfff8
	li	8,0x10
	mfspr	12,256
	li	9,0x20
	mtspr	256,0
	li	10,0x30
.long	0x7C001E99

.long	0x7D682699

.long	0x7D292699

.long	0x7D4A2699

.long	0x7D002699

	vxor	4,4,4

.long	0x7C602E99
	addi	5,5,16
	subi	6,6,16

	vxor	3,3,0
	b	.Loop

.align	5
.Loop:
	subic	6,6,16
.long	0x10035CC8
	subfe.	0,0,0
.long	0x10234CC8
	and	0,0,6
.long	0x104354C8
	add	5,5,0

.long	0x10E044C8

	vsldoi	5,1,4,8
	vsldoi	6,4,1,8
	vxor	0,0,5
	vxor	2,2,6

	vsldoi	0,0,0,8
	vxor	0,0,7
.long	0x7C602E99
	addi	5,5,16

	vsldoi	6,0,0,8
.long	0x100044C8

	vxor	6,6,2
	vxor	3,3,6
	vxor	3,3,0
	beq	.Loop

	vxor	0,0,6

.long	0x7C001F99

	mtspr	256,12
	blr	
.long	0
.byte	0,12,0x14,0,0,0,4,0
.long	0


.byte	71,72,65,83,72,32,102,111,114,32,80,111,119,101,114,73,83,65,32,50,46,48,55,44,32,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

File Added: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/modes.inc
.PATH.S: ${.PARSEDIR}
MODES_SRCS = ghashp8-ppc.S
# CPPFLAGS += -DGHASH_ASM_PPC	# set by dist/crypto/modes/gcm128.c
.include "../../modes.inc"

File Added: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/ppc-mont.S
.machine	"any"
.text

.globl	bn_mul_mont_int
.type	bn_mul_mont_int,@function
.section	".opd","aw"
.align	3
bn_mul_mont_int:
.quad	.bn_mul_mont_int,.TOC.@tocbase,0
.previous

.align	4
.bn_mul_mont_int:
	cmpwi	8,4
	mr	9,3
	li	3,0
	bltlr
	slwi	8,8,3
	li	12,-4096
	addi	3,8,352
	subf	3,3,1
	and	3,3,12
	subf	3,1,3
	mr	12,1
	srwi	8,8,3
	stdux	1,1,3

	std	20,-96(12)
	std	21,-88(12)
	std	22,-80(12)
	std	23,-72(12)
	std	24,-64(12)
	std	25,-56(12)
	std	26,-48(12)
	std	27,-40(12)
	std	28,-32(12)
	std	29,-24(12)
	std	30,-16(12)
	std	31,-8(12)

	ld	7,0(7)
	addi	8,8,-2

	ld	23,0(5)
	ld	10,0(4)
	addi	22,1,64
	mulld	25,10,23
	mulhdu	26,10,23

	ld	10,8(4)
	ld	11,0(6)

	mulld	24,25,7

	mulld	29,10,23
	mulhdu	30,10,23

	mulld	27,11,24
	mulhdu	28,11,24
	ld	11,8(6)
	addc	27,27,25
	addze	28,28

	mulld	31,11,24
	mulhdu	0,11,24

	mtctr	8
	li	21,16
.align	4
.L1st:
	ldx	10,4,21
	addc	25,29,26
	ldx	11,6,21
	addze	26,30
	mulld	29,10,23
	addc	27,31,28
	mulhdu	30,10,23
	addze	28,0
	mulld	31,11,24
	addc	27,27,25
	mulhdu	0,11,24
	addze	28,28
	std	27,0(22)

	addi	21,21,8
	addi	22,22,8
	bc	16,0,.L1st

	addc	25,29,26
	addze	26,30

	addc	27,31,28
	addze	28,0
	addc	27,27,25
	addze	28,28
	std	27,0(22)

	li	3,0
	addc	28,28,26
	addze	3,3
	std	28,8(22)

	li	20,8
.align	4
.Louter:
	ldx	23,5,20
	ld	10,0(4)
	addi	22,1,64
	ld	12,64(1)
	mulld	25,10,23
	mulhdu	26,10,23
	ld	10,8(4)
	ld	11,0(6)
	addc	25,25,12
	mulld	29,10,23
	addze	26,26
	mulld	24,25,7
	mulhdu	30,10,23
	mulld	27,11,24
	mulhdu	28,11,24
	ld	11,8(6)
	addc	27,27,25
	mulld	31,11,24
	addze	28,28
	mulhdu	0,11,24

	mtctr	8
	li	21,16
.align	4
.Linner:
	ldx	10,4,21
	addc	25,29,26
	ld	12,8(22)
	addze	26,30
	ldx	11,6,21
	addc	27,31,28
	mulld	29,10,23
	addze	28,0
	mulhdu	30,10,23
	addc	25,25,12
	mulld	31,11,24
	addze	26,26
	mulhdu	0,11,24
	addc	27,27,25
	addi	21,21,8
	addze	28,28
	std	27,0(22)
	addi	22,22,8
	bc	16,0,.Linner

	ld	12,8(22)
	addc	25,29,26
	addze	26,30
	addc	25,25,12
	addze	26,26

	addc	27,31,28
	addze	28,0
	addc	27,27,25
	addze	28,28
	std	27,0(22)

	addic	3,3,-1
	li	3,0
	adde	28,28,26
	addze	3,3
	std	28,8(22)

	slwi	12,8,3
	cmpld	20,12
	addi	20,20,8
	ble	.Louter

	addi	8,8,2
	subfc	21,21,21
	addi	22,1,64
	mtctr	8

.align	4
.Lsub:	ldx	12,22,21
	ldx	11,6,21
	subfe	10,11,12
	stdx	10,9,21
	addi	21,21,8
	bc	16,0,.Lsub

	li	21,0
	mtctr	8
	subfe	3,21,3
	and	4,22,3
	andc	6,9,3
	or	4,4,6

.align	4
.Lcopy:
	ldx	12,4,21
	stdx	12,9,21
	stdx	21,22,21
	addi	21,21,8
	bc	16,0,.Lcopy

	ld	12,0(1)
	li	3,1
	ld	20,-96(12)
	ld	21,-88(12)
	ld	22,-80(12)
	ld	23,-72(12)
	ld	24,-64(12)
	ld	25,-56(12)
	ld	26,-48(12)
	ld	27,-40(12)
	ld	28,-32(12)
	ld	29,-24(12)
	ld	30,-16(12)
	ld	31,-8(12)
	mr	1,12
	blr	
.long	0
.byte	0,12,4,0,0x80,12,6,0
.long	0


.byte	77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,80,80,67,44,32,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

File Added: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/ppc.S


















































































.globl	bn_sqr_comba4
.type	bn_sqr_comba4,@function
.section	".opd","aw"
.align	3
bn_sqr_comba4:
.quad	.bn_sqr_comba4,.TOC.@tocbase,0
.previous

.globl	bn_sqr_comba8
.type	bn_sqr_comba8,@function
.section	".opd","aw"
.align	3
bn_sqr_comba8:
.quad	.bn_sqr_comba8,.TOC.@tocbase,0
.previous

.globl	bn_mul_comba4
.type	bn_mul_comba4,@function
.section	".opd","aw"
.align	3
bn_mul_comba4:
.quad	.bn_mul_comba4,.TOC.@tocbase,0
.previous

.globl	bn_mul_comba8
.type	bn_mul_comba8,@function
.section	".opd","aw"
.align	3
bn_mul_comba8:
.quad	.bn_mul_comba8,.TOC.@tocbase,0
.previous

.globl	bn_sub_words
.type	bn_sub_words,@function
.section	".opd","aw"
.align	3
bn_sub_words:
.quad	.bn_sub_words,.TOC.@tocbase,0
.previous

.globl	bn_add_words
.type	bn_add_words,@function
.section	".opd","aw"
.align	3
bn_add_words:
.quad	.bn_add_words,.TOC.@tocbase,0
.previous

.globl	bn_div_words
.type	bn_div_words,@function
.section	".opd","aw"
.align	3
bn_div_words:
.quad	.bn_div_words,.TOC.@tocbase,0
.previous

.globl	bn_sqr_words
.type	bn_sqr_words,@function
.section	".opd","aw"
.align	3
bn_sqr_words:
.quad	.bn_sqr_words,.TOC.@tocbase,0
.previous

.globl	bn_mul_words
.type	bn_mul_words,@function
.section	".opd","aw"
.align	3
bn_mul_words:
.quad	.bn_mul_words,.TOC.@tocbase,0
.previous

.globl	bn_mul_add_words
.type	bn_mul_add_words,@function
.section	".opd","aw"
.align	3
bn_mul_add_words:
.quad	.bn_mul_add_words,.TOC.@tocbase,0
.previous




.machine	"any"








.align	4
.bn_sqr_comba4:















	xor	0,0,0



	ld	5,0(4)
	mulld	9,5,5
	mulhdu	10,5,5




	std	9,0(3)

	ld	6,8(4)
	mulld	7,5,6
	mulhdu	8,5,6

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


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

	std	10,8(3)

	mulld	7,6,6
	mulhdu	8,6,6
	addc	11,7,11
	adde	9,8,9
	addze	10,0

	ld	6,16(4)
	mulld	7,5,6
	mulhdu	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
	std	11,16(3)

	ld	6,24(4)
	mulld	7,5,6
	mulhdu	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

	ld	5,8(4)
	ld	6,16(4)
	mulld	7,5,6
	mulhdu	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
	std	9,24(3)

	mulld	7,6,6
	mulhdu	8,6,6
	addc	10,7,10
	adde	11,8,11
	addze	9,0

	ld	6,24(4)
	mulld	7,5,6
	mulhdu	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
	std	10,32(3)

	ld	5,16(4)
	mulld	7,5,6
	mulhdu	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
	std	11,40(3)

	mulld	7,6,6
	mulhdu	8,6,6
	addc	9,7,9
	adde	10,8,10

	std	9,48(3)
	std	10,56(3)
	blr	
.long	0
.byte	0,12,0x14,0,0,0,2,0
.long	0









.align	4
.bn_sqr_comba8:



















	xor	0,0,0



	ld	5,0(4)
	mulld	9,5,5
	mulhdu	10,5,5
	std	9,0(3)

	ld	6,8(4)
	mulld	7,5,6
	mulhdu	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

	std	10,8(3)


	mulld	7,6,6
	mulhdu	8,6,6
	addc	11,7,11
	adde	9,8,9
	addze	10,0

	ld	6,16(4)
	mulld	7,5,6
	mulhdu	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

	std	11,16(3)

	ld	6,24(4)
	mulld	7,5,6
	mulhdu	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

	ld	5,8(4)
	ld	6,16(4)
	mulld	7,5,6
	mulhdu	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

	std	9,24(3)

	mulld	7,6,6
	mulhdu	8,6,6

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

	ld	6,24(4)
	mulld	7,5,6
	mulhdu	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

	ld	5,0(4)
	ld	6,32(4)
	mulld	7,5,6
	mulhdu	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
	std	10,32(3)

	ld	6,40(4)
	mulld	7,5,6
	mulhdu	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

	ld	5,8(4)
	ld	6,32(4)
	mulld	7,5,6
	mulhdu	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

	ld	5,16(4)
	ld	6,24(4)
	mulld	7,5,6
	mulhdu	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
	std	11,40(3)

	mulld	7,6,6
	mulhdu	8,6,6
	addc	9,7,9
	adde	10,8,10
	addze	11,0

	ld	6,32(4)
	mulld	7,5,6
	mulhdu	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

	ld	5,8(4)
	ld	6,40(4)
	mulld	7,5,6
	mulhdu	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

	ld	5,0(4)
	ld	6,48(4)
	mulld	7,5,6
	mulhdu	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
	std	9,48(3)

	ld	6,56(4)
	mulld	7,5,6
	mulhdu	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

	ld	5,8(4)
	ld	6,48(4)
	mulld	7,5,6
	mulhdu	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

	ld	5,16(4)
	ld	6,40(4)
	mulld	7,5,6
	mulhdu	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

	ld	5,24(4)
	ld	6,32(4)
	mulld	7,5,6
	mulhdu	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
	std	10,56(3)

	mulld	7,6,6
	mulhdu	8,6,6
	addc	11,7,11
	adde	9,8,9
	addze	10,0

	ld	6,40(4)
	mulld	7,5,6
	mulhdu	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

	ld	5,16(4)
	ld	6,48(4)
	mulld	7,5,6
	mulhdu	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

	ld	5,8(4)
	ld	6,56(4)
	mulld	7,5,6
	mulhdu	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
	std	11,64(3)

	ld	5,16(4)
	mulld	7,5,6
	mulhdu	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

	ld	5,24(4)
	ld	6,48(4)
	mulld	7,5,6
	mulhdu	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

	ld	5,32(4)
	ld	6,40(4)
	mulld	7,5,6
	mulhdu	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
	std	9,72(3)

	mulld	7,6,6
	mulhdu	8,6,6
	addc	10,7,10
	adde	11,8,11
	addze	9,0

	ld	6,48(4)
	mulld	7,5,6
	mulhdu	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

	ld	5,24(4)
	ld	6,56(4)
	mulld	7,5,6
	mulhdu	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
	std	10,80(3)

	ld	5,32(4)
	mulld	7,5,6
	mulhdu	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

	ld	5,40(4)
	ld	6,48(4)
	mulld	7,5,6
	mulhdu	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
	std	11,88(3)

	mulld	7,6,6
	mulhdu	8,6,6
	addc	9,7,9
	adde	10,8,10
	addze	11,0

	ld	6,56(4)
	mulld	7,5,6
	mulhdu	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
	std	9,96(3)


	ld	5,48(4)
	mulld	7,5,6
	mulhdu	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
	std	10,104(3)

	mulld	7,6,6
	mulhdu	8,6,6
	addc	11,7,11
	adde	9,8,9
	std	11,112(3)
	std	9, 120(3)


	blr	
.long	0
.byte	0,12,0x14,0,0,0,2,0
.long	0









.align	4
.bn_mul_comba4:











	xor	0,0,0

	ld	6,0(4)
	ld	7,0(5)
	mulld	10,6,7
	mulhdu	11,6,7
	std	10,0(3)

	ld	7,8(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,8,11
	adde	12,9,0
	addze	10,0

	ld	6, 8(4)
	ld	7, 0(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,8,11
	adde	12,9,12
	addze	10,10
	std	11,8(3)

	ld	6,16(4)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	12,8,12
	adde	10,9,10
	addze	11,0

	ld	6,8(4)
	ld	7,8(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	12,8,12
	adde	10,9,10
	addze	11,11

	ld	6,0(4)
	ld	7,16(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	12,8,12
	adde	10,9,10
	addze	11,11
	std	12,16(3)

	ld	7,24(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	10,8,10
	adde	11,9,11
	addze	12,0

	ld	6,8(4)
	ld	7,16(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	10,8,10
	adde	11,9,11
	addze	12,12

	ld	6,16(4)
	ld	7,8(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	10,8,10
	adde	11,9,11
	addze	12,12

	ld	6,24(4)
	ld	7,0(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	10,8,10
	adde	11,9,11
	addze	12,12
	std	10,24(3)

	ld	7,8(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,8,11
	adde	12,9,12
	addze	10,0

	ld	6,16(4)
	ld	7,16(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,8,11
	adde	12,9,12
	addze	10,10

	ld	6,8(4)
	ld	7,24(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,8,11
	adde	12,9,12
	addze	10,10
	std	11,32(3)

	ld	6,16(4)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	12,8,12
	adde	10,9,10
	addze	11,0

	ld	6,24(4)
	ld	7,16(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	12,8,12
	adde	10,9,10
	addze	11,11
	std	12,40(3)

	ld	7,24(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	10,8,10
	adde	11,9,11

	std	10,48(3)
	std	11,56(3)
	blr	
.long	0
.byte	0,12,0x14,0,0,0,3,0
.long	0









.align	4
.bn_mul_comba8:











	xor	0,0,0


	ld	6,0(4)
	ld	7,0(5)
	mulld	10,6,7
	mulhdu	11,6,7
	std	10,0(3)

	ld	7,8(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,11,8
	addze	12,9
	addze	10,0

	ld	6,8(4)
	ld	7,0(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10
	std	11,8(3)

	ld	6,16(4)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,0

	ld	6,8(4)
	ld	7,8(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11

	ld	6,0(4)
	ld	7,16(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11
	std	12,16(3)

	ld	7,24(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,0

	ld	6,8(4)
	ld	7,16(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12


	ld	6,16(4)
	ld	7,8(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12

	ld	6,24(4)
	ld	7,0(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12
	std	10,24(3)

	ld	6,32(4)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,0

	ld	6,24(4)
	ld	7,8(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10

	ld	6,16(4)
	ld	7,16(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10

	ld	6,8(4)
	ld	7,24(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10

	ld	6,0(4)
	ld	7,32(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10
	std	11,32(3)

	ld	7,40(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,0

	ld	6,8(4)
	ld	7,32(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11

	ld	6,16(4)
	ld	7,24(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11

	ld	6,24(4)
	ld	7,16(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11

	ld	6,32(4)
	ld	7,8(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11

	ld	6,40(4)
	ld	7,0(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11
	std	12,40(3)

	ld	6,48(4)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,0

	ld	6,40(4)
	ld	7,8(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12

	ld	6,32(4)
	ld	7,16(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12

	ld	6,24(4)
	ld	7,24(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12

	ld	6,16(4)
	ld	7,32(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12

	ld	6,8(4)
	ld	7,40(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12

	ld	6,0(4)
	ld	7,48(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12
	std	10,48(3)

	ld	7,56(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,0

	ld	6,8(4)
	ld	7,48(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10

	ld	6,16(4)
	ld	7,40(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10

	ld	6,24(4)
	ld	7,32(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10

	ld	6,32(4)
	ld	7,24(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10

	ld	6,40(4)
	ld	7,16(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10

	ld	6,48(4)
	ld	7,8(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10

	ld	6,56(4)
	ld	7,0(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10
	std	11,56(3)

	ld	7,8(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,0

	ld	6,48(4)
	ld	7,16(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11

	ld	6,40(4)
	ld	7,24(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11

	ld	6,32(4)
	ld	7,32(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11

	ld	6,24(4)
	ld	7,40(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11

	ld	6,16(4)
	ld	7,48(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11

	ld	6,8(4)
	ld	7,56(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11
	std	12,64(3)

	ld	6,16(4)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,0

	ld	6,24(4)
	ld	7,48(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12

	ld	6,32(4)
	ld	7,40(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12

	ld	6,40(4)
	ld	7,32(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12

	ld	6,48(4)
	ld	7,24(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12

	ld	6,56(4)
	ld	7,16(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12
	std	10,72(3)

	ld	7,24(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,0

	ld	6,48(4)
	ld	7,32(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10

	ld	6,40(4)
	ld	7,40(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10

	ld	6,32(4)
	ld	7,48(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10

	ld	6,24(4)
	ld	7,56(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10
	std	11,80(3)

	ld	6,32(4)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,0

	ld	6,40(4)
	ld	7,48(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11

	ld	6,48(4)
	ld	7,40(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11

	ld	6,56(4)
	ld	7,32(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	12,12,8
	adde	10,10,9
	addze	11,11
	std	12,88(3)

	ld	7,40(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,0

	ld	6,48(4)
	ld	7,48(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12

	ld	6,40(4)
	ld	7,56(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	10,10,8
	adde	11,11,9
	addze	12,12
	std	10,96(3)

	ld	6,48(4)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,0

	ld	6,56(4)
	ld	7,48(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	11,11,8
	adde	12,12,9
	addze	10,10
	std	11,104(3)

	ld	7,56(5)
	mulld	8,6,7
	mulhdu	9,6,7
	addc	12,12,8
	adde	10,10,9
	std	12,112(3)
	std	10,120(3)
	blr	
.long	0
.byte	0,12,0x14,0,0,0,3,0
.long	0









.align	4
.bn_sub_words:













	xor	0,0,0



	subfc.	7,0,6


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


	stdu	6,8(3)
	bc	16,0,.Lppcasm_sub_mainloop
.Lppcasm_sub_adios:
	subfze	3,0
	andi.	3,3,1
	blr	
.long	0
.byte	0,12,0x14,0,0,0,4,0
.long	0









.align	4
.bn_add_words:













	xor	0,0,0



	addic.	6,6,0
	beq	.Lppcasm_add_adios
	addi	4,4,-8
	addi	3,3,-8
	addi	5,5,-8
	mtctr	6
.Lppcasm_add_mainloop:
	ldu	7,8(4)
	ldu	8,8(5)
	adde	8,7,8
	stdu	8,8(3)
	bc	16,0,.Lppcasm_add_mainloop
.Lppcasm_add_adios:
	addze	3,0
	blr	
.long	0
.byte	0,12,0x14,0,0,0,4,0
.long	0









.align	4
.bn_div_words:











	cmpldi	0,5,0
	bne	.Lppcasm_div1
	li	3,-1
	blr	
.Lppcasm_div1:
	xor	0,0,0
	li	8,64
	cntlzd.	7,5
	beq	.Lppcasm_div2
	subf	8,7,8
	srd.	9,3,8
	td	16,9,0
.Lppcasm_div2:
	cmpld	0,3,5
	blt	.Lppcasm_div3
	subf	3,5,3
.Lppcasm_div3:
	cmpi	0,0,7,0
	beq	.Lppcasm_div4
	sld	3,3,7
	srd	8,4,8
	sld	5,5,7
	or	3,3,8
	sld	4,4,7
.Lppcasm_div4:
	srdi	9,5,32


	li	6,2
	mtctr	6
.Lppcasm_divouterloop:
	srdi	8,3,32
	srdi	11,4,32

	cmpld	0,8,9
	bne	.Lppcasm_div5

	li	8,-1
	clrldi	8,8,32
	b	.Lppcasm_div6
.Lppcasm_div5:
	divdu	8,3,9
.Lppcasm_div6:
	mulld	12,9,8
	clrldi	10,5,32
	mulld	6,8,10

.Lppcasm_divinnerloop:
	subf	10,12,3
	srdi	7,10,32
	addic.	7,7,0



	sldi	7,10,32
	or	7,7,11
	cmpld	1,6,7
	bne	.Lppcasm_divinnerexit
	ble	1,.Lppcasm_divinnerexit
	addi	8,8,-1
	subf	12,9,12
	clrldi	10,5,32
	subf	6,10,6
	b	.Lppcasm_divinnerloop
.Lppcasm_divinnerexit:
	srdi	10,6,32
	sldi	11,6,32
	cmpld	1,4,11
	add	12,12,10
	bge	1,.Lppcasm_div7
	addi	12,12,1
.Lppcasm_div7:
	subf	11,11,4
	cmpld	1,3,12
	bge	1,.Lppcasm_div8
	addi	8,8,-1
	add	3,5,3
.Lppcasm_div8:
	subf	12,12,3
	sldi	4,11,32



	insrdi	11,12,32,32
	rotldi	3,11,32
	bdz	.Lppcasm_div9
	sldi	0,8,32
	b	.Lppcasm_divouterloop
.Lppcasm_div9:
	or	3,8,0
	blr	
.long	0
.byte	0,12,0x14,0,0,0,3,0
.long	0








.align	4
.bn_sqr_words:














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

	ldu	6,8(4)
	mulld	7,6,6
	mulhdu	8,6,6
	stdu	7,8(3)
	stdu	8,8(3)
	bc	16,0,.Lppcasm_sqr_mainloop
.Lppcasm_sqr_adios:
	blr	
.long	0
.byte	0,12,0x14,0,0,0,3,0
.long	0









.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:

	ld	8,0(4)
	mulld	9,6,8
	mulhdu	10,6,8
	addc	9,9,12




	std	9,0(3)

	ld	8,8(4)
	mulld	11,6,8
	mulhdu	12,6,8
	adde	11,11,10

	std	11,8(3)

	ld	8,16(4)
	mulld	9,6,8
	mulhdu	10,6,8
	adde	9,9,12

	std	9,16(3)

	ld	8,24(4)
	mulld	11,6,8
	mulhdu	12,6,8
	adde	11,11,10
	addze	12,12

	std	11,24(3)

	addi	3,3,32
	addi	4,4,32
	bc	16,0,.Lppcasm_mw_LOOP

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

	ld	8,0(4)
	mulld	9,6,8
	mulhdu	10,6,8
	addc	9,9,12
	addze	10,10
	std	9,0(3)
	addi	12,10,0

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



	ld	8,8(4)
	mulld	9,6,8
	mulhdu	10,6,8
	addc	9,9,12
	addze	10,10
	std	9,8(3)
	addi	12,10,0

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


	ld	8,16(4)
	mulld	9,6,8
	mulhdu	10,6,8
	addc	9,9,12
	addze	10,10
	std	9,16(3)
	addi	12,10,0

.Lppcasm_mw_OVER:
	addi	3,12,0
	blr	
.long	0
.byte	0,12,0x14,0,0,0,4,0
.long	0









.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:

	ld	8,0(4)
	ld	11,0(3)
	mulld	9,6,8
	mulhdu	10,6,8
	addc	9,9,12
	addze	10,10
	addc	9,9,11






	std	9,0(3)


	ld	8,8(4)
	ld	9,8(3)
	mulld	11,6,8
	mulhdu	12,6,8
	adde	11,11,10
	addze	12,12
	addc	11,11,9

	std	11,8(3)


	ld	8,16(4)
	mulld	9,6,8
	ld	11,16(3)
	mulhdu	10,6,8
	adde	9,9,12
	addze	10,10
	addc	9,9,11

	std	9,16(3)


	ld	8,24(4)
	mulld	11,6,8
	ld	9,24(3)
	mulhdu	12,6,8
	adde	11,11,10
	addze	12,12
	addc	11,11,9
	addze	12,12
	std	11,24(3)
	addi	3,3,32
	addi	4,4,32
	bc	16,0,.Lppcasm_maw_mainloop

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

	mtctr	5
	ldu	8,8(4)
	mulld	9,6,8
	mulhdu	10,6,8
	ldu	11,8(3)
	addc	9,9,11
	addze	10,10
	addc	9,9,12
	addze	12,10
	std	9,0(3)

	bdz	.Lppcasm_maw_adios

	ldu	8,8(4)
	mulld	9,6,8
	mulhdu	10,6,8
	ldu	11,8(3)
	addc	9,9,11
	addze	10,10
	addc	9,9,12
	addze	12,10
	std	9,0(3)

	bdz	.Lppcasm_maw_adios

	ldu	8,8(4)
	mulld	9,6,8
	mulhdu	10,6,8
	ldu	11,8(3)
	addc	9,9,11
	addze	10,10
	addc	9,9,12
	addze	12,10
	std	9,0(3)

.Lppcasm_maw_adios:
	addi	3,12,0
	blr	
.long	0
.byte	0,12,0x14,0,0,0,4,0
.long	0

.align	4

File Added: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/ppc64-mont.S
.machine	"any"
.text

.globl	bn_mul_mont_fpu64
.type	bn_mul_mont_fpu64,@function
.section	".opd","aw"
.align	3
bn_mul_mont_fpu64:
.quad	.bn_mul_mont_fpu64,.TOC.@tocbase,0
.previous

.align	5
.bn_mul_mont_fpu64:
	cmpwi	8,3
	mr	9,3
	li	3,0
	bltlr
	andi.	0,8,1
	bnelr

	slwi	8,8,3
	li	12,-4096
	slwi	10,8,2
	add	10,10,8
	addi	10,10,552
	subf	10,10,1
	and	10,10,12
	subf	10,1,10
	mr	12,1
	stdux	1,1,10

	std	19,-200(12)
	std	20,-192(12)
	std	21,-184(12)
	std	22,-176(12)
	std	23,-168(12)
	std	24,-160(12)
	std	25,-152(12)
	std	26,-144(12)
	std	27,-136(12)
	std	28,-128(12)
	std	29,-120(12)
	std	30,-112(12)
	std	31,-104(12)
	stfd	20,-96(12)
	stfd	21,-88(12)
	stfd	22,-80(12)
	stfd	23,-72(12)
	stfd	24,-64(12)
	stfd	25,-56(12)
	stfd	26,-48(12)
	stfd	27,-40(12)
	stfd	28,-32(12)
	stfd	29,-24(12)
	stfd	30,-16(12)
	stfd	31,-8(12)

	addi	10,1,264
	li	12,-64
	add	22,10,8
	and	22,22,12

	addi	22,22,-8
	srwi	11,8,4
	addi	11,11,-1
	addi	10,1,184
	li	0,0
	mtctr	11
	ld	23,0(4)
	ld	27,0(5)
	ld	7,0(7)

	mulld	31,23,27

	rldicl	24,27,0,48
	rldicl	25,27,48,48
	rldicl	26,27,32,48
	rldicl	27,27,16,48
	std	24,64(1)
	std	25,72(1)
	std	26,80(1)
	std	27,88(1)

	mulld	31,31,7

	rldicl	28,31,0,48
	rldicl	29,31,48,48
	rldicl	30,31,32,48
	rldicl	31,31,16,48
	std	28,96(1)
	std	29,104(1)
	std	30,112(1)
	std	31,120(1)

	rldicl	24,23,0,32
	rldicl	25,23,32,32
	lwz	26,12(4)
	lwz	27,8(4)
	lwz	28,4(6)
	lwz	29,0(6)
	lwz	30,12(6)
	lwz	31,8(6)
	lfd	0,64(1)
	lfd	1,72(1)
	lfd	2,80(1)
	lfd	3,88(1)
	lfd	4,96(1)
	lfd	5,104(1)
	lfd	6,112(1)
	lfd	7,120(1)
	std	24,128(1)
	std	25,136(1)
	std	26,144(1)
	std	27,152(1)
	std	28,160(1)
	std	29,168(1)
	std	30,176(1)
	std	31,184(1)
	fcfid	0,0
	fcfid	1,1
	fcfid	2,2
	fcfid	3,3
	fcfid	4,4
	fcfid	5,5
	fcfid	6,6
	fcfid	7,7

	lfd	10,128(1)
	lfd	11,136(1)
	lfd	12,144(1)
	lfd	13,152(1)
	lfd	20,160(1)
	lfd	21,168(1)
	lfd	22,176(1)
	lfd	23,184(1)
	fcfid	10,10
	fcfid	11,11
	fcfid	12,12
	fcfid	13,13
	fcfid	20,20
	fcfid	21,21
	fcfid	22,22
	fcfid	23,23
	addi	4,4,16
	addi	6,6,16

	fmul	26,11,0
	fmul	27,11,1
	stfd	10,8(22)
	stfd	11,16(22)
	fmul	28,12,0
	fmul	29,12,1
	stfd	12,24(22)
	stfd	13,32(22)
	fmul	30,13,0
	fmul	31,13,1
	stfd	20,40(22)
	stfd	21,48(22)
	fmul	24,10,0
	fmul	25,10,1
	stfd	22,56(22)
	stfdu	23,64(22)

	fmadd	26,10,2,26
	fmadd	27,10,3,27
	fmadd	28,11,2,28
	fmadd	29,11,3,29
	fmadd	30,12,2,30
	fmadd	31,12,3,31
	fmul	8,13,2
	fmul	9,13,3

	fmadd	26,21,4,26
	fmadd	27,21,5,27
	fmadd	28,22,4,28
	fmadd	29,22,5,29
	fmadd	30,23,4,30
	fmadd	31,23,5,31
	fmadd	24,20,4,24
	fmadd	25,20,5,25

	fmadd	26,20,6,26
	fmadd	27,20,7,27
	fmadd	28,21,6,28
	fmadd	29,21,7,29
	fmadd	30,22,6,30
	fmadd	31,22,7,31
	fmadd	8,23,6,8
	fmadd	9,23,7,9

	fctid	24,24
	fctid	25,25
	fctid	26,26
	fctid	27,27
	fctid	28,28
	fctid	29,29
	fctid	30,30
	fctid	31,31

	stfd	24,64(1)
	stfd	25,72(1)
	stfd	26,80(1)
	stfd	27,88(1)
	stfd	28,96(1)
	stfd	29,104(1)
	stfd	30,112(1)
	stfd	31,120(1)

.align	5
.L1st:
	lwz	24,4(4)
	lwz	25,0(4)
	lwz	26,12(4)
	lwz	27,8(4)
	lwz	28,4(6)
	lwz	29,0(6)
	lwz	30,12(6)
	lwz	31,8(6)
	std	24,128(1)
	std	25,136(1)
	std	26,144(1)
	std	27,152(1)
	std	28,160(1)
	std	29,168(1)
	std	30,176(1)
	std	31,184(1)
	ld	24,64(1)
	ld	25,72(1)
	ld	26,80(1)
	ld	27,88(1)
	ld	28,96(1)
	ld	29,104(1)
	ld	30,112(1)
	ld	31,120(1)
	lfd	10,128(1)
	lfd	11,136(1)
	lfd	12,144(1)
	lfd	13,152(1)
	lfd	20,160(1)
	lfd	21,168(1)
	lfd	22,176(1)
	lfd	23,184(1)
	fcfid	10,10
	fcfid	11,11
	fcfid	12,12
	fcfid	13,13
	fcfid	20,20
	fcfid	21,21
	fcfid	22,22
	fcfid	23,23
	addi	4,4,16
	addi	6,6,16

	fmul	26,11,0
	fmul	27,11,1
	fmul	28,12,0
	fmul	29,12,1
	stfd	10,8(22)
	stfd	11,16(22)
	fmul	30,13,0
	fmul	31,13,1
	fmadd	24,10,0,8
	fmadd	25,10,1,9
	stfd	12,24(22)
	stfd	13,32(22)
	fmadd	26,10,2,26
	fmadd	27,10,3,27
	fmadd	28,11,2,28
	fmadd	29,11,3,29
	stfd	20,40(22)
	stfd	21,48(22)
	fmadd	30,12,2,30
	fmadd	31,12,3,31
	add	24,24,0
	fmul	8,13,2
	fmul	9,13,3
	stfd	22,56(22)
	stfdu	23,64(22)
	srdi	0,24,16
	add	25,25,0
	srdi	0,25,16

	fmadd	26,21,4,26
	fmadd	27,21,5,27
	insrdi	24,25,16,32
	fmadd	28,22,4,28
	fmadd	29,22,5,29
	add	26,26,0
	fmadd	30,23,4,30
	fmadd	31,23,5,31
	srdi	0,26,16
	fmadd	24,20,4,24
	fmadd	25,20,5,25
	insrdi	24,26,16,16
	add	27,27,0
	srdi	0,27,16

	fmadd	26,20,6,26
	fmadd	27,20,7,27
	insrdi	24,27,16,0
	fmadd	28,21,6,28
	fmadd	29,21,7,29
	add	28,28,0
	fmadd	30,22,6,30
	fmadd	31,22,7,31
	srdi	0,28,16
	fmadd	8,23,6,8
	fmadd	9,23,7,9
	add	29,29,0
	srdi	0,29,16
	insrdi	28,29,16,32

	fctid	24,24
	fctid	25,25
	add	30,30,0
	fctid	26,26
	fctid	27,27
	srdi	0,30,16
	fctid	28,28
	fctid	29,29
	insrdi	28,30,16,16
	fctid	30,30
	fctid	31,31
	add	31,31,0
	insrdi	28,31,16,0
	srdi	0,31,16

	stfd	24,64(1)
	stfd	25,72(1)
	stfd	26,80(1)
	stfd	27,88(1)
	stfd	28,96(1)
	stfd	29,104(1)
	stfd	30,112(1)
	stfd	31,120(1)
	std	24,8(10)
	stdu	28,16(10)
	bc	16,0,.L1st

	fctid	8,8
	fctid	9,9
	ld	24,64(1)
	ld	25,72(1)
	ld	26,80(1)
	ld	27,88(1)
	ld	28,96(1)
	ld	29,104(1)
	ld	30,112(1)
	ld	31,120(1)
	stfd	8,128(1)
	stfd	9,136(1)

	add	24,24,0
	srdi	0,24,16
	add	25,25,0
	srdi	0,25,16
	insrdi	24,25,16,32
	add	26,26,0
	srdi	0,26,16
	insrdi	24,26,16,16
	add	27,27,0
	srdi	0,27,16
	insrdi	24,27,16,0
	add	28,28,0
	srdi	0,28,16
	add	29,29,0
	srdi	0,29,16
	insrdi	28,29,16,32
	add	30,30,0
	srdi	0,30,16
	insrdi	28,30,16,16
	add	31,31,0
	insrdi	28,31,16,0
	srdi	0,31,16
	ld	30,128(1)
	ld	31,136(1)

	std	24,8(10)
	stdu	28,16(10)

	add	30,30,0
	srdi	0,30,16
	add	31,31,0
	insrdi	30,31,48,0
	srdi	3,31,48
	std	30,8(10)
	slwi	31,8,2
	subf	22,31,22

	li	12,8
.align	5
.Louter:
	addi	10,1,192
	li	0,0
	mtctr	11
	ldx	27,5,12

	ld	30,200(1)
	mulld	31,23,27
	add	31,31,30

	rldicl	24,27,0,48
	rldicl	25,27,48,48
	rldicl	26,27,32,48
	rldicl	27,27,16,48
	std	24,64(1)
	std	25,72(1)
	std	26,80(1)
	std	27,88(1)

	mulld	31,31,7

	rldicl	28,31,0,48
	rldicl	29,31,48,48
	rldicl	30,31,32,48
	rldicl	31,31,16,48
	std	28,96(1)
	std	29,104(1)
	std	30,112(1)
	std	31,120(1)
	lfd	10,8(22)
	lfd	11,16(22)
	lfd	12,24(22)
	lfd	13,32(22)
	lfd	20,40(22)
	lfd	21,48(22)
	lfd	22,56(22)
	lfdu	23,64(22)

	lfd	0,64(1)
	lfd	1,72(1)
	lfd	2,80(1)
	lfd	3,88(1)
	lfd	4,96(1)
	lfd	5,104(1)
	lfd	6,112(1)
	lfd	7,120(1)

	fcfid	0,0
	fcfid	1,1
	fcfid	2,2
	fcfid	3,3
	fcfid	4,4
	fcfid	5,5
	fcfid	6,6
	fcfid	7,7

	fmul	26,11,0
	fmul	27,11,1
	fmul	28,12,0
	fmul	29,12,1
	fmul	30,13,0
	fmul	31,13,1
	fmul	24,10,0
	fmul	25,10,1

	fmadd	26,10,2,26
	fmadd	27,10,3,27
	fmadd	28,11,2,28
	fmadd	29,11,3,29
	fmadd	30,12,2,30
	fmadd	31,12,3,31
	fmul	8,13,2
	fmul	9,13,3

	fmadd	26,21,4,26
	fmadd	27,21,5,27
	lfd	10,8(22)
	lfd	11,16(22)
	fmadd	28,22,4,28
	fmadd	29,22,5,29
	lfd	12,24(22)
	lfd	13,32(22)
	fmadd	30,23,4,30
	fmadd	31,23,5,31
	fmadd	24,20,4,24
	fmadd	25,20,5,25

	fmadd	26,20,6,26
	fmadd	27,20,7,27
	fmadd	28,21,6,28
	fmadd	29,21,7,29
	fmadd	30,22,6,30
	fmadd	31,22,7,31
	fmadd	8,23,6,8
	fmadd	9,23,7,9

	fctid	24,24
	fctid	25,25
	fctid	26,26
	fctid	27,27
	fctid	28,28
	fctid	29,29
	fctid	30,30
	fctid	31,31

	stfd	24,64(1)
	stfd	25,72(1)
	stfd	26,80(1)
	stfd	27,88(1)
	stfd	28,96(1)
	stfd	29,104(1)
	stfd	30,112(1)
	stfd	31,120(1)

.align	5
.Linner:
	fmul	26,11,0
	fmul	27,11,1
	fmul	28,12,0
	fmul	29,12,1
	lfd	20,40(22)
	lfd	21,48(22)
	fmul	30,13,0
	fmul	31,13,1
	fmadd	24,10,0,8
	fmadd	25,10,1,9
	lfd	22,56(22)
	lfdu	23,64(22)

	fmadd	26,10,2,26
	fmadd	27,10,3,27
	fmadd	28,11,2,28
	fmadd	29,11,3,29
	lfd	10,8(22)
	lfd	11,16(22)
	fmadd	30,12,2,30
	fmadd	31,12,3,31
	fmul	8,13,2
	fmul	9,13,3
	lfd	12,24(22)
	lfd	13,32(22)
	fmadd	26,21,4,26
	fmadd	27,21,5,27
	ld	24,64(1)
	ld	25,72(1)
	fmadd	28,22,4,28
	fmadd	29,22,5,29
	ld	26,80(1)
	ld	27,88(1)
	fmadd	30,23,4,30
	fmadd	31,23,5,31
	add	24,24,0
	ld	28,96(1)
	ld	29,104(1)
	fmadd	24,20,4,24
	fmadd	25,20,5,25
	srdi	0,24,16
	add	25,25,0
	srdi	0,25,16
	ld	30,112(1)
	ld	31,120(1)

	fmadd	26,20,6,26
	fmadd	27,20,7,27
	insrdi	24,25,16,32
	ld	25,8(10)
	fmadd	28,21,6,28
	fmadd	29,21,7,29
	add	26,26,0
	fmadd	30,22,6,30
	fmadd	31,22,7,31
	srdi	0,26,16
	insrdi	24,26,16,16
	fmadd	8,23,6,8
	fmadd	9,23,7,9
	add	27,27,0
	ldu	26,16(10)
	srdi	0,27,16
	insrdi	24,27,16,0
	add	28,28,0

	fctid	24,24
	fctid	25,25
	srdi	0,28,16
	fctid	26,26
	fctid	27,27
	add	29,29,0
	fctid	28,28
	fctid	29,29
	srdi	0,29,16
	insrdi	28,29,16,32
	fctid	30,30
	fctid	31,31
	add	30,30,0
	srdi	0,30,16
	insrdi	28,30,16,16

	stfd	24,64(1)
	stfd	25,72(1)
	add	31,31,0
	addc	27,24,25
	stfd	26,80(1)
	stfd	27,88(1)
	insrdi	28,31,16,0
	srdi	0,31,16
	stfd	28,96(1)
	stfd	29,104(1)
	adde	29,28,26
	stfd	30,112(1)
	stfd	31,120(1)
	addze	0,0
	std	27,-16(10)
	std	29,-8(10)
	bc	16,0,.Linner

	fctid	8,8
	fctid	9,9
	ld	24,64(1)
	ld	25,72(1)
	ld	26,80(1)
	ld	27,88(1)
	ld	28,96(1)
	ld	29,104(1)
	ld	30,112(1)
	ld	31,120(1)
	stfd	8,128(1)
	stfd	9,136(1)

	add	24,24,0
	srdi	0,24,16
	add	25,25,0
	srdi	0,25,16
	insrdi	24,25,16,32
	add	26,26,0
	ld	25,8(10)
	srdi	0,26,16
	insrdi	24,26,16,16
	add	27,27,0
	ldu	26,16(10)
	srdi	0,27,16
	insrdi	24,27,16,0
	add	28,28,0
	srdi	0,28,16
	add	29,29,0
	srdi	0,29,16
	insrdi	28,29,16,32
	add	30,30,0
	srdi	0,30,16
	insrdi	28,30,16,16
	add	31,31,0
	insrdi	28,31,16,0
	srdi	0,31,16
	ld	30,128(1)
	ld	31,136(1)

	addc	27,24,25
	adde	29,28,26
	addze	0,0

	std	27,-16(10)
	std	29,-8(10)

	add	0,0,3
	add	30,30,0
	srdi	0,30,16
	add	31,31,0
	insrdi	30,31,48,0
	srdi	3,31,48
	std	30,0(10)
	slwi	31,8,2
	addi	12,12,8
	subf	22,31,22
	cmpw	12,8
	blt-	.Louter
	subf	6,8,6
	addi	11,11,1
	subfc	12,12,12
	addi	10,1,200
	addi	28,1,208
	addi	29,6,8
	addi	30,9,8
	mtctr	11

.align	4
.Lsub:	ldx	24,10,12
	ldx	25,6,12
	ldx	26,28,12
	ldx	27,29,12
	subfe	24,25,24
	subfe	26,27,26
	stdx	24,9,12
	stdx	26,30,12
	addi	12,12,16
	bc	16,0,.Lsub

	li	12,0
	subfe	3,12,3
	and	4,10,3
	andc	6,9,3
	or	4,4,6
	addi	31,4,8
	mtctr	11

.align	4
.Lcopy:
	ldx	24,4,12
	ldx	25,31,12
	std	12,8(22)
	std	12,16(22)
	std	12,24(22)
	std	12,32(22)
	std	12,40(22)
	std	12,48(22)
	std	12,56(22)
	stdu	12,64(22)
	stdx	24,9,12
	stdx	25,30,12
	stdx	12,10,12
	stdx	12,28,12
	addi	12,12,16
	bc	16,0,.Lcopy
	ld	12,0(1)
	li	3,1
	ld	19,-200(12)
	ld	20,-192(12)
	ld	21,-184(12)
	ld	22,-176(12)
	ld	23,-168(12)
	ld	24,-160(12)
	ld	25,-152(12)
	ld	26,-144(12)
	ld	27,-136(12)
	ld	28,-128(12)
	ld	29,-120(12)
	ld	30,-112(12)
	ld	31,-104(12)
	lfd	20,-96(12)
	lfd	21,-88(12)
	lfd	22,-80(12)
	lfd	23,-72(12)
	lfd	24,-64(12)
	lfd	25,-56(12)
	lfd	26,-48(12)
	lfd	27,-40(12)
	lfd	28,-32(12)
	lfd	29,-24(12)
	lfd	30,-16(12)
	lfd	31,-8(12)
	mr	1,12
	blr	
.long	0
.byte	0,12,4,0,0x8c,13,6,0
.long	0


.byte	77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,80,80,67,54,52,44,32,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

File Added: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/ppccpuid.S
.machine	"any"
.text

.globl	OPENSSL_ppc64_probe
.type	OPENSSL_ppc64_probe,@function
.section	".opd","aw"
.align	3
OPENSSL_ppc64_probe:
.quad	.OPENSSL_ppc64_probe,.TOC.@tocbase,0
.previous

.align	4
.OPENSSL_ppc64_probe:
	fcfid	1,1
	rldicl	0,0,32,32
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0


.globl	OPENSSL_altivec_probe
.type	OPENSSL_altivec_probe,@function
.section	".opd","aw"
.align	3
OPENSSL_altivec_probe:
.quad	.OPENSSL_altivec_probe,.TOC.@tocbase,0
.previous

.align	4
.OPENSSL_altivec_probe:
.long	0x10000484
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0


.globl	OPENSSL_crypto207_probe
.type	OPENSSL_crypto207_probe,@function
.section	".opd","aw"
.align	3
OPENSSL_crypto207_probe:
.quad	.OPENSSL_crypto207_probe,.TOC.@tocbase,0
.previous

.align	4
.OPENSSL_crypto207_probe:
.long	0x7C000E99
.long	0x10000508
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0


.globl	OPENSSL_wipe_cpu
.type	OPENSSL_wipe_cpu,@function
.section	".opd","aw"
.align	3
OPENSSL_wipe_cpu:
.quad	.OPENSSL_wipe_cpu,.TOC.@tocbase,0
.previous

.align	4
.OPENSSL_wipe_cpu:
	xor	0,0,0
	fmr	0,31
	fmr	1,31
	fmr	2,31
	mr	3,1
	fmr	3,31
	xor	4,4,4
	fmr	4,31
	xor	5,5,5
	fmr	5,31
	xor	6,6,6
	fmr	6,31
	xor	7,7,7
	fmr	7,31
	xor	8,8,8
	fmr	8,31
	xor	9,9,9
	fmr	9,31
	xor	10,10,10
	fmr	10,31
	xor	11,11,11
	fmr	11,31
	xor	12,12,12
	fmr	12,31
	fmr	13,31
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0


.globl	OPENSSL_atomic_add
.type	OPENSSL_atomic_add,@function
.section	".opd","aw"
.align	3
OPENSSL_atomic_add:
.quad	.OPENSSL_atomic_add,.TOC.@tocbase,0
.previous

.align	4
.OPENSSL_atomic_add:
.Ladd:	lwarx	5,0,3
	add	0,4,5
	stwcx.	0,0,3
	bne-	.Ladd
	extsw	3,0
	blr	
.long	0
.byte	0,12,0x14,0,0,0,2,0
.long	0


.globl	OPENSSL_rdtsc
.type	OPENSSL_rdtsc,@function
.section	".opd","aw"
.align	3
OPENSSL_rdtsc:
.quad	.OPENSSL_rdtsc,.TOC.@tocbase,0
.previous

.align	4
.OPENSSL_rdtsc:
.Lrdtsc:
	mftb	5
	mftbu	4
	mftb	3
	cmplw	0,3,5
	bne	.Lrdtsc
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0


.globl	OPENSSL_cleanse
.type	OPENSSL_cleanse,@function
.section	".opd","aw"
.align	3
OPENSSL_cleanse:
.quad	.OPENSSL_cleanse,.TOC.@tocbase,0
.previous

.align	4
.OPENSSL_cleanse:
	cmpldi	4,7
	li	0,0
	bge	.Lot
	cmpldi	4,0
	beqlr
.Little:	mtctr	4
	stb	0,0(3)
	addi	3,3,1
	bc	16,0,$-8
	blr	
.Lot:	andi.	5,3,3
	beq	.Laligned
	stb	0,0(3)
	subi	4,4,1
	addi	3,3,1
	b	.Lot
.Laligned:
	srdi	5,4,2
	mtctr	5
	stw	0,0(3)
	addi	3,3,4
	bc	16,0,$-8
	andi.	4,4,3
	bne	.Little
	blr	
.long	0
.byte	0,12,0x14,0,0,0,2,0
.long	0


File Added: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/sha.inc
.PATH.S: ${.PARSEDIR}
SHA_SRCS = sha1-ppc.S
SHACPPFLAGS = -DSHA1_ASM
.if NOT_USING_SHAXXX_FROM_LIBC
SHA_SRCS += sha512-ppc.S sha512p8-ppc.S
SHA_SRCS += sha256-ppc.S sha256p8-ppc.S
SHACPPFLAGS+= -DSHA256_ASM -DSHA512_ASM
.endif
.include "../../sha.inc"

File Added: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/sha1-ppc.S
.machine	"any"
.text

.globl	sha1_block_data_order
.type	sha1_block_data_order,@function
.section	".opd","aw"
.align	3
sha1_block_data_order:
.quad	.sha1_block_data_order,.TOC.@tocbase,0
.previous

.align	4
.sha1_block_data_order:
	stdu	1,-256(1)
	mflr	0
	std	15,120(1)
	std	16,128(1)
	std	17,136(1)
	std	18,144(1)
	std	19,152(1)
	std	20,160(1)
	std	21,168(1)
	std	22,176(1)
	std	23,184(1)
	std	24,192(1)
	std	25,200(1)
	std	26,208(1)
	std	27,216(1)
	std	28,224(1)
	std	29,232(1)
	std	30,240(1)
	std	31,248(1)
	std	0,272(1)
	lwz	7,0(3)
	lwz	8,4(3)
	lwz	9,8(3)
	lwz	10,12(3)
	lwz	11,16(3)
	andi.	0,4,3
	bne	.Lunaligned
.Laligned:
	mtctr	5
	bl	.Lsha1_block_private
	b	.Ldone







.align	4
.Lunaligned:
	subfic	6,4,4096
	andi.	6,6,4095
	srwi.	6,6,6
	beq	.Lcross_page
	cmpld	5,6
	ble	.Laligned
	mtctr	6
	subfc	5,6,5
	bl	.Lsha1_block_private
.Lcross_page:
	li	6,16
	mtctr	6
	addi	20,1,48
.Lmemcpy:
	lbz	16,0(4)
	lbz	17,1(4)
	lbz	18,2(4)
	lbz	19,3(4)
	addi	4,4,4
	stb	16,0(20)
	stb	17,1(20)
	stb	18,2(20)
	stb	19,3(20)
	addi	20,20,4
	bc	16,0,.Lmemcpy

	std	4,112(1)
	li	6,1
	addi	4,1,48
	mtctr	6
	bl	.Lsha1_block_private
	ld	4,112(1)
	addic.	5,5,-1
	bne	.Lunaligned

.Ldone:
	ld	0,272(1)
	ld	15,120(1)
	ld	16,128(1)
	ld	17,136(1)
	ld	18,144(1)
	ld	19,152(1)
	ld	20,160(1)
	ld	21,168(1)
	ld	22,176(1)
	ld	23,184(1)
	ld	24,192(1)
	ld	25,200(1)
	ld	26,208(1)
	ld	27,216(1)
	ld	28,224(1)
	ld	29,232(1)
	ld	30,240(1)
	ld	31,248(1)
	mtlr	0
	addi	1,1,256
	blr	
.long	0
.byte	0,12,4,1,0x80,18,3,0
.long	0
.align	4
.Lsha1_block_private:
	lis	0,0x5a82
	ori	0,0,0x7999
	lwz	16,0(4)
	lwz	17,4(4)
	add	12,0,11
	rotlwi	11,7,5
	add	12,12,16
	and	15,9,8
	add	12,12,11
	andc	6,10,8
	rotlwi	8,8,30
	or	15,15,6
	add	12,12,15
	lwz	18,8(4)
	add	11,0,10
	rotlwi	10,12,5
	add	11,11,17
	and	15,8,7
	add	11,11,10
	andc	6,9,7
	rotlwi	7,7,30
	or	15,15,6
	add	11,11,15
	lwz	19,12(4)
	add	10,0,9
	rotlwi	9,11,5
	add	10,10,18
	and	15,7,12
	add	10,10,9
	andc	6,8,12
	rotlwi	12,12,30
	or	15,15,6
	add	10,10,15
	lwz	20,16(4)
	add	9,0,8
	rotlwi	8,10,5
	add	9,9,19
	and	15,12,11
	add	9,9,8
	andc	6,7,11
	rotlwi	11,11,30
	or	15,15,6
	add	9,9,15
	lwz	21,20(4)
	add	8,0,7
	rotlwi	7,9,5
	add	8,8,20
	and	15,11,10
	add	8,8,7
	andc	6,12,10
	rotlwi	10,10,30
	or	15,15,6
	add	8,8,15
	lwz	22,24(4)
	add	7,0,12
	rotlwi	12,8,5
	add	7,7,21
	and	15,10,9
	add	7,7,12
	andc	6,11,9
	rotlwi	9,9,30
	or	15,15,6
	add	7,7,15
	lwz	23,28(4)
	add	12,0,11
	rotlwi	11,7,5
	add	12,12,22
	and	15,9,8
	add	12,12,11
	andc	6,10,8
	rotlwi	8,8,30
	or	15,15,6
	add	12,12,15
	lwz	24,32(4)
	add	11,0,10
	rotlwi	10,12,5
	add	11,11,23
	and	15,8,7
	add	11,11,10
	andc	6,9,7
	rotlwi	7,7,30
	or	15,15,6
	add	11,11,15
	lwz	25,36(4)
	add	10,0,9
	rotlwi	9,11,5
	add	10,10,24
	and	15,7,12
	add	10,10,9
	andc	6,8,12
	rotlwi	12,12,30
	or	15,15,6
	add	10,10,15
	lwz	26,40(4)
	add	9,0,8
	rotlwi	8,10,5
	add	9,9,25
	and	15,12,11
	add	9,9,8
	andc	6,7,11
	rotlwi	11,11,30
	or	15,15,6
	add	9,9,15
	lwz	27,44(4)
	add	8,0,7
	rotlwi	7,9,5
	add	8,8,26
	and	15,11,10
	add	8,8,7
	andc	6,12,10
	rotlwi	10,10,30
	or	15,15,6
	add	8,8,15
	lwz	28,48(4)
	add	7,0,12
	rotlwi	12,8,5
	add	7,7,27
	and	15,10,9
	add	7,7,12
	andc	6,11,9
	rotlwi	9,9,30
	or	15,15,6
	add	7,7,15
	lwz	29,52(4)
	add	12,0,11
	rotlwi	11,7,5
	add	12,12,28
	and	15,9,8
	add	12,12,11
	andc	6,10,8
	rotlwi	8,8,30
	or	15,15,6
	add	12,12,15
	lwz	30,56(4)
	add	11,0,10
	rotlwi	10,12,5
	add	11,11,29
	and	15,8,7
	add	11,11,10
	andc	6,9,7
	rotlwi	7,7,30
	or	15,15,6
	add	11,11,15
	lwz	31,60(4)
	add	10,0,9
	rotlwi	9,11,5
	add	10,10,30
	and	15,7,12
	add	10,10,9
	andc	6,8,12
	rotlwi	12,12,30
	or	15,15,6
	add	10,10,15
	add	9,0,8
	rotlwi	8,10,5
	xor	16,16,18
	add	9,9,31
	and	15,12,11
	xor	16,16,24
	add	9,9,8
	andc	6,7,11
	rotlwi	11,11,30
	or	15,15,6
	xor	16,16,29
	add	9,9,15
	rotlwi	16,16,1
	add	8,0,7
	rotlwi	7,9,5
	xor	17,17,19
	add	8,8,16
	and	15,11,10
	xor	17,17,25
	add	8,8,7
	andc	6,12,10
	rotlwi	10,10,30
	or	15,15,6
	xor	17,17,30
	add	8,8,15
	rotlwi	17,17,1
	add	7,0,12
	rotlwi	12,8,5
	xor	18,18,20
	add	7,7,17
	and	15,10,9
	xor	18,18,26
	add	7,7,12
	andc	6,11,9
	rotlwi	9,9,30
	or	15,15,6
	xor	18,18,31
	add	7,7,15
	rotlwi	18,18,1
	add	12,0,11
	rotlwi	11,7,5
	xor	19,19,21
	add	12,12,18
	and	15,9,8
	xor	19,19,27
	add	12,12,11
	andc	6,10,8
	rotlwi	8,8,30
	or	15,15,6
	xor	19,19,16
	add	12,12,15
	rotlwi	19,19,1
	add	11,0,10
	rotlwi	10,12,5
	xor	20,20,22
	add	11,11,19
	and	15,8,7
	xor	20,20,28
	add	11,11,10
	andc	6,9,7
	rotlwi	7,7,30
	or	15,15,6
	xor	20,20,17
	add	11,11,15
	rotlwi	20,20,1
	lis	0,0x6ed9
	ori	0,0,0xeba1
	add	10,0,9
	xor	15,12,8
	rotlwi	9,11,5
	xor	21,21,23
	add	10,10,20
	xor	15,15,7
	xor	21,21,29
	add	10,10,15
	rotlwi	12,12,30
	xor	21,21,18
	add	10,10,9
	rotlwi	21,21,1
	add	9,0,8
	xor	15,11,7
	rotlwi	8,10,5
	xor	22,22,24
	add	9,9,21
	xor	15,15,12
	xor	22,22,30
	add	9,9,15
	rotlwi	11,11,30
	xor	22,22,19
	add	9,9,8
	rotlwi	22,22,1
	add	8,0,7
	xor	15,10,12
	rotlwi	7,9,5
	xor	23,23,25
	add	8,8,22
	xor	15,15,11
	xor	23,23,31
	add	8,8,15
	rotlwi	10,10,30
	xor	23,23,20
	add	8,8,7
	rotlwi	23,23,1
	add	7,0,12
	xor	15,9,11
	rotlwi	12,8,5
	xor	24,24,26
	add	7,7,23
	xor	15,15,10
	xor	24,24,16
	add	7,7,15
	rotlwi	9,9,30
	xor	24,24,21
	add	7,7,12
	rotlwi	24,24,1
	add	12,0,11
	xor	15,8,10
	rotlwi	11,7,5
	xor	25,25,27
	add	12,12,24
	xor	15,15,9
	xor	25,25,17
	add	12,12,15
	rotlwi	8,8,30
	xor	25,25,22
	add	12,12,11
	rotlwi	25,25,1
	add	11,0,10
	xor	15,7,9
	rotlwi	10,12,5
	xor	26,26,28
	add	11,11,25
	xor	15,15,8
	xor	26,26,18
	add	11,11,15
	rotlwi	7,7,30
	xor	26,26,23
	add	11,11,10
	rotlwi	26,26,1
	add	10,0,9
	xor	15,12,8
	rotlwi	9,11,5
	xor	27,27,29
	add	10,10,26
	xor	15,15,7
	xor	27,27,19
	add	10,10,15
	rotlwi	12,12,30
	xor	27,27,24
	add	10,10,9
	rotlwi	27,27,1
	add	9,0,8
	xor	15,11,7
	rotlwi	8,10,5
	xor	28,28,30
	add	9,9,27
	xor	15,15,12
	xor	28,28,20
	add	9,9,15
	rotlwi	11,11,30
	xor	28,28,25
	add	9,9,8
	rotlwi	28,28,1
	add	8,0,7
	xor	15,10,12
	rotlwi	7,9,5
	xor	29,29,31
	add	8,8,28
	xor	15,15,11
	xor	29,29,21
	add	8,8,15
	rotlwi	10,10,30
	xor	29,29,26
	add	8,8,7
	rotlwi	29,29,1
	add	7,0,12
	xor	15,9,11
	rotlwi	12,8,5
	xor	30,30,16
	add	7,7,29
	xor	15,15,10
	xor	30,30,22
	add	7,7,15
	rotlwi	9,9,30
	xor	30,30,27
	add	7,7,12
	rotlwi	30,30,1
	add	12,0,11
	xor	15,8,10
	rotlwi	11,7,5
	xor	31,31,17
	add	12,12,30
	xor	15,15,9
	xor	31,31,23
	add	12,12,15
	rotlwi	8,8,30
	xor	31,31,28
	add	12,12,11
	rotlwi	31,31,1
	add	11,0,10
	xor	15,7,9
	rotlwi	10,12,5
	xor	16,16,18
	add	11,11,31
	xor	15,15,8
	xor	16,16,24
	add	11,11,15
	rotlwi	7,7,30
	xor	16,16,29
	add	11,11,10
	rotlwi	16,16,1
	add	10,0,9
	xor	15,12,8
	rotlwi	9,11,5
	xor	17,17,19
	add	10,10,16
	xor	15,15,7
	xor	17,17,25
	add	10,10,15
	rotlwi	12,12,30
	xor	17,17,30
	add	10,10,9
	rotlwi	17,17,1
	add	9,0,8
	xor	15,11,7
	rotlwi	8,10,5
	xor	18,18,20
	add	9,9,17
	xor	15,15,12
	xor	18,18,26
	add	9,9,15
	rotlwi	11,11,30
	xor	18,18,31
	add	9,9,8
	rotlwi	18,18,1
	add	8,0,7
	xor	15,10,12
	rotlwi	7,9,5
	xor	19,19,21
	add	8,8,18
	xor	15,15,11
	xor	19,19,27
	add	8,8,15
	rotlwi	10,10,30
	xor	19,19,16
	add	8,8,7
	rotlwi	19,19,1
	add	7,0,12
	xor	15,9,11
	rotlwi	12,8,5
	xor	20,20,22
	add	7,7,19
	xor	15,15,10
	xor	20,20,28
	add	7,7,15
	rotlwi	9,9,30
	xor	20,20,17
	add	7,7,12
	rotlwi	20,20,1
	add	12,0,11
	xor	15,8,10
	rotlwi	11,7,5
	xor	21,21,23
	add	12,12,20
	xor	15,15,9
	xor	21,21,29
	add	12,12,15
	rotlwi	8,8,30
	xor	21,21,18
	add	12,12,11
	rotlwi	21,21,1
	add	11,0,10
	xor	15,7,9
	rotlwi	10,12,5
	xor	22,22,24
	add	11,11,21
	xor	15,15,8
	xor	22,22,30
	add	11,11,15
	rotlwi	7,7,30
	xor	22,22,19
	add	11,11,10
	rotlwi	22,22,1
	add	10,0,9
	xor	15,12,8
	rotlwi	9,11,5
	xor	23,23,25
	add	10,10,22
	xor	15,15,7
	xor	23,23,31
	add	10,10,15
	rotlwi	12,12,30
	xor	23,23,20
	add	10,10,9
	rotlwi	23,23,1
	add	9,0,8
	xor	15,11,7
	rotlwi	8,10,5
	xor	24,24,26
	add	9,9,23
	xor	15,15,12
	xor	24,24,16
	add	9,9,15
	rotlwi	11,11,30
	xor	24,24,21
	add	9,9,8
	rotlwi	24,24,1
	lis	0,0x8f1b
	ori	0,0,0xbcdc
	add	8,0,7
	rotlwi	7,9,5
	xor	25,25,27
	add	8,8,24
	and	15,10,11
	xor	25,25,17
	add	8,8,7
	or	6,10,11
	rotlwi	10,10,30
	xor	25,25,22
	and	6,6,12
	or	15,15,6
	rotlwi	25,25,1
	add	8,8,15
	add	7,0,12
	rotlwi	12,8,5
	xor	26,26,28
	add	7,7,25
	and	15,9,10
	xor	26,26,18
	add	7,7,12
	or	6,9,10
	rotlwi	9,9,30
	xor	26,26,23
	and	6,6,11
	or	15,15,6
	rotlwi	26,26,1
	add	7,7,15
	add	12,0,11
	rotlwi	11,7,5
	xor	27,27,29
	add	12,12,26
	and	15,8,9
	xor	27,27,19
	add	12,12,11
	or	6,8,9
	rotlwi	8,8,30
	xor	27,27,24
	and	6,6,10
	or	15,15,6
	rotlwi	27,27,1
	add	12,12,15
	add	11,0,10
	rotlwi	10,12,5
	xor	28,28,30
	add	11,11,27
	and	15,7,8
	xor	28,28,20
	add	11,11,10
	or	6,7,8
	rotlwi	7,7,30
	xor	28,28,25
	and	6,6,9
	or	15,15,6
	rotlwi	28,28,1
	add	11,11,15
	add	10,0,9
	rotlwi	9,11,5
	xor	29,29,31
	add	10,10,28
	and	15,12,7
	xor	29,29,21
	add	10,10,9
	or	6,12,7
	rotlwi	12,12,30
	xor	29,29,26
	and	6,6,8
	or	15,15,6
	rotlwi	29,29,1
	add	10,10,15
	add	9,0,8
	rotlwi	8,10,5
	xor	30,30,16
	add	9,9,29
	and	15,11,12
	xor	30,30,22
	add	9,9,8
	or	6,11,12
	rotlwi	11,11,30
	xor	30,30,27
	and	6,6,7
	or	15,15,6
	rotlwi	30,30,1
	add	9,9,15
	add	8,0,7
	rotlwi	7,9,5
	xor	31,31,17
	add	8,8,30
	and	15,10,11
	xor	31,31,23
	add	8,8,7
	or	6,10,11
	rotlwi	10,10,30
	xor	31,31,28
	and	6,6,12
	or	15,15,6
	rotlwi	31,31,1
	add	8,8,15
	add	7,0,12
	rotlwi	12,8,5
	xor	16,16,18
	add	7,7,31
	and	15,9,10
	xor	16,16,24
	add	7,7,12
	or	6,9,10
	rotlwi	9,9,30
	xor	16,16,29
	and	6,6,11
	or	15,15,6
	rotlwi	16,16,1
	add	7,7,15
	add	12,0,11
	rotlwi	11,7,5
	xor	17,17,19
	add	12,12,16
	and	15,8,9
	xor	17,17,25
	add	12,12,11
	or	6,8,9
	rotlwi	8,8,30
	xor	17,17,30
	and	6,6,10
	or	15,15,6
	rotlwi	17,17,1
	add	12,12,15
	add	11,0,10
	rotlwi	10,12,5
	xor	18,18,20
	add	11,11,17
	and	15,7,8
	xor	18,18,26
	add	11,11,10
	or	6,7,8
	rotlwi	7,7,30
	xor	18,18,31
	and	6,6,9
	or	15,15,6
	rotlwi	18,18,1
	add	11,11,15
	add	10,0,9
	rotlwi	9,11,5
	xor	19,19,21
	add	10,10,18
	and	15,12,7
	xor	19,19,27
	add	10,10,9
	or	6,12,7
	rotlwi	12,12,30
	xor	19,19,16
	and	6,6,8
	or	15,15,6
	rotlwi	19,19,1
	add	10,10,15
	add	9,0,8
	rotlwi	8,10,5
	xor	20,20,22
	add	9,9,19
	and	15,11,12
	xor	20,20,28
	add	9,9,8
	or	6,11,12
	rotlwi	11,11,30
	xor	20,20,17
	and	6,6,7
	or	15,15,6
	rotlwi	20,20,1
	add	9,9,15
	add	8,0,7
	rotlwi	7,9,5
	xor	21,21,23
	add	8,8,20
	and	15,10,11
	xor	21,21,29
	add	8,8,7
	or	6,10,11
	rotlwi	10,10,30
	xor	21,21,18
	and	6,6,12
	or	15,15,6
	rotlwi	21,21,1
	add	8,8,15
	add	7,0,12
	rotlwi	12,8,5
	xor	22,22,24
	add	7,7,21
	and	15,9,10
	xor	22,22,30
	add	7,7,12
	or	6,9,10
	rotlwi	9,9,30
	xor	22,22,19
	and	6,6,11
	or	15,15,6
	rotlwi	22,22,1
	add	7,7,15
	add	12,0,11
	rotlwi	11,7,5
	xor	23,23,25
	add	12,12,22
	and	15,8,9
	xor	23,23,31
	add	12,12,11
	or	6,8,9
	rotlwi	8,8,30
	xor	23,23,20
	and	6,6,10
	or	15,15,6
	rotlwi	23,23,1
	add	12,12,15
	add	11,0,10
	rotlwi	10,12,5
	xor	24,24,26
	add	11,11,23
	and	15,7,8
	xor	24,24,16
	add	11,11,10
	or	6,7,8
	rotlwi	7,7,30
	xor	24,24,21
	and	6,6,9
	or	15,15,6
	rotlwi	24,24,1
	add	11,11,15
	add	10,0,9
	rotlwi	9,11,5
	xor	25,25,27
	add	10,10,24
	and	15,12,7
	xor	25,25,17
	add	10,10,9
	or	6,12,7
	rotlwi	12,12,30
	xor	25,25,22
	and	6,6,8
	or	15,15,6
	rotlwi	25,25,1
	add	10,10,15
	add	9,0,8
	rotlwi	8,10,5
	xor	26,26,28
	add	9,9,25
	and	15,11,12
	xor	26,26,18
	add	9,9,8
	or	6,11,12
	rotlwi	11,11,30
	xor	26,26,23
	and	6,6,7
	or	15,15,6
	rotlwi	26,26,1
	add	9,9,15
	add	8,0,7
	rotlwi	7,9,5
	xor	27,27,29
	add	8,8,26
	and	15,10,11
	xor	27,27,19
	add	8,8,7
	or	6,10,11
	rotlwi	10,10,30
	xor	27,27,24
	and	6,6,12
	or	15,15,6
	rotlwi	27,27,1
	add	8,8,15
	add	7,0,12
	rotlwi	12,8,5
	xor	28,28,30
	add	7,7,27
	and	15,9,10
	xor	28,28,20
	add	7,7,12
	or	6,9,10
	rotlwi	9,9,30
	xor	28,28,25
	and	6,6,11
	or	15,15,6
	rotlwi	28,28,1
	add	7,7,15
	lis	0,0xca62
	ori	0,0,0xc1d6
	add	12,0,11
	xor	15,8,10
	rotlwi	11,7,5
	xor	29,29,31
	add	12,12,28
	xor	15,15,9
	xor	29,29,21
	add	12,12,15
	rotlwi	8,8,30
	xor	29,29,26
	add	12,12,11
	rotlwi	29,29,1
	add	11,0,10
	xor	15,7,9
	rotlwi	10,12,5
	xor	30,30,16
	add	11,11,29
	xor	15,15,8
	xor	30,30,22
	add	11,11,15
	rotlwi	7,7,30
	xor	30,30,27
	add	11,11,10
	rotlwi	30,30,1
	add	10,0,9
	xor	15,12,8
	rotlwi	9,11,5
	xor	31,31,17
	add	10,10,30
	xor	15,15,7
	xor	31,31,23
	add	10,10,15
	rotlwi	12,12,30
	xor	31,31,28
	add	10,10,9
	rotlwi	31,31,1
	add	9,0,8
	xor	15,11,7
	rotlwi	8,10,5
	xor	16,16,18
	add	9,9,31
	xor	15,15,12
	xor	16,16,24
	add	9,9,15
	rotlwi	11,11,30
	xor	16,16,29
	add	9,9,8
	rotlwi	16,16,1
	add	8,0,7
	xor	15,10,12
	rotlwi	7,9,5
	xor	17,17,19
	add	8,8,16
	xor	15,15,11
	xor	17,17,25
	add	8,8,15
	rotlwi	10,10,30
	xor	17,17,30
	add	8,8,7
	rotlwi	17,17,1
	add	7,0,12
	xor	15,9,11
	rotlwi	12,8,5
	xor	18,18,20
	add	7,7,17
	xor	15,15,10
	xor	18,18,26
	add	7,7,15
	rotlwi	9,9,30
	xor	18,18,31
	add	7,7,12
	rotlwi	18,18,1
	add	12,0,11
	xor	15,8,10
	rotlwi	11,7,5
	xor	19,19,21
	add	12,12,18
	xor	15,15,9
	xor	19,19,27
	add	12,12,15
	rotlwi	8,8,30
	xor	19,19,16
	add	12,12,11
	rotlwi	19,19,1
	add	11,0,10
	xor	15,7,9
	rotlwi	10,12,5
	xor	20,20,22
	add	11,11,19
	xor	15,15,8
	xor	20,20,28
	add	11,11,15
	rotlwi	7,7,30
	xor	20,20,17
	add	11,11,10
	rotlwi	20,20,1
	add	10,0,9
	xor	15,12,8
	rotlwi	9,11,5
	xor	21,21,23
	add	10,10,20
	xor	15,15,7
	xor	21,21,29
	add	10,10,15
	rotlwi	12,12,30
	xor	21,21,18
	add	10,10,9
	rotlwi	21,21,1
	add	9,0,8
	xor	15,11,7
	rotlwi	8,10,5
	xor	22,22,24
	add	9,9,21
	xor	15,15,12
	xor	22,22,30
	add	9,9,15
	rotlwi	11,11,30
	xor	22,22,19
	add	9,9,8
	rotlwi	22,22,1
	add	8,0,7
	xor	15,10,12
	rotlwi	7,9,5
	xor	23,23,25
	add	8,8,22
	xor	15,15,11
	xor	23,23,31
	add	8,8,15
	rotlwi	10,10,30
	xor	23,23,20
	add	8,8,7
	rotlwi	23,23,1
	add	7,0,12
	xor	15,9,11
	rotlwi	12,8,5
	xor	24,24,26
	add	7,7,23
	xor	15,15,10
	xor	24,24,16
	add	7,7,15
	rotlwi	9,9,30
	xor	24,24,21
	add	7,7,12
	rotlwi	24,24,1
	add	12,0,11
	xor	15,8,10
	rotlwi	11,7,5
	xor	25,25,27
	add	12,12,24
	xor	15,15,9
	xor	25,25,17
	add	12,12,15
	rotlwi	8,8,30
	xor	25,25,22
	add	12,12,11
	rotlwi	25,25,1
	add	11,0,10
	xor	15,7,9
	rotlwi	10,12,5
	xor	26,26,28
	add	11,11,25
	xor	15,15,8
	xor	26,26,18
	add	11,11,15
	rotlwi	7,7,30
	xor	26,26,23
	add	11,11,10
	rotlwi	26,26,1
	add	10,0,9
	xor	15,12,8
	rotlwi	9,11,5
	xor	27,27,29
	add	10,10,26
	xor	15,15,7
	xor	27,27,19
	add	10,10,15
	rotlwi	12,12,30
	xor	27,27,24
	add	10,10,9
	rotlwi	27,27,1
	add	9,0,8
	xor	15,11,7
	rotlwi	8,10,5
	xor	28,28,30
	add	9,9,27
	xor	15,15,12
	xor	28,28,20
	add	9,9,15
	rotlwi	11,11,30
	xor	28,28,25
	add	9,9,8
	rotlwi	28,28,1
	add	8,0,7
	xor	15,10,12
	rotlwi	7,9,5
	xor	29,29,31
	add	8,8,28
	xor	15,15,11
	xor	29,29,21
	add	8,8,15
	rotlwi	10,10,30
	xor	29,29,26
	add	8,8,7
	rotlwi	29,29,1
	add	7,0,12
	xor	15,9,11
	rotlwi	12,8,5
	xor	30,30,16
	add	7,7,29
	xor	15,15,10
	xor	30,30,22
	add	7,7,15
	rotlwi	9,9,30
	xor	30,30,27
	add	7,7,12
	rotlwi	30,30,1
	add	12,0,11
	xor	15,8,10
	rotlwi	11,7,5
	xor	31,31,17
	add	12,12,30
	xor	15,15,9
	xor	31,31,23
	add	12,12,15
	rotlwi	8,8,30
	xor	31,31,28
	add	12,12,11
	rotlwi	31,31,1
	add	11,0,10
	xor	15,7,9
	rotlwi	10,12,5
	lwz	16,0(3)
	add	11,11,31
	xor	15,15,8
	lwz	17,4(3)
	add	11,11,15
	rotlwi	7,7,30
	lwz	18,8(3)
	lwz	19,12(3)
	add	11,11,10
	lwz	20,16(3)
	add	16,16,11
	add	17,17,12
	add	18,18,7
	add	19,19,8
	add	20,20,9
	stw	16,0(3)
	mr	7,16
	stw	17,4(3)
	mr	8,17
	stw	18,8(3)
	mr	9,18
	stw	19,12(3)
	mr	10,19
	stw	20,16(3)
	mr	11,20
	addi	4,4,64
	bc	16,0,.Lsha1_block_private
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0

.byte	83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,80,80,67,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,102,121,46,99,104,97,108,109,101,114,115,46,115,101,62,0
.align	2

File Added: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/sha256-ppc.S
.machine	"any"
.text

.globl	sha256_block_ppc
.align	6
sha256_block_ppc:
	stdu	1,-320(1)
	mflr	0
	sldi	5,5,6

	std	3,144(1)

	std	14,176(1)
	std	15,184(1)
	std	16,192(1)
	std	17,200(1)
	std	18,208(1)
	std	19,216(1)
	std	20,224(1)
	std	21,232(1)
	std	22,240(1)
	std	23,248(1)
	std	24,256(1)
	std	25,264(1)
	std	26,272(1)
	std	27,280(1)
	std	28,288(1)
	std	29,296(1)
	std	30,304(1)
	std	31,312(1)
	std	0,336(1)
	lwz	8,0(3)
	mr	31,4
	lwz	9,4(3)
	lwz	10,8(3)
	lwz	11,12(3)
	lwz	12,16(3)
	lwz	6,20(3)
	lwz	14,24(3)
	lwz	15,28(3)
	bl	LPICmeup
LPICedup:
	andi.	0,31,3
	bne	Lunaligned
Laligned:
	add	5,31,5
	std	5,128(1)
	std	31,136(1)
	bl	Lsha2_block_private
	b	Ldone







.align	4
Lunaligned:
	subfic	0,31,4096
	andi.	0,0,4032
	beq	Lcross_page
	cmpld	5,0
	ble	Laligned
	subfc	5,0,5
	add	0,31,0
	std	5,120(1)
	std	0,128(1)
	std	31,136(1)
	bl	Lsha2_block_private

	ld	5,120(1)
Lcross_page:
	li	0,16
	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
	bc	16,0,Lmemcpy
	std	31,112(1)
	addi	0,1,112
	addi	31,1,48
	std	5,120(1)
	std	0,128(1)
	std	31,136(1)
	bl	Lsha2_block_private
	ld	31,112(1)
	ld	5,120(1)
	addic.	5,5,-64
	bne	Lunaligned

Ldone:
	ld	0,336(1)
	ld	14,176(1)
	ld	15,184(1)
	ld	16,192(1)
	ld	17,200(1)
	ld	18,208(1)
	ld	19,216(1)
	ld	20,224(1)
	ld	21,232(1)
	ld	22,240(1)
	ld	23,248(1)
	ld	24,256(1)
	ld	25,264(1)
	ld	26,272(1)
	ld	27,280(1)
	ld	28,288(1)
	ld	29,296(1)
	ld	30,304(1)
	ld	31,312(1)
	mtlr	0
	addi	1,1,320
	blr	
.long	0
.byte	0,12,4,1,0x80,18,3,0
.long	0
.align	4
Lsha2_block_private:
	lwz	0,0(7)
	lwz	16,0(31)
	rotrwi	3,12,6
	rotrwi	4,12,11
	and	5,6,12
	xor	3,3,4
	add	15,15,0
	andc	0,14,12
	rotrwi	4,4,14
	or	5,5,0
	add	15,15,16
	xor	3,3,4
	add	15,15,5
	add	15,15,3

	rotrwi	3,8,2
	rotrwi	4,8,13
	and	5,8,9
	and	0,8,10
	xor	3,3,4
	rotrwi	4,4,9
	xor	5,5,0
	and	0,9,10
	xor	3,3,4
	add	11,11,15
	xor	5,5,0
	lwz	0,4(7)
	add	15,15,3
	add	15,15,5

	lwz	17,4(31)
	rotrwi	3,11,6
	rotrwi	4,11,11
	and	5,12,11
	xor	3,3,4
	add	14,14,0
	andc	0,6,11
	rotrwi	4,4,14
	or	5,5,0
	add	14,14,17
	xor	3,3,4
	add	14,14,5
	add	14,14,3

	rotrwi	3,15,2
	rotrwi	4,15,13
	and	5,15,8
	and	0,15,9
	xor	3,3,4
	rotrwi	4,4,9
	xor	5,5,0
	and	0,8,9
	xor	3,3,4
	add	10,10,14
	xor	5,5,0
	lwz	0,8(7)
	add	14,14,3
	add	14,14,5

	lwz	18,8(31)
	rotrwi	3,10,6
	rotrwi	4,10,11
	and	5,11,10
	xor	3,3,4
	add	6,6,0
	andc	0,12,10
	rotrwi	4,4,14
	or	5,5,0
	add	6,6,18
	xor	3,3,4
	add	6,6,5
	add	6,6,3

	rotrwi	3,14,2
	rotrwi	4,14,13
	and	5,14,15
	and	0,14,8
	xor	3,3,4
	rotrwi	4,4,9
	xor	5,5,0
	and	0,15,8
	xor	3,3,4
	add	9,9,6
	xor	5,5,0
	lwz	0,12(7)
	add	6,6,3
	add	6,6,5

	lwz	19,12(31)
	rotrwi	3,9,6
	rotrwi	4,9,11
	and	5,10,9
	xor	3,3,4
	add	12,12,0
	andc	0,11,9
	rotrwi	4,4,14
	or	5,5,0
	add	12,12,19
	xor	3,3,4
	add	12,12,5
	add	12,12,3

	rotrwi	3,6,2
	rotrwi	4,6,13
	and	5,6,14
	and	0,6,15
	xor	3,3,4
	rotrwi	4,4,9
	xor	5,5,0
	and	0,14,15
	xor	3,3,4
	add	8,8,12
	xor	5,5,0
	lwz	0,16(7)
	add	12,12,3
	add	12,12,5

	lwz	20,16(31)
	rotrwi	3,8,6
	rotrwi	4,8,11
	and	5,9,8
	xor	3,3,4
	add	11,11,0
	andc	0,10,8
	rotrwi	4,4,14
	or	5,5,0
	add	11,11,20
	xor	3,3,4
	add	11,11,5
	add	11,11,3

	rotrwi	3,12,2
	rotrwi	4,12,13
	and	5,12,6
	and	0,12,14
	xor	3,3,4
	rotrwi	4,4,9
	xor	5,5,0
	and	0,6,14
	xor	3,3,4
	add	15,15,11
	xor	5,5,0
	lwz	0,20(7)
	add	11,11,3
	add	11,11,5

	lwz	21,20(31)
	rotrwi	3,15,6
	rotrwi	4,15,11
	and	5,8,15
	xor	3,3,4
	add	10,10,0
	andc	0,9,15
	rotrwi	4,4,14
	or	5,5,0
	add	10,10,21
	xor	3,3,4
	add	10,10,5
	add	10,10,3

	rotrwi	3,11,2
	rotrwi	4,11,13
	and	5,11,12
	and	0,11,6
	xor	3,3,4
	rotrwi	4,4,9
	xor	5,5,0
	and	0,12,6
	xor	3,3,4
	add	14,14,10
	xor	5,5,0
	lwz	0,24(7)
	add	10,10,3
	add	10,10,5

	lwz	22,24(31)
	rotrwi	3,14,6
	rotrwi	4,14,11
	and	5,15,14
	xor	3,3,4
	add	9,9,0
	andc	0,8,14
	rotrwi	4,4,14
	or	5,5,0
	add	9,9,22
	xor	3,3,4
	add	9,9,5
	add	9,9,3

	rotrwi	3,10,2
	rotrwi	4,10,13
	and	5,10,11
	and	0,10,12
	xor	3,3,4
	rotrwi	4,4,9
	xor	5,5,0
	and	0,11,12
	xor	3,3,4
	add	6,6,9
	xor	5,5,0
	lwz	0,28(7)
	add	9,9,3
	add	9,9,5

	lwz	23,28(31)
	rotrwi	3,6,6
	rotrwi	4,6,11
	and	5,14,6
	xor	3,3,4
	add	8,8,0
	andc	0,15,6
	rotrwi	4,4,14
	or	5,5,0
	add	8,8,23
	xor	3,3,4
	add	8,8,5
	add	8,8,3

	rotrwi	3,9,2
	rotrwi	4,9,13
	and	5,9,10
	and	0,9,11
	xor	3,3,4
	rotrwi	4,4,9
	xor	5,5,0
	and	0,10,11
	xor	3,3,4
	add	12,12,8
	xor	5,5,0
	lwz	0,32(7)
	add	8,8,3
	add	8,8,5

	lwz	24,32(31)
	rotrwi	3,12,6
	rotrwi	4,12,11
	and	5,6,12
	xor	3,3,4
	add	15,15,0
	andc	0,14,12
	rotrwi	4,4,14
	or	5,5,0
	add	15,15,24
	xor	3,3,4
	add	15,15,5
	add	15,15,3

	rotrwi	3,8,2
	rotrwi	4,8,13
	and	5,8,9
	and	0,8,10
	xor	3,3,4
	rotrwi	4,4,9
	xor	5,5,0
	and	0,9,10
	xor	3,3,4
	add	11,11,15
	xor	5,5,0
	lwz	0,36(7)
	add	15,15,3
	add	15,15,5

	lwz	25,36(31)
	rotrwi	3,11,6
	rotrwi	4,11,11
	and	5,12,11
	xor	3,3,4
	add	14,14,0
	andc	0,6,11
	rotrwi	4,4,14
	or	5,5,0
	add	14,14,25
	xor	3,3,4
	add	14,14,5
	add	14,14,3

	rotrwi	3,15,2
	rotrwi	4,15,13
	and	5,15,8
	and	0,15,9
	xor	3,3,4
	rotrwi	4,4,9
	xor	5,5,0
	and	0,8,9
	xor	3,3,4
	add	10,10,14
	xor	5,5,0
	lwz	0,40(7)
	add	14,14,3
	add	14,14,5

	lwz	26,40(31)
	rotrwi	3,10,6
	rotrwi	4,10,11
	and	5,11,10
	xor	3,3,4
	add	6,6,0
	andc	0,12,10
	rotrwi	4,4,14
	or	5,5,0
	add	6,6,26
	xor	3,3,4
	add	6,6,5
	add	6,6,3

	rotrwi	3,14,2
	rotrwi	4,14,13
	and	5,14,15
	and	0,14,8
	xor	3,3,4
	rotrwi	4,4,9
	xor	5,5,0
	and	0,15,8
	xor	3,3,4
	add	9,9,6
	xor	5,5,0
	lwz	0,44(7)
	add	6,6,3
	add	6,6,5

	lwz	27,44(31)
	rotrwi	3,9,6
	rotrwi	4,9,11
	and	5,10,9
	xor	3,3,4
	add	12,12,0
	andc	0,11,9
	rotrwi	4,4,14
	or	5,5,0
	add	12,12,27
	xor	3,3,4
	add	12,12,5
	add	12,12,3

	rotrwi	3,6,2
	rotrwi	4,6,13
	and	5,6,14
	and	0,6,15
	xor	3,3,4
	rotrwi	4,4,9
	xor	5,5,0
	and	0,14,15
	xor	3,3,4
	add	8,8,12
	xor	5,5,0
	lwz	0,48(7)
	add	12,12,3
	add	12,12,5

	lwz	28,48(31)
	rotrwi	3,8,6
	rotrwi	4,8,11
	and	5,9,8
	xor	3,3,4
	add	11,11,0
	andc	0,10,8
	rotrwi	4,4,14
	or	5,5,0
	add	11,11,28
	xor	3,3,4
	add	11,11,5
	add	11,11,3

	rotrwi	3,12,2
	rotrwi	4,12,13
	and	5,12,6
	and	0,12,14
	xor	3,3,4
	rotrwi	4,4,9
	xor	5,5,0
	and	0,6,14
	xor	3,3,4
	add	15,15,11
	xor	5,5,0
	lwz	0,52(7)
	add	11,11,3
	add	11,11,5

	lwz	29,52(31)
	rotrwi	3,15,6
	rotrwi	4,15,11
	and	5,8,15
	xor	3,3,4
	add	10,10,0
	andc	0,9,15
	rotrwi	4,4,14
	or	5,5,0
	add	10,10,29
	xor	3,3,4
	add	10,10,5
	add	10,10,3

	rotrwi	3,11,2
	rotrwi	4,11,13
	and	5,11,12
	and	0,11,6
	xor	3,3,4
	rotrwi	4,4,9
	xor	5,5,0
	and	0,12,6
	xor	3,3,4
	add	14,14,10
	xor	5,5,0
	lwz	0,56(7)
	add	10,10,3
	add	10,10,5

	lwz	30,56(31)
	rotrwi	3,14,6
	rotrwi	4,14,11
	and	5,15,14
	xor	3,3,4
	add	9,9,0
	andc	0,8,14
	rotrwi	4,4,14
	or	5,5,0
	add	9,9,30
	xor	3,3,4
	add	9,9,5
	add	9,9,3

	rotrwi	3,10,2
	rotrwi	4,10,13
	and	5,10,11
	and	0,10,12
	xor	3,3,4
	rotrwi	4,4,9
	xor	5,5,0
	and	0,11,12
	xor	3,3,4
	add	6,6,9
	xor	5,5,0
	lwz	0,60(7)
	add	9,9,3
	add	9,9,5

	lwz	31,60(31)
	rotrwi	3,6,6
	rotrwi	4,6,11
	and	5,14,6
	xor	3,3,4
	add	8,8,0
	andc	0,15,6
	rotrwi	4,4,14
	or	5,5,0
	add	8,8,31
	xor	3,3,4
	add	8,8,5
	add	8,8,3

	rotrwi	3,9,2
	rotrwi	4,9,13
	and	5,9,10
	and	0,9,11
	xor	3,3,4
	rotrwi	4,4,9
	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,3
	mtctr	5
.align	4
Lrounds:
	addi	7,7,64
	rotrwi	3,17,7
	rotrwi	4,17,18
	rotrwi	5,30,17
	rotrwi	0,30,19
	xor	3,3,4
	srwi	4,17,3
	xor	5,5,0
	srwi	0,30,10
	add	16,16,25
	xor	3,3,4
	xor	5,5,0
	lwz	0,0(7)
	add	16,16,3
	add	16,16,5
	rotrwi	3,12,6
	rotrwi	4,12,11
	and	5,6,12
	xor	3,3,4
	add	15,15,0
	andc	0,14,12
	rotrwi	4,4,14
	or	5,5,0
	add	15,15,16
	xor	3,3,4
	add	15,15,5
	add	15,15,3

	rotrwi	3,8,2
	rotrwi	4,8,13
	and	5,8,9
	and	0,8,10
	xor	3,3,4
	rotrwi	4,4,9
	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

	rotrwi	3,18,7
	rotrwi	4,18,18
	rotrwi	5,31,17
	rotrwi	0,31,19
	xor	3,3,4
	srwi	4,18,3
	xor	5,5,0
	srwi	0,31,10
	add	17,17,26
	xor	3,3,4
	xor	5,5,0
	lwz	0,4(7)
	add	17,17,3
	add	17,17,5
	rotrwi	3,11,6
	rotrwi	4,11,11
	and	5,12,11
	xor	3,3,4
	add	14,14,0
	andc	0,6,11
	rotrwi	4,4,14
	or	5,5,0
	add	14,14,17
	xor	3,3,4
	add	14,14,5
	add	14,14,3

	rotrwi	3,15,2
	rotrwi	4,15,13
	and	5,15,8
	and	0,15,9
	xor	3,3,4
	rotrwi	4,4,9
	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

	rotrwi	3,19,7
	rotrwi	4,19,18
	rotrwi	5,16,17
	rotrwi	0,16,19
	xor	3,3,4
	srwi	4,19,3
	xor	5,5,0
	srwi	0,16,10
	add	18,18,27
	xor	3,3,4
	xor	5,5,0
	lwz	0,8(7)
	add	18,18,3
	add	18,18,5
	rotrwi	3,10,6
	rotrwi	4,10,11
	and	5,11,10
	xor	3,3,4
	add	6,6,0
	andc	0,12,10
	rotrwi	4,4,14
	or	5,5,0
	add	6,6,18
	xor	3,3,4
	add	6,6,5
	add	6,6,3

	rotrwi	3,14,2
	rotrwi	4,14,13
	and	5,14,15
	and	0,14,8
	xor	3,3,4
	rotrwi	4,4,9
	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

	rotrwi	3,20,7
	rotrwi	4,20,18
	rotrwi	5,17,17
	rotrwi	0,17,19
	xor	3,3,4
	srwi	4,20,3
	xor	5,5,0
	srwi	0,17,10
	add	19,19,28
	xor	3,3,4
	xor	5,5,0
	lwz	0,12(7)
	add	19,19,3
	add	19,19,5
	rotrwi	3,9,6
	rotrwi	4,9,11
	and	5,10,9
	xor	3,3,4
	add	12,12,0
	andc	0,11,9
	rotrwi	4,4,14
	or	5,5,0
	add	12,12,19
	xor	3,3,4
	add	12,12,5
	add	12,12,3

	rotrwi	3,6,2
	rotrwi	4,6,13
	and	5,6,14
	and	0,6,15
	xor	3,3,4
	rotrwi	4,4,9
	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

	rotrwi	3,21,7
	rotrwi	4,21,18
	rotrwi	5,18,17
	rotrwi	0,18,19
	xor	3,3,4
	srwi	4,21,3
	xor	5,5,0
	srwi	0,18,10
	add	20,20,29
	xor	3,3,4
	xor	5,5,0
	lwz	0,16(7)
	add	20,20,3
	add	20,20,5
	rotrwi	3,8,6
	rotrwi	4,8,11
	and	5,9,8
	xor	3,3,4
	add	11,11,0
	andc	0,10,8
	rotrwi	4,4,14
	or	5,5,0
	add	11,11,20
	xor	3,3,4
	add	11,11,5
	add	11,11,3

	rotrwi	3,12,2
	rotrwi	4,12,13
	and	5,12,6
	and	0,12,14
	xor	3,3,4
	rotrwi	4,4,9
	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

	rotrwi	3,22,7
	rotrwi	4,22,18
	rotrwi	5,19,17
	rotrwi	0,19,19
	xor	3,3,4
	srwi	4,22,3
	xor	5,5,0
	srwi	0,19,10
	add	21,21,30
	xor	3,3,4
	xor	5,5,0
	lwz	0,20(7)
	add	21,21,3
	add	21,21,5
	rotrwi	3,15,6
	rotrwi	4,15,11
	and	5,8,15
	xor	3,3,4
	add	10,10,0
	andc	0,9,15
	rotrwi	4,4,14
	or	5,5,0
	add	10,10,21
	xor	3,3,4
	add	10,10,5
	add	10,10,3

	rotrwi	3,11,2
	rotrwi	4,11,13
	and	5,11,12
	and	0,11,6
	xor	3,3,4
	rotrwi	4,4,9
	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

	rotrwi	3,23,7
	rotrwi	4,23,18
	rotrwi	5,20,17
	rotrwi	0,20,19
	xor	3,3,4
	srwi	4,23,3
	xor	5,5,0
	srwi	0,20,10
	add	22,22,31
	xor	3,3,4
	xor	5,5,0
	lwz	0,24(7)
	add	22,22,3
	add	22,22,5
	rotrwi	3,14,6
	rotrwi	4,14,11
	and	5,15,14
	xor	3,3,4
	add	9,9,0
	andc	0,8,14
	rotrwi	4,4,14
	or	5,5,0
	add	9,9,22
	xor	3,3,4
	add	9,9,5
	add	9,9,3

	rotrwi	3,10,2
	rotrwi	4,10,13
	and	5,10,11
	and	0,10,12
	xor	3,3,4
	rotrwi	4,4,9
	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

	rotrwi	3,24,7
	rotrwi	4,24,18
	rotrwi	5,21,17
	rotrwi	0,21,19
	xor	3,3,4
	srwi	4,24,3
	xor	5,5,0
	srwi	0,21,10
	add	23,23,16
	xor	3,3,4
	xor	5,5,0
	lwz	0,28(7)
	add	23,23,3
	add	23,23,5
	rotrwi	3,6,6
	rotrwi	4,6,11
	and	5,14,6
	xor	3,3,4
	add	8,8,0
	andc	0,15,6
	rotrwi	4,4,14
	or	5,5,0
	add	8,8,23
	xor	3,3,4
	add	8,8,5
	add	8,8,3

	rotrwi	3,9,2
	rotrwi	4,9,13
	and	5,9,10
	and	0,9,11
	xor	3,3,4
	rotrwi	4,4,9
	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

	rotrwi	3,25,7
	rotrwi	4,25,18
	rotrwi	5,22,17
	rotrwi	0,22,19
	xor	3,3,4
	srwi	4,25,3
	xor	5,5,0
	srwi	0,22,10
	add	24,24,17
	xor	3,3,4
	xor	5,5,0
	lwz	0,32(7)
	add	24,24,3
	add	24,24,5
	rotrwi	3,12,6
	rotrwi	4,12,11
	and	5,6,12
	xor	3,3,4
	add	15,15,0
	andc	0,14,12
	rotrwi	4,4,14
	or	5,5,0
	add	15,15,24
	xor	3,3,4
	add	15,15,5
	add	15,15,3

	rotrwi	3,8,2
	rotrwi	4,8,13
	and	5,8,9
	and	0,8,10
	xor	3,3,4
	rotrwi	4,4,9
	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

	rotrwi	3,26,7
	rotrwi	4,26,18
	rotrwi	5,23,17
	rotrwi	0,23,19
	xor	3,3,4
	srwi	4,26,3
	xor	5,5,0
	srwi	0,23,10
	add	25,25,18
	xor	3,3,4
	xor	5,5,0
	lwz	0,36(7)
	add	25,25,3
	add	25,25,5
	rotrwi	3,11,6
	rotrwi	4,11,11
	and	5,12,11
	xor	3,3,4
	add	14,14,0
	andc	0,6,11
	rotrwi	4,4,14
	or	5,5,0
	add	14,14,25
	xor	3,3,4
	add	14,14,5
	add	14,14,3

	rotrwi	3,15,2
	rotrwi	4,15,13
	and	5,15,8
	and	0,15,9
	xor	3,3,4
	rotrwi	4,4,9
	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

	rotrwi	3,27,7
	rotrwi	4,27,18
	rotrwi	5,24,17
	rotrwi	0,24,19
	xor	3,3,4
	srwi	4,27,3
	xor	5,5,0
	srwi	0,24,10
	add	26,26,19
	xor	3,3,4
	xor	5,5,0
	lwz	0,40(7)
	add	26,26,3
	add	26,26,5
	rotrwi	3,10,6
	rotrwi	4,10,11
	and	5,11,10
	xor	3,3,4
	add	6,6,0
	andc	0,12,10
	rotrwi	4,4,14
	or	5,5,0
	add	6,6,26
	xor	3,3,4
	add	6,6,5
	add	6,6,3

	rotrwi	3,14,2
	rotrwi	4,14,13
	and	5,14,15
	and	0,14,8
	xor	3,3,4
	rotrwi	4,4,9
	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

	rotrwi	3,28,7
	rotrwi	4,28,18
	rotrwi	5,25,17
	rotrwi	0,25,19
	xor	3,3,4
	srwi	4,28,3
	xor	5,5,0
	srwi	0,25,10
	add	27,27,20
	xor	3,3,4
	xor	5,5,0
	lwz	0,44(7)
	add	27,27,3
	add	27,27,5
	rotrwi	3,9,6
	rotrwi	4,9,11
	and	5,10,9
	xor	3,3,4
	add	12,12,0
	andc	0,11,9
	rotrwi	4,4,14
	or	5,5,0
	add	12,12,27
	xor	3,3,4
	add	12,12,5
	add	12,12,3

	rotrwi	3,6,2
	rotrwi	4,6,13
	and	5,6,14
	and	0,6,15
	xor	3,3,4
	rotrwi	4,4,9
	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

	rotrwi	3,29,7
	rotrwi	4,29,18
	rotrwi	5,26,17
	rotrwi	0,26,19
	xor	3,3,4
	srwi	4,29,3
	xor	5,5,0
	srwi	0,26,10
	add	28,28,21
	xor	3,3,4
	xor	5,5,0
	lwz	0,48(7)
	add	28,28,3
	add	28,28,5
	rotrwi	3,8,6
	rotrwi	4,8,11
	and	5,9,8
	xor	3,3,4
	add	11,11,0
	andc	0,10,8
	rotrwi	4,4,14
	or	5,5,0
	add	11,11,28
	xor	3,3,4
	add	11,11,5
	add	11,11,3

	rotrwi	3,12,2
	rotrwi	4,12,13
	and	5,12,6
	and	0,12,14
	xor	3,3,4
	rotrwi	4,4,9
	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

	rotrwi	3,30,7
	rotrwi	4,30,18
	rotrwi	5,27,17
	rotrwi	0,27,19
	xor	3,3,4
	srwi	4,30,3
	xor	5,5,0
	srwi	0,27,10
	add	29,29,22
	xor	3,3,4
	xor	5,5,0
	lwz	0,52(7)
	add	29,29,3
	add	29,29,5
	rotrwi	3,15,6
	rotrwi	4,15,11
	and	5,8,15
	xor	3,3,4
	add	10,10,0
	andc	0,9,15
	rotrwi	4,4,14
	or	5,5,0
	add	10,10,29
	xor	3,3,4
	add	10,10,5
	add	10,10,3

	rotrwi	3,11,2
	rotrwi	4,11,13
	and	5,11,12
	and	0,11,6
	xor	3,3,4
	rotrwi	4,4,9
	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

	rotrwi	3,31,7
	rotrwi	4,31,18
	rotrwi	5,28,17
	rotrwi	0,28,19
	xor	3,3,4
	srwi	4,31,3
	xor	5,5,0
	srwi	0,28,10
	add	30,30,23
	xor	3,3,4
	xor	5,5,0
	lwz	0,56(7)
	add	30,30,3
	add	30,30,5
	rotrwi	3,14,6
	rotrwi	4,14,11
	and	5,15,14
	xor	3,3,4
	add	9,9,0
	andc	0,8,14
	rotrwi	4,4,14
	or	5,5,0
	add	9,9,30
	xor	3,3,4
	add	9,9,5
	add	9,9,3

	rotrwi	3,10,2
	rotrwi	4,10,13
	and	5,10,11
	and	0,10,12
	xor	3,3,4
	rotrwi	4,4,9
	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

	rotrwi	3,16,7
	rotrwi	4,16,18
	rotrwi	5,29,17
	rotrwi	0,29,19
	xor	3,3,4
	srwi	4,16,3
	xor	5,5,0
	srwi	0,29,10
	add	31,31,24
	xor	3,3,4
	xor	5,5,0
	lwz	0,60(7)
	add	31,31,3
	add	31,31,5
	rotrwi	3,6,6
	rotrwi	4,6,11
	and	5,14,6
	xor	3,3,4
	add	8,8,0
	andc	0,15,6
	rotrwi	4,4,14
	or	5,5,0
	add	8,8,31
	xor	3,3,4
	add	8,8,5
	add	8,8,3

	rotrwi	3,9,2
	rotrwi	4,9,13
	and	5,9,10
	and	0,9,11
	xor	3,3,4
	rotrwi	4,4,9
	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

	bc	16,0,Lrounds

	ld	3,144(1)
	ld	31,136(1)
	ld	5,128(1)
	subi	7,7,192

	lwz	16,0(3)
	lwz	17,4(3)
	lwz	18,8(3)
	lwz	19,12(3)
	lwz	20,16(3)
	lwz	21,20(3)
	lwz	22,24(3)
	addi	31,31,64
	lwz	23,28(3)
	add	8,8,16
	add	9,9,17
	std	31,136(1)
	add	10,10,18
	stw	8,0(3)
	add	11,11,19
	stw	9,4(3)
	add	12,12,20
	stw	10,8(3)
	add	6,6,21
	stw	11,12(3)
	add	14,14,22
	stw	12,16(3)
	add	15,15,23
	stw	6,20(3)
	stw	14,24(3)
	cmpld	31,5
	stw	15,28(3)
	bne	Lsha2_block_private
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0

.align	6
LPICmeup:
	mflr	0
	bcl	20,31,$+4
	mflr	7
	addi	7,7,56
	mtlr	0
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0
.space	28
.long	0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
.long	0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
.long	0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
.long	0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
.long	0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
.long	0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
.long	0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
.long	0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
.long	0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
.long	0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
.long	0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
.long	0xd192e819,0xd6990624,0xf40e3585,0x106aa070
.long	0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
.long	0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
.long	0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
.long	0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2

File Added: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/sha256p8-ppc.S
.machine	"any"
.text

.globl	sha256_block_p8
.align	6
sha256_block_p8:
	stdu	1,-448(1)
	mflr	8
	li	10,207
	li	11,223
	stvx	20,10,1
	addi	10,10,32
	mfspr	12,256
	stvx	21,11,1
	addi	11,11,32
	stvx	22,10,1
	addi	10,10,32
	stvx	23,11,1
	addi	11,11,32
	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
	li	11,-1
	stw	12,396(1)
	li	10,0x10
	std	26,400(1)
	li	26,0x20
	std	27,408(1)
	li	27,0x30
	std	28,416(1)
	li	28,0x40
	std	29,424(1)
	li	29,0x50
	std	30,432(1)
	li	30,0x60
	std	31,440(1)
	li	31,0x70
	std	8,464(1)
	mtspr	256,11

	bl	LPICmeup
	addi	11,1,64+15
	.long	0x7C001E19
	.long	0x7C8A1E19
	vsldoi	1,0,0,4
	vsldoi	2,0,0,8
	vsldoi	3,0,0,12
	vsldoi	5,4,4,4
	vsldoi	6,4,4,8
	vsldoi	7,4,4,12
	li	0,3
	b	Loop
.align	5
Loop:
	lvx	24,0,6
	li	7,16
	.long	0x7D002699
	addi	4,4,16
	stvx	0,0,11
	stvx	1,10,11
	stvx	2,26,11
	stvx	3,27,11
	stvx	4,28,11
	stvx	5,29,11
	stvx	6,30,11
	stvx	7,31,11
	vadduwm	7,7,24
	lvx	24,7,6
	addi	7,7,16

	vsel	25,6,5,4
	.long	0x1364FE82
	vadduwm	7,7,8
	.long	0x13408682

	vadduwm	7,7,25
	vxor	25,0,1

	vadduwm	7,7,27
	vsel	25,1,2,25
	vadduwm	6,6,24
	vadduwm	3,3,7
	vadduwm	26,26,25

	lvx	24,7,6
	addi	7,7,16
	vadduwm	7,7,26

	vsldoi	9,8,8,4

	vsel	25,5,4,3
	.long	0x1363FE82
	vadduwm	6,6,9
	.long	0x13478682

	vadduwm	6,6,25
	vxor	25,7,0

	vadduwm	6,6,27
	vsel	25,0,1,25
	vadduwm	5,5,24
	vadduwm	2,2,6
	vadduwm	26,26,25

	lvx	24,7,6
	addi	7,7,16
	vadduwm	6,6,26

	vsldoi	10,9,9,4

	vsel	25,4,3,2
	.long	0x1362FE82
	vadduwm	5,5,10
	.long	0x13468682

	vadduwm	5,5,25
	vxor	25,6,7

	vadduwm	5,5,27
	vsel	25,7,0,25
	vadduwm	4,4,24
	vadduwm	1,1,5
	vadduwm	26,26,25

	lvx	24,7,6
	addi	7,7,16
	vadduwm	5,5,26

	.long	0x7D802699
	addi	4,4,16
	vsldoi	11,10,10,4

	vsel	25,3,2,1
	.long	0x1361FE82
	vadduwm	4,4,11
	.long	0x13458682

	vadduwm	4,4,25
	vxor	25,5,6

	vadduwm	4,4,27
	vsel	25,6,7,25
	vadduwm	3,3,24
	vadduwm	0,0,4
	vadduwm	26,26,25

	lvx	24,7,6
	addi	7,7,16
	vadduwm	4,4,26


	vsel	25,2,1,0
	.long	0x1360FE82
	vadduwm	3,3,12
	.long	0x13448682

	vadduwm	3,3,25
	vxor	25,4,5

	vadduwm	3,3,27
	vsel	25,5,6,25
	vadduwm	2,2,24
	vadduwm	7,7,3
	vadduwm	26,26,25

	lvx	24,7,6
	addi	7,7,16
	vadduwm	3,3,26

	vsldoi	13,12,12,4

	vsel	25,1,0,7
	.long	0x1367FE82
	vadduwm	2,2,13
	.long	0x13438682

	vadduwm	2,2,25
	vxor	25,3,4

	vadduwm	2,2,27
	vsel	25,4,5,25
	vadduwm	1,1,24
	vadduwm	6,6,2
	vadduwm	26,26,25

	lvx	24,7,6
	addi	7,7,16
	vadduwm	2,2,26

	vsldoi	14,13,13,4

	vsel	25,0,7,6
	.long	0x1366FE82
	vadduwm	1,1,14
	.long	0x13428682

	vadduwm	1,1,25
	vxor	25,2,3

	vadduwm	1,1,27
	vsel	25,3,4,25
	vadduwm	0,0,24
	vadduwm	5,5,1
	vadduwm	26,26,25

	lvx	24,7,6
	addi	7,7,16
	vadduwm	1,1,26

	.long	0x7E002699
	addi	4,4,16
	vsldoi	15,14,14,4

	vsel	25,7,6,5
	.long	0x1365FE82
	vadduwm	0,0,15
	.long	0x13418682

	vadduwm	0,0,25
	vxor	25,1,2

	vadduwm	0,0,27
	vsel	25,2,3,25
	vadduwm	7,7,24
	vadduwm	4,4,0
	vadduwm	26,26,25

	lvx	24,7,6
	addi	7,7,16
	vadduwm	0,0,26


	vsel	25,6,5,4
	.long	0x1364FE82
	vadduwm	7,7,16
	.long	0x13408682

	vadduwm	7,7,25
	vxor	25,0,1

	vadduwm	7,7,27
	vsel	25,1,2,25
	vadduwm	6,6,24
	vadduwm	3,3,7
	vadduwm	26,26,25

	lvx	24,7,6
	addi	7,7,16
	vadduwm	7,7,26

	vsldoi	17,16,16,4

	vsel	25,5,4,3
	.long	0x1363FE82
	vadduwm	6,6,17
	.long	0x13478682

	vadduwm	6,6,25
	vxor	25,7,0

	vadduwm	6,6,27
	vsel	25,0,1,25
	vadduwm	5,5,24
	vadduwm	2,2,6
	vadduwm	26,26,25

	lvx	24,7,6
	addi	7,7,16
	vadduwm	6,6,26

	vsldoi	18,17,17,4

	vsel	25,4,3,2
	.long	0x1362FE82
	vadduwm	5,5,18
	.long	0x13468682

	vadduwm	5,5,25
	vxor	25,6,7

	vadduwm	5,5,27
	vsel	25,7,0,25
	vadduwm	4,4,24
	vadduwm	1,1,5
	vadduwm	26,26,25

	lvx	24,7,6
	addi	7,7,16
	vadduwm	5,5,26

	.long	0x7E802699
	addi	4,4,16
	vsldoi	19,18,18,4

	vsel	25,3,2,1
	.long	0x1361FE82
	vadduwm	4,4,19
	.long	0x13458682

	vadduwm	4,4,25
	vxor	25,5,6

	vadduwm	4,4,27
	vsel	25,6,7,25
	vadduwm	3,3,24
	vadduwm	0,0,4
	vadduwm	26,26,25

	lvx	24,7,6
	addi	7,7,16
	vadduwm	4,4,26


	vsel	25,2,1,0
	.long	0x1360FE82
	vadduwm	3,3,20
	.long	0x13448682

	vadduwm	3,3,25
	vxor	25,4,5

	vadduwm	3,3,27
	vsel	25,5,6,25
	vadduwm	2,2,24
	vadduwm	7,7,3
	vadduwm	26,26,25

	lvx	24,7,6
	addi	7,7,16
	vadduwm	3,3,26

	vsldoi	21,20,20,4

	vsel	25,1,0,7
	.long	0x1367FE82
	vadduwm	2,2,21
	.long	0x13438682

	vadduwm	2,2,25
	vxor	25,3,4

	vadduwm	2,2,27
	vsel	25,4,5,25
	vadduwm	1,1,24
	vadduwm	6,6,2
	vadduwm	26,26,25

	lvx	24,7,6
	addi	7,7,16
	vadduwm	2,2,26

	vsldoi	22,21,21,4

	vsel	25,0,7,6
	.long	0x1366FE82
	vadduwm	1,1,22
	.long	0x13428682

	vadduwm	1,1,25
	vxor	25,2,3

	vadduwm	1,1,27
	vsel	25,3,4,25
	vadduwm	0,0,24
	vadduwm	5,5,1
	vadduwm	26,26,25

	lvx	24,7,6
	addi	7,7,16
	vadduwm	1,1,26

	vsldoi	23,22,22,4
	.long	0x13890682
	vsel	25,7,6,5
	.long	0x1365FE82
	vadduwm	0,0,23
	.long	0x13418682
	.long	0x13B67E82
	vadduwm	0,0,25
	vxor	25,1,2
	vadduwm	8,8,17
	vadduwm	0,0,27
	vsel	25,2,3,25
	vadduwm	7,7,24
	vadduwm	4,4,0
	vadduwm	26,26,25
	vadduwm	8,8,28
	lvx	24,7,6
	addi	7,7,16
	vadduwm	0,0,26
	vadduwm	8,8,29
	mtctr	0
	b	L16_xx
.align	5
L16_xx:
	.long	0x138A0682
	vsel	25,6,5,4
	.long	0x1364FE82
	vadduwm	7,7,8
	.long	0x13408682
	.long	0x13B77E82
	vadduwm	7,7,25
	vxor	25,0,1
	vadduwm	9,9,18
	vadduwm	7,7,27
	vsel	25,1,2,25
	vadduwm	6,6,24
	vadduwm	3,3,7
	vadduwm	26,26,25
	vadduwm	9,9,28
	lvx	24,7,6
	addi	7,7,16
	vadduwm	7,7,26
	vadduwm	9,9,29
	.long	0x138B0682
	vsel	25,5,4,3
	.long	0x1363FE82
	vadduwm	6,6,9
	.long	0x13478682
	.long	0x13A87E82
	vadduwm	6,6,25
	vxor	25,7,0
	vadduwm	10,10,19
	vadduwm	6,6,27
	vsel	25,0,1,25
	vadduwm	5,5,24
	vadduwm	2,2,6
	vadduwm	26,26,25
	vadduwm	10,10,28
	lvx	24,7,6
	addi	7,7,16
	vadduwm	6,6,26
	vadduwm	10,10,29
	.long	0x138C0682
	vsel	25,4,3,2
	.long	0x1362FE82
	vadduwm	5,5,10
	.long	0x13468682
	.long	0x13A97E82
	vadduwm	5,5,25
	vxor	25,6,7
	vadduwm	11,11,20
	vadduwm	5,5,27
	vsel	25,7,0,25
	vadduwm	4,4,24
	vadduwm	1,1,5
	vadduwm	26,26,25
	vadduwm	11,11,28
	lvx	24,7,6
	addi	7,7,16
	vadduwm	5,5,26
	vadduwm	11,11,29
	.long	0x138D0682
	vsel	25,3,2,1
	.long	0x1361FE82
	vadduwm	4,4,11
	.long	0x13458682
	.long	0x13AA7E82
	vadduwm	4,4,25
	vxor	25,5,6
	vadduwm	12,12,21
	vadduwm	4,4,27
	vsel	25,6,7,25
	vadduwm	3,3,24
	vadduwm	0,0,4
	vadduwm	26,26,25
	vadduwm	12,12,28
	lvx	24,7,6
	addi	7,7,16
	vadduwm	4,4,26
	vadduwm	12,12,29
	.long	0x138E0682
	vsel	25,2,1,0
	.long	0x1360FE82
	vadduwm	3,3,12
	.long	0x13448682
	.long	0x13AB7E82
	vadduwm	3,3,25
	vxor	25,4,5
	vadduwm	13,13,22
	vadduwm	3,3,27
	vsel	25,5,6,25
	vadduwm	2,2,24
	vadduwm	7,7,3
	vadduwm	26,26,25
	vadduwm	13,13,28
	lvx	24,7,6
	addi	7,7,16
	vadduwm	3,3,26
	vadduwm	13,13,29
	.long	0x138F0682
	vsel	25,1,0,7
	.long	0x1367FE82
	vadduwm	2,2,13
	.long	0x13438682
	.long	0x13AC7E82
	vadduwm	2,2,25
	vxor	25,3,4
	vadduwm	14,14,23
	vadduwm	2,2,27
	vsel	25,4,5,25
	vadduwm	1,1,24
	vadduwm	6,6,2
	vadduwm	26,26,25
	vadduwm	14,14,28
	lvx	24,7,6
	addi	7,7,16
	vadduwm	2,2,26
	vadduwm	14,14,29
	.long	0x13900682
	vsel	25,0,7,6
	.long	0x1366FE82
	vadduwm	1,1,14
	.long	0x13428682
	.long	0x13AD7E82
	vadduwm	1,1,25
	vxor	25,2,3
	vadduwm	15,15,8
	vadduwm	1,1,27
	vsel	25,3,4,25
	vadduwm	0,0,24
	vadduwm	5,5,1
	vadduwm	26,26,25
	vadduwm	15,15,28
	lvx	24,7,6
	addi	7,7,16
	vadduwm	1,1,26
	vadduwm	15,15,29
	.long	0x13910682
	vsel	25,7,6,5
	.long	0x1365FE82
	vadduwm	0,0,15
	.long	0x13418682
	.long	0x13AE7E82
	vadduwm	0,0,25
	vxor	25,1,2
	vadduwm	16,16,9
	vadduwm	0,0,27
	vsel	25,2,3,25
	vadduwm	7,7,24
	vadduwm	4,4,0
	vadduwm	26,26,25
	vadduwm	16,16,28
	lvx	24,7,6
	addi	7,7,16
	vadduwm	0,0,26
	vadduwm	16,16,29
	.long	0x13920682
	vsel	25,6,5,4
	.long	0x1364FE82
	vadduwm	7,7,16
	.long	0x13408682
	.long	0x13AF7E82
	vadduwm	7,7,25
	vxor	25,0,1
	vadduwm	17,17,10
	vadduwm	7,7,27
	vsel	25,1,2,25
	vadduwm	6,6,24
	vadduwm	3,3,7
	vadduwm	26,26,25
	vadduwm	17,17,28
	lvx	24,7,6
	addi	7,7,16
	vadduwm	7,7,26
	vadduwm	17,17,29
	.long	0x13930682
	vsel	25,5,4,3
	.long	0x1363FE82
	vadduwm	6,6,17
	.long	0x13478682
	.long	0x13B07E82
	vadduwm	6,6,25
	vxor	25,7,0
	vadduwm	18,18,11
	vadduwm	6,6,27
	vsel	25,0,1,25
	vadduwm	5,5,24
	vadduwm	2,2,6
	vadduwm	26,26,25
	vadduwm	18,18,28
	lvx	24,7,6
	addi	7,7,16
	vadduwm	6,6,26
	vadduwm	18,18,29
	.long	0x13940682
	vsel	25,4,3,2
	.long	0x1362FE82
	vadduwm	5,5,18
	.long	0x13468682
	.long	0x13B17E82
	vadduwm	5,5,25
	vxor	25,6,7
	vadduwm	19,19,12
	vadduwm	5,5,27
	vsel	25,7,0,25
	vadduwm	4,4,24
	vadduwm	1,1,5
	vadduwm	26,26,25
	vadduwm	19,19,28
	lvx	24,7,6
	addi	7,7,16
	vadduwm	5,5,26
	vadduwm	19,19,29
	.long	0x13950682
	vsel	25,3,2,1
	.long	0x1361FE82
	vadduwm	4,4,19
	.long	0x13458682
	.long	0x13B27E82
	vadduwm	4,4,25
	vxor	25,5,6
	vadduwm	20,20,13
	vadduwm	4,4,27
	vsel	25,6,7,25
	vadduwm	3,3,24
	vadduwm	0,0,4
	vadduwm	26,26,25
	vadduwm	20,20,28
	lvx	24,7,6
	addi	7,7,16
	vadduwm	4,4,26
	vadduwm	20,20,29
	.long	0x13960682
	vsel	25,2,1,0
	.long	0x1360FE82
	vadduwm	3,3,20
	.long	0x13448682
	.long	0x13B37E82
	vadduwm	3,3,25
	vxor	25,4,5
	vadduwm	21,21,14
	vadduwm	3,3,27
	vsel	25,5,6,25
	vadduwm	2,2,24
	vadduwm	7,7,3
	vadduwm	26,26,25
	vadduwm	21,21,28
	lvx	24,7,6
	addi	7,7,16
	vadduwm	3,3,26
	vadduwm	21,21,29
	.long	0x13970682
	vsel	25,1,0,7
	.long	0x1367FE82
	vadduwm	2,2,21
	.long	0x13438682
	.long	0x13B47E82
	vadduwm	2,2,25
	vxor	25,3,4
	vadduwm	22,22,15
	vadduwm	2,2,27
	vsel	25,4,5,25
	vadduwm	1,1,24
	vadduwm	6,6,2
	vadduwm	26,26,25
	vadduwm	22,22,28
	lvx	24,7,6
	addi	7,7,16
	vadduwm	2,2,26
	vadduwm	22,22,29
	.long	0x13880682
	vsel	25,0,7,6
	.long	0x1366FE82
	vadduwm	1,1,22
	.long	0x13428682
	.long	0x13B57E82
	vadduwm	1,1,25
	vxor	25,2,3
	vadduwm	23,23,16
	vadduwm	1,1,27
	vsel	25,3,4,25
	vadduwm	0,0,24
	vadduwm	5,5,1
	vadduwm	26,26,25
	vadduwm	23,23,28
	lvx	24,7,6
	addi	7,7,16
	vadduwm	1,1,26
	vadduwm	23,23,29
	.long	0x13890682
	vsel	25,7,6,5
	.long	0x1365FE82
	vadduwm	0,0,23
	.long	0x13418682
	.long	0x13B67E82
	vadduwm	0,0,25
	vxor	25,1,2
	vadduwm	8,8,17
	vadduwm	0,0,27
	vsel	25,2,3,25
	vadduwm	7,7,24
	vadduwm	4,4,0
	vadduwm	26,26,25
	vadduwm	8,8,28
	lvx	24,7,6
	addi	7,7,16
	vadduwm	0,0,26
	vadduwm	8,8,29
	bc	16,0,L16_xx

	lvx	10,0,11
	subic.	5,5,1
	lvx	11,10,11
	vadduwm	0,0,10
	lvx	12,26,11
	vadduwm	1,1,11
	lvx	13,27,11
	vadduwm	2,2,12
	lvx	14,28,11
	vadduwm	3,3,13
	lvx	15,29,11
	vadduwm	4,4,14
	lvx	16,30,11
	vadduwm	5,5,15
	lvx	17,31,11
	vadduwm	6,6,16
	vadduwm	7,7,17
	bne	Loop
	lvx	8,7,6
	addi	7,7,16
	vperm	0,0,1,24
	lvx	9,7,6
	vperm	4,4,5,24
	vperm	0,0,2,8
	vperm	4,4,6,8
	vperm	0,0,3,9
	vperm	4,4,7,9
	.long	0x7C001F19
	.long	0x7C8A1F19
	li	10,207
	mtlr	8
	li	11,223
	mtspr	256,12
	lvx	20,10,1
	addi	10,10,32
	lvx	21,11,1
	addi	11,11,32
	lvx	22,10,1
	addi	10,10,32
	lvx	23,11,1
	addi	11,11,32
	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
	ld	26,400(1)
	ld	27,408(1)
	ld	28,416(1)
	ld	29,424(1)
	ld	30,432(1)
	ld	31,440(1)
	addi	1,1,448
	blr	
.long	0
.byte	0,12,4,1,0x80,6,3,0
.long	0

.align	6
LPICmeup:
	mflr	0
	bcl	20,31,$+4
	mflr	6
	addi	6,6,56
	mtlr	0
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0
.space	28
.long	0x428a2f98,0x428a2f98,0x428a2f98,0x428a2f98
.long	0x71374491,0x71374491,0x71374491,0x71374491
.long	0xb5c0fbcf,0xb5c0fbcf,0xb5c0fbcf,0xb5c0fbcf
.long	0xe9b5dba5,0xe9b5dba5,0xe9b5dba5,0xe9b5dba5
.long	0x3956c25b,0x3956c25b,0x3956c25b,0x3956c25b
.long	0x59f111f1,0x59f111f1,0x59f111f1,0x59f111f1
.long	0x923f82a4,0x923f82a4,0x923f82a4,0x923f82a4
.long	0xab1c5ed5,0xab1c5ed5,0xab1c5ed5,0xab1c5ed5
.long	0xd807aa98,0xd807aa98,0xd807aa98,0xd807aa98
.long	0x12835b01,0x12835b01,0x12835b01,0x12835b01
.long	0x243185be,0x243185be,0x243185be,0x243185be
.long	0x550c7dc3,0x550c7dc3,0x550c7dc3,0x550c7dc3
.long	0x72be5d74,0x72be5d74,0x72be5d74,0x72be5d74
.long	0x80deb1fe,0x80deb1fe,0x80deb1fe,0x80deb1fe
.long	0x9bdc06a7,0x9bdc06a7,0x9bdc06a7,0x9bdc06a7
.long	0xc19bf174,0xc19bf174,0xc19bf174,0xc19bf174
.long	0xe49b69c1,0xe49b69c1,0xe49b69c1,0xe49b69c1
.long	0xefbe4786,0xefbe4786,0xefbe4786,0xefbe4786
.long	0x0fc19dc6,0x0fc19dc6,0x0fc19dc6,0x0fc19dc6
.long	0x240ca1cc,0x240ca1cc,0x240ca1cc,0x240ca1cc
.long	0x2de92c6f,0x2de92c6f,0x2de92c6f,0x2de92c6f
.long	0x4a7484aa,0x4a7484aa,0x4a7484aa,0x4a7484aa
.long	0x5cb0a9dc,0x5cb0a9dc,0x5cb0a9dc,0x5cb0a9dc
.long	0x76f988da,0x76f988da,0x76f988da,0x76f988da
.long	0x983e5152,0x983e5152,0x983e5152,0x983e5152
.long	0xa831c66d,0xa831c66d,0xa831c66d,0xa831c66d
.long	0xb00327c8,0xb00327c8,0xb00327c8,0xb00327c8
.long	0xbf597fc7,0xbf597fc7,0xbf597fc7,0xbf597fc7
.long	0xc6e00bf3,0xc6e00bf3,0xc6e00bf3,0xc6e00bf3
.long	0xd5a79147,0xd5a79147,0xd5a79147,0xd5a79147
.long	0x06ca6351,0x06ca6351,0x06ca6351,0x06ca6351
.long	0x14292967,0x14292967,0x14292967,0x14292967
.long	0x27b70a85,0x27b70a85,0x27b70a85,0x27b70a85
.long	0x2e1b2138,0x2e1b2138,0x2e1b2138,0x2e1b2138
.long	0x4d2c6dfc,0x4d2c6dfc,0x4d2c6dfc,0x4d2c6dfc
.long	0x53380d13,0x53380d13,0x53380d13,0x53380d13
.long	0x650a7354,0x650a7354,0x650a7354,0x650a7354
.long	0x766a0abb,0x766a0abb,0x766a0abb,0x766a0abb
.long	0x81c2c92e,0x81c2c92e,0x81c2c92e,0x81c2c92e
.long	0x92722c85,0x92722c85,0x92722c85,0x92722c85
.long	0xa2bfe8a1,0xa2bfe8a1,0xa2bfe8a1,0xa2bfe8a1
.long	0xa81a664b,0xa81a664b,0xa81a664b,0xa81a664b
.long	0xc24b8b70,0xc24b8b70,0xc24b8b70,0xc24b8b70
.long	0xc76c51a3,0xc76c51a3,0xc76c51a3,0xc76c51a3
.long	0xd192e819,0xd192e819,0xd192e819,0xd192e819
.long	0xd6990624,0xd6990624,0xd6990624,0xd6990624
.long	0xf40e3585,0xf40e3585,0xf40e3585,0xf40e3585
.long	0x106aa070,0x106aa070,0x106aa070,0x106aa070
.long	0x19a4c116,0x19a4c116,0x19a4c116,0x19a4c116
.long	0x1e376c08,0x1e376c08,0x1e376c08,0x1e376c08
.long	0x2748774c,0x2748774c,0x2748774c,0x2748774c
.long	0x34b0bcb5,0x34b0bcb5,0x34b0bcb5,0x34b0bcb5
.long	0x391c0cb3,0x391c0cb3,0x391c0cb3,0x391c0cb3
.long	0x4ed8aa4a,0x4ed8aa4a,0x4ed8aa4a,0x4ed8aa4a
.long	0x5b9cca4f,0x5b9cca4f,0x5b9cca4f,0x5b9cca4f
.long	0x682e6ff3,0x682e6ff3,0x682e6ff3,0x682e6ff3
.long	0x748f82ee,0x748f82ee,0x748f82ee,0x748f82ee
.long	0x78a5636f,0x78a5636f,0x78a5636f,0x78a5636f
.long	0x84c87814,0x84c87814,0x84c87814,0x84c87814
.long	0x8cc70208,0x8cc70208,0x8cc70208,0x8cc70208
.long	0x90befffa,0x90befffa,0x90befffa,0x90befffa
.long	0xa4506ceb,0xa4506ceb,0xa4506ceb,0xa4506ceb
.long	0xbef9a3f7,0xbef9a3f7,0xbef9a3f7,0xbef9a3f7
.long	0xc67178f2,0xc67178f2,0xc67178f2,0xc67178f2
.long	0,0,0,0
.long	0x00010203,0x10111213,0x10111213,0x10111213
.long	0x00010203,0x04050607,0x10111213,0x10111213
.long	0x00010203,0x04050607,0x08090a0b,0x10111213
.byte	83,72,65,50,53,54,32,102,111,114,32,80,111,119,101,114,73,83,65,32,50,46,48,55,44,32,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

File Added: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/sha512-ppc.S
.machine	"any"
.text

.globl	sha512_block_ppc
.align	6
sha512_block_ppc:
	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
	bc	16,0,Lmemcpy
	std	31,176(1)
	addi	0,1,176
	addi	31,1,48
	std	5,184(1)
	std	0,192(1)
	std	31,200(1)
	bl	Lsha2_block_private
	ld	31,176(1)
	ld	5,184(1)
	addic.	5,5,-128
	bne	Lunaligned

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

File Added: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/sha512p8-ppc.S
.machine	"any"
.text

.globl	sha512_block_p8
.align	6
sha512_block_p8:
	stdu	1,-448(1)
	mflr	8
	li	10,207
	li	11,223
	stvx	20,10,1
	addi	10,10,32
	mfspr	12,256
	stvx	21,11,1
	addi	11,11,32
	stvx	22,10,1
	addi	10,10,32
	stvx	23,11,1
	addi	11,11,32
	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
	li	11,-1
	stw	12,396(1)
	li	10,0x10
	std	26,400(1)
	li	26,0x20
	std	27,408(1)
	li	27,0x30
	std	28,416(1)
	li	28,0x40
	std	29,424(1)
	li	29,0x50
	std	30,432(1)
	li	30,0x60
	std	31,440(1)
	li	31,0x70
	std	8,464(1)
	mtspr	256,11

	bl	LPICmeup
	addi	11,1,64+15
	.long	0x7C001E99
	.long	0x7C4A1E99
	.long	0x7C9A1E99
	vsldoi	1,0,0,8
	.long	0x7CDB1E99
	vsldoi	3,2,2,8
	vsldoi	5,4,4,8
	vsldoi	7,6,6,8
	li	0,4
	b	Loop
.align	5
Loop:
	lvx	24,0,6
	li	7,16
	.long	0x7D002699
	addi	4,4,16
	stvx	0,0,11
	stvx	1,10,11
	stvx	2,26,11
	stvx	3,27,11
	stvx	4,28,11
	stvx	5,29,11
	stvx	6,30,11
	stvx	7,31,11
	.long	0x10E7C0C0
	lvx	24,7,6
	addi	7,7,16

	vsel	25,6,5,4
	.long	0x1364FEC2
	.long	0x10E740C0
	.long	0x134086C2

	.long	0x10E7C8C0
	vxor	25,0,1

	.long	0x10E7D8C0
	vsel	25,1,2,25
	.long	0x10C6C0C0
	.long	0x106338C0
	.long	0x135AC8C0

	lvx	24,7,6
	addi	7,7,16
	.long	0x10E7D0C0

	.long	0x7D402699
	addi	4,4,16
	vsldoi	9,8,8,8

	vsel	25,5,4,3
	.long	0x1363FEC2
	.long	0x10C648C0
	.long	0x134786C2

	.long	0x10C6C8C0
	vxor	25,7,0

	.long	0x10C6D8C0
	vsel	25,0,1,25
	.long	0x10A5C0C0
	.long	0x104230C0
	.long	0x135AC8C0

	lvx	24,7,6
	addi	7,7,16
	.long	0x10C6D0C0


	vsel	25,4,3,2
	.long	0x1362FEC2
	.long	0x10A550C0
	.long	0x134686C2

	.long	0x10A5C8C0
	vxor	25,6,7

	.long	0x10A5D8C0
	vsel	25,7,0,25
	.long	0x1084C0C0
	.long	0x102128C0
	.long	0x135AC8C0

	lvx	24,7,6
	addi	7,7,16
	.long	0x10A5D0C0

	.long	0x7D802699
	addi	4,4,16
	vsldoi	11,10,10,8

	vsel	25,3,2,1
	.long	0x1361FEC2
	.long	0x108458C0
	.long	0x134586C2

	.long	0x1084C8C0
	vxor	25,5,6

	.long	0x1084D8C0
	vsel	25,6,7,25
	.long	0x1063C0C0
	.long	0x100020C0
	.long	0x135AC8C0

	lvx	24,7,6
	addi	7,7,16
	.long	0x1084D0C0


	vsel	25,2,1,0
	.long	0x1360FEC2
	.long	0x106360C0
	.long	0x134486C2

	.long	0x1063C8C0
	vxor	25,4,5

	.long	0x1063D8C0
	vsel	25,5,6,25
	.long	0x1042C0C0
	.long	0x10E718C0
	.long	0x135AC8C0

	lvx	24,7,6
	addi	7,7,16
	.long	0x1063D0C0

	.long	0x7DC02699
	addi	4,4,16
	vsldoi	13,12,12,8

	vsel	25,1,0,7
	.long	0x1367FEC2
	.long	0x104268C0
	.long	0x134386C2

	.long	0x1042C8C0
	vxor	25,3,4

	.long	0x1042D8C0
	vsel	25,4,5,25
	.long	0x1021C0C0
	.long	0x10C610C0
	.long	0x135AC8C0

	lvx	24,7,6
	addi	7,7,16
	.long	0x1042D0C0


	vsel	25,0,7,6
	.long	0x1366FEC2
	.long	0x102170C0
	.long	0x134286C2

	.long	0x1021C8C0
	vxor	25,2,3

	.long	0x1021D8C0
	vsel	25,3,4,25
	.long	0x1000C0C0
	.long	0x10A508C0
	.long	0x135AC8C0

	lvx	24,7,6
	addi	7,7,16
	.long	0x1021D0C0

	.long	0x7E002699
	addi	4,4,16
	vsldoi	15,14,14,8

	vsel	25,7,6,5
	.long	0x1365FEC2
	.long	0x100078C0
	.long	0x134186C2

	.long	0x1000C8C0
	vxor	25,1,2

	.long	0x1000D8C0
	vsel	25,2,3,25
	.long	0x10E7C0C0
	.long	0x108400C0
	.long	0x135AC8C0

	lvx	24,7,6
	addi	7,7,16
	.long	0x1000D0C0


	vsel	25,6,5,4
	.long	0x1364FEC2
	.long	0x10E780C0
	.long	0x134086C2

	.long	0x10E7C8C0
	vxor	25,0,1

	.long	0x10E7D8C0
	vsel	25,1,2,25
	.long	0x10C6C0C0
	.long	0x106338C0
	.long	0x135AC8C0

	lvx	24,7,6
	addi	7,7,16
	.long	0x10E7D0C0

	.long	0x7E402699
	addi	4,4,16
	vsldoi	17,16,16,8

	vsel	25,5,4,3
	.long	0x1363FEC2
	.long	0x10C688C0
	.long	0x134786C2

	.long	0x10C6C8C0
	vxor	25,7,0

	.long	0x10C6D8C0
	vsel	25,0,1,25
	.long	0x10A5C0C0
	.long	0x104230C0
	.long	0x135AC8C0

	lvx	24,7,6
	addi	7,7,16
	.long	0x10C6D0C0


	vsel	25,4,3,2
	.long	0x1362FEC2
	.long	0x10A590C0
	.long	0x134686C2

	.long	0x10A5C8C0
	vxor	25,6,7

	.long	0x10A5D8C0
	vsel	25,7,0,25
	.long	0x1084C0C0
	.long	0x102128C0
	.long	0x135AC8C0

	lvx	24,7,6
	addi	7,7,16
	.long	0x10A5D0C0

	.long	0x7E802699
	addi	4,4,16
	vsldoi	19,18,18,8

	vsel	25,3,2,1
	.long	0x1361FEC2
	.long	0x108498C0
	.long	0x134586C2

	.long	0x1084C8C0
	vxor	25,5,6

	.long	0x1084D8C0
	vsel	25,6,7,25
	.long	0x1063C0C0
	.long	0x100020C0
	.long	0x135AC8C0

	lvx	24,7,6
	addi	7,7,16
	.long	0x1084D0C0


	vsel	25,2,1,0
	.long	0x1360FEC2
	.long	0x1063A0C0
	.long	0x134486C2

	.long	0x1063C8C0
	vxor	25,4,5

	.long	0x1063D8C0
	vsel	25,5,6,25
	.long	0x1042C0C0
	.long	0x10E718C0
	.long	0x135AC8C0

	lvx	24,7,6
	addi	7,7,16
	.long	0x1063D0C0

	.long	0x7EC02699
	addi	4,4,16
	vsldoi	21,20,20,8

	vsel	25,1,0,7
	.long	0x1367FEC2
	.long	0x1042A8C0
	.long	0x134386C2

	.long	0x1042C8C0
	vxor	25,3,4

	.long	0x1042D8C0
	vsel	25,4,5,25
	.long	0x1021C0C0
	.long	0x10C610C0
	.long	0x135AC8C0

	lvx	24,7,6
	addi	7,7,16
	.long	0x1042D0C0


	vsel	25,0,7,6
	.long	0x1366FEC2
	.long	0x1021B0C0
	.long	0x134286C2

	.long	0x1021C8C0
	vxor	25,2,3

	.long	0x1021D8C0
	vsel	25,3,4,25
	.long	0x1000C0C0
	.long	0x10A508C0
	.long	0x135AC8C0

	lvx	24,7,6
	addi	7,7,16
	.long	0x1021D0C0

	vsldoi	23,22,22,8
	.long	0x138906C2
	vsel	25,7,6,5
	.long	0x1365FEC2
	.long	0x1000B8C0
	.long	0x134186C2
	.long	0x13B67EC2
	.long	0x1000C8C0
	vxor	25,1,2
	.long	0x110888C0
	.long	0x1000D8C0
	vsel	25,2,3,25
	.long	0x10E7C0C0
	.long	0x108400C0
	.long	0x135AC8C0
	.long	0x1108E0C0
	lvx	24,7,6
	addi	7,7,16
	.long	0x1000D0C0
	.long	0x1108E8C0
	mtctr	0
	b	L16_xx
.align	5
L16_xx:
	.long	0x138A06C2
	vsel	25,6,5,4
	.long	0x1364FEC2
	.long	0x10E740C0
	.long	0x134086C2
	.long	0x13B77EC2
	.long	0x10E7C8C0
	vxor	25,0,1
	.long	0x112990C0
	.long	0x10E7D8C0
	vsel	25,1,2,25
	.long	0x10C6C0C0
	.long	0x106338C0
	.long	0x135AC8C0
	.long	0x1129E0C0
	lvx	24,7,6
	addi	7,7,16
	.long	0x10E7D0C0
	.long	0x1129E8C0
	.long	0x138B06C2
	vsel	25,5,4,3
	.long	0x1363FEC2
	.long	0x10C648C0
	.long	0x134786C2
	.long	0x13A87EC2
	.long	0x10C6C8C0
	vxor	25,7,0
	.long	0x114A98C0
	.long	0x10C6D8C0
	vsel	25,0,1,25
	.long	0x10A5C0C0
	.long	0x104230C0
	.long	0x135AC8C0
	.long	0x114AE0C0
	lvx	24,7,6
	addi	7,7,16
	.long	0x10C6D0C0
	.long	0x114AE8C0
	.long	0x138C06C2
	vsel	25,4,3,2
	.long	0x1362FEC2
	.long	0x10A550C0
	.long	0x134686C2
	.long	0x13A97EC2
	.long	0x10A5C8C0
	vxor	25,6,7
	.long	0x116BA0C0
	.long	0x10A5D8C0
	vsel	25,7,0,25
	.long	0x1084C0C0
	.long	0x102128C0
	.long	0x135AC8C0
	.long	0x116BE0C0
	lvx	24,7,6
	addi	7,7,16
	.long	0x10A5D0C0
	.long	0x116BE8C0
	.long	0x138D06C2
	vsel	25,3,2,1
	.long	0x1361FEC2
	.long	0x108458C0
	.long	0x134586C2
	.long	0x13AA7EC2
	.long	0x1084C8C0
	vxor	25,5,6
	.long	0x118CA8C0
	.long	0x1084D8C0
	vsel	25,6,7,25
	.long	0x1063C0C0
	.long	0x100020C0
	.long	0x135AC8C0
	.long	0x118CE0C0
	lvx	24,7,6
	addi	7,7,16
	.long	0x1084D0C0
	.long	0x118CE8C0
	.long	0x138E06C2
	vsel	25,2,1,0
	.long	0x1360FEC2
	.long	0x106360C0
	.long	0x134486C2
	.long	0x13AB7EC2
	.long	0x1063C8C0
	vxor	25,4,5
	.long	0x11ADB0C0
	.long	0x1063D8C0
	vsel	25,5,6,25
	.long	0x1042C0C0
	.long	0x10E718C0
	.long	0x135AC8C0
	.long	0x11ADE0C0
	lvx	24,7,6
	addi	7,7,16
	.long	0x1063D0C0
	.long	0x11ADE8C0
	.long	0x138F06C2
	vsel	25,1,0,7
	.long	0x1367FEC2
	.long	0x104268C0
	.long	0x134386C2
	.long	0x13AC7EC2
	.long	0x1042C8C0
	vxor	25,3,4
	.long	0x11CEB8C0
	.long	0x1042D8C0
	vsel	25,4,5,25
	.long	0x1021C0C0
	.long	0x10C610C0
	.long	0x135AC8C0
	.long	0x11CEE0C0
	lvx	24,7,6
	addi	7,7,16
	.long	0x1042D0C0
	.long	0x11CEE8C0
	.long	0x139006C2
	vsel	25,0,7,6
	.long	0x1366FEC2
	.long	0x102170C0
	.long	0x134286C2
	.long	0x13AD7EC2
	.long	0x1021C8C0
	vxor	25,2,3
	.long	0x11EF40C0
	.long	0x1021D8C0
	vsel	25,3,4,25
	.long	0x1000C0C0
	.long	0x10A508C0
	.long	0x135AC8C0
	.long	0x11EFE0C0
	lvx	24,7,6
	addi	7,7,16
	.long	0x1021D0C0
	.long	0x11EFE8C0
	.long	0x139106C2
	vsel	25,7,6,5
	.long	0x1365FEC2
	.long	0x100078C0
	.long	0x134186C2
	.long	0x13AE7EC2
	.long	0x1000C8C0
	vxor	25,1,2
	.long	0x121048C0
	.long	0x1000D8C0
	vsel	25,2,3,25
	.long	0x10E7C0C0
	.long	0x108400C0
	.long	0x135AC8C0
	.long	0x1210E0C0
	lvx	24,7,6
	addi	7,7,16
	.long	0x1000D0C0
	.long	0x1210E8C0
	.long	0x139206C2
	vsel	25,6,5,4
	.long	0x1364FEC2
	.long	0x10E780C0
	.long	0x134086C2
	.long	0x13AF7EC2
	.long	0x10E7C8C0
	vxor	25,0,1
	.long	0x123150C0
	.long	0x10E7D8C0
	vsel	25,1,2,25
	.long	0x10C6C0C0
	.long	0x106338C0
	.long	0x135AC8C0
	.long	0x1231E0C0
	lvx	24,7,6
	addi	7,7,16
	.long	0x10E7D0C0
	.long	0x1231E8C0
	.long	0x139306C2
	vsel	25,5,4,3
	.long	0x1363FEC2
	.long	0x10C688C0
	.long	0x134786C2
	.long	0x13B07EC2
	.long	0x10C6C8C0
	vxor	25,7,0
	.long	0x125258C0
	.long	0x10C6D8C0
	vsel	25,0,1,25
	.long	0x10A5C0C0
	.long	0x104230C0
	.long	0x135AC8C0
	.long	0x1252E0C0
	lvx	24,7,6
	addi	7,7,16
	.long	0x10C6D0C0
	.long	0x1252E8C0
	.long	0x139406C2
	vsel	25,4,3,2
	.long	0x1362FEC2
	.long	0x10A590C0
	.long	0x134686C2
	.long	0x13B17EC2
	.long	0x10A5C8C0
	vxor	25,6,7
	.long	0x127360C0
	.long	0x10A5D8C0
	vsel	25,7,0,25
	.long	0x1084C0C0
	.long	0x102128C0
	.long	0x135AC8C0
	.long	0x1273E0C0
	lvx	24,7,6
	addi	7,7,16
	.long	0x10A5D0C0
	.long	0x1273E8C0
	.long	0x139506C2
	vsel	25,3,2,1
	.long	0x1361FEC2
	.long	0x108498C0
	.long	0x134586C2
	.long	0x13B27EC2
	.long	0x1084C8C0
	vxor	25,5,6
	.long	0x129468C0
	.long	0x1084D8C0
	vsel	25,6,7,25
	.long	0x1063C0C0
	.long	0x100020C0
	.long	0x135AC8C0
	.long	0x1294E0C0
	lvx	24,7,6
	addi	7,7,16
	.long	0x1084D0C0
	.long	0x1294E8C0
	.long	0x139606C2
	vsel	25,2,1,0
	.long	0x1360FEC2
	.long	0x1063A0C0
	.long	0x134486C2
	.long	0x13B37EC2
	.long	0x1063C8C0
	vxor	25,4,5
	.long	0x12B570C0
	.long	0x1063D8C0
	vsel	25,5,6,25
	.long	0x1042C0C0
	.long	0x10E718C0
	.long	0x135AC8C0
	.long	0x12B5E0C0
	lvx	24,7,6
	addi	7,7,16
	.long	0x1063D0C0
	.long	0x12B5E8C0
	.long	0x139706C2
	vsel	25,1,0,7
	.long	0x1367FEC2
	.long	0x1042A8C0
	.long	0x134386C2
	.long	0x13B47EC2
	.long	0x1042C8C0
	vxor	25,3,4
	.long	0x12D678C0
	.long	0x1042D8C0
	vsel	25,4,5,25
	.long	0x1021C0C0
	.long	0x10C610C0
	.long	0x135AC8C0
	.long	0x12D6E0C0
	lvx	24,7,6
	addi	7,7,16
	.long	0x1042D0C0
	.long	0x12D6E8C0
	.long	0x138806C2
	vsel	25,0,7,6
	.long	0x1366FEC2
	.long	0x1021B0C0
	.long	0x134286C2
	.long	0x13B57EC2
	.long	0x1021C8C0
	vxor	25,2,3
	.long	0x12F780C0
	.long	0x1021D8C0
	vsel	25,3,4,25
	.long	0x1000C0C0
	.long	0x10A508C0
	.long	0x135AC8C0
	.long	0x12F7E0C0
	lvx	24,7,6
	addi	7,7,16
	.long	0x1021D0C0
	.long	0x12F7E8C0
	.long	0x138906C2
	vsel	25,7,6,5
	.long	0x1365FEC2
	.long	0x1000B8C0
	.long	0x134186C2
	.long	0x13B67EC2
	.long	0x1000C8C0
	vxor	25,1,2
	.long	0x110888C0
	.long	0x1000D8C0
	vsel	25,2,3,25
	.long	0x10E7C0C0
	.long	0x108400C0
	.long	0x135AC8C0
	.long	0x1108E0C0
	lvx	24,7,6
	addi	7,7,16
	.long	0x1000D0C0
	.long	0x1108E8C0
	bc	16,0,L16_xx

	lvx	10,0,11
	subic.	5,5,1
	lvx	11,10,11
	.long	0x100050C0
	lvx	12,26,11
	.long	0x102158C0
	lvx	13,27,11
	.long	0x104260C0
	lvx	14,28,11
	.long	0x106368C0
	lvx	15,29,11
	.long	0x108470C0
	lvx	16,30,11
	.long	0x10A578C0
	lvx	17,31,11
	.long	0x10C680C0
	.long	0x10E788C0
	bne	Loop
	vperm	0,0,1,24
	vperm	2,2,3,24
	vperm	4,4,5,24
	vperm	6,6,7,24
	.long	0x7C001F99
	.long	0x7C4A1F99
	.long	0x7C9A1F99
	.long	0x7CDB1F99
	li	10,207
	mtlr	8
	li	11,223
	mtspr	256,12
	lvx	20,10,1
	addi	10,10,32
	lvx	21,11,1
	addi	11,11,32
	lvx	22,10,1
	addi	10,10,32
	lvx	23,11,1
	addi	11,11,32
	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
	ld	26,400(1)
	ld	27,408(1)
	ld	28,416(1)
	ld	29,424(1)
	ld	30,432(1)
	ld	31,440(1)
	addi	1,1,448
	blr	
.long	0
.byte	0,12,4,1,0x80,6,3,0
.long	0

.align	6
LPICmeup:
	mflr	0
	bcl	20,31,$+4
	mflr	6
	addi	6,6,56
	mtlr	0
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0
.space	28
.long	0x428a2f98,0xd728ae22
.long	0x428a2f98,0xd728ae22
.long	0x71374491,0x23ef65cd
.long	0x71374491,0x23ef65cd
.long	0xb5c0fbcf,0xec4d3b2f
.long	0xb5c0fbcf,0xec4d3b2f
.long	0xe9b5dba5,0x8189dbbc
.long	0xe9b5dba5,0x8189dbbc
.long	0x3956c25b,0xf348b538
.long	0x3956c25b,0xf348b538
.long	0x59f111f1,0xb605d019
.long	0x59f111f1,0xb605d019
.long	0x923f82a4,0xaf194f9b
.long	0x923f82a4,0xaf194f9b
.long	0xab1c5ed5,0xda6d8118
.long	0xab1c5ed5,0xda6d8118
.long	0xd807aa98,0xa3030242
.long	0xd807aa98,0xa3030242
.long	0x12835b01,0x45706fbe
.long	0x12835b01,0x45706fbe
.long	0x243185be,0x4ee4b28c
.long	0x243185be,0x4ee4b28c
.long	0x550c7dc3,0xd5ffb4e2
.long	0x550c7dc3,0xd5ffb4e2
.long	0x72be5d74,0xf27b896f
.long	0x72be5d74,0xf27b896f
.long	0x80deb1fe,0x3b1696b1
.long	0x80deb1fe,0x3b1696b1
.long	0x9bdc06a7,0x25c71235
.long	0x9bdc06a7,0x25c71235
.long	0xc19bf174,0xcf692694
.long	0xc19bf174,0xcf692694
.long	0xe49b69c1,0x9ef14ad2
.long	0xe49b69c1,0x9ef14ad2
.long	0xefbe4786,0x384f25e3
.long	0xefbe4786,0x384f25e3
.long	0x0fc19dc6,0x8b8cd5b5
.long	0x0fc19dc6,0x8b8cd5b5
.long	0x240ca1cc,0x77ac9c65
.long	0x240ca1cc,0x77ac9c65
.long	0x2de92c6f,0x592b0275
.long	0x2de92c6f,0x592b0275
.long	0x4a7484aa,0x6ea6e483
.long	0x4a7484aa,0x6ea6e483
.long	0x5cb0a9dc,0xbd41fbd4
.long	0x5cb0a9dc,0xbd41fbd4
.long	0x76f988da,0x831153b5
.long	0x76f988da,0x831153b5
.long	0x983e5152,0xee66dfab
.long	0x983e5152,0xee66dfab
.long	0xa831c66d,0x2db43210
.long	0xa831c66d,0x2db43210
.long	0xb00327c8,0x98fb213f
.long	0xb00327c8,0x98fb213f
.long	0xbf597fc7,0xbeef0ee4
.long	0xbf597fc7,0xbeef0ee4
.long	0xc6e00bf3,0x3da88fc2
.long	0xc6e00bf3,0x3da88fc2
.long	0xd5a79147,0x930aa725
.long	0xd5a79147,0x930aa725
.long	0x06ca6351,0xe003826f
.long	0x06ca6351,0xe003826f
.long	0x14292967,0x0a0e6e70
.long	0x14292967,0x0a0e6e70
.long	0x27b70a85,0x46d22ffc
.long	0x27b70a85,0x46d22ffc
.long	0x2e1b2138,0x5c26c926
.long	0x2e1b2138,0x5c26c926
.long	0x4d2c6dfc,0x5ac42aed
.long	0x4d2c6dfc,0x5ac42aed
.long	0x53380d13,0x9d95b3df
.long	0x53380d13,0x9d95b3df
.long	0x650a7354,0x8baf63de
.long	0x650a7354,0x8baf63de
.long	0x766a0abb,0x3c77b2a8
.long	0x766a0abb,0x3c77b2a8
.long	0x81c2c92e,0x47edaee6
.long	0x81c2c92e,0x47edaee6
.long	0x92722c85,0x1482353b
.long	0x92722c85,0x1482353b
.long	0xa2bfe8a1,0x4cf10364
.long	0xa2bfe8a1,0x4cf10364
.long	0xa81a664b,0xbc423001
.long	0xa81a664b,0xbc423001
.long	0xc24b8b70,0xd0f89791
.long	0xc24b8b70,0xd0f89791
.long	0xc76c51a3,0x0654be30
.long	0xc76c51a3,0x0654be30
.long	0xd192e819,0xd6ef5218
.long	0xd192e819,0xd6ef5218
.long	0xd6990624,0x5565a910
.long	0xd6990624,0x5565a910
.long	0xf40e3585,0x5771202a
.long	0xf40e3585,0x5771202a
.long	0x106aa070,0x32bbd1b8
.long	0x106aa070,0x32bbd1b8
.long	0x19a4c116,0xb8d2d0c8
.long	0x19a4c116,0xb8d2d0c8
.long	0x1e376c08,0x5141ab53
.long	0x1e376c08,0x5141ab53
.long	0x2748774c,0xdf8eeb99
.long	0x2748774c,0xdf8eeb99
.long	0x34b0bcb5,0xe19b48a8
.long	0x34b0bcb5,0xe19b48a8
.long	0x391c0cb3,0xc5c95a63
.long	0x391c0cb3,0xc5c95a63
.long	0x4ed8aa4a,0xe3418acb
.long	0x4ed8aa4a,0xe3418acb
.long	0x5b9cca4f,0x7763e373
.long	0x5b9cca4f,0x7763e373
.long	0x682e6ff3,0xd6b2b8a3
.long	0x682e6ff3,0xd6b2b8a3
.long	0x748f82ee,0x5defb2fc
.long	0x748f82ee,0x5defb2fc
.long	0x78a5636f,0x43172f60
.long	0x78a5636f,0x43172f60
.long	0x84c87814,0xa1f0ab72
.long	0x84c87814,0xa1f0ab72
.long	0x8cc70208,0x1a6439ec
.long	0x8cc70208,0x1a6439ec
.long	0x90befffa,0x23631e28
.long	0x90befffa,0x23631e28
.long	0xa4506ceb,0xde82bde9
.long	0xa4506ceb,0xde82bde9
.long	0xbef9a3f7,0xb2c67915
.long	0xbef9a3f7,0xb2c67915
.long	0xc67178f2,0xe372532b
.long	0xc67178f2,0xe372532b
.long	0xca273ece,0xea26619c
.long	0xca273ece,0xea26619c
.long	0xd186b8c7,0x21c0c207
.long	0xd186b8c7,0x21c0c207
.long	0xeada7dd6,0xcde0eb1e
.long	0xeada7dd6,0xcde0eb1e
.long	0xf57d4f7f,0xee6ed178
.long	0xf57d4f7f,0xee6ed178
.long	0x06f067aa,0x72176fba
.long	0x06f067aa,0x72176fba
.long	0x0a637dc5,0xa2c898a6
.long	0x0a637dc5,0xa2c898a6
.long	0x113f9804,0xbef90dae
.long	0x113f9804,0xbef90dae
.long	0x1b710b35,0x131c471b
.long	0x1b710b35,0x131c471b
.long	0x28db77f5,0x23047d84
.long	0x28db77f5,0x23047d84
.long	0x32caab7b,0x40c72493
.long	0x32caab7b,0x40c72493
.long	0x3c9ebe0a,0x15c9bebc
.long	0x3c9ebe0a,0x15c9bebc
.long	0x431d67c4,0x9c100d4c
.long	0x431d67c4,0x9c100d4c
.long	0x4cc5d4be,0xcb3e42b6
.long	0x4cc5d4be,0xcb3e42b6
.long	0x597f299c,0xfc657e2a
.long	0x597f299c,0xfc657e2a
.long	0x5fcb6fab,0x3ad6faec
.long	0x5fcb6fab,0x3ad6faec
.long	0x6c44198c,0x4a475817
.long	0x6c44198c,0x4a475817
.long	0,0
.long	0,0
.long	0x00010203,0x04050607
.long	0x10111213,0x14151617
.byte	83,72,65,53,49,50,32,102,111,114,32,80,111,119,101,114,73,83,65,32,50,46,48,55,44,32,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

File Added: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/vpaes-ppc.S
.machine	"any"

.text

.align	7
_vpaes_consts:
.Lk_mc_forward:
.byte	0x01,0x02,0x03,0x00,0x05,0x06,0x07,0x04,0x09,0x0a,0x0b,0x08,0x0d,0x0e,0x0f,0x0c
.byte	0x05,0x06,0x07,0x04,0x09,0x0a,0x0b,0x08,0x0d,0x0e,0x0f,0x0c,0x01,0x02,0x03,0x00
.byte	0x09,0x0a,0x0b,0x08,0x0d,0x0e,0x0f,0x0c,0x01,0x02,0x03,0x00,0x05,0x06,0x07,0x04
.byte	0x0d,0x0e,0x0f,0x0c,0x01,0x02,0x03,0x00,0x05,0x06,0x07,0x04,0x09,0x0a,0x0b,0x08
.Lk_mc_backward:
.byte	0x03,0x00,0x01,0x02,0x07,0x04,0x05,0x06,0x0b,0x08,0x09,0x0a,0x0f,0x0c,0x0d,0x0e
.byte	0x0f,0x0c,0x0d,0x0e,0x03,0x00,0x01,0x02,0x07,0x04,0x05,0x06,0x0b,0x08,0x09,0x0a
.byte	0x0b,0x08,0x09,0x0a,0x0f,0x0c,0x0d,0x0e,0x03,0x00,0x01,0x02,0x07,0x04,0x05,0x06
.byte	0x07,0x04,0x05,0x06,0x0b,0x08,0x09,0x0a,0x0f,0x0c,0x0d,0x0e,0x03,0x00,0x01,0x02
.Lk_sr:
.byte	0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f
.byte	0x00,0x05,0x0a,0x0f,0x04,0x09,0x0e,0x03,0x08,0x0d,0x02,0x07,0x0c,0x01,0x06,0x0b
.byte	0x00,0x09,0x02,0x0b,0x04,0x0d,0x06,0x0f,0x08,0x01,0x0a,0x03,0x0c,0x05,0x0e,0x07
.byte	0x00,0x0d,0x0a,0x07,0x04,0x01,0x0e,0x0b,0x08,0x05,0x02,0x0f,0x0c,0x09,0x06,0x03




.Lk_inv:
.byte	0xf0,0x01,0x08,0x0d,0x0f,0x06,0x05,0x0e,0x02,0x0c,0x0b,0x0a,0x09,0x03,0x07,0x04
.byte	0xf0,0x07,0x0b,0x0f,0x06,0x0a,0x04,0x01,0x09,0x08,0x05,0x02,0x0c,0x0e,0x0d,0x03
.Lk_ipt:
.byte	0x00,0x70,0x2a,0x5a,0x98,0xe8,0xb2,0xc2,0x08,0x78,0x22,0x52,0x90,0xe0,0xba,0xca
.byte	0x00,0x4d,0x7c,0x31,0x7d,0x30,0x01,0x4c,0x81,0xcc,0xfd,0xb0,0xfc,0xb1,0x80,0xcd
.Lk_sbo:
.byte	0x00,0xc7,0xbd,0x6f,0x17,0x6d,0xd2,0xd0,0x78,0xa8,0x02,0xc5,0x7a,0xbf,0xaa,0x15
.byte	0x00,0x6a,0xbb,0x5f,0xa5,0x74,0xe4,0xcf,0xfa,0x35,0x2b,0x41,0xd1,0x90,0x1e,0x8e
.Lk_sb1:
.byte	0x00,0x23,0xe2,0xfa,0x15,0xd4,0x18,0x36,0xef,0xd9,0x2e,0x0d,0xc1,0xcc,0xf7,0x3b
.byte	0x00,0x3e,0x50,0xcb,0x8f,0xe1,0x9b,0xb1,0x44,0xf5,0x2a,0x14,0x6e,0x7a,0xdf,0xa5
.Lk_sb2:
.byte	0x00,0x29,0xe1,0x0a,0x40,0x88,0xeb,0x69,0x4a,0x23,0x82,0xab,0xc8,0x63,0xa1,0xc2
.byte	0x00,0x24,0x71,0x0b,0xc6,0x93,0x7a,0xe2,0xcd,0x2f,0x98,0xbc,0x55,0xe9,0xb7,0x5e




.Lk_dipt:
.byte	0x00,0x5f,0x54,0x0b,0x04,0x5b,0x50,0x0f,0x1a,0x45,0x4e,0x11,0x1e,0x41,0x4a,0x15
.byte	0x00,0x65,0x05,0x60,0xe6,0x83,0xe3,0x86,0x94,0xf1,0x91,0xf4,0x72,0x17,0x77,0x12
.Lk_dsbo:
.byte	0x00,0x40,0xf9,0x7e,0x53,0xea,0x87,0x13,0x2d,0x3e,0x94,0xd4,0xb9,0x6d,0xaa,0xc7
.byte	0x00,0x1d,0x44,0x93,0x0f,0x56,0xd7,0x12,0x9c,0x8e,0xc5,0xd8,0x59,0x81,0x4b,0xca
.Lk_dsb9:
.byte	0x00,0xd6,0x86,0x9a,0x53,0x03,0x1c,0x85,0xc9,0x4c,0x99,0x4f,0x50,0x1f,0xd5,0xca
.byte	0x00,0x49,0xd7,0xec,0x89,0x17,0x3b,0xc0,0x65,0xa5,0xfb,0xb2,0x9e,0x2c,0x5e,0x72
.Lk_dsbd:
.byte	0x00,0xa2,0xb1,0xe6,0xdf,0xcc,0x57,0x7d,0x39,0x44,0x2a,0x88,0x13,0x9b,0x6e,0xf5
.byte	0x00,0xcb,0xc6,0x24,0xf7,0xfa,0xe2,0x3c,0xd3,0xef,0xde,0x15,0x0d,0x18,0x31,0x29
.Lk_dsbb:
.byte	0x00,0x42,0xb4,0x96,0x92,0x64,0x22,0xd0,0x04,0xd4,0xf2,0xb0,0xf6,0x46,0x26,0x60
.byte	0x00,0x67,0x59,0xcd,0xa6,0x98,0x94,0xc1,0x6b,0xaa,0x55,0x32,0x3e,0x0c,0xff,0xf3
.Lk_dsbe:
.byte	0x00,0xd0,0xd4,0x26,0x96,0x92,0xf2,0x46,0xb0,0xf6,0xb4,0x64,0x04,0x60,0x42,0x22
.byte	0x00,0xc1,0xaa,0xff,0xcd,0xa6,0x55,0x0c,0x32,0x3e,0x59,0x98,0x6b,0xf3,0x67,0x94




.Lk_dksd:
.byte	0x00,0x47,0xe4,0xa3,0x5d,0x1a,0xb9,0xfe,0xf9,0xbe,0x1d,0x5a,0xa4,0xe3,0x40,0x07
.byte	0x00,0x83,0x36,0xb5,0xf4,0x77,0xc2,0x41,0x1e,0x9d,0x28,0xab,0xea,0x69,0xdc,0x5f
.Lk_dksb:
.byte	0x00,0xd5,0x50,0x85,0x1f,0xca,0x4f,0x9a,0x99,0x4c,0xc9,0x1c,0x86,0x53,0xd6,0x03
.byte	0x00,0x4a,0xfc,0xb6,0xa7,0xed,0x5b,0x11,0xc8,0x82,0x34,0x7e,0x6f,0x25,0x93,0xd9
.Lk_dkse:
.byte	0x00,0xd6,0xc9,0x1f,0xca,0x1c,0x03,0xd5,0x86,0x50,0x4f,0x99,0x4c,0x9a,0x85,0x53
.byte	0xe8,0x7b,0xdc,0x4f,0x05,0x96,0x31,0xa2,0x87,0x14,0xb3,0x20,0x6a,0xf9,0x5e,0xcd
.Lk_dks9:
.byte	0x00,0xa7,0xd9,0x7e,0xc8,0x6f,0x11,0xb6,0xfc,0x5b,0x25,0x82,0x34,0x93,0xed,0x4a
.byte	0x00,0x33,0x14,0x27,0x62,0x51,0x76,0x45,0xce,0xfd,0xda,0xe9,0xac,0x9f,0xb8,0x8b

.Lk_rcon:
.byte	0xb6,0xee,0x9d,0xaf,0xb9,0x91,0x83,0x1f,0x81,0x7d,0x7c,0x4d,0x08,0x98,0x2a,0x70
.Lk_s63:
.byte	0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b

.Lk_opt:
.byte	0x00,0x60,0xb6,0xd6,0x29,0x49,0x9f,0xff,0x08,0x68,0xbe,0xde,0x21,0x41,0x97,0xf7
.byte	0x00,0xec,0xbc,0x50,0x51,0xbd,0xed,0x01,0xe0,0x0c,0x5c,0xb0,0xb1,0x5d,0x0d,0xe1
.Lk_deskew:
.byte	0x00,0xe3,0xa4,0x47,0x40,0xa3,0xe4,0x07,0x1a,0xf9,0xbe,0x5d,0x5a,0xb9,0xfe,0x1d
.byte	0x00,0x69,0xea,0x83,0xdc,0xb5,0x36,0x5f,0x77,0x1e,0x9d,0xf4,0xab,0xc2,0x41,0x28
.align	5
.Lconsts:
	mflr	0
	bcl	20,31,$+4
	mflr	12
	addi	12,12,-0x308
	mtlr	0
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0
.byte	86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105,111,110,32,65,69,83,32,102,111,114,32,65,108,116,105,86,101,99,44,32,77,105,107,101,32,72,97,109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105,118,101,114,115,105,116,121,41,0
.align	2
.align	6






.align	4
_vpaes_encrypt_preheat:
	mflr	8
	bl	.Lconsts
	mtlr	8
	li	11, 0xc0
	li	10, 0xd0
	li	9,  0xe0
	li	8,  0xf0
	vxor	7, 7, 7
	vspltisb	8,4
	vspltisb	9,0x0f
	lvx	10, 12, 11
	li	11, 0x100
	lvx	11, 12, 10
	li	10, 0x110
	lvx	12, 12, 9
	li	9,  0x120
	lvx	13, 12, 8
	li	8,  0x130
	lvx	14, 12, 11
	li	11, 0x140
	lvx	15, 12, 10
	li	10, 0x150
	lvx	16, 12, 9
	lvx	17, 12, 8
	lvx	18, 12, 11
	lvx	19, 12, 10
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0















.align	5
_vpaes_encrypt_core:
	lwz	8, 240(5)
	li	9, 16
	lvx	5, 0, 5
	li	11, 0x10
	lvx	6, 9, 5
	addi	9, 9, 16
	vperm	5, 5, 6, 31
	addi	10, 11, 0x40
	vsrb	1, 0, 8
	vperm	0, 12, 12, 0
	vperm	1, 13, 13, 1
	vxor	0, 0, 5
	vxor	0, 0, 1
	mtctr	8
	b	.Lenc_entry

.align	4
.Lenc_loop:

	vperm	4, 17, 7, 2
	lvx	1, 12, 11
	addi	11, 11, 16
	vperm	0, 16, 7, 3
	vxor	4, 4, 5
	andi.	11, 11, 0x30
	vperm	5, 19, 7, 2
	vxor	0, 0, 4
	vperm	2, 18, 7, 3
	lvx	4, 12, 10
	addi	10, 11, 0x40
	vperm	3, 0, 7, 1
	vxor	2, 2, 5
	vperm	0, 0, 7, 4
	vxor	3, 3, 2
	vperm	4, 3, 7, 1
	vxor	0, 0, 3
	vxor	0, 0, 4

.Lenc_entry:

	vsrb	1, 0, 8
	vperm	5, 11, 11, 0
	vxor	0, 0, 1
	vperm	3, 10, 10, 1
	vperm	4, 10, 10, 0
	vand	0, 0, 9
	vxor	3, 3, 5
	vxor	4, 4, 5
	vperm	2, 10, 7, 3
	vor	5, 6, 6
	lvx	6, 9, 5
	vperm	3, 10, 7, 4
	addi	9, 9, 16
	vxor	2, 2, 0
	vperm	5, 5, 6, 31
	vxor	3, 3, 1
	bc	16,0,.Lenc_loop


	addi	10, 11, 0x80


	vperm	4, 14, 7, 2
	lvx	1, 12, 10
	vperm	0, 15, 7, 3
	vxor	4, 4, 5
	vxor	0, 0, 4
	vperm	0, 0, 7, 1
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0

.globl	vpaes_encrypt
.type	vpaes_encrypt,@function
.section	".opd","aw"
.align	3
vpaes_encrypt:
.quad	.vpaes_encrypt,.TOC.@tocbase,0
.previous

.align	5
.vpaes_encrypt:
	stdu	1,-256(1)
	li	10,63
	li	11,79
	mflr	6
	mfspr	7, 256
	stvx	20,10,1
	addi	10,10,32
	stvx	21,11,1
	addi	11,11,32
	stvx	22,10,1
	addi	10,10,32
	stvx	23,11,1
	addi	11,11,32
	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	7,252(1)
	li	0, -1
	std	6,272(1)
	mtspr	256, 0

	bl	_vpaes_encrypt_preheat

	lvsl	27, 0, 3
	lvx	0, 0, 3
	addi	3, 3, 15
	lvsr	29, 0, 4
	lvsl	31, 0, 5
	lvx	26, 0, 3
	vperm	0, 0, 26, 27

	bl	_vpaes_encrypt_core

	andi.	8, 4, 15
	li	9, 16
	beq	.Lenc_out_aligned

	vperm	0, 0, 0, 29
	mtctr	9
.Lenc_out_unaligned:
	stvebx	0, 0, 4
	addi	4, 4, 1
	bc	16,0,.Lenc_out_unaligned
	b	.Lenc_done

.align	4
.Lenc_out_aligned:
	stvx	0, 0, 4
.Lenc_done:

	li	10,63
	li	11,79
	mtlr	6
	mtspr	256, 7
	lvx	20,10,1
	addi	10,10,32
	lvx	21,11,1
	addi	11,11,32
	lvx	22,10,1
	addi	10,10,32
	lvx	23,11,1
	addi	11,11,32
	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
	addi	1,1,256
	blr	
.long	0
.byte	0,12,0x04,1,0x80,0,3,0
.long	0


.align	4
_vpaes_decrypt_preheat:
	mflr	8
	bl	.Lconsts
	mtlr	8
	li	11, 0xc0
	li	10, 0xd0
	li	9,  0x160
	li	8,  0x170
	vxor	7, 7, 7
	vspltisb	8,4
	vspltisb	9,0x0f
	lvx	10, 12, 11
	li	11, 0x180
	lvx	11, 12, 10
	li	10, 0x190
	lvx	12, 12, 9
	li	9,  0x1a0
	lvx	13, 12, 8
	li	8,  0x1b0
	lvx	14, 12, 11
	li	11, 0x1c0
	lvx	15, 12, 10
	li	10, 0x1d0
	lvx	16, 12, 9
	li	9,  0x1e0
	lvx	17, 12, 8
	li	8,  0x1f0
	lvx	18, 12, 11
	li	11, 0x200
	lvx	19, 12, 10
	li	10, 0x210
	lvx	20, 12, 9
	lvx	21, 12, 8
	lvx	22, 12, 11
	lvx	23, 12, 10
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0






.align	4
_vpaes_decrypt_core:
	lwz	8, 240(5)
	li	9, 16
	lvx	5, 0, 5
	li	11, 0x30
	lvx	6, 9, 5
	addi	9, 9, 16
	vperm	5, 5, 6, 31
	vsrb	1, 0, 8
	vperm	0, 12, 12, 0
	vperm	1, 13, 13, 1
	vxor	0, 0, 5
	vxor	0, 0, 1
	mtctr	8
	b	.Ldec_entry

.align	4
.Ldec_loop:



	lvx	0, 12, 11


	vperm	4, 16, 7, 2
	subi	11, 11, 16
	vperm	1, 17, 7, 3
	andi.	11, 11, 0x30
	vxor	5, 5, 4

	vxor	5, 5, 1


	vperm	4, 18, 7, 2
	vperm	5, 5, 7, 0
	vperm	1, 19, 7, 3
	vxor	5, 5, 4

	vxor	5, 5, 1


	vperm	4, 20, 7, 2
	vperm	5, 5, 7, 0
	vperm	1, 21, 7, 3
	vxor	5, 5, 4

	vxor	5, 5, 1


	vperm	4, 22, 7, 2
	vperm	5, 5, 7, 0
	vperm	1, 23, 7, 3
	vxor	0, 5, 4
	vxor	0, 0, 1

.Ldec_entry:

	vsrb	1, 0, 8
	vperm	2, 11, 11, 0
	vxor	0, 0, 1
	vperm	3, 10, 10, 1
	vperm	4, 10, 10, 0
	vand	0, 0, 9
	vxor	3, 3, 2
	vxor	4, 4, 2
	vperm	2, 10, 7, 3
	vor	5, 6, 6
	lvx	6, 9, 5
	vperm	3, 10, 7, 4
	addi	9, 9, 16
	vxor	2, 2, 0
	vperm	5, 5, 6, 31
	vxor	3, 3, 1
	bc	16,0,.Ldec_loop


	addi	10, 11, 0x80

	vperm	4, 14, 7, 2

	lvx	2, 12, 10
	vperm	1, 15, 7, 3
	vxor	4, 4, 5
	vxor	0, 1, 4
	vperm	0, 0, 7, 2
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0

.globl	vpaes_decrypt
.type	vpaes_decrypt,@function
.section	".opd","aw"
.align	3
vpaes_decrypt:
.quad	.vpaes_decrypt,.TOC.@tocbase,0
.previous

.align	5
.vpaes_decrypt:
	stdu	1,-256(1)
	li	10,63
	li	11,79
	mflr	6
	mfspr	7, 256
	stvx	20,10,1
	addi	10,10,32
	stvx	21,11,1
	addi	11,11,32
	stvx	22,10,1
	addi	10,10,32
	stvx	23,11,1
	addi	11,11,32
	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	7,252(1)
	li	0, -1
	std	6,272(1)
	mtspr	256, 0

	bl	_vpaes_decrypt_preheat

	lvsl	27, 0, 3
	lvx	0, 0, 3
	addi	3, 3, 15
	lvsr	29, 0, 4
	lvsl	31, 0, 5
	lvx	26, 0, 3
	vperm	0, 0, 26, 27

	bl	_vpaes_decrypt_core

	andi.	8, 4, 15
	li	9, 16
	beq	.Ldec_out_aligned

	vperm	0, 0, 0, 29
	mtctr	9
.Ldec_out_unaligned:
	stvebx	0, 0, 4
	addi	4, 4, 1
	bc	16,0,.Ldec_out_unaligned
	b	.Ldec_done

.align	4
.Ldec_out_aligned:
	stvx	0, 0, 4
.Ldec_done:

	li	10,63
	li	11,79
	mtlr	6
	mtspr	256, 7
	lvx	20,10,1
	addi	10,10,32
	lvx	21,11,1
	addi	11,11,32
	lvx	22,10,1
	addi	10,10,32
	lvx	23,11,1
	addi	11,11,32
	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
	addi	1,1,256
	blr	
.long	0
.byte	0,12,0x04,1,0x80,0,3,0
.long	0


.globl	vpaes_cbc_encrypt
.type	vpaes_cbc_encrypt,@function
.section	".opd","aw"
.align	3
vpaes_cbc_encrypt:
.quad	.vpaes_cbc_encrypt,.TOC.@tocbase,0
.previous

.align	5
.vpaes_cbc_encrypt:
	cmpldi	5,16
	bltlr

	stdu	1,-272(1)
	mflr	0
	li	10,63
	li	11,79
	mfspr	12, 256
	stvx	20,10,1
	addi	10,10,32
	stvx	21,11,1
	addi	11,11,32
	stvx	22,10,1
	addi	10,10,32
	stvx	23,11,1
	addi	11,11,32
	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)
	std	30,256(1)
	std	31,264(1)
	li	9, -16
	std	0, 288(1)

	and	30, 5, 9
	andi.	9, 4, 15
	mr	5, 6
	mr	31, 7
	li	6, -1
	mcrf	1, 0
	mr	7, 12
	mtspr	256, 6

	lvx	24, 0, 31
	li	9, 15
	lvsl	27, 0, 31
	lvx	25, 9, 31
	vperm	24, 24, 25, 27

	cmpwi	8, 0
	neg	8, 3
	vxor	7, 7, 7
	lvsl	31, 0, 5
	lvsr	29, 0, 4
	lvsr	27, 0, 8
	vnor	30, 7, 7
	lvx	26, 0, 3
	vperm	30, 7, 30, 29
	addi	3, 3, 15

	beq	.Lcbc_decrypt

	bl	_vpaes_encrypt_preheat
	li	0, 16

	beq	1, .Lcbc_enc_loop

	vor	0, 26, 26
	lvx	26, 0, 3
	addi	3, 3, 16
	vperm	0, 0, 26, 27
	vxor	0, 0, 24

	bl	_vpaes_encrypt_core

	andi.	8, 4, 15
	vor	24, 0, 0
	sub	9, 4, 8
	vperm	28, 0, 0, 29

.Lcbc_enc_head:
	stvebx	28, 8, 9
	cmpwi	8, 15
	addi	8, 8, 1
	bne	.Lcbc_enc_head

	sub.	30, 30, 0
	addi	4, 4, 16
	beq	.Lcbc_unaligned_done

.Lcbc_enc_loop:
	vor	0, 26, 26
	lvx	26, 0, 3
	addi	3, 3, 16
	vperm	0, 0, 26, 27
	vxor	0, 0, 24

	bl	_vpaes_encrypt_core

	vor	24, 0, 0
	sub.	30, 30, 0
	vperm	0, 0, 0, 29
	vsel	1, 28, 0, 30
	vor	28, 0, 0
	stvx	1, 0, 4
	addi	4, 4, 16
	bne	.Lcbc_enc_loop

	b	.Lcbc_done

.align	5
.Lcbc_decrypt:
	bl	_vpaes_decrypt_preheat
	li	0, 16

	beq	1, .Lcbc_dec_loop

	vor	0, 26, 26
	lvx	26, 0, 3
	addi	3, 3, 16
	vperm	0, 0, 26, 27
	vor	25, 0, 0

	bl	_vpaes_decrypt_core

	andi.	8, 4, 15
	vxor	0, 0, 24
	vor	24, 25, 25
	sub	9, 4, 8
	vperm	28, 0, 0, 29

.Lcbc_dec_head:
	stvebx	28, 8, 9
	cmpwi	8, 15
	addi	8, 8, 1
	bne	.Lcbc_dec_head

	sub.	30, 30, 0
	addi	4, 4, 16
	beq	.Lcbc_unaligned_done

.Lcbc_dec_loop:
	vor	0, 26, 26
	lvx	26, 0, 3
	addi	3, 3, 16
	vperm	0, 0, 26, 27
	vor	25, 0, 0

	bl	_vpaes_decrypt_core

	vxor	0, 0, 24
	vor	24, 25, 25
	sub.	30, 30, 0
	vperm	0, 0, 0, 29
	vsel	1, 28, 0, 30
	vor	28, 0, 0
	stvx	1, 0, 4
	addi	4, 4, 16
	bne	.Lcbc_dec_loop

.Lcbc_done:
	beq	1, .Lcbc_write_iv

.Lcbc_unaligned_done:
	andi.	8, 4, 15
	sub	4, 4, 8
	li	9, 0
.Lcbc_tail:
	stvebx	28, 9, 4
	addi	9, 9, 1
	cmpw	9, 8
	bne	.Lcbc_tail

.Lcbc_write_iv:
	neg	8, 31
	li	10, 4
	lvsl	29, 0, 8
	li	11, 8
	li	12, 12
	vperm	24, 24, 24, 29
	stvewx	24, 0, 31
	stvewx	24, 10, 31
	stvewx	24, 11, 31
	stvewx	24, 12, 31

	mtspr	256, 7
	li	10,63
	li	11,79
	lvx	20,10,1
	addi	10,10,32
	lvx	21,11,1
	addi	11,11,32
	lvx	22,10,1
	addi	10,10,32
	lvx	23,11,1
	addi	11,11,32
	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
.Lcbc_abort:
	ld	0, 288(1)
	ld	30,256(1)
	ld	31,264(1)
	mtlr	0
	addi	1,1,272
	blr	
.long	0
.byte	0,12,0x04,1,0x80,2,6,0
.long	0






.align	4
_vpaes_key_preheat:
	mflr	8
	bl	.Lconsts
	mtlr	8
	li	11, 0xc0
	li	10, 0xd0
	li	9,  0xe0
	li	8,  0xf0

	vspltisb	8,4
	vxor	9,9,9
	lvx	10, 12, 11
	li	11, 0x120
	lvx	11, 12, 10
	li	10, 0x130
	lvx	12, 12, 9
	li	9, 0x220
	lvx	13, 12, 8
	li	8, 0x230

	lvx	14, 12, 11
	li	11, 0x240
	lvx	15, 12, 10
	li	10, 0x250

	lvx	16, 12, 9
	li	9, 0x260
	lvx	17, 12, 8
	li	8, 0x270
	lvx	18, 12, 11
	li	11, 0x280
	lvx	19, 12, 10
	li	10, 0x290
	lvx	20, 12, 9
	li	9, 0x2a0
	lvx	21, 12, 8
	li	8, 0x2b0
	lvx	22, 12, 11
	lvx	23, 12, 10

	lvx	24, 12, 9
	lvx	25, 0, 12
	lvx	26, 12, 8
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0

.align	4
_vpaes_schedule_core:
	mflr	7

	bl	_vpaes_key_preheat


	neg	8, 3
	lvx	0, 0, 3
	addi	3, 3, 15
	lvsr	27, 0, 8
	lvx	6, 0, 3
	addi	3, 3, 8
	vperm	0, 0, 6, 27


	vor	3, 0, 0
	bl	_vpaes_schedule_transform
	vor	7, 0, 0

	bne	1, .Lschedule_am_decrypting


	li	8, 0x30
	li	9, 4
	li	10, 8
	li	11, 12

	lvsr	29, 0, 5
	vnor	30, 9, 9
	vperm	30, 9, 30, 29


	vperm	28, 0, 0, 29
	stvewx	28, 0, 5
	stvewx	28, 9, 5
	stvewx	28, 10, 5
	addi	10, 12, 0x80
	stvewx	28, 11, 5
	b	.Lschedule_go

.Lschedule_am_decrypting:
	srwi	8, 4, 1
	andi.	8, 8, 32
	xori	8, 8, 32
	addi	10, 12, 0x80

	lvx	1, 8, 10
	li	9, 4
	li	10, 8
	li	11, 12
	vperm	4, 3, 3, 1

	neg	0, 5
	lvsl	29, 0, 0
	vnor	30, 9, 9
	vperm	30, 30, 9, 29


	vperm	28, 4, 4, 29
	stvewx	28, 0, 5
	stvewx	28, 9, 5
	stvewx	28, 10, 5
	addi	10, 12, 0x80
	stvewx	28, 11, 5
	addi	5, 5, 15
	xori	8, 8, 0x30

.Lschedule_go:
	cmplwi	4, 192
	bgt	.Lschedule_256
	beq	.Lschedule_192










.Lschedule_128:
	li	0, 10
	mtctr	0

.Loop_schedule_128:
	bl	_vpaes_schedule_round
	bdz	.Lschedule_mangle_last
	bl	_vpaes_schedule_mangle
	b	.Loop_schedule_128
















.align	4
.Lschedule_192:
	li	0, 4
	lvx	0, 0, 3
	vperm	0, 6, 0, 27
	vsldoi	0, 3, 0, 8
	bl	_vpaes_schedule_transform
	vsldoi	6, 0, 9, 8
	vsldoi	6, 9, 6, 8
	mtctr	0

.Loop_schedule_192:
	bl	_vpaes_schedule_round
	vsldoi	0, 6, 0, 8
	bl	_vpaes_schedule_mangle
	bl	_vpaes_schedule_192_smear
	bl	_vpaes_schedule_mangle
	bl	_vpaes_schedule_round
	bdz	.Lschedule_mangle_last
	bl	_vpaes_schedule_mangle
	bl	_vpaes_schedule_192_smear
	b	.Loop_schedule_192











.align	4
.Lschedule_256:
	li	0, 7
	addi	3, 3, 8
	lvx	0, 0, 3
	vperm	0, 6, 0, 27
	bl	_vpaes_schedule_transform
	mtctr	0

.Loop_schedule_256:
	bl	_vpaes_schedule_mangle
	vor	6, 0, 0


	bl	_vpaes_schedule_round
	bdz	.Lschedule_mangle_last
	bl	_vpaes_schedule_mangle


	vspltw	0, 0, 3
	vor	5, 7, 7
	vor	7, 6, 6
	bl	_vpaes_schedule_low_round
	vor	7, 5, 5

	b	.Loop_schedule_256










.align	4
.Lschedule_mangle_last:

	li	11, 0x2e0
	li	9,  0x2f0
	bne	1, .Lschedule_mangle_last_dec


	lvx	1, 8, 10
	li	11, 0x2c0
	li	9,  0x2d0
	vperm	0, 0, 0, 1

	lvx	12, 11, 12
	lvx	13, 9, 12
	addi	5, 5, 16
	vxor	0, 0, 26
	bl	_vpaes_schedule_transform


	vperm	0, 0, 0, 29
	li	10, 4
	vsel	2, 28, 0, 30
	li	11, 8
	stvx	2, 0, 5
	li	12, 12
	stvewx	0, 0, 5
	stvewx	0, 10, 5
	stvewx	0, 11, 5
	stvewx	0, 12, 5
	b	.Lschedule_mangle_done

.align	4
.Lschedule_mangle_last_dec:
	lvx	12, 11, 12
	lvx	13, 9,  12
	addi	5, 5, -16
	vxor	0, 0, 26
	bl	_vpaes_schedule_transform


	addi	9, 5, -15
	vperm	0, 0, 0, 29
	li	10, 4
	vsel	2, 28, 0, 30
	li	11, 8
	stvx	2, 0, 5
	li	12, 12
	stvewx	0, 0, 9
	stvewx	0, 10, 9
	stvewx	0, 11, 9
	stvewx	0, 12, 9


.Lschedule_mangle_done:
	mtlr	7

	vxor	0, 0, 0
	vxor	1, 1, 1
	vxor	2, 2, 2
	vxor	3, 3, 3
	vxor	4, 4, 4
	vxor	5, 5, 5
	vxor	6, 6, 6
	vxor	7, 7, 7

	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0















.align	4
_vpaes_schedule_192_smear:
	vspltw	0, 7, 3
	vsldoi	1, 9, 6, 12
	vsldoi	0, 7, 0, 8
	vxor	6, 6, 1
	vxor	6, 6, 0
	vor	0, 6, 6
	vsldoi	6, 6, 9, 8
	vsldoi	6, 9, 6, 8
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0



















.align	4
_vpaes_schedule_round:


	vsldoi	1, 24, 9, 15
	vsldoi	24, 24, 24, 15
	vxor	7, 7, 1


	vspltw	0, 0, 3
	vsldoi	0, 0, 0, 1




_vpaes_schedule_low_round:

	vsldoi	1, 9, 7, 12
	vxor	7, 7, 1
	vspltisb	1, 0x0f
	vsldoi	4, 9, 7, 8


	vand	1, 1, 0
	vsrb	0, 0, 8
	vxor	7, 7, 4
	vperm	2, 11, 9, 1
	vxor	1, 1, 0
	vperm	3, 10, 9, 0
	vxor	3, 3, 2
	vperm	4, 10, 9, 1
	vxor	7, 7, 26
	vperm	3, 10, 9, 3
	vxor	4, 4, 2
	vperm	2, 10, 9, 4
	vxor	3, 3, 1
	vxor	2, 2, 0
	vperm	4, 15, 9, 3
	vperm	1, 14, 9, 2
	vxor	1, 1, 4


	vxor	0, 1, 7
	vxor	7, 1, 7
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0










.align	4
_vpaes_schedule_transform:

	vsrb	2, 0, 8

	vperm	0, 12, 12, 0

	vperm	2, 13, 13, 2
	vxor	0, 0, 2
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0
























.align	4
_vpaes_schedule_mangle:


	bne	1, .Lschedule_mangle_dec


	vxor	4, 0, 26
	addi	5, 5, 16
	vperm	4, 4, 4, 25
	vperm	1, 4, 4, 25
	vperm	3, 1, 1, 25
	vxor	4, 4, 1
	lvx	1, 8, 10
	vxor	3, 3, 4

	vperm	3, 3, 3, 1
	addi	8, 8, -16
	andi.	8, 8, 0x30


	vperm	1, 3, 3, 29
	vsel	2, 28, 1, 30
	vor	28, 1, 1
	stvx	2, 0, 5
	blr	

.align	4
.Lschedule_mangle_dec:


	vsrb	1, 0, 8



	vperm	2, 16, 16, 0

	vperm	3, 17, 17, 1
	vxor	3, 3, 2
	vperm	3, 3, 9, 25


	vperm	2, 18, 18, 0
	vxor	2, 2, 3

	vperm	3, 19, 19, 1
	vxor	3, 3, 2
	vperm	3, 3, 9, 25


	vperm	2, 20, 20, 0
	vxor	2, 2, 3

	vperm	3, 21, 21, 1
	vxor	3, 3, 2


	vperm	2, 22, 22, 0
	vperm	3, 3, 9, 25

	vperm	4, 23, 23, 1
	lvx	1, 8, 10
	vxor	2, 2, 3
	vxor	3, 4, 2

	addi	5, 5, -16

	vperm	3, 3, 3, 1
	addi	8, 8, -16
	andi.	8, 8, 0x30


	vperm	1, 3, 3, 29
	vsel	2, 28, 1, 30
	vor	28, 1, 1
	stvx	2, 0, 5
	blr	
.long	0
.byte	0,12,0x14,0,0,0,0,0

.globl	vpaes_set_encrypt_key
.type	vpaes_set_encrypt_key,@function
.section	".opd","aw"
.align	3
vpaes_set_encrypt_key:
.quad	.vpaes_set_encrypt_key,.TOC.@tocbase,0
.previous

.align	5
.vpaes_set_encrypt_key:
	stdu	1,-256(1)
	li	10,63
	li	11,79
	mflr	0
	mfspr	6, 256
	stvx	20,10,1
	addi	10,10,32
	stvx	21,11,1
	addi	11,11,32
	stvx	22,10,1
	addi	10,10,32
	stvx	23,11,1
	addi	11,11,32
	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	6,252(1)
	li	7, -1
	std	0, 272(1)
	mtspr	256, 7

	srwi	9, 4, 5
	addi	9, 9, 6
	stw	9, 240(5)

	cmplw	1, 4, 4
	li	8, 0x30
	bl	_vpaes_schedule_core

	ld	0, 272(1)
	li	10,63
	li	11,79
	mtspr	256, 6
	mtlr	0
	xor	3, 3, 3
	lvx	20,10,1
	addi	10,10,32
	lvx	21,11,1
	addi	11,11,32
	lvx	22,10,1
	addi	10,10,32
	lvx	23,11,1
	addi	11,11,32
	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
	addi	1,1,256
	blr	
.long	0
.byte	0,12,0x04,1,0x80,0,3,0
.long	0


.globl	vpaes_set_decrypt_key
.type	vpaes_set_decrypt_key,@function
.section	".opd","aw"
.align	3
vpaes_set_decrypt_key:
.quad	.vpaes_set_decrypt_key,.TOC.@tocbase,0
.previous

.align	4
.vpaes_set_decrypt_key:
	stdu	1,-256(1)
	li	10,63
	li	11,79
	mflr	0
	mfspr	6, 256
	stvx	20,10,1
	addi	10,10,32
	stvx	21,11,1
	addi	11,11,32
	stvx	22,10,1
	addi	10,10,32
	stvx	23,11,1
	addi	11,11,32
	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	6,252(1)
	li	7, -1
	std	0, 272(1)
	mtspr	256, 7

	srwi	9, 4, 5
	addi	9, 9, 6
	stw	9, 240(5)

	slwi	9, 9, 4
	add	5, 5, 9

	cmplwi	1, 4, 0
	srwi	8, 4, 1
	andi.	8, 8, 32
	xori	8, 8, 32
	bl	_vpaes_schedule_core

	ld	0,  272(1)
	li	10,63
	li	11,79
	mtspr	256, 6
	mtlr	0
	xor	3, 3, 3
	lvx	20,10,1
	addi	10,10,32
	lvx	21,11,1
	addi	11,11,32
	lvx	22,10,1
	addi	10,10,32
	lvx	23,11,1
	addi	11,11,32
	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
	addi	1,1,256
	blr	
.long	0
.byte	0,12,0x04,1,0x80,0,3,0
.long	0


cvs diff -r1.1 -r1.2 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/des.inc (expand / switch to unified diff)

--- src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/des.inc 2010/03/30 07:23:51 1.1
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/des.inc 2016/10/15 12:19:02 1.2