1.text
2#ifdef OPENSSL_FIPSCANISTER
3# include <openssl/fipssyms.h>
4#endif
5
6#if !defined(__vxworks) || defined(__pic__)
7.option	pic2
8#endif
9.set	noat
10.align	5
11.ent	_mips_AES_encrypt
12_mips_AES_encrypt:
13	.frame	$29,0,$31
14	.set	reorder
15	lw	$12,0($6)
16	lw	$13,4($6)
17	lw	$14,8($6)
18	lw	$15,12($6)
19	lw	$30,240($6)
20	add $3,$6,16
21
22	xor	$8,$12
23	xor	$9,$13
24	xor	$10,$14
25	xor	$11,$15
26
27	sub	$30,1
28	srl	$1,$9,6
29.Loop_enc:
30	srl	$2,$10,6
31	srl	$24,$11,6
32	srl	$25,$8,6
33	and	$1,0x3fc
34	and	$2,0x3fc
35	and	$24,0x3fc
36	and	$25,0x3fc
37	add $1,$7
38	add $2,$7
39	add $24,$7
40	add $25,$7
41	lwl	$12,2($1)		# Te1[s1>>16]
42	lwl	$13,2($2)		# Te1[s2>>16]
43	lwl	$14,2($24)		# Te1[s3>>16]
44	lwl	$15,2($25)		# Te1[s0>>16]
45	lwr	$12,3($1)		# Te1[s1>>16]
46	lwr	$13,3($2)		# Te1[s2>>16]
47	lwr	$14,3($24)		# Te1[s3>>16]
48	lwr	$15,3($25)		# Te1[s0>>16]
49
50	srl	$1,$10,14
51	srl	$2,$11,14
52	srl	$24,$8,14
53	srl	$25,$9,14
54	and	$1,0x3fc
55	and	$2,0x3fc
56	and	$24,0x3fc
57	and	$25,0x3fc
58	add $1,$7
59	add $2,$7
60	add $24,$7
61	add $25,$7
62	lwl	$16,1($1)		# Te2[s2>>8]
63	lwl	$17,1($2)		# Te2[s3>>8]
64	lwl	$18,1($24)		# Te2[s0>>8]
65	lwl	$19,1($25)		# Te2[s1>>8]
66	lwr	$16,2($1)		# Te2[s2>>8]
67	lwr	$17,2($2)		# Te2[s3>>8]
68	lwr	$18,2($24)		# Te2[s0>>8]
69	lwr	$19,2($25)		# Te2[s1>>8]
70
71	srl	$1,$11,22
72	srl	$2,$8,22
73	srl	$24,$9,22
74	srl	$25,$10,22
75	and	$1,0x3fc
76	and	$2,0x3fc
77	and	$24,0x3fc
78	and	$25,0x3fc
79	add $1,$7
80	add $2,$7
81	add $24,$7
82	add $25,$7
83	lwl	$20,0($1)		# Te3[s3]
84	lwl	$21,0($2)		# Te3[s0]
85	lwl	$22,0($24)		# Te3[s1]
86	lwl	$23,0($25)		# Te3[s2]
87	lwr	$20,1($1)		# Te3[s3]
88	lwr	$21,1($2)		# Te3[s0]
89	lwr	$22,1($24)		# Te3[s1]
90	lwr	$23,1($25)		# Te3[s2]
91
92	sll	$1,$8,2
93	sll	$2,$9,2
94	sll	$24,$10,2
95	sll	$25,$11,2
96	and	$1,0x3fc
97	and	$2,0x3fc
98	and	$24,0x3fc
99	and	$25,0x3fc
100	add $1,$7
101	add $2,$7
102	add $24,$7
103	add $25,$7
104	xor	$12,$16
105	xor	$13,$17
106	xor	$14,$18
107	xor	$15,$19
108	lw	$16,0($1)		# Te0[s0>>24]
109	lw	$17,0($2)		# Te0[s1>>24]
110	lw	$18,0($24)		# Te0[s2>>24]
111	lw	$19,0($25)		# Te0[s3>>24]
112
113	lw	$8,0($3)
114	lw	$9,4($3)
115	lw	$10,8($3)
116	lw	$11,12($3)
117
118	xor	$12,$20
119	xor	$13,$21
120	xor	$14,$22
121	xor	$15,$23
122
123	xor	$12,$16
124	xor	$13,$17
125	xor	$14,$18
126	xor	$15,$19
127
128	sub	$30,1
129	add $3,16
130	xor	$8,$12
131	xor	$9,$13
132	xor	$10,$14
133	xor	$11,$15
134	.set	noreorder
135	bnez	$30,.Loop_enc
136	srl	$1,$9,6
137
138	.set	reorder
139	srl	$2,$10,6
140	srl	$24,$11,6
141	srl	$25,$8,6
142	and	$1,0x3fc
143	and	$2,0x3fc
144	and	$24,0x3fc
145	and	$25,0x3fc
146	add $1,$7
147	add $2,$7
148	add $24,$7
149	add $25,$7
150	lbu	$12,2($1)		# Te4[s1>>16]
151	lbu	$13,2($2)		# Te4[s2>>16]
152	lbu	$14,2($24)		# Te4[s3>>16]
153	lbu	$15,2($25)		# Te4[s0>>16]
154
155	srl	$1,$10,14
156	srl	$2,$11,14
157	srl	$24,$8,14
158	srl	$25,$9,14
159	and	$1,0x3fc
160	and	$2,0x3fc
161	and	$24,0x3fc
162	and	$25,0x3fc
163	add $1,$7
164	add $2,$7
165	add $24,$7
166	add $25,$7
167	lbu	$16,2($1)		# Te4[s2>>8]
168	lbu	$17,2($2)		# Te4[s3>>8]
169	lbu	$18,2($24)		# Te4[s0>>8]
170	lbu	$19,2($25)		# Te4[s1>>8]
171
172	sll	$1,$8,2
173	sll	$2,$9,2
174	sll	$24,$10,2
175	sll	$25,$11,2
176	and	$1,0x3fc
177	and	$2,0x3fc
178	and	$24,0x3fc
179	and	$25,0x3fc
180	add $1,$7
181	add $2,$7
182	add $24,$7
183	add $25,$7
184	lbu	$20,2($1)		# Te4[s0>>24]
185	lbu	$21,2($2)		# Te4[s1>>24]
186	lbu	$22,2($24)		# Te4[s2>>24]
187	lbu	$23,2($25)		# Te4[s3>>24]
188
189	srl	$1,$11,22
190	srl	$2,$8,22
191	srl	$24,$9,22
192	srl	$25,$10,22
193	and	$1,0x3fc
194	and	$2,0x3fc
195	and	$24,0x3fc
196	and	$25,0x3fc
197
198	sll	$12,$12,8
199	sll	$13,$13,8
200	sll	$14,$14,8
201	sll	$15,$15,8
202
203	sll	$16,$16,16
204	sll	$17,$17,16
205	sll	$18,$18,16
206	sll	$19,$19,16
207
208	xor	$12,$16
209	xor	$13,$17
210	xor	$14,$18
211	xor	$15,$19
212
213	add $1,$7
214	add $2,$7
215	add $24,$7
216	add $25,$7
217	lbu	$16,2($1)		# Te4[s3]
218	lbu	$17,2($2)		# Te4[s0]
219	lbu	$18,2($24)		# Te4[s1]
220	lbu	$19,2($25)		# Te4[s2]
221
222	#sll	$20,$20,0
223	#sll	$21,$21,0
224	#sll	$22,$22,0
225	#sll	$23,$23,0
226
227	lw	$8,0($3)
228	lw	$9,4($3)
229	lw	$10,8($3)
230	lw	$11,12($3)
231
232	xor	$12,$20
233	xor	$13,$21
234	xor	$14,$22
235	xor	$15,$23
236
237	sll	$16,$16,24
238	sll	$17,$17,24
239	sll	$18,$18,24
240	sll	$19,$19,24
241
242	xor	$12,$16
243	xor	$13,$17
244	xor	$14,$18
245	xor	$15,$19
246
247	xor	$8,$12
248	xor	$9,$13
249	xor	$10,$14
250	xor	$11,$15
251
252	jr	$31
253.end	_mips_AES_encrypt
254
255.align	5
256.globl	AES_encrypt
257.ent	AES_encrypt
258AES_encrypt:
259	.frame	$29,64,$31
260	.mask	3237937152,-4
261	.set	noreorder
262	.cpload	$25
263	sub $29,64
264	sw	$31,64-1*4($29)
265	sw	$30,64-2*4($29)
266	sw	$23,64-3*4($29)
267	sw	$22,64-4*4($29)
268	sw	$21,64-5*4($29)
269	sw	$20,64-6*4($29)
270	sw	$19,64-7*4($29)
271	sw	$18,64-8*4($29)
272	sw	$17,64-9*4($29)
273	sw	$16,64-10*4($29)
274	.set	reorder
275	la	$7,AES_Te		# PIC-ified 'load address'
276
277	lwl	$8,0+3($4)
278	lwl	$9,4+3($4)
279	lwl	$10,8+3($4)
280	lwl	$11,12+3($4)
281	lwr	$8,0+0($4)
282	lwr	$9,4+0($4)
283	lwr	$10,8+0($4)
284	lwr	$11,12+0($4)
285
286	bal	_mips_AES_encrypt
287
288	swr	$8,0+0($5)
289	swr	$9,4+0($5)
290	swr	$10,8+0($5)
291	swr	$11,12+0($5)
292	swl	$8,0+3($5)
293	swl	$9,4+3($5)
294	swl	$10,8+3($5)
295	swl	$11,12+3($5)
296
297	.set	noreorder
298	lw	$31,64-1*4($29)
299	lw	$30,64-2*4($29)
300	lw	$23,64-3*4($29)
301	lw	$22,64-4*4($29)
302	lw	$21,64-5*4($29)
303	lw	$20,64-6*4($29)
304	lw	$19,64-7*4($29)
305	lw	$18,64-8*4($29)
306	lw	$17,64-9*4($29)
307	lw	$16,64-10*4($29)
308	jr	$31
309	add $29,64
310.end	AES_encrypt
311.align	5
312.ent	_mips_AES_decrypt
313_mips_AES_decrypt:
314	.frame	$29,0,$31
315	.set	reorder
316	lw	$12,0($6)
317	lw	$13,4($6)
318	lw	$14,8($6)
319	lw	$15,12($6)
320	lw	$30,240($6)
321	add $3,$6,16
322
323	xor	$8,$12
324	xor	$9,$13
325	xor	$10,$14
326	xor	$11,$15
327
328	sub	$30,1
329	srl	$1,$11,6
330.Loop_dec:
331	srl	$2,$8,6
332	srl	$24,$9,6
333	srl	$25,$10,6
334	and	$1,0x3fc
335	and	$2,0x3fc
336	and	$24,0x3fc
337	and	$25,0x3fc
338	add $1,$7
339	add $2,$7
340	add $24,$7
341	add $25,$7
342	lwl	$12,2($1)		# Td1[s3>>16]
343	lwl	$13,2($2)		# Td1[s0>>16]
344	lwl	$14,2($24)		# Td1[s1>>16]
345	lwl	$15,2($25)		# Td1[s2>>16]
346	lwr	$12,3($1)		# Td1[s3>>16]
347	lwr	$13,3($2)		# Td1[s0>>16]
348	lwr	$14,3($24)		# Td1[s1>>16]
349	lwr	$15,3($25)		# Td1[s2>>16]
350
351	srl	$1,$10,14
352	srl	$2,$11,14
353	srl	$24,$8,14
354	srl	$25,$9,14
355	and	$1,0x3fc
356	and	$2,0x3fc
357	and	$24,0x3fc
358	and	$25,0x3fc
359	add $1,$7
360	add $2,$7
361	add $24,$7
362	add $25,$7
363	lwl	$16,1($1)		# Td2[s2>>8]
364	lwl	$17,1($2)		# Td2[s3>>8]
365	lwl	$18,1($24)		# Td2[s0>>8]
366	lwl	$19,1($25)		# Td2[s1>>8]
367	lwr	$16,2($1)		# Td2[s2>>8]
368	lwr	$17,2($2)		# Td2[s3>>8]
369	lwr	$18,2($24)		# Td2[s0>>8]
370	lwr	$19,2($25)		# Td2[s1>>8]
371
372	srl	$1,$9,22
373	srl	$2,$10,22
374	srl	$24,$11,22
375	srl	$25,$8,22
376	and	$1,0x3fc
377	and	$2,0x3fc
378	and	$24,0x3fc
379	and	$25,0x3fc
380	add $1,$7
381	add $2,$7
382	add $24,$7
383	add $25,$7
384	lwl	$20,0($1)		# Td3[s1]
385	lwl	$21,0($2)		# Td3[s2]
386	lwl	$22,0($24)		# Td3[s3]
387	lwl	$23,0($25)		# Td3[s0]
388	lwr	$20,1($1)		# Td3[s1]
389	lwr	$21,1($2)		# Td3[s2]
390	lwr	$22,1($24)		# Td3[s3]
391	lwr	$23,1($25)		# Td3[s0]
392
393	sll	$1,$8,2
394	sll	$2,$9,2
395	sll	$24,$10,2
396	sll	$25,$11,2
397	and	$1,0x3fc
398	and	$2,0x3fc
399	and	$24,0x3fc
400	and	$25,0x3fc
401	add $1,$7
402	add $2,$7
403	add $24,$7
404	add $25,$7
405
406	xor	$12,$16
407	xor	$13,$17
408	xor	$14,$18
409	xor	$15,$19
410
411
412	lw	$16,0($1)		# Td0[s0>>24]
413	lw	$17,0($2)		# Td0[s1>>24]
414	lw	$18,0($24)		# Td0[s2>>24]
415	lw	$19,0($25)		# Td0[s3>>24]
416
417	lw	$8,0($3)
418	lw	$9,4($3)
419	lw	$10,8($3)
420	lw	$11,12($3)
421
422	xor	$12,$20
423	xor	$13,$21
424	xor	$14,$22
425	xor	$15,$23
426
427	xor	$12,$16
428	xor	$13,$17
429	xor	$14,$18
430	xor	$15,$19
431
432	sub	$30,1
433	add $3,16
434	xor	$8,$12
435	xor	$9,$13
436	xor	$10,$14
437	xor	$11,$15
438	.set	noreorder
439	bnez	$30,.Loop_dec
440	srl	$1,$11,6
441
442	.set	reorder
443	lw	$16,1024($7)		# prefetch Td4
444	lw	$17,1024+32($7)
445	lw	$18,1024+64($7)
446	lw	$19,1024+96($7)
447	lw	$20,1024+128($7)
448	lw	$21,1024+160($7)
449	lw	$22,1024+192($7)
450	lw	$23,1024+224($7)
451
452	srl	$1,$11,8
453	srl	$2,$8,8
454	srl	$24,$9,8
455	srl	$25,$10,8
456	and	$1,0xff
457	and	$2,0xff
458	and	$24,0xff
459	and	$25,0xff
460	add $1,$7
461	add $2,$7
462	add $24,$7
463	add $25,$7
464	lbu	$12,1024($1)		# Td4[s3>>16]
465	lbu	$13,1024($2)		# Td4[s0>>16]
466	lbu	$14,1024($24)		# Td4[s1>>16]
467	lbu	$15,1024($25)		# Td4[s2>>16]
468
469	srl	$1,$10,16
470	srl	$2,$11,16
471	srl	$24,$8,16
472	srl	$25,$9,16
473	and	$1,0xff
474	and	$2,0xff
475	and	$24,0xff
476	and	$25,0xff
477	add $1,$7
478	add $2,$7
479	add $24,$7
480	add $25,$7
481	lbu	$16,1024($1)		# Td4[s2>>8]
482	lbu	$17,1024($2)		# Td4[s3>>8]
483	lbu	$18,1024($24)		# Td4[s0>>8]
484	lbu	$19,1024($25)		# Td4[s1>>8]
485
486	and	$1,$8,0xff
487	and	$2,$9,0xff
488	and	$24,$10,0xff
489	and	$25,$11,0xff
490	add $1,$7
491	add $2,$7
492	add $24,$7
493	add $25,$7
494	lbu	$20,1024($1)		# Td4[s0>>24]
495	lbu	$21,1024($2)		# Td4[s1>>24]
496	lbu	$22,1024($24)		# Td4[s2>>24]
497	lbu	$23,1024($25)		# Td4[s3>>24]
498
499	srl	$1,$9,24
500	srl	$2,$10,24
501	srl	$24,$11,24
502	srl	$25,$8,24
503
504	sll	$12,$12,8
505	sll	$13,$13,8
506	sll	$14,$14,8
507	sll	$15,$15,8
508
509	sll	$16,$16,16
510	sll	$17,$17,16
511	sll	$18,$18,16
512	sll	$19,$19,16
513
514	xor	$12,$16
515	xor	$13,$17
516	xor	$14,$18
517	xor	$15,$19
518
519	add $1,$7
520	add $2,$7
521	add $24,$7
522	add $25,$7
523	lbu	$16,1024($1)		# Td4[s1]
524	lbu	$17,1024($2)		# Td4[s2]
525	lbu	$18,1024($24)		# Td4[s3]
526	lbu	$19,1024($25)		# Td4[s0]
527
528	#sll	$20,$20,0
529	#sll	$21,$21,0
530	#sll	$22,$22,0
531	#sll	$23,$23,0
532
533	lw	$8,0($3)
534	lw	$9,4($3)
535	lw	$10,8($3)
536	lw	$11,12($3)
537
538	sll	$16,$16,24
539	sll	$17,$17,24
540	sll	$18,$18,24
541	sll	$19,$19,24
542
543
544	xor	$12,$20
545	xor	$13,$21
546	xor	$14,$22
547	xor	$15,$23
548
549	xor	$12,$16
550	xor	$13,$17
551	xor	$14,$18
552	xor	$15,$19
553
554	xor	$8,$12
555	xor	$9,$13
556	xor	$10,$14
557	xor	$11,$15
558
559	jr	$31
560.end	_mips_AES_decrypt
561
562.align	5
563.globl	AES_decrypt
564.ent	AES_decrypt
565AES_decrypt:
566	.frame	$29,64,$31
567	.mask	3237937152,-4
568	.set	noreorder
569	.cpload	$25
570	sub $29,64
571	sw	$31,64-1*4($29)
572	sw	$30,64-2*4($29)
573	sw	$23,64-3*4($29)
574	sw	$22,64-4*4($29)
575	sw	$21,64-5*4($29)
576	sw	$20,64-6*4($29)
577	sw	$19,64-7*4($29)
578	sw	$18,64-8*4($29)
579	sw	$17,64-9*4($29)
580	sw	$16,64-10*4($29)
581	.set	reorder
582	la	$7,AES_Td		# PIC-ified 'load address'
583
584	lwl	$8,0+3($4)
585	lwl	$9,4+3($4)
586	lwl	$10,8+3($4)
587	lwl	$11,12+3($4)
588	lwr	$8,0+0($4)
589	lwr	$9,4+0($4)
590	lwr	$10,8+0($4)
591	lwr	$11,12+0($4)
592
593	bal	_mips_AES_decrypt
594
595	swr	$8,0+0($5)
596	swr	$9,4+0($5)
597	swr	$10,8+0($5)
598	swr	$11,12+0($5)
599	swl	$8,0+3($5)
600	swl	$9,4+3($5)
601	swl	$10,8+3($5)
602	swl	$11,12+3($5)
603
604	.set	noreorder
605	lw	$31,64-1*4($29)
606	lw	$30,64-2*4($29)
607	lw	$23,64-3*4($29)
608	lw	$22,64-4*4($29)
609	lw	$21,64-5*4($29)
610	lw	$20,64-6*4($29)
611	lw	$19,64-7*4($29)
612	lw	$18,64-8*4($29)
613	lw	$17,64-9*4($29)
614	lw	$16,64-10*4($29)
615	jr	$31
616	add $29,64
617.end	AES_decrypt
618.align	5
619.ent	_mips_AES_set_encrypt_key
620_mips_AES_set_encrypt_key:
621	.frame	$29,0,$31
622	.set	noreorder
623	beqz	$4,.Lekey_done
624	li	$2,-1
625	beqz	$6,.Lekey_done
626	add $3,$7,1024+256
627
628	.set	reorder
629	lwl	$8,0+3($4)	# load 128 bits
630	lwl	$9,4+3($4)
631	lwl	$10,8+3($4)
632	lwl	$11,12+3($4)
633	li	$1,128
634	lwr	$8,0+0($4)
635	lwr	$9,4+0($4)
636	lwr	$10,8+0($4)
637	lwr	$11,12+0($4)
638	.set	noreorder
639	beq	$5,$1,.L128bits
640	li	$30,10
641
642	.set	reorder
643	lwl	$12,16+3($4)	# load 192 bits
644	lwl	$13,20+3($4)
645	li	$1,192
646	lwr	$12,16+0($4)
647	lwr	$13,20+0($4)
648	.set	noreorder
649	beq	$5,$1,.L192bits
650	li	$30,8
651
652	.set	reorder
653	lwl	$14,24+3($4)	# load 256 bits
654	lwl	$15,28+3($4)
655	li	$1,256
656	lwr	$14,24+0($4)
657	lwr	$15,28+0($4)
658	.set	noreorder
659	beq	$5,$1,.L256bits
660	li	$30,7
661
662	b	.Lekey_done
663	li	$2,-2
664
665.align	4
666.L128bits:
667	.set	reorder
668	srl	$1,$11,16
669	srl	$2,$11,8
670	and	$1,0xff
671	and	$2,0xff
672	and	$24,$11,0xff
673	srl	$25,$11,24
674	add $1,$7
675	add $2,$7
676	add $24,$7
677	add $25,$7
678	lbu	$1,1024($1)
679	lbu	$2,1024($2)
680	lbu	$24,1024($24)
681	lbu	$25,1024($25)
682
683	sw	$8,0($6)
684	sw	$9,4($6)
685	sw	$10,8($6)
686	sw	$11,12($6)
687	sub	$30,1
688	add $6,16
689
690	sll	$1,$1,8
691	#sll	$2,$2,0
692	sll	$24,$24,24
693	sll	$25,$25,16
694
695	xor	$8,$1
696	lw	$1,0($3)
697	xor	$8,$2
698	xor	$8,$24
699	xor	$8,$25
700	xor	$8,$1
701
702	xor	$9,$8
703	xor	$10,$9
704	xor	$11,$10
705
706	.set	noreorder
707	bnez	$30,.L128bits
708	add $3,4
709
710	sw	$8,0($6)
711	sw	$9,4($6)
712	sw	$10,8($6)
713	li	$30,10
714	sw	$11,12($6)
715	li	$2,0
716	sw	$30,80($6)
717	b	.Lekey_done
718	sub $6,10*16
719
720.align	4
721.L192bits:
722	.set	reorder
723	srl	$1,$13,16
724	srl	$2,$13,8
725	and	$1,0xff
726	and	$2,0xff
727	and	$24,$13,0xff
728	srl	$25,$13,24
729	add $1,$7
730	add $2,$7
731	add $24,$7
732	add $25,$7
733	lbu	$1,1024($1)
734	lbu	$2,1024($2)
735	lbu	$24,1024($24)
736	lbu	$25,1024($25)
737
738	sw	$8,0($6)
739	sw	$9,4($6)
740	sw	$10,8($6)
741	sw	$11,12($6)
742	sw	$12,16($6)
743	sw	$13,20($6)
744	sub	$30,1
745	add $6,24
746
747	sll	$1,$1,8
748	#sll	$2,$2,0
749	sll	$24,$24,24
750	sll	$25,$25,16
751
752	xor	$8,$1
753	lw	$1,0($3)
754	xor	$8,$2
755	xor	$8,$24
756	xor	$8,$25
757	xor	$8,$1
758
759	xor	$9,$8
760	xor	$10,$9
761	xor	$11,$10
762	xor	$12,$11
763	xor	$13,$12
764
765	.set	noreorder
766	bnez	$30,.L192bits
767	add $3,4
768
769	sw	$8,0($6)
770	sw	$9,4($6)
771	sw	$10,8($6)
772	li	$30,12
773	sw	$11,12($6)
774	li	$2,0
775	sw	$30,48($6)
776	b	.Lekey_done
777	sub $6,12*16
778
779.align	4
780.L256bits:
781	.set	reorder
782	srl	$1,$15,16
783	srl	$2,$15,8
784	and	$1,0xff
785	and	$2,0xff
786	and	$24,$15,0xff
787	srl	$25,$15,24
788	add $1,$7
789	add $2,$7
790	add $24,$7
791	add $25,$7
792	lbu	$1,1024($1)
793	lbu	$2,1024($2)
794	lbu	$24,1024($24)
795	lbu	$25,1024($25)
796
797	sw	$8,0($6)
798	sw	$9,4($6)
799	sw	$10,8($6)
800	sw	$11,12($6)
801	sw	$12,16($6)
802	sw	$13,20($6)
803	sw	$14,24($6)
804	sw	$15,28($6)
805	sub	$30,1
806
807	sll	$1,$1,8
808	#sll	$2,$2,0
809	sll	$24,$24,24
810	sll	$25,$25,16
811
812	xor	$8,$1
813	lw	$1,0($3)
814	xor	$8,$2
815	xor	$8,$24
816	xor	$8,$25
817	xor	$8,$1
818
819	xor	$9,$8
820	xor	$10,$9
821	xor	$11,$10
822	beqz	$30,.L256bits_done
823
824	srl	$1,$11,24
825	srl	$2,$11,16
826	srl	$24,$11,8
827	and	$25,$11,0xff
828	and	$2,0xff
829	and	$24,0xff
830	add $1,$7
831	add $2,$7
832	add $24,$7
833	add $25,$7
834	lbu	$1,1024($1)
835	lbu	$2,1024($2)
836	lbu	$24,1024($24)
837	lbu	$25,1024($25)
838	sll	$1,24
839	sll	$2,16
840	sll	$24,8
841
842	xor	$12,$1
843	xor	$12,$2
844	xor	$12,$24
845	xor	$12,$25
846
847	xor	$13,$12
848	xor	$14,$13
849	xor	$15,$14
850
851	add $6,32
852	.set	noreorder
853	b	.L256bits
854	add $3,4
855
856.L256bits_done:
857	sw	$8,32($6)
858	sw	$9,36($6)
859	sw	$10,40($6)
860	li	$30,14
861	sw	$11,44($6)
862	li	$2,0
863	sw	$30,48($6)
864	sub $6,12*16
865
866.Lekey_done:
867	jr	$31
868	nop
869.end	_mips_AES_set_encrypt_key
870
871.globl	private_AES_set_encrypt_key
872.ent	private_AES_set_encrypt_key
873private_AES_set_encrypt_key:
874	.frame	$29,32,$31
875	.mask	3221225472,-4
876	.set	noreorder
877	.cpload	$25
878	sub $29,32
879	sw	$31,32-1*4($29)
880	sw	$30,32-2*4($29)
881	.set	reorder
882	la	$7,AES_Te		# PIC-ified 'load address'
883
884	bal	_mips_AES_set_encrypt_key
885
886	.set	noreorder
887	move	$4,$2
888	lw	$31,32-1*4($29)
889	lw	$30,32-2*4($29)
890	jr	$31
891	add $29,32
892.end	private_AES_set_encrypt_key
893.align	5
894.globl	private_AES_set_decrypt_key
895.ent	private_AES_set_decrypt_key
896private_AES_set_decrypt_key:
897	.frame	$29,32,$31
898	.mask	3221225472,-4
899	.set	noreorder
900	.cpload	$25
901	sub $29,32
902	sw	$31,32-1*4($29)
903	sw	$30,32-2*4($29)
904	.set	reorder
905	la	$7,AES_Te		# PIC-ified 'load address'
906
907	bal	_mips_AES_set_encrypt_key
908
909	bltz	$2,.Ldkey_done
910
911	sll	$1,$30,4
912	add $4,$6,0
913	add $5,$6,$1
914.align	4
915.Lswap:
916	lw	$8,0($4)
917	lw	$9,4($4)
918	lw	$10,8($4)
919	lw	$11,12($4)
920	lw	$12,0($5)
921	lw	$13,4($5)
922	lw	$14,8($5)
923	lw	$15,12($5)
924	sw	$8,0($5)
925	sw	$9,4($5)
926	sw	$10,8($5)
927	sw	$11,12($5)
928	add $4,16
929	sub $5,16
930	sw	$12,-16($4)
931	sw	$13,-12($4)
932	sw	$14,-8($4)
933	sw	$15,-4($4)
934	bne	$4,$5,.Lswap
935
936	lw	$8,16($6)		# modulo-scheduled
937	lui	$2,0x8080
938	sub	$30,1
939	or	$2,0x8080
940	sll	$30,2
941	add $6,16
942	lui	$25,0x1b1b
943	nor	$24,$0,$2
944	or	$25,0x1b1b
945.align	4
946.Lmix:
947	and	$1,$8,$2
948	and	$9,$8,$24
949	srl	$10,$1,7
950	addu	$9,$9		# tp2<<1
951	subu	$1,$10
952	and	$1,$25
953	xor	$9,$1
954
955	and	$1,$9,$2
956	and	$10,$9,$24
957	srl	$11,$1,7
958	addu	$10,$10		# tp4<<1
959	subu	$1,$11
960	and	$1,$25
961	xor	$10,$1
962
963	and	$1,$10,$2
964	and	$11,$10,$24
965	srl	$12,$1,7
966	addu	$11,$11		# tp8<<1
967	subu	$1,$12
968	and	$1,$25
969	xor	$11,$1
970
971	xor	$12,$11,$8
972	xor	$15,$11,$10
973	xor	$13,$12,$9
974	xor	$14,$12,$10
975
976	sll	$8,$14,16
977	 xor	$15,$9
978	srl	$9,$14,16
979	xor	$15,$8
980	sll	$8,$12,8
981	xor	$15,$9
982	srl	$9,$12,24
983	xor	$15,$8
984	sll	$8,$13,24
985	xor	$15,$9
986	srl	$9,$13,8
987	xor	$15,$8
988	lw	$8,4($6)		# modulo-scheduled
989	xor	$15,$9
990	sub	$30,1
991	sw	$15,0($6)
992	add $6,4
993	bnez	$30,.Lmix
994
995	li	$2,0
996.Ldkey_done:
997	.set	noreorder
998	move	$4,$2
999	lw	$31,32-1*4($29)
1000	lw	$30,32-2*4($29)
1001	jr	$31
1002	add $29,32
1003.end	private_AES_set_decrypt_key
1004.rdata
1005.align	6
1006AES_Te:
1007.byte	0xc6,0x63,0x63,0xa5,	0xf8,0x7c,0x7c,0x84	# Te0
1008.byte	0xee,0x77,0x77,0x99,	0xf6,0x7b,0x7b,0x8d
1009.byte	0xff,0xf2,0xf2,0x0d,	0xd6,0x6b,0x6b,0xbd
1010.byte	0xde,0x6f,0x6f,0xb1,	0x91,0xc5,0xc5,0x54
1011.byte	0x60,0x30,0x30,0x50,	0x02,0x01,0x01,0x03
1012.byte	0xce,0x67,0x67,0xa9,	0x56,0x2b,0x2b,0x7d
1013.byte	0xe7,0xfe,0xfe,0x19,	0xb5,0xd7,0xd7,0x62
1014.byte	0x4d,0xab,0xab,0xe6,	0xec,0x76,0x76,0x9a
1015.byte	0x8f,0xca,0xca,0x45,	0x1f,0x82,0x82,0x9d
1016.byte	0x89,0xc9,0xc9,0x40,	0xfa,0x7d,0x7d,0x87
1017.byte	0xef,0xfa,0xfa,0x15,	0xb2,0x59,0x59,0xeb
1018.byte	0x8e,0x47,0x47,0xc9,	0xfb,0xf0,0xf0,0x0b
1019.byte	0x41,0xad,0xad,0xec,	0xb3,0xd4,0xd4,0x67
1020.byte	0x5f,0xa2,0xa2,0xfd,	0x45,0xaf,0xaf,0xea
1021.byte	0x23,0x9c,0x9c,0xbf,	0x53,0xa4,0xa4,0xf7
1022.byte	0xe4,0x72,0x72,0x96,	0x9b,0xc0,0xc0,0x5b
1023.byte	0x75,0xb7,0xb7,0xc2,	0xe1,0xfd,0xfd,0x1c
1024.byte	0x3d,0x93,0x93,0xae,	0x4c,0x26,0x26,0x6a
1025.byte	0x6c,0x36,0x36,0x5a,	0x7e,0x3f,0x3f,0x41
1026.byte	0xf5,0xf7,0xf7,0x02,	0x83,0xcc,0xcc,0x4f
1027.byte	0x68,0x34,0x34,0x5c,	0x51,0xa5,0xa5,0xf4
1028.byte	0xd1,0xe5,0xe5,0x34,	0xf9,0xf1,0xf1,0x08
1029.byte	0xe2,0x71,0x71,0x93,	0xab,0xd8,0xd8,0x73
1030.byte	0x62,0x31,0x31,0x53,	0x2a,0x15,0x15,0x3f
1031.byte	0x08,0x04,0x04,0x0c,	0x95,0xc7,0xc7,0x52
1032.byte	0x46,0x23,0x23,0x65,	0x9d,0xc3,0xc3,0x5e
1033.byte	0x30,0x18,0x18,0x28,	0x37,0x96,0x96,0xa1
1034.byte	0x0a,0x05,0x05,0x0f,	0x2f,0x9a,0x9a,0xb5
1035.byte	0x0e,0x07,0x07,0x09,	0x24,0x12,0x12,0x36
1036.byte	0x1b,0x80,0x80,0x9b,	0xdf,0xe2,0xe2,0x3d
1037.byte	0xcd,0xeb,0xeb,0x26,	0x4e,0x27,0x27,0x69
1038.byte	0x7f,0xb2,0xb2,0xcd,	0xea,0x75,0x75,0x9f
1039.byte	0x12,0x09,0x09,0x1b,	0x1d,0x83,0x83,0x9e
1040.byte	0x58,0x2c,0x2c,0x74,	0x34,0x1a,0x1a,0x2e
1041.byte	0x36,0x1b,0x1b,0x2d,	0xdc,0x6e,0x6e,0xb2
1042.byte	0xb4,0x5a,0x5a,0xee,	0x5b,0xa0,0xa0,0xfb
1043.byte	0xa4,0x52,0x52,0xf6,	0x76,0x3b,0x3b,0x4d
1044.byte	0xb7,0xd6,0xd6,0x61,	0x7d,0xb3,0xb3,0xce
1045.byte	0x52,0x29,0x29,0x7b,	0xdd,0xe3,0xe3,0x3e
1046.byte	0x5e,0x2f,0x2f,0x71,	0x13,0x84,0x84,0x97
1047.byte	0xa6,0x53,0x53,0xf5,	0xb9,0xd1,0xd1,0x68
1048.byte	0x00,0x00,0x00,0x00,	0xc1,0xed,0xed,0x2c
1049.byte	0x40,0x20,0x20,0x60,	0xe3,0xfc,0xfc,0x1f
1050.byte	0x79,0xb1,0xb1,0xc8,	0xb6,0x5b,0x5b,0xed
1051.byte	0xd4,0x6a,0x6a,0xbe,	0x8d,0xcb,0xcb,0x46
1052.byte	0x67,0xbe,0xbe,0xd9,	0x72,0x39,0x39,0x4b
1053.byte	0x94,0x4a,0x4a,0xde,	0x98,0x4c,0x4c,0xd4
1054.byte	0xb0,0x58,0x58,0xe8,	0x85,0xcf,0xcf,0x4a
1055.byte	0xbb,0xd0,0xd0,0x6b,	0xc5,0xef,0xef,0x2a
1056.byte	0x4f,0xaa,0xaa,0xe5,	0xed,0xfb,0xfb,0x16
1057.byte	0x86,0x43,0x43,0xc5,	0x9a,0x4d,0x4d,0xd7
1058.byte	0x66,0x33,0x33,0x55,	0x11,0x85,0x85,0x94
1059.byte	0x8a,0x45,0x45,0xcf,	0xe9,0xf9,0xf9,0x10
1060.byte	0x04,0x02,0x02,0x06,	0xfe,0x7f,0x7f,0x81
1061.byte	0xa0,0x50,0x50,0xf0,	0x78,0x3c,0x3c,0x44
1062.byte	0x25,0x9f,0x9f,0xba,	0x4b,0xa8,0xa8,0xe3
1063.byte	0xa2,0x51,0x51,0xf3,	0x5d,0xa3,0xa3,0xfe
1064.byte	0x80,0x40,0x40,0xc0,	0x05,0x8f,0x8f,0x8a
1065.byte	0x3f,0x92,0x92,0xad,	0x21,0x9d,0x9d,0xbc
1066.byte	0x70,0x38,0x38,0x48,	0xf1,0xf5,0xf5,0x04
1067.byte	0x63,0xbc,0xbc,0xdf,	0x77,0xb6,0xb6,0xc1
1068.byte	0xaf,0xda,0xda,0x75,	0x42,0x21,0x21,0x63
1069.byte	0x20,0x10,0x10,0x30,	0xe5,0xff,0xff,0x1a
1070.byte	0xfd,0xf3,0xf3,0x0e,	0xbf,0xd2,0xd2,0x6d
1071.byte	0x81,0xcd,0xcd,0x4c,	0x18,0x0c,0x0c,0x14
1072.byte	0x26,0x13,0x13,0x35,	0xc3,0xec,0xec,0x2f
1073.byte	0xbe,0x5f,0x5f,0xe1,	0x35,0x97,0x97,0xa2
1074.byte	0x88,0x44,0x44,0xcc,	0x2e,0x17,0x17,0x39
1075.byte	0x93,0xc4,0xc4,0x57,	0x55,0xa7,0xa7,0xf2
1076.byte	0xfc,0x7e,0x7e,0x82,	0x7a,0x3d,0x3d,0x47
1077.byte	0xc8,0x64,0x64,0xac,	0xba,0x5d,0x5d,0xe7
1078.byte	0x32,0x19,0x19,0x2b,	0xe6,0x73,0x73,0x95
1079.byte	0xc0,0x60,0x60,0xa0,	0x19,0x81,0x81,0x98
1080.byte	0x9e,0x4f,0x4f,0xd1,	0xa3,0xdc,0xdc,0x7f
1081.byte	0x44,0x22,0x22,0x66,	0x54,0x2a,0x2a,0x7e
1082.byte	0x3b,0x90,0x90,0xab,	0x0b,0x88,0x88,0x83
1083.byte	0x8c,0x46,0x46,0xca,	0xc7,0xee,0xee,0x29
1084.byte	0x6b,0xb8,0xb8,0xd3,	0x28,0x14,0x14,0x3c
1085.byte	0xa7,0xde,0xde,0x79,	0xbc,0x5e,0x5e,0xe2
1086.byte	0x16,0x0b,0x0b,0x1d,	0xad,0xdb,0xdb,0x76
1087.byte	0xdb,0xe0,0xe0,0x3b,	0x64,0x32,0x32,0x56
1088.byte	0x74,0x3a,0x3a,0x4e,	0x14,0x0a,0x0a,0x1e
1089.byte	0x92,0x49,0x49,0xdb,	0x0c,0x06,0x06,0x0a
1090.byte	0x48,0x24,0x24,0x6c,	0xb8,0x5c,0x5c,0xe4
1091.byte	0x9f,0xc2,0xc2,0x5d,	0xbd,0xd3,0xd3,0x6e
1092.byte	0x43,0xac,0xac,0xef,	0xc4,0x62,0x62,0xa6
1093.byte	0x39,0x91,0x91,0xa8,	0x31,0x95,0x95,0xa4
1094.byte	0xd3,0xe4,0xe4,0x37,	0xf2,0x79,0x79,0x8b
1095.byte	0xd5,0xe7,0xe7,0x32,	0x8b,0xc8,0xc8,0x43
1096.byte	0x6e,0x37,0x37,0x59,	0xda,0x6d,0x6d,0xb7
1097.byte	0x01,0x8d,0x8d,0x8c,	0xb1,0xd5,0xd5,0x64
1098.byte	0x9c,0x4e,0x4e,0xd2,	0x49,0xa9,0xa9,0xe0
1099.byte	0xd8,0x6c,0x6c,0xb4,	0xac,0x56,0x56,0xfa
1100.byte	0xf3,0xf4,0xf4,0x07,	0xcf,0xea,0xea,0x25
1101.byte	0xca,0x65,0x65,0xaf,	0xf4,0x7a,0x7a,0x8e
1102.byte	0x47,0xae,0xae,0xe9,	0x10,0x08,0x08,0x18
1103.byte	0x6f,0xba,0xba,0xd5,	0xf0,0x78,0x78,0x88
1104.byte	0x4a,0x25,0x25,0x6f,	0x5c,0x2e,0x2e,0x72
1105.byte	0x38,0x1c,0x1c,0x24,	0x57,0xa6,0xa6,0xf1
1106.byte	0x73,0xb4,0xb4,0xc7,	0x97,0xc6,0xc6,0x51
1107.byte	0xcb,0xe8,0xe8,0x23,	0xa1,0xdd,0xdd,0x7c
1108.byte	0xe8,0x74,0x74,0x9c,	0x3e,0x1f,0x1f,0x21
1109.byte	0x96,0x4b,0x4b,0xdd,	0x61,0xbd,0xbd,0xdc
1110.byte	0x0d,0x8b,0x8b,0x86,	0x0f,0x8a,0x8a,0x85
1111.byte	0xe0,0x70,0x70,0x90,	0x7c,0x3e,0x3e,0x42
1112.byte	0x71,0xb5,0xb5,0xc4,	0xcc,0x66,0x66,0xaa
1113.byte	0x90,0x48,0x48,0xd8,	0x06,0x03,0x03,0x05
1114.byte	0xf7,0xf6,0xf6,0x01,	0x1c,0x0e,0x0e,0x12
1115.byte	0xc2,0x61,0x61,0xa3,	0x6a,0x35,0x35,0x5f
1116.byte	0xae,0x57,0x57,0xf9,	0x69,0xb9,0xb9,0xd0
1117.byte	0x17,0x86,0x86,0x91,	0x99,0xc1,0xc1,0x58
1118.byte	0x3a,0x1d,0x1d,0x27,	0x27,0x9e,0x9e,0xb9
1119.byte	0xd9,0xe1,0xe1,0x38,	0xeb,0xf8,0xf8,0x13
1120.byte	0x2b,0x98,0x98,0xb3,	0x22,0x11,0x11,0x33
1121.byte	0xd2,0x69,0x69,0xbb,	0xa9,0xd9,0xd9,0x70
1122.byte	0x07,0x8e,0x8e,0x89,	0x33,0x94,0x94,0xa7
1123.byte	0x2d,0x9b,0x9b,0xb6,	0x3c,0x1e,0x1e,0x22
1124.byte	0x15,0x87,0x87,0x92,	0xc9,0xe9,0xe9,0x20
1125.byte	0x87,0xce,0xce,0x49,	0xaa,0x55,0x55,0xff
1126.byte	0x50,0x28,0x28,0x78,	0xa5,0xdf,0xdf,0x7a
1127.byte	0x03,0x8c,0x8c,0x8f,	0x59,0xa1,0xa1,0xf8
1128.byte	0x09,0x89,0x89,0x80,	0x1a,0x0d,0x0d,0x17
1129.byte	0x65,0xbf,0xbf,0xda,	0xd7,0xe6,0xe6,0x31
1130.byte	0x84,0x42,0x42,0xc6,	0xd0,0x68,0x68,0xb8
1131.byte	0x82,0x41,0x41,0xc3,	0x29,0x99,0x99,0xb0
1132.byte	0x5a,0x2d,0x2d,0x77,	0x1e,0x0f,0x0f,0x11
1133.byte	0x7b,0xb0,0xb0,0xcb,	0xa8,0x54,0x54,0xfc
1134.byte	0x6d,0xbb,0xbb,0xd6,	0x2c,0x16,0x16,0x3a
1135
1136.byte	0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5	# Te4
1137.byte	0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76
1138.byte	0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0
1139.byte	0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0
1140.byte	0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc
1141.byte	0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15
1142.byte	0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a
1143.byte	0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75
1144.byte	0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0
1145.byte	0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84
1146.byte	0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b
1147.byte	0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf
1148.byte	0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85
1149.byte	0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8
1150.byte	0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5
1151.byte	0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2
1152.byte	0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17
1153.byte	0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73
1154.byte	0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88
1155.byte	0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb
1156.byte	0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c
1157.byte	0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79
1158.byte	0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9
1159.byte	0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08
1160.byte	0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6
1161.byte	0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a
1162.byte	0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e
1163.byte	0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e
1164.byte	0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94
1165.byte	0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf
1166.byte	0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68
1167.byte	0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16
1168
1169.byte	0x01,0x00,0x00,0x00,	0x02,0x00,0x00,0x00	# rcon
1170.byte	0x04,0x00,0x00,0x00,	0x08,0x00,0x00,0x00
1171.byte	0x10,0x00,0x00,0x00,	0x20,0x00,0x00,0x00
1172.byte	0x40,0x00,0x00,0x00,	0x80,0x00,0x00,0x00
1173.byte	0x1B,0x00,0x00,0x00,	0x36,0x00,0x00,0x00
1174
1175.align	6
1176AES_Td:
1177.byte	0x51,0xf4,0xa7,0x50,	0x7e,0x41,0x65,0x53	# Td0
1178.byte	0x1a,0x17,0xa4,0xc3,	0x3a,0x27,0x5e,0x96
1179.byte	0x3b,0xab,0x6b,0xcb,	0x1f,0x9d,0x45,0xf1
1180.byte	0xac,0xfa,0x58,0xab,	0x4b,0xe3,0x03,0x93
1181.byte	0x20,0x30,0xfa,0x55,	0xad,0x76,0x6d,0xf6
1182.byte	0x88,0xcc,0x76,0x91,	0xf5,0x02,0x4c,0x25
1183.byte	0x4f,0xe5,0xd7,0xfc,	0xc5,0x2a,0xcb,0xd7
1184.byte	0x26,0x35,0x44,0x80,	0xb5,0x62,0xa3,0x8f
1185.byte	0xde,0xb1,0x5a,0x49,	0x25,0xba,0x1b,0x67
1186.byte	0x45,0xea,0x0e,0x98,	0x5d,0xfe,0xc0,0xe1
1187.byte	0xc3,0x2f,0x75,0x02,	0x81,0x4c,0xf0,0x12
1188.byte	0x8d,0x46,0x97,0xa3,	0x6b,0xd3,0xf9,0xc6
1189.byte	0x03,0x8f,0x5f,0xe7,	0x15,0x92,0x9c,0x95
1190.byte	0xbf,0x6d,0x7a,0xeb,	0x95,0x52,0x59,0xda
1191.byte	0xd4,0xbe,0x83,0x2d,	0x58,0x74,0x21,0xd3
1192.byte	0x49,0xe0,0x69,0x29,	0x8e,0xc9,0xc8,0x44
1193.byte	0x75,0xc2,0x89,0x6a,	0xf4,0x8e,0x79,0x78
1194.byte	0x99,0x58,0x3e,0x6b,	0x27,0xb9,0x71,0xdd
1195.byte	0xbe,0xe1,0x4f,0xb6,	0xf0,0x88,0xad,0x17
1196.byte	0xc9,0x20,0xac,0x66,	0x7d,0xce,0x3a,0xb4
1197.byte	0x63,0xdf,0x4a,0x18,	0xe5,0x1a,0x31,0x82
1198.byte	0x97,0x51,0x33,0x60,	0x62,0x53,0x7f,0x45
1199.byte	0xb1,0x64,0x77,0xe0,	0xbb,0x6b,0xae,0x84
1200.byte	0xfe,0x81,0xa0,0x1c,	0xf9,0x08,0x2b,0x94
1201.byte	0x70,0x48,0x68,0x58,	0x8f,0x45,0xfd,0x19
1202.byte	0x94,0xde,0x6c,0x87,	0x52,0x7b,0xf8,0xb7
1203.byte	0xab,0x73,0xd3,0x23,	0x72,0x4b,0x02,0xe2
1204.byte	0xe3,0x1f,0x8f,0x57,	0x66,0x55,0xab,0x2a
1205.byte	0xb2,0xeb,0x28,0x07,	0x2f,0xb5,0xc2,0x03
1206.byte	0x86,0xc5,0x7b,0x9a,	0xd3,0x37,0x08,0xa5
1207.byte	0x30,0x28,0x87,0xf2,	0x23,0xbf,0xa5,0xb2
1208.byte	0x02,0x03,0x6a,0xba,	0xed,0x16,0x82,0x5c
1209.byte	0x8a,0xcf,0x1c,0x2b,	0xa7,0x79,0xb4,0x92
1210.byte	0xf3,0x07,0xf2,0xf0,	0x4e,0x69,0xe2,0xa1
1211.byte	0x65,0xda,0xf4,0xcd,	0x06,0x05,0xbe,0xd5
1212.byte	0xd1,0x34,0x62,0x1f,	0xc4,0xa6,0xfe,0x8a
1213.byte	0x34,0x2e,0x53,0x9d,	0xa2,0xf3,0x55,0xa0
1214.byte	0x05,0x8a,0xe1,0x32,	0xa4,0xf6,0xeb,0x75
1215.byte	0x0b,0x83,0xec,0x39,	0x40,0x60,0xef,0xaa
1216.byte	0x5e,0x71,0x9f,0x06,	0xbd,0x6e,0x10,0x51
1217.byte	0x3e,0x21,0x8a,0xf9,	0x96,0xdd,0x06,0x3d
1218.byte	0xdd,0x3e,0x05,0xae,	0x4d,0xe6,0xbd,0x46
1219.byte	0x91,0x54,0x8d,0xb5,	0x71,0xc4,0x5d,0x05
1220.byte	0x04,0x06,0xd4,0x6f,	0x60,0x50,0x15,0xff
1221.byte	0x19,0x98,0xfb,0x24,	0xd6,0xbd,0xe9,0x97
1222.byte	0x89,0x40,0x43,0xcc,	0x67,0xd9,0x9e,0x77
1223.byte	0xb0,0xe8,0x42,0xbd,	0x07,0x89,0x8b,0x88
1224.byte	0xe7,0x19,0x5b,0x38,	0x79,0xc8,0xee,0xdb
1225.byte	0xa1,0x7c,0x0a,0x47,	0x7c,0x42,0x0f,0xe9
1226.byte	0xf8,0x84,0x1e,0xc9,	0x00,0x00,0x00,0x00
1227.byte	0x09,0x80,0x86,0x83,	0x32,0x2b,0xed,0x48
1228.byte	0x1e,0x11,0x70,0xac,	0x6c,0x5a,0x72,0x4e
1229.byte	0xfd,0x0e,0xff,0xfb,	0x0f,0x85,0x38,0x56
1230.byte	0x3d,0xae,0xd5,0x1e,	0x36,0x2d,0x39,0x27
1231.byte	0x0a,0x0f,0xd9,0x64,	0x68,0x5c,0xa6,0x21
1232.byte	0x9b,0x5b,0x54,0xd1,	0x24,0x36,0x2e,0x3a
1233.byte	0x0c,0x0a,0x67,0xb1,	0x93,0x57,0xe7,0x0f
1234.byte	0xb4,0xee,0x96,0xd2,	0x1b,0x9b,0x91,0x9e
1235.byte	0x80,0xc0,0xc5,0x4f,	0x61,0xdc,0x20,0xa2
1236.byte	0x5a,0x77,0x4b,0x69,	0x1c,0x12,0x1a,0x16
1237.byte	0xe2,0x93,0xba,0x0a,	0xc0,0xa0,0x2a,0xe5
1238.byte	0x3c,0x22,0xe0,0x43,	0x12,0x1b,0x17,0x1d
1239.byte	0x0e,0x09,0x0d,0x0b,	0xf2,0x8b,0xc7,0xad
1240.byte	0x2d,0xb6,0xa8,0xb9,	0x14,0x1e,0xa9,0xc8
1241.byte	0x57,0xf1,0x19,0x85,	0xaf,0x75,0x07,0x4c
1242.byte	0xee,0x99,0xdd,0xbb,	0xa3,0x7f,0x60,0xfd
1243.byte	0xf7,0x01,0x26,0x9f,	0x5c,0x72,0xf5,0xbc
1244.byte	0x44,0x66,0x3b,0xc5,	0x5b,0xfb,0x7e,0x34
1245.byte	0x8b,0x43,0x29,0x76,	0xcb,0x23,0xc6,0xdc
1246.byte	0xb6,0xed,0xfc,0x68,	0xb8,0xe4,0xf1,0x63
1247.byte	0xd7,0x31,0xdc,0xca,	0x42,0x63,0x85,0x10
1248.byte	0x13,0x97,0x22,0x40,	0x84,0xc6,0x11,0x20
1249.byte	0x85,0x4a,0x24,0x7d,	0xd2,0xbb,0x3d,0xf8
1250.byte	0xae,0xf9,0x32,0x11,	0xc7,0x29,0xa1,0x6d
1251.byte	0x1d,0x9e,0x2f,0x4b,	0xdc,0xb2,0x30,0xf3
1252.byte	0x0d,0x86,0x52,0xec,	0x77,0xc1,0xe3,0xd0
1253.byte	0x2b,0xb3,0x16,0x6c,	0xa9,0x70,0xb9,0x99
1254.byte	0x11,0x94,0x48,0xfa,	0x47,0xe9,0x64,0x22
1255.byte	0xa8,0xfc,0x8c,0xc4,	0xa0,0xf0,0x3f,0x1a
1256.byte	0x56,0x7d,0x2c,0xd8,	0x22,0x33,0x90,0xef
1257.byte	0x87,0x49,0x4e,0xc7,	0xd9,0x38,0xd1,0xc1
1258.byte	0x8c,0xca,0xa2,0xfe,	0x98,0xd4,0x0b,0x36
1259.byte	0xa6,0xf5,0x81,0xcf,	0xa5,0x7a,0xde,0x28
1260.byte	0xda,0xb7,0x8e,0x26,	0x3f,0xad,0xbf,0xa4
1261.byte	0x2c,0x3a,0x9d,0xe4,	0x50,0x78,0x92,0x0d
1262.byte	0x6a,0x5f,0xcc,0x9b,	0x54,0x7e,0x46,0x62
1263.byte	0xf6,0x8d,0x13,0xc2,	0x90,0xd8,0xb8,0xe8
1264.byte	0x2e,0x39,0xf7,0x5e,	0x82,0xc3,0xaf,0xf5
1265.byte	0x9f,0x5d,0x80,0xbe,	0x69,0xd0,0x93,0x7c
1266.byte	0x6f,0xd5,0x2d,0xa9,	0xcf,0x25,0x12,0xb3
1267.byte	0xc8,0xac,0x99,0x3b,	0x10,0x18,0x7d,0xa7
1268.byte	0xe8,0x9c,0x63,0x6e,	0xdb,0x3b,0xbb,0x7b
1269.byte	0xcd,0x26,0x78,0x09,	0x6e,0x59,0x18,0xf4
1270.byte	0xec,0x9a,0xb7,0x01,	0x83,0x4f,0x9a,0xa8
1271.byte	0xe6,0x95,0x6e,0x65,	0xaa,0xff,0xe6,0x7e
1272.byte	0x21,0xbc,0xcf,0x08,	0xef,0x15,0xe8,0xe6
1273.byte	0xba,0xe7,0x9b,0xd9,	0x4a,0x6f,0x36,0xce
1274.byte	0xea,0x9f,0x09,0xd4,	0x29,0xb0,0x7c,0xd6
1275.byte	0x31,0xa4,0xb2,0xaf,	0x2a,0x3f,0x23,0x31
1276.byte	0xc6,0xa5,0x94,0x30,	0x35,0xa2,0x66,0xc0
1277.byte	0x74,0x4e,0xbc,0x37,	0xfc,0x82,0xca,0xa6
1278.byte	0xe0,0x90,0xd0,0xb0,	0x33,0xa7,0xd8,0x15
1279.byte	0xf1,0x04,0x98,0x4a,	0x41,0xec,0xda,0xf7
1280.byte	0x7f,0xcd,0x50,0x0e,	0x17,0x91,0xf6,0x2f
1281.byte	0x76,0x4d,0xd6,0x8d,	0x43,0xef,0xb0,0x4d
1282.byte	0xcc,0xaa,0x4d,0x54,	0xe4,0x96,0x04,0xdf
1283.byte	0x9e,0xd1,0xb5,0xe3,	0x4c,0x6a,0x88,0x1b
1284.byte	0xc1,0x2c,0x1f,0xb8,	0x46,0x65,0x51,0x7f
1285.byte	0x9d,0x5e,0xea,0x04,	0x01,0x8c,0x35,0x5d
1286.byte	0xfa,0x87,0x74,0x73,	0xfb,0x0b,0x41,0x2e
1287.byte	0xb3,0x67,0x1d,0x5a,	0x92,0xdb,0xd2,0x52
1288.byte	0xe9,0x10,0x56,0x33,	0x6d,0xd6,0x47,0x13
1289.byte	0x9a,0xd7,0x61,0x8c,	0x37,0xa1,0x0c,0x7a
1290.byte	0x59,0xf8,0x14,0x8e,	0xeb,0x13,0x3c,0x89
1291.byte	0xce,0xa9,0x27,0xee,	0xb7,0x61,0xc9,0x35
1292.byte	0xe1,0x1c,0xe5,0xed,	0x7a,0x47,0xb1,0x3c
1293.byte	0x9c,0xd2,0xdf,0x59,	0x55,0xf2,0x73,0x3f
1294.byte	0x18,0x14,0xce,0x79,	0x73,0xc7,0x37,0xbf
1295.byte	0x53,0xf7,0xcd,0xea,	0x5f,0xfd,0xaa,0x5b
1296.byte	0xdf,0x3d,0x6f,0x14,	0x78,0x44,0xdb,0x86
1297.byte	0xca,0xaf,0xf3,0x81,	0xb9,0x68,0xc4,0x3e
1298.byte	0x38,0x24,0x34,0x2c,	0xc2,0xa3,0x40,0x5f
1299.byte	0x16,0x1d,0xc3,0x72,	0xbc,0xe2,0x25,0x0c
1300.byte	0x28,0x3c,0x49,0x8b,	0xff,0x0d,0x95,0x41
1301.byte	0x39,0xa8,0x01,0x71,	0x08,0x0c,0xb3,0xde
1302.byte	0xd8,0xb4,0xe4,0x9c,	0x64,0x56,0xc1,0x90
1303.byte	0x7b,0xcb,0x84,0x61,	0xd5,0x32,0xb6,0x70
1304.byte	0x48,0x6c,0x5c,0x74,	0xd0,0xb8,0x57,0x42
1305
1306.byte	0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38	# Td4
1307.byte	0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb
1308.byte	0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87
1309.byte	0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb
1310.byte	0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d
1311.byte	0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e
1312.byte	0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2
1313.byte	0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25
1314.byte	0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16
1315.byte	0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92
1316.byte	0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda
1317.byte	0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84
1318.byte	0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a
1319.byte	0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06
1320.byte	0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02
1321.byte	0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b
1322.byte	0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea
1323.byte	0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73
1324.byte	0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85
1325.byte	0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e
1326.byte	0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89
1327.byte	0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b
1328.byte	0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20
1329.byte	0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4
1330.byte	0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31
1331.byte	0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f
1332.byte	0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d
1333.byte	0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef
1334.byte	0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0
1335.byte	0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61
1336.byte	0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26
1337.byte	0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d
1338