diff options
author | Richard Levitte <levitte@openssl.org> | 2000-10-14 20:09:54 +0000 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2000-10-14 20:09:54 +0000 |
commit | 3ab56511120b7a67ed4e4dbac9d60e5d1520a453 (patch) | |
tree | 399ad045f57838ba50a40a57f9834d7a98f6af4a /crypto/rijndael | |
parent | 82ce0b2308027b337f0d8bea973eca5f818aaceb (diff) |
The experimental Rijndael code moved to the main trunk.
make update done.
Diffstat (limited to 'crypto/rijndael')
-rw-r--r-- | crypto/rijndael/Makefile.ssl | 86 | ||||
-rwxr-xr-x | crypto/rijndael/README | 84 | ||||
-rw-r--r-- | crypto/rijndael/boxes-fst-corrected.dat | 3986 | ||||
-rwxr-xr-x | crypto/rijndael/rijndael-alg-fst.c | 476 | ||||
-rwxr-xr-x | crypto/rijndael/rijndael-alg-fst.h | 46 | ||||
-rw-r--r-- | crypto/rijndael/rijndael.h | 11 |
6 files changed, 4689 insertions, 0 deletions
diff --git a/crypto/rijndael/Makefile.ssl b/crypto/rijndael/Makefile.ssl new file mode 100644 index 0000000000..01da7ac8b3 --- /dev/null +++ b/crypto/rijndael/Makefile.ssl @@ -0,0 +1,86 @@ +# +# SSLeay/crypto/blowfish/Makefile +# + +DIR= rijndael +TOP= ../.. +CC= cc +CPP= $(CC) -E +INCLUDES= +CFLAG=-g +INSTALL_PREFIX= +OPENSSLDIR= /usr/local/ssl +INSTALLTOP=/usr/local/ssl +MAKE= make -f Makefile.ssl +MAKEDEPEND= $(TOP)/util/domd $(TOP) +MAKEFILE= Makefile.ssl +AR= ar r + +RD_ENC= rd_enc.o +# or use +#DES_ENC= bx86-elf.o + +CFLAGS= $(INCLUDES) $(CFLAG) -DINTERMEDIATE_VALUE_KAT -DBINARY_KEY_MATERIAL + +GENERAL=Makefile +#TEST=rijndael-test-fst.c table.128 table.192 table.256 +TEST= +APPS= + +LIB=$(TOP)/libcrypto.a +LIBSRC=rijndael-alg-fst.c +LIBOBJ=rijndael-alg-fst.o + +SRC= $(LIBSRC) + +EXHEADER=rijndael-alg-fst.h rijndael.h + +top: + (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all) + +all: lib + +lib: $(LIBOBJ) + $(AR) $(LIB) $(LIBOBJ) + $(RANLIB) $(LIB) + @touch lib + +files: + $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO + +links: + @$(TOP)/util/point.sh Makefile.ssl Makefile + @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER) + @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST) + @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS) + +install: installs + +installs: + @for i in $(EXHEADER) ; \ + do \ + (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ + chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ + done; + +tags: + ctags $(SRC) + +tests: + +lint: + lint -DLINT $(INCLUDES) $(SRC)>fluff + +depend: + $(MAKEDEPEND) $(INCLUDES) $(DEPFLAG) $(PROGS) $(LIBSRC) + +dclean: + $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new + mv -f Makefile.new $(MAKEFILE) + +clean: + rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff + +# DO NOT DELETE THIS LINE + +rijndael-alg-fst.o: boxes-fst-corrected.dat rijndael-alg-fst.h diff --git a/crypto/rijndael/README b/crypto/rijndael/README new file mode 100755 index 0000000000..6d6f19fa49 --- /dev/null +++ b/crypto/rijndael/README @@ -0,0 +1,84 @@ +Rijndael +Joan Daemen + +Optimised ANSI C v2.4 +----------------------------------------------------------- + +This archive contains the following files: + +Makefile: A file that allows for easy compiling of the code with + Unix `make' (tested with GNU make). +README: This file. +boxes-fst.dat: Tables that are needed by the reference implementation. + The tables implement the S-box and its inverse, and also + some temporary tables needed for multiplying in the finite + field GF(2^8). +rijndael-alg-fst.c: +rijndael-alg-fst.h: + Algorithm implementation. +rijndael-api-fst.c: +rijndael-api-fst.h: + Interface to the C API. +rijndaeltest-fst.c: + Implementation of the KAT and MCT. +table.128: +table.192: +table.256: + Files needed for the KAT (for the Table Known Answer Test). + + + +Instructions for the KAT and MCT software: + +1) Compile the C code and put the executable in the same directory as the + table.??? files. +2) Run the executable. It generates all the tables in the NIST format. +3) Compare the generated tables with the original provided tables, e.g. + in Unix, with `diff'. +4) The code is independent of the ENDIANness of the machine. + However, the code casts char pointers to int pointers. + On some platforms, this casting can cause problems. + This will cause malfunctioning of the CBC Monte Carlo tests. + In this case, the compile parameter STRICT_ALIGN should be set to 1. + (Of course this results in slower code.) + + +Changes with respect to v1.0 (= round 1 submission) +--------------------------------------------------- + +1) Removed the parameter blockLen from makeKey() and cipherInit(). + The parameter is still present in the structures keyInstance and + cipherInstance. +2) Removed some calls to sscan(). +3) Corrected the CBC decryption Monte Carlo test code. +4) Provided code for platforms with pointer alignment problems. + +---------------------------------------------------------------------- + +Changes from v2.0 (= round 2 submission) +---------------------------------------- + +Various bug fixes in CBC encryption and decryption mode. + +---------------------------------------------------------------------- + +Changes from v2.2 +----------------- + +-- Moved number of rounds to the keyInstance structure + to make implementation thread-safe +-- Functions used only to generate the Intermediate Value + Known Answer Test are now conditionally compiled + via #define INTERMEDIATE_VALUE_KAT +-- Further optimized for the default 128-bit block size +-- Fixed CBC decryption bug (chained IV was lost if input + and outBuffer were the same) +-- Added padding capability to CBC mode (allows encryption + of any number of octets, not only full blocks) + +---------------------------------------------------------------------- + +Changes from v2.3 +----------------- + +Fixed a small bug in CBC mode. diff --git a/crypto/rijndael/boxes-fst-corrected.dat b/crypto/rijndael/boxes-fst-corrected.dat new file mode 100644 index 0000000000..d3d01c0397 --- /dev/null +++ b/crypto/rijndael/boxes-fst-corrected.dat @@ -0,0 +1,3986 @@ +word8 S[256] = { + 99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, +202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, +183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, + 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, + 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, + 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, +208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, + 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, +205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, + 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, +224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, +231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, +186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, +112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, +225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, +140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22 +}; + +#ifdef INTERMEDIATE_VALUE_KAT +word8 Si[256] = { + 82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, +124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, + 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, + 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, +114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, +108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, +144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, +208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, + 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, +150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, + 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, +252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, + 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, + 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, +160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, + 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125 +}; +#endif /* INTERMEDIATE_VALUE_KAT */ + +word8 T1[256][4] = { + {0xc6,0x63,0x63,0xa5}, + {0xf8,0x7c,0x7c,0x84}, + {0xee,0x77,0x77,0x99}, + {0xf6,0x7b,0x7b,0x8d}, + + {0xff,0xf2,0xf2,0x0d}, + {0xd6,0x6b,0x6b,0xbd}, + {0xde,0x6f,0x6f,0xb1}, + {0x91,0xc5,0xc5,0x54}, + + {0x60,0x30,0x30,0x50}, + {0x02,0x01,0x01,0x03}, + {0xce,0x67,0x67,0xa9}, + {0x56,0x2b,0x2b,0x7d}, + + {0xe7,0xfe,0xfe,0x19}, + {0xb5,0xd7,0xd7,0x62}, + {0x4d,0xab,0xab,0xe6}, + {0xec,0x76,0x76,0x9a}, + + {0x8f,0xca,0xca,0x45}, + {0x1f,0x82,0x82,0x9d}, + {0x89,0xc9,0xc9,0x40}, + {0xfa,0x7d,0x7d,0x87}, + + {0xef,0xfa,0xfa,0x15}, + {0xb2,0x59,0x59,0xeb}, + {0x8e,0x47,0x47,0xc9}, + {0xfb,0xf0,0xf0,0x0b}, + + {0x41,0xad,0xad,0xec}, + {0xb3,0xd4,0xd4,0x67}, + {0x5f,0xa2,0xa2,0xfd}, + {0x45,0xaf,0xaf,0xea}, + + {0x23,0x9c,0x9c,0xbf}, + {0x53,0xa4,0xa4,0xf7}, + {0xe4,0x72,0x72,0x96}, + {0x9b,0xc0,0xc0,0x5b}, + + {0x75,0xb7,0xb7,0xc2}, + {0xe1,0xfd,0xfd,0x1c}, + {0x3d,0x93,0x93,0xae}, + {0x4c,0x26,0x26,0x6a}, + + {0x6c,0x36,0x36,0x5a}, + {0x7e,0x3f,0x3f,0x41}, + {0xf5,0xf7,0xf7,0x02}, + {0x83,0xcc,0xcc,0x4f}, + + {0x68,0x34,0x34,0x5c}, + {0x51,0xa5,0xa5,0xf4}, + {0xd1,0xe5,0xe5,0x34}, + {0xf9,0xf1,0xf1,0x08}, + + {0xe2,0x71,0x71,0x93}, + {0xab,0xd8,0xd8,0x73}, + {0x62,0x31,0x31,0x53}, + {0x2a,0x15,0x15,0x3f}, + + {0x08,0x04,0x04,0x0c}, + {0x95,0xc7,0xc7,0x52}, + {0x46,0x23,0x23,0x65}, + {0x9d,0xc3,0xc3,0x5e}, + + {0x30,0x18,0x18,0x28}, + {0x37,0x96,0x96,0xa1}, + {0x0a,0x05,0x05,0x0f}, + {0x2f,0x9a,0x9a,0xb5}, + + {0x0e,0x07,0x07,0x09}, + {0x24,0x12,0x12,0x36}, + {0x1b,0x80,0x80,0x9b}, + {0xdf,0xe2,0xe2,0x3d}, + + {0xcd,0xeb,0xeb,0x26}, + {0x4e,0x27,0x27,0x69}, + {0x7f,0xb2,0xb2,0xcd}, + {0xea,0x75,0x75,0x9f}, + + {0x12,0x09,0x09,0x1b}, + {0x1d,0x83,0x83,0x9e}, + {0x58,0x2c,0x2c,0x74}, + {0x34,0x1a,0x1a,0x2e}, + + {0x36,0x1b,0x1b,0x2d}, + {0xdc,0x6e,0x6e,0xb2}, + {0xb4,0x5a,0x5a,0xee}, + {0x5b,0xa0,0xa0,0xfb}, + + {0xa4,0x52,0x52,0xf6}, + {0x76,0x3b,0x3b,0x4d}, + {0xb7,0xd6,0xd6,0x61}, + {0x7d,0xb3,0xb3,0xce}, + + {0x52,0x29,0x29,0x7b}, + {0xdd,0xe3,0xe3,0x3e}, + {0x5e,0x2f,0x2f,0x71}, + {0x13,0x84,0x84,0x97}, + + {0xa6,0x53,0x53,0xf5}, + {0xb9,0xd1,0xd1,0x68}, + {0x00,0x00,0x00,0x00}, + {0xc1,0xed,0xed,0x2c}, + + {0x40,0x20,0x20,0x60}, + {0xe3,0xfc,0xfc,0x1f}, + {0x79,0xb1,0xb1,0xc8}, + {0xb6,0x5b,0x5b,0xed}, + + {0xd4,0x6a,0x6a,0xbe}, + {0x8d,0xcb,0xcb,0x46}, + {0x67,0xbe,0xbe,0xd9}, + {0x72,0x39,0x39,0x4b}, + + {0x94,0x4a,0x4a,0xde}, + {0x98,0x4c,0x4c,0xd4}, + {0xb0,0x58,0x58,0xe8}, + {0x85,0xcf,0xcf,0x4a}, + + {0xbb,0xd0,0xd0,0x6b}, + {0xc5,0xef,0xef,0x2a}, + {0x4f,0xaa,0xaa,0xe5}, + {0xed,0xfb,0xfb,0x16}, + + {0x86,0x43,0x43,0xc5}, + {0x9a,0x4d,0x4d,0xd7}, + {0x66,0x33,0x33,0x55}, + {0x11,0x85,0x85,0x94}, + + {0x8a,0x45,0x45,0xcf}, + {0xe9,0xf9,0xf9,0x10}, + {0x04,0x02,0x02,0x06}, + {0xfe,0x7f,0x7f,0x81}, + + {0xa0,0x50,0x50,0xf0}, + {0x78,0x3c,0x3c,0x44}, + {0x25,0x9f,0x9f,0xba}, + {0x4b,0xa8,0xa8,0xe3}, + + {0xa2,0x51,0x51,0xf3}, + {0x5d,0xa3,0xa3,0xfe}, + {0x80,0x40,0x40,0xc0}, + {0x05,0x8f,0x8f,0x8a}, + + {0x3f,0x92,0x92,0xad}, + {0x21,0x9d,0x9d,0xbc}, + {0x70,0x38,0x38,0x48}, + {0xf1,0xf5,0xf5,0x04}, + + {0x63,0xbc,0xbc,0xdf}, + {0x77,0xb6,0xb6,0xc1}, + {0xaf,0xda,0xda,0x75}, + {0x42,0x21,0x21,0x63}, + + {0x20,0x10,0x10,0x30}, + {0xe5,0xff,0xff,0x1a}, + {0xfd,0xf3,0xf3,0x0e}, + {0xbf,0xd2,0xd2,0x6d}, + + {0x81,0xcd,0xcd,0x4c}, + {0x18,0x0c,0x0c,0x14}, + {0x26,0x13,0x13,0x35}, + {0xc3,0xec,0xec,0x2f}, + + {0xbe,0x5f,0x5f,0xe1}, + {0x35,0x97,0x97,0xa2}, + {0x88,0x44,0x44,0xcc}, + {0x2e,0x17,0x17,0x39}, + + {0x93,0xc4,0xc4,0x57}, + {0x55,0xa7,0xa7,0xf2}, + {0xfc,0x7e,0x7e,0x82}, + {0x7a,0x3d,0x3d,0x47}, + + {0xc8,0x64,0x64,0xac}, + {0xba,0x5d,0x5d,0xe7}, + {0x32,0x19,0x19,0x2b}, + {0xe6,0x73,0x73,0x95}, + + {0xc0,0x60,0x60,0xa0}, + {0x19,0x81,0x81,0x98}, + {0x9e,0x4f,0x4f,0xd1}, + {0xa3,0xdc,0xdc,0x7f}, + + {0x44,0x22,0x22,0x66}, + {0x54,0x2a,0x2a,0x7e}, + {0x3b,0x90,0x90,0xab}, + {0x0b,0x88,0x88,0x83}, + + {0x8c,0x46,0x46,0xca}, + {0xc7,0xee,0xee,0x29}, + {0x6b,0xb8,0xb8,0xd3}, + {0x28,0x14,0x14,0x3c}, + + {0xa7,0xde,0xde,0x79}, + {0xbc,0x5e,0x5e,0xe2}, + {0x16,0x0b,0x0b,0x1d}, + {0xad,0xdb,0xdb,0x76}, + + {0xdb,0xe0,0xe0,0x3b}, + {0x64,0x32,0x32,0x56}, + {0x74,0x3a,0x3a,0x4e}, + {0x14,0x0a,0x0a,0x1e}, + + {0x92,0x49,0x49,0xdb}, + {0x0c,0x06,0x06,0x0a}, + {0x48,0x24,0x24,0x6c}, + {0xb8,0x5c,0x5c,0xe4}, + + {0x9f,0xc2,0xc2,0x5d}, + {0xbd,0xd3,0xd3,0x6e}, + {0x43,0xac,0xac,0xef}, + {0xc4,0x62,0x62,0xa6}, + + {0x39,0x91,0x91,0xa8}, + {0x31,0x95,0x95,0xa4}, + {0xd3,0xe4,0xe4,0x37}, + {0xf2,0x79,0x79,0x8b}, + + {0xd5,0xe7,0xe7,0x32}, + {0x8b,0xc8,0xc8,0x43}, + {0x6e,0x37,0x37,0x59}, + {0xda,0x6d,0x6d,0xb7}, + + {0x01,0x8d,0x8d,0x8c}, + {0xb1,0xd5,0xd5,0x64}, + {0x9c,0x4e,0x4e,0xd2}, + {0x49,0xa9,0xa9,0xe0}, + + {0xd8,0x6c,0x6c,0xb4}, + {0xac,0x56,0x56,0xfa}, + {0xf3,0xf4,0xf4,0x07}, + {0xcf,0xea,0xea,0x25}, + + {0xca,0x65,0x65,0xaf}, + {0xf4,0x7a,0x7a,0x8e}, + {0x47,0xae,0xae,0xe9}, + {0x10,0x08,0x08,0x18}, + + {0x6f,0xba,0xba,0xd5}, + {0xf0,0x78,0x78,0x88}, + {0x4a,0x25,0x25,0x6f}, + {0x5c,0x2e,0x2e,0x72}, + + {0x38,0x1c,0x1c,0x24}, + {0x57,0xa6,0xa6,0xf1}, + {0x73,0xb4,0xb4,0xc7}, + {0x97,0xc6,0xc6,0x51}, + + {0xcb,0xe8,0xe8,0x23}, + {0xa1,0xdd,0xdd,0x7c}, + {0xe8,0x74,0x74,0x9c}, + {0x3e,0x1f,0x1f,0x21}, + + {0x96,0x4b,0x4b,0xdd}, + {0x61,0xbd,0xbd,0xdc}, + {0x0d,0x8b,0x8b,0x86}, + {0x0f,0x8a,0x8a,0x85}, + + {0xe0,0x70,0x70,0x90}, + {0x7c,0x3e,0x3e,0x42}, + {0x71,0xb5,0xb5,0xc4}, + {0xcc,0x66,0x66,0xaa}, + + {0x90,0x48,0x48,0xd8}, + {0x06,0x03,0x03,0x05}, + {0xf7,0xf6,0xf6,0x01}, + {0x1c,0x0e,0x0e,0x12}, + + {0xc2,0x61,0x61,0xa3}, + {0x6a,0x35,0x35,0x5f}, + {0xae,0x57,0x57,0xf9}, + {0x69,0xb9,0xb9,0xd0}, + + {0x17,0x86,0x86,0x91}, + {0x99,0xc1,0xc1,0x58}, + {0x3a,0x1d,0x1d,0x27}, + {0x27,0x9e,0x9e,0xb9}, + + {0xd9,0xe1,0xe1,0x38}, + {0xeb,0xf8,0xf8,0x13}, + {0x2b,0x98,0x98,0xb3}, + {0x22,0x11,0x11,0x33}, + + {0xd2,0x69,0x69,0xbb}, + {0xa9,0xd9,0xd9,0x70}, + {0x07,0x8e,0x8e,0x89}, + {0x33,0x94,0x94,0xa7}, + + {0x2d,0x9b,0x9b,0xb6}, + {0x3c,0x1e,0x1e,0x22}, + {0x15,0x87,0x87,0x92}, + {0xc9,0xe9,0xe9,0x20}, + + {0x87,0xce,0xce,0x49}, + {0xaa,0x55,0x55,0xff}, + {0x50,0x28,0x28,0x78}, + {0xa5,0xdf,0xdf,0x7a}, + + {0x03,0x8c,0x8c,0x8f}, + {0x59,0xa1,0xa1,0xf8}, + {0x09,0x89,0x89,0x80}, + {0x1a,0x0d,0x0d,0x17}, + + {0x65,0xbf,0xbf,0xda}, + {0xd7,0xe6,0xe6,0x31}, + {0x84,0x42,0x42,0xc6}, + {0xd0,0x68,0x68,0xb8}, + + {0x82,0x41,0x41,0xc3}, + {0x29,0x99,0x99,0xb0}, + {0x5a,0x2d,0x2d,0x77}, + {0x1e,0x0f,0x0f,0x11}, + + {0x7b,0xb0,0xb0,0xcb}, + {0xa8,0x54,0x54,0xfc}, + {0x6d,0xbb,0xbb,0xd6}, + {0x2c,0x16,0x16,0x3a}, + +}; + +word8 T2[256][4] = { + {0xa5,0xc6,0x63,0x63}, + {0x84,0xf8,0x7c,0x7c}, + {0x99,0xee,0x77,0x77}, + {0x8d,0xf6,0x7b,0x7b}, + + {0x0d,0xff,0xf2,0xf2}, + {0xbd,0xd6,0x6b,0x6b}, + {0xb1,0xde,0x6f,0x6f}, + {0x54,0x91,0xc5,0xc5}, + + {0x50,0x60,0x30,0x30}, + {0x03,0x02,0x01,0x01}, + {0xa9,0xce,0x67,0x67}, + {0x7d,0x56,0x2b,0x2b}, + + {0x19,0xe7,0xfe,0xfe}, + {0x62,0xb5,0xd7,0xd7}, + {0xe6,0x4d,0xab,0xab}, + {0x9a,0xec,0x76,0x76}, + + {0x45,0x8f,0xca,0xca}, + {0x9d,0x1f,0x82,0x82}, + {0x40,0x89,0xc9,0xc9}, + {0x87,0xfa,0x7d,0x7d}, + + {0x15,0xef,0xfa,0xfa}, + {0xeb,0xb2,0x59,0x59}, + {0xc9,0x8e,0x47,0x47}, + {0x0b,0xfb,0xf0,0xf0}, + + {0xec,0x41,0xad,0xad}, + {0x67,0xb3,0xd4,0xd4}, + {0xfd,0x5f,0xa2,0xa2}, + {0xea,0x45,0xaf,0xaf}, + + {0xbf,0x23,0x9c,0x9c}, + {0xf7,0x53,0xa4,0xa4}, + {0x96,0xe4,0x72,0x72}, + {0x5b,0x9b,0xc0,0xc0}, + + {0xc2,0x75,0xb7,0xb7}, + {0x1c,0xe1,0xfd,0xfd}, + {0xae,0x3d,0x93,0x93}, + {0x6a,0x4c,0x26,0x26}, + + {0x5a,0x6c,0x36,0x36}, + {0x41,0x7e,0x3f,0x3f}, + {0x02,0xf5,0xf7,0xf7}, + {0x4f,0x83,0xcc,0xcc}, + + {0x5c,0x68,0x34,0x34}, + {0xf4,0x51,0xa5,0xa5}, + {0x34,0xd1,0xe5,0xe5}, + {0x08,0xf9,0xf1,0xf1}, + + {0x93,0xe2,0x71,0x71}, + {0x73,0xab,0xd8,0xd8}, + {0x53,0x62,0x31,0x31}, + {0x3f,0x2a,0x15,0x15}, + + {0x0c,0x08,0x04,0x04}, + {0x52,0x95,0xc7,0xc7}, + {0x65,0x46,0x23,0x23}, + {0x5e,0x9d,0xc3,0xc3}, + + {0x28,0x30,0x18,0x18}, + {0xa1,0x37,0x96,0x96}, + {0x0f,0x0a,0x05,0x05}, + {0xb5,0x2f,0x9a,0x9a}, + + {0x09,0x0e,0x07,0x07}, + {0x36,0x24,0x12,0x12}, + {0x9b,0x1b,0x80,0x80}, + {0x3d,0xdf,0xe2,0xe2}, + + {0x26,0xcd,0xeb,0xeb}, + {0x69,0x4e,0x27,0x27}, + {0xcd,0x7f,0xb2,0xb2}, + {0x9f,0xea,0x75,0x75}, + + {0x1b,0x12,0x09,0x09}, + {0x9e,0x1d,0x83,0x83}, + {0x74,0x58,0x2c,0x2c}, + {0x2e,0x34,0x1a,0x1a}, + + {0x2d,0x36,0x1b,0x1b}, + {0xb2,0xdc,0x6e,0x6e}, + {0xee,0xb4,0x5a,0x5a}, + {0xfb,0x5b,0xa0,0xa0}, + + {0xf6,0xa4,0x52,0x52}, + {0x4d,0x76,0x3b,0x3b}, + {0x61,0xb7,0xd6,0xd6}, + {0xce,0x7d,0xb3,0xb3}, + + {0x7b,0x52,0x29,0x29}, + {0x3e,0xdd,0xe3,0xe3}, + {0x71,0x5e,0x2f,0x2f}, + {0x97,0x13,0x84,0x84}, + + {0xf5,0xa6,0x53,0x53}, + {0x68,0xb9,0xd1,0xd1}, + {0x00,0x00,0x00,0x00}, + {0x2c,0xc1,0xed,0xed}, + + {0x60,0x40,0x20,0x20}, + {0x1f,0xe3,0xfc,0xfc}, + {0xc8,0x79,0xb1,0xb1}, + {0xed,0xb6,0x5b,0x5b}, + + {0xbe,0xd4,0x6a,0x6a}, + {0x46,0x8d,0xcb,0xcb}, + {0xd9,0x67,0xbe,0xbe}, + {0x4b,0x72,0x39,0x39}, + + {0xde,0x94,0x4a,0x4a}, + {0xd4,0x98,0x4c,0x4c}, + {0xe8,0xb0,0x58,0x58}, + {0x4a,0x85,0xcf,0xcf}, + + {0x6b,0xbb,0xd0,0xd0}, + {0x2a,0xc5,0xef,0xef}, + {0xe5,0x4f,0xaa,0xaa}, + {0x16,0xed,0xfb,0xfb}, + + {0xc5,0x86,0x43,0x43}, + {0xd7,0x9a,0x4d,0x4d}, + {0x55,0x66,0x33,0x33}, + {0x94,0x11,0x85,0x85}, + + {0xcf,0x8a,0x45,0x45}, + {0x10,0xe9,0xf9,0xf9}, + {0x06,0x04,0x02,0x02}, + {0x81,0xfe,0x7f,0x7f}, + + {0xf0,0xa0,0x50,0x50}, + {0x44,0x78,0x3c,0x3c}, + {0xba,0x25,0x9f,0x9f}, + {0xe3,0x4b,0xa8,0xa8}, + + {0xf3,0xa2,0x51,0x51}, + {0xfe,0x5d,0xa3,0xa3}, + {0xc0,0x80,0x40,0x40}, + {0x8a,0x05,0x8f,0x8f}, + + {0xad,0x3f,0x92,0x92}, + {0xbc,0x21,0x9d,0x9d}, + {0x48,0x70,0x38,0x38}, + {0x04,0xf1,0xf5,0xf5}, + + {0xdf,0x63,0xbc,0xbc}, + {0xc1,0x77,0xb6,0xb6}, + {0x75,0xaf,0xda,0xda}, + {0x63,0x42,0x21,0x21}, + + {0x30,0x20,0x10,0x10}, + {0x1a,0xe5,0xff,0xff}, + {0x0e,0xfd,0xf3,0xf3}, + {0x6d,0xbf,0xd2,0xd2}, + + {0x4c,0x81,0xcd,0xcd}, + {0x14,0x18,0x0c,0x0c}, + {0x35,0x26,0x13,0x13}, + {0x2f,0xc3,0xec,0xec}, + + {0xe1,0xbe,0x5f,0x5f}, + {0xa2,0x35,0x97,0x97}, + {0xcc,0x88,0x44,0x44}, + {0x39,0x2e,0x17,0x17}, + + {0x57,0x93,0xc4,0xc4}, + {0xf2,0x55,0xa7,0xa7}, + {0x82,0xfc,0x7e,0x7e}, + {0x47,0x7a,0x3d,0x3d}, + + {0xac,0xc8,0x64,0x64}, + {0xe7,0xba,0x5d,0x5d}, + {0x2b,0x32,0x19,0x19}, + {0x95,0xe6,0x73,0x73}, + + {0xa0,0xc0,0x60,0x60}, + {0x98,0x19,0x81,0x81}, + {0xd1,0x9e,0x4f,0x4f}, + {0x7f,0xa3,0xdc,0xdc}, + + {0x66,0x44,0x22,0x22}, + {0x7e,0x54,0x2a,0x2a}, + {0xab,0x3b,0x90,0x90}, + {0x83,0x0b,0x88,0x88}, + + {0xca,0x8c,0x46,0x46}, + {0x29,0xc7,0xee,0xee}, + {0xd3,0x6b,0xb8,0xb8}, + {0x3c,0x28,0x14,0x14}, + + {0x79,0xa7,0xde,0xde}, + {0xe2,0xbc,0x5e,0x5e}, + {0x1d,0x16,0x0b,0x0b}, + {0x76,0xad,0xdb,0xdb}, + + {0x3b,0xdb,0xe0,0xe0}, + {0x56,0x64,0x32,0x32}, + {0x4e,0x74,0x3a,0x3a}, + {0x1e,0x14,0x0a,0x0a}, + + {0xdb,0x92,0x49,0x49}, + {0x0a,0x0c,0x06,0x06}, + {0x6c,0x48,0x24,0x24}, + {0xe4,0xb8,0x5c,0x5c}, + + {0x5d,0x9f,0xc2,0xc2}, + {0x6e,0xbd,0xd3,0xd3}, + {0xef,0x43,0xac,0xac}, + {0xa6,0xc4,0x62,0x62}, + + {0xa8,0x39,0x91,0x91}, + {0xa4,0x31,0x95,0x95}, + {0x37,0xd3,0xe4,0xe4}, + {0x8b,0xf2,0x79,0x79}, + + {0x32,0xd5,0xe7,0xe7}, + {0x43,0x8b,0xc8,0xc8}, + {0x59,0x6e,0x37,0x37}, + {0xb7,0xda,0x6d,0x6d}, + + {0x8c,0x01,0x8d,0x8d}, + {0x64,0xb1,0xd5,0xd5}, + {0xd2,0x9c,0x4e,0x4e}, + {0xe0,0x49,0xa9,0xa9}, + + {0xb4,0xd8,0x6c,0x6c}, + {0xfa,0xac,0x56,0x56}, + {0x07,0xf3,0xf4,0xf4}, + {0x25,0xcf,0xea,0xea}, + + {0xaf,0xca,0x65,0x65}, + {0x8e,0xf4,0x7a,0x7a}, + {0xe9,0x47,0xae,0xae}, + {0x18,0x10,0x08,0x08}, + + {0xd5,0x6f,0xba,0xba}, + {0x88,0xf0,0x78,0x78}, + {0x6f,0x4a,0x25,0x25}, + {0x72,0x5c,0x2e,0x2e}, + + {0x24,0x38,0x1c,0x1c}, + {0xf1,0x57,0xa6,0xa6}, + {0xc7,0x73,0xb4,0xb4}, + {0x51,0x97,0xc6,0xc6}, + + {0x23,0xcb,0xe8,0xe8}, + {0x7c,0xa1,0xdd,0xdd}, + {0x9c,0xe8,0x74,0x74}, + {0x21,0x3e,0x1f,0x1f}, + + {0xdd,0x96,0x4b,0x4b}, + {0xdc,0x61,0xbd,0xbd}, + {0x86,0x0d,0x8b,0x8b}, + {0x85,0x0f,0x8a,0x8a}, + + {0x90,0xe0,0x70,0x70}, + {0x42,0x7c,0x3e,0x3e}, + {0xc4,0x71,0xb5,0xb5}, + {0xaa,0xcc,0x66,0x66}, + + {0xd8,0x90,0x48,0x48}, + {0x05,0x06,0x03,0x03}, + {0x01,0xf7,0xf6,0xf6}, + {0x12,0x1c,0x0e,0x0e}, + + {0xa3,0xc2,0x61,0x61}, + {0x5f,0x6a,0x35,0x35}, + {0xf9,0xae,0x57,0x57}, + {0xd0,0x69,0xb9,0xb9}, + + {0x91,0x17,0x86,0x86}, + {0x58,0x99,0xc1,0xc1}, + {0x27,0x3a,0x1d,0x1d}, + {0xb9,0x27,0x9e,0x9e}, + + {0x38,0xd9,0xe1,0xe1}, + {0x13,0xeb,0xf8,0xf8}, + {0xb3,0x2b,0x98,0x98}, + {0x33,0x22,0x11,0x11}, + + {0xbb,0xd2,0x69,0x69}, + {0x70,0xa9,0xd9,0xd9}, + {0x89,0x07,0x8e,0x8e}, + {0xa7,0x33,0x94,0x94}, + + {0xb6,0x2d,0x9b,0x9b}, + {0x22,0x3c,0x1e,0x1e}, + {0x92,0x15,0x87,0x87}, + {0x20,0xc9,0xe9,0xe9}, + + {0x49,0x87,0xce,0xce}, + {0xff,0xaa,0x55,0x55}, + {0x78,0x50,0x28,0x28}, + {0x7a,0xa5,0xdf,0xdf}, + + {0x8f,0x03,0x8c,0x8c}, + {0xf8,0x59,0xa1,0xa1}, + {0x80,0x09,0x89,0x89}, + {0x17,0x1a,0x0d,0x0d}, + + {0xda,0x65,0xbf,0xbf}, + {0x31,0xd7,0xe6,0xe6}, + {0xc6,0x84,0x42,0x42}, + {0xb8,0xd0,0x68,0x68}, + + {0xc3,0x82,0x41,0x41}, + {0xb0,0x29,0x99,0x99}, + {0x77,0x5a,0x2d,0x2d}, + {0x11,0x1e,0x0f,0x0f}, + + {0xcb,0x7b,0xb0,0xb0}, + {0xfc,0xa8,0x54,0x54}, + {0xd6,0x6d,0xbb,0xbb}, + {0x3a,0x2c,0x16,0x16}, + +}; + +word8 T3[256][4] = { + {0x63,0xa5,0xc6,0x63}, + {0x7c,0x84,0xf8,0x7c}, + {0x77,0x99,0xee,0x77}, + {0x7b,0x8d,0xf6,0x7b}, + + {0xf2,0x0d,0xff,0xf2}, + {0x6b,0xbd,0xd6,0x6b}, + {0x6f,0xb1,0xde,0x6f}, + {0xc5,0x54,0x91,0xc5}, + + {0x30,0x50,0x60,0x30}, + {0x01,0x03,0x02,0x01}, + {0x67,0xa9,0xce,0x67}, + {0x2b,0x7d,0x56,0x2b}, + + {0xfe,0x19,0xe7,0xfe}, + {0xd7,0x62,0xb5,0xd7}, + {0xab,0xe6,0x4d,0xab}, + {0x76,0x9a,0xec,0x76}, + + {0xca,0x45,0x8f,0xca}, + {0x82,0x9d,0x1f,0x82}, + {0xc9,0x40,0x89,0xc9}, + {0x7d,0x87,0xfa,0x7d}, + + {0xfa,0x15,0xef,0xfa}, + {0x59,0xeb,0xb2,0x59}, + {0x47,0xc9,0x8e,0x47}, + {0xf0,0x0b,0xfb,0xf0}, + + {0xad,0xec,0x41,0xad}, + {0xd4,0x67,0xb3,0xd4}, + {0xa2,0xfd,0x5f,0xa2}, + {0xaf,0xea,0x45,0xaf}, + + {0x9c,0xbf,0x23,0x9c}, + {0xa4,0xf7,0x53,0xa4}, + {0x72,0x96,0xe4,0x72}, + {0xc0,0x5b,0x9b,0xc0}, + + {0xb7,0xc2,0x75,0xb7}, + {0xfd,0x1c,0xe1,0xfd}, + {0x93,0xae,0x3d,0x93}, + {0x26,0x6a,0x4c,0x26}, + + {0x36,0x5a,0x6c,0x36}, + {0x3f,0x41,0x7e,0x3f}, + {0xf7,0x02,0xf5,0xf7}, + {0xcc,0x4f,0x83,0xcc}, + + {0x34,0x5c,0x68,0x34}, + {0xa5,0xf4,0x51,0xa5}, + {0xe5,0x34,0xd1,0xe5}, + {0xf1,0x08,0xf9,0xf1}, + + {0x71,0x93,0xe2,0x71}, + {0xd8,0x73,0xab,0xd8}, + {0x31,0x53,0x62,0x31}, + {0x15,0x3f,0x2a,0x15}, + + {0x04,0x0c,0x08,0x04}, + {0xc7,0x52,0x95,0xc7}, + {0x23,0x65,0x46,0x23}, + {0xc3,0x5e,0x9d,0xc3}, + + {0x18,0x28,0x30,0x18}, + {0x96,0xa1,0x37,0x96}, + {0x05,0x0f,0x0a,0x05}, + {0x9a,0xb5,0x2f,0x9a}, + + {0x07,0x09,0x0e,0x07}, + {0x12,0x36,0x24,0x12}, + {0x80,0x9b,0x1b,0x80}, + {0xe2,0x3d,0xdf,0xe2}, + + {0xeb,0x26,0xcd,0xeb}, + {0x27,0x69,0x4e,0x27}, + {0xb2,0xcd,0x7f,0xb2}, + {0x75,0x9f,0xea,0x75}, + + {0x09,0x1b,0x12,0x09}, + {0x83,0x9e,0x1d,0x83}, + {0x2c,0x74,0x58,0x2c}, + {0x1a,0x2e,0x34,0x1a}, + + {0x1b,0x2d,0x36,0x1b}, + {0x6e,0xb2,0xdc,0x6e}, + {0x5a,0xee,0xb4,0x5a}, + {0xa0,0xfb,0x5b,0xa0}, + + {0x52,0xf6,0xa4,0x52}, + {0x3b,0x4d,0x76,0x3b}, + {0xd6,0x61,0xb7,0xd6}, + {0xb3,0xce,0x7d,0xb3}, + + {0x29,0x7b,0x52,0x29}, + {0xe3,0x3e,0xdd,0xe3}, + {0x2f,0x71,0x5e,0x2f}, + {0x84,0x97,0x13,0x84}, + + {0x53,0xf5,0xa6,0x53}, + {0xd1,0x68,0xb9,0xd1}, + {0x00,0x00,0x00,0x00}, + {0xed,0x2c,0xc1,0xed}, + + {0x20,0x60,0x40,0x20}, + {0xfc,0x1f,0xe3,0xfc}, + {0xb1,0xc8,0x79,0xb1}, + {0x5b,0xed,0xb6,0x5b}, + + {0x6a,0xbe,0xd4,0x6a}, + {0xcb,0x46,0x8d,0xcb}, + {0xbe,0xd9,0x67,0xbe}, + {0x39,0x4b,0x72,0x39}, + + {0x4a,0xde,0x94,0x4a}, + {0x4c,0xd4,0x98,0x4c}, + {0x58,0xe8,0xb0,0x58}, + {0xcf,0x4a,0x85,0xcf}, + + {0xd0,0x6b,0xbb,0xd0}, + {0xef,0x2a,0xc5,0xef}, + {0xaa,0xe5,0x4f,0xaa}, + {0xfb,0x16,0xed,0xfb}, + + {0x43,0xc5,0x86,0x43}, + {0x4d,0xd7,0x9a,0x4d}, + {0x33,0x55,0x66,0x33}, + {0x85,0x94,0x11,0x85}, + + {0x45,0xcf,0x8a,0x45}, + {0xf9,0x10,0xe9,0xf9}, + {0x02,0x06,0x04,0x02}, + {0x7f,0x81,0xfe,0x7f}, + + {0x50,0xf0,0xa0,0x50}, + {0x3c,0x44,0x78,0x3c}, + {0x9f,0xba,0x25,0x9f}, + {0xa8,0xe3,0x4b,0xa8}, + + {0x51,0xf3,0xa2,0x51}, + {0xa3,0xfe,0x5d,0xa3}, + {0x40,0xc0,0x80,0x40}, + {0x8f,0x8a,0x05,0x8f}, + + {0x92,0xad,0x3f,0x92}, + {0x9d,0xbc,0x21,0x9d}, + {0x38,0x48,0x70,0x38}, + {0xf5,0x04,0xf1,0xf5}, + + {0xbc,0xdf,0x63,0xbc}, + {0xb6,0xc1,0x77,0xb6}, + {0xda,0x75,0xaf,0xda}, + {0x21,0x63,0x42,0x21}, + + {0x10,0x30,0x20,0x10}, + {0xff,0x1a,0xe5,0xff}, + {0xf3,0x0e,0xfd,0xf3}, + {0xd2,0x6d,0xbf,0xd2}, + + {0xcd,0x4c,0x81,0xcd}, + {0x0c,0x14,0x18,0x0c}, + {0x13,0x35,0x26,0x13}, + {0xec,0x2f,0xc3,0xec}, + + {0x5f,0xe1,0xbe,0x5f}, + {0x97,0xa2,0x35,0x97}, + {0x44,0xcc,0x88,0x44}, + {0x17,0x39,0x2e,0x17}, + + {0xc4,0x57,0x93,0xc4}, + {0xa7,0xf2,0x55,0xa7}, + {0x7e,0x82,0xfc,0x7e}, + {0x3d,0x47,0x7a,0x3d}, + + {0x64,0xac,0xc8,0x64}, + {0x5d,0xe7,0xba,0x5d}, + {0x19,0x2b,0x32,0x19}, + {0x73,0x95,0xe6,0x73}, + + {0x60,0xa0,0xc0,0x60}, + {0x81,0x98,0x19,0x81}, + {0x4f,0xd1,0x9e,0x4f}, + {0xdc,0x7f,0xa3,0xdc}, + + {0x22,0x66,0x44,0x22}, + {0x2a,0x7e,0x54,0x2a}, + {0x90,0xab,0x3b,0x90}, + {0x88,0x83,0x0b,0x88}, + + {0x46,0xca,0x8c,0x46}, + {0xee,0x29,0xc7,0xee}, + {0xb8,0xd3,0x6b,0xb8}, + {0x14,0x3c,0x28,0x14}, + + {0xde,0x79,0xa7,0xde}, + {0x5e,0xe2,0xbc,0x5e}, + {0x0b,0x1d,0x16,0x0b}, + {0xdb,0x76,0xad,0xdb}, + + {0xe0,0x3b,0xdb,0xe0}, + {0x32,0x56,0x64,0x32}, + {0x3a,0x4e,0x74,0x3a}, + {0x0a,0x1e,0x14,0x0a}, + + {0x49,0xdb,0x92,0x49}, + {0x06,0x0a,0x0c,0x06}, + {0x24,0x6c,0x48,0x24}, + {0x5c,0xe4,0xb8,0x5c}, + + {0xc2,0x5d,0x9f,0xc2}, + {0xd3,0x6e,0xbd,0xd3}, + {0xac,0xef,0x43,0xac}, + {0x62,0xa6,0xc4,0x62}, + + {0x91,0xa8,0x39,0x91}, + {0x95,0xa4,0x31,0x95}, + {0xe4,0x37,0xd3,0xe4}, + {0x79,0x8b,0xf2,0x79}, + + {0xe7,0x32,0xd5,0xe7}, + {0xc8,0x43,0x8b,0xc8}, + {0x37,0x59,0x6e,0x37}, + {0x6d,0xb7,0xda,0x6d}, + + {0x8d,0x8c,0x01,0x8d}, + {0xd5,0x64,0xb1,0xd5}, + {0x4e,0xd2,0x9c,0x4e}, + {0xa9,0xe0,0x49,0xa9}, + + {0x6c,0xb4,0xd8,0x6c}, + {0x56,0xfa,0xac,0x56}, + {0xf4,0x07,0xf3,0xf4}, + {0xea,0x25,0xcf,0xea}, + + {0x65,0xaf,0xca,0x65}, + {0x7a,0x8e,0xf4,0x7a}, + {0xae,0xe9,0x47,0xae}, + {0x08,0x18,0x10,0x08}, + + {0xba,0xd5,0x6f,0xba}, + {0x78,0x88,0xf0,0x78}, + {0x25,0x6f,0x4a,0x25}, + {0x2e,0x72,0x5c,0x2e}, + + {0x1c,0x24,0x38,0x1c}, + {0xa6,0xf1,0x57,0xa6}, + {0xb4,0xc7,0x73,0xb4}, + {0xc6,0x51,0x97,0xc6}, + + {0xe8,0x23,0xcb,0xe8}, + {0xdd,0x7c,0xa1,0xdd}, + {0x74,0x9c,0xe8,0x74}, + {0x1f,0x21,0x3e,0x1f}, + + {0x4b,0xdd,0x96,0x4b}, + {0xbd,0xdc,0x61,0xbd}, + {0x8b,0x86,0x0d,0x8b}, + {0x8a,0x85,0x0f,0x8a}, + + {0x70,0x90,0xe0,0x70}, + {0x3e,0x42,0x7c,0x3e}, + {0xb5,0xc4,0x71,0xb5}, + {0x66,0xaa,0xcc,0x66}, + + {0x48,0xd8,0x90,0x48}, + {0x03,0x05,0x06,0x03}, + {0xf6,0x01,0xf7,0xf6}, + {0x0e,0x12,0x1c,0x0e}, + + {0x61,0xa3,0xc2,0x61}, + {0x35,0x5f,0x6a,0x35}, + {0x57,0xf9,0xae,0x57}, + {0xb9,0xd0,0x69,0xb9}, + + {0x86,0x91,0x17,0x86}, + {0xc1,0x58,0x99,0xc1}, + {0x1d,0x27,0x3a,0x1d}, + {0x9e,0xb9,0x27,0x9e}, + + {0xe1,0x38,0xd9,0xe1}, + {0xf8,0x13,0xeb,0xf8}, + {0x98,0xb3,0x2b,0x98}, + {0x11,0x33,0x22,0x11}, + + {0x69,0xbb,0xd2,0x69}, + {0xd9,0x70,0xa9,0xd9}, + {0x8e,0x89,0x07,0x8e}, + {0x94,0xa7,0x33,0x94}, + + {0x9b,0xb6,0x2d,0x9b}, + {0x1e,0x22,0x3c,0x1e}, + {0x87,0x92,0x15,0x87}, + {0xe9,0x20,0xc9,0xe9}, + + {0xce,0x49,0x87,0xce}, + {0x55,0xff,0xaa |