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