xref: /netbsd-src/crypto/external/bsd/openssl/lib/libcrypto/arch/mips/aes-mips64.S (revision bdc22b2e01993381dcefeff2bc9b56ca75a4235c)
1.text
2#ifdef OPENSSL_FIPSCANISTER
3# include <openssl/fipssyms.h>
4#endif
5
6#if defined(__mips_smartmips) && !defined(_MIPS_ARCH_MIPS32R2)
7#define _MIPS_ARCH_MIPS32R2
8#endif
9
10#if !defined(__mips_eabi) && (!defined(__vxworks) || defined(__pic__))
11.option	pic2
12#endif
13.set	noat
14.align	5
15.ent	_mips_AES_encrypt
16_mips_AES_encrypt:
17	.frame	$29,0,$31
18	.set	reorder
19	lw	$12,0($6)
20	lw	$13,4($6)
21	lw	$14,8($6)
22	lw	$15,12($6)
23	lw	$30,240($6)
24	dadd $3,$6,16
25
26	xor	$8,$12
27	xor	$9,$13
28	xor	$10,$14
29	xor	$11,$15
30
31	sub	$30,1
32#if defined(__mips_smartmips)
33	ext	$1,$9,8,8
34.Loop_enc:
35	ext	$2,$10,8,8
36	ext	$24,$11,8,8
37	ext	$25,$8,8,8
38	lwxs	$12,$1($7)		# Te1[s1>>16]
39	ext	$1,$10,16,8
40	lwxs	$13,$2($7)		# Te1[s2>>16]
41	ext	$2,$11,16,8
42	lwxs	$14,$24($7)		# Te1[s3>>16]
43	ext	$24,$8,16,8
44	lwxs	$15,$25($7)		# Te1[s0>>16]
45	ext	$25,$9,16,8
46
47	lwxs	$16,$1($7)		# Te2[s2>>8]
48	ext	$1,$11,24,8
49	lwxs	$17,$2($7)		# Te2[s3>>8]
50	ext	$2,$8,24,8
51	lwxs	$18,$24($7)		# Te2[s0>>8]
52	ext	$24,$9,24,8
53	lwxs	$19,$25($7)		# Te2[s1>>8]
54	ext	$25,$10,24,8
55
56	lwxs	$20,$1($7)		# Te3[s3]
57	ext	$1,$8,0,8
58	lwxs	$21,$2($7)		# Te3[s0]
59	ext	$2,$9,0,8
60	lwxs	$22,$24($7)		# Te3[s1]
61	ext	$24,$10,0,8
62	lwxs	$23,$25($7)		# Te3[s2]
63	ext	$25,$11,0,8
64
65	rotr	$12,$12,24
66	rotr	$13,$13,24
67	rotr	$14,$14,24
68	rotr	$15,$15,24
69
70	rotr	$16,$16,16
71	rotr	$17,$17,16
72	rotr	$18,$18,16
73	rotr	$19,$19,16
74
75	xor	$12,$16
76	lwxs	$16,$1($7)		# Te0[s0>>24]
77	xor	$13,$17
78	lwxs	$17,$2($7)		# Te0[s1>>24]
79	xor	$14,$18
80	lwxs	$18,$24($7)		# Te0[s2>>24]
81	xor	$15,$19
82	lwxs	$19,$25($7)		# Te0[s3>>24]
83
84	rotr	$20,$20,8
85	lw	$8,0($3)
86	rotr	$21,$21,8
87	lw	$9,4($3)
88	rotr	$22,$22,8
89	lw	$10,8($3)
90	rotr	$23,$23,8
91	lw	$11,12($3)
92
93	xor	$12,$20
94	xor	$13,$21
95	xor	$14,$22
96	xor	$15,$23
97
98	xor	$12,$16
99	xor	$13,$17
100	xor	$14,$18
101	xor	$15,$19
102
103	sub	$30,1
104	dadd $3,16
105	xor	$8,$12
106	xor	$9,$13
107	xor	$10,$14
108	xor	$11,$15
109	.set	noreorder
110	bnez	$30,.Loop_enc
111	ext	$1,$9,8,8
112
113	srl	$1,$9,6
114#else
115	srl	$1,$9,6
116.Loop_enc:
117	srl	$2,$10,6
118	srl	$24,$11,6
119	srl	$25,$8,6
120	and	$1,0x3fc
121	and	$2,0x3fc
122	and	$24,0x3fc
123	and	$25,0x3fc
124	dadd $1,$7
125	dadd $2,$7
126	dadd $24,$7
127	dadd $25,$7
128#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
129	lw	$12,0($1)		# Te1[s1>>16]
130	srl	$1,$10,14
131	lw	$13,0($2)		# Te1[s2>>16]
132	srl	$2,$11,14
133	lw	$14,0($24)		# Te1[s3>>16]
134	srl	$24,$8,14
135	lw	$15,0($25)		# Te1[s0>>16]
136	srl	$25,$9,14
137#else
138	lwl	$12,2($1)		# Te1[s1>>16]
139	lwl	$13,2($2)		# Te1[s2>>16]
140	lwl	$14,2($24)		# Te1[s3>>16]
141	lwl	$15,2($25)		# Te1[s0>>16]
142	lwr	$12,3($1)		# Te1[s1>>16]
143	srl	$1,$10,14
144	lwr	$13,3($2)		# Te1[s2>>16]
145	srl	$2,$11,14
146	lwr	$14,3($24)		# Te1[s3>>16]
147	srl	$24,$8,14
148	lwr	$15,3($25)		# Te1[s0>>16]
149	srl	$25,$9,14
150#endif
151	and	$1,0x3fc
152	and	$2,0x3fc
153	and	$24,0x3fc
154	and	$25,0x3fc
155	dadd $1,$7
156	dadd $2,$7
157	dadd $24,$7
158	dadd $25,$7
159#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
160	rotr	$12,$12,24
161	rotr	$13,$13,24
162	rotr	$14,$14,24
163	rotr	$15,$15,24
164# if defined(_MIPSEL)
165	lw	$16,0($1)		# Te2[s2>>8]
166	srl	$1,$11,22
167	lw	$17,0($2)		# Te2[s3>>8]
168	srl	$2,$8,22
169	lw	$18,0($24)		# Te2[s0>>8]
170	srl	$24,$9,22
171	lw	$19,0($25)		# Te2[s1>>8]
172	srl	$25,$10,22
173
174	and	$1,0x3fc
175	and	$2,0x3fc
176	and	$24,0x3fc
177	and	$25,0x3fc
178	dadd $1,$7
179	dadd $2,$7
180	dadd $24,$7
181	dadd $25,$7
182	lw	$20,0($1)		# Te3[s3]
183	dins $1,$8,2,8
184	lw	$21,0($2)		# Te3[s0]
185	dins $2,$9,2,8
186	lw	$22,0($24)		# Te3[s1]
187	dins $24,$10,2,8
188	lw	$23,0($25)		# Te3[s2]
189	dins $25,$11,2,8
190# else
191	lw	$16,0($1)		# Te2[s2>>8]
192	dins $1,$11,2,8
193	lw	$17,0($2)		# Te2[s3>>8]
194	dins $2,$8,2,8
195	lw	$18,0($24)		# Te2[s0>>8]
196	dins $24,$9,2,8
197	lw	$19,0($25)		# Te2[s1>>8]
198	dins $25,$10,2,8
199
200	lw	$20,0($1)		# Te3[s3]
201	sll	$1,$8,2
202	lw	$21,0($2)		# Te3[s0]
203	sll	$2,$9,2
204	lw	$22,0($24)		# Te3[s1]
205	sll	$24,$10,2
206	lw	$23,0($25)		# Te3[s2]
207	sll	$25,$11,2
208
209	and	$1,0x3fc
210	and	$2,0x3fc
211	and	$24,0x3fc
212	and	$25,0x3fc
213	dadd $1,$7
214	dadd $2,$7
215	dadd $24,$7
216	dadd $25,$7
217# endif
218	rotr	$16,$16,16
219	rotr	$17,$17,16
220	rotr	$18,$18,16
221	rotr	$19,$19,16
222
223	rotr	$20,$20,8
224	rotr	$21,$21,8
225	rotr	$22,$22,8
226	rotr	$23,$23,8
227#else
228	lwl	$16,1($1)		# Te2[s2>>8]
229	lwl	$17,1($2)		# Te2[s3>>8]
230	lwl	$18,1($24)		# Te2[s0>>8]
231	lwl	$19,1($25)		# Te2[s1>>8]
232	lwr	$16,2($1)		# Te2[s2>>8]
233	srl	$1,$11,22
234	lwr	$17,2($2)		# Te2[s3>>8]
235	srl	$2,$8,22
236	lwr	$18,2($24)		# Te2[s0>>8]
237	srl	$24,$9,22
238	lwr	$19,2($25)		# Te2[s1>>8]
239	srl	$25,$10,22
240
241	and	$1,0x3fc
242	and	$2,0x3fc
243	and	$24,0x3fc
244	and	$25,0x3fc
245	dadd $1,$7
246	dadd $2,$7
247	dadd $24,$7
248	dadd $25,$7
249	lwl	$20,0($1)		# Te3[s3]
250	lwl	$21,0($2)		# Te3[s0]
251	lwl	$22,0($24)		# Te3[s1]
252	lwl	$23,0($25)		# Te3[s2]
253	lwr	$20,1($1)		# Te3[s3]
254	sll	$1,$8,2
255	lwr	$21,1($2)		# Te3[s0]
256	sll	$2,$9,2
257	lwr	$22,1($24)		# Te3[s1]
258	sll	$24,$10,2
259	lwr	$23,1($25)		# Te3[s2]
260	sll	$25,$11,2
261
262	and	$1,0x3fc
263	and	$2,0x3fc
264	and	$24,0x3fc
265	and	$25,0x3fc
266	dadd $1,$7
267	dadd $2,$7
268	dadd $24,$7
269	dadd $25,$7
270#endif
271	xor	$12,$16
272	lw	$16,0($1)		# Te0[s0>>24]
273	xor	$13,$17
274	lw	$17,0($2)		# Te0[s1>>24]
275	xor	$14,$18
276	lw	$18,0($24)		# Te0[s2>>24]
277	xor	$15,$19
278	lw	$19,0($25)		# Te0[s3>>24]
279
280	xor	$12,$20
281	lw	$8,0($3)
282	xor	$13,$21
283	lw	$9,4($3)
284	xor	$14,$22
285	lw	$10,8($3)
286	xor	$15,$23
287	lw	$11,12($3)
288
289	xor	$12,$16
290	xor	$13,$17
291	xor	$14,$18
292	xor	$15,$19
293
294	sub	$30,1
295	dadd $3,16
296	xor	$8,$12
297	xor	$9,$13
298	xor	$10,$14
299	xor	$11,$15
300	.set	noreorder
301	bnez	$30,.Loop_enc
302	srl	$1,$9,6
303#endif
304
305	.set	reorder
306	srl	$2,$10,6
307	srl	$24,$11,6
308	srl	$25,$8,6
309	and	$1,0x3fc
310	and	$2,0x3fc
311	and	$24,0x3fc
312	and	$25,0x3fc
313	dadd $1,$7
314	dadd $2,$7
315	dadd $24,$7
316	dadd $25,$7
317	lbu	$12,2($1)		# Te4[s1>>16]
318	srl	$1,$10,14
319	lbu	$13,2($2)		# Te4[s2>>16]
320	srl	$2,$11,14
321	lbu	$14,2($24)		# Te4[s3>>16]
322	srl	$24,$8,14
323	lbu	$15,2($25)		# Te4[s0>>16]
324	srl	$25,$9,14
325
326	and	$1,0x3fc
327	and	$2,0x3fc
328	and	$24,0x3fc
329	and	$25,0x3fc
330	dadd $1,$7
331	dadd $2,$7
332	dadd $24,$7
333	dadd $25,$7
334#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
335# if defined(_MIPSEL)
336	lbu	$16,2($1)		# Te4[s2>>8]
337	dins $1,$8,2,8
338	lbu	$17,2($2)		# Te4[s3>>8]
339	dins $2,$9,2,8
340	lbu	$18,2($24)		# Te4[s0>>8]
341	dins $24,$10,2,8
342	lbu	$19,2($25)		# Te4[s1>>8]
343	dins $25,$11,2,8
344
345	lbu	$20,2($1)		# Te4[s0>>24]
346	srl	$1,$11,22
347	lbu	$21,2($2)		# Te4[s1>>24]
348	srl	$2,$8,22
349	lbu	$22,2($24)		# Te4[s2>>24]
350	srl	$24,$9,22
351	lbu	$23,2($25)		# Te4[s3>>24]
352	srl	$25,$10,22
353
354	and	$1,0x3fc
355	and	$2,0x3fc
356	and	$24,0x3fc
357	and	$25,0x3fc
358	dadd $1,$7
359	dadd $2,$7
360	dadd $24,$7
361	dadd $25,$7
362# else
363	lbu	$16,2($1)		# Te4[s2>>8]
364	sll	$1,$8,2
365	lbu	$17,2($2)		# Te4[s3>>8]
366	sll	$2,$9,2
367	lbu	$18,2($24)		# Te4[s0>>8]
368	sll	$24,$10,2
369	lbu	$19,2($25)		# Te4[s1>>8]
370	sll	$25,$11,2
371
372	and	$1,0x3fc
373	and	$2,0x3fc
374	and	$24,0x3fc
375	and	$25,0x3fc
376	dadd $1,$7
377	dadd $2,$7
378	dadd $24,$7
379	dadd $25,$7
380	lbu	$20,2($1)		# Te4[s0>>24]
381	dins $1,$11,2,8
382	lbu	$21,2($2)		# Te4[s1>>24]
383	dins $2,$8,2,8
384	lbu	$22,2($24)		# Te4[s2>>24]
385	dins $24,$9,2,8
386	lbu	$23,2($25)		# Te4[s3>>24]
387	dins $25,$10,2,8
388# endif
389	sll	$12,$12,8
390	sll	$13,$13,8
391	sll	$14,$14,8
392	sll	$15,$15,8
393
394	ins	$12,$16,16,8
395	lbu	$16,2($1)		# Te4[s3]
396	ins	$13,$17,16,8
397	lbu	$17,2($2)		# Te4[s0]
398	ins	$14,$18,16,8
399	lbu	$18,2($24)		# Te4[s1]
400	ins	$15,$19,16,8
401	lbu	$19,2($25)		# Te4[s2]
402
403	ins	$12,$20,0,8
404	lw	$8,0($3)
405	ins	$13,$21,0,8
406	lw	$9,4($3)
407	ins	$14,$22,0,8
408	lw	$10,8($3)
409	ins	$15,$23,0,8
410	lw	$11,12($3)
411
412	ins	$12,$16,24,8
413	ins	$13,$17,24,8
414	ins	$14,$18,24,8
415	ins	$15,$19,24,8
416#else
417	lbu	$16,2($1)		# Te4[s2>>8]
418	sll	$1,$8,2
419	lbu	$17,2($2)		# Te4[s3>>8]
420	sll	$2,$9,2
421	lbu	$18,2($24)		# Te4[s0>>8]
422	sll	$24,$10,2
423	lbu	$19,2($25)		# Te4[s1>>8]
424	sll	$25,$11,2
425
426	and	$1,0x3fc
427	and	$2,0x3fc
428	and	$24,0x3fc
429	and	$25,0x3fc
430	dadd $1,$7
431	dadd $2,$7
432	dadd $24,$7
433	dadd $25,$7
434	lbu	$20,2($1)		# Te4[s0>>24]
435	srl	$1,$11,22
436	lbu	$21,2($2)		# Te4[s1>>24]
437	srl	$2,$8,22
438	lbu	$22,2($24)		# Te4[s2>>24]
439	srl	$24,$9,22
440	lbu	$23,2($25)		# Te4[s3>>24]
441	srl	$25,$10,22
442
443	and	$1,0x3fc
444	and	$2,0x3fc
445	and	$24,0x3fc
446	and	$25,0x3fc
447	dadd $1,$7
448	dadd $2,$7
449	dadd $24,$7
450	dadd $25,$7
451
452	sll	$12,$12,8
453	sll	$13,$13,8
454	sll	$14,$14,8
455	sll	$15,$15,8
456
457	sll	$16,$16,16
458	sll	$17,$17,16
459	sll	$18,$18,16
460	sll	$19,$19,16
461
462	xor	$12,$16
463	lbu	$16,2($1)		# Te4[s3]
464	xor	$13,$17
465	lbu	$17,2($2)		# Te4[s0]
466	xor	$14,$18
467	lbu	$18,2($24)		# Te4[s1]
468	xor	$15,$19
469	lbu	$19,2($25)		# Te4[s2]
470
471	#sll	$20,$20,0
472	lw	$8,0($3)
473	#sll	$21,$21,0
474	lw	$9,4($3)
475	#sll	$22,$22,0
476	lw	$10,8($3)
477	#sll	$23,$23,0
478	lw	$11,12($3)
479
480	xor	$12,$20
481	xor	$13,$21
482	xor	$14,$22
483	xor	$15,$23
484
485	sll	$16,$16,24
486	sll	$17,$17,24
487	sll	$18,$18,24
488	sll	$19,$19,24
489
490	xor	$12,$16
491	xor	$13,$17
492	xor	$14,$18
493	xor	$15,$19
494#endif
495	xor	$8,$12
496	xor	$9,$13
497	xor	$10,$14
498	xor	$11,$15
499
500	jr	$31
501.end	_mips_AES_encrypt
502
503.align	5
504.globl	AES_encrypt
505.ent	AES_encrypt
506AES_encrypt:
507	.frame	$29,128,$31
508	.mask	0xc0ff0000,-8
509	.set	noreorder
510	dsub $29,128
511	sd	$31,128-1*8($29)
512	sd	$30,128-2*8($29)
513	sd	$23,128-3*8($29)
514	sd	$22,128-4*8($29)
515	sd	$21,128-5*8($29)
516	sd	$20,128-6*8($29)
517	sd	$19,128-7*8($29)
518	sd	$18,128-8*8($29)
519	sd	$17,128-9*8($29)
520	sd	$16,128-10*8($29)
521	.cplocal	$7
522	.cpsetup	$25,$0,AES_encrypt
523	.set	reorder
524	dla	$7,AES_Te		# PIC-ified 'load address'
525
526	lwl	$8,0+3($4)
527	lwl	$9,4+3($4)
528	lwl	$10,8+3($4)
529	lwl	$11,12+3($4)
530	lwr	$8,0+0($4)
531	lwr	$9,4+0($4)
532	lwr	$10,8+0($4)
533	lwr	$11,12+0($4)
534
535	bal	_mips_AES_encrypt
536
537	swr	$8,0+0($5)
538	swr	$9,4+0($5)
539	swr	$10,8+0($5)
540	swr	$11,12+0($5)
541	swl	$8,0+3($5)
542	swl	$9,4+3($5)
543	swl	$10,8+3($5)
544	swl	$11,12+3($5)
545
546	.set	noreorder
547	ld	$31,128-1*8($29)
548	ld	$30,128-2*8($29)
549	ld	$23,128-3*8($29)
550	ld	$22,128-4*8($29)
551	ld	$21,128-5*8($29)
552	ld	$20,128-6*8($29)
553	ld	$19,128-7*8($29)
554	ld	$18,128-8*8($29)
555	ld	$17,128-9*8($29)
556	ld	$16,128-10*8($29)
557	jr	$31
558	dadd $29,128
559.end	AES_encrypt
560.align	5
561.ent	_mips_AES_decrypt
562_mips_AES_decrypt:
563	.frame	$29,0,$31
564	.set	reorder
565	lw	$12,0($6)
566	lw	$13,4($6)
567	lw	$14,8($6)
568	lw	$15,12($6)
569	lw	$30,240($6)
570	dadd $3,$6,16
571
572	xor	$8,$12
573	xor	$9,$13
574	xor	$10,$14
575	xor	$11,$15
576
577	sub	$30,1
578#if defined(__mips_smartmips)
579	ext	$1,$11,8,8
580.Loop_dec:
581	ext	$2,$8,8,8
582	ext	$24,$9,8,8
583	ext	$25,$10,8,8
584	lwxs	$12,$1($7)		# Td1[s3>>16]
585	ext	$1,$10,16,8
586	lwxs	$13,$2($7)		# Td1[s0>>16]
587	ext	$2,$11,16,8
588	lwxs	$14,$24($7)		# Td1[s1>>16]
589	ext	$24,$8,16,8
590	lwxs	$15,$25($7)		# Td1[s2>>16]
591	ext	$25,$9,16,8
592
593	lwxs	$16,$1($7)		# Td2[s2>>8]
594	ext	$1,$9,24,8
595	lwxs	$17,$2($7)		# Td2[s3>>8]
596	ext	$2,$10,24,8
597	lwxs	$18,$24($7)		# Td2[s0>>8]
598	ext	$24,$11,24,8
599	lwxs	$19,$25($7)		# Td2[s1>>8]
600	ext	$25,$8,24,8
601
602	lwxs	$20,$1($7)		# Td3[s1]
603	ext	$1,$8,0,8
604	lwxs	$21,$2($7)		# Td3[s2]
605	ext	$2,$9,0,8
606	lwxs	$22,$24($7)		# Td3[s3]
607	ext	$24,$10,0,8
608	lwxs	$23,$25($7)		# Td3[s0]
609	ext	$25,$11,0,8
610
611	rotr	$12,$12,24
612	rotr	$13,$13,24
613	rotr	$14,$14,24
614	rotr	$15,$15,24
615
616	rotr	$16,$16,16
617	rotr	$17,$17,16
618	rotr	$18,$18,16
619	rotr	$19,$19,16
620
621	xor	$12,$16
622	lwxs	$16,$1($7)		# Td0[s0>>24]
623	xor	$13,$17
624	lwxs	$17,$2($7)		# Td0[s1>>24]
625	xor	$14,$18
626	lwxs	$18,$24($7)		# Td0[s2>>24]
627	xor	$15,$19
628	lwxs	$19,$25($7)		# Td0[s3>>24]
629
630	rotr	$20,$20,8
631	lw	$8,0($3)
632	rotr	$21,$21,8
633	lw	$9,4($3)
634	rotr	$22,$22,8
635	lw	$10,8($3)
636	rotr	$23,$23,8
637	lw	$11,12($3)
638
639	xor	$12,$20
640	xor	$13,$21
641	xor	$14,$22
642	xor	$15,$23
643
644	xor	$12,$16
645	xor	$13,$17
646	xor	$14,$18
647	xor	$15,$19
648
649	sub	$30,1
650	dadd $3,16
651	xor	$8,$12
652	xor	$9,$13
653	xor	$10,$14
654	xor	$11,$15
655	.set	noreorder
656	bnez	$30,.Loop_dec
657	ext	$1,$11,8,8
658
659	srl	$1,$11,6
660#else
661	srl	$1,$11,6
662.Loop_dec:
663	srl	$2,$8,6
664	srl	$24,$9,6
665	srl	$25,$10,6
666	and	$1,0x3fc
667	and	$2,0x3fc
668	and	$24,0x3fc
669	and	$25,0x3fc
670	dadd $1,$7
671	dadd $2,$7
672	dadd $24,$7
673	dadd $25,$7
674#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
675	lw	$12,0($1)		# Td1[s3>>16]
676	srl	$1,$10,14
677	lw	$13,0($2)		# Td1[s0>>16]
678	srl	$2,$11,14
679	lw	$14,0($24)		# Td1[s1>>16]
680	srl	$24,$8,14
681	lw	$15,0($25)		# Td1[s2>>16]
682	srl	$25,$9,14
683#else
684	lwl	$12,2($1)		# Td1[s3>>16]
685	lwl	$13,2($2)		# Td1[s0>>16]
686	lwl	$14,2($24)		# Td1[s1>>16]
687	lwl	$15,2($25)		# Td1[s2>>16]
688	lwr	$12,3($1)		# Td1[s3>>16]
689	srl	$1,$10,14
690	lwr	$13,3($2)		# Td1[s0>>16]
691	srl	$2,$11,14
692	lwr	$14,3($24)		# Td1[s1>>16]
693	srl	$24,$8,14
694	lwr	$15,3($25)		# Td1[s2>>16]
695	srl	$25,$9,14
696#endif
697
698	and	$1,0x3fc
699	and	$2,0x3fc
700	and	$24,0x3fc
701	and	$25,0x3fc
702	dadd $1,$7
703	dadd $2,$7
704	dadd $24,$7
705	dadd $25,$7
706#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
707	rotr	$12,$12,24
708	rotr	$13,$13,24
709	rotr	$14,$14,24
710	rotr	$15,$15,24
711# if defined(_MIPSEL)
712	lw	$16,0($1)		# Td2[s2>>8]
713	srl	$1,$9,22
714	lw	$17,0($2)		# Td2[s3>>8]
715	srl	$2,$10,22
716	lw	$18,0($24)		# Td2[s0>>8]
717	srl	$24,$11,22
718	lw	$19,0($25)		# Td2[s1>>8]
719	srl	$25,$8,22
720
721	and	$1,0x3fc
722	and	$2,0x3fc
723	and	$24,0x3fc
724	and	$25,0x3fc
725	dadd $1,$7
726	dadd $2,$7
727	dadd $24,$7
728	dadd $25,$7
729	lw	$20,0($1)		# Td3[s1]
730	dins $1,$8,2,8
731	lw	$21,0($2)		# Td3[s2]
732	dins $2,$9,2,8
733	lw	$22,0($24)		# Td3[s3]
734	dins $24,$10,2,8
735	lw	$23,0($25)		# Td3[s0]
736	dins $25,$11,2,8
737#else
738	lw	$16,0($1)		# Td2[s2>>8]
739	dins $1,$9,2,8
740	lw	$17,0($2)		# Td2[s3>>8]
741	dins $2,$10,2,8
742	lw	$18,0($24)		# Td2[s0>>8]
743	dins $24,$11,2,8
744	lw	$19,0($25)		# Td2[s1>>8]
745	dins $25,$8,2,8
746
747	lw	$20,0($1)		# Td3[s1]
748	sll	$1,$8,2
749	lw	$21,0($2)		# Td3[s2]
750	sll	$2,$9,2
751	lw	$22,0($24)		# Td3[s3]
752	sll	$24,$10,2
753	lw	$23,0($25)		# Td3[s0]
754	sll	$25,$11,2
755
756	and	$1,0x3fc
757	and	$2,0x3fc
758	and	$24,0x3fc
759	and	$25,0x3fc
760	dadd $1,$7
761	dadd $2,$7
762	dadd $24,$7
763	dadd $25,$7
764#endif
765	rotr	$16,$16,16
766	rotr	$17,$17,16
767	rotr	$18,$18,16
768	rotr	$19,$19,16
769
770	rotr	$20,$20,8
771	rotr	$21,$21,8
772	rotr	$22,$22,8
773	rotr	$23,$23,8
774#else
775	lwl	$16,1($1)		# Td2[s2>>8]
776	lwl	$17,1($2)		# Td2[s3>>8]
777	lwl	$18,1($24)		# Td2[s0>>8]
778	lwl	$19,1($25)		# Td2[s1>>8]
779	lwr	$16,2($1)		# Td2[s2>>8]
780	srl	$1,$9,22
781	lwr	$17,2($2)		# Td2[s3>>8]
782	srl	$2,$10,22
783	lwr	$18,2($24)		# Td2[s0>>8]
784	srl	$24,$11,22
785	lwr	$19,2($25)		# Td2[s1>>8]
786	srl	$25,$8,22
787
788	and	$1,0x3fc
789	and	$2,0x3fc
790	and	$24,0x3fc
791	and	$25,0x3fc
792	dadd $1,$7
793	dadd $2,$7
794	dadd $24,$7
795	dadd $25,$7
796	lwl	$20,0($1)		# Td3[s1]
797	lwl	$21,0($2)		# Td3[s2]
798	lwl	$22,0($24)		# Td3[s3]
799	lwl	$23,0($25)		# Td3[s0]
800	lwr	$20,1($1)		# Td3[s1]
801	sll	$1,$8,2
802	lwr	$21,1($2)		# Td3[s2]
803	sll	$2,$9,2
804	lwr	$22,1($24)		# Td3[s3]
805	sll	$24,$10,2
806	lwr	$23,1($25)		# Td3[s0]
807	sll	$25,$11,2
808
809	and	$1,0x3fc
810	and	$2,0x3fc
811	and	$24,0x3fc
812	and	$25,0x3fc
813	dadd $1,$7
814	dadd $2,$7
815	dadd $24,$7
816	dadd $25,$7
817#endif
818
819	xor	$12,$16
820	lw	$16,0($1)		# Td0[s0>>24]
821	xor	$13,$17
822	lw	$17,0($2)		# Td0[s1>>24]
823	xor	$14,$18
824	lw	$18,0($24)		# Td0[s2>>24]
825	xor	$15,$19
826	lw	$19,0($25)		# Td0[s3>>24]
827
828	xor	$12,$20
829	lw	$8,0($3)
830	xor	$13,$21
831	lw	$9,4($3)
832	xor	$14,$22
833	lw	$10,8($3)
834	xor	$15,$23
835	lw	$11,12($3)
836
837	xor	$12,$16
838	xor	$13,$17
839	xor	$14,$18
840	xor	$15,$19
841
842	sub	$30,1
843	dadd $3,16
844	xor	$8,$12
845	xor	$9,$13
846	xor	$10,$14
847	xor	$11,$15
848	.set	noreorder
849	bnez	$30,.Loop_dec
850	srl	$1,$11,6
851#endif
852
853	.set	reorder
854	lw	$16,1024($7)		# prefetch Td4
855	srl	$1,$11,8
856	lw	$17,1024+32($7)
857	srl	$2,$8,8
858	lw	$18,1024+64($7)
859	srl	$24,$9,8
860	lw	$19,1024+96($7)
861	srl	$25,$10,8
862	lw	$20,1024+128($7)
863	and	$1,0xff
864	lw	$21,1024+160($7)
865	and	$2,0xff
866	lw	$22,1024+192($7)
867	and	$24,0xff
868	lw	$23,1024+224($7)
869	and	$25,0xff
870
871	dadd $1,$7
872	dadd $2,$7
873	dadd $24,$7
874	dadd $25,$7
875	lbu	$12,1024($1)		# Td4[s3>>16]
876	srl	$1,$10,16
877	lbu	$13,1024($2)		# Td4[s0>>16]
878	srl	$2,$11,16
879	lbu	$14,1024($24)		# Td4[s1>>16]
880	srl	$24,$8,16
881	lbu	$15,1024($25)		# Td4[s2>>16]
882	srl	$25,$9,16
883
884	and	$1,0xff
885	and	$2,0xff
886	and	$24,0xff
887	and	$25,0xff
888	dadd $1,$7
889	dadd $2,$7
890	dadd $24,$7
891	dadd $25,$7
892#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
893# if defined(_MIPSEL)
894	lbu	$16,1024($1)		# Td4[s2>>8]
895	dins $1,$8,0,8
896	lbu	$17,1024($2)		# Td4[s3>>8]
897	dins $2,$9,0,8
898	lbu	$18,1024($24)		# Td4[s0>>8]
899	dins $24,$10,0,8
900	lbu	$19,1024($25)		# Td4[s1>>8]
901	dins $25,$11,0,8
902
903	lbu	$20,1024($1)		# Td4[s0>>24]
904	srl	$1,$9,24
905	lbu	$21,1024($2)		# Td4[s1>>24]
906	srl	$2,$10,24
907	lbu	$22,1024($24)		# Td4[s2>>24]
908	srl	$24,$11,24
909	lbu	$23,1024($25)		# Td4[s3>>24]
910	srl	$25,$8,24
911
912	dadd $1,$7
913	dadd $2,$7
914	dadd $24,$7
915	dadd $25,$7
916# else
917	lbu	$16,1024($1)		# Td4[s2>>8]
918	and	$1,$8,0xff
919	lbu	$17,1024($2)		# Td4[s3>>8]
920	and	$2,$9,0xff
921	lbu	$18,1024($24)		# Td4[s0>>8]
922	and	$24,$10,0xff
923	lbu	$19,1024($25)		# Td4[s1>>8]
924	and	$25,$11,0xff
925
926	dadd $1,$7
927	dadd $2,$7
928	dadd $24,$7
929	dadd $25,$7
930	lbu	$20,1024($1)		# Td4[s0>>24]
931	dins $1,$9,0,8
932	lbu	$21,1024($2)		# Td4[s1>>24]
933	dins $2,$10,0,8
934	lbu	$22,1024($24)		# Td4[s2>>24]
935	dins $24,$11,0,8
936	lbu	$23,1024($25)		# Td4[s3>>24]
937	dins $25,$8,0,8
938# endif
939	sll	$12,$12,8
940	sll	$13,$13,8
941	sll	$14,$14,8
942	sll	$15,$15,8
943
944	ins	$12,$16,16,8
945	lbu	$16,1024($1)		# Td4[s1]
946	ins	$13,$17,16,8
947	lbu	$17,1024($2)		# Td4[s2]
948	ins	$14,$18,16,8
949	lbu	$18,1024($24)		# Td4[s3]
950	ins	$15,$19,16,8
951	lbu	$19,1024($25)		# Td4[s0]
952
953	ins	$12,$20,0,8
954	lw	$8,0($3)
955	ins	$13,$21,0,8
956	lw	$9,4($3)
957	ins	$14,$22,0,8
958	lw	$10,8($3)
959	ins	$15,$23,0,8
960	lw	$11,12($3)
961
962	ins	$12,$16,24,8
963	ins	$13,$17,24,8
964	ins	$14,$18,24,8
965	ins	$15,$19,24,8
966#else
967	lbu	$16,1024($1)		# Td4[s2>>8]
968	and	$1,$8,0xff
969	lbu	$17,1024($2)		# Td4[s3>>8]
970	and	$2,$9,0xff
971	lbu	$18,1024($24)		# Td4[s0>>8]
972	and	$24,$10,0xff
973	lbu	$19,1024($25)		# Td4[s1>>8]
974	and	$25,$11,0xff
975
976	dadd $1,$7
977	dadd $2,$7
978	dadd $24,$7
979	dadd $25,$7
980	lbu	$20,1024($1)		# Td4[s0>>24]
981	srl	$1,$9,24
982	lbu	$21,1024($2)		# Td4[s1>>24]
983	srl	$2,$10,24
984	lbu	$22,1024($24)		# Td4[s2>>24]
985	srl	$24,$11,24
986	lbu	$23,1024($25)		# Td4[s3>>24]
987	srl	$25,$8,24
988
989	dadd $1,$7
990	dadd $2,$7
991	dadd $24,$7
992	dadd $25,$7
993
994	sll	$12,$12,8
995	sll	$13,$13,8
996	sll	$14,$14,8
997	sll	$15,$15,8
998
999	sll	$16,$16,16
1000	sll	$17,$17,16
1001	sll	$18,$18,16
1002	sll	$19,$19,16
1003
1004	xor	$12,$16
1005	lbu	$16,1024($1)		# Td4[s1]
1006	xor	$13,$17
1007	lbu	$17,1024($2)		# Td4[s2]
1008	xor	$14,$18
1009	lbu	$18,1024($24)		# Td4[s3]
1010	xor	$15,$19
1011	lbu	$19,1024($25)		# Td4[s0]
1012
1013	#sll	$20,$20,0
1014	lw	$8,0($3)
1015	#sll	$21,$21,0
1016	lw	$9,4($3)
1017	#sll	$22,$22,0
1018	lw	$10,8($3)
1019	#sll	$23,$23,0
1020	lw	$11,12($3)
1021
1022	xor	$12,$20
1023	xor	$13,$21
1024	xor	$14,$22
1025	xor	$15,$23
1026
1027	sll	$16,$16,24
1028	sll	$17,$17,24
1029	sll	$18,$18,24
1030	sll	$19,$19,24
1031
1032	xor	$12,$16
1033	xor	$13,$17
1034	xor	$14,$18
1035	xor	$15,$19
1036#endif
1037
1038	xor	$8,$12
1039	xor	$9,$13
1040	xor	$10,$14
1041	xor	$11,$15
1042
1043	jr	$31
1044.end	_mips_AES_decrypt
1045
1046.align	5
1047.globl	AES_decrypt
1048.ent	AES_decrypt
1049AES_decrypt:
1050	.frame	$29,128,$31
1051	.mask	0xc0ff0000,-8
1052	.set	noreorder
1053	dsub $29,128
1054	sd	$31,128-1*8($29)
1055	sd	$30,128-2*8($29)
1056	sd	$23,128-3*8($29)
1057	sd	$22,128-4*8($29)
1058	sd	$21,128-5*8($29)
1059	sd	$20,128-6*8($29)
1060	sd	$19,128-7*8($29)
1061	sd	$18,128-8*8($29)
1062	sd	$17,128-9*8($29)
1063	sd	$16,128-10*8($29)
1064	.cplocal	$7
1065	.cpsetup	$25,$0,AES_decrypt
1066	.set	reorder
1067	dla	$7,AES_Td		# PIC-ified 'load address'
1068
1069	lwl	$8,0+3($4)
1070	lwl	$9,4+3($4)
1071	lwl	$10,8+3($4)
1072	lwl	$11,12+3($4)
1073	lwr	$8,0+0($4)
1074	lwr	$9,4+0($4)
1075	lwr	$10,8+0($4)
1076	lwr	$11,12+0($4)
1077
1078	bal	_mips_AES_decrypt
1079
1080	swr	$8,0+0($5)
1081	swr	$9,4+0($5)
1082	swr	$10,8+0($5)
1083	swr	$11,12+0($5)
1084	swl	$8,0+3($5)
1085	swl	$9,4+3($5)
1086	swl	$10,8+3($5)
1087	swl	$11,12+3($5)
1088
1089	.set	noreorder
1090	ld	$31,128-1*8($29)
1091	ld	$30,128-2*8($29)
1092	ld	$23,128-3*8($29)
1093	ld	$22,128-4*8($29)
1094	ld	$21,128-5*8($29)
1095	ld	$20,128-6*8($29)
1096	ld	$19,128-7*8($29)
1097	ld	$18,128-8*8($29)
1098	ld	$17,128-9*8($29)
1099	ld	$16,128-10*8($29)
1100	jr	$31
1101	dadd $29,128
1102.end	AES_decrypt
1103.align	5
1104.ent	_mips_AES_set_encrypt_key
1105_mips_AES_set_encrypt_key:
1106	.frame	$29,0,$31
1107	.set	noreorder
1108	beqz	$4,.Lekey_done
1109	li	$2,-1
1110	beqz	$6,.Lekey_done
1111	dadd $3,$7,256
1112
1113	.set	reorder
1114	lwl	$8,0+3($4)	# load 128 bits
1115	lwl	$9,4+3($4)
1116	lwl	$10,8+3($4)
1117	lwl	$11,12+3($4)
1118	li	$1,128
1119	lwr	$8,0+0($4)
1120	lwr	$9,4+0($4)
1121	lwr	$10,8+0($4)
1122	lwr	$11,12+0($4)
1123	.set	noreorder
1124	beq	$5,$1,.L128bits
1125	li	$30,10
1126
1127	.set	reorder
1128	lwl	$12,16+3($4)	# load 192 bits
1129	lwl	$13,20+3($4)
1130	li	$1,192
1131	lwr	$12,16+0($4)
1132	lwr	$13,20+0($4)
1133	.set	noreorder
1134	beq	$5,$1,.L192bits
1135	li	$30,8
1136
1137	.set	reorder
1138	lwl	$14,24+3($4)	# load 256 bits
1139	lwl	$15,28+3($4)
1140	li	$1,256
1141	lwr	$14,24+0($4)
1142	lwr	$15,28+0($4)
1143	.set	noreorder
1144	beq	$5,$1,.L256bits
1145	li	$30,7
1146
1147	b	.Lekey_done
1148	li	$2,-2
1149
1150.align	4
1151.L128bits:
1152	.set	reorder
1153	srl	$1,$11,16
1154	srl	$2,$11,8
1155	and	$1,0xff
1156	and	$2,0xff
1157	and	$24,$11,0xff
1158	srl	$25,$11,24
1159	dadd $1,$7
1160	dadd $2,$7
1161	dadd $24,$7
1162	dadd $25,$7
1163	lbu	$1,0($1)
1164	lbu	$2,0($2)
1165	lbu	$24,0($24)
1166	lbu	$25,0($25)
1167
1168	sw	$8,0($6)
1169	sw	$9,4($6)
1170	sw	$10,8($6)
1171	sw	$11,12($6)
1172	sub	$30,1
1173	dadd $6,16
1174
1175	sll	$1,$1,8
1176	#sll	$2,$2,0
1177	sll	$24,$24,24
1178	sll	$25,$25,16
1179
1180	xor	$8,$1
1181	lw	$1,0($3)
1182	xor	$8,$2
1183	xor	$8,$24
1184	xor	$8,$25
1185	xor	$8,$1
1186
1187	xor	$9,$8
1188	xor	$10,$9
1189	xor	$11,$10
1190
1191	.set	noreorder
1192	bnez	$30,.L128bits
1193	dadd $3,4
1194
1195	sw	$8,0($6)
1196	sw	$9,4($6)
1197	sw	$10,8($6)
1198	li	$30,10
1199	sw	$11,12($6)
1200	li	$2,0
1201	sw	$30,80($6)
1202	b	.Lekey_done
1203	dsub $6,10*16
1204
1205.align	4
1206.L192bits:
1207	.set	reorder
1208	srl	$1,$13,16
1209	srl	$2,$13,8
1210	and	$1,0xff
1211	and	$2,0xff
1212	and	$24,$13,0xff
1213	srl	$25,$13,24
1214	dadd $1,$7
1215	dadd $2,$7
1216	dadd $24,$7
1217	dadd $25,$7
1218	lbu	$1,0($1)
1219	lbu	$2,0($2)
1220	lbu	$24,0($24)
1221	lbu	$25,0($25)
1222
1223	sw	$8,0($6)
1224	sw	$9,4($6)
1225	sw	$10,8($6)
1226	sw	$11,12($6)
1227	sw	$12,16($6)
1228	sw	$13,20($6)
1229	sub	$30,1
1230	dadd $6,24
1231
1232	sll	$1,$1,8
1233	#sll	$2,$2,0
1234	sll	$24,$24,24
1235	sll	$25,$25,16
1236
1237	xor	$8,$1
1238	lw	$1,0($3)
1239	xor	$8,$2
1240	xor	$8,$24
1241	xor	$8,$25
1242	xor	$8,$1
1243
1244	xor	$9,$8
1245	xor	$10,$9
1246	xor	$11,$10
1247	xor	$12,$11
1248	xor	$13,$12
1249
1250	.set	noreorder
1251	bnez	$30,.L192bits
1252	dadd $3,4
1253
1254	sw	$8,0($6)
1255	sw	$9,4($6)
1256	sw	$10,8($6)
1257	li	$30,12
1258	sw	$11,12($6)
1259	li	$2,0
1260	sw	$30,48($6)
1261	b	.Lekey_done
1262	dsub $6,12*16
1263
1264.align	4
1265.L256bits:
1266	.set	reorder
1267	srl	$1,$15,16
1268	srl	$2,$15,8
1269	and	$1,0xff
1270	and	$2,0xff
1271	and	$24,$15,0xff
1272	srl	$25,$15,24
1273	dadd $1,$7
1274	dadd $2,$7
1275	dadd $24,$7
1276	dadd $25,$7
1277	lbu	$1,0($1)
1278	lbu	$2,0($2)
1279	lbu	$24,0($24)
1280	lbu	$25,0($25)
1281
1282	sw	$8,0($6)
1283	sw	$9,4($6)
1284	sw	$10,8($6)
1285	sw	$11,12($6)
1286	sw	$12,16($6)
1287	sw	$13,20($6)
1288	sw	$14,24($6)
1289	sw	$15,28($6)
1290	sub	$30,1
1291
1292	sll	$1,$1,8
1293	#sll	$2,$2,0
1294	sll	$24,$24,24
1295	sll	$25,$25,16
1296
1297	xor	$8,$1
1298	lw	$1,0($3)
1299	xor	$8,$2
1300	xor	$8,$24
1301	xor	$8,$25
1302	xor	$8,$1
1303
1304	xor	$9,$8
1305	xor	$10,$9
1306	xor	$11,$10
1307	beqz	$30,.L256bits_done
1308
1309	srl	$1,$11,24
1310	srl	$2,$11,16
1311	srl	$24,$11,8
1312	and	$25,$11,0xff
1313	and	$2,0xff
1314	and	$24,0xff
1315	dadd $1,$7
1316	dadd $2,$7
1317	dadd $24,$7
1318	dadd $25,$7
1319	lbu	$1,0($1)
1320	lbu	$2,0($2)
1321	lbu	$24,0($24)
1322	lbu	$25,0($25)
1323	sll	$1,24
1324	sll	$2,16
1325	sll	$24,8
1326
1327	xor	$12,$1
1328	xor	$12,$2
1329	xor	$12,$24
1330	xor	$12,$25
1331
1332	xor	$13,$12
1333	xor	$14,$13
1334	xor	$15,$14
1335
1336	dadd $6,32
1337	.set	noreorder
1338	b	.L256bits
1339	dadd $3,4
1340
1341.L256bits_done:
1342	sw	$8,32($6)
1343	sw	$9,36($6)
1344	sw	$10,40($6)
1345	li	$30,14
1346	sw	$11,44($6)
1347	li	$2,0
1348	sw	$30,48($6)
1349	dsub $6,12*16
1350
1351.Lekey_done:
1352	jr	$31
1353	nop
1354.end	_mips_AES_set_encrypt_key
1355
1356.globl	AES_set_encrypt_key
1357.ent	AES_set_encrypt_key
1358AES_set_encrypt_key:
1359	.frame	$29,64,$31
1360	.mask	0xc0000000,-8
1361	.set	noreorder
1362	dsub $29,64
1363	sd	$31,64-1*8($29)
1364	sd	$30,64-2*8($29)
1365	.cplocal	$7
1366	.cpsetup	$25,$0,AES_set_encrypt_key
1367	.set	reorder
1368	dla	$7,AES_Te4		# PIC-ified 'load address'
1369
1370	bal	_mips_AES_set_encrypt_key
1371
1372	.set	noreorder
1373	move	$4,$2
1374	ld	$31,64-1*8($29)
1375	ld	$30,64-2*8($29)
1376	jr	$31
1377	dadd $29,64
1378.end	AES_set_encrypt_key
1379.align	5
1380.globl	AES_set_decrypt_key
1381.ent	AES_set_decrypt_key
1382AES_set_decrypt_key:
1383	.frame	$29,64,$31
1384	.mask	0xc0000000,-8
1385	.set	noreorder
1386	dsub $29,64
1387	sd	$31,64-1*8($29)
1388	sd	$30,64-2*8($29)
1389	.cplocal	$7
1390	.cpsetup	$25,$0,AES_set_decrypt_key
1391	.set	reorder
1392	dla	$7,AES_Te4		# PIC-ified 'load address'
1393
1394	bal	_mips_AES_set_encrypt_key
1395
1396	bltz	$2,.Ldkey_done
1397
1398	sll	$1,$30,4
1399	dadd $4,$6,0
1400	dadd $5,$6,$1
1401.align	4
1402.Lswap:
1403	lw	$8,0($4)
1404	lw	$9,4($4)
1405	lw	$10,8($4)
1406	lw	$11,12($4)
1407	lw	$12,0($5)
1408	lw	$13,4($5)
1409	lw	$14,8($5)
1410	lw	$15,12($5)
1411	sw	$8,0($5)
1412	sw	$9,4($5)
1413	sw	$10,8($5)
1414	sw	$11,12($5)
1415	dadd $4,16
1416	dsub $5,16
1417	sw	$12,-16($4)
1418	sw	$13,-12($4)
1419	sw	$14,-8($4)
1420	sw	$15,-4($4)
1421	bne	$4,$5,.Lswap
1422
1423	lw	$8,16($6)		# modulo-scheduled
1424	lui	$2,0x8080
1425	sub	$30,1
1426	or	$2,0x8080
1427	sll	$30,2
1428	dadd $6,16
1429	lui	$25,0x1b1b
1430	nor	$24,$0,$2
1431	or	$25,0x1b1b
1432.align	4
1433.Lmix:
1434	and	$1,$8,$2
1435	and	$9,$8,$24
1436	srl	$10,$1,7
1437	addu	$9,$9		# tp2<<1
1438	subu	$1,$10
1439	and	$1,$25
1440	xor	$9,$1
1441
1442	and	$1,$9,$2
1443	and	$10,$9,$24
1444	srl	$11,$1,7
1445	addu	$10,$10		# tp4<<1
1446	subu	$1,$11
1447	and	$1,$25
1448	xor	$10,$1
1449
1450	and	$1,$10,$2
1451	and	$11,$10,$24
1452	srl	$12,$1,7
1453	addu	$11,$11		# tp8<<1
1454	subu	$1,$12
1455	and	$1,$25
1456	xor	$11,$1
1457
1458	xor	$12,$11,$8
1459	xor	$15,$11,$10
1460	xor	$13,$12,$9
1461	xor	$14,$12,$10
1462
1463#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1464	rotr	$8,$14,16
1465	 xor	$15,$9
1466	rotr	$9,$12,24
1467	xor	$15,$8
1468	rotr	$10,$13,8
1469	xor	$15,$9
1470	lw	$8,4($6)		# modulo-scheduled
1471	xor	$15,$10
1472#else
1473	sll	$8,$14,16
1474	 xor	$15,$9
1475	srl	$9,$14,16
1476	xor	$15,$8
1477	sll	$8,$12,8
1478	xor	$15,$9
1479	srl	$9,$12,24
1480	xor	$15,$8
1481	sll	$8,$13,24
1482	xor	$15,$9
1483	srl	$9,$13,8
1484	xor	$15,$8
1485	lw	$8,4($6)		# modulo-scheduled
1486	xor	$15,$9
1487#endif
1488	sub	$30,1
1489	sw	$15,0($6)
1490	dadd $6,4
1491	bnez	$30,.Lmix
1492
1493	li	$2,0
1494.Ldkey_done:
1495	.set	noreorder
1496	move	$4,$2
1497	ld	$31,64-1*8($29)
1498	ld	$30,64-2*8($29)
1499	jr	$31
1500	dadd $29,64
1501.end	AES_set_decrypt_key
1502.rdata
1503.align	10
1504AES_Te:
1505.byte	0xc6,0x63,0x63,0xa5,	0xf8,0x7c,0x7c,0x84	# Te0
1506.byte	0xee,0x77,0x77,0x99,	0xf6,0x7b,0x7b,0x8d
1507.byte	0xff,0xf2,0xf2,0x0d,	0xd6,0x6b,0x6b,0xbd
1508.byte	0xde,0x6f,0x6f,0xb1,	0x91,0xc5,0xc5,0x54
1509.byte	0x60,0x30,0x30,0x50,	0x02,0x01,0x01,0x03
1510.byte	0xce,0x67,0x67,0xa9,	0x56,0x2b,0x2b,0x7d
1511.byte	0xe7,0xfe,0xfe,0x19,	0xb5,0xd7,0xd7,0x62
1512.byte	0x4d,0xab,0xab,0xe6,	0xec,0x76,0x76,0x9a
1513.byte	0x8f,0xca,0xca,0x45,	0x1f,0x82,0x82,0x9d
1514.byte	0x89,0xc9,0xc9,0x40,	0xfa,0x7d,0x7d,0x87
1515.byte	0xef,0xfa,0xfa,0x15,	0xb2,0x59,0x59,0xeb
1516.byte	0x8e,0x47,0x47,0xc9,	0xfb,0xf0,0xf0,0x0b
1517.byte	0x41,0xad,0xad,0xec,	0xb3,0xd4,0xd4,0x67
1518.byte	0x5f,0xa2,0xa2,0xfd,	0x45,0xaf,0xaf,0xea
1519.byte	0x23,0x9c,0x9c,0xbf,	0x53,0xa4,0xa4,0xf7
1520.byte	0xe4,0x72,0x72,0x96,	0x9b,0xc0,0xc0,0x5b
1521.byte	0x75,0xb7,0xb7,0xc2,	0xe1,0xfd,0xfd,0x1c
1522.byte	0x3d,0x93,0x93,0xae,	0x4c,0x26,0x26,0x6a
1523.byte	0x6c,0x36,0x36,0x5a,	0x7e,0x3f,0x3f,0x41
1524.byte	0xf5,0xf7,0xf7,0x02,	0x83,0xcc,0xcc,0x4f
1525.byte	0x68,0x34,0x34,0x5c,	0x51,0xa5,0xa5,0xf4
1526.byte	0xd1,0xe5,0xe5,0x34,	0xf9,0xf1,0xf1,0x08
1527.byte	0xe2,0x71,0x71,0x93,	0xab,0xd8,0xd8,0x73
1528.byte	0x62,0x31,0x31,0x53,	0x2a,0x15,0x15,0x3f
1529.byte	0x08,0x04,0x04,0x0c,	0x95,0xc7,0xc7,0x52
1530.byte	0x46,0x23,0x23,0x65,	0x9d,0xc3,0xc3,0x5e
1531.byte	0x30,0x18,0x18,0x28,	0x37,0x96,0x96,0xa1
1532.byte	0x0a,0x05,0x05,0x0f,	0x2f,0x9a,0x9a,0xb5
1533.byte	0x0e,0x07,0x07,0x09,	0x24,0x12,0x12,0x36
1534.byte	0x1b,0x80,0x80,0x9b,	0xdf,0xe2,0xe2,0x3d
1535.byte	0xcd,0xeb,0xeb,0x26,	0x4e,0x27,0x27,0x69
1536.byte	0x7f,0xb2,0xb2,0xcd,	0xea,0x75,0x75,0x9f
1537.byte	0x12,0x09,0x09,0x1b,	0x1d,0x83,0x83,0x9e
1538.byte	0x58,0x2c,0x2c,0x74,	0x34,0x1a,0x1a,0x2e
1539.byte	0x36,0x1b,0x1b,0x2d,	0xdc,0x6e,0x6e,0xb2
1540.byte	0xb4,0x5a,0x5a,0xee,	0x5b,0xa0,0xa0,0xfb
1541.byte	0xa4,0x52,0x52,0xf6,	0x76,0x3b,0x3b,0x4d
1542.byte	0xb7,0xd6,0xd6,0x61,	0x7d,0xb3,0xb3,0xce
1543.byte	0x52,0x29,0x29,0x7b,	0xdd,0xe3,0xe3,0x3e
1544.byte	0x5e,0x2f,0x2f,0x71,	0x13,0x84,0x84,0x97
1545.byte	0xa6,0x53,0x53,0xf5,	0xb9,0xd1,0xd1,0x68
1546.byte	0x00,0x00,0x00,0x00,	0xc1,0xed,0xed,0x2c
1547.byte	0x40,0x20,0x20,0x60,	0xe3,0xfc,0xfc,0x1f
1548.byte	0x79,0xb1,0xb1,0xc8,	0xb6,0x5b,0x5b,0xed
1549.byte	0xd4,0x6a,0x6a,0xbe,	0x8d,0xcb,0xcb,0x46
1550.byte	0x67,0xbe,0xbe,0xd9,	0x72,0x39,0x39,0x4b
1551.byte	0x94,0x4a,0x4a,0xde,	0x98,0x4c,0x4c,0xd4
1552.byte	0xb0,0x58,0x58,0xe8,	0x85,0xcf,0xcf,0x4a
1553.byte	0xbb,0xd0,0xd0,0x6b,	0xc5,0xef,0xef,0x2a
1554.byte	0x4f,0xaa,0xaa,0xe5,	0xed,0xfb,0xfb,0x16
1555.byte	0x86,0x43,0x43,0xc5,	0x9a,0x4d,0x4d,0xd7
1556.byte	0x66,0x33,0x33,0x55,	0x11,0x85,0x85,0x94
1557.byte	0x8a,0x45,0x45,0xcf,	0xe9,0xf9,0xf9,0x10
1558.byte	0x04,0x02,0x02,0x06,	0xfe,0x7f,0x7f,0x81
1559.byte	0xa0,0x50,0x50,0xf0,	0x78,0x3c,0x3c,0x44
1560.byte	0x25,0x9f,0x9f,0xba,	0x4b,0xa8,0xa8,0xe3
1561.byte	0xa2,0x51,0x51,0xf3,	0x5d,0xa3,0xa3,0xfe
1562.byte	0x80,0x40,0x40,0xc0,	0x05,0x8f,0x8f,0x8a
1563.byte	0x3f,0x92,0x92,0xad,	0x21,0x9d,0x9d,0xbc
1564.byte	0x70,0x38,0x38,0x48,	0xf1,0xf5,0xf5,0x04
1565.byte	0x63,0xbc,0xbc,0xdf,	0x77,0xb6,0xb6,0xc1
1566.byte	0xaf,0xda,0xda,0x75,	0x42,0x21,0x21,0x63
1567.byte	0x20,0x10,0x10,0x30,	0xe5,0xff,0xff,0x1a
1568.byte	0xfd,0xf3,0xf3,0x0e,	0xbf,0xd2,0xd2,0x6d
1569.byte	0x81,0xcd,0xcd,0x4c,	0x18,0x0c,0x0c,0x14
1570.byte	0x26,0x13,0x13,0x35,	0xc3,0xec,0xec,0x2f
1571.byte	0xbe,0x5f,0x5f,0xe1,	0x35,0x97,0x97,0xa2
1572.byte	0x88,0x44,0x44,0xcc,	0x2e,0x17,0x17,0x39
1573.byte	0x93,0xc4,0xc4,0x57,	0x55,0xa7,0xa7,0xf2
1574.byte	0xfc,0x7e,0x7e,0x82,	0x7a,0x3d,0x3d,0x47
1575.byte	0xc8,0x64,0x64,0xac,	0xba,0x5d,0x5d,0xe7
1576.byte	0x32,0x19,0x19,0x2b,	0xe6,0x73,0x73,0x95
1577.byte	0xc0,0x60,0x60,0xa0,	0x19,0x81,0x81,0x98
1578.byte	0x9e,0x4f,0x4f,0xd1,	0xa3,0xdc,0xdc,0x7f
1579.byte	0x44,0x22,0x22,0x66,	0x54,0x2a,0x2a,0x7e
1580.byte	0x3b,0x90,0x90,0xab,	0x0b,0x88,0x88,0x83
1581.byte	0x8c,0x46,0x46,0xca,	0xc7,0xee,0xee,0x29
1582.byte	0x6b,0xb8,0xb8,0xd3,	0x28,0x14,0x14,0x3c
1583.byte	0xa7,0xde,0xde,0x79,	0xbc,0x5e,0x5e,0xe2
1584.byte	0x16,0x0b,0x0b,0x1d,	0xad,0xdb,0xdb,0x76
1585.byte	0xdb,0xe0,0xe0,0x3b,	0x64,0x32,0x32,0x56
1586.byte	0x74,0x3a,0x3a,0x4e,	0x14,0x0a,0x0a,0x1e
1587.byte	0x92,0x49,0x49,0xdb,	0x0c,0x06,0x06,0x0a
1588.byte	0x48,0x24,0x24,0x6c,	0xb8,0x5c,0x5c,0xe4
1589.byte	0x9f,0xc2,0xc2,0x5d,	0xbd,0xd3,0xd3,0x6e
1590.byte	0x43,0xac,0xac,0xef,	0xc4,0x62,0x62,0xa6
1591.byte	0x39,0x91,0x91,0xa8,	0x31,0x95,0x95,0xa4
1592.byte	0xd3,0xe4,0xe4,0x37,	0xf2,0x79,0x79,0x8b
1593.byte	0xd5,0xe7,0xe7,0x32,	0x8b,0xc8,0xc8,0x43
1594.byte	0x6e,0x37,0x37,0x59,	0xda,0x6d,0x6d,0xb7
1595.byte	0x01,0x8d,0x8d,0x8c,	0xb1,0xd5,0xd5,0x64
1596.byte	0x9c,0x4e,0x4e,0xd2,	0x49,0xa9,0xa9,0xe0
1597.byte	0xd8,0x6c,0x6c,0xb4,	0xac,0x56,0x56,0xfa
1598.byte	0xf3,0xf4,0xf4,0x07,	0xcf,0xea,0xea,0x25
1599.byte	0xca,0x65,0x65,0xaf,	0xf4,0x7a,0x7a,0x8e
1600.byte	0x47,0xae,0xae,0xe9,	0x10,0x08,0x08,0x18
1601.byte	0x6f,0xba,0xba,0xd5,	0xf0,0x78,0x78,0x88
1602.byte	0x4a,0x25,0x25,0x6f,	0x5c,0x2e,0x2e,0x72
1603.byte	0x38,0x1c,0x1c,0x24,	0x57,0xa6,0xa6,0xf1
1604.byte	0x73,0xb4,0xb4,0xc7,	0x97,0xc6,0xc6,0x51
1605.byte	0xcb,0xe8,0xe8,0x23,	0xa1,0xdd,0xdd,0x7c
1606.byte	0xe8,0x74,0x74,0x9c,	0x3e,0x1f,0x1f,0x21
1607.byte	0x96,0x4b,0x4b,0xdd,	0x61,0xbd,0xbd,0xdc
1608.byte	0x0d,0x8b,0x8b,0x86,	0x0f,0x8a,0x8a,0x85
1609.byte	0xe0,0x70,0x70,0x90,	0x7c,0x3e,0x3e,0x42
1610.byte	0x71,0xb5,0xb5,0xc4,	0xcc,0x66,0x66,0xaa
1611.byte	0x90,0x48,0x48,0xd8,	0x06,0x03,0x03,0x05
1612.byte	0xf7,0xf6,0xf6,0x01,	0x1c,0x0e,0x0e,0x12
1613.byte	0xc2,0x61,0x61,0xa3,	0x6a,0x35,0x35,0x5f
1614.byte	0xae,0x57,0x57,0xf9,	0x69,0xb9,0xb9,0xd0
1615.byte	0x17,0x86,0x86,0x91,	0x99,0xc1,0xc1,0x58
1616.byte	0x3a,0x1d,0x1d,0x27,	0x27,0x9e,0x9e,0xb9
1617.byte	0xd9,0xe1,0xe1,0x38,	0xeb,0xf8,0xf8,0x13
1618.byte	0x2b,0x98,0x98,0xb3,	0x22,0x11,0x11,0x33
1619.byte	0xd2,0x69,0x69,0xbb,	0xa9,0xd9,0xd9,0x70
1620.byte	0x07,0x8e,0x8e,0x89,	0x33,0x94,0x94,0xa7
1621.byte	0x2d,0x9b,0x9b,0xb6,	0x3c,0x1e,0x1e,0x22
1622.byte	0x15,0x87,0x87,0x92,	0xc9,0xe9,0xe9,0x20
1623.byte	0x87,0xce,0xce,0x49,	0xaa,0x55,0x55,0xff
1624.byte	0x50,0x28,0x28,0x78,	0xa5,0xdf,0xdf,0x7a
1625.byte	0x03,0x8c,0x8c,0x8f,	0x59,0xa1,0xa1,0xf8
1626.byte	0x09,0x89,0x89,0x80,	0x1a,0x0d,0x0d,0x17
1627.byte	0x65,0xbf,0xbf,0xda,	0xd7,0xe6,0xe6,0x31
1628.byte	0x84,0x42,0x42,0xc6,	0xd0,0x68,0x68,0xb8
1629.byte	0x82,0x41,0x41,0xc3,	0x29,0x99,0x99,0xb0
1630.byte	0x5a,0x2d,0x2d,0x77,	0x1e,0x0f,0x0f,0x11
1631.byte	0x7b,0xb0,0xb0,0xcb,	0xa8,0x54,0x54,0xfc
1632.byte	0x6d,0xbb,0xbb,0xd6,	0x2c,0x16,0x16,0x3a
1633
1634AES_Td:
1635.byte	0x51,0xf4,0xa7,0x50,	0x7e,0x41,0x65,0x53	# Td0
1636.byte	0x1a,0x17,0xa4,0xc3,	0x3a,0x27,0x5e,0x96
1637.byte	0x3b,0xab,0x6b,0xcb,	0x1f,0x9d,0x45,0xf1
1638.byte	0xac,0xfa,0x58,0xab,	0x4b,0xe3,0x03,0x93
1639.byte	0x20,0x30,0xfa,0x55,	0xad,0x76,0x6d,0xf6
1640.byte	0x88,0xcc,0x76,0x91,	0xf5,0x02,0x4c,0x25
1641.byte	0x4f,0xe5,0xd7,0xfc,	0xc5,0x2a,0xcb,0xd7
1642.byte	0x26,0x35,0x44,0x80,	0xb5,0x62,0xa3,0x8f
1643.byte	0xde,0xb1,0x5a,0x49,	0x25,0xba,0x1b,0x67
1644.byte	0x45,0xea,0x0e,0x98,	0x5d,0xfe,0xc0,0xe1
1645.byte	0xc3,0x2f,0x75,0x02,	0x81,0x4c,0xf0,0x12
1646.byte	0x8d,0x46,0x97,0xa3,	0x6b,0xd3,0xf9,0xc6
1647.byte	0x03,0x8f,0x5f,0xe7,	0x15,0x92,0x9c,0x95
1648.byte	0xbf,0x6d,0x7a,0xeb,	0x95,0x52,0x59,0xda
1649.byte	0xd4,0xbe,0x83,0x2d,	0x58,0x74,0x21,0xd3
1650.byte	0x49,0xe0,0x69,0x29,	0x8e,0xc9,0xc8,0x44
1651.byte	0x75,0xc2,0x89,0x6a,	0xf4,0x8e,0x79,0x78
1652.byte	0x99,0x58,0x3e,0x6b,	0x27,0xb9,0x71,0xdd
1653.byte	0xbe,0xe1,0x4f,0xb6,	0xf0,0x88,0xad,0x17
1654.byte	0xc9,0x20,0xac,0x66,	0x7d,0xce,0x3a,0xb4
1655.byte	0x63,0xdf,0x4a,0x18,	0xe5,0x1a,0x31,0x82
1656.byte	0x97,0x51,0x33,0x60,	0x62,0x53,0x7f,0x45
1657.byte	0xb1,0x64,0x77,0xe0,	0xbb,0x6b,0xae,0x84
1658.byte	0xfe,0x81,0xa0,0x1c,	0xf9,0x08,0x2b,0x94
1659.byte	0x70,0x48,0x68,0x58,	0x8f,0x45,0xfd,0x19
1660.byte	0x94,0xde,0x6c,0x87,	0x52,0x7b,0xf8,0xb7
1661.byte	0xab,0x73,0xd3,0x23,	0x72,0x4b,0x02,0xe2
1662.byte	0xe3,0x1f,0x8f,0x57,	0x66,0x55,0xab,0x2a
1663.byte	0xb2,0xeb,0x28,0x07,	0x2f,0xb5,0xc2,0x03
1664.byte	0x86,0xc5,0x7b,0x9a,	0xd3,0x37,0x08,0xa5
1665.byte	0x30,0x28,0x87,0xf2,	0x23,0xbf,0xa5,0xb2
1666.byte	0x02,0x03,0x6a,0xba,	0xed,0x16,0x82,0x5c
1667.byte	0x8a,0xcf,0x1c,0x2b,	0xa7,0x79,0xb4,0x92
1668.byte	0xf3,0x07,0xf2,0xf0,	0x4e,0x69,0xe2,0xa1
1669.byte	0x65,0xda,0xf4,0xcd,	0x06,0x05,0xbe,0xd5
1670.byte	0xd1,0x34,0x62,0x1f,	0xc4,0xa6,0xfe,0x8a
1671.byte	0x34,0x2e,0x53,0x9d,	0xa2,0xf3,0x55,0xa0
1672.byte	0x05,0x8a,0xe1,0x32,	0xa4,0xf6,0xeb,0x75
1673.byte	0x0b,0x83,0xec,0x39,	0x40,0x60,0xef,0xaa
1674.byte	0x5e,0x71,0x9f,0x06,	0xbd,0x6e,0x10,0x51
1675.byte	0x3e,0x21,0x8a,0xf9,	0x96,0xdd,0x06,0x3d
1676.byte	0xdd,0x3e,0x05,0xae,	0x4d,0xe6,0xbd,0x46
1677.byte	0x91,0x54,0x8d,0xb5,	0x71,0xc4,0x5d,0x05
1678.byte	0x04,0x06,0xd4,0x6f,	0x60,0x50,0x15,0xff
1679.byte	0x19,0x98,0xfb,0x24,	0xd6,0xbd,0xe9,0x97
1680.byte	0x89,0x40,0x43,0xcc,	0x67,0xd9,0x9e,0x77
1681.byte	0xb0,0xe8,0x42,0xbd,	0x07,0x89,0x8b,0x88
1682.byte	0xe7,0x19,0x5b,0x38,	0x79,0xc8,0xee,0xdb
1683.byte	0xa1,0x7c,0x0a,0x47,	0x7c,0x42,0x0f,0xe9
1684.byte	0xf8,0x84,0x1e,0xc9,	0x00,0x00,0x00,0x00
1685.byte	0x09,0x80,0x86,0x83,	0x32,0x2b,0xed,0x48
1686.byte	0x1e,0x11,0x70,0xac,	0x6c,0x5a,0x72,0x4e
1687.byte	0xfd,0x0e,0xff,0xfb,	0x0f,0x85,0x38,0x56
1688.byte	0x3d,0xae,0xd5,0x1e,	0x36,0x2d,0x39,0x27
1689.byte	0x0a,0x0f,0xd9,0x64,	0x68,0x5c,0xa6,0x21
1690.byte	0x9b,0x5b,0x54,0xd1,	0x24,0x36,0x2e,0x3a
1691.byte	0x0c,0x0a,0x67,0xb1,	0x93,0x57,0xe7,0x0f
1692.byte	0xb4,0xee,0x96,0xd2,	0x1b,0x9b,0x91,0x9e
1693.byte	0x80,0xc0,0xc5,0x4f,	0x61,0xdc,0x20,0xa2
1694.byte	0x5a,0x77,0x4b,0x69,	0x1c,0x12,0x1a,0x16
1695.byte	0xe2,0x93,0xba,0x0a,	0xc0,0xa0,0x2a,0xe5
1696.byte	0x3c,0x22,0xe0,0x43,	0x12,0x1b,0x17,0x1d
1697.byte	0x0e,0x09,0x0d,0x0b,	0xf2,0x8b,0xc7,0xad
1698.byte	0x2d,0xb6,0xa8,0xb9,	0x14,0x1e,0xa9,0xc8
1699.byte	0x57,0xf1,0x19,0x85,	0xaf,0x75,0x07,0x4c
1700.byte	0xee,0x99,0xdd,0xbb,	0xa3,0x7f,0x60,0xfd
1701.byte	0xf7,0x01,0x26,0x9f,	0x5c,0x72,0xf5,0xbc
1702.byte	0x44,0x66,0x3b,0xc5,	0x5b,0xfb,0x7e,0x34
1703.byte	0x8b,0x43,0x29,0x76,	0xcb,0x23,0xc6,0xdc
1704.byte	0xb6,0xed,0xfc,0x68,	0xb8,0xe4,0xf1,0x63
1705.byte	0xd7,0x31,0xdc,0xca,	0x42,0x63,0x85,0x10
1706.byte	0x13,0x97,0x22,0x40,	0x84,0xc6,0x11,0x20
1707.byte	0x85,0x4a,0x24,0x7d,	0xd2,0xbb,0x3d,0xf8
1708.byte	0xae,0xf9,0x32,0x11,	0xc7,0x29,0xa1,0x6d
1709.byte	0x1d,0x9e,0x2f,0x4b,	0xdc,0xb2,0x30,0xf3
1710.byte	0x0d,0x86,0x52,0xec,	0x77,0xc1,0xe3,0xd0
1711.byte	0x2b,0xb3,0x16,0x6c,	0xa9,0x70,0xb9,0x99
1712.byte	0x11,0x94,0x48,0xfa,	0x47,0xe9,0x64,0x22
1713.byte	0xa8,0xfc,0x8c,0xc4,	0xa0,0xf0,0x3f,0x1a
1714.byte	0x56,0x7d,0x2c,0xd8,	0x22,0x33,0x90,0xef
1715.byte	0x87,0x49,0x4e,0xc7,	0xd9,0x38,0xd1,0xc1
1716.byte	0x8c,0xca,0xa2,0xfe,	0x98,0xd4,0x0b,0x36
1717.byte	0xa6,0xf5,0x81,0xcf,	0xa5,0x7a,0xde,0x28
1718.byte	0xda,0xb7,0x8e,0x26,	0x3f,0xad,0xbf,0xa4
1719.byte	0x2c,0x3a,0x9d,0xe4,	0x50,0x78,0x92,0x0d
1720.byte	0x6a,0x5f,0xcc,0x9b,	0x54,0x7e,0x46,0x62
1721.byte	0xf6,0x8d,0x13,0xc2,	0x90,0xd8,0xb8,0xe8
1722.byte	0x2e,0x39,0xf7,0x5e,	0x82,0xc3,0xaf,0xf5
1723.byte	0x9f,0x5d,0x80,0xbe,	0x69,0xd0,0x93,0x7c
1724.byte	0x6f,0xd5,0x2d,0xa9,	0xcf,0x25,0x12,0xb3
1725.byte	0xc8,0xac,0x99,0x3b,	0x10,0x18,0x7d,0xa7
1726.byte	0xe8,0x9c,0x63,0x6e,	0xdb,0x3b,0xbb,0x7b
1727.byte	0xcd,0x26,0x78,0x09,	0x6e,0x59,0x18,0xf4
1728.byte	0xec,0x9a,0xb7,0x01,	0x83,0x4f,0x9a,0xa8
1729.byte	0xe6,0x95,0x6e,0x65,	0xaa,0xff,0xe6,0x7e
1730.byte	0x21,0xbc,0xcf,0x08,	0xef,0x15,0xe8,0xe6
1731.byte	0xba,0xe7,0x9b,0xd9,	0x4a,0x6f,0x36,0xce
1732.byte	0xea,0x9f,0x09,0xd4,	0x29,0xb0,0x7c,0xd6
1733.byte	0x31,0xa4,0xb2,0xaf,	0x2a,0x3f,0x23,0x31
1734.byte	0xc6,0xa5,0x94,0x30,	0x35,0xa2,0x66,0xc0
1735.byte	0x74,0x4e,0xbc,0x37,	0xfc,0x82,0xca,0xa6
1736.byte	0xe0,0x90,0xd0,0xb0,	0x33,0xa7,0xd8,0x15
1737.byte	0xf1,0x04,0x98,0x4a,	0x41,0xec,0xda,0xf7
1738.byte	0x7f,0xcd,0x50,0x0e,	0x17,0x91,0xf6,0x2f
1739.byte	0x76,0x4d,0xd6,0x8d,	0x43,0xef,0xb0,0x4d
1740.byte	0xcc,0xaa,0x4d,0x54,	0xe4,0x96,0x04,0xdf
1741.byte	0x9e,0xd1,0xb5,0xe3,	0x4c,0x6a,0x88,0x1b
1742.byte	0xc1,0x2c,0x1f,0xb8,	0x46,0x65,0x51,0x7f
1743.byte	0x9d,0x5e,0xea,0x04,	0x01,0x8c,0x35,0x5d
1744.byte	0xfa,0x87,0x74,0x73,	0xfb,0x0b,0x41,0x2e
1745.byte	0xb3,0x67,0x1d,0x5a,	0x92,0xdb,0xd2,0x52
1746.byte	0xe9,0x10,0x56,0x33,	0x6d,0xd6,0x47,0x13
1747.byte	0x9a,0xd7,0x61,0x8c,	0x37,0xa1,0x0c,0x7a
1748.byte	0x59,0xf8,0x14,0x8e,	0xeb,0x13,0x3c,0x89
1749.byte	0xce,0xa9,0x27,0xee,	0xb7,0x61,0xc9,0x35
1750.byte	0xe1,0x1c,0xe5,0xed,	0x7a,0x47,0xb1,0x3c
1751.byte	0x9c,0xd2,0xdf,0x59,	0x55,0xf2,0x73,0x3f
1752.byte	0x18,0x14,0xce,0x79,	0x73,0xc7,0x37,0xbf
1753.byte	0x53,0xf7,0xcd,0xea,	0x5f,0xfd,0xaa,0x5b
1754.byte	0xdf,0x3d,0x6f,0x14,	0x78,0x44,0xdb,0x86
1755.byte	0xca,0xaf,0xf3,0x81,	0xb9,0x68,0xc4,0x3e
1756.byte	0x38,0x24,0x34,0x2c,	0xc2,0xa3,0x40,0x5f
1757.byte	0x16,0x1d,0xc3,0x72,	0xbc,0xe2,0x25,0x0c
1758.byte	0x28,0x3c,0x49,0x8b,	0xff,0x0d,0x95,0x41
1759.byte	0x39,0xa8,0x01,0x71,	0x08,0x0c,0xb3,0xde
1760.byte	0xd8,0xb4,0xe4,0x9c,	0x64,0x56,0xc1,0x90
1761.byte	0x7b,0xcb,0x84,0x61,	0xd5,0x32,0xb6,0x70
1762.byte	0x48,0x6c,0x5c,0x74,	0xd0,0xb8,0x57,0x42
1763
1764.byte	0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38	# Td4
1765.byte	0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb
1766.byte	0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87
1767.byte	0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb
1768.byte	0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d
1769.byte	0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e
1770.byte	0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2
1771.byte	0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25
1772.byte	0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16
1773.byte	0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92
1774.byte	0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda
1775.byte	0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84
1776.byte	0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a
1777.byte	0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06
1778.byte	0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02
1779.byte	0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b
1780.byte	0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea
1781.byte	0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73
1782.byte	0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85
1783.byte	0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e
1784.byte	0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89
1785.byte	0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b
1786.byte	0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20
1787.byte	0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4
1788.byte	0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31
1789.byte	0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f
1790.byte	0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d
1791.byte	0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef
1792.byte	0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0
1793.byte	0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61
1794.byte	0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26
1795.byte	0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d
1796
1797AES_Te4:
1798.byte	0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5	# Te4
1799.byte	0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76
1800.byte	0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0
1801.byte	0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0
1802.byte	0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc
1803.byte	0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15
1804.byte	0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a
1805.byte	0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75
1806.byte	0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0
1807.byte	0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84
1808.byte	0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b
1809.byte	0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf
1810.byte	0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85
1811.byte	0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8
1812.byte	0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5
1813.byte	0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2
1814.byte	0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17
1815.byte	0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73
1816.byte	0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88
1817.byte	0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb
1818.byte	0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c
1819.byte	0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79
1820.byte	0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9
1821.byte	0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08
1822.byte	0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6
1823.byte	0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a
1824.byte	0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e
1825.byte	0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e
1826.byte	0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94
1827.byte	0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf
1828.byte	0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68
1829.byte	0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16
1830
1831.byte	0x01,0x00,0x00,0x00,	0x02,0x00,0x00,0x00	# rcon
1832.byte	0x04,0x00,0x00,0x00,	0x08,0x00,0x00,0x00
1833.byte	0x10,0x00,0x00,0x00,	0x20,0x00,0x00,0x00
1834.byte	0x40,0x00,0x00,0x00,	0x80,0x00,0x00,0x00
1835.byte	0x1B,0x00,0x00,0x00,	0x36,0x00,0x00,0x00
1836