aria.bend

bend-osdev-aria@0.1.0.0 · 4,618 lines · 0 definitions

1# ARIA (RFC 5794, A Description of the ARIA Encryption Algorithm, 2010): a
2# 128-bit block cipher with 128-, 192- or 256-bit keys (12, 14 or 16
3# rounds), as a cipher for the 128-bit modes (~LcAriaKey,
4# ~LcAria.encrypt, ~LcAria.decrypt).
5#
6# Each round but the last is the round key XORed in, a substitution layer
7# (SL1 in odd rounds, SL2 in even ones) and the diffusion layer A; the last
8# is the round key, SL2 and the final round key. SL1 applies SB1, SB2, SB3,
9# SB4 to the bytes in turn and SL2 applies SB3, SB4, SB1, SB2; SB3 and SB4
10# are the inverses of SB1 and SB2, so SL2 undoes SL1 and SL1 undoes SL2.
11#
12# The cipher works on the block's 16 bytes, each kept as its eight bits
13# (LcAriaSt), and the key holds it as a list of steps. Decryption undoes the
14# steps last to first: a round key by XOR, SL1 by SL2 and SL2 by SL1, A by
15# its elementary steps undone in reverse order (gen/tables.py writes A as a
16# chain of steps x_a ^= x_b). That is the same function as RFC 5794's
17# decryption with the keys dk (A is an involution), and it makes
18# decrypt(encrypt(b)) == b provable for every key and block: each S-box and
19# its inverse are checked on all 256 bytes, and every other step is undone
20# by XOR. The S-boxes are decision trees on a byte's bits (no table is built
21# at run time); the key schedule works on whole words.
22import Base
23import bend-osdev-bytes@0.1.1.0/bytes.bend as B
24import bend-osdev-word64@0.1.1.0/word64.bend as W
25import bend-osdev-mode-core@0.1.0.0/mode_core.bend as M
26import bend-osdev-cipher-core@0.1.0.0/cipher_core.bend as L
27
28# BEGIN GENERATED by gen/tables.py: sboxes
29# SB1 (RFC 5794, 2.4.2; the AES S-box), on a byte's bits, least significant
30# first
31def aria.sb1(w0: Word(8n)) -> Word(8n):
32  match w0:
33    case WCon{False{}, w1}:
34      match w1:
35        case WCon{False{}, w2}:
36          match w2:
37            case WCon{False{}, w3}:
38              match w3:
39                case WCon{False{}, w4}:
40                  match w4:
41                    case WCon{False{}, w5}:
42                      match w5:
43                        case WCon{False{}, w6}:
44                          match w6:
45                            case WCon{False{}, w7}:
46                              match w7:
47                                case WCon{False{}, w8}:
48                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
49                                case WCon{True{}, w8}:
50                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
51                            case WCon{True{}, w7}:
52                              match w7:
53                                case WCon{False{}, w8}:
54                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
55                                case WCon{True{}, w8}:
56                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
57                        case WCon{True{}, w6}:
58                          match w6:
59                            case WCon{False{}, w7}:
60                              match w7:
61                                case WCon{False{}, w8}:
62                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
63                                case WCon{True{}, w8}:
64                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
65                            case WCon{True{}, w7}:
66                              match w7:
67                                case WCon{False{}, w8}:
68                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
69                                case WCon{True{}, w8}:
70                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
71                    case WCon{True{}, w5}:
72                      match w5:
73                        case WCon{False{}, w6}:
74                          match w6:
75                            case WCon{False{}, w7}:
76                              match w7:
77                                case WCon{False{}, w8}:
78                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
79                                case WCon{True{}, w8}:
80                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
81                            case WCon{True{}, w7}:
82                              match w7:
83                                case WCon{False{}, w8}:
84                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
85                                case WCon{True{}, w8}:
86                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
87                        case WCon{True{}, w6}:
88                          match w6:
89                            case WCon{False{}, w7}:
90                              match w7:
91                                case WCon{False{}, w8}:
92                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
93                                case WCon{True{}, w8}:
94                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
95                            case WCon{True{}, w7}:
96                              match w7:
97                                case WCon{False{}, w8}:
98                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
99                                case WCon{True{}, w8}:
100                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
101                case WCon{True{}, w4}:
102                  match w4:
103                    case WCon{False{}, w5}:
104                      match w5:
105                        case WCon{False{}, w6}:
106                          match w6:
107                            case WCon{False{}, w7}:
108                              match w7:
109                                case WCon{False{}, w8}:
110                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
111                                case WCon{True{}, w8}:
112                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
113                            case WCon{True{}, w7}:
114                              match w7:
115                                case WCon{False{}, w8}:
116                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
117                                case WCon{True{}, w8}:
118                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
119                        case WCon{True{}, w6}:
120                          match w6:
121                            case WCon{False{}, w7}:
122                              match w7:
123                                case WCon{False{}, w8}:
124                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
125                                case WCon{True{}, w8}:
126                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
127                            case WCon{True{}, w7}:
128                              match w7:
129                                case WCon{False{}, w8}:
130                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
131                                case WCon{True{}, w8}:
132                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
133                    case WCon{True{}, w5}:
134                      match w5:
135                        case WCon{False{}, w6}:
136                          match w6:
137                            case WCon{False{}, w7}:
138                              match w7:
139                                case WCon{False{}, w8}:
140                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
141                                case WCon{True{}, w8}:
142                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
143                            case WCon{True{}, w7}:
144                              match w7:
145                                case WCon{False{}, w8}:
146                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
147                                case WCon{True{}, w8}:
148                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
149                        case WCon{True{}, w6}:
150                          match w6:
151                            case WCon{False{}, w7}:
152                              match w7:
153                                case WCon{False{}, w8}:
154                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
155                                case WCon{True{}, w8}:
156                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
157                            case WCon{True{}, w7}:
158                              match w7:
159                                case WCon{False{}, w8}:
160                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
161                                case WCon{True{}, w8}:
162                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
163            case WCon{True{}, w3}:
164              match w3:
165                case WCon{False{}, w4}:
166                  match w4:
167                    case WCon{False{}, w5}:
168                      match w5:
169                        case WCon{False{}, w6}:
170                          match w6:
171                            case WCon{False{}, w7}:
172                              match w7:
173                                case WCon{False{}, w8}:
174                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
175                                case WCon{True{}, w8}:
176                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
177                            case WCon{True{}, w7}:
178                              match w7:
179                                case WCon{False{}, w8}:
180                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
181                                case WCon{True{}, w8}:
182                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
183                        case WCon{True{}, w6}:
184                          match w6:
185                            case WCon{False{}, w7}:
186                              match w7:
187                                case WCon{False{}, w8}:
188                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
189                                case WCon{True{}, w8}:
190                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
191                            case WCon{True{}, w7}:
192                              match w7:
193                                case WCon{False{}, w8}:
194                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
195                                case WCon{True{}, w8}:
196                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
197                    case WCon{True{}, w5}:
198                      match w5:
199                        case WCon{False{}, w6}:
200                          match w6:
201                            case WCon{False{}, w7}:
202                              match w7:
203                                case WCon{False{}, w8}:
204                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
205                                case WCon{True{}, w8}:
206                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
207                            case WCon{True{}, w7}:
208                              match w7:
209                                case WCon{False{}, w8}:
210                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
211                                case WCon{True{}, w8}:
212                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
213                        case WCon{True{}, w6}:
214                          match w6:
215                            case WCon{False{}, w7}:
216                              match w7:
217                                case WCon{False{}, w8}:
218                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
219                                case WCon{True{}, w8}:
220                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
221                            case WCon{True{}, w7}:
222                              match w7:
223                                case WCon{False{}, w8}:
224                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
225                                case WCon{True{}, w8}:
226                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
227                case WCon{True{}, w4}:
228                  match w4:
229                    case WCon{False{}, w5}:
230                      match w5:
231                        case WCon{False{}, w6}:
232                          match w6:
233                            case WCon{False{}, w7}:
234                              match w7:
235                                case WCon{False{}, w8}:
236                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
237                                case WCon{True{}, w8}:
238                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
239                            case WCon{True{}, w7}:
240                              match w7:
241                                case WCon{False{}, w8}:
242                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
243                                case WCon{True{}, w8}:
244                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
245                        case WCon{True{}, w6}:
246                          match w6:
247                            case WCon{False{}, w7}:
248                              match w7:
249                                case WCon{False{}, w8}:
250                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
251                                case WCon{True{}, w8}:
252                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
253                            case WCon{True{}, w7}:
254                              match w7:
255                                case WCon{False{}, w8}:
256                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
257                                case WCon{True{}, w8}:
258                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
259                    case WCon{True{}, w5}:
260                      match w5:
261                        case WCon{False{}, w6}:
262                          match w6:
263                            case WCon{False{}, w7}:
264                              match w7:
265                                case WCon{False{}, w8}:
266                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
267                                case WCon{True{}, w8}:
268                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
269                            case WCon{True{}, w7}:
270                              match w7:
271                                case WCon{False{}, w8}:
272                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
273                                case WCon{True{}, w8}:
274                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
275                        case WCon{True{}, w6}:
276                          match w6:
277                            case WCon{False{}, w7}:
278                              match w7:
279                                case WCon{False{}, w8}:
280                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
281                                case WCon{True{}, w8}:
282                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
283                            case WCon{True{}, w7}:
284                              match w7:
285                                case WCon{False{}, w8}:
286                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
287                                case WCon{True{}, w8}:
288                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
289        case WCon{True{}, w2}:
290          match w2:
291            case WCon{False{}, w3}:
292              match w3:
293                case WCon{False{}, w4}:
294                  match w4:
295                    case WCon{False{}, w5}:
296                      match w5:
297                        case WCon{False{}, w6}:
298                          match w6:
299                            case WCon{False{}, w7}:
300                              match w7:
301                                case WCon{False{}, w8}:
302                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
303                                case WCon{True{}, w8}:
304                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
305                            case WCon{True{}, w7}:
306                              match w7:
307                                case WCon{False{}, w8}:
308                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
309                                case WCon{True{}, w8}:
310                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
311                        case WCon{True{}, w6}:
312                          match w6:
313                            case WCon{False{}, w7}:
314                              match w7:
315                                case WCon{False{}, w8}:
316                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
317                                case WCon{True{}, w8}:
318                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
319                            case WCon{True{}, w7}:
320                              match w7:
321                                case WCon{False{}, w8}:
322                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
323                                case WCon{True{}, w8}:
324                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
325                    case WCon{True{}, w5}:
326                      match w5:
327                        case WCon{False{}, w6}:
328                          match w6:
329                            case WCon{False{}, w7}:
330                              match w7:
331                                case WCon{False{}, w8}:
332                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
333                                case WCon{True{}, w8}:
334                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
335                            case WCon{True{}, w7}:
336                              match w7:
337                                case WCon{False{}, w8}:
338                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
339                                case WCon{True{}, w8}:
340                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
341                        case WCon{True{}, w6}:
342                          match w6:
343                            case WCon{False{}, w7}:
344                              match w7:
345                                case WCon{False{}, w8}:
346                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
347                                case WCon{True{}, w8}:
348                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
349                            case WCon{True{}, w7}:
350                              match w7:
351                                case WCon{False{}, w8}:
352                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
353                                case WCon{True{}, w8}:
354                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
355                case WCon{True{}, w4}:
356                  match w4:
357                    case WCon{False{}, w5}:
358                      match w5:
359                        case WCon{False{}, w6}:
360                          match w6:
361                            case WCon{False{}, w7}:
362                              match w7:
363                                case WCon{False{}, w8}:
364                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
365                                case WCon{True{}, w8}:
366                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
367                            case WCon{True{}, w7}:
368                              match w7:
369                                case WCon{False{}, w8}:
370                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
371                                case WCon{True{}, w8}:
372                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
373                        case WCon{True{}, w6}:
374                          match w6:
375                            case WCon{False{}, w7}:
376                              match w7:
377                                case WCon{False{}, w8}:
378                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
379                                case WCon{True{}, w8}:
380                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
381                            case WCon{True{}, w7}:
382                              match w7:
383                                case WCon{False{}, w8}:
384                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
385                                case WCon{True{}, w8}:
386                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
387                    case WCon{True{}, w5}:
388                      match w5:
389                        case WCon{False{}, w6}:
390                          match w6:
391                            case WCon{False{}, w7}:
392                              match w7:
393                                case WCon{False{}, w8}:
394                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
395                                case WCon{True{}, w8}:
396                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
397                            case WCon{True{}, w7}:
398                              match w7:
399                                case WCon{False{}, w8}:
400                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
401                                case WCon{True{}, w8}:
402                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
403                        case WCon{True{}, w6}:
404                          match w6:
405                            case WCon{False{}, w7}:
406                              match w7:
407                                case WCon{False{}, w8}:
408                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
409                                case WCon{True{}, w8}:
410                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
411                            case WCon{True{}, w7}:
412                              match w7:
413                                case WCon{False{}, w8}:
414                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
415                                case WCon{True{}, w8}:
416                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
417            case WCon{True{}, w3}:
418              match w3:
419                case WCon{False{}, w4}:
420                  match w4:
421                    case WCon{False{}, w5}:
422                      match w5:
423                        case WCon{False{}, w6}:
424                          match w6:
425                            case WCon{False{}, w7}:
426                              match w7:
427                                case WCon{False{}, w8}:
428                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
429                                case WCon{True{}, w8}:
430                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
431                            case WCon{True{}, w7}:
432                              match w7:
433                                case WCon{False{}, w8}:
434                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
435                                case WCon{True{}, w8}:
436                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
437                        case WCon{True{}, w6}:
438                          match w6:
439                            case WCon{False{}, w7}:
440                              match w7:
441                                case WCon{False{}, w8}:
442                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
443                                case WCon{True{}, w8}:
444                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
445                            case WCon{True{}, w7}:
446                              match w7:
447                                case WCon{False{}, w8}:
448                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
449                                case WCon{True{}, w8}:
450                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
451                    case WCon{True{}, w5}:
452                      match w5:
453                        case WCon{False{}, w6}:
454                          match w6:
455                            case WCon{False{}, w7}:
456                              match w7:
457                                case WCon{False{}, w8}:
458                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
459                                case WCon{True{}, w8}:
460                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
461                            case WCon{True{}, w7}:
462                              match w7:
463                                case WCon{False{}, w8}:
464                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
465                                case WCon{True{}, w8}:
466                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
467                        case WCon{True{}, w6}:
468                          match w6:
469                            case WCon{False{}, w7}:
470                              match w7:
471                                case WCon{False{}, w8}:
472                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
473                                case WCon{True{}, w8}:
474                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
475                            case WCon{True{}, w7}:
476                              match w7:
477                                case WCon{False{}, w8}:
478                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
479                                case WCon{True{}, w8}:
480                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
481                case WCon{True{}, w4}:
482                  match w4:
483                    case WCon{False{}, w5}:
484                      match w5:
485                        case WCon{False{}, w6}:
486                          match w6:
487                            case WCon{False{}, w7}:
488                              match w7:
489                                case WCon{False{}, w8}:
490                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
491                                case WCon{True{}, w8}:
492                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
493                            case WCon{True{}, w7}:
494                              match w7:
495                                case WCon{False{}, w8}:
496                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
497                                case WCon{True{}, w8}:
498                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
499                        case WCon{True{}, w6}:
500                          match w6:
501                            case WCon{False{}, w7}:
502                              match w7:
503                                case WCon{False{}, w8}:
504                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
505                                case WCon{True{}, w8}:
506                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
507                            case WCon{True{}, w7}:
508                              match w7:
509                                case WCon{False{}, w8}:
510                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
511                                case WCon{True{}, w8}:
512                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
513                    case WCon{True{}, w5}:
514                      match w5:
515                        case WCon{False{}, w6}:
516                          match w6:
517                            case WCon{False{}, w7}:
518                              match w7:
519                                case WCon{False{}, w8}:
520                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
521                                case WCon{True{}, w8}:
522                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
523                            case WCon{True{}, w7}:
524                              match w7:
525                                case WCon{False{}, w8}:
526                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
527                                case WCon{True{}, w8}:
528                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
529                        case WCon{True{}, w6}:
530                          match w6:
531                            case WCon{False{}, w7}:
532                              match w7:
533                                case WCon{False{}, w8}:
534                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
535                                case WCon{True{}, w8}:
536                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
537                            case WCon{True{}, w7}:
538                              match w7:
539                                case WCon{False{}, w8}:
540                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
541                                case WCon{True{}, w8}:
542                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
543    case WCon{True{}, w1}:
544      match w1:
545        case WCon{False{}, w2}:
546          match w2:
547            case WCon{False{}, w3}:
548              match w3:
549                case WCon{False{}, w4}:
550                  match w4:
551                    case WCon{False{}, w5}:
552                      match w5:
553                        case WCon{False{}, w6}:
554                          match w6:
555                            case WCon{False{}, w7}:
556                              match w7:
557                                case WCon{False{}, w8}:
558                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
559                                case WCon{True{}, w8}:
560                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
561                            case WCon{True{}, w7}:
562                              match w7:
563                                case WCon{False{}, w8}:
564                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
565                                case WCon{True{}, w8}:
566                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
567                        case WCon{True{}, w6}:
568                          match w6:
569                            case WCon{False{}, w7}:
570                              match w7:
571                                case WCon{False{}, w8}:
572                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
573                                case WCon{True{}, w8}:
574                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
575                            case WCon{True{}, w7}:
576                              match w7:
577                                case WCon{False{}, w8}:
578                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
579                                case WCon{True{}, w8}:
580                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
581                    case WCon{True{}, w5}:
582                      match w5:
583                        case WCon{False{}, w6}:
584                          match w6:
585                            case WCon{False{}, w7}:
586                              match w7:
587                                case WCon{False{}, w8}:
588                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
589                                case WCon{True{}, w8}:
590                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
591                            case WCon{True{}, w7}:
592                              match w7:
593                                case WCon{False{}, w8}:
594                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
595                                case WCon{True{}, w8}:
596                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
597                        case WCon{True{}, w6}:
598                          match w6:
599                            case WCon{False{}, w7}:
600                              match w7:
601                                case WCon{False{}, w8}:
602                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
603                                case WCon{True{}, w8}:
604                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
605                            case WCon{True{}, w7}:
606                              match w7:
607                                case WCon{False{}, w8}:
608                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
609                                case WCon{True{}, w8}:
610                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
611                case WCon{True{}, w4}:
612                  match w4:
613                    case WCon{False{}, w5}:
614                      match w5:
615                        case WCon{False{}, w6}:
616                          match w6:
617                            case WCon{False{}, w7}:
618                              match w7:
619                                case WCon{False{}, w8}:
620                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
621                                case WCon{True{}, w8}:
622                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
623                            case WCon{True{}, w7}:
624                              match w7:
625                                case WCon{False{}, w8}:
626                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
627                                case WCon{True{}, w8}:
628                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
629                        case WCon{True{}, w6}:
630                          match w6:
631                            case WCon{False{}, w7}:
632                              match w7:
633                                case WCon{False{}, w8}:
634                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
635                                case WCon{True{}, w8}:
636                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
637                            case WCon{True{}, w7}:
638                              match w7:
639                                case WCon{False{}, w8}:
640                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
641                                case WCon{True{}, w8}:
642                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
643                    case WCon{True{}, w5}:
644                      match w5:
645                        case WCon{False{}, w6}:
646                          match w6:
647                            case WCon{False{}, w7}:
648                              match w7:
649                                case WCon{False{}, w8}:
650                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
651                                case WCon{True{}, w8}:
652                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
653                            case WCon{True{}, w7}:
654                              match w7:
655                                case WCon{False{}, w8}:
656                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
657                                case WCon{True{}, w8}:
658                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
659                        case WCon{True{}, w6}:
660                          match w6:
661                            case WCon{False{}, w7}:
662                              match w7:
663                                case WCon{False{}, w8}:
664                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
665                                case WCon{True{}, w8}:
666                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
667                            case WCon{True{}, w7}:
668                              match w7:
669                                case WCon{False{}, w8}:
670                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
671                                case WCon{True{}, w8}:
672                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
673            case WCon{True{}, w3}:
674              match w3:
675                case WCon{False{}, w4}:
676                  match w4:
677                    case WCon{False{}, w5}:
678                      match w5:
679                        case WCon{False{}, w6}:
680                          match w6:
681                            case WCon{False{}, w7}:
682                              match w7:
683                                case WCon{False{}, w8}:
684                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
685                                case WCon{True{}, w8}:
686                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
687                            case WCon{True{}, w7}:
688                              match w7:
689                                case WCon{False{}, w8}:
690                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
691                                case WCon{True{}, w8}:
692                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
693                        case WCon{True{}, w6}:
694                          match w6:
695                            case WCon{False{}, w7}:
696                              match w7:
697                                case WCon{False{}, w8}:
698                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
699                                case WCon{True{}, w8}:
700                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
701                            case WCon{True{}, w7}:
702                              match w7:
703                                case WCon{False{}, w8}:
704                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
705                                case WCon{True{}, w8}:
706                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
707                    case WCon{True{}, w5}:
708                      match w5:
709                        case WCon{False{}, w6}:
710                          match w6:
711                            case WCon{False{}, w7}:
712                              match w7:
713                                case WCon{False{}, w8}:
714                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
715                                case WCon{True{}, w8}:
716                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
717                            case WCon{True{}, w7}:
718                              match w7:
719                                case WCon{False{}, w8}:
720                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
721                                case WCon{True{}, w8}:
722                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
723                        case WCon{True{}, w6}:
724                          match w6:
725                            case WCon{False{}, w7}:
726                              match w7:
727                                case WCon{False{}, w8}:
728                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
729                                case WCon{True{}, w8}:
730                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
731                            case WCon{True{}, w7}:
732                              match w7:
733                                case WCon{False{}, w8}:
734                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
735                                case WCon{True{}, w8}:
736                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
737                case WCon{True{}, w4}:
738                  match w4:
739                    case WCon{False{}, w5}:
740                      match w5:
741                        case WCon{False{}, w6}:
742                          match w6:
743                            case WCon{False{}, w7}:
744                              match w7:
745                                case WCon{False{}, w8}:
746                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
747                                case WCon{True{}, w8}:
748                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
749                            case WCon{True{}, w7}:
750                              match w7:
751                                case WCon{False{}, w8}:
752                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
753                                case WCon{True{}, w8}:
754                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
755                        case WCon{True{}, w6}:
756                          match w6:
757                            case WCon{False{}, w7}:
758                              match w7:
759                                case WCon{False{}, w8}:
760                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
761                                case WCon{True{}, w8}:
762                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
763                            case WCon{True{}, w7}:
764                              match w7:
765                                case WCon{False{}, w8}:
766                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
767                                case WCon{True{}, w8}:
768                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
769                    case WCon{True{}, w5}:
770                      match w5:
771                        case WCon{False{}, w6}:
772                          match w6:
773                            case WCon{False{}, w7}:
774                              match w7:
775                                case WCon{False{}, w8}:
776                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
777                                case WCon{True{}, w8}:
778                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
779                            case WCon{True{}, w7}:
780                              match w7:
781                                case WCon{False{}, w8}:
782                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
783                                case WCon{True{}, w8}:
784                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
785                        case WCon{True{}, w6}:
786                          match w6:
787                            case WCon{False{}, w7}:
788                              match w7:
789                                case WCon{False{}, w8}:
790                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
791                                case WCon{True{}, w8}:
792                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
793                            case WCon{True{}, w7}:
794                              match w7:
795                                case WCon{False{}, w8}:
796                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
797                                case WCon{True{}, w8}:
798                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
799        case WCon{True{}, w2}:
800          match w2:
801            case WCon{False{}, w3}:
802              match w3:
803                case WCon{False{}, w4}:
804                  match w4:
805                    case WCon{False{}, w5}:
806                      match w5:
807                        case WCon{False{}, w6}:
808                          match w6:
809                            case WCon{False{}, w7}:
810                              match w7:
811                                case WCon{False{}, w8}:
812                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
813                                case WCon{True{}, w8}:
814                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
815                            case WCon{True{}, w7}:
816                              match w7:
817                                case WCon{False{}, w8}:
818                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
819                                case WCon{True{}, w8}:
820                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
821                        case WCon{True{}, w6}:
822                          match w6:
823                            case WCon{False{}, w7}:
824                              match w7:
825                                case WCon{False{}, w8}:
826                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
827                                case WCon{True{}, w8}:
828                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
829                            case WCon{True{}, w7}:
830                              match w7:
831                                case WCon{False{}, w8}:
832                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
833                                case WCon{True{}, w8}:
834                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
835                    case WCon{True{}, w5}:
836                      match w5:
837                        case WCon{False{}, w6}:
838                          match w6:
839                            case WCon{False{}, w7}:
840                              match w7:
841                                case WCon{False{}, w8}:
842                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
843                                case WCon{True{}, w8}:
844                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
845                            case WCon{True{}, w7}:
846                              match w7:
847                                case WCon{False{}, w8}:
848                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
849                                case WCon{True{}, w8}:
850                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
851                        case WCon{True{}, w6}:
852                          match w6:
853                            case WCon{False{}, w7}:
854                              match w7:
855                                case WCon{False{}, w8}:
856                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
857                                case WCon{True{}, w8}:
858                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
859                            case WCon{True{}, w7}:
860                              match w7:
861                                case WCon{False{}, w8}:
862                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
863                                case WCon{True{}, w8}:
864                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
865                case WCon{True{}, w4}:
866                  match w4:
867                    case WCon{False{}, w5}:
868                      match w5:
869                        case WCon{False{}, w6}:
870                          match w6:
871                            case WCon{False{}, w7}:
872                              match w7:
873                                case WCon{False{}, w8}:
874                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
875                                case WCon{True{}, w8}:
876                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
877                            case WCon{True{}, w7}:
878                              match w7:
879                                case WCon{False{}, w8}:
880                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
881                                case WCon{True{}, w8}:
882                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
883                        case WCon{True{}, w6}:
884                          match w6:
885                            case WCon{False{}, w7}:
886                              match w7:
887                                case WCon{False{}, w8}:
888                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
889                                case WCon{True{}, w8}:
890                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
891                            case WCon{True{}, w7}:
892                              match w7:
893                                case WCon{False{}, w8}:
894                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
895                                case WCon{True{}, w8}:
896                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
897                    case WCon{True{}, w5}:
898                      match w5:
899                        case WCon{False{}, w6}:
900                          match w6:
901                            case WCon{False{}, w7}:
902                              match w7:
903                                case WCon{False{}, w8}:
904                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
905                                case WCon{True{}, w8}:
906                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
907                            case WCon{True{}, w7}:
908                              match w7:
909                                case WCon{False{}, w8}:
910                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
911                                case WCon{True{}, w8}:
912                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
913                        case WCon{True{}, w6}:
914                          match w6:
915                            case WCon{False{}, w7}:
916                              match w7:
917                                case WCon{False{}, w8}:
918                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
919                                case WCon{True{}, w8}:
920                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
921                            case WCon{True{}, w7}:
922                              match w7:
923                                case WCon{False{}, w8}:
924                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
925                                case WCon{True{}, w8}:
926                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
927            case WCon{True{}, w3}:
928              match w3:
929                case WCon{False{}, w4}:
930                  match w4:
931                    case WCon{False{}, w5}:
932                      match w5:
933                        case WCon{False{}, w6}:
934                          match w6:
935                            case WCon{False{}, w7}:
936                              match w7:
937                                case WCon{False{}, w8}:
938                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
939                                case WCon{True{}, w8}:
940                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
941                            case WCon{True{}, w7}:
942                              match w7:
943                                case WCon{False{}, w8}:
944                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
945                                case WCon{True{}, w8}:
946                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
947                        case WCon{True{}, w6}:
948                          match w6:
949                            case WCon{False{}, w7}:
950                              match w7:
951                                case WCon{False{}, w8}:
952                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
953                                case WCon{True{}, w8}:
954                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
955                            case WCon{True{}, w7}:
956                              match w7:
957                                case WCon{False{}, w8}:
958                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
959                                case WCon{True{}, w8}:
960                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
961                    case WCon{True{}, w5}:
962                      match w5:
963                        case WCon{False{}, w6}:
964                          match w6:
965                            case WCon{False{}, w7}:
966                              match w7:
967                                case WCon{False{}, w8}:
968                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
969                                case WCon{True{}, w8}:
970                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
971                            case WCon{True{}, w7}:
972                              match w7:
973                                case WCon{False{}, w8}:
974                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
975                                case WCon{True{}, w8}:
976                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
977                        case WCon{True{}, w6}:
978                          match w6:
979                            case WCon{False{}, w7}:
980                              match w7:
981                                case WCon{False{}, w8}:
982                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
983                                case WCon{True{}, w8}:
984                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
985                            case WCon{True{}, w7}:
986                              match w7:
987                                case WCon{False{}, w8}:
988                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
989                                case WCon{True{}, w8}:
990                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
991                case WCon{True{}, w4}:
992                  match w4:
993                    case WCon{False{}, w5}:
994                      match w5:
995                        case WCon{False{}, w6}:
996                          match w6:
997                            case WCon{False{}, w7}:
998                              match w7:
999                                case WCon{False{}, w8}:
1000                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1001                                case WCon{True{}, w8}:
1002                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1003                            case WCon{True{}, w7}:
1004                              match w7:
1005                                case WCon{False{}, w8}:
1006                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1007                                case WCon{True{}, w8}:
1008                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1009                        case WCon{True{}, w6}:
1010                          match w6:
1011                            case WCon{False{}, w7}:
1012                              match w7:
1013                                case WCon{False{}, w8}:
1014                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1015                                case WCon{True{}, w8}:
1016                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1017                            case WCon{True{}, w7}:
1018                              match w7:
1019                                case WCon{False{}, w8}:
1020                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1021                                case WCon{True{}, w8}:
1022                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1023                    case WCon{True{}, w5}:
1024                      match w5:
1025                        case WCon{False{}, w6}:
1026                          match w6:
1027                            case WCon{False{}, w7}:
1028                              match w7:
1029                                case WCon{False{}, w8}:
1030                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1031                                case WCon{True{}, w8}:
1032                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1033                            case WCon{True{}, w7}:
1034                              match w7:
1035                                case WCon{False{}, w8}:
1036                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1037                                case WCon{True{}, w8}:
1038                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1039                        case WCon{True{}, w6}:
1040                          match w6:
1041                            case WCon{False{}, w7}:
1042                              match w7:
1043                                case WCon{False{}, w8}:
1044                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1045                                case WCon{True{}, w8}:
1046                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1047                            case WCon{True{}, w7}:
1048                              match w7:
1049                                case WCon{False{}, w8}:
1050                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1051                                case WCon{True{}, w8}:
1052                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1053
1054# SB2 (RFC 5794, 2.4.2)
1055def aria.sb2(w0: Word(8n)) -> Word(8n):
1056  match w0:
1057    case WCon{False{}, w1}:
1058      match w1:
1059        case WCon{False{}, w2}:
1060          match w2:
1061            case WCon{False{}, w3}:
1062              match w3:
1063                case WCon{False{}, w4}:
1064                  match w4:
1065                    case WCon{False{}, w5}:
1066                      match w5:
1067                        case WCon{False{}, w6}:
1068                          match w6:
1069                            case WCon{False{}, w7}:
1070                              match w7:
1071                                case WCon{False{}, w8}:
1072                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1073                                case WCon{True{}, w8}:
1074                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1075                            case WCon{True{}, w7}:
1076                              match w7:
1077                                case WCon{False{}, w8}:
1078                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1079                                case WCon{True{}, w8}:
1080                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1081                        case WCon{True{}, w6}:
1082                          match w6:
1083                            case WCon{False{}, w7}:
1084                              match w7:
1085                                case WCon{False{}, w8}:
1086                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1087                                case WCon{True{}, w8}:
1088                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1089                            case WCon{True{}, w7}:
1090                              match w7:
1091                                case WCon{False{}, w8}:
1092                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1093                                case WCon{True{}, w8}:
1094                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1095                    case WCon{True{}, w5}:
1096                      match w5:
1097                        case WCon{False{}, w6}:
1098                          match w6:
1099                            case WCon{False{}, w7}:
1100                              match w7:
1101                                case WCon{False{}, w8}:
1102                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1103                                case WCon{True{}, w8}:
1104                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1105                            case WCon{True{}, w7}:
1106                              match w7:
1107                                case WCon{False{}, w8}:
1108                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1109                                case WCon{True{}, w8}:
1110                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1111                        case WCon{True{}, w6}:
1112                          match w6:
1113                            case WCon{False{}, w7}:
1114                              match w7:
1115                                case WCon{False{}, w8}:
1116                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1117                                case WCon{True{}, w8}:
1118                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1119                            case WCon{True{}, w7}:
1120                              match w7:
1121                                case WCon{False{}, w8}:
1122                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1123                                case WCon{True{}, w8}:
1124                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1125                case WCon{True{}, w4}:
1126                  match w4:
1127                    case WCon{False{}, w5}:
1128                      match w5:
1129                        case WCon{False{}, w6}:
1130                          match w6:
1131                            case WCon{False{}, w7}:
1132                              match w7:
1133                                case WCon{False{}, w8}:
1134                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1135                                case WCon{True{}, w8}:
1136                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1137                            case WCon{True{}, w7}:
1138                              match w7:
1139                                case WCon{False{}, w8}:
1140                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1141                                case WCon{True{}, w8}:
1142                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1143                        case WCon{True{}, w6}:
1144                          match w6:
1145                            case WCon{False{}, w7}:
1146                              match w7:
1147                                case WCon{False{}, w8}:
1148                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1149                                case WCon{True{}, w8}:
1150                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1151                            case WCon{True{}, w7}:
1152                              match w7:
1153                                case WCon{False{}, w8}:
1154                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1155                                case WCon{True{}, w8}:
1156                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1157                    case WCon{True{}, w5}:
1158                      match w5:
1159                        case WCon{False{}, w6}:
1160                          match w6:
1161                            case WCon{False{}, w7}:
1162                              match w7:
1163                                case WCon{False{}, w8}:
1164                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1165                                case WCon{True{}, w8}:
1166                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1167                            case WCon{True{}, w7}:
1168                              match w7:
1169                                case WCon{False{}, w8}:
1170                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1171                                case WCon{True{}, w8}:
1172                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1173                        case WCon{True{}, w6}:
1174                          match w6:
1175                            case WCon{False{}, w7}:
1176                              match w7:
1177                                case WCon{False{}, w8}:
1178                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1179                                case WCon{True{}, w8}:
1180                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1181                            case WCon{True{}, w7}:
1182                              match w7:
1183                                case WCon{False{}, w8}:
1184                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1185                                case WCon{True{}, w8}:
1186                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1187            case WCon{True{}, w3}:
1188              match w3:
1189                case WCon{False{}, w4}:
1190                  match w4:
1191                    case WCon{False{}, w5}:
1192                      match w5:
1193                        case WCon{False{}, w6}:
1194                          match w6:
1195                            case WCon{False{}, w7}:
1196                              match w7:
1197                                case WCon{False{}, w8}:
1198                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1199                                case WCon{True{}, w8}:
1200                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1201                            case WCon{True{}, w7}:
1202                              match w7:
1203                                case WCon{False{}, w8}:
1204                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1205                                case WCon{True{}, w8}:
1206                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1207                        case WCon{True{}, w6}:
1208                          match w6:
1209                            case WCon{False{}, w7}:
1210                              match w7:
1211                                case WCon{False{}, w8}:
1212                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1213                                case WCon{True{}, w8}:
1214                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1215                            case WCon{True{}, w7}:
1216                              match w7:
1217                                case WCon{False{}, w8}:
1218                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1219                                case WCon{True{}, w8}:
1220                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1221                    case WCon{True{}, w5}:
1222                      match w5:
1223                        case WCon{False{}, w6}:
1224                          match w6:
1225                            case WCon{False{}, w7}:
1226                              match w7:
1227                                case WCon{False{}, w8}:
1228                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1229                                case WCon{True{}, w8}:
1230                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1231                            case WCon{True{}, w7}:
1232                              match w7:
1233                                case WCon{False{}, w8}:
1234                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1235                                case WCon{True{}, w8}:
1236                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1237                        case WCon{True{}, w6}:
1238                          match w6:
1239                            case WCon{False{}, w7}:
1240                              match w7:
1241                                case WCon{False{}, w8}:
1242                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1243                                case WCon{True{}, w8}:
1244                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1245                            case WCon{True{}, w7}:
1246                              match w7:
1247                                case WCon{False{}, w8}:
1248                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1249                                case WCon{True{}, w8}:
1250                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1251                case WCon{True{}, w4}:
1252                  match w4:
1253                    case WCon{False{}, w5}:
1254                      match w5:
1255                        case WCon{False{}, w6}:
1256                          match w6:
1257                            case WCon{False{}, w7}:
1258                              match w7:
1259                                case WCon{False{}, w8}:
1260                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1261                                case WCon{True{}, w8}:
1262                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1263                            case WCon{True{}, w7}:
1264                              match w7:
1265                                case WCon{False{}, w8}:
1266                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1267                                case WCon{True{}, w8}:
1268                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1269                        case WCon{True{}, w6}:
1270                          match w6:
1271                            case WCon{False{}, w7}:
1272                              match w7:
1273                                case WCon{False{}, w8}:
1274                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1275                                case WCon{True{}, w8}:
1276                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1277                            case WCon{True{}, w7}:
1278                              match w7:
1279                                case WCon{False{}, w8}:
1280                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1281                                case WCon{True{}, w8}:
1282                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1283                    case WCon{True{}, w5}:
1284                      match w5:
1285                        case WCon{False{}, w6}:
1286                          match w6:
1287                            case WCon{False{}, w7}:
1288                              match w7:
1289                                case WCon{False{}, w8}:
1290                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1291                                case WCon{True{}, w8}:
1292                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1293                            case WCon{True{}, w7}:
1294                              match w7:
1295                                case WCon{False{}, w8}:
1296                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1297                                case WCon{True{}, w8}:
1298                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1299                        case WCon{True{}, w6}:
1300                          match w6:
1301                            case WCon{False{}, w7}:
1302                              match w7:
1303                                case WCon{False{}, w8}:
1304                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1305                                case WCon{True{}, w8}:
1306                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1307                            case WCon{True{}, w7}:
1308                              match w7:
1309                                case WCon{False{}, w8}:
1310                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1311                                case WCon{True{}, w8}:
1312                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1313        case WCon{True{}, w2}:
1314          match w2:
1315            case WCon{False{}, w3}:
1316              match w3:
1317                case WCon{False{}, w4}:
1318                  match w4:
1319                    case WCon{False{}, w5}:
1320                      match w5:
1321                        case WCon{False{}, w6}:
1322                          match w6:
1323                            case WCon{False{}, w7}:
1324                              match w7:
1325                                case WCon{False{}, w8}:
1326                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1327                                case WCon{True{}, w8}:
1328                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1329                            case WCon{True{}, w7}:
1330                              match w7:
1331                                case WCon{False{}, w8}:
1332                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1333                                case WCon{True{}, w8}:
1334                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1335                        case WCon{True{}, w6}:
1336                          match w6:
1337                            case WCon{False{}, w7}:
1338                              match w7:
1339                                case WCon{False{}, w8}:
1340                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1341                                case WCon{True{}, w8}:
1342                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1343                            case WCon{True{}, w7}:
1344                              match w7:
1345                                case WCon{False{}, w8}:
1346                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1347                                case WCon{True{}, w8}:
1348                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1349                    case WCon{True{}, w5}:
1350                      match w5:
1351                        case WCon{False{}, w6}:
1352                          match w6:
1353                            case WCon{False{}, w7}:
1354                              match w7:
1355                                case WCon{False{}, w8}:
1356                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1357                                case WCon{True{}, w8}:
1358                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1359                            case WCon{True{}, w7}:
1360                              match w7:
1361                                case WCon{False{}, w8}:
1362                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1363                                case WCon{True{}, w8}:
1364                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1365                        case WCon{True{}, w6}:
1366                          match w6:
1367                            case WCon{False{}, w7}:
1368                              match w7:
1369                                case WCon{False{}, w8}:
1370                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1371                                case WCon{True{}, w8}:
1372                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1373                            case WCon{True{}, w7}:
1374                              match w7:
1375                                case WCon{False{}, w8}:
1376                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1377                                case WCon{True{}, w8}:
1378                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1379                case WCon{True{}, w4}:
1380                  match w4:
1381                    case WCon{False{}, w5}:
1382                      match w5:
1383                        case WCon{False{}, w6}:
1384                          match w6:
1385                            case WCon{False{}, w7}:
1386                              match w7:
1387                                case WCon{False{}, w8}:
1388                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1389                                case WCon{True{}, w8}:
1390                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1391                            case WCon{True{}, w7}:
1392                              match w7:
1393                                case WCon{False{}, w8}:
1394                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1395                                case WCon{True{}, w8}:
1396                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1397                        case WCon{True{}, w6}:
1398                          match w6:
1399                            case WCon{False{}, w7}:
1400                              match w7:
1401                                case WCon{False{}, w8}:
1402                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1403                                case WCon{True{}, w8}:
1404                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1405                            case WCon{True{}, w7}:
1406                              match w7:
1407                                case WCon{False{}, w8}:
1408                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1409                                case WCon{True{}, w8}:
1410                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1411                    case WCon{True{}, w5}:
1412                      match w5:
1413                        case WCon{False{}, w6}:
1414                          match w6:
1415                            case WCon{False{}, w7}:
1416                              match w7:
1417                                case WCon{False{}, w8}:
1418                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1419                                case WCon{True{}, w8}:
1420                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1421                            case WCon{True{}, w7}:
1422                              match w7:
1423                                case WCon{False{}, w8}:
1424                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1425                                case WCon{True{}, w8}:
1426                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1427                        case WCon{True{}, w6}:
1428                          match w6:
1429                            case WCon{False{}, w7}:
1430                              match w7:
1431                                case WCon{False{}, w8}:
1432                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1433                                case WCon{True{}, w8}:
1434                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1435                            case WCon{True{}, w7}:
1436                              match w7:
1437                                case WCon{False{}, w8}:
1438                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1439                                case WCon{True{}, w8}:
1440                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1441            case WCon{True{}, w3}:
1442              match w3:
1443                case WCon{False{}, w4}:
1444                  match w4:
1445                    case WCon{False{}, w5}:
1446                      match w5:
1447                        case WCon{False{}, w6}:
1448                          match w6:
1449                            case WCon{False{}, w7}:
1450                              match w7:
1451                                case WCon{False{}, w8}:
1452                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1453                                case WCon{True{}, w8}:
1454                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1455                            case WCon{True{}, w7}:
1456                              match w7:
1457                                case WCon{False{}, w8}:
1458                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1459                                case WCon{True{}, w8}:
1460                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1461                        case WCon{True{}, w6}:
1462                          match w6:
1463                            case WCon{False{}, w7}:
1464                              match w7:
1465                                case WCon{False{}, w8}:
1466                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1467                                case WCon{True{}, w8}:
1468                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1469                            case WCon{True{}, w7}:
1470                              match w7:
1471                                case WCon{False{}, w8}:
1472                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1473                                case WCon{True{}, w8}:
1474                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1475                    case WCon{True{}, w5}:
1476                      match w5:
1477                        case WCon{False{}, w6}:
1478                          match w6:
1479                            case WCon{False{}, w7}:
1480                              match w7:
1481                                case WCon{False{}, w8}:
1482                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1483                                case WCon{True{}, w8}:
1484                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1485                            case WCon{True{}, w7}:
1486                              match w7:
1487                                case WCon{False{}, w8}:
1488                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1489                                case WCon{True{}, w8}:
1490                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1491                        case WCon{True{}, w6}:
1492                          match w6:
1493                            case WCon{False{}, w7}:
1494                              match w7:
1495                                case WCon{False{}, w8}:
1496                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1497                                case WCon{True{}, w8}:
1498                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1499                            case WCon{True{}, w7}:
1500                              match w7:
1501                                case WCon{False{}, w8}:
1502                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1503                                case WCon{True{}, w8}:
1504                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1505                case WCon{True{}, w4}:
1506                  match w4:
1507                    case WCon{False{}, w5}:
1508                      match w5:
1509                        case WCon{False{}, w6}:
1510                          match w6:
1511                            case WCon{False{}, w7}:
1512                              match w7:
1513                                case WCon{False{}, w8}:
1514                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1515                                case WCon{True{}, w8}:
1516                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1517                            case WCon{True{}, w7}:
1518                              match w7:
1519                                case WCon{False{}, w8}:
1520                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1521                                case WCon{True{}, w8}:
1522                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1523                        case WCon{True{}, w6}:
1524                          match w6:
1525                            case WCon{False{}, w7}:
1526                              match w7:
1527                                case WCon{False{}, w8}:
1528                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1529                                case WCon{True{}, w8}:
1530                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1531                            case WCon{True{}, w7}:
1532                              match w7:
1533                                case WCon{False{}, w8}:
1534                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1535                                case WCon{True{}, w8}:
1536                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1537                    case WCon{True{}, w5}:
1538                      match w5:
1539                        case WCon{False{}, w6}:
1540                          match w6:
1541                            case WCon{False{}, w7}:
1542                              match w7:
1543                                case WCon{False{}, w8}:
1544                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1545                                case WCon{True{}, w8}:
1546                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1547                            case WCon{True{}, w7}:
1548                              match w7:
1549                                case WCon{False{}, w8}:
1550                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1551                                case WCon{True{}, w8}:
1552                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1553                        case WCon{True{}, w6}:
1554                          match w6:
1555                            case WCon{False{}, w7}:
1556                              match w7:
1557                                case WCon{False{}, w8}:
1558                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1559                                case WCon{True{}, w8}:
1560                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1561                            case WCon{True{}, w7}:
1562                              match w7:
1563                                case WCon{False{}, w8}:
1564                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1565                                case WCon{True{}, w8}:
1566                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1567    case WCon{True{}, w1}:
1568      match w1:
1569        case WCon{False{}, w2}:
1570          match w2:
1571            case WCon{False{}, w3}:
1572              match w3:
1573                case WCon{False{}, w4}:
1574                  match w4:
1575                    case WCon{False{}, w5}:
1576                      match w5:
1577                        case WCon{False{}, w6}:
1578                          match w6:
1579                            case WCon{False{}, w7}:
1580                              match w7:
1581                                case WCon{False{}, w8}:
1582                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1583                                case WCon{True{}, w8}:
1584                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1585                            case WCon{True{}, w7}:
1586                              match w7:
1587                                case WCon{False{}, w8}:
1588                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1589                                case WCon{True{}, w8}:
1590                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1591                        case WCon{True{}, w6}:
1592                          match w6:
1593                            case WCon{False{}, w7}:
1594                              match w7:
1595                                case WCon{False{}, w8}:
1596                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1597                                case WCon{True{}, w8}:
1598                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1599                            case WCon{True{}, w7}:
1600                              match w7:
1601                                case WCon{False{}, w8}:
1602                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1603                                case WCon{True{}, w8}:
1604                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1605                    case WCon{True{}, w5}:
1606                      match w5:
1607                        case WCon{False{}, w6}:
1608                          match w6:
1609                            case WCon{False{}, w7}:
1610                              match w7:
1611                                case WCon{False{}, w8}:
1612                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1613                                case WCon{True{}, w8}:
1614                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1615                            case WCon{True{}, w7}:
1616                              match w7:
1617                                case WCon{False{}, w8}:
1618                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1619                                case WCon{True{}, w8}:
1620                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1621                        case WCon{True{}, w6}:
1622                          match w6:
1623                            case WCon{False{}, w7}:
1624                              match w7:
1625                                case WCon{False{}, w8}:
1626                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1627                                case WCon{True{}, w8}:
1628                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1629                            case WCon{True{}, w7}:
1630                              match w7:
1631                                case WCon{False{}, w8}:
1632                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1633                                case WCon{True{}, w8}:
1634                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1635                case WCon{True{}, w4}:
1636                  match w4:
1637                    case WCon{False{}, w5}:
1638                      match w5:
1639                        case WCon{False{}, w6}:
1640                          match w6:
1641                            case WCon{False{}, w7}:
1642                              match w7:
1643                                case WCon{False{}, w8}:
1644                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1645                                case WCon{True{}, w8}:
1646                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1647                            case WCon{True{}, w7}:
1648                              match w7:
1649                                case WCon{False{}, w8}:
1650                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1651                                case WCon{True{}, w8}:
1652                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1653                        case WCon{True{}, w6}:
1654                          match w6:
1655                            case WCon{False{}, w7}:
1656                              match w7:
1657                                case WCon{False{}, w8}:
1658                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1659                                case WCon{True{}, w8}:
1660                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1661                            case WCon{True{}, w7}:
1662                              match w7:
1663                                case WCon{False{}, w8}:
1664                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1665                                case WCon{True{}, w8}:
1666                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1667                    case WCon{True{}, w5}:
1668                      match w5:
1669                        case WCon{False{}, w6}:
1670                          match w6:
1671                            case WCon{False{}, w7}:
1672                              match w7:
1673                                case WCon{False{}, w8}:
1674                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1675                                case WCon{True{}, w8}:
1676                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1677                            case WCon{True{}, w7}:
1678                              match w7:
1679                                case WCon{False{}, w8}:
1680                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1681                                case WCon{True{}, w8}:
1682                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1683                        case WCon{True{}, w6}:
1684                          match w6:
1685                            case WCon{False{}, w7}:
1686                              match w7:
1687                                case WCon{False{}, w8}:
1688                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1689                                case WCon{True{}, w8}:
1690                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1691                            case WCon{True{}, w7}:
1692                              match w7:
1693                                case WCon{False{}, w8}:
1694                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1695                                case WCon{True{}, w8}:
1696                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1697            case WCon{True{}, w3}:
1698              match w3:
1699                case WCon{False{}, w4}:
1700                  match w4:
1701                    case WCon{False{}, w5}:
1702                      match w5:
1703                        case WCon{False{}, w6}:
1704                          match w6:
1705                            case WCon{False{}, w7}:
1706                              match w7:
1707                                case WCon{False{}, w8}:
1708                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1709                                case WCon{True{}, w8}:
1710                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1711                            case WCon{True{}, w7}:
1712                              match w7:
1713                                case WCon{False{}, w8}:
1714                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1715                                case WCon{True{}, w8}:
1716                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1717                        case WCon{True{}, w6}:
1718                          match w6:
1719                            case WCon{False{}, w7}:
1720                              match w7:
1721                                case WCon{False{}, w8}:
1722                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1723                                case WCon{True{}, w8}:
1724                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1725                            case WCon{True{}, w7}:
1726                              match w7:
1727                                case WCon{False{}, w8}:
1728                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1729                                case WCon{True{}, w8}:
1730                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1731                    case WCon{True{}, w5}:
1732                      match w5:
1733                        case WCon{False{}, w6}:
1734                          match w6:
1735                            case WCon{False{}, w7}:
1736                              match w7:
1737                                case WCon{False{}, w8}:
1738                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1739                                case WCon{True{}, w8}:
1740                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1741                            case WCon{True{}, w7}:
1742                              match w7:
1743                                case WCon{False{}, w8}:
1744                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1745                                case WCon{True{}, w8}:
1746                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1747                        case WCon{True{}, w6}:
1748                          match w6:
1749                            case WCon{False{}, w7}:
1750                              match w7:
1751                                case WCon{False{}, w8}:
1752                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1753                                case WCon{True{}, w8}:
1754                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1755                            case WCon{True{}, w7}:
1756                              match w7:
1757                                case WCon{False{}, w8}:
1758                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1759                                case WCon{True{}, w8}:
1760                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1761                case WCon{True{}, w4}:
1762                  match w4:
1763                    case WCon{False{}, w5}:
1764                      match w5:
1765                        case WCon{False{}, w6}:
1766                          match w6:
1767                            case WCon{False{}, w7}:
1768                              match w7:
1769                                case WCon{False{}, w8}:
1770                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1771                                case WCon{True{}, w8}:
1772                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1773                            case WCon{True{}, w7}:
1774                              match w7:
1775                                case WCon{False{}, w8}:
1776                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1777                                case WCon{True{}, w8}:
1778                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1779                        case WCon{True{}, w6}:
1780                          match w6:
1781                            case WCon{False{}, w7}:
1782                              match w7:
1783                                case WCon{False{}, w8}:
1784                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1785                                case WCon{True{}, w8}:
1786                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1787                            case WCon{True{}, w7}:
1788                              match w7:
1789                                case WCon{False{}, w8}:
1790                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1791                                case WCon{True{}, w8}:
1792                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1793                    case WCon{True{}, w5}:
1794                      match w5:
1795                        case WCon{False{}, w6}:
1796                          match w6:
1797                            case WCon{False{}, w7}:
1798                              match w7:
1799                                case WCon{False{}, w8}:
1800                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1801                                case WCon{True{}, w8}:
1802                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1803                            case WCon{True{}, w7}:
1804                              match w7:
1805                                case WCon{False{}, w8}:
1806                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1807                                case WCon{True{}, w8}:
1808                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1809                        case WCon{True{}, w6}:
1810                          match w6:
1811                            case WCon{False{}, w7}:
1812                              match w7:
1813                                case WCon{False{}, w8}:
1814                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1815                                case WCon{True{}, w8}:
1816                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1817                            case WCon{True{}, w7}:
1818                              match w7:
1819                                case WCon{False{}, w8}:
1820                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1821                                case WCon{True{}, w8}:
1822                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1823        case WCon{True{}, w2}:
1824          match w2:
1825            case WCon{False{}, w3}:
1826              match w3:
1827                case WCon{False{}, w4}:
1828                  match w4:
1829                    case WCon{False{}, w5}:
1830                      match w5:
1831                        case WCon{False{}, w6}:
1832                          match w6:
1833                            case WCon{False{}, w7}:
1834                              match w7:
1835                                case WCon{False{}, w8}:
1836                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1837                                case WCon{True{}, w8}:
1838                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1839                            case WCon{True{}, w7}:
1840                              match w7:
1841                                case WCon{False{}, w8}:
1842                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1843                                case WCon{True{}, w8}:
1844                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1845                        case WCon{True{}, w6}:
1846                          match w6:
1847                            case WCon{False{}, w7}:
1848                              match w7:
1849                                case WCon{False{}, w8}:
1850                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1851                                case WCon{True{}, w8}:
1852                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1853                            case WCon{True{}, w7}:
1854                              match w7:
1855                                case WCon{False{}, w8}:
1856                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1857                                case WCon{True{}, w8}:
1858                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1859                    case WCon{True{}, w5}:
1860                      match w5:
1861                        case WCon{False{}, w6}:
1862                          match w6:
1863                            case WCon{False{}, w7}:
1864                              match w7:
1865                                case WCon{False{}, w8}:
1866                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1867                                case WCon{True{}, w8}:
1868                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1869                            case WCon{True{}, w7}:
1870                              match w7:
1871                                case WCon{False{}, w8}:
1872                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1873                                case WCon{True{}, w8}:
1874                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1875                        case WCon{True{}, w6}:
1876                          match w6:
1877                            case WCon{False{}, w7}:
1878                              match w7:
1879                                case WCon{False{}, w8}:
1880                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1881                                case WCon{True{}, w8}:
1882                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1883                            case WCon{True{}, w7}:
1884                              match w7:
1885                                case WCon{False{}, w8}:
1886                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1887                                case WCon{True{}, w8}:
1888                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1889                case WCon{True{}, w4}:
1890                  match w4:
1891                    case WCon{False{}, w5}:
1892                      match w5:
1893                        case WCon{False{}, w6}:
1894                          match w6:
1895                            case WCon{False{}, w7}:
1896                              match w7:
1897                                case WCon{False{}, w8}:
1898                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1899                                case WCon{True{}, w8}:
1900                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1901                            case WCon{True{}, w7}:
1902                              match w7:
1903                                case WCon{False{}, w8}:
1904                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1905                                case WCon{True{}, w8}:
1906                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1907                        case WCon{True{}, w6}:
1908                          match w6:
1909                            case WCon{False{}, w7}:
1910                              match w7:
1911                                case WCon{False{}, w8}:
1912                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1913                                case WCon{True{}, w8}:
1914                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1915                            case WCon{True{}, w7}:
1916                              match w7:
1917                                case WCon{False{}, w8}:
1918                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1919                                case WCon{True{}, w8}:
1920                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1921                    case WCon{True{}, w5}:
1922                      match w5:
1923                        case WCon{False{}, w6}:
1924                          match w6:
1925                            case WCon{False{}, w7}:
1926                              match w7:
1927                                case WCon{False{}, w8}:
1928                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1929                                case WCon{True{}, w8}:
1930                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1931                            case WCon{True{}, w7}:
1932                              match w7:
1933                                case WCon{False{}, w8}:
1934                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1935                                case WCon{True{}, w8}:
1936                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1937                        case WCon{True{}, w6}:
1938                          match w6:
1939                            case WCon{False{}, w7}:
1940                              match w7:
1941                                case WCon{False{}, w8}:
1942                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1943                                case WCon{True{}, w8}:
1944                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1945                            case WCon{True{}, w7}:
1946                              match w7:
1947                                case WCon{False{}, w8}:
1948                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1949                                case WCon{True{}, w8}:
1950                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1951            case WCon{True{}, w3}:
1952              match w3:
1953                case WCon{False{}, w4}:
1954                  match w4:
1955                    case WCon{False{}, w5}:
1956                      match w5:
1957                        case WCon{False{}, w6}:
1958                          match w6:
1959                            case WCon{False{}, w7}:
1960                              match w7:
1961                                case WCon{False{}, w8}:
1962                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1963                                case WCon{True{}, w8}:
1964                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1965                            case WCon{True{}, w7}:
1966                              match w7:
1967                                case WCon{False{}, w8}:
1968                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1969                                case WCon{True{}, w8}:
1970                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1971                        case WCon{True{}, w6}:
1972                          match w6:
1973                            case WCon{False{}, w7}:
1974                              match w7:
1975                                case WCon{False{}, w8}:
1976                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1977                                case WCon{True{}, w8}:
1978                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1979                            case WCon{True{}, w7}:
1980                              match w7:
1981                                case WCon{False{}, w8}:
1982                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1983                                case WCon{True{}, w8}:
1984                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1985                    case WCon{True{}, w5}:
1986                      match w5:
1987                        case WCon{False{}, w6}:
1988                          match w6:
1989                            case WCon{False{}, w7}:
1990                              match w7:
1991                                case WCon{False{}, w8}:
1992                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1993                                case WCon{True{}, w8}:
1994                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1995                            case WCon{True{}, w7}:
1996                              match w7:
1997                                case WCon{False{}, w8}:
1998                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1999                                case WCon{True{}, w8}:
2000                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2001                        case WCon{True{}, w6}:
2002                          match w6:
2003                            case WCon{False{}, w7}:
2004                              match w7:
2005                                case WCon{False{}, w8}:
2006                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2007                                case WCon{True{}, w8}:
2008                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2009                            case WCon{True{}, w7}:
2010                              match w7:
2011                                case WCon{False{}, w8}:
2012                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2013                                case WCon{True{}, w8}:
2014                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2015                case WCon{True{}, w4}:
2016                  match w4:
2017                    case WCon{False{}, w5}:
2018                      match w5:
2019                        case WCon{False{}, w6}:
2020                          match w6:
2021                            case WCon{False{}, w7}:
2022                              match w7:
2023                                case WCon{False{}, w8}:
2024                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2025                                case WCon{True{}, w8}:
2026                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2027                            case WCon{True{}, w7}:
2028                              match w7:
2029                                case WCon{False{}, w8}:
2030                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2031                                case WCon{True{}, w8}:
2032                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2033                        case WCon{True{}, w6}:
2034                          match w6:
2035                            case WCon{False{}, w7}:
2036                              match w7:
2037                                case WCon{False{}, w8}:
2038                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2039                                case WCon{True{}, w8}:
2040                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2041                            case WCon{True{}, w7}:
2042                              match w7:
2043                                case WCon{False{}, w8}:
2044                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2045                                case WCon{True{}, w8}:
2046                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2047                    case WCon{True{}, w5}:
2048                      match w5:
2049                        case WCon{False{}, w6}:
2050                          match w6:
2051                            case WCon{False{}, w7}:
2052                              match w7:
2053                                case WCon{False{}, w8}:
2054                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2055                                case WCon{True{}, w8}:
2056                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2057                            case WCon{True{}, w7}:
2058                              match w7:
2059                                case WCon{False{}, w8}:
2060                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2061                                case WCon{True{}, w8}:
2062                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2063                        case WCon{True{}, w6}:
2064                          match w6:
2065                            case WCon{False{}, w7}:
2066                              match w7:
2067                                case WCon{False{}, w8}:
2068                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2069                                case WCon{True{}, w8}:
2070                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2071                            case WCon{True{}, w7}:
2072                              match w7:
2073                                case WCon{False{}, w8}:
2074                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2075                                case WCon{True{}, w8}:
2076                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2077
2078# SB3, the inverse of SB1
2079def aria.sb3(w0: Word(8n)) -> Word(8n):
2080  match w0:
2081    case WCon{False{}, w1}:
2082      match w1:
2083        case WCon{False{}, w2}:
2084          match w2:
2085            case WCon{False{}, w3}:
2086              match w3:
2087                case WCon{False{}, w4}:
2088                  match w4:
2089                    case WCon{False{}, w5}:
2090                      match w5:
2091                        case WCon{False{}, w6}:
2092                          match w6:
2093                            case WCon{False{}, w7}:
2094                              match w7:
2095                                case WCon{False{}, w8}:
2096                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2097                                case WCon{True{}, w8}:
2098                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2099                            case WCon{True{}, w7}:
2100                              match w7:
2101                                case WCon{False{}, w8}:
2102                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2103                                case WCon{True{}, w8}:
2104                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2105                        case WCon{True{}, w6}:
2106                          match w6:
2107                            case WCon{False{}, w7}:
2108                              match w7:
2109                                case WCon{False{}, w8}:
2110                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2111                                case WCon{True{}, w8}:
2112                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2113                            case WCon{True{}, w7}:
2114                              match w7:
2115                                case WCon{False{}, w8}:
2116                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2117                                case WCon{True{}, w8}:
2118                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2119                    case WCon{True{}, w5}:
2120                      match w5:
2121                        case WCon{False{}, w6}:
2122                          match w6:
2123                            case WCon{False{}, w7}:
2124                              match w7:
2125                                case WCon{False{}, w8}:
2126                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2127                                case WCon{True{}, w8}:
2128                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2129                            case WCon{True{}, w7}:
2130                              match w7:
2131                                case WCon{False{}, w8}:
2132                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2133                                case WCon{True{}, w8}:
2134                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2135                        case WCon{True{}, w6}:
2136                          match w6:
2137                            case WCon{False{}, w7}:
2138                              match w7:
2139                                case WCon{False{}, w8}:
2140                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2141                                case WCon{True{}, w8}:
2142                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2143                            case WCon{True{}, w7}:
2144                              match w7:
2145                                case WCon{False{}, w8}:
2146                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2147                                case WCon{True{}, w8}:
2148                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2149                case WCon{True{}, w4}:
2150                  match w4:
2151                    case WCon{False{}, w5}:
2152                      match w5:
2153                        case WCon{False{}, w6}:
2154                          match w6:
2155                            case WCon{False{}, w7}:
2156                              match w7:
2157                                case WCon{False{}, w8}:
2158                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2159                                case WCon{True{}, w8}:
2160                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2161                            case WCon{True{}, w7}:
2162                              match w7:
2163                                case WCon{False{}, w8}:
2164                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2165                                case WCon{True{}, w8}:
2166                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2167                        case WCon{True{}, w6}:
2168                          match w6:
2169                            case WCon{False{}, w7}:
2170                              match w7:
2171                                case WCon{False{}, w8}:
2172                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2173                                case WCon{True{}, w8}:
2174                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2175                            case WCon{True{}, w7}:
2176                              match w7:
2177                                case WCon{False{}, w8}:
2178                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2179                                case WCon{True{}, w8}:
2180                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2181                    case WCon{True{}, w5}:
2182                      match w5:
2183                        case WCon{False{}, w6}:
2184                          match w6:
2185                            case WCon{False{}, w7}:
2186                              match w7:
2187                                case WCon{False{}, w8}:
2188                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2189                                case WCon{True{}, w8}:
2190                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2191                            case WCon{True{}, w7}:
2192                              match w7:
2193                                case WCon{False{}, w8}:
2194                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2195                                case WCon{True{}, w8}:
2196                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2197                        case WCon{True{}, w6}:
2198                          match w6:
2199                            case WCon{False{}, w7}:
2200                              match w7:
2201                                case WCon{False{}, w8}:
2202                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2203                                case WCon{True{}, w8}:
2204                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2205                            case WCon{True{}, w7}:
2206                              match w7:
2207                                case WCon{False{}, w8}:
2208                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2209                                case WCon{True{}, w8}:
2210                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2211            case WCon{True{}, w3}:
2212              match w3:
2213                case WCon{False{}, w4}:
2214                  match w4:
2215                    case WCon{False{}, w5}:
2216                      match w5:
2217                        case WCon{False{}, w6}:
2218                          match w6:
2219                            case WCon{False{}, w7}:
2220                              match w7:
2221                                case WCon{False{}, w8}:
2222                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2223                                case WCon{True{}, w8}:
2224                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2225                            case WCon{True{}, w7}:
2226                              match w7:
2227                                case WCon{False{}, w8}:
2228                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2229                                case WCon{True{}, w8}:
2230                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2231                        case WCon{True{}, w6}:
2232                          match w6:
2233                            case WCon{False{}, w7}:
2234                              match w7:
2235                                case WCon{False{}, w8}:
2236                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2237                                case WCon{True{}, w8}:
2238                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2239                            case WCon{True{}, w7}:
2240                              match w7:
2241                                case WCon{False{}, w8}:
2242                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2243                                case WCon{True{}, w8}:
2244                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2245                    case WCon{True{}, w5}:
2246                      match w5:
2247                        case WCon{False{}, w6}:
2248                          match w6:
2249                            case WCon{False{}, w7}:
2250                              match w7:
2251                                case WCon{False{}, w8}:
2252                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2253                                case WCon{True{}, w8}:
2254                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2255                            case WCon{True{}, w7}:
2256                              match w7:
2257                                case WCon{False{}, w8}:
2258                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2259                                case WCon{True{}, w8}:
2260                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2261                        case WCon{True{}, w6}:
2262                          match w6:
2263                            case WCon{False{}, w7}:
2264                              match w7:
2265                                case WCon{False{}, w8}:
2266                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2267                                case WCon{True{}, w8}:
2268                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2269                            case WCon{True{}, w7}:
2270                              match w7:
2271                                case WCon{False{}, w8}:
2272                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2273                                case WCon{True{}, w8}:
2274                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2275                case WCon{True{}, w4}:
2276                  match w4:
2277                    case WCon{False{}, w5}:
2278                      match w5:
2279                        case WCon{False{}, w6}:
2280                          match w6:
2281                            case WCon{False{}, w7}:
2282                              match w7:
2283                                case WCon{False{}, w8}:
2284                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2285                                case WCon{True{}, w8}:
2286                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2287                            case WCon{True{}, w7}:
2288                              match w7:
2289                                case WCon{False{}, w8}:
2290                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2291                                case WCon{True{}, w8}:
2292                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2293                        case WCon{True{}, w6}:
2294                          match w6:
2295                            case WCon{False{}, w7}:
2296                              match w7:
2297                                case WCon{False{}, w8}:
2298                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2299                                case WCon{True{}, w8}:
2300                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2301                            case WCon{True{}, w7}:
2302                              match w7:
2303                                case WCon{False{}, w8}:
2304                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2305                                case WCon{True{}, w8}:
2306                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2307                    case WCon{True{}, w5}:
2308                      match w5:
2309                        case WCon{False{}, w6}:
2310                          match w6:
2311                            case WCon{False{}, w7}:
2312                              match w7:
2313                                case WCon{False{}, w8}:
2314                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2315                                case WCon{True{}, w8}:
2316                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2317                            case WCon{True{}, w7}:
2318                              match w7:
2319                                case WCon{False{}, w8}:
2320                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2321                                case WCon{True{}, w8}:
2322                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2323                        case WCon{True{}, w6}:
2324                          match w6:
2325                            case WCon{False{}, w7}:
2326                              match w7:
2327                                case WCon{False{}, w8}:
2328                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2329                                case WCon{True{}, w8}:
2330                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2331                            case WCon{True{}, w7}:
2332                              match w7:
2333                                case WCon{False{}, w8}:
2334                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2335                                case WCon{True{}, w8}:
2336                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2337        case WCon{True{}, w2}:
2338          match w2:
2339            case WCon{False{}, w3}:
2340              match w3:
2341                case WCon{False{}, w4}:
2342                  match w4:
2343                    case WCon{False{}, w5}:
2344                      match w5:
2345                        case WCon{False{}, w6}:
2346                          match w6:
2347                            case WCon{False{}, w7}:
2348                              match w7:
2349                                case WCon{False{}, w8}:
2350                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2351                                case WCon{True{}, w8}:
2352                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2353                            case WCon{True{}, w7}:
2354                              match w7:
2355                                case WCon{False{}, w8}:
2356                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2357                                case WCon{True{}, w8}:
2358                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2359                        case WCon{True{}, w6}:
2360                          match w6:
2361                            case WCon{False{}, w7}:
2362                              match w7:
2363                                case WCon{False{}, w8}:
2364                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2365                                case WCon{True{}, w8}:
2366                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2367                            case WCon{True{}, w7}:
2368                              match w7:
2369                                case WCon{False{}, w8}:
2370                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2371                                case WCon{True{}, w8}:
2372                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2373                    case WCon{True{}, w5}:
2374                      match w5:
2375                        case WCon{False{}, w6}:
2376                          match w6:
2377                            case WCon{False{}, w7}:
2378                              match w7:
2379                                case WCon{False{}, w8}:
2380                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2381                                case WCon{True{}, w8}:
2382                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2383                            case WCon{True{}, w7}:
2384                              match w7:
2385                                case WCon{False{}, w8}:
2386                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2387                                case WCon{True{}, w8}:
2388                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2389                        case WCon{True{}, w6}:
2390                          match w6:
2391                            case WCon{False{}, w7}:
2392                              match w7:
2393                                case WCon{False{}, w8}:
2394                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2395                                case WCon{True{}, w8}:
2396                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2397                            case WCon{True{}, w7}:
2398                              match w7:
2399                                case WCon{False{}, w8}:
2400                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2401                                case WCon{True{}, w8}:
2402                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2403                case WCon{True{}, w4}:
2404                  match w4:
2405                    case WCon{False{}, w5}:
2406                      match w5:
2407                        case WCon{False{}, w6}:
2408                          match w6:
2409                            case WCon{False{}, w7}:
2410                              match w7:
2411                                case WCon{False{}, w8}:
2412                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2413                                case WCon{True{}, w8}:
2414                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2415                            case WCon{True{}, w7}:
2416                              match w7:
2417                                case WCon{False{}, w8}:
2418                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2419                                case WCon{True{}, w8}:
2420                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2421                        case WCon{True{}, w6}:
2422                          match w6:
2423                            case WCon{False{}, w7}:
2424                              match w7:
2425                                case WCon{False{}, w8}:
2426                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2427                                case WCon{True{}, w8}:
2428                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2429                            case WCon{True{}, w7}:
2430                              match w7:
2431                                case WCon{False{}, w8}:
2432                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2433                                case WCon{True{}, w8}:
2434                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2435                    case WCon{True{}, w5}:
2436                      match w5:
2437                        case WCon{False{}, w6}:
2438                          match w6:
2439                            case WCon{False{}, w7}:
2440                              match w7:
2441                                case WCon{False{}, w8}:
2442                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2443                                case WCon{True{}, w8}:
2444                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2445                            case WCon{True{}, w7}:
2446                              match w7:
2447                                case WCon{False{}, w8}:
2448                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2449                                case WCon{True{}, w8}:
2450                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2451                        case WCon{True{}, w6}:
2452                          match w6:
2453                            case WCon{False{}, w7}:
2454                              match w7:
2455                                case WCon{False{}, w8}:
2456                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2457                                case WCon{True{}, w8}:
2458                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2459                            case WCon{True{}, w7}:
2460                              match w7:
2461                                case WCon{False{}, w8}:
2462                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2463                                case WCon{True{}, w8}:
2464                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2465            case WCon{True{}, w3}:
2466              match w3:
2467                case WCon{False{}, w4}:
2468                  match w4:
2469                    case WCon{False{}, w5}:
2470                      match w5:
2471                        case WCon{False{}, w6}:
2472                          match w6:
2473                            case WCon{False{}, w7}:
2474                              match w7:
2475                                case WCon{False{}, w8}:
2476                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2477                                case WCon{True{}, w8}:
2478                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2479                            case WCon{True{}, w7}:
2480                              match w7:
2481                                case WCon{False{}, w8}:
2482                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2483                                case WCon{True{}, w8}:
2484                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2485                        case WCon{True{}, w6}:
2486                          match w6:
2487                            case WCon{False{}, w7}:
2488                              match w7:
2489                                case WCon{False{}, w8}:
2490                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2491                                case WCon{True{}, w8}:
2492                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2493                            case WCon{True{}, w7}:
2494                              match w7:
2495                                case WCon{False{}, w8}:
2496                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2497                                case WCon{True{}, w8}:
2498                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2499                    case WCon{True{}, w5}:
2500                      match w5:
2501                        case WCon{False{}, w6}:
2502                          match w6:
2503                            case WCon{False{}, w7}:
2504                              match w7:
2505                                case WCon{False{}, w8}:
2506                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2507                                case WCon{True{}, w8}:
2508                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2509                            case WCon{True{}, w7}:
2510                              match w7:
2511                                case WCon{False{}, w8}:
2512                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2513                                case WCon{True{}, w8}:
2514                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2515                        case WCon{True{}, w6}:
2516                          match w6:
2517                            case WCon{False{}, w7}:
2518                              match w7:
2519                                case WCon{False{}, w8}:
2520                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2521                                case WCon{True{}, w8}:
2522                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2523                            case WCon{True{}, w7}:
2524                              match w7:
2525                                case WCon{False{}, w8}:
2526                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2527                                case WCon{True{}, w8}:
2528                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2529                case WCon{True{}, w4}:
2530                  match w4:
2531                    case WCon{False{}, w5}:
2532                      match w5:
2533                        case WCon{False{}, w6}:
2534                          match w6:
2535                            case WCon{False{}, w7}:
2536                              match w7:
2537                                case WCon{False{}, w8}:
2538                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2539                                case WCon{True{}, w8}:
2540                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2541                            case WCon{True{}, w7}:
2542                              match w7:
2543                                case WCon{False{}, w8}:
2544                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2545                                case WCon{True{}, w8}:
2546                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2547                        case WCon{True{}, w6}:
2548                          match w6:
2549                            case WCon{False{}, w7}:
2550                              match w7:
2551                                case WCon{False{}, w8}:
2552                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2553                                case WCon{True{}, w8}:
2554                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2555                            case WCon{True{}, w7}:
2556                              match w7:
2557                                case WCon{False{}, w8}:
2558                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2559                                case WCon{True{}, w8}:
2560                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2561                    case WCon{True{}, w5}:
2562                      match w5:
2563                        case WCon{False{}, w6}:
2564                          match w6:
2565                            case WCon{False{}, w7}:
2566                              match w7:
2567                                case WCon{False{}, w8}:
2568                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2569                                case WCon{True{}, w8}:
2570                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2571                            case WCon{True{}, w7}:
2572                              match w7:
2573                                case WCon{False{}, w8}:
2574                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2575                                case WCon{True{}, w8}:
2576                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2577                        case WCon{True{}, w6}:
2578                          match w6:
2579                            case WCon{False{}, w7}:
2580                              match w7:
2581                                case WCon{False{}, w8}:
2582                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2583                                case WCon{True{}, w8}:
2584                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2585                            case WCon{True{}, w7}:
2586                              match w7:
2587                                case WCon{False{}, w8}:
2588                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2589                                case WCon{True{}, w8}:
2590                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2591    case WCon{True{}, w1}:
2592      match w1:
2593        case WCon{False{}, w2}:
2594          match w2:
2595            case WCon{False{}, w3}:
2596              match w3:
2597                case WCon{False{}, w4}:
2598                  match w4:
2599                    case WCon{False{}, w5}:
2600                      match w5:
2601                        case WCon{False{}, w6}:
2602                          match w6:
2603                            case WCon{False{}, w7}:
2604                              match w7:
2605                                case WCon{False{}, w8}:
2606                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2607                                case WCon{True{}, w8}:
2608                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2609                            case WCon{True{}, w7}:
2610                              match w7:
2611                                case WCon{False{}, w8}:
2612                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2613                                case WCon{True{}, w8}:
2614                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2615                        case WCon{True{}, w6}:
2616                          match w6:
2617                            case WCon{False{}, w7}:
2618                              match w7:
2619                                case WCon{False{}, w8}:
2620                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2621                                case WCon{True{}, w8}:
2622                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2623                            case WCon{True{}, w7}:
2624                              match w7:
2625                                case WCon{False{}, w8}:
2626                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2627                                case WCon{True{}, w8}:
2628                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2629                    case WCon{True{}, w5}:
2630                      match w5:
2631                        case WCon{False{}, w6}:
2632                          match w6:
2633                            case WCon{False{}, w7}:
2634                              match w7:
2635                                case WCon{False{}, w8}:
2636                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2637                                case WCon{True{}, w8}:
2638                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2639                            case WCon{True{}, w7}:
2640                              match w7:
2641                                case WCon{False{}, w8}:
2642                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2643                                case WCon{True{}, w8}:
2644                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2645                        case WCon{True{}, w6}:
2646                          match w6:
2647                            case WCon{False{}, w7}:
2648                              match w7:
2649                                case WCon{False{}, w8}:
2650                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2651                                case WCon{True{}, w8}:
2652                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2653                            case WCon{True{}, w7}:
2654                              match w7:
2655                                case WCon{False{}, w8}:
2656                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2657                                case WCon{True{}, w8}:
2658                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2659                case WCon{True{}, w4}:
2660                  match w4:
2661                    case WCon{False{}, w5}:
2662                      match w5:
2663                        case WCon{False{}, w6}:
2664                          match w6:
2665                            case WCon{False{}, w7}:
2666                              match w7:
2667                                case WCon{False{}, w8}:
2668                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2669                                case WCon{True{}, w8}:
2670                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2671                            case WCon{True{}, w7}:
2672                              match w7:
2673                                case WCon{False{}, w8}:
2674                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2675                                case WCon{True{}, w8}:
2676                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2677                        case WCon{True{}, w6}:
2678                          match w6:
2679                            case WCon{False{}, w7}:
2680                              match w7:
2681                                case WCon{False{}, w8}:
2682                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2683                                case WCon{True{}, w8}:
2684                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2685                            case WCon{True{}, w7}:
2686                              match w7:
2687                                case WCon{False{}, w8}:
2688                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2689                                case WCon{True{}, w8}:
2690                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2691                    case WCon{True{}, w5}:
2692                      match w5:
2693                        case WCon{False{}, w6}:
2694                          match w6:
2695                            case WCon{False{}, w7}:
2696                              match w7:
2697                                case WCon{False{}, w8}:
2698                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2699                                case WCon{True{}, w8}:
2700                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2701                            case WCon{True{}, w7}:
2702                              match w7:
2703                                case WCon{False{}, w8}:
2704                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2705                                case WCon{True{}, w8}:
2706                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2707                        case WCon{True{}, w6}:
2708                          match w6:
2709                            case WCon{False{}, w7}:
2710                              match w7:
2711                                case WCon{False{}, w8}:
2712                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2713                                case WCon{True{}, w8}:
2714                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2715                            case WCon{True{}, w7}:
2716                              match w7:
2717                                case WCon{False{}, w8}:
2718                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2719                                case WCon{True{}, w8}:
2720                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2721            case WCon{True{}, w3}:
2722              match w3:
2723                case WCon{False{}, w4}:
2724                  match w4:
2725                    case WCon{False{}, w5}:
2726                      match w5:
2727                        case WCon{False{}, w6}:
2728                          match w6:
2729                            case WCon{False{}, w7}:
2730                              match w7:
2731                                case WCon{False{}, w8}:
2732                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2733                                case WCon{True{}, w8}:
2734                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2735                            case WCon{True{}, w7}:
2736                              match w7:
2737                                case WCon{False{}, w8}:
2738                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2739                                case WCon{True{}, w8}:
2740                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2741                        case WCon{True{}, w6}:
2742                          match w6:
2743                            case WCon{False{}, w7}:
2744                              match w7:
2745                                case WCon{False{}, w8}:
2746                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2747                                case WCon{True{}, w8}:
2748                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2749                            case WCon{True{}, w7}:
2750                              match w7:
2751                                case WCon{False{}, w8}:
2752                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2753                                case WCon{True{}, w8}:
2754                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2755                    case WCon{True{}, w5}:
2756                      match w5:
2757                        case WCon{False{}, w6}:
2758                          match w6:
2759                            case WCon{False{}, w7}:
2760                              match w7:
2761                                case WCon{False{}, w8}:
2762                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2763                                case WCon{True{}, w8}:
2764                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2765                            case WCon{True{}, w7}:
2766                              match w7:
2767                                case WCon{False{}, w8}:
2768                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2769                                case WCon{True{}, w8}:
2770                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2771                        case WCon{True{}, w6}:
2772                          match w6:
2773                            case WCon{False{}, w7}:
2774                              match w7:
2775                                case WCon{False{}, w8}:
2776                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2777                                case WCon{True{}, w8}:
2778                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2779                            case WCon{True{}, w7}:
2780                              match w7:
2781                                case WCon{False{}, w8}:
2782                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2783                                case WCon{True{}, w8}:
2784                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2785                case WCon{True{}, w4}:
2786                  match w4:
2787                    case WCon{False{}, w5}:
2788                      match w5:
2789                        case WCon{False{}, w6}:
2790                          match w6:
2791                            case WCon{False{}, w7}:
2792                              match w7:
2793                                case WCon{False{}, w8}:
2794                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2795                                case WCon{True{}, w8}:
2796                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2797                            case WCon{True{}, w7}:
2798                              match w7:
2799                                case WCon{False{}, w8}:
2800                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2801                                case WCon{True{}, w8}:
2802                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2803                        case WCon{True{}, w6}:
2804                          match w6:
2805                            case WCon{False{}, w7}:
2806                              match w7:
2807                                case WCon{False{}, w8}:
2808                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2809                                case WCon{True{}, w8}:
2810                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2811                            case WCon{True{}, w7}:
2812                              match w7:
2813                                case WCon{False{}, w8}:
2814                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2815                                case WCon{True{}, w8}:
2816                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2817                    case WCon{True{}, w5}:
2818                      match w5:
2819                        case WCon{False{}, w6}:
2820                          match w6:
2821                            case WCon{False{}, w7}:
2822                              match w7:
2823                                case WCon{False{}, w8}:
2824                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2825                                case WCon{True{}, w8}:
2826                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2827                            case WCon{True{}, w7}:
2828                              match w7:
2829                                case WCon{False{}, w8}:
2830                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2831                                case WCon{True{}, w8}:
2832                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2833                        case WCon{True{}, w6}:
2834                          match w6:
2835                            case WCon{False{}, w7}:
2836                              match w7:
2837                                case WCon{False{}, w8}:
2838                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2839                                case WCon{True{}, w8}:
2840                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2841                            case WCon{True{}, w7}:
2842                              match w7:
2843                                case WCon{False{}, w8}:
2844                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2845                                case WCon{True{}, w8}:
2846                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2847        case WCon{True{}, w2}:
2848          match w2:
2849            case WCon{False{}, w3}:
2850              match w3:
2851                case WCon{False{}, w4}:
2852                  match w4:
2853                    case WCon{False{}, w5}:
2854                      match w5:
2855                        case WCon{False{}, w6}:
2856                          match w6:
2857                            case WCon{False{}, w7}:
2858                              match w7:
2859                                case WCon{False{}, w8}:
2860                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2861                                case WCon{True{}, w8}:
2862                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2863                            case WCon{True{}, w7}:
2864                              match w7:
2865                                case WCon{False{}, w8}:
2866                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2867                                case WCon{True{}, w8}:
2868                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2869                        case WCon{True{}, w6}:
2870                          match w6:
2871                            case WCon{False{}, w7}:
2872                              match w7:
2873                                case WCon{False{}, w8}:
2874                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2875                                case WCon{True{}, w8}:
2876                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2877                            case WCon{True{}, w7}:
2878                              match w7:
2879                                case WCon{False{}, w8}:
2880                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2881                                case WCon{True{}, w8}:
2882                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2883                    case WCon{True{}, w5}:
2884                      match w5:
2885                        case WCon{False{}, w6}:
2886                          match w6:
2887                            case WCon{False{}, w7}:
2888                              match w7:
2889                                case WCon{False{}, w8}:
2890                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2891                                case WCon{True{}, w8}:
2892                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2893                            case WCon{True{}, w7}:
2894                              match w7:
2895                                case WCon{False{}, w8}:
2896                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2897                                case WCon{True{}, w8}:
2898                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2899                        case WCon{True{}, w6}:
2900                          match w6:
2901                            case WCon{False{}, w7}:
2902                              match w7:
2903                                case WCon{False{}, w8}:
2904                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2905                                case WCon{True{}, w8}:
2906                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2907                            case WCon{True{}, w7}:
2908                              match w7:
2909                                case WCon{False{}, w8}:
2910                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2911                                case WCon{True{}, w8}:
2912                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2913                case WCon{True{}, w4}:
2914                  match w4:
2915                    case WCon{False{}, w5}:
2916                      match w5:
2917                        case WCon{False{}, w6}:
2918                          match w6:
2919                            case WCon{False{}, w7}:
2920                              match w7:
2921                                case WCon{False{}, w8}:
2922                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2923                                case WCon{True{}, w8}:
2924                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2925                            case WCon{True{}, w7}:
2926                              match w7:
2927                                case WCon{False{}, w8}:
2928                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2929                                case WCon{True{}, w8}:
2930                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2931                        case WCon{True{}, w6}:
2932                          match w6:
2933                            case WCon{False{}, w7}:
2934                              match w7:
2935                                case WCon{False{}, w8}:
2936                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2937                                case WCon{True{}, w8}:
2938                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2939                            case WCon{True{}, w7}:
2940                              match w7:
2941                                case WCon{False{}, w8}:
2942                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2943                                case WCon{True{}, w8}:
2944                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2945                    case WCon{True{}, w5}:
2946                      match w5:
2947                        case WCon{False{}, w6}:
2948                          match w6:
2949                            case WCon{False{}, w7}:
2950                              match w7:
2951                                case WCon{False{}, w8}:
2952                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2953                                case WCon{True{}, w8}:
2954                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2955                            case WCon{True{}, w7}:
2956                              match w7:
2957                                case WCon{False{}, w8}:
2958                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2959                                case WCon{True{}, w8}:
2960                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2961                        case WCon{True{}, w6}:
2962                          match w6:
2963                            case WCon{False{}, w7}:
2964                              match w7:
2965                                case WCon{False{}, w8}:
2966                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2967                                case WCon{True{}, w8}:
2968                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2969                            case WCon{True{}, w7}:
2970                              match w7:
2971                                case WCon{False{}, w8}:
2972                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2973                                case WCon{True{}, w8}:
2974                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2975            case WCon{True{}, w3}:
2976              match w3:
2977                case WCon{False{}, w4}:
2978                  match w4:
2979                    case WCon{False{}, w5}:
2980                      match w5:
2981                        case WCon{False{}, w6}:
2982                          match w6:
2983                            case WCon{False{}, w7}:
2984                              match w7:
2985                                case WCon{False{}, w8}:
2986                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2987                                case WCon{True{}, w8}:
2988                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2989                            case WCon{True{}, w7}:
2990                              match w7:
2991                                case WCon{False{}, w8}:
2992                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2993                                case WCon{True{}, w8}:
2994                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2995                        case WCon{True{}, w6}:
2996                          match w6:
2997                            case WCon{False{}, w7}:
2998                              match w7:
2999                                case WCon{False{}, w8}:
3000                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3001                                case WCon{True{}, w8}:
3002                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3003                            case WCon{True{}, w7}:
3004                              match w7:
3005                                case WCon{False{}, w8}:
3006                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3007                                case WCon{True{}, w8}:
3008                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3009                    case WCon{True{}, w5}:
3010                      match w5:
3011                        case WCon{False{}, w6}:
3012                          match w6:
3013                            case WCon{False{}, w7}:
3014                              match w7:
3015                                case WCon{False{}, w8}:
3016                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3017                                case WCon{True{}, w8}:
3018                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3019                            case WCon{True{}, w7}:
3020                              match w7:
3021                                case WCon{False{}, w8}:
3022                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3023                                case WCon{True{}, w8}:
3024                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3025                        case WCon{True{}, w6}:
3026                          match w6:
3027                            case WCon{False{}, w7}:
3028                              match w7:
3029                                case WCon{False{}, w8}:
3030                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3031                                case WCon{True{}, w8}:
3032                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3033                            case WCon{True{}, w7}:
3034                              match w7:
3035                                case WCon{False{}, w8}:
3036                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3037                                case WCon{True{}, w8}:
3038                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3039                case WCon{True{}, w4}:
3040                  match w4:
3041                    case WCon{False{}, w5}:
3042                      match w5:
3043                        case WCon{False{}, w6}:
3044                          match w6:
3045                            case WCon{False{}, w7}:
3046                              match w7:
3047                                case WCon{False{}, w8}:
3048                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3049                                case WCon{True{}, w8}:
3050                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3051                            case WCon{True{}, w7}:
3052                              match w7:
3053                                case WCon{False{}, w8}:
3054                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3055                                case WCon{True{}, w8}:
3056                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3057                        case WCon{True{}, w6}:
3058                          match w6:
3059                            case WCon{False{}, w7}:
3060                              match w7:
3061                                case WCon{False{}, w8}:
3062                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3063                                case WCon{True{}, w8}:
3064                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3065                            case WCon{True{}, w7}:
3066                              match w7:
3067                                case WCon{False{}, w8}:
3068                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3069                                case WCon{True{}, w8}:
3070                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3071                    case WCon{True{}, w5}:
3072                      match w5:
3073                        case WCon{False{}, w6}:
3074                          match w6:
3075                            case WCon{False{}, w7}:
3076                              match w7:
3077                                case WCon{False{}, w8}:
3078                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3079                                case WCon{True{}, w8}:
3080                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3081                            case WCon{True{}, w7}:
3082                              match w7:
3083                                case WCon{False{}, w8}:
3084                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3085                                case WCon{True{}, w8}:
3086                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3087                        case WCon{True{}, w6}:
3088                          match w6:
3089                            case WCon{False{}, w7}:
3090                              match w7:
3091                                case WCon{False{}, w8}:
3092                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3093                                case WCon{True{}, w8}:
3094                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3095                            case WCon{True{}, w7}:
3096                              match w7:
3097                                case WCon{False{}, w8}:
3098                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3099                                case WCon{True{}, w8}:
3100                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3101
3102# SB4, the inverse of SB2
3103def aria.sb4(w0: Word(8n)) -> Word(8n):
3104  match w0:
3105    case WCon{False{}, w1}:
3106      match w1:
3107        case WCon{False{}, w2}:
3108          match w2:
3109            case WCon{False{}, w3}:
3110              match w3:
3111                case WCon{False{}, w4}:
3112                  match w4:
3113                    case WCon{False{}, w5}:
3114                      match w5:
3115                        case WCon{False{}, w6}:
3116                          match w6:
3117                            case WCon{False{}, w7}:
3118                              match w7:
3119                                case WCon{False{}, w8}:
3120                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3121                                case WCon{True{}, w8}:
3122                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3123                            case WCon{True{}, w7}:
3124                              match w7:
3125                                case WCon{False{}, w8}:
3126                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3127                                case WCon{True{}, w8}:
3128                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3129                        case WCon{True{}, w6}:
3130                          match w6:
3131                            case WCon{False{}, w7}:
3132                              match w7:
3133                                case WCon{False{}, w8}:
3134                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3135                                case WCon{True{}, w8}:
3136                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3137                            case WCon{True{}, w7}:
3138                              match w7:
3139                                case WCon{False{}, w8}:
3140                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3141                                case WCon{True{}, w8}:
3142                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3143                    case WCon{True{}, w5}:
3144                      match w5:
3145                        case WCon{False{}, w6}:
3146                          match w6:
3147                            case WCon{False{}, w7}:
3148                              match w7:
3149                                case WCon{False{}, w8}:
3150                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3151                                case WCon{True{}, w8}:
3152                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3153                            case WCon{True{}, w7}:
3154                              match w7:
3155                                case WCon{False{}, w8}:
3156                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3157                                case WCon{True{}, w8}:
3158                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3159                        case WCon{True{}, w6}:
3160                          match w6:
3161                            case WCon{False{}, w7}:
3162                              match w7:
3163                                case WCon{False{}, w8}:
3164                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3165                                case WCon{True{}, w8}:
3166                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3167                            case WCon{True{}, w7}:
3168                              match w7:
3169                                case WCon{False{}, w8}:
3170                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3171                                case WCon{True{}, w8}:
3172                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3173                case WCon{True{}, w4}:
3174                  match w4:
3175                    case WCon{False{}, w5}:
3176                      match w5:
3177                        case WCon{False{}, w6}:
3178                          match w6:
3179                            case WCon{False{}, w7}:
3180                              match w7:
3181                                case WCon{False{}, w8}:
3182                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3183                                case WCon{True{}, w8}:
3184                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3185                            case WCon{True{}, w7}:
3186                              match w7:
3187                                case WCon{False{}, w8}:
3188                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3189                                case WCon{True{}, w8}:
3190                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3191                        case WCon{True{}, w6}:
3192                          match w6:
3193                            case WCon{False{}, w7}:
3194                              match w7:
3195                                case WCon{False{}, w8}:
3196                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3197                                case WCon{True{}, w8}:
3198                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3199                            case WCon{True{}, w7}:
3200                              match w7:
3201                                case WCon{False{}, w8}:
3202                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3203                                case WCon{True{}, w8}:
3204                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3205                    case WCon{True{}, w5}:
3206                      match w5:
3207                        case WCon{False{}, w6}:
3208                          match w6:
3209                            case WCon{False{}, w7}:
3210                              match w7:
3211                                case WCon{False{}, w8}:
3212                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3213                                case WCon{True{}, w8}:
3214                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3215                            case WCon{True{}, w7}:
3216                              match w7:
3217                                case WCon{False{}, w8}:
3218                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3219                                case WCon{True{}, w8}:
3220                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3221                        case WCon{True{}, w6}:
3222                          match w6:
3223                            case WCon{False{}, w7}:
3224                              match w7:
3225                                case WCon{False{}, w8}:
3226                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3227                                case WCon{True{}, w8}:
3228                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3229                            case WCon{True{}, w7}:
3230                              match w7:
3231                                case WCon{False{}, w8}:
3232                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3233                                case WCon{True{}, w8}:
3234                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3235            case WCon{True{}, w3}:
3236              match w3:
3237                case WCon{False{}, w4}:
3238                  match w4:
3239                    case WCon{False{}, w5}:
3240                      match w5:
3241                        case WCon{False{}, w6}:
3242                          match w6:
3243                            case WCon{False{}, w7}:
3244                              match w7:
3245                                case WCon{False{}, w8}:
3246                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3247                                case WCon{True{}, w8}:
3248                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3249                            case WCon{True{}, w7}:
3250                              match w7:
3251                                case WCon{False{}, w8}:
3252                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3253                                case WCon{True{}, w8}:
3254                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3255                        case WCon{True{}, w6}:
3256                          match w6:
3257                            case WCon{False{}, w7}:
3258                              match w7:
3259                                case WCon{False{}, w8}:
3260                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3261                                case WCon{True{}, w8}:
3262                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3263                            case WCon{True{}, w7}:
3264                              match w7:
3265                                case WCon{False{}, w8}:
3266                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3267                                case WCon{True{}, w8}:
3268                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3269                    case WCon{True{}, w5}:
3270                      match w5:
3271                        case WCon{False{}, w6}:
3272                          match w6:
3273                            case WCon{False{}, w7}:
3274                              match w7:
3275                                case WCon{False{}, w8}:
3276                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3277                                case WCon{True{}, w8}:
3278                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3279                            case WCon{True{}, w7}:
3280                              match w7:
3281                                case WCon{False{}, w8}:
3282                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3283                                case WCon{True{}, w8}:
3284                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3285                        case WCon{True{}, w6}:
3286                          match w6:
3287                            case WCon{False{}, w7}:
3288                              match w7:
3289                                case WCon{False{}, w8}:
3290                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3291                                case WCon{True{}, w8}:
3292                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3293                            case WCon{True{}, w7}:
3294                              match w7:
3295                                case WCon{False{}, w8}:
3296                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3297                                case WCon{True{}, w8}:
3298                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3299                case WCon{True{}, w4}:
3300                  match w4:
3301                    case WCon{False{}, w5}:
3302                      match w5:
3303                        case WCon{False{}, w6}:
3304                          match w6:
3305                            case WCon{False{}, w7}:
3306                              match w7:
3307                                case WCon{False{}, w8}:
3308                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3309                                case WCon{True{}, w8}:
3310                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3311                            case WCon{True{}, w7}:
3312                              match w7:
3313                                case WCon{False{}, w8}:
3314                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3315                                case WCon{True{}, w8}:
3316                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3317                        case WCon{True{}, w6}:
3318                          match w6:
3319                            case WCon{False{}, w7}:
3320                              match w7:
3321                                case WCon{False{}, w8}:
3322                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3323                                case WCon{True{}, w8}:
3324                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3325                            case WCon{True{}, w7}:
3326                              match w7:
3327                                case WCon{False{}, w8}:
3328                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3329                                case WCon{True{}, w8}:
3330                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3331                    case WCon{True{}, w5}:
3332                      match w5:
3333                        case WCon{False{}, w6}:
3334                          match w6:
3335                            case WCon{False{}, w7}:
3336                              match w7:
3337                                case WCon{False{}, w8}:
3338                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3339                                case WCon{True{}, w8}:
3340                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3341                            case WCon{True{}, w7}:
3342                              match w7:
3343                                case WCon{False{}, w8}:
3344                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3345                                case WCon{True{}, w8}:
3346                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3347                        case WCon{True{}, w6}:
3348                          match w6:
3349                            case WCon{False{}, w7}:
3350                              match w7:
3351                                case WCon{False{}, w8}:
3352                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3353                                case WCon{True{}, w8}:
3354                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3355                            case WCon{True{}, w7}:
3356                              match w7:
3357                                case WCon{False{}, w8}:
3358                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3359                                case WCon{True{}, w8}:
3360                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3361        case WCon{True{}, w2}:
3362          match w2:
3363            case WCon{False{}, w3}:
3364              match w3:
3365                case WCon{False{}, w4}:
3366                  match w4:
3367                    case WCon{False{}, w5}:
3368                      match w5:
3369                        case WCon{False{}, w6}:
3370                          match w6:
3371                            case WCon{False{}, w7}:
3372                              match w7:
3373                                case WCon{False{}, w8}:
3374                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3375                                case WCon{True{}, w8}:
3376                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3377                            case WCon{True{}, w7}:
3378                              match w7:
3379                                case WCon{False{}, w8}:
3380                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3381                                case WCon{True{}, w8}:
3382                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3383                        case WCon{True{}, w6}:
3384                          match w6:
3385                            case WCon{False{}, w7}:
3386                              match w7:
3387                                case WCon{False{}, w8}:
3388                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3389                                case WCon{True{}, w8}:
3390                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3391                            case WCon{True{}, w7}:
3392                              match w7:
3393                                case WCon{False{}, w8}:
3394                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3395                                case WCon{True{}, w8}:
3396                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3397                    case WCon{True{}, w5}:
3398                      match w5:
3399                        case WCon{False{}, w6}:
3400                          match w6:
3401                            case WCon{False{}, w7}:
3402                              match w7:
3403                                case WCon{False{}, w8}:
3404                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3405                                case WCon{True{}, w8}:
3406                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3407                            case WCon{True{}, w7}:
3408                              match w7:
3409                                case WCon{False{}, w8}:
3410                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3411                                case WCon{True{}, w8}:
3412                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3413                        case WCon{True{}, w6}:
3414                          match w6:
3415                            case WCon{False{}, w7}:
3416                              match w7:
3417                                case WCon{False{}, w8}:
3418                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3419                                case WCon{True{}, w8}:
3420                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3421                            case WCon{True{}, w7}:
3422                              match w7:
3423                                case WCon{False{}, w8}:
3424                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3425                                case WCon{True{}, w8}:
3426                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3427                case WCon{True{}, w4}:
3428                  match w4:
3429                    case WCon{False{}, w5}:
3430                      match w5:
3431                        case WCon{False{}, w6}:
3432                          match w6:
3433                            case WCon{False{}, w7}:
3434                              match w7:
3435                                case WCon{False{}, w8}:
3436                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3437                                case WCon{True{}, w8}:
3438                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3439                            case WCon{True{}, w7}:
3440                              match w7:
3441                                case WCon{False{}, w8}:
3442                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3443                                case WCon{True{}, w8}:
3444                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3445                        case WCon{True{}, w6}:
3446                          match w6:
3447                            case WCon{False{}, w7}:
3448                              match w7:
3449                                case WCon{False{}, w8}:
3450                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3451                                case WCon{True{}, w8}:
3452                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3453                            case WCon{True{}, w7}:
3454                              match w7:
3455                                case WCon{False{}, w8}:
3456                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3457                                case WCon{True{}, w8}:
3458                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3459                    case WCon{True{}, w5}:
3460                      match w5:
3461                        case WCon{False{}, w6}:
3462                          match w6:
3463                            case WCon{False{}, w7}:
3464                              match w7:
3465                                case WCon{False{}, w8}:
3466                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3467                                case WCon{True{}, w8}:
3468                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3469                            case WCon{True{}, w7}:
3470                              match w7:
3471                                case WCon{False{}, w8}:
3472                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3473                                case WCon{True{}, w8}:
3474                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3475                        case WCon{True{}, w6}:
3476                          match w6:
3477                            case WCon{False{}, w7}:
3478                              match w7:
3479                                case WCon{False{}, w8}:
3480                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3481                                case WCon{True{}, w8}:
3482                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3483                            case WCon{True{}, w7}:
3484                              match w7:
3485                                case WCon{False{}, w8}:
3486                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3487                                case WCon{True{}, w8}:
3488                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3489            case WCon{True{}, w3}:
3490              match w3:
3491                case WCon{False{}, w4}:
3492                  match w4:
3493                    case WCon{False{}, w5}:
3494                      match w5:
3495                        case WCon{False{}, w6}:
3496                          match w6:
3497                            case WCon{False{}, w7}:
3498                              match w7:
3499                                case WCon{False{}, w8}:
3500                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3501                                case WCon{True{}, w8}:
3502                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3503                            case WCon{True{}, w7}:
3504                              match w7:
3505                                case WCon{False{}, w8}:
3506                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3507                                case WCon{True{}, w8}:
3508                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3509                        case WCon{True{}, w6}:
3510                          match w6:
3511                            case WCon{False{}, w7}:
3512                              match w7:
3513                                case WCon{False{}, w8}:
3514                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3515                                case WCon{True{}, w8}:
3516                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3517                            case WCon{True{}, w7}:
3518                              match w7:
3519                                case WCon{False{}, w8}:
3520                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3521                                case WCon{True{}, w8}:
3522                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3523                    case WCon{True{}, w5}:
3524                      match w5:
3525                        case WCon{False{}, w6}:
3526                          match w6:
3527                            case WCon{False{}, w7}:
3528                              match w7:
3529                                case WCon{False{}, w8}:
3530                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3531                                case WCon{True{}, w8}:
3532                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3533                            case WCon{True{}, w7}:
3534                              match w7:
3535                                case WCon{False{}, w8}:
3536                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3537                                case WCon{True{}, w8}:
3538                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3539                        case WCon{True{}, w6}:
3540                          match w6:
3541                            case WCon{False{}, w7}:
3542                              match w7:
3543                                case WCon{False{}, w8}:
3544                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3545                                case WCon{True{}, w8}:
3546                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3547                            case WCon{True{}, w7}:
3548                              match w7:
3549                                case WCon{False{}, w8}:
3550                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3551                                case WCon{True{}, w8}:
3552                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3553                case WCon{True{}, w4}:
3554                  match w4:
3555                    case WCon{False{}, w5}:
3556                      match w5:
3557                        case WCon{False{}, w6}:
3558                          match w6:
3559                            case WCon{False{}, w7}:
3560                              match w7:
3561                                case WCon{False{}, w8}:
3562                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3563                                case WCon{True{}, w8}:
3564                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3565                            case WCon{True{}, w7}:
3566                              match w7:
3567                                case WCon{False{}, w8}:
3568                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3569                                case WCon{True{}, w8}:
3570                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3571                        case WCon{True{}, w6}:
3572                          match w6:
3573                            case WCon{False{}, w7}:
3574                              match w7:
3575                                case WCon{False{}, w8}:
3576                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3577                                case WCon{True{}, w8}:
3578                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3579                            case WCon{True{}, w7}:
3580                              match w7:
3581                                case WCon{False{}, w8}:
3582                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3583                                case WCon{True{}, w8}:
3584                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3585                    case WCon{True{}, w5}:
3586                      match w5:
3587                        case WCon{False{}, w6}:
3588                          match w6:
3589                            case WCon{False{}, w7}:
3590                              match w7:
3591                                case WCon{False{}, w8}:
3592                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3593                                case WCon{True{}, w8}:
3594                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3595                            case WCon{True{}, w7}:
3596                              match w7:
3597                                case WCon{False{}, w8}:
3598                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3599                                case WCon{True{}, w8}:
3600                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3601                        case WCon{True{}, w6}:
3602                          match w6:
3603                            case WCon{False{}, w7}:
3604                              match w7:
3605                                case WCon{False{}, w8}:
3606                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3607                                case WCon{True{}, w8}:
3608                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3609                            case WCon{True{}, w7}:
3610                              match w7:
3611                                case WCon{False{}, w8}:
3612                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3613                                case WCon{True{}, w8}:
3614                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3615    case WCon{True{}, w1}:
3616      match w1:
3617        case WCon{False{}, w2}:
3618          match w2:
3619            case WCon{False{}, w3}:
3620              match w3:
3621                case WCon{False{}, w4}:
3622                  match w4:
3623                    case WCon{False{}, w5}:
3624                      match w5:
3625                        case WCon{False{}, w6}:
3626                          match w6:
3627                            case WCon{False{}, w7}:
3628                              match w7:
3629                                case WCon{False{}, w8}:
3630                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3631                                case WCon{True{}, w8}:
3632                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3633                            case WCon{True{}, w7}:
3634                              match w7:
3635                                case WCon{False{}, w8}:
3636                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3637                                case WCon{True{}, w8}:
3638                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3639                        case WCon{True{}, w6}:
3640                          match w6:
3641                            case WCon{False{}, w7}:
3642                              match w7:
3643                                case WCon{False{}, w8}:
3644                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3645                                case WCon{True{}, w8}:
3646                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3647                            case WCon{True{}, w7}:
3648                              match w7:
3649                                case WCon{False{}, w8}:
3650                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3651                                case WCon{True{}, w8}:
3652                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3653                    case WCon{True{}, w5}:
3654                      match w5:
3655                        case WCon{False{}, w6}:
3656                          match w6:
3657                            case WCon{False{}, w7}:
3658                              match w7:
3659                                case WCon{False{}, w8}:
3660                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3661                                case WCon{True{}, w8}:
3662                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3663                            case WCon{True{}, w7}:
3664                              match w7:
3665                                case WCon{False{}, w8}:
3666                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3667                                case WCon{True{}, w8}:
3668                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3669                        case WCon{True{}, w6}:
3670                          match w6:
3671                            case WCon{False{}, w7}:
3672                              match w7:
3673                                case WCon{False{}, w8}:
3674                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3675                                case WCon{True{}, w8}:
3676                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3677                            case WCon{True{}, w7}:
3678                              match w7:
3679                                case WCon{False{}, w8}:
3680                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3681                                case WCon{True{}, w8}:
3682                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3683                case WCon{True{}, w4}:
3684                  match w4:
3685                    case WCon{False{}, w5}:
3686                      match w5:
3687                        case WCon{False{}, w6}:
3688                          match w6:
3689                            case WCon{False{}, w7}:
3690                              match w7:
3691                                case WCon{False{}, w8}:
3692                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3693                                case WCon{True{}, w8}:
3694                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3695                            case WCon{True{}, w7}:
3696                              match w7:
3697                                case WCon{False{}, w8}:
3698                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3699                                case WCon{True{}, w8}:
3700                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3701                        case WCon{True{}, w6}:
3702                          match w6:
3703                            case WCon{False{}, w7}:
3704                              match w7:
3705                                case WCon{False{}, w8}:
3706                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3707                                case WCon{True{}, w8}:
3708                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3709                            case WCon{True{}, w7}:
3710                              match w7:
3711                                case WCon{False{}, w8}:
3712                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3713                                case WCon{True{}, w8}:
3714                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3715                    case WCon{True{}, w5}:
3716                      match w5:
3717                        case WCon{False{}, w6}:
3718                          match w6:
3719                            case WCon{False{}, w7}:
3720                              match w7:
3721                                case WCon{False{}, w8}:
3722                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3723                                case WCon{True{}, w8}:
3724                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3725                            case WCon{True{}, w7}:
3726                              match w7:
3727                                case WCon{False{}, w8}:
3728                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3729                                case WCon{True{}, w8}:
3730                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3731                        case WCon{True{}, w6}:
3732                          match w6:
3733                            case WCon{False{}, w7}:
3734                              match w7:
3735                                case WCon{False{}, w8}:
3736                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3737                                case WCon{True{}, w8}:
3738                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3739                            case WCon{True{}, w7}:
3740                              match w7:
3741                                case WCon{False{}, w8}:
3742                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3743                                case WCon{True{}, w8}:
3744                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3745            case WCon{True{}, w3}:
3746              match w3:
3747                case WCon{False{}, w4}:
3748                  match w4:
3749                    case WCon{False{}, w5}:
3750                      match w5:
3751                        case WCon{False{}, w6}:
3752                          match w6:
3753                            case WCon{False{}, w7}:
3754                              match w7:
3755                                case WCon{False{}, w8}:
3756                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3757                                case WCon{True{}, w8}:
3758                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3759                            case WCon{True{}, w7}:
3760                              match w7:
3761                                case WCon{False{}, w8}:
3762                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3763                                case WCon{True{}, w8}:
3764                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3765                        case WCon{True{}, w6}:
3766                          match w6:
3767                            case WCon{False{}, w7}:
3768                              match w7:
3769                                case WCon{False{}, w8}:
3770                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3771                                case WCon{True{}, w8}:
3772                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3773                            case WCon{True{}, w7}:
3774                              match w7:
3775                                case WCon{False{}, w8}:
3776                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3777                                case WCon{True{}, w8}:
3778                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3779                    case WCon{True{}, w5}:
3780                      match w5:
3781                        case WCon{False{}, w6}:
3782                          match w6:
3783                            case WCon{False{}, w7}:
3784                              match w7:
3785                                case WCon{False{}, w8}:
3786                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3787                                case WCon{True{}, w8}:
3788                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3789                            case WCon{True{}, w7}:
3790                              match w7:
3791                                case WCon{False{}, w8}:
3792                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3793                                case WCon{True{}, w8}:
3794                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3795                        case WCon{True{}, w6}:
3796                          match w6:
3797                            case WCon{False{}, w7}:
3798                              match w7:
3799                                case WCon{False{}, w8}:
3800                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3801                                case WCon{True{}, w8}:
3802                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3803                            case WCon{True{}, w7}:
3804                              match w7:
3805                                case WCon{False{}, w8}:
3806                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3807                                case WCon{True{}, w8}:
3808                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3809                case WCon{True{}, w4}:
3810                  match w4:
3811                    case WCon{False{}, w5}:
3812                      match w5:
3813                        case WCon{False{}, w6}:
3814                          match w6:
3815                            case WCon{False{}, w7}:
3816                              match w7:
3817                                case WCon{False{}, w8}:
3818                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3819                                case WCon{True{}, w8}:
3820                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3821                            case WCon{True{}, w7}:
3822                              match w7:
3823                                case WCon{False{}, w8}:
3824                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3825                                case WCon{True{}, w8}:
3826                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3827                        case WCon{True{}, w6}:
3828                          match w6:
3829                            case WCon{False{}, w7}:
3830                              match w7:
3831                                case WCon{False{}, w8}:
3832                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3833                                case WCon{True{}, w8}:
3834                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3835                            case WCon{True{}, w7}:
3836                              match w7:
3837                                case WCon{False{}, w8}:
3838                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3839                                case WCon{True{}, w8}:
3840                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3841                    case WCon{True{}, w5}:
3842                      match w5:
3843                        case WCon{False{}, w6}:
3844                          match w6:
3845                            case WCon{False{}, w7}:
3846                              match w7:
3847                                case WCon{False{}, w8}:
3848                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3849                                case WCon{True{}, w8}:
3850                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3851                            case WCon{True{}, w7}:
3852                              match w7:
3853                                case WCon{False{}, w8}:
3854                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3855                                case WCon{True{}, w8}:
3856                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3857                        case WCon{True{}, w6}:
3858                          match w6:
3859                            case WCon{False{}, w7}:
3860                              match w7:
3861                                case WCon{False{}, w8}:
3862                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3863                                case WCon{True{}, w8}:
3864                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3865                            case WCon{True{}, w7}:
3866                              match w7:
3867                                case WCon{False{}, w8}:
3868                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3869                                case WCon{True{}, w8}:
3870                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3871        case WCon{True{}, w2}:
3872          match w2:
3873            case WCon{False{}, w3}:
3874              match w3:
3875                case WCon{False{}, w4}:
3876                  match w4:
3877                    case WCon{False{}, w5}:
3878                      match w5:
3879                        case WCon{False{}, w6}:
3880                          match w6:
3881                            case WCon{False{}, w7}:
3882                              match w7:
3883                                case WCon{False{}, w8}:
3884                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3885                                case WCon{True{}, w8}:
3886                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3887                            case WCon{True{}, w7}:
3888                              match w7:
3889                                case WCon{False{}, w8}:
3890                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3891                                case WCon{True{}, w8}:
3892                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3893                        case WCon{True{}, w6}:
3894                          match w6:
3895                            case WCon{False{}, w7}:
3896                              match w7:
3897                                case WCon{False{}, w8}:
3898                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3899                                case WCon{True{}, w8}:
3900                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3901                            case WCon{True{}, w7}:
3902                              match w7:
3903                                case WCon{False{}, w8}:
3904                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3905                                case WCon{True{}, w8}:
3906                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3907                    case WCon{True{}, w5}:
3908                      match w5:
3909                        case WCon{False{}, w6}:
3910                          match w6:
3911                            case WCon{False{}, w7}:
3912                              match w7:
3913                                case WCon{False{}, w8}:
3914                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3915                                case WCon{True{}, w8}:
3916                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3917                            case WCon{True{}, w7}:
3918                              match w7:
3919                                case WCon{False{}, w8}:
3920                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3921                                case WCon{True{}, w8}:
3922                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3923                        case WCon{True{}, w6}:
3924                          match w6:
3925                            case WCon{False{}, w7}:
3926                              match w7:
3927                                case WCon{False{}, w8}:
3928                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3929                                case WCon{True{}, w8}:
3930                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3931                            case WCon{True{}, w7}:
3932                              match w7:
3933                                case WCon{False{}, w8}:
3934                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3935                                case WCon{True{}, w8}:
3936                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3937                case WCon{True{}, w4}:
3938                  match w4:
3939                    case WCon{False{}, w5}:
3940                      match w5:
3941                        case WCon{False{}, w6}:
3942                          match w6:
3943                            case WCon{False{}, w7}:
3944                              match w7:
3945                                case WCon{False{}, w8}:
3946                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3947                                case WCon{True{}, w8}:
3948                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3949                            case WCon{True{}, w7}:
3950                              match w7:
3951                                case WCon{False{}, w8}:
3952                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3953                                case WCon{True{}, w8}:
3954                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3955                        case WCon{True{}, w6}:
3956                          match w6:
3957                            case WCon{False{}, w7}:
3958                              match w7:
3959                                case WCon{False{}, w8}:
3960                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3961                                case WCon{True{}, w8}:
3962                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3963                            case WCon{True{}, w7}:
3964                              match w7:
3965                                case WCon{False{}, w8}:
3966                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3967                                case WCon{True{}, w8}:
3968                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3969                    case WCon{True{}, w5}:
3970                      match w5:
3971                        case WCon{False{}, w6}:
3972                          match w6:
3973                            case WCon{False{}, w7}:
3974                              match w7:
3975                                case WCon{False{}, w8}:
3976                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3977                                case WCon{True{}, w8}:
3978                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3979                            case WCon{True{}, w7}:
3980                              match w7:
3981                                case WCon{False{}, w8}:
3982                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3983                                case WCon{True{}, w8}:
3984                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3985                        case WCon{True{}, w6}:
3986                          match w6:
3987                            case WCon{False{}, w7}:
3988                              match w7:
3989                                case WCon{False{}, w8}:
3990                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3991                                case WCon{True{}, w8}:
3992                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3993                            case WCon{True{}, w7}:
3994                              match w7:
3995                                case WCon{False{}, w8}:
3996                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3997                                case WCon{True{}, w8}:
3998                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3999            case WCon{True{}, w3}:
4000              match w3:
4001                case WCon{False{}, w4}:
4002                  match w4:
4003                    case WCon{False{}, w5}:
4004                      match w5:
4005                        case WCon{False{}, w6}:
4006                          match w6:
4007                            case WCon{False{}, w7}:
4008                              match w7:
4009                                case WCon{False{}, w8}:
4010                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
4011                                case WCon{True{}, w8}:
4012                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
4013                            case WCon{True{}, w7}:
4014                              match w7:
4015                                case WCon{False{}, w8}:
4016                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
4017                                case WCon{True{}, w8}:
4018                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
4019                        case WCon{True{}, w6}:
4020                          match w6:
4021                            case WCon{False{}, w7}:
4022                              match w7:
4023                                case WCon{False{}, w8}:
4024                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
4025                                case WCon{True{}, w8}:
4026                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
4027                            case WCon{True{}, w7}:
4028                              match w7:
4029                                case WCon{False{}, w8}:
4030                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
4031                                case WCon{True{}, w8}:
4032                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
4033                    case WCon{True{}, w5}:
4034                      match w5:
4035                        case WCon{False{}, w6}:
4036                          match w6:
4037                            case WCon{False{}, w7}:
4038                              match w7:
4039                                case WCon{False{}, w8}:
4040                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
4041                                case WCon{True{}, w8}:
4042                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
4043                            case WCon{True{}, w7}:
4044                              match w7:
4045                                case WCon{False{}, w8}:
4046                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
4047                                case WCon{True{}, w8}:
4048                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
4049                        case WCon{True{}, w6}:
4050                          match w6:
4051                            case WCon{False{}, w7}:
4052                              match w7:
4053                                case WCon{False{}, w8}:
4054                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
4055                                case WCon{True{}, w8}:
4056                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
4057                            case WCon{True{}, w7}:
4058                              match w7:
4059                                case WCon{False{}, w8}:
4060                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
4061                                case WCon{True{}, w8}:
4062                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
4063                case WCon{True{}, w4}:
4064                  match w4:
4065                    case WCon{False{}, w5}:
4066                      match w5:
4067                        case WCon{False{}, w6}:
4068                          match w6:
4069                            case WCon{False{}, w7}:
4070                              match w7:
4071                                case WCon{False{}, w8}:
4072                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
4073                                case WCon{True{}, w8}:
4074                                  WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
4075                            case WCon{True{}, w7}:
4076                              match w7:
4077                                case WCon{False{}, w8}:
4078                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
4079                                case WCon{True{}, w8}:
4080                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
4081                        case WCon{True{}, w6}:
4082                          match w6:
4083                            case WCon{False{}, w7}:
4084                              match w7:
4085                                case WCon{False{}, w8}:
4086                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
4087                                case WCon{True{}, w8}:
4088                                  WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
4089                            case WCon{True{}, w7}:
4090                              match w7:
4091                                case WCon{False{}, w8}:
4092                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
4093                                case WCon{True{}, w8}:
4094                                  WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
4095                    case WCon{True{}, w5}:
4096                      match w5:
4097                        case WCon{False{}, w6}:
4098                          match w6:
4099                            case WCon{False{}, w7}:
4100                              match w7:
4101                                case WCon{False{}, w8}:
4102                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
4103                                case WCon{True{}, w8}:
4104                                  WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
4105                            case WCon{True{}, w7}:
4106                              match w7:
4107                                case WCon{False{}, w8}:
4108                                  WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
4109                                case WCon{True{}, w8}:
4110                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
4111                        case WCon{True{}, w6}:
4112                          match w6:
4113                            case WCon{False{}, w7}:
4114                              match w7:
4115                                case WCon{False{}, w8}:
4116                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
4117                                case WCon{True{}, w8}:
4118                                  WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
4119                            case WCon{True{}, w7}:
4120                              match w7:
4121                                case WCon{False{}, w8}:
4122                                  WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
4123                                case WCon{True{}, w8}:
4124                                  WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
4125# END GENERATED: sboxes
4126
4127# The state: the block's sixteen bytes, each as its eight bits, least
4128# significant first (internal)
4129type LcAriaSt is Data:
4130  LcAriaSt{b0: Word(8n), b1: Word(8n), b2: Word(8n), b3: Word(8n), b4: Word(8n), b5: Word(8n), b6: Word(8n), b7: Word(8n), b8: Word(8n), b9: Word(8n), b10: Word(8n), b11: Word(8n), b12: Word(8n), b13: Word(8n), b14: Word(8n), b15: Word(8n)}
4131
4132# BEGIN GENERATED by gen/tables.py: diffusion
4133# the steps: e<j> XORs byte b into each byte of its targets
4134def aria.e0(s: LcAriaSt) -> LcAriaSt:
4135  match s:
4136    case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, +x15}:
4137      LcAriaSt{x0, Word.xor(8n, x1, x15), Word.xor(8n, x2, x15), x3, Word.xor(8n, x4, x15), Word.xor(8n, x5, x15), x6, x7, Word.xor(8n, x8, x15), x9, Word.xor(8n, x10, x15), x11, x12, x13, x14, x15}
4138
4139def aria.e1(s: LcAriaSt) -> LcAriaSt:
4140  match s:
4141    case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, +x14, x15}:
4142      LcAriaSt{Word.xor(8n, x0, x14), x1, x2, Word.xor(8n, x3, x14), Word.xor(8n, x4, x14), Word.xor(8n, x5, x14), x6, x7, x8, Word.xor(8n, x9, x14), x10, Word.xor(8n, x11, x14), x12, x13, x14, x15}
4143
4144def aria.e2(s: LcAriaSt) -> LcAriaSt:
4145  match s:
4146    case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, +x13, x14, x15}:
4147      LcAriaSt{Word.xor(8n, x0, x13), x1, x2, Word.xor(8n, x3, x13), x4, x5, Word.xor(8n, x6, x13), Word.xor(8n, x7, x13), Word.xor(8n, x8, x13), x9, Word.xor(8n, x10, x13), x11, x12, x13, x14, x15}
4148
4149def aria.e3(s: LcAriaSt) -> LcAriaSt:
4150  match s:
4151    case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, +x12, x13, x14, x15}:
4152      LcAriaSt{x0, Word.xor(8n, x1, x12), Word.xor(8n, x2, x12), x3, x4, x5, Word.xor(8n, x6, x12), Word.xor(8n, x7, x12), x8, Word.xor(8n, x9, x12), x10, Word.xor(8n, x11, x12), x12, x13, x14, x15}
4153
4154def aria.e4(s: LcAriaSt) -> LcAriaSt:
4155  match s:
4156    case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, +x11, x12, x13, x14, x15}:
4157      LcAriaSt{Word.xor(8n, x0, x11), Word.xor(8n, x1, x11), Word.xor(8n, x2, x11), Word.xor(8n, x3, x11), Word.xor(8n, x4, x11), Word.xor(8n, x5, x11), Word.xor(8n, x6, x11), Word.xor(8n, x7, x11), x8, Word.xor(8n, x9, x11), x10, x11, x12, x13, x14, x15}
4158
4159def aria.e5(s: LcAriaSt) -> LcAriaSt:
4160  match s:
4161    case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, +x10, x11, x12, x13, x14, x15}:
4162      LcAriaSt{Word.xor(8n, x0, x10), Word.xor(8n, x1, x10), Word.xor(8n, x2, x10), Word.xor(8n, x3, x10), Word.xor(8n, x4, x10), Word.xor(8n, x5, x10), Word.xor(8n, x6, x10), Word.xor(8n, x7, x10), Word.xor(8n, x8, x10), x9, x10, x11, x12, x13, x14, x15}
4163
4164def aria.e6(s: LcAriaSt) -> LcAriaSt:
4165  match s:
4166    case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, +x9, x10, x11, x12, x13, x14, x15}:
4167      LcAriaSt{Word.xor(8n, x0, x9), Word.xor(8n, x1, x9), x2, x3, x4, Word.xor(8n, x5, x9), Word.xor(8n, x6, x9), x7, x8, x9, x10, Word.xor(8n, x11, x9), Word.xor(8n, x12, x9), x13, Word.xor(8n, x14, x9), x15}
4168
4169def aria.e7(s: LcAriaSt) -> LcAriaSt:
4170  match s:
4171    case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, +x11, x12, x13, x14, x15}:
4172      LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, Word.xor(8n, x9, x11), x10, x11, x12, x13, x14, x15}
4173
4174def aria.e8(s: LcAriaSt) -> LcAriaSt:
4175  match s:
4176    case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, +x8, x9, x10, x11, x12, x13, x14, x15}:
4177      LcAriaSt{Word.xor(8n, x0, x8), Word.xor(8n, x1, x8), x2, x3, Word.xor(8n, x4, x8), x5, x6, Word.xor(8n, x7, x8), x8, x9, Word.xor(8n, x10, x8), x11, x12, Word.xor(8n, x13, x8), x14, Word.xor(8n, x15, x8)}
4178
4179def aria.e9(s: LcAriaSt) -> LcAriaSt:
4180  match s:
4181    case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, +x10, x11, x12, x13, x14, x15}:
4182      LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, Word.xor(8n, x8, x10), x9, x10, x11, x12, x13, x14, x15}
4183
4184def aria.e10(s: LcAriaSt) -> LcAriaSt:
4185  match s:
4186    case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, +x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4187      LcAriaSt{Word.xor(8n, x0, x7), Word.xor(8n, x1, x7), Word.xor(8n, x2, x7), Word.xor(8n, x3, x7), x4, x5, Word.xor(8n, x6, x7), x7, Word.xor(8n, x8, x7), Word.xor(8n, x9, x7), Word.xor(8n, x10, x7), Word.xor(8n, x11, x7), x12, x13, x14, x15}
4188
4189def aria.e11(s: LcAriaSt) -> LcAriaSt:
4190  match s:
4191    case LcAriaSt{x0, x1, x2, x3, x4, x5, +x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4192      LcAriaSt{x0, Word.xor(8n, x1, x6), x2, Word.xor(8n, x3, x6), x4, x5, x6, Word.xor(8n, x7, x6), Word.xor(8n, x8, x6), x9, x10, Word.xor(8n, x11, x6), x12, x13, Word.xor(8n, x14, x6), Word.xor(8n, x15, x6)}
4193
4194def aria.e12(s: LcAriaSt) -> LcAriaSt:
4195  match s:
4196    case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, +x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4197      LcAriaSt{x0, x1, x2, x3, x4, x5, Word.xor(8n, x6, x7), x7, x8, x9, x10, x11, x12, x13, x14, x15}
4198
4199def aria.e13(s: LcAriaSt) -> LcAriaSt:
4200  match s:
4201    case LcAriaSt{x0, x1, x2, x3, x4, +x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4202      LcAriaSt{Word.xor(8n, x0, x5), Word.xor(8n, x1, x5), Word.xor(8n, x2, x5), Word.xor(8n, x3, x5), Word.xor(8n, x4, x5), x5, x6, x7, Word.xor(8n, x8, x5), Word.xor(8n, x9, x5), Word.xor(8n, x10, x5), Word.xor(8n, x11, x5), x12, x13, x14, x15}
4203
4204def aria.e14(s: LcAriaSt) -> LcAriaSt:
4205  match s:
4206    case LcAriaSt{x0, x1, x2, x3, +x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4207      LcAriaSt{x0, Word.xor(8n, x1, x4), x2, Word.xor(8n, x3, x4), x4, Word.xor(8n, x5, x4), x6, x7, x8, Word.xor(8n, x9, x4), Word.xor(8n, x10, x4), x11, Word.xor(8n, x12, x4), Word.xor(8n, x13, x4), x14, x15}
4208
4209def aria.e15(s: LcAriaSt) -> LcAriaSt:
4210  match s:
4211    case LcAriaSt{x0, x1, x2, x3, x4, +x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4212      LcAriaSt{x0, x1, x2, x3, Word.xor(8n, x4, x5), x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}
4213
4214def aria.e16(s: LcAriaSt) -> LcAriaSt:
4215  match s:
4216    case LcAriaSt{x0, x1, x2, +x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4217      LcAriaSt{Word.xor(8n, x0, x3), x1, x2, x3, Word.xor(8n, x4, x3), Word.xor(8n, x5, x3), Word.xor(8n, x6, x3), Word.xor(8n, x7, x3), Word.xor(8n, x8, x3), Word.xor(8n, x9, x3), Word.xor(8n, x10, x3), Word.xor(8n, x11, x3), x12, x13, x14, x15}
4218
4219def aria.e17(s: LcAriaSt) -> LcAriaSt:
4220  match s:
4221    case LcAriaSt{x0, x1, +x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4222      LcAriaSt{x0, Word.xor(8n, x1, x2), x2, x3, Word.xor(8n, x4, x2), Word.xor(8n, x5, x2), Word.xor(8n, x6, x2), Word.xor(8n, x7, x2), Word.xor(8n, x8, x2), Word.xor(8n, x9, x2), Word.xor(8n, x10, x2), Word.xor(8n, x11, x2), x12, x13, x14, x15}
4223
4224def aria.e18(s: LcAriaSt) -> LcAriaSt:
4225  match s:
4226    case LcAriaSt{x0, +x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4227      LcAriaSt{x0, x1, Word.xor(8n, x2, x1), x3, x4, Word.xor(8n, x5, x1), x6, Word.xor(8n, x7, x1), Word.xor(8n, x8, x1), Word.xor(8n, x9, x1), x10, x11, Word.xor(8n, x12, x1), x13, x14, Word.xor(8n, x15, x1)}
4228
4229def aria.e19(s: LcAriaSt) -> LcAriaSt:
4230  match s:
4231    case LcAriaSt{x0, x1, +x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4232      LcAriaSt{x0, Word.xor(8n, x1, x2), x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}
4233
4234def aria.e20(s: LcAriaSt) -> LcAriaSt:
4235  match s:
4236    case LcAriaSt{+x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4237      LcAriaSt{x0, x1, x2, Word.xor(8n, x3, x0), Word.xor(8n, x4, x0), x5, Word.xor(8n, x6, x0), x7, Word.xor(8n, x8, x0), Word.xor(8n, x9, x0), x10, x11, x12, Word.xor(8n, x13, x0), Word.xor(8n, x14, x0), x15}
4238
4239def aria.e21(s: LcAriaSt) -> LcAriaSt:
4240  match s:
4241    case LcAriaSt{x0, x1, x2, +x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4242      LcAriaSt{Word.xor(8n, x0, x3), x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}
4243
4244# d<j>: the first j steps; u<j>: them undone, last first
4245def aria.d0(s: LcAriaSt) -> LcAriaSt:
4246  s
4247
4248def aria.u0(s: LcAriaSt) -> LcAriaSt:
4249  s
4250
4251def aria.d1(s: LcAriaSt) -> LcAriaSt:
4252  aria.e0(aria.d0(s))
4253
4254def aria.u1(s: LcAriaSt) -> LcAriaSt:
4255  aria.u0(aria.e0(s))
4256
4257def aria.d2(s: LcAriaSt) -> LcAriaSt:
4258  aria.e1(aria.d1(s))
4259
4260def aria.u2(s: LcAriaSt) -> LcAriaSt:
4261  aria.u1(aria.e1(s))
4262
4263def aria.d3(s: LcAriaSt) -> LcAriaSt:
4264  aria.e2(aria.d2(s))
4265
4266def aria.u3(s: LcAriaSt) -> LcAriaSt:
4267  aria.u2(aria.e2(s))
4268
4269def aria.d4(s: LcAriaSt) -> LcAriaSt:
4270  aria.e3(aria.d3(s))
4271
4272def aria.u4(s: LcAriaSt) -> LcAriaSt:
4273  aria.u3(aria.e3(s))
4274
4275def aria.d5(s: LcAriaSt) -> LcAriaSt:
4276  aria.e4(aria.d4(s))
4277
4278def aria.u5(s: LcAriaSt) -> LcAriaSt:
4279  aria.u4(aria.e4(s))
4280
4281def aria.d6(s: LcAriaSt) -> LcAriaSt:
4282  aria.e5(aria.d5(s))
4283
4284def aria.u6(s: LcAriaSt) -> LcAriaSt:
4285  aria.u5(aria.e5(s))
4286
4287def aria.d7(s: LcAriaSt) -> LcAriaSt:
4288  aria.e6(aria.d6(s))
4289
4290def aria.u7(s: LcAriaSt) -> LcAriaSt:
4291  aria.u6(aria.e6(s))
4292
4293def aria.d8(s: LcAriaSt) -> LcAriaSt:
4294  aria.e7(aria.d7(s))
4295
4296def aria.u8(s: LcAriaSt) -> LcAriaSt:
4297  aria.u7(aria.e7(s))
4298
4299def aria.d9(s: LcAriaSt) -> LcAriaSt:
4300  aria.e8(aria.d8(s))
4301
4302def aria.u9(s: LcAriaSt) -> LcAriaSt:
4303  aria.u8(aria.e8(s))
4304
4305def aria.d10(s: LcAriaSt) -> LcAriaSt:
4306  aria.e9(aria.d9(s))
4307
4308def aria.u10(s: LcAriaSt) -> LcAriaSt:
4309  aria.u9(aria.e9(s))
4310
4311def aria.d11(s: LcAriaSt) -> LcAriaSt:
4312  aria.e10(aria.d10(s))
4313
4314def aria.u11(s: LcAriaSt) -> LcAriaSt:
4315  aria.u10(aria.e10(s))
4316
4317def aria.d12(s: LcAriaSt) -> LcAriaSt:
4318  aria.e11(aria.d11(s))
4319
4320def aria.u12(s: LcAriaSt) -> LcAriaSt:
4321  aria.u11(aria.e11(s))
4322
4323def aria.d13(s: LcAriaSt) -> LcAriaSt:
4324  aria.e12(aria.d12(s))
4325
4326def aria.u13(s: LcAriaSt) -> LcAriaSt:
4327  aria.u12(aria.e12(s))
4328
4329def aria.d14(s: LcAriaSt) -> LcAriaSt:
4330  aria.e13(aria.d13(s))
4331
4332def aria.u14(s: LcAriaSt) -> LcAriaSt:
4333  aria.u13(aria.e13(s))
4334
4335def aria.d15(s: LcAriaSt) -> LcAriaSt:
4336  aria.e14(aria.d14(s))
4337
4338def aria.u15(s: LcAriaSt) -> LcAriaSt:
4339  aria.u14(aria.e14(s))
4340
4341def aria.d16(s: LcAriaSt) -> LcAriaSt:
4342  aria.e15(aria.d15(s))
4343
4344def aria.u16(s: LcAriaSt) -> LcAriaSt:
4345  aria.u15(aria.e15(s))
4346
4347def aria.d17(s: LcAriaSt) -> LcAriaSt:
4348  aria.e16(aria.d16(s))
4349
4350def aria.u17(s: LcAriaSt) -> LcAriaSt:
4351  aria.u16(aria.e16(s))
4352
4353def aria.d18(s: LcAriaSt) -> LcAriaSt:
4354  aria.e17(aria.d17(s))
4355
4356def aria.u18(s: LcAriaSt) -> LcAriaSt:
4357  aria.u17(aria.e17(s))
4358
4359def aria.d19(s: LcAriaSt) -> LcAriaSt:
4360  aria.e18(aria.d18(s))
4361
4362def aria.u19(s: LcAriaSt) -> LcAriaSt:
4363  aria.u18(aria.e18(s))
4364
4365def aria.d20(s: LcAriaSt) -> LcAriaSt:
4366  aria.e19(aria.d19(s))
4367
4368def aria.u20(s: LcAriaSt) -> LcAriaSt:
4369  aria.u19(aria.e19(s))
4370
4371def aria.d21(s: LcAriaSt) -> LcAriaSt:
4372  aria.e20(aria.d20(s))
4373
4374def aria.u21(s: LcAriaSt) -> LcAriaSt:
4375  aria.u20(aria.e20(s))
4376
4377def aria.d22(s: LcAriaSt) -> LcAriaSt:
4378  aria.e21(aria.d21(s))
4379
4380def aria.u22(s: LcAriaSt) -> LcAriaSt:
4381  aria.u21(aria.e21(s))
4382
4383# A, and A undone (22 steps)
4384def aria.diffuse(s: LcAriaSt) -> LcAriaSt:
4385  aria.d22(s)
4386
4387def aria.undiffuse(s: LcAriaSt) -> LcAriaSt:
4388  aria.u22(s)
4389# END GENERATED: diffusion
4390
4391# The substitution layers SL1 (SB1, SB2, SB3, SB4 in turn) and SL2 (SB3,
4392# SB4, SB1, SB2)
4393def aria.sl1(s: LcAriaSt) -> LcAriaSt:
4394  match s:
4395    case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4396      LcAriaSt{aria.sb1(x0), aria.sb2(x1), aria.sb3(x2), aria.sb4(x3), aria.sb1(x4), aria.sb2(x5), aria.sb3(x6), aria.sb4(x7), aria.sb1(x8), aria.sb2(x9), aria.sb3(x10), aria.sb4(x11), aria.sb1(x12), aria.sb2(x13), aria.sb3(x14), aria.sb4(x15)}
4397
4398def aria.sl2(s: LcAriaSt) -> LcAriaSt:
4399  match s:
4400    case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4401      LcAriaSt{aria.sb3(x0), aria.sb4(x1), aria.sb1(x2), aria.sb2(x3), aria.sb3(x4), aria.sb4(x5), aria.sb1(x6), aria.sb2(x7), aria.sb3(x8), aria.sb4(x9), aria.sb1(x10), aria.sb2(x11), aria.sb3(x12), aria.sb4(x13), aria.sb1(x14), aria.sb2(x15)}
4402
4403# Blocks and states: a word's bytes, most significant first, by bit slicing
4404
4405def aria.byte0(x: Word(32n)) -> Word(8n):
4406  W.W64.bits.hi(8n, 8n, W.W64.bits.hi(8n, 16n, W.W64.bits.hi(8n, 24n, x)))
4407
4408def aria.byte1(x: Word(32n)) -> Word(8n):
4409  W.W64.bits.lo(8n, 8n, W.W64.bits.hi(8n, 16n, W.W64.bits.hi(8n, 24n, x)))
4410
4411def aria.byte2(x: Word(32n)) -> Word(8n):
4412  W.W64.bits.lo(8n, 16n, W.W64.bits.hi(8n, 24n, x))
4413
4414def aria.byte3(x: Word(32n)) -> Word(8n):
4415  W.W64.bits.lo(8n, 24n, x)
4416
4417# the word with bytes a (most significant), b, c, d
4418def aria.word(a: Word(8n), b: Word(8n), c: Word(8n), d: Word(8n)) -> U32:
4419  U32{W.W64.bits.cat(8n, 24n, d, W.W64.bits.cat(8n, 16n, c, W.W64.bits.cat(8n, 8n, b, a)))}
4420
4421# a word's four bytes (internal)
4422type LcAriaQ is Data:
4423  LcAriaQ{a: Word(8n), b: Word(8n), c: Word(8n), d: Word(8n)}
4424
4425def aria.quad(w: U32) -> LcAriaQ:
4426  match w:
4427    case U32{+x}:
4428      LcAriaQ{aria.byte0(x), aria.byte1(x), aria.byte2(x), aria.byte3(x)}
4429
4430def aria.of_quads(q0: LcAriaQ, q1: LcAriaQ, q2: LcAriaQ, q3: LcAriaQ) -> LcAriaSt:
4431  match q0 q1 q2 q3:
4432    case LcAriaQ{x0, x1, x2, x3} LcAriaQ{x4, x5, x6, x7} LcAriaQ{x8, x9, x10, x11} LcAriaQ{x12, x13, x14, x15}:
4433      LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}
4434
4435# four bytes XORed with the bytes of a round key's word
4436def aria.xq(x0: Word(8n), x1: Word(8n), x2: Word(8n), x3: Word(8n), w: U32) -> LcAriaQ:
4437  match w:
4438    case U32{+k}:
4439      LcAriaQ{Word.xor(8n, x0, aria.byte0(k)), Word.xor(8n, x1, aria.byte1(k)), Word.xor(8n, x2, aria.byte2(k)), Word.xor(8n, x3, aria.byte3(k))}
4440
4441# The state XORed with a round key, kept as a block (a word at a time: Bend's
4442# C backend takes at most 247 live one-word values, and a state is 128 bits)
4443def aria.xor(s: LcAriaSt, k: M.CmBlock) -> LcAriaSt:
4444  match s k:
4445    case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15} M.CmBlock{w0, w1, w2, w3}:
4446      aria.of_quads(aria.xq(x0, x1, x2, x3, w0), aria.xq(x4, x5, x6, x7, w1), aria.xq(x8, x9, x10, x11, w2), aria.xq(x12, x13, x14, x15, w3))
4447
4448def aria.of_block(b: M.CmBlock) -> LcAriaSt:
4449  match b:
4450    case M.CmBlock{w0, w1, w2, w3}:
4451      aria.of_quads(aria.quad(w0), aria.quad(w1), aria.quad(w2), aria.quad(w3))
4452
4453def aria.to_block(s: LcAriaSt) -> M.CmBlock:
4454  match s:
4455    case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4456      M.CmBlock{aria.word(x0, x1, x2, x3), aria.word(x4, x5, x6, x7), aria.word(x8, x9, x10, x11), aria.word(x12, x13, x14, x15)}
4457
4458# The steps of the cipher (internal)
4459type LcAriaOp is Data:
4460  LcAriaRk{k: M.CmBlock}
4461  LcAriaSl1{}
4462  LcAriaSl2{}
4463  LcAriaDiff{}
4464
4465def aria.op(o: LcAriaOp, s: LcAriaSt) -> LcAriaSt:
4466  match o:
4467    case LcAriaRk{k}:
4468      aria.xor(s, k)
4469    case LcAriaSl1{}:
4470      aria.sl1(s)
4471    case LcAriaSl2{}:
4472      aria.sl2(s)
4473    case LcAriaDiff{}:
4474      aria.diffuse(s)
4475
4476def aria.unop(o: LcAriaOp, s: LcAriaSt) -> LcAriaSt:
4477  match o:
4478    case LcAriaRk{k}:
4479      aria.xor(s, k)
4480    case LcAriaSl1{}:
4481      aria.sl2(s)
4482    case LcAriaSl2{}:
4483      aria.sl1(s)
4484    case LcAriaDiff{}:
4485      aria.undiffuse(s)
4486
4487def aria.run(os: List<&2, LcAriaOp>, s: LcAriaSt) -> LcAriaSt:
4488  match os:
4489    case Nil{}:
4490      s
4491    case Con{o, t}:
4492      aria.run(t, aria.op(o, s))
4493
4494def aria.unrun(os: List<&2, LcAriaOp>, s: LcAriaSt) -> LcAriaSt:
4495  match os:
4496    case Nil{}:
4497      s
4498    case Con{o, t}:
4499      aria.unop(o, aria.unrun(t, s))
4500
4501# The key schedule (RFC 5794, 2.2), on blocks
4502
4503# C1, C2, C3: the fractional part of 1/pi
4504def aria.c(i: Nat) -> M.CmBlock:
4505  match i:
4506    case 0n:
4507      M.CmBlock{1367130551, 656542356, 4262702056, 4204424928}
4508    case 1n:
4509      M.CmBlock{1840335564, 2653014048, 4280857045, 4015907504}
4510    case _:
4511      M.CmBlock{3683792669, 556198256, 52729717, 82364686}
4512
4513def aria.fo(+d: M.CmBlock, +rk: M.CmBlock) -> M.CmBlock:
4514  aria.to_block(aria.diffuse(aria.sl1(aria.of_block(M.CmBlock.xor(d, rk)))))
4515
4516def aria.fe(+d: M.CmBlock, +rk: M.CmBlock) -> M.CmBlock:
4517  aria.to_block(aria.diffuse(aria.sl2(aria.of_block(M.CmBlock.xor(d, rk)))))
4518
4519# the 128-bit block rotated right by n bits (n below 128)
4520def aria.rotw(b: M.CmBlock) -> M.CmBlock:
4521  match b:
4522    case M.CmBlock{a, c, d, e}:
4523      M.CmBlock{e, a, c, d}
4524
4525def aria.rotw.n(n: Nat, b: M.CmBlock) -> M.CmBlock:
4526  match n:
4527    case 0n:
4528      b
4529    case 1n+p:
4530      aria.rotw.n(p, aria.rotw(b))
4531
4532def aria.rotb(+r: Nat, b: M.CmBlock) -> M.CmBlock:
4533  match b:
4534    case M.CmBlock{+a, +c, +d, +e}:
4535      +l = Nat.sub(32n, r)
4536      M.CmBlock{U32.or(U32.shrn(a, r), U32.shln(e, l)), U32.or(U32.shrn(c, r), U32.shln(a, l)), U32.or(U32.shrn(d, r), U32.shln(c, l)), U32.or(U32.shrn(e, r), U32.shln(d, l))}
4537
4538def aria.rotr(+n: Nat, b: M.CmBlock) -> M.CmBlock:
4539  aria.rotb(Nat.mod(n, 32n), aria.rotw.n(Nat.div(n, 32n), b))
4540
4541# the four rotated round keys of one rotation: W0 xor (W1 >>> r), ...
4542def aria.ek4(+r: Nat, +w0: M.CmBlock, +w1: M.CmBlock, +w2: M.CmBlock, +w3: M.CmBlock) -> List<&2, M.CmBlock>:
4543  [M.CmBlock.xor(w0, aria.rotr(r, w1)), M.CmBlock.xor(w1, aria.rotr(r, w2)), M.CmBlock.xor(w2, aria.rotr(r, w3)), M.CmBlock.xor(aria.rotr(r, w0), w3)]
4544
4545def aria.append(xs: List<&2, M.CmBlock>, ys: List<&2, M.CmBlock>) -> List<&2, M.CmBlock>:
4546  match xs:
4547    case Nil{}:
4548      ys
4549    case Con{h, t}:
4550      Con{h, aria.append(t, ys)}
4551
4552# ek1 .. ek17 from W0 .. W3 (>>> 19, >>> 31, <<< 61, <<< 31, <<< 19)
4553def aria.eks(+w0: M.CmBlock, +w1: M.CmBlock, +w2: M.CmBlock, +w3: M.CmBlock) -> List<&2, M.CmBlock>:
4554  aria.append(aria.ek4(19n, w0, w1, w2, w3), aria.append(aria.ek4(31n, w0, w1, w2, w3), aria.append(aria.ek4(67n, w0, w1, w2, w3), aria.append(aria.ek4(97n, w0, w1, w2, w3), [M.CmBlock.xor(w0, aria.rotr(109n, w1))]))))
4555
4556# the steps of the rounds from round i (odd True for odd rounds), n rounds
4557# but the last left, round keys eks
4558def aria.ops(n: Nat, eks: List<&2, M.CmBlock>, odd: Bool) -> List<&2, LcAriaOp>:
4559  match n eks:
4560    case 0n Con{k1, Con{k2, rest}}:
4561      [LcAriaRk{k1}, LcAriaSl2{}, LcAriaRk{k2}]
4562    case 1n+p Con{k, rest}:
4563      match odd:
4564        case True{}:
4565          Con{LcAriaRk{k}, Con{LcAriaSl1{}, Con{LcAriaDiff{}, aria.ops(p, rest, False{})}}}
4566        case False{}:
4567          Con{LcAriaRk{k}, Con{LcAriaSl2{}, Con{LcAriaDiff{}, aria.ops(p, rest, True{})}}}
4568    case _ _:
4569      Nil{}
4570
4571# a block of 16 bytes from offset i of xs
4572def aria.block(+xs: List<&2, U32>, +i: Nat) -> M.CmBlock:
4573  M.CmBlock{L.lc.be(L.lc.at(xs, i), L.lc.at(xs, Nat.add(i, 1n)), L.lc.at(xs, Nat.add(i, 2n)), L.lc.at(xs, Nat.add(i, 3n))), L.lc.be(L.lc.at(xs, Nat.add(i, 4n)), L.lc.at(xs, Nat.add(i, 5n)), L.lc.at(xs, Nat.add(i, 6n)), L.lc.at(xs, Nat.add(i, 7n))), L.lc.be(L.lc.at(xs, Nat.add(i, 8n)), L.lc.at(xs, Nat.add(i, 9n)), L.lc.at(xs, Nat.add(i, 10n)), L.lc.at(xs, Nat.add(i, 11n))), L.lc.be(L.lc.at(xs, Nat.add(i, 12n)), L.lc.at(xs, Nat.add(i, 13n)), L.lc.at(xs, Nat.add(i, 14n)), L.lc.at(xs, Nat.add(i, 15n)))}
4574
4575# W0 .. W3 and the round keys, for CK1, CK2, CK3 = C(c1), C(c2), C(c3)
4576def aria.ws(+kl: M.CmBlock, +kr: M.CmBlock, c1: Nat, c2: Nat, c3: Nat) -> List<&2, M.CmBlock>:
4577  +w1 = M.CmBlock.xor(aria.fo(kl, aria.c(c1)), kr)
4578  +w2 = M.CmBlock.xor(aria.fe(w1, aria.c(c2)), kl)
4579  +w3 = M.CmBlock.xor(aria.fo(w2, aria.c(c3)), w1)
4580  aria.eks(kl, w1, w2, w3)
4581
4582# An ARIA key: the steps of the cipher (opaque; built by LcAria.key)
4583type LcAriaKey is Data:
4584  LcAriaKey{ops: List<&2, LcAriaOp>}
4585
4586def aria.key(n16: Bool, n24: Bool, +xs: List<&2, U32>) -> LcAriaKey:
4587  match n16 n24:
4588    case True{} _:
4589      LcAriaKey{aria.ops(11n, aria.ws(aria.block(xs, 0n), aria.block(xs, 16n), 0n, 1n, 2n), True{})}
4590    case False{} True{}:
4591      LcAriaKey{aria.ops(13n, aria.ws(aria.block(xs, 0n), aria.block(xs, 16n), 1n, 2n, 0n), True{})}
4592    case False{} False{}:
4593      LcAriaKey{aria.ops(15n, aria.ws(aria.block(xs, 0n), aria.block(xs, 16n), 2n, 0n, 1n), True{})}
4594
4595def aria.key.pick(ok: Bool, n16: Bool, n24: Bool, +n: Nat, +xs: List<&2, U32>) -> Result<&2, &2, L.LcError, LcAriaKey>:
4596  match ok:
4597    case True{}:
4598      Done{aria.key(n16, n24, B.append(xs, B.zeros(Nat.sub(32n, n))))}
4599    case False{}:
4600      Fail{L.LcBadKeyLength{n}}
4601
4602# The cipher
4603
4604# a key of 16, 24 or 32 bytes (ARIA-128, -192, -256, by its length)
4605def LcAria.key(o: B.Octets) -> Result<&2, &2, L.LcError, LcAriaKey>:
4606  +xs = B.Octets.to_list(o)
4607  +n = B.len(xs)
4608  aria.key.pick(Bool.or(Nat.is_eq(n, 16n), Bool.or(Nat.is_eq(n, 24n), Nat.is_eq(n, 32n))), Nat.is_eq(n, 16n), Nat.is_eq(n, 24n), n, xs)
4609
4610def LcAria.encrypt(k: LcAriaKey, b: M.CmBlock) -> M.CmBlock:
4611  match k:
4612    case LcAriaKey{ops}:
4613      aria.to_block(aria.run(ops, aria.of_block(b)))
4614
4615def LcAria.decrypt(k: LcAriaKey, b: M.CmBlock) -> M.CmBlock:
4616  match k:
4617    case LcAriaKey{ops}:
4618      aria.to_block(aria.unrun(ops, aria.of_block(b)))