1#![allow(dead_code)]
2
3pub type Trit = u8;
4
5pub const NUM_ROUNDS: usize = 24;
6pub const TROIKA_RATE: usize = 243;
7
8pub const COLUMNS: usize = 9;
9pub const ROWS: usize = 3;
10pub const SLICES: usize = 27;
11pub const SLICESIZE: usize = COLUMNS * ROWS;
12pub const STATE_SIZE: usize = COLUMNS * ROWS * SLICES;
13pub const STATESIZE: usize = COLUMNS * ROWS * SLICES;
14pub const RATESIZE: usize = SLICESIZE * 9;
15pub const NUM_SBOXES: usize = COLUMNS * ROWS * SLICES / 3;
16pub const MUXSIZE: usize = 8064;
17pub const STRIT_SIZE: usize = 64;
18pub const STRIT_BASE_SIZE: usize = 64;
19
20pub const PADDING: Trit = 1;
21
22pub const ROUND_CONSTANTS: [[Trit; COLUMNS * SLICES]; NUM_ROUNDS] = [
23 [
24 2, 2, 2, 2, 1, 2, 0, 1, 0, 1, 1, 0, 2, 0, 1, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 0, 0, 2, 0, 2,
25 1, 0, 2, 2, 2, 1, 0, 2, 2, 0, 0, 1, 2, 2, 1, 0, 1, 0, 1, 2, 2, 2, 0, 1, 2, 2, 1, 1, 2, 1,
26 1, 2, 0, 2, 0, 2, 0, 0, 0, 0, 2, 1, 1, 2, 1, 0, 1, 0, 2, 1, 1, 0, 0, 2, 2, 2, 2, 0, 1, 1,
27 2, 1, 2, 2, 0, 1, 2, 2, 2, 0, 1, 0, 2, 2, 0, 2, 1, 1, 2, 1, 2, 1, 0, 0, 2, 1, 0, 0, 1, 2,
28 2, 1, 1, 1, 0, 1, 0, 2, 2, 0, 2, 2, 2, 0, 2, 2, 1, 0, 0, 0, 2, 1, 0, 0, 1, 1, 1, 2, 2, 1,
29 0, 1, 0, 1, 1, 1, 1, 0, 1, 2, 2, 1, 0, 1, 0, 2, 0, 1, 2, 0, 1, 2, 2, 2, 2, 1, 0, 0, 0, 0,
30 2, 1, 0, 2, 1, 1, 2, 0, 2, 1, 0, 0, 0, 1, 0, 2, 1, 2, 0, 1, 2, 1, 0, 2, 0, 2, 1, 0, 0, 1,
31 2, 0, 2, 2, 2, 0, 1, 0, 2, 0, 1, 0, 2, 1, 2, 1, 2, 2, 1, 1, 2, 0, 2, 2, 1, 0, 0, 2, 0, 2,
32 1, 0, 1,
33 ],
34 [
35 1, 1, 1, 0, 2, 2, 0, 2, 0, 1, 0, 2, 1, 1, 0, 0, 1, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 1, 2, 0,
36 2, 2, 2, 0, 2, 1, 1, 2, 1, 0, 2, 1, 0, 2, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0,
37 0, 0, 1, 1, 0, 2, 0, 0, 0, 2, 1, 1, 0, 1, 2, 0, 1, 2, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 2, 2,
38 0, 2, 0, 2, 1, 0, 2, 1, 0, 0, 1, 2, 2, 0, 0, 0, 0, 1, 0, 2, 2, 2, 1, 1, 0, 1, 0, 2, 1, 2,
39 2, 2, 1, 0, 2, 2, 0, 2, 0, 1, 2, 1, 0, 1, 0, 0, 1, 1, 0, 1, 2, 2, 2, 0, 0, 1, 0, 0, 1, 2,
40 1, 1, 1, 2, 0, 0, 0, 2, 1, 0, 2, 1, 2, 2, 1, 2, 1, 0, 0, 0, 2, 0, 0, 0, 2, 2, 1, 2, 2, 0,
41 0, 1, 2, 2, 1, 0, 0, 2, 1, 2, 2, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 2, 2, 1, 0, 1, 2, 0, 2, 2,
42 1, 0, 1, 2, 1, 0, 1, 0, 1, 1, 2, 1, 1, 2, 2, 2, 1, 0, 2, 0, 0, 0, 1, 1, 2, 1, 0, 2, 0, 1,
43 1, 1, 2,
44 ],
45 [
46 0, 2, 0, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1,
47 0, 0, 0, 1, 2, 2, 0, 1, 0, 2, 2, 1, 2, 2, 2, 2, 1, 2, 1, 1, 0, 0, 1, 0, 2, 0, 2, 0, 1, 2,
48 0, 0, 2, 2, 2, 1, 1, 0, 0, 2, 0, 2, 2, 2, 2, 1, 2, 1, 0, 2, 0, 2, 0, 2, 0, 2, 2, 0, 2, 2,
49 1, 2, 1, 2, 0, 0, 0, 0, 1, 0, 2, 1, 1, 2, 1, 0, 1, 0, 2, 0, 1, 0, 0, 2, 2, 2, 2, 2, 1, 1,
50 0, 1, 2, 2, 0, 0, 2, 2, 1, 0, 1, 2, 2, 1, 0, 2, 1, 1, 2, 1, 2, 0, 1, 0, 0, 1, 0, 0, 1, 1,
51 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 2, 0, 0, 1, 0, 0, 1, 0, 2, 1, 0, 2, 0, 0, 0, 0, 2, 0,
52 0, 0, 2, 0, 1, 0, 2, 0, 0, 1, 2, 0, 1, 1, 2, 2, 0, 2, 2, 0, 0, 2, 2, 1, 2, 0, 0, 0, 1, 0,
53 2, 1, 0, 1, 2, 1, 1, 0, 2, 0, 0, 2, 1, 1, 0, 1, 1, 2, 0, 0, 1, 1, 1, 0, 0, 2, 2, 2, 2, 1,
54 1, 2, 2,
55 ],
56 [
57 1, 2, 2, 0, 2, 2, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 1, 0, 2, 2, 0, 0, 1, 2, 1, 0, 0, 1, 0, 1,
58 2, 2, 1, 2, 1, 0, 0, 1, 1, 2, 0, 0, 2, 2, 1, 0, 1, 2, 2, 2, 0, 2, 1, 1, 2, 1, 2, 1, 1, 0,
59 2, 1, 0, 0, 1, 2, 0, 1, 1, 0, 0, 1, 0, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 0, 0, 2, 1, 0, 0,
60 2, 0, 1, 1, 2, 1, 0, 1, 1, 0, 1, 2, 2, 0, 2, 2, 0, 0, 0, 1, 2, 2, 0, 0, 0, 1, 1, 1, 2, 2,
61 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0,
62 0, 2, 2, 0, 1, 1, 2, 2, 2, 2, 2, 0, 2, 2, 2, 1, 1, 0, 0, 1, 0, 0, 2, 2, 2, 1, 2, 0, 0, 0,
63 1, 2, 2, 2, 0, 1, 2, 1, 1, 2, 2, 1, 1, 2, 0, 1, 0, 0, 1, 0, 2, 0, 2, 0, 1, 0, 0, 0, 2, 2,
64 2, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 1, 0, 0, 2,
65 2, 0, 0,
66 ],
67 [
68 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 0, 1, 2, 0, 2, 1, 0, 0, 2, 0, 1, 0, 1, 2, 0, 1, 1, 0,
69 1, 1, 1, 1, 0, 0, 2, 0, 0, 0, 1, 0, 2, 2, 1, 0, 0, 1, 1, 0, 2, 1, 1, 1, 1, 0, 1, 0, 1, 0,
70 1, 2, 0, 2, 0, 2, 1, 2, 1, 1, 0, 1, 1, 2, 2, 2, 2, 0, 1, 0, 0, 2, 1, 1, 0, 1, 2, 1, 0, 1,
71 1, 1, 1, 0, 1, 1, 2, 2, 0, 1, 0, 2, 0, 0, 2, 1, 2, 2, 1, 2, 2, 0, 0, 1, 2, 0, 0, 0, 0, 2,
72 1, 2, 2, 0, 2, 1, 0, 2, 1, 2, 0, 2, 0, 2, 0, 0, 0, 2, 1, 1, 1, 2, 1, 0, 1, 2, 1, 1, 2, 1,
73 0, 2, 2, 1, 1, 0, 0, 0, 2, 0, 1, 1, 2, 1, 2, 2, 2, 0, 1, 2, 2, 0, 1, 0, 1, 1, 2, 0, 2, 2,
74 2, 1, 1, 0, 2, 2, 1, 0, 2, 2, 2, 1, 1, 1, 1, 1, 0, 1, 2, 2, 2, 2, 0, 0, 2, 0, 1, 2, 1, 0,
75 1, 1, 0, 0, 1, 0, 1, 2, 2, 0, 0, 2, 0, 0, 1, 1, 2, 2, 1, 0, 0, 0, 2, 1, 2, 1, 0, 1, 1, 2,
76 2, 1, 2,
77 ],
78 [
79 2, 2, 2, 0, 2, 1, 0, 0, 0, 1, 0, 1, 0, 2, 0, 1, 2, 1, 0, 1, 2, 2, 2, 1, 0, 1, 2, 2, 1, 2,
80 1, 2, 1, 2, 1, 2, 0, 0, 2, 1, 2, 1, 2, 1, 1, 2, 0, 1, 2, 2, 1, 2, 0, 0, 2, 0, 0, 2, 0, 0,
81 1, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 1, 0, 0, 0, 2, 2, 0, 0, 2, 0, 1, 2, 2, 2, 0, 1, 0, 0,
82 1, 0, 2, 1, 1, 2, 1, 0, 0, 0, 2, 0, 1, 0, 0, 2, 1, 2, 2, 0, 1, 1, 0, 1, 1, 2, 0, 2, 2, 2,
83 0, 0, 0, 2, 2, 1, 0, 2, 1, 1, 1, 2, 2, 1, 1, 0, 0, 1, 2, 1, 1, 0, 2, 1, 2, 0, 2, 1, 0, 1,
84 1, 0, 2, 1, 1, 2, 0, 2, 0, 0, 1, 0, 1, 0, 2, 1, 1, 0, 2, 0, 1, 2, 2, 0, 1, 1, 1, 2, 1, 0,
85 2, 2, 2, 2, 1, 1, 0, 2, 0, 1, 2, 0, 2, 2, 1, 1, 2, 1, 0, 0, 1, 0, 1, 2, 0, 0, 2, 1, 0, 0,
86 1, 1, 0, 2, 0, 1, 0, 1, 0, 1, 0, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 0, 2, 1, 0, 1, 2, 0, 2,
87 2, 1, 0,
88 ],
89 [
90 0, 2, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 2, 2, 1, 0, 1, 0, 0, 2, 1, 1, 1, 1, 2, 2, 0, 1, 1, 1,
91 2, 0, 1, 1, 2, 2, 2, 1, 1, 2, 0, 2, 2, 1, 1, 2, 2, 0, 2, 1, 0, 1, 2, 0, 1, 2, 0, 2, 0, 2,
92 1, 0, 0, 0, 0, 1, 1, 2, 2, 0, 1, 2, 0, 1, 1, 2, 1, 2, 2, 0, 0, 0, 2, 2, 0, 1, 0, 2, 1, 1,
93 2, 2, 0, 2, 1, 2, 0, 1, 0, 1, 2, 0, 2, 2, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 2, 0, 1, 2, 0, 2,
94 1, 0, 2, 2, 0, 0, 0, 1, 2, 0, 0, 1, 0, 1, 1, 1, 2, 0, 2, 2, 0, 1, 0, 1, 1, 2, 1, 0, 0, 2,
95 1, 1, 0, 2, 0, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 2, 0, 0, 0, 1, 1, 1, 2, 0, 1, 2, 1, 1, 1,
96 1, 1, 2, 0, 0, 1, 0, 2, 0, 0, 1, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 1, 1, 0, 0, 0, 0, 0, 2, 2,
97 2, 1, 2, 2, 0, 0, 2, 2, 2, 2, 0, 0, 2, 1, 0, 2, 2, 0, 1, 1, 0, 1, 0, 0, 1, 0, 2, 2, 0, 0,
98 2, 0, 0,
99 ],
100 [
101 0, 2, 1, 0, 1, 0, 0, 0, 1, 2, 1, 0, 2, 2, 0, 2, 1, 2, 1, 2, 0, 1, 0, 0, 2, 2, 2, 1, 1, 0,
102 1, 0, 1, 2, 2, 2, 2, 1, 0, 2, 1, 1, 2, 1, 0, 2, 1, 0, 0, 1, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0,
103 1, 0, 0, 1, 1, 0, 0, 2, 1, 0, 0, 0, 1, 0, 2, 1, 1, 0, 1, 2, 1, 0, 2, 0, 1, 1, 0, 1, 1, 2,
104 0, 2, 1, 2, 0, 0, 0, 2, 2, 1, 2, 2, 1, 2, 1, 2, 2, 1, 0, 0, 0, 0, 2, 1, 0, 0, 1, 1, 2, 0,
105 2, 1, 0, 1, 0, 1, 2, 2, 1, 2, 0, 2, 2, 1, 1, 2, 0, 0, 1, 1, 0, 1, 2, 0, 2, 2, 2, 1, 0, 0,
106 1, 0, 1, 0, 2, 2, 1, 1, 0, 0, 1, 2, 2, 1, 1, 2, 1, 2, 0, 2, 2, 0, 2, 0, 0, 1, 1, 1, 0, 0,
107 0, 1, 0, 2, 1, 1, 2, 2, 2, 1, 0, 2, 0, 1, 0, 1, 1, 2, 1, 0, 2, 1, 1, 1, 0, 2, 0, 2, 0, 0,
108 1, 2, 2, 1, 2, 2, 1, 0, 2, 2, 2, 0, 0, 0, 0, 1, 0, 1, 2, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 2,
109 2, 0, 2,
110 ],
111 [
112 1, 0, 1, 2, 1, 1, 0, 0, 2, 0, 2, 1, 1, 0, 1, 2, 1, 0, 2, 2, 1, 1, 0, 1, 1, 2, 0, 1, 1, 2,
113 1, 0, 0, 2, 2, 0, 2, 2, 0, 2, 1, 1, 2, 0, 0, 0, 0, 0, 2, 1, 0, 2, 2, 1, 0, 0, 2, 1, 0, 0,
114 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 2, 0, 2, 1, 0, 0, 2, 2, 2, 0, 2, 2, 0, 1, 1, 2,
115 2, 1, 0, 0, 0, 2, 2, 2, 1, 0, 1, 1, 2, 2, 2, 2, 2, 1, 2, 0, 2, 1, 1, 0, 0, 2, 0, 1, 1, 2,
116 1, 1, 2, 1, 0, 1, 2, 2, 0, 0, 0, 0, 2, 2, 1, 2, 2, 1, 1, 0, 2, 2, 1, 0, 0, 0, 2, 1, 1, 1,
117 1, 1, 1, 2, 2, 1, 1, 2, 0, 0, 0, 1, 1, 0, 2, 0, 2, 2, 1, 1, 1, 0, 1, 2, 2, 0, 1, 2, 2, 2,
118 0, 1, 2, 2, 2, 0, 2, 1, 1, 2, 0, 2, 1, 1, 0, 2, 1, 0, 2, 1, 2, 1, 1, 1, 0, 0, 0, 0, 2, 2,
119 0, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 2, 0, 1, 0, 0, 0, 1, 1, 2, 0, 1, 1, 0, 2, 1, 1, 2, 2, 0,
120 2, 0, 1,
121 ],
122 [
123 0, 1, 0, 1, 2, 0, 1, 1, 1, 1, 2, 1, 1, 0, 0, 2, 1, 0, 1, 0, 0, 1, 2, 1, 1, 0, 2, 2, 0, 0,
124 2, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 2, 0, 1, 2, 0, 2, 1, 2, 2, 2, 1, 0, 0, 1, 2, 2, 0, 1, 2,
125 1, 1, 0, 2, 2, 2, 2, 0, 1, 0, 1, 1, 1, 2, 0, 1, 2, 1, 1, 0, 1, 1, 2, 0, 0, 1, 0, 1, 0, 0,
126 2, 2, 2, 2, 0, 1, 2, 0, 1, 2, 2, 0, 1, 2, 0, 0, 0, 0, 2, 2, 2, 0, 0, 2, 1, 0, 2, 2, 2, 1,
127 1, 0, 1, 0, 0, 1, 2, 2, 2, 1, 0, 2, 0, 0, 2, 2, 1, 2, 1, 0, 2, 0, 0, 2, 1, 0, 2, 2, 0, 2,
128 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 1, 0, 0, 0, 0, 2, 2, 0, 2,
129 1, 0, 2, 0, 2, 2, 0, 0, 2, 0, 0, 2, 2, 0, 0, 1, 0, 0, 0, 0, 2, 0, 1, 2, 0, 0, 2, 0, 2, 0,
130 1, 0, 0, 2, 0, 0, 2, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 2, 2, 0, 2, 0, 2, 1, 1, 2, 1, 2, 0, 1,
131 2, 2, 1,
132 ],
133 [
134 0, 0, 1, 1, 0, 0, 2, 0, 1, 1, 0, 1, 0, 2, 1, 0, 1, 2, 0, 0, 2, 2, 0, 0, 2, 1, 0, 2, 0, 2,
135 0, 1, 0, 1, 0, 0, 2, 2, 1, 1, 1, 1, 2, 0, 1, 2, 1, 2, 2, 0, 1, 2, 0, 0, 1, 1, 0, 2, 2, 0,
136 0, 2, 2, 1, 0, 1, 1, 0, 1, 0, 2, 1, 1, 2, 0, 0, 0, 2, 2, 0, 1, 0, 2, 2, 1, 2, 2, 0, 2, 1,
137 2, 1, 1, 0, 0, 2, 0, 2, 2, 2, 0, 1, 2, 1, 0, 2, 0, 2, 1, 2, 0, 1, 2, 0, 2, 2, 2, 2, 1, 0,
138 0, 0, 1, 0, 2, 0, 2, 1, 1, 2, 1, 0, 2, 2, 2, 2, 1, 0, 0, 2, 0, 1, 2, 0, 2, 1, 1, 1, 0, 1,
139 0, 0, 1, 2, 1, 2, 2, 0, 2, 0, 0, 2, 1, 1, 0, 2, 0, 1, 0, 0, 1, 1, 1, 1, 2, 1, 1, 0, 0, 1,
140 1, 0, 1, 0, 0, 1, 2, 0, 1, 0, 0, 2, 0, 0, 2, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 2, 0, 1, 2, 0,
141 2, 0, 0, 2, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 2, 2, 1, 1, 0, 2, 0, 0, 2, 1, 1,
142 2, 1, 1,
143 ],
144 [
145 2, 0, 0, 1, 1, 0, 0, 0, 0, 2, 2, 2, 1, 0, 2, 2, 0, 2, 2, 2, 2, 1, 0, 1, 0, 0, 0, 2, 0, 2,
146 1, 2, 2, 0, 2, 2, 0, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 2, 2,
147 1, 2, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 2, 0, 2, 0, 1, 0, 0, 2, 2, 2, 2, 1, 1, 1, 0, 1, 2, 2,
148 0, 2, 2, 2, 2, 0, 1, 2, 2, 0, 0, 2, 0, 1, 2, 0, 2, 2, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0,
149 0, 0, 0, 0, 1, 0, 1, 2, 2, 2, 0, 0, 1, 0, 1, 1, 2, 1, 1, 1, 2, 0, 1, 0, 2, 0, 0, 2, 1, 2,
150 0, 1, 2, 2, 0, 0, 1, 2, 1, 0, 0, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 0, 0, 0, 0, 2, 0, 0, 0,
151 2, 1, 2, 0, 2, 0, 0, 1, 2, 1, 2, 1, 1, 1, 0, 2, 2, 1, 1, 2, 0, 2, 2, 1, 1, 1, 2, 0, 2, 1,
152 0, 1, 2, 2, 1, 2, 1, 2, 0, 2, 1, 2, 0, 0, 2, 1, 1, 1, 2, 2, 1, 2, 0, 1, 1, 2, 1, 1, 0, 0,
153 1, 0, 2,
154 ],
155 [
156 2, 0, 0, 1, 2, 0, 0, 2, 1, 0, 1, 2, 2, 0, 2, 0, 1, 0, 2, 1, 2, 2, 0, 1, 1, 1, 2, 0, 2, 0,
157 2, 2, 2, 1, 1, 2, 1, 1, 2, 0, 2, 2, 2, 0, 0, 0, 0, 2, 1, 0, 2, 1, 1, 1, 0, 2, 1, 0, 0, 0,
158 1, 2, 2, 1, 0, 0, 1, 2, 1, 2, 2, 0, 1, 1, 0, 2, 1, 1, 0, 2, 2, 2, 0, 1, 0, 1, 1, 1, 1, 2,
159 1, 2, 1, 1, 0, 1, 0, 1, 0, 1, 2, 0, 1, 0, 2, 1, 2, 1, 1, 0, 0, 1, 2, 0, 2, 2, 0, 1, 2, 0,
160 2, 0, 1, 0, 0, 2, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 2, 1, 1, 0, 2, 0, 2, 0, 1, 1, 1, 1, 1, 2,
161 2, 1, 1, 2, 1, 0, 0, 1, 1, 0, 2, 0, 0, 2, 1, 0, 1, 0, 1, 2, 0, 0, 1, 0, 2, 2, 1, 1, 0, 2,
162 2, 0, 2, 1, 1, 2, 1, 1, 1, 0, 0, 2, 1, 0, 0, 0, 2, 2, 2, 1, 1, 0, 1, 2, 2, 2, 2, 2, 2, 1,
163 0, 1, 2, 1, 0, 0, 0, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 0, 0, 0, 1, 0, 0, 0, 0, 2, 1, 1,
164 1, 0, 0,
165 ],
166 [
167 2, 0, 2, 1, 1, 2, 2, 2, 1, 0, 2, 2, 1, 0, 1, 1, 2, 1, 0, 1, 1, 1, 2, 0, 2, 0, 2, 2, 0, 1,
168 1, 2, 1, 1, 2, 0, 0, 2, 2, 2, 0, 0, 0, 2, 2, 0, 2, 2, 1, 1, 1, 2, 2, 0, 0, 0, 1, 2, 2, 1,
169 1, 2, 1, 1, 1, 2, 2, 0, 2, 0, 0, 0, 2, 1, 1, 2, 0, 1, 0, 1, 2, 1, 1, 0, 2, 0, 1, 1, 1, 1,
170 0, 1, 1, 2, 1, 2, 1, 0, 2, 0, 0, 2, 0, 1, 2, 2, 0, 2, 0, 0, 0, 1, 0, 2, 2, 0, 1, 0, 1, 1,
171 0, 2, 1, 0, 2, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 2, 0, 0, 0, 2, 0, 1, 1, 2, 2, 2, 1, 2, 0,
172 1, 2, 2, 1, 1, 2, 0, 1, 0, 0, 2, 0, 2, 0, 2, 0, 1, 0, 1, 0, 2, 1, 2, 1, 1, 1, 1, 2, 2, 0,
173 2, 2, 0, 2, 0, 1, 1, 2, 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 1, 0, 1, 1, 2, 1, 1, 0, 2, 1, 2, 0,
174 2, 0, 0, 1, 1, 0, 2, 1, 1, 1, 0, 2, 1, 0, 1, 0, 1, 2, 2, 1, 0, 0, 2, 2, 1, 1, 2, 0, 1, 1,
175 1, 2, 1,
176 ],
177 [
178 2, 0, 2, 0, 2, 1, 1, 0, 1, 1, 1, 1, 2, 2, 1, 1, 0, 0, 1, 0, 1, 1, 0, 2, 1, 2, 0, 0, 1, 0,
179 0, 1, 0, 2, 1, 2, 2, 0, 0, 0, 0, 2, 0, 2, 0, 2, 1, 1, 0, 2, 0, 2, 1, 2, 2, 1, 1, 1, 2, 2,
180 2, 2, 0, 0, 2, 2, 1, 1, 1, 0, 1, 1, 0, 2, 1, 2, 2, 2, 0, 0, 0, 1, 0, 2, 0, 1, 1, 1, 1, 1,
181 0, 2, 2, 1, 2, 1, 0, 0, 2, 1, 1, 1, 0, 2, 2, 1, 1, 1, 1, 2, 2, 1, 1, 1, 2, 2, 0, 1, 1, 0,
182 2, 2, 1, 1, 2, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 2, 2, 1, 1, 2, 0, 2, 1, 1, 1, 0, 2, 0, 2,
183 1, 2, 1, 2, 2, 1, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0, 1, 0, 0, 2, 1, 1, 2, 0, 1, 0, 0, 1, 1, 1,
184 0, 2, 0, 1, 0, 0, 1, 1, 2, 1, 2, 1, 1, 0, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 2, 0, 0, 0, 0, 0,
185 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 2, 0, 2, 0, 1, 1, 0, 2, 1, 0, 2, 1, 1, 2, 0, 1,
186 0, 0, 0,
187 ],
188 [
189 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 2, 1, 1, 2, 2, 1, 1, 2, 1, 1, 2, 0, 1, 0, 2, 0, 0, 0,
190 0, 2, 0, 1, 2, 2, 0, 1, 0, 2, 0, 1, 0, 2, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 0, 0, 0, 2, 0,
191 0, 1, 0, 2, 1, 1, 2, 0, 0, 2, 0, 2, 0, 1, 0, 2, 2, 0, 0, 2, 1, 1, 1, 2, 1, 0, 1, 0, 1, 1,
192 2, 1, 0, 2, 2, 2, 1, 0, 2, 0, 2, 0, 1, 2, 2, 1, 0, 2, 2, 1, 1, 0, 2, 0, 1, 0, 1, 1, 2, 1,
193 1, 2, 1, 1, 1, 0, 2, 0, 0, 0, 0, 0, 2, 2, 1, 2, 0, 1, 0, 0, 2, 2, 1, 0, 1, 0, 1, 0, 1, 2,
194 1, 1, 2, 2, 1, 2, 1, 1, 1, 0, 0, 1, 0, 0, 2, 0, 2, 2, 2, 0, 0, 0, 1, 0, 2, 0, 2, 1, 1, 1,
195 1, 0, 2, 2, 2, 2, 1, 2, 0, 2, 1, 1, 2, 0, 2, 0, 1, 1, 2, 1, 0, 2, 1, 1, 1, 2, 2, 0, 2, 0,
196 0, 1, 2, 1, 1, 2, 0, 1, 0, 2, 2, 1, 0, 0, 2, 0, 1, 2, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 2, 0,
197 0, 2, 0,
198 ],
199 [
200 2, 1, 2, 2, 2, 0, 0, 0, 2, 2, 2, 0, 1, 1, 1, 1, 2, 2, 2, 1, 2, 2, 1, 0, 1, 1, 1, 2, 0, 0,
201 0, 1, 2, 0, 1, 1, 2, 2, 1, 1, 2, 0, 0, 2, 2, 1, 0, 2, 0, 2, 2, 0, 2, 1, 1, 0, 2, 2, 0, 0,
202 0, 2, 1, 1, 1, 1, 0, 1, 1, 2, 1, 1, 2, 0, 2, 0, 0, 2, 0, 0, 0, 2, 1, 1, 0, 0, 0, 0, 1, 2,
203 1, 1, 1, 2, 2, 0, 1, 2, 1, 0, 2, 1, 1, 2, 2, 0, 1, 2, 0, 0, 1, 0, 1, 2, 2, 0, 0, 2, 2, 0,
204 1, 1, 2, 2, 1, 0, 2, 0, 2, 2, 2, 1, 0, 1, 0, 2, 2, 0, 2, 2, 1, 2, 2, 2, 1, 0, 0, 0, 1, 0,
205 0, 1, 2, 1, 1, 2, 1, 0, 0, 0, 2, 1, 0, 0, 0, 2, 1, 2, 2, 1, 0, 1, 2, 2, 1, 2, 0, 0, 1, 2,
206 1, 2, 0, 0, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 1, 2, 2, 2, 1, 1, 1, 0, 2, 0, 0, 1, 2, 2, 2,
207 2, 1, 2, 0, 2, 2, 2, 1, 0, 2, 0, 1, 1, 0, 2, 2, 1, 0, 2, 1, 2, 0, 1, 1, 1, 1, 0, 0, 2, 1,
208 0, 2, 1,
209 ],
210 [
211 0, 2, 2, 1, 1, 0, 0, 0, 0, 0, 1, 1, 2, 1, 2, 2, 0, 0, 1, 1, 2, 0, 1, 0, 2, 1, 2, 1, 2, 2,
212 0, 1, 2, 0, 2, 2, 1, 0, 2, 2, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 2, 0, 1, 0, 0, 0, 2, 1, 1, 0,
213 0, 1, 0, 2, 2, 1, 1, 1, 2, 0, 0, 2, 1, 1, 2, 2, 1, 2, 2, 0, 1, 1, 0, 1, 0, 0, 0, 2, 2, 2,
214 0, 0, 2, 0, 2, 2, 2, 2, 1, 1, 0, 0, 2, 0, 2, 0, 2, 2, 1, 2, 1, 0, 2, 1, 2, 0, 1, 0, 2, 2,
215 0, 0, 2, 1, 0, 1, 2, 1, 0, 1, 0, 1, 0, 2, 1, 1, 2, 2, 2, 1, 2, 2, 0, 1, 0, 1, 1, 2, 0, 0,
216 2, 2, 1, 1, 0, 2, 2, 2, 0, 2, 1, 2, 1, 1, 1, 2, 1, 0, 2, 2, 2, 0, 2, 1, 0, 2, 0, 1, 2, 1,
217 0, 2, 0, 0, 2, 1, 0, 1, 2, 0, 2, 0, 0, 1, 0, 2, 1, 0, 1, 1, 0, 2, 0, 2, 0, 0, 2, 0, 0, 1,
218 2, 2, 1, 0, 0, 0, 0, 2, 2, 2, 0, 1, 1, 2, 0, 2, 2, 2, 1, 2, 2, 2, 2, 1, 0, 2, 2, 0, 0, 1,
219 0, 2, 1,
220 ],
221 [
222 0, 1, 0, 1, 2, 0, 2, 0, 0, 2, 2, 1, 1, 0, 1, 1, 0, 0, 2, 1, 2, 1, 0, 0, 0, 2, 1, 1, 2, 2,
223 2, 1, 2, 2, 1, 1, 0, 1, 1, 2, 0, 0, 0, 2, 1, 0, 0, 2, 2, 2, 1, 2, 1, 0, 1, 1, 2, 2, 2, 0,
224 2, 2, 2, 0, 2, 1, 1, 1, 0, 0, 2, 1, 0, 2, 1, 2, 2, 2, 1, 1, 0, 0, 0, 2, 0, 1, 2, 2, 1, 2,
225 2, 2, 0, 1, 0, 2, 0, 0, 0, 1, 1, 2, 1, 2, 2, 0, 1, 1, 1, 2, 0, 1, 0, 2, 2, 2, 1, 1, 2, 0,
226 1, 2, 1, 2, 2, 2, 0, 2, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 2, 1, 0, 0, 0, 0, 0, 2, 2, 0, 0, 1,
227 2, 0, 0, 2, 2, 0, 1, 2, 2, 0, 2, 0, 2, 0, 2, 0, 2, 2, 0, 1, 2, 1, 2, 1, 2, 0, 0, 2, 0, 1,
228 1, 2, 1, 1, 2, 0, 0, 1, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 0, 0, 0, 2, 2, 0,
229 1, 1, 1, 1, 1, 2, 2, 0, 2, 2, 1, 0, 0, 1, 1, 2, 0, 0, 1, 1, 1, 0, 1, 2, 2, 2, 2, 1, 1, 2,
230 0, 1, 2,
231 ],
232 [
233 1, 0, 2, 2, 0, 2, 0, 0, 1, 2, 0, 1, 0, 0, 1, 0, 2, 2, 0, 0, 1, 0, 0, 0, 2, 1, 0, 1, 2, 0,
234 0, 2, 2, 1, 0, 2, 1, 0, 2, 0, 2, 1, 1, 0, 0, 0, 0, 2, 2, 2, 1, 1, 2, 2, 0, 2, 2, 2, 2, 2,
235 0, 1, 2, 0, 0, 2, 0, 0, 1, 2, 0, 0, 2, 0, 0, 0, 2, 2, 0, 2, 0, 0, 0, 1, 2, 2, 0, 0, 1, 0,
236 1, 1, 2, 2, 2, 1, 2, 0, 1, 0, 2, 1, 1, 2, 0, 1, 0, 1, 2, 0, 1, 0, 2, 0, 1, 1, 1, 0, 0, 1,
237 2, 2, 1, 2, 1, 2, 2, 0, 2, 2, 0, 0, 2, 1, 0, 2, 0, 0, 0, 1, 0, 1, 0, 0, 2, 0, 1, 1, 0, 1,
238 2, 0, 1, 0, 1, 2, 0, 0, 1, 0, 0, 1, 1, 1, 0, 2, 2, 0, 0, 0, 1, 1, 2, 1, 1, 0, 1, 1, 1, 1,
239 2, 0, 0, 1, 0, 0, 1, 0, 1, 2, 2, 2, 0, 0, 0, 0, 1, 1, 2, 1, 1, 1, 1, 0, 1, 1, 2, 0, 0, 2,
240 0, 2, 0, 0, 2, 2, 2, 0, 0, 2, 1, 0, 0, 2, 2, 1, 1, 0, 1, 0, 1, 1, 2, 1, 2, 1, 0, 2, 1, 0,
241 2, 0, 1,
242 ],
243 [
244 2, 2, 0, 0, 0, 0, 2, 1, 0, 2, 2, 1, 1, 0, 2, 1, 0, 0, 1, 1, 2, 1, 1, 0, 0, 1, 0, 1, 2, 0,
245 0, 1, 2, 0, 0, 1, 1, 0, 2, 2, 2, 0, 2, 2, 1, 0, 1, 1, 2, 1, 0, 0, 1, 1, 2, 0, 2, 0, 2, 1,
246 0, 1, 2, 2, 1, 1, 2, 2, 0, 2, 1, 2, 0, 2, 0, 1, 2, 0, 2, 2, 1, 1, 1, 1, 0, 0, 1, 0, 1, 2,
247 2, 0, 2, 2, 0, 0, 1, 1, 2, 2, 0, 0, 0, 1, 2, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 0, 2,
248 1, 0, 0, 0, 0, 1, 1, 1, 2, 0, 1, 2, 0, 1, 1, 1, 1, 2, 0, 0, 0, 0, 2, 1, 0, 1, 2, 2, 1, 0,
249 2, 1, 0, 2, 1, 2, 0, 1, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 2, 0, 0, 2, 1, 0, 2, 2, 2, 2, 0, 0,
250 1, 0, 0, 1, 2, 0, 1, 1, 2, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 1, 2, 0, 0, 0, 2, 2, 0, 2, 0, 1,
251 2, 1, 2, 2, 0, 0, 1, 1, 0, 1, 1, 0, 2, 1, 2, 1, 0, 0, 0, 0, 1, 0, 2, 2, 2, 1, 2, 0, 1, 0,
252 2, 1, 2,
253 ],
254 [
255 2, 0, 1, 0, 1, 2, 0, 2, 0, 2, 2, 1, 1, 1, 0, 1, 1, 2, 0, 1, 2, 2, 2, 0, 0, 2, 2, 0, 0, 2,
256 1, 1, 1, 0, 2, 0, 1, 0, 1, 1, 2, 2, 1, 2, 1, 1, 1, 0, 2, 1, 0, 0, 2, 0, 2, 2, 1, 0, 0, 1,
257 1, 0, 2, 0, 1, 1, 1, 0, 1, 0, 1, 2, 1, 2, 1, 2, 0, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 0,
258 1, 0, 0, 2, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 2, 0, 0, 0, 2, 1, 0, 0, 1, 2, 0, 1, 2, 1, 0, 1,
259 0, 2, 0, 0, 0, 1, 2, 2, 2, 2, 2, 0, 1, 1, 2, 2, 1, 0, 0, 1, 2, 2, 2, 1, 0, 1, 1, 0, 2, 2,
260 1, 2, 1, 2, 0, 0, 1, 1, 1, 0, 2, 1, 1, 2, 2, 1, 1, 2, 1, 0, 1, 0, 1, 0, 2, 0, 0, 2, 2, 2,
261 1, 2, 2, 2, 0, 0, 2, 2, 2, 0, 0, 1, 1, 1, 0, 2, 2, 1, 1, 2, 1, 1, 2, 1, 1, 1, 2, 0, 0, 0,
262 0, 0, 0, 2, 1, 2, 2, 1, 0, 0, 0, 2, 1, 2, 0, 0, 1, 1, 2, 2, 1, 2, 1, 2, 2, 1, 2, 1, 0, 0,
263 2, 1, 0,
264 ],
265 [
266 0, 0, 2, 2, 1, 1, 1, 0, 1, 2, 2, 2, 1, 2, 2, 2, 0, 1, 2, 1, 2, 0, 0, 1, 1, 2, 0, 1, 1, 1,
267 2, 2, 1, 2, 2, 0, 2, 1, 1, 1, 0, 0, 0, 2, 0, 2, 1, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 1, 0, 0,
268 1, 0, 0, 2, 1, 2, 1, 0, 0, 0, 0, 1, 1, 2, 2, 2, 1, 2, 0, 1, 1, 2, 1, 1, 2, 0, 1, 0, 2, 2,
269 0, 0, 0, 2, 0, 1, 2, 1, 0, 1, 1, 2, 0, 1, 0, 1, 2, 2, 0, 2, 2, 0, 1, 1, 1, 2, 2, 0, 0, 0,
270 2, 2, 1, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 2, 1, 0, 0, 2, 0,
271 1, 1, 2, 0, 2, 1, 1, 0, 1, 2, 2, 2, 1, 2, 1, 1, 0, 1, 2, 1, 2, 0, 2, 0, 1, 0, 1, 1, 1, 1,
272 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 0, 0, 0, 2, 0, 2, 1, 2, 1, 0, 1, 2,
273 0, 2, 2, 2, 2, 2, 2, 1, 0, 1, 0, 2, 0, 0, 0, 2, 1, 2, 2, 2, 2, 0, 1, 2, 1, 2, 0, 1, 0, 1,
274 2, 0, 1,
275 ],
276 [
277 1, 1, 0, 1, 1, 1, 0, 0, 2, 1, 2, 0, 0, 1, 2, 2, 1, 1, 2, 1, 2, 2, 2, 2, 0, 2, 0, 0, 1, 0,
278 1, 0, 1, 0, 1, 0, 2, 0, 1, 2, 1, 2, 1, 2, 2, 2, 1, 0, 1, 1, 2, 1, 0, 1, 2, 1, 2, 0, 2, 0,
279 2, 2, 1, 1, 1, 1, 1, 1, 2, 0, 1, 2, 2, 0, 0, 0, 1, 2, 0, 0, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2,
280 1, 2, 2, 1, 2, 1, 1, 2, 2, 2, 0, 0, 0, 2, 0, 0, 1, 1, 1, 1, 1, 2, 0, 0, 2, 1, 1, 0, 0, 1,
281 2, 2, 0, 1, 1, 1, 2, 0, 2, 2, 2, 2, 2, 1, 1, 2, 1, 0, 2, 0, 0, 2, 2, 0, 0, 2, 0, 2, 0, 0,
282 2, 0, 1, 0, 0, 2, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 2, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 2,
283 2, 0, 0, 1, 1, 0, 0, 1, 2, 2, 1, 2, 1, 0, 2, 0, 2, 2, 0, 0, 2, 2, 0, 2, 2, 0, 0, 1, 0, 2,
284 0, 0, 0, 0, 1, 2, 0, 2, 2, 0, 1, 0, 1, 2, 0, 1, 0, 0, 2, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 2,
285 2, 2, 0,
286 ],
287];
288
289pub const SBOX_LOOKUP: [Trit; 27] = [
290 6, 25, 17, 5, 15, 10, 4, 20, 24, 0, 1, 2, 9, 22, 26, 18, 16, 14, 3, 13, 23, 7, 11, 12, 8, 21,
291 19,
292];
293
294pub const SHIFT_ROWS_LANES: [usize; 729] = [
295 216, 379, 164, 462, 85, 329, 681, 493, 656, 366, 16, 584, 603, 712, 65, 147, 121, 203, 561,
296 292, 50, 429, 538, 269, 315, 451, 641, 243, 406, 191, 489, 112, 356, 708, 520, 683, 393, 43,
297 611, 630, 10, 92, 174, 148, 230, 588, 319, 77, 456, 565, 296, 342, 478, 668, 270, 433, 218,
298 516, 139, 383, 6, 547, 710, 420, 70, 638, 657, 37, 119, 201, 175, 257, 615, 346, 104, 483, 592,
299 323, 369, 505, 695, 297, 460, 245, 543, 166, 410, 33, 574, 8, 447, 97, 665, 684, 64, 146, 228,
300 202, 284, 642, 373, 131, 510, 619, 350, 396, 532, 722, 324, 487, 272, 570, 193, 437, 60, 601,
301 35, 474, 124, 692, 711, 91, 173, 255, 229, 311, 669, 400, 158, 537, 646, 377, 423, 559, 20,
302 351, 514, 299, 597, 220, 464, 87, 628, 62, 501, 151, 719, 9, 118, 200, 282, 256, 338, 696, 427,
303 185, 564, 673, 404, 450, 586, 47, 378, 541, 326, 624, 247, 491, 114, 655, 89, 528, 178, 17, 36,
304 145, 227, 309, 283, 365, 723, 454, 212, 591, 700, 431, 477, 613, 74, 405, 568, 353, 651, 274,
305 518, 141, 682, 116, 555, 205, 44, 63, 172, 254, 336, 310, 392, 21, 481, 239, 618, 727, 458,
306 504, 640, 101, 432, 595, 380, 678, 301, 545, 168, 709, 143, 582, 232, 71, 90, 199, 281, 363,
307 337, 419, 48, 508, 266, 645, 25, 485, 531, 667, 128, 459, 622, 407, 705, 328, 572, 195, 7, 170,
308 609, 259, 98, 117, 226, 308, 390, 364, 446, 75, 535, 293, 672, 52, 512, 558, 694, 155, 486,
309 649, 434, 3, 355, 599, 222, 34, 197, 636, 286, 125, 144, 253, 335, 417, 391, 473, 102, 562,
310 320, 699, 79, 539, 585, 721, 182, 513, 676, 461, 30, 382, 626, 249, 61, 224, 663, 313, 152,
311 171, 280, 362, 444, 418, 500, 129, 589, 347, 726, 106, 566, 612, 19, 209, 540, 703, 488, 57,
312 409, 653, 276, 88, 251, 690, 340, 179, 198, 307, 389, 471, 445, 527, 156, 616, 374, 24, 133,
313 593, 639, 46, 236, 567, 1, 515, 84, 436, 680, 303, 115, 278, 717, 367, 206, 225, 334, 416, 498,
314 472, 554, 183, 643, 401, 51, 160, 620, 666, 73, 263, 594, 28, 542, 111, 463, 707, 330, 142,
315 305, 15, 394, 233, 252, 361, 443, 525, 499, 581, 210, 670, 428, 78, 187, 647, 693, 100, 290,
316 621, 55, 569, 138, 490, 5, 357, 169, 332, 42, 421, 260, 279, 388, 470, 552, 526, 608, 237, 697,
317 455, 105, 214, 674, 720, 127, 317, 648, 82, 596, 165, 517, 32, 384, 196, 359, 69, 448, 287,
318 306, 415, 497, 579, 553, 635, 264, 724, 482, 132, 241, 701, 18, 154, 344, 675, 109, 623, 192,
319 544, 59, 411, 223, 386, 96, 475, 314, 333, 442, 524, 606, 580, 662, 291, 22, 509, 159, 268,
320 728, 45, 181, 371, 702, 136, 650, 219, 571, 86, 438, 250, 413, 123, 502, 341, 360, 469, 551,
321 633, 607, 689, 318, 49, 536, 186, 295, 26, 72, 208, 398, 0, 163, 677, 246, 598, 113, 465, 277,
322 440, 150, 529, 368, 387, 496, 578, 660, 634, 716, 345, 76, 563, 213, 322, 53, 99, 235, 425, 27,
323 190, 704, 273, 625, 140, 492, 304, 467, 177, 556, 395, 414, 523, 605, 687, 661, 14, 372, 103,
324 590, 240, 349, 80, 126, 262, 452, 54, 217, 2, 300, 652, 167, 519, 331, 494, 204, 583, 422, 441,
325 550, 632, 714, 688, 41, 399, 130, 617, 267, 376, 107, 153, 289, 479, 81, 244, 29, 327, 679,
326 194, 546, 358, 521, 231, 610, 449, 468, 577, 659, 12, 715, 68, 426, 157, 644, 294, 403, 134,
327 180, 316, 506, 108, 271, 56, 354, 706, 221, 573, 385, 548, 258, 637, 476, 495, 604, 686, 39,
328 13, 95, 453, 184, 671, 321, 430, 161, 207, 343, 533, 135, 298, 83, 381, 4, 248, 600, 412, 575,
329 285, 664, 503, 522, 631, 713, 66, 40, 122, 480, 211, 698, 348, 457, 188, 234, 370, 560, 162,
330 325, 110, 408, 31, 275, 627, 439, 602, 312, 691, 530, 549, 658, 11, 93, 67, 149, 507, 238, 725,
331 375, 484, 215, 261, 397, 587, 189, 352, 137, 435, 58, 302, 654, 466, 629, 339, 718, 557, 576,
332 685, 38, 120, 94, 176, 534, 265, 23, 402, 511, 242, 288, 424, 614,
333];
334
335pub const FROUND_CONSTANTS: [[[u32; 2]; COLUMNS]; NUM_ROUNDS] = [
336 [
337 [119734530, 1610953],
338 [5749794, 34095441],
339 [8585540, 55080601],
340 [37884008, 77409799],
341 [54010117, 84576],
342 [1516630, 113295913],
343 [67149892, 28728632],
344 [18946819, 46269656],
345 [71707578, 53494784],
346 ],
347 [
348 [16777439, 103161856],
349 [106015553, 10769436],
350 [21266449, 11549090],
351 [25182214, 106707976],
352 [3511622, 21651481],
353 [99250704, 98573],
354 [86049024, 8946816],
355 [115430790, 18522649],
356 [34802142, 90448384],
357 ],
358 [
359 [52954114, 4518880],
360 [42049594, 69225857],
361 [64652, 119014242],
362 [2361764, 79725587],
363 [11788385, 71306002],
364 [104925460, 18936387],
365 [126091277, 7368848],
366 [50448421, 76157720],
367 [8389632, 69472985],
368 ],
369 [
370 [5267465, 119801412],
371 [219376, 96215813],
372 [69452824, 31209699],
373 [2458688, 26900536],
374 [9216196, 23217449],
375 [9479304, 84560389],
376 [14721540, 118622586],
377 [18134123, 33751056],
378 [17839280, 8454144],
379 ],
380 [
381 [50535754, 83100304],
382 [77465099, 56709376],
383 [3229283, 54835588],
384 [111780009, 4473088],
385 [78153311, 1384832],
386 [2200712, 85617187],
387 [3410924, 71341072],
388 [75661345, 34434134],
389 [56763059, 69011456],
390 ],
391 [
392 [111543554, 1650793],
393 [16908812, 37251073],
394 [104910882, 1517085],
395 [26041368, 103842404],
396 [48022528, 2229055],
397 [54104125, 71320960],
398 [35722818, 93087928],
399 [84559900, 3190850],
400 [27582482, 37816716],
401 ],
402 [
403 [68786250, 54928432],
404 [3686682, 63278693],
405 [70045, 100557312],
406 [38150276, 94408058],
407 [46798629, 2394242],
408 [1202190, 8988112],
409 [34308201, 94384916],
410 [17518227, 3145772],
411 [973329, 136],
412 ],
413 [
414 [56633740, 8765490],
415 [68419770, 749061],
416 [100942913, 23267584],
417 [79923980, 51667986],
418 [41853745, 25172098],
419 [39327896, 75776000],
420 [44671808, 68175902],
421 [2245138, 13929772],
422 [33650945, 79037966],
423 ],
424 [
425 [270473, 90363412],
426 [72887432, 25346582],
427 [100829319, 16593224],
428 [40087630, 68684337],
429 [6369457, 110496512],
430 [4784407, 25472000],
431 [33891012, 79219770],
432 [53838530, 8936492],
433 [68643936, 525057],
434 ],
435 [
436 [102302534, 16841864],
437 [50364433, 75530210],
438 [84025378, 41014464],
439 [25225495, 102827176],
440 [4194888, 1050917],
441 [84026756, 39440496],
442 [2102125, 76284930],
443 [219, 101056512],
444 [100738441, 5820436],
445 ],
446 [
447 [10228162, 67365944],
448 [5235808, 8393488],
449 [51989651, 2228780],
450 [16847505, 76433508],
451 [67651608, 33591874],
452 [69017778, 35784448],
453 [33587208, 76568885],
454 [117440518, 4257472],
455 [96273297, 154690],
456 ],
457 [
458 [124317824, 1508111],
459 [34873472, 98616918],
460 [111182400, 1330494],
461 [69374511, 54871056],
462 [27626369, 38929480],
463 [37879972, 26052698],
464 [71587392, 44040194],
465 [14000288, 2101064],
466 [35672064, 97980170],
467 ],
468 [
469 [81296, 47317509],
470 [38469910, 25472072],
471 [29738560, 36700214],
472 [3267745, 117973262],
473 [97993472, 528537],
474 [84567940, 13731898],
475 [77335148, 21041296],
476 [51463726, 6724033],
477 [1116193, 23601996],
478 ],
479 [
480 [80396928, 18153737],
481 [117581700, 10059826],
482 [21505356, 101124275],
483 [23679023, 42993616],
484 [103681057, 4268108],
485 [72885098, 18914433],
486 [97846858, 2627621],
487 [8422144, 104538235],
488 [83948099, 40176916],
489 ],
490 [
491 [6928902, 67256433],
492 [67184746, 41588096],
493 [69355878, 38529],
494 [41473220, 67313922],
495 [50647688, 4336995],
496 [92288643, 248148],
497 [12134919, 37884008],
498 [35146408, 2601044],
499 [9423489, 17835048],
500 ],
501 [
502 [68231686, 6477024],
503 [57284529, 8398852],
504 [69316740, 34996770],
505 [33696260, 24642995],
506 [46333986, 85212492],
507 [54665779, 12422144],
508 [47791116, 311458],
509 [44671584, 72368411],
510 [2773762, 29428924],
511 ],
512 [
513 [70976736, 62972703],
514 [123864709, 10004498],
515 [4202128, 11157861],
516 [4859922, 61129797],
517 [43331726, 69782577],
518 [83935362, 49559848],
519 [18875398, 1355904],
520 [34433676, 78808178],
521 [106038508, 27888147],
522 ],
523 [
524 [4627260, 33570944],
525 [4538630, 121155721],
526 [9245346, 117613917],
527 [33571009, 29853970],
528 [2392559, 43652096],
529 [93343744, 37793194],
530 [17309712, 36148998],
531 [3276900, 118312456],
532 [101315856, 5638796],
533 ],
534 [
535 [1587272, 132514822],
536 [4229205, 77297034],
537 [5767570, 84216428],
538 [110247047, 21528952],
539 [125878920, 7743841],
540 [42033186, 73801480],
541 [8388866, 2699881],
542 [127159080, 2240724],
543 [17324188, 112468544],
544 ],
545 [
546 [34341913, 91345154],
547 [105251840, 2623560],
548 [4798982, 10634481],
549 [39389184, 84174433],
550 [88113152, 8667000],
551 [34284722, 329],
552 [39360568, 67200132],
553 [6844996, 58720546],
554 [104799233, 29368426],
555 ],
556 [
557 [51429916, 80362691],
558 [88855204, 262411],
559 [8655522, 71558228],
560 [17838342, 11076784],
561 [92751916, 1577424],
562 [33559104, 8931338],
563 [1055746, 99418513],
564 [85018341, 39885072],
565 [63800, 120587968],
566 ],
567 [
568 [5517104, 84070467],
569 [118067364, 5522242],
570 [39922643, 68435980],
571 [73796250, 35144996],
572 [2528811, 37838868],
573 [37880008, 17144593],
574 [21317458, 112754688],
575 [113268098, 20677181],
576 [2597136, 47730886],
577 ],
578 [
579 [68438280, 50397942],
580 [59853500, 68030786],
581 [1475096, 41965991],
582 [85852370, 37775145],
583 [1071361, 44113962],
584 [68040205, 62931234],
585 [5847109, 78005290],
586 [34465024, 12720668],
587 [71860611, 44513824],
588 ],
589 [
590 [109057155, 3197812],
591 [2396909, 16843778],
592 [67383952, 31605828],
593 [70387369, 37875732],
594 [119275955, 28228],
595 [34079753, 73679286],
596 [50603056, 71422530],
597 [10385546, 86017108],
598 [227426, 12060561],
599 ],
600];