Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
1dbaa8c6
Commit
1dbaa8c6
authored
Nov 20, 2007
by
Vijay Kiran Kamuju
Committed by
Alexandre Julliard
Nov 21, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
rsaenh: Add implementation of Enhanced RSA AES Provider.
parent
ea1f8c7a
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
1452 additions
and
33 deletions
+1452
-33
Makefile.in
dlls/rsaenh/Makefile.in
+1
-0
aes.c
dlls/rsaenh/aes.c
+1333
-0
implglue.c
dlls/rsaenh/implglue.c
+29
-0
implglue.h
dlls/rsaenh/implglue.h
+1
-0
rsaenh.c
dlls/rsaenh/rsaenh.c
+78
-12
rsaenh.c
dlls/rsaenh/tests/rsaenh.c
+1
-21
tomcrypt.h
dlls/rsaenh/tomcrypt.h
+9
-0
No files found.
dlls/rsaenh/Makefile.in
View file @
1dbaa8c6
...
...
@@ -8,6 +8,7 @@ IMPORTLIB = librsaenh.$(IMPLIBEXT)
IMPORTS
=
crypt32 advapi32 kernel32
C_SRCS
=
\
aes.c
\
des.c
\
handle.c
\
implglue.c
\
...
...
dlls/rsaenh/aes.c
0 → 100644
View file @
1dbaa8c6
/*
* AES functions
*
* Copyright 2007 Vijay Kiran Kamuju
* Based on public domain code by Tom St Denis (tomstdenis@iahu.ca)
* and Dobes Vandermeer.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
/*
* This file contains code from the LibTomCrypt cryptographic
* library written by Tom St Denis (tomstdenis@iahu.ca). LibTomCrypt
* is in the public domain. The code in this file is tailored to
* special requirements. Take a look at http://libtom.org for the
* original version.
*/
#include "tomcrypt.h"
static
const
ulong32
TE0
[
256
]
=
{
0xc66363a5UL
,
0xf87c7c84UL
,
0xee777799UL
,
0xf67b7b8dUL
,
0xfff2f20dUL
,
0xd66b6bbdUL
,
0xde6f6fb1UL
,
0x91c5c554UL
,
0x60303050UL
,
0x02010103UL
,
0xce6767a9UL
,
0x562b2b7dUL
,
0xe7fefe19UL
,
0xb5d7d762UL
,
0x4dababe6UL
,
0xec76769aUL
,
0x8fcaca45UL
,
0x1f82829dUL
,
0x89c9c940UL
,
0xfa7d7d87UL
,
0xeffafa15UL
,
0xb25959ebUL
,
0x8e4747c9UL
,
0xfbf0f00bUL
,
0x41adadecUL
,
0xb3d4d467UL
,
0x5fa2a2fdUL
,
0x45afafeaUL
,
0x239c9cbfUL
,
0x53a4a4f7UL
,
0xe4727296UL
,
0x9bc0c05bUL
,
0x75b7b7c2UL
,
0xe1fdfd1cUL
,
0x3d9393aeUL
,
0x4c26266aUL
,
0x6c36365aUL
,
0x7e3f3f41UL
,
0xf5f7f702UL
,
0x83cccc4fUL
,
0x6834345cUL
,
0x51a5a5f4UL
,
0xd1e5e534UL
,
0xf9f1f108UL
,
0xe2717193UL
,
0xabd8d873UL
,
0x62313153UL
,
0x2a15153fUL
,
0x0804040cUL
,
0x95c7c752UL
,
0x46232365UL
,
0x9dc3c35eUL
,
0x30181828UL
,
0x379696a1UL
,
0x0a05050fUL
,
0x2f9a9ab5UL
,
0x0e070709UL
,
0x24121236UL
,
0x1b80809bUL
,
0xdfe2e23dUL
,
0xcdebeb26UL
,
0x4e272769UL
,
0x7fb2b2cdUL
,
0xea75759fUL
,
0x1209091bUL
,
0x1d83839eUL
,
0x582c2c74UL
,
0x341a1a2eUL
,
0x361b1b2dUL
,
0xdc6e6eb2UL
,
0xb45a5aeeUL
,
0x5ba0a0fbUL
,
0xa45252f6UL
,
0x763b3b4dUL
,
0xb7d6d661UL
,
0x7db3b3ceUL
,
0x5229297bUL
,
0xdde3e33eUL
,
0x5e2f2f71UL
,
0x13848497UL
,
0xa65353f5UL
,
0xb9d1d168UL
,
0x00000000UL
,
0xc1eded2cUL
,
0x40202060UL
,
0xe3fcfc1fUL
,
0x79b1b1c8UL
,
0xb65b5bedUL
,
0xd46a6abeUL
,
0x8dcbcb46UL
,
0x67bebed9UL
,
0x7239394bUL
,
0x944a4adeUL
,
0x984c4cd4UL
,
0xb05858e8UL
,
0x85cfcf4aUL
,
0xbbd0d06bUL
,
0xc5efef2aUL
,
0x4faaaae5UL
,
0xedfbfb16UL
,
0x864343c5UL
,
0x9a4d4dd7UL
,
0x66333355UL
,
0x11858594UL
,
0x8a4545cfUL
,
0xe9f9f910UL
,
0x04020206UL
,
0xfe7f7f81UL
,
0xa05050f0UL
,
0x783c3c44UL
,
0x259f9fbaUL
,
0x4ba8a8e3UL
,
0xa25151f3UL
,
0x5da3a3feUL
,
0x804040c0UL
,
0x058f8f8aUL
,
0x3f9292adUL
,
0x219d9dbcUL
,
0x70383848UL
,
0xf1f5f504UL
,
0x63bcbcdfUL
,
0x77b6b6c1UL
,
0xafdada75UL
,
0x42212163UL
,
0x20101030UL
,
0xe5ffff1aUL
,
0xfdf3f30eUL
,
0xbfd2d26dUL
,
0x81cdcd4cUL
,
0x180c0c14UL
,
0x26131335UL
,
0xc3ecec2fUL
,
0xbe5f5fe1UL
,
0x359797a2UL
,
0x884444ccUL
,
0x2e171739UL
,
0x93c4c457UL
,
0x55a7a7f2UL
,
0xfc7e7e82UL
,
0x7a3d3d47UL
,
0xc86464acUL
,
0xba5d5de7UL
,
0x3219192bUL
,
0xe6737395UL
,
0xc06060a0UL
,
0x19818198UL
,
0x9e4f4fd1UL
,
0xa3dcdc7fUL
,
0x44222266UL
,
0x542a2a7eUL
,
0x3b9090abUL
,
0x0b888883UL
,
0x8c4646caUL
,
0xc7eeee29UL
,
0x6bb8b8d3UL
,
0x2814143cUL
,
0xa7dede79UL
,
0xbc5e5ee2UL
,
0x160b0b1dUL
,
0xaddbdb76UL
,
0xdbe0e03bUL
,
0x64323256UL
,
0x743a3a4eUL
,
0x140a0a1eUL
,
0x924949dbUL
,
0x0c06060aUL
,
0x4824246cUL
,
0xb85c5ce4UL
,
0x9fc2c25dUL
,
0xbdd3d36eUL
,
0x43acacefUL
,
0xc46262a6UL
,
0x399191a8UL
,
0x319595a4UL
,
0xd3e4e437UL
,
0xf279798bUL
,
0xd5e7e732UL
,
0x8bc8c843UL
,
0x6e373759UL
,
0xda6d6db7UL
,
0x018d8d8cUL
,
0xb1d5d564UL
,
0x9c4e4ed2UL
,
0x49a9a9e0UL
,
0xd86c6cb4UL
,
0xac5656faUL
,
0xf3f4f407UL
,
0xcfeaea25UL
,
0xca6565afUL
,
0xf47a7a8eUL
,
0x47aeaee9UL
,
0x10080818UL
,
0x6fbabad5UL
,
0xf0787888UL
,
0x4a25256fUL
,
0x5c2e2e72UL
,
0x381c1c24UL
,
0x57a6a6f1UL
,
0x73b4b4c7UL
,
0x97c6c651UL
,
0xcbe8e823UL
,
0xa1dddd7cUL
,
0xe874749cUL
,
0x3e1f1f21UL
,
0x964b4bddUL
,
0x61bdbddcUL
,
0x0d8b8b86UL
,
0x0f8a8a85UL
,
0xe0707090UL
,
0x7c3e3e42UL
,
0x71b5b5c4UL
,
0xcc6666aaUL
,
0x904848d8UL
,
0x06030305UL
,
0xf7f6f601UL
,
0x1c0e0e12UL
,
0xc26161a3UL
,
0x6a35355fUL
,
0xae5757f9UL
,
0x69b9b9d0UL
,
0x17868691UL
,
0x99c1c158UL
,
0x3a1d1d27UL
,
0x279e9eb9UL
,
0xd9e1e138UL
,
0xebf8f813UL
,
0x2b9898b3UL
,
0x22111133UL
,
0xd26969bbUL
,
0xa9d9d970UL
,
0x078e8e89UL
,
0x339494a7UL
,
0x2d9b9bb6UL
,
0x3c1e1e22UL
,
0x15878792UL
,
0xc9e9e920UL
,
0x87cece49UL
,
0xaa5555ffUL
,
0x50282878UL
,
0xa5dfdf7aUL
,
0x038c8c8fUL
,
0x59a1a1f8UL
,
0x09898980UL
,
0x1a0d0d17UL
,
0x65bfbfdaUL
,
0xd7e6e631UL
,
0x844242c6UL
,
0xd06868b8UL
,
0x824141c3UL
,
0x299999b0UL
,
0x5a2d2d77UL
,
0x1e0f0f11UL
,
0x7bb0b0cbUL
,
0xa85454fcUL
,
0x6dbbbbd6UL
,
0x2c16163aUL
,
};
static
const
ulong32
Te4
[
256
]
=
{
0x63636363UL
,
0x7c7c7c7cUL
,
0x77777777UL
,
0x7b7b7b7bUL
,
0xf2f2f2f2UL
,
0x6b6b6b6bUL
,
0x6f6f6f6fUL
,
0xc5c5c5c5UL
,
0x30303030UL
,
0x01010101UL
,
0x67676767UL
,
0x2b2b2b2bUL
,
0xfefefefeUL
,
0xd7d7d7d7UL
,
0xababababUL
,
0x76767676UL
,
0xcacacacaUL
,
0x82828282UL
,
0xc9c9c9c9UL
,
0x7d7d7d7dUL
,
0xfafafafaUL
,
0x59595959UL
,
0x47474747UL
,
0xf0f0f0f0UL
,
0xadadadadUL
,
0xd4d4d4d4UL
,
0xa2a2a2a2UL
,
0xafafafafUL
,
0x9c9c9c9cUL
,
0xa4a4a4a4UL
,
0x72727272UL
,
0xc0c0c0c0UL
,
0xb7b7b7b7UL
,
0xfdfdfdfdUL
,
0x93939393UL
,
0x26262626UL
,
0x36363636UL
,
0x3f3f3f3fUL
,
0xf7f7f7f7UL
,
0xccccccccUL
,
0x34343434UL
,
0xa5a5a5a5UL
,
0xe5e5e5e5UL
,
0xf1f1f1f1UL
,
0x71717171UL
,
0xd8d8d8d8UL
,
0x31313131UL
,
0x15151515UL
,
0x04040404UL
,
0xc7c7c7c7UL
,
0x23232323UL
,
0xc3c3c3c3UL
,
0x18181818UL
,
0x96969696UL
,
0x05050505UL
,
0x9a9a9a9aUL
,
0x07070707UL
,
0x12121212UL
,
0x80808080UL
,
0xe2e2e2e2UL
,
0xebebebebUL
,
0x27272727UL
,
0xb2b2b2b2UL
,
0x75757575UL
,
0x09090909UL
,
0x83838383UL
,
0x2c2c2c2cUL
,
0x1a1a1a1aUL
,
0x1b1b1b1bUL
,
0x6e6e6e6eUL
,
0x5a5a5a5aUL
,
0xa0a0a0a0UL
,
0x52525252UL
,
0x3b3b3b3bUL
,
0xd6d6d6d6UL
,
0xb3b3b3b3UL
,
0x29292929UL
,
0xe3e3e3e3UL
,
0x2f2f2f2fUL
,
0x84848484UL
,
0x53535353UL
,
0xd1d1d1d1UL
,
0x00000000UL
,
0xededededUL
,
0x20202020UL
,
0xfcfcfcfcUL
,
0xb1b1b1b1UL
,
0x5b5b5b5bUL
,
0x6a6a6a6aUL
,
0xcbcbcbcbUL
,
0xbebebebeUL
,
0x39393939UL
,
0x4a4a4a4aUL
,
0x4c4c4c4cUL
,
0x58585858UL
,
0xcfcfcfcfUL
,
0xd0d0d0d0UL
,
0xefefefefUL
,
0xaaaaaaaaUL
,
0xfbfbfbfbUL
,
0x43434343UL
,
0x4d4d4d4dUL
,
0x33333333UL
,
0x85858585UL
,
0x45454545UL
,
0xf9f9f9f9UL
,
0x02020202UL
,
0x7f7f7f7fUL
,
0x50505050UL
,
0x3c3c3c3cUL
,
0x9f9f9f9fUL
,
0xa8a8a8a8UL
,
0x51515151UL
,
0xa3a3a3a3UL
,
0x40404040UL
,
0x8f8f8f8fUL
,
0x92929292UL
,
0x9d9d9d9dUL
,
0x38383838UL
,
0xf5f5f5f5UL
,
0xbcbcbcbcUL
,
0xb6b6b6b6UL
,
0xdadadadaUL
,
0x21212121UL
,
0x10101010UL
,
0xffffffffUL
,
0xf3f3f3f3UL
,
0xd2d2d2d2UL
,
0xcdcdcdcdUL
,
0x0c0c0c0cUL
,
0x13131313UL
,
0xececececUL
,
0x5f5f5f5fUL
,
0x97979797UL
,
0x44444444UL
,
0x17171717UL
,
0xc4c4c4c4UL
,
0xa7a7a7a7UL
,
0x7e7e7e7eUL
,
0x3d3d3d3dUL
,
0x64646464UL
,
0x5d5d5d5dUL
,
0x19191919UL
,
0x73737373UL
,
0x60606060UL
,
0x81818181UL
,
0x4f4f4f4fUL
,
0xdcdcdcdcUL
,
0x22222222UL
,
0x2a2a2a2aUL
,
0x90909090UL
,
0x88888888UL
,
0x46464646UL
,
0xeeeeeeeeUL
,
0xb8b8b8b8UL
,
0x14141414UL
,
0xdedededeUL
,
0x5e5e5e5eUL
,
0x0b0b0b0bUL
,
0xdbdbdbdbUL
,
0xe0e0e0e0UL
,
0x32323232UL
,
0x3a3a3a3aUL
,
0x0a0a0a0aUL
,
0x49494949UL
,
0x06060606UL
,
0x24242424UL
,
0x5c5c5c5cUL
,
0xc2c2c2c2UL
,
0xd3d3d3d3UL
,
0xacacacacUL
,
0x62626262UL
,
0x91919191UL
,
0x95959595UL
,
0xe4e4e4e4UL
,
0x79797979UL
,
0xe7e7e7e7UL
,
0xc8c8c8c8UL
,
0x37373737UL
,
0x6d6d6d6dUL
,
0x8d8d8d8dUL
,
0xd5d5d5d5UL
,
0x4e4e4e4eUL
,
0xa9a9a9a9UL
,
0x6c6c6c6cUL
,
0x56565656UL
,
0xf4f4f4f4UL
,
0xeaeaeaeaUL
,
0x65656565UL
,
0x7a7a7a7aUL
,
0xaeaeaeaeUL
,
0x08080808UL
,
0xbabababaUL
,
0x78787878UL
,
0x25252525UL
,
0x2e2e2e2eUL
,
0x1c1c1c1cUL
,
0xa6a6a6a6UL
,
0xb4b4b4b4UL
,
0xc6c6c6c6UL
,
0xe8e8e8e8UL
,
0xddddddddUL
,
0x74747474UL
,
0x1f1f1f1fUL
,
0x4b4b4b4bUL
,
0xbdbdbdbdUL
,
0x8b8b8b8bUL
,
0x8a8a8a8aUL
,
0x70707070UL
,
0x3e3e3e3eUL
,
0xb5b5b5b5UL
,
0x66666666UL
,
0x48484848UL
,
0x03030303UL
,
0xf6f6f6f6UL
,
0x0e0e0e0eUL
,
0x61616161UL
,
0x35353535UL
,
0x57575757UL
,
0xb9b9b9b9UL
,
0x86868686UL
,
0xc1c1c1c1UL
,
0x1d1d1d1dUL
,
0x9e9e9e9eUL
,
0xe1e1e1e1UL
,
0xf8f8f8f8UL
,
0x98989898UL
,
0x11111111UL
,
0x69696969UL
,
0xd9d9d9d9UL
,
0x8e8e8e8eUL
,
0x94949494UL
,
0x9b9b9b9bUL
,
0x1e1e1e1eUL
,
0x87878787UL
,
0xe9e9e9e9UL
,
0xcecececeUL
,
0x55555555UL
,
0x28282828UL
,
0xdfdfdfdfUL
,
0x8c8c8c8cUL
,
0xa1a1a1a1UL
,
0x89898989UL
,
0x0d0d0d0dUL
,
0xbfbfbfbfUL
,
0xe6e6e6e6UL
,
0x42424242UL
,
0x68686868UL
,
0x41414141UL
,
0x99999999UL
,
0x2d2d2d2dUL
,
0x0f0f0f0fUL
,
0xb0b0b0b0UL
,
0x54545454UL
,
0xbbbbbbbbUL
,
0x16161616UL
,
};
static
const
ulong32
TD0
[
256
]
=
{
0x51f4a750UL
,
0x7e416553UL
,
0x1a17a4c3UL
,
0x3a275e96UL
,
0x3bab6bcbUL
,
0x1f9d45f1UL
,
0xacfa58abUL
,
0x4be30393UL
,
0x2030fa55UL
,
0xad766df6UL
,
0x88cc7691UL
,
0xf5024c25UL
,
0x4fe5d7fcUL
,
0xc52acbd7UL
,
0x26354480UL
,
0xb562a38fUL
,
0xdeb15a49UL
,
0x25ba1b67UL
,
0x45ea0e98UL
,
0x5dfec0e1UL
,
0xc32f7502UL
,
0x814cf012UL
,
0x8d4697a3UL
,
0x6bd3f9c6UL
,
0x038f5fe7UL
,
0x15929c95UL
,
0xbf6d7aebUL
,
0x955259daUL
,
0xd4be832dUL
,
0x587421d3UL
,
0x49e06929UL
,
0x8ec9c844UL
,
0x75c2896aUL
,
0xf48e7978UL
,
0x99583e6bUL
,
0x27b971ddUL
,
0xbee14fb6UL
,
0xf088ad17UL
,
0xc920ac66UL
,
0x7dce3ab4UL
,
0x63df4a18UL
,
0xe51a3182UL
,
0x97513360UL
,
0x62537f45UL
,
0xb16477e0UL
,
0xbb6bae84UL
,
0xfe81a01cUL
,
0xf9082b94UL
,
0x70486858UL
,
0x8f45fd19UL
,
0x94de6c87UL
,
0x527bf8b7UL
,
0xab73d323UL
,
0x724b02e2UL
,
0xe31f8f57UL
,
0x6655ab2aUL
,
0xb2eb2807UL
,
0x2fb5c203UL
,
0x86c57b9aUL
,
0xd33708a5UL
,
0x302887f2UL
,
0x23bfa5b2UL
,
0x02036abaUL
,
0xed16825cUL
,
0x8acf1c2bUL
,
0xa779b492UL
,
0xf307f2f0UL
,
0x4e69e2a1UL
,
0x65daf4cdUL
,
0x0605bed5UL
,
0xd134621fUL
,
0xc4a6fe8aUL
,
0x342e539dUL
,
0xa2f355a0UL
,
0x058ae132UL
,
0xa4f6eb75UL
,
0x0b83ec39UL
,
0x4060efaaUL
,
0x5e719f06UL
,
0xbd6e1051UL
,
0x3e218af9UL
,
0x96dd063dUL
,
0xdd3e05aeUL
,
0x4de6bd46UL
,
0x91548db5UL
,
0x71c45d05UL
,
0x0406d46fUL
,
0x605015ffUL
,
0x1998fb24UL
,
0xd6bde997UL
,
0x894043ccUL
,
0x67d99e77UL
,
0xb0e842bdUL
,
0x07898b88UL
,
0xe7195b38UL
,
0x79c8eedbUL
,
0xa17c0a47UL
,
0x7c420fe9UL
,
0xf8841ec9UL
,
0x00000000UL
,
0x09808683UL
,
0x322bed48UL
,
0x1e1170acUL
,
0x6c5a724eUL
,
0xfd0efffbUL
,
0x0f853856UL
,
0x3daed51eUL
,
0x362d3927UL
,
0x0a0fd964UL
,
0x685ca621UL
,
0x9b5b54d1UL
,
0x24362e3aUL
,
0x0c0a67b1UL
,
0x9357e70fUL
,
0xb4ee96d2UL
,
0x1b9b919eUL
,
0x80c0c54fUL
,
0x61dc20a2UL
,
0x5a774b69UL
,
0x1c121a16UL
,
0xe293ba0aUL
,
0xc0a02ae5UL
,
0x3c22e043UL
,
0x121b171dUL
,
0x0e090d0bUL
,
0xf28bc7adUL
,
0x2db6a8b9UL
,
0x141ea9c8UL
,
0x57f11985UL
,
0xaf75074cUL
,
0xee99ddbbUL
,
0xa37f60fdUL
,
0xf701269fUL
,
0x5c72f5bcUL
,
0x44663bc5UL
,
0x5bfb7e34UL
,
0x8b432976UL
,
0xcb23c6dcUL
,
0xb6edfc68UL
,
0xb8e4f163UL
,
0xd731dccaUL
,
0x42638510UL
,
0x13972240UL
,
0x84c61120UL
,
0x854a247dUL
,
0xd2bb3df8UL
,
0xaef93211UL
,
0xc729a16dUL
,
0x1d9e2f4bUL
,
0xdcb230f3UL
,
0x0d8652ecUL
,
0x77c1e3d0UL
,
0x2bb3166cUL
,
0xa970b999UL
,
0x119448faUL
,
0x47e96422UL
,
0xa8fc8cc4UL
,
0xa0f03f1aUL
,
0x567d2cd8UL
,
0x223390efUL
,
0x87494ec7UL
,
0xd938d1c1UL
,
0x8ccaa2feUL
,
0x98d40b36UL
,
0xa6f581cfUL
,
0xa57ade28UL
,
0xdab78e26UL
,
0x3fadbfa4UL
,
0x2c3a9de4UL
,
0x5078920dUL
,
0x6a5fcc9bUL
,
0x547e4662UL
,
0xf68d13c2UL
,
0x90d8b8e8UL
,
0x2e39f75eUL
,
0x82c3aff5UL
,
0x9f5d80beUL
,
0x69d0937cUL
,
0x6fd52da9UL
,
0xcf2512b3UL
,
0xc8ac993bUL
,
0x10187da7UL
,
0xe89c636eUL
,
0xdb3bbb7bUL
,
0xcd267809UL
,
0x6e5918f4UL
,
0xec9ab701UL
,
0x834f9aa8UL
,
0xe6956e65UL
,
0xaaffe67eUL
,
0x21bccf08UL
,
0xef15e8e6UL
,
0xbae79bd9UL
,
0x4a6f36ceUL
,
0xea9f09d4UL
,
0x29b07cd6UL
,
0x31a4b2afUL
,
0x2a3f2331UL
,
0xc6a59430UL
,
0x35a266c0UL
,
0x744ebc37UL
,
0xfc82caa6UL
,
0xe090d0b0UL
,
0x33a7d815UL
,
0xf104984aUL
,
0x41ecdaf7UL
,
0x7fcd500eUL
,
0x1791f62fUL
,
0x764dd68dUL
,
0x43efb04dUL
,
0xccaa4d54UL
,
0xe49604dfUL
,
0x9ed1b5e3UL
,
0x4c6a881bUL
,
0xc12c1fb8UL
,
0x4665517fUL
,
0x9d5eea04UL
,
0x018c355dUL
,
0xfa877473UL
,
0xfb0b412eUL
,
0xb3671d5aUL
,
0x92dbd252UL
,
0xe9105633UL
,
0x6dd64713UL
,
0x9ad7618cUL
,
0x37a10c7aUL
,
0x59f8148eUL
,
0xeb133c89UL
,
0xcea927eeUL
,
0xb761c935UL
,
0xe11ce5edUL
,
0x7a47b13cUL
,
0x9cd2df59UL
,
0x55f2733fUL
,
0x1814ce79UL
,
0x73c737bfUL
,
0x53f7cdeaUL
,
0x5ffdaa5bUL
,
0xdf3d6f14UL
,
0x7844db86UL
,
0xcaaff381UL
,
0xb968c43eUL
,
0x3824342cUL
,
0xc2a3405fUL
,
0x161dc372UL
,
0xbce2250cUL
,
0x283c498bUL
,
0xff0d9541UL
,
0x39a80171UL
,
0x080cb3deUL
,
0xd8b4e49cUL
,
0x6456c190UL
,
0x7bcb8461UL
,
0xd532b670UL
,
0x486c5c74UL
,
0xd0b85742UL
,
};
static
const
ulong32
Td4
[
256
]
=
{
0x52525252UL
,
0x09090909UL
,
0x6a6a6a6aUL
,
0xd5d5d5d5UL
,
0x30303030UL
,
0x36363636UL
,
0xa5a5a5a5UL
,
0x38383838UL
,
0xbfbfbfbfUL
,
0x40404040UL
,
0xa3a3a3a3UL
,
0x9e9e9e9eUL
,
0x81818181UL
,
0xf3f3f3f3UL
,
0xd7d7d7d7UL
,
0xfbfbfbfbUL
,
0x7c7c7c7cUL
,
0xe3e3e3e3UL
,
0x39393939UL
,
0x82828282UL
,
0x9b9b9b9bUL
,
0x2f2f2f2fUL
,
0xffffffffUL
,
0x87878787UL
,
0x34343434UL
,
0x8e8e8e8eUL
,
0x43434343UL
,
0x44444444UL
,
0xc4c4c4c4UL
,
0xdedededeUL
,
0xe9e9e9e9UL
,
0xcbcbcbcbUL
,
0x54545454UL
,
0x7b7b7b7bUL
,
0x94949494UL
,
0x32323232UL
,
0xa6a6a6a6UL
,
0xc2c2c2c2UL
,
0x23232323UL
,
0x3d3d3d3dUL
,
0xeeeeeeeeUL
,
0x4c4c4c4cUL
,
0x95959595UL
,
0x0b0b0b0bUL
,
0x42424242UL
,
0xfafafafaUL
,
0xc3c3c3c3UL
,
0x4e4e4e4eUL
,
0x08080808UL
,
0x2e2e2e2eUL
,
0xa1a1a1a1UL
,
0x66666666UL
,
0x28282828UL
,
0xd9d9d9d9UL
,
0x24242424UL
,
0xb2b2b2b2UL
,
0x76767676UL
,
0x5b5b5b5bUL
,
0xa2a2a2a2UL
,
0x49494949UL
,
0x6d6d6d6dUL
,
0x8b8b8b8bUL
,
0xd1d1d1d1UL
,
0x25252525UL
,
0x72727272UL
,
0xf8f8f8f8UL
,
0xf6f6f6f6UL
,
0x64646464UL
,
0x86868686UL
,
0x68686868UL
,
0x98989898UL
,
0x16161616UL
,
0xd4d4d4d4UL
,
0xa4a4a4a4UL
,
0x5c5c5c5cUL
,
0xccccccccUL
,
0x5d5d5d5dUL
,
0x65656565UL
,
0xb6b6b6b6UL
,
0x92929292UL
,
0x6c6c6c6cUL
,
0x70707070UL
,
0x48484848UL
,
0x50505050UL
,
0xfdfdfdfdUL
,
0xededededUL
,
0xb9b9b9b9UL
,
0xdadadadaUL
,
0x5e5e5e5eUL
,
0x15151515UL
,
0x46464646UL
,
0x57575757UL
,
0xa7a7a7a7UL
,
0x8d8d8d8dUL
,
0x9d9d9d9dUL
,
0x84848484UL
,
0x90909090UL
,
0xd8d8d8d8UL
,
0xababababUL
,
0x00000000UL
,
0x8c8c8c8cUL
,
0xbcbcbcbcUL
,
0xd3d3d3d3UL
,
0x0a0a0a0aUL
,
0xf7f7f7f7UL
,
0xe4e4e4e4UL
,
0x58585858UL
,
0x05050505UL
,
0xb8b8b8b8UL
,
0xb3b3b3b3UL
,
0x45454545UL
,
0x06060606UL
,
0xd0d0d0d0UL
,
0x2c2c2c2cUL
,
0x1e1e1e1eUL
,
0x8f8f8f8fUL
,
0xcacacacaUL
,
0x3f3f3f3fUL
,
0x0f0f0f0fUL
,
0x02020202UL
,
0xc1c1c1c1UL
,
0xafafafafUL
,
0xbdbdbdbdUL
,
0x03030303UL
,
0x01010101UL
,
0x13131313UL
,
0x8a8a8a8aUL
,
0x6b6b6b6bUL
,
0x3a3a3a3aUL
,
0x91919191UL
,
0x11111111UL
,
0x41414141UL
,
0x4f4f4f4fUL
,
0x67676767UL
,
0xdcdcdcdcUL
,
0xeaeaeaeaUL
,
0x97979797UL
,
0xf2f2f2f2UL
,
0xcfcfcfcfUL
,
0xcecececeUL
,
0xf0f0f0f0UL
,
0xb4b4b4b4UL
,
0xe6e6e6e6UL
,
0x73737373UL
,
0x96969696UL
,
0xacacacacUL
,
0x74747474UL
,
0x22222222UL
,
0xe7e7e7e7UL
,
0xadadadadUL
,
0x35353535UL
,
0x85858585UL
,
0xe2e2e2e2UL
,
0xf9f9f9f9UL
,
0x37373737UL
,
0xe8e8e8e8UL
,
0x1c1c1c1cUL
,
0x75757575UL
,
0xdfdfdfdfUL
,
0x6e6e6e6eUL
,
0x47474747UL
,
0xf1f1f1f1UL
,
0x1a1a1a1aUL
,
0x71717171UL
,
0x1d1d1d1dUL
,
0x29292929UL
,
0xc5c5c5c5UL
,
0x89898989UL
,
0x6f6f6f6fUL
,
0xb7b7b7b7UL
,
0x62626262UL
,
0x0e0e0e0eUL
,
0xaaaaaaaaUL
,
0x18181818UL
,
0xbebebebeUL
,
0x1b1b1b1bUL
,
0xfcfcfcfcUL
,
0x56565656UL
,
0x3e3e3e3eUL
,
0x4b4b4b4bUL
,
0xc6c6c6c6UL
,
0xd2d2d2d2UL
,
0x79797979UL
,
0x20202020UL
,
0x9a9a9a9aUL
,
0xdbdbdbdbUL
,
0xc0c0c0c0UL
,
0xfefefefeUL
,
0x78787878UL
,
0xcdcdcdcdUL
,
0x5a5a5a5aUL
,
0xf4f4f4f4UL
,
0x1f1f1f1fUL
,
0xddddddddUL
,
0xa8a8a8a8UL
,
0x33333333UL
,
0x88888888UL
,
0x07070707UL
,
0xc7c7c7c7UL
,
0x31313131UL
,
0xb1b1b1b1UL
,
0x12121212UL
,
0x10101010UL
,
0x59595959UL
,
0x27272727UL
,
0x80808080UL
,
0xececececUL
,
0x5f5f5f5fUL
,
0x60606060UL
,
0x51515151UL
,
0x7f7f7f7fUL
,
0xa9a9a9a9UL
,
0x19191919UL
,
0xb5b5b5b5UL
,
0x4a4a4a4aUL
,
0x0d0d0d0dUL
,
0x2d2d2d2dUL
,
0xe5e5e5e5UL
,
0x7a7a7a7aUL
,
0x9f9f9f9fUL
,
0x93939393UL
,
0xc9c9c9c9UL
,
0x9c9c9c9cUL
,
0xefefefefUL
,
0xa0a0a0a0UL
,
0xe0e0e0e0UL
,
0x3b3b3b3bUL
,
0x4d4d4d4dUL
,
0xaeaeaeaeUL
,
0x2a2a2a2aUL
,
0xf5f5f5f5UL
,
0xb0b0b0b0UL
,
0xc8c8c8c8UL
,
0xebebebebUL
,
0xbbbbbbbbUL
,
0x3c3c3c3cUL
,
0x83838383UL
,
0x53535353UL
,
0x99999999UL
,
0x61616161UL
,
0x17171717UL
,
0x2b2b2b2bUL
,
0x04040404UL
,
0x7e7e7e7eUL
,
0xbabababaUL
,
0x77777777UL
,
0xd6d6d6d6UL
,
0x26262626UL
,
0xe1e1e1e1UL
,
0x69696969UL
,
0x14141414UL
,
0x63636363UL
,
0x55555555UL
,
0x21212121UL
,
0x0c0c0c0cUL
,
0x7d7d7d7dUL
,
};
#define Te0(x) TE0[x]
#define Te1(x) TE1[x]
#define Te2(x) TE2[x]
#define Te3(x) TE3[x]
#define Td0(x) TD0[x]
#define Td1(x) TD1[x]
#define Td2(x) TD2[x]
#define Td3(x) TD3[x]
static
const
ulong32
TE1
[
256
]
=
{
0xa5c66363UL
,
0x84f87c7cUL
,
0x99ee7777UL
,
0x8df67b7bUL
,
0x0dfff2f2UL
,
0xbdd66b6bUL
,
0xb1de6f6fUL
,
0x5491c5c5UL
,
0x50603030UL
,
0x03020101UL
,
0xa9ce6767UL
,
0x7d562b2bUL
,
0x19e7fefeUL
,
0x62b5d7d7UL
,
0xe64dababUL
,
0x9aec7676UL
,
0x458fcacaUL
,
0x9d1f8282UL
,
0x4089c9c9UL
,
0x87fa7d7dUL
,
0x15effafaUL
,
0xebb25959UL
,
0xc98e4747UL
,
0x0bfbf0f0UL
,
0xec41adadUL
,
0x67b3d4d4UL
,
0xfd5fa2a2UL
,
0xea45afafUL
,
0xbf239c9cUL
,
0xf753a4a4UL
,
0x96e47272UL
,
0x5b9bc0c0UL
,
0xc275b7b7UL
,
0x1ce1fdfdUL
,
0xae3d9393UL
,
0x6a4c2626UL
,
0x5a6c3636UL
,
0x417e3f3fUL
,
0x02f5f7f7UL
,
0x4f83ccccUL
,
0x5c683434UL
,
0xf451a5a5UL
,
0x34d1e5e5UL
,
0x08f9f1f1UL
,
0x93e27171UL
,
0x73abd8d8UL
,
0x53623131UL
,
0x3f2a1515UL
,
0x0c080404UL
,
0x5295c7c7UL
,
0x65462323UL
,
0x5e9dc3c3UL
,
0x28301818UL
,
0xa1379696UL
,
0x0f0a0505UL
,
0xb52f9a9aUL
,
0x090e0707UL
,
0x36241212UL
,
0x9b1b8080UL
,
0x3ddfe2e2UL
,
0x26cdebebUL
,
0x694e2727UL
,
0xcd7fb2b2UL
,
0x9fea7575UL
,
0x1b120909UL
,
0x9e1d8383UL
,
0x74582c2cUL
,
0x2e341a1aUL
,
0x2d361b1bUL
,
0xb2dc6e6eUL
,
0xeeb45a5aUL
,
0xfb5ba0a0UL
,
0xf6a45252UL
,
0x4d763b3bUL
,
0x61b7d6d6UL
,
0xce7db3b3UL
,
0x7b522929UL
,
0x3edde3e3UL
,
0x715e2f2fUL
,
0x97138484UL
,
0xf5a65353UL
,
0x68b9d1d1UL
,
0x00000000UL
,
0x2cc1ededUL
,
0x60402020UL
,
0x1fe3fcfcUL
,
0xc879b1b1UL
,
0xedb65b5bUL
,
0xbed46a6aUL
,
0x468dcbcbUL
,
0xd967bebeUL
,
0x4b723939UL
,
0xde944a4aUL
,
0xd4984c4cUL
,
0xe8b05858UL
,
0x4a85cfcfUL
,
0x6bbbd0d0UL
,
0x2ac5efefUL
,
0xe54faaaaUL
,
0x16edfbfbUL
,
0xc5864343UL
,
0xd79a4d4dUL
,
0x55663333UL
,
0x94118585UL
,
0xcf8a4545UL
,
0x10e9f9f9UL
,
0x06040202UL
,
0x81fe7f7fUL
,
0xf0a05050UL
,
0x44783c3cUL
,
0xba259f9fUL
,
0xe34ba8a8UL
,
0xf3a25151UL
,
0xfe5da3a3UL
,
0xc0804040UL
,
0x8a058f8fUL
,
0xad3f9292UL
,
0xbc219d9dUL
,
0x48703838UL
,
0x04f1f5f5UL
,
0xdf63bcbcUL
,
0xc177b6b6UL
,
0x75afdadaUL
,
0x63422121UL
,
0x30201010UL
,
0x1ae5ffffUL
,
0x0efdf3f3UL
,
0x6dbfd2d2UL
,
0x4c81cdcdUL
,
0x14180c0cUL
,
0x35261313UL
,
0x2fc3ececUL
,
0xe1be5f5fUL
,
0xa2359797UL
,
0xcc884444UL
,
0x392e1717UL
,
0x5793c4c4UL
,
0xf255a7a7UL
,
0x82fc7e7eUL
,
0x477a3d3dUL
,
0xacc86464UL
,
0xe7ba5d5dUL
,
0x2b321919UL
,
0x95e67373UL
,
0xa0c06060UL
,
0x98198181UL
,
0xd19e4f4fUL
,
0x7fa3dcdcUL
,
0x66442222UL
,
0x7e542a2aUL
,
0xab3b9090UL
,
0x830b8888UL
,
0xca8c4646UL
,
0x29c7eeeeUL
,
0xd36bb8b8UL
,
0x3c281414UL
,
0x79a7dedeUL
,
0xe2bc5e5eUL
,
0x1d160b0bUL
,
0x76addbdbUL
,
0x3bdbe0e0UL
,
0x56643232UL
,
0x4e743a3aUL
,
0x1e140a0aUL
,
0xdb924949UL
,
0x0a0c0606UL
,
0x6c482424UL
,
0xe4b85c5cUL
,
0x5d9fc2c2UL
,
0x6ebdd3d3UL
,
0xef43acacUL
,
0xa6c46262UL
,
0xa8399191UL
,
0xa4319595UL
,
0x37d3e4e4UL
,
0x8bf27979UL
,
0x32d5e7e7UL
,
0x438bc8c8UL
,
0x596e3737UL
,
0xb7da6d6dUL
,
0x8c018d8dUL
,
0x64b1d5d5UL
,
0xd29c4e4eUL
,
0xe049a9a9UL
,
0xb4d86c6cUL
,
0xfaac5656UL
,
0x07f3f4f4UL
,
0x25cfeaeaUL
,
0xafca6565UL
,
0x8ef47a7aUL
,
0xe947aeaeUL
,
0x18100808UL
,
0xd56fbabaUL
,
0x88f07878UL
,
0x6f4a2525UL
,
0x725c2e2eUL
,
0x24381c1cUL
,
0xf157a6a6UL
,
0xc773b4b4UL
,
0x5197c6c6UL
,
0x23cbe8e8UL
,
0x7ca1ddddUL
,
0x9ce87474UL
,
0x213e1f1fUL
,
0xdd964b4bUL
,
0xdc61bdbdUL
,
0x860d8b8bUL
,
0x850f8a8aUL
,
0x90e07070UL
,
0x427c3e3eUL
,
0xc471b5b5UL
,
0xaacc6666UL
,
0xd8904848UL
,
0x05060303UL
,
0x01f7f6f6UL
,
0x121c0e0eUL
,
0xa3c26161UL
,
0x5f6a3535UL
,
0xf9ae5757UL
,
0xd069b9b9UL
,
0x91178686UL
,
0x5899c1c1UL
,
0x273a1d1dUL
,
0xb9279e9eUL
,
0x38d9e1e1UL
,
0x13ebf8f8UL
,
0xb32b9898UL
,
0x33221111UL
,
0xbbd26969UL
,
0x70a9d9d9UL
,
0x89078e8eUL
,
0xa7339494UL
,
0xb62d9b9bUL
,
0x223c1e1eUL
,
0x92158787UL
,
0x20c9e9e9UL
,
0x4987ceceUL
,
0xffaa5555UL
,
0x78502828UL
,
0x7aa5dfdfUL
,
0x8f038c8cUL
,
0xf859a1a1UL
,
0x80098989UL
,
0x171a0d0dUL
,
0xda65bfbfUL
,
0x31d7e6e6UL
,
0xc6844242UL
,
0xb8d06868UL
,
0xc3824141UL
,
0xb0299999UL
,
0x775a2d2dUL
,
0x111e0f0fUL
,
0xcb7bb0b0UL
,
0xfca85454UL
,
0xd66dbbbbUL
,
0x3a2c1616UL
,
};
static
const
ulong32
TE2
[
256
]
=
{
0x63a5c663UL
,
0x7c84f87cUL
,
0x7799ee77UL
,
0x7b8df67bUL
,
0xf20dfff2UL
,
0x6bbdd66bUL
,
0x6fb1de6fUL
,
0xc55491c5UL
,
0x30506030UL
,
0x01030201UL
,
0x67a9ce67UL
,
0x2b7d562bUL
,
0xfe19e7feUL
,
0xd762b5d7UL
,
0xabe64dabUL
,
0x769aec76UL
,
0xca458fcaUL
,
0x829d1f82UL
,
0xc94089c9UL
,
0x7d87fa7dUL
,
0xfa15effaUL
,
0x59ebb259UL
,
0x47c98e47UL
,
0xf00bfbf0UL
,
0xadec41adUL
,
0xd467b3d4UL
,
0xa2fd5fa2UL
,
0xafea45afUL
,
0x9cbf239cUL
,
0xa4f753a4UL
,
0x7296e472UL
,
0xc05b9bc0UL
,
0xb7c275b7UL
,
0xfd1ce1fdUL
,
0x93ae3d93UL
,
0x266a4c26UL
,
0x365a6c36UL
,
0x3f417e3fUL
,
0xf702f5f7UL
,
0xcc4f83ccUL
,
0x345c6834UL
,
0xa5f451a5UL
,
0xe534d1e5UL
,
0xf108f9f1UL
,
0x7193e271UL
,
0xd873abd8UL
,
0x31536231UL
,
0x153f2a15UL
,
0x040c0804UL
,
0xc75295c7UL
,
0x23654623UL
,
0xc35e9dc3UL
,
0x18283018UL
,
0x96a13796UL
,
0x050f0a05UL
,
0x9ab52f9aUL
,
0x07090e07UL
,
0x12362412UL
,
0x809b1b80UL
,
0xe23ddfe2UL
,
0xeb26cdebUL
,
0x27694e27UL
,
0xb2cd7fb2UL
,
0x759fea75UL
,
0x091b1209UL
,
0x839e1d83UL
,
0x2c74582cUL
,
0x1a2e341aUL
,
0x1b2d361bUL
,
0x6eb2dc6eUL
,
0x5aeeb45aUL
,
0xa0fb5ba0UL
,
0x52f6a452UL
,
0x3b4d763bUL
,
0xd661b7d6UL
,
0xb3ce7db3UL
,
0x297b5229UL
,
0xe33edde3UL
,
0x2f715e2fUL
,
0x84971384UL
,
0x53f5a653UL
,
0xd168b9d1UL
,
0x00000000UL
,
0xed2cc1edUL
,
0x20604020UL
,
0xfc1fe3fcUL
,
0xb1c879b1UL
,
0x5bedb65bUL
,
0x6abed46aUL
,
0xcb468dcbUL
,
0xbed967beUL
,
0x394b7239UL
,
0x4ade944aUL
,
0x4cd4984cUL
,
0x58e8b058UL
,
0xcf4a85cfUL
,
0xd06bbbd0UL
,
0xef2ac5efUL
,
0xaae54faaUL
,
0xfb16edfbUL
,
0x43c58643UL
,
0x4dd79a4dUL
,
0x33556633UL
,
0x85941185UL
,
0x45cf8a45UL
,
0xf910e9f9UL
,
0x02060402UL
,
0x7f81fe7fUL
,
0x50f0a050UL
,
0x3c44783cUL
,
0x9fba259fUL
,
0xa8e34ba8UL
,
0x51f3a251UL
,
0xa3fe5da3UL
,
0x40c08040UL
,
0x8f8a058fUL
,
0x92ad3f92UL
,
0x9dbc219dUL
,
0x38487038UL
,
0xf504f1f5UL
,
0xbcdf63bcUL
,
0xb6c177b6UL
,
0xda75afdaUL
,
0x21634221UL
,
0x10302010UL
,
0xff1ae5ffUL
,
0xf30efdf3UL
,
0xd26dbfd2UL
,
0xcd4c81cdUL
,
0x0c14180cUL
,
0x13352613UL
,
0xec2fc3ecUL
,
0x5fe1be5fUL
,
0x97a23597UL
,
0x44cc8844UL
,
0x17392e17UL
,
0xc45793c4UL
,
0xa7f255a7UL
,
0x7e82fc7eUL
,
0x3d477a3dUL
,
0x64acc864UL
,
0x5de7ba5dUL
,
0x192b3219UL
,
0x7395e673UL
,
0x60a0c060UL
,
0x81981981UL
,
0x4fd19e4fUL
,
0xdc7fa3dcUL
,
0x22664422UL
,
0x2a7e542aUL
,
0x90ab3b90UL
,
0x88830b88UL
,
0x46ca8c46UL
,
0xee29c7eeUL
,
0xb8d36bb8UL
,
0x143c2814UL
,
0xde79a7deUL
,
0x5ee2bc5eUL
,
0x0b1d160bUL
,
0xdb76addbUL
,
0xe03bdbe0UL
,
0x32566432UL
,
0x3a4e743aUL
,
0x0a1e140aUL
,
0x49db9249UL
,
0x060a0c06UL
,
0x246c4824UL
,
0x5ce4b85cUL
,
0xc25d9fc2UL
,
0xd36ebdd3UL
,
0xacef43acUL
,
0x62a6c462UL
,
0x91a83991UL
,
0x95a43195UL
,
0xe437d3e4UL
,
0x798bf279UL
,
0xe732d5e7UL
,
0xc8438bc8UL
,
0x37596e37UL
,
0x6db7da6dUL
,
0x8d8c018dUL
,
0xd564b1d5UL
,
0x4ed29c4eUL
,
0xa9e049a9UL
,
0x6cb4d86cUL
,
0x56faac56UL
,
0xf407f3f4UL
,
0xea25cfeaUL
,
0x65afca65UL
,
0x7a8ef47aUL
,
0xaee947aeUL
,
0x08181008UL
,
0xbad56fbaUL
,
0x7888f078UL
,
0x256f4a25UL
,
0x2e725c2eUL
,
0x1c24381cUL
,
0xa6f157a6UL
,
0xb4c773b4UL
,
0xc65197c6UL
,
0xe823cbe8UL
,
0xdd7ca1ddUL
,
0x749ce874UL
,
0x1f213e1fUL
,
0x4bdd964bUL
,
0xbddc61bdUL
,
0x8b860d8bUL
,
0x8a850f8aUL
,
0x7090e070UL
,
0x3e427c3eUL
,
0xb5c471b5UL
,
0x66aacc66UL
,
0x48d89048UL
,
0x03050603UL
,
0xf601f7f6UL
,
0x0e121c0eUL
,
0x61a3c261UL
,
0x355f6a35UL
,
0x57f9ae57UL
,
0xb9d069b9UL
,
0x86911786UL
,
0xc15899c1UL
,
0x1d273a1dUL
,
0x9eb9279eUL
,
0xe138d9e1UL
,
0xf813ebf8UL
,
0x98b32b98UL
,
0x11332211UL
,
0x69bbd269UL
,
0xd970a9d9UL
,
0x8e89078eUL
,
0x94a73394UL
,
0x9bb62d9bUL
,
0x1e223c1eUL
,
0x87921587UL
,
0xe920c9e9UL
,
0xce4987ceUL
,
0x55ffaa55UL
,
0x28785028UL
,
0xdf7aa5dfUL
,
0x8c8f038cUL
,
0xa1f859a1UL
,
0x89800989UL
,
0x0d171a0dUL
,
0xbfda65bfUL
,
0xe631d7e6UL
,
0x42c68442UL
,
0x68b8d068UL
,
0x41c38241UL
,
0x99b02999UL
,
0x2d775a2dUL
,
0x0f111e0fUL
,
0xb0cb7bb0UL
,
0x54fca854UL
,
0xbbd66dbbUL
,
0x163a2c16UL
,
};
static
const
ulong32
TE3
[
256
]
=
{
0x6363a5c6UL
,
0x7c7c84f8UL
,
0x777799eeUL
,
0x7b7b8df6UL
,
0xf2f20dffUL
,
0x6b6bbdd6UL
,
0x6f6fb1deUL
,
0xc5c55491UL
,
0x30305060UL
,
0x01010302UL
,
0x6767a9ceUL
,
0x2b2b7d56UL
,
0xfefe19e7UL
,
0xd7d762b5UL
,
0xababe64dUL
,
0x76769aecUL
,
0xcaca458fUL
,
0x82829d1fUL
,
0xc9c94089UL
,
0x7d7d87faUL
,
0xfafa15efUL
,
0x5959ebb2UL
,
0x4747c98eUL
,
0xf0f00bfbUL
,
0xadadec41UL
,
0xd4d467b3UL
,
0xa2a2fd5fUL
,
0xafafea45UL
,
0x9c9cbf23UL
,
0xa4a4f753UL
,
0x727296e4UL
,
0xc0c05b9bUL
,
0xb7b7c275UL
,
0xfdfd1ce1UL
,
0x9393ae3dUL
,
0x26266a4cUL
,
0x36365a6cUL
,
0x3f3f417eUL
,
0xf7f702f5UL
,
0xcccc4f83UL
,
0x34345c68UL
,
0xa5a5f451UL
,
0xe5e534d1UL
,
0xf1f108f9UL
,
0x717193e2UL
,
0xd8d873abUL
,
0x31315362UL
,
0x15153f2aUL
,
0x04040c08UL
,
0xc7c75295UL
,
0x23236546UL
,
0xc3c35e9dUL
,
0x18182830UL
,
0x9696a137UL
,
0x05050f0aUL
,
0x9a9ab52fUL
,
0x0707090eUL
,
0x12123624UL
,
0x80809b1bUL
,
0xe2e23ddfUL
,
0xebeb26cdUL
,
0x2727694eUL
,
0xb2b2cd7fUL
,
0x75759feaUL
,
0x09091b12UL
,
0x83839e1dUL
,
0x2c2c7458UL
,
0x1a1a2e34UL
,
0x1b1b2d36UL
,
0x6e6eb2dcUL
,
0x5a5aeeb4UL
,
0xa0a0fb5bUL
,
0x5252f6a4UL
,
0x3b3b4d76UL
,
0xd6d661b7UL
,
0xb3b3ce7dUL
,
0x29297b52UL
,
0xe3e33eddUL
,
0x2f2f715eUL
,
0x84849713UL
,
0x5353f5a6UL
,
0xd1d168b9UL
,
0x00000000UL
,
0xeded2cc1UL
,
0x20206040UL
,
0xfcfc1fe3UL
,
0xb1b1c879UL
,
0x5b5bedb6UL
,
0x6a6abed4UL
,
0xcbcb468dUL
,
0xbebed967UL
,
0x39394b72UL
,
0x4a4ade94UL
,
0x4c4cd498UL
,
0x5858e8b0UL
,
0xcfcf4a85UL
,
0xd0d06bbbUL
,
0xefef2ac5UL
,
0xaaaae54fUL
,
0xfbfb16edUL
,
0x4343c586UL
,
0x4d4dd79aUL
,
0x33335566UL
,
0x85859411UL
,
0x4545cf8aUL
,
0xf9f910e9UL
,
0x02020604UL
,
0x7f7f81feUL
,
0x5050f0a0UL
,
0x3c3c4478UL
,
0x9f9fba25UL
,
0xa8a8e34bUL
,
0x5151f3a2UL
,
0xa3a3fe5dUL
,
0x4040c080UL
,
0x8f8f8a05UL
,
0x9292ad3fUL
,
0x9d9dbc21UL
,
0x38384870UL
,
0xf5f504f1UL
,
0xbcbcdf63UL
,
0xb6b6c177UL
,
0xdada75afUL
,
0x21216342UL
,
0x10103020UL
,
0xffff1ae5UL
,
0xf3f30efdUL
,
0xd2d26dbfUL
,
0xcdcd4c81UL
,
0x0c0c1418UL
,
0x13133526UL
,
0xecec2fc3UL
,
0x5f5fe1beUL
,
0x9797a235UL
,
0x4444cc88UL
,
0x1717392eUL
,
0xc4c45793UL
,
0xa7a7f255UL
,
0x7e7e82fcUL
,
0x3d3d477aUL
,
0x6464acc8UL
,
0x5d5de7baUL
,
0x19192b32UL
,
0x737395e6UL
,
0x6060a0c0UL
,
0x81819819UL
,
0x4f4fd19eUL
,
0xdcdc7fa3UL
,
0x22226644UL
,
0x2a2a7e54UL
,
0x9090ab3bUL
,
0x8888830bUL
,
0x4646ca8cUL
,
0xeeee29c7UL
,
0xb8b8d36bUL
,
0x14143c28UL
,
0xdede79a7UL
,
0x5e5ee2bcUL
,
0x0b0b1d16UL
,
0xdbdb76adUL
,
0xe0e03bdbUL
,
0x32325664UL
,
0x3a3a4e74UL
,
0x0a0a1e14UL
,
0x4949db92UL
,
0x06060a0cUL
,
0x24246c48UL
,
0x5c5ce4b8UL
,
0xc2c25d9fUL
,
0xd3d36ebdUL
,
0xacacef43UL
,
0x6262a6c4UL
,
0x9191a839UL
,
0x9595a431UL
,
0xe4e437d3UL
,
0x79798bf2UL
,
0xe7e732d5UL
,
0xc8c8438bUL
,
0x3737596eUL
,
0x6d6db7daUL
,
0x8d8d8c01UL
,
0xd5d564b1UL
,
0x4e4ed29cUL
,
0xa9a9e049UL
,
0x6c6cb4d8UL
,
0x5656faacUL
,
0xf4f407f3UL
,
0xeaea25cfUL
,
0x6565afcaUL
,
0x7a7a8ef4UL
,
0xaeaee947UL
,
0x08081810UL
,
0xbabad56fUL
,
0x787888f0UL
,
0x25256f4aUL
,
0x2e2e725cUL
,
0x1c1c2438UL
,
0xa6a6f157UL
,
0xb4b4c773UL
,
0xc6c65197UL
,
0xe8e823cbUL
,
0xdddd7ca1UL
,
0x74749ce8UL
,
0x1f1f213eUL
,
0x4b4bdd96UL
,
0xbdbddc61UL
,
0x8b8b860dUL
,
0x8a8a850fUL
,
0x707090e0UL
,
0x3e3e427cUL
,
0xb5b5c471UL
,
0x6666aaccUL
,
0x4848d890UL
,
0x03030506UL
,
0xf6f601f7UL
,
0x0e0e121cUL
,
0x6161a3c2UL
,
0x35355f6aUL
,
0x5757f9aeUL
,
0xb9b9d069UL
,
0x86869117UL
,
0xc1c15899UL
,
0x1d1d273aUL
,
0x9e9eb927UL
,
0xe1e138d9UL
,
0xf8f813ebUL
,
0x9898b32bUL
,
0x11113322UL
,
0x6969bbd2UL
,
0xd9d970a9UL
,
0x8e8e8907UL
,
0x9494a733UL
,
0x9b9bb62dUL
,
0x1e1e223cUL
,
0x87879215UL
,
0xe9e920c9UL
,
0xcece4987UL
,
0x5555ffaaUL
,
0x28287850UL
,
0xdfdf7aa5UL
,
0x8c8c8f03UL
,
0xa1a1f859UL
,
0x89898009UL
,
0x0d0d171aUL
,
0xbfbfda65UL
,
0xe6e631d7UL
,
0x4242c684UL
,
0x6868b8d0UL
,
0x4141c382UL
,
0x9999b029UL
,
0x2d2d775aUL
,
0x0f0f111eUL
,
0xb0b0cb7bUL
,
0x5454fca8UL
,
0xbbbbd66dUL
,
0x16163a2cUL
,
};
static
const
ulong32
Te4_0
[]
=
{
0x00000063UL
,
0x0000007cUL
,
0x00000077UL
,
0x0000007bUL
,
0x000000f2UL
,
0x0000006bUL
,
0x0000006fUL
,
0x000000c5UL
,
0x00000030UL
,
0x00000001UL
,
0x00000067UL
,
0x0000002bUL
,
0x000000feUL
,
0x000000d7UL
,
0x000000abUL
,
0x00000076UL
,
0x000000caUL
,
0x00000082UL
,
0x000000c9UL
,
0x0000007dUL
,
0x000000faUL
,
0x00000059UL
,
0x00000047UL
,
0x000000f0UL
,
0x000000adUL
,
0x000000d4UL
,
0x000000a2UL
,
0x000000afUL
,
0x0000009cUL
,
0x000000a4UL
,
0x00000072UL
,
0x000000c0UL
,
0x000000b7UL
,
0x000000fdUL
,
0x00000093UL
,
0x00000026UL
,
0x00000036UL
,
0x0000003fUL
,
0x000000f7UL
,
0x000000ccUL
,
0x00000034UL
,
0x000000a5UL
,
0x000000e5UL
,
0x000000f1UL
,
0x00000071UL
,
0x000000d8UL
,
0x00000031UL
,
0x00000015UL
,
0x00000004UL
,
0x000000c7UL
,
0x00000023UL
,
0x000000c3UL
,
0x00000018UL
,
0x00000096UL
,
0x00000005UL
,
0x0000009aUL
,
0x00000007UL
,
0x00000012UL
,
0x00000080UL
,
0x000000e2UL
,
0x000000ebUL
,
0x00000027UL
,
0x000000b2UL
,
0x00000075UL
,
0x00000009UL
,
0x00000083UL
,
0x0000002cUL
,
0x0000001aUL
,
0x0000001bUL
,
0x0000006eUL
,
0x0000005aUL
,
0x000000a0UL
,
0x00000052UL
,
0x0000003bUL
,
0x000000d6UL
,
0x000000b3UL
,
0x00000029UL
,
0x000000e3UL
,
0x0000002fUL
,
0x00000084UL
,
0x00000053UL
,
0x000000d1UL
,
0x00000000UL
,
0x000000edUL
,
0x00000020UL
,
0x000000fcUL
,
0x000000b1UL
,
0x0000005bUL
,
0x0000006aUL
,
0x000000cbUL
,
0x000000beUL
,
0x00000039UL
,
0x0000004aUL
,
0x0000004cUL
,
0x00000058UL
,
0x000000cfUL
,
0x000000d0UL
,
0x000000efUL
,
0x000000aaUL
,
0x000000fbUL
,
0x00000043UL
,
0x0000004dUL
,
0x00000033UL
,
0x00000085UL
,
0x00000045UL
,
0x000000f9UL
,
0x00000002UL
,
0x0000007fUL
,
0x00000050UL
,
0x0000003cUL
,
0x0000009fUL
,
0x000000a8UL
,
0x00000051UL
,
0x000000a3UL
,
0x00000040UL
,
0x0000008fUL
,
0x00000092UL
,
0x0000009dUL
,
0x00000038UL
,
0x000000f5UL
,
0x000000bcUL
,
0x000000b6UL
,
0x000000daUL
,
0x00000021UL
,
0x00000010UL
,
0x000000ffUL
,
0x000000f3UL
,
0x000000d2UL
,
0x000000cdUL
,
0x0000000cUL
,
0x00000013UL
,
0x000000ecUL
,
0x0000005fUL
,
0x00000097UL
,
0x00000044UL
,
0x00000017UL
,
0x000000c4UL
,
0x000000a7UL
,
0x0000007eUL
,
0x0000003dUL
,
0x00000064UL
,
0x0000005dUL
,
0x00000019UL
,
0x00000073UL
,
0x00000060UL
,
0x00000081UL
,
0x0000004fUL
,
0x000000dcUL
,
0x00000022UL
,
0x0000002aUL
,
0x00000090UL
,
0x00000088UL
,
0x00000046UL
,
0x000000eeUL
,
0x000000b8UL
,
0x00000014UL
,
0x000000deUL
,
0x0000005eUL
,
0x0000000bUL
,
0x000000dbUL
,
0x000000e0UL
,
0x00000032UL
,
0x0000003aUL
,
0x0000000aUL
,
0x00000049UL
,
0x00000006UL
,
0x00000024UL
,
0x0000005cUL
,
0x000000c2UL
,
0x000000d3UL
,
0x000000acUL
,
0x00000062UL
,
0x00000091UL
,
0x00000095UL
,
0x000000e4UL
,
0x00000079UL
,
0x000000e7UL
,
0x000000c8UL
,
0x00000037UL
,
0x0000006dUL
,
0x0000008dUL
,
0x000000d5UL
,
0x0000004eUL
,
0x000000a9UL
,
0x0000006cUL
,
0x00000056UL
,
0x000000f4UL
,
0x000000eaUL
,
0x00000065UL
,
0x0000007aUL
,
0x000000aeUL
,
0x00000008UL
,
0x000000baUL
,
0x00000078UL
,
0x00000025UL
,
0x0000002eUL
,
0x0000001cUL
,
0x000000a6UL
,
0x000000b4UL
,
0x000000c6UL
,
0x000000e8UL
,
0x000000ddUL
,
0x00000074UL
,
0x0000001fUL
,
0x0000004bUL
,
0x000000bdUL
,
0x0000008bUL
,
0x0000008aUL
,
0x00000070UL
,
0x0000003eUL
,
0x000000b5UL
,
0x00000066UL
,
0x00000048UL
,
0x00000003UL
,
0x000000f6UL
,
0x0000000eUL
,
0x00000061UL
,
0x00000035UL
,
0x00000057UL
,
0x000000b9UL
,
0x00000086UL
,
0x000000c1UL
,
0x0000001dUL
,
0x0000009eUL
,
0x000000e1UL
,
0x000000f8UL
,
0x00000098UL
,
0x00000011UL
,
0x00000069UL
,
0x000000d9UL
,
0x0000008eUL
,
0x00000094UL
,
0x0000009bUL
,
0x0000001eUL
,
0x00000087UL
,
0x000000e9UL
,
0x000000ceUL
,
0x00000055UL
,
0x00000028UL
,
0x000000dfUL
,
0x0000008cUL
,
0x000000a1UL
,
0x00000089UL
,
0x0000000dUL
,
0x000000bfUL
,
0x000000e6UL
,
0x00000042UL
,
0x00000068UL
,
0x00000041UL
,
0x00000099UL
,
0x0000002dUL
,
0x0000000fUL
,
0x000000b0UL
,
0x00000054UL
,
0x000000bbUL
,
0x00000016UL
};
static
const
ulong32
Te4_1
[]
=
{
0x00006300UL
,
0x00007c00UL
,
0x00007700UL
,
0x00007b00UL
,
0x0000f200UL
,
0x00006b00UL
,
0x00006f00UL
,
0x0000c500UL
,
0x00003000UL
,
0x00000100UL
,
0x00006700UL
,
0x00002b00UL
,
0x0000fe00UL
,
0x0000d700UL
,
0x0000ab00UL
,
0x00007600UL
,
0x0000ca00UL
,
0x00008200UL
,
0x0000c900UL
,
0x00007d00UL
,
0x0000fa00UL
,
0x00005900UL
,
0x00004700UL
,
0x0000f000UL
,
0x0000ad00UL
,
0x0000d400UL
,
0x0000a200UL
,
0x0000af00UL
,
0x00009c00UL
,
0x0000a400UL
,
0x00007200UL
,
0x0000c000UL
,
0x0000b700UL
,
0x0000fd00UL
,
0x00009300UL
,
0x00002600UL
,
0x00003600UL
,
0x00003f00UL
,
0x0000f700UL
,
0x0000cc00UL
,
0x00003400UL
,
0x0000a500UL
,
0x0000e500UL
,
0x0000f100UL
,
0x00007100UL
,
0x0000d800UL
,
0x00003100UL
,
0x00001500UL
,
0x00000400UL
,
0x0000c700UL
,
0x00002300UL
,
0x0000c300UL
,
0x00001800UL
,
0x00009600UL
,
0x00000500UL
,
0x00009a00UL
,
0x00000700UL
,
0x00001200UL
,
0x00008000UL
,
0x0000e200UL
,
0x0000eb00UL
,
0x00002700UL
,
0x0000b200UL
,
0x00007500UL
,
0x00000900UL
,
0x00008300UL
,
0x00002c00UL
,
0x00001a00UL
,
0x00001b00UL
,
0x00006e00UL
,
0x00005a00UL
,
0x0000a000UL
,
0x00005200UL
,
0x00003b00UL
,
0x0000d600UL
,
0x0000b300UL
,
0x00002900UL
,
0x0000e300UL
,
0x00002f00UL
,
0x00008400UL
,
0x00005300UL
,
0x0000d100UL
,
0x00000000UL
,
0x0000ed00UL
,
0x00002000UL
,
0x0000fc00UL
,
0x0000b100UL
,
0x00005b00UL
,
0x00006a00UL
,
0x0000cb00UL
,
0x0000be00UL
,
0x00003900UL
,
0x00004a00UL
,
0x00004c00UL
,
0x00005800UL
,
0x0000cf00UL
,
0x0000d000UL
,
0x0000ef00UL
,
0x0000aa00UL
,
0x0000fb00UL
,
0x00004300UL
,
0x00004d00UL
,
0x00003300UL
,
0x00008500UL
,
0x00004500UL
,
0x0000f900UL
,
0x00000200UL
,
0x00007f00UL
,
0x00005000UL
,
0x00003c00UL
,
0x00009f00UL
,
0x0000a800UL
,
0x00005100UL
,
0x0000a300UL
,
0x00004000UL
,
0x00008f00UL
,
0x00009200UL
,
0x00009d00UL
,
0x00003800UL
,
0x0000f500UL
,
0x0000bc00UL
,
0x0000b600UL
,
0x0000da00UL
,
0x00002100UL
,
0x00001000UL
,
0x0000ff00UL
,
0x0000f300UL
,
0x0000d200UL
,
0x0000cd00UL
,
0x00000c00UL
,
0x00001300UL
,
0x0000ec00UL
,
0x00005f00UL
,
0x00009700UL
,
0x00004400UL
,
0x00001700UL
,
0x0000c400UL
,
0x0000a700UL
,
0x00007e00UL
,
0x00003d00UL
,
0x00006400UL
,
0x00005d00UL
,
0x00001900UL
,
0x00007300UL
,
0x00006000UL
,
0x00008100UL
,
0x00004f00UL
,
0x0000dc00UL
,
0x00002200UL
,
0x00002a00UL
,
0x00009000UL
,
0x00008800UL
,
0x00004600UL
,
0x0000ee00UL
,
0x0000b800UL
,
0x00001400UL
,
0x0000de00UL
,
0x00005e00UL
,
0x00000b00UL
,
0x0000db00UL
,
0x0000e000UL
,
0x00003200UL
,
0x00003a00UL
,
0x00000a00UL
,
0x00004900UL
,
0x00000600UL
,
0x00002400UL
,
0x00005c00UL
,
0x0000c200UL
,
0x0000d300UL
,
0x0000ac00UL
,
0x00006200UL
,
0x00009100UL
,
0x00009500UL
,
0x0000e400UL
,
0x00007900UL
,
0x0000e700UL
,
0x0000c800UL
,
0x00003700UL
,
0x00006d00UL
,
0x00008d00UL
,
0x0000d500UL
,
0x00004e00UL
,
0x0000a900UL
,
0x00006c00UL
,
0x00005600UL
,
0x0000f400UL
,
0x0000ea00UL
,
0x00006500UL
,
0x00007a00UL
,
0x0000ae00UL
,
0x00000800UL
,
0x0000ba00UL
,
0x00007800UL
,
0x00002500UL
,
0x00002e00UL
,
0x00001c00UL
,
0x0000a600UL
,
0x0000b400UL
,
0x0000c600UL
,
0x0000e800UL
,
0x0000dd00UL
,
0x00007400UL
,
0x00001f00UL
,
0x00004b00UL
,
0x0000bd00UL
,
0x00008b00UL
,
0x00008a00UL
,
0x00007000UL
,
0x00003e00UL
,
0x0000b500UL
,
0x00006600UL
,
0x00004800UL
,
0x00000300UL
,
0x0000f600UL
,
0x00000e00UL
,
0x00006100UL
,
0x00003500UL
,
0x00005700UL
,
0x0000b900UL
,
0x00008600UL
,
0x0000c100UL
,
0x00001d00UL
,
0x00009e00UL
,
0x0000e100UL
,
0x0000f800UL
,
0x00009800UL
,
0x00001100UL
,
0x00006900UL
,
0x0000d900UL
,
0x00008e00UL
,
0x00009400UL
,
0x00009b00UL
,
0x00001e00UL
,
0x00008700UL
,
0x0000e900UL
,
0x0000ce00UL
,
0x00005500UL
,
0x00002800UL
,
0x0000df00UL
,
0x00008c00UL
,
0x0000a100UL
,
0x00008900UL
,
0x00000d00UL
,
0x0000bf00UL
,
0x0000e600UL
,
0x00004200UL
,
0x00006800UL
,
0x00004100UL
,
0x00009900UL
,
0x00002d00UL
,
0x00000f00UL
,
0x0000b000UL
,
0x00005400UL
,
0x0000bb00UL
,
0x00001600UL
};
static
const
ulong32
Te4_2
[]
=
{
0x00630000UL
,
0x007c0000UL
,
0x00770000UL
,
0x007b0000UL
,
0x00f20000UL
,
0x006b0000UL
,
0x006f0000UL
,
0x00c50000UL
,
0x00300000UL
,
0x00010000UL
,
0x00670000UL
,
0x002b0000UL
,
0x00fe0000UL
,
0x00d70000UL
,
0x00ab0000UL
,
0x00760000UL
,
0x00ca0000UL
,
0x00820000UL
,
0x00c90000UL
,
0x007d0000UL
,
0x00fa0000UL
,
0x00590000UL
,
0x00470000UL
,
0x00f00000UL
,
0x00ad0000UL
,
0x00d40000UL
,
0x00a20000UL
,
0x00af0000UL
,
0x009c0000UL
,
0x00a40000UL
,
0x00720000UL
,
0x00c00000UL
,
0x00b70000UL
,
0x00fd0000UL
,
0x00930000UL
,
0x00260000UL
,
0x00360000UL
,
0x003f0000UL
,
0x00f70000UL
,
0x00cc0000UL
,
0x00340000UL
,
0x00a50000UL
,
0x00e50000UL
,
0x00f10000UL
,
0x00710000UL
,
0x00d80000UL
,
0x00310000UL
,
0x00150000UL
,
0x00040000UL
,
0x00c70000UL
,
0x00230000UL
,
0x00c30000UL
,
0x00180000UL
,
0x00960000UL
,
0x00050000UL
,
0x009a0000UL
,
0x00070000UL
,
0x00120000UL
,
0x00800000UL
,
0x00e20000UL
,
0x00eb0000UL
,
0x00270000UL
,
0x00b20000UL
,
0x00750000UL
,
0x00090000UL
,
0x00830000UL
,
0x002c0000UL
,
0x001a0000UL
,
0x001b0000UL
,
0x006e0000UL
,
0x005a0000UL
,
0x00a00000UL
,
0x00520000UL
,
0x003b0000UL
,
0x00d60000UL
,
0x00b30000UL
,
0x00290000UL
,
0x00e30000UL
,
0x002f0000UL
,
0x00840000UL
,
0x00530000UL
,
0x00d10000UL
,
0x00000000UL
,
0x00ed0000UL
,
0x00200000UL
,
0x00fc0000UL
,
0x00b10000UL
,
0x005b0000UL
,
0x006a0000UL
,
0x00cb0000UL
,
0x00be0000UL
,
0x00390000UL
,
0x004a0000UL
,
0x004c0000UL
,
0x00580000UL
,
0x00cf0000UL
,
0x00d00000UL
,
0x00ef0000UL
,
0x00aa0000UL
,
0x00fb0000UL
,
0x00430000UL
,
0x004d0000UL
,
0x00330000UL
,
0x00850000UL
,
0x00450000UL
,
0x00f90000UL
,
0x00020000UL
,
0x007f0000UL
,
0x00500000UL
,
0x003c0000UL
,
0x009f0000UL
,
0x00a80000UL
,
0x00510000UL
,
0x00a30000UL
,
0x00400000UL
,
0x008f0000UL
,
0x00920000UL
,
0x009d0000UL
,
0x00380000UL
,
0x00f50000UL
,
0x00bc0000UL
,
0x00b60000UL
,
0x00da0000UL
,
0x00210000UL
,
0x00100000UL
,
0x00ff0000UL
,
0x00f30000UL
,
0x00d20000UL
,
0x00cd0000UL
,
0x000c0000UL
,
0x00130000UL
,
0x00ec0000UL
,
0x005f0000UL
,
0x00970000UL
,
0x00440000UL
,
0x00170000UL
,
0x00c40000UL
,
0x00a70000UL
,
0x007e0000UL
,
0x003d0000UL
,
0x00640000UL
,
0x005d0000UL
,
0x00190000UL
,
0x00730000UL
,
0x00600000UL
,
0x00810000UL
,
0x004f0000UL
,
0x00dc0000UL
,
0x00220000UL
,
0x002a0000UL
,
0x00900000UL
,
0x00880000UL
,
0x00460000UL
,
0x00ee0000UL
,
0x00b80000UL
,
0x00140000UL
,
0x00de0000UL
,
0x005e0000UL
,
0x000b0000UL
,
0x00db0000UL
,
0x00e00000UL
,
0x00320000UL
,
0x003a0000UL
,
0x000a0000UL
,
0x00490000UL
,
0x00060000UL
,
0x00240000UL
,
0x005c0000UL
,
0x00c20000UL
,
0x00d30000UL
,
0x00ac0000UL
,
0x00620000UL
,
0x00910000UL
,
0x00950000UL
,
0x00e40000UL
,
0x00790000UL
,
0x00e70000UL
,
0x00c80000UL
,
0x00370000UL
,
0x006d0000UL
,
0x008d0000UL
,
0x00d50000UL
,
0x004e0000UL
,
0x00a90000UL
,
0x006c0000UL
,
0x00560000UL
,
0x00f40000UL
,
0x00ea0000UL
,
0x00650000UL
,
0x007a0000UL
,
0x00ae0000UL
,
0x00080000UL
,
0x00ba0000UL
,
0x00780000UL
,
0x00250000UL
,
0x002e0000UL
,
0x001c0000UL
,
0x00a60000UL
,
0x00b40000UL
,
0x00c60000UL
,
0x00e80000UL
,
0x00dd0000UL
,
0x00740000UL
,
0x001f0000UL
,
0x004b0000UL
,
0x00bd0000UL
,
0x008b0000UL
,
0x008a0000UL
,
0x00700000UL
,
0x003e0000UL
,
0x00b50000UL
,
0x00660000UL
,
0x00480000UL
,
0x00030000UL
,
0x00f60000UL
,
0x000e0000UL
,
0x00610000UL
,
0x00350000UL
,
0x00570000UL
,
0x00b90000UL
,
0x00860000UL
,
0x00c10000UL
,
0x001d0000UL
,
0x009e0000UL
,
0x00e10000UL
,
0x00f80000UL
,
0x00980000UL
,
0x00110000UL
,
0x00690000UL
,
0x00d90000UL
,
0x008e0000UL
,
0x00940000UL
,
0x009b0000UL
,
0x001e0000UL
,
0x00870000UL
,
0x00e90000UL
,
0x00ce0000UL
,
0x00550000UL
,
0x00280000UL
,
0x00df0000UL
,
0x008c0000UL
,
0x00a10000UL
,
0x00890000UL
,
0x000d0000UL
,
0x00bf0000UL
,
0x00e60000UL
,
0x00420000UL
,
0x00680000UL
,
0x00410000UL
,
0x00990000UL
,
0x002d0000UL
,
0x000f0000UL
,
0x00b00000UL
,
0x00540000UL
,
0x00bb0000UL
,
0x00160000UL
};
static
const
ulong32
Te4_3
[]
=
{
0x63000000UL
,
0x7c000000UL
,
0x77000000UL
,
0x7b000000UL
,
0xf2000000UL
,
0x6b000000UL
,
0x6f000000UL
,
0xc5000000UL
,
0x30000000UL
,
0x01000000UL
,
0x67000000UL
,
0x2b000000UL
,
0xfe000000UL
,
0xd7000000UL
,
0xab000000UL
,
0x76000000UL
,
0xca000000UL
,
0x82000000UL
,
0xc9000000UL
,
0x7d000000UL
,
0xfa000000UL
,
0x59000000UL
,
0x47000000UL
,
0xf0000000UL
,
0xad000000UL
,
0xd4000000UL
,
0xa2000000UL
,
0xaf000000UL
,
0x9c000000UL
,
0xa4000000UL
,
0x72000000UL
,
0xc0000000UL
,
0xb7000000UL
,
0xfd000000UL
,
0x93000000UL
,
0x26000000UL
,
0x36000000UL
,
0x3f000000UL
,
0xf7000000UL
,
0xcc000000UL
,
0x34000000UL
,
0xa5000000UL
,
0xe5000000UL
,
0xf1000000UL
,
0x71000000UL
,
0xd8000000UL
,
0x31000000UL
,
0x15000000UL
,
0x04000000UL
,
0xc7000000UL
,
0x23000000UL
,
0xc3000000UL
,
0x18000000UL
,
0x96000000UL
,
0x05000000UL
,
0x9a000000UL
,
0x07000000UL
,
0x12000000UL
,
0x80000000UL
,
0xe2000000UL
,
0xeb000000UL
,
0x27000000UL
,
0xb2000000UL
,
0x75000000UL
,
0x09000000UL
,
0x83000000UL
,
0x2c000000UL
,
0x1a000000UL
,
0x1b000000UL
,
0x6e000000UL
,
0x5a000000UL
,
0xa0000000UL
,
0x52000000UL
,
0x3b000000UL
,
0xd6000000UL
,
0xb3000000UL
,
0x29000000UL
,
0xe3000000UL
,
0x2f000000UL
,
0x84000000UL
,
0x53000000UL
,
0xd1000000UL
,
0x00000000UL
,
0xed000000UL
,
0x20000000UL
,
0xfc000000UL
,
0xb1000000UL
,
0x5b000000UL
,
0x6a000000UL
,
0xcb000000UL
,
0xbe000000UL
,
0x39000000UL
,
0x4a000000UL
,
0x4c000000UL
,
0x58000000UL
,
0xcf000000UL
,
0xd0000000UL
,
0xef000000UL
,
0xaa000000UL
,
0xfb000000UL
,
0x43000000UL
,
0x4d000000UL
,
0x33000000UL
,
0x85000000UL
,
0x45000000UL
,
0xf9000000UL
,
0x02000000UL
,
0x7f000000UL
,
0x50000000UL
,
0x3c000000UL
,
0x9f000000UL
,
0xa8000000UL
,
0x51000000UL
,
0xa3000000UL
,
0x40000000UL
,
0x8f000000UL
,
0x92000000UL
,
0x9d000000UL
,
0x38000000UL
,
0xf5000000UL
,
0xbc000000UL
,
0xb6000000UL
,
0xda000000UL
,
0x21000000UL
,
0x10000000UL
,
0xff000000UL
,
0xf3000000UL
,
0xd2000000UL
,
0xcd000000UL
,
0x0c000000UL
,
0x13000000UL
,
0xec000000UL
,
0x5f000000UL
,
0x97000000UL
,
0x44000000UL
,
0x17000000UL
,
0xc4000000UL
,
0xa7000000UL
,
0x7e000000UL
,
0x3d000000UL
,
0x64000000UL
,
0x5d000000UL
,
0x19000000UL
,
0x73000000UL
,
0x60000000UL
,
0x81000000UL
,
0x4f000000UL
,
0xdc000000UL
,
0x22000000UL
,
0x2a000000UL
,
0x90000000UL
,
0x88000000UL
,
0x46000000UL
,
0xee000000UL
,
0xb8000000UL
,
0x14000000UL
,
0xde000000UL
,
0x5e000000UL
,
0x0b000000UL
,
0xdb000000UL
,
0xe0000000UL
,
0x32000000UL
,
0x3a000000UL
,
0x0a000000UL
,
0x49000000UL
,
0x06000000UL
,
0x24000000UL
,
0x5c000000UL
,
0xc2000000UL
,
0xd3000000UL
,
0xac000000UL
,
0x62000000UL
,
0x91000000UL
,
0x95000000UL
,
0xe4000000UL
,
0x79000000UL
,
0xe7000000UL
,
0xc8000000UL
,
0x37000000UL
,
0x6d000000UL
,
0x8d000000UL
,
0xd5000000UL
,
0x4e000000UL
,
0xa9000000UL
,
0x6c000000UL
,
0x56000000UL
,
0xf4000000UL
,
0xea000000UL
,
0x65000000UL
,
0x7a000000UL
,
0xae000000UL
,
0x08000000UL
,
0xba000000UL
,
0x78000000UL
,
0x25000000UL
,
0x2e000000UL
,
0x1c000000UL
,
0xa6000000UL
,
0xb4000000UL
,
0xc6000000UL
,
0xe8000000UL
,
0xdd000000UL
,
0x74000000UL
,
0x1f000000UL
,
0x4b000000UL
,
0xbd000000UL
,
0x8b000000UL
,
0x8a000000UL
,
0x70000000UL
,
0x3e000000UL
,
0xb5000000UL
,
0x66000000UL
,
0x48000000UL
,
0x03000000UL
,
0xf6000000UL
,
0x0e000000UL
,
0x61000000UL
,
0x35000000UL
,
0x57000000UL
,
0xb9000000UL
,
0x86000000UL
,
0xc1000000UL
,
0x1d000000UL
,
0x9e000000UL
,
0xe1000000UL
,
0xf8000000UL
,
0x98000000UL
,
0x11000000UL
,
0x69000000UL
,
0xd9000000UL
,
0x8e000000UL
,
0x94000000UL
,
0x9b000000UL
,
0x1e000000UL
,
0x87000000UL
,
0xe9000000UL
,
0xce000000UL
,
0x55000000UL
,
0x28000000UL
,
0xdf000000UL
,
0x8c000000UL
,
0xa1000000UL
,
0x89000000UL
,
0x0d000000UL
,
0xbf000000UL
,
0xe6000000UL
,
0x42000000UL
,
0x68000000UL
,
0x41000000UL
,
0x99000000UL
,
0x2d000000UL
,
0x0f000000UL
,
0xb0000000UL
,
0x54000000UL
,
0xbb000000UL
,
0x16000000UL
};
static
const
ulong32
TD1
[
256
]
=
{
0x5051f4a7UL
,
0x537e4165UL
,
0xc31a17a4UL
,
0x963a275eUL
,
0xcb3bab6bUL
,
0xf11f9d45UL
,
0xabacfa58UL
,
0x934be303UL
,
0x552030faUL
,
0xf6ad766dUL
,
0x9188cc76UL
,
0x25f5024cUL
,
0xfc4fe5d7UL
,
0xd7c52acbUL
,
0x80263544UL
,
0x8fb562a3UL
,
0x49deb15aUL
,
0x6725ba1bUL
,
0x9845ea0eUL
,
0xe15dfec0UL
,
0x02c32f75UL
,
0x12814cf0UL
,
0xa38d4697UL
,
0xc66bd3f9UL
,
0xe7038f5fUL
,
0x9515929cUL
,
0xebbf6d7aUL
,
0xda955259UL
,
0x2dd4be83UL
,
0xd3587421UL
,
0x2949e069UL
,
0x448ec9c8UL
,
0x6a75c289UL
,
0x78f48e79UL
,
0x6b99583eUL
,
0xdd27b971UL
,
0xb6bee14fUL
,
0x17f088adUL
,
0x66c920acUL
,
0xb47dce3aUL
,
0x1863df4aUL
,
0x82e51a31UL
,
0x60975133UL
,
0x4562537fUL
,
0xe0b16477UL
,
0x84bb6baeUL
,
0x1cfe81a0UL
,
0x94f9082bUL
,
0x58704868UL
,
0x198f45fdUL
,
0x8794de6cUL
,
0xb7527bf8UL
,
0x23ab73d3UL
,
0xe2724b02UL
,
0x57e31f8fUL
,
0x2a6655abUL
,
0x07b2eb28UL
,
0x032fb5c2UL
,
0x9a86c57bUL
,
0xa5d33708UL
,
0xf2302887UL
,
0xb223bfa5UL
,
0xba02036aUL
,
0x5ced1682UL
,
0x2b8acf1cUL
,
0x92a779b4UL
,
0xf0f307f2UL
,
0xa14e69e2UL
,
0xcd65daf4UL
,
0xd50605beUL
,
0x1fd13462UL
,
0x8ac4a6feUL
,
0x9d342e53UL
,
0xa0a2f355UL
,
0x32058ae1UL
,
0x75a4f6ebUL
,
0x390b83ecUL
,
0xaa4060efUL
,
0x065e719fUL
,
0x51bd6e10UL
,
0xf93e218aUL
,
0x3d96dd06UL
,
0xaedd3e05UL
,
0x464de6bdUL
,
0xb591548dUL
,
0x0571c45dUL
,
0x6f0406d4UL
,
0xff605015UL
,
0x241998fbUL
,
0x97d6bde9UL
,
0xcc894043UL
,
0x7767d99eUL
,
0xbdb0e842UL
,
0x8807898bUL
,
0x38e7195bUL
,
0xdb79c8eeUL
,
0x47a17c0aUL
,
0xe97c420fUL
,
0xc9f8841eUL
,
0x00000000UL
,
0x83098086UL
,
0x48322bedUL
,
0xac1e1170UL
,
0x4e6c5a72UL
,
0xfbfd0effUL
,
0x560f8538UL
,
0x1e3daed5UL
,
0x27362d39UL
,
0x640a0fd9UL
,
0x21685ca6UL
,
0xd19b5b54UL
,
0x3a24362eUL
,
0xb10c0a67UL
,
0x0f9357e7UL
,
0xd2b4ee96UL
,
0x9e1b9b91UL
,
0x4f80c0c5UL
,
0xa261dc20UL
,
0x695a774bUL
,
0x161c121aUL
,
0x0ae293baUL
,
0xe5c0a02aUL
,
0x433c22e0UL
,
0x1d121b17UL
,
0x0b0e090dUL
,
0xadf28bc7UL
,
0xb92db6a8UL
,
0xc8141ea9UL
,
0x8557f119UL
,
0x4caf7507UL
,
0xbbee99ddUL
,
0xfda37f60UL
,
0x9ff70126UL
,
0xbc5c72f5UL
,
0xc544663bUL
,
0x345bfb7eUL
,
0x768b4329UL
,
0xdccb23c6UL
,
0x68b6edfcUL
,
0x63b8e4f1UL
,
0xcad731dcUL
,
0x10426385UL
,
0x40139722UL
,
0x2084c611UL
,
0x7d854a24UL
,
0xf8d2bb3dUL
,
0x11aef932UL
,
0x6dc729a1UL
,
0x4b1d9e2fUL
,
0xf3dcb230UL
,
0xec0d8652UL
,
0xd077c1e3UL
,
0x6c2bb316UL
,
0x99a970b9UL
,
0xfa119448UL
,
0x2247e964UL
,
0xc4a8fc8cUL
,
0x1aa0f03fUL
,
0xd8567d2cUL
,
0xef223390UL
,
0xc787494eUL
,
0xc1d938d1UL
,
0xfe8ccaa2UL
,
0x3698d40bUL
,
0xcfa6f581UL
,
0x28a57adeUL
,
0x26dab78eUL
,
0xa43fadbfUL
,
0xe42c3a9dUL
,
0x0d507892UL
,
0x9b6a5fccUL
,
0x62547e46UL
,
0xc2f68d13UL
,
0xe890d8b8UL
,
0x5e2e39f7UL
,
0xf582c3afUL
,
0xbe9f5d80UL
,
0x7c69d093UL
,
0xa96fd52dUL
,
0xb3cf2512UL
,
0x3bc8ac99UL
,
0xa710187dUL
,
0x6ee89c63UL
,
0x7bdb3bbbUL
,
0x09cd2678UL
,
0xf46e5918UL
,
0x01ec9ab7UL
,
0xa8834f9aUL
,
0x65e6956eUL
,
0x7eaaffe6UL
,
0x0821bccfUL
,
0xe6ef15e8UL
,
0xd9bae79bUL
,
0xce4a6f36UL
,
0xd4ea9f09UL
,
0xd629b07cUL
,
0xaf31a4b2UL
,
0x312a3f23UL
,
0x30c6a594UL
,
0xc035a266UL
,
0x37744ebcUL
,
0xa6fc82caUL
,
0xb0e090d0UL
,
0x1533a7d8UL
,
0x4af10498UL
,
0xf741ecdaUL
,
0x0e7fcd50UL
,
0x2f1791f6UL
,
0x8d764dd6UL
,
0x4d43efb0UL
,
0x54ccaa4dUL
,
0xdfe49604UL
,
0xe39ed1b5UL
,
0x1b4c6a88UL
,
0xb8c12c1fUL
,
0x7f466551UL
,
0x049d5eeaUL
,
0x5d018c35UL
,
0x73fa8774UL
,
0x2efb0b41UL
,
0x5ab3671dUL
,
0x5292dbd2UL
,
0x33e91056UL
,
0x136dd647UL
,
0x8c9ad761UL
,
0x7a37a10cUL
,
0x8e59f814UL
,
0x89eb133cUL
,
0xeecea927UL
,
0x35b761c9UL
,
0xede11ce5UL
,
0x3c7a47b1UL
,
0x599cd2dfUL
,
0x3f55f273UL
,
0x791814ceUL
,
0xbf73c737UL
,
0xea53f7cdUL
,
0x5b5ffdaaUL
,
0x14df3d6fUL
,
0x867844dbUL
,
0x81caaff3UL
,
0x3eb968c4UL
,
0x2c382434UL
,
0x5fc2a340UL
,
0x72161dc3UL
,
0x0cbce225UL
,
0x8b283c49UL
,
0x41ff0d95UL
,
0x7139a801UL
,
0xde080cb3UL
,
0x9cd8b4e4UL
,
0x906456c1UL
,
0x617bcb84UL
,
0x70d532b6UL
,
0x74486c5cUL
,
0x42d0b857UL
,
};
static
const
ulong32
TD2
[
256
]
=
{
0xa75051f4UL
,
0x65537e41UL
,
0xa4c31a17UL
,
0x5e963a27UL
,
0x6bcb3babUL
,
0x45f11f9dUL
,
0x58abacfaUL
,
0x03934be3UL
,
0xfa552030UL
,
0x6df6ad76UL
,
0x769188ccUL
,
0x4c25f502UL
,
0xd7fc4fe5UL
,
0xcbd7c52aUL
,
0x44802635UL
,
0xa38fb562UL
,
0x5a49deb1UL
,
0x1b6725baUL
,
0x0e9845eaUL
,
0xc0e15dfeUL
,
0x7502c32fUL
,
0xf012814cUL
,
0x97a38d46UL
,
0xf9c66bd3UL
,
0x5fe7038fUL
,
0x9c951592UL
,
0x7aebbf6dUL
,
0x59da9552UL
,
0x832dd4beUL
,
0x21d35874UL
,
0x692949e0UL
,
0xc8448ec9UL
,
0x896a75c2UL
,
0x7978f48eUL
,
0x3e6b9958UL
,
0x71dd27b9UL
,
0x4fb6bee1UL
,
0xad17f088UL
,
0xac66c920UL
,
0x3ab47dceUL
,
0x4a1863dfUL
,
0x3182e51aUL
,
0x33609751UL
,
0x7f456253UL
,
0x77e0b164UL
,
0xae84bb6bUL
,
0xa01cfe81UL
,
0x2b94f908UL
,
0x68587048UL
,
0xfd198f45UL
,
0x6c8794deUL
,
0xf8b7527bUL
,
0xd323ab73UL
,
0x02e2724bUL
,
0x8f57e31fUL
,
0xab2a6655UL
,
0x2807b2ebUL
,
0xc2032fb5UL
,
0x7b9a86c5UL
,
0x08a5d337UL
,
0x87f23028UL
,
0xa5b223bfUL
,
0x6aba0203UL
,
0x825ced16UL
,
0x1c2b8acfUL
,
0xb492a779UL
,
0xf2f0f307UL
,
0xe2a14e69UL
,
0xf4cd65daUL
,
0xbed50605UL
,
0x621fd134UL
,
0xfe8ac4a6UL
,
0x539d342eUL
,
0x55a0a2f3UL
,
0xe132058aUL
,
0xeb75a4f6UL
,
0xec390b83UL
,
0xefaa4060UL
,
0x9f065e71UL
,
0x1051bd6eUL
,
0x8af93e21UL
,
0x063d96ddUL
,
0x05aedd3eUL
,
0xbd464de6UL
,
0x8db59154UL
,
0x5d0571c4UL
,
0xd46f0406UL
,
0x15ff6050UL
,
0xfb241998UL
,
0xe997d6bdUL
,
0x43cc8940UL
,
0x9e7767d9UL
,
0x42bdb0e8UL
,
0x8b880789UL
,
0x5b38e719UL
,
0xeedb79c8UL
,
0x0a47a17cUL
,
0x0fe97c42UL
,
0x1ec9f884UL
,
0x00000000UL
,
0x86830980UL
,
0xed48322bUL
,
0x70ac1e11UL
,
0x724e6c5aUL
,
0xfffbfd0eUL
,
0x38560f85UL
,
0xd51e3daeUL
,
0x3927362dUL
,
0xd9640a0fUL
,
0xa621685cUL
,
0x54d19b5bUL
,
0x2e3a2436UL
,
0x67b10c0aUL
,
0xe70f9357UL
,
0x96d2b4eeUL
,
0x919e1b9bUL
,
0xc54f80c0UL
,
0x20a261dcUL
,
0x4b695a77UL
,
0x1a161c12UL
,
0xba0ae293UL
,
0x2ae5c0a0UL
,
0xe0433c22UL
,
0x171d121bUL
,
0x0d0b0e09UL
,
0xc7adf28bUL
,
0xa8b92db6UL
,
0xa9c8141eUL
,
0x198557f1UL
,
0x074caf75UL
,
0xddbbee99UL
,
0x60fda37fUL
,
0x269ff701UL
,
0xf5bc5c72UL
,
0x3bc54466UL
,
0x7e345bfbUL
,
0x29768b43UL
,
0xc6dccb23UL
,
0xfc68b6edUL
,
0xf163b8e4UL
,
0xdccad731UL
,
0x85104263UL
,
0x22401397UL
,
0x112084c6UL
,
0x247d854aUL
,
0x3df8d2bbUL
,
0x3211aef9UL
,
0xa16dc729UL
,
0x2f4b1d9eUL
,
0x30f3dcb2UL
,
0x52ec0d86UL
,
0xe3d077c1UL
,
0x166c2bb3UL
,
0xb999a970UL
,
0x48fa1194UL
,
0x642247e9UL
,
0x8cc4a8fcUL
,
0x3f1aa0f0UL
,
0x2cd8567dUL
,
0x90ef2233UL
,
0x4ec78749UL
,
0xd1c1d938UL
,
0xa2fe8ccaUL
,
0x0b3698d4UL
,
0x81cfa6f5UL
,
0xde28a57aUL
,
0x8e26dab7UL
,
0xbfa43fadUL
,
0x9de42c3aUL
,
0x920d5078UL
,
0xcc9b6a5fUL
,
0x4662547eUL
,
0x13c2f68dUL
,
0xb8e890d8UL
,
0xf75e2e39UL
,
0xaff582c3UL
,
0x80be9f5dUL
,
0x937c69d0UL
,
0x2da96fd5UL
,
0x12b3cf25UL
,
0x993bc8acUL
,
0x7da71018UL
,
0x636ee89cUL
,
0xbb7bdb3bUL
,
0x7809cd26UL
,
0x18f46e59UL
,
0xb701ec9aUL
,
0x9aa8834fUL
,
0x6e65e695UL
,
0xe67eaaffUL
,
0xcf0821bcUL
,
0xe8e6ef15UL
,
0x9bd9bae7UL
,
0x36ce4a6fUL
,
0x09d4ea9fUL
,
0x7cd629b0UL
,
0xb2af31a4UL
,
0x23312a3fUL
,
0x9430c6a5UL
,
0x66c035a2UL
,
0xbc37744eUL
,
0xcaa6fc82UL
,
0xd0b0e090UL
,
0xd81533a7UL
,
0x984af104UL
,
0xdaf741ecUL
,
0x500e7fcdUL
,
0xf62f1791UL
,
0xd68d764dUL
,
0xb04d43efUL
,
0x4d54ccaaUL
,
0x04dfe496UL
,
0xb5e39ed1UL
,
0x881b4c6aUL
,
0x1fb8c12cUL
,
0x517f4665UL
,
0xea049d5eUL
,
0x355d018cUL
,
0x7473fa87UL
,
0x412efb0bUL
,
0x1d5ab367UL
,
0xd25292dbUL
,
0x5633e910UL
,
0x47136dd6UL
,
0x618c9ad7UL
,
0x0c7a37a1UL
,
0x148e59f8UL
,
0x3c89eb13UL
,
0x27eecea9UL
,
0xc935b761UL
,
0xe5ede11cUL
,
0xb13c7a47UL
,
0xdf599cd2UL
,
0x733f55f2UL
,
0xce791814UL
,
0x37bf73c7UL
,
0xcdea53f7UL
,
0xaa5b5ffdUL
,
0x6f14df3dUL
,
0xdb867844UL
,
0xf381caafUL
,
0xc43eb968UL
,
0x342c3824UL
,
0x405fc2a3UL
,
0xc372161dUL
,
0x250cbce2UL
,
0x498b283cUL
,
0x9541ff0dUL
,
0x017139a8UL
,
0xb3de080cUL
,
0xe49cd8b4UL
,
0xc1906456UL
,
0x84617bcbUL
,
0xb670d532UL
,
0x5c74486cUL
,
0x5742d0b8UL
,
};
static
const
ulong32
TD3
[
256
]
=
{
0xf4a75051UL
,
0x4165537eUL
,
0x17a4c31aUL
,
0x275e963aUL
,
0xab6bcb3bUL
,
0x9d45f11fUL
,
0xfa58abacUL
,
0xe303934bUL
,
0x30fa5520UL
,
0x766df6adUL
,
0xcc769188UL
,
0x024c25f5UL
,
0xe5d7fc4fUL
,
0x2acbd7c5UL
,
0x35448026UL
,
0x62a38fb5UL
,
0xb15a49deUL
,
0xba1b6725UL
,
0xea0e9845UL
,
0xfec0e15dUL
,
0x2f7502c3UL
,
0x4cf01281UL
,
0x4697a38dUL
,
0xd3f9c66bUL
,
0x8f5fe703UL
,
0x929c9515UL
,
0x6d7aebbfUL
,
0x5259da95UL
,
0xbe832dd4UL
,
0x7421d358UL
,
0xe0692949UL
,
0xc9c8448eUL
,
0xc2896a75UL
,
0x8e7978f4UL
,
0x583e6b99UL
,
0xb971dd27UL
,
0xe14fb6beUL
,
0x88ad17f0UL
,
0x20ac66c9UL
,
0xce3ab47dUL
,
0xdf4a1863UL
,
0x1a3182e5UL
,
0x51336097UL
,
0x537f4562UL
,
0x6477e0b1UL
,
0x6bae84bbUL
,
0x81a01cfeUL
,
0x082b94f9UL
,
0x48685870UL
,
0x45fd198fUL
,
0xde6c8794UL
,
0x7bf8b752UL
,
0x73d323abUL
,
0x4b02e272UL
,
0x1f8f57e3UL
,
0x55ab2a66UL
,
0xeb2807b2UL
,
0xb5c2032fUL
,
0xc57b9a86UL
,
0x3708a5d3UL
,
0x2887f230UL
,
0xbfa5b223UL
,
0x036aba02UL
,
0x16825cedUL
,
0xcf1c2b8aUL
,
0x79b492a7UL
,
0x07f2f0f3UL
,
0x69e2a14eUL
,
0xdaf4cd65UL
,
0x05bed506UL
,
0x34621fd1UL
,
0xa6fe8ac4UL
,
0x2e539d34UL
,
0xf355a0a2UL
,
0x8ae13205UL
,
0xf6eb75a4UL
,
0x83ec390bUL
,
0x60efaa40UL
,
0x719f065eUL
,
0x6e1051bdUL
,
0x218af93eUL
,
0xdd063d96UL
,
0x3e05aeddUL
,
0xe6bd464dUL
,
0x548db591UL
,
0xc45d0571UL
,
0x06d46f04UL
,
0x5015ff60UL
,
0x98fb2419UL
,
0xbde997d6UL
,
0x4043cc89UL
,
0xd99e7767UL
,
0xe842bdb0UL
,
0x898b8807UL
,
0x195b38e7UL
,
0xc8eedb79UL
,
0x7c0a47a1UL
,
0x420fe97cUL
,
0x841ec9f8UL
,
0x00000000UL
,
0x80868309UL
,
0x2bed4832UL
,
0x1170ac1eUL
,
0x5a724e6cUL
,
0x0efffbfdUL
,
0x8538560fUL
,
0xaed51e3dUL
,
0x2d392736UL
,
0x0fd9640aUL
,
0x5ca62168UL
,
0x5b54d19bUL
,
0x362e3a24UL
,
0x0a67b10cUL
,
0x57e70f93UL
,
0xee96d2b4UL
,
0x9b919e1bUL
,
0xc0c54f80UL
,
0xdc20a261UL
,
0x774b695aUL
,
0x121a161cUL
,
0x93ba0ae2UL
,
0xa02ae5c0UL
,
0x22e0433cUL
,
0x1b171d12UL
,
0x090d0b0eUL
,
0x8bc7adf2UL
,
0xb6a8b92dUL
,
0x1ea9c814UL
,
0xf1198557UL
,
0x75074cafUL
,
0x99ddbbeeUL
,
0x7f60fda3UL
,
0x01269ff7UL
,
0x72f5bc5cUL
,
0x663bc544UL
,
0xfb7e345bUL
,
0x4329768bUL
,
0x23c6dccbUL
,
0xedfc68b6UL
,
0xe4f163b8UL
,
0x31dccad7UL
,
0x63851042UL
,
0x97224013UL
,
0xc6112084UL
,
0x4a247d85UL
,
0xbb3df8d2UL
,
0xf93211aeUL
,
0x29a16dc7UL
,
0x9e2f4b1dUL
,
0xb230f3dcUL
,
0x8652ec0dUL
,
0xc1e3d077UL
,
0xb3166c2bUL
,
0x70b999a9UL
,
0x9448fa11UL
,
0xe9642247UL
,
0xfc8cc4a8UL
,
0xf03f1aa0UL
,
0x7d2cd856UL
,
0x3390ef22UL
,
0x494ec787UL
,
0x38d1c1d9UL
,
0xcaa2fe8cUL
,
0xd40b3698UL
,
0xf581cfa6UL
,
0x7ade28a5UL
,
0xb78e26daUL
,
0xadbfa43fUL
,
0x3a9de42cUL
,
0x78920d50UL
,
0x5fcc9b6aUL
,
0x7e466254UL
,
0x8d13c2f6UL
,
0xd8b8e890UL
,
0x39f75e2eUL
,
0xc3aff582UL
,
0x5d80be9fUL
,
0xd0937c69UL
,
0xd52da96fUL
,
0x2512b3cfUL
,
0xac993bc8UL
,
0x187da710UL
,
0x9c636ee8UL
,
0x3bbb7bdbUL
,
0x267809cdUL
,
0x5918f46eUL
,
0x9ab701ecUL
,
0x4f9aa883UL
,
0x956e65e6UL
,
0xffe67eaaUL
,
0xbccf0821UL
,
0x15e8e6efUL
,
0xe79bd9baUL
,
0x6f36ce4aUL
,
0x9f09d4eaUL
,
0xb07cd629UL
,
0xa4b2af31UL
,
0x3f23312aUL
,
0xa59430c6UL
,
0xa266c035UL
,
0x4ebc3774UL
,
0x82caa6fcUL
,
0x90d0b0e0UL
,
0xa7d81533UL
,
0x04984af1UL
,
0xecdaf741UL
,
0xcd500e7fUL
,
0x91f62f17UL
,
0x4dd68d76UL
,
0xefb04d43UL
,
0xaa4d54ccUL
,
0x9604dfe4UL
,
0xd1b5e39eUL
,
0x6a881b4cUL
,
0x2c1fb8c1UL
,
0x65517f46UL
,
0x5eea049dUL
,
0x8c355d01UL
,
0x877473faUL
,
0x0b412efbUL
,
0x671d5ab3UL
,
0xdbd25292UL
,
0x105633e9UL
,
0xd647136dUL
,
0xd7618c9aUL
,
0xa10c7a37UL
,
0xf8148e59UL
,
0x133c89ebUL
,
0xa927eeceUL
,
0x61c935b7UL
,
0x1ce5ede1UL
,
0x47b13c7aUL
,
0xd2df599cUL
,
0xf2733f55UL
,
0x14ce7918UL
,
0xc737bf73UL
,
0xf7cdea53UL
,
0xfdaa5b5fUL
,
0x3d6f14dfUL
,
0x44db8678UL
,
0xaff381caUL
,
0x68c43eb9UL
,
0x24342c38UL
,
0xa3405fc2UL
,
0x1dc37216UL
,
0xe2250cbcUL
,
0x3c498b28UL
,
0x0d9541ffUL
,
0xa8017139UL
,
0x0cb3de08UL
,
0xb4e49cd8UL
,
0x56c19064UL
,
0xcb84617bUL
,
0x32b670d5UL
,
0x6c5c7448UL
,
0xb85742d0UL
,
};
static
const
ulong32
Tks0
[]
=
{
0x00000000UL
,
0x0e090d0bUL
,
0x1c121a16UL
,
0x121b171dUL
,
0x3824342cUL
,
0x362d3927UL
,
0x24362e3aUL
,
0x2a3f2331UL
,
0x70486858UL
,
0x7e416553UL
,
0x6c5a724eUL
,
0x62537f45UL
,
0x486c5c74UL
,
0x4665517fUL
,
0x547e4662UL
,
0x5a774b69UL
,
0xe090d0b0UL
,
0xee99ddbbUL
,
0xfc82caa6UL
,
0xf28bc7adUL
,
0xd8b4e49cUL
,
0xd6bde997UL
,
0xc4a6fe8aUL
,
0xcaaff381UL
,
0x90d8b8e8UL
,
0x9ed1b5e3UL
,
0x8ccaa2feUL
,
0x82c3aff5UL
,
0xa8fc8cc4UL
,
0xa6f581cfUL
,
0xb4ee96d2UL
,
0xbae79bd9UL
,
0xdb3bbb7bUL
,
0xd532b670UL
,
0xc729a16dUL
,
0xc920ac66UL
,
0xe31f8f57UL
,
0xed16825cUL
,
0xff0d9541UL
,
0xf104984aUL
,
0xab73d323UL
,
0xa57ade28UL
,
0xb761c935UL
,
0xb968c43eUL
,
0x9357e70fUL
,
0x9d5eea04UL
,
0x8f45fd19UL
,
0x814cf012UL
,
0x3bab6bcbUL
,
0x35a266c0UL
,
0x27b971ddUL
,
0x29b07cd6UL
,
0x038f5fe7UL
,
0x0d8652ecUL
,
0x1f9d45f1UL
,
0x119448faUL
,
0x4be30393UL
,
0x45ea0e98UL
,
0x57f11985UL
,
0x59f8148eUL
,
0x73c737bfUL
,
0x7dce3ab4UL
,
0x6fd52da9UL
,
0x61dc20a2UL
,
0xad766df6UL
,
0xa37f60fdUL
,
0xb16477e0UL
,
0xbf6d7aebUL
,
0x955259daUL
,
0x9b5b54d1UL
,
0x894043ccUL
,
0x87494ec7UL
,
0xdd3e05aeUL
,
0xd33708a5UL
,
0xc12c1fb8UL
,
0xcf2512b3UL
,
0xe51a3182UL
,
0xeb133c89UL
,
0xf9082b94UL
,
0xf701269fUL
,
0x4de6bd46UL
,
0x43efb04dUL
,
0x51f4a750UL
,
0x5ffdaa5bUL
,
0x75c2896aUL
,
0x7bcb8461UL
,
0x69d0937cUL
,
0x67d99e77UL
,
0x3daed51eUL
,
0x33a7d815UL
,
0x21bccf08UL
,
0x2fb5c203UL
,
0x058ae132UL
,
0x0b83ec39UL
,
0x1998fb24UL
,
0x1791f62fUL
,
0x764dd68dUL
,
0x7844db86UL
,
0x6a5fcc9bUL
,
0x6456c190UL
,
0x4e69e2a1UL
,
0x4060efaaUL
,
0x527bf8b7UL
,
0x5c72f5bcUL
,
0x0605bed5UL
,
0x080cb3deUL
,
0x1a17a4c3UL
,
0x141ea9c8UL
,
0x3e218af9UL
,
0x302887f2UL
,
0x223390efUL
,
0x2c3a9de4UL
,
0x96dd063dUL
,
0x98d40b36UL
,
0x8acf1c2bUL
,
0x84c61120UL
,
0xaef93211UL
,
0xa0f03f1aUL
,
0xb2eb2807UL
,
0xbce2250cUL
,
0xe6956e65UL
,
0xe89c636eUL
,
0xfa877473UL
,
0xf48e7978UL
,
0xdeb15a49UL
,
0xd0b85742UL
,
0xc2a3405fUL
,
0xccaa4d54UL
,
0x41ecdaf7UL
,
0x4fe5d7fcUL
,
0x5dfec0e1UL
,
0x53f7cdeaUL
,
0x79c8eedbUL
,
0x77c1e3d0UL
,
0x65daf4cdUL
,
0x6bd3f9c6UL
,
0x31a4b2afUL
,
0x3fadbfa4UL
,
0x2db6a8b9UL
,
0x23bfa5b2UL
,
0x09808683UL
,
0x07898b88UL
,
0x15929c95UL
,
0x1b9b919eUL
,
0xa17c0a47UL
,
0xaf75074cUL
,
0xbd6e1051UL
,
0xb3671d5aUL
,
0x99583e6bUL
,
0x97513360UL
,
0x854a247dUL
,
0x8b432976UL
,
0xd134621fUL
,
0xdf3d6f14UL
,
0xcd267809UL
,
0xc32f7502UL
,
0xe9105633UL
,
0xe7195b38UL
,
0xf5024c25UL
,
0xfb0b412eUL
,
0x9ad7618cUL
,
0x94de6c87UL
,
0x86c57b9aUL
,
0x88cc7691UL
,
0xa2f355a0UL
,
0xacfa58abUL
,
0xbee14fb6UL
,
0xb0e842bdUL
,
0xea9f09d4UL
,
0xe49604dfUL
,
0xf68d13c2UL
,
0xf8841ec9UL
,
0xd2bb3df8UL
,
0xdcb230f3UL
,
0xcea927eeUL
,
0xc0a02ae5UL
,
0x7a47b13cUL
,
0x744ebc37UL
,
0x6655ab2aUL
,
0x685ca621UL
,
0x42638510UL
,
0x4c6a881bUL
,
0x5e719f06UL
,
0x5078920dUL
,
0x0a0fd964UL
,
0x0406d46fUL
,
0x161dc372UL
,
0x1814ce79UL
,
0x322bed48UL
,
0x3c22e043UL
,
0x2e39f75eUL
,
0x2030fa55UL
,
0xec9ab701UL
,
0xe293ba0aUL
,
0xf088ad17UL
,
0xfe81a01cUL
,
0xd4be832dUL
,
0xdab78e26UL
,
0xc8ac993bUL
,
0xc6a59430UL
,
0x9cd2df59UL
,
0x92dbd252UL
,
0x80c0c54fUL
,
0x8ec9c844UL
,
0xa4f6eb75UL
,
0xaaffe67eUL
,
0xb8e4f163UL
,
0xb6edfc68UL
,
0x0c0a67b1UL
,
0x02036abaUL
,
0x10187da7UL
,
0x1e1170acUL
,
0x342e539dUL
,
0x3a275e96UL
,
0x283c498bUL
,
0x26354480UL
,
0x7c420fe9UL
,
0x724b02e2UL
,
0x605015ffUL
,
0x6e5918f4UL
,
0x44663bc5UL
,
0x4a6f36ceUL
,
0x587421d3UL
,
0x567d2cd8UL
,
0x37a10c7aUL
,
0x39a80171UL
,
0x2bb3166cUL
,
0x25ba1b67UL
,
0x0f853856UL
,
0x018c355dUL
,
0x13972240UL
,
0x1d9e2f4bUL
,
0x47e96422UL
,
0x49e06929UL
,
0x5bfb7e34UL
,
0x55f2733fUL
,
0x7fcd500eUL
,
0x71c45d05UL
,
0x63df4a18UL
,
0x6dd64713UL
,
0xd731dccaUL
,
0xd938d1c1UL
,
0xcb23c6dcUL
,
0xc52acbd7UL
,
0xef15e8e6UL
,
0xe11ce5edUL
,
0xf307f2f0UL
,
0xfd0efffbUL
,
0xa779b492UL
,
0xa970b999UL
,
0xbb6bae84UL
,
0xb562a38fUL
,
0x9f5d80beUL
,
0x91548db5UL
,
0x834f9aa8UL
,
0x8d4697a3UL
};
static
const
ulong32
Tks1
[]
=
{
0x00000000UL
,
0x0b0e090dUL
,
0x161c121aUL
,
0x1d121b17UL
,
0x2c382434UL
,
0x27362d39UL
,
0x3a24362eUL
,
0x312a3f23UL
,
0x58704868UL
,
0x537e4165UL
,
0x4e6c5a72UL
,
0x4562537fUL
,
0x74486c5cUL
,
0x7f466551UL
,
0x62547e46UL
,
0x695a774bUL
,
0xb0e090d0UL
,
0xbbee99ddUL
,
0xa6fc82caUL
,
0xadf28bc7UL
,
0x9cd8b4e4UL
,
0x97d6bde9UL
,
0x8ac4a6feUL
,
0x81caaff3UL
,
0xe890d8b8UL
,
0xe39ed1b5UL
,
0xfe8ccaa2UL
,
0xf582c3afUL
,
0xc4a8fc8cUL
,
0xcfa6f581UL
,
0xd2b4ee96UL
,
0xd9bae79bUL
,
0x7bdb3bbbUL
,
0x70d532b6UL
,
0x6dc729a1UL
,
0x66c920acUL
,
0x57e31f8fUL
,
0x5ced1682UL
,
0x41ff0d95UL
,
0x4af10498UL
,
0x23ab73d3UL
,
0x28a57adeUL
,
0x35b761c9UL
,
0x3eb968c4UL
,
0x0f9357e7UL
,
0x049d5eeaUL
,
0x198f45fdUL
,
0x12814cf0UL
,
0xcb3bab6bUL
,
0xc035a266UL
,
0xdd27b971UL
,
0xd629b07cUL
,
0xe7038f5fUL
,
0xec0d8652UL
,
0xf11f9d45UL
,
0xfa119448UL
,
0x934be303UL
,
0x9845ea0eUL
,
0x8557f119UL
,
0x8e59f814UL
,
0xbf73c737UL
,
0xb47dce3aUL
,
0xa96fd52dUL
,
0xa261dc20UL
,
0xf6ad766dUL
,
0xfda37f60UL
,
0xe0b16477UL
,
0xebbf6d7aUL
,
0xda955259UL
,
0xd19b5b54UL
,
0xcc894043UL
,
0xc787494eUL
,
0xaedd3e05UL
,
0xa5d33708UL
,
0xb8c12c1fUL
,
0xb3cf2512UL
,
0x82e51a31UL
,
0x89eb133cUL
,
0x94f9082bUL
,
0x9ff70126UL
,
0x464de6bdUL
,
0x4d43efb0UL
,
0x5051f4a7UL
,
0x5b5ffdaaUL
,
0x6a75c289UL
,
0x617bcb84UL
,
0x7c69d093UL
,
0x7767d99eUL
,
0x1e3daed5UL
,
0x1533a7d8UL
,
0x0821bccfUL
,
0x032fb5c2UL
,
0x32058ae1UL
,
0x390b83ecUL
,
0x241998fbUL
,
0x2f1791f6UL
,
0x8d764dd6UL
,
0x867844dbUL
,
0x9b6a5fccUL
,
0x906456c1UL
,
0xa14e69e2UL
,
0xaa4060efUL
,
0xb7527bf8UL
,
0xbc5c72f5UL
,
0xd50605beUL
,
0xde080cb3UL
,
0xc31a17a4UL
,
0xc8141ea9UL
,
0xf93e218aUL
,
0xf2302887UL
,
0xef223390UL
,
0xe42c3a9dUL
,
0x3d96dd06UL
,
0x3698d40bUL
,
0x2b8acf1cUL
,
0x2084c611UL
,
0x11aef932UL
,
0x1aa0f03fUL
,
0x07b2eb28UL
,
0x0cbce225UL
,
0x65e6956eUL
,
0x6ee89c63UL
,
0x73fa8774UL
,
0x78f48e79UL
,
0x49deb15aUL
,
0x42d0b857UL
,
0x5fc2a340UL
,
0x54ccaa4dUL
,
0xf741ecdaUL
,
0xfc4fe5d7UL
,
0xe15dfec0UL
,
0xea53f7cdUL
,
0xdb79c8eeUL
,
0xd077c1e3UL
,
0xcd65daf4UL
,
0xc66bd3f9UL
,
0xaf31a4b2UL
,
0xa43fadbfUL
,
0xb92db6a8UL
,
0xb223bfa5UL
,
0x83098086UL
,
0x8807898bUL
,
0x9515929cUL
,
0x9e1b9b91UL
,
0x47a17c0aUL
,
0x4caf7507UL
,
0x51bd6e10UL
,
0x5ab3671dUL
,
0x6b99583eUL
,
0x60975133UL
,
0x7d854a24UL
,
0x768b4329UL
,
0x1fd13462UL
,
0x14df3d6fUL
,
0x09cd2678UL
,
0x02c32f75UL
,
0x33e91056UL
,
0x38e7195bUL
,
0x25f5024cUL
,
0x2efb0b41UL
,
0x8c9ad761UL
,
0x8794de6cUL
,
0x9a86c57bUL
,
0x9188cc76UL
,
0xa0a2f355UL
,
0xabacfa58UL
,
0xb6bee14fUL
,
0xbdb0e842UL
,
0xd4ea9f09UL
,
0xdfe49604UL
,
0xc2f68d13UL
,
0xc9f8841eUL
,
0xf8d2bb3dUL
,
0xf3dcb230UL
,
0xeecea927UL
,
0xe5c0a02aUL
,
0x3c7a47b1UL
,
0x37744ebcUL
,
0x2a6655abUL
,
0x21685ca6UL
,
0x10426385UL
,
0x1b4c6a88UL
,
0x065e719fUL
,
0x0d507892UL
,
0x640a0fd9UL
,
0x6f0406d4UL
,
0x72161dc3UL
,
0x791814ceUL
,
0x48322bedUL
,
0x433c22e0UL
,
0x5e2e39f7UL
,
0x552030faUL
,
0x01ec9ab7UL
,
0x0ae293baUL
,
0x17f088adUL
,
0x1cfe81a0UL
,
0x2dd4be83UL
,
0x26dab78eUL
,
0x3bc8ac99UL
,
0x30c6a594UL
,
0x599cd2dfUL
,
0x5292dbd2UL
,
0x4f80c0c5UL
,
0x448ec9c8UL
,
0x75a4f6ebUL
,
0x7eaaffe6UL
,
0x63b8e4f1UL
,
0x68b6edfcUL
,
0xb10c0a67UL
,
0xba02036aUL
,
0xa710187dUL
,
0xac1e1170UL
,
0x9d342e53UL
,
0x963a275eUL
,
0x8b283c49UL
,
0x80263544UL
,
0xe97c420fUL
,
0xe2724b02UL
,
0xff605015UL
,
0xf46e5918UL
,
0xc544663bUL
,
0xce4a6f36UL
,
0xd3587421UL
,
0xd8567d2cUL
,
0x7a37a10cUL
,
0x7139a801UL
,
0x6c2bb316UL
,
0x6725ba1bUL
,
0x560f8538UL
,
0x5d018c35UL
,
0x40139722UL
,
0x4b1d9e2fUL
,
0x2247e964UL
,
0x2949e069UL
,
0x345bfb7eUL
,
0x3f55f273UL
,
0x0e7fcd50UL
,
0x0571c45dUL
,
0x1863df4aUL
,
0x136dd647UL
,
0xcad731dcUL
,
0xc1d938d1UL
,
0xdccb23c6UL
,
0xd7c52acbUL
,
0xe6ef15e8UL
,
0xede11ce5UL
,
0xf0f307f2UL
,
0xfbfd0effUL
,
0x92a779b4UL
,
0x99a970b9UL
,
0x84bb6baeUL
,
0x8fb562a3UL
,
0xbe9f5d80UL
,
0xb591548dUL
,
0xa8834f9aUL
,
0xa38d4697UL
};
static
const
ulong32
Tks2
[]
=
{
0x00000000UL
,
0x0d0b0e09UL
,
0x1a161c12UL
,
0x171d121bUL
,
0x342c3824UL
,
0x3927362dUL
,
0x2e3a2436UL
,
0x23312a3fUL
,
0x68587048UL
,
0x65537e41UL
,
0x724e6c5aUL
,
0x7f456253UL
,
0x5c74486cUL
,
0x517f4665UL
,
0x4662547eUL
,
0x4b695a77UL
,
0xd0b0e090UL
,
0xddbbee99UL
,
0xcaa6fc82UL
,
0xc7adf28bUL
,
0xe49cd8b4UL
,
0xe997d6bdUL
,
0xfe8ac4a6UL
,
0xf381caafUL
,
0xb8e890d8UL
,
0xb5e39ed1UL
,
0xa2fe8ccaUL
,
0xaff582c3UL
,
0x8cc4a8fcUL
,
0x81cfa6f5UL
,
0x96d2b4eeUL
,
0x9bd9bae7UL
,
0xbb7bdb3bUL
,
0xb670d532UL
,
0xa16dc729UL
,
0xac66c920UL
,
0x8f57e31fUL
,
0x825ced16UL
,
0x9541ff0dUL
,
0x984af104UL
,
0xd323ab73UL
,
0xde28a57aUL
,
0xc935b761UL
,
0xc43eb968UL
,
0xe70f9357UL
,
0xea049d5eUL
,
0xfd198f45UL
,
0xf012814cUL
,
0x6bcb3babUL
,
0x66c035a2UL
,
0x71dd27b9UL
,
0x7cd629b0UL
,
0x5fe7038fUL
,
0x52ec0d86UL
,
0x45f11f9dUL
,
0x48fa1194UL
,
0x03934be3UL
,
0x0e9845eaUL
,
0x198557f1UL
,
0x148e59f8UL
,
0x37bf73c7UL
,
0x3ab47dceUL
,
0x2da96fd5UL
,
0x20a261dcUL
,
0x6df6ad76UL
,
0x60fda37fUL
,
0x77e0b164UL
,
0x7aebbf6dUL
,
0x59da9552UL
,
0x54d19b5bUL
,
0x43cc8940UL
,
0x4ec78749UL
,
0x05aedd3eUL
,
0x08a5d337UL
,
0x1fb8c12cUL
,
0x12b3cf25UL
,
0x3182e51aUL
,
0x3c89eb13UL
,
0x2b94f908UL
,
0x269ff701UL
,
0xbd464de6UL
,
0xb04d43efUL
,
0xa75051f4UL
,
0xaa5b5ffdUL
,
0x896a75c2UL
,
0x84617bcbUL
,
0x937c69d0UL
,
0x9e7767d9UL
,
0xd51e3daeUL
,
0xd81533a7UL
,
0xcf0821bcUL
,
0xc2032fb5UL
,
0xe132058aUL
,
0xec390b83UL
,
0xfb241998UL
,
0xf62f1791UL
,
0xd68d764dUL
,
0xdb867844UL
,
0xcc9b6a5fUL
,
0xc1906456UL
,
0xe2a14e69UL
,
0xefaa4060UL
,
0xf8b7527bUL
,
0xf5bc5c72UL
,
0xbed50605UL
,
0xb3de080cUL
,
0xa4c31a17UL
,
0xa9c8141eUL
,
0x8af93e21UL
,
0x87f23028UL
,
0x90ef2233UL
,
0x9de42c3aUL
,
0x063d96ddUL
,
0x0b3698d4UL
,
0x1c2b8acfUL
,
0x112084c6UL
,
0x3211aef9UL
,
0x3f1aa0f0UL
,
0x2807b2ebUL
,
0x250cbce2UL
,
0x6e65e695UL
,
0x636ee89cUL
,
0x7473fa87UL
,
0x7978f48eUL
,
0x5a49deb1UL
,
0x5742d0b8UL
,
0x405fc2a3UL
,
0x4d54ccaaUL
,
0xdaf741ecUL
,
0xd7fc4fe5UL
,
0xc0e15dfeUL
,
0xcdea53f7UL
,
0xeedb79c8UL
,
0xe3d077c1UL
,
0xf4cd65daUL
,
0xf9c66bd3UL
,
0xb2af31a4UL
,
0xbfa43fadUL
,
0xa8b92db6UL
,
0xa5b223bfUL
,
0x86830980UL
,
0x8b880789UL
,
0x9c951592UL
,
0x919e1b9bUL
,
0x0a47a17cUL
,
0x074caf75UL
,
0x1051bd6eUL
,
0x1d5ab367UL
,
0x3e6b9958UL
,
0x33609751UL
,
0x247d854aUL
,
0x29768b43UL
,
0x621fd134UL
,
0x6f14df3dUL
,
0x7809cd26UL
,
0x7502c32fUL
,
0x5633e910UL
,
0x5b38e719UL
,
0x4c25f502UL
,
0x412efb0bUL
,
0x618c9ad7UL
,
0x6c8794deUL
,
0x7b9a86c5UL
,
0x769188ccUL
,
0x55a0a2f3UL
,
0x58abacfaUL
,
0x4fb6bee1UL
,
0x42bdb0e8UL
,
0x09d4ea9fUL
,
0x04dfe496UL
,
0x13c2f68dUL
,
0x1ec9f884UL
,
0x3df8d2bbUL
,
0x30f3dcb2UL
,
0x27eecea9UL
,
0x2ae5c0a0UL
,
0xb13c7a47UL
,
0xbc37744eUL
,
0xab2a6655UL
,
0xa621685cUL
,
0x85104263UL
,
0x881b4c6aUL
,
0x9f065e71UL
,
0x920d5078UL
,
0xd9640a0fUL
,
0xd46f0406UL
,
0xc372161dUL
,
0xce791814UL
,
0xed48322bUL
,
0xe0433c22UL
,
0xf75e2e39UL
,
0xfa552030UL
,
0xb701ec9aUL
,
0xba0ae293UL
,
0xad17f088UL
,
0xa01cfe81UL
,
0x832dd4beUL
,
0x8e26dab7UL
,
0x993bc8acUL
,
0x9430c6a5UL
,
0xdf599cd2UL
,
0xd25292dbUL
,
0xc54f80c0UL
,
0xc8448ec9UL
,
0xeb75a4f6UL
,
0xe67eaaffUL
,
0xf163b8e4UL
,
0xfc68b6edUL
,
0x67b10c0aUL
,
0x6aba0203UL
,
0x7da71018UL
,
0x70ac1e11UL
,
0x539d342eUL
,
0x5e963a27UL
,
0x498b283cUL
,
0x44802635UL
,
0x0fe97c42UL
,
0x02e2724bUL
,
0x15ff6050UL
,
0x18f46e59UL
,
0x3bc54466UL
,
0x36ce4a6fUL
,
0x21d35874UL
,
0x2cd8567dUL
,
0x0c7a37a1UL
,
0x017139a8UL
,
0x166c2bb3UL
,
0x1b6725baUL
,
0x38560f85UL
,
0x355d018cUL
,
0x22401397UL
,
0x2f4b1d9eUL
,
0x642247e9UL
,
0x692949e0UL
,
0x7e345bfbUL
,
0x733f55f2UL
,
0x500e7fcdUL
,
0x5d0571c4UL
,
0x4a1863dfUL
,
0x47136dd6UL
,
0xdccad731UL
,
0xd1c1d938UL
,
0xc6dccb23UL
,
0xcbd7c52aUL
,
0xe8e6ef15UL
,
0xe5ede11cUL
,
0xf2f0f307UL
,
0xfffbfd0eUL
,
0xb492a779UL
,
0xb999a970UL
,
0xae84bb6bUL
,
0xa38fb562UL
,
0x80be9f5dUL
,
0x8db59154UL
,
0x9aa8834fUL
,
0x97a38d46UL
};
static
const
ulong32
Tks3
[]
=
{
0x00000000UL
,
0x090d0b0eUL
,
0x121a161cUL
,
0x1b171d12UL
,
0x24342c38UL
,
0x2d392736UL
,
0x362e3a24UL
,
0x3f23312aUL
,
0x48685870UL
,
0x4165537eUL
,
0x5a724e6cUL
,
0x537f4562UL
,
0x6c5c7448UL
,
0x65517f46UL
,
0x7e466254UL
,
0x774b695aUL
,
0x90d0b0e0UL
,
0x99ddbbeeUL
,
0x82caa6fcUL
,
0x8bc7adf2UL
,
0xb4e49cd8UL
,
0xbde997d6UL
,
0xa6fe8ac4UL
,
0xaff381caUL
,
0xd8b8e890UL
,
0xd1b5e39eUL
,
0xcaa2fe8cUL
,
0xc3aff582UL
,
0xfc8cc4a8UL
,
0xf581cfa6UL
,
0xee96d2b4UL
,
0xe79bd9baUL
,
0x3bbb7bdbUL
,
0x32b670d5UL
,
0x29a16dc7UL
,
0x20ac66c9UL
,
0x1f8f57e3UL
,
0x16825cedUL
,
0x0d9541ffUL
,
0x04984af1UL
,
0x73d323abUL
,
0x7ade28a5UL
,
0x61c935b7UL
,
0x68c43eb9UL
,
0x57e70f93UL
,
0x5eea049dUL
,
0x45fd198fUL
,
0x4cf01281UL
,
0xab6bcb3bUL
,
0xa266c035UL
,
0xb971dd27UL
,
0xb07cd629UL
,
0x8f5fe703UL
,
0x8652ec0dUL
,
0x9d45f11fUL
,
0x9448fa11UL
,
0xe303934bUL
,
0xea0e9845UL
,
0xf1198557UL
,
0xf8148e59UL
,
0xc737bf73UL
,
0xce3ab47dUL
,
0xd52da96fUL
,
0xdc20a261UL
,
0x766df6adUL
,
0x7f60fda3UL
,
0x6477e0b1UL
,
0x6d7aebbfUL
,
0x5259da95UL
,
0x5b54d19bUL
,
0x4043cc89UL
,
0x494ec787UL
,
0x3e05aeddUL
,
0x3708a5d3UL
,
0x2c1fb8c1UL
,
0x2512b3cfUL
,
0x1a3182e5UL
,
0x133c89ebUL
,
0x082b94f9UL
,
0x01269ff7UL
,
0xe6bd464dUL
,
0xefb04d43UL
,
0xf4a75051UL
,
0xfdaa5b5fUL
,
0xc2896a75UL
,
0xcb84617bUL
,
0xd0937c69UL
,
0xd99e7767UL
,
0xaed51e3dUL
,
0xa7d81533UL
,
0xbccf0821UL
,
0xb5c2032fUL
,
0x8ae13205UL
,
0x83ec390bUL
,
0x98fb2419UL
,
0x91f62f17UL
,
0x4dd68d76UL
,
0x44db8678UL
,
0x5fcc9b6aUL
,
0x56c19064UL
,
0x69e2a14eUL
,
0x60efaa40UL
,
0x7bf8b752UL
,
0x72f5bc5cUL
,
0x05bed506UL
,
0x0cb3de08UL
,
0x17a4c31aUL
,
0x1ea9c814UL
,
0x218af93eUL
,
0x2887f230UL
,
0x3390ef22UL
,
0x3a9de42cUL
,
0xdd063d96UL
,
0xd40b3698UL
,
0xcf1c2b8aUL
,
0xc6112084UL
,
0xf93211aeUL
,
0xf03f1aa0UL
,
0xeb2807b2UL
,
0xe2250cbcUL
,
0x956e65e6UL
,
0x9c636ee8UL
,
0x877473faUL
,
0x8e7978f4UL
,
0xb15a49deUL
,
0xb85742d0UL
,
0xa3405fc2UL
,
0xaa4d54ccUL
,
0xecdaf741UL
,
0xe5d7fc4fUL
,
0xfec0e15dUL
,
0xf7cdea53UL
,
0xc8eedb79UL
,
0xc1e3d077UL
,
0xdaf4cd65UL
,
0xd3f9c66bUL
,
0xa4b2af31UL
,
0xadbfa43fUL
,
0xb6a8b92dUL
,
0xbfa5b223UL
,
0x80868309UL
,
0x898b8807UL
,
0x929c9515UL
,
0x9b919e1bUL
,
0x7c0a47a1UL
,
0x75074cafUL
,
0x6e1051bdUL
,
0x671d5ab3UL
,
0x583e6b99UL
,
0x51336097UL
,
0x4a247d85UL
,
0x4329768bUL
,
0x34621fd1UL
,
0x3d6f14dfUL
,
0x267809cdUL
,
0x2f7502c3UL
,
0x105633e9UL
,
0x195b38e7UL
,
0x024c25f5UL
,
0x0b412efbUL
,
0xd7618c9aUL
,
0xde6c8794UL
,
0xc57b9a86UL
,
0xcc769188UL
,
0xf355a0a2UL
,
0xfa58abacUL
,
0xe14fb6beUL
,
0xe842bdb0UL
,
0x9f09d4eaUL
,
0x9604dfe4UL
,
0x8d13c2f6UL
,
0x841ec9f8UL
,
0xbb3df8d2UL
,
0xb230f3dcUL
,
0xa927eeceUL
,
0xa02ae5c0UL
,
0x47b13c7aUL
,
0x4ebc3774UL
,
0x55ab2a66UL
,
0x5ca62168UL
,
0x63851042UL
,
0x6a881b4cUL
,
0x719f065eUL
,
0x78920d50UL
,
0x0fd9640aUL
,
0x06d46f04UL
,
0x1dc37216UL
,
0x14ce7918UL
,
0x2bed4832UL
,
0x22e0433cUL
,
0x39f75e2eUL
,
0x30fa5520UL
,
0x9ab701ecUL
,
0x93ba0ae2UL
,
0x88ad17f0UL
,
0x81a01cfeUL
,
0xbe832dd4UL
,
0xb78e26daUL
,
0xac993bc8UL
,
0xa59430c6UL
,
0xd2df599cUL
,
0xdbd25292UL
,
0xc0c54f80UL
,
0xc9c8448eUL
,
0xf6eb75a4UL
,
0xffe67eaaUL
,
0xe4f163b8UL
,
0xedfc68b6UL
,
0x0a67b10cUL
,
0x036aba02UL
,
0x187da710UL
,
0x1170ac1eUL
,
0x2e539d34UL
,
0x275e963aUL
,
0x3c498b28UL
,
0x35448026UL
,
0x420fe97cUL
,
0x4b02e272UL
,
0x5015ff60UL
,
0x5918f46eUL
,
0x663bc544UL
,
0x6f36ce4aUL
,
0x7421d358UL
,
0x7d2cd856UL
,
0xa10c7a37UL
,
0xa8017139UL
,
0xb3166c2bUL
,
0xba1b6725UL
,
0x8538560fUL
,
0x8c355d01UL
,
0x97224013UL
,
0x9e2f4b1dUL
,
0xe9642247UL
,
0xe0692949UL
,
0xfb7e345bUL
,
0xf2733f55UL
,
0xcd500e7fUL
,
0xc45d0571UL
,
0xdf4a1863UL
,
0xd647136dUL
,
0x31dccad7UL
,
0x38d1c1d9UL
,
0x23c6dccbUL
,
0x2acbd7c5UL
,
0x15e8e6efUL
,
0x1ce5ede1UL
,
0x07f2f0f3UL
,
0x0efffbfdUL
,
0x79b492a7UL
,
0x70b999a9UL
,
0x6bae84bbUL
,
0x62a38fb5UL
,
0x5d80be9fUL
,
0x548db591UL
,
0x4f9aa883UL
,
0x4697a38dUL
};
static
const
ulong32
rcon
[]
=
{
0x01000000UL
,
0x02000000UL
,
0x04000000UL
,
0x08000000UL
,
0x10000000UL
,
0x20000000UL
,
0x40000000UL
,
0x80000000UL
,
0x1B000000UL
,
0x36000000UL
};
static
ulong32
setup_mix
(
ulong32
temp
)
{
return
(
Te4_3
[
byte
(
temp
,
2
)])
^
(
Te4_2
[
byte
(
temp
,
1
)])
^
(
Te4_1
[
byte
(
temp
,
0
)])
^
(
Te4_0
[
byte
(
temp
,
3
)]);
}
int
aes_setup
(
const
unsigned
char
*
key
,
int
keylen
,
int
rounds
,
aes_key
*
skey
)
{
int
i
,
j
;
ulong32
temp
,
*
rk
;
ulong32
*
rrk
;
if
(
keylen
!=
16
&&
keylen
!=
24
&&
keylen
!=
32
)
{
return
CRYPT_INVALID_KEYSIZE
;
}
if
(
rounds
!=
0
&&
rounds
!=
(
10
+
((
keylen
/
8
)
-
2
)
*
2
))
{
return
CRYPT_INVALID_ROUNDS
;
}
skey
->
Nr
=
10
+
((
keylen
/
8
)
-
2
)
*
2
;
/* setup the forward key */
i
=
0
;
rk
=
skey
->
eK
;
LOAD32H
(
rk
[
0
],
key
);
LOAD32H
(
rk
[
1
],
key
+
4
);
LOAD32H
(
rk
[
2
],
key
+
8
);
LOAD32H
(
rk
[
3
],
key
+
12
);
if
(
keylen
==
16
)
{
j
=
44
;
for
(;;)
{
temp
=
rk
[
3
];
rk
[
4
]
=
rk
[
0
]
^
setup_mix
(
temp
)
^
rcon
[
i
];
rk
[
5
]
=
rk
[
1
]
^
rk
[
4
];
rk
[
6
]
=
rk
[
2
]
^
rk
[
5
];
rk
[
7
]
=
rk
[
3
]
^
rk
[
6
];
if
(
++
i
==
10
)
{
break
;
}
rk
+=
4
;
}
}
else
if
(
keylen
==
24
)
{
j
=
52
;
LOAD32H
(
rk
[
4
],
key
+
16
);
LOAD32H
(
rk
[
5
],
key
+
20
);
for
(;;)
{
temp
=
rk
[
5
];
rk
[
6
]
=
rk
[
0
]
^
setup_mix
(
temp
)
^
rcon
[
i
];
rk
[
7
]
=
rk
[
1
]
^
rk
[
6
];
rk
[
8
]
=
rk
[
2
]
^
rk
[
7
];
rk
[
9
]
=
rk
[
3
]
^
rk
[
8
];
if
(
++
i
==
8
)
{
break
;
}
rk
[
10
]
=
rk
[
4
]
^
rk
[
9
];
rk
[
11
]
=
rk
[
5
]
^
rk
[
10
];
rk
+=
6
;
}
}
else
if
(
keylen
==
32
)
{
j
=
60
;
LOAD32H
(
rk
[
4
],
key
+
16
);
LOAD32H
(
rk
[
5
],
key
+
20
);
LOAD32H
(
rk
[
6
],
key
+
24
);
LOAD32H
(
rk
[
7
],
key
+
28
);
for
(;;)
{
temp
=
rk
[
7
];
rk
[
8
]
=
rk
[
0
]
^
setup_mix
(
temp
)
^
rcon
[
i
];
rk
[
9
]
=
rk
[
1
]
^
rk
[
8
];
rk
[
10
]
=
rk
[
2
]
^
rk
[
9
];
rk
[
11
]
=
rk
[
3
]
^
rk
[
10
];
if
(
++
i
==
7
)
{
break
;
}
temp
=
rk
[
11
];
rk
[
12
]
=
rk
[
4
]
^
setup_mix
(
ROR
(
temp
,
8
));
rk
[
13
]
=
rk
[
5
]
^
rk
[
12
];
rk
[
14
]
=
rk
[
6
]
^
rk
[
13
];
rk
[
15
]
=
rk
[
7
]
^
rk
[
14
];
rk
+=
8
;
}
}
else
{
j
=
4
;
}
rk
=
skey
->
dK
;
rrk
=
skey
->
eK
+
j
-
4
;
*
rk
++
=
*
rrk
++
;
*
rk
++
=
*
rrk
++
;
*
rk
++
=
*
rrk
++
;
*
rk
=
*
rrk
;
rk
-=
3
;
rrk
-=
3
;
for
(
i
=
1
;
i
<
skey
->
Nr
;
i
++
)
{
rrk
-=
4
;
rk
+=
4
;
temp
=
rrk
[
0
];
rk
[
0
]
=
Tks0
[
byte
(
temp
,
3
)]
^
Tks1
[
byte
(
temp
,
2
)]
^
Tks2
[
byte
(
temp
,
1
)]
^
Tks3
[
byte
(
temp
,
0
)];
temp
=
rrk
[
1
];
rk
[
1
]
=
Tks0
[
byte
(
temp
,
3
)]
^
Tks1
[
byte
(
temp
,
2
)]
^
Tks2
[
byte
(
temp
,
1
)]
^
Tks3
[
byte
(
temp
,
0
)];
temp
=
rrk
[
2
];
rk
[
2
]
=
Tks0
[
byte
(
temp
,
3
)]
^
Tks1
[
byte
(
temp
,
2
)]
^
Tks2
[
byte
(
temp
,
1
)]
^
Tks3
[
byte
(
temp
,
0
)];
temp
=
rrk
[
3
];
rk
[
3
]
=
Tks0
[
byte
(
temp
,
3
)]
^
Tks1
[
byte
(
temp
,
2
)]
^
Tks2
[
byte
(
temp
,
1
)]
^
Tks3
[
byte
(
temp
,
0
)];
}
rrk
-=
4
;
rk
+=
4
;
*
rk
++
=
*
rrk
++
;
*
rk
++
=
*
rrk
++
;
*
rk
++
=
*
rrk
++
;
*
rk
=
*
rrk
;
return
CRYPT_OK
;
}
void
aes_ecb_encrypt
(
const
unsigned
char
*
pt
,
unsigned
char
*
ct
,
aes_key
*
skey
)
{
ulong32
s0
,
s1
,
s2
,
s3
,
t0
,
t1
,
t2
,
t3
,
*
rk
;
int
Nr
,
r
;
Nr
=
skey
->
Nr
;
rk
=
skey
->
eK
;
LOAD32H
(
s0
,
pt
);
s0
^=
rk
[
0
];
LOAD32H
(
s1
,
pt
+
4
);
s1
^=
rk
[
1
];
LOAD32H
(
s2
,
pt
+
8
);
s2
^=
rk
[
2
];
LOAD32H
(
s3
,
pt
+
12
);
s3
^=
rk
[
3
];
r
=
Nr
>>
1
;
for
(;;)
{
t0
=
Te0
(
byte
(
s0
,
3
))
^
Te1
(
byte
(
s1
,
2
))
^
Te2
(
byte
(
s2
,
1
))
^
Te3
(
byte
(
s3
,
0
))
^
rk
[
4
];
t1
=
Te0
(
byte
(
s1
,
3
))
^
Te1
(
byte
(
s2
,
2
))
^
Te2
(
byte
(
s3
,
1
))
^
Te3
(
byte
(
s0
,
0
))
^
rk
[
5
];
t2
=
Te0
(
byte
(
s2
,
3
))
^
Te1
(
byte
(
s3
,
2
))
^
Te2
(
byte
(
s0
,
1
))
^
Te3
(
byte
(
s1
,
0
))
^
rk
[
6
];
t3
=
Te0
(
byte
(
s3
,
3
))
^
Te1
(
byte
(
s0
,
2
))
^
Te2
(
byte
(
s1
,
1
))
^
Te3
(
byte
(
s2
,
0
))
^
rk
[
7
];
rk
+=
8
;
if
(
--
r
==
0
)
{
break
;
}
s0
=
Te0
(
byte
(
t0
,
3
))
^
Te1
(
byte
(
t1
,
2
))
^
Te2
(
byte
(
t2
,
1
))
^
Te3
(
byte
(
t3
,
0
))
^
rk
[
0
];
s1
=
Te0
(
byte
(
t1
,
3
))
^
Te1
(
byte
(
t2
,
2
))
^
Te2
(
byte
(
t3
,
1
))
^
Te3
(
byte
(
t0
,
0
))
^
rk
[
1
];
s2
=
Te0
(
byte
(
t2
,
3
))
^
Te1
(
byte
(
t3
,
2
))
^
Te2
(
byte
(
t0
,
1
))
^
Te3
(
byte
(
t1
,
0
))
^
rk
[
2
];
s3
=
Te0
(
byte
(
t3
,
3
))
^
Te1
(
byte
(
t0
,
2
))
^
Te2
(
byte
(
t1
,
1
))
^
Te3
(
byte
(
t2
,
0
))
^
rk
[
3
];
}
s0
=
(
Te4_3
[
byte
(
t0
,
3
)])
^
(
Te4_2
[
byte
(
t1
,
2
)])
^
(
Te4_1
[
byte
(
t2
,
1
)])
^
(
Te4_0
[
byte
(
t3
,
0
)])
^
rk
[
0
];
STORE32H
(
s0
,
ct
);
s1
=
(
Te4_3
[
byte
(
t1
,
3
)])
^
(
Te4_2
[
byte
(
t2
,
2
)])
^
(
Te4_1
[
byte
(
t3
,
1
)])
^
(
Te4_0
[
byte
(
t0
,
0
)])
^
rk
[
1
];
STORE32H
(
s1
,
ct
+
4
);
s2
=
(
Te4_3
[
byte
(
t2
,
3
)])
^
(
Te4_2
[
byte
(
t3
,
2
)])
^
(
Te4_1
[
byte
(
t0
,
1
)])
^
(
Te4_0
[
byte
(
t1
,
0
)])
^
rk
[
2
];
STORE32H
(
s2
,
ct
+
8
);
s3
=
(
Te4_3
[
byte
(
t3
,
3
)])
^
(
Te4_2
[
byte
(
t0
,
2
)])
^
(
Te4_1
[
byte
(
t1
,
1
)])
^
(
Te4_0
[
byte
(
t2
,
0
)])
^
rk
[
3
];
STORE32H
(
s3
,
ct
+
12
);
}
void
aes_ecb_decrypt
(
const
unsigned
char
*
ct
,
unsigned
char
*
pt
,
aes_key
*
skey
)
{
ulong32
s0
,
s1
,
s2
,
s3
,
t0
,
t1
,
t2
,
t3
,
*
rk
;
int
Nr
,
r
;
Nr
=
skey
->
Nr
;
rk
=
skey
->
dK
;
LOAD32H
(
s0
,
ct
);
s0
^=
rk
[
0
];
LOAD32H
(
s1
,
ct
+
4
);
s1
^=
rk
[
1
];
LOAD32H
(
s2
,
ct
+
8
);
s2
^=
rk
[
2
];
LOAD32H
(
s3
,
ct
+
12
);
s3
^=
rk
[
3
];
r
=
Nr
>>
1
;
for
(;;)
{
t0
=
Td0
(
byte
(
s0
,
3
))
^
Td1
(
byte
(
s3
,
2
))
^
Td2
(
byte
(
s2
,
1
))
^
Td3
(
byte
(
s1
,
0
))
^
rk
[
4
];
t1
=
Td0
(
byte
(
s1
,
3
))
^
Td1
(
byte
(
s0
,
2
))
^
Td2
(
byte
(
s3
,
1
))
^
Td3
(
byte
(
s2
,
0
))
^
rk
[
5
];
t2
=
Td0
(
byte
(
s2
,
3
))
^
Td1
(
byte
(
s1
,
2
))
^
Td2
(
byte
(
s0
,
1
))
^
Td3
(
byte
(
s3
,
0
))
^
rk
[
6
];
t3
=
Td0
(
byte
(
s3
,
3
))
^
Td1
(
byte
(
s2
,
2
))
^
Td2
(
byte
(
s1
,
1
))
^
Td3
(
byte
(
s0
,
0
))
^
rk
[
7
];
rk
+=
8
;
if
(
--
r
==
0
)
{
break
;
}
s0
=
Td0
(
byte
(
t0
,
3
))
^
Td1
(
byte
(
t3
,
2
))
^
Td2
(
byte
(
t2
,
1
))
^
Td3
(
byte
(
t1
,
0
))
^
rk
[
0
];
s1
=
Td0
(
byte
(
t1
,
3
))
^
Td1
(
byte
(
t0
,
2
))
^
Td2
(
byte
(
t3
,
1
))
^
Td3
(
byte
(
t2
,
0
))
^
rk
[
1
];
s2
=
Td0
(
byte
(
t2
,
3
))
^
Td1
(
byte
(
t1
,
2
))
^
Td2
(
byte
(
t0
,
1
))
^
Td3
(
byte
(
t3
,
0
))
^
rk
[
2
];
s3
=
Td0
(
byte
(
t3
,
3
))
^
Td1
(
byte
(
t2
,
2
))
^
Td2
(
byte
(
t1
,
1
))
^
Td3
(
byte
(
t0
,
0
))
^
rk
[
3
];
}
s0
=
(
Td4
[
byte
(
t0
,
3
)]
&
0xff000000
)
^
(
Td4
[
byte
(
t3
,
2
)]
&
0x00ff0000
)
^
(
Td4
[
byte
(
t2
,
1
)]
&
0x0000ff00
)
^
(
Td4
[
byte
(
t1
,
0
)]
&
0x000000ff
)
^
rk
[
0
];
STORE32H
(
s0
,
pt
);
s1
=
(
Td4
[
byte
(
t1
,
3
)]
&
0xff000000
)
^
(
Td4
[
byte
(
t0
,
2
)]
&
0x00ff0000
)
^
(
Td4
[
byte
(
t3
,
1
)]
&
0x0000ff00
)
^
(
Td4
[
byte
(
t2
,
0
)]
&
0x000000ff
)
^
rk
[
1
];
STORE32H
(
s1
,
pt
+
4
);
s2
=
(
Td4
[
byte
(
t2
,
3
)]
&
0xff000000
)
^
(
Td4
[
byte
(
t1
,
2
)]
&
0x00ff0000
)
^
(
Td4
[
byte
(
t0
,
1
)]
&
0x0000ff00
)
^
(
Td4
[
byte
(
t3
,
0
)]
&
0x000000ff
)
^
rk
[
2
];
STORE32H
(
s2
,
pt
+
8
);
s3
=
(
Td4
[
byte
(
t3
,
3
)]
&
0xff000000
)
^
(
Td4
[
byte
(
t2
,
2
)]
&
0x00ff0000
)
^
(
Td4
[
byte
(
t1
,
1
)]
&
0x0000ff00
)
^
(
Td4
[
byte
(
t0
,
0
)]
&
0x000000ff
)
^
rk
[
3
];
STORE32H
(
s3
,
pt
+
12
);
}
dlls/rsaenh/implglue.c
View file @
1dbaa8c6
...
...
@@ -3,6 +3,7 @@
* Glueing the RSAENH specific code to the crypto library
*
* Copyright (c) 2004, 2005 Michael Jung
* Copyright (c) 2007 Vijay Kiran Kamuju
*
* based on code by Mike McCormack and David Hammerton
*
...
...
@@ -194,6 +195,19 @@ BOOL setup_key_impl(ALG_ID aiAlgid, KEY_CONTEXT *pKeyContext, DWORD dwKeyLen,
case
CALG_DES
:
des_setup
(
abKeyValue
,
8
,
0
,
&
pKeyContext
->
des
);
break
;
case
CALG_AES
:
case
CALG_AES_128
:
aes_setup
(
abKeyValue
,
16
,
0
,
&
pKeyContext
->
aes
);
break
;
case
CALG_AES_192
:
aes_setup
(
abKeyValue
,
24
,
0
,
&
pKeyContext
->
aes
);
break
;
case
CALG_AES_256
:
aes_setup
(
abKeyValue
,
32
,
0
,
&
pKeyContext
->
aes
);
break
;
}
return
TRUE
;
...
...
@@ -209,6 +223,10 @@ BOOL duplicate_key_impl(ALG_ID aiAlgid, CONST KEY_CONTEXT *pSrcKeyContext,
case
CALG_3DES
:
case
CALG_3DES_112
:
case
CALG_DES
:
case
CALG_AES
:
case
CALG_AES_128
:
case
CALG_AES_192
:
case
CALG_AES_256
:
memcpy
(
pDestKeyContext
,
pSrcKeyContext
,
sizeof
(
KEY_CONTEXT
));
break
;
case
CALG_RSA_KEYX
:
...
...
@@ -275,6 +293,17 @@ BOOL encrypt_block_impl(ALG_ID aiAlgid, DWORD dwKeySpec, KEY_CONTEXT *pKeyContex
}
break
;
case
CALG_AES
:
case
CALG_AES_128
:
case
CALG_AES_192
:
case
CALG_AES_256
:
if
(
enc
)
{
aes_ecb_encrypt
(
in
,
out
,
&
pKeyContext
->
aes
);
}
else
{
aes_ecb_decrypt
(
in
,
out
,
&
pKeyContext
->
aes
);
}
break
;
case
CALG_RSA_KEYX
:
case
CALG_RSA_SIGN
:
outlen
=
inlen
=
(
mp_count_bits
(
&
pKeyContext
->
rsa
.
N
)
+
7
)
/
8
;
...
...
dlls/rsaenh/implglue.h
View file @
1dbaa8c6
...
...
@@ -63,6 +63,7 @@ typedef union tagKEY_CONTEXT {
rc2_key
rc2
;
des_key
des
;
des3_key
des3
;
aes_key
aes
;
prng_state
rc4
;
rsa_key
rsa
;
}
KEY_CONTEXT
;
...
...
dlls/rsaenh/rsaenh.c
View file @
1dbaa8c6
...
...
@@ -5,6 +5,7 @@
* Copyright 2002 TransGaming Technologies (David Hammerton)
* Copyright 2004 Mike McCormack for CodeWeavers
* Copyright 2004, 2005 Michael Jung
* Copyright 2007 Vijay Kiran Kamuju
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
...
...
@@ -111,6 +112,7 @@ typedef struct tagCRYPTKEY
#define RSAENH_PERSONALITY_STRONG 1u
#define RSAENH_PERSONALITY_ENHANCED 2u
#define RSAENH_PERSONALITY_SCHANNEL 3u
#define RSAENH_PERSONALITY_AES 4u
#define RSAENH_MAGIC_CONTAINER 0x26384993u
typedef
struct
tagKEYCONTAINER
...
...
@@ -153,9 +155,9 @@ typedef struct tagKEYCONTAINER
/******************************************************************************
* aProvEnumAlgsEx - Defines the capabilities of the CSP personalities.
*/
#define RSAENH_MAX_ENUMALGS 2
0
#define RSAENH_MAX_ENUMALGS 2
4
#define RSAENH_PCT1_SSL2_SSL3_TLS1 (CRYPT_FLAG_PCT1|CRYPT_FLAG_SSL2|CRYPT_FLAG_SSL3|CRYPT_FLAG_TLS1)
static
const
PROV_ENUMALGS_EX
aProvEnumAlgsEx
[
4
][
RSAENH_MAX_ENUMALGS
+
1
]
=
static
const
PROV_ENUMALGS_EX
aProvEnumAlgsEx
[
5
][
RSAENH_MAX_ENUMALGS
+
1
]
=
{
{
{
CALG_RC2
,
40
,
40
,
56
,
0
,
4
,
"RC2"
,
24
,
"RSA Data Security's RC2"
},
...
...
@@ -228,6 +230,27 @@ static const PROV_ENUMALGS_EX aProvEnumAlgsEx[4][RSAENH_MAX_ENUMALGS+1] =
{
CALG_SCHANNEL_ENC_KEY
,
0
,
0
,
-
1
,
0
,
12
,
"SCH ENC KEY"
,
24
,
"SChannel Encryption Key"
},
{
CALG_TLS1PRF
,
0
,
0
,
-
1
,
0
,
9
,
"TLS1 PRF"
,
28
,
"TLS1 Pseudo Random Function"
},
{
0
,
0
,
0
,
0
,
0
,
1
,
""
,
1
,
""
}
},
{
{
CALG_RC2
,
128
,
40
,
128
,
0
,
4
,
"RC2"
,
24
,
"RSA Data Security's RC2"
},
{
CALG_RC4
,
128
,
40
,
128
,
0
,
4
,
"RC4"
,
24
,
"RSA Data Security's RC4"
},
{
CALG_DES
,
56
,
56
,
56
,
0
,
4
,
"DES"
,
31
,
"Data Encryption Standard (DES)"
},
{
CALG_3DES_112
,
112
,
112
,
112
,
0
,
13
,
"3DES TWO KEY"
,
19
,
"Two Key Triple DES"
},
{
CALG_3DES
,
168
,
168
,
168
,
0
,
5
,
"3DES"
,
21
,
"Three Key Triple DES"
},
{
CALG_AES
,
128
,
128
,
128
,
0
,
4
,
"AES"
,
35
,
"Advanced Encryption Standard (AES)"
},
{
CALG_AES_128
,
128
,
128
,
128
,
0
,
8
,
"AES-128"
,
39
,
"Advanced Encryption Standard (AES-128)"
},
{
CALG_AES_192
,
192
,
192
,
192
,
0
,
8
,
"AES-192"
,
39
,
"Advanced Encryption Standard (AES-192)"
},
{
CALG_AES_256
,
256
,
256
,
256
,
0
,
8
,
"AES-256"
,
39
,
"Advanced Encryption Standard (AES-256)"
},
{
CALG_SHA
,
160
,
160
,
160
,
CRYPT_FLAG_SIGNING
,
6
,
"SHA-1"
,
30
,
"Secure Hash Algorithm (SHA-1)"
},
{
CALG_MD2
,
128
,
128
,
128
,
CRYPT_FLAG_SIGNING
,
4
,
"MD2"
,
23
,
"Message Digest 2 (MD2)"
},
{
CALG_MD4
,
128
,
128
,
128
,
CRYPT_FLAG_SIGNING
,
4
,
"MD4"
,
23
,
"Message Digest 4 (MD4)"
},
{
CALG_MD5
,
128
,
128
,
128
,
CRYPT_FLAG_SIGNING
,
4
,
"MD5"
,
23
,
"Message Digest 5 (MD5)"
},
{
CALG_SSL3_SHAMD5
,
288
,
288
,
288
,
0
,
12
,
"SSL3 SHAMD5"
,
12
,
"SSL3 SHAMD5"
},
{
CALG_MAC
,
0
,
0
,
0
,
0
,
4
,
"MAC"
,
28
,
"Message Authentication Code"
},
{
CALG_RSA_SIGN
,
1024
,
384
,
16384
,
CRYPT_FLAG_SIGNING
|
CRYPT_FLAG_IPSEC
,
9
,
"RSA_SIGN"
,
14
,
"RSA Signature"
},
{
CALG_RSA_KEYX
,
1024
,
384
,
16384
,
CRYPT_FLAG_SIGNING
|
CRYPT_FLAG_IPSEC
,
9
,
"RSA_KEYX"
,
17
,
"RSA Key Exchange"
},
{
CALG_HMAC
,
0
,
0
,
0
,
0
,
5
,
"HMAC"
,
18
,
"Hugo's MAC (HMAC)"
},
{
0
,
0
,
0
,
0
,
0
,
1
,
""
,
1
,
""
}
}
};
...
...
@@ -844,6 +867,14 @@ static HCRYPTKEY new_key(HCRYPTPROV hProv, ALG_ID aiAlgid, DWORD dwFlags, CRYPTK
pCryptKey
->
dwMode
=
CRYPT_MODE_CBC
;
break
;
case
CALG_AES
:
case
CALG_AES_128
:
case
CALG_AES_192
:
case
CALG_AES_256
:
pCryptKey
->
dwBlockLen
=
16
;
pCryptKey
->
dwMode
=
CRYPT_MODE_ECB
;
break
;
case
CALG_RSA_KEYX
:
case
CALG_RSA_SIGN
:
pCryptKey
->
dwBlockLen
=
dwKeyLen
>>
3
;
...
...
@@ -1081,6 +1112,8 @@ static HCRYPTPROV new_key_container(PCCH pszContainerName, DWORD dwFlags, const
pKeyContainer
->
dwPersonality
=
RSAENH_PERSONALITY_ENHANCED
;
}
else
if
(
!
strcmp
(
pVTable
->
pszProvName
,
MS_DEF_RSA_SCHANNEL_PROV_A
))
{
pKeyContainer
->
dwPersonality
=
RSAENH_PERSONALITY_SCHANNEL
;
}
else
if
(
!
strcmp
(
pVTable
->
pszProvName
,
MS_ENH_RSA_AES_PROV_A
))
{
pKeyContainer
->
dwPersonality
=
RSAENH_PERSONALITY_AES
;
}
else
{
pKeyContainer
->
dwPersonality
=
RSAENH_PERSONALITY_STRONG
;
}
...
...
@@ -2562,6 +2595,10 @@ BOOL WINAPI RSAENH_CPGenKey(HCRYPTPROV hProv, ALG_ID Algid, DWORD dwFlags, HCRYP
case
CALG_DES
:
case
CALG_3DES_112
:
case
CALG_3DES
:
case
CALG_AES
:
case
CALG_AES_128
:
case
CALG_AES_192
:
case
CALG_AES_256
:
case
CALG_PCT1_MASTER
:
case
CALG_SSL2_MASTER
:
case
CALG_SSL3_MASTER
:
...
...
@@ -3757,7 +3794,7 @@ cleanup:
return
res
;
}
static
const
WCHAR
szProviderKeys
[
4
][
97
]
=
{
static
const
WCHAR
szProviderKeys
[
5
][
104
]
=
{
{
'S'
,
'o'
,
'f'
,
't'
,
'w'
,
'a'
,
'r'
,
'e'
,
'\\'
,
'M'
,
'i'
,
'c'
,
'r'
,
'o'
,
's'
,
'o'
,
'f'
,
't'
,
'\\'
,
'C'
,
'r'
,
'y'
,
'p'
,
't'
,
'o'
,
'g'
,
'r'
,
'a'
,
'p'
,
'h'
,
'y'
,
'\\'
,
'D'
,
'e'
,
'f'
,
'a'
,
'u'
,
'l'
,
't'
,
's'
,
'\\'
,
'P'
,
'r'
,
'o'
,
'v'
,
...
...
@@ -3781,9 +3818,14 @@ static const WCHAR szProviderKeys[4][97] = {
'C'
,
'r'
,
'y'
,
'p'
,
't'
,
'o'
,
'g'
,
'r'
,
'a'
,
'p'
,
'h'
,
'y'
,
'\\'
,
'D'
,
'e'
,
'f'
,
'a'
,
'u'
,
'l'
,
't'
,
's'
,
'\\'
,
'P'
,
'r'
,
'o'
,
'v'
,
'i'
,
'd'
,
'e'
,
'r'
,
'\\'
,
'M'
,
'i'
,
'c'
,
'r'
,
'o'
,
's'
,
'o'
,
'f'
,
't'
,
' '
,
'R'
,
'S'
,
'A'
,
' '
,
'S'
,
'C'
,
'h'
,
'a'
,
'n'
,
'n'
,
'e'
,
'l'
,
' '
,
'C'
,
'r'
,
'y'
,
'p'
,
't'
,
'o'
,
'g'
,
'r'
,
'a'
,
'p'
,
'h'
,
'i'
,
'c'
,
' '
,
'P'
,
'r'
,
'o'
,
'v'
,
'i'
,
'd'
,
'e'
,
'r'
,
0
},
{
'S'
,
'o'
,
'f'
,
't'
,
'w'
,
'a'
,
'r'
,
'e'
,
'\\'
,
'M'
,
'i'
,
'c'
,
'r'
,
'o'
,
's'
,
'o'
,
'f'
,
't'
,
'\\'
,
'C'
,
'r'
,
'y'
,
'p'
,
't'
,
'o'
,
'g'
,
'r'
,
'a'
,
'p'
,
'h'
,
'y'
,
'\\'
,
'D'
,
'e'
,
'f'
,
'a'
,
'u'
,
'l'
,
't'
,
's'
,
'\\'
,
'P'
,
'r'
,
'o'
,
'v'
,
'i'
,
'd'
,
'e'
,
'r'
,
'\\'
,
'M'
,
'i'
,
'c'
,
'r'
,
'o'
,
's'
,
'o'
,
'f'
,
't'
,
' '
,
'E'
,
'n'
,
'h'
,
'a'
,
'n'
,
'c'
,
'e'
,
'd'
,
' '
,
'R'
,
'S'
,
'A'
,
' '
,
'a'
,
'n'
,
'd'
,
' '
,
'A'
,
'E'
,
'S'
,
' '
,
'C'
,
'r'
,
'y'
,
'p'
,
't'
,
'o'
,
'g'
,
'r'
,
'a'
,
'p'
,
'h'
,
'i'
,
'c'
,
' '
,
'P'
,
'r'
,
'o'
,
'v'
,
'i'
,
'd'
,
'e'
,
'r'
,
0
}
};
static
const
WCHAR
szDefaultKeys
[
2
][
65
]
=
{
static
const
WCHAR
szDefaultKeys
[
3
][
65
]
=
{
{
'S'
,
'o'
,
'f'
,
't'
,
'w'
,
'a'
,
'r'
,
'e'
,
'\\'
,
'M'
,
'i'
,
'c'
,
'r'
,
'o'
,
's'
,
'o'
,
'f'
,
't'
,
'\\'
,
'C'
,
'r'
,
'y'
,
'p'
,
't'
,
'o'
,
'g'
,
'r'
,
'a'
,
'p'
,
'h'
,
'y'
,
'\\'
,
'D'
,
'e'
,
'f'
,
'a'
,
'u'
,
'l'
,
't'
,
's'
,
'\\'
,
'P'
,
'r'
,
'o'
,
'v'
,
...
...
@@ -3791,7 +3833,11 @@ static const WCHAR szDefaultKeys[2][65] = {
{
'S'
,
'o'
,
'f'
,
't'
,
'w'
,
'a'
,
'r'
,
'e'
,
'\\'
,
'M'
,
'i'
,
'c'
,
'r'
,
'o'
,
's'
,
'o'
,
'f'
,
't'
,
'\\'
,
'C'
,
'r'
,
'y'
,
'p'
,
't'
,
'o'
,
'g'
,
'r'
,
'a'
,
'p'
,
'h'
,
'y'
,
'\\'
,
'D'
,
'e'
,
'f'
,
'a'
,
'u'
,
'l'
,
't'
,
's'
,
'\\'
,
'P'
,
'r'
,
'o'
,
'v'
,
'i'
,
'd'
,
'e'
,
'r'
,
' '
,
'T'
,
'y'
,
'p'
,
'e'
,
's'
,
'\\'
,
'T'
,
'y'
,
'p'
,
'e'
,
' '
,
'0'
,
'1'
,
'2'
,
0
}
'i'
,
'd'
,
'e'
,
'r'
,
' '
,
'T'
,
'y'
,
'p'
,
'e'
,
's'
,
'\\'
,
'T'
,
'y'
,
'p'
,
'e'
,
' '
,
'0'
,
'1'
,
'2'
,
0
},
{
'S'
,
'o'
,
'f'
,
't'
,
'w'
,
'a'
,
'r'
,
'e'
,
'\\'
,
'M'
,
'i'
,
'c'
,
'r'
,
'o'
,
's'
,
'o'
,
'f'
,
't'
,
'\\'
,
'C'
,
'r'
,
'y'
,
'p'
,
't'
,
'o'
,
'g'
,
'r'
,
'a'
,
'p'
,
'h'
,
'y'
,
'\\'
,
'D'
,
'e'
,
'f'
,
'a'
,
'u'
,
'l'
,
't'
,
's'
,
'\\'
,
'P'
,
'r'
,
'o'
,
'v'
,
'i'
,
'd'
,
'e'
,
'r'
,
' '
,
'T'
,
'y'
,
'p'
,
'e'
,
's'
,
'\\'
,
'T'
,
'y'
,
'p'
,
'e'
,
' '
,
'0'
,
'2'
,
'4'
,
0
}
};
...
...
@@ -3823,7 +3869,7 @@ HRESULT WINAPI DllRegisterServer(void)
long
apiRet
;
int
i
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
for
(
i
=
0
;
i
<
5
;
i
++
)
{
apiRet
=
RegCreateKeyExW
(
HKEY_LOCAL_MACHINE
,
szProviderKeys
[
i
],
0
,
NULL
,
REG_OPTION_NON_VOLATILE
,
KEY_ALL_ACCESS
,
NULL
,
&
key
,
&
dp
);
...
...
@@ -3835,8 +3881,21 @@ HRESULT WINAPI DllRegisterServer(void)
static
const
WCHAR
szRSABase
[]
=
{
'r'
,
's'
,
'a'
,
'e'
,
'n'
,
'h'
,
'.'
,
'd'
,
'l'
,
'l'
,
0
};
static
const
WCHAR
szType
[]
=
{
'T'
,
'y'
,
'p'
,
'e'
,
0
};
static
const
WCHAR
szSignature
[]
=
{
'S'
,
'i'
,
'g'
,
'n'
,
'a'
,
't'
,
'u'
,
'r'
,
'e'
,
0
};
DWORD
type
=
(
i
==
3
)
?
PROV_RSA_SCHANNEL
:
PROV_RSA_FULL
;
DWORD
sign
=
0xdeadbeef
;
DWORD
type
,
sign
;
switch
(
i
)
{
case
3
:
type
=
PROV_RSA_SCHANNEL
;
break
;
case
4
:
type
=
PROV_RSA_AES
;
break
;
default:
type
=
PROV_RSA_FULL
;
break
;
}
sign
=
0xdeadbeef
;
RegSetValueExW
(
key
,
szImagePath
,
0
,
REG_SZ
,
(
const
BYTE
*
)
szRSABase
,
(
lstrlenW
(
szRSABase
)
+
1
)
*
sizeof
(
WCHAR
));
RegSetValueExW
(
key
,
szType
,
0
,
REG_DWORD
,
(
LPBYTE
)
&
type
,
sizeof
(
type
));
...
...
@@ -3846,7 +3905,7 @@ HRESULT WINAPI DllRegisterServer(void)
}
}
for
(
i
=
0
;
i
<
2
;
i
++
)
{
for
(
i
=
0
;
i
<
3
;
i
++
)
{
apiRet
=
RegCreateKeyExW
(
HKEY_LOCAL_MACHINE
,
szDefaultKeys
[
i
],
0
,
NULL
,
REG_OPTION_NON_VOLATILE
,
KEY_ALL_ACCESS
,
NULL
,
&
key
,
&
dp
);
if
(
apiRet
==
ERROR_SUCCESS
)
...
...
@@ -3854,20 +3913,25 @@ HRESULT WINAPI DllRegisterServer(void)
if
(
dp
==
REG_CREATED_NEW_KEY
)
{
static
const
WCHAR
szName
[]
=
{
'N'
,
'a'
,
'm'
,
'e'
,
0
};
static
const
WCHAR
szRSAName
[
2
][
46
]
=
{
static
const
WCHAR
szRSAName
[
3
][
54
]
=
{
{
'M'
,
'i'
,
'c'
,
'r'
,
'o'
,
's'
,
'o'
,
'f'
,
't'
,
' '
,
'B'
,
'a'
,
's'
,
'e'
,
' '
,
'C'
,
'r'
,
'y'
,
'p'
,
't'
,
'o'
,
'g'
,
'r'
,
'a'
,
'p'
,
'h'
,
'i'
,
'c'
,
' '
,
'P'
,
'r'
,
'o'
,
'v'
,
'i'
,
'd'
,
'e'
,
'r'
,
' '
,
'v'
,
'1'
,
'.'
,
'0'
,
0
},
{
'M'
,
'i'
,
'c'
,
'r'
,
'o'
,
's'
,
'o'
,
'f'
,
't'
,
' '
,
'R'
,
'S'
,
'A'
,
' '
,
'S'
,
'C'
,
'h'
,
'a'
,
'n'
,
'n'
,
'e'
,
'l'
,
' '
,
'C'
,
'r'
,
'y'
,
'p'
,
't'
,
'o'
,
'g'
,
'r'
,
'a'
,
'p'
,
'h'
,
'i'
,
'c'
,
' '
,
'P'
,
'r'
,
'o'
,
'v'
,
'i'
,
'd'
,
'e'
,
'r'
,
0
},
{
'M'
,
'i'
,
'c'
,
'r'
,
'o'
,
's'
,
'o'
,
'f'
,
't'
,
' '
,
'E'
,
'n'
,
'h'
,
'a'
,
'n'
,
'c'
,
'e'
,
'd'
,
' '
,
'R'
,
'S'
,
'A'
,
' '
,
'a'
,
'n'
,
'd'
,
' '
,
'A'
,
'E'
,
'S'
,
' '
,
'C'
,
'r'
,
'y'
,
'p'
,
't'
,
'o'
,
'g'
,
'r'
,
'a'
,
'p'
,
'h'
,
'i'
,
'c'
,
' '
,
'P'
,
'r'
,
'o'
,
'v'
,
'i'
,
'd'
,
'e'
,
'r'
,
0
}
};
static
const
WCHAR
szTypeName
[]
=
{
'T'
,
'y'
,
'p'
,
'e'
,
'N'
,
'a'
,
'm'
,
'e'
,
0
};
static
const
WCHAR
szRSATypeName
[
2
][
38
]
=
{
static
const
WCHAR
szRSATypeName
[
3
][
38
]
=
{
{
'R'
,
'S'
,
'A'
,
' '
,
'F'
,
'u'
,
'l'
,
'l'
,
' '
,
'('
,
'S'
,
'i'
,
'g'
,
'n'
,
'a'
,
't'
,
'u'
,
'r'
,
'e'
,
' '
,
'a'
,
'n'
,
'd'
,
' '
,
'K'
,
'e'
,
'y'
,
' '
,
'E'
,
'x'
,
'c'
,
'h'
,
'a'
,
'n'
,
'g'
,
'e'
,
')'
,
0
},
{
'R'
,
'S'
,
'A'
,
' '
,
'S'
,
'C'
,
'h'
,
'a'
,
'n'
,
'n'
,
'e'
,
'l'
,
0
}
};
{
'R'
,
'S'
,
'A'
,
' '
,
'S'
,
'C'
,
'h'
,
'a'
,
'n'
,
'n'
,
'e'
,
'l'
,
0
},
{
'R'
,
'S'
,
'A'
,
' '
,
'F'
,
'u'
,
'l'
,
'l'
,
' '
,
'a'
,
'n'
,
'd'
,
' '
,
'A'
,
'E'
,
'S'
,
0
}
};
RegSetValueExW
(
key
,
szName
,
0
,
REG_SZ
,
(
const
BYTE
*
)
szRSAName
[
i
],
lstrlenW
(
szRSAName
[
i
])
*
sizeof
(
WCHAR
)
+
sizeof
(
WCHAR
));
...
...
@@ -3900,7 +3964,9 @@ HRESULT WINAPI DllUnregisterServer(void)
RegDeleteKeyW
(
HKEY_LOCAL_MACHINE
,
szProviderKeys
[
1
]);
RegDeleteKeyW
(
HKEY_LOCAL_MACHINE
,
szProviderKeys
[
2
]);
RegDeleteKeyW
(
HKEY_LOCAL_MACHINE
,
szProviderKeys
[
3
]);
RegDeleteKeyW
(
HKEY_LOCAL_MACHINE
,
szProviderKeys
[
4
]);
RegDeleteKeyW
(
HKEY_LOCAL_MACHINE
,
szDefaultKeys
[
0
]);
RegDeleteKeyW
(
HKEY_LOCAL_MACHINE
,
szDefaultKeys
[
1
]);
RegDeleteKeyW
(
HKEY_LOCAL_MACHINE
,
szDefaultKeys
[
2
]);
return
S_OK
;
}
dlls/rsaenh/tests/rsaenh.c
View file @
1dbaa8c6
...
...
@@ -140,31 +140,21 @@ static int init_aes_environment(void)
* This provider is available on Windows XP, Windows 2003 and Vista. */
result
=
CryptAcquireContext
(
&
hProv
,
szContainer
,
NULL
,
PROV_RSA_AES
,
CRYPT_VERIFYCONTEXT
);
todo_wine
{
ok
(
!
result
&&
GetLastError
()
==
NTE_BAD_FLAGS
,
"%d, %08x
\n
"
,
result
,
GetLastError
());
}
if
(
!
CryptAcquireContext
(
&
hProv
,
szContainer
,
NULL
,
PROV_RSA_AES
,
0
))
{
todo_wine
{
ok
(
GetLastError
()
==
NTE_BAD_KEYSET
,
"%08x
\n
"
,
GetLastError
());
}
if
(
GetLastError
()
!=
NTE_BAD_KEYSET
)
return
0
;
result
=
CryptAcquireContext
(
&
hProv
,
szContainer
,
NULL
,
PROV_RSA_AES
,
CRYPT_NEWKEYSET
);
todo_wine
{
ok
(
result
,
"%08x
\n
"
,
GetLastError
());
}
if
(
!
result
)
return
0
;
result
=
CryptGenKey
(
hProv
,
AT_KEYEXCHANGE
,
0
,
&
hKey
);
todo_wine
{
ok
(
result
,
"%08x
\n
"
,
GetLastError
());
}
if
(
result
)
CryptDestroyKey
(
hKey
);
result
=
CryptGenKey
(
hProv
,
AT_SIGNATURE
,
0
,
&
hKey
);
todo_wine
{
ok
(
result
,
"%08x
\n
"
,
GetLastError
());
}
if
(
result
)
CryptDestroyKey
(
hKey
);
}
return
1
;
...
...
@@ -175,7 +165,7 @@ static void clean_up_aes_environment(void)
BOOL
result
;
result
=
CryptReleaseContext
(
hProv
,
1
);
todo_wine
ok
(
!
result
&&
GetLastError
()
==
NTE_BAD_FLAGS
,
"%08x
\n
"
,
GetLastError
());
ok
(
!
result
&&
GetLastError
()
==
NTE_BAD_FLAGS
,
"%08x
\n
"
,
GetLastError
());
CryptAcquireContext
(
&
hProv
,
szContainer
,
NULL
,
PROV_RSA_AES
,
CRYPT_DELETEKEYSET
);
}
...
...
@@ -670,14 +660,10 @@ static void test_aes(int keylen)
dwLen
=
13
;
result
=
CryptEncrypt
(
hKey
,
(
HCRYPTHASH
)
NULL
,
TRUE
,
0
,
pbData
,
&
dwLen
,
16
);
todo_wine
{
ok
(
result
,
"%08x
\n
"
,
GetLastError
());
}
result
=
CryptDecrypt
(
hKey
,
(
HCRYPTHASH
)
NULL
,
TRUE
,
0
,
pbData
,
&
dwLen
);
todo_wine
{
ok
(
result
,
"%08x
\n
"
,
GetLastError
());
}
for
(
i
=
0
;
i
<
4
;
i
++
)
{
...
...
@@ -685,13 +671,10 @@ static void test_aes(int keylen)
dwLen
=
cTestData
[
i
].
enclen
;
result
=
CryptEncrypt
(
hKey
,
(
HCRYPTHASH
)
NULL
,
TRUE
,
0
,
pbData
,
&
dwLen
,
cTestData
[
i
].
buflen
);
todo_wine
{
ok
(
result
,
"%08x
\n
"
,
GetLastError
());
ok
(
dwLen
==
cTestData
[
i
].
buflen
,
"length incorrect, got %d, expected %d
\n
"
,
dwLen
,
cTestData
[
i
].
buflen
);
}
result
=
CryptDecrypt
(
hKey
,
(
HCRYPTHASH
)
NULL
,
TRUE
,
0
,
pbData
,
&
dwLen
);
todo_wine
{
ok
(
result
,
"%08x
\n
"
,
GetLastError
());
ok
(
dwLen
==
cTestData
[
i
].
enclen
,
"length incorrect, got %d, expected %d
\n
"
,
dwLen
,
cTestData
[
i
].
enclen
);
ok
(
memcmp
(
pbData
,
cTestData
[
i
].
decstr
,
cTestData
[
1
].
enclen
)
==
0
,
"decryption incorrect %d
\n
"
,
i
);
...
...
@@ -702,11 +685,8 @@ static void test_aes(int keylen)
printBytes
(
"got"
,
pbData
,
dwLen
);
}
}
}
result
=
CryptDestroyKey
(
hKey
);
todo_wine
{
ok
(
result
,
"%08x
\n
"
,
GetLastError
());
}
}
static
void
test_rc2
(
void
)
...
...
dlls/rsaenh/tomcrypt.h
View file @
1dbaa8c6
...
...
@@ -129,6 +129,11 @@ typedef struct tag_des3_key {
ulong32
ek
[
3
][
32
],
dk
[
3
][
32
];
}
des3_key
;
typedef
struct
tag_aes_key
{
ulong32
eK
[
64
],
dK
[
64
];
int
Nr
;
}
aes_key
;
int
rc2_setup
(
const
unsigned
char
*
key
,
int
keylen
,
int
bits
,
int
num_rounds
,
rc2_key
*
skey
);
void
rc2_ecb_encrypt
(
const
unsigned
char
*
pt
,
unsigned
char
*
ct
,
rc2_key
*
key
);
void
rc2_ecb_decrypt
(
const
unsigned
char
*
ct
,
unsigned
char
*
pt
,
rc2_key
*
key
);
...
...
@@ -141,6 +146,10 @@ int des3_setup(const unsigned char *key, int keylen, int num_rounds, des3_key *s
void
des3_ecb_encrypt
(
const
unsigned
char
*
pt
,
unsigned
char
*
ct
,
const
des3_key
*
key
);
void
des3_ecb_decrypt
(
const
unsigned
char
*
ct
,
unsigned
char
*
pt
,
const
des3_key
*
key
);
int
aes_setup
(
const
unsigned
char
*
key
,
int
keylen
,
int
rounds
,
aes_key
*
skey
);
void
aes_ecb_encrypt
(
const
unsigned
char
*
pt
,
unsigned
char
*
ct
,
aes_key
*
skey
);
void
aes_ecb_decrypt
(
const
unsigned
char
*
ct
,
unsigned
char
*
pt
,
aes_key
*
skey
);
typedef
struct
tag_md2_state
{
unsigned
char
chksum
[
16
],
X
[
48
],
buf
[
16
];
unsigned
long
curlen
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment