1| $NetBSD: aes-m68k.S,v 1.4 2019/08/18 09:51:06 rin Exp $ 2 3| Copyright (C) 2016 Tetsuya Isaki. All rights reserved. 4| Copyright (C) 2016 Y.Sugahara (moveccr). All rights reserved. 5| 6| Redistribution and use in source and binary forms, with or without 7| modification, are permitted provided that the following conditions 8| are met: 9| 1. Redistributions of source code must retain the above copyright 10| notice, this list of conditions and the following disclaimer. 11| 2. Redistributions in binary form must reproduce the above copyright 12| notice, this list of conditions and the following disclaimer in the 13| documentation and/or other materials provided with the distribution. 14| 15| THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 16| IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 17| OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 18| IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19| INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 20| BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21| LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 22| AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 23| OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24| OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25| SUCH DAMAGE. 26 27#define rd_key (0) 28#define rounds (60 * 4) 29 30| int 31| AES_set_encrypt_key(const unsigned char *userKey, 32| const int bits, 33| AES_KEY *key) 34 .global AES_set_encrypt_key 35 .type AES_set_encrypt_key, @function 36AES_set_encrypt_key: 37.Laes_set_encrypt_key: 38 moveml %d2-%d7/%a2-%a6,%sp@- 39 moveal %sp@(44+4),%a0 | userKey 40 moveal %sp@(44+8),%a1 | bits 41 moveal %sp@(44+12),%a3 | key 42 43 tstl %a0 44 beq .Lpek_return1 | return -1 if userKey == NULL 45 tstl %a3 46 beq .Lpek_return1 | return -1 if key == NULL 47 48 cmpaw #128,%a1 49 bne .Lpek192_check | unless bits == 128 50.Lpek128: 51 | %d0-%d7 rk[0..7] 52 | %a0 userKey, Te0 53 | %a1 Te1 54 | %a2 Te2 55 | %a3 key, Te3 56 | %a4 rcon_byte 57 | %a5 &rk[4] 58 | %a6 end of rcon_byte 59 60 moveq #10,%d0 61 movel %d0,%a3@(rounds) | key->rounds = 10 62 63 lea %a3@(rd_key),%a5 | &rk[0] 64 65 | rk[0] = GETU32(userKey ); 66 | rk[1] = GETU32(userKey + 4); 67 | rk[2] = GETU32(userKey + 8); 68 | rk[3] = GETU32(userKey + 12); 69 moveml %a0@,%d0-%d3 70 movel %d0,%a5@+ 71 movel %d1,%a5@+ 72 movel %d2,%a5@+ 73 movel %d3,%a5@+ 74 75 lea %pc@(Te0),%a0 | %a0 = Te0 76 lea %a0@(256*4),%a1 | %a1 = Te1 77 lea %a1@(256*4),%a2 | %a2 = Te2 78 lea %a2@(256*4),%a3 | %a3 = Te3 79 80 moveq #0,%d7 81 lea %pc@(rcon_byte),%a4 82 lea %a4@(10),%a6 83 84.Lpek128_loop: 85 | d6 consists of four Te index bytes 86 movel %d3,%d5 | d5=rk[3] as {1,2,3,0} 87 moveb %d5,%d7 | d7=temp 88 moveb %a0@(2,%d7:w:4),%d4 | d4=$xxxxxx00 89 swap %d5 | d5={3,0,1,2} 90 lsll #8,%d4 | d4=$xxxx00xx 91 moveb %d5,%d7 | d7=temp>>16 92 moveb %a2@(0,%d7:w:4),%d6 | d6=$xxxxxx22 93 lsrl #8,%d5 | d5={x,3,0,1} 94 moveb %a4@+,%d7 | LSByte ^= rcon[i] 95 eorb %d7,%d6 96 lsll #8,%d6 | d6=$xxxx22xx 97 moveb %d5,%d7 | d7=temp>>24 98 moveb %a1@(3,%d7:w:4),%d4 | d4=$xxxx0011 99 swap %d5 | d5={0,1,x,3} 100 moveb %d5,%d7 | d7=temp>>8 101 moveb %a3@(1,%d7:w:4),%d6 | d6=$xxxx2233 102 swap %d6 | d6=$2233xxxx 103 movew %d4,%d6 | d6=$22330011 104 105 eorl %d6,%d0 | rk[4] = rk[0]^ (Te..) 106 movel %d0,%a5@+ 107 eorl %d0,%d1 | rk[5] = rk[1] ^ rk[4]; 108 movel %d1,%a5@+ 109 eorl %d1,%d2 | rk[6] = rk[2] ^ rk[5]; 110 movel %d2,%a5@+ 111 eorl %d2,%d3 | rk[7] = rk[3] ^ rk[6]; 112 movel %d3,%a5@+ 113 114 cmpal %a4,%a6 115 bne .Lpek128_loop |if (++i == 10) return 0; 116 117.Lpek_return0: 118 moveql #0,%d0 119.Lpek_return: 120 moveml %sp@+,%d2-%d7/%a2-%a6 121 rts 122 123.Lpek192_check: 124 | %a0 userKey 125 | %a1 bits 126 | %a3 key 127 cmpaw #192,%a1 128 bne .Lpek256_check | unless bits == 192 129.Lpek192: 130 | %a0 Te0 131 | %a1 Te1 132 | %a2 Te2 133 | %a3 Te3 134 | %a4 rcon_byte 135 | %a5 &rk[6] 136 | %a6 end of rcon_byte 137 moveq #12,%d0 138 movel %d0,%a3@(rounds) | key->rounds = 12 139 140 lea %a3@(rd_key),%a5 | &rk[0] 141 142 | rk[0] = GETU32(userKey ); 143 | rk[1] = GETU32(userKey + 4); 144 | rk[2] = GETU32(userKey + 8); 145 | rk[3] = GETU32(userKey + 12); 146 | rk[4] = GETU32(userKey + 16); 147 | rk[5] = GETU32(userKey + 20); 148 moveml %a0@,%d0-%d5 | copy userKey[0..23] 149 movel %d0,%a5@+ 150 movel %d1,%a5@+ 151 movel %d2,%a5@+ 152 movel %d3,%a5@+ 153 movel %d4,%a5@+ 154 movel %d5,%a5@ | read again later 155 156 lea %pc@(Te0 +2),%a0 | %a0 = Te0 + 2 157 lea %a0@(256*4 -2+3),%a1 | %a1 = Te1 + 3 158 lea %a1@(256*4 -3+0),%a2 | %a2 = Te2 + 0 159 lea %a2@(256*4 +0+1),%a3 | %a3 = Te3 + 1 160 161 moveq #0,%d7 162 lea %pc@(rcon_byte),%a4 163 lea %a4@(8),%a6 164 bra .Lpek192_loop_start 165 166.Lpek192_loop: 167 eorl %d3,%d4 | rk[10] = rk[4] ^ rk[9] 168 movel %d4,%a5@+ | %d4 is rk[10] 169 eorl %d4,%d5 | rk[11] = rk[5] ^ rk[10] 170 movel %d5,%a5@ | %d5 is rk[11] 171 172.Lpek192_loop_start: 173 | %d0..%d5 = rk[0..5] 174 | 175 | temp = rk[5]; 176 | rk[6] = (Te0[(temp ) & 0xff] & 0x0000ff00) 177 | rk[6] |= (Te3[(temp >> 8) & 0xff] & 0x00ff0000) 178 | rk[6] |= (Te2[(temp >> 16) & 0xff] & 0xff000000) 179 | ^ rcon[i] 180 | rk[6] |= (Te1[(temp >> 24) ] & 0x000000ff) 181 moveb %d5,%d7 | temp >> 0 182 moveb %a0@(%d7:w:4),%d6 | d6=$xxxxxx00 183 rorl #8,%d6 | d6=$00xxxxxx 184 lsrl #8,%d5 | temp >> 8 185 moveb %d5,%d7 186 moveb %a3@(%d7:w:4),%d6 | d6=$00xxxx11 187 rorl #8,%d6 | d6=$1100xxxx 188 lsrl #8,%d5 | temp >> 16 189 moveb %d5,%d7 190 moveb %a2@(%d7:w:4),%d6 | d6=$1100xx22 191 moveb %a4@+,%d7 | LSByte ^= rcon[i] 192 eorb %d7,%d6 193 rorl #8,%d6 | d6=$221100xx 194 lsrl #8,%d5 | temp >> 24 195 moveb %a1@(%d5:w:4),%d6 | d6=$22110033 196 197 movel %a5@+,%d5 | read rk[5] again 198 | (faster than keeping %a5) 199 200 eorl %d6,%d0 | rk[6] ^= rk[0] 201 movel %d0,%a5@+ | %d0 is rk[6] 202 eorl %d0,%d1 | rk[7] = rk[1] ^ rk[6] 203 movel %d1,%a5@+ | %d1 is rk[7] 204 eorl %d1,%d2 | rk[8] = rk[2] ^ rk[7] 205 movel %d2,%a5@+ | %d2 is rk[8] 206 eorl %d2,%d3 | rk[9] = rk[3] ^ rk[8] 207 movel %d3,%a5@+ | %d3 is rk[9] 208 209 cmpal %a4,%a6 210 bne .Lpek192_loop 211 bra .Lpek_return0 212 213 214.Lpek256_check: 215 | %a0 userKey 216 | %a1 bits 217 | %a3 key 218 cmpaw #256,%a1 219 bne .Lpek_return2 | otherwise return -2 220.Lpek256: 221 | %a0 Te0 222 | %a1 Te1 223 | %a2 Te2 224 | %a3 Te3 225 | %a4 rcon_byte 226 | %a5 &rk[6] 227 | %a6 end of rcon_byte 228 moveq #14,%d0 229 movel %d0,%a3@(rounds) | key->rounds = 14 230 231 lea %a3@(rd_key),%a5 | &rk[0] 232 233 | rk[0] = GETU32(userKey ); 234 | rk[1] = GETU32(userKey + 4); 235 | rk[2] = GETU32(userKey + 8); 236 | rk[3] = GETU32(userKey + 12); 237 | rk[4] = GETU32(userKey + 16); 238 | rk[5] = GETU32(userKey + 20); 239 | rk[6] = GETU32(userKey + 24); 240 | rk[7] = GETU32(userKey + 28); 241 moveml %a0@,%d0-%d7 | copy userKey[0..31] 242 movel %d0,%a5@+ 243 movel %d1,%a5@+ 244 movel %d2,%a5@+ 245 movel %d3,%a5@+ 246 movel %d4,%a5@+ 247 movel %d5,%a5@+ 248 movel %d6,%a5@+ 249 movel %d7,%a5@+ 250 251 lea %pc@(Te0 +2),%a0 | %a0 = Te0 + 2 252 lea %a0@(256*4 -2+3),%a1 | %a1 = Te1 + 3 253 lea %a1@(256*4 -3+0),%a2 | %a2 = Te2 + 0 254 lea %a2@(256*4 +0+1),%a3 | %a3 = Te3 + 1 255 256 lea %pc@(rcon_byte),%a4 257 lea %a4@(7),%a6 258 bra .Lpek256_loop_start 259 260.Lpek256_loop: 261 | %d0: rk[8] -> work 262 | %d1: rk[9] -> work 263 | %d2: rk[10] 264 | %d3: rk[11] -> work 265 | %d4: rk[4] 266 | %d5: work -> rk[5] 267 | %d6: work -> rk[6] 268 | %d7: work -> rk[7] 269 | %a5 = &rk[12] 270 | 271 | temp = rk[11]; 272 | rk[12] = (Te1[(temp ) & 0xff] & 0x000000ff); 273 | rk[12] |= (Te0[(temp >> 8) & 0xff] & 0x0000ff00); 274 | rk[12] |= (Te3[(temp >> 16) & 0xff] & 0x00ff0000); 275 | rk[12] |= (Te2[(temp >> 24) ] & 0xff000000); 276 | rk[12] ^= rk[ 4]; 277 278 moveml %a5@(-7*4),%d5-%d7 | %d5..%d7 = rk[5..7] 279 280 moveq #0,%d0 281 moveb %d3,%d0 | temp >> 0 282 moveb %a1@(%d0:w:4),%d1 | d1=$xxxxxx00 283 rorl #8,%d1 | d1=$00xxxxxx 284 lsrl #8,%d3 | temp >> 8 285 moveb %d3,%d0 286 moveb %a0@(%d0:w:4),%d1 | d1=$00xxxx11 287 rorl #8,%d1 | d1=$1100xxxx 288 lsrl #8,%d3 | temp >> 16 289 moveb %d3,%d0 290 moveb %a3@(%d0:w:4),%d1 | d1=$1100xx22 291 rorl #8,%d1 | d1=$221100xx 292 lsrl #8,%d3 | temp >> 24 293 moveb %a2@(%d3:w:4),%d1 | d1=$22110033 294 rorl #8,%d1 | d1=$33221100 295 296 eorl %d1,%d4 | rk[12] ^= rk[4] 297 movel %d4,%a5@+ | %d4 is rk[12] 298 eorl %d4,%d5 | rk[13] = rk[5] ^ rk[12] 299 movel %d5,%a5@+ | %d5 is rk[13] 300 eorl %d5,%d6 | rk[14] = rk[6] ^ rk[13] 301 movel %d6,%a5@+ | %d6 is rk[14] 302 eorl %d6,%d7 | rk[15] = rk[7] ^ rk[14] 303 movel %d7,%a5@+ | %d7 is rk[15] 304 305 | %d0: work -> rk[8] 306 | %d1: work -> rk[9] 307 | %d2: rk[10] 308 | %d3: work -> rk[11] 309 | %d4: rk[12] 310 | %d5: rk[13] 311 | %d6: rk[14] 312 | %d7: rk[15] 313 | %a5 = &rk[16] 314 315 moveml %a5@(-8*4),%d0-%d1 | %d0..%d1 = rk[8..9] 316 movel %a5@(-5*4),%d3 | %d3 = rk[11] 317 318.Lpek256_loop_start: 319 | %d0: rk[0] 320 | %d1: rk[1] 321 | %d2: rk[2] 322 | %d3: rk[3] 323 | %d4: rk[4] 324 | %d5: rk[5] -> work 325 | %d6: rk[6] -> work 326 | %d7: rk[7] 327 | %a5 = &rk[8] 328 | 329 | temp = rk[7] 330 | rk[8] = (Te0[(temp ) & 0xff] & 0x0000ff00); 331 | rk[8] |= (Te3[(temp >> 8) & 0xff] & 0x00ff0000); 332 | rk[8] |= (Te2[(temp >> 16) & 0xff] & 0xff000000); 333 | rk[8] ^= rcon[i]; 334 | rk[8] |= (Te1[(temp >> 24) ] & 0x000000ff); 335 | rk[8] ^= rk[ 0]; 336 337 moveq #0,%d5 338 moveb %d7,%d5 | temp >> 0 339 moveb %a0@(%d5:w:4),%d6 | d6=$xxxxxx00 340 rorl #8,%d6 | d6=$00xxxxxx 341 lsrl #8,%d7 | temp >> 8 342 moveb %d7,%d5 343 moveb %a3@(%d5:w:4),%d6 | d6=$00xxxx11 344 rorl #8,%d6 | d6=$1100xxxx 345 lsrl #8,%d7 | temp >> 16 346 moveb %d7,%d5 347 moveb %a2@(%d5:w:4),%d6 | d6=$1100xx22 348 moveb %a4@+,%d5 | LSByte ^= rcon[i] 349 eorb %d5,%d6 350 rorl #8,%d6 | d6=$221100xx 351 lsrl #8,%d7 | temp >> 24 352 moveb %a1@(%d7:w:4),%d6 | d6=$22110033 353 354 eorl %d6,%d0 | rk[8] ^= rk[0] 355 movel %d0,%a5@+ | %d0 is rk[8] 356 eorl %d0,%d1 | rk[9] = rk[1] ^ rk[8] 357 movel %d1,%a5@+ | %d1 is rk[9] 358 eorl %d1,%d2 | rk[10] = rk[2] ^ rk[9] 359 movel %d2,%a5@+ | %d2 is rk[10] 360 eorl %d2,%d3 | rk[11] = rk[3] ^ rk[10] 361 movel %d3,%a5@+ | %d3 is rk[11] 362 363 | %d0: rk[8] 364 | %d1: rk[9] 365 | %d2: rk[10] 366 | %d3: rk[11] 367 | %d4: rk[4] 368 | %d5: work 369 | %d6: work 370 | %d7: work 371 372 cmpal %a4,%a6 373 bne .Lpek256_loop 374 bra .Lpek_return0 375 376.Lpek_return1: 377 moveql #-1,%d0 378 bra .Lpek_return 379.Lpek_return2: 380 moveql #-2,%d0 381 bra .Lpek_return 382 .size AES_set_encrypt_key, .-AES_set_encrypt_key 383 384 385| int 386| private_AES_set_decrypt_key(const unsigned char *userKey, 387| const int bits, 388| AES_KEY *key) 389 .global AES_set_decrypt_key 390 .type AES_set_decrypt_key, @function 391AES_set_decrypt_key: 392 moveml %d2-%d7/%a2-%a6,%sp@- 393 moveal %sp@(44+4),%a0 | userKey 394 moveal %sp@(44+8),%a1 | bits 395 moveal %sp@(44+12),%a3 | key 396 397 /* first, start with an encryption schedule */ 398 movel %a3,%sp@- 399 movel %a1,%sp@- 400 movel %a0,%sp@- 401 bsr .Laes_set_encrypt_key 402 lea %sp@(12),%sp 403 bmi .Lpdk_return 404 405 /* invert the order of the round keys: */ 406 lea %a3@(rd_key),%a5 | %a5 := &rk[0] 407 movel %a3@(rounds),%d4 408 lslw #4,%d4 409 lea %a5@(%d4),%a4 | %a4 := &rk[j] 410 moveal %a4,%a6 | %a6 for the next loop 411.Lpdk_invert_loop: 412 movel %a5@,%d0 413 movel %a4@,%a5@+ 414 movel %d0,%a4@+ 415 416 movel %a5@,%d0 417 movel %a4@,%a5@+ 418 movel %d0,%a4@+ 419 420 movel %a5@,%d0 421 movel %a4@,%a5@+ 422 movel %d0,%a4@+ 423 424 movel %a5@,%d0 425 movel %a4@,%a5@+ 426 movel %d0,%a4@ 427 428 lea %a4@(-28),%a4 429 430 cmpal %a4,%a5 431 bcs .Lpdk_invert_loop 432 433 /* 434 * apply the inverse MixColumn transform to all round keys but 435 * the first and the last: 436 */ 437 lea %a3@(rd_key + 16),%a5 | rk += 4 438 lea %pc@(Te1+3),%a4 | LSByte of Te1 439 lea %pc@(Td0),%a0 | %a0 = Td0 440 lea %a0@(256*4),%a1 | %a1 = Td1 441 lea %a1@(256*4),%a2 | %a2 = Td2 442 lea %a2@(256*4),%a3 | %a3 = Td3 443 444 | for (i = 1; i < key->rounds; i++) 445 moveq #0,%d1 446.Lpdk_apply_loop: 447 | rk[0] = 448 | Td3[Te1[(rk[0] ) & 0xff] & 0xff] ^ 449 | Td2[Te1[(rk[0] >> 8) & 0xff] & 0xff] ^ 450 | Td1[Te1[(rk[0] >> 16) & 0xff] & 0xff] ^ 451 | Td0[Te1[(rk[0] >> 24) ] & 0xff]; 452 movel %a5@,%d0 453 moveb %d0,%d1 | rk[0] >> 0 454 moveb %a4@(%d1:w:4),%d1 | Te1[] 455 movel %a3@(%d1:w:4),%d2 | Td3[] 456 lsrl #8,%d0 457 moveb %d0,%d1 | rk[0] >> 8 458 moveb %a4@(%d1:w:4),%d1 | Te1[] 459 movel %a2@(%d1:w:4),%d3 | Td3[] 460 eorl %d3,%d2 461 lsrl #8,%d0 462 moveb %d0,%d1 | rk[0] >> 16 463 moveb %a4@(%d1:w:4),%d1 | Te1[] 464 movel %a1@(%d1:w:4),%d3 | Td3[] 465 eorl %d3,%d2 466 lsrl #8,%d0 | rk[0] >> 24 467 moveb %a4@(%d0:w:4),%d1 | Te1[] 468 movel %a0@(%d1:w:4),%d3 469 eorl %d3,%d2 470 movel %d2,%a5@+ | -> rk[0] 471 472 cmpal %a6,%a5 473 bcs .Lpdk_apply_loop 474 475 moveql #0,%d0 476.Lpdk_return: 477 moveml %sp@+,%d2-%d7/%a2-%a6 478 rts 479 .size AES_set_decrypt_key, .-AES_set_decrypt_key 480 481 482| void 483| AES_encrypt(const unsigned char *in, 484| unsigned char *out, 485| const AES_KEY *key) 486 .global AES_encrypt 487 .type AES_encrypt, @function 488AES_encrypt: 489 | %a0 in, Te0 490 | %a1 out, Te1 491 | %a2 Te2 492 | %a3 key, Te3 493 | %a4 loop end 494 | %a5 rk 495 moveml %d2-%d7/%a2-%a5,%sp@- 496 moveal %sp@(40+4),%a0 | in 497 moveal %sp@(40+12),%a3 | key 498 499 lea %a3@(rd_key),%a5 500 movel %a3@(rounds),%d0 501 502 lslw #4,%d0 | key->rounds * 16 503 lea %a5@(0,%d0),%a4 | %a4 := %a5 + key->rounds * 16 504 505 movel %a0@+,%d0 506 movel %a5@+,%d5 507 eorl %d5,%d0 | s0 = GETU32(in ) ^ rk[0] 508 509 movel %a0@+,%d1 510 movel %a5@+,%d5 511 eorl %d5,%d1 | s1 = GETU32(in + 4) ^ rk[1] 512 513 movel %a0@+,%d2 514 movel %a5@+,%d5 515 eorl %d5,%d2 | s2 = GETU32(in + 8) ^ rk[2] 516 517 movel %a0@+,%d3 518 movel %a5@+,%d5 519 eorl %d5,%d3 | s3 = GETU32(in + 12) ^ rk[3] 520 521 lea %pc@(Te0),%a0 | %a0 = Te0 522 lea %a0@(256*4),%a1 | %a1 = Te1 523 lea %a1@(256*4),%a2 | %a2 = Te2 524 lea %a2@(256*4),%a3 | %a3 = Te3 525 526 bra .Lenc_loop_start 527 528.Lenc_loop: 529 | s1 = Te3[(t0 ) & 0xff]; 530 | s2 = Te2[(t0 >> 8) & 0xff]; 531 | s3 = Te1[(t0 >> 16) & 0xff]; 532 | s0 = Te0[(t0 >> 24) ]; 533 | 534 | s2 ^= Te3[(t1 ) & 0xff]; 535 | s3 ^= Te2[(t1 >> 8) & 0xff]; 536 | s0 ^= Te1[(t1 >> 16) & 0xff]; 537 | s1 ^= Te0[(t1 >> 24) ]; 538 | 539 | s3 ^= Te3[(t2 ) & 0xff]; 540 | s0 ^= Te2[(t2 >> 8) & 0xff]; 541 | s1 ^= Te1[(t2 >> 16) & 0xff]; 542 | s2 ^= Te0[(t2 >> 24) ]; 543 | 544 | s0 ^= Te3[(t3 ) & 0xff]; 545 | s1 ^= Te2[(t3 >> 8) & 0xff]; 546 | s2 ^= Te1[(t3 >> 16) & 0xff]; 547 | s3 ^= Te0[(t3 >> 24) ]; 548 | 549 | s0 ^= rk[0]; 550 | s1 ^= rk[1]; 551 | s2 ^= rk[2]; 552 | s3 ^= rk[3]; 553 | 554 | %d0..%d3: s0..s3 555 | %d4..%d7: t0..t3 556 557 moveq #0,%d3 558 moveb %d4,%d3 559 movel %a3@(%d3:w:4),%d1 560 lsrl #8,%d4 561 moveb %d4,%d3 562 movel %a2@(%d3:w:4),%d2 563 lsrl #8,%d4 564 moveb %d4,%d3 565 movel %a1@(%d3:w:4),%d3 566 lsrl #8,%d4 567 movel %a0@(%d4:w:4),%d0 568 569 moveb %d5,%d4 570 movel %a3@(%d4:w:4),%d4 571 eorl %d4,%d2 572 lsrl #8,%d5 573 moveql #0,%d4 574 moveb %d5,%d4 575 movel %a2@(%d4:w:4),%d4 576 eorl %d4,%d3 577 lsrl #8,%d5 578 moveql #0,%d4 579 moveb %d5,%d4 580 movel %a1@(%d4:w:4),%d4 581 eorl %d4,%d0 582 lsrl #8,%d5 583 movel %a0@(%d5:w:4),%d4 584 eorl %d4,%d1 585 586 moveb %d6,%d5 587 movel %a3@(%d5:w:4),%d4 588 eorl %d4,%d3 589 lsrl #8,%d6 590 moveb %d6,%d5 591 movel %a2@(%d5:w:4),%d4 592 eorl %d4,%d0 593 lsrl #8,%d6 594 moveb %d6,%d5 595 movel %a1@(%d5:w:4),%d4 596 eorl %d4,%d1 597 lsrl #8,%d6 598 movel %a0@(%d6:w:4),%d4 599 eorl %d4,%d2 600 601 moveb %d7,%d5 602 movel %a3@(%d5:w:4),%d4 603 eorl %d4,%d0 604 lsrl #8,%d7 605 moveb %d7,%d5 606 movel %a2@(%d5:w:4),%d4 607 eorl %d4,%d1 608 lsrl #8,%d7 609 moveb %d7,%d5 610 movel %a1@(%d5:w:4),%d4 611 eorl %d4,%d2 612 lsrl #8,%d7 613 movel %a0@(%d7:w:4),%d4 614 eorl %d4,%d3 615 616 movel %a5@+,%d4 617 eorl %d4,%d0 618 movel %a5@+,%d4 619 eorl %d4,%d1 620 movel %a5@+,%d4 621 eorl %d4,%d2 622 movel %a5@+,%d4 623 eorl %d4,%d3 624 625.Lenc_loop_start: 626 | t1 = Te3[(s0 ) & 0xff]; 627 | t2 = Te2[(s0 >> 8) & 0xff]; 628 | t3 = Te1[(s0 >> 16) & 0xff]; 629 | t0 = Te0[(s0 >> 24) & 0xff]; 630 | 631 | t2 ^= Te3[(s1 >> 0) & 0xff]; 632 | t3 ^= Te2[(s1 >> 8) & 0xff]; 633 | t0 ^= Te1[(s1 >> 16) & 0xff]; 634 | t1 ^= Te0[(s1 >> 24) & 0xff]; 635 | 636 | t3 ^= Te3[(s2 >> 0) & 0xff]; 637 | t0 ^= Te2[(s2 >> 8) & 0xff]; 638 | t1 ^= Te1[(s2 >> 16) & 0xff]; 639 | t2 ^= Te0[(s2 >> 24) & 0xff]; 640 | 641 | t0 ^= Te3[(s3 >> 0) & 0xff]; 642 | t1 ^= Te2[(s3 >> 8) & 0xff]; 643 | t2 ^= Te1[(s3 >> 16) & 0xff]; 644 | t3 ^= Te0[(s3 >> 24) & 0xff]; 645 | 646 | t0 ^= rk[4]; 647 | t1 ^= rk[5]; 648 | t2 ^= rk[6]; 649 | t3 ^= rk[7]; 650 | 651 | %d0..%d3: s0..s3 652 | %d4..%d7: t0..t3 653 654 moveql #0,%d7 655 moveb %d0,%d7 656 movel %a3@(%d7:w:4),%d5 657 lsrl #8,%d0 658 moveb %d0,%d7 659 movel %a2@(%d7:w:4),%d6 660 lsrl #8,%d0 661 moveb %d0,%d7 662 movel %a1@(%d7:w:4),%d7 663 lsrl #8,%d0 664 movel %a0@(%d0:w:4),%d4 665 666 moveb %d1,%d0 667 movel %a3@(%d0:w:4),%d0 668 eorl %d0,%d6 669 lsrl #8,%d1 670 moveql #0,%d0 671 moveb %d1,%d0 672 movel %a2@(%d0:w:4),%d0 673 eorl %d0,%d7 674 lsrl #8,%d1 675 moveql #0,%d0 676 moveb %d1,%d0 677 movel %a1@(%d0:w:4),%d0 678 eorl %d0,%d4 679 lsrl #8,%d1 680 movel %a0@(%d1:w:4),%d0 681 eorl %d0,%d5 682 683 moveb %d2,%d1 684 movel %a3@(%d1:w:4),%d0 685 eorl %d0,%d7 686 lsrl #8,%d2 687 moveb %d2,%d1 688 movel %a2@(%d1:w:4),%d0 689 eorl %d0,%d4 690 lsrl #8,%d2 691 moveb %d2,%d1 692 movel %a1@(%d1:w:4),%d0 693 eorl %d0,%d5 694 lsrl #8,%d2 695 movel %a0@(%d2:w:4),%d0 696 eorl %d0,%d6 697 698 moveb %d3,%d1 699 movel %a3@(%d1:w:4),%d0 700 eorl %d0,%d4 701 lsrl #8,%d3 702 moveb %d3,%d1 703 movel %a2@(%d1:w:4),%d0 704 eorl %d0,%d5 705 lsrl #8,%d3 706 moveb %d3,%d1 707 movel %a1@(%d1:w:4),%d0 708 eorl %d0,%d6 709 lsrl #8,%d3 710 movel %a0@(%d3:w:4),%d0 711 eorl %d0,%d7 712 713 movel %a5@+,%d0 714 eorl %d0,%d4 715 movel %a5@+,%d0 716 eorl %d0,%d5 717 movel %a5@+,%d0 718 eorl %d0,%d6 719 movel %a5@+,%d0 720 eorl %d0,%d7 721 722 cmpal %a5,%a4 723 bne .Lenc_loop | if (--r == 0) break; 724.Lenc_last: 725 /* 726 * apply last round and 727 * map cipher state to byte array block: 728 */ 729 moveal %sp@(40+8),%a4 | out 730 addql #2,%a0 | Te0 += 2 731 addql #3,%a1 | Te1 += 3 732 addql #1,%a3 | Te3 += 1 733 | Te2 += 0 734 735 | s1 = (Te1[(t0 ) & 0xff] & 0x000000ff); 736 | s2 = (Te0[(t0 >> 8) & 0xff] & 0x0000ff00); 737 | s3 = (Te3[(t0 >> 16) & 0xff] & 0x00ff0000); 738 | s0 = (Te2[(t0 >> 24) ] & 0xff000000); 739 | 740 | s2 |= (Te1[(t1 ) & 0xff] & 0x000000ff); 741 | s3 |= (Te0[(t1 >> 8) & 0xff] & 0x0000ff00); 742 | s0 |= (Te3[(t1 >> 16) & 0xff] & 0x00ff0000); 743 | s1 |= (Te2[(t1 >> 24) ] & 0xff000000); 744 | 745 | s3 |= (Te1[(t2 ) & 0xff] & 0x000000ff); 746 | s0 |= (Te0[(t2 >> 8) & 0xff] & 0x0000ff00); 747 | s1 |= (Te3[(t2 >> 16) & 0xff] & 0x00ff0000); 748 | s2 |= (Te2[(t2 >> 24) ] & 0xff000000); 749 | 750 | s0 |= (Te1[(t3 ) & 0xff] & 0x000000ff); 751 | s1 |= (Te0[(t3 >> 8) & 0xff] & 0x0000ff00); 752 | s2 |= (Te3[(t3 >> 16) & 0xff] & 0x00ff0000); 753 | s3 |= (Te2[(t3 >> 24) ] & 0xff000000); 754 755 moveql #0,%d0 756 moveb %d4,%d0 | t0 >> 0 757 moveb %a1@(%d0:w:4),%d1 | d1=$xxxxxx00 758 lsrl #8,%d4 | t0 >> 8 759 lsll #8,%d1 | d1=$xxxx00xx 760 moveb %d4,%d0 761 moveb %a0@(%d0:w:4),%d2 | d2=$xxxxxx00 762 lsrl #8,%d4 | t0 >> 16 763 lsll #8,%d2 | d2=$xxxx00xx 764 moveb %d4,%d0 765 moveb %a3@(%d0:w:4),%d3 | d3=$xxxxxx00 766 lsrl #8,%d4 | t0 >> 24 767 lsll #8,%d3 | d3=$xxxx00xx 768 moveb %a2@(%d4:w:4),%d0 | d0=$xxxxxx00 769 lsll #8,%d0 | d0=$xxxx00xx 770 771 moveb %d5,%d4 | t1 >> 0 772 moveb %a1@(%d4:w:4),%d2 | d2=$xxxx0011 773 lsrl #8,%d5 | t1 >> 8 774 lsll #8,%d2 | d2=$xx0011xx 775 moveb %d5,%d4 776 moveb %a0@(%d4:w:4),%d3 | d3=$xxxx0011 777 lsrl #8,%d5 | t1 >> 16 778 lsll #8,%d3 | d3=$xx0011xx 779 moveb %d5,%d4 780 moveb %a3@(%d4:w:4),%d0 | d0=$xxxx0011 781 lsrl #8,%d5 | t1 >> 24 782 lsll #8,%d0 | d0=$xx0011xx 783 moveb %a1@(%d5:w:4),%d1 | d1=$xxxx0011 784 lsll #8,%d1 | d1=$xx0011xx 785 786 moveb %d6,%d4 | t2 >> 0 787 moveb %a1@(%d4:w:4),%d3 | d3=$xx001122 788 lsrl #8,%d6 | t2 >> 8 789 lsll #8,%d3 | d3=$001122xx 790 moveb %d6,%d4 791 moveb %a0@(%d4:w:4),%d0 | d0=$xx001122 792 lsrl #8,%d6 | t2 >> 16 793 lsll #8,%d0 | d0=$001122xx 794 moveb %d6,%d4 795 moveb %a3@(%d4:w:4),%d1 | d1=$xx001122 796 lsrl #8,%d6 | t2 >> 24 797 lsll #8,%d1 | d1=$001122xx 798 moveb %a2@(%d6:w:4),%d2 | d2=$xx001122 799 lsll #8,%d2 | d2=$001122xx 800 801 moveb %d7,%d4 | t3 >> 0 802 moveb %a1@(%d4:w:4),%d0 | d0=$00112233 803 lsrl #8,%d7 | t3 >> 8 804 moveb %d7,%d4 805 moveb %a0@(%d4:w:4),%d1 | d1=$00112233 806 lsrl #8,%d7 | t3 >> 16 807 roll #8,%d1 | d1=$11223300 808 moveb %d7,%d4 809 moveb %a3@(%d4:w:4),%d2 | d2=$00112233 810 lsrl #8,%d7 | t3 >> 24 811 swap %d2 | d2=$22330011 812 moveb %a2@(%d7:w:4),%d3 | d3=$00112233 813 rorl #8,%d3 | d3=$33001122 814 815 movel %a5@+,%d4 816 eorl %d4,%d0 | s0 ^= rk[0] 817 movel %a5@+,%d4 818 eorl %d4,%d1 | s1 ^= rk[1] 819 movel %a5@+,%d4 820 eorl %d4,%d2 | s2 ^= rk[2] 821 movel %a5@+,%d4 822 eorl %d4,%d3 | s3 ^= rk[3] 823 824 movel %d0,%a4@+ | PUTU32(out , s0); 825 movel %d1,%a4@+ | PUTU32(out + 4, s1); 826 movel %d2,%a4@+ | PUTU32(out + 8, s2); 827 movel %d3,%a4@ | PUTU32(out + 12, s3); 828 829 moveml %sp@+,%d2-%d7/%a2-%a5 830 rts 831 .size AES_encrypt, .-AES_encrypt 832 833| void 834| AES_decrypt(const unsigned char *in, 835| unsigned char *out, 836| const AES_KEY *key) 837 .global AES_decrypt 838 .type AES_decrypt, @function 839AES_decrypt: 840 | %a0 in, Td0 841 | %a1 out, Td1 842 | %a2 Td2 843 | %a3 key, Td3 844 | %a4 loop end, Td4 845 | %a5 rk 846 moveml %d2-%d7/%a2-%a5,%sp@- 847 moveal %sp@(40+4),%a0 | in 848 moveal %sp@(40+12),%a3 | key 849 850 lea %a3@(rd_key),%a5 851 movel %a3@(rounds),%d0 852 853 lslw #4,%d0 | key->rounds * 16 854 lea %a5@(0,%d0),%a4 | %a4 := %a5 + key->rounds * 16 855 856 movel %a0@+,%d0 857 movel %a5@+,%d5 858 eorl %d5,%d0 | s0 = GETU32(in ) ^ rk[0] 859 860 movel %a0@+,%d1 861 movel %a5@+,%d5 862 eorl %d5,%d1 | s1 = GETU32(in + 4) ^ rk[1] 863 864 movel %a0@+,%d2 865 movel %a5@+,%d5 866 eorl %d5,%d2 | s2 = GETU32(in + 8) ^ rk[2] 867 868 movel %a0@+,%d3 869 movel %a5@+,%d5 870 eorl %d5,%d3 | s3 = GETU32(in + 12) ^ rk[3] 871 872 lea %pc@(Td0),%a0 | %a0 = Td0 873 lea %a0@(256*4),%a1 | %a1 = Td1 874 lea %a1@(256*4),%a2 | %a2 = Td2 875 lea %a2@(256*4),%a3 | %a3 = Td3 876 877 bra .Ldec_loop_start 878 879.Ldec_loop: 880 | s3 = Td3[(t0 ) & 0xff]; 881 | s2 = Td2[(t0 >> 8) & 0xff]; 882 | s1 = Td1[(t0 >> 16) & 0xff]; 883 | s0 = Td0[(t0 >> 24) ]; 884 | 885 | s0 ^= Td3[(t1 ) & 0xff]; 886 | s3 ^= Td2[(t1 >> 8) & 0xff]; 887 | s2 ^= Td1[(t1 >> 16) & 0xff]; 888 | s1 ^= Td0[(t1 >> 24) ]; 889 | 890 | s1 ^= Td3[(t2 ) & 0xff]; 891 | s0 ^= Td2[(t2 >> 8) & 0xff]; 892 | s3 ^= Td1[(t2 >> 16) & 0xff]; 893 | s2 ^= Td0[(t2 >> 24) ]; 894 | 895 | s2 ^= Td3[(t3 ) & 0xff]; 896 | s1 ^= Td2[(t3 >> 8) & 0xff]; 897 | s0 ^= Td1[(t3 >> 16) & 0xff]; 898 | s3 ^= Td0[(t3 >> 24) ]; 899 | 900 | s0 ^= rk[0]; 901 | s1 ^= rk[1]; 902 | s2 ^= rk[2]; 903 | s3 ^= rk[3]; 904 | 905 | %d0..%d3: s0..s3 906 | %d4..%d7: t0..t3 907 908 moveq #0,%d1 909 moveb %d4,%d1 910 movel %a3@(%d1:w:4),%d3 911 lsrl #8,%d4 912 moveb %d4,%d1 913 movel %a2@(%d1:w:4),%d2 914 lsrl #8,%d4 915 moveb %d4,%d1 916 movel %a1@(%d1:w:4),%d1 917 lsrl #8,%d4 918 movel %a0@(%d4:w:4),%d0 919 920 moveb %d5,%d4 921 movel %a3@(%d4:w:4),%d4 922 eorl %d4,%d0 923 lsrl #8,%d5 924 moveql #0,%d4 925 moveb %d5,%d4 926 movel %a2@(%d4:w:4),%d4 927 eorl %d4,%d3 928 lsrl #8,%d5 929 moveql #0,%d4 930 moveb %d5,%d4 931 movel %a1@(%d4:w:4),%d4 932 eorl %d4,%d2 933 lsrl #8,%d5 934 movel %a0@(%d5:w:4),%d4 935 eorl %d4,%d1 936 937 moveb %d6,%d5 938 movel %a3@(%d5:w:4),%d4 939 eorl %d4,%d1 940 lsrl #8,%d6 941 moveb %d6,%d5 942 movel %a2@(%d5:w:4),%d4 943 eorl %d4,%d0 944 lsrl #8,%d6 945 moveb %d6,%d5 946 movel %a1@(%d5:w:4),%d4 947 eorl %d4,%d3 948 lsrl #8,%d6 949 movel %a0@(%d6:w:4),%d4 950 eorl %d4,%d2 951 952 moveb %d7,%d5 953 movel %a3@(%d5:w:4),%d4 954 eorl %d4,%d2 955 lsrl #8,%d7 956 moveb %d7,%d5 957 movel %a2@(%d5:w:4),%d4 958 eorl %d4,%d1 959 lsrl #8,%d7 960 moveb %d7,%d5 961 movel %a1@(%d5:w:4),%d4 962 eorl %d4,%d0 963 lsrl #8,%d7 964 movel %a0@(%d7:w:4),%d4 965 eorl %d4,%d3 966 967 movel %a5@+,%d4 968 eorl %d4,%d0 969 movel %a5@+,%d4 970 eorl %d4,%d1 971 movel %a5@+,%d4 972 eorl %d4,%d2 973 movel %a5@+,%d4 974 eorl %d4,%d3 975 976.Ldec_loop_start: 977 | t3 = Td3[(s0 ) & 0xff]; 978 | t2 = Td2[(s0 >> 8) & 0xff]; 979 | t1 = Td1[(s0 >> 16) & 0xff]; 980 | t0 = Td0[(s0 >> 24) & 0xff]; 981 | 982 | t0 ^= Td3[(s1 >> 0) & 0xff]; 983 | t3 ^= Td2[(s1 >> 8) & 0xff]; 984 | t2 ^= Td1[(s1 >> 16) & 0xff]; 985 | t1 ^= Td0[(s1 >> 24) & 0xff]; 986 | 987 | t1 ^= Td3[(s2 >> 0) & 0xff]; 988 | t0 ^= Td2[(s2 >> 8) & 0xff]; 989 | t3 ^= Td1[(s2 >> 16) & 0xff]; 990 | t2 ^= Td0[(s2 >> 24) & 0xff]; 991 | 992 | t2 ^= Td3[(s3 >> 0) & 0xff]; 993 | t1 ^= Td2[(s3 >> 8) & 0xff]; 994 | t0 ^= Td1[(s3 >> 16) & 0xff]; 995 | t3 ^= Td0[(s3 >> 24) & 0xff]; 996 | 997 | t0 ^= rk[4]; 998 | t1 ^= rk[5]; 999 | t2 ^= rk[6]; 1000 | t3 ^= rk[7]; 1001 | 1002 | %d0..%d3: s0..s3 1003 | %d4..%d7: t0..t3 1004 1005 moveql #0,%d5 1006 moveb %d0,%d5 1007 movel %a3@(%d5:w:4),%d7 1008 lsrl #8,%d0 1009 moveb %d0,%d5 1010 movel %a2@(%d5:w:4),%d6 1011 lsrl #8,%d0 1012 moveb %d0,%d5 1013 movel %a1@(%d5:w:4),%d5 1014 lsrl #8,%d0 1015 movel %a0@(%d0:w:4),%d4 1016 1017 moveb %d1,%d0 1018 movel %a3@(%d0:w:4),%d0 1019 eorl %d0,%d4 1020 lsrl #8,%d1 1021 moveql #0,%d0 1022 moveb %d1,%d0 1023 movel %a2@(%d0:w:4),%d0 1024 eorl %d0,%d7 1025 lsrl #8,%d1 1026 moveql #0,%d0 1027 moveb %d1,%d0 1028 movel %a1@(%d0:w:4),%d0 1029 eorl %d0,%d6 1030 lsrl #8,%d1 1031 movel %a0@(%d1:w:4),%d0 1032 eorl %d0,%d5 1033 1034 moveb %d2,%d1 1035 movel %a3@(%d1:w:4),%d0 1036 eorl %d0,%d5 1037 lsrl #8,%d2 1038 moveb %d2,%d1 1039 movel %a2@(%d1:w:4),%d0 1040 eorl %d0,%d4 1041 lsrl #8,%d2 1042 moveb %d2,%d1 1043 movel %a1@(%d1:w:4),%d0 1044 eorl %d0,%d7 1045 lsrl #8,%d2 1046 movel %a0@(%d2:w:4),%d0 1047 eorl %d0,%d6 1048 1049 moveb %d3,%d1 1050 movel %a3@(%d1:w:4),%d0 1051 eorl %d0,%d6 1052 lsrl #8,%d3 1053 moveb %d3,%d1 1054 movel %a2@(%d1:w:4),%d0 1055 eorl %d0,%d5 1056 lsrl #8,%d3 1057 moveb %d3,%d1 1058 movel %a1@(%d1:w:4),%d0 1059 eorl %d0,%d4 1060 lsrl #8,%d3 1061 movel %a0@(%d3:w:4),%d0 1062 eorl %d0,%d7 1063 1064 movel %a5@+,%d0 1065 eorl %d0,%d4 1066 movel %a5@+,%d0 1067 eorl %d0,%d5 1068 movel %a5@+,%d0 1069 eorl %d0,%d6 1070 movel %a5@+,%d0 1071 eorl %d0,%d7 1072 1073 cmpal %a5,%a4 1074 bne .Ldec_loop | if (--r == 0) break; 1075 1076 /* 1077 * apply last round and 1078 * map cipher state to byte array block: 1079 */ 1080 | s3 = ((u32)Td4[(t0 >> 0) & 0xff] << 0); 1081 | s2 = ((u32)Td4[(t0 >> 8) & 0xff] << 8); 1082 | s1 = ((u32)Td4[(t0 >> 16) & 0xff] << 16); 1083 | s0 = ((u32)Td4[(t0 >> 24) & 0xff] << 24); 1084 | 1085 | s0 |= ((u32)Td4[(t1 >> 0) & 0xff] << 0); 1086 | s3 |= ((u32)Td4[(t1 >> 8) & 0xff] << 8); 1087 | s2 |= ((u32)Td4[(t1 >> 16) & 0xff] << 16); 1088 | s1 |= ((u32)Td4[(t1 >> 24) & 0xff] << 24); 1089 | 1090 | s1 |= ((u32)Td4[(t2 >> 0) & 0xff] << 0); 1091 | s0 |= ((u32)Td4[(t2 >> 8) & 0xff] << 8); 1092 | s3 |= ((u32)Td4[(t2 >> 16) & 0xff] << 16); 1093 | s2 |= ((u32)Td4[(t2 >> 24) & 0xff] << 24); 1094 | 1095 | s2 |= ((u32)Td4[(t3 >> 0) & 0xff] << 0); 1096 | s1 |= ((u32)Td4[(t3 >> 8) & 0xff] << 8); 1097 | s0 |= ((u32)Td4[(t3 >> 16) & 0xff] << 16); 1098 | s3 |= ((u32)Td4[(t3 >> 24) & 0xff] << 24); 1099 | 1100 | s0 ^= rk[0]; 1101 | PUTU32(out , s0); 1102 | s1 ^= rk[1]; 1103 | PUTU32(out + 4, s1); 1104 | s2 ^= rk[2]; 1105 | PUTU32(out + 8, s2); 1106 | s3 ^= rk[3]; 1107 | PUTU32(out + 12, s3); 1108 | 1109 | %d4..%d7: t0..t3 1110 | %d0..%d3: s0..s3 1111 1112 lea %pc@(Td4),%a4 1113 moveq #0,%d0 1114 moveb %d4,%d0 1115 moveb %a4@(%d0),%d3 1116 rorl #8,%d3 1117 lsrl #8,%d4 1118 moveb %d4,%d0 1119 moveb %a4@(%d0),%d2 1120 rorl #8,%d2 1121 lsrl #8,%d4 1122 moveb %d4,%d0 1123 moveb %a4@(%d0),%d1 1124 rorl #8,%d1 1125 lsrl #8,%d4 1126 moveb %a4@(%d4),%d0 1127 rorl #8,%d0 1128 1129 moveb %d5,%d4 1130 moveb %a4@(%d4),%d0 1131 rorl #8,%d0 1132 lsrl #8,%d5 1133 moveb %d5,%d4 1134 moveb %a4@(%d4),%d3 1135 rorl #8,%d3 1136 lsrl #8,%d5 1137 moveb %d5,%d4 1138 moveb %a4@(%d4),%d2 1139 rorl #8,%d2 1140 lsrl #8,%d5 1141 moveb %a4@(%d5),%d1 1142 rorl #8,%d1 1143 1144 moveb %d6,%d4 1145 moveb %a4@(%d4),%d1 1146 rorl #8,%d1 | d1=$221100xx 1147 lsrl #8,%d6 1148 moveb %d6,%d4 1149 moveb %a4@(%d4),%d0 1150 rorl #8,%d0 | d0=$221100xx 1151 lsrl #8,%d6 1152 moveb %d6,%d4 1153 moveb %a4@(%d4),%d3 1154 rorl #8,%d3 | d3=$221100xx 1155 lsrl #8,%d6 1156 moveb %a4@(%d6),%d2 1157 rorl #8,%d2 | d2=$221100xx 1158 1159 moveb %d7,%d4 1160 moveb %a4@(%d4),%d2 | d2=$22110033 1161 lsrl #8,%d7 1162 moveb %d7,%d4 1163 moveb %a4@(%d4),%d1 | d1=$22110033 1164 roll #8,%d1 | d1=$11003322 1165 lsrl #8,%d7 1166 moveb %d7,%d4 1167 moveb %a4@(%d4),%d0 | d0=$22110033 1168 swap %d0 | d0=$00332211 1169 lsrl #8,%d7 1170 moveb %a4@(%d7),%d3 | d3=$22110033 1171 rorl #8,%d3 | d3=$33221100 1172 1173 moveal %sp@(40+8),%a4 | out 1174 1175 movel %a5@+,%d4 1176 eorl %d4,%d0 1177 movel %d0,%a4@+ 1178 1179 movel %a5@+,%d4 1180 eorl %d4,%d1 1181 movel %d1,%a4@+ 1182 1183 movel %a5@+,%d4 1184 eorl %d4,%d2 1185 movel %d2,%a4@+ 1186 1187 movel %a5@+,%d4 1188 eorl %d4,%d3 1189 movel %d3,%a4@ 1190 1191 moveml %sp@+,%d2-%d7/%a2-%a5 1192 rts 1193 .size AES_decrypt, .-AES_decrypt 1194 1195 .data 1196 .balign 4 1197Te0: 1198 .long 0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d 1199 .long 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554 1200 .long 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d 1201 .long 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a 1202 .long 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87 1203 .long 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b 1204 .long 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea 1205 .long 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b 1206 .long 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a 1207 .long 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f 1208 .long 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108 1209 .long 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f 1210 .long 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e 1211 .long 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5 1212 .long 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d 1213 .long 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f 1214 .long 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e 1215 .long 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb 1216 .long 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce 1217 .long 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497 1218 .long 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c 1219 .long 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed 1220 .long 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b 1221 .long 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a 1222 .long 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16 1223 .long 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594 1224 .long 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81 1225 .long 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3 1226 .long 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a 1227 .long 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504 1228 .long 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163 1229 .long 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d 1230 .long 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f 1231 .long 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739 1232 .long 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47 1233 .long 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395 1234 .long 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f 1235 .long 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883 1236 .long 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c 1237 .long 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76 1238 .long 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e 1239 .long 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4 1240 .long 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6 1241 .long 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b 1242 .long 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7 1243 .long 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0 1244 .long 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25 1245 .long 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818 1246 .long 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72 1247 .long 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651 1248 .long 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21 1249 .long 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85 1250 .long 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa 1251 .long 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12 1252 .long 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0 1253 .long 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9 1254 .long 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133 1255 .long 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7 1256 .long 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920 1257 .long 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a 1258 .long 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17 1259 .long 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8 1260 .long 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11 1261 .long 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a 1262Te1: 1263 .long 0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b 1264 .long 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5 1265 .long 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b 1266 .long 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676 1267 .long 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d 1268 .long 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0 1269 .long 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf 1270 .long 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0 1271 .long 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626 1272 .long 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc 1273 .long 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1 1274 .long 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515 1275 .long 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3 1276 .long 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a 1277 .long 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2 1278 .long 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575 1279 .long 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a 1280 .long 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0 1281 .long 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3 1282 .long 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484 1283 .long 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded 1284 .long 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b 1285 .long 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939 1286 .long 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf 1287 .long 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb 1288 .long 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585 1289 .long 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f 1290 .long 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8 1291 .long 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f 1292 .long 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5 1293 .long 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121 1294 .long 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2 1295 .long 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec 1296 .long 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717 1297 .long 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d 1298 .long 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373 1299 .long 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc 1300 .long 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888 1301 .long 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414 1302 .long 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb 1303 .long 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a 1304 .long 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c 1305 .long 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262 1306 .long 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979 1307 .long 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d 1308 .long 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9 1309 .long 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea 1310 .long 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808 1311 .long 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e 1312 .long 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6 1313 .long 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f 1314 .long 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a 1315 .long 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666 1316 .long 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e 1317 .long 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9 1318 .long 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e 1319 .long 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111 1320 .long 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494 1321 .long 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9 1322 .long 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf 1323 .long 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d 1324 .long 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868 1325 .long 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f 1326 .long 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616 1327Te2: 1328 .long 0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b 1329 .long 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5 1330 .long 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b 1331 .long 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76 1332 .long 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d 1333 .long 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0 1334 .long 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af 1335 .long 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0 1336 .long 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26 1337 .long 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc 1338 .long 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1 1339 .long 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15 1340 .long 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3 1341 .long 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a 1342 .long 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2 1343 .long 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75 1344 .long 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a 1345 .long 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0 1346 .long 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3 1347 .long 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384 1348 .long 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed 1349 .long 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b 1350 .long 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239 1351 .long 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf 1352 .long 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb 1353 .long 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185 1354 .long 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f 1355 .long 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8 1356 .long 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f 1357 .long 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5 1358 .long 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221 1359 .long 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2 1360 .long 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec 1361 .long 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17 1362 .long 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d 1363 .long 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673 1364 .long 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc 1365 .long 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88 1366 .long 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814 1367 .long 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb 1368 .long 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a 1369 .long 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c 1370 .long 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462 1371 .long 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279 1372 .long 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d 1373 .long 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9 1374 .long 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea 1375 .long 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008 1376 .long 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e 1377 .long 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6 1378 .long 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f 1379 .long 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a 1380 .long 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66 1381 .long 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e 1382 .long 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9 1383 .long 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e 1384 .long 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211 1385 .long 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394 1386 .long 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9 1387 .long 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df 1388 .long 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d 1389 .long 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068 1390 .long 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f 1391 .long 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16 1392Te3: 1393 .long 0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6 1394 .long 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491 1395 .long 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56 1396 .long 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec 1397 .long 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa 1398 .long 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb 1399 .long 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45 1400 .long 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b 1401 .long 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c 1402 .long 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83 1403 .long 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9 1404 .long 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a 1405 .long 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d 1406 .long 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f 1407 .long 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf 1408 .long 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea 1409 .long 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34 1410 .long 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b 1411 .long 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d 1412 .long 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713 1413 .long 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1 1414 .long 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6 1415 .long 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72 1416 .long 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85 1417 .long 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed 1418 .long 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411 1419 .long 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe 1420 .long 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b 1421 .long 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05 1422 .long 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1 1423 .long 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342 1424 .long 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf 1425 .long 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3 1426 .long 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e 1427 .long 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a 1428 .long 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6 1429 .long 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3 1430 .long 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b 1431 .long 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28 1432 .long 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad 1433 .long 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14 1434 .long 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8 1435 .long 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4 1436 .long 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2 1437 .long 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da 1438 .long 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049 1439 .long 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf 1440 .long 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810 1441 .long 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c 1442 .long 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197 1443 .long 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e 1444 .long 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f 1445 .long 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc 1446 .long 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c 1447 .long 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069 1448 .long 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927 1449 .long 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322 1450 .long 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733 1451 .long 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9 1452 .long 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5 1453 .long 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a 1454 .long 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0 1455 .long 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e 1456 .long 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c 1457 1458Td0: 1459 .long 0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96 1460 .long 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393 1461 .long 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25 1462 .long 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f 1463 .long 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1 1464 .long 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6 1465 .long 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da 1466 .long 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844 1467 .long 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd 1468 .long 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4 1469 .long 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45 1470 .long 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94 1471 .long 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7 1472 .long 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a 1473 .long 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5 1474 .long 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c 1475 .long 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1 1476 .long 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a 1477 .long 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75 1478 .long 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051 1479 .long 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46 1480 .long 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff 1481 .long 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77 1482 .long 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb 1483 .long 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000 1484 .long 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e 1485 .long 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927 1486 .long 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a 1487 .long 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e 1488 .long 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16 1489 .long 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d 1490 .long 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8 1491 .long 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd 1492 .long 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34 1493 .long 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163 1494 .long 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120 1495 .long 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d 1496 .long 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0 1497 .long 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422 1498 .long 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef 1499 .long 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36 1500 .long 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4 1501 .long 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662 1502 .long 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5 1503 .long 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3 1504 .long 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b 1505 .long 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8 1506 .long 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6 1507 .long 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6 1508 .long 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0 1509 .long 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815 1510 .long 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f 1511 .long 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df 1512 .long 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f 1513 .long 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e 1514 .long 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713 1515 .long 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89 1516 .long 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c 1517 .long 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf 1518 .long 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86 1519 .long 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f 1520 .long 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541 1521 .long 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190 1522 .long 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742 1523Td1: 1524 .long 0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e 1525 .long 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303 1526 .long 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c 1527 .long 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3 1528 .long 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0 1529 .long 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9 1530 .long 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259 1531 .long 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8 1532 .long 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971 1533 .long 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a 1534 .long 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f 1535 .long 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b 1536 .long 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8 1537 .long 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab 1538 .long 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708 1539 .long 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682 1540 .long 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2 1541 .long 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe 1542 .long 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb 1543 .long 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10 1544 .long 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd 1545 .long 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015 1546 .long 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e 1547 .long 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee 1548 .long 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000 1549 .long 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72 1550 .long 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39 1551 .long 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e 1552 .long 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91 1553 .long 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a 1554 .long 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17 1555 .long 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9 1556 .long 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60 1557 .long 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e 1558 .long 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1 1559 .long 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611 1560 .long 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1 1561 .long 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3 1562 .long 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964 1563 .long 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390 1564 .long 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b 1565 .long 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf 1566 .long 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46 1567 .long 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af 1568 .long 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512 1569 .long 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb 1570 .long 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a 1571 .long 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8 1572 .long 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c 1573 .long 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266 1574 .long 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8 1575 .long 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6 1576 .long 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604 1577 .long 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551 1578 .long 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41 1579 .long 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647 1580 .long 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c 1581 .long 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1 1582 .long 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737 1583 .long 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db 1584 .long 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340 1585 .long 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95 1586 .long 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1 1587 .long 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857 1588Td2: 1589 .long 0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27 1590 .long 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3 1591 .long 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502 1592 .long 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562 1593 .long 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe 1594 .long 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3 1595 .long 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552 1596 .long 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9 1597 .long 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9 1598 .long 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce 1599 .long 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253 1600 .long 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908 1601 .long 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b 1602 .long 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655 1603 .long 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337 1604 .long 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16 1605 .long 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69 1606 .long 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6 1607 .long 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6 1608 .long 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e 1609 .long 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6 1610 .long 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050 1611 .long 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9 1612 .long 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8 1613 .long 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000 1614 .long 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a 1615 .long 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d 1616 .long 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436 1617 .long 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b 1618 .long 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12 1619 .long 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b 1620 .long 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e 1621 .long 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f 1622 .long 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb 1623 .long 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4 1624 .long 0xdccad731, 0x85104263, 0x22401397, 0x112084c6 1625 .long 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729 1626 .long 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1 1627 .long 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9 1628 .long 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233 1629 .long 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4 1630 .long 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad 1631 .long 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e 1632 .long 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3 1633 .long 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25 1634 .long 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b 1635 .long 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f 1636 .long 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15 1637 .long 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0 1638 .long 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2 1639 .long 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7 1640 .long 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791 1641 .long 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496 1642 .long 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665 1643 .long 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b 1644 .long 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6 1645 .long 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13 1646 .long 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47 1647 .long 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7 1648 .long 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844 1649 .long 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3 1650 .long 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d 1651 .long 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456 1652 .long 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8 1653Td3: 1654 .long 0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a 1655 .long 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b 1656 .long 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5 1657 .long 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5 1658 .long 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d 1659 .long 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b 1660 .long 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95 1661 .long 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e 1662 .long 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27 1663 .long 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d 1664 .long 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562 1665 .long 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9 1666 .long 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752 1667 .long 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66 1668 .long 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3 1669 .long 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced 1670 .long 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e 1671 .long 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4 1672 .long 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4 1673 .long 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd 1674 .long 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d 1675 .long 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60 1676 .long 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767 1677 .long 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79 1678 .long 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000 1679 .long 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c 1680 .long 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736 1681 .long 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24 1682 .long 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b 1683 .long 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c 1684 .long 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12 1685 .long 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814 1686 .long 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3 1687 .long 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b 1688 .long 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8 1689 .long 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084 1690 .long 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7 1691 .long 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077 1692 .long 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247 1693 .long 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22 1694 .long 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698 1695 .long 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f 1696 .long 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254 1697 .long 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582 1698 .long 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf 1699 .long 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb 1700 .long 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883 1701 .long 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef 1702 .long 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629 1703 .long 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035 1704 .long 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533 1705 .long 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17 1706 .long 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4 1707 .long 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46 1708 .long 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb 1709 .long 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d 1710 .long 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb 1711 .long 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a 1712 .long 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73 1713 .long 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678 1714 .long 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2 1715 .long 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff 1716 .long 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064 1717 .long 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0 1718Td4: 1719 .byte 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38 1720 .byte 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb 1721 .byte 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87 1722 .byte 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb 1723 .byte 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d 1724 .byte 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e 1725 .byte 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2 1726 .byte 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25 1727 .byte 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16 1728 .byte 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92 1729 .byte 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda 1730 .byte 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84 1731 .byte 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a 1732 .byte 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06 1733 .byte 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02 1734 .byte 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b 1735 .byte 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea 1736 .byte 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73 1737 .byte 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85 1738 .byte 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e 1739 .byte 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89 1740 .byte 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b 1741 .byte 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20 1742 .byte 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4 1743 .byte 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31 1744 .byte 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f 1745 .byte 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d 1746 .byte 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef 1747 .byte 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0 1748 .byte 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61 1749 .byte 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26 1750 .byte 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d 1751 1752rcon_byte: 1753 .byte 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36 1754