12c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org#!/usr/bin/env perl
22c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
32c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# ====================================================================
42c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# Written by Andy Polyakov <appro@openssl.org> for the OpenSSL
52c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# project. The module is, however, dual licensed under OpenSSL and
62c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# CRYPTOGAMS licenses depending on where you obtain it. For further
72c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# details see http://www.openssl.org/~appro/cryptogams/.
82c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# ====================================================================
92c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
102c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# AES for MIPS
112c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
122c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# October 2010
132c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org#
142c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# Code uses 1K[+256B] S-box and on single-issue core [such as R5000]
152c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# spends ~68 cycles per byte processed with 128-bit key. This is ~16%
162c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# faster than gcc-generated code, which is not very impressive. But
172c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# recall that compressed S-box requires extra processing, namely
182c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# additional rotations. Rotations are implemented with lwl/lwr pairs,
192c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# which is normally used for loading unaligned data. Another cool
202c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# thing about this module is its endian neutrality, which means that
212c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# it processes data without ever changing byte order...
222c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
232c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org######################################################################
242c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# There is a number of MIPS ABI in use, O32 and N32/64 are most
252c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# widely used. Then there is a new contender: NUBI. It appears that if
262c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# one picks the latter, it's possible to arrange code in ABI neutral
272c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# manner. Therefore let's stick to NUBI register layout:
282c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org#
292c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org($zero,$at,$t0,$t1,$t2)=map("\$$_",(0..2,24,25));
302c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org($a0,$a1,$a2,$a3,$a4,$a5,$a6,$a7)=map("\$$_",(4..11));
312c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org($s0,$s1,$s2,$s3,$s4,$s5,$s6,$s7,$s8,$s9,$s10,$s11)=map("\$$_",(12..23));
322c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org($gp,$tp,$sp,$fp,$ra)=map("\$$_",(3,28..31));
332c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org#
342c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# The return value is placed in $a0. Following coding rules facilitate
352c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# interoperability:
362c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org#
372c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# - never ever touch $tp, "thread pointer", former $gp;
382c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# - copy return value to $t0, former $v0 [or to $a0 if you're adapting
392c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org#   old code];
402c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# - on O32 populate $a4-$a7 with 'lw $aN,4*N($sp)' if necessary;
412c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org#
422c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# For reference here is register layout for N32/64 MIPS ABIs:
432c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org#
442c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# ($zero,$at,$v0,$v1)=map("\$$_",(0..3));
452c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# ($a0,$a1,$a2,$a3,$a4,$a5,$a6,$a7)=map("\$$_",(4..11));
462c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# ($t0,$t1,$t2,$t3,$t8,$t9)=map("\$$_",(12..15,24,25));
472c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# ($s0,$s1,$s2,$s3,$s4,$s5,$s6,$s7)=map("\$$_",(16..23));
482c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# ($gp,$sp,$fp,$ra)=map("\$$_",(28..31));
492c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org#
502c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$flavour = shift; # supported flavours are o32,n32,64,nubi32,nubi64
512c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
522c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgif ($flavour =~ /64|n32/i) {
532c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD="dadd";	# incidentally works even on n32
542c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_SUB="dsub";	# incidentally works even on n32
552c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S="sd";
562c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L="ld";
572c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_SLL="dsll";	# incidentally works even on n32
582c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$SZREG=8;
592c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org} else {
602c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD="add";
612c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_SUB="sub";
622c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S="sw";
632c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L="lw";
642c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_SLL="sll";
652c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$SZREG=4;
662c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org}
672c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$pf = ($flavour =~ /nubi/i) ? $t0 : $t2;
682c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org#
692c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# <appro@openssl.org>
702c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org#
712c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org######################################################################
722c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
732c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$big_endian=(`echo MIPSEL | $ENV{CC} -E -P -`=~/MIPSEL/)?1:0;
742c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
752c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgfor (@ARGV) {	$output=$_ if (/^\w[\w\-]*\.\w+$/);	}
762c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgopen STDOUT,">$output";
772c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
782c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgif (!defined($big_endian))
792c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org{    $big_endian=(unpack('L',pack('N',1))==1);   }
802c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
812c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgwhile (($output=shift) && ($output!~/^\w[\w\-]*\.\w+$/)) {}
822c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgopen STDOUT,">$output";
832c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
842c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgmy ($MSB,$LSB)=(0,3);	# automatically converted to little-endian
852c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
862c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___;
872c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.text
882c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org#ifdef OPENSSL_FIPSCANISTER
892c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# include <openssl/fipssyms.h>
902c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org#endif
912c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
922c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org#if !defined(__vxworks) || defined(__pic__)
932c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.option	pic2
942c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org#endif
952c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.set	noat
962c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
972c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
982c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org{{{
992c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgmy $FRAMESIZE=16*$SZREG;
1002c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgmy $SAVED_REGS_MASK = ($flavour =~ /nubi/i) ? 0xc0fff008 : 0xc0ff0000;
1012c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
1022c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgmy ($inp,$out,$key,$Tbl,$s0,$s1,$s2,$s3)=($a0,$a1,$a2,$a3,$a4,$a5,$a6,$a7);
1032c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgmy ($i0,$i1,$i2,$i3)=($at,$t0,$t1,$t2);
1042c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgmy ($t0,$t1,$t2,$t3,$t4,$t5,$t6,$t7,$t8,$t9,$t10,$t11) = map("\$$_",(12..23));
1052c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgmy ($key0,$cnt)=($gp,$fp);
1062c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
1072c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# instuction ordering is "stolen" from output from MIPSpro assembler
1082c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# invoked with -mips3 -O3 arguments...
1092c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___;
1102c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.align	5
1112c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.ent	_mips_AES_encrypt
1122c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org_mips_AES_encrypt:
1132c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.frame	$sp,0,$ra
1142c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	reorder
1152c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$t0,0($key)
1162c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$t1,4($key)
1172c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$t2,8($key)
1182c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$t3,12($key)
1192c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$cnt,240($key)
1202c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $key0,$key,16
1212c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
1222c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$s0,$t0
1232c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$s1,$t1
1242c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$s2,$t2
1252c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$s3,$t3
1262c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
1272c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sub	$cnt,1
1282c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i0,$s1,16-2
1292c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.Loop_enc:
1302c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i1,$s2,16-2
1312c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i2,$s3,16-2
1322c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i3,$s0,16-2
1332c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i0,0x3fc
1342c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i1,0x3fc
1352c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i2,0x3fc
1362c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i3,0x3fc
1372c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i0,$Tbl
1382c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i1,$Tbl
1392c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i2,$Tbl
1402c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i3,$Tbl
1412c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$t0,3($i0)		# Te1[s1>>16]
1422c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$t1,3($i1)		# Te1[s2>>16]
1432c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$t2,3($i2)		# Te1[s3>>16]
1442c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$t3,3($i3)		# Te1[s0>>16]
1452c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$t0,2($i0)		# Te1[s1>>16]
1462c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$t1,2($i1)		# Te1[s2>>16]
1472c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$t2,2($i2)		# Te1[s3>>16]
1482c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$t3,2($i3)		# Te1[s0>>16]
1492c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
1502c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i0,$s2,8-2
1512c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i1,$s3,8-2
1522c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i2,$s0,8-2
1532c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i3,$s1,8-2
1542c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i0,0x3fc
1552c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i1,0x3fc
1562c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i2,0x3fc
1572c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i3,0x3fc
1582c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i0,$Tbl
1592c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i1,$Tbl
1602c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i2,$Tbl
1612c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i3,$Tbl
1622c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$t4,2($i0)		# Te2[s2>>8]
1632c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$t5,2($i1)		# Te2[s3>>8]
1642c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$t6,2($i2)		# Te2[s0>>8]
1652c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$t7,2($i3)		# Te2[s1>>8]
1662c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$t4,1($i0)		# Te2[s2>>8]
1672c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$t5,1($i1)		# Te2[s3>>8]
1682c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$t6,1($i2)		# Te2[s0>>8]
1692c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$t7,1($i3)		# Te2[s1>>8]
1702c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
1712c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i0,$s3,0-2
1722c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i1,$s0,0-2
1732c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i2,$s1,0-2
1742c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i3,$s2,0-2
1752c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i0,0x3fc
1762c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i1,0x3fc
1772c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i2,0x3fc
1782c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i3,0x3fc
1792c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i0,$Tbl
1802c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i1,$Tbl
1812c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i2,$Tbl
1822c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i3,$Tbl
1832c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$t8,1($i0)		# Te3[s3]
1842c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$t9,1($i1)		# Te3[s0]
1852c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$t10,1($i2)		# Te3[s1]
1862c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$t11,1($i3)		# Te3[s2]
1872c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$t8,0($i0)		# Te3[s3]
1882c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$t9,0($i1)		# Te3[s0]
1892c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$t10,0($i2)		# Te3[s1]
1902c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$t11,0($i3)		# Te3[s2]
1912c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
1922c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i0,$s0,24-2
1932c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i1,$s1,24-2
1942c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i2,$s2,24-2
1952c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i3,$s3,24-2
1962c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i0,0x3fc
1972c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i1,0x3fc
1982c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i2,0x3fc
1992c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i3,0x3fc
2002c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i0,$Tbl
2012c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i1,$Tbl
2022c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i2,$Tbl
2032c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i3,$Tbl
2042c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t0,$t4
2052c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t1,$t5
2062c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t2,$t6
2072c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t3,$t7
2082c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$t4,0($i0)		# Te0[s0>>24]
2092c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$t5,0($i1)		# Te0[s1>>24]
2102c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$t6,0($i2)		# Te0[s2>>24]
2112c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$t7,0($i3)		# Te0[s3>>24]
2122c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
2132c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$s0,0($key0)
2142c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$s1,4($key0)
2152c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$s2,8($key0)
2162c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$s3,12($key0)
2172c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
2182c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t0,$t8
2192c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t1,$t9
2202c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t2,$t10
2212c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t3,$t11
2222c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
2232c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t0,$t4
2242c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t1,$t5
2252c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t2,$t6
2262c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t3,$t7
2272c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
2282c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sub	$cnt,1
2292c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $key0,16
2302c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$s0,$t0
2312c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$s1,$t1
2322c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$s2,$t2
2332c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$s3,$t3
2342c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	noreorder
2352c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	bnez	$cnt,.Loop_enc
2362c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i0,$s1,16-2
2372c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
2382c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	reorder
2392c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i1,$s2,16-2
2402c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i2,$s3,16-2
2412c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i3,$s0,16-2
2422c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i0,0x3fc
2432c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i1,0x3fc
2442c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i2,0x3fc
2452c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i3,0x3fc
2462c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i0,$Tbl
2472c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i1,$Tbl
2482c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i2,$Tbl
2492c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i3,$Tbl
2502c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t0,2($i0)		# Te4[s1>>16]
2512c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t1,2($i1)		# Te4[s2>>16]
2522c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t2,2($i2)		# Te4[s3>>16]
2532c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t3,2($i3)		# Te4[s0>>16]
2542c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
2552c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i0,$s2,8-2
2562c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i1,$s3,8-2
2572c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i2,$s0,8-2
2582c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i3,$s1,8-2
2592c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i0,0x3fc
2602c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i1,0x3fc
2612c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i2,0x3fc
2622c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i3,0x3fc
2632c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i0,$Tbl
2642c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i1,$Tbl
2652c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i2,$Tbl
2662c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i3,$Tbl
2672c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t4,2($i0)		# Te4[s2>>8]
2682c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t5,2($i1)		# Te4[s3>>8]
2692c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t6,2($i2)		# Te4[s0>>8]
2702c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t7,2($i3)		# Te4[s1>>8]
2712c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
2722c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i0,$s0,24-2
2732c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i1,$s1,24-2
2742c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i2,$s2,24-2
2752c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i3,$s3,24-2
2762c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i0,0x3fc
2772c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i1,0x3fc
2782c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i2,0x3fc
2792c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i3,0x3fc
2802c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i0,$Tbl
2812c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i1,$Tbl
2822c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i2,$Tbl
2832c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i3,$Tbl
2842c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t8,2($i0)		# Te4[s0>>24]
2852c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t9,2($i1)		# Te4[s1>>24]
2862c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t10,2($i2)		# Te4[s2>>24]
2872c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t11,2($i3)		# Te4[s3>>24]
2882c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
2892c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i0,$s3,0-2
2902c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i1,$s0,0-2
2912c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i2,$s1,0-2
2922c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i3,$s2,0-2
2932c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i0,0x3fc
2942c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i1,0x3fc
2952c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i2,0x3fc
2962c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i3,0x3fc
2972c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
2982c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t0,16
2992c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t1,16
3002c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t2,16
3012c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t3,16
3022c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
3032c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t4,8
3042c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t5,8
3052c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t6,8
3062c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t7,8
3072c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
3082c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t0,$t4
3092c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t1,$t5
3102c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t2,$t6
3112c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t3,$t7
3122c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
3132c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i0,$Tbl
3142c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i1,$Tbl
3152c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i2,$Tbl
3162c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i3,$Tbl
3172c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t4,2($i0)		# Te4[s3]
3182c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t5,2($i1)		# Te4[s0]
3192c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t6,2($i2)		# Te4[s1]
3202c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t7,2($i3)		# Te4[s2]
3212c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
3222c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t8,24
3232c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t9,24
3242c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t10,24
3252c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t11,24
3262c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
3272c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$s0,0($key0)
3282c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$s1,4($key0)
3292c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$s2,8($key0)
3302c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$s3,12($key0)
3312c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
3322c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t0,$t8
3332c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t1,$t9
3342c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t2,$t10
3352c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t3,$t11
3362c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
3372c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t4,0
3382c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t5,0
3392c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t6,0
3402c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t7,0
3412c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
3422c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t0,$t4
3432c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t1,$t5
3442c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t2,$t6
3452c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t3,$t7
3462c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
3472c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$s0,$t0
3482c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$s1,$t1
3492c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$s2,$t2
3502c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$s3,$t3
3512c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
3522c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	jr	$ra
3532c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.end	_mips_AES_encrypt
3542c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
3552c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.align	5
3562c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.globl	AES_encrypt
3572c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.ent	AES_encrypt
3582c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgAES_encrypt:
3592c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.frame	$sp,$FRAMESIZE,$ra
3602c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.mask	$SAVED_REGS_MASK,-$SZREG
3612c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	noreorder
3622c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
3632c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___ if ($flavour =~ /o32/i);	# o32 PIC-ification
3642c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.cpload	$pf
3652c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
3662c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___;
3672c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_SUB $sp,$FRAMESIZE
3682c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$ra,$FRAMESIZE-1*$SZREG($sp)
3692c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$fp,$FRAMESIZE-2*$SZREG($sp)
3702c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$s11,$FRAMESIZE-3*$SZREG($sp)
3712c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$s10,$FRAMESIZE-4*$SZREG($sp)
3722c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$s9,$FRAMESIZE-5*$SZREG($sp)
3732c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$s8,$FRAMESIZE-6*$SZREG($sp)
3742c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$s7,$FRAMESIZE-7*$SZREG($sp)
3752c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$s6,$FRAMESIZE-8*$SZREG($sp)
3762c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$s5,$FRAMESIZE-9*$SZREG($sp)
3772c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$s4,$FRAMESIZE-10*$SZREG($sp)
3782c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
3792c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___ if ($flavour =~ /nubi/i);	# optimize non-nubi prologue
3802c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	\$15,$FRAMESIZE-11*$SZREG($sp)
3812c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	\$14,$FRAMESIZE-12*$SZREG($sp)
3822c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	\$13,$FRAMESIZE-13*$SZREG($sp)
3832c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	\$12,$FRAMESIZE-14*$SZREG($sp)
3842c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$gp,$FRAMESIZE-15*$SZREG($sp)
3852c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
3862c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___ if ($flavour !~ /o32/i);	# non-o32 PIC-ification
3872c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.cplocal	$Tbl
3882c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.cpsetup	$pf,$zero,AES_encrypt
3892c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
3902c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___;
3912c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	reorder
3922c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	la	$Tbl,AES_Te		# PIC-ified 'load address'
3932c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
3942c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$s0,0+$MSB($inp)
3952c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$s1,4+$MSB($inp)
3962c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$s2,8+$MSB($inp)
3972c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$s3,12+$MSB($inp)
3982c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$s0,0+$LSB($inp)
3992c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$s1,4+$LSB($inp)
4002c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$s2,8+$LSB($inp)
4012c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$s3,12+$LSB($inp)
4022c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
4032c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	bal	_mips_AES_encrypt
4042c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
4052c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	swr	$s0,0+$LSB($out)
4062c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	swr	$s1,4+$LSB($out)
4072c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	swr	$s2,8+$LSB($out)
4082c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	swr	$s3,12+$LSB($out)
4092c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	swl	$s0,0+$MSB($out)
4102c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	swl	$s1,4+$MSB($out)
4112c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	swl	$s2,8+$MSB($out)
4122c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	swl	$s3,12+$MSB($out)
4132c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
4142c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	noreorder
4152c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$ra,$FRAMESIZE-1*$SZREG($sp)
4162c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$fp,$FRAMESIZE-2*$SZREG($sp)
4172c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$s11,$FRAMESIZE-3*$SZREG($sp)
4182c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$s10,$FRAMESIZE-4*$SZREG($sp)
4192c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$s9,$FRAMESIZE-5*$SZREG($sp)
4202c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$s8,$FRAMESIZE-6*$SZREG($sp)
4212c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$s7,$FRAMESIZE-7*$SZREG($sp)
4222c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$s6,$FRAMESIZE-8*$SZREG($sp)
4232c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$s5,$FRAMESIZE-9*$SZREG($sp)
4242c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$s4,$FRAMESIZE-10*$SZREG($sp)
4252c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
4262c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___ if ($flavour =~ /nubi/i);
4272c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	\$15,$FRAMESIZE-11*$SZREG($sp)
4282c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	\$14,$FRAMESIZE-12*$SZREG($sp)
4292c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	\$13,$FRAMESIZE-13*$SZREG($sp)
4302c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	\$12,$FRAMESIZE-14*$SZREG($sp)
4312c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$gp,$FRAMESIZE-15*$SZREG($sp)
4322c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
4332c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___;
4342c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	jr	$ra
4352c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $sp,$FRAMESIZE
4362c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.end	AES_encrypt
4372c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
4382c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
4392c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___;
4402c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.align	5
4412c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.ent	_mips_AES_decrypt
4422c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org_mips_AES_decrypt:
4432c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.frame	$sp,0,$ra
4442c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	reorder
4452c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$t0,0($key)
4462c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$t1,4($key)
4472c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$t2,8($key)
4482c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$t3,12($key)
4492c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$cnt,240($key)
4502c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $key0,$key,16
4512c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
4522c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$s0,$t0
4532c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$s1,$t1
4542c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$s2,$t2
4552c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$s3,$t3
4562c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
4572c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sub	$cnt,1
4582c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i0,$s3,16-2
4592c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.Loop_dec:
4602c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i1,$s0,16-2
4612c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i2,$s1,16-2
4622c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i3,$s2,16-2
4632c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i0,0x3fc
4642c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i1,0x3fc
4652c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i2,0x3fc
4662c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i3,0x3fc
4672c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i0,$Tbl
4682c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i1,$Tbl
4692c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i2,$Tbl
4702c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i3,$Tbl
4712c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$t0,3($i0)		# Td1[s3>>16]
4722c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$t1,3($i1)		# Td1[s0>>16]
4732c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$t2,3($i2)		# Td1[s1>>16]
4742c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$t3,3($i3)		# Td1[s2>>16]
4752c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$t0,2($i0)		# Td1[s3>>16]
4762c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$t1,2($i1)		# Td1[s0>>16]
4772c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$t2,2($i2)		# Td1[s1>>16]
4782c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$t3,2($i3)		# Td1[s2>>16]
4792c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
4802c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i0,$s2,8-2
4812c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i1,$s3,8-2
4822c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i2,$s0,8-2
4832c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i3,$s1,8-2
4842c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i0,0x3fc
4852c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i1,0x3fc
4862c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i2,0x3fc
4872c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i3,0x3fc
4882c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i0,$Tbl
4892c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i1,$Tbl
4902c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i2,$Tbl
4912c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i3,$Tbl
4922c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$t4,2($i0)		# Td2[s2>>8]
4932c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$t5,2($i1)		# Td2[s3>>8]
4942c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$t6,2($i2)		# Td2[s0>>8]
4952c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$t7,2($i3)		# Td2[s1>>8]
4962c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$t4,1($i0)		# Td2[s2>>8]
4972c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$t5,1($i1)		# Td2[s3>>8]
4982c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$t6,1($i2)		# Td2[s0>>8]
4992c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$t7,1($i3)		# Td2[s1>>8]
5002c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
5012c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i0,$s1,0-2
5022c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i1,$s2,0-2
5032c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i2,$s3,0-2
5042c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i3,$s0,0-2
5052c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i0,0x3fc
5062c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i1,0x3fc
5072c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i2,0x3fc
5082c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i3,0x3fc
5092c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i0,$Tbl
5102c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i1,$Tbl
5112c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i2,$Tbl
5122c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i3,$Tbl
5132c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$t8,1($i0)		# Td3[s1]
5142c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$t9,1($i1)		# Td3[s2]
5152c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$t10,1($i2)		# Td3[s3]
5162c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$t11,1($i3)		# Td3[s0]
5172c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$t8,0($i0)		# Td3[s1]
5182c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$t9,0($i1)		# Td3[s2]
5192c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$t10,0($i2)		# Td3[s3]
5202c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$t11,0($i3)		# Td3[s0]
5212c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
5222c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i0,$s0,24-2
5232c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i1,$s1,24-2
5242c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i2,$s2,24-2
5252c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i3,$s3,24-2
5262c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i0,0x3fc
5272c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i1,0x3fc
5282c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i2,0x3fc
5292c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i3,0x3fc
5302c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i0,$Tbl
5312c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i1,$Tbl
5322c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i2,$Tbl
5332c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i3,$Tbl
5342c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
5352c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t0,$t4
5362c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t1,$t5
5372c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t2,$t6
5382c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t3,$t7
5392c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
5402c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
5412c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$t4,0($i0)		# Td0[s0>>24]
5422c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$t5,0($i1)		# Td0[s1>>24]
5432c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$t6,0($i2)		# Td0[s2>>24]
5442c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$t7,0($i3)		# Td0[s3>>24]
5452c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
5462c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$s0,0($key0)
5472c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$s1,4($key0)
5482c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$s2,8($key0)
5492c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$s3,12($key0)
5502c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
5512c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t0,$t8
5522c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t1,$t9
5532c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t2,$t10
5542c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t3,$t11
5552c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
5562c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t0,$t4
5572c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t1,$t5
5582c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t2,$t6
5592c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t3,$t7
5602c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
5612c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sub	$cnt,1
5622c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $key0,16
5632c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$s0,$t0
5642c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$s1,$t1
5652c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$s2,$t2
5662c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$s3,$t3
5672c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	noreorder
5682c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	bnez	$cnt,.Loop_dec
5692c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i0,$s3,16-2
5702c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
5712c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	reorder
5722c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$t4,1024($Tbl)		# prefetch Td4
5732c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$t5,1024+32($Tbl)
5742c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$t6,1024+64($Tbl)
5752c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$t7,1024+96($Tbl)
5762c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$t8,1024+128($Tbl)
5772c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$t9,1024+160($Tbl)
5782c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$t10,1024+192($Tbl)
5792c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$t11,1024+224($Tbl)
5802c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
5812c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i0,$s3,16
5822c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i1,$s0,16
5832c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i2,$s1,16
5842c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i3,$s2,16
5852c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i0,0xff
5862c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i1,0xff
5872c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i2,0xff
5882c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i3,0xff
5892c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i0,$Tbl
5902c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i1,$Tbl
5912c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i2,$Tbl
5922c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i3,$Tbl
5932c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t0,1024($i0)		# Td4[s3>>16]
5942c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t1,1024($i1)		# Td4[s0>>16]
5952c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t2,1024($i2)		# Td4[s1>>16]
5962c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t3,1024($i3)		# Td4[s2>>16]
5972c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
5982c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i0,$s2,8
5992c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i1,$s3,8
6002c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i2,$s0,8
6012c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i3,$s1,8
6022c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i0,0xff
6032c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i1,0xff
6042c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i2,0xff
6052c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i3,0xff
6062c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i0,$Tbl
6072c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i1,$Tbl
6082c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i2,$Tbl
6092c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i3,$Tbl
6102c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t4,1024($i0)		# Td4[s2>>8]
6112c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t5,1024($i1)		# Td4[s3>>8]
6122c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t6,1024($i2)		# Td4[s0>>8]
6132c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t7,1024($i3)		# Td4[s1>>8]
6142c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
6152c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i0,$s0,24
6162c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i1,$s1,24
6172c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i2,$s2,24
6182c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i3,$s3,24
6192c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i0,$Tbl
6202c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i1,$Tbl
6212c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i2,$Tbl
6222c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i3,$Tbl
6232c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t8,1024($i0)		# Td4[s0>>24]
6242c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t9,1024($i1)		# Td4[s1>>24]
6252c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t10,1024($i2)		# Td4[s2>>24]
6262c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t11,1024($i3)		# Td4[s3>>24]
6272c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
6282c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i0,$s1,0
6292c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i1,$s2,0
6302c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i2,$s3,0
6312c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_xtr	$i3,$s0,0
6322c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
6332c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t0,16
6342c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t1,16
6352c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t2,16
6362c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t3,16
6372c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
6382c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t4,8
6392c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t5,8
6402c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t6,8
6412c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t7,8
6422c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
6432c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t0,$t4
6442c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t1,$t5
6452c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t2,$t6
6462c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t3,$t7
6472c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
6482c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i0,$Tbl
6492c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i1,$Tbl
6502c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i2,$Tbl
6512c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i3,$Tbl
6522c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t4,1024($i0)		# Td4[s1]
6532c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t5,1024($i1)		# Td4[s2]
6542c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t6,1024($i2)		# Td4[s3]
6552c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$t7,1024($i3)		# Td4[s0]
6562c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
6572c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t8,24
6582c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t9,24
6592c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t10,24
6602c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t11,24
6612c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
6622c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$s0,0($key0)
6632c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$s1,4($key0)
6642c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$s2,8($key0)
6652c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$s3,12($key0)
6662c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
6672c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t4,0
6682c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t5,0
6692c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t6,0
6702c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ins	$t7,0
6712c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
6722c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
6732c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t0,$t8
6742c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t1,$t9
6752c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t2,$t10
6762c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t3,$t11
6772c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
6782c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t0,$t4
6792c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t1,$t5
6802c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t2,$t6
6812c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$t3,$t7
6822c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
6832c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$s0,$t0
6842c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$s1,$t1
6852c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$s2,$t2
6862c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$s3,$t3
6872c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
6882c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	jr	$ra
6892c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.end	_mips_AES_decrypt
6902c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
6912c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.align	5
6922c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.globl	AES_decrypt
6932c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.ent	AES_decrypt
6942c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgAES_decrypt:
6952c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.frame	$sp,$FRAMESIZE,$ra
6962c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.mask	$SAVED_REGS_MASK,-$SZREG
6972c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	noreorder
6982c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
6992c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___ if ($flavour =~ /o32/i);	# o32 PIC-ification
7002c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.cpload	$pf
7012c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
7022c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___;
7032c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_SUB $sp,$FRAMESIZE
7042c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$ra,$FRAMESIZE-1*$SZREG($sp)
7052c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$fp,$FRAMESIZE-2*$SZREG($sp)
7062c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$s11,$FRAMESIZE-3*$SZREG($sp)
7072c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$s10,$FRAMESIZE-4*$SZREG($sp)
7082c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$s9,$FRAMESIZE-5*$SZREG($sp)
7092c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$s8,$FRAMESIZE-6*$SZREG($sp)
7102c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$s7,$FRAMESIZE-7*$SZREG($sp)
7112c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$s6,$FRAMESIZE-8*$SZREG($sp)
7122c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$s5,$FRAMESIZE-9*$SZREG($sp)
7132c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$s4,$FRAMESIZE-10*$SZREG($sp)
7142c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
7152c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___ if ($flavour =~ /nubi/i);	# optimize non-nubi prologue
7162c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	\$15,$FRAMESIZE-11*$SZREG($sp)
7172c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	\$14,$FRAMESIZE-12*$SZREG($sp)
7182c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	\$13,$FRAMESIZE-13*$SZREG($sp)
7192c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	\$12,$FRAMESIZE-14*$SZREG($sp)
7202c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$gp,$FRAMESIZE-15*$SZREG($sp)
7212c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
7222c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___ if ($flavour !~ /o32/i);	# non-o32 PIC-ification
7232c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.cplocal	$Tbl
7242c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.cpsetup	$pf,$zero,AES_decrypt
7252c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
7262c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___;
7272c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	reorder
7282c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	la	$Tbl,AES_Td		# PIC-ified 'load address'
7292c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
7302c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$s0,0+$MSB($inp)
7312c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$s1,4+$MSB($inp)
7322c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$s2,8+$MSB($inp)
7332c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$s3,12+$MSB($inp)
7342c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$s0,0+$LSB($inp)
7352c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$s1,4+$LSB($inp)
7362c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$s2,8+$LSB($inp)
7372c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$s3,12+$LSB($inp)
7382c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
7392c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	bal	_mips_AES_decrypt
7402c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
7412c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	swr	$s0,0+$LSB($out)
7422c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	swr	$s1,4+$LSB($out)
7432c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	swr	$s2,8+$LSB($out)
7442c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	swr	$s3,12+$LSB($out)
7452c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	swl	$s0,0+$MSB($out)
7462c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	swl	$s1,4+$MSB($out)
7472c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	swl	$s2,8+$MSB($out)
7482c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	swl	$s3,12+$MSB($out)
7492c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
7502c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	noreorder
7512c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$ra,$FRAMESIZE-1*$SZREG($sp)
7522c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$fp,$FRAMESIZE-2*$SZREG($sp)
7532c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$s11,$FRAMESIZE-3*$SZREG($sp)
7542c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$s10,$FRAMESIZE-4*$SZREG($sp)
7552c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$s9,$FRAMESIZE-5*$SZREG($sp)
7562c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$s8,$FRAMESIZE-6*$SZREG($sp)
7572c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$s7,$FRAMESIZE-7*$SZREG($sp)
7582c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$s6,$FRAMESIZE-8*$SZREG($sp)
7592c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$s5,$FRAMESIZE-9*$SZREG($sp)
7602c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$s4,$FRAMESIZE-10*$SZREG($sp)
7612c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
7622c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___ if ($flavour =~ /nubi/i);
7632c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	\$15,$FRAMESIZE-11*$SZREG($sp)
7642c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	\$14,$FRAMESIZE-12*$SZREG($sp)
7652c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	\$13,$FRAMESIZE-13*$SZREG($sp)
7662c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	\$12,$FRAMESIZE-14*$SZREG($sp)
7672c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$gp,$FRAMESIZE-15*$SZREG($sp)
7682c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
7692c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___;
7702c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	jr	$ra
7712c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $sp,$FRAMESIZE
7722c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.end	AES_decrypt
7732c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
7742c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org}}}
7752c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
7762c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org{{{
7772c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgmy $FRAMESIZE=8*$SZREG;
7782c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgmy $SAVED_REGS_MASK = ($flavour =~ /nubi/i) ? 0xc000f008 : 0xc0000000;
7792c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
7802c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgmy ($inp,$bits,$key,$Tbl)=($a0,$a1,$a2,$a3);
7812c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgmy ($rk0,$rk1,$rk2,$rk3,$rk4,$rk5,$rk6,$rk7)=($a4,$a5,$a6,$a7,$s0,$s1,$s2,$s3);
7822c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgmy ($i0,$i1,$i2,$i3)=($at,$t0,$t1,$t2);
7832c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgmy ($rcon,$cnt)=($gp,$fp);
7842c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
7852c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___;
7862c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.align	5
7872c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.ent	_mips_AES_set_encrypt_key
7882c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org_mips_AES_set_encrypt_key:
7892c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.frame	$sp,0,$ra
7902c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	noreorder
7912c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	beqz	$inp,.Lekey_done
7922c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	li	$t0,-1
7932c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	beqz	$key,.Lekey_done
7942c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $rcon,$Tbl,1024+256
7952c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
7962c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	reorder
7972c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$rk0,0+$MSB($inp)	# load 128 bits
7982c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$rk1,4+$MSB($inp)
7992c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$rk2,8+$MSB($inp)
8002c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$rk3,12+$MSB($inp)
8012c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	li	$at,128
8022c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$rk0,0+$LSB($inp)
8032c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$rk1,4+$LSB($inp)
8042c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$rk2,8+$LSB($inp)
8052c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$rk3,12+$LSB($inp)
8062c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	noreorder
8072c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	beq	$bits,$at,.L128bits
8082c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	li	$cnt,10
8092c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
8102c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	reorder
8112c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$rk4,16+$MSB($inp)	# load 192 bits
8122c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$rk5,20+$MSB($inp)
8132c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	li	$at,192
8142c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$rk4,16+$LSB($inp)
8152c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$rk5,20+$LSB($inp)
8162c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	noreorder
8172c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	beq	$bits,$at,.L192bits
8182c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	li	$cnt,8
8192c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
8202c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	reorder
8212c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$rk6,24+$MSB($inp)	# load 256 bits
8222c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwl	$rk7,28+$MSB($inp)
8232c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	li	$at,256
8242c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$rk6,24+$LSB($inp)
8252c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lwr	$rk7,28+$LSB($inp)
8262c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	noreorder
8272c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	beq	$bits,$at,.L256bits
8282c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	li	$cnt,7
8292c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
8302c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	b	.Lekey_done
8312c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	li	$t0,-2
8322c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
8332c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.align	4
8342c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.L128bits:
8352c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	reorder
8362c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	srl	$i0,$rk3,16
8372c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	srl	$i1,$rk3,8
8382c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i0,0xff
8392c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i1,0xff
8402c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i2,$rk3,0xff
8412c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	srl	$i3,$rk3,24
8422c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i0,$Tbl
8432c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i1,$Tbl
8442c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i2,$Tbl
8452c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i3,$Tbl
8462c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$i0,1024($i0)
8472c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$i1,1024($i1)
8482c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$i2,1024($i2)
8492c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$i3,1024($i3)
8502c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
8512c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk0,0($key)
8522c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk1,4($key)
8532c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk2,8($key)
8542c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk3,12($key)
8552c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sub	$cnt,1
8562c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $key,16
8572c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
8582c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_bias	$i0,24
8592c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_bias	$i1,16
8602c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_bias	$i2,8
8612c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_bias	$i3,0
8622c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
8632c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk0,$i0
8642c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$i0,0($rcon)
8652c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk0,$i1
8662c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk0,$i2
8672c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk0,$i3
8682c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk0,$i0
8692c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
8702c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk1,$rk0
8712c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk2,$rk1
8722c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk3,$rk2
8732c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
8742c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	noreorder
8752c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	bnez	$cnt,.L128bits
8762c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $rcon,4
8772c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
8782c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk0,0($key)
8792c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk1,4($key)
8802c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk2,8($key)
8812c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	li	$cnt,10
8822c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk3,12($key)
8832c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	li	$t0,0
8842c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$cnt,80($key)
8852c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	b	.Lekey_done
8862c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_SUB $key,10*16
8872c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
8882c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.align	4
8892c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.L192bits:
8902c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	reorder
8912c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	srl	$i0,$rk5,16
8922c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	srl	$i1,$rk5,8
8932c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i0,0xff
8942c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i1,0xff
8952c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i2,$rk5,0xff
8962c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	srl	$i3,$rk5,24
8972c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i0,$Tbl
8982c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i1,$Tbl
8992c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i2,$Tbl
9002c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i3,$Tbl
9012c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$i0,1024($i0)
9022c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$i1,1024($i1)
9032c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$i2,1024($i2)
9042c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$i3,1024($i3)
9052c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
9062c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk0,0($key)
9072c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk1,4($key)
9082c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk2,8($key)
9092c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk3,12($key)
9102c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk4,16($key)
9112c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk5,20($key)
9122c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sub	$cnt,1
9132c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $key,24
9142c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
9152c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_bias	$i0,24
9162c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_bias	$i1,16
9172c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_bias	$i2,8
9182c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_bias	$i3,0
9192c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
9202c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk0,$i0
9212c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$i0,0($rcon)
9222c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk0,$i1
9232c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk0,$i2
9242c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk0,$i3
9252c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk0,$i0
9262c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
9272c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk1,$rk0
9282c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk2,$rk1
9292c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk3,$rk2
9302c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk4,$rk3
9312c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk5,$rk4
9322c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
9332c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	noreorder
9342c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	bnez	$cnt,.L192bits
9352c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $rcon,4
9362c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
9372c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk0,0($key)
9382c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk1,4($key)
9392c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk2,8($key)
9402c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	li	$cnt,12
9412c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk3,12($key)
9422c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	li	$t0,0
9432c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$cnt,48($key)
9442c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	b	.Lekey_done
9452c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_SUB $key,12*16
9462c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
9472c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.align	4
9482c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.L256bits:
9492c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	reorder
9502c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	srl	$i0,$rk7,16
9512c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	srl	$i1,$rk7,8
9522c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i0,0xff
9532c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i1,0xff
9542c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i2,$rk7,0xff
9552c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	srl	$i3,$rk7,24
9562c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i0,$Tbl
9572c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i1,$Tbl
9582c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i2,$Tbl
9592c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i3,$Tbl
9602c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$i0,1024($i0)
9612c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$i1,1024($i1)
9622c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$i2,1024($i2)
9632c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$i3,1024($i3)
9642c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
9652c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk0,0($key)
9662c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk1,4($key)
9672c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk2,8($key)
9682c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk3,12($key)
9692c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk4,16($key)
9702c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk5,20($key)
9712c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk6,24($key)
9722c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk7,28($key)
9732c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sub	$cnt,1
9742c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
9752c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_bias	$i0,24
9762c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_bias	$i1,16
9772c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_bias	$i2,8
9782c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_bias	$i3,0
9792c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
9802c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk0,$i0
9812c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$i0,0($rcon)
9822c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk0,$i1
9832c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk0,$i2
9842c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk0,$i3
9852c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk0,$i0
9862c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
9872c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk1,$rk0
9882c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk2,$rk1
9892c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk3,$rk2
9902c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	beqz	$cnt,.L256bits_done
9912c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
9922c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	srl	$i0,$rk3,24
9932c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	srl	$i1,$rk3,16
9942c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	srl	$i2,$rk3,8
9952c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i3,$rk3,0xff
9962c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i1,0xff
9972c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$i2,0xff
9982c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i0,$Tbl
9992c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i1,$Tbl
10002c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i2,$Tbl
10012c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $i3,$Tbl
10022c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$i0,1024($i0)
10032c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$i1,1024($i1)
10042c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$i2,1024($i2)
10052c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lbu	$i3,1024($i3)
10062c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sll	$i0,24
10072c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sll	$i1,16
10082c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sll	$i2,8
10092c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
10102c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk4,$i0
10112c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk4,$i1
10122c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk4,$i2
10132c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk4,$i3
10142c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
10152c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk5,$rk4
10162c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk6,$rk5
10172c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$rk7,$rk6
10182c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
10192c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $key,32
10202c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	noreorder
10212c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	b	.L256bits
10222c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $rcon,4
10232c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
10242c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.L256bits_done:
10252c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk0,32($key)
10262c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk1,36($key)
10272c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk2,40($key)
10282c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	li	$cnt,14
10292c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk3,44($key)
10302c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	li	$t0,0
10312c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$cnt,48($key)
10322c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_SUB $key,12*16
10332c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
10342c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.Lekey_done:
10352c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	jr	$ra
10362c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	nop
10372c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.end	_mips_AES_set_encrypt_key
10382c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
10392c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.globl	private_AES_set_encrypt_key
10402c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.ent	private_AES_set_encrypt_key
10412c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgprivate_AES_set_encrypt_key:
10422c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.frame	$sp,$FRAMESIZE,$ra
10432c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.mask	$SAVED_REGS_MASK,-$SZREG
10442c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	noreorder
10452c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
10462c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___ if ($flavour =~ /o32/i);	# o32 PIC-ification
10472c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.cpload	$pf
10482c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
10492c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___;
10502c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_SUB $sp,$FRAMESIZE
10512c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$ra,$FRAMESIZE-1*$SZREG($sp)
10522c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$fp,$FRAMESIZE-2*$SZREG($sp)
10532c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
10542c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___ if ($flavour =~ /nubi/i);	# optimize non-nubi prologue
10552c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$s3,$FRAMESIZE-3*$SZREG($sp)
10562c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$s2,$FRAMESIZE-4*$SZREG($sp)
10572c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$s1,$FRAMESIZE-5*$SZREG($sp)
10582c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$s0,$FRAMESIZE-6*$SZREG($sp)
10592c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$gp,$FRAMESIZE-7*$SZREG($sp)
10602c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
10612c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___ if ($flavour !~ /o32/i);	# non-o32 PIC-ification
10622c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.cplocal	$Tbl
10632c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.cpsetup	$pf,$zero,private_AES_set_encrypt_key
10642c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
10652c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___;
10662c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	reorder
10672c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	la	$Tbl,AES_Te		# PIC-ified 'load address'
10682c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
10692c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	bal	_mips_AES_set_encrypt_key
10702c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
10712c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	noreorder
10722c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	move	$a0,$t0
10732c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$ra,$FRAMESIZE-1*$SZREG($sp)
10742c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$fp,$FRAMESIZE-2*$SZREG($sp)
10752c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
10762c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___ if ($flavour =~ /nubi/i);
10772c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$s3,$FRAMESIZE-11*$SZREG($sp)
10782c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$s2,$FRAMESIZE-12*$SZREG($sp)
10792c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$s1,$FRAMESIZE-13*$SZREG($sp)
10802c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$s0,$FRAMESIZE-14*$SZREG($sp)
10812c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$gp,$FRAMESIZE-15*$SZREG($sp)
10822c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
10832c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___;
10842c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	jr	$ra
10852c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $sp,$FRAMESIZE
10862c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.end	private_AES_set_encrypt_key
10872c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
10882c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
10892c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgmy ($head,$tail)=($inp,$bits);
10902c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgmy ($tp1,$tp2,$tp4,$tp8,$tp9,$tpb,$tpd,$tpe)=($a4,$a5,$a6,$a7,$s0,$s1,$s2,$s3);
10912c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgmy ($m,$x80808080,$x7f7f7f7f,$x1b1b1b1b)=($at,$t0,$t1,$t2);
10922c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___;
10932c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.align	5
10942c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.globl	private_AES_set_decrypt_key
10952c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.ent	private_AES_set_decrypt_key
10962c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgprivate_AES_set_decrypt_key:
10972c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.frame	$sp,$FRAMESIZE,$ra
10982c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.mask	$SAVED_REGS_MASK,-$SZREG
10992c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	noreorder
11002c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
11012c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___ if ($flavour =~ /o32/i);	# o32 PIC-ification
11022c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.cpload	$pf
11032c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
11042c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___;
11052c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_SUB $sp,$FRAMESIZE
11062c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$ra,$FRAMESIZE-1*$SZREG($sp)
11072c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$fp,$FRAMESIZE-2*$SZREG($sp)
11082c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
11092c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___ if ($flavour =~ /nubi/i);	# optimize non-nubi prologue
11102c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$s3,$FRAMESIZE-3*$SZREG($sp)
11112c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$s2,$FRAMESIZE-4*$SZREG($sp)
11122c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$s1,$FRAMESIZE-5*$SZREG($sp)
11132c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$s0,$FRAMESIZE-6*$SZREG($sp)
11142c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_S	$gp,$FRAMESIZE-7*$SZREG($sp)
11152c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
11162c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___ if ($flavour !~ /o32/i);	# non-o32 PIC-ification
11172c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.cplocal	$Tbl
11182c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.cpsetup	$pf,$zero,private_AES_set_decrypt_key
11192c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
11202c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___;
11212c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	reorder
11222c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	la	$Tbl,AES_Te		# PIC-ified 'load address'
11232c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
11242c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	bal	_mips_AES_set_encrypt_key
11252c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
11262c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	bltz	$t0,.Ldkey_done
11272c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
11282c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sll	$at,$cnt,4
11292c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $head,$key,0
11302c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $tail,$key,$at
11312c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.align	4
11322c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.Lswap:
11332c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$rk0,0($head)
11342c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$rk1,4($head)
11352c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$rk2,8($head)
11362c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$rk3,12($head)
11372c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$rk4,0($tail)
11382c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$rk5,4($tail)
11392c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$rk6,8($tail)
11402c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$rk7,12($tail)
11412c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk0,0($tail)
11422c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk1,4($tail)
11432c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk2,8($tail)
11442c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk3,12($tail)
11452c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $head,16
11462c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_SUB $tail,16
11472c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk4,-16($head)
11482c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk5,-12($head)
11492c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk6,-8($head)
11502c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$rk7,-4($head)
11512c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	bne	$head,$tail,.Lswap
11522c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
11532c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$tp1,16($key)		# modulo-scheduled
11542c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lui	$x80808080,0x8080
11552c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sub	$cnt,1
11562c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	or	$x80808080,0x8080
11572c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sll	$cnt,2
11582c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $key,16
11592c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lui	$x1b1b1b1b,0x1b1b
11602c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	nor	$x7f7f7f7f,$zero,$x80808080
11612c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	or	$x1b1b1b1b,0x1b1b
11622c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.align	4
11632c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.Lmix:
11642c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$m,$tp1,$x80808080
11652c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$tp2,$tp1,$x7f7f7f7f
11662c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	srl	$tp4,$m,7
11672c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	addu	$tp2,$tp2		# tp2<<1
11682c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	subu	$m,$tp4
11692c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$m,$x1b1b1b1b
11702c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$tp2,$m
11712c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
11722c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$m,$tp2,$x80808080
11732c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$tp4,$tp2,$x7f7f7f7f
11742c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	srl	$tp8,$m,7
11752c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	addu	$tp4,$tp4		# tp4<<1
11762c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	subu	$m,$tp8
11772c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$m,$x1b1b1b1b
11782c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$tp4,$m
11792c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
11802c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$m,$tp4,$x80808080
11812c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$tp8,$tp4,$x7f7f7f7f
11822c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	srl	$tp9,$m,7
11832c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	addu	$tp8,$tp8		# tp8<<1
11842c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	subu	$m,$tp9
11852c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	and	$m,$x1b1b1b1b
11862c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$tp8,$m
11872c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
11882c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$tp9,$tp8,$tp1
11892c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$tpe,$tp8,$tp4
11902c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$tpb,$tp9,$tp2
11912c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$tpd,$tp9,$tp4
11922c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
11932c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ror	$tp1,$tpd,16
11942c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	 xor	$tpe,$tp2
11952c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ror	$tp2,$tpd,-16
11962c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$tpe,$tp1
11972c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ror	$tp1,$tp9,8
11982c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$tpe,$tp2
11992c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ror	$tp2,$tp9,-24
12002c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$tpe,$tp1
12012c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ror	$tp1,$tpb,24
12022c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$tpe,$tp2
12032c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	_ror	$tp2,$tpb,-8
12042c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$tpe,$tp1
12052c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	lw	$tp1,4($key)		# modulo-scheduled
12062c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	xor	$tpe,$tp2
12072c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sub	$cnt,1
12082c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	sw	$tpe,0($key)
12092c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $key,4
12102c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	bnez	$cnt,.Lmix
12112c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
12122c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	li	$t0,0
12132c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.Ldkey_done:
12142c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	.set	noreorder
12152c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	move	$a0,$t0
12162c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$ra,$FRAMESIZE-1*$SZREG($sp)
12172c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$fp,$FRAMESIZE-2*$SZREG($sp)
12182c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
12192c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___ if ($flavour =~ /nubi/i);
12202c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$s3,$FRAMESIZE-11*$SZREG($sp)
12212c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$s2,$FRAMESIZE-12*$SZREG($sp)
12222c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$s1,$FRAMESIZE-13*$SZREG($sp)
12232c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$s0,$FRAMESIZE-14*$SZREG($sp)
12242c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$REG_L	$gp,$FRAMESIZE-15*$SZREG($sp)
12252c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
12262c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___;
12272c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	jr	$ra
12282c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	$PTR_ADD $sp,$FRAMESIZE
12292c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.end	private_AES_set_decrypt_key
12302c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
12312c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org}}}
12322c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
12332c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org######################################################################
12342c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org# Tables are kept in endian-neutral manner
12352c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org$code.=<<___;
12362c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.rdata
12372c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.align	6
12382c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgAES_Te:
12392c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xc6,0x63,0x63,0xa5,	0xf8,0x7c,0x7c,0x84	# Te0
12402c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xee,0x77,0x77,0x99,	0xf6,0x7b,0x7b,0x8d
12412c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xff,0xf2,0xf2,0x0d,	0xd6,0x6b,0x6b,0xbd
12422c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xde,0x6f,0x6f,0xb1,	0x91,0xc5,0xc5,0x54
12432c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x60,0x30,0x30,0x50,	0x02,0x01,0x01,0x03
12442c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xce,0x67,0x67,0xa9,	0x56,0x2b,0x2b,0x7d
12452c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xe7,0xfe,0xfe,0x19,	0xb5,0xd7,0xd7,0x62
12462c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x4d,0xab,0xab,0xe6,	0xec,0x76,0x76,0x9a
12472c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x8f,0xca,0xca,0x45,	0x1f,0x82,0x82,0x9d
12482c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x89,0xc9,0xc9,0x40,	0xfa,0x7d,0x7d,0x87
12492c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xef,0xfa,0xfa,0x15,	0xb2,0x59,0x59,0xeb
12502c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x8e,0x47,0x47,0xc9,	0xfb,0xf0,0xf0,0x0b
12512c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x41,0xad,0xad,0xec,	0xb3,0xd4,0xd4,0x67
12522c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x5f,0xa2,0xa2,0xfd,	0x45,0xaf,0xaf,0xea
12532c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x23,0x9c,0x9c,0xbf,	0x53,0xa4,0xa4,0xf7
12542c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xe4,0x72,0x72,0x96,	0x9b,0xc0,0xc0,0x5b
12552c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x75,0xb7,0xb7,0xc2,	0xe1,0xfd,0xfd,0x1c
12562c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x3d,0x93,0x93,0xae,	0x4c,0x26,0x26,0x6a
12572c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x6c,0x36,0x36,0x5a,	0x7e,0x3f,0x3f,0x41
12582c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xf5,0xf7,0xf7,0x02,	0x83,0xcc,0xcc,0x4f
12592c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x68,0x34,0x34,0x5c,	0x51,0xa5,0xa5,0xf4
12602c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xd1,0xe5,0xe5,0x34,	0xf9,0xf1,0xf1,0x08
12612c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xe2,0x71,0x71,0x93,	0xab,0xd8,0xd8,0x73
12622c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x62,0x31,0x31,0x53,	0x2a,0x15,0x15,0x3f
12632c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x08,0x04,0x04,0x0c,	0x95,0xc7,0xc7,0x52
12642c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x46,0x23,0x23,0x65,	0x9d,0xc3,0xc3,0x5e
12652c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x30,0x18,0x18,0x28,	0x37,0x96,0x96,0xa1
12662c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x0a,0x05,0x05,0x0f,	0x2f,0x9a,0x9a,0xb5
12672c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x0e,0x07,0x07,0x09,	0x24,0x12,0x12,0x36
12682c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x1b,0x80,0x80,0x9b,	0xdf,0xe2,0xe2,0x3d
12692c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xcd,0xeb,0xeb,0x26,	0x4e,0x27,0x27,0x69
12702c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x7f,0xb2,0xb2,0xcd,	0xea,0x75,0x75,0x9f
12712c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x12,0x09,0x09,0x1b,	0x1d,0x83,0x83,0x9e
12722c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x58,0x2c,0x2c,0x74,	0x34,0x1a,0x1a,0x2e
12732c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x36,0x1b,0x1b,0x2d,	0xdc,0x6e,0x6e,0xb2
12742c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xb4,0x5a,0x5a,0xee,	0x5b,0xa0,0xa0,0xfb
12752c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xa4,0x52,0x52,0xf6,	0x76,0x3b,0x3b,0x4d
12762c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xb7,0xd6,0xd6,0x61,	0x7d,0xb3,0xb3,0xce
12772c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x52,0x29,0x29,0x7b,	0xdd,0xe3,0xe3,0x3e
12782c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x5e,0x2f,0x2f,0x71,	0x13,0x84,0x84,0x97
12792c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xa6,0x53,0x53,0xf5,	0xb9,0xd1,0xd1,0x68
12802c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x00,0x00,0x00,0x00,	0xc1,0xed,0xed,0x2c
12812c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x40,0x20,0x20,0x60,	0xe3,0xfc,0xfc,0x1f
12822c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x79,0xb1,0xb1,0xc8,	0xb6,0x5b,0x5b,0xed
12832c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xd4,0x6a,0x6a,0xbe,	0x8d,0xcb,0xcb,0x46
12842c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x67,0xbe,0xbe,0xd9,	0x72,0x39,0x39,0x4b
12852c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x94,0x4a,0x4a,0xde,	0x98,0x4c,0x4c,0xd4
12862c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xb0,0x58,0x58,0xe8,	0x85,0xcf,0xcf,0x4a
12872c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xbb,0xd0,0xd0,0x6b,	0xc5,0xef,0xef,0x2a
12882c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x4f,0xaa,0xaa,0xe5,	0xed,0xfb,0xfb,0x16
12892c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x86,0x43,0x43,0xc5,	0x9a,0x4d,0x4d,0xd7
12902c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x66,0x33,0x33,0x55,	0x11,0x85,0x85,0x94
12912c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x8a,0x45,0x45,0xcf,	0xe9,0xf9,0xf9,0x10
12922c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x04,0x02,0x02,0x06,	0xfe,0x7f,0x7f,0x81
12932c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xa0,0x50,0x50,0xf0,	0x78,0x3c,0x3c,0x44
12942c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x25,0x9f,0x9f,0xba,	0x4b,0xa8,0xa8,0xe3
12952c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xa2,0x51,0x51,0xf3,	0x5d,0xa3,0xa3,0xfe
12962c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x80,0x40,0x40,0xc0,	0x05,0x8f,0x8f,0x8a
12972c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x3f,0x92,0x92,0xad,	0x21,0x9d,0x9d,0xbc
12982c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x70,0x38,0x38,0x48,	0xf1,0xf5,0xf5,0x04
12992c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x63,0xbc,0xbc,0xdf,	0x77,0xb6,0xb6,0xc1
13002c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xaf,0xda,0xda,0x75,	0x42,0x21,0x21,0x63
13012c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x20,0x10,0x10,0x30,	0xe5,0xff,0xff,0x1a
13022c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xfd,0xf3,0xf3,0x0e,	0xbf,0xd2,0xd2,0x6d
13032c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x81,0xcd,0xcd,0x4c,	0x18,0x0c,0x0c,0x14
13042c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x26,0x13,0x13,0x35,	0xc3,0xec,0xec,0x2f
13052c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xbe,0x5f,0x5f,0xe1,	0x35,0x97,0x97,0xa2
13062c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x88,0x44,0x44,0xcc,	0x2e,0x17,0x17,0x39
13072c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x93,0xc4,0xc4,0x57,	0x55,0xa7,0xa7,0xf2
13082c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xfc,0x7e,0x7e,0x82,	0x7a,0x3d,0x3d,0x47
13092c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xc8,0x64,0x64,0xac,	0xba,0x5d,0x5d,0xe7
13102c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x32,0x19,0x19,0x2b,	0xe6,0x73,0x73,0x95
13112c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xc0,0x60,0x60,0xa0,	0x19,0x81,0x81,0x98
13122c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x9e,0x4f,0x4f,0xd1,	0xa3,0xdc,0xdc,0x7f
13132c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x44,0x22,0x22,0x66,	0x54,0x2a,0x2a,0x7e
13142c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x3b,0x90,0x90,0xab,	0x0b,0x88,0x88,0x83
13152c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x8c,0x46,0x46,0xca,	0xc7,0xee,0xee,0x29
13162c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x6b,0xb8,0xb8,0xd3,	0x28,0x14,0x14,0x3c
13172c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xa7,0xde,0xde,0x79,	0xbc,0x5e,0x5e,0xe2
13182c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x16,0x0b,0x0b,0x1d,	0xad,0xdb,0xdb,0x76
13192c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xdb,0xe0,0xe0,0x3b,	0x64,0x32,0x32,0x56
13202c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x74,0x3a,0x3a,0x4e,	0x14,0x0a,0x0a,0x1e
13212c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x92,0x49,0x49,0xdb,	0x0c,0x06,0x06,0x0a
13222c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x48,0x24,0x24,0x6c,	0xb8,0x5c,0x5c,0xe4
13232c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x9f,0xc2,0xc2,0x5d,	0xbd,0xd3,0xd3,0x6e
13242c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x43,0xac,0xac,0xef,	0xc4,0x62,0x62,0xa6
13252c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x39,0x91,0x91,0xa8,	0x31,0x95,0x95,0xa4
13262c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xd3,0xe4,0xe4,0x37,	0xf2,0x79,0x79,0x8b
13272c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xd5,0xe7,0xe7,0x32,	0x8b,0xc8,0xc8,0x43
13282c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x6e,0x37,0x37,0x59,	0xda,0x6d,0x6d,0xb7
13292c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x01,0x8d,0x8d,0x8c,	0xb1,0xd5,0xd5,0x64
13302c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x9c,0x4e,0x4e,0xd2,	0x49,0xa9,0xa9,0xe0
13312c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xd8,0x6c,0x6c,0xb4,	0xac,0x56,0x56,0xfa
13322c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xf3,0xf4,0xf4,0x07,	0xcf,0xea,0xea,0x25
13332c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xca,0x65,0x65,0xaf,	0xf4,0x7a,0x7a,0x8e
13342c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x47,0xae,0xae,0xe9,	0x10,0x08,0x08,0x18
13352c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x6f,0xba,0xba,0xd5,	0xf0,0x78,0x78,0x88
13362c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x4a,0x25,0x25,0x6f,	0x5c,0x2e,0x2e,0x72
13372c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x38,0x1c,0x1c,0x24,	0x57,0xa6,0xa6,0xf1
13382c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x73,0xb4,0xb4,0xc7,	0x97,0xc6,0xc6,0x51
13392c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xcb,0xe8,0xe8,0x23,	0xa1,0xdd,0xdd,0x7c
13402c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xe8,0x74,0x74,0x9c,	0x3e,0x1f,0x1f,0x21
13412c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x96,0x4b,0x4b,0xdd,	0x61,0xbd,0xbd,0xdc
13422c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x0d,0x8b,0x8b,0x86,	0x0f,0x8a,0x8a,0x85
13432c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xe0,0x70,0x70,0x90,	0x7c,0x3e,0x3e,0x42
13442c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x71,0xb5,0xb5,0xc4,	0xcc,0x66,0x66,0xaa
13452c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x90,0x48,0x48,0xd8,	0x06,0x03,0x03,0x05
13462c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xf7,0xf6,0xf6,0x01,	0x1c,0x0e,0x0e,0x12
13472c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xc2,0x61,0x61,0xa3,	0x6a,0x35,0x35,0x5f
13482c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xae,0x57,0x57,0xf9,	0x69,0xb9,0xb9,0xd0
13492c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x17,0x86,0x86,0x91,	0x99,0xc1,0xc1,0x58
13502c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x3a,0x1d,0x1d,0x27,	0x27,0x9e,0x9e,0xb9
13512c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xd9,0xe1,0xe1,0x38,	0xeb,0xf8,0xf8,0x13
13522c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x2b,0x98,0x98,0xb3,	0x22,0x11,0x11,0x33
13532c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xd2,0x69,0x69,0xbb,	0xa9,0xd9,0xd9,0x70
13542c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x07,0x8e,0x8e,0x89,	0x33,0x94,0x94,0xa7
13552c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x2d,0x9b,0x9b,0xb6,	0x3c,0x1e,0x1e,0x22
13562c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x15,0x87,0x87,0x92,	0xc9,0xe9,0xe9,0x20
13572c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x87,0xce,0xce,0x49,	0xaa,0x55,0x55,0xff
13582c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x50,0x28,0x28,0x78,	0xa5,0xdf,0xdf,0x7a
13592c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x03,0x8c,0x8c,0x8f,	0x59,0xa1,0xa1,0xf8
13602c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x09,0x89,0x89,0x80,	0x1a,0x0d,0x0d,0x17
13612c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x65,0xbf,0xbf,0xda,	0xd7,0xe6,0xe6,0x31
13622c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x84,0x42,0x42,0xc6,	0xd0,0x68,0x68,0xb8
13632c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x82,0x41,0x41,0xc3,	0x29,0x99,0x99,0xb0
13642c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x5a,0x2d,0x2d,0x77,	0x1e,0x0f,0x0f,0x11
13652c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x7b,0xb0,0xb0,0xcb,	0xa8,0x54,0x54,0xfc
13662c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x6d,0xbb,0xbb,0xd6,	0x2c,0x16,0x16,0x3a
13672c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
13682c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5	# Te4
13692c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76
13702c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0
13712c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0
13722c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc
13732c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15
13742c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a
13752c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75
13762c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0
13772c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84
13782c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b
13792c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf
13802c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85
13812c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8
13822c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5
13832c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2
13842c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17
13852c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73
13862c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88
13872c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb
13882c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c
13892c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79
13902c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9
13912c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08
13922c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6
13932c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a
13942c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e
13952c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e
13962c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94
13972c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf
13982c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68
13992c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16
14002c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
14012c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x01,0x00,0x00,0x00,	0x02,0x00,0x00,0x00	# rcon
14022c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x04,0x00,0x00,0x00,	0x08,0x00,0x00,0x00
14032c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x10,0x00,0x00,0x00,	0x20,0x00,0x00,0x00
14042c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x40,0x00,0x00,0x00,	0x80,0x00,0x00,0x00
14052c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x1B,0x00,0x00,0x00,	0x36,0x00,0x00,0x00
14062c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
14072c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.align	6
14082c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgAES_Td:
14092c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x51,0xf4,0xa7,0x50,	0x7e,0x41,0x65,0x53	# Td0
14102c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x1a,0x17,0xa4,0xc3,	0x3a,0x27,0x5e,0x96
14112c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x3b,0xab,0x6b,0xcb,	0x1f,0x9d,0x45,0xf1
14122c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xac,0xfa,0x58,0xab,	0x4b,0xe3,0x03,0x93
14132c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x20,0x30,0xfa,0x55,	0xad,0x76,0x6d,0xf6
14142c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x88,0xcc,0x76,0x91,	0xf5,0x02,0x4c,0x25
14152c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x4f,0xe5,0xd7,0xfc,	0xc5,0x2a,0xcb,0xd7
14162c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x26,0x35,0x44,0x80,	0xb5,0x62,0xa3,0x8f
14172c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xde,0xb1,0x5a,0x49,	0x25,0xba,0x1b,0x67
14182c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x45,0xea,0x0e,0x98,	0x5d,0xfe,0xc0,0xe1
14192c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xc3,0x2f,0x75,0x02,	0x81,0x4c,0xf0,0x12
14202c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x8d,0x46,0x97,0xa3,	0x6b,0xd3,0xf9,0xc6
14212c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x03,0x8f,0x5f,0xe7,	0x15,0x92,0x9c,0x95
14222c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xbf,0x6d,0x7a,0xeb,	0x95,0x52,0x59,0xda
14232c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xd4,0xbe,0x83,0x2d,	0x58,0x74,0x21,0xd3
14242c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x49,0xe0,0x69,0x29,	0x8e,0xc9,0xc8,0x44
14252c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x75,0xc2,0x89,0x6a,	0xf4,0x8e,0x79,0x78
14262c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x99,0x58,0x3e,0x6b,	0x27,0xb9,0x71,0xdd
14272c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xbe,0xe1,0x4f,0xb6,	0xf0,0x88,0xad,0x17
14282c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xc9,0x20,0xac,0x66,	0x7d,0xce,0x3a,0xb4
14292c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x63,0xdf,0x4a,0x18,	0xe5,0x1a,0x31,0x82
14302c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x97,0x51,0x33,0x60,	0x62,0x53,0x7f,0x45
14312c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xb1,0x64,0x77,0xe0,	0xbb,0x6b,0xae,0x84
14322c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xfe,0x81,0xa0,0x1c,	0xf9,0x08,0x2b,0x94
14332c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x70,0x48,0x68,0x58,	0x8f,0x45,0xfd,0x19
14342c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x94,0xde,0x6c,0x87,	0x52,0x7b,0xf8,0xb7
14352c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xab,0x73,0xd3,0x23,	0x72,0x4b,0x02,0xe2
14362c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xe3,0x1f,0x8f,0x57,	0x66,0x55,0xab,0x2a
14372c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xb2,0xeb,0x28,0x07,	0x2f,0xb5,0xc2,0x03
14382c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x86,0xc5,0x7b,0x9a,	0xd3,0x37,0x08,0xa5
14392c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x30,0x28,0x87,0xf2,	0x23,0xbf,0xa5,0xb2
14402c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x02,0x03,0x6a,0xba,	0xed,0x16,0x82,0x5c
14412c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x8a,0xcf,0x1c,0x2b,	0xa7,0x79,0xb4,0x92
14422c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xf3,0x07,0xf2,0xf0,	0x4e,0x69,0xe2,0xa1
14432c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x65,0xda,0xf4,0xcd,	0x06,0x05,0xbe,0xd5
14442c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xd1,0x34,0x62,0x1f,	0xc4,0xa6,0xfe,0x8a
14452c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x34,0x2e,0x53,0x9d,	0xa2,0xf3,0x55,0xa0
14462c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x05,0x8a,0xe1,0x32,	0xa4,0xf6,0xeb,0x75
14472c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x0b,0x83,0xec,0x39,	0x40,0x60,0xef,0xaa
14482c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x5e,0x71,0x9f,0x06,	0xbd,0x6e,0x10,0x51
14492c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x3e,0x21,0x8a,0xf9,	0x96,0xdd,0x06,0x3d
14502c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xdd,0x3e,0x05,0xae,	0x4d,0xe6,0xbd,0x46
14512c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x91,0x54,0x8d,0xb5,	0x71,0xc4,0x5d,0x05
14522c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x04,0x06,0xd4,0x6f,	0x60,0x50,0x15,0xff
14532c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x19,0x98,0xfb,0x24,	0xd6,0xbd,0xe9,0x97
14542c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x89,0x40,0x43,0xcc,	0x67,0xd9,0x9e,0x77
14552c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xb0,0xe8,0x42,0xbd,	0x07,0x89,0x8b,0x88
14562c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xe7,0x19,0x5b,0x38,	0x79,0xc8,0xee,0xdb
14572c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xa1,0x7c,0x0a,0x47,	0x7c,0x42,0x0f,0xe9
14582c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xf8,0x84,0x1e,0xc9,	0x00,0x00,0x00,0x00
14592c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x09,0x80,0x86,0x83,	0x32,0x2b,0xed,0x48
14602c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x1e,0x11,0x70,0xac,	0x6c,0x5a,0x72,0x4e
14612c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xfd,0x0e,0xff,0xfb,	0x0f,0x85,0x38,0x56
14622c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x3d,0xae,0xd5,0x1e,	0x36,0x2d,0x39,0x27
14632c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x0a,0x0f,0xd9,0x64,	0x68,0x5c,0xa6,0x21
14642c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x9b,0x5b,0x54,0xd1,	0x24,0x36,0x2e,0x3a
14652c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x0c,0x0a,0x67,0xb1,	0x93,0x57,0xe7,0x0f
14662c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xb4,0xee,0x96,0xd2,	0x1b,0x9b,0x91,0x9e
14672c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x80,0xc0,0xc5,0x4f,	0x61,0xdc,0x20,0xa2
14682c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x5a,0x77,0x4b,0x69,	0x1c,0x12,0x1a,0x16
14692c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xe2,0x93,0xba,0x0a,	0xc0,0xa0,0x2a,0xe5
14702c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x3c,0x22,0xe0,0x43,	0x12,0x1b,0x17,0x1d
14712c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x0e,0x09,0x0d,0x0b,	0xf2,0x8b,0xc7,0xad
14722c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x2d,0xb6,0xa8,0xb9,	0x14,0x1e,0xa9,0xc8
14732c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x57,0xf1,0x19,0x85,	0xaf,0x75,0x07,0x4c
14742c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xee,0x99,0xdd,0xbb,	0xa3,0x7f,0x60,0xfd
14752c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xf7,0x01,0x26,0x9f,	0x5c,0x72,0xf5,0xbc
14762c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x44,0x66,0x3b,0xc5,	0x5b,0xfb,0x7e,0x34
14772c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x8b,0x43,0x29,0x76,	0xcb,0x23,0xc6,0xdc
14782c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xb6,0xed,0xfc,0x68,	0xb8,0xe4,0xf1,0x63
14792c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xd7,0x31,0xdc,0xca,	0x42,0x63,0x85,0x10
14802c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x13,0x97,0x22,0x40,	0x84,0xc6,0x11,0x20
14812c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x85,0x4a,0x24,0x7d,	0xd2,0xbb,0x3d,0xf8
14822c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xae,0xf9,0x32,0x11,	0xc7,0x29,0xa1,0x6d
14832c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x1d,0x9e,0x2f,0x4b,	0xdc,0xb2,0x30,0xf3
14842c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x0d,0x86,0x52,0xec,	0x77,0xc1,0xe3,0xd0
14852c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x2b,0xb3,0x16,0x6c,	0xa9,0x70,0xb9,0x99
14862c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x11,0x94,0x48,0xfa,	0x47,0xe9,0x64,0x22
14872c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xa8,0xfc,0x8c,0xc4,	0xa0,0xf0,0x3f,0x1a
14882c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x56,0x7d,0x2c,0xd8,	0x22,0x33,0x90,0xef
14892c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x87,0x49,0x4e,0xc7,	0xd9,0x38,0xd1,0xc1
14902c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x8c,0xca,0xa2,0xfe,	0x98,0xd4,0x0b,0x36
14912c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xa6,0xf5,0x81,0xcf,	0xa5,0x7a,0xde,0x28
14922c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xda,0xb7,0x8e,0x26,	0x3f,0xad,0xbf,0xa4
14932c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x2c,0x3a,0x9d,0xe4,	0x50,0x78,0x92,0x0d
14942c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x6a,0x5f,0xcc,0x9b,	0x54,0x7e,0x46,0x62
14952c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xf6,0x8d,0x13,0xc2,	0x90,0xd8,0xb8,0xe8
14962c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x2e,0x39,0xf7,0x5e,	0x82,0xc3,0xaf,0xf5
14972c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x9f,0x5d,0x80,0xbe,	0x69,0xd0,0x93,0x7c
14982c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x6f,0xd5,0x2d,0xa9,	0xcf,0x25,0x12,0xb3
14992c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xc8,0xac,0x99,0x3b,	0x10,0x18,0x7d,0xa7
15002c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xe8,0x9c,0x63,0x6e,	0xdb,0x3b,0xbb,0x7b
15012c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xcd,0x26,0x78,0x09,	0x6e,0x59,0x18,0xf4
15022c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xec,0x9a,0xb7,0x01,	0x83,0x4f,0x9a,0xa8
15032c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xe6,0x95,0x6e,0x65,	0xaa,0xff,0xe6,0x7e
15042c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x21,0xbc,0xcf,0x08,	0xef,0x15,0xe8,0xe6
15052c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xba,0xe7,0x9b,0xd9,	0x4a,0x6f,0x36,0xce
15062c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xea,0x9f,0x09,0xd4,	0x29,0xb0,0x7c,0xd6
15072c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x31,0xa4,0xb2,0xaf,	0x2a,0x3f,0x23,0x31
15082c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xc6,0xa5,0x94,0x30,	0x35,0xa2,0x66,0xc0
15092c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x74,0x4e,0xbc,0x37,	0xfc,0x82,0xca,0xa6
15102c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xe0,0x90,0xd0,0xb0,	0x33,0xa7,0xd8,0x15
15112c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xf1,0x04,0x98,0x4a,	0x41,0xec,0xda,0xf7
15122c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x7f,0xcd,0x50,0x0e,	0x17,0x91,0xf6,0x2f
15132c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x76,0x4d,0xd6,0x8d,	0x43,0xef,0xb0,0x4d
15142c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xcc,0xaa,0x4d,0x54,	0xe4,0x96,0x04,0xdf
15152c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x9e,0xd1,0xb5,0xe3,	0x4c,0x6a,0x88,0x1b
15162c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xc1,0x2c,0x1f,0xb8,	0x46,0x65,0x51,0x7f
15172c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x9d,0x5e,0xea,0x04,	0x01,0x8c,0x35,0x5d
15182c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xfa,0x87,0x74,0x73,	0xfb,0x0b,0x41,0x2e
15192c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xb3,0x67,0x1d,0x5a,	0x92,0xdb,0xd2,0x52
15202c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xe9,0x10,0x56,0x33,	0x6d,0xd6,0x47,0x13
15212c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x9a,0xd7,0x61,0x8c,	0x37,0xa1,0x0c,0x7a
15222c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x59,0xf8,0x14,0x8e,	0xeb,0x13,0x3c,0x89
15232c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xce,0xa9,0x27,0xee,	0xb7,0x61,0xc9,0x35
15242c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xe1,0x1c,0xe5,0xed,	0x7a,0x47,0xb1,0x3c
15252c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x9c,0xd2,0xdf,0x59,	0x55,0xf2,0x73,0x3f
15262c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x18,0x14,0xce,0x79,	0x73,0xc7,0x37,0xbf
15272c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x53,0xf7,0xcd,0xea,	0x5f,0xfd,0xaa,0x5b
15282c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xdf,0x3d,0x6f,0x14,	0x78,0x44,0xdb,0x86
15292c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xca,0xaf,0xf3,0x81,	0xb9,0x68,0xc4,0x3e
15302c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x38,0x24,0x34,0x2c,	0xc2,0xa3,0x40,0x5f
15312c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x16,0x1d,0xc3,0x72,	0xbc,0xe2,0x25,0x0c
15322c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x28,0x3c,0x49,0x8b,	0xff,0x0d,0x95,0x41
15332c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x39,0xa8,0x01,0x71,	0x08,0x0c,0xb3,0xde
15342c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xd8,0xb4,0xe4,0x9c,	0x64,0x56,0xc1,0x90
15352c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x7b,0xcb,0x84,0x61,	0xd5,0x32,0xb6,0x70
15362c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x48,0x6c,0x5c,0x74,	0xd0,0xb8,0x57,0x42
15372c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
15382c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38	# Td4
15392c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb
15402c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87
15412c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb
15422c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d
15432c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e
15442c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2
15452c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25
15462c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16
15472c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92
15482c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda
15492c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84
15502c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a
15512c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06
15522c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02
15532c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b
15542c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea
15552c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73
15562c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85
15572c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e
15582c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89
15592c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b
15602c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20
15612c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4
15622c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31
15632c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f
15642c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d
15652c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef
15662c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0
15672c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61
15682c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26
15692c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org.byte	0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d
15702c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org___
15712c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
15722c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgforeach (split("\n",$code)) {
15732c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	s/\`([^\`]*)\`/eval $1/ge;
15742c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
15752c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	# made-up _instructions, _xtr, _ins, _ror and _bias, cope
15762c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	# with byte order dependencies...
15772c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	if (/^\s+_/) {
15782c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	    s/(_[a-z]+\s+)(\$[0-9]+),([^,]+)(#.*)*$/$1$2,$2,$3/;
15792c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
15802c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	    s/_xtr\s+(\$[0-9]+),(\$[0-9]+),([0-9]+(\-2)*)/
15812c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org		sprintf("srl\t$1,$2,%d",$big_endian ?	eval($3)
15822c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org					:		eval("24-$3"))/e or
15832c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	    s/_ins\s+(\$[0-9]+),(\$[0-9]+),([0-9]+)/
15842c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org		sprintf("sll\t$1,$2,%d",$big_endian ?	eval($3)
15852c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org					:		eval("24-$3"))/e or
15862c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	    s/_ror\s+(\$[0-9]+),(\$[0-9]+),(\-?[0-9]+)/
15872c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org		sprintf("srl\t$1,$2,%d",$big_endian ?	eval($3)
15882c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org					:		eval("$3*-1"))/e or
15892c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	    s/_bias\s+(\$[0-9]+),(\$[0-9]+),([0-9]+)/
15902c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org		sprintf("sll\t$1,$2,%d",$big_endian ?	eval($3)
15912c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org					:		eval("($3-16)&31"))/e;
15922c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
15932c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	    s/srl\s+(\$[0-9]+),(\$[0-9]+),\-([0-9]+)/
15942c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org		sprintf("sll\t$1,$2,$3")/e				or
15952c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	    s/srl\s+(\$[0-9]+),(\$[0-9]+),0/
15962c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org		sprintf("and\t$1,$2,0xff")/e				or
15972c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	    s/(sll\s+\$[0-9]+,\$[0-9]+,0)/#$1/;
15982c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	}
15992c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
16002c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	# convert lwl/lwr and swr/swl to little-endian order
16012c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	if (!$big_endian && /^\s+[sl]w[lr]\s+/) {
16022c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	    s/([sl]wl.*)([0-9]+)\((\$[0-9]+)\)/
16032c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org		sprintf("$1%d($3)",eval("$2-$2%4+($2%4-1)&3"))/e	or
16042c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	    s/([sl]wr.*)([0-9]+)\((\$[0-9]+)\)/
16052c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org		sprintf("$1%d($3)",eval("$2-$2%4+($2%4+1)&3"))/e;
16062c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	}
16072c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
16082c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org	print $_,"\n";
16092c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org}
16102c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org
16112c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgclose STDOUT;
1612