1392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#!/usr/bin/env perl 2392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 3392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom# ==================================================================== 4392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom# Written by Andy Polyakov <appro@fy.chalmers.se> for the OpenSSL 5392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom# project. The module is, however, dual licensed under OpenSSL and 6392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom# CRYPTOGAMS licenses depending on where you obtain it. For further 7392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom# details see http://www.openssl.org/~appro/cryptogams/. 8392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom# ==================================================================== 9392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 10392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom# AES for PA-RISC. 11392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom# 12392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom# June 2009. 13392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom# 14392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom# The module is mechanical transliteration of aes-sparcv9.pl, but with 15392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom# a twist: S-boxes are compressed even further down to 1K+256B. On 16392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom# PA-7100LC performance is ~40% better than gcc 3.2 generated code and 17392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom# is about 33 cycles per byte processed with 128-bit key. Newer CPUs 18392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom# perform at 16 cycles per byte. It's not faster than code generated 19392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom# by vendor compiler, but recall that it has compressed S-boxes, which 20392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom# requires extra processing. 21392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom# 22392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom# Special thanks to polarhome.com for providing HP-UX account. 23392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 24392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom$flavour = shift; 25392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom$output = shift; 26392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromopen STDOUT,">$output"; 27392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 28392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromif ($flavour =~ /64/) { 29392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $LEVEL ="2.0W"; 30392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $SIZE_T =8; 31392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $FRAME_MARKER =80; 32392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $SAVED_RP =16; 33392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH ="std"; 34392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSHMA ="std,ma"; 35392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP ="ldd"; 36392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POPMB ="ldd,mb"; 37392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom} else { 38392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $LEVEL ="1.0"; 39392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $SIZE_T =4; 40392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $FRAME_MARKER =48; 41392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $SAVED_RP =20; 42392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH ="stw"; 43392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSHMA ="stwm"; 44392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP ="ldw"; 45392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POPMB ="ldwm"; 46392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom} 47392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 48392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom$FRAME=16*$SIZE_T+$FRAME_MARKER;# 16 saved regs + frame marker 49392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom # [+ argument transfer] 50392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom$inp="%r26"; # arg0 51392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom$out="%r25"; # arg1 52392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom$key="%r24"; # arg2 53392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 54392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom($s0,$s1,$s2,$s3) = ("%r1","%r2","%r3","%r4"); 55392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom($t0,$t1,$t2,$t3) = ("%r5","%r6","%r7","%r8"); 56392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 57392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom($acc0, $acc1, $acc2, $acc3, $acc4, $acc5, $acc6, $acc7, 58392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $acc8, $acc9,$acc10,$acc11,$acc12,$acc13,$acc14,$acc15) = 59392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom("%r9","%r10","%r11","%r12","%r13","%r14","%r15","%r16", 60392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom"%r17","%r18","%r19","%r20","%r21","%r22","%r23","%r26"); 61392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 62392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom$tbl="%r28"; 63392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom$rounds="%r29"; 64392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 65392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom$code=<<___; 66392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .LEVEL $LEVEL 67392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .SPACE \$TEXT\$ 68392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .SUBSPA \$CODE\$,QUAD=0,ALIGN=8,ACCESS=0x2C,CODE_ONLY 69392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 70392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .EXPORT AES_encrypt,ENTRY,ARGW0=GR,ARGW1=GR,ARGW2=GR 71392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .ALIGN 64 72392aa7cc7d2b122614c5393c3e357da07fd07af3Brian CarlstromAES_encrypt 73392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .PROC 74392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .CALLINFO FRAME=`$FRAME-16*$SIZE_T`,NO_CALLS,SAVE_RP,ENTRY_GR=18 75392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .ENTRY 76392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r2,-$SAVED_RP(%sp) ; standard prologue 77392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSHMA %r3,$FRAME(%sp) 78392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r4,`-$FRAME+1*$SIZE_T`(%sp) 79392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r5,`-$FRAME+2*$SIZE_T`(%sp) 80392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r6,`-$FRAME+3*$SIZE_T`(%sp) 81392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r7,`-$FRAME+4*$SIZE_T`(%sp) 82392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r8,`-$FRAME+5*$SIZE_T`(%sp) 83392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r9,`-$FRAME+6*$SIZE_T`(%sp) 84392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r10,`-$FRAME+7*$SIZE_T`(%sp) 85392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r11,`-$FRAME+8*$SIZE_T`(%sp) 86392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r12,`-$FRAME+9*$SIZE_T`(%sp) 87392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r13,`-$FRAME+10*$SIZE_T`(%sp) 88392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r14,`-$FRAME+11*$SIZE_T`(%sp) 89392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r15,`-$FRAME+12*$SIZE_T`(%sp) 90392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r16,`-$FRAME+13*$SIZE_T`(%sp) 91392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r17,`-$FRAME+14*$SIZE_T`(%sp) 92392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r18,`-$FRAME+15*$SIZE_T`(%sp) 93392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 94392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom blr %r0,$tbl 95392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldi 3,$t0 96392aa7cc7d2b122614c5393c3e357da07fd07af3Brian CarlstromL\$enc_pic 97392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom andcm $tbl,$t0,$tbl 98392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldo L\$AES_Te-L\$enc_pic($tbl),$tbl 99392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 100392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom and $inp,$t0,$t0 101392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom sub $inp,$t0,$inp 102392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 0($inp),$s0 103392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 4($inp),$s1 104392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 8($inp),$s2 105392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom comib,= 0,$t0,L\$enc_inp_aligned 106392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 12($inp),$s3 107392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 108392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom sh3addl $t0,%r0,$t0 109392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom subi 32,$t0,$t0 110392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom mtctl $t0,%cr11 111392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 16($inp),$t1 112392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom vshd $s0,$s1,$s0 113392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom vshd $s1,$s2,$s1 114392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom vshd $s2,$s3,$s2 115392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom vshd $s3,$t1,$s3 116392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 117392aa7cc7d2b122614c5393c3e357da07fd07af3Brian CarlstromL\$enc_inp_aligned 118392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom bl _parisc_AES_encrypt,%r31 119392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom nop 120392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 121392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom extru,<> $out,31,2,%r0 122392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom b L\$enc_out_aligned 123392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom nop 124392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 125392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s0,24,$acc0 126392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s0,16,$acc1 127392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $acc0,0($out) 128392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s0,8,$acc2 129392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $acc1,1($out) 130392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s1,24,$acc4 131392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $acc2,2($out) 132392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s1,16,$acc5 133392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $s0,3($out) 134392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s1,8,$acc6 135392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $acc4,4($out) 136392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s2,24,$acc0 137392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $acc5,5($out) 138392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s2,16,$acc1 139392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $acc6,6($out) 140392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s2,8,$acc2 141392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $s1,7($out) 142392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s3,24,$acc4 143392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $acc0,8($out) 144392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s3,16,$acc5 145392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $acc1,9($out) 146392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s3,8,$acc6 147392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $acc2,10($out) 148392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $s2,11($out) 149392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $acc4,12($out) 150392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $acc5,13($out) 151392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $acc6,14($out) 152392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom b L\$enc_done 153392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $s3,15($out) 154392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 155392aa7cc7d2b122614c5393c3e357da07fd07af3Brian CarlstromL\$enc_out_aligned 156392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stw $s0,0($out) 157392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stw $s1,4($out) 158392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stw $s2,8($out) 159392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stw $s3,12($out) 160392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 161392aa7cc7d2b122614c5393c3e357da07fd07af3Brian CarlstromL\$enc_done 162392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME-$SAVED_RP`(%sp),%r2 ; standard epilogue 163392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+1*$SIZE_T`(%sp),%r4 164392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+2*$SIZE_T`(%sp),%r5 165392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+3*$SIZE_T`(%sp),%r6 166392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+4*$SIZE_T`(%sp),%r7 167392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+5*$SIZE_T`(%sp),%r8 168392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+6*$SIZE_T`(%sp),%r9 169392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+7*$SIZE_T`(%sp),%r10 170392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+8*$SIZE_T`(%sp),%r11 171392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+9*$SIZE_T`(%sp),%r12 172392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+10*$SIZE_T`(%sp),%r13 173392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+11*$SIZE_T`(%sp),%r14 174392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+12*$SIZE_T`(%sp),%r15 175392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+13*$SIZE_T`(%sp),%r16 176392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+14*$SIZE_T`(%sp),%r17 177392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+15*$SIZE_T`(%sp),%r18 178392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom bv (%r2) 179392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .EXIT 180392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POPMB -$FRAME(%sp),%r3 181392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .PROCEND 182392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 183392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .ALIGN 16 184392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom_parisc_AES_encrypt 185392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .PROC 186392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .CALLINFO MILLICODE 187392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .ENTRY 188392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 240($key),$rounds 189392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 0($key),$t0 190392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 4($key),$t1 191392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 8($key),$t2 192392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $rounds,1,$rounds 193392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $t0,$s0,$s0 194392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 12($key),$t3 195392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s0,24,$acc0 196392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $t1,$s1,$s1 197392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 16($key),$t0 198392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s1,16,$acc1 199392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $t2,$s2,$s2 200392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 20($key),$t1 201392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $t3,$s3,$s3 202392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 24($key),$t2 203392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 28($key),$t3 204392aa7cc7d2b122614c5393c3e357da07fd07af3Brian CarlstromL\$enc_loop 205392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s2,8,$acc2 206392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc0($tbl),$acc0 207392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s3,0,$acc3 208392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc1($tbl),$acc1 209392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s1,24,$acc4 210392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc2($tbl),$acc2 211392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s2,16,$acc5 212392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc3($tbl),$acc3 213392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s3,8,$acc6 214392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc4($tbl),$acc4 215392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s0,0,$acc7 216392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc5($tbl),$acc5 217392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s2,24,$acc8 218392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc6($tbl),$acc6 219392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s3,16,$acc9 220392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc7($tbl),$acc7 221392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s0,8,$acc10 222392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc8($tbl),$acc8 223392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s1,0,$acc11 224392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc9($tbl),$acc9 225392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s3,24,$acc12 226392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc10($tbl),$acc10 227392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s0,16,$acc13 228392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc11($tbl),$acc11 229392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s1,8,$acc14 230392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc12($tbl),$acc12 231392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s2,0,$acc15 232392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc13($tbl),$acc13 233392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc14($tbl),$acc14 234392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc15($tbl),$acc15 235392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom addib,= -1,$rounds,L\$enc_last 236392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldo 32($key),$key 237392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 238392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc1,8,$acc1 239392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc0,$t0,$t0 240392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 0($key),$s0 241392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc2,16,$acc2 242392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc1,$t0,$t0 243392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 4($key),$s1 244392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc3,24,$acc3 245392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc2,$t0,$t0 246392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 8($key),$s2 247392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc5,8,$acc5 248392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc3,$t0,$t0 249392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 12($key),$s3 250392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc6,16,$acc6 251392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc4,$t1,$t1 252392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc7,24,$acc7 253392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc5,$t1,$t1 254392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc9,8,$acc9 255392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc6,$t1,$t1 256392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc10,16,$acc10 257392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc7,$t1,$t1 258392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc11,24,$acc11 259392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc8,$t2,$t2 260392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc13,8,$acc13 261392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc9,$t2,$t2 262392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc14,16,$acc14 263392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc10,$t2,$t2 264392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc15,24,$acc15 265392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc11,$t2,$t2 266392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc12,$acc14,$acc14 267392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc13,$t3,$t3 268392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t0,24,$acc0 269392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc14,$t3,$t3 270392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t1,16,$acc1 271392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc15,$t3,$t3 272392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 273392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t2,8,$acc2 274392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc0($tbl),$acc0 275392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t3,0,$acc3 276392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc1($tbl),$acc1 277392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t1,24,$acc4 278392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc2($tbl),$acc2 279392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t2,16,$acc5 280392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc3($tbl),$acc3 281392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t3,8,$acc6 282392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc4($tbl),$acc4 283392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t0,0,$acc7 284392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc5($tbl),$acc5 285392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t2,24,$acc8 286392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc6($tbl),$acc6 287392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t3,16,$acc9 288392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc7($tbl),$acc7 289392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t0,8,$acc10 290392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc8($tbl),$acc8 291392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t1,0,$acc11 292392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc9($tbl),$acc9 293392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t3,24,$acc12 294392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc10($tbl),$acc10 295392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t0,16,$acc13 296392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc11($tbl),$acc11 297392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t1,8,$acc14 298392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc12($tbl),$acc12 299392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t2,0,$acc15 300392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc13($tbl),$acc13 301392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc1,8,$acc1 302392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc14($tbl),$acc14 303392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 304392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc2,16,$acc2 305392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc0,$s0,$s0 306392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc15($tbl),$acc15 307392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc3,24,$acc3 308392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc1,$s0,$s0 309392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 16($key),$t0 310392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc5,8,$acc5 311392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc2,$s0,$s0 312392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 20($key),$t1 313392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc6,16,$acc6 314392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc3,$s0,$s0 315392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 24($key),$t2 316392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc7,24,$acc7 317392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc4,$s1,$s1 318392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 28($key),$t3 319392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc9,8,$acc9 320392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc5,$s1,$s1 321392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 1024+0($tbl),%r0 ; prefetch te4 322392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc10,16,$acc10 323392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc6,$s1,$s1 324392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 1024+32($tbl),%r0 ; prefetch te4 325392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc11,24,$acc11 326392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc7,$s1,$s1 327392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 1024+64($tbl),%r0 ; prefetch te4 328392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc13,8,$acc13 329392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc8,$s2,$s2 330392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 1024+96($tbl),%r0 ; prefetch te4 331392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc14,16,$acc14 332392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc9,$s2,$s2 333392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 1024+128($tbl),%r0 ; prefetch te4 334392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc15,24,$acc15 335392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc10,$s2,$s2 336392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 1024+160($tbl),%r0 ; prefetch te4 337392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s0,24,$acc0 338392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc11,$s2,$s2 339392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 1024+192($tbl),%r0 ; prefetch te4 340392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc12,$acc14,$acc14 341392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc13,$s3,$s3 342392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 1024+224($tbl),%r0 ; prefetch te4 343392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s1,16,$acc1 344392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc14,$s3,$s3 345392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom b L\$enc_loop 346392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc15,$s3,$s3 347392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 348392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .ALIGN 16 349392aa7cc7d2b122614c5393c3e357da07fd07af3Brian CarlstromL\$enc_last 350392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldo 1024($tbl),$rounds 351392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc1,8,$acc1 352392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc0,$t0,$t0 353392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 0($key),$s0 354392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc2,16,$acc2 355392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc1,$t0,$t0 356392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 4($key),$s1 357392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc3,24,$acc3 358392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc2,$t0,$t0 359392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 8($key),$s2 360392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc5,8,$acc5 361392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc3,$t0,$t0 362392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 12($key),$s3 363392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc6,16,$acc6 364392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc4,$t1,$t1 365392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc7,24,$acc7 366392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc5,$t1,$t1 367392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc9,8,$acc9 368392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc6,$t1,$t1 369392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc10,16,$acc10 370392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc7,$t1,$t1 371392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc11,24,$acc11 372392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc8,$t2,$t2 373392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc13,8,$acc13 374392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc9,$t2,$t2 375392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc14,16,$acc14 376392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc10,$t2,$t2 377392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc15,24,$acc15 378392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc11,$t2,$t2 379392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc12,$acc14,$acc14 380392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc13,$t3,$t3 381392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t0,24,$acc0 382392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc14,$t3,$t3 383392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t1,16,$acc1 384392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc15,$t3,$t3 385392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 386392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t2,8,$acc2 387392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc0($rounds),$acc0 388392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t1,24,$acc4 389392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc1($rounds),$acc1 390392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t2,16,$acc5 391392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t3,0,$acc3 392392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc2($rounds),$acc2 393392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc3($rounds),$acc3 394392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t3,8,$acc6 395392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc4($rounds),$acc4 396392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t2,24,$acc8 397392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc5($rounds),$acc5 398392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t3,16,$acc9 399392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t0,0,$acc7 400392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc6($rounds),$acc6 401392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc7($rounds),$acc7 402392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t0,8,$acc10 403392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc8($rounds),$acc8 404392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t3,24,$acc12 405392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc9($rounds),$acc9 406392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t0,16,$acc13 407392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t1,0,$acc11 408392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc10($rounds),$acc10 409392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t1,8,$acc14 410392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc11($rounds),$acc11 411392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc12($rounds),$acc12 412392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc13($rounds),$acc13 413392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t2,0,$acc15 414392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc14($rounds),$acc14 415392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 416392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom dep $acc0,7,8,$acc3 417392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc15($rounds),$acc15 418392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom dep $acc4,7,8,$acc7 419392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom dep $acc1,15,8,$acc3 420392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom dep $acc5,15,8,$acc7 421392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom dep $acc2,23,8,$acc3 422392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom dep $acc6,23,8,$acc7 423392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc3,$s0,$s0 424392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc7,$s1,$s1 425392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom dep $acc8,7,8,$acc11 426392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom dep $acc12,7,8,$acc15 427392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom dep $acc9,15,8,$acc11 428392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom dep $acc13,15,8,$acc15 429392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom dep $acc10,23,8,$acc11 430392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom dep $acc14,23,8,$acc15 431392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc11,$s2,$s2 432392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 433392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom bv (%r31) 434392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .EXIT 435392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc15,$s3,$s3 436392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .PROCEND 437392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 438392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .ALIGN 64 439392aa7cc7d2b122614c5393c3e357da07fd07af3Brian CarlstromL\$AES_Te 440392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d 441392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554 442392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d 443392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a 444392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87 445392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b 446392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea 447392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b 448392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a 449392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f 450392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108 451392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f 452392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e 453392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5 454392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d 455392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f 456392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e 457392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb 458392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce 459392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497 460392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c 461392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed 462392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b 463392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a 464392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16 465392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594 466392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81 467392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3 468392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a 469392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504 470392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163 471392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d 472392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f 473392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739 474392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47 475392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395 476392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f 477392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883 478392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c 479392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76 480392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e 481392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4 482392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6 483392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b 484392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7 485392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0 486392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25 487392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818 488392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72 489392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651 490392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21 491392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85 492392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa 493392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12 494392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0 495392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9 496392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133 497392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7 498392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920 499392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a 500392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17 501392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8 502392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11 503392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a 504392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5 505392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76 506392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0 507392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0 508392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc 509392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15 510392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a 511392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75 512392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0 513392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84 514392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b 515392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf 516392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85 517392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8 518392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5 519392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2 520392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17 521392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73 522392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88 523392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb 524392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c 525392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79 526392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9 527392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08 528392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6 529392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a 530392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e 531392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e 532392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94 533392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf 534392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68 535392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 536392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom___ 537392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 538392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom$code.=<<___; 539392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .EXPORT AES_decrypt,ENTRY,ARGW0=GR,ARGW1=GR,ARGW2=GR 540392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .ALIGN 16 541392aa7cc7d2b122614c5393c3e357da07fd07af3Brian CarlstromAES_decrypt 542392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .PROC 543392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .CALLINFO FRAME=`$FRAME-16*$SIZE_T`,NO_CALLS,SAVE_RP,ENTRY_GR=18 544392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .ENTRY 545392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r2,-$SAVED_RP(%sp) ; standard prologue 546392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSHMA %r3,$FRAME(%sp) 547392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r4,`-$FRAME+1*$SIZE_T`(%sp) 548392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r5,`-$FRAME+2*$SIZE_T`(%sp) 549392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r6,`-$FRAME+3*$SIZE_T`(%sp) 550392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r7,`-$FRAME+4*$SIZE_T`(%sp) 551392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r8,`-$FRAME+5*$SIZE_T`(%sp) 552392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r9,`-$FRAME+6*$SIZE_T`(%sp) 553392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r10,`-$FRAME+7*$SIZE_T`(%sp) 554392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r11,`-$FRAME+8*$SIZE_T`(%sp) 555392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r12,`-$FRAME+9*$SIZE_T`(%sp) 556392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r13,`-$FRAME+10*$SIZE_T`(%sp) 557392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r14,`-$FRAME+11*$SIZE_T`(%sp) 558392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r15,`-$FRAME+12*$SIZE_T`(%sp) 559392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r16,`-$FRAME+13*$SIZE_T`(%sp) 560392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r17,`-$FRAME+14*$SIZE_T`(%sp) 561392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $PUSH %r18,`-$FRAME+15*$SIZE_T`(%sp) 562392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 563392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom blr %r0,$tbl 564392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldi 3,$t0 565392aa7cc7d2b122614c5393c3e357da07fd07af3Brian CarlstromL\$dec_pic 566392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom andcm $tbl,$t0,$tbl 567392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldo L\$AES_Td-L\$dec_pic($tbl),$tbl 568392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 569392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom and $inp,$t0,$t0 570392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom sub $inp,$t0,$inp 571392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 0($inp),$s0 572392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 4($inp),$s1 573392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 8($inp),$s2 574392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom comib,= 0,$t0,L\$dec_inp_aligned 575392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 12($inp),$s3 576392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 577392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom sh3addl $t0,%r0,$t0 578392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom subi 32,$t0,$t0 579392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom mtctl $t0,%cr11 580392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 16($inp),$t1 581392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom vshd $s0,$s1,$s0 582392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom vshd $s1,$s2,$s1 583392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom vshd $s2,$s3,$s2 584392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom vshd $s3,$t1,$s3 585392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 586392aa7cc7d2b122614c5393c3e357da07fd07af3Brian CarlstromL\$dec_inp_aligned 587392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom bl _parisc_AES_decrypt,%r31 588392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom nop 589392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 590392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom extru,<> $out,31,2,%r0 591392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom b L\$dec_out_aligned 592392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom nop 593392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 594392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s0,24,$acc0 595392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s0,16,$acc1 596392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $acc0,0($out) 597392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s0,8,$acc2 598392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $acc1,1($out) 599392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s1,24,$acc4 600392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $acc2,2($out) 601392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s1,16,$acc5 602392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $s0,3($out) 603392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s1,8,$acc6 604392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $acc4,4($out) 605392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s2,24,$acc0 606392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $acc5,5($out) 607392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s2,16,$acc1 608392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $acc6,6($out) 609392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s2,8,$acc2 610392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $s1,7($out) 611392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s3,24,$acc4 612392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $acc0,8($out) 613392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s3,16,$acc5 614392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $acc1,9($out) 615392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s3,8,$acc6 616392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $acc2,10($out) 617392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $s2,11($out) 618392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $acc4,12($out) 619392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $acc5,13($out) 620392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $acc6,14($out) 621392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom b L\$dec_done 622392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stb $s3,15($out) 623392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 624392aa7cc7d2b122614c5393c3e357da07fd07af3Brian CarlstromL\$dec_out_aligned 625392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stw $s0,0($out) 626392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stw $s1,4($out) 627392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stw $s2,8($out) 628392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stw $s3,12($out) 629392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 630392aa7cc7d2b122614c5393c3e357da07fd07af3Brian CarlstromL\$dec_done 631392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME-$SAVED_RP`(%sp),%r2 ; standard epilogue 632392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+1*$SIZE_T`(%sp),%r4 633392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+2*$SIZE_T`(%sp),%r5 634392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+3*$SIZE_T`(%sp),%r6 635392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+4*$SIZE_T`(%sp),%r7 636392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+5*$SIZE_T`(%sp),%r8 637392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+6*$SIZE_T`(%sp),%r9 638392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+7*$SIZE_T`(%sp),%r10 639392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+8*$SIZE_T`(%sp),%r11 640392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+9*$SIZE_T`(%sp),%r12 641392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+10*$SIZE_T`(%sp),%r13 642392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+11*$SIZE_T`(%sp),%r14 643392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+12*$SIZE_T`(%sp),%r15 644392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+13*$SIZE_T`(%sp),%r16 645392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+14*$SIZE_T`(%sp),%r17 646392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POP `-$FRAME+15*$SIZE_T`(%sp),%r18 647392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom bv (%r2) 648392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .EXIT 649392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $POPMB -$FRAME(%sp),%r3 650392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .PROCEND 651392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 652392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .ALIGN 16 653392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom_parisc_AES_decrypt 654392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .PROC 655392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .CALLINFO MILLICODE 656392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .ENTRY 657392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 240($key),$rounds 658392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 0($key),$t0 659392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 4($key),$t1 660392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 8($key),$t2 661392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 12($key),$t3 662392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $rounds,1,$rounds 663392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $t0,$s0,$s0 664392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 16($key),$t0 665392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $t1,$s1,$s1 666392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 20($key),$t1 667392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s0,24,$acc0 668392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $t2,$s2,$s2 669392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 24($key),$t2 670392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $t3,$s3,$s3 671392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 28($key),$t3 672392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s3,16,$acc1 673392aa7cc7d2b122614c5393c3e357da07fd07af3Brian CarlstromL\$dec_loop 674392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s2,8,$acc2 675392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc0($tbl),$acc0 676392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s1,0,$acc3 677392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc1($tbl),$acc1 678392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s1,24,$acc4 679392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc2($tbl),$acc2 680392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s0,16,$acc5 681392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc3($tbl),$acc3 682392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s3,8,$acc6 683392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc4($tbl),$acc4 684392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s2,0,$acc7 685392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc5($tbl),$acc5 686392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s2,24,$acc8 687392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc6($tbl),$acc6 688392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s1,16,$acc9 689392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc7($tbl),$acc7 690392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s0,8,$acc10 691392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc8($tbl),$acc8 692392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s3,0,$acc11 693392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc9($tbl),$acc9 694392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s3,24,$acc12 695392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc10($tbl),$acc10 696392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s2,16,$acc13 697392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc11($tbl),$acc11 698392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s1,8,$acc14 699392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc12($tbl),$acc12 700392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s0,0,$acc15 701392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc13($tbl),$acc13 702392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc14($tbl),$acc14 703392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc15($tbl),$acc15 704392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom addib,= -1,$rounds,L\$dec_last 705392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldo 32($key),$key 706392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 707392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc1,8,$acc1 708392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc0,$t0,$t0 709392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 0($key),$s0 710392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc2,16,$acc2 711392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc1,$t0,$t0 712392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 4($key),$s1 713392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc3,24,$acc3 714392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc2,$t0,$t0 715392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 8($key),$s2 716392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc5,8,$acc5 717392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc3,$t0,$t0 718392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 12($key),$s3 719392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc6,16,$acc6 720392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc4,$t1,$t1 721392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc7,24,$acc7 722392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc5,$t1,$t1 723392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc9,8,$acc9 724392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc6,$t1,$t1 725392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc10,16,$acc10 726392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc7,$t1,$t1 727392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc11,24,$acc11 728392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc8,$t2,$t2 729392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc13,8,$acc13 730392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc9,$t2,$t2 731392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc14,16,$acc14 732392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc10,$t2,$t2 733392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc15,24,$acc15 734392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc11,$t2,$t2 735392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc12,$acc14,$acc14 736392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc13,$t3,$t3 737392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t0,24,$acc0 738392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc14,$t3,$t3 739392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc15,$t3,$t3 740392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t3,16,$acc1 741392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 742392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t2,8,$acc2 743392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc0($tbl),$acc0 744392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t1,0,$acc3 745392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc1($tbl),$acc1 746392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t1,24,$acc4 747392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc2($tbl),$acc2 748392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t0,16,$acc5 749392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc3($tbl),$acc3 750392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t3,8,$acc6 751392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc4($tbl),$acc4 752392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t2,0,$acc7 753392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc5($tbl),$acc5 754392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t2,24,$acc8 755392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc6($tbl),$acc6 756392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t1,16,$acc9 757392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc7($tbl),$acc7 758392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t0,8,$acc10 759392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc8($tbl),$acc8 760392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t3,0,$acc11 761392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc9($tbl),$acc9 762392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t3,24,$acc12 763392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc10($tbl),$acc10 764392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t2,16,$acc13 765392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc11($tbl),$acc11 766392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t1,8,$acc14 767392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc12($tbl),$acc12 768392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t0,0,$acc15 769392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc13($tbl),$acc13 770392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc1,8,$acc1 771392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc14($tbl),$acc14 772392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 773392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc2,16,$acc2 774392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc0,$s0,$s0 775392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldwx,s $acc15($tbl),$acc15 776392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc3,24,$acc3 777392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc1,$s0,$s0 778392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 16($key),$t0 779392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc5,8,$acc5 780392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc2,$s0,$s0 781392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 20($key),$t1 782392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc6,16,$acc6 783392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc3,$s0,$s0 784392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 24($key),$t2 785392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc7,24,$acc7 786392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc4,$s1,$s1 787392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 28($key),$t3 788392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc9,8,$acc9 789392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc5,$s1,$s1 790392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 1024+0($tbl),%r0 ; prefetch td4 791392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc10,16,$acc10 792392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc6,$s1,$s1 793392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 1024+32($tbl),%r0 ; prefetch td4 794392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc11,24,$acc11 795392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc7,$s1,$s1 796392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 1024+64($tbl),%r0 ; prefetch td4 797392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc13,8,$acc13 798392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc8,$s2,$s2 799392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 1024+96($tbl),%r0 ; prefetch td4 800392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc14,16,$acc14 801392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc9,$s2,$s2 802392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 1024+128($tbl),%r0 ; prefetch td4 803392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc15,24,$acc15 804392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc10,$s2,$s2 805392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 1024+160($tbl),%r0 ; prefetch td4 806392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s0,24,$acc0 807392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc11,$s2,$s2 808392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 1024+192($tbl),%r0 ; prefetch td4 809392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc12,$acc14,$acc14 810392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc13,$s3,$s3 811392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 1024+224($tbl),%r0 ; prefetch td4 812392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc14,$s3,$s3 813392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc15,$s3,$s3 814392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom b L\$dec_loop 815392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $s3,16,$acc1 816392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 817392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .ALIGN 16 818392aa7cc7d2b122614c5393c3e357da07fd07af3Brian CarlstromL\$dec_last 819392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldo 1024($tbl),$rounds 820392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc1,8,$acc1 821392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc0,$t0,$t0 822392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 0($key),$s0 823392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc2,16,$acc2 824392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc1,$t0,$t0 825392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 4($key),$s1 826392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc3,24,$acc3 827392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc2,$t0,$t0 828392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 8($key),$s2 829392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc5,8,$acc5 830392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc3,$t0,$t0 831392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldw 12($key),$s3 832392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc6,16,$acc6 833392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc4,$t1,$t1 834392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc7,24,$acc7 835392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc5,$t1,$t1 836392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc9,8,$acc9 837392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc6,$t1,$t1 838392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc10,16,$acc10 839392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc7,$t1,$t1 840392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc11,24,$acc11 841392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc8,$t2,$t2 842392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc13,8,$acc13 843392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc9,$t2,$t2 844392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc14,16,$acc14 845392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc10,$t2,$t2 846392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _ror $acc15,24,$acc15 847392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc11,$t2,$t2 848392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc12,$acc14,$acc14 849392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc13,$t3,$t3 850392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t0,24,$acc0 851392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc14,$t3,$t3 852392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc15,$t3,$t3 853392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t3,16,$acc1 854392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 855392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t2,8,$acc2 856392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc0($rounds),$acc0 857392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t1,24,$acc4 858392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc1($rounds),$acc1 859392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t0,16,$acc5 860392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t1,0,$acc3 861392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc2($rounds),$acc2 862392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc3($rounds),$acc3 863392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t3,8,$acc6 864392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc4($rounds),$acc4 865392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t2,24,$acc8 866392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc5($rounds),$acc5 867392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t1,16,$acc9 868392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t2,0,$acc7 869392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc6($rounds),$acc6 870392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc7($rounds),$acc7 871392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t0,8,$acc10 872392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc8($rounds),$acc8 873392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t3,24,$acc12 874392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc9($rounds),$acc9 875392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t2,16,$acc13 876392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t3,0,$acc11 877392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc10($rounds),$acc10 878392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t1,8,$acc14 879392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc11($rounds),$acc11 880392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc12($rounds),$acc12 881392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc13($rounds),$acc13 882392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom _srm $t0,0,$acc15 883392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc14($rounds),$acc14 884392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 885392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom dep $acc0,7,8,$acc3 886392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldbx $acc15($rounds),$acc15 887392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom dep $acc4,7,8,$acc7 888392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom dep $acc1,15,8,$acc3 889392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom dep $acc5,15,8,$acc7 890392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom dep $acc2,23,8,$acc3 891392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom dep $acc6,23,8,$acc7 892392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc3,$s0,$s0 893392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc7,$s1,$s1 894392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom dep $acc8,7,8,$acc11 895392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom dep $acc12,7,8,$acc15 896392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom dep $acc9,15,8,$acc11 897392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom dep $acc13,15,8,$acc15 898392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom dep $acc10,23,8,$acc11 899392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom dep $acc14,23,8,$acc15 900392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc11,$s2,$s2 901392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 902392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom bv (%r31) 903392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .EXIT 904392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom xor $acc15,$s3,$s3 905392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .PROCEND 906392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 907392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .ALIGN 64 908392aa7cc7d2b122614c5393c3e357da07fd07af3Brian CarlstromL\$AES_Td 909392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96 910392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393 911392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25 912392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f 913392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1 914392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6 915392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da 916392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844 917392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd 918392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4 919392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45 920392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94 921392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7 922392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a 923392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5 924392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c 925392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1 926392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a 927392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75 928392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051 929392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46 930392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff 931392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77 932392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb 933392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000 934392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e 935392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927 936392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a 937392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e 938392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16 939392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d 940392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8 941392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd 942392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34 943392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163 944392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120 945392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d 946392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0 947392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422 948392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef 949392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36 950392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4 951392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662 952392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5 953392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3 954392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b 955392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8 956392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6 957392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6 958392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0 959392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815 960392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f 961392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df 962392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f 963392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e 964392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713 965392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89 966392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c 967392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf 968392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86 969392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f 970392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541 971392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190 972392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .WORD 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742 973392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38 974392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb 975392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87 976392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb 977392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d 978392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e 979392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2 980392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25 981392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16 982392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92 983392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda 984392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84 985392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a 986392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06 987392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02 988392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b 989392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea 990392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73 991392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85 992392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e 993392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89 994392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b 995392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20 996392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4 997392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31 998392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f 999392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d 1000392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef 1001392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0 1002392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61 1003392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26 1004392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .BYTE 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d 1005392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .STRINGZ "AES for PA-RISC, CRYPTOGAMS by <appro\@openssl.org>" 1006392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom___ 1007392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 1008392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromforeach (split("\n",$code)) { 1009392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom s/\`([^\`]*)\`/eval $1/ge; 1010392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 1011392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom # translate made up instructons: _ror, _srm 1012392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom s/_ror(\s+)(%r[0-9]+),/shd$1$2,$2,/ or 1013392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 1014392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom s/_srm(\s+%r[0-9]+),([0-9]+),/ 1015392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom $SIZE_T==4 ? sprintf("extru%s,%d,8,",$1,31-$2) 1016392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom : sprintf("extrd,u%s,%d,8,",$1,63-$2)/e; 1017392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 1018392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom s/,\*/,/ if ($SIZE_T==4); 1019392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom print $_,"\n"; 1020392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom} 1021392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromclose STDOUT; 1022