1e0ea3921Schristos#include "mips_arch.h" 2e0ea3921Schristos 376c4f342Schristos.text 476c4f342Schristos#if !defined(__mips_eabi) && (!defined(__vxworks) || defined(__pic__)) 576c4f342Schristos.option pic2 676c4f342Schristos#endif 776c4f342Schristos.set noat 876c4f342Schristos.align 5 976c4f342Schristos.ent _mips_AES_encrypt 1076c4f342Schristos_mips_AES_encrypt: 1176c4f342Schristos .frame $29,0,$31 1276c4f342Schristos .set reorder 1376c4f342Schristos lw $12,0($6) 1476c4f342Schristos lw $13,4($6) 1576c4f342Schristos lw $14,8($6) 1676c4f342Schristos lw $15,12($6) 1776c4f342Schristos lw $30,240($6) 18e0ea3921Schristos addu $3,$6,16 1976c4f342Schristos 2076c4f342Schristos xor $8,$12 2176c4f342Schristos xor $9,$13 2276c4f342Schristos xor $10,$14 2376c4f342Schristos xor $11,$15 2476c4f342Schristos 25e0ea3921Schristos subu $30,1 2676c4f342Schristos#if defined(__mips_smartmips) 2776c4f342Schristos ext $1,$9,8,8 2876c4f342Schristos.Loop_enc: 2976c4f342Schristos ext $2,$10,8,8 3076c4f342Schristos ext $24,$11,8,8 3176c4f342Schristos ext $25,$8,8,8 3276c4f342Schristos lwxs $12,$1($7) # Te1[s1>>16] 3376c4f342Schristos ext $1,$10,16,8 3476c4f342Schristos lwxs $13,$2($7) # Te1[s2>>16] 3576c4f342Schristos ext $2,$11,16,8 3676c4f342Schristos lwxs $14,$24($7) # Te1[s3>>16] 3776c4f342Schristos ext $24,$8,16,8 3876c4f342Schristos lwxs $15,$25($7) # Te1[s0>>16] 3976c4f342Schristos ext $25,$9,16,8 4076c4f342Schristos 4176c4f342Schristos lwxs $16,$1($7) # Te2[s2>>8] 4276c4f342Schristos ext $1,$11,24,8 4376c4f342Schristos lwxs $17,$2($7) # Te2[s3>>8] 4476c4f342Schristos ext $2,$8,24,8 4576c4f342Schristos lwxs $18,$24($7) # Te2[s0>>8] 4676c4f342Schristos ext $24,$9,24,8 4776c4f342Schristos lwxs $19,$25($7) # Te2[s1>>8] 4876c4f342Schristos ext $25,$10,24,8 4976c4f342Schristos 5076c4f342Schristos lwxs $20,$1($7) # Te3[s3] 5176c4f342Schristos ext $1,$8,0,8 5276c4f342Schristos lwxs $21,$2($7) # Te3[s0] 5376c4f342Schristos ext $2,$9,0,8 5476c4f342Schristos lwxs $22,$24($7) # Te3[s1] 5576c4f342Schristos ext $24,$10,0,8 5676c4f342Schristos lwxs $23,$25($7) # Te3[s2] 5776c4f342Schristos ext $25,$11,0,8 5876c4f342Schristos 5976c4f342Schristos rotr $12,$12,24 6076c4f342Schristos rotr $13,$13,24 6176c4f342Schristos rotr $14,$14,24 6276c4f342Schristos rotr $15,$15,24 6376c4f342Schristos 6476c4f342Schristos rotr $16,$16,16 6576c4f342Schristos rotr $17,$17,16 6676c4f342Schristos rotr $18,$18,16 6776c4f342Schristos rotr $19,$19,16 6876c4f342Schristos 6976c4f342Schristos xor $12,$16 7076c4f342Schristos lwxs $16,$1($7) # Te0[s0>>24] 7176c4f342Schristos xor $13,$17 7276c4f342Schristos lwxs $17,$2($7) # Te0[s1>>24] 7376c4f342Schristos xor $14,$18 7476c4f342Schristos lwxs $18,$24($7) # Te0[s2>>24] 7576c4f342Schristos xor $15,$19 7676c4f342Schristos lwxs $19,$25($7) # Te0[s3>>24] 7776c4f342Schristos 7876c4f342Schristos rotr $20,$20,8 7976c4f342Schristos lw $8,0($3) 8076c4f342Schristos rotr $21,$21,8 8176c4f342Schristos lw $9,4($3) 8276c4f342Schristos rotr $22,$22,8 8376c4f342Schristos lw $10,8($3) 8476c4f342Schristos rotr $23,$23,8 8576c4f342Schristos lw $11,12($3) 8676c4f342Schristos 8776c4f342Schristos xor $12,$20 8876c4f342Schristos xor $13,$21 8976c4f342Schristos xor $14,$22 9076c4f342Schristos xor $15,$23 9176c4f342Schristos 9276c4f342Schristos xor $12,$16 9376c4f342Schristos xor $13,$17 9476c4f342Schristos xor $14,$18 9576c4f342Schristos xor $15,$19 9676c4f342Schristos 97e0ea3921Schristos subu $30,1 98e0ea3921Schristos addu $3,16 9976c4f342Schristos xor $8,$12 10076c4f342Schristos xor $9,$13 10176c4f342Schristos xor $10,$14 10276c4f342Schristos xor $11,$15 10376c4f342Schristos .set noreorder 10476c4f342Schristos bnez $30,.Loop_enc 10576c4f342Schristos ext $1,$9,8,8 10676c4f342Schristos 10776c4f342Schristos srl $1,$9,6 10876c4f342Schristos#else 109*1b3d6f93Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 110*1b3d6f93Schristos move $1,$7 111*1b3d6f93Schristos move $2,$7 112*1b3d6f93Schristos move $24,$7 113*1b3d6f93Schristos move $25,$7 114*1b3d6f93Schristos ext $12,$9,8,8 115*1b3d6f93Schristos.Loop_enc: 116*1b3d6f93Schristos ext $13,$10,8,8 117*1b3d6f93Schristos ext $14,$11,8,8 118*1b3d6f93Schristos ext $15,$8,8,8 119*1b3d6f93Schristos ins $1,$12,2,8 120*1b3d6f93Schristos ins $2,$13,2,8 121*1b3d6f93Schristos ins $24,$14,2,8 122*1b3d6f93Schristos ins $25,$15,2,8 123*1b3d6f93Schristos lw $12,0($1) # Te1[s1>>16] 124*1b3d6f93Schristos ext $16,$10,16,8 125*1b3d6f93Schristos lw $13,0($2) # Te1[s2>>16] 126*1b3d6f93Schristos ext $17,$11,16,8 127*1b3d6f93Schristos lw $14,0($24) # Te1[s3>>16] 128*1b3d6f93Schristos ext $18,$8,16,8 129*1b3d6f93Schristos lw $15,0($25) # Te1[s0>>16] 130*1b3d6f93Schristos ext $19,$9,16,8 131*1b3d6f93Schristos ins $1,$16,2,8 132*1b3d6f93Schristos ins $2,$17,2,8 133*1b3d6f93Schristos ins $24,$18,2,8 134*1b3d6f93Schristos ins $25,$19,2,8 135*1b3d6f93Schristos#else 13676c4f342Schristos srl $1,$9,6 13776c4f342Schristos.Loop_enc: 13876c4f342Schristos srl $2,$10,6 13976c4f342Schristos srl $24,$11,6 14076c4f342Schristos srl $25,$8,6 14176c4f342Schristos and $1,0x3fc 14276c4f342Schristos and $2,0x3fc 14376c4f342Schristos and $24,0x3fc 14476c4f342Schristos and $25,0x3fc 145e0ea3921Schristos addu $1,$7 146e0ea3921Schristos addu $2,$7 147e0ea3921Schristos addu $24,$7 148e0ea3921Schristos addu $25,$7 14976c4f342Schristos lwl $12,2($1) # Te1[s1>>16] 15076c4f342Schristos lwl $13,2($2) # Te1[s2>>16] 15176c4f342Schristos lwl $14,2($24) # Te1[s3>>16] 15276c4f342Schristos lwl $15,2($25) # Te1[s0>>16] 15376c4f342Schristos lwr $12,3($1) # Te1[s1>>16] 15476c4f342Schristos srl $1,$10,14 15576c4f342Schristos lwr $13,3($2) # Te1[s2>>16] 15676c4f342Schristos srl $2,$11,14 15776c4f342Schristos lwr $14,3($24) # Te1[s3>>16] 15876c4f342Schristos srl $24,$8,14 15976c4f342Schristos lwr $15,3($25) # Te1[s0>>16] 16076c4f342Schristos srl $25,$9,14 16176c4f342Schristos and $1,0x3fc 16276c4f342Schristos and $2,0x3fc 16376c4f342Schristos and $24,0x3fc 16476c4f342Schristos and $25,0x3fc 165e0ea3921Schristos addu $1,$7 166e0ea3921Schristos addu $2,$7 167e0ea3921Schristos addu $24,$7 168e0ea3921Schristos addu $25,$7 169*1b3d6f93Schristos#endif 17076c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 17176c4f342Schristos rotr $12,$12,24 17276c4f342Schristos rotr $13,$13,24 17376c4f342Schristos rotr $14,$14,24 17476c4f342Schristos rotr $15,$15,24 17576c4f342Schristos# if defined(_MIPSEL) 17676c4f342Schristos lw $16,0($1) # Te2[s2>>8] 177*1b3d6f93Schristos ext $20,$11,24,8 17876c4f342Schristos lw $17,0($2) # Te2[s3>>8] 179*1b3d6f93Schristos ext $21,$8,24,8 18076c4f342Schristos lw $18,0($24) # Te2[s0>>8] 181*1b3d6f93Schristos ext $22,$9,24,8 18276c4f342Schristos lw $19,0($25) # Te2[s1>>8] 183*1b3d6f93Schristos ext $23,$10,24,8 184*1b3d6f93Schristos ins $1,$20,2,8 185*1b3d6f93Schristos ins $2,$21,2,8 186*1b3d6f93Schristos ins $24,$22,2,8 187*1b3d6f93Schristos ins $25,$23,2,8 18876c4f342Schristos 18976c4f342Schristos lw $20,0($1) # Te3[s3] 19076c4f342Schristos ins $1,$8,2,8 19176c4f342Schristos lw $21,0($2) # Te3[s0] 19276c4f342Schristos ins $2,$9,2,8 19376c4f342Schristos lw $22,0($24) # Te3[s1] 19476c4f342Schristos ins $24,$10,2,8 19576c4f342Schristos lw $23,0($25) # Te3[s2] 19676c4f342Schristos ins $25,$11,2,8 19776c4f342Schristos# else 19876c4f342Schristos lw $16,0($1) # Te2[s2>>8] 19976c4f342Schristos ins $1,$11,2,8 20076c4f342Schristos lw $17,0($2) # Te2[s3>>8] 20176c4f342Schristos ins $2,$8,2,8 20276c4f342Schristos lw $18,0($24) # Te2[s0>>8] 20376c4f342Schristos ins $24,$9,2,8 20476c4f342Schristos lw $19,0($25) # Te2[s1>>8] 20576c4f342Schristos ins $25,$10,2,8 20676c4f342Schristos 20776c4f342Schristos lw $20,0($1) # Te3[s3] 20876c4f342Schristos sll $1,$8,2 20976c4f342Schristos lw $21,0($2) # Te3[s0] 21076c4f342Schristos sll $2,$9,2 21176c4f342Schristos lw $22,0($24) # Te3[s1] 21276c4f342Schristos sll $24,$10,2 21376c4f342Schristos lw $23,0($25) # Te3[s2] 21476c4f342Schristos sll $25,$11,2 21576c4f342Schristos 21676c4f342Schristos and $1,0x3fc 21776c4f342Schristos and $2,0x3fc 21876c4f342Schristos and $24,0x3fc 21976c4f342Schristos and $25,0x3fc 220e0ea3921Schristos addu $1,$7 221e0ea3921Schristos addu $2,$7 222e0ea3921Schristos addu $24,$7 223e0ea3921Schristos addu $25,$7 22476c4f342Schristos# endif 22576c4f342Schristos rotr $16,$16,16 22676c4f342Schristos rotr $17,$17,16 22776c4f342Schristos rotr $18,$18,16 22876c4f342Schristos rotr $19,$19,16 22976c4f342Schristos 23076c4f342Schristos rotr $20,$20,8 23176c4f342Schristos rotr $21,$21,8 23276c4f342Schristos rotr $22,$22,8 23376c4f342Schristos rotr $23,$23,8 23476c4f342Schristos#else 23576c4f342Schristos lwl $16,1($1) # Te2[s2>>8] 23676c4f342Schristos lwl $17,1($2) # Te2[s3>>8] 23776c4f342Schristos lwl $18,1($24) # Te2[s0>>8] 23876c4f342Schristos lwl $19,1($25) # Te2[s1>>8] 23976c4f342Schristos lwr $16,2($1) # Te2[s2>>8] 24076c4f342Schristos srl $1,$11,22 24176c4f342Schristos lwr $17,2($2) # Te2[s3>>8] 24276c4f342Schristos srl $2,$8,22 24376c4f342Schristos lwr $18,2($24) # Te2[s0>>8] 24476c4f342Schristos srl $24,$9,22 24576c4f342Schristos lwr $19,2($25) # Te2[s1>>8] 24676c4f342Schristos srl $25,$10,22 24776c4f342Schristos 24876c4f342Schristos and $1,0x3fc 24976c4f342Schristos and $2,0x3fc 25076c4f342Schristos and $24,0x3fc 25176c4f342Schristos and $25,0x3fc 252e0ea3921Schristos addu $1,$7 253e0ea3921Schristos addu $2,$7 254e0ea3921Schristos addu $24,$7 255e0ea3921Schristos addu $25,$7 25676c4f342Schristos lwl $20,0($1) # Te3[s3] 25776c4f342Schristos lwl $21,0($2) # Te3[s0] 25876c4f342Schristos lwl $22,0($24) # Te3[s1] 25976c4f342Schristos lwl $23,0($25) # Te3[s2] 26076c4f342Schristos lwr $20,1($1) # Te3[s3] 26176c4f342Schristos sll $1,$8,2 26276c4f342Schristos lwr $21,1($2) # Te3[s0] 26376c4f342Schristos sll $2,$9,2 26476c4f342Schristos lwr $22,1($24) # Te3[s1] 26576c4f342Schristos sll $24,$10,2 26676c4f342Schristos lwr $23,1($25) # Te3[s2] 26776c4f342Schristos sll $25,$11,2 26876c4f342Schristos 26976c4f342Schristos and $1,0x3fc 27076c4f342Schristos and $2,0x3fc 27176c4f342Schristos and $24,0x3fc 27276c4f342Schristos and $25,0x3fc 273e0ea3921Schristos addu $1,$7 274e0ea3921Schristos addu $2,$7 275e0ea3921Schristos addu $24,$7 276e0ea3921Schristos addu $25,$7 27776c4f342Schristos#endif 27876c4f342Schristos xor $12,$16 27976c4f342Schristos lw $16,0($1) # Te0[s0>>24] 28076c4f342Schristos xor $13,$17 28176c4f342Schristos lw $17,0($2) # Te0[s1>>24] 28276c4f342Schristos xor $14,$18 28376c4f342Schristos lw $18,0($24) # Te0[s2>>24] 28476c4f342Schristos xor $15,$19 28576c4f342Schristos lw $19,0($25) # Te0[s3>>24] 28676c4f342Schristos 28776c4f342Schristos xor $12,$20 28876c4f342Schristos lw $8,0($3) 28976c4f342Schristos xor $13,$21 29076c4f342Schristos lw $9,4($3) 29176c4f342Schristos xor $14,$22 29276c4f342Schristos lw $10,8($3) 29376c4f342Schristos xor $15,$23 29476c4f342Schristos lw $11,12($3) 29576c4f342Schristos 29676c4f342Schristos xor $12,$16 29776c4f342Schristos xor $13,$17 29876c4f342Schristos xor $14,$18 29976c4f342Schristos xor $15,$19 30076c4f342Schristos 301e0ea3921Schristos subu $30,1 302e0ea3921Schristos addu $3,16 30376c4f342Schristos xor $8,$12 30476c4f342Schristos xor $9,$13 30576c4f342Schristos xor $10,$14 30676c4f342Schristos xor $11,$15 30776c4f342Schristos .set noreorder 30876c4f342Schristos bnez $30,.Loop_enc 309*1b3d6f93Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 310*1b3d6f93Schristos ext $12,$9,8,8 311*1b3d6f93Schristos#endif 31276c4f342Schristos srl $1,$9,6 31376c4f342Schristos#endif 31476c4f342Schristos 31576c4f342Schristos .set reorder 31676c4f342Schristos srl $2,$10,6 31776c4f342Schristos srl $24,$11,6 31876c4f342Schristos srl $25,$8,6 31976c4f342Schristos and $1,0x3fc 32076c4f342Schristos and $2,0x3fc 32176c4f342Schristos and $24,0x3fc 32276c4f342Schristos and $25,0x3fc 323e0ea3921Schristos addu $1,$7 324e0ea3921Schristos addu $2,$7 325e0ea3921Schristos addu $24,$7 326e0ea3921Schristos addu $25,$7 32776c4f342Schristos lbu $12,2($1) # Te4[s1>>16] 32876c4f342Schristos srl $1,$10,14 32976c4f342Schristos lbu $13,2($2) # Te4[s2>>16] 33076c4f342Schristos srl $2,$11,14 33176c4f342Schristos lbu $14,2($24) # Te4[s3>>16] 33276c4f342Schristos srl $24,$8,14 33376c4f342Schristos lbu $15,2($25) # Te4[s0>>16] 33476c4f342Schristos srl $25,$9,14 33576c4f342Schristos 33676c4f342Schristos and $1,0x3fc 33776c4f342Schristos and $2,0x3fc 33876c4f342Schristos and $24,0x3fc 33976c4f342Schristos and $25,0x3fc 340e0ea3921Schristos addu $1,$7 341e0ea3921Schristos addu $2,$7 342e0ea3921Schristos addu $24,$7 343e0ea3921Schristos addu $25,$7 34476c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 34576c4f342Schristos# if defined(_MIPSEL) 34676c4f342Schristos lbu $16,2($1) # Te4[s2>>8] 34776c4f342Schristos ins $1,$8,2,8 34876c4f342Schristos lbu $17,2($2) # Te4[s3>>8] 34976c4f342Schristos ins $2,$9,2,8 35076c4f342Schristos lbu $18,2($24) # Te4[s0>>8] 35176c4f342Schristos ins $24,$10,2,8 35276c4f342Schristos lbu $19,2($25) # Te4[s1>>8] 35376c4f342Schristos ins $25,$11,2,8 35476c4f342Schristos 35576c4f342Schristos lbu $20,2($1) # Te4[s0>>24] 35676c4f342Schristos srl $1,$11,22 35776c4f342Schristos lbu $21,2($2) # Te4[s1>>24] 35876c4f342Schristos srl $2,$8,22 35976c4f342Schristos lbu $22,2($24) # Te4[s2>>24] 36076c4f342Schristos srl $24,$9,22 36176c4f342Schristos lbu $23,2($25) # Te4[s3>>24] 36276c4f342Schristos srl $25,$10,22 36376c4f342Schristos 36476c4f342Schristos and $1,0x3fc 36576c4f342Schristos and $2,0x3fc 36676c4f342Schristos and $24,0x3fc 36776c4f342Schristos and $25,0x3fc 368e0ea3921Schristos addu $1,$7 369e0ea3921Schristos addu $2,$7 370e0ea3921Schristos addu $24,$7 371e0ea3921Schristos addu $25,$7 37276c4f342Schristos# else 37376c4f342Schristos lbu $16,2($1) # Te4[s2>>8] 37476c4f342Schristos sll $1,$8,2 37576c4f342Schristos lbu $17,2($2) # Te4[s3>>8] 37676c4f342Schristos sll $2,$9,2 37776c4f342Schristos lbu $18,2($24) # Te4[s0>>8] 37876c4f342Schristos sll $24,$10,2 37976c4f342Schristos lbu $19,2($25) # Te4[s1>>8] 38076c4f342Schristos sll $25,$11,2 38176c4f342Schristos 38276c4f342Schristos and $1,0x3fc 38376c4f342Schristos and $2,0x3fc 38476c4f342Schristos and $24,0x3fc 38576c4f342Schristos and $25,0x3fc 386e0ea3921Schristos addu $1,$7 387e0ea3921Schristos addu $2,$7 388e0ea3921Schristos addu $24,$7 389e0ea3921Schristos addu $25,$7 39076c4f342Schristos lbu $20,2($1) # Te4[s0>>24] 39176c4f342Schristos ins $1,$11,2,8 39276c4f342Schristos lbu $21,2($2) # Te4[s1>>24] 39376c4f342Schristos ins $2,$8,2,8 39476c4f342Schristos lbu $22,2($24) # Te4[s2>>24] 39576c4f342Schristos ins $24,$9,2,8 39676c4f342Schristos lbu $23,2($25) # Te4[s3>>24] 39776c4f342Schristos ins $25,$10,2,8 39876c4f342Schristos# endif 39976c4f342Schristos sll $12,$12,8 40076c4f342Schristos sll $13,$13,8 40176c4f342Schristos sll $14,$14,8 40276c4f342Schristos sll $15,$15,8 40376c4f342Schristos 40476c4f342Schristos ins $12,$16,16,8 40576c4f342Schristos lbu $16,2($1) # Te4[s3] 40676c4f342Schristos ins $13,$17,16,8 40776c4f342Schristos lbu $17,2($2) # Te4[s0] 40876c4f342Schristos ins $14,$18,16,8 40976c4f342Schristos lbu $18,2($24) # Te4[s1] 41076c4f342Schristos ins $15,$19,16,8 41176c4f342Schristos lbu $19,2($25) # Te4[s2] 41276c4f342Schristos 41376c4f342Schristos ins $12,$20,0,8 41476c4f342Schristos lw $8,0($3) 41576c4f342Schristos ins $13,$21,0,8 41676c4f342Schristos lw $9,4($3) 41776c4f342Schristos ins $14,$22,0,8 41876c4f342Schristos lw $10,8($3) 41976c4f342Schristos ins $15,$23,0,8 42076c4f342Schristos lw $11,12($3) 42176c4f342Schristos 42276c4f342Schristos ins $12,$16,24,8 42376c4f342Schristos ins $13,$17,24,8 42476c4f342Schristos ins $14,$18,24,8 42576c4f342Schristos ins $15,$19,24,8 42676c4f342Schristos#else 42776c4f342Schristos lbu $16,2($1) # Te4[s2>>8] 42876c4f342Schristos sll $1,$8,2 42976c4f342Schristos lbu $17,2($2) # Te4[s3>>8] 43076c4f342Schristos sll $2,$9,2 43176c4f342Schristos lbu $18,2($24) # Te4[s0>>8] 43276c4f342Schristos sll $24,$10,2 43376c4f342Schristos lbu $19,2($25) # Te4[s1>>8] 43476c4f342Schristos sll $25,$11,2 43576c4f342Schristos 43676c4f342Schristos and $1,0x3fc 43776c4f342Schristos and $2,0x3fc 43876c4f342Schristos and $24,0x3fc 43976c4f342Schristos and $25,0x3fc 440e0ea3921Schristos addu $1,$7 441e0ea3921Schristos addu $2,$7 442e0ea3921Schristos addu $24,$7 443e0ea3921Schristos addu $25,$7 44476c4f342Schristos lbu $20,2($1) # Te4[s0>>24] 44576c4f342Schristos srl $1,$11,22 44676c4f342Schristos lbu $21,2($2) # Te4[s1>>24] 44776c4f342Schristos srl $2,$8,22 44876c4f342Schristos lbu $22,2($24) # Te4[s2>>24] 44976c4f342Schristos srl $24,$9,22 45076c4f342Schristos lbu $23,2($25) # Te4[s3>>24] 45176c4f342Schristos srl $25,$10,22 45276c4f342Schristos 45376c4f342Schristos and $1,0x3fc 45476c4f342Schristos and $2,0x3fc 45576c4f342Schristos and $24,0x3fc 45676c4f342Schristos and $25,0x3fc 457e0ea3921Schristos addu $1,$7 458e0ea3921Schristos addu $2,$7 459e0ea3921Schristos addu $24,$7 460e0ea3921Schristos addu $25,$7 46176c4f342Schristos 46276c4f342Schristos sll $12,$12,8 46376c4f342Schristos sll $13,$13,8 46476c4f342Schristos sll $14,$14,8 46576c4f342Schristos sll $15,$15,8 46676c4f342Schristos 46776c4f342Schristos sll $16,$16,16 46876c4f342Schristos sll $17,$17,16 46976c4f342Schristos sll $18,$18,16 47076c4f342Schristos sll $19,$19,16 47176c4f342Schristos 47276c4f342Schristos xor $12,$16 47376c4f342Schristos lbu $16,2($1) # Te4[s3] 47476c4f342Schristos xor $13,$17 47576c4f342Schristos lbu $17,2($2) # Te4[s0] 47676c4f342Schristos xor $14,$18 47776c4f342Schristos lbu $18,2($24) # Te4[s1] 47876c4f342Schristos xor $15,$19 47976c4f342Schristos lbu $19,2($25) # Te4[s2] 48076c4f342Schristos 48176c4f342Schristos #sll $20,$20,0 48276c4f342Schristos lw $8,0($3) 48376c4f342Schristos #sll $21,$21,0 48476c4f342Schristos lw $9,4($3) 48576c4f342Schristos #sll $22,$22,0 48676c4f342Schristos lw $10,8($3) 48776c4f342Schristos #sll $23,$23,0 48876c4f342Schristos lw $11,12($3) 48976c4f342Schristos 49076c4f342Schristos xor $12,$20 49176c4f342Schristos xor $13,$21 49276c4f342Schristos xor $14,$22 49376c4f342Schristos xor $15,$23 49476c4f342Schristos 49576c4f342Schristos sll $16,$16,24 49676c4f342Schristos sll $17,$17,24 49776c4f342Schristos sll $18,$18,24 49876c4f342Schristos sll $19,$19,24 49976c4f342Schristos 50076c4f342Schristos xor $12,$16 50176c4f342Schristos xor $13,$17 50276c4f342Schristos xor $14,$18 50376c4f342Schristos xor $15,$19 50476c4f342Schristos#endif 50576c4f342Schristos xor $8,$12 50676c4f342Schristos xor $9,$13 50776c4f342Schristos xor $10,$14 50876c4f342Schristos xor $11,$15 50976c4f342Schristos 51076c4f342Schristos jr $31 51176c4f342Schristos.end _mips_AES_encrypt 51276c4f342Schristos 51376c4f342Schristos.align 5 51476c4f342Schristos.globl AES_encrypt 51576c4f342Schristos.ent AES_encrypt 51676c4f342SchristosAES_encrypt: 51776c4f342Schristos .frame $29,64,$31 51876c4f342Schristos .mask 0xc0ff0000,-4 51976c4f342Schristos .set noreorder 5206410c867Schristos .cpload $25 521e0ea3921Schristos subu $29,64 52276c4f342Schristos sw $31,64-1*4($29) 52376c4f342Schristos sw $30,64-2*4($29) 52476c4f342Schristos sw $23,64-3*4($29) 52576c4f342Schristos sw $22,64-4*4($29) 52676c4f342Schristos sw $21,64-5*4($29) 52776c4f342Schristos sw $20,64-6*4($29) 52876c4f342Schristos sw $19,64-7*4($29) 52976c4f342Schristos sw $18,64-8*4($29) 53076c4f342Schristos sw $17,64-9*4($29) 53176c4f342Schristos sw $16,64-10*4($29) 53276c4f342Schristos .set reorder 53376c4f342Schristos la $7,AES_Te # PIC-ified 'load address' 53476c4f342Schristos 535e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 536e0ea3921Schristos lw $8,0($4) 537e0ea3921Schristos lw $9,4($4) 538e0ea3921Schristos lw $10,8($4) 539e0ea3921Schristos lw $11,12($4) 540e0ea3921Schristos#else 54176c4f342Schristos lwl $8,0+3($4) 54276c4f342Schristos lwl $9,4+3($4) 54376c4f342Schristos lwl $10,8+3($4) 54476c4f342Schristos lwl $11,12+3($4) 54576c4f342Schristos lwr $8,0+0($4) 54676c4f342Schristos lwr $9,4+0($4) 54776c4f342Schristos lwr $10,8+0($4) 54876c4f342Schristos lwr $11,12+0($4) 549e0ea3921Schristos#endif 55076c4f342Schristos 55176c4f342Schristos bal _mips_AES_encrypt 55276c4f342Schristos 553e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 554e0ea3921Schristos sw $8,0($5) 555e0ea3921Schristos sw $9,4($5) 556e0ea3921Schristos sw $10,8($5) 557e0ea3921Schristos sw $11,12($5) 558e0ea3921Schristos#else 55976c4f342Schristos swr $8,0+0($5) 56076c4f342Schristos swr $9,4+0($5) 56176c4f342Schristos swr $10,8+0($5) 56276c4f342Schristos swr $11,12+0($5) 56376c4f342Schristos swl $8,0+3($5) 56476c4f342Schristos swl $9,4+3($5) 56576c4f342Schristos swl $10,8+3($5) 56676c4f342Schristos swl $11,12+3($5) 567e0ea3921Schristos#endif 56876c4f342Schristos 56976c4f342Schristos .set noreorder 57076c4f342Schristos lw $31,64-1*4($29) 57176c4f342Schristos lw $30,64-2*4($29) 57276c4f342Schristos lw $23,64-3*4($29) 57376c4f342Schristos lw $22,64-4*4($29) 57476c4f342Schristos lw $21,64-5*4($29) 57576c4f342Schristos lw $20,64-6*4($29) 57676c4f342Schristos lw $19,64-7*4($29) 57776c4f342Schristos lw $18,64-8*4($29) 57876c4f342Schristos lw $17,64-9*4($29) 57976c4f342Schristos lw $16,64-10*4($29) 58076c4f342Schristos jr $31 581e0ea3921Schristos addu $29,64 58276c4f342Schristos.end AES_encrypt 58376c4f342Schristos.align 5 58476c4f342Schristos.ent _mips_AES_decrypt 58576c4f342Schristos_mips_AES_decrypt: 58676c4f342Schristos .frame $29,0,$31 58776c4f342Schristos .set reorder 58876c4f342Schristos lw $12,0($6) 58976c4f342Schristos lw $13,4($6) 59076c4f342Schristos lw $14,8($6) 59176c4f342Schristos lw $15,12($6) 59276c4f342Schristos lw $30,240($6) 593e0ea3921Schristos addu $3,$6,16 59476c4f342Schristos 59576c4f342Schristos xor $8,$12 59676c4f342Schristos xor $9,$13 59776c4f342Schristos xor $10,$14 59876c4f342Schristos xor $11,$15 59976c4f342Schristos 600e0ea3921Schristos subu $30,1 60176c4f342Schristos#if defined(__mips_smartmips) 60276c4f342Schristos ext $1,$11,8,8 60376c4f342Schristos.Loop_dec: 60476c4f342Schristos ext $2,$8,8,8 60576c4f342Schristos ext $24,$9,8,8 60676c4f342Schristos ext $25,$10,8,8 60776c4f342Schristos lwxs $12,$1($7) # Td1[s3>>16] 60876c4f342Schristos ext $1,$10,16,8 60976c4f342Schristos lwxs $13,$2($7) # Td1[s0>>16] 61076c4f342Schristos ext $2,$11,16,8 61176c4f342Schristos lwxs $14,$24($7) # Td1[s1>>16] 61276c4f342Schristos ext $24,$8,16,8 61376c4f342Schristos lwxs $15,$25($7) # Td1[s2>>16] 61476c4f342Schristos ext $25,$9,16,8 61576c4f342Schristos 61676c4f342Schristos lwxs $16,$1($7) # Td2[s2>>8] 61776c4f342Schristos ext $1,$9,24,8 61876c4f342Schristos lwxs $17,$2($7) # Td2[s3>>8] 61976c4f342Schristos ext $2,$10,24,8 62076c4f342Schristos lwxs $18,$24($7) # Td2[s0>>8] 62176c4f342Schristos ext $24,$11,24,8 62276c4f342Schristos lwxs $19,$25($7) # Td2[s1>>8] 62376c4f342Schristos ext $25,$8,24,8 62476c4f342Schristos 62576c4f342Schristos lwxs $20,$1($7) # Td3[s1] 62676c4f342Schristos ext $1,$8,0,8 62776c4f342Schristos lwxs $21,$2($7) # Td3[s2] 62876c4f342Schristos ext $2,$9,0,8 62976c4f342Schristos lwxs $22,$24($7) # Td3[s3] 63076c4f342Schristos ext $24,$10,0,8 63176c4f342Schristos lwxs $23,$25($7) # Td3[s0] 63276c4f342Schristos ext $25,$11,0,8 63376c4f342Schristos 63476c4f342Schristos rotr $12,$12,24 63576c4f342Schristos rotr $13,$13,24 63676c4f342Schristos rotr $14,$14,24 63776c4f342Schristos rotr $15,$15,24 63876c4f342Schristos 63976c4f342Schristos rotr $16,$16,16 64076c4f342Schristos rotr $17,$17,16 64176c4f342Schristos rotr $18,$18,16 64276c4f342Schristos rotr $19,$19,16 64376c4f342Schristos 64476c4f342Schristos xor $12,$16 64576c4f342Schristos lwxs $16,$1($7) # Td0[s0>>24] 64676c4f342Schristos xor $13,$17 64776c4f342Schristos lwxs $17,$2($7) # Td0[s1>>24] 64876c4f342Schristos xor $14,$18 64976c4f342Schristos lwxs $18,$24($7) # Td0[s2>>24] 65076c4f342Schristos xor $15,$19 65176c4f342Schristos lwxs $19,$25($7) # Td0[s3>>24] 65276c4f342Schristos 65376c4f342Schristos rotr $20,$20,8 65476c4f342Schristos lw $8,0($3) 65576c4f342Schristos rotr $21,$21,8 65676c4f342Schristos lw $9,4($3) 65776c4f342Schristos rotr $22,$22,8 65876c4f342Schristos lw $10,8($3) 65976c4f342Schristos rotr $23,$23,8 66076c4f342Schristos lw $11,12($3) 66176c4f342Schristos 66276c4f342Schristos xor $12,$20 66376c4f342Schristos xor $13,$21 66476c4f342Schristos xor $14,$22 66576c4f342Schristos xor $15,$23 66676c4f342Schristos 66776c4f342Schristos xor $12,$16 66876c4f342Schristos xor $13,$17 66976c4f342Schristos xor $14,$18 67076c4f342Schristos xor $15,$19 67176c4f342Schristos 672e0ea3921Schristos subu $30,1 673e0ea3921Schristos addu $3,16 67476c4f342Schristos xor $8,$12 67576c4f342Schristos xor $9,$13 67676c4f342Schristos xor $10,$14 67776c4f342Schristos xor $11,$15 67876c4f342Schristos .set noreorder 67976c4f342Schristos bnez $30,.Loop_dec 68076c4f342Schristos ext $1,$11,8,8 68176c4f342Schristos 68276c4f342Schristos srl $1,$11,6 68376c4f342Schristos#else 684*1b3d6f93Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 685*1b3d6f93Schristos move $1,$7 686*1b3d6f93Schristos move $2,$7 687*1b3d6f93Schristos move $24,$7 688*1b3d6f93Schristos move $25,$7 689*1b3d6f93Schristos ext $12,$11,8,8 690*1b3d6f93Schristos.Loop_dec: 691*1b3d6f93Schristos ext $13,$8,8,8 692*1b3d6f93Schristos ext $14,$9,8,8 693*1b3d6f93Schristos ext $15,$10,8,8 694*1b3d6f93Schristos ins $1,$12,2,8 695*1b3d6f93Schristos ins $2,$13,2,8 696*1b3d6f93Schristos ins $24,$14,2,8 697*1b3d6f93Schristos ins $25,$15,2,8 698*1b3d6f93Schristos lw $12,0($1) # Td1[s3>>16] 699*1b3d6f93Schristos ext $16,$10,16,8 700*1b3d6f93Schristos lw $13,0($2) # Td1[s0>>16] 701*1b3d6f93Schristos ext $17,$11,16,8 702*1b3d6f93Schristos lw $14,0($24) # Td1[s1>>16] 703*1b3d6f93Schristos ext $18,$8,16,8 704*1b3d6f93Schristos lw $15,0($25) # Td1[s2>>16] 705*1b3d6f93Schristos ext $19,$9,16,8 706*1b3d6f93Schristos ins $1,$16,2,8 707*1b3d6f93Schristos ins $2,$17,2,8 708*1b3d6f93Schristos ins $24,$18,2,8 709*1b3d6f93Schristos ins $25,$19,2,8 710*1b3d6f93Schristos#else 71176c4f342Schristos srl $1,$11,6 71276c4f342Schristos.Loop_dec: 71376c4f342Schristos srl $2,$8,6 71476c4f342Schristos srl $24,$9,6 71576c4f342Schristos srl $25,$10,6 71676c4f342Schristos and $1,0x3fc 71776c4f342Schristos and $2,0x3fc 71876c4f342Schristos and $24,0x3fc 71976c4f342Schristos and $25,0x3fc 720e0ea3921Schristos addu $1,$7 721e0ea3921Schristos addu $2,$7 722e0ea3921Schristos addu $24,$7 723e0ea3921Schristos addu $25,$7 72476c4f342Schristos lwl $12,2($1) # Td1[s3>>16] 72576c4f342Schristos lwl $13,2($2) # Td1[s0>>16] 72676c4f342Schristos lwl $14,2($24) # Td1[s1>>16] 72776c4f342Schristos lwl $15,2($25) # Td1[s2>>16] 72876c4f342Schristos lwr $12,3($1) # Td1[s3>>16] 72976c4f342Schristos srl $1,$10,14 73076c4f342Schristos lwr $13,3($2) # Td1[s0>>16] 73176c4f342Schristos srl $2,$11,14 73276c4f342Schristos lwr $14,3($24) # Td1[s1>>16] 73376c4f342Schristos srl $24,$8,14 73476c4f342Schristos lwr $15,3($25) # Td1[s2>>16] 73576c4f342Schristos srl $25,$9,14 73676c4f342Schristos and $1,0x3fc 73776c4f342Schristos and $2,0x3fc 73876c4f342Schristos and $24,0x3fc 73976c4f342Schristos and $25,0x3fc 740e0ea3921Schristos addu $1,$7 741e0ea3921Schristos addu $2,$7 742e0ea3921Schristos addu $24,$7 743e0ea3921Schristos addu $25,$7 744*1b3d6f93Schristos#endif 74576c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 74676c4f342Schristos rotr $12,$12,24 74776c4f342Schristos rotr $13,$13,24 74876c4f342Schristos rotr $14,$14,24 74976c4f342Schristos rotr $15,$15,24 75076c4f342Schristos# if defined(_MIPSEL) 75176c4f342Schristos lw $16,0($1) # Td2[s2>>8] 752*1b3d6f93Schristos ext $20,$9,24,8 75376c4f342Schristos lw $17,0($2) # Td2[s3>>8] 754*1b3d6f93Schristos ext $21,$10,24,8 75576c4f342Schristos lw $18,0($24) # Td2[s0>>8] 756*1b3d6f93Schristos ext $22,$11,24,8 75776c4f342Schristos lw $19,0($25) # Td2[s1>>8] 758*1b3d6f93Schristos ext $23,$8,24,8 759*1b3d6f93Schristos ins $1,$20,2,8 760*1b3d6f93Schristos ins $2,$21,2,8 761*1b3d6f93Schristos ins $24,$22,2,8 762*1b3d6f93Schristos ins $25,$23,2,8 76376c4f342Schristos lw $20,0($1) # Td3[s1] 76476c4f342Schristos ins $1,$8,2,8 76576c4f342Schristos lw $21,0($2) # Td3[s2] 76676c4f342Schristos ins $2,$9,2,8 76776c4f342Schristos lw $22,0($24) # Td3[s3] 76876c4f342Schristos ins $24,$10,2,8 76976c4f342Schristos lw $23,0($25) # Td3[s0] 77076c4f342Schristos ins $25,$11,2,8 77176c4f342Schristos#else 77276c4f342Schristos lw $16,0($1) # Td2[s2>>8] 77376c4f342Schristos ins $1,$9,2,8 77476c4f342Schristos lw $17,0($2) # Td2[s3>>8] 77576c4f342Schristos ins $2,$10,2,8 77676c4f342Schristos lw $18,0($24) # Td2[s0>>8] 77776c4f342Schristos ins $24,$11,2,8 77876c4f342Schristos lw $19,0($25) # Td2[s1>>8] 77976c4f342Schristos ins $25,$8,2,8 78076c4f342Schristos 78176c4f342Schristos lw $20,0($1) # Td3[s1] 78276c4f342Schristos sll $1,$8,2 78376c4f342Schristos lw $21,0($2) # Td3[s2] 78476c4f342Schristos sll $2,$9,2 78576c4f342Schristos lw $22,0($24) # Td3[s3] 78676c4f342Schristos sll $24,$10,2 78776c4f342Schristos lw $23,0($25) # Td3[s0] 78876c4f342Schristos sll $25,$11,2 78976c4f342Schristos 79076c4f342Schristos and $1,0x3fc 79176c4f342Schristos and $2,0x3fc 79276c4f342Schristos and $24,0x3fc 79376c4f342Schristos and $25,0x3fc 794e0ea3921Schristos addu $1,$7 795e0ea3921Schristos addu $2,$7 796e0ea3921Schristos addu $24,$7 797e0ea3921Schristos addu $25,$7 79876c4f342Schristos#endif 79976c4f342Schristos rotr $16,$16,16 80076c4f342Schristos rotr $17,$17,16 80176c4f342Schristos rotr $18,$18,16 80276c4f342Schristos rotr $19,$19,16 80376c4f342Schristos 80476c4f342Schristos rotr $20,$20,8 80576c4f342Schristos rotr $21,$21,8 80676c4f342Schristos rotr $22,$22,8 80776c4f342Schristos rotr $23,$23,8 80876c4f342Schristos#else 80976c4f342Schristos lwl $16,1($1) # Td2[s2>>8] 81076c4f342Schristos lwl $17,1($2) # Td2[s3>>8] 81176c4f342Schristos lwl $18,1($24) # Td2[s0>>8] 81276c4f342Schristos lwl $19,1($25) # Td2[s1>>8] 81376c4f342Schristos lwr $16,2($1) # Td2[s2>>8] 81476c4f342Schristos srl $1,$9,22 81576c4f342Schristos lwr $17,2($2) # Td2[s3>>8] 81676c4f342Schristos srl $2,$10,22 81776c4f342Schristos lwr $18,2($24) # Td2[s0>>8] 81876c4f342Schristos srl $24,$11,22 81976c4f342Schristos lwr $19,2($25) # Td2[s1>>8] 82076c4f342Schristos srl $25,$8,22 82176c4f342Schristos 82276c4f342Schristos and $1,0x3fc 82376c4f342Schristos and $2,0x3fc 82476c4f342Schristos and $24,0x3fc 82576c4f342Schristos and $25,0x3fc 826e0ea3921Schristos addu $1,$7 827e0ea3921Schristos addu $2,$7 828e0ea3921Schristos addu $24,$7 829e0ea3921Schristos addu $25,$7 83076c4f342Schristos lwl $20,0($1) # Td3[s1] 83176c4f342Schristos lwl $21,0($2) # Td3[s2] 83276c4f342Schristos lwl $22,0($24) # Td3[s3] 83376c4f342Schristos lwl $23,0($25) # Td3[s0] 83476c4f342Schristos lwr $20,1($1) # Td3[s1] 83576c4f342Schristos sll $1,$8,2 83676c4f342Schristos lwr $21,1($2) # Td3[s2] 83776c4f342Schristos sll $2,$9,2 83876c4f342Schristos lwr $22,1($24) # Td3[s3] 83976c4f342Schristos sll $24,$10,2 84076c4f342Schristos lwr $23,1($25) # Td3[s0] 84176c4f342Schristos sll $25,$11,2 84276c4f342Schristos 84376c4f342Schristos and $1,0x3fc 84476c4f342Schristos and $2,0x3fc 84576c4f342Schristos and $24,0x3fc 84676c4f342Schristos and $25,0x3fc 847e0ea3921Schristos addu $1,$7 848e0ea3921Schristos addu $2,$7 849e0ea3921Schristos addu $24,$7 850e0ea3921Schristos addu $25,$7 85176c4f342Schristos#endif 85276c4f342Schristos 85376c4f342Schristos xor $12,$16 85476c4f342Schristos lw $16,0($1) # Td0[s0>>24] 85576c4f342Schristos xor $13,$17 85676c4f342Schristos lw $17,0($2) # Td0[s1>>24] 85776c4f342Schristos xor $14,$18 85876c4f342Schristos lw $18,0($24) # Td0[s2>>24] 85976c4f342Schristos xor $15,$19 86076c4f342Schristos lw $19,0($25) # Td0[s3>>24] 86176c4f342Schristos 86276c4f342Schristos xor $12,$20 86376c4f342Schristos lw $8,0($3) 86476c4f342Schristos xor $13,$21 86576c4f342Schristos lw $9,4($3) 86676c4f342Schristos xor $14,$22 86776c4f342Schristos lw $10,8($3) 86876c4f342Schristos xor $15,$23 86976c4f342Schristos lw $11,12($3) 87076c4f342Schristos 87176c4f342Schristos xor $12,$16 87276c4f342Schristos xor $13,$17 87376c4f342Schristos xor $14,$18 87476c4f342Schristos xor $15,$19 87576c4f342Schristos 876e0ea3921Schristos subu $30,1 877e0ea3921Schristos addu $3,16 87876c4f342Schristos xor $8,$12 87976c4f342Schristos xor $9,$13 88076c4f342Schristos xor $10,$14 88176c4f342Schristos xor $11,$15 88276c4f342Schristos .set noreorder 88376c4f342Schristos bnez $30,.Loop_dec 884*1b3d6f93Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 885*1b3d6f93Schristos ext $12,$11,8,8 886*1b3d6f93Schristos#endif 887*1b3d6f93Schristos 88876c4f342Schristos srl $1,$11,6 88976c4f342Schristos#endif 89076c4f342Schristos 89176c4f342Schristos .set reorder 89276c4f342Schristos lw $16,1024($7) # prefetch Td4 89376c4f342Schristos srl $1,$11,8 89476c4f342Schristos lw $17,1024+32($7) 89576c4f342Schristos srl $2,$8,8 89676c4f342Schristos lw $18,1024+64($7) 89776c4f342Schristos srl $24,$9,8 89876c4f342Schristos lw $19,1024+96($7) 89976c4f342Schristos srl $25,$10,8 90076c4f342Schristos lw $20,1024+128($7) 90176c4f342Schristos and $1,0xff 90276c4f342Schristos lw $21,1024+160($7) 90376c4f342Schristos and $2,0xff 90476c4f342Schristos lw $22,1024+192($7) 90576c4f342Schristos and $24,0xff 90676c4f342Schristos lw $23,1024+224($7) 90776c4f342Schristos and $25,0xff 90876c4f342Schristos 909e0ea3921Schristos addu $1,$7 910e0ea3921Schristos addu $2,$7 911e0ea3921Schristos addu $24,$7 912e0ea3921Schristos addu $25,$7 91376c4f342Schristos lbu $12,1024($1) # Td4[s3>>16] 91476c4f342Schristos srl $1,$10,16 91576c4f342Schristos lbu $13,1024($2) # Td4[s0>>16] 91676c4f342Schristos srl $2,$11,16 91776c4f342Schristos lbu $14,1024($24) # Td4[s1>>16] 91876c4f342Schristos srl $24,$8,16 91976c4f342Schristos lbu $15,1024($25) # Td4[s2>>16] 92076c4f342Schristos srl $25,$9,16 92176c4f342Schristos 92276c4f342Schristos and $1,0xff 92376c4f342Schristos and $2,0xff 92476c4f342Schristos and $24,0xff 92576c4f342Schristos and $25,0xff 926e0ea3921Schristos addu $1,$7 927e0ea3921Schristos addu $2,$7 928e0ea3921Schristos addu $24,$7 929e0ea3921Schristos addu $25,$7 93076c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 93176c4f342Schristos# if defined(_MIPSEL) 93276c4f342Schristos lbu $16,1024($1) # Td4[s2>>8] 93376c4f342Schristos ins $1,$8,0,8 93476c4f342Schristos lbu $17,1024($2) # Td4[s3>>8] 93576c4f342Schristos ins $2,$9,0,8 93676c4f342Schristos lbu $18,1024($24) # Td4[s0>>8] 93776c4f342Schristos ins $24,$10,0,8 93876c4f342Schristos lbu $19,1024($25) # Td4[s1>>8] 93976c4f342Schristos ins $25,$11,0,8 94076c4f342Schristos 94176c4f342Schristos lbu $20,1024($1) # Td4[s0>>24] 94276c4f342Schristos srl $1,$9,24 94376c4f342Schristos lbu $21,1024($2) # Td4[s1>>24] 94476c4f342Schristos srl $2,$10,24 94576c4f342Schristos lbu $22,1024($24) # Td4[s2>>24] 94676c4f342Schristos srl $24,$11,24 94776c4f342Schristos lbu $23,1024($25) # Td4[s3>>24] 94876c4f342Schristos srl $25,$8,24 94976c4f342Schristos 950e0ea3921Schristos addu $1,$7 951e0ea3921Schristos addu $2,$7 952e0ea3921Schristos addu $24,$7 953e0ea3921Schristos addu $25,$7 95476c4f342Schristos# else 95576c4f342Schristos lbu $16,1024($1) # Td4[s2>>8] 95676c4f342Schristos and $1,$8,0xff 95776c4f342Schristos lbu $17,1024($2) # Td4[s3>>8] 95876c4f342Schristos and $2,$9,0xff 95976c4f342Schristos lbu $18,1024($24) # Td4[s0>>8] 96076c4f342Schristos and $24,$10,0xff 96176c4f342Schristos lbu $19,1024($25) # Td4[s1>>8] 96276c4f342Schristos and $25,$11,0xff 96376c4f342Schristos 964e0ea3921Schristos addu $1,$7 965e0ea3921Schristos addu $2,$7 966e0ea3921Schristos addu $24,$7 967e0ea3921Schristos addu $25,$7 96876c4f342Schristos lbu $20,1024($1) # Td4[s0>>24] 96976c4f342Schristos ins $1,$9,0,8 97076c4f342Schristos lbu $21,1024($2) # Td4[s1>>24] 97176c4f342Schristos ins $2,$10,0,8 97276c4f342Schristos lbu $22,1024($24) # Td4[s2>>24] 97376c4f342Schristos ins $24,$11,0,8 97476c4f342Schristos lbu $23,1024($25) # Td4[s3>>24] 97576c4f342Schristos ins $25,$8,0,8 97676c4f342Schristos# endif 97776c4f342Schristos sll $12,$12,8 97876c4f342Schristos sll $13,$13,8 97976c4f342Schristos sll $14,$14,8 98076c4f342Schristos sll $15,$15,8 98176c4f342Schristos 98276c4f342Schristos ins $12,$16,16,8 98376c4f342Schristos lbu $16,1024($1) # Td4[s1] 98476c4f342Schristos ins $13,$17,16,8 98576c4f342Schristos lbu $17,1024($2) # Td4[s2] 98676c4f342Schristos ins $14,$18,16,8 98776c4f342Schristos lbu $18,1024($24) # Td4[s3] 98876c4f342Schristos ins $15,$19,16,8 98976c4f342Schristos lbu $19,1024($25) # Td4[s0] 99076c4f342Schristos 99176c4f342Schristos ins $12,$20,0,8 99276c4f342Schristos lw $8,0($3) 99376c4f342Schristos ins $13,$21,0,8 99476c4f342Schristos lw $9,4($3) 99576c4f342Schristos ins $14,$22,0,8 99676c4f342Schristos lw $10,8($3) 99776c4f342Schristos ins $15,$23,0,8 99876c4f342Schristos lw $11,12($3) 99976c4f342Schristos 100076c4f342Schristos ins $12,$16,24,8 100176c4f342Schristos ins $13,$17,24,8 100276c4f342Schristos ins $14,$18,24,8 100376c4f342Schristos ins $15,$19,24,8 100476c4f342Schristos#else 100576c4f342Schristos lbu $16,1024($1) # Td4[s2>>8] 100676c4f342Schristos and $1,$8,0xff 100776c4f342Schristos lbu $17,1024($2) # Td4[s3>>8] 100876c4f342Schristos and $2,$9,0xff 100976c4f342Schristos lbu $18,1024($24) # Td4[s0>>8] 101076c4f342Schristos and $24,$10,0xff 101176c4f342Schristos lbu $19,1024($25) # Td4[s1>>8] 101276c4f342Schristos and $25,$11,0xff 101376c4f342Schristos 1014e0ea3921Schristos addu $1,$7 1015e0ea3921Schristos addu $2,$7 1016e0ea3921Schristos addu $24,$7 1017e0ea3921Schristos addu $25,$7 101876c4f342Schristos lbu $20,1024($1) # Td4[s0>>24] 101976c4f342Schristos srl $1,$9,24 102076c4f342Schristos lbu $21,1024($2) # Td4[s1>>24] 102176c4f342Schristos srl $2,$10,24 102276c4f342Schristos lbu $22,1024($24) # Td4[s2>>24] 102376c4f342Schristos srl $24,$11,24 102476c4f342Schristos lbu $23,1024($25) # Td4[s3>>24] 102576c4f342Schristos srl $25,$8,24 102676c4f342Schristos 1027e0ea3921Schristos addu $1,$7 1028e0ea3921Schristos addu $2,$7 1029e0ea3921Schristos addu $24,$7 1030e0ea3921Schristos addu $25,$7 103176c4f342Schristos 103276c4f342Schristos sll $12,$12,8 103376c4f342Schristos sll $13,$13,8 103476c4f342Schristos sll $14,$14,8 103576c4f342Schristos sll $15,$15,8 103676c4f342Schristos 103776c4f342Schristos sll $16,$16,16 103876c4f342Schristos sll $17,$17,16 103976c4f342Schristos sll $18,$18,16 104076c4f342Schristos sll $19,$19,16 104176c4f342Schristos 104276c4f342Schristos xor $12,$16 104376c4f342Schristos lbu $16,1024($1) # Td4[s1] 104476c4f342Schristos xor $13,$17 104576c4f342Schristos lbu $17,1024($2) # Td4[s2] 104676c4f342Schristos xor $14,$18 104776c4f342Schristos lbu $18,1024($24) # Td4[s3] 104876c4f342Schristos xor $15,$19 104976c4f342Schristos lbu $19,1024($25) # Td4[s0] 105076c4f342Schristos 105176c4f342Schristos #sll $20,$20,0 105276c4f342Schristos lw $8,0($3) 105376c4f342Schristos #sll $21,$21,0 105476c4f342Schristos lw $9,4($3) 105576c4f342Schristos #sll $22,$22,0 105676c4f342Schristos lw $10,8($3) 105776c4f342Schristos #sll $23,$23,0 105876c4f342Schristos lw $11,12($3) 105976c4f342Schristos 106076c4f342Schristos xor $12,$20 106176c4f342Schristos xor $13,$21 106276c4f342Schristos xor $14,$22 106376c4f342Schristos xor $15,$23 106476c4f342Schristos 106576c4f342Schristos sll $16,$16,24 106676c4f342Schristos sll $17,$17,24 106776c4f342Schristos sll $18,$18,24 106876c4f342Schristos sll $19,$19,24 106976c4f342Schristos 107076c4f342Schristos xor $12,$16 107176c4f342Schristos xor $13,$17 107276c4f342Schristos xor $14,$18 107376c4f342Schristos xor $15,$19 107476c4f342Schristos#endif 107576c4f342Schristos 107676c4f342Schristos xor $8,$12 107776c4f342Schristos xor $9,$13 107876c4f342Schristos xor $10,$14 107976c4f342Schristos xor $11,$15 108076c4f342Schristos 108176c4f342Schristos jr $31 108276c4f342Schristos.end _mips_AES_decrypt 108376c4f342Schristos 108476c4f342Schristos.align 5 108576c4f342Schristos.globl AES_decrypt 108676c4f342Schristos.ent AES_decrypt 108776c4f342SchristosAES_decrypt: 108876c4f342Schristos .frame $29,64,$31 108976c4f342Schristos .mask 0xc0ff0000,-4 109076c4f342Schristos .set noreorder 10916410c867Schristos .cpload $25 1092e0ea3921Schristos subu $29,64 109376c4f342Schristos sw $31,64-1*4($29) 109476c4f342Schristos sw $30,64-2*4($29) 109576c4f342Schristos sw $23,64-3*4($29) 109676c4f342Schristos sw $22,64-4*4($29) 109776c4f342Schristos sw $21,64-5*4($29) 109876c4f342Schristos sw $20,64-6*4($29) 109976c4f342Schristos sw $19,64-7*4($29) 110076c4f342Schristos sw $18,64-8*4($29) 110176c4f342Schristos sw $17,64-9*4($29) 110276c4f342Schristos sw $16,64-10*4($29) 110376c4f342Schristos .set reorder 110476c4f342Schristos la $7,AES_Td # PIC-ified 'load address' 110576c4f342Schristos 1106e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 1107e0ea3921Schristos lw $8,0($4) 1108e0ea3921Schristos lw $9,4($4) 1109e0ea3921Schristos lw $10,8($4) 1110e0ea3921Schristos lw $11,12($4) 1111e0ea3921Schristos#else 111276c4f342Schristos lwl $8,0+3($4) 111376c4f342Schristos lwl $9,4+3($4) 111476c4f342Schristos lwl $10,8+3($4) 111576c4f342Schristos lwl $11,12+3($4) 111676c4f342Schristos lwr $8,0+0($4) 111776c4f342Schristos lwr $9,4+0($4) 111876c4f342Schristos lwr $10,8+0($4) 111976c4f342Schristos lwr $11,12+0($4) 1120e0ea3921Schristos#endif 112176c4f342Schristos 112276c4f342Schristos bal _mips_AES_decrypt 112376c4f342Schristos 1124e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 1125e0ea3921Schristos sw $8,0($5) 1126e0ea3921Schristos sw $9,4($5) 1127e0ea3921Schristos sw $10,8($5) 1128e0ea3921Schristos sw $11,12($5) 1129e0ea3921Schristos#else 113076c4f342Schristos swr $8,0+0($5) 113176c4f342Schristos swr $9,4+0($5) 113276c4f342Schristos swr $10,8+0($5) 113376c4f342Schristos swr $11,12+0($5) 113476c4f342Schristos swl $8,0+3($5) 113576c4f342Schristos swl $9,4+3($5) 113676c4f342Schristos swl $10,8+3($5) 113776c4f342Schristos swl $11,12+3($5) 1138e0ea3921Schristos#endif 113976c4f342Schristos 114076c4f342Schristos .set noreorder 114176c4f342Schristos lw $31,64-1*4($29) 114276c4f342Schristos lw $30,64-2*4($29) 114376c4f342Schristos lw $23,64-3*4($29) 114476c4f342Schristos lw $22,64-4*4($29) 114576c4f342Schristos lw $21,64-5*4($29) 114676c4f342Schristos lw $20,64-6*4($29) 114776c4f342Schristos lw $19,64-7*4($29) 114876c4f342Schristos lw $18,64-8*4($29) 114976c4f342Schristos lw $17,64-9*4($29) 115076c4f342Schristos lw $16,64-10*4($29) 115176c4f342Schristos jr $31 1152e0ea3921Schristos addu $29,64 115376c4f342Schristos.end AES_decrypt 115476c4f342Schristos.align 5 115576c4f342Schristos.ent _mips_AES_set_encrypt_key 115676c4f342Schristos_mips_AES_set_encrypt_key: 115776c4f342Schristos .frame $29,0,$31 115876c4f342Schristos .set noreorder 115976c4f342Schristos beqz $4,.Lekey_done 116076c4f342Schristos li $2,-1 116176c4f342Schristos beqz $6,.Lekey_done 1162e0ea3921Schristos addu $3,$7,256 116376c4f342Schristos 116476c4f342Schristos .set reorder 1165e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 1166e0ea3921Schristos lw $8,0($4) # load 128 bits 1167e0ea3921Schristos lw $9,4($4) 1168e0ea3921Schristos lw $10,8($4) 1169e0ea3921Schristos lw $11,12($4) 1170e0ea3921Schristos#else 117176c4f342Schristos lwl $8,0+3($4) # load 128 bits 117276c4f342Schristos lwl $9,4+3($4) 117376c4f342Schristos lwl $10,8+3($4) 117476c4f342Schristos lwl $11,12+3($4) 117576c4f342Schristos lwr $8,0+0($4) 117676c4f342Schristos lwr $9,4+0($4) 117776c4f342Schristos lwr $10,8+0($4) 117876c4f342Schristos lwr $11,12+0($4) 1179e0ea3921Schristos#endif 1180e0ea3921Schristos li $1,128 118176c4f342Schristos .set noreorder 118276c4f342Schristos beq $5,$1,.L128bits 118376c4f342Schristos li $30,10 118476c4f342Schristos 118576c4f342Schristos .set reorder 1186e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 1187e0ea3921Schristos lw $12,16($4) # load 192 bits 1188e0ea3921Schristos lw $13,20($4) 1189e0ea3921Schristos#else 119076c4f342Schristos lwl $12,16+3($4) # load 192 bits 119176c4f342Schristos lwl $13,20+3($4) 119276c4f342Schristos lwr $12,16+0($4) 119376c4f342Schristos lwr $13,20+0($4) 1194e0ea3921Schristos#endif 1195e0ea3921Schristos li $1,192 119676c4f342Schristos .set noreorder 119776c4f342Schristos beq $5,$1,.L192bits 119876c4f342Schristos li $30,8 119976c4f342Schristos 120076c4f342Schristos .set reorder 1201e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 1202e0ea3921Schristos lw $14,24($4) # load 256 bits 1203e0ea3921Schristos lw $15,28($4) 1204e0ea3921Schristos#else 120576c4f342Schristos lwl $14,24+3($4) # load 256 bits 120676c4f342Schristos lwl $15,28+3($4) 120776c4f342Schristos lwr $14,24+0($4) 120876c4f342Schristos lwr $15,28+0($4) 1209e0ea3921Schristos#endif 1210e0ea3921Schristos li $1,256 121176c4f342Schristos .set noreorder 121276c4f342Schristos beq $5,$1,.L256bits 121376c4f342Schristos li $30,7 121476c4f342Schristos 121576c4f342Schristos b .Lekey_done 121676c4f342Schristos li $2,-2 121776c4f342Schristos 121876c4f342Schristos.align 4 121976c4f342Schristos.L128bits: 122076c4f342Schristos .set reorder 122176c4f342Schristos srl $1,$11,16 122276c4f342Schristos srl $2,$11,8 122376c4f342Schristos and $1,0xff 122476c4f342Schristos and $2,0xff 122576c4f342Schristos and $24,$11,0xff 122676c4f342Schristos srl $25,$11,24 1227e0ea3921Schristos addu $1,$7 1228e0ea3921Schristos addu $2,$7 1229e0ea3921Schristos addu $24,$7 1230e0ea3921Schristos addu $25,$7 123176c4f342Schristos lbu $1,0($1) 123276c4f342Schristos lbu $2,0($2) 123376c4f342Schristos lbu $24,0($24) 123476c4f342Schristos lbu $25,0($25) 123576c4f342Schristos 123676c4f342Schristos sw $8,0($6) 123776c4f342Schristos sw $9,4($6) 123876c4f342Schristos sw $10,8($6) 123976c4f342Schristos sw $11,12($6) 1240e0ea3921Schristos subu $30,1 1241e0ea3921Schristos addu $6,16 124276c4f342Schristos 124376c4f342Schristos sll $1,$1,8 124476c4f342Schristos #sll $2,$2,0 124576c4f342Schristos sll $24,$24,24 124676c4f342Schristos sll $25,$25,16 124776c4f342Schristos 124876c4f342Schristos xor $8,$1 124976c4f342Schristos lw $1,0($3) 125076c4f342Schristos xor $8,$2 125176c4f342Schristos xor $8,$24 125276c4f342Schristos xor $8,$25 125376c4f342Schristos xor $8,$1 125476c4f342Schristos 125576c4f342Schristos xor $9,$8 125676c4f342Schristos xor $10,$9 125776c4f342Schristos xor $11,$10 125876c4f342Schristos 125976c4f342Schristos .set noreorder 126076c4f342Schristos bnez $30,.L128bits 1261e0ea3921Schristos addu $3,4 126276c4f342Schristos 126376c4f342Schristos sw $8,0($6) 126476c4f342Schristos sw $9,4($6) 126576c4f342Schristos sw $10,8($6) 126676c4f342Schristos li $30,10 126776c4f342Schristos sw $11,12($6) 126876c4f342Schristos li $2,0 126976c4f342Schristos sw $30,80($6) 127076c4f342Schristos b .Lekey_done 1271e0ea3921Schristos subu $6,10*16 127276c4f342Schristos 127376c4f342Schristos.align 4 127476c4f342Schristos.L192bits: 127576c4f342Schristos .set reorder 127676c4f342Schristos srl $1,$13,16 127776c4f342Schristos srl $2,$13,8 127876c4f342Schristos and $1,0xff 127976c4f342Schristos and $2,0xff 128076c4f342Schristos and $24,$13,0xff 128176c4f342Schristos srl $25,$13,24 1282e0ea3921Schristos addu $1,$7 1283e0ea3921Schristos addu $2,$7 1284e0ea3921Schristos addu $24,$7 1285e0ea3921Schristos addu $25,$7 128676c4f342Schristos lbu $1,0($1) 128776c4f342Schristos lbu $2,0($2) 128876c4f342Schristos lbu $24,0($24) 128976c4f342Schristos lbu $25,0($25) 129076c4f342Schristos 129176c4f342Schristos sw $8,0($6) 129276c4f342Schristos sw $9,4($6) 129376c4f342Schristos sw $10,8($6) 129476c4f342Schristos sw $11,12($6) 129576c4f342Schristos sw $12,16($6) 129676c4f342Schristos sw $13,20($6) 1297e0ea3921Schristos subu $30,1 1298e0ea3921Schristos addu $6,24 129976c4f342Schristos 130076c4f342Schristos sll $1,$1,8 130176c4f342Schristos #sll $2,$2,0 130276c4f342Schristos sll $24,$24,24 130376c4f342Schristos sll $25,$25,16 130476c4f342Schristos 130576c4f342Schristos xor $8,$1 130676c4f342Schristos lw $1,0($3) 130776c4f342Schristos xor $8,$2 130876c4f342Schristos xor $8,$24 130976c4f342Schristos xor $8,$25 131076c4f342Schristos xor $8,$1 131176c4f342Schristos 131276c4f342Schristos xor $9,$8 131376c4f342Schristos xor $10,$9 131476c4f342Schristos xor $11,$10 131576c4f342Schristos xor $12,$11 131676c4f342Schristos xor $13,$12 131776c4f342Schristos 131876c4f342Schristos .set noreorder 131976c4f342Schristos bnez $30,.L192bits 1320e0ea3921Schristos addu $3,4 132176c4f342Schristos 132276c4f342Schristos sw $8,0($6) 132376c4f342Schristos sw $9,4($6) 132476c4f342Schristos sw $10,8($6) 132576c4f342Schristos li $30,12 132676c4f342Schristos sw $11,12($6) 132776c4f342Schristos li $2,0 132876c4f342Schristos sw $30,48($6) 132976c4f342Schristos b .Lekey_done 1330e0ea3921Schristos subu $6,12*16 133176c4f342Schristos 133276c4f342Schristos.align 4 133376c4f342Schristos.L256bits: 133476c4f342Schristos .set reorder 133576c4f342Schristos srl $1,$15,16 133676c4f342Schristos srl $2,$15,8 133776c4f342Schristos and $1,0xff 133876c4f342Schristos and $2,0xff 133976c4f342Schristos and $24,$15,0xff 134076c4f342Schristos srl $25,$15,24 1341e0ea3921Schristos addu $1,$7 1342e0ea3921Schristos addu $2,$7 1343e0ea3921Schristos addu $24,$7 1344e0ea3921Schristos addu $25,$7 134576c4f342Schristos lbu $1,0($1) 134676c4f342Schristos lbu $2,0($2) 134776c4f342Schristos lbu $24,0($24) 134876c4f342Schristos lbu $25,0($25) 134976c4f342Schristos 135076c4f342Schristos sw $8,0($6) 135176c4f342Schristos sw $9,4($6) 135276c4f342Schristos sw $10,8($6) 135376c4f342Schristos sw $11,12($6) 135476c4f342Schristos sw $12,16($6) 135576c4f342Schristos sw $13,20($6) 135676c4f342Schristos sw $14,24($6) 135776c4f342Schristos sw $15,28($6) 1358e0ea3921Schristos subu $30,1 135976c4f342Schristos 136076c4f342Schristos sll $1,$1,8 136176c4f342Schristos #sll $2,$2,0 136276c4f342Schristos sll $24,$24,24 136376c4f342Schristos sll $25,$25,16 136476c4f342Schristos 136576c4f342Schristos xor $8,$1 136676c4f342Schristos lw $1,0($3) 136776c4f342Schristos xor $8,$2 136876c4f342Schristos xor $8,$24 136976c4f342Schristos xor $8,$25 137076c4f342Schristos xor $8,$1 137176c4f342Schristos 137276c4f342Schristos xor $9,$8 137376c4f342Schristos xor $10,$9 137476c4f342Schristos xor $11,$10 137576c4f342Schristos beqz $30,.L256bits_done 137676c4f342Schristos 137776c4f342Schristos srl $1,$11,24 137876c4f342Schristos srl $2,$11,16 137976c4f342Schristos srl $24,$11,8 138076c4f342Schristos and $25,$11,0xff 138176c4f342Schristos and $2,0xff 138276c4f342Schristos and $24,0xff 1383e0ea3921Schristos addu $1,$7 1384e0ea3921Schristos addu $2,$7 1385e0ea3921Schristos addu $24,$7 1386e0ea3921Schristos addu $25,$7 138776c4f342Schristos lbu $1,0($1) 138876c4f342Schristos lbu $2,0($2) 138976c4f342Schristos lbu $24,0($24) 139076c4f342Schristos lbu $25,0($25) 139176c4f342Schristos sll $1,24 139276c4f342Schristos sll $2,16 139376c4f342Schristos sll $24,8 139476c4f342Schristos 139576c4f342Schristos xor $12,$1 139676c4f342Schristos xor $12,$2 139776c4f342Schristos xor $12,$24 139876c4f342Schristos xor $12,$25 139976c4f342Schristos 140076c4f342Schristos xor $13,$12 140176c4f342Schristos xor $14,$13 140276c4f342Schristos xor $15,$14 140376c4f342Schristos 1404e0ea3921Schristos addu $6,32 140576c4f342Schristos .set noreorder 140676c4f342Schristos b .L256bits 1407e0ea3921Schristos addu $3,4 140876c4f342Schristos 140976c4f342Schristos.L256bits_done: 141076c4f342Schristos sw $8,32($6) 141176c4f342Schristos sw $9,36($6) 141276c4f342Schristos sw $10,40($6) 141376c4f342Schristos li $30,14 141476c4f342Schristos sw $11,44($6) 141576c4f342Schristos li $2,0 141676c4f342Schristos sw $30,48($6) 1417e0ea3921Schristos subu $6,12*16 141876c4f342Schristos 141976c4f342Schristos.Lekey_done: 142076c4f342Schristos jr $31 142176c4f342Schristos nop 142276c4f342Schristos.end _mips_AES_set_encrypt_key 142376c4f342Schristos 142476c4f342Schristos.globl AES_set_encrypt_key 142576c4f342Schristos.ent AES_set_encrypt_key 142676c4f342SchristosAES_set_encrypt_key: 142776c4f342Schristos .frame $29,32,$31 142876c4f342Schristos .mask 0xc0000000,-4 142976c4f342Schristos .set noreorder 14306410c867Schristos .cpload $25 1431e0ea3921Schristos subu $29,32 143276c4f342Schristos sw $31,32-1*4($29) 143376c4f342Schristos sw $30,32-2*4($29) 143476c4f342Schristos .set reorder 143576c4f342Schristos la $7,AES_Te4 # PIC-ified 'load address' 143676c4f342Schristos 143776c4f342Schristos bal _mips_AES_set_encrypt_key 143876c4f342Schristos 143976c4f342Schristos .set noreorder 144076c4f342Schristos move $4,$2 144176c4f342Schristos lw $31,32-1*4($29) 144276c4f342Schristos lw $30,32-2*4($29) 144376c4f342Schristos jr $31 1444e0ea3921Schristos addu $29,32 144576c4f342Schristos.end AES_set_encrypt_key 144676c4f342Schristos.align 5 144776c4f342Schristos.globl AES_set_decrypt_key 144876c4f342Schristos.ent AES_set_decrypt_key 144976c4f342SchristosAES_set_decrypt_key: 145076c4f342Schristos .frame $29,32,$31 145176c4f342Schristos .mask 0xc0000000,-4 145276c4f342Schristos .set noreorder 14536410c867Schristos .cpload $25 1454e0ea3921Schristos subu $29,32 145576c4f342Schristos sw $31,32-1*4($29) 145676c4f342Schristos sw $30,32-2*4($29) 145776c4f342Schristos .set reorder 145876c4f342Schristos la $7,AES_Te4 # PIC-ified 'load address' 145976c4f342Schristos 146076c4f342Schristos bal _mips_AES_set_encrypt_key 146176c4f342Schristos 146276c4f342Schristos bltz $2,.Ldkey_done 146376c4f342Schristos 146476c4f342Schristos sll $1,$30,4 1465e0ea3921Schristos addu $4,$6,0 1466e0ea3921Schristos addu $5,$6,$1 146776c4f342Schristos.align 4 146876c4f342Schristos.Lswap: 146976c4f342Schristos lw $8,0($4) 147076c4f342Schristos lw $9,4($4) 147176c4f342Schristos lw $10,8($4) 147276c4f342Schristos lw $11,12($4) 147376c4f342Schristos lw $12,0($5) 147476c4f342Schristos lw $13,4($5) 147576c4f342Schristos lw $14,8($5) 147676c4f342Schristos lw $15,12($5) 147776c4f342Schristos sw $8,0($5) 147876c4f342Schristos sw $9,4($5) 147976c4f342Schristos sw $10,8($5) 148076c4f342Schristos sw $11,12($5) 1481e0ea3921Schristos addu $4,16 1482e0ea3921Schristos subu $5,16 148376c4f342Schristos sw $12,-16($4) 148476c4f342Schristos sw $13,-12($4) 148576c4f342Schristos sw $14,-8($4) 148676c4f342Schristos sw $15,-4($4) 148776c4f342Schristos bne $4,$5,.Lswap 148876c4f342Schristos 148976c4f342Schristos lw $8,16($6) # modulo-scheduled 149076c4f342Schristos lui $2,0x8080 1491e0ea3921Schristos subu $30,1 149276c4f342Schristos or $2,0x8080 149376c4f342Schristos sll $30,2 1494e0ea3921Schristos addu $6,16 149576c4f342Schristos lui $25,0x1b1b 149676c4f342Schristos nor $24,$0,$2 149776c4f342Schristos or $25,0x1b1b 149876c4f342Schristos.align 4 149976c4f342Schristos.Lmix: 150076c4f342Schristos and $1,$8,$2 150176c4f342Schristos and $9,$8,$24 150276c4f342Schristos srl $10,$1,7 150376c4f342Schristos addu $9,$9 # tp2<<1 150476c4f342Schristos subu $1,$10 150576c4f342Schristos and $1,$25 150676c4f342Schristos xor $9,$1 150776c4f342Schristos 150876c4f342Schristos and $1,$9,$2 150976c4f342Schristos and $10,$9,$24 151076c4f342Schristos srl $11,$1,7 151176c4f342Schristos addu $10,$10 # tp4<<1 151276c4f342Schristos subu $1,$11 151376c4f342Schristos and $1,$25 151476c4f342Schristos xor $10,$1 151576c4f342Schristos 151676c4f342Schristos and $1,$10,$2 151776c4f342Schristos and $11,$10,$24 151876c4f342Schristos srl $12,$1,7 151976c4f342Schristos addu $11,$11 # tp8<<1 152076c4f342Schristos subu $1,$12 152176c4f342Schristos and $1,$25 152276c4f342Schristos xor $11,$1 152376c4f342Schristos 152476c4f342Schristos xor $12,$11,$8 152576c4f342Schristos xor $15,$11,$10 152676c4f342Schristos xor $13,$12,$9 152776c4f342Schristos xor $14,$12,$10 152876c4f342Schristos 152976c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 153076c4f342Schristos rotr $8,$14,16 153176c4f342Schristos xor $15,$9 153276c4f342Schristos rotr $9,$12,24 153376c4f342Schristos xor $15,$8 153476c4f342Schristos rotr $10,$13,8 153576c4f342Schristos xor $15,$9 153676c4f342Schristos lw $8,4($6) # modulo-scheduled 153776c4f342Schristos xor $15,$10 153876c4f342Schristos#else 153976c4f342Schristos sll $8,$14,16 154076c4f342Schristos xor $15,$9 154176c4f342Schristos srl $9,$14,16 154276c4f342Schristos xor $15,$8 154376c4f342Schristos sll $8,$12,8 154476c4f342Schristos xor $15,$9 154576c4f342Schristos srl $9,$12,24 154676c4f342Schristos xor $15,$8 154776c4f342Schristos sll $8,$13,24 154876c4f342Schristos xor $15,$9 154976c4f342Schristos srl $9,$13,8 155076c4f342Schristos xor $15,$8 155176c4f342Schristos lw $8,4($6) # modulo-scheduled 155276c4f342Schristos xor $15,$9 155376c4f342Schristos#endif 1554e0ea3921Schristos subu $30,1 155576c4f342Schristos sw $15,0($6) 1556e0ea3921Schristos addu $6,4 155776c4f342Schristos bnez $30,.Lmix 155876c4f342Schristos 155976c4f342Schristos li $2,0 156076c4f342Schristos.Ldkey_done: 156176c4f342Schristos .set noreorder 156276c4f342Schristos move $4,$2 156376c4f342Schristos lw $31,32-1*4($29) 156476c4f342Schristos lw $30,32-2*4($29) 156576c4f342Schristos jr $31 1566e0ea3921Schristos addu $29,32 156776c4f342Schristos.end AES_set_decrypt_key 156876c4f342Schristos.rdata 156976c4f342Schristos.align 10 157076c4f342SchristosAES_Te: 157176c4f342Schristos.byte 0xc6,0x63,0x63,0xa5, 0xf8,0x7c,0x7c,0x84 # Te0 157276c4f342Schristos.byte 0xee,0x77,0x77,0x99, 0xf6,0x7b,0x7b,0x8d 157376c4f342Schristos.byte 0xff,0xf2,0xf2,0x0d, 0xd6,0x6b,0x6b,0xbd 157476c4f342Schristos.byte 0xde,0x6f,0x6f,0xb1, 0x91,0xc5,0xc5,0x54 157576c4f342Schristos.byte 0x60,0x30,0x30,0x50, 0x02,0x01,0x01,0x03 157676c4f342Schristos.byte 0xce,0x67,0x67,0xa9, 0x56,0x2b,0x2b,0x7d 157776c4f342Schristos.byte 0xe7,0xfe,0xfe,0x19, 0xb5,0xd7,0xd7,0x62 157876c4f342Schristos.byte 0x4d,0xab,0xab,0xe6, 0xec,0x76,0x76,0x9a 157976c4f342Schristos.byte 0x8f,0xca,0xca,0x45, 0x1f,0x82,0x82,0x9d 158076c4f342Schristos.byte 0x89,0xc9,0xc9,0x40, 0xfa,0x7d,0x7d,0x87 158176c4f342Schristos.byte 0xef,0xfa,0xfa,0x15, 0xb2,0x59,0x59,0xeb 158276c4f342Schristos.byte 0x8e,0x47,0x47,0xc9, 0xfb,0xf0,0xf0,0x0b 158376c4f342Schristos.byte 0x41,0xad,0xad,0xec, 0xb3,0xd4,0xd4,0x67 158476c4f342Schristos.byte 0x5f,0xa2,0xa2,0xfd, 0x45,0xaf,0xaf,0xea 158576c4f342Schristos.byte 0x23,0x9c,0x9c,0xbf, 0x53,0xa4,0xa4,0xf7 158676c4f342Schristos.byte 0xe4,0x72,0x72,0x96, 0x9b,0xc0,0xc0,0x5b 158776c4f342Schristos.byte 0x75,0xb7,0xb7,0xc2, 0xe1,0xfd,0xfd,0x1c 158876c4f342Schristos.byte 0x3d,0x93,0x93,0xae, 0x4c,0x26,0x26,0x6a 158976c4f342Schristos.byte 0x6c,0x36,0x36,0x5a, 0x7e,0x3f,0x3f,0x41 159076c4f342Schristos.byte 0xf5,0xf7,0xf7,0x02, 0x83,0xcc,0xcc,0x4f 159176c4f342Schristos.byte 0x68,0x34,0x34,0x5c, 0x51,0xa5,0xa5,0xf4 159276c4f342Schristos.byte 0xd1,0xe5,0xe5,0x34, 0xf9,0xf1,0xf1,0x08 159376c4f342Schristos.byte 0xe2,0x71,0x71,0x93, 0xab,0xd8,0xd8,0x73 159476c4f342Schristos.byte 0x62,0x31,0x31,0x53, 0x2a,0x15,0x15,0x3f 159576c4f342Schristos.byte 0x08,0x04,0x04,0x0c, 0x95,0xc7,0xc7,0x52 159676c4f342Schristos.byte 0x46,0x23,0x23,0x65, 0x9d,0xc3,0xc3,0x5e 159776c4f342Schristos.byte 0x30,0x18,0x18,0x28, 0x37,0x96,0x96,0xa1 159876c4f342Schristos.byte 0x0a,0x05,0x05,0x0f, 0x2f,0x9a,0x9a,0xb5 159976c4f342Schristos.byte 0x0e,0x07,0x07,0x09, 0x24,0x12,0x12,0x36 160076c4f342Schristos.byte 0x1b,0x80,0x80,0x9b, 0xdf,0xe2,0xe2,0x3d 160176c4f342Schristos.byte 0xcd,0xeb,0xeb,0x26, 0x4e,0x27,0x27,0x69 160276c4f342Schristos.byte 0x7f,0xb2,0xb2,0xcd, 0xea,0x75,0x75,0x9f 160376c4f342Schristos.byte 0x12,0x09,0x09,0x1b, 0x1d,0x83,0x83,0x9e 160476c4f342Schristos.byte 0x58,0x2c,0x2c,0x74, 0x34,0x1a,0x1a,0x2e 160576c4f342Schristos.byte 0x36,0x1b,0x1b,0x2d, 0xdc,0x6e,0x6e,0xb2 160676c4f342Schristos.byte 0xb4,0x5a,0x5a,0xee, 0x5b,0xa0,0xa0,0xfb 160776c4f342Schristos.byte 0xa4,0x52,0x52,0xf6, 0x76,0x3b,0x3b,0x4d 160876c4f342Schristos.byte 0xb7,0xd6,0xd6,0x61, 0x7d,0xb3,0xb3,0xce 160976c4f342Schristos.byte 0x52,0x29,0x29,0x7b, 0xdd,0xe3,0xe3,0x3e 161076c4f342Schristos.byte 0x5e,0x2f,0x2f,0x71, 0x13,0x84,0x84,0x97 161176c4f342Schristos.byte 0xa6,0x53,0x53,0xf5, 0xb9,0xd1,0xd1,0x68 161276c4f342Schristos.byte 0x00,0x00,0x00,0x00, 0xc1,0xed,0xed,0x2c 161376c4f342Schristos.byte 0x40,0x20,0x20,0x60, 0xe3,0xfc,0xfc,0x1f 161476c4f342Schristos.byte 0x79,0xb1,0xb1,0xc8, 0xb6,0x5b,0x5b,0xed 161576c4f342Schristos.byte 0xd4,0x6a,0x6a,0xbe, 0x8d,0xcb,0xcb,0x46 161676c4f342Schristos.byte 0x67,0xbe,0xbe,0xd9, 0x72,0x39,0x39,0x4b 161776c4f342Schristos.byte 0x94,0x4a,0x4a,0xde, 0x98,0x4c,0x4c,0xd4 161876c4f342Schristos.byte 0xb0,0x58,0x58,0xe8, 0x85,0xcf,0xcf,0x4a 161976c4f342Schristos.byte 0xbb,0xd0,0xd0,0x6b, 0xc5,0xef,0xef,0x2a 162076c4f342Schristos.byte 0x4f,0xaa,0xaa,0xe5, 0xed,0xfb,0xfb,0x16 162176c4f342Schristos.byte 0x86,0x43,0x43,0xc5, 0x9a,0x4d,0x4d,0xd7 162276c4f342Schristos.byte 0x66,0x33,0x33,0x55, 0x11,0x85,0x85,0x94 162376c4f342Schristos.byte 0x8a,0x45,0x45,0xcf, 0xe9,0xf9,0xf9,0x10 162476c4f342Schristos.byte 0x04,0x02,0x02,0x06, 0xfe,0x7f,0x7f,0x81 162576c4f342Schristos.byte 0xa0,0x50,0x50,0xf0, 0x78,0x3c,0x3c,0x44 162676c4f342Schristos.byte 0x25,0x9f,0x9f,0xba, 0x4b,0xa8,0xa8,0xe3 162776c4f342Schristos.byte 0xa2,0x51,0x51,0xf3, 0x5d,0xa3,0xa3,0xfe 162876c4f342Schristos.byte 0x80,0x40,0x40,0xc0, 0x05,0x8f,0x8f,0x8a 162976c4f342Schristos.byte 0x3f,0x92,0x92,0xad, 0x21,0x9d,0x9d,0xbc 163076c4f342Schristos.byte 0x70,0x38,0x38,0x48, 0xf1,0xf5,0xf5,0x04 163176c4f342Schristos.byte 0x63,0xbc,0xbc,0xdf, 0x77,0xb6,0xb6,0xc1 163276c4f342Schristos.byte 0xaf,0xda,0xda,0x75, 0x42,0x21,0x21,0x63 163376c4f342Schristos.byte 0x20,0x10,0x10,0x30, 0xe5,0xff,0xff,0x1a 163476c4f342Schristos.byte 0xfd,0xf3,0xf3,0x0e, 0xbf,0xd2,0xd2,0x6d 163576c4f342Schristos.byte 0x81,0xcd,0xcd,0x4c, 0x18,0x0c,0x0c,0x14 163676c4f342Schristos.byte 0x26,0x13,0x13,0x35, 0xc3,0xec,0xec,0x2f 163776c4f342Schristos.byte 0xbe,0x5f,0x5f,0xe1, 0x35,0x97,0x97,0xa2 163876c4f342Schristos.byte 0x88,0x44,0x44,0xcc, 0x2e,0x17,0x17,0x39 163976c4f342Schristos.byte 0x93,0xc4,0xc4,0x57, 0x55,0xa7,0xa7,0xf2 164076c4f342Schristos.byte 0xfc,0x7e,0x7e,0x82, 0x7a,0x3d,0x3d,0x47 164176c4f342Schristos.byte 0xc8,0x64,0x64,0xac, 0xba,0x5d,0x5d,0xe7 164276c4f342Schristos.byte 0x32,0x19,0x19,0x2b, 0xe6,0x73,0x73,0x95 164376c4f342Schristos.byte 0xc0,0x60,0x60,0xa0, 0x19,0x81,0x81,0x98 164476c4f342Schristos.byte 0x9e,0x4f,0x4f,0xd1, 0xa3,0xdc,0xdc,0x7f 164576c4f342Schristos.byte 0x44,0x22,0x22,0x66, 0x54,0x2a,0x2a,0x7e 164676c4f342Schristos.byte 0x3b,0x90,0x90,0xab, 0x0b,0x88,0x88,0x83 164776c4f342Schristos.byte 0x8c,0x46,0x46,0xca, 0xc7,0xee,0xee,0x29 164876c4f342Schristos.byte 0x6b,0xb8,0xb8,0xd3, 0x28,0x14,0x14,0x3c 164976c4f342Schristos.byte 0xa7,0xde,0xde,0x79, 0xbc,0x5e,0x5e,0xe2 165076c4f342Schristos.byte 0x16,0x0b,0x0b,0x1d, 0xad,0xdb,0xdb,0x76 165176c4f342Schristos.byte 0xdb,0xe0,0xe0,0x3b, 0x64,0x32,0x32,0x56 165276c4f342Schristos.byte 0x74,0x3a,0x3a,0x4e, 0x14,0x0a,0x0a,0x1e 165376c4f342Schristos.byte 0x92,0x49,0x49,0xdb, 0x0c,0x06,0x06,0x0a 165476c4f342Schristos.byte 0x48,0x24,0x24,0x6c, 0xb8,0x5c,0x5c,0xe4 165576c4f342Schristos.byte 0x9f,0xc2,0xc2,0x5d, 0xbd,0xd3,0xd3,0x6e 165676c4f342Schristos.byte 0x43,0xac,0xac,0xef, 0xc4,0x62,0x62,0xa6 165776c4f342Schristos.byte 0x39,0x91,0x91,0xa8, 0x31,0x95,0x95,0xa4 165876c4f342Schristos.byte 0xd3,0xe4,0xe4,0x37, 0xf2,0x79,0x79,0x8b 165976c4f342Schristos.byte 0xd5,0xe7,0xe7,0x32, 0x8b,0xc8,0xc8,0x43 166076c4f342Schristos.byte 0x6e,0x37,0x37,0x59, 0xda,0x6d,0x6d,0xb7 166176c4f342Schristos.byte 0x01,0x8d,0x8d,0x8c, 0xb1,0xd5,0xd5,0x64 166276c4f342Schristos.byte 0x9c,0x4e,0x4e,0xd2, 0x49,0xa9,0xa9,0xe0 166376c4f342Schristos.byte 0xd8,0x6c,0x6c,0xb4, 0xac,0x56,0x56,0xfa 166476c4f342Schristos.byte 0xf3,0xf4,0xf4,0x07, 0xcf,0xea,0xea,0x25 166576c4f342Schristos.byte 0xca,0x65,0x65,0xaf, 0xf4,0x7a,0x7a,0x8e 166676c4f342Schristos.byte 0x47,0xae,0xae,0xe9, 0x10,0x08,0x08,0x18 166776c4f342Schristos.byte 0x6f,0xba,0xba,0xd5, 0xf0,0x78,0x78,0x88 166876c4f342Schristos.byte 0x4a,0x25,0x25,0x6f, 0x5c,0x2e,0x2e,0x72 166976c4f342Schristos.byte 0x38,0x1c,0x1c,0x24, 0x57,0xa6,0xa6,0xf1 167076c4f342Schristos.byte 0x73,0xb4,0xb4,0xc7, 0x97,0xc6,0xc6,0x51 167176c4f342Schristos.byte 0xcb,0xe8,0xe8,0x23, 0xa1,0xdd,0xdd,0x7c 167276c4f342Schristos.byte 0xe8,0x74,0x74,0x9c, 0x3e,0x1f,0x1f,0x21 167376c4f342Schristos.byte 0x96,0x4b,0x4b,0xdd, 0x61,0xbd,0xbd,0xdc 167476c4f342Schristos.byte 0x0d,0x8b,0x8b,0x86, 0x0f,0x8a,0x8a,0x85 167576c4f342Schristos.byte 0xe0,0x70,0x70,0x90, 0x7c,0x3e,0x3e,0x42 167676c4f342Schristos.byte 0x71,0xb5,0xb5,0xc4, 0xcc,0x66,0x66,0xaa 167776c4f342Schristos.byte 0x90,0x48,0x48,0xd8, 0x06,0x03,0x03,0x05 167876c4f342Schristos.byte 0xf7,0xf6,0xf6,0x01, 0x1c,0x0e,0x0e,0x12 167976c4f342Schristos.byte 0xc2,0x61,0x61,0xa3, 0x6a,0x35,0x35,0x5f 168076c4f342Schristos.byte 0xae,0x57,0x57,0xf9, 0x69,0xb9,0xb9,0xd0 168176c4f342Schristos.byte 0x17,0x86,0x86,0x91, 0x99,0xc1,0xc1,0x58 168276c4f342Schristos.byte 0x3a,0x1d,0x1d,0x27, 0x27,0x9e,0x9e,0xb9 168376c4f342Schristos.byte 0xd9,0xe1,0xe1,0x38, 0xeb,0xf8,0xf8,0x13 168476c4f342Schristos.byte 0x2b,0x98,0x98,0xb3, 0x22,0x11,0x11,0x33 168576c4f342Schristos.byte 0xd2,0x69,0x69,0xbb, 0xa9,0xd9,0xd9,0x70 168676c4f342Schristos.byte 0x07,0x8e,0x8e,0x89, 0x33,0x94,0x94,0xa7 168776c4f342Schristos.byte 0x2d,0x9b,0x9b,0xb6, 0x3c,0x1e,0x1e,0x22 168876c4f342Schristos.byte 0x15,0x87,0x87,0x92, 0xc9,0xe9,0xe9,0x20 168976c4f342Schristos.byte 0x87,0xce,0xce,0x49, 0xaa,0x55,0x55,0xff 169076c4f342Schristos.byte 0x50,0x28,0x28,0x78, 0xa5,0xdf,0xdf,0x7a 169176c4f342Schristos.byte 0x03,0x8c,0x8c,0x8f, 0x59,0xa1,0xa1,0xf8 169276c4f342Schristos.byte 0x09,0x89,0x89,0x80, 0x1a,0x0d,0x0d,0x17 169376c4f342Schristos.byte 0x65,0xbf,0xbf,0xda, 0xd7,0xe6,0xe6,0x31 169476c4f342Schristos.byte 0x84,0x42,0x42,0xc6, 0xd0,0x68,0x68,0xb8 169576c4f342Schristos.byte 0x82,0x41,0x41,0xc3, 0x29,0x99,0x99,0xb0 169676c4f342Schristos.byte 0x5a,0x2d,0x2d,0x77, 0x1e,0x0f,0x0f,0x11 169776c4f342Schristos.byte 0x7b,0xb0,0xb0,0xcb, 0xa8,0x54,0x54,0xfc 169876c4f342Schristos.byte 0x6d,0xbb,0xbb,0xd6, 0x2c,0x16,0x16,0x3a 169976c4f342Schristos 170076c4f342SchristosAES_Td: 170176c4f342Schristos.byte 0x51,0xf4,0xa7,0x50, 0x7e,0x41,0x65,0x53 # Td0 170276c4f342Schristos.byte 0x1a,0x17,0xa4,0xc3, 0x3a,0x27,0x5e,0x96 170376c4f342Schristos.byte 0x3b,0xab,0x6b,0xcb, 0x1f,0x9d,0x45,0xf1 170476c4f342Schristos.byte 0xac,0xfa,0x58,0xab, 0x4b,0xe3,0x03,0x93 170576c4f342Schristos.byte 0x20,0x30,0xfa,0x55, 0xad,0x76,0x6d,0xf6 170676c4f342Schristos.byte 0x88,0xcc,0x76,0x91, 0xf5,0x02,0x4c,0x25 170776c4f342Schristos.byte 0x4f,0xe5,0xd7,0xfc, 0xc5,0x2a,0xcb,0xd7 170876c4f342Schristos.byte 0x26,0x35,0x44,0x80, 0xb5,0x62,0xa3,0x8f 170976c4f342Schristos.byte 0xde,0xb1,0x5a,0x49, 0x25,0xba,0x1b,0x67 171076c4f342Schristos.byte 0x45,0xea,0x0e,0x98, 0x5d,0xfe,0xc0,0xe1 171176c4f342Schristos.byte 0xc3,0x2f,0x75,0x02, 0x81,0x4c,0xf0,0x12 171276c4f342Schristos.byte 0x8d,0x46,0x97,0xa3, 0x6b,0xd3,0xf9,0xc6 171376c4f342Schristos.byte 0x03,0x8f,0x5f,0xe7, 0x15,0x92,0x9c,0x95 171476c4f342Schristos.byte 0xbf,0x6d,0x7a,0xeb, 0x95,0x52,0x59,0xda 171576c4f342Schristos.byte 0xd4,0xbe,0x83,0x2d, 0x58,0x74,0x21,0xd3 171676c4f342Schristos.byte 0x49,0xe0,0x69,0x29, 0x8e,0xc9,0xc8,0x44 171776c4f342Schristos.byte 0x75,0xc2,0x89,0x6a, 0xf4,0x8e,0x79,0x78 171876c4f342Schristos.byte 0x99,0x58,0x3e,0x6b, 0x27,0xb9,0x71,0xdd 171976c4f342Schristos.byte 0xbe,0xe1,0x4f,0xb6, 0xf0,0x88,0xad,0x17 172076c4f342Schristos.byte 0xc9,0x20,0xac,0x66, 0x7d,0xce,0x3a,0xb4 172176c4f342Schristos.byte 0x63,0xdf,0x4a,0x18, 0xe5,0x1a,0x31,0x82 172276c4f342Schristos.byte 0x97,0x51,0x33,0x60, 0x62,0x53,0x7f,0x45 172376c4f342Schristos.byte 0xb1,0x64,0x77,0xe0, 0xbb,0x6b,0xae,0x84 172476c4f342Schristos.byte 0xfe,0x81,0xa0,0x1c, 0xf9,0x08,0x2b,0x94 172576c4f342Schristos.byte 0x70,0x48,0x68,0x58, 0x8f,0x45,0xfd,0x19 172676c4f342Schristos.byte 0x94,0xde,0x6c,0x87, 0x52,0x7b,0xf8,0xb7 172776c4f342Schristos.byte 0xab,0x73,0xd3,0x23, 0x72,0x4b,0x02,0xe2 172876c4f342Schristos.byte 0xe3,0x1f,0x8f,0x57, 0x66,0x55,0xab,0x2a 172976c4f342Schristos.byte 0xb2,0xeb,0x28,0x07, 0x2f,0xb5,0xc2,0x03 173076c4f342Schristos.byte 0x86,0xc5,0x7b,0x9a, 0xd3,0x37,0x08,0xa5 173176c4f342Schristos.byte 0x30,0x28,0x87,0xf2, 0x23,0xbf,0xa5,0xb2 173276c4f342Schristos.byte 0x02,0x03,0x6a,0xba, 0xed,0x16,0x82,0x5c 173376c4f342Schristos.byte 0x8a,0xcf,0x1c,0x2b, 0xa7,0x79,0xb4,0x92 173476c4f342Schristos.byte 0xf3,0x07,0xf2,0xf0, 0x4e,0x69,0xe2,0xa1 173576c4f342Schristos.byte 0x65,0xda,0xf4,0xcd, 0x06,0x05,0xbe,0xd5 173676c4f342Schristos.byte 0xd1,0x34,0x62,0x1f, 0xc4,0xa6,0xfe,0x8a 173776c4f342Schristos.byte 0x34,0x2e,0x53,0x9d, 0xa2,0xf3,0x55,0xa0 173876c4f342Schristos.byte 0x05,0x8a,0xe1,0x32, 0xa4,0xf6,0xeb,0x75 173976c4f342Schristos.byte 0x0b,0x83,0xec,0x39, 0x40,0x60,0xef,0xaa 174076c4f342Schristos.byte 0x5e,0x71,0x9f,0x06, 0xbd,0x6e,0x10,0x51 174176c4f342Schristos.byte 0x3e,0x21,0x8a,0xf9, 0x96,0xdd,0x06,0x3d 174276c4f342Schristos.byte 0xdd,0x3e,0x05,0xae, 0x4d,0xe6,0xbd,0x46 174376c4f342Schristos.byte 0x91,0x54,0x8d,0xb5, 0x71,0xc4,0x5d,0x05 174476c4f342Schristos.byte 0x04,0x06,0xd4,0x6f, 0x60,0x50,0x15,0xff 174576c4f342Schristos.byte 0x19,0x98,0xfb,0x24, 0xd6,0xbd,0xe9,0x97 174676c4f342Schristos.byte 0x89,0x40,0x43,0xcc, 0x67,0xd9,0x9e,0x77 174776c4f342Schristos.byte 0xb0,0xe8,0x42,0xbd, 0x07,0x89,0x8b,0x88 174876c4f342Schristos.byte 0xe7,0x19,0x5b,0x38, 0x79,0xc8,0xee,0xdb 174976c4f342Schristos.byte 0xa1,0x7c,0x0a,0x47, 0x7c,0x42,0x0f,0xe9 175076c4f342Schristos.byte 0xf8,0x84,0x1e,0xc9, 0x00,0x00,0x00,0x00 175176c4f342Schristos.byte 0x09,0x80,0x86,0x83, 0x32,0x2b,0xed,0x48 175276c4f342Schristos.byte 0x1e,0x11,0x70,0xac, 0x6c,0x5a,0x72,0x4e 175376c4f342Schristos.byte 0xfd,0x0e,0xff,0xfb, 0x0f,0x85,0x38,0x56 175476c4f342Schristos.byte 0x3d,0xae,0xd5,0x1e, 0x36,0x2d,0x39,0x27 175576c4f342Schristos.byte 0x0a,0x0f,0xd9,0x64, 0x68,0x5c,0xa6,0x21 175676c4f342Schristos.byte 0x9b,0x5b,0x54,0xd1, 0x24,0x36,0x2e,0x3a 175776c4f342Schristos.byte 0x0c,0x0a,0x67,0xb1, 0x93,0x57,0xe7,0x0f 175876c4f342Schristos.byte 0xb4,0xee,0x96,0xd2, 0x1b,0x9b,0x91,0x9e 175976c4f342Schristos.byte 0x80,0xc0,0xc5,0x4f, 0x61,0xdc,0x20,0xa2 176076c4f342Schristos.byte 0x5a,0x77,0x4b,0x69, 0x1c,0x12,0x1a,0x16 176176c4f342Schristos.byte 0xe2,0x93,0xba,0x0a, 0xc0,0xa0,0x2a,0xe5 176276c4f342Schristos.byte 0x3c,0x22,0xe0,0x43, 0x12,0x1b,0x17,0x1d 176376c4f342Schristos.byte 0x0e,0x09,0x0d,0x0b, 0xf2,0x8b,0xc7,0xad 176476c4f342Schristos.byte 0x2d,0xb6,0xa8,0xb9, 0x14,0x1e,0xa9,0xc8 176576c4f342Schristos.byte 0x57,0xf1,0x19,0x85, 0xaf,0x75,0x07,0x4c 176676c4f342Schristos.byte 0xee,0x99,0xdd,0xbb, 0xa3,0x7f,0x60,0xfd 176776c4f342Schristos.byte 0xf7,0x01,0x26,0x9f, 0x5c,0x72,0xf5,0xbc 176876c4f342Schristos.byte 0x44,0x66,0x3b,0xc5, 0x5b,0xfb,0x7e,0x34 176976c4f342Schristos.byte 0x8b,0x43,0x29,0x76, 0xcb,0x23,0xc6,0xdc 177076c4f342Schristos.byte 0xb6,0xed,0xfc,0x68, 0xb8,0xe4,0xf1,0x63 177176c4f342Schristos.byte 0xd7,0x31,0xdc,0xca, 0x42,0x63,0x85,0x10 177276c4f342Schristos.byte 0x13,0x97,0x22,0x40, 0x84,0xc6,0x11,0x20 177376c4f342Schristos.byte 0x85,0x4a,0x24,0x7d, 0xd2,0xbb,0x3d,0xf8 177476c4f342Schristos.byte 0xae,0xf9,0x32,0x11, 0xc7,0x29,0xa1,0x6d 177576c4f342Schristos.byte 0x1d,0x9e,0x2f,0x4b, 0xdc,0xb2,0x30,0xf3 177676c4f342Schristos.byte 0x0d,0x86,0x52,0xec, 0x77,0xc1,0xe3,0xd0 177776c4f342Schristos.byte 0x2b,0xb3,0x16,0x6c, 0xa9,0x70,0xb9,0x99 177876c4f342Schristos.byte 0x11,0x94,0x48,0xfa, 0x47,0xe9,0x64,0x22 177976c4f342Schristos.byte 0xa8,0xfc,0x8c,0xc4, 0xa0,0xf0,0x3f,0x1a 178076c4f342Schristos.byte 0x56,0x7d,0x2c,0xd8, 0x22,0x33,0x90,0xef 178176c4f342Schristos.byte 0x87,0x49,0x4e,0xc7, 0xd9,0x38,0xd1,0xc1 178276c4f342Schristos.byte 0x8c,0xca,0xa2,0xfe, 0x98,0xd4,0x0b,0x36 178376c4f342Schristos.byte 0xa6,0xf5,0x81,0xcf, 0xa5,0x7a,0xde,0x28 178476c4f342Schristos.byte 0xda,0xb7,0x8e,0x26, 0x3f,0xad,0xbf,0xa4 178576c4f342Schristos.byte 0x2c,0x3a,0x9d,0xe4, 0x50,0x78,0x92,0x0d 178676c4f342Schristos.byte 0x6a,0x5f,0xcc,0x9b, 0x54,0x7e,0x46,0x62 178776c4f342Schristos.byte 0xf6,0x8d,0x13,0xc2, 0x90,0xd8,0xb8,0xe8 178876c4f342Schristos.byte 0x2e,0x39,0xf7,0x5e, 0x82,0xc3,0xaf,0xf5 178976c4f342Schristos.byte 0x9f,0x5d,0x80,0xbe, 0x69,0xd0,0x93,0x7c 179076c4f342Schristos.byte 0x6f,0xd5,0x2d,0xa9, 0xcf,0x25,0x12,0xb3 179176c4f342Schristos.byte 0xc8,0xac,0x99,0x3b, 0x10,0x18,0x7d,0xa7 179276c4f342Schristos.byte 0xe8,0x9c,0x63,0x6e, 0xdb,0x3b,0xbb,0x7b 179376c4f342Schristos.byte 0xcd,0x26,0x78,0x09, 0x6e,0x59,0x18,0xf4 179476c4f342Schristos.byte 0xec,0x9a,0xb7,0x01, 0x83,0x4f,0x9a,0xa8 179576c4f342Schristos.byte 0xe6,0x95,0x6e,0x65, 0xaa,0xff,0xe6,0x7e 179676c4f342Schristos.byte 0x21,0xbc,0xcf,0x08, 0xef,0x15,0xe8,0xe6 179776c4f342Schristos.byte 0xba,0xe7,0x9b,0xd9, 0x4a,0x6f,0x36,0xce 179876c4f342Schristos.byte 0xea,0x9f,0x09,0xd4, 0x29,0xb0,0x7c,0xd6 179976c4f342Schristos.byte 0x31,0xa4,0xb2,0xaf, 0x2a,0x3f,0x23,0x31 180076c4f342Schristos.byte 0xc6,0xa5,0x94,0x30, 0x35,0xa2,0x66,0xc0 180176c4f342Schristos.byte 0x74,0x4e,0xbc,0x37, 0xfc,0x82,0xca,0xa6 180276c4f342Schristos.byte 0xe0,0x90,0xd0,0xb0, 0x33,0xa7,0xd8,0x15 180376c4f342Schristos.byte 0xf1,0x04,0x98,0x4a, 0x41,0xec,0xda,0xf7 180476c4f342Schristos.byte 0x7f,0xcd,0x50,0x0e, 0x17,0x91,0xf6,0x2f 180576c4f342Schristos.byte 0x76,0x4d,0xd6,0x8d, 0x43,0xef,0xb0,0x4d 180676c4f342Schristos.byte 0xcc,0xaa,0x4d,0x54, 0xe4,0x96,0x04,0xdf 180776c4f342Schristos.byte 0x9e,0xd1,0xb5,0xe3, 0x4c,0x6a,0x88,0x1b 180876c4f342Schristos.byte 0xc1,0x2c,0x1f,0xb8, 0x46,0x65,0x51,0x7f 180976c4f342Schristos.byte 0x9d,0x5e,0xea,0x04, 0x01,0x8c,0x35,0x5d 181076c4f342Schristos.byte 0xfa,0x87,0x74,0x73, 0xfb,0x0b,0x41,0x2e 181176c4f342Schristos.byte 0xb3,0x67,0x1d,0x5a, 0x92,0xdb,0xd2,0x52 181276c4f342Schristos.byte 0xe9,0x10,0x56,0x33, 0x6d,0xd6,0x47,0x13 181376c4f342Schristos.byte 0x9a,0xd7,0x61,0x8c, 0x37,0xa1,0x0c,0x7a 181476c4f342Schristos.byte 0x59,0xf8,0x14,0x8e, 0xeb,0x13,0x3c,0x89 181576c4f342Schristos.byte 0xce,0xa9,0x27,0xee, 0xb7,0x61,0xc9,0x35 181676c4f342Schristos.byte 0xe1,0x1c,0xe5,0xed, 0x7a,0x47,0xb1,0x3c 181776c4f342Schristos.byte 0x9c,0xd2,0xdf,0x59, 0x55,0xf2,0x73,0x3f 181876c4f342Schristos.byte 0x18,0x14,0xce,0x79, 0x73,0xc7,0x37,0xbf 181976c4f342Schristos.byte 0x53,0xf7,0xcd,0xea, 0x5f,0xfd,0xaa,0x5b 182076c4f342Schristos.byte 0xdf,0x3d,0x6f,0x14, 0x78,0x44,0xdb,0x86 182176c4f342Schristos.byte 0xca,0xaf,0xf3,0x81, 0xb9,0x68,0xc4,0x3e 182276c4f342Schristos.byte 0x38,0x24,0x34,0x2c, 0xc2,0xa3,0x40,0x5f 182376c4f342Schristos.byte 0x16,0x1d,0xc3,0x72, 0xbc,0xe2,0x25,0x0c 182476c4f342Schristos.byte 0x28,0x3c,0x49,0x8b, 0xff,0x0d,0x95,0x41 182576c4f342Schristos.byte 0x39,0xa8,0x01,0x71, 0x08,0x0c,0xb3,0xde 182676c4f342Schristos.byte 0xd8,0xb4,0xe4,0x9c, 0x64,0x56,0xc1,0x90 182776c4f342Schristos.byte 0x7b,0xcb,0x84,0x61, 0xd5,0x32,0xb6,0x70 182876c4f342Schristos.byte 0x48,0x6c,0x5c,0x74, 0xd0,0xb8,0x57,0x42 182976c4f342Schristos 183076c4f342Schristos.byte 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38 # Td4 183176c4f342Schristos.byte 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb 183276c4f342Schristos.byte 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87 183376c4f342Schristos.byte 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb 183476c4f342Schristos.byte 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d 183576c4f342Schristos.byte 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e 183676c4f342Schristos.byte 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2 183776c4f342Schristos.byte 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25 183876c4f342Schristos.byte 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16 183976c4f342Schristos.byte 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92 184076c4f342Schristos.byte 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda 184176c4f342Schristos.byte 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84 184276c4f342Schristos.byte 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a 184376c4f342Schristos.byte 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06 184476c4f342Schristos.byte 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02 184576c4f342Schristos.byte 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b 184676c4f342Schristos.byte 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea 184776c4f342Schristos.byte 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73 184876c4f342Schristos.byte 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85 184976c4f342Schristos.byte 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e 185076c4f342Schristos.byte 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89 185176c4f342Schristos.byte 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b 185276c4f342Schristos.byte 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20 185376c4f342Schristos.byte 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4 185476c4f342Schristos.byte 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31 185576c4f342Schristos.byte 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f 185676c4f342Schristos.byte 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d 185776c4f342Schristos.byte 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef 185876c4f342Schristos.byte 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0 185976c4f342Schristos.byte 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61 186076c4f342Schristos.byte 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26 186176c4f342Schristos.byte 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d 186276c4f342Schristos 186376c4f342SchristosAES_Te4: 186476c4f342Schristos.byte 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5 # Te4 186576c4f342Schristos.byte 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76 186676c4f342Schristos.byte 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0 186776c4f342Schristos.byte 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0 186876c4f342Schristos.byte 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc 186976c4f342Schristos.byte 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15 187076c4f342Schristos.byte 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a 187176c4f342Schristos.byte 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75 187276c4f342Schristos.byte 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0 187376c4f342Schristos.byte 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84 187476c4f342Schristos.byte 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b 187576c4f342Schristos.byte 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf 187676c4f342Schristos.byte 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85 187776c4f342Schristos.byte 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8 187876c4f342Schristos.byte 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5 187976c4f342Schristos.byte 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2 188076c4f342Schristos.byte 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17 188176c4f342Schristos.byte 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73 188276c4f342Schristos.byte 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88 188376c4f342Schristos.byte 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb 188476c4f342Schristos.byte 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c 188576c4f342Schristos.byte 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79 188676c4f342Schristos.byte 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9 188776c4f342Schristos.byte 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08 188876c4f342Schristos.byte 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6 188976c4f342Schristos.byte 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a 189076c4f342Schristos.byte 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e 189176c4f342Schristos.byte 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e 189276c4f342Schristos.byte 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94 189376c4f342Schristos.byte 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf 189476c4f342Schristos.byte 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68 189576c4f342Schristos.byte 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 189676c4f342Schristos 189776c4f342Schristos.byte 0x01,0x00,0x00,0x00, 0x02,0x00,0x00,0x00 # rcon 189876c4f342Schristos.byte 0x04,0x00,0x00,0x00, 0x08,0x00,0x00,0x00 189976c4f342Schristos.byte 0x10,0x00,0x00,0x00, 0x20,0x00,0x00,0x00 190076c4f342Schristos.byte 0x40,0x00,0x00,0x00, 0x80,0x00,0x00,0x00 190176c4f342Schristos.byte 0x1B,0x00,0x00,0x00, 0x36,0x00,0x00,0x00 1902