xref: /freebsd/sys/crypto/openssl/powerpc64/chacha-ppc.S (revision 71625ec9ad2a9bc8c09784fbd23b759830e0ee5f)
1*3a608692SPiotr Kubaj/* Do not modify. This file is auto-generated from chacha-ppc.pl. */
2*3a608692SPiotr Kubaj.machine	"any"
3*3a608692SPiotr Kubaj.abiversion	2
4*3a608692SPiotr Kubaj.text
5*3a608692SPiotr Kubaj
6*3a608692SPiotr Kubaj.globl	ChaCha20_ctr32_int
7*3a608692SPiotr Kubaj.type	ChaCha20_ctr32_int,@function
8*3a608692SPiotr Kubaj.align	5
9*3a608692SPiotr KubajChaCha20_ctr32_int:
10*3a608692SPiotr Kubaj.localentry	ChaCha20_ctr32_int,0
11*3a608692SPiotr Kubaj
12*3a608692SPiotr Kubaj__ChaCha20_ctr32_int:
13*3a608692SPiotr Kubaj	cmpldi	5,0
14*3a608692SPiotr Kubaj	.long	0x4DC20020
15*3a608692SPiotr Kubaj
16*3a608692SPiotr Kubaj	stdu	1,-256(1)
17*3a608692SPiotr Kubaj	mflr	0
18*3a608692SPiotr Kubaj
19*3a608692SPiotr Kubaj	std	14,112(1)
20*3a608692SPiotr Kubaj	std	15,120(1)
21*3a608692SPiotr Kubaj	std	16,128(1)
22*3a608692SPiotr Kubaj	std	17,136(1)
23*3a608692SPiotr Kubaj	std	18,144(1)
24*3a608692SPiotr Kubaj	std	19,152(1)
25*3a608692SPiotr Kubaj	std	20,160(1)
26*3a608692SPiotr Kubaj	std	21,168(1)
27*3a608692SPiotr Kubaj	std	22,176(1)
28*3a608692SPiotr Kubaj	std	23,184(1)
29*3a608692SPiotr Kubaj	std	24,192(1)
30*3a608692SPiotr Kubaj	std	25,200(1)
31*3a608692SPiotr Kubaj	std	26,208(1)
32*3a608692SPiotr Kubaj	std	27,216(1)
33*3a608692SPiotr Kubaj	std	28,224(1)
34*3a608692SPiotr Kubaj	std	29,232(1)
35*3a608692SPiotr Kubaj	std	30,240(1)
36*3a608692SPiotr Kubaj	std	31,248(1)
37*3a608692SPiotr Kubaj	std	0,272(1)
38*3a608692SPiotr Kubaj
39*3a608692SPiotr Kubaj	lwz	11,0(7)
40*3a608692SPiotr Kubaj	lwz	12,4(7)
41*3a608692SPiotr Kubaj	lwz	14,8(7)
42*3a608692SPiotr Kubaj	lwz	15,12(7)
43*3a608692SPiotr Kubaj
44*3a608692SPiotr Kubaj	bl	__ChaCha20_1x
45*3a608692SPiotr Kubaj
46*3a608692SPiotr Kubaj	ld	0,272(1)
47*3a608692SPiotr Kubaj	ld	14,112(1)
48*3a608692SPiotr Kubaj	ld	15,120(1)
49*3a608692SPiotr Kubaj	ld	16,128(1)
50*3a608692SPiotr Kubaj	ld	17,136(1)
51*3a608692SPiotr Kubaj	ld	18,144(1)
52*3a608692SPiotr Kubaj	ld	19,152(1)
53*3a608692SPiotr Kubaj	ld	20,160(1)
54*3a608692SPiotr Kubaj	ld	21,168(1)
55*3a608692SPiotr Kubaj	ld	22,176(1)
56*3a608692SPiotr Kubaj	ld	23,184(1)
57*3a608692SPiotr Kubaj	ld	24,192(1)
58*3a608692SPiotr Kubaj	ld	25,200(1)
59*3a608692SPiotr Kubaj	ld	26,208(1)
60*3a608692SPiotr Kubaj	ld	27,216(1)
61*3a608692SPiotr Kubaj	ld	28,224(1)
62*3a608692SPiotr Kubaj	ld	29,232(1)
63*3a608692SPiotr Kubaj	ld	30,240(1)
64*3a608692SPiotr Kubaj	ld	31,248(1)
65*3a608692SPiotr Kubaj	mtlr	0
66*3a608692SPiotr Kubaj	addi	1,1,256
67*3a608692SPiotr Kubaj	blr
68*3a608692SPiotr Kubaj.long	0
69*3a608692SPiotr Kubaj.byte	0,12,4,1,0x80,18,5,0
70*3a608692SPiotr Kubaj.long	0
71*3a608692SPiotr Kubaj.size	ChaCha20_ctr32_int,.-ChaCha20_ctr32_int
72*3a608692SPiotr Kubaj
73*3a608692SPiotr Kubaj.align	5
74*3a608692SPiotr Kubaj__ChaCha20_1x:
75*3a608692SPiotr Kubaj.Loop_outer:
76*3a608692SPiotr Kubaj	lis	16,0x6170
77*3a608692SPiotr Kubaj	lis	17,0x3320
78*3a608692SPiotr Kubaj	lis	18,0x7962
79*3a608692SPiotr Kubaj	lis	19,0x6b20
80*3a608692SPiotr Kubaj	ori	16,16,0x7865
81*3a608692SPiotr Kubaj	ori	17,17,0x646e
82*3a608692SPiotr Kubaj	ori	18,18,0x2d32
83*3a608692SPiotr Kubaj	ori	19,19,0x6574
84*3a608692SPiotr Kubaj
85*3a608692SPiotr Kubaj	li	0,10
86*3a608692SPiotr Kubaj	lwz	20,0(6)
87*3a608692SPiotr Kubaj	lwz	21,4(6)
88*3a608692SPiotr Kubaj	lwz	22,8(6)
89*3a608692SPiotr Kubaj	lwz	23,12(6)
90*3a608692SPiotr Kubaj	lwz	24,16(6)
91*3a608692SPiotr Kubaj	mr	28,11
92*3a608692SPiotr Kubaj	lwz	25,20(6)
93*3a608692SPiotr Kubaj	mr	29,12
94*3a608692SPiotr Kubaj	lwz	26,24(6)
95*3a608692SPiotr Kubaj	mr	30,14
96*3a608692SPiotr Kubaj	lwz	27,28(6)
97*3a608692SPiotr Kubaj	mr	31,15
98*3a608692SPiotr Kubaj
99*3a608692SPiotr Kubaj	mr	7,20
100*3a608692SPiotr Kubaj	mr	8,21
101*3a608692SPiotr Kubaj	mr	9,22
102*3a608692SPiotr Kubaj	mr	10,23
103*3a608692SPiotr Kubaj
104*3a608692SPiotr Kubaj	mtctr	0
105*3a608692SPiotr Kubaj.Loop:
106*3a608692SPiotr Kubaj	add	16,16,20
107*3a608692SPiotr Kubaj	add	17,17,21
108*3a608692SPiotr Kubaj	add	18,18,22
109*3a608692SPiotr Kubaj	add	19,19,23
110*3a608692SPiotr Kubaj	xor	28,28,16
111*3a608692SPiotr Kubaj	xor	29,29,17
112*3a608692SPiotr Kubaj	xor	30,30,18
113*3a608692SPiotr Kubaj	xor	31,31,19
114*3a608692SPiotr Kubaj	rotlwi	28,28,16
115*3a608692SPiotr Kubaj	rotlwi	29,29,16
116*3a608692SPiotr Kubaj	rotlwi	30,30,16
117*3a608692SPiotr Kubaj	rotlwi	31,31,16
118*3a608692SPiotr Kubaj	add	24,24,28
119*3a608692SPiotr Kubaj	add	25,25,29
120*3a608692SPiotr Kubaj	add	26,26,30
121*3a608692SPiotr Kubaj	add	27,27,31
122*3a608692SPiotr Kubaj	xor	20,20,24
123*3a608692SPiotr Kubaj	xor	21,21,25
124*3a608692SPiotr Kubaj	xor	22,22,26
125*3a608692SPiotr Kubaj	xor	23,23,27
126*3a608692SPiotr Kubaj	rotlwi	20,20,12
127*3a608692SPiotr Kubaj	rotlwi	21,21,12
128*3a608692SPiotr Kubaj	rotlwi	22,22,12
129*3a608692SPiotr Kubaj	rotlwi	23,23,12
130*3a608692SPiotr Kubaj	add	16,16,20
131*3a608692SPiotr Kubaj	add	17,17,21
132*3a608692SPiotr Kubaj	add	18,18,22
133*3a608692SPiotr Kubaj	add	19,19,23
134*3a608692SPiotr Kubaj	xor	28,28,16
135*3a608692SPiotr Kubaj	xor	29,29,17
136*3a608692SPiotr Kubaj	xor	30,30,18
137*3a608692SPiotr Kubaj	xor	31,31,19
138*3a608692SPiotr Kubaj	rotlwi	28,28,8
139*3a608692SPiotr Kubaj	rotlwi	29,29,8
140*3a608692SPiotr Kubaj	rotlwi	30,30,8
141*3a608692SPiotr Kubaj	rotlwi	31,31,8
142*3a608692SPiotr Kubaj	add	24,24,28
143*3a608692SPiotr Kubaj	add	25,25,29
144*3a608692SPiotr Kubaj	add	26,26,30
145*3a608692SPiotr Kubaj	add	27,27,31
146*3a608692SPiotr Kubaj	xor	20,20,24
147*3a608692SPiotr Kubaj	xor	21,21,25
148*3a608692SPiotr Kubaj	xor	22,22,26
149*3a608692SPiotr Kubaj	xor	23,23,27
150*3a608692SPiotr Kubaj	rotlwi	20,20,7
151*3a608692SPiotr Kubaj	rotlwi	21,21,7
152*3a608692SPiotr Kubaj	rotlwi	22,22,7
153*3a608692SPiotr Kubaj	rotlwi	23,23,7
154*3a608692SPiotr Kubaj	add	16,16,21
155*3a608692SPiotr Kubaj	add	17,17,22
156*3a608692SPiotr Kubaj	add	18,18,23
157*3a608692SPiotr Kubaj	add	19,19,20
158*3a608692SPiotr Kubaj	xor	31,31,16
159*3a608692SPiotr Kubaj	xor	28,28,17
160*3a608692SPiotr Kubaj	xor	29,29,18
161*3a608692SPiotr Kubaj	xor	30,30,19
162*3a608692SPiotr Kubaj	rotlwi	31,31,16
163*3a608692SPiotr Kubaj	rotlwi	28,28,16
164*3a608692SPiotr Kubaj	rotlwi	29,29,16
165*3a608692SPiotr Kubaj	rotlwi	30,30,16
166*3a608692SPiotr Kubaj	add	26,26,31
167*3a608692SPiotr Kubaj	add	27,27,28
168*3a608692SPiotr Kubaj	add	24,24,29
169*3a608692SPiotr Kubaj	add	25,25,30
170*3a608692SPiotr Kubaj	xor	21,21,26
171*3a608692SPiotr Kubaj	xor	22,22,27
172*3a608692SPiotr Kubaj	xor	23,23,24
173*3a608692SPiotr Kubaj	xor	20,20,25
174*3a608692SPiotr Kubaj	rotlwi	21,21,12
175*3a608692SPiotr Kubaj	rotlwi	22,22,12
176*3a608692SPiotr Kubaj	rotlwi	23,23,12
177*3a608692SPiotr Kubaj	rotlwi	20,20,12
178*3a608692SPiotr Kubaj	add	16,16,21
179*3a608692SPiotr Kubaj	add	17,17,22
180*3a608692SPiotr Kubaj	add	18,18,23
181*3a608692SPiotr Kubaj	add	19,19,20
182*3a608692SPiotr Kubaj	xor	31,31,16
183*3a608692SPiotr Kubaj	xor	28,28,17
184*3a608692SPiotr Kubaj	xor	29,29,18
185*3a608692SPiotr Kubaj	xor	30,30,19
186*3a608692SPiotr Kubaj	rotlwi	31,31,8
187*3a608692SPiotr Kubaj	rotlwi	28,28,8
188*3a608692SPiotr Kubaj	rotlwi	29,29,8
189*3a608692SPiotr Kubaj	rotlwi	30,30,8
190*3a608692SPiotr Kubaj	add	26,26,31
191*3a608692SPiotr Kubaj	add	27,27,28
192*3a608692SPiotr Kubaj	add	24,24,29
193*3a608692SPiotr Kubaj	add	25,25,30
194*3a608692SPiotr Kubaj	xor	21,21,26
195*3a608692SPiotr Kubaj	xor	22,22,27
196*3a608692SPiotr Kubaj	xor	23,23,24
197*3a608692SPiotr Kubaj	xor	20,20,25
198*3a608692SPiotr Kubaj	rotlwi	21,21,7
199*3a608692SPiotr Kubaj	rotlwi	22,22,7
200*3a608692SPiotr Kubaj	rotlwi	23,23,7
201*3a608692SPiotr Kubaj	rotlwi	20,20,7
202*3a608692SPiotr Kubaj	bdnz	.Loop
203*3a608692SPiotr Kubaj
204*3a608692SPiotr Kubaj	subic	5,5,64
205*3a608692SPiotr Kubaj	addi	16,16,0x7865
206*3a608692SPiotr Kubaj	addi	17,17,0x646e
207*3a608692SPiotr Kubaj	addi	18,18,0x2d32
208*3a608692SPiotr Kubaj	addi	19,19,0x6574
209*3a608692SPiotr Kubaj	addis	16,16,0x6170
210*3a608692SPiotr Kubaj	addis	17,17,0x3320
211*3a608692SPiotr Kubaj	addis	18,18,0x7962
212*3a608692SPiotr Kubaj	addis	19,19,0x6b20
213*3a608692SPiotr Kubaj
214*3a608692SPiotr Kubaj	subfe.	0,0,0
215*3a608692SPiotr Kubaj	add	20,20,7
216*3a608692SPiotr Kubaj	lwz	7,16(6)
217*3a608692SPiotr Kubaj	add	21,21,8
218*3a608692SPiotr Kubaj	lwz	8,20(6)
219*3a608692SPiotr Kubaj	add	22,22,9
220*3a608692SPiotr Kubaj	lwz	9,24(6)
221*3a608692SPiotr Kubaj	add	23,23,10
222*3a608692SPiotr Kubaj	lwz	10,28(6)
223*3a608692SPiotr Kubaj	add	24,24,7
224*3a608692SPiotr Kubaj	add	25,25,8
225*3a608692SPiotr Kubaj	add	26,26,9
226*3a608692SPiotr Kubaj	add	27,27,10
227*3a608692SPiotr Kubaj
228*3a608692SPiotr Kubaj	add	28,28,11
229*3a608692SPiotr Kubaj	add	29,29,12
230*3a608692SPiotr Kubaj	add	30,30,14
231*3a608692SPiotr Kubaj	add	31,31,15
232*3a608692SPiotr Kubaj	addi	11,11,1
233*3a608692SPiotr Kubaj	mr	7,16
234*3a608692SPiotr Kubaj	rotlwi	16,16,8
235*3a608692SPiotr Kubaj	rlwimi	16,7,24,0,7
236*3a608692SPiotr Kubaj	rlwimi	16,7,24,16,23
237*3a608692SPiotr Kubaj	mr	8,17
238*3a608692SPiotr Kubaj	rotlwi	17,17,8
239*3a608692SPiotr Kubaj	rlwimi	17,8,24,0,7
240*3a608692SPiotr Kubaj	rlwimi	17,8,24,16,23
241*3a608692SPiotr Kubaj	mr	9,18
242*3a608692SPiotr Kubaj	rotlwi	18,18,8
243*3a608692SPiotr Kubaj	rlwimi	18,9,24,0,7
244*3a608692SPiotr Kubaj	rlwimi	18,9,24,16,23
245*3a608692SPiotr Kubaj	mr	10,19
246*3a608692SPiotr Kubaj	rotlwi	19,19,8
247*3a608692SPiotr Kubaj	rlwimi	19,10,24,0,7
248*3a608692SPiotr Kubaj	rlwimi	19,10,24,16,23
249*3a608692SPiotr Kubaj	mr	7,20
250*3a608692SPiotr Kubaj	rotlwi	20,20,8
251*3a608692SPiotr Kubaj	rlwimi	20,7,24,0,7
252*3a608692SPiotr Kubaj	rlwimi	20,7,24,16,23
253*3a608692SPiotr Kubaj	mr	8,21
254*3a608692SPiotr Kubaj	rotlwi	21,21,8
255*3a608692SPiotr Kubaj	rlwimi	21,8,24,0,7
256*3a608692SPiotr Kubaj	rlwimi	21,8,24,16,23
257*3a608692SPiotr Kubaj	mr	9,22
258*3a608692SPiotr Kubaj	rotlwi	22,22,8
259*3a608692SPiotr Kubaj	rlwimi	22,9,24,0,7
260*3a608692SPiotr Kubaj	rlwimi	22,9,24,16,23
261*3a608692SPiotr Kubaj	mr	10,23
262*3a608692SPiotr Kubaj	rotlwi	23,23,8
263*3a608692SPiotr Kubaj	rlwimi	23,10,24,0,7
264*3a608692SPiotr Kubaj	rlwimi	23,10,24,16,23
265*3a608692SPiotr Kubaj	mr	7,24
266*3a608692SPiotr Kubaj	rotlwi	24,24,8
267*3a608692SPiotr Kubaj	rlwimi	24,7,24,0,7
268*3a608692SPiotr Kubaj	rlwimi	24,7,24,16,23
269*3a608692SPiotr Kubaj	mr	8,25
270*3a608692SPiotr Kubaj	rotlwi	25,25,8
271*3a608692SPiotr Kubaj	rlwimi	25,8,24,0,7
272*3a608692SPiotr Kubaj	rlwimi	25,8,24,16,23
273*3a608692SPiotr Kubaj	mr	9,26
274*3a608692SPiotr Kubaj	rotlwi	26,26,8
275*3a608692SPiotr Kubaj	rlwimi	26,9,24,0,7
276*3a608692SPiotr Kubaj	rlwimi	26,9,24,16,23
277*3a608692SPiotr Kubaj	mr	10,27
278*3a608692SPiotr Kubaj	rotlwi	27,27,8
279*3a608692SPiotr Kubaj	rlwimi	27,10,24,0,7
280*3a608692SPiotr Kubaj	rlwimi	27,10,24,16,23
281*3a608692SPiotr Kubaj	mr	7,28
282*3a608692SPiotr Kubaj	rotlwi	28,28,8
283*3a608692SPiotr Kubaj	rlwimi	28,7,24,0,7
284*3a608692SPiotr Kubaj	rlwimi	28,7,24,16,23
285*3a608692SPiotr Kubaj	mr	8,29
286*3a608692SPiotr Kubaj	rotlwi	29,29,8
287*3a608692SPiotr Kubaj	rlwimi	29,8,24,0,7
288*3a608692SPiotr Kubaj	rlwimi	29,8,24,16,23
289*3a608692SPiotr Kubaj	mr	9,30
290*3a608692SPiotr Kubaj	rotlwi	30,30,8
291*3a608692SPiotr Kubaj	rlwimi	30,9,24,0,7
292*3a608692SPiotr Kubaj	rlwimi	30,9,24,16,23
293*3a608692SPiotr Kubaj	mr	10,31
294*3a608692SPiotr Kubaj	rotlwi	31,31,8
295*3a608692SPiotr Kubaj	rlwimi	31,10,24,0,7
296*3a608692SPiotr Kubaj	rlwimi	31,10,24,16,23
297*3a608692SPiotr Kubaj	bne	.Ltail
298*3a608692SPiotr Kubaj
299*3a608692SPiotr Kubaj	lwz	7,0(4)
300*3a608692SPiotr Kubaj	lwz	8,4(4)
301*3a608692SPiotr Kubaj	cmpldi	5,0
302*3a608692SPiotr Kubaj	lwz	9,8(4)
303*3a608692SPiotr Kubaj	lwz	10,12(4)
304*3a608692SPiotr Kubaj	xor	16,16,7
305*3a608692SPiotr Kubaj	lwz	7,16(4)
306*3a608692SPiotr Kubaj	xor	17,17,8
307*3a608692SPiotr Kubaj	lwz	8,20(4)
308*3a608692SPiotr Kubaj	xor	18,18,9
309*3a608692SPiotr Kubaj	lwz	9,24(4)
310*3a608692SPiotr Kubaj	xor	19,19,10
311*3a608692SPiotr Kubaj	lwz	10,28(4)
312*3a608692SPiotr Kubaj	xor	20,20,7
313*3a608692SPiotr Kubaj	lwz	7,32(4)
314*3a608692SPiotr Kubaj	xor	21,21,8
315*3a608692SPiotr Kubaj	lwz	8,36(4)
316*3a608692SPiotr Kubaj	xor	22,22,9
317*3a608692SPiotr Kubaj	lwz	9,40(4)
318*3a608692SPiotr Kubaj	xor	23,23,10
319*3a608692SPiotr Kubaj	lwz	10,44(4)
320*3a608692SPiotr Kubaj	xor	24,24,7
321*3a608692SPiotr Kubaj	lwz	7,48(4)
322*3a608692SPiotr Kubaj	xor	25,25,8
323*3a608692SPiotr Kubaj	lwz	8,52(4)
324*3a608692SPiotr Kubaj	xor	26,26,9
325*3a608692SPiotr Kubaj	lwz	9,56(4)
326*3a608692SPiotr Kubaj	xor	27,27,10
327*3a608692SPiotr Kubaj	lwz	10,60(4)
328*3a608692SPiotr Kubaj	xor	28,28,7
329*3a608692SPiotr Kubaj	stw	16,0(3)
330*3a608692SPiotr Kubaj	xor	29,29,8
331*3a608692SPiotr Kubaj	stw	17,4(3)
332*3a608692SPiotr Kubaj	xor	30,30,9
333*3a608692SPiotr Kubaj	stw	18,8(3)
334*3a608692SPiotr Kubaj	xor	31,31,10
335*3a608692SPiotr Kubaj	stw	19,12(3)
336*3a608692SPiotr Kubaj	stw	20,16(3)
337*3a608692SPiotr Kubaj	stw	21,20(3)
338*3a608692SPiotr Kubaj	stw	22,24(3)
339*3a608692SPiotr Kubaj	stw	23,28(3)
340*3a608692SPiotr Kubaj	stw	24,32(3)
341*3a608692SPiotr Kubaj	stw	25,36(3)
342*3a608692SPiotr Kubaj	stw	26,40(3)
343*3a608692SPiotr Kubaj	stw	27,44(3)
344*3a608692SPiotr Kubaj	stw	28,48(3)
345*3a608692SPiotr Kubaj	stw	29,52(3)
346*3a608692SPiotr Kubaj	stw	30,56(3)
347*3a608692SPiotr Kubaj	addi	4,4,64
348*3a608692SPiotr Kubaj	stw	31,60(3)
349*3a608692SPiotr Kubaj	addi	3,3,64
350*3a608692SPiotr Kubaj
351*3a608692SPiotr Kubaj	bne	.Loop_outer
352*3a608692SPiotr Kubaj
353*3a608692SPiotr Kubaj	blr
354*3a608692SPiotr Kubaj
355*3a608692SPiotr Kubaj.align	4
356*3a608692SPiotr Kubaj.Ltail:
357*3a608692SPiotr Kubaj	addi	5,5,64
358*3a608692SPiotr Kubaj	subi	4,4,1
359*3a608692SPiotr Kubaj	subi	3,3,1
360*3a608692SPiotr Kubaj	addi	7,1,48-1
361*3a608692SPiotr Kubaj	mtctr	5
362*3a608692SPiotr Kubaj
363*3a608692SPiotr Kubaj	stw	16,48(1)
364*3a608692SPiotr Kubaj	stw	17,52(1)
365*3a608692SPiotr Kubaj	stw	18,56(1)
366*3a608692SPiotr Kubaj	stw	19,60(1)
367*3a608692SPiotr Kubaj	stw	20,64(1)
368*3a608692SPiotr Kubaj	stw	21,68(1)
369*3a608692SPiotr Kubaj	stw	22,72(1)
370*3a608692SPiotr Kubaj	stw	23,76(1)
371*3a608692SPiotr Kubaj	stw	24,80(1)
372*3a608692SPiotr Kubaj	stw	25,84(1)
373*3a608692SPiotr Kubaj	stw	26,88(1)
374*3a608692SPiotr Kubaj	stw	27,92(1)
375*3a608692SPiotr Kubaj	stw	28,96(1)
376*3a608692SPiotr Kubaj	stw	29,100(1)
377*3a608692SPiotr Kubaj	stw	30,104(1)
378*3a608692SPiotr Kubaj	stw	31,108(1)
379*3a608692SPiotr Kubaj
380*3a608692SPiotr Kubaj.Loop_tail:
381*3a608692SPiotr Kubaj	lbzu	11,1(4)
382*3a608692SPiotr Kubaj	lbzu	16,1(7)
383*3a608692SPiotr Kubaj	xor	12,11,16
384*3a608692SPiotr Kubaj	stbu	12,1(3)
385*3a608692SPiotr Kubaj	bdnz	.Loop_tail
386*3a608692SPiotr Kubaj
387*3a608692SPiotr Kubaj	stw	1,48(1)
388*3a608692SPiotr Kubaj	stw	1,52(1)
389*3a608692SPiotr Kubaj	stw	1,56(1)
390*3a608692SPiotr Kubaj	stw	1,60(1)
391*3a608692SPiotr Kubaj	stw	1,64(1)
392*3a608692SPiotr Kubaj	stw	1,68(1)
393*3a608692SPiotr Kubaj	stw	1,72(1)
394*3a608692SPiotr Kubaj	stw	1,76(1)
395*3a608692SPiotr Kubaj	stw	1,80(1)
396*3a608692SPiotr Kubaj	stw	1,84(1)
397*3a608692SPiotr Kubaj	stw	1,88(1)
398*3a608692SPiotr Kubaj	stw	1,92(1)
399*3a608692SPiotr Kubaj	stw	1,96(1)
400*3a608692SPiotr Kubaj	stw	1,100(1)
401*3a608692SPiotr Kubaj	stw	1,104(1)
402*3a608692SPiotr Kubaj	stw	1,108(1)
403*3a608692SPiotr Kubaj
404*3a608692SPiotr Kubaj	blr
405*3a608692SPiotr Kubaj.long	0
406*3a608692SPiotr Kubaj.byte	0,12,0x14,0,0,0,0,0
407*3a608692SPiotr Kubaj
408*3a608692SPiotr Kubaj.globl	ChaCha20_ctr32_vmx
409*3a608692SPiotr Kubaj.type	ChaCha20_ctr32_vmx,@function
410*3a608692SPiotr Kubaj.align	5
411*3a608692SPiotr KubajChaCha20_ctr32_vmx:
412*3a608692SPiotr Kubaj.localentry	ChaCha20_ctr32_vmx,0
413*3a608692SPiotr Kubaj
414*3a608692SPiotr Kubaj	cmpldi	5,256
415*3a608692SPiotr Kubaj	blt	__ChaCha20_ctr32_int
416*3a608692SPiotr Kubaj
417*3a608692SPiotr Kubaj	stdu	1,-416(1)
418*3a608692SPiotr Kubaj	mflr	0
419*3a608692SPiotr Kubaj	li	10,127
420*3a608692SPiotr Kubaj	li	11,143
421*3a608692SPiotr Kubaj	li	12,-1
422*3a608692SPiotr Kubaj	stvx	23,10,1
423*3a608692SPiotr Kubaj	addi	10,10,32
424*3a608692SPiotr Kubaj	stvx	24,11,1
425*3a608692SPiotr Kubaj	addi	11,11,32
426*3a608692SPiotr Kubaj	stvx	25,10,1
427*3a608692SPiotr Kubaj	addi	10,10,32
428*3a608692SPiotr Kubaj	stvx	26,11,1
429*3a608692SPiotr Kubaj	addi	11,11,32
430*3a608692SPiotr Kubaj	stvx	27,10,1
431*3a608692SPiotr Kubaj	addi	10,10,32
432*3a608692SPiotr Kubaj	stvx	28,11,1
433*3a608692SPiotr Kubaj	addi	11,11,32
434*3a608692SPiotr Kubaj	stvx	29,10,1
435*3a608692SPiotr Kubaj	addi	10,10,32
436*3a608692SPiotr Kubaj	stvx	30,11,1
437*3a608692SPiotr Kubaj	stvx	31,10,1
438*3a608692SPiotr Kubaj	stw	12,268(1)
439*3a608692SPiotr Kubaj	std	14,272(1)
440*3a608692SPiotr Kubaj	std	15,280(1)
441*3a608692SPiotr Kubaj	std	16,288(1)
442*3a608692SPiotr Kubaj	std	17,296(1)
443*3a608692SPiotr Kubaj	std	18,304(1)
444*3a608692SPiotr Kubaj	std	19,312(1)
445*3a608692SPiotr Kubaj	std	20,320(1)
446*3a608692SPiotr Kubaj	std	21,328(1)
447*3a608692SPiotr Kubaj	std	22,336(1)
448*3a608692SPiotr Kubaj	std	23,344(1)
449*3a608692SPiotr Kubaj	std	24,352(1)
450*3a608692SPiotr Kubaj	std	25,360(1)
451*3a608692SPiotr Kubaj	std	26,368(1)
452*3a608692SPiotr Kubaj	std	27,376(1)
453*3a608692SPiotr Kubaj	std	28,384(1)
454*3a608692SPiotr Kubaj	std	29,392(1)
455*3a608692SPiotr Kubaj	std	30,400(1)
456*3a608692SPiotr Kubaj	std	31,408(1)
457*3a608692SPiotr Kubaj	li	12,-4096+511
458*3a608692SPiotr Kubaj	std	0, 432(1)
459*3a608692SPiotr Kubaj	or	12,12,12
460*3a608692SPiotr Kubaj
461*3a608692SPiotr Kubaj	bl	.Lconsts
462*3a608692SPiotr Kubaj	li	16,16
463*3a608692SPiotr Kubaj	li	17,32
464*3a608692SPiotr Kubaj	li	18,48
465*3a608692SPiotr Kubaj	li	19,64
466*3a608692SPiotr Kubaj	li	20,31
467*3a608692SPiotr Kubaj	li	21,15
468*3a608692SPiotr Kubaj
469*3a608692SPiotr Kubaj	lvx	13,0,6
470*3a608692SPiotr Kubaj	lvsl	29,0,6
471*3a608692SPiotr Kubaj	lvx	14,16,6
472*3a608692SPiotr Kubaj	lvx	27,20,6
473*3a608692SPiotr Kubaj
474*3a608692SPiotr Kubaj	lvx	15,0,7
475*3a608692SPiotr Kubaj	lvsl	30,0,7
476*3a608692SPiotr Kubaj	lvx	28,21,7
477*3a608692SPiotr Kubaj
478*3a608692SPiotr Kubaj	lvx	12,0,12
479*3a608692SPiotr Kubaj	lvx	17,16,12
480*3a608692SPiotr Kubaj	lvx	18,17,12
481*3a608692SPiotr Kubaj	lvx	19,18,12
482*3a608692SPiotr Kubaj	lvx	23,19,12
483*3a608692SPiotr Kubaj
484*3a608692SPiotr Kubaj	vperm	13,13,14,29
485*3a608692SPiotr Kubaj	vperm	14,14,27,29
486*3a608692SPiotr Kubaj	vperm	15,15,28,30
487*3a608692SPiotr Kubaj
488*3a608692SPiotr Kubaj	lwz	11,0(7)
489*3a608692SPiotr Kubaj	lwz	12,4(7)
490*3a608692SPiotr Kubaj	vadduwm	15,15,17
491*3a608692SPiotr Kubaj	lwz	14,8(7)
492*3a608692SPiotr Kubaj	vadduwm	16,15,17
493*3a608692SPiotr Kubaj	lwz	15,12(7)
494*3a608692SPiotr Kubaj	vadduwm	17,16,17
495*3a608692SPiotr Kubaj
496*3a608692SPiotr Kubaj	vxor	29,29,29
497*3a608692SPiotr Kubaj	vspltisw	26,-1
498*3a608692SPiotr Kubaj	lvsl	24,0,4
499*3a608692SPiotr Kubaj	lvsr	25,0,3
500*3a608692SPiotr Kubaj	vperm	26,29,26,25
501*3a608692SPiotr Kubaj
502*3a608692SPiotr Kubaj	lvsl	29,0,16
503*3a608692SPiotr Kubaj	vspltisb	30,3
504*3a608692SPiotr Kubaj	vxor	29,29,30
505*3a608692SPiotr Kubaj	vxor	25,25,30
506*3a608692SPiotr Kubaj	vperm	24,24,24,29
507*3a608692SPiotr Kubaj
508*3a608692SPiotr Kubaj	li	0,10
509*3a608692SPiotr Kubaj	b	.Loop_outer_vmx
510*3a608692SPiotr Kubaj
511*3a608692SPiotr Kubaj.align	4
512*3a608692SPiotr Kubaj.Loop_outer_vmx:
513*3a608692SPiotr Kubaj	lis	16,0x6170
514*3a608692SPiotr Kubaj	lis	17,0x3320
515*3a608692SPiotr Kubaj	vor	0,12,12
516*3a608692SPiotr Kubaj	lis	18,0x7962
517*3a608692SPiotr Kubaj	lis	19,0x6b20
518*3a608692SPiotr Kubaj	vor	4,12,12
519*3a608692SPiotr Kubaj	ori	16,16,0x7865
520*3a608692SPiotr Kubaj	ori	17,17,0x646e
521*3a608692SPiotr Kubaj	vor	8,12,12
522*3a608692SPiotr Kubaj	ori	18,18,0x2d32
523*3a608692SPiotr Kubaj	ori	19,19,0x6574
524*3a608692SPiotr Kubaj	vor	1,13,13
525*3a608692SPiotr Kubaj
526*3a608692SPiotr Kubaj	lwz	20,0(6)
527*3a608692SPiotr Kubaj	vor	5,13,13
528*3a608692SPiotr Kubaj	lwz	21,4(6)
529*3a608692SPiotr Kubaj	vor	9,13,13
530*3a608692SPiotr Kubaj	lwz	22,8(6)
531*3a608692SPiotr Kubaj	vor	2,14,14
532*3a608692SPiotr Kubaj	lwz	23,12(6)
533*3a608692SPiotr Kubaj	vor	6,14,14
534*3a608692SPiotr Kubaj	lwz	24,16(6)
535*3a608692SPiotr Kubaj	vor	10,14,14
536*3a608692SPiotr Kubaj	mr	28,11
537*3a608692SPiotr Kubaj	lwz	25,20(6)
538*3a608692SPiotr Kubaj	vor	3,15,15
539*3a608692SPiotr Kubaj	mr	29,12
540*3a608692SPiotr Kubaj	lwz	26,24(6)
541*3a608692SPiotr Kubaj	vor	7,16,16
542*3a608692SPiotr Kubaj	mr	30,14
543*3a608692SPiotr Kubaj	lwz	27,28(6)
544*3a608692SPiotr Kubaj	vor	11,17,17
545*3a608692SPiotr Kubaj	mr	31,15
546*3a608692SPiotr Kubaj
547*3a608692SPiotr Kubaj	mr	7,20
548*3a608692SPiotr Kubaj	mr	8,21
549*3a608692SPiotr Kubaj	mr	9,22
550*3a608692SPiotr Kubaj	mr	10,23
551*3a608692SPiotr Kubaj
552*3a608692SPiotr Kubaj	vspltisw	27,12
553*3a608692SPiotr Kubaj	vspltisw	28,7
554*3a608692SPiotr Kubaj
555*3a608692SPiotr Kubaj	mtctr	0
556*3a608692SPiotr Kubaj	nop
557*3a608692SPiotr Kubaj.Loop_vmx:
558*3a608692SPiotr Kubaj	vadduwm	0,0,1
559*3a608692SPiotr Kubaj	vadduwm	4,4,5
560*3a608692SPiotr Kubaj	vadduwm	8,8,9
561*3a608692SPiotr Kubaj	add	16,16,20
562*3a608692SPiotr Kubaj	add	17,17,21
563*3a608692SPiotr Kubaj	add	18,18,22
564*3a608692SPiotr Kubaj	vxor	3,3,0
565*3a608692SPiotr Kubaj	vxor	7,7,4
566*3a608692SPiotr Kubaj	vxor	11,11,8
567*3a608692SPiotr Kubaj	add	19,19,23
568*3a608692SPiotr Kubaj	xor	28,28,16
569*3a608692SPiotr Kubaj	xor	29,29,17
570*3a608692SPiotr Kubaj	vperm	3,3,3,19
571*3a608692SPiotr Kubaj	vperm	7,7,7,19
572*3a608692SPiotr Kubaj	vperm	11,11,11,19
573*3a608692SPiotr Kubaj	xor	30,30,18
574*3a608692SPiotr Kubaj	xor	31,31,19
575*3a608692SPiotr Kubaj	rotlwi	28,28,16
576*3a608692SPiotr Kubaj	vadduwm	2,2,3
577*3a608692SPiotr Kubaj	vadduwm	6,6,7
578*3a608692SPiotr Kubaj	vadduwm	10,10,11
579*3a608692SPiotr Kubaj	rotlwi	29,29,16
580*3a608692SPiotr Kubaj	rotlwi	30,30,16
581*3a608692SPiotr Kubaj	rotlwi	31,31,16
582*3a608692SPiotr Kubaj	vxor	1,1,2
583*3a608692SPiotr Kubaj	vxor	5,5,6
584*3a608692SPiotr Kubaj	vxor	9,9,10
585*3a608692SPiotr Kubaj	add	24,24,28
586*3a608692SPiotr Kubaj	add	25,25,29
587*3a608692SPiotr Kubaj	add	26,26,30
588*3a608692SPiotr Kubaj	vrlw	1,1,27
589*3a608692SPiotr Kubaj	vrlw	5,5,27
590*3a608692SPiotr Kubaj	vrlw	9,9,27
591*3a608692SPiotr Kubaj	add	27,27,31
592*3a608692SPiotr Kubaj	xor	20,20,24
593*3a608692SPiotr Kubaj	xor	21,21,25
594*3a608692SPiotr Kubaj	vadduwm	0,0,1
595*3a608692SPiotr Kubaj	vadduwm	4,4,5
596*3a608692SPiotr Kubaj	vadduwm	8,8,9
597*3a608692SPiotr Kubaj	xor	22,22,26
598*3a608692SPiotr Kubaj	xor	23,23,27
599*3a608692SPiotr Kubaj	rotlwi	20,20,12
600*3a608692SPiotr Kubaj	vxor	3,3,0
601*3a608692SPiotr Kubaj	vxor	7,7,4
602*3a608692SPiotr Kubaj	vxor	11,11,8
603*3a608692SPiotr Kubaj	rotlwi	21,21,12
604*3a608692SPiotr Kubaj	rotlwi	22,22,12
605*3a608692SPiotr Kubaj	rotlwi	23,23,12
606*3a608692SPiotr Kubaj	vperm	3,3,3,23
607*3a608692SPiotr Kubaj	vperm	7,7,7,23
608*3a608692SPiotr Kubaj	vperm	11,11,11,23
609*3a608692SPiotr Kubaj	add	16,16,20
610*3a608692SPiotr Kubaj	add	17,17,21
611*3a608692SPiotr Kubaj	add	18,18,22
612*3a608692SPiotr Kubaj	vadduwm	2,2,3
613*3a608692SPiotr Kubaj	vadduwm	6,6,7
614*3a608692SPiotr Kubaj	vadduwm	10,10,11
615*3a608692SPiotr Kubaj	add	19,19,23
616*3a608692SPiotr Kubaj	xor	28,28,16
617*3a608692SPiotr Kubaj	xor	29,29,17
618*3a608692SPiotr Kubaj	vxor	1,1,2
619*3a608692SPiotr Kubaj	vxor	5,5,6
620*3a608692SPiotr Kubaj	vxor	9,9,10
621*3a608692SPiotr Kubaj	xor	30,30,18
622*3a608692SPiotr Kubaj	xor	31,31,19
623*3a608692SPiotr Kubaj	rotlwi	28,28,8
624*3a608692SPiotr Kubaj	vrlw	1,1,28
625*3a608692SPiotr Kubaj	vrlw	5,5,28
626*3a608692SPiotr Kubaj	vrlw	9,9,28
627*3a608692SPiotr Kubaj	rotlwi	29,29,8
628*3a608692SPiotr Kubaj	rotlwi	30,30,8
629*3a608692SPiotr Kubaj	rotlwi	31,31,8
630*3a608692SPiotr Kubaj	vsldoi	2,2,2, 16-8
631*3a608692SPiotr Kubaj	vsldoi	6,6,6, 16-8
632*3a608692SPiotr Kubaj	vsldoi	10,10,10, 16-8
633*3a608692SPiotr Kubaj	add	24,24,28
634*3a608692SPiotr Kubaj	add	25,25,29
635*3a608692SPiotr Kubaj	add	26,26,30
636*3a608692SPiotr Kubaj	vsldoi	1,1,1, 16-12
637*3a608692SPiotr Kubaj	vsldoi	5,5,5, 16-12
638*3a608692SPiotr Kubaj	vsldoi	9,9,9, 16-12
639*3a608692SPiotr Kubaj	add	27,27,31
640*3a608692SPiotr Kubaj	xor	20,20,24
641*3a608692SPiotr Kubaj	xor	21,21,25
642*3a608692SPiotr Kubaj	vsldoi	3,3,3, 16-4
643*3a608692SPiotr Kubaj	vsldoi	7,7,7, 16-4
644*3a608692SPiotr Kubaj	vsldoi	11,11,11, 16-4
645*3a608692SPiotr Kubaj	xor	22,22,26
646*3a608692SPiotr Kubaj	xor	23,23,27
647*3a608692SPiotr Kubaj	rotlwi	20,20,7
648*3a608692SPiotr Kubaj	rotlwi	21,21,7
649*3a608692SPiotr Kubaj	rotlwi	22,22,7
650*3a608692SPiotr Kubaj	rotlwi	23,23,7
651*3a608692SPiotr Kubaj	vadduwm	0,0,1
652*3a608692SPiotr Kubaj	vadduwm	4,4,5
653*3a608692SPiotr Kubaj	vadduwm	8,8,9
654*3a608692SPiotr Kubaj	add	16,16,21
655*3a608692SPiotr Kubaj	add	17,17,22
656*3a608692SPiotr Kubaj	add	18,18,23
657*3a608692SPiotr Kubaj	vxor	3,3,0
658*3a608692SPiotr Kubaj	vxor	7,7,4
659*3a608692SPiotr Kubaj	vxor	11,11,8
660*3a608692SPiotr Kubaj	add	19,19,20
661*3a608692SPiotr Kubaj	xor	31,31,16
662*3a608692SPiotr Kubaj	xor	28,28,17
663*3a608692SPiotr Kubaj	vperm	3,3,3,19
664*3a608692SPiotr Kubaj	vperm	7,7,7,19
665*3a608692SPiotr Kubaj	vperm	11,11,11,19
666*3a608692SPiotr Kubaj	xor	29,29,18
667*3a608692SPiotr Kubaj	xor	30,30,19
668*3a608692SPiotr Kubaj	rotlwi	31,31,16
669*3a608692SPiotr Kubaj	vadduwm	2,2,3
670*3a608692SPiotr Kubaj	vadduwm	6,6,7
671*3a608692SPiotr Kubaj	vadduwm	10,10,11
672*3a608692SPiotr Kubaj	rotlwi	28,28,16
673*3a608692SPiotr Kubaj	rotlwi	29,29,16
674*3a608692SPiotr Kubaj	rotlwi	30,30,16
675*3a608692SPiotr Kubaj	vxor	1,1,2
676*3a608692SPiotr Kubaj	vxor	5,5,6
677*3a608692SPiotr Kubaj	vxor	9,9,10
678*3a608692SPiotr Kubaj	add	26,26,31
679*3a608692SPiotr Kubaj	add	27,27,28
680*3a608692SPiotr Kubaj	add	24,24,29
681*3a608692SPiotr Kubaj	vrlw	1,1,27
682*3a608692SPiotr Kubaj	vrlw	5,5,27
683*3a608692SPiotr Kubaj	vrlw	9,9,27
684*3a608692SPiotr Kubaj	add	25,25,30
685*3a608692SPiotr Kubaj	xor	21,21,26
686*3a608692SPiotr Kubaj	xor	22,22,27
687*3a608692SPiotr Kubaj	vadduwm	0,0,1
688*3a608692SPiotr Kubaj	vadduwm	4,4,5
689*3a608692SPiotr Kubaj	vadduwm	8,8,9
690*3a608692SPiotr Kubaj	xor	23,23,24
691*3a608692SPiotr Kubaj	xor	20,20,25
692*3a608692SPiotr Kubaj	rotlwi	21,21,12
693*3a608692SPiotr Kubaj	vxor	3,3,0
694*3a608692SPiotr Kubaj	vxor	7,7,4
695*3a608692SPiotr Kubaj	vxor	11,11,8
696*3a608692SPiotr Kubaj	rotlwi	22,22,12
697*3a608692SPiotr Kubaj	rotlwi	23,23,12
698*3a608692SPiotr Kubaj	rotlwi	20,20,12
699*3a608692SPiotr Kubaj	vperm	3,3,3,23
700*3a608692SPiotr Kubaj	vperm	7,7,7,23
701*3a608692SPiotr Kubaj	vperm	11,11,11,23
702*3a608692SPiotr Kubaj	add	16,16,21
703*3a608692SPiotr Kubaj	add	17,17,22
704*3a608692SPiotr Kubaj	add	18,18,23
705*3a608692SPiotr Kubaj	vadduwm	2,2,3
706*3a608692SPiotr Kubaj	vadduwm	6,6,7
707*3a608692SPiotr Kubaj	vadduwm	10,10,11
708*3a608692SPiotr Kubaj	add	19,19,20
709*3a608692SPiotr Kubaj	xor	31,31,16
710*3a608692SPiotr Kubaj	xor	28,28,17
711*3a608692SPiotr Kubaj	vxor	1,1,2
712*3a608692SPiotr Kubaj	vxor	5,5,6
713*3a608692SPiotr Kubaj	vxor	9,9,10
714*3a608692SPiotr Kubaj	xor	29,29,18
715*3a608692SPiotr Kubaj	xor	30,30,19
716*3a608692SPiotr Kubaj	rotlwi	31,31,8
717*3a608692SPiotr Kubaj	vrlw	1,1,28
718*3a608692SPiotr Kubaj	vrlw	5,5,28
719*3a608692SPiotr Kubaj	vrlw	9,9,28
720*3a608692SPiotr Kubaj	rotlwi	28,28,8
721*3a608692SPiotr Kubaj	rotlwi	29,29,8
722*3a608692SPiotr Kubaj	rotlwi	30,30,8
723*3a608692SPiotr Kubaj	vsldoi	2,2,2, 16-8
724*3a608692SPiotr Kubaj	vsldoi	6,6,6, 16-8
725*3a608692SPiotr Kubaj	vsldoi	10,10,10, 16-8
726*3a608692SPiotr Kubaj	add	26,26,31
727*3a608692SPiotr Kubaj	add	27,27,28
728*3a608692SPiotr Kubaj	add	24,24,29
729*3a608692SPiotr Kubaj	vsldoi	1,1,1, 16-4
730*3a608692SPiotr Kubaj	vsldoi	5,5,5, 16-4
731*3a608692SPiotr Kubaj	vsldoi	9,9,9, 16-4
732*3a608692SPiotr Kubaj	add	25,25,30
733*3a608692SPiotr Kubaj	xor	21,21,26
734*3a608692SPiotr Kubaj	xor	22,22,27
735*3a608692SPiotr Kubaj	vsldoi	3,3,3, 16-12
736*3a608692SPiotr Kubaj	vsldoi	7,7,7, 16-12
737*3a608692SPiotr Kubaj	vsldoi	11,11,11, 16-12
738*3a608692SPiotr Kubaj	xor	23,23,24
739*3a608692SPiotr Kubaj	xor	20,20,25
740*3a608692SPiotr Kubaj	rotlwi	21,21,7
741*3a608692SPiotr Kubaj	rotlwi	22,22,7
742*3a608692SPiotr Kubaj	rotlwi	23,23,7
743*3a608692SPiotr Kubaj	rotlwi	20,20,7
744*3a608692SPiotr Kubaj	bdnz	.Loop_vmx
745*3a608692SPiotr Kubaj
746*3a608692SPiotr Kubaj	subi	5,5,256
747*3a608692SPiotr Kubaj	addi	16,16,0x7865
748*3a608692SPiotr Kubaj	addi	17,17,0x646e
749*3a608692SPiotr Kubaj	addi	18,18,0x2d32
750*3a608692SPiotr Kubaj	addi	19,19,0x6574
751*3a608692SPiotr Kubaj	addis	16,16,0x6170
752*3a608692SPiotr Kubaj	addis	17,17,0x3320
753*3a608692SPiotr Kubaj	addis	18,18,0x7962
754*3a608692SPiotr Kubaj	addis	19,19,0x6b20
755*3a608692SPiotr Kubaj	add	20,20,7
756*3a608692SPiotr Kubaj	lwz	7,16(6)
757*3a608692SPiotr Kubaj	add	21,21,8
758*3a608692SPiotr Kubaj	lwz	8,20(6)
759*3a608692SPiotr Kubaj	add	22,22,9
760*3a608692SPiotr Kubaj	lwz	9,24(6)
761*3a608692SPiotr Kubaj	add	23,23,10
762*3a608692SPiotr Kubaj	lwz	10,28(6)
763*3a608692SPiotr Kubaj	add	24,24,7
764*3a608692SPiotr Kubaj	add	25,25,8
765*3a608692SPiotr Kubaj	add	26,26,9
766*3a608692SPiotr Kubaj	add	27,27,10
767*3a608692SPiotr Kubaj	add	28,28,11
768*3a608692SPiotr Kubaj	add	29,29,12
769*3a608692SPiotr Kubaj	add	30,30,14
770*3a608692SPiotr Kubaj	add	31,31,15
771*3a608692SPiotr Kubaj
772*3a608692SPiotr Kubaj	vadduwm	0,0,12
773*3a608692SPiotr Kubaj	vadduwm	4,4,12
774*3a608692SPiotr Kubaj	vadduwm	8,8,12
775*3a608692SPiotr Kubaj	vadduwm	1,1,13
776*3a608692SPiotr Kubaj	vadduwm	5,5,13
777*3a608692SPiotr Kubaj	vadduwm	9,9,13
778*3a608692SPiotr Kubaj	vadduwm	2,2,14
779*3a608692SPiotr Kubaj	vadduwm	6,6,14
780*3a608692SPiotr Kubaj	vadduwm	10,10,14
781*3a608692SPiotr Kubaj	vadduwm	3,3,15
782*3a608692SPiotr Kubaj	vadduwm	7,7,16
783*3a608692SPiotr Kubaj	vadduwm	11,11,17
784*3a608692SPiotr Kubaj
785*3a608692SPiotr Kubaj	addi	11,11,4
786*3a608692SPiotr Kubaj	vadduwm	15,15,18
787*3a608692SPiotr Kubaj	vadduwm	16,16,18
788*3a608692SPiotr Kubaj	vadduwm	17,17,18
789*3a608692SPiotr Kubaj
790*3a608692SPiotr Kubaj	mr	7,16
791*3a608692SPiotr Kubaj	rotlwi	16,16,8
792*3a608692SPiotr Kubaj	rlwimi	16,7,24,0,7
793*3a608692SPiotr Kubaj	rlwimi	16,7,24,16,23
794*3a608692SPiotr Kubaj	mr	8,17
795*3a608692SPiotr Kubaj	rotlwi	17,17,8
796*3a608692SPiotr Kubaj	rlwimi	17,8,24,0,7
797*3a608692SPiotr Kubaj	rlwimi	17,8,24,16,23
798*3a608692SPiotr Kubaj	mr	9,18
799*3a608692SPiotr Kubaj	rotlwi	18,18,8
800*3a608692SPiotr Kubaj	rlwimi	18,9,24,0,7
801*3a608692SPiotr Kubaj	rlwimi	18,9,24,16,23
802*3a608692SPiotr Kubaj	mr	10,19
803*3a608692SPiotr Kubaj	rotlwi	19,19,8
804*3a608692SPiotr Kubaj	rlwimi	19,10,24,0,7
805*3a608692SPiotr Kubaj	rlwimi	19,10,24,16,23
806*3a608692SPiotr Kubaj	mr	7,20
807*3a608692SPiotr Kubaj	rotlwi	20,20,8
808*3a608692SPiotr Kubaj	rlwimi	20,7,24,0,7
809*3a608692SPiotr Kubaj	rlwimi	20,7,24,16,23
810*3a608692SPiotr Kubaj	mr	8,21
811*3a608692SPiotr Kubaj	rotlwi	21,21,8
812*3a608692SPiotr Kubaj	rlwimi	21,8,24,0,7
813*3a608692SPiotr Kubaj	rlwimi	21,8,24,16,23
814*3a608692SPiotr Kubaj	mr	9,22
815*3a608692SPiotr Kubaj	rotlwi	22,22,8
816*3a608692SPiotr Kubaj	rlwimi	22,9,24,0,7
817*3a608692SPiotr Kubaj	rlwimi	22,9,24,16,23
818*3a608692SPiotr Kubaj	mr	10,23
819*3a608692SPiotr Kubaj	rotlwi	23,23,8
820*3a608692SPiotr Kubaj	rlwimi	23,10,24,0,7
821*3a608692SPiotr Kubaj	rlwimi	23,10,24,16,23
822*3a608692SPiotr Kubaj	mr	7,24
823*3a608692SPiotr Kubaj	rotlwi	24,24,8
824*3a608692SPiotr Kubaj	rlwimi	24,7,24,0,7
825*3a608692SPiotr Kubaj	rlwimi	24,7,24,16,23
826*3a608692SPiotr Kubaj	mr	8,25
827*3a608692SPiotr Kubaj	rotlwi	25,25,8
828*3a608692SPiotr Kubaj	rlwimi	25,8,24,0,7
829*3a608692SPiotr Kubaj	rlwimi	25,8,24,16,23
830*3a608692SPiotr Kubaj	mr	9,26
831*3a608692SPiotr Kubaj	rotlwi	26,26,8
832*3a608692SPiotr Kubaj	rlwimi	26,9,24,0,7
833*3a608692SPiotr Kubaj	rlwimi	26,9,24,16,23
834*3a608692SPiotr Kubaj	mr	10,27
835*3a608692SPiotr Kubaj	rotlwi	27,27,8
836*3a608692SPiotr Kubaj	rlwimi	27,10,24,0,7
837*3a608692SPiotr Kubaj	rlwimi	27,10,24,16,23
838*3a608692SPiotr Kubaj	mr	7,28
839*3a608692SPiotr Kubaj	rotlwi	28,28,8
840*3a608692SPiotr Kubaj	rlwimi	28,7,24,0,7
841*3a608692SPiotr Kubaj	rlwimi	28,7,24,16,23
842*3a608692SPiotr Kubaj	mr	8,29
843*3a608692SPiotr Kubaj	rotlwi	29,29,8
844*3a608692SPiotr Kubaj	rlwimi	29,8,24,0,7
845*3a608692SPiotr Kubaj	rlwimi	29,8,24,16,23
846*3a608692SPiotr Kubaj	mr	9,30
847*3a608692SPiotr Kubaj	rotlwi	30,30,8
848*3a608692SPiotr Kubaj	rlwimi	30,9,24,0,7
849*3a608692SPiotr Kubaj	rlwimi	30,9,24,16,23
850*3a608692SPiotr Kubaj	mr	10,31
851*3a608692SPiotr Kubaj	rotlwi	31,31,8
852*3a608692SPiotr Kubaj	rlwimi	31,10,24,0,7
853*3a608692SPiotr Kubaj	rlwimi	31,10,24,16,23
854*3a608692SPiotr Kubaj	lwz	7,0(4)
855*3a608692SPiotr Kubaj	lwz	8,4(4)
856*3a608692SPiotr Kubaj	lwz	9,8(4)
857*3a608692SPiotr Kubaj	lwz	10,12(4)
858*3a608692SPiotr Kubaj	xor	16,16,7
859*3a608692SPiotr Kubaj	lwz	7,16(4)
860*3a608692SPiotr Kubaj	xor	17,17,8
861*3a608692SPiotr Kubaj	lwz	8,20(4)
862*3a608692SPiotr Kubaj	xor	18,18,9
863*3a608692SPiotr Kubaj	lwz	9,24(4)
864*3a608692SPiotr Kubaj	xor	19,19,10
865*3a608692SPiotr Kubaj	lwz	10,28(4)
866*3a608692SPiotr Kubaj	xor	20,20,7
867*3a608692SPiotr Kubaj	lwz	7,32(4)
868*3a608692SPiotr Kubaj	xor	21,21,8
869*3a608692SPiotr Kubaj	lwz	8,36(4)
870*3a608692SPiotr Kubaj	xor	22,22,9
871*3a608692SPiotr Kubaj	lwz	9,40(4)
872*3a608692SPiotr Kubaj	xor	23,23,10
873*3a608692SPiotr Kubaj	lwz	10,44(4)
874*3a608692SPiotr Kubaj	xor	24,24,7
875*3a608692SPiotr Kubaj	lwz	7,48(4)
876*3a608692SPiotr Kubaj	xor	25,25,8
877*3a608692SPiotr Kubaj	lwz	8,52(4)
878*3a608692SPiotr Kubaj	xor	26,26,9
879*3a608692SPiotr Kubaj	lwz	9,56(4)
880*3a608692SPiotr Kubaj	xor	27,27,10
881*3a608692SPiotr Kubaj	lwz	10,60(4)
882*3a608692SPiotr Kubaj	xor	28,28,7
883*3a608692SPiotr Kubaj	stw	16,0(3)
884*3a608692SPiotr Kubaj	xor	29,29,8
885*3a608692SPiotr Kubaj	stw	17,4(3)
886*3a608692SPiotr Kubaj	xor	30,30,9
887*3a608692SPiotr Kubaj	stw	18,8(3)
888*3a608692SPiotr Kubaj	xor	31,31,10
889*3a608692SPiotr Kubaj	stw	19,12(3)
890*3a608692SPiotr Kubaj	addi	4,4,64
891*3a608692SPiotr Kubaj	stw	20,16(3)
892*3a608692SPiotr Kubaj	li	7,16
893*3a608692SPiotr Kubaj	stw	21,20(3)
894*3a608692SPiotr Kubaj	li	8,32
895*3a608692SPiotr Kubaj	stw	22,24(3)
896*3a608692SPiotr Kubaj	li	9,48
897*3a608692SPiotr Kubaj	stw	23,28(3)
898*3a608692SPiotr Kubaj	li	10,64
899*3a608692SPiotr Kubaj	stw	24,32(3)
900*3a608692SPiotr Kubaj	stw	25,36(3)
901*3a608692SPiotr Kubaj	stw	26,40(3)
902*3a608692SPiotr Kubaj	stw	27,44(3)
903*3a608692SPiotr Kubaj	stw	28,48(3)
904*3a608692SPiotr Kubaj	stw	29,52(3)
905*3a608692SPiotr Kubaj	stw	30,56(3)
906*3a608692SPiotr Kubaj	stw	31,60(3)
907*3a608692SPiotr Kubaj	addi	3,3,64
908*3a608692SPiotr Kubaj
909*3a608692SPiotr Kubaj	lvx	27,0,4
910*3a608692SPiotr Kubaj	lvx	28,7,4
911*3a608692SPiotr Kubaj	lvx	29,8,4
912*3a608692SPiotr Kubaj	lvx	30,9,4
913*3a608692SPiotr Kubaj	lvx	31,10,4
914*3a608692SPiotr Kubaj	addi	4,4,64
915*3a608692SPiotr Kubaj
916*3a608692SPiotr Kubaj	vperm	27,27,28,24
917*3a608692SPiotr Kubaj	vperm	28,28,29,24
918*3a608692SPiotr Kubaj	vperm	29,29,30,24
919*3a608692SPiotr Kubaj	vperm	30,30,31,24
920*3a608692SPiotr Kubaj	vxor	0,0,27
921*3a608692SPiotr Kubaj	vxor	1,1,28
922*3a608692SPiotr Kubaj	lvx	28,7,4
923*3a608692SPiotr Kubaj	vxor	2,2,29
924*3a608692SPiotr Kubaj	lvx	29,8,4
925*3a608692SPiotr Kubaj	vxor	3,3,30
926*3a608692SPiotr Kubaj	lvx	30,9,4
927*3a608692SPiotr Kubaj	lvx	27,10,4
928*3a608692SPiotr Kubaj	addi	4,4,64
929*3a608692SPiotr Kubaj	li	10,63
930*3a608692SPiotr Kubaj	vperm	0,0,0,25
931*3a608692SPiotr Kubaj	vperm	1,1,1,25
932*3a608692SPiotr Kubaj	vperm	2,2,2,25
933*3a608692SPiotr Kubaj	vperm	3,3,3,25
934*3a608692SPiotr Kubaj
935*3a608692SPiotr Kubaj	vperm	31,31,28,24
936*3a608692SPiotr Kubaj	vperm	28,28,29,24
937*3a608692SPiotr Kubaj	vperm	29,29,30,24
938*3a608692SPiotr Kubaj	vperm	30,30,27,24
939*3a608692SPiotr Kubaj	vxor	4,4,31
940*3a608692SPiotr Kubaj	vxor	5,5,28
941*3a608692SPiotr Kubaj	lvx	28,7,4
942*3a608692SPiotr Kubaj	vxor	6,6,29
943*3a608692SPiotr Kubaj	lvx	29,8,4
944*3a608692SPiotr Kubaj	vxor	7,7,30
945*3a608692SPiotr Kubaj	lvx	30,9,4
946*3a608692SPiotr Kubaj	lvx	31,10,4
947*3a608692SPiotr Kubaj	addi	4,4,64
948*3a608692SPiotr Kubaj	vperm	4,4,4,25
949*3a608692SPiotr Kubaj	vperm	5,5,5,25
950*3a608692SPiotr Kubaj	vperm	6,6,6,25
951*3a608692SPiotr Kubaj	vperm	7,7,7,25
952*3a608692SPiotr Kubaj
953*3a608692SPiotr Kubaj	vperm	27,27,28,24
954*3a608692SPiotr Kubaj	vperm	28,28,29,24
955*3a608692SPiotr Kubaj	vperm	29,29,30,24
956*3a608692SPiotr Kubaj	vperm	30,30,31,24
957*3a608692SPiotr Kubaj	vxor	8,8,27
958*3a608692SPiotr Kubaj	vxor	9,9,28
959*3a608692SPiotr Kubaj	vxor	10,10,29
960*3a608692SPiotr Kubaj	vxor	11,11,30
961*3a608692SPiotr Kubaj	vperm	8,8,8,25
962*3a608692SPiotr Kubaj	vperm	9,9,9,25
963*3a608692SPiotr Kubaj	vperm	10,10,10,25
964*3a608692SPiotr Kubaj	vperm	11,11,11,25
965*3a608692SPiotr Kubaj
966*3a608692SPiotr Kubaj	andi.	17,3,15
967*3a608692SPiotr Kubaj	mr	16,3
968*3a608692SPiotr Kubaj
969*3a608692SPiotr Kubaj	vsel	27,0,1,26
970*3a608692SPiotr Kubaj	vsel	28,1,2,26
971*3a608692SPiotr Kubaj	vsel	29,2,3,26
972*3a608692SPiotr Kubaj	vsel	30,3,4,26
973*3a608692SPiotr Kubaj	vsel	1,4,5,26
974*3a608692SPiotr Kubaj	vsel	2,5,6,26
975*3a608692SPiotr Kubaj	vsel	3,6,7,26
976*3a608692SPiotr Kubaj	vsel	4,7,8,26
977*3a608692SPiotr Kubaj	vsel	5,8,9,26
978*3a608692SPiotr Kubaj	vsel	6,9,10,26
979*3a608692SPiotr Kubaj	vsel	7,10,11,26
980*3a608692SPiotr Kubaj
981*3a608692SPiotr Kubaj
982*3a608692SPiotr Kubaj	stvx	27,7,3
983*3a608692SPiotr Kubaj	stvx	28,8,3
984*3a608692SPiotr Kubaj	stvx	29,9,3
985*3a608692SPiotr Kubaj	addi	3,3,64
986*3a608692SPiotr Kubaj	stvx	30,0,3
987*3a608692SPiotr Kubaj	stvx	1,7,3
988*3a608692SPiotr Kubaj	stvx	2,8,3
989*3a608692SPiotr Kubaj	stvx	3,9,3
990*3a608692SPiotr Kubaj	addi	3,3,64
991*3a608692SPiotr Kubaj	stvx	4,0,3
992*3a608692SPiotr Kubaj	stvx	5,7,3
993*3a608692SPiotr Kubaj	stvx	6,8,3
994*3a608692SPiotr Kubaj	stvx	7,9,3
995*3a608692SPiotr Kubaj	addi	3,3,64
996*3a608692SPiotr Kubaj
997*3a608692SPiotr Kubaj	beq	.Laligned_vmx
998*3a608692SPiotr Kubaj
999*3a608692SPiotr Kubaj	sub	18,3,17
1000*3a608692SPiotr Kubaj	li	19,0
1001*3a608692SPiotr Kubaj.Lunaligned_tail_vmx:
1002*3a608692SPiotr Kubaj	stvebx	11,19,18
1003*3a608692SPiotr Kubaj	addi	19,19,1
1004*3a608692SPiotr Kubaj	cmpw	19,17
1005*3a608692SPiotr Kubaj	bne	.Lunaligned_tail_vmx
1006*3a608692SPiotr Kubaj
1007*3a608692SPiotr Kubaj	sub	18,16,17
1008*3a608692SPiotr Kubaj.Lunaligned_head_vmx:
1009*3a608692SPiotr Kubaj	stvebx	0,17,18
1010*3a608692SPiotr Kubaj	cmpwi	17,15
1011*3a608692SPiotr Kubaj	addi	17,17,1
1012*3a608692SPiotr Kubaj	bne	.Lunaligned_head_vmx
1013*3a608692SPiotr Kubaj
1014*3a608692SPiotr Kubaj	cmpldi	5,255
1015*3a608692SPiotr Kubaj	bgt	.Loop_outer_vmx
1016*3a608692SPiotr Kubaj
1017*3a608692SPiotr Kubaj	b	.Ldone_vmx
1018*3a608692SPiotr Kubaj
1019*3a608692SPiotr Kubaj.align	4
1020*3a608692SPiotr Kubaj.Laligned_vmx:
1021*3a608692SPiotr Kubaj	stvx	0,0,16
1022*3a608692SPiotr Kubaj
1023*3a608692SPiotr Kubaj	cmpldi	5,255
1024*3a608692SPiotr Kubaj	bgt	.Loop_outer_vmx
1025*3a608692SPiotr Kubaj	nop
1026*3a608692SPiotr Kubaj
1027*3a608692SPiotr Kubaj.Ldone_vmx:
1028*3a608692SPiotr Kubaj	cmpldi	5,0
1029*3a608692SPiotr Kubaj	bnel	__ChaCha20_1x
1030*3a608692SPiotr Kubaj
1031*3a608692SPiotr Kubaj	lwz	12,268(1)
1032*3a608692SPiotr Kubaj	li	10,127
1033*3a608692SPiotr Kubaj	li	11,143
1034*3a608692SPiotr Kubaj	or	12,12,12
1035*3a608692SPiotr Kubaj	lvx	23,10,1
1036*3a608692SPiotr Kubaj	addi	10,10,32
1037*3a608692SPiotr Kubaj	lvx	24,11,1
1038*3a608692SPiotr Kubaj	addi	11,11,32
1039*3a608692SPiotr Kubaj	lvx	25,10,1
1040*3a608692SPiotr Kubaj	addi	10,10,32
1041*3a608692SPiotr Kubaj	lvx	26,11,1
1042*3a608692SPiotr Kubaj	addi	11,11,32
1043*3a608692SPiotr Kubaj	lvx	27,10,1
1044*3a608692SPiotr Kubaj	addi	10,10,32
1045*3a608692SPiotr Kubaj	lvx	28,11,1
1046*3a608692SPiotr Kubaj	addi	11,11,32
1047*3a608692SPiotr Kubaj	lvx	29,10,1
1048*3a608692SPiotr Kubaj	addi	10,10,32
1049*3a608692SPiotr Kubaj	lvx	30,11,1
1050*3a608692SPiotr Kubaj	lvx	31,10,1
1051*3a608692SPiotr Kubaj	ld	0, 432(1)
1052*3a608692SPiotr Kubaj	ld	14,272(1)
1053*3a608692SPiotr Kubaj	ld	15,280(1)
1054*3a608692SPiotr Kubaj	ld	16,288(1)
1055*3a608692SPiotr Kubaj	ld	17,296(1)
1056*3a608692SPiotr Kubaj	ld	18,304(1)
1057*3a608692SPiotr Kubaj	ld	19,312(1)
1058*3a608692SPiotr Kubaj	ld	20,320(1)
1059*3a608692SPiotr Kubaj	ld	21,328(1)
1060*3a608692SPiotr Kubaj	ld	22,336(1)
1061*3a608692SPiotr Kubaj	ld	23,344(1)
1062*3a608692SPiotr Kubaj	ld	24,352(1)
1063*3a608692SPiotr Kubaj	ld	25,360(1)
1064*3a608692SPiotr Kubaj	ld	26,368(1)
1065*3a608692SPiotr Kubaj	ld	27,376(1)
1066*3a608692SPiotr Kubaj	ld	28,384(1)
1067*3a608692SPiotr Kubaj	ld	29,392(1)
1068*3a608692SPiotr Kubaj	ld	30,400(1)
1069*3a608692SPiotr Kubaj	ld	31,408(1)
1070*3a608692SPiotr Kubaj	mtlr	0
1071*3a608692SPiotr Kubaj	addi	1,1,416
1072*3a608692SPiotr Kubaj	blr
1073*3a608692SPiotr Kubaj.long	0
1074*3a608692SPiotr Kubaj.byte	0,12,0x04,1,0x80,18,5,0
1075*3a608692SPiotr Kubaj.long	0
1076*3a608692SPiotr Kubaj.size	ChaCha20_ctr32_vmx,.-ChaCha20_ctr32_vmx
1077*3a608692SPiotr Kubaj
1078*3a608692SPiotr Kubaj.globl	ChaCha20_ctr32_vsx
1079*3a608692SPiotr Kubaj.type	ChaCha20_ctr32_vsx,@function
1080*3a608692SPiotr Kubaj.align	5
1081*3a608692SPiotr KubajChaCha20_ctr32_vsx:
1082*3a608692SPiotr Kubaj.localentry	ChaCha20_ctr32_vsx,0
1083*3a608692SPiotr Kubaj
1084*3a608692SPiotr Kubaj	stdu	1,-224(1)
1085*3a608692SPiotr Kubaj	mflr	0
1086*3a608692SPiotr Kubaj	li	10,127
1087*3a608692SPiotr Kubaj	li	11,143
1088*3a608692SPiotr Kubaj	li	12,-1
1089*3a608692SPiotr Kubaj	stvx	26,10,1
1090*3a608692SPiotr Kubaj	addi	10,10,32
1091*3a608692SPiotr Kubaj	stvx	27,11,1
1092*3a608692SPiotr Kubaj	addi	11,11,32
1093*3a608692SPiotr Kubaj	stvx	28,10,1
1094*3a608692SPiotr Kubaj	addi	10,10,32
1095*3a608692SPiotr Kubaj	stvx	29,11,1
1096*3a608692SPiotr Kubaj	addi	11,11,32
1097*3a608692SPiotr Kubaj	stvx	30,10,1
1098*3a608692SPiotr Kubaj	stvx	31,11,1
1099*3a608692SPiotr Kubaj	stw	12,220(1)
1100*3a608692SPiotr Kubaj	li	12,-4096+63
1101*3a608692SPiotr Kubaj	std	0, 240(1)
1102*3a608692SPiotr Kubaj	or	12,12,12
1103*3a608692SPiotr Kubaj
1104*3a608692SPiotr Kubaj	bl	.Lconsts
1105*3a608692SPiotr Kubaj	.long	0x7E006619
1106*3a608692SPiotr Kubaj	addi	12,12,0x50
1107*3a608692SPiotr Kubaj	li	8,16
1108*3a608692SPiotr Kubaj	li	9,32
1109*3a608692SPiotr Kubaj	li	10,48
1110*3a608692SPiotr Kubaj	li	11,64
1111*3a608692SPiotr Kubaj
1112*3a608692SPiotr Kubaj	.long	0x7E203619
1113*3a608692SPiotr Kubaj	.long	0x7E483619
1114*3a608692SPiotr Kubaj	.long	0x7E603E19
1115*3a608692SPiotr Kubaj
1116*3a608692SPiotr Kubaj	vxor	27,27,27
1117*3a608692SPiotr Kubaj	.long	0x7F8B6619
1118*3a608692SPiotr Kubaj	vspltw	26,19,0
1119*3a608692SPiotr Kubaj	vsldoi	19,19,27,4
1120*3a608692SPiotr Kubaj	vsldoi	19,27,19,12
1121*3a608692SPiotr Kubaj	vadduwm	26,26,28
1122*3a608692SPiotr Kubaj
1123*3a608692SPiotr Kubaj	lvsl	31,0,8
1124*3a608692SPiotr Kubaj	vspltisb	27,3
1125*3a608692SPiotr Kubaj	vxor	31,31,27
1126*3a608692SPiotr Kubaj
1127*3a608692SPiotr Kubaj	li	0,10
1128*3a608692SPiotr Kubaj	mtctr	0
1129*3a608692SPiotr Kubaj	b	.Loop_outer_vsx
1130*3a608692SPiotr Kubaj
1131*3a608692SPiotr Kubaj.align	5
1132*3a608692SPiotr Kubaj.Loop_outer_vsx:
1133*3a608692SPiotr Kubaj	lvx	0,0,12
1134*3a608692SPiotr Kubaj	lvx	1,8,12
1135*3a608692SPiotr Kubaj	lvx	2,9,12
1136*3a608692SPiotr Kubaj	lvx	3,10,12
1137*3a608692SPiotr Kubaj
1138*3a608692SPiotr Kubaj	vspltw	4,17,0
1139*3a608692SPiotr Kubaj	vspltw	5,17,1
1140*3a608692SPiotr Kubaj	vspltw	6,17,2
1141*3a608692SPiotr Kubaj	vspltw	7,17,3
1142*3a608692SPiotr Kubaj
1143*3a608692SPiotr Kubaj	vspltw	8,18,0
1144*3a608692SPiotr Kubaj	vspltw	9,18,1
1145*3a608692SPiotr Kubaj	vspltw	10,18,2
1146*3a608692SPiotr Kubaj	vspltw	11,18,3
1147*3a608692SPiotr Kubaj
1148*3a608692SPiotr Kubaj	vor	12,26,26
1149*3a608692SPiotr Kubaj	vspltw	13,19,1
1150*3a608692SPiotr Kubaj	vspltw	14,19,2
1151*3a608692SPiotr Kubaj	vspltw	15,19,3
1152*3a608692SPiotr Kubaj
1153*3a608692SPiotr Kubaj	vspltisw	27,-16
1154*3a608692SPiotr Kubaj	vspltisw	28,12
1155*3a608692SPiotr Kubaj	vspltisw	29,8
1156*3a608692SPiotr Kubaj	vspltisw	30,7
1157*3a608692SPiotr Kubaj
1158*3a608692SPiotr Kubaj.Loop_vsx:
1159*3a608692SPiotr Kubaj	vadduwm	0,0,4
1160*3a608692SPiotr Kubaj	vadduwm	1,1,5
1161*3a608692SPiotr Kubaj	vadduwm	2,2,6
1162*3a608692SPiotr Kubaj	vadduwm	3,3,7
1163*3a608692SPiotr Kubaj	vxor	12,12,0
1164*3a608692SPiotr Kubaj	vxor	13,13,1
1165*3a608692SPiotr Kubaj	vxor	14,14,2
1166*3a608692SPiotr Kubaj	vxor	15,15,3
1167*3a608692SPiotr Kubaj	vrlw	12,12,27
1168*3a608692SPiotr Kubaj	vrlw	13,13,27
1169*3a608692SPiotr Kubaj	vrlw	14,14,27
1170*3a608692SPiotr Kubaj	vrlw	15,15,27
1171*3a608692SPiotr Kubaj	vadduwm	8,8,12
1172*3a608692SPiotr Kubaj	vadduwm	9,9,13
1173*3a608692SPiotr Kubaj	vadduwm	10,10,14
1174*3a608692SPiotr Kubaj	vadduwm	11,11,15
1175*3a608692SPiotr Kubaj	vxor	4,4,8
1176*3a608692SPiotr Kubaj	vxor	5,5,9
1177*3a608692SPiotr Kubaj	vxor	6,6,10
1178*3a608692SPiotr Kubaj	vxor	7,7,11
1179*3a608692SPiotr Kubaj	vrlw	4,4,28
1180*3a608692SPiotr Kubaj	vrlw	5,5,28
1181*3a608692SPiotr Kubaj	vrlw	6,6,28
1182*3a608692SPiotr Kubaj	vrlw	7,7,28
1183*3a608692SPiotr Kubaj	vadduwm	0,0,4
1184*3a608692SPiotr Kubaj	vadduwm	1,1,5
1185*3a608692SPiotr Kubaj	vadduwm	2,2,6
1186*3a608692SPiotr Kubaj	vadduwm	3,3,7
1187*3a608692SPiotr Kubaj	vxor	12,12,0
1188*3a608692SPiotr Kubaj	vxor	13,13,1
1189*3a608692SPiotr Kubaj	vxor	14,14,2
1190*3a608692SPiotr Kubaj	vxor	15,15,3
1191*3a608692SPiotr Kubaj	vrlw	12,12,29
1192*3a608692SPiotr Kubaj	vrlw	13,13,29
1193*3a608692SPiotr Kubaj	vrlw	14,14,29
1194*3a608692SPiotr Kubaj	vrlw	15,15,29
1195*3a608692SPiotr Kubaj	vadduwm	8,8,12
1196*3a608692SPiotr Kubaj	vadduwm	9,9,13
1197*3a608692SPiotr Kubaj	vadduwm	10,10,14
1198*3a608692SPiotr Kubaj	vadduwm	11,11,15
1199*3a608692SPiotr Kubaj	vxor	4,4,8
1200*3a608692SPiotr Kubaj	vxor	5,5,9
1201*3a608692SPiotr Kubaj	vxor	6,6,10
1202*3a608692SPiotr Kubaj	vxor	7,7,11
1203*3a608692SPiotr Kubaj	vrlw	4,4,30
1204*3a608692SPiotr Kubaj	vrlw	5,5,30
1205*3a608692SPiotr Kubaj	vrlw	6,6,30
1206*3a608692SPiotr Kubaj	vrlw	7,7,30
1207*3a608692SPiotr Kubaj	vadduwm	0,0,5
1208*3a608692SPiotr Kubaj	vadduwm	1,1,6
1209*3a608692SPiotr Kubaj	vadduwm	2,2,7
1210*3a608692SPiotr Kubaj	vadduwm	3,3,4
1211*3a608692SPiotr Kubaj	vxor	15,15,0
1212*3a608692SPiotr Kubaj	vxor	12,12,1
1213*3a608692SPiotr Kubaj	vxor	13,13,2
1214*3a608692SPiotr Kubaj	vxor	14,14,3
1215*3a608692SPiotr Kubaj	vrlw	15,15,27
1216*3a608692SPiotr Kubaj	vrlw	12,12,27
1217*3a608692SPiotr Kubaj	vrlw	13,13,27
1218*3a608692SPiotr Kubaj	vrlw	14,14,27
1219*3a608692SPiotr Kubaj	vadduwm	10,10,15
1220*3a608692SPiotr Kubaj	vadduwm	11,11,12
1221*3a608692SPiotr Kubaj	vadduwm	8,8,13
1222*3a608692SPiotr Kubaj	vadduwm	9,9,14
1223*3a608692SPiotr Kubaj	vxor	5,5,10
1224*3a608692SPiotr Kubaj	vxor	6,6,11
1225*3a608692SPiotr Kubaj	vxor	7,7,8
1226*3a608692SPiotr Kubaj	vxor	4,4,9
1227*3a608692SPiotr Kubaj	vrlw	5,5,28
1228*3a608692SPiotr Kubaj	vrlw	6,6,28
1229*3a608692SPiotr Kubaj	vrlw	7,7,28
1230*3a608692SPiotr Kubaj	vrlw	4,4,28
1231*3a608692SPiotr Kubaj	vadduwm	0,0,5
1232*3a608692SPiotr Kubaj	vadduwm	1,1,6
1233*3a608692SPiotr Kubaj	vadduwm	2,2,7
1234*3a608692SPiotr Kubaj	vadduwm	3,3,4
1235*3a608692SPiotr Kubaj	vxor	15,15,0
1236*3a608692SPiotr Kubaj	vxor	12,12,1
1237*3a608692SPiotr Kubaj	vxor	13,13,2
1238*3a608692SPiotr Kubaj	vxor	14,14,3
1239*3a608692SPiotr Kubaj	vrlw	15,15,29
1240*3a608692SPiotr Kubaj	vrlw	12,12,29
1241*3a608692SPiotr Kubaj	vrlw	13,13,29
1242*3a608692SPiotr Kubaj	vrlw	14,14,29
1243*3a608692SPiotr Kubaj	vadduwm	10,10,15
1244*3a608692SPiotr Kubaj	vadduwm	11,11,12
1245*3a608692SPiotr Kubaj	vadduwm	8,8,13
1246*3a608692SPiotr Kubaj	vadduwm	9,9,14
1247*3a608692SPiotr Kubaj	vxor	5,5,10
1248*3a608692SPiotr Kubaj	vxor	6,6,11
1249*3a608692SPiotr Kubaj	vxor	7,7,8
1250*3a608692SPiotr Kubaj	vxor	4,4,9
1251*3a608692SPiotr Kubaj	vrlw	5,5,30
1252*3a608692SPiotr Kubaj	vrlw	6,6,30
1253*3a608692SPiotr Kubaj	vrlw	7,7,30
1254*3a608692SPiotr Kubaj	vrlw	4,4,30
1255*3a608692SPiotr Kubaj	bdnz	.Loop_vsx
1256*3a608692SPiotr Kubaj
1257*3a608692SPiotr Kubaj	vadduwm	12,12,26
1258*3a608692SPiotr Kubaj
1259*3a608692SPiotr Kubaj	.long	0x13600F8C
1260*3a608692SPiotr Kubaj	.long	0x13821F8C
1261*3a608692SPiotr Kubaj	.long	0x10000E8C
1262*3a608692SPiotr Kubaj	.long	0x10421E8C
1263*3a608692SPiotr Kubaj	.long	0x13A42F8C
1264*3a608692SPiotr Kubaj	.long	0x13C63F8C
1265*3a608692SPiotr Kubaj	.long	0xF0201057
1266*3a608692SPiotr Kubaj	.long	0xF0601357
1267*3a608692SPiotr Kubaj	.long	0xF01BE057
1268*3a608692SPiotr Kubaj	.long	0xF05BE357
1269*3a608692SPiotr Kubaj
1270*3a608692SPiotr Kubaj	.long	0x10842E8C
1271*3a608692SPiotr Kubaj	.long	0x10C63E8C
1272*3a608692SPiotr Kubaj	.long	0x13684F8C
1273*3a608692SPiotr Kubaj	.long	0x138A5F8C
1274*3a608692SPiotr Kubaj	.long	0xF0A43057
1275*3a608692SPiotr Kubaj	.long	0xF0E43357
1276*3a608692SPiotr Kubaj	.long	0xF09DF057
1277*3a608692SPiotr Kubaj	.long	0xF0DDF357
1278*3a608692SPiotr Kubaj
1279*3a608692SPiotr Kubaj	.long	0x11084E8C
1280*3a608692SPiotr Kubaj	.long	0x114A5E8C
1281*3a608692SPiotr Kubaj	.long	0x13AC6F8C
1282*3a608692SPiotr Kubaj	.long	0x13CE7F8C
1283*3a608692SPiotr Kubaj	.long	0xF1285057
1284*3a608692SPiotr Kubaj	.long	0xF1685357
1285*3a608692SPiotr Kubaj	.long	0xF11BE057
1286*3a608692SPiotr Kubaj	.long	0xF15BE357
1287*3a608692SPiotr Kubaj
1288*3a608692SPiotr Kubaj	.long	0x118C6E8C
1289*3a608692SPiotr Kubaj	.long	0x11CE7E8C
1290*3a608692SPiotr Kubaj	vspltisw	27,4
1291*3a608692SPiotr Kubaj	vadduwm	26,26,27
1292*3a608692SPiotr Kubaj	.long	0xF1AC7057
1293*3a608692SPiotr Kubaj	.long	0xF1EC7357
1294*3a608692SPiotr Kubaj	.long	0xF19DF057
1295*3a608692SPiotr Kubaj	.long	0xF1DDF357
1296*3a608692SPiotr Kubaj
1297*3a608692SPiotr Kubaj	vadduwm	0,0,16
1298*3a608692SPiotr Kubaj	vadduwm	4,4,17
1299*3a608692SPiotr Kubaj	vadduwm	8,8,18
1300*3a608692SPiotr Kubaj	vadduwm	12,12,19
1301*3a608692SPiotr Kubaj
1302*3a608692SPiotr Kubaj	vperm	0,0,0,31
1303*3a608692SPiotr Kubaj	vperm	4,4,4,31
1304*3a608692SPiotr Kubaj	vperm	8,8,8,31
1305*3a608692SPiotr Kubaj	vperm	12,12,12,31
1306*3a608692SPiotr Kubaj
1307*3a608692SPiotr Kubaj	cmpldi	5,0x40
1308*3a608692SPiotr Kubaj	blt	.Ltail_vsx
1309*3a608692SPiotr Kubaj
1310*3a608692SPiotr Kubaj	.long	0x7F602619
1311*3a608692SPiotr Kubaj	.long	0x7F882619
1312*3a608692SPiotr Kubaj	.long	0x7FA92619
1313*3a608692SPiotr Kubaj	.long	0x7FCA2619
1314*3a608692SPiotr Kubaj
1315*3a608692SPiotr Kubaj	vxor	27,27,0
1316*3a608692SPiotr Kubaj	vxor	28,28,4
1317*3a608692SPiotr Kubaj	vxor	29,29,8
1318*3a608692SPiotr Kubaj	vxor	30,30,12
1319*3a608692SPiotr Kubaj
1320*3a608692SPiotr Kubaj	.long	0x7F601F19
1321*3a608692SPiotr Kubaj	.long	0x7F881F19
1322*3a608692SPiotr Kubaj	addi	4,4,0x40
1323*3a608692SPiotr Kubaj	.long	0x7FA91F19
1324*3a608692SPiotr Kubaj	subi	5,5,0x40
1325*3a608692SPiotr Kubaj	.long	0x7FCA1F19
1326*3a608692SPiotr Kubaj	addi	3,3,0x40
1327*3a608692SPiotr Kubaj	beq	.Ldone_vsx
1328*3a608692SPiotr Kubaj
1329*3a608692SPiotr Kubaj	vadduwm	0,1,16
1330*3a608692SPiotr Kubaj	vadduwm	4,5,17
1331*3a608692SPiotr Kubaj	vadduwm	8,9,18
1332*3a608692SPiotr Kubaj	vadduwm	12,13,19
1333*3a608692SPiotr Kubaj
1334*3a608692SPiotr Kubaj	vperm	0,0,0,31
1335*3a608692SPiotr Kubaj	vperm	4,4,4,31
1336*3a608692SPiotr Kubaj	vperm	8,8,8,31
1337*3a608692SPiotr Kubaj	vperm	12,12,12,31
1338*3a608692SPiotr Kubaj
1339*3a608692SPiotr Kubaj	cmpldi	5,0x40
1340*3a608692SPiotr Kubaj	blt	.Ltail_vsx
1341*3a608692SPiotr Kubaj
1342*3a608692SPiotr Kubaj	.long	0x7F602619
1343*3a608692SPiotr Kubaj	.long	0x7F882619
1344*3a608692SPiotr Kubaj	.long	0x7FA92619
1345*3a608692SPiotr Kubaj	.long	0x7FCA2619
1346*3a608692SPiotr Kubaj
1347*3a608692SPiotr Kubaj	vxor	27,27,0
1348*3a608692SPiotr Kubaj	vxor	28,28,4
1349*3a608692SPiotr Kubaj	vxor	29,29,8
1350*3a608692SPiotr Kubaj	vxor	30,30,12
1351*3a608692SPiotr Kubaj
1352*3a608692SPiotr Kubaj	.long	0x7F601F19
1353*3a608692SPiotr Kubaj	.long	0x7F881F19
1354*3a608692SPiotr Kubaj	addi	4,4,0x40
1355*3a608692SPiotr Kubaj	.long	0x7FA91F19
1356*3a608692SPiotr Kubaj	subi	5,5,0x40
1357*3a608692SPiotr Kubaj	.long	0x7FCA1F19
1358*3a608692SPiotr Kubaj	addi	3,3,0x40
1359*3a608692SPiotr Kubaj	beq	.Ldone_vsx
1360*3a608692SPiotr Kubaj
1361*3a608692SPiotr Kubaj	vadduwm	0,2,16
1362*3a608692SPiotr Kubaj	vadduwm	4,6,17
1363*3a608692SPiotr Kubaj	vadduwm	8,10,18
1364*3a608692SPiotr Kubaj	vadduwm	12,14,19
1365*3a608692SPiotr Kubaj
1366*3a608692SPiotr Kubaj	vperm	0,0,0,31
1367*3a608692SPiotr Kubaj	vperm	4,4,4,31
1368*3a608692SPiotr Kubaj	vperm	8,8,8,31
1369*3a608692SPiotr Kubaj	vperm	12,12,12,31
1370*3a608692SPiotr Kubaj
1371*3a608692SPiotr Kubaj	cmpldi	5,0x40
1372*3a608692SPiotr Kubaj	blt	.Ltail_vsx
1373*3a608692SPiotr Kubaj
1374*3a608692SPiotr Kubaj	.long	0x7F602619
1375*3a608692SPiotr Kubaj	.long	0x7F882619
1376*3a608692SPiotr Kubaj	.long	0x7FA92619
1377*3a608692SPiotr Kubaj	.long	0x7FCA2619
1378*3a608692SPiotr Kubaj
1379*3a608692SPiotr Kubaj	vxor	27,27,0
1380*3a608692SPiotr Kubaj	vxor	28,28,4
1381*3a608692SPiotr Kubaj	vxor	29,29,8
1382*3a608692SPiotr Kubaj	vxor	30,30,12
1383*3a608692SPiotr Kubaj
1384*3a608692SPiotr Kubaj	.long	0x7F601F19
1385*3a608692SPiotr Kubaj	.long	0x7F881F19
1386*3a608692SPiotr Kubaj	addi	4,4,0x40
1387*3a608692SPiotr Kubaj	.long	0x7FA91F19
1388*3a608692SPiotr Kubaj	subi	5,5,0x40
1389*3a608692SPiotr Kubaj	.long	0x7FCA1F19
1390*3a608692SPiotr Kubaj	addi	3,3,0x40
1391*3a608692SPiotr Kubaj	beq	.Ldone_vsx
1392*3a608692SPiotr Kubaj
1393*3a608692SPiotr Kubaj	vadduwm	0,3,16
1394*3a608692SPiotr Kubaj	vadduwm	4,7,17
1395*3a608692SPiotr Kubaj	vadduwm	8,11,18
1396*3a608692SPiotr Kubaj	vadduwm	12,15,19
1397*3a608692SPiotr Kubaj
1398*3a608692SPiotr Kubaj	vperm	0,0,0,31
1399*3a608692SPiotr Kubaj	vperm	4,4,4,31
1400*3a608692SPiotr Kubaj	vperm	8,8,8,31
1401*3a608692SPiotr Kubaj	vperm	12,12,12,31
1402*3a608692SPiotr Kubaj
1403*3a608692SPiotr Kubaj	cmpldi	5,0x40
1404*3a608692SPiotr Kubaj	blt	.Ltail_vsx
1405*3a608692SPiotr Kubaj
1406*3a608692SPiotr Kubaj	.long	0x7F602619
1407*3a608692SPiotr Kubaj	.long	0x7F882619
1408*3a608692SPiotr Kubaj	.long	0x7FA92619
1409*3a608692SPiotr Kubaj	.long	0x7FCA2619
1410*3a608692SPiotr Kubaj
1411*3a608692SPiotr Kubaj	vxor	27,27,0
1412*3a608692SPiotr Kubaj	vxor	28,28,4
1413*3a608692SPiotr Kubaj	vxor	29,29,8
1414*3a608692SPiotr Kubaj	vxor	30,30,12
1415*3a608692SPiotr Kubaj
1416*3a608692SPiotr Kubaj	.long	0x7F601F19
1417*3a608692SPiotr Kubaj	.long	0x7F881F19
1418*3a608692SPiotr Kubaj	addi	4,4,0x40
1419*3a608692SPiotr Kubaj	.long	0x7FA91F19
1420*3a608692SPiotr Kubaj	subi	5,5,0x40
1421*3a608692SPiotr Kubaj	.long	0x7FCA1F19
1422*3a608692SPiotr Kubaj	addi	3,3,0x40
1423*3a608692SPiotr Kubaj	mtctr	0
1424*3a608692SPiotr Kubaj	bne	.Loop_outer_vsx
1425*3a608692SPiotr Kubaj
1426*3a608692SPiotr Kubaj.Ldone_vsx:
1427*3a608692SPiotr Kubaj	lwz	12,220(1)
1428*3a608692SPiotr Kubaj	li	10,127
1429*3a608692SPiotr Kubaj	li	11,143
1430*3a608692SPiotr Kubaj	ld	0, 240(1)
1431*3a608692SPiotr Kubaj	or	12,12,12
1432*3a608692SPiotr Kubaj	lvx	26,10,1
1433*3a608692SPiotr Kubaj	addi	10,10,32
1434*3a608692SPiotr Kubaj	lvx	27,11,1
1435*3a608692SPiotr Kubaj	addi	11,11,32
1436*3a608692SPiotr Kubaj	lvx	28,10,1
1437*3a608692SPiotr Kubaj	addi	10,10,32
1438*3a608692SPiotr Kubaj	lvx	29,11,1
1439*3a608692SPiotr Kubaj	addi	11,11,32
1440*3a608692SPiotr Kubaj	lvx	30,10,1
1441*3a608692SPiotr Kubaj	lvx	31,11,1
1442*3a608692SPiotr Kubaj	mtlr	0
1443*3a608692SPiotr Kubaj	addi	1,1,224
1444*3a608692SPiotr Kubaj	blr
1445*3a608692SPiotr Kubaj
1446*3a608692SPiotr Kubaj.align	4
1447*3a608692SPiotr Kubaj.Ltail_vsx:
1448*3a608692SPiotr Kubaj	addi	11,1,48
1449*3a608692SPiotr Kubaj	mtctr	5
1450*3a608692SPiotr Kubaj	.long	0x7C005F19
1451*3a608692SPiotr Kubaj	.long	0x7C885F19
1452*3a608692SPiotr Kubaj	.long	0x7D095F19
1453*3a608692SPiotr Kubaj	.long	0x7D8A5F19
1454*3a608692SPiotr Kubaj	subi	12,11,1
1455*3a608692SPiotr Kubaj	subi	4,4,1
1456*3a608692SPiotr Kubaj	subi	3,3,1
1457*3a608692SPiotr Kubaj
1458*3a608692SPiotr Kubaj.Loop_tail_vsx:
1459*3a608692SPiotr Kubaj	lbzu	6,1(12)
1460*3a608692SPiotr Kubaj	lbzu	7,1(4)
1461*3a608692SPiotr Kubaj	xor	6,6,7
1462*3a608692SPiotr Kubaj	stbu	6,1(3)
1463*3a608692SPiotr Kubaj	bdnz	.Loop_tail_vsx
1464*3a608692SPiotr Kubaj
1465*3a608692SPiotr Kubaj	.long	0x7E005F19
1466*3a608692SPiotr Kubaj	.long	0x7E085F19
1467*3a608692SPiotr Kubaj	.long	0x7E095F19
1468*3a608692SPiotr Kubaj	.long	0x7E0A5F19
1469*3a608692SPiotr Kubaj
1470*3a608692SPiotr Kubaj	b	.Ldone_vsx
1471*3a608692SPiotr Kubaj.long	0
1472*3a608692SPiotr Kubaj.byte	0,12,0x04,1,0x80,0,5,0
1473*3a608692SPiotr Kubaj.long	0
1474*3a608692SPiotr Kubaj.size	ChaCha20_ctr32_vsx,.-ChaCha20_ctr32_vsx
1475*3a608692SPiotr Kubaj.align	5
1476*3a608692SPiotr Kubaj.Lconsts:
1477*3a608692SPiotr Kubaj	mflr	0
1478*3a608692SPiotr Kubaj	bcl	20,31,$+4
1479*3a608692SPiotr Kubaj	mflr	12
1480*3a608692SPiotr Kubaj	addi	12,12,56
1481*3a608692SPiotr Kubaj	mtlr	0
1482*3a608692SPiotr Kubaj	blr
1483*3a608692SPiotr Kubaj.long	0
1484*3a608692SPiotr Kubaj.byte	0,12,0x14,0,0,0,0,0
1485*3a608692SPiotr Kubaj.space	28
1486*3a608692SPiotr Kubaj.Lsigma:
1487*3a608692SPiotr Kubaj.long	0x61707865,0x3320646e,0x79622d32,0x6b206574
1488*3a608692SPiotr Kubaj.long	1,0,0,0
1489*3a608692SPiotr Kubaj.long	4,0,0,0
1490*3a608692SPiotr Kubaj.long	0x02030001,0x06070405,0x0a0b0809,0x0e0f0c0d
1491*3a608692SPiotr Kubaj.long	0x01020300,0x05060704,0x090a0b08,0x0d0e0f0c
1492*3a608692SPiotr Kubaj.long	0x61707865,0x61707865,0x61707865,0x61707865
1493*3a608692SPiotr Kubaj.long	0x3320646e,0x3320646e,0x3320646e,0x3320646e
1494*3a608692SPiotr Kubaj.long	0x79622d32,0x79622d32,0x79622d32,0x79622d32
1495*3a608692SPiotr Kubaj.long	0x6b206574,0x6b206574,0x6b206574,0x6b206574
1496*3a608692SPiotr Kubaj.long	0,1,2,3
1497*3a608692SPiotr Kubaj.byte	67,104,97,67,104,97,50,48,32,102,111,114,32,80,111,119,101,114,80,67,47,65,108,116,105,86,101,99,44,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
1498*3a608692SPiotr Kubaj.align	2
1499*3a608692SPiotr Kubaj.align	2
1500