-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathT_table.scala
192 lines (185 loc) · 36 KB
/
T_table.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
package AES
import chisel3._
object T_table {
//32x256x4
val t_e0 = Array( 0xc66363a5L.U, 0xf87c7c84L.U, 0xee777799L.U, 0xf67b7b8dL.U, 0xfff2f20dL.U, 0xd66b6bbdL.U, 0xde6f6fb1L.U, 0x91c5c554L.U, 0x60303050L.U, 0x2010103L.U, 0xce6767a9L.U, 0x562b2b7dL.U, 0xe7fefe19L.U, 0xb5d7d762L.U, 0x4dababe6L.U, 0xec76769aL.U,
0x8fcaca45L.U, 0x1f82829dL.U, 0x89c9c940L.U, 0xfa7d7d87L.U, 0xeffafa15L.U, 0xb25959ebL.U, 0x8e4747c9L.U, 0xfbf0f00bL.U, 0x41adadecL.U, 0xb3d4d467L.U, 0x5fa2a2fdL.U, 0x45afafeaL.U, 0x239c9cbfL.U, 0x53a4a4f7L.U, 0xe4727296L.U, 0x9bc0c05bL.U,
0x75b7b7c2L.U, 0xe1fdfd1cL.U, 0x3d9393aeL.U, 0x4c26266aL.U, 0x6c36365aL.U, 0x7e3f3f41L.U, 0xf5f7f702L.U, 0x83cccc4fL.U, 0x6834345cL.U, 0x51a5a5f4L.U, 0xd1e5e534L.U, 0xf9f1f108L.U, 0xe2717193L.U, 0xabd8d873L.U, 0x62313153L.U, 0x2a15153fL.U,
0x804040cL.U, 0x95c7c752L.U, 0x46232365L.U, 0x9dc3c35eL.U, 0x30181828L.U, 0x379696a1L.U, 0xa05050fL.U, 0x2f9a9ab5L.U, 0xe070709L.U, 0x24121236L.U, 0x1b80809bL.U, 0xdfe2e23dL.U, 0xcdebeb26L.U, 0x4e272769L.U, 0x7fb2b2cdL.U, 0xea75759fL.U,
0x1209091bL.U, 0x1d83839eL.U, 0x582c2c74L.U, 0x341a1a2eL.U, 0x361b1b2dL.U, 0xdc6e6eb2L.U, 0xb45a5aeeL.U, 0x5ba0a0fbL.U, 0xa45252f6L.U, 0x763b3b4dL.U, 0xb7d6d661L.U, 0x7db3b3ceL.U, 0x5229297bL.U, 0xdde3e33eL.U, 0x5e2f2f71L.U, 0x13848497L.U,
0xa65353f5L.U, 0xb9d1d168L.U, 0x0L.U, 0xc1eded2cL.U, 0x40202060L.U, 0xe3fcfc1fL.U, 0x79b1b1c8L.U, 0xb65b5bedL.U, 0xd46a6abeL.U, 0x8dcbcb46L.U, 0x67bebed9L.U, 0x7239394bL.U, 0x944a4adeL.U, 0x984c4cd4L.U, 0xb05858e8L.U, 0x85cfcf4aL.U,
0xbbd0d06bL.U, 0xc5efef2aL.U, 0x4faaaae5L.U, 0xedfbfb16L.U, 0x864343c5L.U, 0x9a4d4dd7L.U, 0x66333355L.U, 0x11858594L.U, 0x8a4545cfL.U, 0xe9f9f910L.U, 0x4020206L.U, 0xfe7f7f81L.U, 0xa05050f0L.U, 0x783c3c44L.U, 0x259f9fbaL.U, 0x4ba8a8e3L.U,
0xa25151f3L.U, 0x5da3a3feL.U, 0x804040c0L.U, 0x58f8f8aL.U, 0x3f9292adL.U, 0x219d9dbcL.U, 0x70383848L.U, 0xf1f5f504L.U, 0x63bcbcdfL.U, 0x77b6b6c1L.U, 0xafdada75L.U, 0x42212163L.U, 0x20101030L.U, 0xe5ffff1aL.U, 0xfdf3f30eL.U, 0xbfd2d26dL.U,
0x81cdcd4cL.U, 0x180c0c14L.U, 0x26131335L.U, 0xc3ecec2fL.U, 0xbe5f5fe1L.U, 0x359797a2L.U, 0x884444ccL.U, 0x2e171739L.U, 0x93c4c457L.U, 0x55a7a7f2L.U, 0xfc7e7e82L.U, 0x7a3d3d47L.U, 0xc86464acL.U, 0xba5d5de7L.U, 0x3219192bL.U, 0xe6737395L.U,
0xc06060a0L.U, 0x19818198L.U, 0x9e4f4fd1L.U, 0xa3dcdc7fL.U, 0x44222266L.U, 0x542a2a7eL.U, 0x3b9090abL.U, 0xb888883L.U, 0x8c4646caL.U, 0xc7eeee29L.U, 0x6bb8b8d3L.U, 0x2814143cL.U, 0xa7dede79L.U, 0xbc5e5ee2L.U, 0x160b0b1dL.U, 0xaddbdb76L.U,
0xdbe0e03bL.U, 0x64323256L.U, 0x743a3a4eL.U, 0x140a0a1eL.U, 0x924949dbL.U, 0xc06060aL.U, 0x4824246cL.U, 0xb85c5ce4L.U, 0x9fc2c25dL.U, 0xbdd3d36eL.U, 0x43acacefL.U, 0xc46262a6L.U, 0x399191a8L.U, 0x319595a4L.U, 0xd3e4e437L.U, 0xf279798bL.U,
0xd5e7e732L.U, 0x8bc8c843L.U, 0x6e373759L.U, 0xda6d6db7L.U, 0x18d8d8cL.U, 0xb1d5d564L.U, 0x9c4e4ed2L.U, 0x49a9a9e0L.U, 0xd86c6cb4L.U, 0xac5656faL.U, 0xf3f4f407L.U, 0xcfeaea25L.U, 0xca6565afL.U, 0xf47a7a8eL.U, 0x47aeaee9L.U, 0x10080818L.U,
0x6fbabad5L.U, 0xf0787888L.U, 0x4a25256fL.U, 0x5c2e2e72L.U, 0x381c1c24L.U, 0x57a6a6f1L.U, 0x73b4b4c7L.U, 0x97c6c651L.U, 0xcbe8e823L.U, 0xa1dddd7cL.U, 0xe874749cL.U, 0x3e1f1f21L.U, 0x964b4bddL.U, 0x61bdbddcL.U, 0xd8b8b86L.U, 0xf8a8a85L.U,
0xe0707090L.U, 0x7c3e3e42L.U, 0x71b5b5c4L.U, 0xcc6666aaL.U, 0x904848d8L.U, 0x6030305L.U, 0xf7f6f601L.U, 0x1c0e0e12L.U, 0xc26161a3L.U, 0x6a35355fL.U, 0xae5757f9L.U, 0x69b9b9d0L.U, 0x17868691L.U, 0x99c1c158L.U, 0x3a1d1d27L.U, 0x279e9eb9L.U,
0xd9e1e138L.U, 0xebf8f813L.U, 0x2b9898b3L.U, 0x22111133L.U, 0xd26969bbL.U, 0xa9d9d970L.U, 0x78e8e89L.U, 0x339494a7L.U, 0x2d9b9bb6L.U, 0x3c1e1e22L.U, 0x15878792L.U, 0xc9e9e920L.U, 0x87cece49L.U, 0xaa5555ffL.U, 0x50282878L.U, 0xa5dfdf7aL.U,
0x38c8c8fL.U, 0x59a1a1f8L.U, 0x9898980L.U, 0x1a0d0d17L.U, 0x65bfbfdaL.U, 0xd7e6e631L.U, 0x844242c6L.U, 0xd06868b8L.U, 0x824141c3L.U, 0x299999b0L.U, 0x5a2d2d77L.U, 0x1e0f0f11L.U, 0x7bb0b0cbL.U, 0xa85454fcL.U, 0x6dbbbbd6L.U, 0x2c16163aL.U)
val t_e1 = Array( 0xa5c66363L.U, 0x84f87c7cL.U, 0x99ee7777L.U, 0x8df67b7bL.U, 0xdfff2f2L.U, 0xbdd66b6bL.U, 0xb1de6f6fL.U, 0x5491c5c5L.U, 0x50603030L.U, 0x3020101L.U, 0xa9ce6767L.U, 0x7d562b2bL.U, 0x19e7fefeL.U, 0x62b5d7d7L.U, 0xe64dababL.U, 0x9aec7676L.U,
0x458fcacaL.U, 0x9d1f8282L.U, 0x4089c9c9L.U, 0x87fa7d7dL.U, 0x15effafaL.U, 0xebb25959L.U, 0xc98e4747L.U, 0xbfbf0f0L.U, 0xec41adadL.U, 0x67b3d4d4L.U, 0xfd5fa2a2L.U, 0xea45afafL.U, 0xbf239c9cL.U, 0xf753a4a4L.U, 0x96e47272L.U, 0x5b9bc0c0L.U,
0xc275b7b7L.U, 0x1ce1fdfdL.U, 0xae3d9393L.U, 0x6a4c2626L.U, 0x5a6c3636L.U, 0x417e3f3fL.U, 0x2f5f7f7L.U, 0x4f83ccccL.U, 0x5c683434L.U, 0xf451a5a5L.U, 0x34d1e5e5L.U, 0x8f9f1f1L.U, 0x93e27171L.U, 0x73abd8d8L.U, 0x53623131L.U, 0x3f2a1515L.U,
0xc080404L.U, 0x5295c7c7L.U, 0x65462323L.U, 0x5e9dc3c3L.U, 0x28301818L.U, 0xa1379696L.U, 0xf0a0505L.U, 0xb52f9a9aL.U, 0x90e0707L.U, 0x36241212L.U, 0x9b1b8080L.U, 0x3ddfe2e2L.U, 0x26cdebebL.U, 0x694e2727L.U, 0xcd7fb2b2L.U, 0x9fea7575L.U,
0x1b120909L.U, 0x9e1d8383L.U, 0x74582c2cL.U, 0x2e341a1aL.U, 0x2d361b1bL.U, 0xb2dc6e6eL.U, 0xeeb45a5aL.U, 0xfb5ba0a0L.U, 0xf6a45252L.U, 0x4d763b3bL.U, 0x61b7d6d6L.U, 0xce7db3b3L.U, 0x7b522929L.U, 0x3edde3e3L.U, 0x715e2f2fL.U, 0x97138484L.U,
0xf5a65353L.U, 0x68b9d1d1L.U, 0x0L.U, 0x2cc1ededL.U, 0x60402020L.U, 0x1fe3fcfcL.U, 0xc879b1b1L.U, 0xedb65b5bL.U, 0xbed46a6aL.U, 0x468dcbcbL.U, 0xd967bebeL.U, 0x4b723939L.U, 0xde944a4aL.U, 0xd4984c4cL.U, 0xe8b05858L.U, 0x4a85cfcfL.U,
0x6bbbd0d0L.U, 0x2ac5efefL.U, 0xe54faaaaL.U, 0x16edfbfbL.U, 0xc5864343L.U, 0xd79a4d4dL.U, 0x55663333L.U, 0x94118585L.U, 0xcf8a4545L.U, 0x10e9f9f9L.U, 0x6040202L.U, 0x81fe7f7fL.U, 0xf0a05050L.U, 0x44783c3cL.U, 0xba259f9fL.U, 0xe34ba8a8L.U,
0xf3a25151L.U, 0xfe5da3a3L.U, 0xc0804040L.U, 0x8a058f8fL.U, 0xad3f9292L.U, 0xbc219d9dL.U, 0x48703838L.U, 0x4f1f5f5L.U, 0xdf63bcbcL.U, 0xc177b6b6L.U, 0x75afdadaL.U, 0x63422121L.U, 0x30201010L.U, 0x1ae5ffffL.U, 0xefdf3f3L.U, 0x6dbfd2d2L.U,
0x4c81cdcdL.U, 0x14180c0cL.U, 0x35261313L.U, 0x2fc3ececL.U, 0xe1be5f5fL.U, 0xa2359797L.U, 0xcc884444L.U, 0x392e1717L.U, 0x5793c4c4L.U, 0xf255a7a7L.U, 0x82fc7e7eL.U, 0x477a3d3dL.U, 0xacc86464L.U, 0xe7ba5d5dL.U, 0x2b321919L.U, 0x95e67373L.U,
0xa0c06060L.U, 0x98198181L.U, 0xd19e4f4fL.U, 0x7fa3dcdcL.U, 0x66442222L.U, 0x7e542a2aL.U, 0xab3b9090L.U, 0x830b8888L.U, 0xca8c4646L.U, 0x29c7eeeeL.U, 0xd36bb8b8L.U, 0x3c281414L.U, 0x79a7dedeL.U, 0xe2bc5e5eL.U, 0x1d160b0bL.U, 0x76addbdbL.U,
0x3bdbe0e0L.U, 0x56643232L.U, 0x4e743a3aL.U, 0x1e140a0aL.U, 0xdb924949L.U, 0xa0c0606L.U, 0x6c482424L.U, 0xe4b85c5cL.U, 0x5d9fc2c2L.U, 0x6ebdd3d3L.U, 0xef43acacL.U, 0xa6c46262L.U, 0xa8399191L.U, 0xa4319595L.U, 0x37d3e4e4L.U, 0x8bf27979L.U,
0x32d5e7e7L.U, 0x438bc8c8L.U, 0x596e3737L.U, 0xb7da6d6dL.U, 0x8c018d8dL.U, 0x64b1d5d5L.U, 0xd29c4e4eL.U, 0xe049a9a9L.U, 0xb4d86c6cL.U, 0xfaac5656L.U, 0x7f3f4f4L.U, 0x25cfeaeaL.U, 0xafca6565L.U, 0x8ef47a7aL.U, 0xe947aeaeL.U, 0x18100808L.U,
0xd56fbabaL.U, 0x88f07878L.U, 0x6f4a2525L.U, 0x725c2e2eL.U, 0x24381c1cL.U, 0xf157a6a6L.U, 0xc773b4b4L.U, 0x5197c6c6L.U, 0x23cbe8e8L.U, 0x7ca1ddddL.U, 0x9ce87474L.U, 0x213e1f1fL.U, 0xdd964b4bL.U, 0xdc61bdbdL.U, 0x860d8b8bL.U, 0x850f8a8aL.U,
0x90e07070L.U, 0x427c3e3eL.U, 0xc471b5b5L.U, 0xaacc6666L.U, 0xd8904848L.U, 0x5060303L.U, 0x1f7f6f6L.U, 0x121c0e0eL.U, 0xa3c26161L.U, 0x5f6a3535L.U, 0xf9ae5757L.U, 0xd069b9b9L.U, 0x91178686L.U, 0x5899c1c1L.U, 0x273a1d1dL.U, 0xb9279e9eL.U,
0x38d9e1e1L.U, 0x13ebf8f8L.U, 0xb32b9898L.U, 0x33221111L.U, 0xbbd26969L.U, 0x70a9d9d9L.U, 0x89078e8eL.U, 0xa7339494L.U, 0xb62d9b9bL.U, 0x223c1e1eL.U, 0x92158787L.U, 0x20c9e9e9L.U, 0x4987ceceL.U, 0xffaa5555L.U, 0x78502828L.U, 0x7aa5dfdfL.U,
0x8f038c8cL.U, 0xf859a1a1L.U, 0x80098989L.U, 0x171a0d0dL.U, 0xda65bfbfL.U, 0x31d7e6e6L.U, 0xc6844242L.U, 0xb8d06868L.U, 0xc3824141L.U, 0xb0299999L.U, 0x775a2d2dL.U, 0x111e0f0fL.U, 0xcb7bb0b0L.U, 0xfca85454L.U, 0xd66dbbbbL.U, 0x3a2c1616L.U)
val t_e2 = Array( 0x63a5c663L.U, 0x7c84f87cL.U, 0x7799ee77L.U, 0x7b8df67bL.U, 0xf20dfff2L.U, 0x6bbdd66bL.U, 0x6fb1de6fL.U, 0xc55491c5L.U, 0x30506030L.U, 0x1030201L.U, 0x67a9ce67L.U, 0x2b7d562bL.U, 0xfe19e7feL.U, 0xd762b5d7L.U, 0xabe64dabL.U, 0x769aec76L.U,
0xca458fcaL.U, 0x829d1f82L.U, 0xc94089c9L.U, 0x7d87fa7dL.U, 0xfa15effaL.U, 0x59ebb259L.U, 0x47c98e47L.U, 0xf00bfbf0L.U, 0xadec41adL.U, 0xd467b3d4L.U, 0xa2fd5fa2L.U, 0xafea45afL.U, 0x9cbf239cL.U, 0xa4f753a4L.U, 0x7296e472L.U, 0xc05b9bc0L.U,
0xb7c275b7L.U, 0xfd1ce1fdL.U, 0x93ae3d93L.U, 0x266a4c26L.U, 0x365a6c36L.U, 0x3f417e3fL.U, 0xf702f5f7L.U, 0xcc4f83ccL.U, 0x345c6834L.U, 0xa5f451a5L.U, 0xe534d1e5L.U, 0xf108f9f1L.U, 0x7193e271L.U, 0xd873abd8L.U, 0x31536231L.U, 0x153f2a15L.U,
0x40c0804L.U, 0xc75295c7L.U, 0x23654623L.U, 0xc35e9dc3L.U, 0x18283018L.U, 0x96a13796L.U, 0x50f0a05L.U, 0x9ab52f9aL.U, 0x7090e07L.U, 0x12362412L.U, 0x809b1b80L.U, 0xe23ddfe2L.U, 0xeb26cdebL.U, 0x27694e27L.U, 0xb2cd7fb2L.U, 0x759fea75L.U,
0x91b1209L.U, 0x839e1d83L.U, 0x2c74582cL.U, 0x1a2e341aL.U, 0x1b2d361bL.U, 0x6eb2dc6eL.U, 0x5aeeb45aL.U, 0xa0fb5ba0L.U, 0x52f6a452L.U, 0x3b4d763bL.U, 0xd661b7d6L.U, 0xb3ce7db3L.U, 0x297b5229L.U, 0xe33edde3L.U, 0x2f715e2fL.U, 0x84971384L.U,
0x53f5a653L.U, 0xd168b9d1L.U, 0x0L.U, 0xed2cc1edL.U, 0x20604020L.U, 0xfc1fe3fcL.U, 0xb1c879b1L.U, 0x5bedb65bL.U, 0x6abed46aL.U, 0xcb468dcbL.U, 0xbed967beL.U, 0x394b7239L.U, 0x4ade944aL.U, 0x4cd4984cL.U, 0x58e8b058L.U, 0xcf4a85cfL.U,
0xd06bbbd0L.U, 0xef2ac5efL.U, 0xaae54faaL.U, 0xfb16edfbL.U, 0x43c58643L.U, 0x4dd79a4dL.U, 0x33556633L.U, 0x85941185L.U, 0x45cf8a45L.U, 0xf910e9f9L.U, 0x2060402L.U, 0x7f81fe7fL.U, 0x50f0a050L.U, 0x3c44783cL.U, 0x9fba259fL.U, 0xa8e34ba8L.U,
0x51f3a251L.U, 0xa3fe5da3L.U, 0x40c08040L.U, 0x8f8a058fL.U, 0x92ad3f92L.U, 0x9dbc219dL.U, 0x38487038L.U, 0xf504f1f5L.U, 0xbcdf63bcL.U, 0xb6c177b6L.U, 0xda75afdaL.U, 0x21634221L.U, 0x10302010L.U, 0xff1ae5ffL.U, 0xf30efdf3L.U, 0xd26dbfd2L.U,
0xcd4c81cdL.U, 0xc14180cL.U, 0x13352613L.U, 0xec2fc3ecL.U, 0x5fe1be5fL.U, 0x97a23597L.U, 0x44cc8844L.U, 0x17392e17L.U, 0xc45793c4L.U, 0xa7f255a7L.U, 0x7e82fc7eL.U, 0x3d477a3dL.U, 0x64acc864L.U, 0x5de7ba5dL.U, 0x192b3219L.U, 0x7395e673L.U,
0x60a0c060L.U, 0x81981981L.U, 0x4fd19e4fL.U, 0xdc7fa3dcL.U, 0x22664422L.U, 0x2a7e542aL.U, 0x90ab3b90L.U, 0x88830b88L.U, 0x46ca8c46L.U, 0xee29c7eeL.U, 0xb8d36bb8L.U, 0x143c2814L.U, 0xde79a7deL.U, 0x5ee2bc5eL.U, 0xb1d160bL.U, 0xdb76addbL.U,
0xe03bdbe0L.U, 0x32566432L.U, 0x3a4e743aL.U, 0xa1e140aL.U, 0x49db9249L.U, 0x60a0c06L.U, 0x246c4824L.U, 0x5ce4b85cL.U, 0xc25d9fc2L.U, 0xd36ebdd3L.U, 0xacef43acL.U, 0x62a6c462L.U, 0x91a83991L.U, 0x95a43195L.U, 0xe437d3e4L.U, 0x798bf279L.U,
0xe732d5e7L.U, 0xc8438bc8L.U, 0x37596e37L.U, 0x6db7da6dL.U, 0x8d8c018dL.U, 0xd564b1d5L.U, 0x4ed29c4eL.U, 0xa9e049a9L.U, 0x6cb4d86cL.U, 0x56faac56L.U, 0xf407f3f4L.U, 0xea25cfeaL.U, 0x65afca65L.U, 0x7a8ef47aL.U, 0xaee947aeL.U, 0x8181008L.U,
0xbad56fbaL.U, 0x7888f078L.U, 0x256f4a25L.U, 0x2e725c2eL.U, 0x1c24381cL.U, 0xa6f157a6L.U, 0xb4c773b4L.U, 0xc65197c6L.U, 0xe823cbe8L.U, 0xdd7ca1ddL.U, 0x749ce874L.U, 0x1f213e1fL.U, 0x4bdd964bL.U, 0xbddc61bdL.U, 0x8b860d8bL.U, 0x8a850f8aL.U,
0x7090e070L.U, 0x3e427c3eL.U, 0xb5c471b5L.U, 0x66aacc66L.U, 0x48d89048L.U, 0x3050603L.U, 0xf601f7f6L.U, 0xe121c0eL.U, 0x61a3c261L.U, 0x355f6a35L.U, 0x57f9ae57L.U, 0xb9d069b9L.U, 0x86911786L.U, 0xc15899c1L.U, 0x1d273a1dL.U, 0x9eb9279eL.U,
0xe138d9e1L.U, 0xf813ebf8L.U, 0x98b32b98L.U, 0x11332211L.U, 0x69bbd269L.U, 0xd970a9d9L.U, 0x8e89078eL.U, 0x94a73394L.U, 0x9bb62d9bL.U, 0x1e223c1eL.U, 0x87921587L.U, 0xe920c9e9L.U, 0xce4987ceL.U, 0x55ffaa55L.U, 0x28785028L.U, 0xdf7aa5dfL.U,
0x8c8f038cL.U, 0xa1f859a1L.U, 0x89800989L.U, 0xd171a0dL.U, 0xbfda65bfL.U, 0xe631d7e6L.U, 0x42c68442L.U, 0x68b8d068L.U, 0x41c38241L.U, 0x99b02999L.U, 0x2d775a2dL.U, 0xf111e0fL.U, 0xb0cb7bb0L.U, 0x54fca854L.U, 0xbbd66dbbL.U, 0x163a2c16L.U)
val t_e3 = Array( 0x6363a5c6L.U, 0x7c7c84f8L.U, 0x777799eeL.U, 0x7b7b8df6L.U, 0xf2f20dffL.U, 0x6b6bbdd6L.U, 0x6f6fb1deL.U, 0xc5c55491L.U, 0x30305060L.U, 0x1010302L.U, 0x6767a9ceL.U, 0x2b2b7d56L.U, 0xfefe19e7L.U, 0xd7d762b5L.U, 0xababe64dL.U, 0x76769aecL.U,
0xcaca458fL.U, 0x82829d1fL.U, 0xc9c94089L.U, 0x7d7d87faL.U, 0xfafa15efL.U, 0x5959ebb2L.U, 0x4747c98eL.U, 0xf0f00bfbL.U, 0xadadec41L.U, 0xd4d467b3L.U, 0xa2a2fd5fL.U, 0xafafea45L.U, 0x9c9cbf23L.U, 0xa4a4f753L.U, 0x727296e4L.U, 0xc0c05b9bL.U,
0xb7b7c275L.U, 0xfdfd1ce1L.U, 0x9393ae3dL.U, 0x26266a4cL.U, 0x36365a6cL.U, 0x3f3f417eL.U, 0xf7f702f5L.U, 0xcccc4f83L.U, 0x34345c68L.U, 0xa5a5f451L.U, 0xe5e534d1L.U, 0xf1f108f9L.U, 0x717193e2L.U, 0xd8d873abL.U, 0x31315362L.U, 0x15153f2aL.U,
0x4040c08L.U, 0xc7c75295L.U, 0x23236546L.U, 0xc3c35e9dL.U, 0x18182830L.U, 0x9696a137L.U, 0x5050f0aL.U, 0x9a9ab52fL.U, 0x707090eL.U, 0x12123624L.U, 0x80809b1bL.U, 0xe2e23ddfL.U, 0xebeb26cdL.U, 0x2727694eL.U, 0xb2b2cd7fL.U, 0x75759feaL.U,
0x9091b12L.U, 0x83839e1dL.U, 0x2c2c7458L.U, 0x1a1a2e34L.U, 0x1b1b2d36L.U, 0x6e6eb2dcL.U, 0x5a5aeeb4L.U, 0xa0a0fb5bL.U, 0x5252f6a4L.U, 0x3b3b4d76L.U, 0xd6d661b7L.U, 0xb3b3ce7dL.U, 0x29297b52L.U, 0xe3e33eddL.U, 0x2f2f715eL.U, 0x84849713L.U,
0x5353f5a6L.U, 0xd1d168b9L.U, 0x0L.U, 0xeded2cc1L.U, 0x20206040L.U, 0xfcfc1fe3L.U, 0xb1b1c879L.U, 0x5b5bedb6L.U, 0x6a6abed4L.U, 0xcbcb468dL.U, 0xbebed967L.U, 0x39394b72L.U, 0x4a4ade94L.U, 0x4c4cd498L.U, 0x5858e8b0L.U, 0xcfcf4a85L.U,
0xd0d06bbbL.U, 0xefef2ac5L.U, 0xaaaae54fL.U, 0xfbfb16edL.U, 0x4343c586L.U, 0x4d4dd79aL.U, 0x33335566L.U, 0x85859411L.U, 0x4545cf8aL.U, 0xf9f910e9L.U, 0x2020604L.U, 0x7f7f81feL.U, 0x5050f0a0L.U, 0x3c3c4478L.U, 0x9f9fba25L.U, 0xa8a8e34bL.U,
0x5151f3a2L.U, 0xa3a3fe5dL.U, 0x4040c080L.U, 0x8f8f8a05L.U, 0x9292ad3fL.U, 0x9d9dbc21L.U, 0x38384870L.U, 0xf5f504f1L.U, 0xbcbcdf63L.U, 0xb6b6c177L.U, 0xdada75afL.U, 0x21216342L.U, 0x10103020L.U, 0xffff1ae5L.U, 0xf3f30efdL.U, 0xd2d26dbfL.U,
0xcdcd4c81L.U, 0xc0c1418L.U, 0x13133526L.U, 0xecec2fc3L.U, 0x5f5fe1beL.U, 0x9797a235L.U, 0x4444cc88L.U, 0x1717392eL.U, 0xc4c45793L.U, 0xa7a7f255L.U, 0x7e7e82fcL.U, 0x3d3d477aL.U, 0x6464acc8L.U, 0x5d5de7baL.U, 0x19192b32L.U, 0x737395e6L.U,
0x6060a0c0L.U, 0x81819819L.U, 0x4f4fd19eL.U, 0xdcdc7fa3L.U, 0x22226644L.U, 0x2a2a7e54L.U, 0x9090ab3bL.U, 0x8888830bL.U, 0x4646ca8cL.U, 0xeeee29c7L.U, 0xb8b8d36bL.U, 0x14143c28L.U, 0xdede79a7L.U, 0x5e5ee2bcL.U, 0xb0b1d16L.U, 0xdbdb76adL.U,
0xe0e03bdbL.U, 0x32325664L.U, 0x3a3a4e74L.U, 0xa0a1e14L.U, 0x4949db92L.U, 0x6060a0cL.U, 0x24246c48L.U, 0x5c5ce4b8L.U, 0xc2c25d9fL.U, 0xd3d36ebdL.U, 0xacacef43L.U, 0x6262a6c4L.U, 0x9191a839L.U, 0x9595a431L.U, 0xe4e437d3L.U, 0x79798bf2L.U,
0xe7e732d5L.U, 0xc8c8438bL.U, 0x3737596eL.U, 0x6d6db7daL.U, 0x8d8d8c01L.U, 0xd5d564b1L.U, 0x4e4ed29cL.U, 0xa9a9e049L.U, 0x6c6cb4d8L.U, 0x5656faacL.U, 0xf4f407f3L.U, 0xeaea25cfL.U, 0x6565afcaL.U, 0x7a7a8ef4L.U, 0xaeaee947L.U, 0x8081810L.U,
0xbabad56fL.U, 0x787888f0L.U, 0x25256f4aL.U, 0x2e2e725cL.U, 0x1c1c2438L.U, 0xa6a6f157L.U, 0xb4b4c773L.U, 0xc6c65197L.U, 0xe8e823cbL.U, 0xdddd7ca1L.U, 0x74749ce8L.U, 0x1f1f213eL.U, 0x4b4bdd96L.U, 0xbdbddc61L.U, 0x8b8b860dL.U, 0x8a8a850fL.U,
0x707090e0L.U, 0x3e3e427cL.U, 0xb5b5c471L.U, 0x6666aaccL.U, 0x4848d890L.U, 0x3030506L.U, 0xf6f601f7L.U, 0xe0e121cL.U, 0x6161a3c2L.U, 0x35355f6aL.U, 0x5757f9aeL.U, 0xb9b9d069L.U, 0x86869117L.U, 0xc1c15899L.U, 0x1d1d273aL.U, 0x9e9eb927L.U,
0xe1e138d9L.U, 0xf8f813ebL.U, 0x9898b32bL.U, 0x11113322L.U, 0x6969bbd2L.U, 0xd9d970a9L.U, 0x8e8e8907L.U, 0x9494a733L.U, 0x9b9bb62dL.U, 0x1e1e223cL.U, 0x87879215L.U, 0xe9e920c9L.U, 0xcece4987L.U, 0x5555ffaaL.U, 0x28287850L.U, 0xdfdf7aa5L.U,
0x8c8c8f03L.U, 0xa1a1f859L.U, 0x89898009L.U, 0xd0d171aL.U, 0xbfbfda65L.U, 0xe6e631d7L.U, 0x4242c684L.U, 0x6868b8d0L.U, 0x4141c382L.U, 0x9999b029L.U, 0x2d2d775aL.U, 0xf0f111eL.U, 0xb0b0cb7bL.U, 0x5454fca8L.U, 0xbbbbd66dL.U, 0x16163a2cL.U)
}
object S_table{
//8x256
val s = Array( 0x63.U, 0x7C.U, 0x77.U, 0x7B.U, 0xF2.U, 0x6B.U, 0x6F.U, 0xC5.U, 0x30.U, 0x01.U, 0x67.U, 0x2B.U, 0xFE.U, 0xD7.U, 0xAB.U, 0x76.U,
0xCA.U, 0x82.U, 0xC9.U, 0x7D.U, 0xFA.U, 0x59.U, 0x47.U, 0xF0.U, 0xAD.U, 0xD4.U, 0xA2.U, 0xAF.U, 0x9C.U, 0xA4.U, 0x72.U, 0xC0.U,
0xB7.U, 0xFD.U, 0x93.U, 0x26.U, 0x36.U, 0x3F.U, 0xF7.U, 0xCC.U, 0x34.U, 0xA5.U, 0xE5.U, 0xF1.U, 0x71.U, 0xD8.U, 0x31.U, 0x15.U,
0x04.U, 0xC7.U, 0x23.U, 0xC3.U, 0x18.U, 0x96.U, 0x05.U, 0x9A.U, 0x07.U, 0x12.U, 0x80.U, 0xE2.U, 0xEB.U, 0x27.U, 0xB2.U, 0x75.U,
0x09.U, 0x83.U, 0x2C.U, 0x1A.U, 0x1B.U, 0x6E.U, 0x5A.U, 0xA0.U, 0x52.U, 0x3B.U, 0xD6.U, 0xB3.U, 0x29.U, 0xE3.U, 0x2F.U, 0x84.U,
0x53.U, 0xD1.U, 0x00.U, 0xED.U, 0x20.U, 0xFC.U, 0xB1.U, 0x5B.U, 0x6A.U, 0xCB.U, 0xBE.U, 0x39.U, 0x4A.U, 0x4C.U, 0x58.U, 0xCF.U,
0xD0.U, 0xEF.U, 0xAA.U, 0xFB.U, 0x43.U, 0x4D.U, 0x33.U, 0x85.U, 0x45.U, 0xF9.U, 0x02.U, 0x7F.U, 0x50.U, 0x3C.U, 0x9F.U, 0xA8.U,
0x51.U, 0xA3.U, 0x40.U, 0x8F.U, 0x92.U, 0x9D.U, 0x38.U, 0xF5.U, 0xBC.U, 0xB6.U, 0xDA.U, 0x21.U, 0x10.U, 0xFF.U, 0xF3.U, 0xD2.U,
0xCD.U, 0x0C.U, 0x13.U, 0xEC.U, 0x5F.U, 0x97.U, 0x44.U, 0x17.U, 0xC4.U, 0xA7.U, 0x7E.U, 0x3D.U, 0x64.U, 0x5D.U, 0x19.U, 0x73.U,
0x60.U, 0x81.U, 0x4F.U, 0xDC.U, 0x22.U, 0x2A.U, 0x90.U, 0x88.U, 0x46.U, 0xEE.U, 0xB8.U, 0x14.U, 0xDE.U, 0x5E.U, 0x0B.U, 0xDB.U,
0xE0.U, 0x32.U, 0x3A.U, 0x0A.U, 0x49.U, 0x06.U, 0x24.U, 0x5C.U, 0xC2.U, 0xD3.U, 0xAC.U, 0x62.U, 0x91.U, 0x95.U, 0xE4.U, 0x79.U,
0xE7.U, 0xC8.U, 0x37.U, 0x6D.U, 0x8D.U, 0xD5.U, 0x4E.U, 0xA9.U, 0x6C.U, 0x56.U, 0xF4.U, 0xEA.U, 0x65.U, 0x7A.U, 0xAE.U, 0x08.U,
0xBA.U, 0x78.U, 0x25.U, 0x2E.U, 0x1C.U, 0xA6.U, 0xB4.U, 0xC6.U, 0xE8.U, 0xDD.U, 0x74.U, 0x1F.U, 0x4B.U, 0xBD.U, 0x8B.U, 0x8A.U,
0x70.U, 0x3E.U, 0xB5.U, 0x66.U, 0x48.U, 0x03.U, 0xF6.U, 0x0E.U, 0x61.U, 0x35.U, 0x57.U, 0xB9.U, 0x86.U, 0xC1.U, 0x1D.U, 0x9E.U,
0xE1.U, 0xF8.U, 0x98.U, 0x11.U, 0x69.U, 0xD9.U, 0x8E.U, 0x94.U, 0x9B.U, 0x1E.U, 0x87.U, 0xE9.U, 0xCE.U, 0x55.U, 0x28.U, 0xDF.U,
0x8C.U, 0xA1.U, 0x89.U, 0x0D.U, 0xBF.U, 0xE6.U, 0x42.U, 0x68.U, 0x41.U, 0x99.U, 0x2D.U, 0x0F.U, 0xB0.U, 0x54.U, 0xBB.U, 0x16.U)
}
object RC_table{
val rc = Array(0x01.U,0x02.U,0x04.U,0x08.U,0x10.U,0x20.U,0x40.U,0x80.U,0x1b.U,0x36.U)
}
object INV_t_table{
val inv_t_d0 = Array(
0x51f4a750L.U, 0x7e416553L.U, 0x1a17a4c3L.U, 0x3a275e96L.U, 0x3bab6bcbL.U, 0x1f9d45f1L.U, 0xacfa58abL.U, 0x4be30393L.U, 0x2030fa55L.U, 0xad766df6L.U, 0x88cc7691L.U, 0xf5024c25L.U, 0x4fe5d7fcL.U, 0xc52acbd7L.U, 0x26354480L.U, 0xb562a38fL.U,
0xdeb15a49L.U, 0x25ba1b67L.U, 0x45ea0e98L.U, 0x5dfec0e1L.U, 0xc32f7502L.U, 0x814cf012L.U, 0x8d4697a3L.U, 0x6bd3f9c6L.U, 0x38f5fe7L.U, 0x15929c95L.U, 0xbf6d7aebL.U, 0x955259daL.U, 0xd4be832dL.U, 0x587421d3L.U, 0x49e06929L.U, 0x8ec9c844L.U,
0x75c2896aL.U, 0xf48e7978L.U, 0x99583e6bL.U, 0x27b971ddL.U, 0xbee14fb6L.U, 0xf088ad17L.U, 0xc920ac66L.U, 0x7dce3ab4L.U, 0x63df4a18L.U, 0xe51a3182L.U, 0x97513360L.U, 0x62537f45L.U, 0xb16477e0L.U, 0xbb6bae84L.U, 0xfe81a01cL.U, 0xf9082b94L.U,
0x70486858L.U, 0x8f45fd19L.U, 0x94de6c87L.U, 0x527bf8b7L.U, 0xab73d323L.U, 0x724b02e2L.U, 0xe31f8f57L.U, 0x6655ab2aL.U, 0xb2eb2807L.U, 0x2fb5c203L.U, 0x86c57b9aL.U, 0xd33708a5L.U, 0x302887f2L.U, 0x23bfa5b2L.U, 0x2036abaL.U, 0xed16825cL.U,
0x8acf1c2bL.U, 0xa779b492L.U, 0xf307f2f0L.U, 0x4e69e2a1L.U, 0x65daf4cdL.U, 0x605bed5L.U, 0xd134621fL.U, 0xc4a6fe8aL.U, 0x342e539dL.U, 0xa2f355a0L.U, 0x58ae132L.U, 0xa4f6eb75L.U, 0xb83ec39L.U, 0x4060efaaL.U, 0x5e719f06L.U, 0xbd6e1051L.U,
0x3e218af9L.U, 0x96dd063dL.U, 0xdd3e05aeL.U, 0x4de6bd46L.U, 0x91548db5L.U, 0x71c45d05L.U, 0x406d46fL.U, 0x605015ffL.U, 0x1998fb24L.U, 0xd6bde997L.U, 0x894043ccL.U, 0x67d99e77L.U, 0xb0e842bdL.U, 0x7898b88L.U, 0xe7195b38L.U, 0x79c8eedbL.U,
0xa17c0a47L.U, 0x7c420fe9L.U, 0xf8841ec9L.U, 0x0L.U, 0x9808683L.U, 0x322bed48L.U, 0x1e1170acL.U, 0x6c5a724eL.U, 0xfd0efffbL.U, 0xf853856L.U, 0x3daed51eL.U, 0x362d3927L.U, 0xa0fd964L.U, 0x685ca621L.U, 0x9b5b54d1L.U, 0x24362e3aL.U,
0xc0a67b1L.U, 0x9357e70fL.U, 0xb4ee96d2L.U, 0x1b9b919eL.U, 0x80c0c54fL.U, 0x61dc20a2L.U, 0x5a774b69L.U, 0x1c121a16L.U, 0xe293ba0aL.U, 0xc0a02ae5L.U, 0x3c22e043L.U, 0x121b171dL.U, 0xe090d0bL.U, 0xf28bc7adL.U, 0x2db6a8b9L.U, 0x141ea9c8L.U,
0x57f11985L.U, 0xaf75074cL.U, 0xee99ddbbL.U, 0xa37f60fdL.U, 0xf701269fL.U, 0x5c72f5bcL.U, 0x44663bc5L.U, 0x5bfb7e34L.U, 0x8b432976L.U, 0xcb23c6dcL.U, 0xb6edfc68L.U, 0xb8e4f163L.U, 0xd731dccaL.U, 0x42638510L.U, 0x13972240L.U, 0x84c61120L.U,
0x854a247dL.U, 0xd2bb3df8L.U, 0xaef93211L.U, 0xc729a16dL.U, 0x1d9e2f4bL.U, 0xdcb230f3L.U, 0xd8652ecL.U, 0x77c1e3d0L.U, 0x2bb3166cL.U, 0xa970b999L.U, 0x119448faL.U, 0x47e96422L.U, 0xa8fc8cc4L.U, 0xa0f03f1aL.U, 0x567d2cd8L.U, 0x223390efL.U,
0x87494ec7L.U, 0xd938d1c1L.U, 0x8ccaa2feL.U, 0x98d40b36L.U, 0xa6f581cfL.U, 0xa57ade28L.U, 0xdab78e26L.U, 0x3fadbfa4L.U, 0x2c3a9de4L.U, 0x5078920dL.U, 0x6a5fcc9bL.U, 0x547e4662L.U, 0xf68d13c2L.U, 0x90d8b8e8L.U, 0x2e39f75eL.U, 0x82c3aff5L.U,
0x9f5d80beL.U, 0x69d0937cL.U, 0x6fd52da9L.U, 0xcf2512b3L.U, 0xc8ac993bL.U, 0x10187da7L.U, 0xe89c636eL.U, 0xdb3bbb7bL.U, 0xcd267809L.U, 0x6e5918f4L.U, 0xec9ab701L.U, 0x834f9aa8L.U, 0xe6956e65L.U, 0xaaffe67eL.U, 0x21bccf08L.U, 0xef15e8e6L.U,
0xbae79bd9L.U, 0x4a6f36ceL.U, 0xea9f09d4L.U, 0x29b07cd6L.U, 0x31a4b2afL.U, 0x2a3f2331L.U, 0xc6a59430L.U, 0x35a266c0L.U, 0x744ebc37L.U, 0xfc82caa6L.U, 0xe090d0b0L.U, 0x33a7d815L.U, 0xf104984aL.U, 0x41ecdaf7L.U, 0x7fcd500eL.U, 0x1791f62fL.U,
0x764dd68dL.U, 0x43efb04dL.U, 0xccaa4d54L.U, 0xe49604dfL.U, 0x9ed1b5e3L.U, 0x4c6a881bL.U, 0xc12c1fb8L.U, 0x4665517fL.U, 0x9d5eea04L.U, 0x18c355dL.U, 0xfa877473L.U, 0xfb0b412eL.U, 0xb3671d5aL.U, 0x92dbd252L.U, 0xe9105633L.U, 0x6dd64713L.U,
0x9ad7618cL.U, 0x37a10c7aL.U, 0x59f8148eL.U, 0xeb133c89L.U, 0xcea927eeL.U, 0xb761c935L.U, 0xe11ce5edL.U, 0x7a47b13cL.U, 0x9cd2df59L.U, 0x55f2733fL.U, 0x1814ce79L.U, 0x73c737bfL.U, 0x53f7cdeaL.U, 0x5ffdaa5bL.U, 0xdf3d6f14L.U, 0x7844db86L.U,
0xcaaff381L.U, 0xb968c43eL.U, 0x3824342cL.U, 0xc2a3405fL.U, 0x161dc372L.U, 0xbce2250cL.U, 0x283c498bL.U, 0xff0d9541L.U, 0x39a80171L.U, 0x80cb3deL.U, 0xd8b4e49cL.U, 0x6456c190L.U, 0x7bcb8461L.U, 0xd532b670L.U, 0x486c5c74L.U, 0xd0b85742L.U
)
val inv_t_d1 = Array(
0x5051f4a7L.U, 0x537e4165L.U, 0xc31a17a4L.U, 0x963a275eL.U, 0xcb3bab6bL.U, 0xf11f9d45L.U, 0xabacfa58L.U, 0x934be303L.U, 0x552030faL.U, 0xf6ad766dL.U, 0x9188cc76L.U, 0x25f5024cL.U, 0xfc4fe5d7L.U, 0xd7c52acbL.U, 0x80263544L.U, 0x8fb562a3L.U,
0x49deb15aL.U, 0x6725ba1bL.U, 0x9845ea0eL.U, 0xe15dfec0L.U, 0x2c32f75L.U, 0x12814cf0L.U, 0xa38d4697L.U, 0xc66bd3f9L.U, 0xe7038f5fL.U, 0x9515929cL.U, 0xebbf6d7aL.U, 0xda955259L.U, 0x2dd4be83L.U, 0xd3587421L.U, 0x2949e069L.U, 0x448ec9c8L.U,
0x6a75c289L.U, 0x78f48e79L.U, 0x6b99583eL.U, 0xdd27b971L.U, 0xb6bee14fL.U, 0x17f088adL.U, 0x66c920acL.U, 0xb47dce3aL.U, 0x1863df4aL.U, 0x82e51a31L.U, 0x60975133L.U, 0x4562537fL.U, 0xe0b16477L.U, 0x84bb6baeL.U, 0x1cfe81a0L.U, 0x94f9082bL.U,
0x58704868L.U, 0x198f45fdL.U, 0x8794de6cL.U, 0xb7527bf8L.U, 0x23ab73d3L.U, 0xe2724b02L.U, 0x57e31f8fL.U, 0x2a6655abL.U, 0x7b2eb28L.U, 0x32fb5c2L.U, 0x9a86c57bL.U, 0xa5d33708L.U, 0xf2302887L.U, 0xb223bfa5L.U, 0xba02036aL.U, 0x5ced1682L.U,
0x2b8acf1cL.U, 0x92a779b4L.U, 0xf0f307f2L.U, 0xa14e69e2L.U, 0xcd65daf4L.U, 0xd50605beL.U, 0x1fd13462L.U, 0x8ac4a6feL.U, 0x9d342e53L.U, 0xa0a2f355L.U, 0x32058ae1L.U, 0x75a4f6ebL.U, 0x390b83ecL.U, 0xaa4060efL.U, 0x65e719fL.U, 0x51bd6e10L.U,
0xf93e218aL.U, 0x3d96dd06L.U, 0xaedd3e05L.U, 0x464de6bdL.U, 0xb591548dL.U, 0x571c45dL.U, 0x6f0406d4L.U, 0xff605015L.U, 0x241998fbL.U, 0x97d6bde9L.U, 0xcc894043L.U, 0x7767d99eL.U, 0xbdb0e842L.U, 0x8807898bL.U, 0x38e7195bL.U, 0xdb79c8eeL.U,
0x47a17c0aL.U, 0xe97c420fL.U, 0xc9f8841eL.U, 0x0L.U, 0x83098086L.U, 0x48322bedL.U, 0xac1e1170L.U, 0x4e6c5a72L.U, 0xfbfd0effL.U, 0x560f8538L.U, 0x1e3daed5L.U, 0x27362d39L.U, 0x640a0fd9L.U, 0x21685ca6L.U, 0xd19b5b54L.U, 0x3a24362eL.U,
0xb10c0a67L.U, 0xf9357e7L.U, 0xd2b4ee96L.U, 0x9e1b9b91L.U, 0x4f80c0c5L.U, 0xa261dc20L.U, 0x695a774bL.U, 0x161c121aL.U, 0xae293baL.U, 0xe5c0a02aL.U, 0x433c22e0L.U, 0x1d121b17L.U, 0xb0e090dL.U, 0xadf28bc7L.U, 0xb92db6a8L.U, 0xc8141ea9L.U,
0x8557f119L.U, 0x4caf7507L.U, 0xbbee99ddL.U, 0xfda37f60L.U, 0x9ff70126L.U, 0xbc5c72f5L.U, 0xc544663bL.U, 0x345bfb7eL.U, 0x768b4329L.U, 0xdccb23c6L.U, 0x68b6edfcL.U, 0x63b8e4f1L.U, 0xcad731dcL.U, 0x10426385L.U, 0x40139722L.U, 0x2084c611L.U,
0x7d854a24L.U, 0xf8d2bb3dL.U, 0x11aef932L.U, 0x6dc729a1L.U, 0x4b1d9e2fL.U, 0xf3dcb230L.U, 0xec0d8652L.U, 0xd077c1e3L.U, 0x6c2bb316L.U, 0x99a970b9L.U, 0xfa119448L.U, 0x2247e964L.U, 0xc4a8fc8cL.U, 0x1aa0f03fL.U, 0xd8567d2cL.U, 0xef223390L.U,
0xc787494eL.U, 0xc1d938d1L.U, 0xfe8ccaa2L.U, 0x3698d40bL.U, 0xcfa6f581L.U, 0x28a57adeL.U, 0x26dab78eL.U, 0xa43fadbfL.U, 0xe42c3a9dL.U, 0xd507892L.U, 0x9b6a5fccL.U, 0x62547e46L.U, 0xc2f68d13L.U, 0xe890d8b8L.U, 0x5e2e39f7L.U, 0xf582c3afL.U,
0xbe9f5d80L.U, 0x7c69d093L.U, 0xa96fd52dL.U, 0xb3cf2512L.U, 0x3bc8ac99L.U, 0xa710187dL.U, 0x6ee89c63L.U, 0x7bdb3bbbL.U, 0x9cd2678L.U, 0xf46e5918L.U, 0x1ec9ab7L.U, 0xa8834f9aL.U, 0x65e6956eL.U, 0x7eaaffe6L.U, 0x821bccfL.U, 0xe6ef15e8L.U,
0xd9bae79bL.U, 0xce4a6f36L.U, 0xd4ea9f09L.U, 0xd629b07cL.U, 0xaf31a4b2L.U, 0x312a3f23L.U, 0x30c6a594L.U, 0xc035a266L.U, 0x37744ebcL.U, 0xa6fc82caL.U, 0xb0e090d0L.U, 0x1533a7d8L.U, 0x4af10498L.U, 0xf741ecdaL.U, 0xe7fcd50L.U, 0x2f1791f6L.U,
0x8d764dd6L.U, 0x4d43efb0L.U, 0x54ccaa4dL.U, 0xdfe49604L.U, 0xe39ed1b5L.U, 0x1b4c6a88L.U, 0xb8c12c1fL.U, 0x7f466551L.U, 0x49d5eeaL.U, 0x5d018c35L.U, 0x73fa8774L.U, 0x2efb0b41L.U, 0x5ab3671dL.U, 0x5292dbd2L.U, 0x33e91056L.U, 0x136dd647L.U,
0x8c9ad761L.U, 0x7a37a10cL.U, 0x8e59f814L.U, 0x89eb133cL.U, 0xeecea927L.U, 0x35b761c9L.U, 0xede11ce5L.U, 0x3c7a47b1L.U, 0x599cd2dfL.U, 0x3f55f273L.U, 0x791814ceL.U, 0xbf73c737L.U, 0xea53f7cdL.U, 0x5b5ffdaaL.U, 0x14df3d6fL.U, 0x867844dbL.U,
0x81caaff3L.U, 0x3eb968c4L.U, 0x2c382434L.U, 0x5fc2a340L.U, 0x72161dc3L.U, 0xcbce225L.U, 0x8b283c49L.U, 0x41ff0d95L.U, 0x7139a801L.U, 0xde080cb3L.U, 0x9cd8b4e4L.U, 0x906456c1L.U, 0x617bcb84L.U, 0x70d532b6L.U, 0x74486c5cL.U, 0x42d0b857L.U
)
val inv_t_d2 = Array(
0xa75051f4L.U, 0x65537e41L.U, 0xa4c31a17L.U, 0x5e963a27L.U, 0x6bcb3babL.U, 0x45f11f9dL.U, 0x58abacfaL.U, 0x3934be3L.U, 0xfa552030L.U, 0x6df6ad76L.U, 0x769188ccL.U, 0x4c25f502L.U, 0xd7fc4fe5L.U, 0xcbd7c52aL.U, 0x44802635L.U, 0xa38fb562L.U,
0x5a49deb1L.U, 0x1b6725baL.U, 0xe9845eaL.U, 0xc0e15dfeL.U, 0x7502c32fL.U, 0xf012814cL.U, 0x97a38d46L.U, 0xf9c66bd3L.U, 0x5fe7038fL.U, 0x9c951592L.U, 0x7aebbf6dL.U, 0x59da9552L.U, 0x832dd4beL.U, 0x21d35874L.U, 0x692949e0L.U, 0xc8448ec9L.U,
0x896a75c2L.U, 0x7978f48eL.U, 0x3e6b9958L.U, 0x71dd27b9L.U, 0x4fb6bee1L.U, 0xad17f088L.U, 0xac66c920L.U, 0x3ab47dceL.U, 0x4a1863dfL.U, 0x3182e51aL.U, 0x33609751L.U, 0x7f456253L.U, 0x77e0b164L.U, 0xae84bb6bL.U, 0xa01cfe81L.U, 0x2b94f908L.U,
0x68587048L.U, 0xfd198f45L.U, 0x6c8794deL.U, 0xf8b7527bL.U, 0xd323ab73L.U, 0x2e2724bL.U, 0x8f57e31fL.U, 0xab2a6655L.U, 0x2807b2ebL.U, 0xc2032fb5L.U, 0x7b9a86c5L.U, 0x8a5d337L.U, 0x87f23028L.U, 0xa5b223bfL.U, 0x6aba0203L.U, 0x825ced16L.U,
0x1c2b8acfL.U, 0xb492a779L.U, 0xf2f0f307L.U, 0xe2a14e69L.U, 0xf4cd65daL.U, 0xbed50605L.U, 0x621fd134L.U, 0xfe8ac4a6L.U, 0x539d342eL.U, 0x55a0a2f3L.U, 0xe132058aL.U, 0xeb75a4f6L.U, 0xec390b83L.U, 0xefaa4060L.U, 0x9f065e71L.U, 0x1051bd6eL.U,
0x8af93e21L.U, 0x63d96ddL.U, 0x5aedd3eL.U, 0xbd464de6L.U, 0x8db59154L.U, 0x5d0571c4L.U, 0xd46f0406L.U, 0x15ff6050L.U, 0xfb241998L.U, 0xe997d6bdL.U, 0x43cc8940L.U, 0x9e7767d9L.U, 0x42bdb0e8L.U, 0x8b880789L.U, 0x5b38e719L.U, 0xeedb79c8L.U,
0xa47a17cL.U, 0xfe97c42L.U, 0x1ec9f884L.U, 0x0L.U, 0x86830980L.U, 0xed48322bL.U, 0x70ac1e11L.U, 0x724e6c5aL.U, 0xfffbfd0eL.U, 0x38560f85L.U, 0xd51e3daeL.U, 0x3927362dL.U, 0xd9640a0fL.U, 0xa621685cL.U, 0x54d19b5bL.U, 0x2e3a2436L.U,
0x67b10c0aL.U, 0xe70f9357L.U, 0x96d2b4eeL.U, 0x919e1b9bL.U, 0xc54f80c0L.U, 0x20a261dcL.U, 0x4b695a77L.U, 0x1a161c12L.U, 0xba0ae293L.U, 0x2ae5c0a0L.U, 0xe0433c22L.U, 0x171d121bL.U, 0xd0b0e09L.U, 0xc7adf28bL.U, 0xa8b92db6L.U, 0xa9c8141eL.U,
0x198557f1L.U, 0x74caf75L.U, 0xddbbee99L.U, 0x60fda37fL.U, 0x269ff701L.U, 0xf5bc5c72L.U, 0x3bc54466L.U, 0x7e345bfbL.U, 0x29768b43L.U, 0xc6dccb23L.U, 0xfc68b6edL.U, 0xf163b8e4L.U, 0xdccad731L.U, 0x85104263L.U, 0x22401397L.U, 0x112084c6L.U,
0x247d854aL.U, 0x3df8d2bbL.U, 0x3211aef9L.U, 0xa16dc729L.U, 0x2f4b1d9eL.U, 0x30f3dcb2L.U, 0x52ec0d86L.U, 0xe3d077c1L.U, 0x166c2bb3L.U, 0xb999a970L.U, 0x48fa1194L.U, 0x642247e9L.U, 0x8cc4a8fcL.U, 0x3f1aa0f0L.U, 0x2cd8567dL.U, 0x90ef2233L.U,
0x4ec78749L.U, 0xd1c1d938L.U, 0xa2fe8ccaL.U, 0xb3698d4L.U, 0x81cfa6f5L.U, 0xde28a57aL.U, 0x8e26dab7L.U, 0xbfa43fadL.U, 0x9de42c3aL.U, 0x920d5078L.U, 0xcc9b6a5fL.U, 0x4662547eL.U, 0x13c2f68dL.U, 0xb8e890d8L.U, 0xf75e2e39L.U, 0xaff582c3L.U,
0x80be9f5dL.U, 0x937c69d0L.U, 0x2da96fd5L.U, 0x12b3cf25L.U, 0x993bc8acL.U, 0x7da71018L.U, 0x636ee89cL.U, 0xbb7bdb3bL.U, 0x7809cd26L.U, 0x18f46e59L.U, 0xb701ec9aL.U, 0x9aa8834fL.U, 0x6e65e695L.U, 0xe67eaaffL.U, 0xcf0821bcL.U, 0xe8e6ef15L.U,
0x9bd9bae7L.U, 0x36ce4a6fL.U, 0x9d4ea9fL.U, 0x7cd629b0L.U, 0xb2af31a4L.U, 0x23312a3fL.U, 0x9430c6a5L.U, 0x66c035a2L.U, 0xbc37744eL.U, 0xcaa6fc82L.U, 0xd0b0e090L.U, 0xd81533a7L.U, 0x984af104L.U, 0xdaf741ecL.U, 0x500e7fcdL.U, 0xf62f1791L.U,
0xd68d764dL.U, 0xb04d43efL.U, 0x4d54ccaaL.U, 0x4dfe496L.U, 0xb5e39ed1L.U, 0x881b4c6aL.U, 0x1fb8c12cL.U, 0x517f4665L.U, 0xea049d5eL.U, 0x355d018cL.U, 0x7473fa87L.U, 0x412efb0bL.U, 0x1d5ab367L.U, 0xd25292dbL.U, 0x5633e910L.U, 0x47136dd6L.U,
0x618c9ad7L.U, 0xc7a37a1L.U, 0x148e59f8L.U, 0x3c89eb13L.U, 0x27eecea9L.U, 0xc935b761L.U, 0xe5ede11cL.U, 0xb13c7a47L.U, 0xdf599cd2L.U, 0x733f55f2L.U, 0xce791814L.U, 0x37bf73c7L.U, 0xcdea53f7L.U, 0xaa5b5ffdL.U, 0x6f14df3dL.U, 0xdb867844L.U,
0xf381caafL.U, 0xc43eb968L.U, 0x342c3824L.U, 0x405fc2a3L.U, 0xc372161dL.U, 0x250cbce2L.U, 0x498b283cL.U, 0x9541ff0dL.U, 0x17139a8L.U, 0xb3de080cL.U, 0xe49cd8b4L.U, 0xc1906456L.U, 0x84617bcbL.U, 0xb670d532L.U, 0x5c74486cL.U, 0x5742d0b8L.U
)
val inv_t_d3 = Array(
0xf4a75051L.U, 0x4165537eL.U, 0x17a4c31aL.U, 0x275e963aL.U, 0xab6bcb3bL.U, 0x9d45f11fL.U, 0xfa58abacL.U, 0xe303934bL.U, 0x30fa5520L.U, 0x766df6adL.U, 0xcc769188L.U, 0x24c25f5L.U, 0xe5d7fc4fL.U, 0x2acbd7c5L.U, 0x35448026L.U, 0x62a38fb5L.U,
0xb15a49deL.U, 0xba1b6725L.U, 0xea0e9845L.U, 0xfec0e15dL.U, 0x2f7502c3L.U, 0x4cf01281L.U, 0x4697a38dL.U, 0xd3f9c66bL.U, 0x8f5fe703L.U, 0x929c9515L.U, 0x6d7aebbfL.U, 0x5259da95L.U, 0xbe832dd4L.U, 0x7421d358L.U, 0xe0692949L.U, 0xc9c8448eL.U,
0xc2896a75L.U, 0x8e7978f4L.U, 0x583e6b99L.U, 0xb971dd27L.U, 0xe14fb6beL.U, 0x88ad17f0L.U, 0x20ac66c9L.U, 0xce3ab47dL.U, 0xdf4a1863L.U, 0x1a3182e5L.U, 0x51336097L.U, 0x537f4562L.U, 0x6477e0b1L.U, 0x6bae84bbL.U, 0x81a01cfeL.U, 0x82b94f9L.U,
0x48685870L.U, 0x45fd198fL.U, 0xde6c8794L.U, 0x7bf8b752L.U, 0x73d323abL.U, 0x4b02e272L.U, 0x1f8f57e3L.U, 0x55ab2a66L.U, 0xeb2807b2L.U, 0xb5c2032fL.U, 0xc57b9a86L.U, 0x3708a5d3L.U, 0x2887f230L.U, 0xbfa5b223L.U, 0x36aba02L.U, 0x16825cedL.U,
0xcf1c2b8aL.U, 0x79b492a7L.U, 0x7f2f0f3L.U, 0x69e2a14eL.U, 0xdaf4cd65L.U, 0x5bed506L.U, 0x34621fd1L.U, 0xa6fe8ac4L.U, 0x2e539d34L.U, 0xf355a0a2L.U, 0x8ae13205L.U, 0xf6eb75a4L.U, 0x83ec390bL.U, 0x60efaa40L.U, 0x719f065eL.U, 0x6e1051bdL.U,
0x218af93eL.U, 0xdd063d96L.U, 0x3e05aeddL.U, 0xe6bd464dL.U, 0x548db591L.U, 0xc45d0571L.U, 0x6d46f04L.U, 0x5015ff60L.U, 0x98fb2419L.U, 0xbde997d6L.U, 0x4043cc89L.U, 0xd99e7767L.U, 0xe842bdb0L.U, 0x898b8807L.U, 0x195b38e7L.U, 0xc8eedb79L.U,
0x7c0a47a1L.U, 0x420fe97cL.U, 0x841ec9f8L.U, 0x0L.U, 0x80868309L.U, 0x2bed4832L.U, 0x1170ac1eL.U, 0x5a724e6cL.U, 0xefffbfdL.U, 0x8538560fL.U, 0xaed51e3dL.U, 0x2d392736L.U, 0xfd9640aL.U, 0x5ca62168L.U, 0x5b54d19bL.U, 0x362e3a24L.U,
0xa67b10cL.U, 0x57e70f93L.U, 0xee96d2b4L.U, 0x9b919e1bL.U, 0xc0c54f80L.U, 0xdc20a261L.U, 0x774b695aL.U, 0x121a161cL.U, 0x93ba0ae2L.U, 0xa02ae5c0L.U, 0x22e0433cL.U, 0x1b171d12L.U, 0x90d0b0eL.U, 0x8bc7adf2L.U, 0xb6a8b92dL.U, 0x1ea9c814L.U,
0xf1198557L.U, 0x75074cafL.U, 0x99ddbbeeL.U, 0x7f60fda3L.U, 0x1269ff7L.U, 0x72f5bc5cL.U, 0x663bc544L.U, 0xfb7e345bL.U, 0x4329768bL.U, 0x23c6dccbL.U, 0xedfc68b6L.U, 0xe4f163b8L.U, 0x31dccad7L.U, 0x63851042L.U, 0x97224013L.U, 0xc6112084L.U,
0x4a247d85L.U, 0xbb3df8d2L.U, 0xf93211aeL.U, 0x29a16dc7L.U, 0x9e2f4b1dL.U, 0xb230f3dcL.U, 0x8652ec0dL.U, 0xc1e3d077L.U, 0xb3166c2bL.U, 0x70b999a9L.U, 0x9448fa11L.U, 0xe9642247L.U, 0xfc8cc4a8L.U, 0xf03f1aa0L.U, 0x7d2cd856L.U, 0x3390ef22L.U,
0x494ec787L.U, 0x38d1c1d9L.U, 0xcaa2fe8cL.U, 0xd40b3698L.U, 0xf581cfa6L.U, 0x7ade28a5L.U, 0xb78e26daL.U, 0xadbfa43fL.U, 0x3a9de42cL.U, 0x78920d50L.U, 0x5fcc9b6aL.U, 0x7e466254L.U, 0x8d13c2f6L.U, 0xd8b8e890L.U, 0x39f75e2eL.U, 0xc3aff582L.U,
0x5d80be9fL.U, 0xd0937c69L.U, 0xd52da96fL.U, 0x2512b3cfL.U, 0xac993bc8L.U, 0x187da710L.U, 0x9c636ee8L.U, 0x3bbb7bdbL.U, 0x267809cdL.U, 0x5918f46eL.U, 0x9ab701ecL.U, 0x4f9aa883L.U, 0x956e65e6L.U, 0xffe67eaaL.U, 0xbccf0821L.U, 0x15e8e6efL.U,
0xe79bd9baL.U, 0x6f36ce4aL.U, 0x9f09d4eaL.U, 0xb07cd629L.U, 0xa4b2af31L.U, 0x3f23312aL.U, 0xa59430c6L.U, 0xa266c035L.U, 0x4ebc3774L.U, 0x82caa6fcL.U, 0x90d0b0e0L.U, 0xa7d81533L.U, 0x4984af1L.U, 0xecdaf741L.U, 0xcd500e7fL.U, 0x91f62f17L.U,
0x4dd68d76L.U, 0xefb04d43L.U, 0xaa4d54ccL.U, 0x9604dfe4L.U, 0xd1b5e39eL.U, 0x6a881b4cL.U, 0x2c1fb8c1L.U, 0x65517f46L.U, 0x5eea049dL.U, 0x8c355d01L.U, 0x877473faL.U, 0xb412efbL.U, 0x671d5ab3L.U, 0xdbd25292L.U, 0x105633e9L.U, 0xd647136dL.U,
0xd7618c9aL.U, 0xa10c7a37L.U, 0xf8148e59L.U, 0x133c89ebL.U, 0xa927eeceL.U, 0x61c935b7L.U, 0x1ce5ede1L.U, 0x47b13c7aL.U, 0xd2df599cL.U, 0xf2733f55L.U, 0x14ce7918L.U, 0xc737bf73L.U, 0xf7cdea53L.U, 0xfdaa5b5fL.U, 0x3d6f14dfL.U, 0x44db8678L.U,
0xaff381caL.U, 0x68c43eb9L.U, 0x24342c38L.U, 0xa3405fc2L.U, 0x1dc37216L.U, 0xe2250cbcL.U, 0x3c498b28L.U, 0xd9541ffL.U, 0xa8017139L.U, 0xcb3de08L.U, 0xb4e49cd8L.U, 0x56c19064L.U, 0xcb84617bL.U, 0x32b670d5L.U, 0x6c5c7448L.U, 0xb85742d0L.U
)
}
object INV_s_table{
val inv_s = Array(
0x52.U,0x09.U,0x6A.U,0xD5.U,0x30.U,0x36.U,0xA5.U,0x38.U,0xBF.U,0x40.U,0xA3.U,0x9E.U,0x81.U,0xF3.U,0xD7.U,0xFB.U,
0x7C.U,0xE3.U,0x39.U,0x82.U,0x9B.U,0x2F.U,0xFF.U,0x87.U,0x34.U,0x8E.U,0x43.U,0x44.U,0xC4.U,0xDE.U,0xE9.U,0xCB.U,
0x54.U,0x7B.U,0x94.U,0x32.U,0xA6.U,0xC2.U,0x23.U,0x3D.U,0xEE.U,0x4C.U,0x95.U,0x0B.U,0x42.U,0xFA.U,0xC3.U,0x4E.U,
0x08.U,0x2E.U,0xA1.U,0x66.U,0x28.U,0xD9.U,0x24.U,0xB2.U,0x76.U,0x5B.U,0xA2.U,0x49.U,0x6D.U,0x8B.U,0xD1.U,0x25.U,
0x72.U,0xF8.U,0xF6.U,0x64.U,0x86.U,0x68.U,0x98.U,0x16.U,0xD4.U,0xA4.U,0x5C.U,0xCC.U,0x5D.U,0x65.U,0xB6.U,0x92.U,
0x6C.U,0x70.U,0x48.U,0x50.U,0xFD.U,0xED.U,0xB9.U,0xDA.U,0x5E.U,0x15.U,0x46.U,0x57.U,0xA7.U,0x8D.U,0x9D.U,0x84.U,
0x90.U,0xD8.U,0xAB.U,0x00.U,0x8C.U,0xBC.U,0xD3.U,0x0A.U,0xF7.U,0xE4.U,0x58.U,0x05.U,0xB8.U,0xB3.U,0x45.U,0x06.U,
0xD0.U,0x2C.U,0x1E.U,0x8F.U,0xCA.U,0x3F.U,0x0F.U,0x02.U,0xC1.U,0xAF.U,0xBD.U,0x03.U,0x01.U,0x13.U,0x8A.U,0x6B.U,
0x3A.U,0x91.U,0x11.U,0x41.U,0x4F.U,0x67.U,0xDC.U,0xEA.U,0x97.U,0xF2.U,0xCF.U,0xCE.U,0xF0.U,0xB4.U,0xE6.U,0x73.U,
0x96.U,0xAC.U,0x74.U,0x22.U,0xE7.U,0xAD.U,0x35.U,0x85.U,0xE2.U,0xF9.U,0x37.U,0xE8.U,0x1C.U,0x75.U,0xDF.U,0x6E.U,
0x47.U,0xF1.U,0x1A.U,0x71.U,0x1D.U,0x29.U,0xC5.U,0x89.U,0x6F.U,0xB7.U,0x62.U,0x0E.U,0xAA.U,0x18.U,0xBE.U,0x1B.U,
0xFC.U,0x56.U,0x3E.U,0x4B.U,0xC6.U,0xD2.U,0x79.U,0x20.U,0x9A.U,0xDB.U,0xC0.U,0xFE.U,0x78.U,0xCD.U,0x5A.U,0xF4.U,
0x1F.U,0xDD.U,0xA8.U,0x33.U,0x88.U,0x07.U,0xC7.U,0x31.U,0xB1.U,0x12.U,0x10.U,0x59.U,0x27.U,0x80.U,0xEC.U,0x5F.U,
0x60.U,0x51.U,0x7F.U,0xA9.U,0x19.U,0xB5.U,0x4A.U,0x0D.U,0x2D.U,0xE5.U,0x7A.U,0x9F.U,0x93.U,0xC9.U,0x9C.U,0xEF.U,
0xA0.U,0xE0.U,0x3B.U,0x4D.U,0xAE.U,0x2A.U,0xF5.U,0xB0.U,0xC8.U,0xEB.U,0xBB.U,0x3C.U,0x83.U,0x53.U,0x99.U,0x61.U,
0x17.U,0x2B.U,0x04.U,0x7E.U,0xBA.U,0x77.U,0xD6.U,0x26.U,0xE1.U,0x69.U,0x14.U,0x63.U,0x55.U,0x21.U,0x0C.U,0x7D.U
)
}