diff options
Diffstat (limited to 'src/lib/libcrypto/des')
| -rw-r--r-- | src/lib/libcrypto/des/asm/des_enc.m4 | 345 |
1 files changed, 231 insertions, 114 deletions
diff --git a/src/lib/libcrypto/des/asm/des_enc.m4 b/src/lib/libcrypto/des/asm/des_enc.m4 index f5b1928f99..f59333a030 100644 --- a/src/lib/libcrypto/des/asm/des_enc.m4 +++ b/src/lib/libcrypto/des/asm/des_enc.m4 | |||
| @@ -44,6 +44,7 @@ | |||
| 44 | ! | 44 | ! |
| 45 | 45 | ||
| 46 | .ident "des_enc.m4 2.1" | 46 | .ident "des_enc.m4 2.1" |
| 47 | .file "des_enc-sparc.S" | ||
| 47 | 48 | ||
| 48 | #if defined(__SUNPRO_C) && defined(__sparcv9) | 49 | #if defined(__SUNPRO_C) && defined(__sparcv9) |
| 49 | # define ABI64 /* They've said -xarch=v9 at command line */ | 50 | # define ABI64 /* They've said -xarch=v9 at command line */ |
| @@ -315,16 +316,16 @@ $4: | |||
| 315 | ld [global1+local1], local1 | 316 | ld [global1+local1], local1 |
| 316 | xor $2, out1, out1 ! 8642 | 317 | xor $2, out1, out1 ! 8642 |
| 317 | xor $2, out0, out0 ! 7531 | 318 | xor $2, out0, out0 ! 7531 |
| 318 | fmovs %f0, %f0 ! fxor used for alignment | 319 | ! fmovs %f0, %f0 ! fxor used for alignment |
| 319 | 320 | ||
| 320 | srl out1, 4, local0 ! rotate 4 right | 321 | srl out1, 4, local0 ! rotate 4 right |
| 321 | and out0, local5, local3 ! 3 | 322 | and out0, local5, local3 ! 3 |
| 322 | fmovs %f0, %f0 | 323 | ! fmovs %f0, %f0 |
| 323 | 324 | ||
| 324 | ld [$5+$3*8], local7 ! key 7531 next round | 325 | ld [$5+$3*8], local7 ! key 7531 next round |
| 325 | srl local3, 8, local3 ! 3 | 326 | srl local3, 8, local3 ! 3 |
| 326 | and local0, 252, local2 ! 2 | 327 | and local0, 252, local2 ! 2 |
| 327 | fmovs %f0, %f0 | 328 | ! fmovs %f0, %f0 |
| 328 | 329 | ||
| 329 | ld [global3+local3],local3 ! 3 | 330 | ld [global3+local3],local3 ! 3 |
| 330 | sll out1, 28, out1 ! rotate | 331 | sll out1, 28, out1 ! rotate |
| @@ -1179,8 +1180,11 @@ DES_encrypt1: | |||
| 1179 | 1180 | ||
| 1180 | save %sp, FRAME, %sp | 1181 | save %sp, FRAME, %sp |
| 1181 | 1182 | ||
| 1182 | call .PIC.me.up | 1183 | sethi %hi(.PIC.DES_SPtrans-1f),global1 |
| 1183 | mov .PIC.me.up-(.-4),out0 | 1184 | or global1,%lo(.PIC.DES_SPtrans-1f),global1 |
| 1185 | 1: call .+8 | ||
| 1186 | add %o7,global1,global1 | ||
| 1187 | sub global1,.PIC.DES_SPtrans-.des_and,out2 | ||
| 1184 | 1188 | ||
| 1185 | ld [in0], in5 ! left | 1189 | ld [in0], in5 ! left |
| 1186 | cmp in2, 0 ! enc | 1190 | cmp in2, 0 ! enc |
| @@ -1237,8 +1241,11 @@ DES_encrypt2: | |||
| 1237 | 1241 | ||
| 1238 | save %sp, FRAME, %sp | 1242 | save %sp, FRAME, %sp |
| 1239 | 1243 | ||
| 1240 | call .PIC.me.up | 1244 | sethi %hi(.PIC.DES_SPtrans-1f),global1 |
| 1241 | mov .PIC.me.up-(.-4),out0 | 1245 | or global1,%lo(.PIC.DES_SPtrans-1f),global1 |
| 1246 | 1: call .+8 | ||
| 1247 | add %o7,global1,global1 | ||
| 1248 | sub global1,.PIC.DES_SPtrans-.des_and,out2 | ||
| 1242 | 1249 | ||
| 1243 | ! Set sbox address 1 to 6 and rotate halfs 3 left | 1250 | ! Set sbox address 1 to 6 and rotate halfs 3 left |
| 1244 | ! Errors caught by destest? Yes. Still? *NO* | 1251 | ! Errors caught by destest? Yes. Still? *NO* |
| @@ -1352,8 +1359,11 @@ DES_encrypt3: | |||
| 1352 | 1359 | ||
| 1353 | save %sp, FRAME, %sp | 1360 | save %sp, FRAME, %sp |
| 1354 | 1361 | ||
| 1355 | call .PIC.me.up | 1362 | sethi %hi(.PIC.DES_SPtrans-1f),global1 |
| 1356 | mov .PIC.me.up-(.-4),out0 | 1363 | or global1,%lo(.PIC.DES_SPtrans-1f),global1 |
| 1364 | 1: call .+8 | ||
| 1365 | add %o7,global1,global1 | ||
| 1366 | sub global1,.PIC.DES_SPtrans-.des_and,out2 | ||
| 1357 | 1367 | ||
| 1358 | ld [in0], in5 ! left | 1368 | ld [in0], in5 ! left |
| 1359 | add in2, 120, in4 ! ks2 | 1369 | add in2, 120, in4 ! ks2 |
| @@ -1394,8 +1404,11 @@ DES_decrypt3: | |||
| 1394 | 1404 | ||
| 1395 | save %sp, FRAME, %sp | 1405 | save %sp, FRAME, %sp |
| 1396 | 1406 | ||
| 1397 | call .PIC.me.up | 1407 | sethi %hi(.PIC.DES_SPtrans-1f),global1 |
| 1398 | mov .PIC.me.up-(.-4),out0 | 1408 | or global1,%lo(.PIC.DES_SPtrans-1f),global1 |
| 1409 | 1: call .+8 | ||
| 1410 | add %o7,global1,global1 | ||
| 1411 | sub global1,.PIC.DES_SPtrans-.des_and,out2 | ||
| 1399 | 1412 | ||
| 1400 | ld [in0], in5 ! left | 1413 | ld [in0], in5 ! left |
| 1401 | add in3, 120, in4 ! ks3 | 1414 | add in3, 120, in4 ! ks3 |
| @@ -1424,105 +1437,6 @@ DES_decrypt3: | |||
| 1424 | .DES_decrypt3.end: | 1437 | .DES_decrypt3.end: |
| 1425 | .size DES_decrypt3,.DES_decrypt3.end-DES_decrypt3 | 1438 | .size DES_decrypt3,.DES_decrypt3.end-DES_decrypt3 |
| 1426 | 1439 | ||
| 1427 | .align 256 | ||
| 1428 | .type .des_and,#object | ||
| 1429 | .size .des_and,284 | ||
| 1430 | |||
| 1431 | .des_and: | ||
| 1432 | |||
| 1433 | ! This table is used for AND 0xFC when it is known that register | ||
| 1434 | ! bits 8-31 are zero. Makes it possible to do three arithmetic | ||
| 1435 | ! operations in one cycle. | ||
| 1436 | |||
| 1437 | .byte 0, 0, 0, 0, 4, 4, 4, 4 | ||
| 1438 | .byte 8, 8, 8, 8, 12, 12, 12, 12 | ||
| 1439 | .byte 16, 16, 16, 16, 20, 20, 20, 20 | ||
| 1440 | .byte 24, 24, 24, 24, 28, 28, 28, 28 | ||
| 1441 | .byte 32, 32, 32, 32, 36, 36, 36, 36 | ||
| 1442 | .byte 40, 40, 40, 40, 44, 44, 44, 44 | ||
| 1443 | .byte 48, 48, 48, 48, 52, 52, 52, 52 | ||
| 1444 | .byte 56, 56, 56, 56, 60, 60, 60, 60 | ||
| 1445 | .byte 64, 64, 64, 64, 68, 68, 68, 68 | ||
| 1446 | .byte 72, 72, 72, 72, 76, 76, 76, 76 | ||
| 1447 | .byte 80, 80, 80, 80, 84, 84, 84, 84 | ||
| 1448 | .byte 88, 88, 88, 88, 92, 92, 92, 92 | ||
| 1449 | .byte 96, 96, 96, 96, 100, 100, 100, 100 | ||
| 1450 | .byte 104, 104, 104, 104, 108, 108, 108, 108 | ||
| 1451 | .byte 112, 112, 112, 112, 116, 116, 116, 116 | ||
| 1452 | .byte 120, 120, 120, 120, 124, 124, 124, 124 | ||
| 1453 | .byte 128, 128, 128, 128, 132, 132, 132, 132 | ||
| 1454 | .byte 136, 136, 136, 136, 140, 140, 140, 140 | ||
| 1455 | .byte 144, 144, 144, 144, 148, 148, 148, 148 | ||
| 1456 | .byte 152, 152, 152, 152, 156, 156, 156, 156 | ||
| 1457 | .byte 160, 160, 160, 160, 164, 164, 164, 164 | ||
| 1458 | .byte 168, 168, 168, 168, 172, 172, 172, 172 | ||
| 1459 | .byte 176, 176, 176, 176, 180, 180, 180, 180 | ||
| 1460 | .byte 184, 184, 184, 184, 188, 188, 188, 188 | ||
| 1461 | .byte 192, 192, 192, 192, 196, 196, 196, 196 | ||
| 1462 | .byte 200, 200, 200, 200, 204, 204, 204, 204 | ||
| 1463 | .byte 208, 208, 208, 208, 212, 212, 212, 212 | ||
| 1464 | .byte 216, 216, 216, 216, 220, 220, 220, 220 | ||
| 1465 | .byte 224, 224, 224, 224, 228, 228, 228, 228 | ||
| 1466 | .byte 232, 232, 232, 232, 236, 236, 236, 236 | ||
| 1467 | .byte 240, 240, 240, 240, 244, 244, 244, 244 | ||
| 1468 | .byte 248, 248, 248, 248, 252, 252, 252, 252 | ||
| 1469 | |||
| 1470 | ! 5 numbers for initil/final permutation | ||
| 1471 | |||
| 1472 | .word 0x0f0f0f0f ! offset 256 | ||
| 1473 | .word 0x0000ffff ! 260 | ||
| 1474 | .word 0x33333333 ! 264 | ||
| 1475 | .word 0x00ff00ff ! 268 | ||
| 1476 | .word 0x55555555 ! 272 | ||
| 1477 | |||
| 1478 | .word 0 ! 276 | ||
| 1479 | .word LOOPS ! 280 | ||
| 1480 | .word 0x0000FC00 ! 284 | ||
| 1481 | .PIC.DES_SPtrans: | ||
| 1482 | .word %r_disp32(DES_SPtrans) | ||
| 1483 | |||
| 1484 | ! input: out0 offset between .PIC.me.up and caller | ||
| 1485 | ! output: out0 pointer to .PIC.me.up | ||
| 1486 | ! out2 pointer to .des_and | ||
| 1487 | ! global1 pointer to DES_SPtrans | ||
| 1488 | .align 32 | ||
| 1489 | .PIC.me.up: | ||
| 1490 | add out0,%o7,out0 ! pointer to .PIC.me.up | ||
| 1491 | #if 1 | ||
| 1492 | ld [out0+(.PIC.DES_SPtrans-.PIC.me.up)],global1 | ||
| 1493 | add global1,(.PIC.DES_SPtrans-.PIC.me.up),global1 | ||
| 1494 | add global1,out0,global1 | ||
| 1495 | #else | ||
| 1496 | # ifdef OPENSSL_PIC | ||
| 1497 | ! In case anybody wonders why this code is same for both ABI. | ||
| 1498 | ! To start with it is not. Do note LDPTR below. But of course | ||
| 1499 | ! you must be wondering why the rest of it does not contain | ||
| 1500 | ! things like %hh, %hm and %lm. Well, those are needed only | ||
| 1501 | ! if OpenSSL library *itself* will become larger than 4GB, | ||
| 1502 | ! which is not going to happen any time soon. | ||
| 1503 | sethi %hi(DES_SPtrans),global1 | ||
| 1504 | or global1,%lo(DES_SPtrans),global1 | ||
| 1505 | sethi %hi(_GLOBAL_OFFSET_TABLE_-(.PIC.me.up-.)),out2 | ||
| 1506 | add global1,out0,global1 | ||
| 1507 | add out2,%lo(_GLOBAL_OFFSET_TABLE_-(.PIC.me.up-.)),out2 | ||
| 1508 | LDPTR [out2+global1],global1 | ||
| 1509 | # elif 0 | ||
| 1510 | setn DES_SPtrans,out2,global1 ! synthetic instruction ! | ||
| 1511 | # elif defined(ABI64) | ||
| 1512 | sethi %hh(DES_SPtrans),out2 | ||
| 1513 | or out2,%hm(DES_SPtrans),out2 | ||
| 1514 | sethi %lm(DES_SPtrans),global1 | ||
| 1515 | or global1,%lo(DES_SPtrans),global1 | ||
| 1516 | sllx out2,32,out2 | ||
| 1517 | or out2,global1,global1 | ||
| 1518 | # else | ||
| 1519 | sethi %hi(DES_SPtrans),global1 | ||
| 1520 | or global1,%lo(DES_SPtrans),global1 | ||
| 1521 | # endif | ||
| 1522 | #endif | ||
| 1523 | retl | ||
| 1524 | add out0,.des_and-.PIC.me.up,out2 | ||
| 1525 | |||
| 1526 | ! void DES_ncbc_encrypt(input, output, length, schedule, ivec, enc) | 1440 | ! void DES_ncbc_encrypt(input, output, length, schedule, ivec, enc) |
| 1527 | ! ***************************************************************** | 1441 | ! ***************************************************************** |
| 1528 | 1442 | ||
| @@ -1539,8 +1453,11 @@ DES_ncbc_encrypt: | |||
| 1539 | define({OUTPUT}, { [%sp+BIAS+ARG0+1*ARGSZ] }) | 1453 | define({OUTPUT}, { [%sp+BIAS+ARG0+1*ARGSZ] }) |
| 1540 | define({IVEC}, { [%sp+BIAS+ARG0+4*ARGSZ] }) | 1454 | define({IVEC}, { [%sp+BIAS+ARG0+4*ARGSZ] }) |
| 1541 | 1455 | ||
| 1542 | call .PIC.me.up | 1456 | sethi %hi(.PIC.DES_SPtrans-1f),global1 |
| 1543 | mov .PIC.me.up-(.-4),out0 | 1457 | or global1,%lo(.PIC.DES_SPtrans-1f),global1 |
| 1458 | 1: call .+8 | ||
| 1459 | add %o7,global1,global1 | ||
| 1460 | sub global1,.PIC.DES_SPtrans-.des_and,out2 | ||
| 1544 | 1461 | ||
| 1545 | cmp in5, 0 ! enc | 1462 | cmp in5, 0 ! enc |
| 1546 | 1463 | ||
| @@ -1761,8 +1678,11 @@ DES_ede3_cbc_encrypt: | |||
| 1761 | define({KS2}, { [%sp+BIAS+ARG0+4*ARGSZ] }) | 1678 | define({KS2}, { [%sp+BIAS+ARG0+4*ARGSZ] }) |
| 1762 | define({KS3}, { [%sp+BIAS+ARG0+5*ARGSZ] }) | 1679 | define({KS3}, { [%sp+BIAS+ARG0+5*ARGSZ] }) |
| 1763 | 1680 | ||
| 1764 | call .PIC.me.up | 1681 | sethi %hi(.PIC.DES_SPtrans-1f),global1 |
| 1765 | mov .PIC.me.up-(.-4),out0 | 1682 | or global1,%lo(.PIC.DES_SPtrans-1f),global1 |
| 1683 | 1: call .+8 | ||
| 1684 | add %o7,global1,global1 | ||
| 1685 | sub global1,.PIC.DES_SPtrans-.des_and,out2 | ||
| 1766 | 1686 | ||
| 1767 | LDPTR [%fp+BIAS+ARG0+7*ARGSZ], local3 ! enc | 1687 | LDPTR [%fp+BIAS+ARG0+7*ARGSZ], local3 ! enc |
| 1768 | LDPTR [%fp+BIAS+ARG0+6*ARGSZ], local4 ! ivec | 1688 | LDPTR [%fp+BIAS+ARG0+6*ARGSZ], local4 ! ivec |
| @@ -1978,3 +1898,200 @@ DES_ede3_cbc_encrypt: | |||
| 1978 | 1898 | ||
| 1979 | .DES_ede3_cbc_encrypt.end: | 1899 | .DES_ede3_cbc_encrypt.end: |
| 1980 | .size DES_ede3_cbc_encrypt,.DES_ede3_cbc_encrypt.end-DES_ede3_cbc_encrypt | 1900 | .size DES_ede3_cbc_encrypt,.DES_ede3_cbc_encrypt.end-DES_ede3_cbc_encrypt |
| 1901 | |||
| 1902 | .align 256 | ||
| 1903 | .type .des_and,#object | ||
| 1904 | .size .des_and,284 | ||
| 1905 | |||
| 1906 | .des_and: | ||
| 1907 | |||
| 1908 | ! This table is used for AND 0xFC when it is known that register | ||
| 1909 | ! bits 8-31 are zero. Makes it possible to do three arithmetic | ||
| 1910 | ! operations in one cycle. | ||
| 1911 | |||
| 1912 | .byte 0, 0, 0, 0, 4, 4, 4, 4 | ||
| 1913 | .byte 8, 8, 8, 8, 12, 12, 12, 12 | ||
| 1914 | .byte 16, 16, 16, 16, 20, 20, 20, 20 | ||
| 1915 | .byte 24, 24, 24, 24, 28, 28, 28, 28 | ||
| 1916 | .byte 32, 32, 32, 32, 36, 36, 36, 36 | ||
| 1917 | .byte 40, 40, 40, 40, 44, 44, 44, 44 | ||
| 1918 | .byte 48, 48, 48, 48, 52, 52, 52, 52 | ||
| 1919 | .byte 56, 56, 56, 56, 60, 60, 60, 60 | ||
| 1920 | .byte 64, 64, 64, 64, 68, 68, 68, 68 | ||
| 1921 | .byte 72, 72, 72, 72, 76, 76, 76, 76 | ||
| 1922 | .byte 80, 80, 80, 80, 84, 84, 84, 84 | ||
| 1923 | .byte 88, 88, 88, 88, 92, 92, 92, 92 | ||
| 1924 | .byte 96, 96, 96, 96, 100, 100, 100, 100 | ||
| 1925 | .byte 104, 104, 104, 104, 108, 108, 108, 108 | ||
| 1926 | .byte 112, 112, 112, 112, 116, 116, 116, 116 | ||
| 1927 | .byte 120, 120, 120, 120, 124, 124, 124, 124 | ||
| 1928 | .byte 128, 128, 128, 128, 132, 132, 132, 132 | ||
| 1929 | .byte 136, 136, 136, 136, 140, 140, 140, 140 | ||
| 1930 | .byte 144, 144, 144, 144, 148, 148, 148, 148 | ||
| 1931 | .byte 152, 152, 152, 152, 156, 156, 156, 156 | ||
| 1932 | .byte 160, 160, 160, 160, 164, 164, 164, 164 | ||
| 1933 | .byte 168, 168, 168, 168, 172, 172, 172, 172 | ||
| 1934 | .byte 176, 176, 176, 176, 180, 180, 180, 180 | ||
| 1935 | .byte 184, 184, 184, 184, 188, 188, 188, 188 | ||
| 1936 | .byte 192, 192, 192, 192, 196, 196, 196, 196 | ||
| 1937 | .byte 200, 200, 200, 200, 204, 204, 204, 204 | ||
| 1938 | .byte 208, 208, 208, 208, 212, 212, 212, 212 | ||
| 1939 | .byte 216, 216, 216, 216, 220, 220, 220, 220 | ||
| 1940 | .byte 224, 224, 224, 224, 228, 228, 228, 228 | ||
| 1941 | .byte 232, 232, 232, 232, 236, 236, 236, 236 | ||
| 1942 | .byte 240, 240, 240, 240, 244, 244, 244, 244 | ||
| 1943 | .byte 248, 248, 248, 248, 252, 252, 252, 252 | ||
| 1944 | |||
| 1945 | ! 5 numbers for initil/final permutation | ||
| 1946 | |||
| 1947 | .word 0x0f0f0f0f ! offset 256 | ||
| 1948 | .word 0x0000ffff ! 260 | ||
| 1949 | .word 0x33333333 ! 264 | ||
| 1950 | .word 0x00ff00ff ! 268 | ||
| 1951 | .word 0x55555555 ! 272 | ||
| 1952 | |||
| 1953 | .word 0 ! 276 | ||
| 1954 | .word LOOPS ! 280 | ||
| 1955 | .word 0x0000FC00 ! 284 | ||
| 1956 | |||
| 1957 | .type .PIC.DES_SPtrans,#object | ||
| 1958 | .size .PIC.DES_SPtrans,2048 | ||
| 1959 | .align 64 | ||
| 1960 | .PIC.DES_SPtrans: | ||
| 1961 | ! nibble 0 | ||
| 1962 | .word 0x02080800, 0x00080000, 0x02000002, 0x02080802 | ||
| 1963 | .word 0x02000000, 0x00080802, 0x00080002, 0x02000002 | ||
| 1964 | .word 0x00080802, 0x02080800, 0x02080000, 0x00000802 | ||
| 1965 | .word 0x02000802, 0x02000000, 0x00000000, 0x00080002 | ||
| 1966 | .word 0x00080000, 0x00000002, 0x02000800, 0x00080800 | ||
| 1967 | .word 0x02080802, 0x02080000, 0x00000802, 0x02000800 | ||
| 1968 | .word 0x00000002, 0x00000800, 0x00080800, 0x02080002 | ||
| 1969 | .word 0x00000800, 0x02000802, 0x02080002, 0x00000000 | ||
| 1970 | .word 0x00000000, 0x02080802, 0x02000800, 0x00080002 | ||
| 1971 | .word 0x02080800, 0x00080000, 0x00000802, 0x02000800 | ||
| 1972 | .word 0x02080002, 0x00000800, 0x00080800, 0x02000002 | ||
| 1973 | .word 0x00080802, 0x00000002, 0x02000002, 0x02080000 | ||
| 1974 | .word 0x02080802, 0x00080800, 0x02080000, 0x02000802 | ||
| 1975 | .word 0x02000000, 0x00000802, 0x00080002, 0x00000000 | ||
| 1976 | .word 0x00080000, 0x02000000, 0x02000802, 0x02080800 | ||
| 1977 | .word 0x00000002, 0x02080002, 0x00000800, 0x00080802 | ||
| 1978 | ! nibble 1 | ||
| 1979 | .word 0x40108010, 0x00000000, 0x00108000, 0x40100000 | ||
| 1980 | .word 0x40000010, 0x00008010, 0x40008000, 0x00108000 | ||
| 1981 | .word 0x00008000, 0x40100010, 0x00000010, 0x40008000 | ||
| 1982 | .word 0x00100010, 0x40108000, 0x40100000, 0x00000010 | ||
| 1983 | .word 0x00100000, 0x40008010, 0x40100010, 0x00008000 | ||
| 1984 | .word 0x00108010, 0x40000000, 0x00000000, 0x00100010 | ||
| 1985 | .word 0x40008010, 0x00108010, 0x40108000, 0x40000010 | ||
| 1986 | .word 0x40000000, 0x00100000, 0x00008010, 0x40108010 | ||
| 1987 | .word 0x00100010, 0x40108000, 0x40008000, 0x00108010 | ||
| 1988 | .word 0x40108010, 0x00100010, 0x40000010, 0x00000000 | ||
| 1989 | .word 0x40000000, 0x00008010, 0x00100000, 0x40100010 | ||
| 1990 | .word 0x00008000, 0x40000000, 0x00108010, 0x40008010 | ||
| 1991 | .word 0x40108000, 0x00008000, 0x00000000, 0x40000010 | ||
| 1992 | .word 0x00000010, 0x40108010, 0x00108000, 0x40100000 | ||
| 1993 | .word 0x40100010, 0x00100000, 0x00008010, 0x40008000 | ||
| 1994 | .word 0x40008010, 0x00000010, 0x40100000, 0x00108000 | ||
| 1995 | ! nibble 2 | ||
| 1996 | .word 0x04000001, 0x04040100, 0x00000100, 0x04000101 | ||
| 1997 | .word 0x00040001, 0x04000000, 0x04000101, 0x00040100 | ||
| 1998 | .word 0x04000100, 0x00040000, 0x04040000, 0x00000001 | ||
| 1999 | .word 0x04040101, 0x00000101, 0x00000001, 0x04040001 | ||
| 2000 | .word 0x00000000, 0x00040001, 0x04040100, 0x00000100 | ||
| 2001 | .word 0x00000101, 0x04040101, 0x00040000, 0x04000001 | ||
| 2002 | .word 0x04040001, 0x04000100, 0x00040101, 0x04040000 | ||
| 2003 | .word 0x00040100, 0x00000000, 0x04000000, 0x00040101 | ||
| 2004 | .word 0x04040100, 0x00000100, 0x00000001, 0x00040000 | ||
| 2005 | .word 0x00000101, 0x00040001, 0x04040000, 0x04000101 | ||
| 2006 | .word 0x00000000, 0x04040100, 0x00040100, 0x04040001 | ||
| 2007 | .word 0x00040001, 0x04000000, 0x04040101, 0x00000001 | ||
| 2008 | .word 0x00040101, 0x04000001, 0x04000000, 0x04040101 | ||
| 2009 | .word 0x00040000, 0x04000100, 0x04000101, 0x00040100 | ||
| 2010 | .word 0x04000100, 0x00000000, 0x04040001, 0x00000101 | ||
| 2011 | .word 0x04000001, 0x00040101, 0x00000100, 0x04040000 | ||
| 2012 | ! nibble 3 | ||
| 2013 | .word 0x00401008, 0x10001000, 0x00000008, 0x10401008 | ||
| 2014 | .word 0x00000000, 0x10400000, 0x10001008, 0x00400008 | ||
| 2015 | .word 0x10401000, 0x10000008, 0x10000000, 0x00001008 | ||
| 2016 | .word 0x10000008, 0x00401008, 0x00400000, 0x10000000 | ||
| 2017 | .word 0x10400008, 0x00401000, 0x00001000, 0x00000008 | ||
| 2018 | .word 0x00401000, 0x10001008, 0x10400000, 0x00001000 | ||
| 2019 | .word 0x00001008, 0x00000000, 0x00400008, 0x10401000 | ||
| 2020 | .word 0x10001000, 0x10400008, 0x10401008, 0x00400000 | ||
| 2021 | .word 0x10400008, 0x00001008, 0x00400000, 0x10000008 | ||
| 2022 | .word 0x00401000, 0x10001000, 0x00000008, 0x10400000 | ||
| 2023 | .word 0x10001008, 0x00000000, 0x00001000, 0x00400008 | ||
| 2024 | .word 0x00000000, 0x10400008, 0x10401000, 0x00001000 | ||
| 2025 | .word 0x10000000, 0x10401008, 0x00401008, 0x00400000 | ||
| 2026 | .word 0x10401008, 0x00000008, 0x10001000, 0x00401008 | ||
| 2027 | .word 0x00400008, 0x00401000, 0x10400000, 0x10001008 | ||
| 2028 | .word 0x00001008, 0x10000000, 0x10000008, 0x10401000 | ||
| 2029 | ! nibble 4 | ||
| 2030 | .word 0x08000000, 0x00010000, 0x00000400, 0x08010420 | ||
| 2031 | .word 0x08010020, 0x08000400, 0x00010420, 0x08010000 | ||
| 2032 | .word 0x00010000, 0x00000020, 0x08000020, 0x00010400 | ||
| 2033 | .word 0x08000420, 0x08010020, 0x08010400, 0x00000000 | ||
| 2034 | .word 0x00010400, 0x08000000, 0x00010020, 0x00000420 | ||
| 2035 | .word 0x08000400, 0x00010420, 0x00000000, 0x08000020 | ||
| 2036 | .word 0x00000020, 0x08000420, 0x08010420, 0x00010020 | ||
| 2037 | .word 0x08010000, 0x00000400, 0x00000420, 0x08010400 | ||
| 2038 | .word 0x08010400, 0x08000420, 0x00010020, 0x08010000 | ||
| 2039 | .word 0x00010000, 0x00000020, 0x08000020, 0x08000400 | ||
| 2040 | .word 0x08000000, 0x00010400, 0x08010420, 0x00000000 | ||
| 2041 | .word 0x00010420, 0x08000000, 0x00000400, 0x00010020 | ||
| 2042 | .word 0x08000420, 0x00000400, 0x00000000, 0x08010420 | ||
| 2043 | .word 0x08010020, 0x08010400, 0x00000420, 0x00010000 | ||
| 2044 | .word 0x00010400, 0x08010020, 0x08000400, 0x00000420 | ||
| 2045 | .word 0x00000020, 0x00010420, 0x08010000, 0x08000020 | ||
| 2046 | ! nibble 5 | ||
| 2047 | .word 0x80000040, 0x00200040, 0x00000000, 0x80202000 | ||
| 2048 | .word 0x00200040, 0x00002000, 0x80002040, 0x00200000 | ||
| 2049 | .word 0x00002040, 0x80202040, 0x00202000, 0x80000000 | ||
| 2050 | .word 0x80002000, 0x80000040, 0x80200000, 0x00202040 | ||
| 2051 | .word 0x00200000, 0x80002040, 0x80200040, 0x00000000 | ||
| 2052 | .word 0x00002000, 0x00000040, 0x80202000, 0x80200040 | ||
| 2053 | .word 0x80202040, 0x80200000, 0x80000000, 0x00002040 | ||
| 2054 | .word 0x00000040, 0x00202000, 0x00202040, 0x80002000 | ||
| 2055 | .word 0x00002040, 0x80000000, 0x80002000, 0x00202040 | ||
| 2056 | .word 0x80202000, 0x00200040, 0x00000000, 0x80002000 | ||
| 2057 | .word 0x80000000, 0x00002000, 0x80200040, 0x00200000 | ||
| 2058 | .word 0x00200040, 0x80202040, 0x00202000, 0x00000040 | ||
| 2059 | .word 0x80202040, 0x00202000, 0x00200000, 0x80002040 | ||
| 2060 | .word 0x80000040, 0x80200000, 0x00202040, 0x00000000 | ||
| 2061 | .word 0x00002000, 0x80000040, 0x80002040, 0x80202000 | ||
| 2062 | .word 0x80200000, 0x00002040, 0x00000040, 0x80200040 | ||
| 2063 | ! nibble 6 | ||
| 2064 | .word 0x00004000, 0x00000200, 0x01000200, 0x01000004 | ||
| 2065 | .word 0x01004204, 0x00004004, 0x00004200, 0x00000000 | ||
| 2066 | .word 0x01000000, 0x01000204, 0x00000204, 0x01004000 | ||
| 2067 | .word 0x00000004, 0x01004200, 0x01004000, 0x00000204 | ||
| 2068 | .word 0x01000204, 0x00004000, 0x00004004, 0x01004204 | ||
| 2069 | .word 0x00000000, 0x01000200, 0x01000004, 0x00004200 | ||
| 2070 | .word 0x01004004, 0x00004204, 0x01004200, 0x00000004 | ||
| 2071 | .word 0x00004204, 0x01004004, 0x00000200, 0x01000000 | ||
| 2072 | .word 0x00004204, 0x01004000, 0x01004004, 0x00000204 | ||
| 2073 | .word 0x00004000, 0x00000200, 0x01000000, 0x01004004 | ||
| 2074 | .word 0x01000204, 0x00004204, 0x00004200, 0x00000000 | ||
| 2075 | .word 0x00000200, 0x01000004, 0x00000004, 0x01000200 | ||
| 2076 | .word 0x00000000, 0x01000204, 0x01000200, 0x00004200 | ||
| 2077 | .word 0x00000204, 0x00004000, 0x01004204, 0x01000000 | ||
| 2078 | .word 0x01004200, 0x00000004, 0x00004004, 0x01004204 | ||
| 2079 | .word 0x01000004, 0x01004200, 0x01004000, 0x00004004 | ||
| 2080 | ! nibble 7 | ||
| 2081 | .word 0x20800080, 0x20820000, 0x00020080, 0x00000000 | ||
| 2082 | .word 0x20020000, 0x00800080, 0x20800000, 0x20820080 | ||
| 2083 | .word 0x00000080, 0x20000000, 0x00820000, 0x00020080 | ||
| 2084 | .word 0x00820080, 0x20020080, 0x20000080, 0x20800000 | ||
| 2085 | .word 0x00020000, 0x00820080, 0x00800080, 0x20020000 | ||
| 2086 | .word 0x20820080, 0x20000080, 0x00000000, 0x00820000 | ||
| 2087 | .word 0x20000000, 0x00800000, 0x20020080, 0x20800080 | ||
| 2088 | .word 0x00800000, 0x00020000, 0x20820000, 0x00000080 | ||
| 2089 | .word 0x00800000, 0x00020000, 0x20000080, 0x20820080 | ||
| 2090 | .word 0x00020080, 0x20000000, 0x00000000, 0x00820000 | ||
| 2091 | .word 0x20800080, 0x20020080, 0x20020000, 0x00800080 | ||
| 2092 | .word 0x20820000, 0x00000080, 0x00800080, 0x20020000 | ||
| 2093 | .word 0x20820080, 0x00800000, 0x20800000, 0x20000080 | ||
| 2094 | .word 0x00820000, 0x00020080, 0x20020080, 0x20800000 | ||
| 2095 | .word 0x00000080, 0x20820000, 0x00820080, 0x00000000 | ||
| 2096 | .word 0x20000000, 0x20800080, 0x00020000, 0x00820080 | ||
| 2097 | |||
