]>
cvs.zerfleddert.de Git - proxmark3-svn/blob - armsrc/aes.c
a199d04b7dc8d48bacbf446de619406385320159
   3 static const unsigned int Te0
[256] = { 
   4     0xc66363a5UL
, 0xf87c7c84UL
, 0xee777799UL
, 0xf67b7b8dUL
, 
   5     0xfff2f20dUL
, 0xd66b6bbdUL
, 0xde6f6fb1UL
, 0x91c5c554UL
, 
   6     0x60303050UL
, 0x02010103UL
, 0xce6767a9UL
, 0x562b2b7dUL
, 
   7     0xe7fefe19UL
, 0xb5d7d762UL
, 0x4dababe6UL
, 0xec76769aUL
, 
   8     0x8fcaca45UL
, 0x1f82829dUL
, 0x89c9c940UL
, 0xfa7d7d87UL
, 
   9     0xeffafa15UL
, 0xb25959ebUL
, 0x8e4747c9UL
, 0xfbf0f00bUL
, 
  10     0x41adadecUL
, 0xb3d4d467UL
, 0x5fa2a2fdUL
, 0x45afafeaUL
, 
  11     0x239c9cbfUL
, 0x53a4a4f7UL
, 0xe4727296UL
, 0x9bc0c05bUL
, 
  12     0x75b7b7c2UL
, 0xe1fdfd1cUL
, 0x3d9393aeUL
, 0x4c26266aUL
, 
  13     0x6c36365aUL
, 0x7e3f3f41UL
, 0xf5f7f702UL
, 0x83cccc4fUL
, 
  14     0x6834345cUL
, 0x51a5a5f4UL
, 0xd1e5e534UL
, 0xf9f1f108UL
, 
  15     0xe2717193UL
, 0xabd8d873UL
, 0x62313153UL
, 0x2a15153fUL
, 
  16     0x0804040cUL
, 0x95c7c752UL
, 0x46232365UL
, 0x9dc3c35eUL
, 
  17     0x30181828UL
, 0x379696a1UL
, 0x0a05050fUL
, 0x2f9a9ab5UL
, 
  18     0x0e070709UL
, 0x24121236UL
, 0x1b80809bUL
, 0xdfe2e23dUL
, 
  19     0xcdebeb26UL
, 0x4e272769UL
, 0x7fb2b2cdUL
, 0xea75759fUL
, 
  20     0x1209091bUL
, 0x1d83839eUL
, 0x582c2c74UL
, 0x341a1a2eUL
, 
  21     0x361b1b2dUL
, 0xdc6e6eb2UL
, 0xb45a5aeeUL
, 0x5ba0a0fbUL
, 
  22     0xa45252f6UL
, 0x763b3b4dUL
, 0xb7d6d661UL
, 0x7db3b3ceUL
, 
  23     0x5229297bUL
, 0xdde3e33eUL
, 0x5e2f2f71UL
, 0x13848497UL
, 
  24     0xa65353f5UL
, 0xb9d1d168UL
, 0x00000000UL
, 0xc1eded2cUL
, 
  25     0x40202060UL
, 0xe3fcfc1fUL
, 0x79b1b1c8UL
, 0xb65b5bedUL
, 
  26     0xd46a6abeUL
, 0x8dcbcb46UL
, 0x67bebed9UL
, 0x7239394bUL
, 
  27     0x944a4adeUL
, 0x984c4cd4UL
, 0xb05858e8UL
, 0x85cfcf4aUL
, 
  28     0xbbd0d06bUL
, 0xc5efef2aUL
, 0x4faaaae5UL
, 0xedfbfb16UL
, 
  29     0x864343c5UL
, 0x9a4d4dd7UL
, 0x66333355UL
, 0x11858594UL
, 
  30     0x8a4545cfUL
, 0xe9f9f910UL
, 0x04020206UL
, 0xfe7f7f81UL
, 
  31     0xa05050f0UL
, 0x783c3c44UL
, 0x259f9fbaUL
, 0x4ba8a8e3UL
, 
  32     0xa25151f3UL
, 0x5da3a3feUL
, 0x804040c0UL
, 0x058f8f8aUL
, 
  33     0x3f9292adUL
, 0x219d9dbcUL
, 0x70383848UL
, 0xf1f5f504UL
, 
  34     0x63bcbcdfUL
, 0x77b6b6c1UL
, 0xafdada75UL
, 0x42212163UL
, 
  35     0x20101030UL
, 0xe5ffff1aUL
, 0xfdf3f30eUL
, 0xbfd2d26dUL
, 
  36     0x81cdcd4cUL
, 0x180c0c14UL
, 0x26131335UL
, 0xc3ecec2fUL
, 
  37     0xbe5f5fe1UL
, 0x359797a2UL
, 0x884444ccUL
, 0x2e171739UL
, 
  38     0x93c4c457UL
, 0x55a7a7f2UL
, 0xfc7e7e82UL
, 0x7a3d3d47UL
, 
  39     0xc86464acUL
, 0xba5d5de7UL
, 0x3219192bUL
, 0xe6737395UL
, 
  40     0xc06060a0UL
, 0x19818198UL
, 0x9e4f4fd1UL
, 0xa3dcdc7fUL
, 
  41     0x44222266UL
, 0x542a2a7eUL
, 0x3b9090abUL
, 0x0b888883UL
, 
  42     0x8c4646caUL
, 0xc7eeee29UL
, 0x6bb8b8d3UL
, 0x2814143cUL
, 
  43     0xa7dede79UL
, 0xbc5e5ee2UL
, 0x160b0b1dUL
, 0xaddbdb76UL
, 
  44     0xdbe0e03bUL
, 0x64323256UL
, 0x743a3a4eUL
, 0x140a0a1eUL
, 
  45     0x924949dbUL
, 0x0c06060aUL
, 0x4824246cUL
, 0xb85c5ce4UL
, 
  46     0x9fc2c25dUL
, 0xbdd3d36eUL
, 0x43acacefUL
, 0xc46262a6UL
, 
  47     0x399191a8UL
, 0x319595a4UL
, 0xd3e4e437UL
, 0xf279798bUL
, 
  48     0xd5e7e732UL
, 0x8bc8c843UL
, 0x6e373759UL
, 0xda6d6db7UL
, 
  49     0x018d8d8cUL
, 0xb1d5d564UL
, 0x9c4e4ed2UL
, 0x49a9a9e0UL
, 
  50     0xd86c6cb4UL
, 0xac5656faUL
, 0xf3f4f407UL
, 0xcfeaea25UL
, 
  51     0xca6565afUL
, 0xf47a7a8eUL
, 0x47aeaee9UL
, 0x10080818UL
, 
  52     0x6fbabad5UL
, 0xf0787888UL
, 0x4a25256fUL
, 0x5c2e2e72UL
, 
  53     0x381c1c24UL
, 0x57a6a6f1UL
, 0x73b4b4c7UL
, 0x97c6c651UL
, 
  54     0xcbe8e823UL
, 0xa1dddd7cUL
, 0xe874749cUL
, 0x3e1f1f21UL
, 
  55     0x964b4bddUL
, 0x61bdbddcUL
, 0x0d8b8b86UL
, 0x0f8a8a85UL
, 
  56     0xe0707090UL
, 0x7c3e3e42UL
, 0x71b5b5c4UL
, 0xcc6666aaUL
, 
  57     0x904848d8UL
, 0x06030305UL
, 0xf7f6f601UL
, 0x1c0e0e12UL
, 
  58     0xc26161a3UL
, 0x6a35355fUL
, 0xae5757f9UL
, 0x69b9b9d0UL
, 
  59     0x17868691UL
, 0x99c1c158UL
, 0x3a1d1d27UL
, 0x279e9eb9UL
, 
  60     0xd9e1e138UL
, 0xebf8f813UL
, 0x2b9898b3UL
, 0x22111133UL
, 
  61     0xd26969bbUL
, 0xa9d9d970UL
, 0x078e8e89UL
, 0x339494a7UL
, 
  62     0x2d9b9bb6UL
, 0x3c1e1e22UL
, 0x15878792UL
, 0xc9e9e920UL
, 
  63     0x87cece49UL
, 0xaa5555ffUL
, 0x50282878UL
, 0xa5dfdf7aUL
, 
  64     0x038c8c8fUL
, 0x59a1a1f8UL
, 0x09898980UL
, 0x1a0d0d17UL
, 
  65     0x65bfbfdaUL
, 0xd7e6e631UL
, 0x844242c6UL
, 0xd06868b8UL
, 
  66     0x824141c3UL
, 0x299999b0UL
, 0x5a2d2d77UL
, 0x1e0f0f11UL
, 
  67     0x7bb0b0cbUL
, 0xa85454fcUL
, 0x6dbbbbd6UL
, 0x2c16163aUL
, 
  69 static const unsigned int Te1
[256] = { 
  70     0xa5c66363UL
, 0x84f87c7cUL
, 0x99ee7777UL
, 0x8df67b7bUL
, 
  71     0x0dfff2f2UL
, 0xbdd66b6bUL
, 0xb1de6f6fUL
, 0x5491c5c5UL
, 
  72     0x50603030UL
, 0x03020101UL
, 0xa9ce6767UL
, 0x7d562b2bUL
, 
  73     0x19e7fefeUL
, 0x62b5d7d7UL
, 0xe64dababUL
, 0x9aec7676UL
, 
  74     0x458fcacaUL
, 0x9d1f8282UL
, 0x4089c9c9UL
, 0x87fa7d7dUL
, 
  75     0x15effafaUL
, 0xebb25959UL
, 0xc98e4747UL
, 0x0bfbf0f0UL
, 
  76     0xec41adadUL
, 0x67b3d4d4UL
, 0xfd5fa2a2UL
, 0xea45afafUL
, 
  77     0xbf239c9cUL
, 0xf753a4a4UL
, 0x96e47272UL
, 0x5b9bc0c0UL
, 
  78     0xc275b7b7UL
, 0x1ce1fdfdUL
, 0xae3d9393UL
, 0x6a4c2626UL
, 
  79     0x5a6c3636UL
, 0x417e3f3fUL
, 0x02f5f7f7UL
, 0x4f83ccccUL
, 
  80     0x5c683434UL
, 0xf451a5a5UL
, 0x34d1e5e5UL
, 0x08f9f1f1UL
, 
  81     0x93e27171UL
, 0x73abd8d8UL
, 0x53623131UL
, 0x3f2a1515UL
, 
  82     0x0c080404UL
, 0x5295c7c7UL
, 0x65462323UL
, 0x5e9dc3c3UL
, 
  83     0x28301818UL
, 0xa1379696UL
, 0x0f0a0505UL
, 0xb52f9a9aUL
, 
  84     0x090e0707UL
, 0x36241212UL
, 0x9b1b8080UL
, 0x3ddfe2e2UL
, 
  85     0x26cdebebUL
, 0x694e2727UL
, 0xcd7fb2b2UL
, 0x9fea7575UL
, 
  86     0x1b120909UL
, 0x9e1d8383UL
, 0x74582c2cUL
, 0x2e341a1aUL
, 
  87     0x2d361b1bUL
, 0xb2dc6e6eUL
, 0xeeb45a5aUL
, 0xfb5ba0a0UL
, 
  88     0xf6a45252UL
, 0x4d763b3bUL
, 0x61b7d6d6UL
, 0xce7db3b3UL
, 
  89     0x7b522929UL
, 0x3edde3e3UL
, 0x715e2f2fUL
, 0x97138484UL
, 
  90     0xf5a65353UL
, 0x68b9d1d1UL
, 0x00000000UL
, 0x2cc1ededUL
, 
  91     0x60402020UL
, 0x1fe3fcfcUL
, 0xc879b1b1UL
, 0xedb65b5bUL
, 
  92     0xbed46a6aUL
, 0x468dcbcbUL
, 0xd967bebeUL
, 0x4b723939UL
, 
  93     0xde944a4aUL
, 0xd4984c4cUL
, 0xe8b05858UL
, 0x4a85cfcfUL
, 
  94     0x6bbbd0d0UL
, 0x2ac5efefUL
, 0xe54faaaaUL
, 0x16edfbfbUL
, 
  95     0xc5864343UL
, 0xd79a4d4dUL
, 0x55663333UL
, 0x94118585UL
, 
  96     0xcf8a4545UL
, 0x10e9f9f9UL
, 0x06040202UL
, 0x81fe7f7fUL
, 
  97     0xf0a05050UL
, 0x44783c3cUL
, 0xba259f9fUL
, 0xe34ba8a8UL
, 
  98     0xf3a25151UL
, 0xfe5da3a3UL
, 0xc0804040UL
, 0x8a058f8fUL
, 
  99     0xad3f9292UL
, 0xbc219d9dUL
, 0x48703838UL
, 0x04f1f5f5UL
, 
 100     0xdf63bcbcUL
, 0xc177b6b6UL
, 0x75afdadaUL
, 0x63422121UL
, 
 101     0x30201010UL
, 0x1ae5ffffUL
, 0x0efdf3f3UL
, 0x6dbfd2d2UL
, 
 102     0x4c81cdcdUL
, 0x14180c0cUL
, 0x35261313UL
, 0x2fc3ececUL
, 
 103     0xe1be5f5fUL
, 0xa2359797UL
, 0xcc884444UL
, 0x392e1717UL
, 
 104     0x5793c4c4UL
, 0xf255a7a7UL
, 0x82fc7e7eUL
, 0x477a3d3dUL
, 
 105     0xacc86464UL
, 0xe7ba5d5dUL
, 0x2b321919UL
, 0x95e67373UL
, 
 106     0xa0c06060UL
, 0x98198181UL
, 0xd19e4f4fUL
, 0x7fa3dcdcUL
, 
 107     0x66442222UL
, 0x7e542a2aUL
, 0xab3b9090UL
, 0x830b8888UL
, 
 108     0xca8c4646UL
, 0x29c7eeeeUL
, 0xd36bb8b8UL
, 0x3c281414UL
, 
 109     0x79a7dedeUL
, 0xe2bc5e5eUL
, 0x1d160b0bUL
, 0x76addbdbUL
, 
 110     0x3bdbe0e0UL
, 0x56643232UL
, 0x4e743a3aUL
, 0x1e140a0aUL
, 
 111     0xdb924949UL
, 0x0a0c0606UL
, 0x6c482424UL
, 0xe4b85c5cUL
, 
 112     0x5d9fc2c2UL
, 0x6ebdd3d3UL
, 0xef43acacUL
, 0xa6c46262UL
, 
 113     0xa8399191UL
, 0xa4319595UL
, 0x37d3e4e4UL
, 0x8bf27979UL
, 
 114     0x32d5e7e7UL
, 0x438bc8c8UL
, 0x596e3737UL
, 0xb7da6d6dUL
, 
 115     0x8c018d8dUL
, 0x64b1d5d5UL
, 0xd29c4e4eUL
, 0xe049a9a9UL
, 
 116     0xb4d86c6cUL
, 0xfaac5656UL
, 0x07f3f4f4UL
, 0x25cfeaeaUL
, 
 117     0xafca6565UL
, 0x8ef47a7aUL
, 0xe947aeaeUL
, 0x18100808UL
, 
 118     0xd56fbabaUL
, 0x88f07878UL
, 0x6f4a2525UL
, 0x725c2e2eUL
, 
 119     0x24381c1cUL
, 0xf157a6a6UL
, 0xc773b4b4UL
, 0x5197c6c6UL
, 
 120     0x23cbe8e8UL
, 0x7ca1ddddUL
, 0x9ce87474UL
, 0x213e1f1fUL
, 
 121     0xdd964b4bUL
, 0xdc61bdbdUL
, 0x860d8b8bUL
, 0x850f8a8aUL
, 
 122     0x90e07070UL
, 0x427c3e3eUL
, 0xc471b5b5UL
, 0xaacc6666UL
, 
 123     0xd8904848UL
, 0x05060303UL
, 0x01f7f6f6UL
, 0x121c0e0eUL
, 
 124     0xa3c26161UL
, 0x5f6a3535UL
, 0xf9ae5757UL
, 0xd069b9b9UL
, 
 125     0x91178686UL
, 0x5899c1c1UL
, 0x273a1d1dUL
, 0xb9279e9eUL
, 
 126     0x38d9e1e1UL
, 0x13ebf8f8UL
, 0xb32b9898UL
, 0x33221111UL
, 
 127     0xbbd26969UL
, 0x70a9d9d9UL
, 0x89078e8eUL
, 0xa7339494UL
, 
 128     0xb62d9b9bUL
, 0x223c1e1eUL
, 0x92158787UL
, 0x20c9e9e9UL
, 
 129     0x4987ceceUL
, 0xffaa5555UL
, 0x78502828UL
, 0x7aa5dfdfUL
, 
 130     0x8f038c8cUL
, 0xf859a1a1UL
, 0x80098989UL
, 0x171a0d0dUL
, 
 131     0xda65bfbfUL
, 0x31d7e6e6UL
, 0xc6844242UL
, 0xb8d06868UL
, 
 132     0xc3824141UL
, 0xb0299999UL
, 0x775a2d2dUL
, 0x111e0f0fUL
, 
 133     0xcb7bb0b0UL
, 0xfca85454UL
, 0xd66dbbbbUL
, 0x3a2c1616UL
, 
 135 static const unsigned int Te2
[256] = { 
 136     0x63a5c663UL
, 0x7c84f87cUL
, 0x7799ee77UL
, 0x7b8df67bUL
, 
 137     0xf20dfff2UL
, 0x6bbdd66bUL
, 0x6fb1de6fUL
, 0xc55491c5UL
, 
 138     0x30506030UL
, 0x01030201UL
, 0x67a9ce67UL
, 0x2b7d562bUL
, 
 139     0xfe19e7feUL
, 0xd762b5d7UL
, 0xabe64dabUL
, 0x769aec76UL
, 
 140     0xca458fcaUL
, 0x829d1f82UL
, 0xc94089c9UL
, 0x7d87fa7dUL
, 
 141     0xfa15effaUL
, 0x59ebb259UL
, 0x47c98e47UL
, 0xf00bfbf0UL
, 
 142     0xadec41adUL
, 0xd467b3d4UL
, 0xa2fd5fa2UL
, 0xafea45afUL
, 
 143     0x9cbf239cUL
, 0xa4f753a4UL
, 0x7296e472UL
, 0xc05b9bc0UL
, 
 144     0xb7c275b7UL
, 0xfd1ce1fdUL
, 0x93ae3d93UL
, 0x266a4c26UL
, 
 145     0x365a6c36UL
, 0x3f417e3fUL
, 0xf702f5f7UL
, 0xcc4f83ccUL
, 
 146     0x345c6834UL
, 0xa5f451a5UL
, 0xe534d1e5UL
, 0xf108f9f1UL
, 
 147     0x7193e271UL
, 0xd873abd8UL
, 0x31536231UL
, 0x153f2a15UL
, 
 148     0x040c0804UL
, 0xc75295c7UL
, 0x23654623UL
, 0xc35e9dc3UL
, 
 149     0x18283018UL
, 0x96a13796UL
, 0x050f0a05UL
, 0x9ab52f9aUL
, 
 150     0x07090e07UL
, 0x12362412UL
, 0x809b1b80UL
, 0xe23ddfe2UL
, 
 151     0xeb26cdebUL
, 0x27694e27UL
, 0xb2cd7fb2UL
, 0x759fea75UL
, 
 152     0x091b1209UL
, 0x839e1d83UL
, 0x2c74582cUL
, 0x1a2e341aUL
, 
 153     0x1b2d361bUL
, 0x6eb2dc6eUL
, 0x5aeeb45aUL
, 0xa0fb5ba0UL
, 
 154     0x52f6a452UL
, 0x3b4d763bUL
, 0xd661b7d6UL
, 0xb3ce7db3UL
, 
 155     0x297b5229UL
, 0xe33edde3UL
, 0x2f715e2fUL
, 0x84971384UL
, 
 156     0x53f5a653UL
, 0xd168b9d1UL
, 0x00000000UL
, 0xed2cc1edUL
, 
 157     0x20604020UL
, 0xfc1fe3fcUL
, 0xb1c879b1UL
, 0x5bedb65bUL
, 
 158     0x6abed46aUL
, 0xcb468dcbUL
, 0xbed967beUL
, 0x394b7239UL
, 
 159     0x4ade944aUL
, 0x4cd4984cUL
, 0x58e8b058UL
, 0xcf4a85cfUL
, 
 160     0xd06bbbd0UL
, 0xef2ac5efUL
, 0xaae54faaUL
, 0xfb16edfbUL
, 
 161     0x43c58643UL
, 0x4dd79a4dUL
, 0x33556633UL
, 0x85941185UL
, 
 162     0x45cf8a45UL
, 0xf910e9f9UL
, 0x02060402UL
, 0x7f81fe7fUL
, 
 163     0x50f0a050UL
, 0x3c44783cUL
, 0x9fba259fUL
, 0xa8e34ba8UL
, 
 164     0x51f3a251UL
, 0xa3fe5da3UL
, 0x40c08040UL
, 0x8f8a058fUL
, 
 165     0x92ad3f92UL
, 0x9dbc219dUL
, 0x38487038UL
, 0xf504f1f5UL
, 
 166     0xbcdf63bcUL
, 0xb6c177b6UL
, 0xda75afdaUL
, 0x21634221UL
, 
 167     0x10302010UL
, 0xff1ae5ffUL
, 0xf30efdf3UL
, 0xd26dbfd2UL
, 
 168     0xcd4c81cdUL
, 0x0c14180cUL
, 0x13352613UL
, 0xec2fc3ecUL
, 
 169     0x5fe1be5fUL
, 0x97a23597UL
, 0x44cc8844UL
, 0x17392e17UL
, 
 170     0xc45793c4UL
, 0xa7f255a7UL
, 0x7e82fc7eUL
, 0x3d477a3dUL
, 
 171     0x64acc864UL
, 0x5de7ba5dUL
, 0x192b3219UL
, 0x7395e673UL
, 
 172     0x60a0c060UL
, 0x81981981UL
, 0x4fd19e4fUL
, 0xdc7fa3dcUL
, 
 173     0x22664422UL
, 0x2a7e542aUL
, 0x90ab3b90UL
, 0x88830b88UL
, 
 174     0x46ca8c46UL
, 0xee29c7eeUL
, 0xb8d36bb8UL
, 0x143c2814UL
, 
 175     0xde79a7deUL
, 0x5ee2bc5eUL
, 0x0b1d160bUL
, 0xdb76addbUL
, 
 176     0xe03bdbe0UL
, 0x32566432UL
, 0x3a4e743aUL
, 0x0a1e140aUL
, 
 177     0x49db9249UL
, 0x060a0c06UL
, 0x246c4824UL
, 0x5ce4b85cUL
, 
 178     0xc25d9fc2UL
, 0xd36ebdd3UL
, 0xacef43acUL
, 0x62a6c462UL
, 
 179     0x91a83991UL
, 0x95a43195UL
, 0xe437d3e4UL
, 0x798bf279UL
, 
 180     0xe732d5e7UL
, 0xc8438bc8UL
, 0x37596e37UL
, 0x6db7da6dUL
, 
 181     0x8d8c018dUL
, 0xd564b1d5UL
, 0x4ed29c4eUL
, 0xa9e049a9UL
, 
 182     0x6cb4d86cUL
, 0x56faac56UL
, 0xf407f3f4UL
, 0xea25cfeaUL
, 
 183     0x65afca65UL
, 0x7a8ef47aUL
, 0xaee947aeUL
, 0x08181008UL
, 
 184     0xbad56fbaUL
, 0x7888f078UL
, 0x256f4a25UL
, 0x2e725c2eUL
, 
 185     0x1c24381cUL
, 0xa6f157a6UL
, 0xb4c773b4UL
, 0xc65197c6UL
, 
 186     0xe823cbe8UL
, 0xdd7ca1ddUL
, 0x749ce874UL
, 0x1f213e1fUL
, 
 187     0x4bdd964bUL
, 0xbddc61bdUL
, 0x8b860d8bUL
, 0x8a850f8aUL
, 
 188     0x7090e070UL
, 0x3e427c3eUL
, 0xb5c471b5UL
, 0x66aacc66UL
, 
 189     0x48d89048UL
, 0x03050603UL
, 0xf601f7f6UL
, 0x0e121c0eUL
, 
 190     0x61a3c261UL
, 0x355f6a35UL
, 0x57f9ae57UL
, 0xb9d069b9UL
, 
 191     0x86911786UL
, 0xc15899c1UL
, 0x1d273a1dUL
, 0x9eb9279eUL
, 
 192     0xe138d9e1UL
, 0xf813ebf8UL
, 0x98b32b98UL
, 0x11332211UL
, 
 193     0x69bbd269UL
, 0xd970a9d9UL
, 0x8e89078eUL
, 0x94a73394UL
, 
 194     0x9bb62d9bUL
, 0x1e223c1eUL
, 0x87921587UL
, 0xe920c9e9UL
, 
 195     0xce4987ceUL
, 0x55ffaa55UL
, 0x28785028UL
, 0xdf7aa5dfUL
, 
 196     0x8c8f038cUL
, 0xa1f859a1UL
, 0x89800989UL
, 0x0d171a0dUL
, 
 197     0xbfda65bfUL
, 0xe631d7e6UL
, 0x42c68442UL
, 0x68b8d068UL
, 
 198     0x41c38241UL
, 0x99b02999UL
, 0x2d775a2dUL
, 0x0f111e0fUL
, 
 199     0xb0cb7bb0UL
, 0x54fca854UL
, 0xbbd66dbbUL
, 0x163a2c16UL
, 
 201 static const unsigned int Te3
[256] = { 
 202     0x6363a5c6UL
, 0x7c7c84f8UL
, 0x777799eeUL
, 0x7b7b8df6UL
, 
 203     0xf2f20dffUL
, 0x6b6bbdd6UL
, 0x6f6fb1deUL
, 0xc5c55491UL
, 
 204     0x30305060UL
, 0x01010302UL
, 0x6767a9ceUL
, 0x2b2b7d56UL
, 
 205     0xfefe19e7UL
, 0xd7d762b5UL
, 0xababe64dUL
, 0x76769aecUL
, 
 206     0xcaca458fUL
, 0x82829d1fUL
, 0xc9c94089UL
, 0x7d7d87faUL
, 
 207     0xfafa15efUL
, 0x5959ebb2UL
, 0x4747c98eUL
, 0xf0f00bfbUL
, 
 208     0xadadec41UL
, 0xd4d467b3UL
, 0xa2a2fd5fUL
, 0xafafea45UL
, 
 209     0x9c9cbf23UL
, 0xa4a4f753UL
, 0x727296e4UL
, 0xc0c05b9bUL
, 
 210     0xb7b7c275UL
, 0xfdfd1ce1UL
, 0x9393ae3dUL
, 0x26266a4cUL
, 
 211     0x36365a6cUL
, 0x3f3f417eUL
, 0xf7f702f5UL
, 0xcccc4f83UL
, 
 212     0x34345c68UL
, 0xa5a5f451UL
, 0xe5e534d1UL
, 0xf1f108f9UL
, 
 213     0x717193e2UL
, 0xd8d873abUL
, 0x31315362UL
, 0x15153f2aUL
, 
 214     0x04040c08UL
, 0xc7c75295UL
, 0x23236546UL
, 0xc3c35e9dUL
, 
 215     0x18182830UL
, 0x9696a137UL
, 0x05050f0aUL
, 0x9a9ab52fUL
, 
 216     0x0707090eUL
, 0x12123624UL
, 0x80809b1bUL
, 0xe2e23ddfUL
, 
 217     0xebeb26cdUL
, 0x2727694eUL
, 0xb2b2cd7fUL
, 0x75759feaUL
, 
 218     0x09091b12UL
, 0x83839e1dUL
, 0x2c2c7458UL
, 0x1a1a2e34UL
, 
 219     0x1b1b2d36UL
, 0x6e6eb2dcUL
, 0x5a5aeeb4UL
, 0xa0a0fb5bUL
, 
 220     0x5252f6a4UL
, 0x3b3b4d76UL
, 0xd6d661b7UL
, 0xb3b3ce7dUL
, 
 221     0x29297b52UL
, 0xe3e33eddUL
, 0x2f2f715eUL
, 0x84849713UL
, 
 222     0x5353f5a6UL
, 0xd1d168b9UL
, 0x00000000UL
, 0xeded2cc1UL
, 
 223     0x20206040UL
, 0xfcfc1fe3UL
, 0xb1b1c879UL
, 0x5b5bedb6UL
, 
 224     0x6a6abed4UL
, 0xcbcb468dUL
, 0xbebed967UL
, 0x39394b72UL
, 
 225     0x4a4ade94UL
, 0x4c4cd498UL
, 0x5858e8b0UL
, 0xcfcf4a85UL
, 
 226     0xd0d06bbbUL
, 0xefef2ac5UL
, 0xaaaae54fUL
, 0xfbfb16edUL
, 
 227     0x4343c586UL
, 0x4d4dd79aUL
, 0x33335566UL
, 0x85859411UL
, 
 228     0x4545cf8aUL
, 0xf9f910e9UL
, 0x02020604UL
, 0x7f7f81feUL
, 
 229     0x5050f0a0UL
, 0x3c3c4478UL
, 0x9f9fba25UL
, 0xa8a8e34bUL
, 
 230     0x5151f3a2UL
, 0xa3a3fe5dUL
, 0x4040c080UL
, 0x8f8f8a05UL
, 
 231     0x9292ad3fUL
, 0x9d9dbc21UL
, 0x38384870UL
, 0xf5f504f1UL
, 
 232     0xbcbcdf63UL
, 0xb6b6c177UL
, 0xdada75afUL
, 0x21216342UL
, 
 233     0x10103020UL
, 0xffff1ae5UL
, 0xf3f30efdUL
, 0xd2d26dbfUL
, 
 234     0xcdcd4c81UL
, 0x0c0c1418UL
, 0x13133526UL
, 0xecec2fc3UL
, 
 235     0x5f5fe1beUL
, 0x9797a235UL
, 0x4444cc88UL
, 0x1717392eUL
, 
 236     0xc4c45793UL
, 0xa7a7f255UL
, 0x7e7e82fcUL
, 0x3d3d477aUL
, 
 237     0x6464acc8UL
, 0x5d5de7baUL
, 0x19192b32UL
, 0x737395e6UL
, 
 238     0x6060a0c0UL
, 0x81819819UL
, 0x4f4fd19eUL
, 0xdcdc7fa3UL
, 
 239     0x22226644UL
, 0x2a2a7e54UL
, 0x9090ab3bUL
, 0x8888830bUL
, 
 240     0x4646ca8cUL
, 0xeeee29c7UL
, 0xb8b8d36bUL
, 0x14143c28UL
, 
 241     0xdede79a7UL
, 0x5e5ee2bcUL
, 0x0b0b1d16UL
, 0xdbdb76adUL
, 
 242     0xe0e03bdbUL
, 0x32325664UL
, 0x3a3a4e74UL
, 0x0a0a1e14UL
, 
 243     0x4949db92UL
, 0x06060a0cUL
, 0x24246c48UL
, 0x5c5ce4b8UL
, 
 244     0xc2c25d9fUL
, 0xd3d36ebdUL
, 0xacacef43UL
, 0x6262a6c4UL
, 
 245     0x9191a839UL
, 0x9595a431UL
, 0xe4e437d3UL
, 0x79798bf2UL
, 
 246     0xe7e732d5UL
, 0xc8c8438bUL
, 0x3737596eUL
, 0x6d6db7daUL
, 
 247     0x8d8d8c01UL
, 0xd5d564b1UL
, 0x4e4ed29cUL
, 0xa9a9e049UL
, 
 248     0x6c6cb4d8UL
, 0x5656faacUL
, 0xf4f407f3UL
, 0xeaea25cfUL
, 
 249     0x6565afcaUL
, 0x7a7a8ef4UL
, 0xaeaee947UL
, 0x08081810UL
, 
 250     0xbabad56fUL
, 0x787888f0UL
, 0x25256f4aUL
, 0x2e2e725cUL
, 
 251     0x1c1c2438UL
, 0xa6a6f157UL
, 0xb4b4c773UL
, 0xc6c65197UL
, 
 252     0xe8e823cbUL
, 0xdddd7ca1UL
, 0x74749ce8UL
, 0x1f1f213eUL
, 
 253     0x4b4bdd96UL
, 0xbdbddc61UL
, 0x8b8b860dUL
, 0x8a8a850fUL
, 
 254     0x707090e0UL
, 0x3e3e427cUL
, 0xb5b5c471UL
, 0x6666aaccUL
, 
 255     0x4848d890UL
, 0x03030506UL
, 0xf6f601f7UL
, 0x0e0e121cUL
, 
 256     0x6161a3c2UL
, 0x35355f6aUL
, 0x5757f9aeUL
, 0xb9b9d069UL
, 
 257     0x86869117UL
, 0xc1c15899UL
, 0x1d1d273aUL
, 0x9e9eb927UL
, 
 258     0xe1e138d9UL
, 0xf8f813ebUL
, 0x9898b32bUL
, 0x11113322UL
, 
 259     0x6969bbd2UL
, 0xd9d970a9UL
, 0x8e8e8907UL
, 0x9494a733UL
, 
 260     0x9b9bb62dUL
, 0x1e1e223cUL
, 0x87879215UL
, 0xe9e920c9UL
, 
 261     0xcece4987UL
, 0x5555ffaaUL
, 0x28287850UL
, 0xdfdf7aa5UL
, 
 262     0x8c8c8f03UL
, 0xa1a1f859UL
, 0x89898009UL
, 0x0d0d171aUL
, 
 263     0xbfbfda65UL
, 0xe6e631d7UL
, 0x4242c684UL
, 0x6868b8d0UL
, 
 264     0x4141c382UL
, 0x9999b029UL
, 0x2d2d775aUL
, 0x0f0f111eUL
, 
 265     0xb0b0cb7bUL
, 0x5454fca8UL
, 0xbbbbd66dUL
, 0x16163a2cUL
, 
 267 static const unsigned int Te4
[256] = { 
 268     0x63636363UL
, 0x7c7c7c7cUL
, 0x77777777UL
, 0x7b7b7b7bUL
, 
 269     0xf2f2f2f2UL
, 0x6b6b6b6bUL
, 0x6f6f6f6fUL
, 0xc5c5c5c5UL
, 
 270     0x30303030UL
, 0x01010101UL
, 0x67676767UL
, 0x2b2b2b2bUL
, 
 271     0xfefefefeUL
, 0xd7d7d7d7UL
, 0xababababUL
, 0x76767676UL
, 
 272     0xcacacacaUL
, 0x82828282UL
, 0xc9c9c9c9UL
, 0x7d7d7d7dUL
, 
 273     0xfafafafaUL
, 0x59595959UL
, 0x47474747UL
, 0xf0f0f0f0UL
, 
 274     0xadadadadUL
, 0xd4d4d4d4UL
, 0xa2a2a2a2UL
, 0xafafafafUL
, 
 275     0x9c9c9c9cUL
, 0xa4a4a4a4UL
, 0x72727272UL
, 0xc0c0c0c0UL
, 
 276     0xb7b7b7b7UL
, 0xfdfdfdfdUL
, 0x93939393UL
, 0x26262626UL
, 
 277     0x36363636UL
, 0x3f3f3f3fUL
, 0xf7f7f7f7UL
, 0xccccccccUL
, 
 278     0x34343434UL
, 0xa5a5a5a5UL
, 0xe5e5e5e5UL
, 0xf1f1f1f1UL
, 
 279     0x71717171UL
, 0xd8d8d8d8UL
, 0x31313131UL
, 0x15151515UL
, 
 280     0x04040404UL
, 0xc7c7c7c7UL
, 0x23232323UL
, 0xc3c3c3c3UL
, 
 281     0x18181818UL
, 0x96969696UL
, 0x05050505UL
, 0x9a9a9a9aUL
, 
 282     0x07070707UL
, 0x12121212UL
, 0x80808080UL
, 0xe2e2e2e2UL
, 
 283     0xebebebebUL
, 0x27272727UL
, 0xb2b2b2b2UL
, 0x75757575UL
, 
 284     0x09090909UL
, 0x83838383UL
, 0x2c2c2c2cUL
, 0x1a1a1a1aUL
, 
 285     0x1b1b1b1bUL
, 0x6e6e6e6eUL
, 0x5a5a5a5aUL
, 0xa0a0a0a0UL
, 
 286     0x52525252UL
, 0x3b3b3b3bUL
, 0xd6d6d6d6UL
, 0xb3b3b3b3UL
, 
 287     0x29292929UL
, 0xe3e3e3e3UL
, 0x2f2f2f2fUL
, 0x84848484UL
, 
 288     0x53535353UL
, 0xd1d1d1d1UL
, 0x00000000UL
, 0xededededUL
, 
 289     0x20202020UL
, 0xfcfcfcfcUL
, 0xb1b1b1b1UL
, 0x5b5b5b5bUL
, 
 290     0x6a6a6a6aUL
, 0xcbcbcbcbUL
, 0xbebebebeUL
, 0x39393939UL
, 
 291     0x4a4a4a4aUL
, 0x4c4c4c4cUL
, 0x58585858UL
, 0xcfcfcfcfUL
, 
 292     0xd0d0d0d0UL
, 0xefefefefUL
, 0xaaaaaaaaUL
, 0xfbfbfbfbUL
, 
 293     0x43434343UL
, 0x4d4d4d4dUL
, 0x33333333UL
, 0x85858585UL
, 
 294     0x45454545UL
, 0xf9f9f9f9UL
, 0x02020202UL
, 0x7f7f7f7fUL
, 
 295     0x50505050UL
, 0x3c3c3c3cUL
, 0x9f9f9f9fUL
, 0xa8a8a8a8UL
, 
 296     0x51515151UL
, 0xa3a3a3a3UL
, 0x40404040UL
, 0x8f8f8f8fUL
, 
 297     0x92929292UL
, 0x9d9d9d9dUL
, 0x38383838UL
, 0xf5f5f5f5UL
, 
 298     0xbcbcbcbcUL
, 0xb6b6b6b6UL
, 0xdadadadaUL
, 0x21212121UL
, 
 299     0x10101010UL
, 0xffffffffUL
, 0xf3f3f3f3UL
, 0xd2d2d2d2UL
, 
 300     0xcdcdcdcdUL
, 0x0c0c0c0cUL
, 0x13131313UL
, 0xececececUL
, 
 301     0x5f5f5f5fUL
, 0x97979797UL
, 0x44444444UL
, 0x17171717UL
, 
 302     0xc4c4c4c4UL
, 0xa7a7a7a7UL
, 0x7e7e7e7eUL
, 0x3d3d3d3dUL
, 
 303     0x64646464UL
, 0x5d5d5d5dUL
, 0x19191919UL
, 0x73737373UL
, 
 304     0x60606060UL
, 0x81818181UL
, 0x4f4f4f4fUL
, 0xdcdcdcdcUL
, 
 305     0x22222222UL
, 0x2a2a2a2aUL
, 0x90909090UL
, 0x88888888UL
, 
 306     0x46464646UL
, 0xeeeeeeeeUL
, 0xb8b8b8b8UL
, 0x14141414UL
, 
 307     0xdedededeUL
, 0x5e5e5e5eUL
, 0x0b0b0b0bUL
, 0xdbdbdbdbUL
, 
 308     0xe0e0e0e0UL
, 0x32323232UL
, 0x3a3a3a3aUL
, 0x0a0a0a0aUL
, 
 309     0x49494949UL
, 0x06060606UL
, 0x24242424UL
, 0x5c5c5c5cUL
, 
 310     0xc2c2c2c2UL
, 0xd3d3d3d3UL
, 0xacacacacUL
, 0x62626262UL
, 
 311     0x91919191UL
, 0x95959595UL
, 0xe4e4e4e4UL
, 0x79797979UL
, 
 312     0xe7e7e7e7UL
, 0xc8c8c8c8UL
, 0x37373737UL
, 0x6d6d6d6dUL
, 
 313     0x8d8d8d8dUL
, 0xd5d5d5d5UL
, 0x4e4e4e4eUL
, 0xa9a9a9a9UL
, 
 314     0x6c6c6c6cUL
, 0x56565656UL
, 0xf4f4f4f4UL
, 0xeaeaeaeaUL
, 
 315     0x65656565UL
, 0x7a7a7a7aUL
, 0xaeaeaeaeUL
, 0x08080808UL
, 
 316     0xbabababaUL
, 0x78787878UL
, 0x25252525UL
, 0x2e2e2e2eUL
, 
 317     0x1c1c1c1cUL
, 0xa6a6a6a6UL
, 0xb4b4b4b4UL
, 0xc6c6c6c6UL
, 
 318     0xe8e8e8e8UL
, 0xddddddddUL
, 0x74747474UL
, 0x1f1f1f1fUL
, 
 319     0x4b4b4b4bUL
, 0xbdbdbdbdUL
, 0x8b8b8b8bUL
, 0x8a8a8a8aUL
, 
 320     0x70707070UL
, 0x3e3e3e3eUL
, 0xb5b5b5b5UL
, 0x66666666UL
, 
 321     0x48484848UL
, 0x03030303UL
, 0xf6f6f6f6UL
, 0x0e0e0e0eUL
, 
 322     0x61616161UL
, 0x35353535UL
, 0x57575757UL
, 0xb9b9b9b9UL
, 
 323     0x86868686UL
, 0xc1c1c1c1UL
, 0x1d1d1d1dUL
, 0x9e9e9e9eUL
, 
 324     0xe1e1e1e1UL
, 0xf8f8f8f8UL
, 0x98989898UL
, 0x11111111UL
, 
 325     0x69696969UL
, 0xd9d9d9d9UL
, 0x8e8e8e8eUL
, 0x94949494UL
, 
 326     0x9b9b9b9bUL
, 0x1e1e1e1eUL
, 0x87878787UL
, 0xe9e9e9e9UL
, 
 327     0xcecececeUL
, 0x55555555UL
, 0x28282828UL
, 0xdfdfdfdfUL
, 
 328     0x8c8c8c8cUL
, 0xa1a1a1a1UL
, 0x89898989UL
, 0x0d0d0d0dUL
, 
 329     0xbfbfbfbfUL
, 0xe6e6e6e6UL
, 0x42424242UL
, 0x68686868UL
, 
 330     0x41414141UL
, 0x99999999UL
, 0x2d2d2d2dUL
, 0x0f0f0f0fUL
, 
 331     0xb0b0b0b0UL
, 0x54545454UL
, 0xbbbbbbbbUL
, 0x16161616UL
, 
 333 static const unsigned int Td0
[256] = { 
 334     0x51f4a750UL
, 0x7e416553UL
, 0x1a17a4c3UL
, 0x3a275e96UL
, 
 335     0x3bab6bcbUL
, 0x1f9d45f1UL
, 0xacfa58abUL
, 0x4be30393UL
, 
 336     0x2030fa55UL
, 0xad766df6UL
, 0x88cc7691UL
, 0xf5024c25UL
, 
 337     0x4fe5d7fcUL
, 0xc52acbd7UL
, 0x26354480UL
, 0xb562a38fUL
, 
 338     0xdeb15a49UL
, 0x25ba1b67UL
, 0x45ea0e98UL
, 0x5dfec0e1UL
, 
 339     0xc32f7502UL
, 0x814cf012UL
, 0x8d4697a3UL
, 0x6bd3f9c6UL
, 
 340     0x038f5fe7UL
, 0x15929c95UL
, 0xbf6d7aebUL
, 0x955259daUL
, 
 341     0xd4be832dUL
, 0x587421d3UL
, 0x49e06929UL
, 0x8ec9c844UL
, 
 342     0x75c2896aUL
, 0xf48e7978UL
, 0x99583e6bUL
, 0x27b971ddUL
, 
 343     0xbee14fb6UL
, 0xf088ad17UL
, 0xc920ac66UL
, 0x7dce3ab4UL
, 
 344     0x63df4a18UL
, 0xe51a3182UL
, 0x97513360UL
, 0x62537f45UL
, 
 345     0xb16477e0UL
, 0xbb6bae84UL
, 0xfe81a01cUL
, 0xf9082b94UL
, 
 346     0x70486858UL
, 0x8f45fd19UL
, 0x94de6c87UL
, 0x527bf8b7UL
, 
 347     0xab73d323UL
, 0x724b02e2UL
, 0xe31f8f57UL
, 0x6655ab2aUL
, 
 348     0xb2eb2807UL
, 0x2fb5c203UL
, 0x86c57b9aUL
, 0xd33708a5UL
, 
 349     0x302887f2UL
, 0x23bfa5b2UL
, 0x02036abaUL
, 0xed16825cUL
, 
 350     0x8acf1c2bUL
, 0xa779b492UL
, 0xf307f2f0UL
, 0x4e69e2a1UL
, 
 351     0x65daf4cdUL
, 0x0605bed5UL
, 0xd134621fUL
, 0xc4a6fe8aUL
, 
 352     0x342e539dUL
, 0xa2f355a0UL
, 0x058ae132UL
, 0xa4f6eb75UL
, 
 353     0x0b83ec39UL
, 0x4060efaaUL
, 0x5e719f06UL
, 0xbd6e1051UL
, 
 354     0x3e218af9UL
, 0x96dd063dUL
, 0xdd3e05aeUL
, 0x4de6bd46UL
, 
 355     0x91548db5UL
, 0x71c45d05UL
, 0x0406d46fUL
, 0x605015ffUL
, 
 356     0x1998fb24UL
, 0xd6bde997UL
, 0x894043ccUL
, 0x67d99e77UL
, 
 357     0xb0e842bdUL
, 0x07898b88UL
, 0xe7195b38UL
, 0x79c8eedbUL
, 
 358     0xa17c0a47UL
, 0x7c420fe9UL
, 0xf8841ec9UL
, 0x00000000UL
, 
 359     0x09808683UL
, 0x322bed48UL
, 0x1e1170acUL
, 0x6c5a724eUL
, 
 360     0xfd0efffbUL
, 0x0f853856UL
, 0x3daed51eUL
, 0x362d3927UL
, 
 361     0x0a0fd964UL
, 0x685ca621UL
, 0x9b5b54d1UL
, 0x24362e3aUL
, 
 362     0x0c0a67b1UL
, 0x9357e70fUL
, 0xb4ee96d2UL
, 0x1b9b919eUL
, 
 363     0x80c0c54fUL
, 0x61dc20a2UL
, 0x5a774b69UL
, 0x1c121a16UL
, 
 364     0xe293ba0aUL
, 0xc0a02ae5UL
, 0x3c22e043UL
, 0x121b171dUL
, 
 365     0x0e090d0bUL
, 0xf28bc7adUL
, 0x2db6a8b9UL
, 0x141ea9c8UL
, 
 366     0x57f11985UL
, 0xaf75074cUL
, 0xee99ddbbUL
, 0xa37f60fdUL
, 
 367     0xf701269fUL
, 0x5c72f5bcUL
, 0x44663bc5UL
, 0x5bfb7e34UL
, 
 368     0x8b432976UL
, 0xcb23c6dcUL
, 0xb6edfc68UL
, 0xb8e4f163UL
, 
 369     0xd731dccaUL
, 0x42638510UL
, 0x13972240UL
, 0x84c61120UL
, 
 370     0x854a247dUL
, 0xd2bb3df8UL
, 0xaef93211UL
, 0xc729a16dUL
, 
 371     0x1d9e2f4bUL
, 0xdcb230f3UL
, 0x0d8652ecUL
, 0x77c1e3d0UL
, 
 372     0x2bb3166cUL
, 0xa970b999UL
, 0x119448faUL
, 0x47e96422UL
, 
 373     0xa8fc8cc4UL
, 0xa0f03f1aUL
, 0x567d2cd8UL
, 0x223390efUL
, 
 374     0x87494ec7UL
, 0xd938d1c1UL
, 0x8ccaa2feUL
, 0x98d40b36UL
, 
 375     0xa6f581cfUL
, 0xa57ade28UL
, 0xdab78e26UL
, 0x3fadbfa4UL
, 
 376     0x2c3a9de4UL
, 0x5078920dUL
, 0x6a5fcc9bUL
, 0x547e4662UL
, 
 377     0xf68d13c2UL
, 0x90d8b8e8UL
, 0x2e39f75eUL
, 0x82c3aff5UL
, 
 378     0x9f5d80beUL
, 0x69d0937cUL
, 0x6fd52da9UL
, 0xcf2512b3UL
, 
 379     0xc8ac993bUL
, 0x10187da7UL
, 0xe89c636eUL
, 0xdb3bbb7bUL
, 
 380     0xcd267809UL
, 0x6e5918f4UL
, 0xec9ab701UL
, 0x834f9aa8UL
, 
 381     0xe6956e65UL
, 0xaaffe67eUL
, 0x21bccf08UL
, 0xef15e8e6UL
, 
 382     0xbae79bd9UL
, 0x4a6f36ceUL
, 0xea9f09d4UL
, 0x29b07cd6UL
, 
 383     0x31a4b2afUL
, 0x2a3f2331UL
, 0xc6a59430UL
, 0x35a266c0UL
, 
 384     0x744ebc37UL
, 0xfc82caa6UL
, 0xe090d0b0UL
, 0x33a7d815UL
, 
 385     0xf104984aUL
, 0x41ecdaf7UL
, 0x7fcd500eUL
, 0x1791f62fUL
, 
 386     0x764dd68dUL
, 0x43efb04dUL
, 0xccaa4d54UL
, 0xe49604dfUL
, 
 387     0x9ed1b5e3UL
, 0x4c6a881bUL
, 0xc12c1fb8UL
, 0x4665517fUL
, 
 388     0x9d5eea04UL
, 0x018c355dUL
, 0xfa877473UL
, 0xfb0b412eUL
, 
 389     0xb3671d5aUL
, 0x92dbd252UL
, 0xe9105633UL
, 0x6dd64713UL
, 
 390     0x9ad7618cUL
, 0x37a10c7aUL
, 0x59f8148eUL
, 0xeb133c89UL
, 
 391     0xcea927eeUL
, 0xb761c935UL
, 0xe11ce5edUL
, 0x7a47b13cUL
, 
 392     0x9cd2df59UL
, 0x55f2733fUL
, 0x1814ce79UL
, 0x73c737bfUL
, 
 393     0x53f7cdeaUL
, 0x5ffdaa5bUL
, 0xdf3d6f14UL
, 0x7844db86UL
, 
 394     0xcaaff381UL
, 0xb968c43eUL
, 0x3824342cUL
, 0xc2a3405fUL
, 
 395     0x161dc372UL
, 0xbce2250cUL
, 0x283c498bUL
, 0xff0d9541UL
, 
 396     0x39a80171UL
, 0x080cb3deUL
, 0xd8b4e49cUL
, 0x6456c190UL
, 
 397     0x7bcb8461UL
, 0xd532b670UL
, 0x486c5c74UL
, 0xd0b85742UL
, 
 399 static const unsigned int Td1
[256] = { 
 400     0x5051f4a7UL
, 0x537e4165UL
, 0xc31a17a4UL
, 0x963a275eUL
, 
 401     0xcb3bab6bUL
, 0xf11f9d45UL
, 0xabacfa58UL
, 0x934be303UL
, 
 402     0x552030faUL
, 0xf6ad766dUL
, 0x9188cc76UL
, 0x25f5024cUL
, 
 403     0xfc4fe5d7UL
, 0xd7c52acbUL
, 0x80263544UL
, 0x8fb562a3UL
, 
 404     0x49deb15aUL
, 0x6725ba1bUL
, 0x9845ea0eUL
, 0xe15dfec0UL
, 
 405     0x02c32f75UL
, 0x12814cf0UL
, 0xa38d4697UL
, 0xc66bd3f9UL
, 
 406     0xe7038f5fUL
, 0x9515929cUL
, 0xebbf6d7aUL
, 0xda955259UL
, 
 407     0x2dd4be83UL
, 0xd3587421UL
, 0x2949e069UL
, 0x448ec9c8UL
, 
 408     0x6a75c289UL
, 0x78f48e79UL
, 0x6b99583eUL
, 0xdd27b971UL
, 
 409     0xb6bee14fUL
, 0x17f088adUL
, 0x66c920acUL
, 0xb47dce3aUL
, 
 410     0x1863df4aUL
, 0x82e51a31UL
, 0x60975133UL
, 0x4562537fUL
, 
 411     0xe0b16477UL
, 0x84bb6baeUL
, 0x1cfe81a0UL
, 0x94f9082bUL
, 
 412     0x58704868UL
, 0x198f45fdUL
, 0x8794de6cUL
, 0xb7527bf8UL
, 
 413     0x23ab73d3UL
, 0xe2724b02UL
, 0x57e31f8fUL
, 0x2a6655abUL
, 
 414     0x07b2eb28UL
, 0x032fb5c2UL
, 0x9a86c57bUL
, 0xa5d33708UL
, 
 415     0xf2302887UL
, 0xb223bfa5UL
, 0xba02036aUL
, 0x5ced1682UL
, 
 416     0x2b8acf1cUL
, 0x92a779b4UL
, 0xf0f307f2UL
, 0xa14e69e2UL
, 
 417     0xcd65daf4UL
, 0xd50605beUL
, 0x1fd13462UL
, 0x8ac4a6feUL
, 
 418     0x9d342e53UL
, 0xa0a2f355UL
, 0x32058ae1UL
, 0x75a4f6ebUL
, 
 419     0x390b83ecUL
, 0xaa4060efUL
, 0x065e719fUL
, 0x51bd6e10UL
, 
 420     0xf93e218aUL
, 0x3d96dd06UL
, 0xaedd3e05UL
, 0x464de6bdUL
, 
 421     0xb591548dUL
, 0x0571c45dUL
, 0x6f0406d4UL
, 0xff605015UL
, 
 422     0x241998fbUL
, 0x97d6bde9UL
, 0xcc894043UL
, 0x7767d99eUL
, 
 423     0xbdb0e842UL
, 0x8807898bUL
, 0x38e7195bUL
, 0xdb79c8eeUL
, 
 424     0x47a17c0aUL
, 0xe97c420fUL
, 0xc9f8841eUL
, 0x00000000UL
, 
 425     0x83098086UL
, 0x48322bedUL
, 0xac1e1170UL
, 0x4e6c5a72UL
, 
 426     0xfbfd0effUL
, 0x560f8538UL
, 0x1e3daed5UL
, 0x27362d39UL
, 
 427     0x640a0fd9UL
, 0x21685ca6UL
, 0xd19b5b54UL
, 0x3a24362eUL
, 
 428     0xb10c0a67UL
, 0x0f9357e7UL
, 0xd2b4ee96UL
, 0x9e1b9b91UL
, 
 429     0x4f80c0c5UL
, 0xa261dc20UL
, 0x695a774bUL
, 0x161c121aUL
, 
 430     0x0ae293baUL
, 0xe5c0a02aUL
, 0x433c22e0UL
, 0x1d121b17UL
, 
 431     0x0b0e090dUL
, 0xadf28bc7UL
, 0xb92db6a8UL
, 0xc8141ea9UL
, 
 432     0x8557f119UL
, 0x4caf7507UL
, 0xbbee99ddUL
, 0xfda37f60UL
, 
 433     0x9ff70126UL
, 0xbc5c72f5UL
, 0xc544663bUL
, 0x345bfb7eUL
, 
 434     0x768b4329UL
, 0xdccb23c6UL
, 0x68b6edfcUL
, 0x63b8e4f1UL
, 
 435     0xcad731dcUL
, 0x10426385UL
, 0x40139722UL
, 0x2084c611UL
, 
 436     0x7d854a24UL
, 0xf8d2bb3dUL
, 0x11aef932UL
, 0x6dc729a1UL
, 
 437     0x4b1d9e2fUL
, 0xf3dcb230UL
, 0xec0d8652UL
, 0xd077c1e3UL
, 
 438     0x6c2bb316UL
, 0x99a970b9UL
, 0xfa119448UL
, 0x2247e964UL
, 
 439     0xc4a8fc8cUL
, 0x1aa0f03fUL
, 0xd8567d2cUL
, 0xef223390UL
, 
 440     0xc787494eUL
, 0xc1d938d1UL
, 0xfe8ccaa2UL
, 0x3698d40bUL
, 
 441     0xcfa6f581UL
, 0x28a57adeUL
, 0x26dab78eUL
, 0xa43fadbfUL
, 
 442     0xe42c3a9dUL
, 0x0d507892UL
, 0x9b6a5fccUL
, 0x62547e46UL
, 
 443     0xc2f68d13UL
, 0xe890d8b8UL
, 0x5e2e39f7UL
, 0xf582c3afUL
, 
 444     0xbe9f5d80UL
, 0x7c69d093UL
, 0xa96fd52dUL
, 0xb3cf2512UL
, 
 445     0x3bc8ac99UL
, 0xa710187dUL
, 0x6ee89c63UL
, 0x7bdb3bbbUL
, 
 446     0x09cd2678UL
, 0xf46e5918UL
, 0x01ec9ab7UL
, 0xa8834f9aUL
, 
 447     0x65e6956eUL
, 0x7eaaffe6UL
, 0x0821bccfUL
, 0xe6ef15e8UL
, 
 448     0xd9bae79bUL
, 0xce4a6f36UL
, 0xd4ea9f09UL
, 0xd629b07cUL
, 
 449     0xaf31a4b2UL
, 0x312a3f23UL
, 0x30c6a594UL
, 0xc035a266UL
, 
 450     0x37744ebcUL
, 0xa6fc82caUL
, 0xb0e090d0UL
, 0x1533a7d8UL
, 
 451     0x4af10498UL
, 0xf741ecdaUL
, 0x0e7fcd50UL
, 0x2f1791f6UL
, 
 452     0x8d764dd6UL
, 0x4d43efb0UL
, 0x54ccaa4dUL
, 0xdfe49604UL
, 
 453     0xe39ed1b5UL
, 0x1b4c6a88UL
, 0xb8c12c1fUL
, 0x7f466551UL
, 
 454     0x049d5eeaUL
, 0x5d018c35UL
, 0x73fa8774UL
, 0x2efb0b41UL
, 
 455     0x5ab3671dUL
, 0x5292dbd2UL
, 0x33e91056UL
, 0x136dd647UL
, 
 456     0x8c9ad761UL
, 0x7a37a10cUL
, 0x8e59f814UL
, 0x89eb133cUL
, 
 457     0xeecea927UL
, 0x35b761c9UL
, 0xede11ce5UL
, 0x3c7a47b1UL
, 
 458     0x599cd2dfUL
, 0x3f55f273UL
, 0x791814ceUL
, 0xbf73c737UL
, 
 459     0xea53f7cdUL
, 0x5b5ffdaaUL
, 0x14df3d6fUL
, 0x867844dbUL
, 
 460     0x81caaff3UL
, 0x3eb968c4UL
, 0x2c382434UL
, 0x5fc2a340UL
, 
 461     0x72161dc3UL
, 0x0cbce225UL
, 0x8b283c49UL
, 0x41ff0d95UL
, 
 462     0x7139a801UL
, 0xde080cb3UL
, 0x9cd8b4e4UL
, 0x906456c1UL
, 
 463     0x617bcb84UL
, 0x70d532b6UL
, 0x74486c5cUL
, 0x42d0b857UL
, 
 465 static const unsigned int Td2
[256] = { 
 466     0xa75051f4UL
, 0x65537e41UL
, 0xa4c31a17UL
, 0x5e963a27UL
, 
 467     0x6bcb3babUL
, 0x45f11f9dUL
, 0x58abacfaUL
, 0x03934be3UL
, 
 468     0xfa552030UL
, 0x6df6ad76UL
, 0x769188ccUL
, 0x4c25f502UL
, 
 469     0xd7fc4fe5UL
, 0xcbd7c52aUL
, 0x44802635UL
, 0xa38fb562UL
, 
 470     0x5a49deb1UL
, 0x1b6725baUL
, 0x0e9845eaUL
, 0xc0e15dfeUL
, 
 471     0x7502c32fUL
, 0xf012814cUL
, 0x97a38d46UL
, 0xf9c66bd3UL
, 
 472     0x5fe7038fUL
, 0x9c951592UL
, 0x7aebbf6dUL
, 0x59da9552UL
, 
 473     0x832dd4beUL
, 0x21d35874UL
, 0x692949e0UL
, 0xc8448ec9UL
, 
 474     0x896a75c2UL
, 0x7978f48eUL
, 0x3e6b9958UL
, 0x71dd27b9UL
, 
 475     0x4fb6bee1UL
, 0xad17f088UL
, 0xac66c920UL
, 0x3ab47dceUL
, 
 476     0x4a1863dfUL
, 0x3182e51aUL
, 0x33609751UL
, 0x7f456253UL
, 
 477     0x77e0b164UL
, 0xae84bb6bUL
, 0xa01cfe81UL
, 0x2b94f908UL
, 
 478     0x68587048UL
, 0xfd198f45UL
, 0x6c8794deUL
, 0xf8b7527bUL
, 
 479     0xd323ab73UL
, 0x02e2724bUL
, 0x8f57e31fUL
, 0xab2a6655UL
, 
 480     0x2807b2ebUL
, 0xc2032fb5UL
, 0x7b9a86c5UL
, 0x08a5d337UL
, 
 481     0x87f23028UL
, 0xa5b223bfUL
, 0x6aba0203UL
, 0x825ced16UL
, 
 482     0x1c2b8acfUL
, 0xb492a779UL
, 0xf2f0f307UL
, 0xe2a14e69UL
, 
 483     0xf4cd65daUL
, 0xbed50605UL
, 0x621fd134UL
, 0xfe8ac4a6UL
, 
 484     0x539d342eUL
, 0x55a0a2f3UL
, 0xe132058aUL
, 0xeb75a4f6UL
, 
 485     0xec390b83UL
, 0xefaa4060UL
, 0x9f065e71UL
, 0x1051bd6eUL
, 
 486     0x8af93e21UL
, 0x063d96ddUL
, 0x05aedd3eUL
, 0xbd464de6UL
, 
 487     0x8db59154UL
, 0x5d0571c4UL
, 0xd46f0406UL
, 0x15ff6050UL
, 
 488     0xfb241998UL
, 0xe997d6bdUL
, 0x43cc8940UL
, 0x9e7767d9UL
, 
 489     0x42bdb0e8UL
, 0x8b880789UL
, 0x5b38e719UL
, 0xeedb79c8UL
, 
 490     0x0a47a17cUL
, 0x0fe97c42UL
, 0x1ec9f884UL
, 0x00000000UL
, 
 491     0x86830980UL
, 0xed48322bUL
, 0x70ac1e11UL
, 0x724e6c5aUL
, 
 492     0xfffbfd0eUL
, 0x38560f85UL
, 0xd51e3daeUL
, 0x3927362dUL
, 
 493     0xd9640a0fUL
, 0xa621685cUL
, 0x54d19b5bUL
, 0x2e3a2436UL
, 
 494     0x67b10c0aUL
, 0xe70f9357UL
, 0x96d2b4eeUL
, 0x919e1b9bUL
, 
 495     0xc54f80c0UL
, 0x20a261dcUL
, 0x4b695a77UL
, 0x1a161c12UL
, 
 496     0xba0ae293UL
, 0x2ae5c0a0UL
, 0xe0433c22UL
, 0x171d121bUL
, 
 497     0x0d0b0e09UL
, 0xc7adf28bUL
, 0xa8b92db6UL
, 0xa9c8141eUL
, 
 498     0x198557f1UL
, 0x074caf75UL
, 0xddbbee99UL
, 0x60fda37fUL
, 
 499     0x269ff701UL
, 0xf5bc5c72UL
, 0x3bc54466UL
, 0x7e345bfbUL
, 
 500     0x29768b43UL
, 0xc6dccb23UL
, 0xfc68b6edUL
, 0xf163b8e4UL
, 
 501     0xdccad731UL
, 0x85104263UL
, 0x22401397UL
, 0x112084c6UL
, 
 502     0x247d854aUL
, 0x3df8d2bbUL
, 0x3211aef9UL
, 0xa16dc729UL
, 
 503     0x2f4b1d9eUL
, 0x30f3dcb2UL
, 0x52ec0d86UL
, 0xe3d077c1UL
, 
 504     0x166c2bb3UL
, 0xb999a970UL
, 0x48fa1194UL
, 0x642247e9UL
, 
 505     0x8cc4a8fcUL
, 0x3f1aa0f0UL
, 0x2cd8567dUL
, 0x90ef2233UL
, 
 506     0x4ec78749UL
, 0xd1c1d938UL
, 0xa2fe8ccaUL
, 0x0b3698d4UL
, 
 507     0x81cfa6f5UL
, 0xde28a57aUL
, 0x8e26dab7UL
, 0xbfa43fadUL
, 
 508     0x9de42c3aUL
, 0x920d5078UL
, 0xcc9b6a5fUL
, 0x4662547eUL
, 
 509     0x13c2f68dUL
, 0xb8e890d8UL
, 0xf75e2e39UL
, 0xaff582c3UL
, 
 510     0x80be9f5dUL
, 0x937c69d0UL
, 0x2da96fd5UL
, 0x12b3cf25UL
, 
 511     0x993bc8acUL
, 0x7da71018UL
, 0x636ee89cUL
, 0xbb7bdb3bUL
, 
 512     0x7809cd26UL
, 0x18f46e59UL
, 0xb701ec9aUL
, 0x9aa8834fUL
, 
 513     0x6e65e695UL
, 0xe67eaaffUL
, 0xcf0821bcUL
, 0xe8e6ef15UL
, 
 514     0x9bd9bae7UL
, 0x36ce4a6fUL
, 0x09d4ea9fUL
, 0x7cd629b0UL
, 
 515     0xb2af31a4UL
, 0x23312a3fUL
, 0x9430c6a5UL
, 0x66c035a2UL
, 
 516     0xbc37744eUL
, 0xcaa6fc82UL
, 0xd0b0e090UL
, 0xd81533a7UL
, 
 517     0x984af104UL
, 0xdaf741ecUL
, 0x500e7fcdUL
, 0xf62f1791UL
, 
 518     0xd68d764dUL
, 0xb04d43efUL
, 0x4d54ccaaUL
, 0x04dfe496UL
, 
 519     0xb5e39ed1UL
, 0x881b4c6aUL
, 0x1fb8c12cUL
, 0x517f4665UL
, 
 520     0xea049d5eUL
, 0x355d018cUL
, 0x7473fa87UL
, 0x412efb0bUL
, 
 521     0x1d5ab367UL
, 0xd25292dbUL
, 0x5633e910UL
, 0x47136dd6UL
, 
 522     0x618c9ad7UL
, 0x0c7a37a1UL
, 0x148e59f8UL
, 0x3c89eb13UL
, 
 523     0x27eecea9UL
, 0xc935b761UL
, 0xe5ede11cUL
, 0xb13c7a47UL
, 
 524     0xdf599cd2UL
, 0x733f55f2UL
, 0xce791814UL
, 0x37bf73c7UL
, 
 525     0xcdea53f7UL
, 0xaa5b5ffdUL
, 0x6f14df3dUL
, 0xdb867844UL
, 
 526     0xf381caafUL
, 0xc43eb968UL
, 0x342c3824UL
, 0x405fc2a3UL
, 
 527     0xc372161dUL
, 0x250cbce2UL
, 0x498b283cUL
, 0x9541ff0dUL
, 
 528     0x017139a8UL
, 0xb3de080cUL
, 0xe49cd8b4UL
, 0xc1906456UL
, 
 529     0x84617bcbUL
, 0xb670d532UL
, 0x5c74486cUL
, 0x5742d0b8UL
, 
 531 static const unsigned int Td3
[256] = { 
 532     0xf4a75051UL
, 0x4165537eUL
, 0x17a4c31aUL
, 0x275e963aUL
, 
 533     0xab6bcb3bUL
, 0x9d45f11fUL
, 0xfa58abacUL
, 0xe303934bUL
, 
 534     0x30fa5520UL
, 0x766df6adUL
, 0xcc769188UL
, 0x024c25f5UL
, 
 535     0xe5d7fc4fUL
, 0x2acbd7c5UL
, 0x35448026UL
, 0x62a38fb5UL
, 
 536     0xb15a49deUL
, 0xba1b6725UL
, 0xea0e9845UL
, 0xfec0e15dUL
, 
 537     0x2f7502c3UL
, 0x4cf01281UL
, 0x4697a38dUL
, 0xd3f9c66bUL
, 
 538     0x8f5fe703UL
, 0x929c9515UL
, 0x6d7aebbfUL
, 0x5259da95UL
, 
 539     0xbe832dd4UL
, 0x7421d358UL
, 0xe0692949UL
, 0xc9c8448eUL
, 
 540     0xc2896a75UL
, 0x8e7978f4UL
, 0x583e6b99UL
, 0xb971dd27UL
, 
 541     0xe14fb6beUL
, 0x88ad17f0UL
, 0x20ac66c9UL
, 0xce3ab47dUL
, 
 542     0xdf4a1863UL
, 0x1a3182e5UL
, 0x51336097UL
, 0x537f4562UL
, 
 543     0x6477e0b1UL
, 0x6bae84bbUL
, 0x81a01cfeUL
, 0x082b94f9UL
, 
 544     0x48685870UL
, 0x45fd198fUL
, 0xde6c8794UL
, 0x7bf8b752UL
, 
 545     0x73d323abUL
, 0x4b02e272UL
, 0x1f8f57e3UL
, 0x55ab2a66UL
, 
 546     0xeb2807b2UL
, 0xb5c2032fUL
, 0xc57b9a86UL
, 0x3708a5d3UL
, 
 547     0x2887f230UL
, 0xbfa5b223UL
, 0x036aba02UL
, 0x16825cedUL
, 
 548     0xcf1c2b8aUL
, 0x79b492a7UL
, 0x07f2f0f3UL
, 0x69e2a14eUL
, 
 549     0xdaf4cd65UL
, 0x05bed506UL
, 0x34621fd1UL
, 0xa6fe8ac4UL
, 
 550     0x2e539d34UL
, 0xf355a0a2UL
, 0x8ae13205UL
, 0xf6eb75a4UL
, 
 551     0x83ec390bUL
, 0x60efaa40UL
, 0x719f065eUL
, 0x6e1051bdUL
, 
 552     0x218af93eUL
, 0xdd063d96UL
, 0x3e05aeddUL
, 0xe6bd464dUL
, 
 553     0x548db591UL
, 0xc45d0571UL
, 0x06d46f04UL
, 0x5015ff60UL
, 
 554     0x98fb2419UL
, 0xbde997d6UL
, 0x4043cc89UL
, 0xd99e7767UL
, 
 555     0xe842bdb0UL
, 0x898b8807UL
, 0x195b38e7UL
, 0xc8eedb79UL
, 
 556     0x7c0a47a1UL
, 0x420fe97cUL
, 0x841ec9f8UL
, 0x00000000UL
, 
 557     0x80868309UL
, 0x2bed4832UL
, 0x1170ac1eUL
, 0x5a724e6cUL
, 
 558     0x0efffbfdUL
, 0x8538560fUL
, 0xaed51e3dUL
, 0x2d392736UL
, 
 559     0x0fd9640aUL
, 0x5ca62168UL
, 0x5b54d19bUL
, 0x362e3a24UL
, 
 560     0x0a67b10cUL
, 0x57e70f93UL
, 0xee96d2b4UL
, 0x9b919e1bUL
, 
 561     0xc0c54f80UL
, 0xdc20a261UL
, 0x774b695aUL
, 0x121a161cUL
, 
 562     0x93ba0ae2UL
, 0xa02ae5c0UL
, 0x22e0433cUL
, 0x1b171d12UL
, 
 563     0x090d0b0eUL
, 0x8bc7adf2UL
, 0xb6a8b92dUL
, 0x1ea9c814UL
, 
 564     0xf1198557UL
, 0x75074cafUL
, 0x99ddbbeeUL
, 0x7f60fda3UL
, 
 565     0x01269ff7UL
, 0x72f5bc5cUL
, 0x663bc544UL
, 0xfb7e345bUL
, 
 566     0x4329768bUL
, 0x23c6dccbUL
, 0xedfc68b6UL
, 0xe4f163b8UL
, 
 567     0x31dccad7UL
, 0x63851042UL
, 0x97224013UL
, 0xc6112084UL
, 
 568     0x4a247d85UL
, 0xbb3df8d2UL
, 0xf93211aeUL
, 0x29a16dc7UL
, 
 569     0x9e2f4b1dUL
, 0xb230f3dcUL
, 0x8652ec0dUL
, 0xc1e3d077UL
, 
 570     0xb3166c2bUL
, 0x70b999a9UL
, 0x9448fa11UL
, 0xe9642247UL
, 
 571     0xfc8cc4a8UL
, 0xf03f1aa0UL
, 0x7d2cd856UL
, 0x3390ef22UL
, 
 572     0x494ec787UL
, 0x38d1c1d9UL
, 0xcaa2fe8cUL
, 0xd40b3698UL
, 
 573     0xf581cfa6UL
, 0x7ade28a5UL
, 0xb78e26daUL
, 0xadbfa43fUL
, 
 574     0x3a9de42cUL
, 0x78920d50UL
, 0x5fcc9b6aUL
, 0x7e466254UL
, 
 575     0x8d13c2f6UL
, 0xd8b8e890UL
, 0x39f75e2eUL
, 0xc3aff582UL
, 
 576     0x5d80be9fUL
, 0xd0937c69UL
, 0xd52da96fUL
, 0x2512b3cfUL
, 
 577     0xac993bc8UL
, 0x187da710UL
, 0x9c636ee8UL
, 0x3bbb7bdbUL
, 
 578     0x267809cdUL
, 0x5918f46eUL
, 0x9ab701ecUL
, 0x4f9aa883UL
, 
 579     0x956e65e6UL
, 0xffe67eaaUL
, 0xbccf0821UL
, 0x15e8e6efUL
, 
 580     0xe79bd9baUL
, 0x6f36ce4aUL
, 0x9f09d4eaUL
, 0xb07cd629UL
, 
 581     0xa4b2af31UL
, 0x3f23312aUL
, 0xa59430c6UL
, 0xa266c035UL
, 
 582     0x4ebc3774UL
, 0x82caa6fcUL
, 0x90d0b0e0UL
, 0xa7d81533UL
, 
 583     0x04984af1UL
, 0xecdaf741UL
, 0xcd500e7fUL
, 0x91f62f17UL
, 
 584     0x4dd68d76UL
, 0xefb04d43UL
, 0xaa4d54ccUL
, 0x9604dfe4UL
, 
 585     0xd1b5e39eUL
, 0x6a881b4cUL
, 0x2c1fb8c1UL
, 0x65517f46UL
, 
 586     0x5eea049dUL
, 0x8c355d01UL
, 0x877473faUL
, 0x0b412efbUL
, 
 587     0x671d5ab3UL
, 0xdbd25292UL
, 0x105633e9UL
, 0xd647136dUL
, 
 588     0xd7618c9aUL
, 0xa10c7a37UL
, 0xf8148e59UL
, 0x133c89ebUL
, 
 589     0xa927eeceUL
, 0x61c935b7UL
, 0x1ce5ede1UL
, 0x47b13c7aUL
, 
 590     0xd2df599cUL
, 0xf2733f55UL
, 0x14ce7918UL
, 0xc737bf73UL
, 
 591     0xf7cdea53UL
, 0xfdaa5b5fUL
, 0x3d6f14dfUL
, 0x44db8678UL
, 
 592     0xaff381caUL
, 0x68c43eb9UL
, 0x24342c38UL
, 0xa3405fc2UL
, 
 593     0x1dc37216UL
, 0xe2250cbcUL
, 0x3c498b28UL
, 0x0d9541ffUL
, 
 594     0xa8017139UL
, 0x0cb3de08UL
, 0xb4e49cd8UL
, 0x56c19064UL
, 
 595     0xcb84617bUL
, 0x32b670d5UL
, 0x6c5c7448UL
, 0xb85742d0UL
, 
 597 static const unsigned int Td4
[256] = { 
 598     0x52525252UL
, 0x09090909UL
, 0x6a6a6a6aUL
, 0xd5d5d5d5UL
, 
 599     0x30303030UL
, 0x36363636UL
, 0xa5a5a5a5UL
, 0x38383838UL
, 
 600     0xbfbfbfbfUL
, 0x40404040UL
, 0xa3a3a3a3UL
, 0x9e9e9e9eUL
, 
 601     0x81818181UL
, 0xf3f3f3f3UL
, 0xd7d7d7d7UL
, 0xfbfbfbfbUL
, 
 602     0x7c7c7c7cUL
, 0xe3e3e3e3UL
, 0x39393939UL
, 0x82828282UL
, 
 603     0x9b9b9b9bUL
, 0x2f2f2f2fUL
, 0xffffffffUL
, 0x87878787UL
, 
 604     0x34343434UL
, 0x8e8e8e8eUL
, 0x43434343UL
, 0x44444444UL
, 
 605     0xc4c4c4c4UL
, 0xdedededeUL
, 0xe9e9e9e9UL
, 0xcbcbcbcbUL
, 
 606     0x54545454UL
, 0x7b7b7b7bUL
, 0x94949494UL
, 0x32323232UL
, 
 607     0xa6a6a6a6UL
, 0xc2c2c2c2UL
, 0x23232323UL
, 0x3d3d3d3dUL
, 
 608     0xeeeeeeeeUL
, 0x4c4c4c4cUL
, 0x95959595UL
, 0x0b0b0b0bUL
, 
 609     0x42424242UL
, 0xfafafafaUL
, 0xc3c3c3c3UL
, 0x4e4e4e4eUL
, 
 610     0x08080808UL
, 0x2e2e2e2eUL
, 0xa1a1a1a1UL
, 0x66666666UL
, 
 611     0x28282828UL
, 0xd9d9d9d9UL
, 0x24242424UL
, 0xb2b2b2b2UL
, 
 612     0x76767676UL
, 0x5b5b5b5bUL
, 0xa2a2a2a2UL
, 0x49494949UL
, 
 613     0x6d6d6d6dUL
, 0x8b8b8b8bUL
, 0xd1d1d1d1UL
, 0x25252525UL
, 
 614     0x72727272UL
, 0xf8f8f8f8UL
, 0xf6f6f6f6UL
, 0x64646464UL
, 
 615     0x86868686UL
, 0x68686868UL
, 0x98989898UL
, 0x16161616UL
, 
 616     0xd4d4d4d4UL
, 0xa4a4a4a4UL
, 0x5c5c5c5cUL
, 0xccccccccUL
, 
 617     0x5d5d5d5dUL
, 0x65656565UL
, 0xb6b6b6b6UL
, 0x92929292UL
, 
 618     0x6c6c6c6cUL
, 0x70707070UL
, 0x48484848UL
, 0x50505050UL
, 
 619     0xfdfdfdfdUL
, 0xededededUL
, 0xb9b9b9b9UL
, 0xdadadadaUL
, 
 620     0x5e5e5e5eUL
, 0x15151515UL
, 0x46464646UL
, 0x57575757UL
, 
 621     0xa7a7a7a7UL
, 0x8d8d8d8dUL
, 0x9d9d9d9dUL
, 0x84848484UL
, 
 622     0x90909090UL
, 0xd8d8d8d8UL
, 0xababababUL
, 0x00000000UL
, 
 623     0x8c8c8c8cUL
, 0xbcbcbcbcUL
, 0xd3d3d3d3UL
, 0x0a0a0a0aUL
, 
 624     0xf7f7f7f7UL
, 0xe4e4e4e4UL
, 0x58585858UL
, 0x05050505UL
, 
 625     0xb8b8b8b8UL
, 0xb3b3b3b3UL
, 0x45454545UL
, 0x06060606UL
, 
 626     0xd0d0d0d0UL
, 0x2c2c2c2cUL
, 0x1e1e1e1eUL
, 0x8f8f8f8fUL
, 
 627     0xcacacacaUL
, 0x3f3f3f3fUL
, 0x0f0f0f0fUL
, 0x02020202UL
, 
 628     0xc1c1c1c1UL
, 0xafafafafUL
, 0xbdbdbdbdUL
, 0x03030303UL
, 
 629     0x01010101UL
, 0x13131313UL
, 0x8a8a8a8aUL
, 0x6b6b6b6bUL
, 
 630     0x3a3a3a3aUL
, 0x91919191UL
, 0x11111111UL
, 0x41414141UL
, 
 631     0x4f4f4f4fUL
, 0x67676767UL
, 0xdcdcdcdcUL
, 0xeaeaeaeaUL
, 
 632     0x97979797UL
, 0xf2f2f2f2UL
, 0xcfcfcfcfUL
, 0xcecececeUL
, 
 633     0xf0f0f0f0UL
, 0xb4b4b4b4UL
, 0xe6e6e6e6UL
, 0x73737373UL
, 
 634     0x96969696UL
, 0xacacacacUL
, 0x74747474UL
, 0x22222222UL
, 
 635     0xe7e7e7e7UL
, 0xadadadadUL
, 0x35353535UL
, 0x85858585UL
, 
 636     0xe2e2e2e2UL
, 0xf9f9f9f9UL
, 0x37373737UL
, 0xe8e8e8e8UL
, 
 637     0x1c1c1c1cUL
, 0x75757575UL
, 0xdfdfdfdfUL
, 0x6e6e6e6eUL
, 
 638     0x47474747UL
, 0xf1f1f1f1UL
, 0x1a1a1a1aUL
, 0x71717171UL
, 
 639     0x1d1d1d1dUL
, 0x29292929UL
, 0xc5c5c5c5UL
, 0x89898989UL
, 
 640     0x6f6f6f6fUL
, 0xb7b7b7b7UL
, 0x62626262UL
, 0x0e0e0e0eUL
, 
 641     0xaaaaaaaaUL
, 0x18181818UL
, 0xbebebebeUL
, 0x1b1b1b1bUL
, 
 642     0xfcfcfcfcUL
, 0x56565656UL
, 0x3e3e3e3eUL
, 0x4b4b4b4bUL
, 
 643     0xc6c6c6c6UL
, 0xd2d2d2d2UL
, 0x79797979UL
, 0x20202020UL
, 
 644     0x9a9a9a9aUL
, 0xdbdbdbdbUL
, 0xc0c0c0c0UL
, 0xfefefefeUL
, 
 645     0x78787878UL
, 0xcdcdcdcdUL
, 0x5a5a5a5aUL
, 0xf4f4f4f4UL
, 
 646     0x1f1f1f1fUL
, 0xddddddddUL
, 0xa8a8a8a8UL
, 0x33333333UL
, 
 647     0x88888888UL
, 0x07070707UL
, 0xc7c7c7c7UL
, 0x31313131UL
, 
 648     0xb1b1b1b1UL
, 0x12121212UL
, 0x10101010UL
, 0x59595959UL
, 
 649     0x27272727UL
, 0x80808080UL
, 0xececececUL
, 0x5f5f5f5fUL
, 
 650     0x60606060UL
, 0x51515151UL
, 0x7f7f7f7fUL
, 0xa9a9a9a9UL
, 
 651     0x19191919UL
, 0xb5b5b5b5UL
, 0x4a4a4a4aUL
, 0x0d0d0d0dUL
, 
 652     0x2d2d2d2dUL
, 0xe5e5e5e5UL
, 0x7a7a7a7aUL
, 0x9f9f9f9fUL
, 
 653     0x93939393UL
, 0xc9c9c9c9UL
, 0x9c9c9c9cUL
, 0xefefefefUL
, 
 654     0xa0a0a0a0UL
, 0xe0e0e0e0UL
, 0x3b3b3b3bUL
, 0x4d4d4d4dUL
, 
 655     0xaeaeaeaeUL
, 0x2a2a2a2aUL
, 0xf5f5f5f5UL
, 0xb0b0b0b0UL
, 
 656     0xc8c8c8c8UL
, 0xebebebebUL
, 0xbbbbbbbbUL
, 0x3c3c3c3cUL
, 
 657     0x83838383UL
, 0x53535353UL
, 0x99999999UL
, 0x61616161UL
, 
 658     0x17171717UL
, 0x2b2b2b2bUL
, 0x04040404UL
, 0x7e7e7e7eUL
, 
 659     0xbabababaUL
, 0x77777777UL
, 0xd6d6d6d6UL
, 0x26262626UL
, 
 660     0xe1e1e1e1UL
, 0x69696969UL
, 0x14141414UL
, 0x63636363UL
, 
 661     0x55555555UL
, 0x21212121UL
, 0x0c0c0c0cUL
, 0x7d7d7d7dUL
, 
 663 static const unsigned int rcon
[] = { 
 664     0x01000000UL
, 0x02000000UL
, 0x04000000UL
, 0x08000000UL
, 
 665     0x10000000UL
, 0x20000000UL
, 0x40000000UL
, 0x80000000UL
, 
 666     0x1B000000UL
, 0x36000000UL
, 
 669 #define GETU32(pt) (((unsigned int)(pt)[0] << 24) ^ \ 
 670                     ((unsigned int)(pt)[1] << 16) ^ \ 
 671                     ((unsigned int)(pt)[2] <<  8) ^ \ 
 672                     ((unsigned int)(pt)[3])) 
 674 #define PUTU32(ct, st) { (ct)[0] = (unsigned char)((st) >> 24); \ 
 675                          (ct)[1] = (unsigned char)((st) >> 16); \ 
 676                          (ct)[2] = (unsigned char)((st) >>  8); \ 
 677                          (ct)[3] = (unsigned char)(st); } 
 680 * Expand the cipher key into the encryption key schedule and return the 
 681 * number of rounds for the given cipher key size. 
 683 int aes_setkey_enc(unsigned int rk
[], const unsigned char cipherKey
[], int keyBytes
) 
 688     rk
[0] = GETU32(cipherKey     
); 
 689     rk
[1] = GETU32(cipherKey 
+  4); 
 690     rk
[2] = GETU32(cipherKey 
+  8); 
 691     rk
[3] = GETU32(cipherKey 
+ 12); 
 692     if (keyBytes 
== 16) { // 128 bits 
 696                 (Te4
[(temp 
>> 16) & 0xff] & 0xff000000) ^ 
 697                 (Te4
[(temp 
>>  8) & 0xff] & 0x00ff0000) ^ 
 698                 (Te4
[(temp      
) & 0xff] & 0x0000ff00) ^ 
 699                 (Te4
[(temp 
>> 24)       ] & 0x000000ff) ^ 
 701             rk
[5] = rk
[1] ^ rk
[4]; 
 702             rk
[6] = rk
[2] ^ rk
[5]; 
 703             rk
[7] = rk
[3] ^ rk
[6]; 
 710     rk
[4] = GETU32(cipherKey 
+ 16); 
 711     rk
[5] = GETU32(cipherKey 
+ 20); 
 712     if (keyBytes 
== 24) { // 192 bits 
 716                 (Te4
[(temp 
>> 16) & 0xff] & 0xff000000) ^ 
 717                 (Te4
[(temp 
>>  8) & 0xff] & 0x00ff0000) ^ 
 718                 (Te4
[(temp      
) & 0xff] & 0x0000ff00) ^ 
 719                 (Te4
[(temp 
>> 24)       ] & 0x000000ff) ^ 
 721             rk
[ 7] = rk
[ 1] ^ rk
[ 6]; 
 722             rk
[ 8] = rk
[ 2] ^ rk
[ 7]; 
 723             rk
[ 9] = rk
[ 3] ^ rk
[ 8]; 
 727             rk
[10] = rk
[ 4] ^ rk
[ 9]; 
 728             rk
[11] = rk
[ 5] ^ rk
[10]; 
 732     rk
[6] = GETU32(cipherKey 
+ 24); 
 733     rk
[7] = GETU32(cipherKey 
+ 28); 
 734     if (keyBytes 
== 32) { // 256 bits 
 738                 (Te4
[(temp 
>> 16) & 0xff] & 0xff000000) ^ 
 739                 (Te4
[(temp 
>>  8) & 0xff] & 0x00ff0000) ^ 
 740                 (Te4
[(temp      
) & 0xff] & 0x0000ff00) ^ 
 741                 (Te4
[(temp 
>> 24)       ] & 0x000000ff) ^ 
 743             rk
[ 9] = rk
[ 1] ^ rk
[ 8]; 
 744             rk
[10] = rk
[ 2] ^ rk
[ 9]; 
 745             rk
[11] = rk
[ 3] ^ rk
[10]; 
 751                 (Te4
[(temp 
>> 24)       ] & 0xff000000) ^ 
 752                 (Te4
[(temp 
>> 16) & 0xff] & 0x00ff0000) ^ 
 753                 (Te4
[(temp 
>>  8) & 0xff] & 0x0000ff00) ^ 
 754                 (Te4
[(temp      
) & 0xff] & 0x000000ff); 
 755             rk
[13] = rk
[ 5] ^ rk
[12]; 
 756             rk
[14] = rk
[ 6] ^ rk
[13]; 
 757             rk
[15] = rk
[ 7] ^ rk
[14]; 
 766 * Expand the cipher key into encryption and decryption key schedule and 
 767 * return the number of rounds for the given cipher key size. 
 769 int AesGenKeySched(unsigned int rk
[], unsigned int rrk
[], const unsigned char cipherKey
[], int keyBytes
) 
 773     // expand the cipher key 
 774     Nr 
= aes_setkey_enc(rk
, cipherKey
, keyBytes
); 
 775     // invert the order of the first round keys 
 783     * apply the inverse MixColumn transform to all round keys but the first 
 786     for (i 
= 1; i 
< Nr
; i
++) { 
 790             Td0
[Te4
[(rk
[0] >> 24)       ] & 0xff] ^ 
 791             Td1
[Te4
[(rk
[0] >> 16) & 0xff] & 0xff] ^ 
 792             Td2
[Te4
[(rk
[0] >>  8) & 0xff] & 0xff] ^ 
 793             Td3
[Te4
[(rk
[0]      ) & 0xff] & 0xff]; 
 795             Td0
[Te4
[(rk
[1] >> 24)       ] & 0xff] ^ 
 796             Td1
[Te4
[(rk
[1] >> 16) & 0xff] & 0xff] ^ 
 797             Td2
[Te4
[(rk
[1] >>  8) & 0xff] & 0xff] ^ 
 798             Td3
[Te4
[(rk
[1]      ) & 0xff] & 0xff]; 
 800             Td0
[Te4
[(rk
[2] >> 24)       ] & 0xff] ^ 
 801             Td1
[Te4
[(rk
[2] >> 16) & 0xff] & 0xff] ^ 
 802             Td2
[Te4
[(rk
[2] >>  8) & 0xff] & 0xff] ^ 
 803             Td3
[Te4
[(rk
[2]      ) & 0xff] & 0xff]; 
 805             Td0
[Te4
[(rk
[3] >> 24)       ] & 0xff] ^ 
 806             Td1
[Te4
[(rk
[3] >> 16) & 0xff] & 0xff] ^ 
 807             Td2
[Te4
[(rk
[3] >>  8) & 0xff] & 0xff] ^ 
 808             Td3
[Te4
[(rk
[3]      ) & 0xff] & 0xff]; 
 810     // invert the order of the last round keys 
 822 * Encrypt the plain text into cipher 
 824 void AesEncBlk(AesCtx 
*pCtx
, const unsigned char pt
[], unsigned char ct
[]) 
 826     unsigned int s0
, s1
, s2
, s3
, t0
, t1
, t2
, t3
, *iv
; 
 827     const unsigned int *rk
; 
 833      * map byte array block to cipher state 
 834      * and add initial round key: 
 836     s0 
= GETU32(pt     
) ^ rk
[0]; 
 837     s1 
= GETU32(pt 
+  4) ^ rk
[1]; 
 838     s2 
= GETU32(pt 
+  8) ^ rk
[2]; 
 839     s3 
= GETU32(pt 
+ 12) ^ rk
[3]; 
 847      * Nr - 1 full rounds: 
 853             Te1
[(s1 
>> 16) & 0xff] ^ 
 854             Te2
[(s2 
>>  8) & 0xff] ^ 
 859             Te1
[(s2 
>> 16) & 0xff] ^ 
 860             Te2
[(s3 
>>  8) & 0xff] ^ 
 865             Te1
[(s3 
>> 16) & 0xff] ^ 
 866             Te2
[(s0 
>>  8) & 0xff] ^ 
 871             Te1
[(s0 
>> 16) & 0xff] ^ 
 872             Te2
[(s1 
>>  8) & 0xff] ^ 
 883             Te1
[(t1 
>> 16) & 0xff] ^ 
 884             Te2
[(t2 
>>  8) & 0xff] ^ 
 889             Te1
[(t2 
>> 16) & 0xff] ^ 
 890             Te2
[(t3 
>>  8) & 0xff] ^ 
 895             Te1
[(t3 
>> 16) & 0xff] ^ 
 896             Te2
[(t0 
>>  8) & 0xff] ^ 
 901             Te1
[(t0 
>> 16) & 0xff] ^ 
 902             Te2
[(t1 
>>  8) & 0xff] ^ 
 907      * apply last round and 
 908      * map cipher state to byte array block: 
 911         (Te4
[(t0 
>> 24)       ] & 0xff000000) ^ 
 912         (Te4
[(t1 
>> 16) & 0xff] & 0x00ff0000) ^ 
 913         (Te4
[(t2 
>>  8) & 0xff] & 0x0000ff00) ^ 
 914         (Te4
[(t3      
) & 0xff] & 0x000000ff) ^ 
 918         (Te4
[(t1 
>> 24)       ] & 0xff000000) ^ 
 919         (Te4
[(t2 
>> 16) & 0xff] & 0x00ff0000) ^ 
 920         (Te4
[(t3 
>>  8) & 0xff] & 0x0000ff00) ^ 
 921         (Te4
[(t0      
) & 0xff] & 0x000000ff) ^ 
 925         (Te4
[(t2 
>> 24)       ] & 0xff000000) ^ 
 926         (Te4
[(t3 
>> 16) & 0xff] & 0x00ff0000) ^ 
 927         (Te4
[(t0 
>>  8) & 0xff] & 0x0000ff00) ^ 
 928         (Te4
[(t1      
) & 0xff] & 0x000000ff) ^ 
 932         (Te4
[(t3 
>> 24)       ] & 0xff000000) ^ 
 933         (Te4
[(t0 
>> 16) & 0xff] & 0x00ff0000) ^ 
 934         (Te4
[(t1 
>>  8) & 0xff] & 0x0000ff00) ^ 
 935         (Te4
[(t2      
) & 0xff] & 0x000000ff) ^ 
 948 * Decrypt the cipher into plain text 
 950 void AesDecBlk(AesCtx 
*pCtx
, const unsigned char ct
[], unsigned char pt
[]) 
 952     unsigned int s0
, s1
, s2
, s3
, t0
, t1
, t2
, t3
, v0
, v1
, v2
, v3
, *iv
; 
 953     const unsigned int *rk
; 
 959      * map byte array block to cipher state 
 960      * and add initial round key: 
 962     v0 
= GETU32(ct     
);    s0 
= v0 
^ rk
[0]; 
 963     v1 
= GETU32(ct 
+  4);    s1 
= v1 
^ rk
[1]; 
 964     v2 
= GETU32(ct 
+  8);    s2 
= v2 
^ rk
[2]; 
 965     v3 
= GETU32(ct 
+ 12);    s3 
= v3 
^ rk
[3]; 
 967      * Nr - 1 full rounds: 
 973             Td1
[(s3 
>> 16) & 0xff] ^ 
 974             Td2
[(s2 
>>  8) & 0xff] ^ 
 979             Td1
[(s0 
>> 16) & 0xff] ^ 
 980             Td2
[(s3 
>>  8) & 0xff] ^ 
 985             Td1
[(s1 
>> 16) & 0xff] ^ 
 986             Td2
[(s0 
>>  8) & 0xff] ^ 
 991             Td1
[(s2 
>> 16) & 0xff] ^ 
 992             Td2
[(s1 
>>  8) & 0xff] ^ 
1003             Td1
[(t3 
>> 16) & 0xff] ^ 
1004             Td2
[(t2 
>>  8) & 0xff] ^ 
1009             Td1
[(t0 
>> 16) & 0xff] ^ 
1010             Td2
[(t3 
>>  8) & 0xff] ^ 
1015             Td1
[(t1 
>> 16) & 0xff] ^ 
1016             Td2
[(t0 
>>  8) & 0xff] ^ 
1021             Td1
[(t2 
>> 16) & 0xff] ^ 
1022             Td2
[(t1 
>>  8) & 0xff] ^ 
1027      * apply last round and 
1028      * map cipher state to byte array block: 
1031         (Td4
[(t0 
>> 24)       ] & 0xff000000) ^ 
1032         (Td4
[(t3 
>> 16) & 0xff] & 0x00ff0000) ^ 
1033         (Td4
[(t2 
>>  8) & 0xff] & 0x0000ff00) ^ 
1034         (Td4
[(t1      
) & 0xff] & 0x000000ff) ^ 
1037         (Td4
[(t1 
>> 24)       ] & 0xff000000) ^ 
1038         (Td4
[(t0 
>> 16) & 0xff] & 0x00ff0000) ^ 
1039         (Td4
[(t3 
>>  8) & 0xff] & 0x0000ff00) ^ 
1040         (Td4
[(t2      
) & 0xff] & 0x000000ff) ^ 
1043         (Td4
[(t2 
>> 24)       ] & 0xff000000) ^ 
1044         (Td4
[(t1 
>> 16) & 0xff] & 0x00ff0000) ^ 
1045         (Td4
[(t0 
>>  8) & 0xff] & 0x0000ff00) ^ 
1046         (Td4
[(t3      
) & 0xff] & 0x000000ff) ^ 
1049         (Td4
[(t3 
>> 24)       ] & 0xff000000) ^ 
1050         (Td4
[(t2 
>> 16) & 0xff] & 0x00ff0000) ^ 
1051         (Td4
[(t1 
>>  8) & 0xff] & 0x0000ff00) ^ 
1052         (Td4
[(t0      
) & 0xff] & 0x000000ff) ^ 
1056         s0 
= s0 
^ iv
[0];    iv
[0] = v0
; 
1057         s1 
= s1 
^ iv
[1];    iv
[1] = v1
; 
1058         s2 
= s2 
^ iv
[2];    iv
[2] = v2
; 
1059         s3 
= s3 
^ iv
[3];    iv
[3] = v3
; 
1065     PUTU32(pt 
+ 12, s3
); 
1068 ////////////////////////////////////////////////////////////////////////////// 
1070 ////////////////////////////////////////////////////////////////////////////// 
1073 * initialize AES context 
1075 int AesCtxIni(AesCtx 
*pCtx
, unsigned char *pIV
, unsigned char *pKey
, unsigned int KeyLen
, unsigned char Mode
) 
1077     if (pKey 
== 0 || pCtx 
== 0 || (KeyLen 
!= KEY128 
&& KeyLen 
!= KEY192 
&& KeyLen 
!= KEY256
)) 
1080     // generate key schedule 
1081     pCtx
->Nr 
= AesGenKeySched(pCtx
->Ek
,  pCtx
->Dk
, pKey
, KeyLen
); 
1085         pCtx
->Iv
[0] = GETU32(pIV     
); 
1086         pCtx
->Iv
[1] = GETU32(pIV 
+ 4 ); 
1087         pCtx
->Iv
[2] = GETU32(pIV 
+ 8 ); 
1088         pCtx
->Iv
[3] = GETU32(pIV 
+ 12); 
1098 * Encrypt plain text 
1100 int AesEncrypt(AesCtx 
*pCtx
, unsigned char *pData
, unsigned char *pCipher
, unsigned int DataLen
) 
1104     if (pData 
== 0 || pCipher 
== 0 || pCtx 
== 0 || (DataLen 
& 0xf) != 0) 
1107     for (i 
= 0; i 
< DataLen
; i 
+= BLOCKSZ
) { 
1108         // encrypt block by block 
1109         AesEncBlk(pCtx
, pData
, pCipher
); 
1119 int AesDecrypt(AesCtx 
*pCtx
, unsigned char *pCipher
, unsigned char *pData
, unsigned int CipherLen
) 
1123     if (pData 
== 0 || pCipher 
== 0 || pCtx 
== 0 || (CipherLen 
& 0xf) != 0) 
1126     for (i 
= 0; i 
< CipherLen
; i 
+= BLOCKSZ
) { 
1127         // decrypt block by block 
1128         AesDecBlk(pCtx
, pCipher
, pData
); 
1135 ////////////////////////////////////////////////////////////////////////////// 
1136 // Sample main program                                                      // 
1137 ////////////////////////////////////////////////////////////////////////////// 
1146     unsigned char iv
[] = "INI VECTINI VECT"; 
1147     unsigned char key
[] = "This is a sample AESKey"; 
1148     unsigned char databuf
[] = "Data : AES Test"; // must be in multiple of 16 
1150     // initialize context and encrypt data at one end 
1152     if( AesCtxIni(&ctx
, iv
, key
, KEY128
, CBC
) < 0) 
1153         printf("init error\n"); 
1155     if (AesEncrypt(&ctx
, databuf
, databuf
, sizeof databuf
) < 0) 
1156         printf("error in encryption\n"); 
1158     // initialize context and decrypt cipher at other end 
1160     if( AesCtxIni(&ctx
, iv
, key
, KEY128
, CBC
) < 0) 
1161         printf("init error\n"); 
1163     if (AesDecrypt(&ctx
, databuf
, databuf
, sizeof databuf
) < 0) 
1164         printf("error in decryption\n"); 
1166     printf("%s\n", databuf
);