aboutsummaryrefslogtreecommitdiff
path: root/src/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils')
-rw-r--r--src/utils/constants.h442
1 files changed, 2 insertions, 440 deletions
diff --git a/src/utils/constants.h b/src/utils/constants.h
index d6d48cc..da0a813 100644
--- a/src/utils/constants.h
+++ b/src/utils/constants.h
@@ -9,6 +9,8 @@
9#define COMB_12_4 INT64_C(495) 9#define COMB_12_4 INT64_C(495)
10#define COMB_8_4 INT64_C(70) 10#define COMB_8_4 INT64_C(70)
11 11
12#define UINT8_ERROR UINT8_MAX
13
12STATIC int64_t binomial[12][12] = { 14STATIC int64_t binomial[12][12] = {
13 {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 15 {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
14 {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 16 {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
@@ -23,443 +25,3 @@ STATIC int64_t binomial[12][12] = {
23 {1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1, 0}, 25 {1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1, 0},
24 {1, 11, 55, 165, 330, 462, 462, 330, 165, 55, 11, 1}, 26 {1, 11, 55, 165, 330, 462, 462, 330, 165, 55, 11, 1},
25}; 27};
26
27#define MOVE_U UINT8_C(0)
28#define MOVE_U2 UINT8_C(1)
29#define MOVE_U3 UINT8_C(2)
30#define MOVE_D UINT8_C(3)
31#define MOVE_D2 UINT8_C(4)
32#define MOVE_D3 UINT8_C(5)
33#define MOVE_R UINT8_C(6)
34#define MOVE_R2 UINT8_C(7)
35#define MOVE_R3 UINT8_C(8)
36#define MOVE_L UINT8_C(9)
37#define MOVE_L2 UINT8_C(10)
38#define MOVE_L3 UINT8_C(11)
39#define MOVE_F UINT8_C(12)
40#define MOVE_F2 UINT8_C(13)
41#define MOVE_F3 UINT8_C(14)
42#define MOVE_B UINT8_C(15)
43#define MOVE_B2 UINT8_C(16)
44#define MOVE_B3 UINT8_C(17)
45
46#define MOVE_Uw UINT8_C(18)
47#define MOVE_Uw2 UINT8_C(19)
48#define MOVE_Uw3 UINT8_C(20)
49#define MOVE_Dw UINT8_C(21)
50#define MOVE_Dw2 UINT8_C(22)
51#define MOVE_Dw3 UINT8_C(23)
52#define MOVE_Rw UINT8_C(24)
53#define MOVE_Rw2 UINT8_C(25)
54#define MOVE_Rw3 UINT8_C(26)
55#define MOVE_Lw UINT8_C(27)
56#define MOVE_Lw2 UINT8_C(28)
57#define MOVE_Lw3 UINT8_C(29)
58#define MOVE_Fw UINT8_C(30)
59#define MOVE_Fw2 UINT8_C(31)
60#define MOVE_Fw3 UINT8_C(32)
61#define MOVE_Bw UINT8_C(33)
62#define MOVE_Bw2 UINT8_C(34)
63#define MOVE_Bw3 UINT8_C(35)
64
65#define MOVE_M UINT8_C(36)
66#define MOVE_M2 UINT8_C(37)
67#define MOVE_M3 UINT8_C(38)
68#define MOVE_S UINT8_C(39)
69#define MOVE_S2 UINT8_C(40)
70#define MOVE_S3 UINT8_C(41)
71#define MOVE_E UINT8_C(42)
72#define MOVE_E2 UINT8_C(43)
73#define MOVE_E3 UINT8_C(44)
74
75#define MOVE_x UINT8_C(45)
76#define MOVE_x2 UINT8_C(46)
77#define MOVE_x3 UINT8_C(47)
78#define MOVE_y UINT8_C(48)
79#define MOVE_y2 UINT8_C(49)
80#define MOVE_y3 UINT8_C(50)
81#define MOVE_z UINT8_C(51)
82#define MOVE_z2 UINT8_C(52)
83#define MOVE_z3 UINT8_C(53)
84
85#define TRANS_UFr UINT8_C(0)
86#define TRANS_ULr UINT8_C(1)
87#define TRANS_UBr UINT8_C(2)
88#define TRANS_URr UINT8_C(3)
89#define TRANS_DFr UINT8_C(4)
90#define TRANS_DLr UINT8_C(5)
91#define TRANS_DBr UINT8_C(6)
92#define TRANS_DRr UINT8_C(7)
93#define TRANS_RUr UINT8_C(8)
94#define TRANS_RFr UINT8_C(9)
95#define TRANS_RDr UINT8_C(10)
96#define TRANS_RBr UINT8_C(11)
97#define TRANS_LUr UINT8_C(12)
98#define TRANS_LFr UINT8_C(13)
99#define TRANS_LDr UINT8_C(14)
100#define TRANS_LBr UINT8_C(15)
101#define TRANS_FUr UINT8_C(16)
102#define TRANS_FRr UINT8_C(17)
103#define TRANS_FDr UINT8_C(18)
104#define TRANS_FLr UINT8_C(19)
105#define TRANS_BUr UINT8_C(20)
106#define TRANS_BRr UINT8_C(21)
107#define TRANS_BDr UINT8_C(22)
108#define TRANS_BLr UINT8_C(23)
109
110#define TRANS_UFm UINT8_C(24)
111#define TRANS_ULm UINT8_C(25)
112#define TRANS_UBm UINT8_C(26)
113#define TRANS_URm UINT8_C(27)
114#define TRANS_DFm UINT8_C(28)
115#define TRANS_DLm UINT8_C(29)
116#define TRANS_DBm UINT8_C(30)
117#define TRANS_DRm UINT8_C(31)
118#define TRANS_RUm UINT8_C(32)
119#define TRANS_RFm UINT8_C(33)
120#define TRANS_RDm UINT8_C(34)
121#define TRANS_RBm UINT8_C(35)
122#define TRANS_LUm UINT8_C(36)
123#define TRANS_LFm UINT8_C(37)
124#define TRANS_LDm UINT8_C(38)
125#define TRANS_LBm UINT8_C(39)
126#define TRANS_FUm UINT8_C(40)
127#define TRANS_FRm UINT8_C(41)
128#define TRANS_FDm UINT8_C(42)
129#define TRANS_FLm UINT8_C(43)
130#define TRANS_BUm UINT8_C(44)
131#define TRANS_BRm UINT8_C(45)
132#define TRANS_BDm UINT8_C(46)
133#define TRANS_BLm UINT8_C(47)
134
135#define AXIS_UD UINT8_C(0)
136#define AXIS_RL UINT8_C(1)
137#define AXIS_FB UINT8_C(2)
138
139#define NMOVES (1+MOVE_B3)
140#define NMOVES_EXTENDED (1+MOVE_z3)
141#define NTRANS (1+TRANS_BLm)
142
143#define MM_ALLMOVES UINT32_C(0x3FFFF)
144#define MM_NOHALFTURNS UINT32_C(0x2DB6D)
145#define MM_SINGLE(m) (UINT32_C(1) << (uint32_t)(m))
146#define MM_FACE(m) (UINT32_C(7) << (uint32_t)(m))
147#define MM_EO (\
148 MM_FACE(MOVE_U) | MM_FACE(MOVE_D) |\
149 MM_FACE(MOVE_R) | MM_FACE(MOVE_L) |\
150 MM_SINGLE(MOVE_F2) | MM_SINGLE(MOVE_B2))
151#define MM_DR (\
152 MM_FACE(MOVE_U) | MM_FACE(MOVE_D) |\
153 MM_SINGLE(MOVE_R2) | MM_SINGLE(MOVE_L2) |\
154 MM_SINGLE(MOVE_F2) | MM_SINGLE(MOVE_B2))
155#define MM_HTR (MM_ALLMOVES & ~MM_NOHALFTURNS)
156
157#define TM_ALLTRANS UINT64_C(0xFFFFFFFFFFFF)
158#define TM_SINGLE(t) (UINT64_C(1) << (uint64_t)(t))
159#define TM_UDRLFIX (\
160 TM_SINGLE(TRANS_UFr) | TM_SINGLE(TRANS_UBr) | TM_SINGLE(TRANS_UFm) | \
161 TM_SINGLE(TRANS_UBm) | TM_SINGLE(TRANS_DFr) | TM_SINGLE(TRANS_DBr) | \
162 TM_SINGLE(TRANS_DFm) | TM_SINGLE(TRANS_DBm))
163#define TM_UDFIX (\
164 TM_SINGLE(TRANS_UFr) | TM_SINGLE(TRANS_UBr) | TM_SINGLE(TRANS_URr) | \
165 TM_SINGLE(TRANS_ULr) | TM_SINGLE(TRANS_UFm) | TM_SINGLE(TRANS_UBm) | \
166 TM_SINGLE(TRANS_URm) | TM_SINGLE(TRANS_ULm) | TM_SINGLE(TRANS_DFr) | \
167 TM_SINGLE(TRANS_DBr) | TM_SINGLE(TRANS_DRr) | TM_SINGLE(TRANS_DLr) | \
168 TM_SINGLE(TRANS_DFm) | TM_SINGLE(TRANS_DBm) | TM_SINGLE(TRANS_DRm) | \
169 TM_SINGLE(TRANS_DLm))
170
171#define CORNER_UFR UINT8_C(0)
172#define CORNER_UBL UINT8_C(1)
173#define CORNER_DFL UINT8_C(2)
174#define CORNER_DBR UINT8_C(3)
175#define CORNER_UFL UINT8_C(4)
176#define CORNER_UBR UINT8_C(5)
177#define CORNER_DFR UINT8_C(6)
178#define CORNER_DBL UINT8_C(7)
179
180#define EDGE_UF UINT8_C(0)
181#define EDGE_UB UINT8_C(1)
182#define EDGE_DB UINT8_C(2)
183#define EDGE_DF UINT8_C(3)
184#define EDGE_UR UINT8_C(4)
185#define EDGE_UL UINT8_C(5)
186#define EDGE_DL UINT8_C(6)
187#define EDGE_DR UINT8_C(7)
188#define EDGE_FR UINT8_C(8)
189#define EDGE_FL UINT8_C(9)
190#define EDGE_BL UINT8_C(10)
191#define EDGE_BR UINT8_C(11)
192
193#define EOSHIFT UINT8_C(4)
194#define COSHIFT UINT8_C(5)
195
196#define PBITS UINT8_C(0xF)
197#define ESEPBIT_1 UINT8_C(0x4)
198#define ESEPBIT_2 UINT8_C(0x8)
199#define CSEPBIT UINT8_C(0x4)
200#define EOBIT UINT8_C(0x10)
201#define COBITS UINT8_C(0xF0)
202#define COBITS_2 UINT8_C(0x60)
203#define CTWIST_CW UINT8_C(0x20)
204#define CTWIST_CCW UINT8_C(0x40)
205#define EFLIP UINT8_C(0x10)
206#define UINT8_ERROR UINT8_MAX
207
208STATIC const uint32_t allowedmask[] = {
209 UINT32_C(0x3FFF8),
210 UINT32_C(0x3FFC0),
211 UINT32_C(0x3FE3F),
212 UINT32_C(0x3F03F),
213 UINT32_C(0x38FFF),
214 UINT32_C(0x00FFF)
215};
216
217STATIC const char *cornerstr[] = {
218 [CORNER_UFR] = "UFR",
219 [CORNER_UBL] = "UBL",
220 [CORNER_DFL] = "DFL",
221 [CORNER_DBR] = "DBR",
222 [CORNER_UFL] = "UFL",
223 [CORNER_UBR] = "UBR",
224 [CORNER_DFR] = "DFR",
225 [CORNER_DBL] = "DBL"
226};
227
228STATIC const char *cornerstralt[] = {
229 [CORNER_UFR] = "URF",
230 [CORNER_UBL] = "ULB",
231 [CORNER_DFL] = "DLF",
232 [CORNER_DBR] = "DRB",
233 [CORNER_UFL] = "ULF",
234 [CORNER_UBR] = "URB",
235 [CORNER_DFR] = "DRF",
236 [CORNER_DBL] = "DLB"
237};
238
239STATIC const char *edgestr[] = {
240 [EDGE_UF] = "UF",
241 [EDGE_UB] = "UB",
242 [EDGE_DB] = "DB",
243 [EDGE_DF] = "DF",
244 [EDGE_UR] = "UR",
245 [EDGE_UL] = "UL",
246 [EDGE_DL] = "DL",
247 [EDGE_DR] = "DR",
248 [EDGE_FR] = "FR",
249 [EDGE_FL] = "FL",
250 [EDGE_BL] = "BL",
251 [EDGE_BR] = "BR"
252};
253
254STATIC const char *movestr[] = {
255 [MOVE_U] = "U",
256 [MOVE_U2] = "U2",
257 [MOVE_U3] = "U'",
258 [MOVE_D] = "D",
259 [MOVE_D2] = "D2",
260 [MOVE_D3] = "D'",
261 [MOVE_R] = "R",
262 [MOVE_R2] = "R2",
263 [MOVE_R3] = "R'",
264 [MOVE_L] = "L",
265 [MOVE_L2] = "L2",
266 [MOVE_L3] = "L'",
267 [MOVE_F] = "F",
268 [MOVE_F2] = "F2",
269 [MOVE_F3] = "F'",
270 [MOVE_B] = "B",
271 [MOVE_B2] = "B2",
272 [MOVE_B3] = "B'",
273
274 [MOVE_Uw] = "Uw",
275 [MOVE_Uw2] = "Uw2",
276 [MOVE_Uw3] = "Uw'",
277 [MOVE_Dw] = "Dw",
278 [MOVE_Dw2] = "Dw2",
279 [MOVE_Dw3] = "Dw'",
280 [MOVE_Rw] = "Rw",
281 [MOVE_Rw2] = "Rw2",
282 [MOVE_Rw3] = "Rw'",
283 [MOVE_Lw] = "Lw",
284 [MOVE_Lw2] = "Lw2",
285 [MOVE_Lw3] = "Lw'",
286 [MOVE_Fw] = "Fw",
287 [MOVE_Fw2] = "Fw2",
288 [MOVE_Fw3] = "Fw'",
289 [MOVE_Bw] = "Bw",
290 [MOVE_Bw2] = "Bw2",
291 [MOVE_Bw3] = "Bw'",
292
293 [MOVE_M] = "M",
294 [MOVE_M2] = "M2",
295 [MOVE_M3] = "M'",
296 [MOVE_S] = "S",
297 [MOVE_S2] = "S2",
298 [MOVE_S3] = "S'",
299 [MOVE_E] = "E",
300 [MOVE_E2] = "E2",
301 [MOVE_E3] = "E'",
302
303 [MOVE_x] = "x",
304 [MOVE_x2] = "x2",
305 [MOVE_x3] = "x'",
306 [MOVE_y] = "y",
307 [MOVE_y2] = "y2",
308 [MOVE_y3] = "y'",
309 [MOVE_z] = "z",
310 [MOVE_z2] = "z2",
311 [MOVE_z3] = "z'",
312};
313
314STATIC const char *transstr[] = {
315 [TRANS_UFr] = "rotation UF",
316 [TRANS_UFm] = "mirrored UF",
317 [TRANS_ULr] = "rotation UL",
318 [TRANS_ULm] = "mirrored UL",
319 [TRANS_UBr] = "rotation UB",
320 [TRANS_UBm] = "mirrored UB",
321 [TRANS_URr] = "rotation UR",
322 [TRANS_URm] = "mirrored UR",
323 [TRANS_DFr] = "rotation DF",
324 [TRANS_DFm] = "mirrored DF",
325 [TRANS_DLr] = "rotation DL",
326 [TRANS_DLm] = "mirrored DL",
327 [TRANS_DBr] = "rotation DB",
328 [TRANS_DBm] = "mirrored DB",
329 [TRANS_DRr] = "rotation DR",
330 [TRANS_DRm] = "mirrored DR",
331 [TRANS_RUr] = "rotation RU",
332 [TRANS_RUm] = "mirrored RU",
333 [TRANS_RFr] = "rotation RF",
334 [TRANS_RFm] = "mirrored RF",
335 [TRANS_RDr] = "rotation RD",
336 [TRANS_RDm] = "mirrored RD",
337 [TRANS_RBr] = "rotation RB",
338 [TRANS_RBm] = "mirrored RB",
339 [TRANS_LUr] = "rotation LU",
340 [TRANS_LUm] = "mirrored LU",
341 [TRANS_LFr] = "rotation LF",
342 [TRANS_LFm] = "mirrored LF",
343 [TRANS_LDr] = "rotation LD",
344 [TRANS_LDm] = "mirrored LD",
345 [TRANS_LBr] = "rotation LB",
346 [TRANS_LBm] = "mirrored LB",
347 [TRANS_FUr] = "rotation FU",
348 [TRANS_FUm] = "mirrored FU",
349 [TRANS_FRr] = "rotation FR",
350 [TRANS_FRm] = "mirrored FR",
351 [TRANS_FDr] = "rotation FD",
352 [TRANS_FDm] = "mirrored FD",
353 [TRANS_FLr] = "rotation FL",
354 [TRANS_FLm] = "mirrored FL",
355 [TRANS_BUr] = "rotation BU",
356 [TRANS_BUm] = "mirrored BU",
357 [TRANS_BRr] = "rotation BR",
358 [TRANS_BRm] = "mirrored BR",
359 [TRANS_BDr] = "rotation BD",
360 [TRANS_BDm] = "mirrored BD",
361 [TRANS_BLr] = "rotation BL",
362 [TRANS_BLm] = "mirrored BL",
363};
364
365static uint8_t inverse_trans_table[48] = {
366 [TRANS_UFr] = TRANS_UFr,
367 [TRANS_UFm] = TRANS_UFm,
368 [TRANS_ULr] = TRANS_URr,
369 [TRANS_ULm] = TRANS_ULm,
370 [TRANS_UBr] = TRANS_UBr,
371 [TRANS_UBm] = TRANS_UBm,
372 [TRANS_URr] = TRANS_ULr,
373 [TRANS_URm] = TRANS_URm,
374 [TRANS_DFr] = TRANS_DFr,
375 [TRANS_DFm] = TRANS_DFm,
376 [TRANS_DLr] = TRANS_DLr,
377 [TRANS_DLm] = TRANS_DRm,
378 [TRANS_DBr] = TRANS_DBr,
379 [TRANS_DBm] = TRANS_DBm,
380 [TRANS_DRr] = TRANS_DRr,
381 [TRANS_DRm] = TRANS_DLm,
382 [TRANS_RUr] = TRANS_FRr,
383 [TRANS_RUm] = TRANS_FLm,
384 [TRANS_RFr] = TRANS_LFr,
385 [TRANS_RFm] = TRANS_RFm,
386 [TRANS_RDr] = TRANS_BLr,
387 [TRANS_RDm] = TRANS_BRm,
388 [TRANS_RBr] = TRANS_RBr,
389 [TRANS_RBm] = TRANS_LBm,
390 [TRANS_LUr] = TRANS_FLr,
391 [TRANS_LUm] = TRANS_FRm,
392 [TRANS_LFr] = TRANS_RFr,
393 [TRANS_LFm] = TRANS_LFm,
394 [TRANS_LDr] = TRANS_BRr,
395 [TRANS_LDm] = TRANS_BLm,
396 [TRANS_LBr] = TRANS_LBr,
397 [TRANS_LBm] = TRANS_RBm,
398 [TRANS_FUr] = TRANS_FUr,
399 [TRANS_FUm] = TRANS_FUm,
400 [TRANS_FRr] = TRANS_RUr,
401 [TRANS_FRm] = TRANS_LUm,
402 [TRANS_FDr] = TRANS_BUr,
403 [TRANS_FDm] = TRANS_BUm,
404 [TRANS_FLr] = TRANS_LUr,
405 [TRANS_FLm] = TRANS_RUm,
406 [TRANS_BUr] = TRANS_FDr,
407 [TRANS_BUm] = TRANS_FDm,
408 [TRANS_BRr] = TRANS_LDr,
409 [TRANS_BRm] = TRANS_RDm,
410 [TRANS_BDr] = TRANS_BDr,
411 [TRANS_BDm] = TRANS_BDm,
412 [TRANS_BLr] = TRANS_RDr,
413 [TRANS_BLm] = TRANS_LDm,
414};
415
416static uint8_t trans_move_table[48][3] = {
417 [TRANS_UFr] = { MOVE_U, MOVE_R, MOVE_F },
418 [TRANS_UFm] = { MOVE_U, MOVE_L, MOVE_F },
419 [TRANS_ULr] = { MOVE_U, MOVE_F, MOVE_L },
420 [TRANS_ULm] = { MOVE_U, MOVE_F, MOVE_R },
421 [TRANS_UBr] = { MOVE_U, MOVE_L, MOVE_B },
422 [TRANS_UBm] = { MOVE_U, MOVE_R, MOVE_B },
423 [TRANS_URr] = { MOVE_U, MOVE_B, MOVE_R },
424 [TRANS_URm] = { MOVE_U, MOVE_B, MOVE_L },
425 [TRANS_DFr] = { MOVE_D, MOVE_L, MOVE_F },
426 [TRANS_DFm] = { MOVE_D, MOVE_R, MOVE_F },
427 [TRANS_DLr] = { MOVE_D, MOVE_B, MOVE_L },
428 [TRANS_DLm] = { MOVE_D, MOVE_B, MOVE_R },
429 [TRANS_DBr] = { MOVE_D, MOVE_R, MOVE_B },
430 [TRANS_DBm] = { MOVE_D, MOVE_L, MOVE_B },
431 [TRANS_DRr] = { MOVE_D, MOVE_F, MOVE_R },
432 [TRANS_DRm] = { MOVE_D, MOVE_F, MOVE_L },
433 [TRANS_RUr] = { MOVE_R, MOVE_F, MOVE_U },
434 [TRANS_RUm] = { MOVE_L, MOVE_F, MOVE_U },
435 [TRANS_RFr] = { MOVE_R, MOVE_D, MOVE_F },
436 [TRANS_RFm] = { MOVE_L, MOVE_D, MOVE_F },
437 [TRANS_RDr] = { MOVE_R, MOVE_B, MOVE_D },
438 [TRANS_RDm] = { MOVE_L, MOVE_B, MOVE_D },
439 [TRANS_RBr] = { MOVE_R, MOVE_U, MOVE_B },
440 [TRANS_RBm] = { MOVE_L, MOVE_U, MOVE_B },
441 [TRANS_LUr] = { MOVE_L, MOVE_B, MOVE_U },
442 [TRANS_LUm] = { MOVE_R, MOVE_B, MOVE_U },
443 [TRANS_LFr] = { MOVE_L, MOVE_U, MOVE_F },
444 [TRANS_LFm] = { MOVE_R, MOVE_U, MOVE_F },
445 [TRANS_LDr] = { MOVE_L, MOVE_F, MOVE_D },
446 [TRANS_LDm] = { MOVE_R, MOVE_F, MOVE_D },
447 [TRANS_LBr] = { MOVE_L, MOVE_D, MOVE_B },
448 [TRANS_LBm] = { MOVE_R, MOVE_D, MOVE_B },
449 [TRANS_FUr] = { MOVE_F, MOVE_L, MOVE_U },
450 [TRANS_FUm] = { MOVE_F, MOVE_R, MOVE_U },
451 [TRANS_FRr] = { MOVE_F, MOVE_U, MOVE_R },
452 [TRANS_FRm] = { MOVE_F, MOVE_U, MOVE_L },
453 [TRANS_FDr] = { MOVE_F, MOVE_R, MOVE_D },
454 [TRANS_FDm] = { MOVE_F, MOVE_L, MOVE_D },
455 [TRANS_FLr] = { MOVE_F, MOVE_D, MOVE_L },
456 [TRANS_FLm] = { MOVE_F, MOVE_D, MOVE_R },
457 [TRANS_BUr] = { MOVE_B, MOVE_R, MOVE_U },
458 [TRANS_BUm] = { MOVE_B, MOVE_L, MOVE_U },
459 [TRANS_BRr] = { MOVE_B, MOVE_D, MOVE_R },
460 [TRANS_BRm] = { MOVE_B, MOVE_D, MOVE_L },
461 [TRANS_BDr] = { MOVE_B, MOVE_L, MOVE_D },
462 [TRANS_BDm] = { MOVE_B, MOVE_R, MOVE_D },
463 [TRANS_BLr] = { MOVE_B, MOVE_U, MOVE_L },
464 [TRANS_BLm] = { MOVE_B, MOVE_U, MOVE_R },
465};

Generated with cgit - Back to sebastiano.tronto.net