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