My Project
flip_carry_32.c
Go to the documentation of this file.
1
44#define LODWORD(l) ((unsigned int)(l))
45#define HIDWORD(l) ((unsigned int)((l)>>32))
46
48/* static const unsigned char OUTFLANK_0[64] = {
49 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x10, 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x20,
50 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x10, 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x40,
51 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x10, 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x20,
52 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x10, 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x80
53}; */
54
55/* static const unsigned char OUTFLANK_1[64] = {
56 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00,
57 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00,
58 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00,
59 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80, 0x00
60}; */
61
62static const unsigned char OUTFLANK_2[64] = {
63 0x00, 0x01, 0x00, 0x00, 0x10, 0x11, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x20, 0x21, 0x00, 0x00,
64 0x00, 0x01, 0x00, 0x00, 0x10, 0x11, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x41, 0x00, 0x00,
65 0x00, 0x01, 0x00, 0x00, 0x10, 0x11, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x20, 0x21, 0x00, 0x00,
66 0x00, 0x01, 0x00, 0x00, 0x10, 0x11, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x81, 0x00, 0x00
67};
68
69static const unsigned char OUTFLANK_3[64] = {
70 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x22, 0x21, 0x00, 0x00, 0x00, 0x00,
71 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x42, 0x41, 0x00, 0x00, 0x00, 0x00,
72 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x22, 0x21, 0x00, 0x00, 0x00, 0x00,
73 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x82, 0x81, 0x00, 0x00, 0x00, 0x00
74};
75
76static const unsigned char OUTFLANK_4[64] = {
77 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
78 0x40, 0x40, 0x40, 0x40, 0x44, 0x44, 0x42, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
79 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
80 0x80, 0x80, 0x80, 0x80, 0x84, 0x84, 0x82, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
81};
82
83static const unsigned char OUTFLANK_5[64] = {
84 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01,
85 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
86 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x88, 0x88, 0x88, 0x88, 0x84, 0x84, 0x82, 0x81,
87 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
88};
89
90/* static const unsigned char OUTFLANK_6[64] = {
91 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01,
93 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
95}; */
96
97static const unsigned char OUTFLANK_7[64] = {
98 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
101 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01
102};
103
105static const unsigned long long FLIPPED_2_H[130] = {
106 0x0000000000000000ULL, 0x0202020202020202ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
107 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
108 0x0808080808080808ULL, 0x0a0a0a0a0a0a0a0aULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
109 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
110 0x1818181818181818ULL, 0x1a1a1a1a1a1a1a1aULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
111 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
112 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
113 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
114 0x3838383838383838ULL, 0x3a3a3a3a3a3a3a3aULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
115 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
116 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
117 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
118 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
119 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
120 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
121 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
122 0x7878787878787878ULL, 0x7a7a7a7a7a7a7a7aULL
123};
124
125static const unsigned long long FLIPPED_3_H[131] = {
126 0x0000000000000000ULL, 0x0606060606060606ULL, 0x0404040404040404ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
127 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
128 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
129 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
130 0x1010101010101010ULL, 0x1616161616161616ULL, 0x1414141414141414ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
131 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
132 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
133 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
134 0x3030303030303030ULL, 0x3636363636363636ULL, 0x3434343434343434ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
135 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
136 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
137 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
138 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
139 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
140 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
141 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
142 0x7070707070707070ULL, 0x7676767676767676ULL, 0x7474747474747474ULL
143};
144
145static const unsigned long long FLIPPED_4_H[133] = {
146 0x0000000000000000ULL, 0x0e0e0e0e0e0e0e0eULL, 0x0c0c0c0c0c0c0c0cULL, 0x0000000000000000ULL, 0x0808080808080808ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
147 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
148 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
149 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
150 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
151 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
152 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
153 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
154 0x2020202020202020ULL, 0x2e2e2e2e2e2e2e2eULL, 0x2c2c2c2c2c2c2c2cULL, 0x0000000000000000ULL, 0x2828282828282828ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
155 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
156 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
157 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
158 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
159 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
160 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
161 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
162 0x6060606060606060ULL, 0x6e6e6e6e6e6e6e6eULL, 0x6c6c6c6c6c6c6c6cULL, 0x0000000000000000ULL, 0x6868686868686868ULL
163};
164
165static const unsigned long long FLIPPED_5_H[137] = {
166 0x0000000000000000ULL, 0x1e1e1e1e1e1e1e1eULL, 0x1c1c1c1c1c1c1c1cULL, 0x0000000000000000ULL, 0x1818181818181818ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
167 0x1010101010101010ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
168 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
169 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
170 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
171 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
172 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
173 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
174 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
175 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
176 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
177 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
178 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
179 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
180 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
181 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
182 0x4040404040404040ULL, 0x5e5e5e5e5e5e5e5eULL, 0x5c5c5c5c5c5c5c5cULL, 0x0000000000000000ULL, 0x5858585858585858ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
183 0x5050505050505050ULL
184};
185
186static const unsigned long long FLIPPED_2_V[130] = {
187 0x0000000000000000ULL, 0x000000000000ff00ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
188 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
189 0x00000000ff000000ULL, 0x00000000ff00ff00ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
190 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
191 0x000000ffff000000ULL, 0x000000ffff00ff00ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
192 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
193 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
194 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
195 0x0000ffffff000000ULL, 0x0000ffffff00ff00ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
196 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
197 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
198 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
199 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
200 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
201 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
202 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
203 0x00ffffffff000000ULL, 0x00ffffffff00ff00ULL
204};
205
206static const unsigned long long FLIPPED_3_V[131] = {
207 0x0000000000000000ULL, 0x0000000000ffff00ULL, 0x0000000000ff0000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
208 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
209 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
210 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
211 0x000000ff00000000ULL, 0x000000ff00ffff00ULL, 0x000000ff00ff0000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
212 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
213 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
214 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
215 0x0000ffff00000000ULL, 0x0000ffff00ffff00ULL, 0x0000ffff00ff0000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
216 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
217 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
218 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
219 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
220 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
221 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
222 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
223 0x00ffffff00000000ULL, 0x00ffffff00ffff00ULL, 0x00ffffff00ff0000ULL
224};
225
226static const unsigned long long FLIPPED_4_V[133] = {
227 0x0000000000000000ULL, 0x00000000ffffff00ULL, 0x00000000ffff0000ULL, 0x0000000000000000ULL, 0x00000000ff000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
228 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
229 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
230 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
231 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
232 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
233 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
234 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
235 0x0000ff0000000000ULL, 0x0000ff00ffffff00ULL, 0x0000ff00ffff0000ULL, 0x0000000000000000ULL, 0x0000ff00ff000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
236 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
237 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
238 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
239 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
240 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
241 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
242 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
243 0x00ffff0000000000ULL, 0x00ffff00ffffff00ULL, 0x00ffff00ffff0000ULL, 0x0000000000000000ULL, 0x00ffff00ff000000ULL
244};
245
246static const unsigned long long FLIPPED_5_V[137] = {
247 0x0000000000000000ULL, 0x000000ffffffff00ULL, 0x000000ffffff0000ULL, 0x0000000000000000ULL, 0x000000ffff000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
248 0x000000ff00000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
249 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
250 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
251 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
252 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
253 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
254 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
255 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
256 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
257 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
258 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
259 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
260 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
261 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
262 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
263 0x00ff000000000000ULL, 0x00ff00ffffffff00ULL, 0x00ff00ffffff0000ULL, 0x0000000000000000ULL, 0x00ff00ffff000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
264 0x00ff00ff00000000ULL
265};
266
267
275static unsigned long long flip_A1(const unsigned long long P, const unsigned long long O)
276{
277 unsigned int outflank_h;
278 unsigned long long flipped, outflank_v, outflank_d9;
279
280 outflank_v = ((O | ~0x0101010101010100ULL) + 0x0000000000000100ULL) & P & 0x0101010101010000ULL;
281 flipped = (outflank_v - (unsigned int) (outflank_v != 0)) & 0x0001010101010100ULL;
282
283 outflank_h = ((O & 0x7e) + 0x02) & P;
284 flipped |= (outflank_h - (unsigned int) (outflank_h != 0)) & 0x7e;
285
286 outflank_d9 = ((O | ~0x8040201008040200ULL) + 0x0000000000000200ULL) & P & 0x8040201008040000ULL;
287 flipped |= (outflank_d9 - (unsigned int) (outflank_d9 != 0)) & 0x0040201008040200ULL;
288
289 return flipped;
290}
291
299static unsigned long long flip_B1(const unsigned long long P, const unsigned long long O)
300{
301 unsigned int outflank_h;
302 unsigned long long flipped, outflank_v, outflank_d9;
303
304 outflank_v = ((O | ~0x0202020202020200ULL) + 0x0000000000000200ULL) & P & 0x0202020202020000ULL;
305 flipped = (outflank_v - (unsigned int) (outflank_v != 0)) & 0x0002020202020200ULL;
306
307 outflank_h = ((O & 0x7c) + 0x04) & P;
308 flipped |= (outflank_h - (unsigned int) (outflank_h != 0)) & 0x7c;
309
310 outflank_d9 = ((O | ~0x0080402010080400ULL) + 0x0000000000000400ULL) & P & 0x0080402010080000ULL;
311 flipped |= (outflank_d9 - (unsigned int) (outflank_d9 != 0)) & 0x0000402010080400ULL;
312
313 return flipped;
314}
315
323static unsigned long long flip_C1(const unsigned long long P, const unsigned long long O)
324{
325 unsigned int outflank_h;
326 unsigned long long flipped, outflank_v, outflank_d9;
327
328 outflank_v = ((O | ~0x0404040404040400ULL) + 0x0000000000000400ULL) & P & 0x0404040404040400ULL;
329 flipped = (outflank_v - (unsigned int) (outflank_v != 0)) & 0x0404040404040400ULL;
330
331 outflank_h = OUTFLANK_2[(O >> 1) & 0x3f] & P;
332 flipped |= (unsigned char) FLIPPED_2_H[outflank_h];
333
334 flipped |= (((unsigned int) P >> 7) & 0x00000200u & (unsigned int) O);
335
336 outflank_d9 = ((O | ~0x0000804020100800ULL) + 0x0000000000000800ULL) & P & 0x0000804020100800ULL;
337 flipped |= (outflank_d9 - (unsigned int) (outflank_d9 != 0)) & 0x0000804020100800ULL;
338
339 return flipped;
340}
341
349static unsigned long long flip_D1(const unsigned long long P, const unsigned long long O)
350{
351 unsigned int outflank_h, outflank_d7;
352 unsigned long long flipped, outflank_v, outflank_d9;
353
354 outflank_v = ((O | ~0x0808080808080800ULL) + 0x0000000000000800ULL) & P & 0x0808080808080800ULL;
355 flipped = (outflank_v - (unsigned int) (outflank_v != 0)) & 0x0808080808080800ULL;
356
357 outflank_h = OUTFLANK_3[(O >> 1) & 0x3f] & P;
358 flipped |= (unsigned char) FLIPPED_3_H[outflank_h];
359
360 outflank_d7 = ((O | ~0x01020400u) + 0x00000400u) & P & 0x01020000u;
361 flipped |= (outflank_d7 - (unsigned int) (outflank_d7 != 0)) & 0x00020400u;
362
363 outflank_d9 = ((O | ~0x0000008040201000ULL) + 0x0000000000001000ULL) & P & 0x0000008040201000ULL;
364 flipped |= (outflank_d9 - (unsigned int) (outflank_d9 != 0)) & 0x0000008040201000ULL;
365
366 return flipped;
367}
368
376static unsigned long long flip_E1(const unsigned long long P, const unsigned long long O)
377{
378 unsigned int outflank_h, outflank_d9;
379 unsigned long long flipped, outflank_v, outflank_d7;
380
381 outflank_v = ((O | ~0x1010101010101000ULL) + 0x0000000000001000ULL) & P & 0x1010101010101000ULL;
382 flipped = (outflank_v - (unsigned int) (outflank_v != 0)) & 0x1010101010101000ULL;
383
384 outflank_h = OUTFLANK_4[(O >> 1) & 0x3f] & P;
385 flipped |= (unsigned char) FLIPPED_4_H[outflank_h];
386
387 outflank_d7 = ((O | ~0x0000000102040800ULL) + 0x0000000000000800ULL) & P & 0x0000000102040800ULL;
388 flipped |= (outflank_d7 - (unsigned int) (outflank_d7 != 0)) & 0x0000000102040800ULL;
389
390 outflank_d9 = ((O | ~0x80402000u) + 0x00002000u) & P & 0x80400000u;
391 flipped |= (outflank_d9 - (unsigned int) (outflank_d9 != 0)) & 0x00402000u;
392
393 return flipped;
394}
395
403static unsigned long long flip_F1(const unsigned long long P, const unsigned long long O)
404{
405 unsigned int outflank_h;
406 unsigned long long flipped, outflank_v, outflank_d7;
407
408 outflank_v = ((O | ~0x2020202020202000ULL) + 0x0000000000002000ULL) & P & 0x2020202020202000ULL;
409 flipped = (outflank_v - (unsigned int) (outflank_v != 0)) & 0x2020202020202000ULL;
410
411 outflank_h = OUTFLANK_5[(O >> 1) & 0x3f] & P;
412 flipped |= (unsigned char) FLIPPED_5_H[outflank_h];
413
414 outflank_d7 = ((O | ~0x0000010204081000ULL) + 0x0000000000001000ULL) & P & 0x0000010204080000ULL;
415 flipped |= (outflank_d7 - (unsigned int) (outflank_d7 != 0)) & 0x0000000204081000ULL;
416
417 flipped |= (((unsigned int) P >> 9) & 0x00004000u & (unsigned int) O);
418
419 return flipped;
420}
421
429static unsigned long long flip_G1(const unsigned long long P, const unsigned long long O)
430{
431 unsigned int outflank_h;
432 unsigned long long flipped, outflank_v, outflank_d7;
433
434 outflank_v = ((O | ~0x4040404040404000ULL) + 0x0000000000004000ULL) & P & 0x4040404040400000ULL;
435 flipped = (outflank_v - (unsigned int) (outflank_v != 0)) & 0x0040404040404000ULL;
436
437 outflank_h = OUTFLANK_7[O & 0x3e] & (P << 1);
438 flipped |= ((-outflank_h) & 0x3e) << 0;
439
440 outflank_d7 = ((O | ~0x0001020408102000ULL) + 0x0000000000002000ULL) & P & 0x0001020408100000ULL;
441 flipped |= (outflank_d7 - (unsigned int) (outflank_d7 != 0)) & 0x0000020408102000ULL;
442
443 return flipped;
444}
445
453static unsigned long long flip_H1(const unsigned long long P, const unsigned long long O)
454{
455 unsigned int outflank_h;
456 unsigned long long flipped, outflank_v, outflank_d7;
457
458 outflank_v = ((O | ~0x8080808080808000ULL) + 0x0000000000008000ULL) & P & 0x8080808080800000ULL;
459 flipped = (outflank_v - (unsigned int) (outflank_v != 0)) & 0x0080808080808000ULL;
460
461 outflank_h = OUTFLANK_7[(O >> 1) & 0x3f] & (unsigned int) P;
462 flipped |= ((-outflank_h) & 0x3f) << 1;
463
464 outflank_d7 = ((O | ~0x0102040810204000ULL) + 0x0000000000004000ULL) & P & 0x0102040810200000ULL;
465 flipped |= (outflank_d7 - (unsigned int) (outflank_d7 != 0)) & 0x0002040810204000ULL;
466
467 return flipped;
468}
469
477static unsigned long long flip_A2(const unsigned long long P, const unsigned long long O)
478{
479 unsigned int outflank_h;
480 unsigned long long flipped, outflank_v, outflank_d9;
481
482 outflank_v = ((O | ~0x0101010101010000ULL) + 0x0000000000010000ULL) & P & 0x0101010101000000ULL;
483 flipped = (outflank_v - (unsigned int) (outflank_v != 0)) & 0x0001010101010000ULL;
484
485 outflank_h = ((O & 0x00007e00u) + 0x00000200u) & P;
486 flipped |= (outflank_h - (outflank_h >> 8)) & 0x00007e00u;
487
488 outflank_d9 = ((O | ~0x4020100804020000ULL) + 0x0000000000020000ULL) & P & 0x4020100804000000ULL;
489 flipped |= (outflank_d9 - (unsigned int) (outflank_d9 != 0)) & 0x0020100804020000ULL;
490
491 return flipped;
492}
493
501static unsigned long long flip_B2(const unsigned long long P, const unsigned long long O)
502{
503 unsigned int outflank_h;
504 unsigned long long flipped, outflank_v, outflank_d9;
505
506 outflank_v = ((O | ~0x0202020202020000ULL) + 0x0000000000020000ULL) & P & 0x0202020202000000ULL;
507 flipped = (outflank_v - (unsigned int) (outflank_v != 0)) & 0x0002020202020000ULL;
508
509 outflank_h = ((O & 0x00007c00u) + 0x00000400u) & P;
510 flipped |= (outflank_h - (outflank_h >> 8)) & 0x00007c00u;
511
512 outflank_d9 = ((O | ~0x8040201008040000ULL) + 0x0000000000040000ULL) & P & 0x8040201008000000ULL;
513 flipped |= (outflank_d9 - (unsigned int) (outflank_d9 != 0)) & 0x0040201008040000ULL;
514
515 return flipped;
516}
517
525static unsigned long long flip_C2(const unsigned long long P, const unsigned long long O)
526{
527 unsigned int outflank_h;
528 unsigned long long flipped, outflank_v, outflank_d9;
529
530 outflank_v = ((O | ~0x0404040404040000ULL) + 0x0000000000040000ULL) & P & 0x0404040404000000ULL;
531 flipped = (outflank_v - (unsigned int) (outflank_v != 0)) & 0x0004040404040000ULL;
532
533 outflank_h = OUTFLANK_2[(O >> 9) & 0x3f] & (P >> 8);
534 flipped |= FLIPPED_2_H[outflank_h] & 0x000000000000ff00ULL;
535
536 flipped |= (((unsigned int) P >> 7) & 0x00020000u & (unsigned int) O);
537
538 outflank_d9 = ((O | ~0x0080402010080000ULL) + 0x0000000000080000ULL) & P & 0x0080402010080000ULL;
539 flipped |= (outflank_d9 - (unsigned int) (outflank_d9 != 0)) & 0x0000402010080000ULL;
540
541 return flipped;
542}
543
551static unsigned long long flip_D2(const unsigned long long P, const unsigned long long O)
552{
553 unsigned int outflank_h;
554 unsigned long long flipped, outflank_v, outflank_d7, outflank_d9;
555
556 outflank_v = ((O | ~0x0808080808080000ULL) + 0x0000000000080000ULL) & P & 0x0808080808000000ULL;
557 flipped = (outflank_v - (unsigned int) (outflank_v != 0)) & 0x0008080808080000ULL;
558
559 outflank_h = OUTFLANK_3[(O >> 9) & 0x3f] & (P >> 8);
560 flipped |= FLIPPED_3_H[outflank_h] & 0x000000000000ff00ULL;
561
562 outflank_d7 = ((O | ~0x0000000102040000ULL) + 0x0000000000040000ULL) & P & 0x0000000102000000ULL;
563 flipped |= (outflank_d7 - (unsigned int) (outflank_d7 != 0)) & 0x0000000002040000ULL;
564
565 outflank_d9 = ((O | ~0x0000804020100000ULL) + 0x0000000000100000ULL) & P & 0x0000804020000000ULL;
566 flipped |= (outflank_d9 - (unsigned int) (outflank_d9 != 0)) & 0x0000004020100000ULL;
567
568 return flipped;
569}
570
578static unsigned long long flip_E2(const unsigned long long P, const unsigned long long O)
579{
580 unsigned int outflank_h;
581 unsigned long long flipped, outflank_v, outflank_d7, outflank_d9;
582
583 outflank_v = ((O | ~0x1010101010100000ULL) + 0x0000000000100000ULL) & P & 0x1010101010000000ULL;
584 flipped = (outflank_v - (unsigned int) (outflank_v != 0)) & 0x0010101010100000ULL;
585
586 outflank_h = OUTFLANK_4[(O >> 9) & 0x3f] & (P >> 8);
587 flipped |= FLIPPED_4_H[outflank_h] & 0x000000000000ff00ULL;
588
589 outflank_d7 = ((O | ~0x0000010204080000ULL) + 0x0000000000080000ULL) & P & 0x0000010204000000ULL;
590 flipped |= (outflank_d7 - (unsigned int) (outflank_d7 != 0)) & 0x0000000204080000ULL;
591
592 outflank_d9 = ((O | ~0x0000008040200000ULL) + 0x0000000000200000ULL) & P & 0x0000008040000000ULL;
593 flipped |= (outflank_d9 - (unsigned int) (outflank_d9 != 0)) & 0x0000000040200000ULL;
594
595 return flipped;
596}
597
605static unsigned long long flip_F2(const unsigned long long P, const unsigned long long O)
606{
607 unsigned int outflank_h;
608 unsigned long long flipped, outflank_v, outflank_d7;
609
610 outflank_v = ((O | ~0x2020202020200000ULL) + 0x0000000000200000ULL) & P & 0x2020202020000000ULL;
611 flipped = (outflank_v - (unsigned int) (outflank_v != 0)) & 0x0020202020200000ULL;
612
613 outflank_h = OUTFLANK_5[(O >> 9) & 0x3f] & ((unsigned int) P >> 8);
614 flipped |= (unsigned int) FLIPPED_5_H[outflank_h] & 0x0000ff00U;
615
616 outflank_d7 = ((O | ~0x0001020408100000ULL) + 0x0000000000100000ULL) & P & 0x0001020408000000ULL;
617 flipped |= (outflank_d7 - (unsigned int) (outflank_d7 != 0)) & 0x0000020408100000ULL;
618
619 flipped |= (((unsigned int) P >> 9) & 0x00400000u & (unsigned int) O);
620
621 return flipped;
622}
623
631static unsigned long long flip_G2(const unsigned long long P, const unsigned long long O)
632{
633 unsigned int outflank_h;
634 unsigned long long flipped, outflank_v, outflank_d7;
635
636 outflank_v = ((O | ~0x4040404040400000ULL) + 0x0000000000400000ULL) & P & 0x4040404040000000ULL;
637 flipped = (outflank_v - (unsigned int) (outflank_v != 0)) & 0x0040404040400000ULL;
638
639 outflank_h = OUTFLANK_7[(O >> 8) & 0x3e] & ((unsigned int) P >> 7);
640 flipped |= ((-outflank_h) & 0x3e) << 8;
641
642 outflank_d7 = ((O | ~0x0102040810200000ULL) + 0x0000000000200000ULL) & P & 0x0102040810000000ULL;
643 flipped |= (outflank_d7 - (unsigned int) (outflank_d7 != 0)) & 0x0002040810200000ULL;
644
645 return flipped;
646}
647
655static unsigned long long flip_H2(const unsigned long long P, const unsigned long long O)
656{
657 unsigned int outflank_h;
658 unsigned long long flipped, outflank_v, outflank_d7;
659
660 outflank_v = ((O | ~0x8080808080800000ULL) + 0x0000000000800000ULL) & P & 0x8080808080000000ULL;
661 flipped = (outflank_v - (unsigned int) (outflank_v != 0)) & 0x0080808080800000ULL;
662
663 outflank_h = OUTFLANK_7[(O >> 9) & 0x3f] & ((unsigned int) P >> 8);
664 flipped |= ((-outflank_h) & 0x3f) << 9;
665
666 outflank_d7 = ((O | ~0x0204081020400000ULL) + 0x0000000000400000ULL) & P & 0x0204081020000000ULL;
667 flipped |= (outflank_d7 - (unsigned int) (outflank_d7 != 0)) & 0x0004081020400000ULL;
668
669 return flipped;
670}
671
679static unsigned long long flip_A3(const unsigned long long P, const unsigned long long O)
680{
681 unsigned int outflank_h;
682 unsigned long long flipped, outflank_v, outflank_d9;
683
684 outflank_v = ((O | ~0x0101010101000000ULL) + 0x0000000001000000ULL) & P & 0x0101010101000000ULL;
685 flipped = (outflank_v - (unsigned int) (outflank_v != 0)) & 0x0101010101000000ULL;
686
687 flipped |= (((unsigned int) P << 8) & 0x00000100u & (unsigned int) O);
688
689 outflank_h = ((O & 0x007e0000u) + 0x00020000u) & P;
690 flipped |= (outflank_h - (outflank_h >> 8)) & 0x007e0000u;
691
692 flipped |= (((unsigned int) P << 7) & 0x00000200u & (unsigned int) O);
693
694 outflank_d9 = ((O | ~0x2010080402000000ULL) + 0x0000000002000000ULL) & P & 0x2010080400000000ULL;
695 flipped |= (outflank_d9 - (unsigned int) (outflank_d9 != 0)) & 0x0010080402000000ULL;
696
697 return flipped;
698}
699
707static unsigned long long flip_B3(const unsigned long long P, const unsigned long long O)
708{
709 unsigned int outflank_h;
710 unsigned long long flipped, outflank_v, outflank_d9;
711
712 outflank_v = ((O | ~0x0202020202000000ULL) + 0x0000000002000000ULL) & P & 0x0202020202000000ULL;
713 flipped = (outflank_v - (unsigned int) (outflank_v != 0)) & 0x0202020202000000ULL;
714
715 flipped |= (((unsigned int) P << 8) & 0x00000200u & (unsigned int) O);
716
717 outflank_h = ((O & 0x007c0000u) + 0x00040000u) & P;
718 flipped |= (outflank_h - (outflank_h >> 8)) & 0x007c0000u;
719
720 flipped |= (((unsigned int) P << 7) & 0x00000400u & (unsigned int) O);
721
722 outflank_d9 = ((O | ~0x4020100804000000ULL) + 0x0000000004000000ULL) & P & 0x4020100800000000ULL;
723 flipped |= (outflank_d9 - (unsigned int) (outflank_d9 != 0)) & 0x0020100804000000ULL;
724
725 return flipped;
726}
727
735static unsigned long long flip_C3(const unsigned long long P, const unsigned long long O)
736{
737 unsigned int outflank_h;
738 unsigned long long flipped, outflank_v, outflank_d9;
739
740 outflank_v = ((O | ~0x0404040404000000ULL) + 0x0000000004000000ULL) & P & 0x0404040404000000ULL;
741 flipped = (outflank_v - (unsigned int) (outflank_v != 0)) & 0x0404040404000000ULL;
742
743 flipped |= (((unsigned int) P << 8) & 0x00000400u & (unsigned int) O);
744
745 outflank_h = OUTFLANK_2[(O >> 17) & 0x3f] & ((unsigned int) P >> 16);
746 flipped |= (unsigned int) FLIPPED_2_H[outflank_h] & 0x00ff0000u;
747
748 flipped |= ((HIDWORD(P) << 25) | ((unsigned int) P << 7)) & 0x02000800u & (unsigned int) O;
749
750 outflank_d9 = ((O | ~0x8040201008000000ULL) + 0x0000000008000000ULL) & P & 0x8040201008000000ULL;
751 flipped |= (outflank_d9 - (unsigned int) (outflank_d9 != 0)) & 0x8040201008000000ULL;
752
753 flipped |= (((unsigned int) P << 9) & 0x00000200u & (unsigned int) O);
754
755 return flipped;
756}
757
765static unsigned long long flip_D3(const unsigned long long P, const unsigned long long O)
766{
767 unsigned int outflank_h;
768 unsigned long long flipped, outflank_v, outflank_d7, outflank_d9;
769
770 outflank_v = ((O | ~0x0808080808000000ULL) + 0x0000000008000000ULL) & P & 0x0808080808000000ULL;
771 flipped = (outflank_v - (unsigned int) (outflank_v != 0)) & 0x0808080808000000ULL;
772
773 flipped |= (((unsigned int) P << 8) & 0x00000800u & (unsigned int) O);
774
775 outflank_h = OUTFLANK_3[(O >> 17) & 0x3f] & ((unsigned int) P >> 16);
776 flipped |= (unsigned int) FLIPPED_3_H[outflank_h] & 0x00ff0000u;
777
778 outflank_d7 = ((O | ~0x0000010204000000ULL) + 0x0000000004000000ULL) & P & 0x0000010204000000ULL;
779 flipped |= (outflank_d7 - (outflank_d7 >> 24)) & 0x0000010204000000ULL;
780
781 flipped |= (((unsigned int) P << 7) & 0x00001000u & (unsigned int) O);
782
783 outflank_d9 = ((O | ~0x0080402010000000ULL) + 0x0000000010000000ULL) & P & 0x0080402010000000ULL;
784 flipped |= (outflank_d9 - (unsigned int) (outflank_d9 != 0)) & 0x0080402010000000ULL;
785
786 flipped |= (((unsigned int) P << 9) & 0x00000400u & (unsigned int) O);
787
788 return flipped;
789}
790
798static unsigned long long flip_E3(const unsigned long long P, const unsigned long long O)
799{
800 unsigned int outflank_h;
801 unsigned long long flipped, outflank_v, outflank_d7, outflank_d9;
802
803 outflank_v = ((O | ~0x1010101010000000ULL) + 0x0000000010000000ULL) & P & 0x1010101010000000ULL;
804 flipped = (outflank_v - (unsigned int) (outflank_v != 0)) & 0x1010101010000000ULL;
805
806 flipped |= (((unsigned int) P << 8) & 0x00001000u & (unsigned int) O);
807
808 outflank_h = OUTFLANK_4[(O >> 17) & 0x3f] & ((unsigned int) P >> 16);
809 flipped |= (unsigned int) FLIPPED_4_H[outflank_h] & 0x00ff0000u;
810
811 outflank_d7 = ((O | ~0x0001020408000000ULL) + 0x0000000008000000ULL) & P & 0x0001020408000000ULL;
812 flipped |= (outflank_d7 - (unsigned int) (outflank_d7 != 0)) & 0x0001020408000000ULL;
813
814 flipped |= (((unsigned int) P << 7) & 0x00002000u & (unsigned int) O);
815
816 outflank_d9 = ((O | ~0x0000804020000000ULL) + 0x0000000020000000ULL) & P & 0x0000804020000000ULL;
817 flipped |= (outflank_d9 - (outflank_d9 >> 24)) & 0x0000804020000000ULL;
818
819 flipped |= (((unsigned int) P << 9) & 0x00000800u & (unsigned int) O);
820
821 return flipped;
822}
823
831static unsigned long long flip_F3(const unsigned long long P, const unsigned long long O)
832{
833 unsigned int outflank_h;
834 unsigned long long flipped, outflank_v, outflank_d7;
835
836 outflank_v = ((O | ~0x2020202020000000ULL) + 0x0000000020000000ULL) & P & 0x2020202020000000ULL;
837 flipped = (outflank_v - (unsigned int) (outflank_v != 0)) & 0x2020202020000000ULL;
838
839 flipped |= (((unsigned int) P << 8) & 0x00002000u & (unsigned int) O);
840
841 outflank_h = OUTFLANK_5[(O >> 17) & 0x3f] & ((unsigned int) P >> 16);
842 flipped |= (unsigned int) FLIPPED_5_H[outflank_h] & 0x00ff0000u;
843
844 outflank_d7 = ((O | ~0x0102040810000000ULL) + 0x0000000010000000ULL) & P & 0x0102040810000000ULL;
845 flipped |= (outflank_d7 - (unsigned int) (outflank_d7 != 0)) & 0x0102040810000000ULL;
846
847 flipped |= (((unsigned int) P << 7) & 0x00004000u & (unsigned int) O);
848
849 flipped |= ((HIDWORD(P) << 23) | ((unsigned int) P << 9)) & 0x40001000u & (unsigned int) O;
850
851 return flipped;
852}
853
861static unsigned long long flip_G3(const unsigned long long P, const unsigned long long O)
862{
863 unsigned int outflank_h;
864 unsigned long long flipped, outflank_v, outflank_d7;
865
866 outflank_v = ((O | ~0x4040404040000000ULL) + 0x0000000040000000ULL) & P & 0x4040404040000000ULL;
867 flipped = (outflank_v - (unsigned int) (outflank_v != 0)) & 0x4040404040000000ULL;
868
869 flipped |= (((unsigned int) P << 8) & 0x00004000u & (unsigned int) O);
870
871 outflank_h = OUTFLANK_7[(O >> 16) & 0x3e] & ((unsigned int) P >> 15);
872 flipped |= ((-outflank_h) & 0x3e) << 16;
873
874 outflank_d7 = ((O | ~0x0204081020000000ULL) + 0x0000000020000000ULL) & P & 0x0204081000000000ULL;
875 flipped |= (outflank_d7 - (unsigned int) (outflank_d7 != 0)) & 0x0004081020000000ULL;
876
877 flipped |= (((unsigned int) P << 9) & 0x00002000u & (unsigned int) O);
878
879 return flipped;
880}
881
889static unsigned long long flip_H3(const unsigned long long P, const unsigned long long O)
890{
891 unsigned int outflank_h;
892 unsigned long long flipped, outflank_v, outflank_d7;
893
894 outflank_v = ((O | ~0x8080808080000000ULL) + 0x0000000080000000ULL) & P & 0x8080808080000000ULL;
895 flipped = (outflank_v - (unsigned int) (outflank_v != 0)) & 0x8080808080000000ULL;
896
897 flipped |= (((unsigned int) P << 8) & 0x00008000u & (unsigned int) O);
898
899 outflank_h = OUTFLANK_7[(O >> 17) & 0x3f] & ((unsigned int) P >> 16);
900 flipped |= ((-outflank_h) & 0x3f) << 17;
901
902 outflank_d7 = ((O | ~0x0408102040000000ULL) + 0x0000000040000000ULL) & P & 0x0408102000000000ULL;
903 flipped |= (outflank_d7 - (unsigned int) (outflank_d7 != 0)) & 0x0008102040000000ULL;
904
905 flipped |= (((unsigned int) P << 9) & 0x00004000u & (unsigned int) O);
906
907 return flipped;
908}
909
917static unsigned long long flip_A4(const unsigned long long P, const unsigned long long O)
918{
919 unsigned int outflank_h, outflank_v, flip_d7, outflank_d9;
920 unsigned long long flipped;
921
922 outflank_v = OUTFLANK_3[(((LODWORD(O) & 0x01010100u) + ((HIDWORD(O) & 0x00010101u) << 4)) * 0x01020408u) >> 25]
923 & ((((LODWORD(P) & 0x01010101u) + ((HIDWORD(P) & 0x01010101u) << 4)) * 0x01020408u) >> 24);
924 flipped = FLIPPED_3_V[outflank_v] & 0x0001010101010100ULL;
925
926 outflank_h = ((O & 0x7e000000u) + 0x02000000u) & P;
927 flipped |= (outflank_h - (outflank_h >> 8)) & 0x7e000000u;
928
929 flip_d7 = LODWORD(O) & 0x00020000u;
930 flip_d7 |= (flip_d7 >> 7) & LODWORD(O);
931 flipped |= flip_d7 & -(flip_d7 & (LODWORD(P) << 7));
932
933 outflank_d9 = ((HIDWORD(O) | ~0x10080402u) + 0x00000002u) & HIDWORD(P) & 0x10080400u;
934 flipped |= (unsigned long long) ((outflank_d9 - (unsigned int) (outflank_d9 != 0)) & 0x00080402u) << 32;
935
936 return flipped;
937}
938
946static unsigned long long flip_B4(const unsigned long long P, const unsigned long long O)
947{
948 unsigned int outflank_h, outflank_v, flip_d7, outflank_d9;
949 unsigned long long flipped;
950
951 outflank_v = OUTFLANK_3[(((LODWORD(O) & 0x02020200u) + ((HIDWORD(O) & 0x00020202u) << 4)) * 0x00810204u) >> 25]
952 & ((((LODWORD(P) & 0x02020202u) + ((HIDWORD(P) & 0x02020202u) << 4)) * 0x00810204u) >> 24);
953 flipped = FLIPPED_3_V[outflank_v] & 0x0002020202020200ULL;
954
955 outflank_h = ((O & 0x7c000000u) + 0x04000000u) & P;
956 flipped |= (outflank_h - (outflank_h >> 8)) & 0x7c000000u;
957
958 flip_d7 = LODWORD(O) & 0x00040000u;
959 flip_d7 |= (flip_d7 >> 7) & LODWORD(O);
960 flipped |= flip_d7 & -(flip_d7 & (LODWORD(P) << 7));
961
962 outflank_d9 = ((HIDWORD(O) | ~0x20100804u) + 0x00000004u) & HIDWORD(P) & 0x20100800u;
963 flipped |= (unsigned long long) ((outflank_d9 - (unsigned int) (outflank_d9 != 0)) & 0x00100804u) << 32;
964
965 return flipped;
966}
967
975static unsigned long long flip_C4(const unsigned long long P, const unsigned long long O)
976{
977 unsigned int outflank_h, outflank_v, outflank_d7, outflank_d9;
978 unsigned long long flipped;
979
980 outflank_v = OUTFLANK_3[(((LODWORD(O) & 0x04040400u) + ((HIDWORD(O) & 0x00040404u) << 4)) * 0x00408102u) >> 25]
981 & ((((LODWORD(P) & 0x04040404u) + ((HIDWORD(P) & 0x04040404u) << 4)) * 0x00408102u) >> 24);
982 flipped = FLIPPED_3_V[outflank_v] & 0x0004040404040400ULL;
983
984 outflank_h = OUTFLANK_2[(O >> 25) & 0x3f] & ((unsigned int) P >> 24);
985 flipped |= (unsigned int) FLIPPED_2_H[outflank_h] & 0xff000000u;
986
987 outflank_d7 = OUTFLANK_2[(((LODWORD(O) & 0x04081000u) + (HIDWORD(O) & 0x00000002u)) * 0x01010101u) >> 25]
988 & ((((LODWORD(P) & 0x04081020u) + (HIDWORD(P) & 0x00000102u)) * 0x01010101u) >> 24);
989 flipped |= FLIPPED_2_H[outflank_d7] & 0x0000000204081000ULL;
990
991 outflank_d9 = OUTFLANK_2[(((LODWORD(O) & 0x04020000u) + (HIDWORD(O) & 0x00201008u)) * 0x01010101u) >> 25]
992 & ((((LODWORD(P) & 0x04020100u) + (HIDWORD(P) & 0x40201008u)) * 0x01010101u) >> 24);
993 flipped |= FLIPPED_2_H[outflank_d9] & 0x0020100804020000ULL;
994
995 return flipped;
996}
997
1005static unsigned long long flip_D4(const unsigned long long P, const unsigned long long O)
1006{
1007 unsigned int outflank_h, outflank_v, outflank_d7, outflank_d9;
1008 unsigned long long flipped;
1009
1010 outflank_v = OUTFLANK_3[(((LODWORD(O) & 0x08080800u) + ((HIDWORD(O) & 0x00080808u) << 4)) * 0x00204081u) >> 25]
1011 & ((((LODWORD(P) & 0x08080808u) + ((HIDWORD(P) & 0x08080808u) << 4)) * 0x00204081u) >> 24);
1012 flipped = FLIPPED_3_V[outflank_v] & 0x0008080808080800ULL;
1013
1014 outflank_h = OUTFLANK_3[(O >> 25) & 0x3f] & ((unsigned int) P >> 24);
1015 flipped |= (unsigned int) FLIPPED_3_H[outflank_h] & 0xff000000u;
1016
1017 outflank_d7 = OUTFLANK_3[(((LODWORD(O) & 0x08102000u) + (HIDWORD(O) & 0x00000204u)) * 0x01010101u) >> 25]
1018 & ((((LODWORD(P) & 0x08102040u) + (HIDWORD(P) & 0x00010204u)) * 0x01010101u) >> 24);
1019 flipped |= FLIPPED_3_H[outflank_d7] & 0x0000020408102000ULL;
1020
1021 outflank_d9 = OUTFLANK_3[(((LODWORD(O) & 0x08040200u) + (HIDWORD(O) & 0x00402010u)) * 0x01010101u) >> 25]
1022 & ((((LODWORD(P) & 0x08040201u) + (HIDWORD(P) & 0x80402010u)) * 0x01010101u) >> 24);
1023 flipped |= FLIPPED_3_H[outflank_d9] & 0x0040201008040200ULL;
1024
1025 return flipped;
1026}
1027
1035static unsigned long long flip_E4(const unsigned long long P, const unsigned long long O)
1036{
1037 unsigned int outflank_h, outflank_v, outflank_d7, outflank_d9;
1038 unsigned long long flipped;
1039
1040 outflank_v = OUTFLANK_3[((((LODWORD(O) & 0x10101000u) >> 4) + (HIDWORD(O) & 0x00101010u)) * 0x01020408u) >> 25]
1041 & (((((LODWORD(P) & 0x10101010u) >> 4) + (HIDWORD(P) & 0x10101010u)) * 0x01020408u) >> 24);
1042 flipped = FLIPPED_3_V[outflank_v] & 0x0010101010101000ULL;
1043
1044 outflank_h = OUTFLANK_4[(O >> 25) & 0x3f] & ((unsigned int) P >> 24);
1045 flipped |= (unsigned int) FLIPPED_4_H[outflank_h] & 0xff000000u;
1046
1047 outflank_d7 = OUTFLANK_4[(((LODWORD(O) & 0x10204000u) + (HIDWORD(O) & 0x00020408u)) * 0x01010101u) >> 25]
1048 & ((((LODWORD(P) & 0x10204080u) + (HIDWORD(P) & 0x01020408u)) * 0x01010101u) >> 24);
1049 flipped |= FLIPPED_4_H[outflank_d7] & 0x0002040810204000ULL;
1050
1051 outflank_d9 = OUTFLANK_4[(((LODWORD(O) & 0x10080400u) + (HIDWORD(O) & 0x00004020u)) * 0x01010101u) >> 25]
1052 & ((((LODWORD(P) & 0x10080402u) + (HIDWORD(P) & 0x00804020u)) * 0x01010101u) >> 24);
1053 flipped |= FLIPPED_4_H[outflank_d9] & 0x0000402010080400ULL;
1054
1055 return flipped;
1056}
1057
1065static unsigned long long flip_F4(const unsigned long long P, const unsigned long long O)
1066{
1067 unsigned int outflank_h, outflank_v, outflank_d7, outflank_d9;
1068 unsigned long long flipped;
1069
1070 outflank_v = OUTFLANK_3[((((LODWORD(O) & 0x20202000u) >> 4) + (HIDWORD(O) & 0x00202020u)) * 0x00810204u) >> 25]
1071 & (((((LODWORD(P) & 0x20202020u) >> 4) + (HIDWORD(P) & 0x20202020u)) * 0x00810204u) >> 24);
1072 flipped = FLIPPED_3_V[outflank_v] & 0x0020202020202000ULL;
1073
1074 outflank_h = OUTFLANK_5[(O >> 25) & 0x3f] & ((unsigned int) P >> 24);
1075 flipped |= (unsigned int) FLIPPED_5_H[outflank_h] & 0xff000000u;
1076
1077 outflank_d7 = OUTFLANK_5[(((LODWORD(O) & 0x20400000u) + (HIDWORD(O) & 0x00040810u)) * 0x01010101u) >> 25]
1078 & ((((LODWORD(P) & 0x20408000u) + (HIDWORD(P) & 0x02040810u)) * 0x01010101u) >> 24);
1079 flipped |= FLIPPED_5_H[outflank_d7] & 0x0004081020400000ULL;
1080
1081 outflank_d9 = OUTFLANK_5[(((LODWORD(O) & 0x20100800u) + (HIDWORD(O) & 0x00000040u)) * 0x01010101u) >> 25]
1082 & ((((LODWORD(P) & 0x20100804u) + (HIDWORD(P) & 0x00008040u)) * 0x01010101u) >> 24);
1083 flipped |= FLIPPED_5_H[outflank_d9] & 0x0000004020100800ULL;
1084
1085 return flipped;
1086}
1087
1095static unsigned long long flip_G4(const unsigned long long P, const unsigned long long O)
1096{
1097 unsigned int outflank_h, outflank_v, outflank_d7, flip_d9;
1098 unsigned long long flipped;
1099
1100 outflank_v = OUTFLANK_3[((((LODWORD(O) & 0x40404000u) >> 4) + (HIDWORD(O) & 0x00404040u)) * 0x00408102u) >> 25]
1101 & (((((LODWORD(P) & 0x40404040u) >> 4) + (HIDWORD(P) & 0x40404040u)) * 0x00408102u) >> 24);
1102 flipped = FLIPPED_3_V[outflank_v] & 0x0040404040404000ULL;
1103
1104 outflank_h = OUTFLANK_7[(O >> 24) & 0x3e] & ((unsigned int) P >> 23);
1105 flipped |= ((-outflank_h) & 0x3e) << 24;
1106
1107 outflank_d7 = ((HIDWORD(O) | ~0x04081020u) + 0x00000020u) & HIDWORD(P) & 0x04081000u;
1108 flipped |= (unsigned long long) ((outflank_d7 - (unsigned int) (outflank_d7 != 0)) & 0x00081020u) << 32;
1109
1110 flip_d9 = LODWORD(O) & 0x00200000u;
1111 flip_d9 |= (flip_d9 >> 9) & LODWORD(O);
1112 flipped |= flip_d9 & -(flip_d9 & (LODWORD(P) << 9));
1113
1114 return flipped;
1115}
1116
1124static unsigned long long flip_H4(const unsigned long long P, const unsigned long long O)
1125{
1126 unsigned int outflank_h, outflank_v, outflank_d7, flip_d9;
1127 unsigned long long flipped;
1128
1129 outflank_v = OUTFLANK_3[((((LODWORD(O) & 0x80808000u) >> 4) + (HIDWORD(O) & 0x00808080u)) * 0x00204081u) >> 25]
1130 & (((((LODWORD(P) & 0x80808080u) >> 4) + (HIDWORD(P) & 0x80808080u)) * 0x00204081u) >> 24);
1131 flipped = FLIPPED_3_V[outflank_v] & 0x0080808080808000ULL;
1132
1133 outflank_h = OUTFLANK_7[(O >> 25) & 0x3f] & ((unsigned int) P >> 24);
1134 flipped |= ((-outflank_h) & 0x3f) << 25;
1135
1136 outflank_d7 = ((HIDWORD(O) | ~0x08102040u) + 0x00000040u) & HIDWORD(P) & 0x08102000u;
1137 flipped |= (unsigned long long) ((outflank_d7 - (unsigned int) (outflank_d7 != 0)) & 0x00102040u) << 32;
1138
1139 flip_d9 = LODWORD(O) & 0x00400000u;
1140 flip_d9 |= (flip_d9 >> 9) & LODWORD(O);
1141 flipped |= flip_d9 & -(flip_d9 & (LODWORD(P) << 9));
1142
1143 return flipped;
1144}
1145
1153static unsigned long long flip_A5(const unsigned long long P, const unsigned long long O)
1154{
1155 unsigned int outflank_h, outflank_v, flip_d7, outflank_d9;
1156 unsigned long long flipped;
1157
1158 outflank_v = OUTFLANK_4[(((LODWORD(O) & 0x01010100u) + ((HIDWORD(O) & 0x00010101u) << 4)) * 0x01020408u) >> 25]
1159 & ((((LODWORD(P) & 0x01010101u) + ((HIDWORD(P) & 0x01010101u) << 4)) * 0x01020408u) >> 24);
1160 flipped = FLIPPED_4_V[outflank_v] & 0x0001010101010100ULL;
1161
1162 outflank_h = ((HIDWORD(O) & 0x0000007eu) + 0x00000002u) & HIDWORD(P);
1163 flipped |= (unsigned long long) ((((outflank_h << 8) - outflank_h) >> 8) & 0x0000007eu) << 32;
1164
1165 flip_d7 = LODWORD(O) & ((LODWORD(O) >> 7) | 0x02000000u);
1166 flip_d7 &= ((flip_d7 & 0x02040000u) >> 14) | 0x02040000u;
1167 flipped |= flip_d7 & -(flip_d7 & (LODWORD(P) << 7));
1168
1169 outflank_d9 = ((HIDWORD(O) | ~0x08040200u) + 0x00000200u) & HIDWORD(P) & 0x08040000u;
1170 flipped |= (unsigned long long) ((outflank_d9 - (unsigned int) (outflank_d9 != 0)) & 0x00040200u) << 32;
1171
1172 return flipped;
1173}
1174
1182static unsigned long long flip_B5(const unsigned long long P, const unsigned long long O)
1183{
1184 unsigned int outflank_h, outflank_v, flip_d7, outflank_d9;
1185 unsigned long long flipped;
1186
1187 outflank_v = OUTFLANK_4[(((LODWORD(O) & 0x02020200u) + ((HIDWORD(O) & 0x00020202u) << 4)) * 0x00810204u) >> 25]
1188 & ((((LODWORD(P) & 0x02020202u) + ((HIDWORD(P) & 0x02020202u) << 4)) * 0x00810204u) >> 24);
1189 flipped = FLIPPED_4_V[outflank_v] & 0x0002020202020200ULL;
1190
1191 outflank_h = ((HIDWORD(O) & 0x0000007cu) + 0x00000004u) & (P >> 32);
1192 flipped |= (unsigned long long) ((((outflank_h << 8) - outflank_h) >> 8) & 0x0000007cu) << 32;
1193
1194 flip_d7 = LODWORD(O) & ((LODWORD(O) >> 7) | 0x04000000u);
1195 flip_d7 &= ((flip_d7 & 0x04080000u) >> 14) | 0x04080000u;
1196 flipped |= flip_d7 & -(flip_d7 & (LODWORD(P) << 7));
1197
1198 outflank_d9 = ((HIDWORD(O) | ~0x10080400u) + 0x00000400u) & HIDWORD(P) & 0x10080000u;
1199 flipped |= (unsigned long long) ((outflank_d9 - (unsigned int) (outflank_d9 != 0)) & 0x00080400u) << 32;
1200
1201 return flipped;
1202}
1203
1211static unsigned long long flip_C5(const unsigned long long P, const unsigned long long O)
1212{
1213 unsigned int outflank_h, outflank_v, outflank_d7, outflank_d9;
1214 unsigned long long flipped;
1215
1216 outflank_v = OUTFLANK_4[(((LODWORD(O) & 0x04040400u) + ((HIDWORD(O) & 0x00040404u) << 4)) * 0x00408102u) >> 25]
1217 & ((((LODWORD(P) & 0x04040404u) + ((HIDWORD(P) & 0x04040404u) << 4)) * 0x00408102u) >> 24);
1218 flipped = FLIPPED_4_V[outflank_v] & 0x0004040404040400ULL;
1219
1220 outflank_h = OUTFLANK_2[(O >> 33) & 0x3f] & (P >> 32);
1221 flipped |= FLIPPED_2_H[outflank_h] & 0x000000ff00000000ULL;
1222
1223 outflank_d7 = OUTFLANK_2[(((LODWORD(O) & 0x08102000u) + (HIDWORD(O) & 0x00000204u)) * 0x01010101u) >> 25]
1224 & ((((LODWORD(P) & 0x08102040u) + (HIDWORD(P) & 0x00010204u)) * 0x01010101u) >> 24);
1225 flipped |= FLIPPED_2_H[outflank_d7] & 0x0000020408102000ULL;
1226
1227 outflank_d9 = OUTFLANK_2[(((LODWORD(O) & 0x02000000u) + (HIDWORD(O) & 0x00100804u)) * 0x01010101u) >> 25]
1228 & ((((LODWORD(P) & 0x02010000u) + (HIDWORD(P) & 0x20100804u)) * 0x01010101u) >> 24);
1229 flipped |= FLIPPED_2_H[outflank_d9] & 0x0010080402000000ULL;
1230
1231 return flipped;
1232}
1233
1241static unsigned long long flip_D5(const unsigned long long P, const unsigned long long O)
1242{
1243 unsigned int outflank_h, outflank_v, outflank_d7, outflank_d9;
1244 unsigned long long flipped;
1245
1246 outflank_v = OUTFLANK_4[(((LODWORD(O) & 0x08080800u) + ((HIDWORD(O) & 0x00080808u) << 4)) * 0x00204081u) >> 25]
1247 & ((((LODWORD(P) & 0x08080808u) + ((HIDWORD(P) & 0x08080808u) << 4)) * 0x00204081u) >> 24);
1248 flipped = FLIPPED_4_V[outflank_v] & 0x0008080808080800ULL;
1249
1250 outflank_h = OUTFLANK_3[(O >> 33) & 0x3f] & (P >> 32);
1251 flipped |= FLIPPED_3_H[outflank_h] & 0x000000ff00000000ULL;
1252
1253 outflank_d7 = OUTFLANK_3[(((LODWORD(O) & 0x10204000u) + (HIDWORD(O) & 0x00020408u)) * 0x01010101u) >> 25]
1254 & ((((LODWORD(P) & 0x10204080u) + (HIDWORD(P) & 0x01020408u)) * 0x01010101u) >> 24);
1255 flipped |= FLIPPED_3_H[outflank_d7] & 0x0002040810204000ULL;
1256
1257 outflank_d9 = OUTFLANK_3[(((LODWORD(O) & 0x04020000u) + (HIDWORD(O) & 0x00201008u)) * 0x01010101u) >> 25]
1258 & ((((LODWORD(P) & 0x04020100u) + (HIDWORD(P) & 0x40201008u)) * 0x01010101u) >> 24);
1259 flipped |= FLIPPED_3_H[outflank_d9] & 0x0020100804020000ULL;
1260
1261 return flipped;
1262}
1263
1271static unsigned long long flip_E5(const unsigned long long P, const unsigned long long O)
1272{
1273 unsigned int outflank_h, outflank_v, outflank_d7, outflank_d9;
1274 unsigned long long flipped;
1275
1276 outflank_v = OUTFLANK_4[((((LODWORD(O) & 0x10101000u) >> 4) + (HIDWORD(O) & 0x00101010u)) * 0x01020408u) >> 25]
1277 & (((((LODWORD(P) & 0x10101010u) >> 4) + (HIDWORD(P) & 0x10101010u)) * 0x01020408u) >> 24);
1278 flipped = FLIPPED_4_V[outflank_v] & 0x0010101010101000ULL;
1279
1280 outflank_h = OUTFLANK_4[(O >> 33) & 0x3f] & (P >> 32);
1281 flipped |= FLIPPED_4_H[outflank_h] & 0x000000ff00000000ULL;
1282
1283 outflank_d7 = OUTFLANK_4[(((LODWORD(O) & 0x20400000u) + (HIDWORD(O) & 0x00040810u)) * 0x01010101u) >> 25]
1284 & ((((LODWORD(P) & 0x20408000u) + (HIDWORD(P) & 0x02040810u)) * 0x01010101u) >> 24);
1285 flipped |= FLIPPED_4_H[outflank_d7] & 0x0004081020400000ULL;
1286
1287 outflank_d9 = OUTFLANK_4[(((LODWORD(O) & 0x08040200u) + (HIDWORD(O) & 0x00402010u)) * 0x01010101u) >> 25]
1288 & ((((LODWORD(P) & 0x08040201u) + (HIDWORD(P) & 0x80402010u)) * 0x01010101u) >> 24);
1289 flipped |= FLIPPED_4_H[outflank_d9] & 0x0040201008040200ULL;
1290
1291 return flipped;
1292}
1293
1301static unsigned long long flip_F5(const unsigned long long P, const unsigned long long O)
1302{
1303 unsigned int outflank_h, outflank_v, outflank_d7, outflank_d9;
1304 unsigned long long flipped;
1305
1306 outflank_v = OUTFLANK_4[((((LODWORD(O) & 0x20202000u) >> 4) + (HIDWORD(O) & 0x00202020u)) * 0x00810204u) >> 25]
1307 & (((((LODWORD(P) & 0x20202020u) >> 4) + (HIDWORD(P) & 0x20202020u)) * 0x00810204u) >> 24);
1308 flipped = FLIPPED_4_V[outflank_v] & 0x0020202020202000ULL;
1309
1310 outflank_h = OUTFLANK_5[(O >> 33) & 0x3f] & (P >> 32);
1311 flipped |= FLIPPED_5_H[outflank_h] & 0x000000ff00000000ULL;
1312
1313 outflank_d7 = OUTFLANK_5[(((LODWORD(O) & 0x40000000u) + (HIDWORD(O) & 0x00081020u)) * 0x01010101u) >> 25]
1314 & ((((LODWORD(P) & 0x40800000u) + (HIDWORD(P) & 0x04081020u)) * 0x01010101u) >> 24);
1315 flipped |= FLIPPED_5_H[outflank_d7] & 0x0008102040000000ULL;
1316
1317 outflank_d9 = OUTFLANK_5[(((LODWORD(O) & 0x10080400u) + (HIDWORD(O) & 0x00004020u)) * 0x01010101u) >> 25]
1318 & ((((LODWORD(P) & 0x10080402u) + (HIDWORD(P) & 0x00804020u)) * 0x01010101u) >> 24);
1319 flipped |= FLIPPED_5_H[outflank_d9] & 0x0000402010080400ULL;
1320
1321 return flipped;
1322}
1323
1331static unsigned long long flip_G5(const unsigned long long P, const unsigned long long O)
1332{
1333 unsigned int outflank_h, outflank_v, outflank_d7, flip_d9;
1334 unsigned long long flipped;
1335
1336 outflank_v = OUTFLANK_4[((((LODWORD(O) & 0x40404000u) >> 4) + (HIDWORD(O) & 0x00404040u)) * 0x00408102u) >> 25]
1337 & (((((LODWORD(P) & 0x40404040u) >> 4) + (HIDWORD(P) & 0x40404040u)) * 0x00408102u) >> 24);
1338 flipped = FLIPPED_4_V[outflank_v] & 0x0040404040404000ULL;
1339
1340 outflank_h = OUTFLANK_7[(O >> 32) & 0x3e] & (P >> 31);
1341 flipped |= (unsigned long long) ((-outflank_h) & 0x3e) << 32;
1342
1343 outflank_d7 = ((HIDWORD(O) | ~0x08102000u) + 0x00002000u) & HIDWORD(P) & 0x08100000u;
1344 flipped |= (unsigned long long) ((outflank_d7 - (unsigned int) (outflank_d7 != 0)) & 0x00102000u) << 32;
1345
1346 flip_d9 = LODWORD(O) & ((LODWORD(O) >> 9) | 0x20000000u);
1347 flip_d9 &= ((flip_d9 & 0x20100000u) >> 18) | 0x20100000u;
1348 flipped |= flip_d9 & -(flip_d9 & (LODWORD(P) << 9));
1349
1350 return flipped;
1351}
1352
1360static unsigned long long flip_H5(const unsigned long long P, const unsigned long long O)
1361{
1362 unsigned int outflank_h, outflank_v, outflank_d7, flip_d9;
1363 unsigned long long flipped;
1364
1365 outflank_v = OUTFLANK_4[((((LODWORD(O) & 0x80808000u) >> 4) + (HIDWORD(O) & 0x00808080u)) * 0x00204081u) >> 25]
1366 & (((((LODWORD(P) & 0x80808080u) >> 4) + (HIDWORD(P) & 0x80808080u)) * 0x00204081u) >> 24);
1367 flipped = FLIPPED_4_V[outflank_v] & 0x0080808080808000ULL;
1368
1369 outflank_h = OUTFLANK_7[(O >> 33) & 0x3f] & (P >> 32);
1370 flipped |= (unsigned long long) ((-outflank_h) & 0x3f) << 33;
1371
1372 outflank_d7 = ((HIDWORD(O) | ~0x10204000u) + 0x00004000u) & HIDWORD(P) & 0x10200000u;
1373 flipped |= (unsigned long long) ((outflank_d7 - (unsigned int) (outflank_d7 != 0)) & 0x00204000u) << 32;
1374
1375 flip_d9 = LODWORD(O) & ((LODWORD(O) >> 9) | 0x40000000u);
1376 flip_d9 &= ((flip_d9 & 0x40200000u) >> 18) | 0x40200000u;
1377 flipped |= flip_d9 & -(flip_d9 & (LODWORD(P) << 9));
1378
1379 return flipped;
1380}
1381
1389static unsigned long long flip_A6(const unsigned long long P, const unsigned long long O)
1390{
1391 unsigned int outflank_h, outflank_v, flip_d7;
1392 unsigned long long flipped;
1393
1394 outflank_v = OUTFLANK_5[(((LODWORD(O) & 0x01010100u) + ((HIDWORD(O) & 0x00010101u) << 4)) * 0x01020408u) >> 25]
1395 & ((((LODWORD(P) & 0x01010101u) + ((HIDWORD(P) & 0x01010101u) << 4)) * 0x01020408u) >> 24);
1396 flipped = FLIPPED_5_V[outflank_v] & 0x0001010101010100ULL;
1397
1398 outflank_h = ((HIDWORD(O) & 0x00007e00u) + 0x00000200u) & HIDWORD(P);
1399 flipped |= (unsigned long long) ((outflank_h - (outflank_h >> 8)) & 0x00007e00u) << 32;
1400
1401 flip_d7 = (unsigned int) (O >> 8);
1402 flip_d7 &= (flip_d7 >> 7) | 0x02000000u;
1403 flip_d7 &= ((flip_d7 & 0x02040000u) >> 14) | 0x02040000u;
1404 flipped |= (unsigned long long) (flip_d7 & -(flip_d7 & (LODWORD(P) >> 1))) << 8;
1405
1406 flipped |= (unsigned long long) ((HIDWORD(P) >> 9) & 0x00020000u & HIDWORD(O)) << 32;
1407
1408 return flipped;
1409}
1410
1418static unsigned long long flip_B6(const unsigned long long P, const unsigned long long O)
1419{
1420 unsigned int outflank_h, outflank_v, flip_d7;
1421 unsigned long long flipped;
1422
1423 outflank_v = OUTFLANK_5[(((LODWORD(O) & 0x02020200u) + ((HIDWORD(O) & 0x00020202u) << 4)) * 0x00810204u) >> 25]
1424 & ((((LODWORD(P) & 0x02020202u) + ((HIDWORD(P) & 0x02020202u) << 4)) * 0x00810204u) >> 24);
1425 flipped = FLIPPED_5_V[outflank_v] & 0x0002020202020200ULL;
1426
1427 outflank_h = ((HIDWORD(O) & 0x00007c00u) + 0x00000400u) & HIDWORD(P);
1428 flipped |= (unsigned long long) ((outflank_h - (outflank_h >> 8)) & 0x00007c00u) << 32;
1429
1430 flip_d7 = (unsigned int) (O >> 8);
1431 flip_d7 &= (flip_d7 >> 7) | 0x04000000u;
1432 flip_d7 &= ((flip_d7 & 0x04080000u) >> 14) | 0x04080000u;
1433 flipped |= (unsigned long long) (flip_d7 & -(flip_d7 & (LODWORD(P) >> 1))) << 8;
1434
1435 flipped |= (unsigned long long) ((HIDWORD(P) >> 9) & 0x00040000u & HIDWORD(O)) << 32;
1436
1437 return flipped;
1438}
1439
1447static unsigned long long flip_C6(const unsigned long long P, const unsigned long long O)
1448{
1449 unsigned int outflank_h, outflank_v, outflank_d7;
1450 unsigned long long flipped;
1451
1452 outflank_v = OUTFLANK_5[(((LODWORD(O) & 0x04040400u) + ((HIDWORD(O) & 0x00040404u) << 4)) * 0x00408102u) >> 25]
1453 & ((((LODWORD(P) & 0x04040404u) + ((HIDWORD(P) & 0x04040404u) << 4)) * 0x00408102u) >> 24);
1454 flipped = FLIPPED_5_V[outflank_v] & 0x0004040404040400ULL;
1455
1456 outflank_h = OUTFLANK_2[(O >> 41) & 0x3f] & (P >> 40);
1457 flipped |= FLIPPED_2_H[outflank_h] & 0x0000ff0000000000ULL;
1458
1459 outflank_d7 = OUTFLANK_2[(((LODWORD(O) & 0x10204000u) + (HIDWORD(O) & 0x00020408u)) * 0x01010101u) >> 25]
1460 & ((((LODWORD(P) & 0x10204080u) + (HIDWORD(P) & 0x01020408u)) * 0x01010101u) >> 24);
1461 flipped |= FLIPPED_2_H[outflank_d7] & 0x0002040810204000ULL;
1462
1463 flipped |= (unsigned long long) (((HIDWORD(P) >> 9) | (LODWORD(P) >> 23)) & 0x00080002u & HIDWORD(O)) << 32;
1464
1465 return flipped;
1466}
1467
1475static unsigned long long flip_D6(const unsigned long long P, const unsigned long long O)
1476{
1477 unsigned int outflank_h, outflank_v, outflank_d7, outflank_d9;
1478 unsigned long long flipped;
1479
1480 outflank_v = OUTFLANK_5[(((LODWORD(O) & 0x08080800u) + ((HIDWORD(O) & 0x00080808u) << 4)) * 0x00204081u) >> 25]
1481 & ((((LODWORD(P) & 0x08080808u) + ((HIDWORD(P) & 0x08080808u) << 4)) * 0x00204081u) >> 24);
1482 flipped = FLIPPED_5_V[outflank_v] & 0x0008080808080800ULL;
1483
1484 outflank_h = OUTFLANK_3[(O >> 41) & 0x3f] & (P >> 40);
1485 flipped |= FLIPPED_3_H[outflank_h] & 0x0000ff0000000000ULL;
1486
1487 outflank_d7 = OUTFLANK_3[(((LODWORD(O) & 0x20400000u) + (HIDWORD(O) & 0x00040810u)) * 0x01010101u) >> 25]
1488 & ((((LODWORD(P) & 0x20408000u) + (HIDWORD(P) & 0x02040810u)) * 0x01010101u) >> 24);
1489 flipped |= FLIPPED_3_H[outflank_d7] & 0x0004081020400000ULL;
1490
1491 outflank_d9 = OUTFLANK_3[(((LODWORD(O) & 0x02000000u) + (HIDWORD(O) & 0x00100804u)) * 0x01010101u) >> 25]
1492 & ((((LODWORD(P) & 0x02010000u) + (HIDWORD(P) & 0x20100804u)) * 0x01010101u) >> 24);
1493 flipped |= FLIPPED_3_H[outflank_d9] & 0x0010080402000000ULL;
1494
1495 return flipped;
1496}
1497
1505static unsigned long long flip_E6(const unsigned long long P, const unsigned long long O)
1506{
1507 unsigned int outflank_h, outflank_v, outflank_d7, outflank_d9;
1508 unsigned long long flipped;
1509
1510 outflank_v = OUTFLANK_5[((((LODWORD(O) & 0x10101000u) >> 4) + (HIDWORD(O) & 0x00101010u)) * 0x01020408u) >> 25]
1511 & (((((LODWORD(P) & 0x10101010u) >> 4) + (HIDWORD(P) & 0x10101010u)) * 0x01020408u) >> 24);
1512 flipped = FLIPPED_5_V[outflank_v] & 0x0010101010101000ULL;
1513
1514 outflank_h = OUTFLANK_4[(O >> 41) & 0x3f] & (P >> 40);
1515 flipped |= FLIPPED_4_H[outflank_h] & 0x0000ff0000000000ULL;
1516
1517 outflank_d7 = OUTFLANK_4[(((LODWORD(O) & 0x40000000u) + (HIDWORD(O) & 0x00081020u)) * 0x01010101u) >> 25]
1518 & ((((LODWORD(P) & 0x40800000u) + (HIDWORD(P) & 0x04081020u)) * 0x01010101u) >> 24);
1519 flipped |= FLIPPED_4_H[outflank_d7] & 0x0008102040000000ULL;
1520
1521 outflank_d9 = OUTFLANK_4[(((LODWORD(O) & 0x04020100u) + (HIDWORD(O) & 0x00201008u)) * 0x01010101u) >> 25]
1522 & ((((LODWORD(P) & 0x04020100u) + (HIDWORD(P) & 0x40201008u)) * 0x01010101u) >> 24);
1523 flipped |= FLIPPED_4_H[outflank_d9] & 0x0020100804020100ULL;
1524
1525 return flipped;
1526}
1527
1535static unsigned long long flip_F6(const unsigned long long P, const unsigned long long O)
1536{
1537 unsigned int outflank_h, outflank_v, outflank_d9;
1538 unsigned long long flipped;
1539
1540 outflank_v = OUTFLANK_5[((((LODWORD(O) & 0x20202000u) >> 4) + (HIDWORD(O) & 0x00202020u)) * 0x00810204u) >> 25]
1541 & (((((LODWORD(P) & 0x20202020u) >> 4) + (HIDWORD(P) & 0x20202020u)) * 0x00810204u) >> 24);
1542 flipped = FLIPPED_5_V[outflank_v] & 0x0020202020202000ULL;
1543
1544 outflank_h = OUTFLANK_5[(O >> 41) & 0x3f] & (P >> 40);
1545 flipped |= FLIPPED_5_H[outflank_h] & 0x0000ff0000000000ULL;
1546
1547 flipped |= (unsigned long long) (((HIDWORD(P) >> 7) | (LODWORD(P) >> 25)) & 0x00100040u & HIDWORD(O)) << 32;
1548
1549 outflank_d9 = OUTFLANK_5[(((LODWORD(O) & 0x08040200u) + (HIDWORD(O) & 0x00402010u)) * 0x01010101u) >> 25]
1550 & ((((LODWORD(P) & 0x08040201u) + (HIDWORD(P) & 0x80402010u)) * 0x01010101u) >> 24);
1551 flipped |= FLIPPED_5_H[outflank_d9] & 0x0040201008040200ULL;
1552
1553 return flipped;
1554}
1555
1563static unsigned long long flip_G6(const unsigned long long P, const unsigned long long O)
1564{
1565 unsigned int outflank_h, outflank_v, flip_d9;
1566 unsigned long long flipped;
1567
1568 outflank_v = OUTFLANK_5[((((LODWORD(O) & 0x40404000u) >> 4) + (HIDWORD(O) & 0x00404040u)) * 0x00408102u) >> 25]
1569 & (((((LODWORD(P) & 0x40404040u) >> 4) + (HIDWORD(P) & 0x40404040u)) * 0x00408102u) >> 24);
1570 flipped = FLIPPED_5_V[outflank_v] & 0x0040404040404000ULL;
1571
1572 outflank_h = OUTFLANK_7[(O >> 40) & 0x3e] & (P >> 39);
1573 flipped |= (unsigned long long) ((-outflank_h) & 0x3e) << 40;
1574
1575 flipped |= (unsigned long long) ((HIDWORD(P) >> 7) & 0x00200000u & HIDWORD(O)) << 32;
1576
1577 flip_d9 = (unsigned int) (O >> 8);
1578 flip_d9 &= (flip_d9 >> 9) | 0x20000000u;
1579 flip_d9 &= ((flip_d9 & 0x20100000u) >> 18) | 0x20100000u;
1580 flipped |= (unsigned long long) (flip_d9 & -(flip_d9 & (LODWORD(P) << 1))) << 8;
1581
1582 return flipped;
1583}
1584
1592static unsigned long long flip_H6(const unsigned long long P, const unsigned long long O)
1593{
1594 unsigned int outflank_h, outflank_v, flip_d9;
1595 unsigned long long flipped;
1596
1597 outflank_v = OUTFLANK_5[((((LODWORD(O) & 0x80808000u) >> 4) + (HIDWORD(O) & 0x00808080u)) * 0x00204081u) >> 25]
1598 & (((((LODWORD(P) & 0x80808080u) >> 4) + (HIDWORD(P) & 0x80808080u)) * 0x00204081u) >> 24);
1599 flipped = FLIPPED_5_V[outflank_v] & 0x0080808080808000ULL;
1600
1601 outflank_h = OUTFLANK_7[(O >> 41) & 0x3f] & (P >> 40);
1602 flipped |= (unsigned long long) ((-outflank_h) & 0x3f) << 41;
1603
1604 flipped |= (unsigned long long) ((HIDWORD(P) >> 7) & 0x00400000u & HIDWORD(O)) << 32;
1605
1606 flip_d9 = (unsigned int) (O >> 8);
1607 flip_d9 &= (flip_d9 >> 9) | 0x40000000u;
1608 flip_d9 &= ((flip_d9 & 0x40200000u) >> 18) | 0x40200000u;
1609 flipped |= (unsigned long long) (flip_d9 & -(flip_d9 & (LODWORD(P) << 1))) << 8;
1610
1611 return flipped;
1612}
1613
1621static unsigned long long flip_A7(const unsigned long long P, const unsigned long long O)
1622{
1623 unsigned int outflank_v, outflank_h, outflank_d7;
1624 unsigned long long flipped;
1625
1626 outflank_v = ((((((LODWORD(O) & 0x01010100u) << 4) + (HIDWORD(O) & 0x00000101u)) * 0x08040201u) >> 24) + 4)
1627 & (((((LODWORD(P) & 0x01010101u) << 4) + (HIDWORD(P) & 0x00000001u)) * 0x08040201u) >> 24);
1628 flipped = (outflank_v * 0x0000003e1e0e0602ULL) & 0x0000010101010100ULL;
1629
1630 outflank_h = ((HIDWORD(O) & 0x007e0000u) + 0x00020000u) & HIDWORD(P);
1631 flipped |= (unsigned long long) ((outflank_h - (outflank_h >> 8)) & 0x007e0000u) << 32;
1632
1633 outflank_d7 = (((((LODWORD(O) & 0x08102000u) + (HIDWORD(O) & 0x00000204u)) * 0x01010101u) >> 24) + 2)
1634 & ((((LODWORD(P) & 0x08102040u) + (HIDWORD(P) & 0x00000004u)) * 0x01010101u) >> 24);
1635 flipped |= (outflank_d7 * 0x000000f8f0e0c080ULL) & 0x0000020408102000ULL;
1636
1637 return flipped;
1638}
1639
1647static unsigned long long flip_B7(const unsigned long long P, const unsigned long long O)
1648{
1649 unsigned int outflank_v, outflank_h, outflank_d7;
1650 unsigned long long flipped;
1651
1652 outflank_v = ((((((LODWORD(O) & 0x02020200u) << 3) + ((HIDWORD(O) & 0x00000202u) >> 1)) * 0x08040201u) >> 24) + 4)
1653 & (((((LODWORD(P) & 0x02020202u) << 3) + ((HIDWORD(P) & 0x00000002u) >> 1)) * 0x08040201u) >> 24);
1654 flipped = (outflank_v * 0x0000007c3c1c0c04ULL) & 0x0000020202020200ULL;
1655
1656 outflank_h = ((HIDWORD(O) & 0x007c0000u) + 0x00040000u) & HIDWORD(P);
1657 flipped |= (unsigned long long) ((outflank_h - (outflank_h >> 8)) & 0x007c0000u) << 32;
1658
1659 outflank_d7 = (((((LODWORD(O) & 0x10204000u) + (HIDWORD(O) & 0x00000408u)) * 0x01010101u) >> 25) + 2)
1660 & ((((LODWORD(P) & 0x10204080u) + (HIDWORD(P) & 0x00000008u)) * 0x01010101u) >> 25);
1661 flipped |= (outflank_d7 * 0x000001f1e1c18100ULL) & 0x0000040810204000ULL;
1662
1663 return flipped;
1664}
1665
1673static unsigned long long flip_C7(const unsigned long long P, const unsigned long long O)
1674{
1675 unsigned int outflank_h, outflank_v, outflank_d;
1676 unsigned long long flipped;
1677
1678 outflank_v = ((((((LODWORD(O) & 0x04040400u) << 2) + ((HIDWORD(O) & 0x00000404u) >> 2)) * 0x08040201u) >> 24) + 4)
1679 & (((((LODWORD(P) & 0x04040404u) << 2) + ((HIDWORD(P) & 0x00000004u) >> 2)) * 0x08040201u) >> 24);
1680 flipped = (outflank_v * 0x000000f878381808ULL) & 0x0000040404040400ULL;
1681
1682 outflank_h = OUTFLANK_2[(O >> 49) & 0x3f] & (P >> 48);
1683 flipped |= FLIPPED_2_H[outflank_h] & 0x00ff000000000000ULL;
1684
1685 outflank_d = OUTFLANK_2[(((HIDWORD(O) & 0x00000a10u) + (LODWORD(O) & 0x20400000u)) * 0x01010101u) >> 25]
1686 & ((((HIDWORD(P) & 0x00000a11u) + (LODWORD(P) & 0x20408000u)) * 0x01010101u) >> 24);
1687 flipped |= FLIPPED_2_H[outflank_d] & 0x00000a1020400000ULL; // A5-C7-H2
1688
1689 return flipped;
1690}
1691
1699static unsigned long long flip_D7(const unsigned long long P, const unsigned long long O)
1700{
1701 unsigned int outflank_h, outflank_v, outflank_d;
1702 unsigned long long flipped;
1703
1704 outflank_v = ((((((LODWORD(O) & 0x08080800u) << 1) + ((HIDWORD(O) & 0x00000808u) >> 3)) * 0x08040201u) >> 24) + 4)
1705 & (((((LODWORD(P) & 0x08080808u) << 1) + ((HIDWORD(P) & 0x00000008u) >> 3)) * 0x08040201u) >> 24);
1706 flipped = (outflank_v * 0x000001f0f0703010ULL) & 0x0000080808080800ULL;
1707
1708 outflank_h = OUTFLANK_3[(O >> 49) & 0x3f] & (P >> 48);
1709 flipped |= FLIPPED_3_H[outflank_h] & 0x00ff000000000000ULL;
1710
1711 outflank_d = OUTFLANK_3[(((HIDWORD(O) & 0x00001422u) + (LODWORD(O) & 0x40000000u)) * 0x01010101u) >> 25]
1712 & ((((HIDWORD(P) & 0x00001422u) + (LODWORD(P) & 0x41800000u)) * 0x01010101u) >> 24);
1713 flipped |= FLIPPED_3_H[outflank_d] & 0x0000142240000000ULL; // A4-D7-H3
1714
1715 return flipped;
1716}
1717
1725static unsigned long long flip_E7(const unsigned long long P, const unsigned long long O)
1726{
1727 unsigned int outflank_h, outflank_v, outflank_d;
1728 unsigned long long flipped;
1729
1730 outflank_v = (((((LODWORD(O) & 0x10101000u) + ((HIDWORD(O) & 0x00001010u) >> 4)) * 0x08040201u) >> 24) + 4)
1731 & ((((LODWORD(P) & 0x10101010u) + ((HIDWORD(P) & 0x00000010u) >> 4)) * 0x08040201u) >> 24);
1732 flipped = (outflank_v * 0x000003e1e0e06020ULL) & 0x0000101010101000ULL;
1733
1734 outflank_h = OUTFLANK_4[(O >> 49) & 0x3f] & (P >> 48);
1735 flipped |= FLIPPED_4_H[outflank_h] & 0x00ff000000000000ULL;
1736
1737 outflank_d = OUTFLANK_4[(((HIDWORD(O) & 0x00002844u) + (LODWORD(O) & 0x02000000u)) * 0x01010101u) >> 25]
1738 & ((((HIDWORD(P) & 0x00002844u) + (LODWORD(P) & 0x82010000u)) * 0x01010101u) >> 24);
1739 flipped |= FLIPPED_4_H[outflank_d] & 0x0000284402000000ULL; // A3-E7-H4
1740
1741 return flipped;
1742}
1743
1751static unsigned long long flip_F7(const unsigned long long P, const unsigned long long O)
1752{
1753 unsigned int outflank_h, outflank_v, outflank_d;
1754 unsigned long long flipped;
1755
1756 outflank_v = ((((((LODWORD(O) & 0x20202000u) >> 1) + ((HIDWORD(O) & 0x00002020u) >> 5)) * 0x08040201u) >> 24) + 4)
1757 & (((((LODWORD(P) & 0x20202020u) >> 1) + ((HIDWORD(P) & 0x00000020u) >> 5)) * 0x08040201u) >> 24);
1758 flipped = (outflank_v * 0x000007c3c1c0c040ULL) & 0x0000202020202000ULL;
1759
1760 outflank_h = OUTFLANK_5[(O >> 49) & 0x3f] & (P >> 48);
1761 flipped |= FLIPPED_5_H[outflank_h] & 0x00ff000000000000ULL;
1762
1763 outflank_d = OUTFLANK_5[(((HIDWORD(O) & 0x00005008u) + (LODWORD(O) & 0x04020000u)) * 0x01010101u) >> 25]
1764 & ((((HIDWORD(P) & 0x00005088u) + (LODWORD(P) & 0x04020100u)) * 0x01010101u) >> 24);
1765 flipped |= FLIPPED_5_H[outflank_d] & 0x0000500804020000ULL; // A2-F7-H5
1766
1767 return flipped;
1768}
1769
1777static unsigned long long flip_G7(const unsigned long long P, const unsigned long long O)
1778{
1779 unsigned int outflank_v, outflank_h, outflank_d9;
1780 unsigned long long flipped;
1781
1782 outflank_v = ((((((LODWORD(O) & 0x40404000u) >> 2) + ((HIDWORD(O) & 0x00004040u) >> 6)) * 0x08040201u) >> 24) + 4)
1783 & (((((LODWORD(P) & 0x40404040u) >> 2) + ((HIDWORD(P) & 0x00000040u) >> 6)) * 0x08040201u) >> 24);
1784 flipped = (outflank_v * 0x00000f8783818080ULL) & 0x0000404040404000ULL;
1785
1786 outflank_h = OUTFLANK_7[(O >> 48) & 0x3e] & (P >> 47);
1787 flipped |= (unsigned long long) ((-outflank_h) & 0x3e) << 48;
1788
1789 outflank_d9 = OUTFLANK_7[(((LODWORD(O) & 0x08040200u) + (HIDWORD(O) & 0x00002010u)) * 0x01010101u) >> 24]
1790 & ((((LODWORD(P) & 0x08040201u) + (HIDWORD(P) & 0x00000010u)) * 0x01010101u) >> 23);
1791 flipped |= (outflank_d9 * 0x00001f0f07030100ULL) & 0x0000201008040200ULL;
1792
1793 return flipped;
1794}
1795
1803static unsigned long long flip_H7(const unsigned long long P, const unsigned long long O)
1804{
1805 unsigned int outflank_h, outflank_v, outflank_d9;
1806 unsigned long long flipped;
1807
1808 outflank_v = ((((((LODWORD(O) & 0x80808000u) >> 3) + ((HIDWORD(O) & 0x00008080u) >> 7)) * 0x08040201u) >> 24) + 4)
1809 & (((((LODWORD(P) & 0x80808080u) >> 3) + ((HIDWORD(P) & 0x00000080u) >> 7)) * 0x08040201u) >> 24);
1810 flipped = (outflank_v * 0x00001f0f07030100ULL) & 0x0000808080808000ULL;
1811
1812 outflank_h = OUTFLANK_7[(O >> 49) & 0x3f] & (P >> 48);
1813 flipped |= (unsigned long long) ((-outflank_h) & 0x3f) << 49;
1814
1815 outflank_d9 = OUTFLANK_7[(((LODWORD(O) & 0x10080400u) + (HIDWORD(O) & 0x00004020u)) * 0x01010101u) >> 25]
1816 & ((((LODWORD(P) & 0x10080402u) + (HIDWORD(P) & 0x00000020u)) * 0x01010101u) >> 24);
1817 flipped |= (outflank_d9 * 0x00003e1e0e060200ULL) & 0x0000402010080400ULL;
1818
1819 return flipped;
1820}
1821
1829static unsigned long long flip_A8(const unsigned long long P, const unsigned long long O)
1830{
1831 unsigned int outflank_v, outflank_h, outflank_d7;
1832 unsigned long long flipped;
1833
1834 outflank_v = ((((((LODWORD(O) & 0x01010100u) << 4) + (HIDWORD(O) & 0x00010101u)) * 0x08040201u) >> 24) + 2)
1835 & (((((LODWORD(P) & 0x01010101u) << 4) + (HIDWORD(P) & 0x00000101u)) * 0x08040201u) >> 24);
1836 flipped = (outflank_v * 0x00007e3e1e0e0602ULL) & 0x0001010101010100ULL;
1837
1838 outflank_h = ((HIDWORD(O) & 0x7e000000u) + 0x02000000u) & HIDWORD(P);
1839 flipped |= (unsigned long long) ((outflank_h - (outflank_h >> 8)) & 0x7e000000u) << 32;
1840
1841 outflank_d7 = (((((LODWORD(O) & 0x10204000u) + (HIDWORD(O) & 0x00020408u)) * 0x01010101u) >> 24) + 2)
1842 & ((((LODWORD(P) & 0x10204080u) + (HIDWORD(P) & 0x00000408u)) * 0x01010101u) >> 24);
1843 flipped |= (outflank_d7 * 0x0000fcf8f0e0c080ULL) & 0x0002040810204000ULL;
1844
1845 return flipped;
1846}
1847
1855static unsigned long long flip_B8(const unsigned long long P, const unsigned long long O)
1856{
1857 unsigned int outflank_v, outflank_h, outflank_d7;
1858 unsigned long long flipped;
1859
1860 outflank_v = ((((((LODWORD(O) & 0x02020200u) << 3) + ((HIDWORD(O) & 0x00020202u) >> 1)) * 0x08040201u) >> 24) + 2)
1861 & (((((LODWORD(P) & 0x02020202u) << 3) + ((HIDWORD(P) & 0x00000202u) >> 1)) * 0x08040201u) >> 24);
1862 flipped = (outflank_v * 0x0000fc7c3c1c0c04ULL) & 0x0002020202020200ULL;
1863
1864 outflank_h = ((HIDWORD(O) & 0x7c000000u) + 0x04000000u) & HIDWORD(P);
1865 flipped |= (unsigned long long) ((outflank_h - (outflank_h >> 8)) & 0x7c000000u) << 32;
1866
1867 outflank_d7 = (((((LODWORD(O) & 0x20400000u) + (HIDWORD(O) & 0x00040810u)) * 0x01010101u) >> 25) + 2)
1868 & ((((LODWORD(P) & 0x20408000u) + (HIDWORD(P) & 0x00000810u)) * 0x01010101u) >> 25);
1869 flipped |= (outflank_d7 * 0x0001f9f1e1c18000ULL) & 0x0004081020400000ULL;
1870
1871 return flipped;
1872}
1873
1881static unsigned long long flip_C8(const unsigned long long P, const unsigned long long O)
1882{
1883 unsigned int outflank_h, outflank_v, outflank_d;
1884 unsigned long long flipped;
1885
1886 outflank_v = ((((((LODWORD(O) & 0x04040400u) << 2) + ((HIDWORD(O) & 0x00040404u) >> 2)) * 0x08040201u) >> 24) + 2)
1887 & (((((LODWORD(P) & 0x04040404u) << 2) + ((HIDWORD(P) & 0x00000404u) >> 2)) * 0x08040201u) >> 24);
1888 flipped = (outflank_v * 0x0001f8f878381808ULL) & 0x0004040404040400ULL;
1889
1890 outflank_h = OUTFLANK_2[(O >> 57) & 0x3f] & (P >> 56);
1891 flipped |= FLIPPED_2_H[outflank_h] & 0xff00000000000000ULL;
1892
1893 outflank_d = OUTFLANK_2[(((HIDWORD(O) & 0x000a1020u) + (LODWORD(O) & 0x40000000u)) * 0x01010101u) >> 25]
1894 & ((((HIDWORD(P) & 0x000a1120u) + (LODWORD(P) & 0x40800000u)) * 0x01010101u) >> 24);
1895 flipped |= FLIPPED_2_H[outflank_d] & 0x000a102040000000ULL; // A6-C8-H3
1896
1897 return flipped;
1898}
1899
1907static unsigned long long flip_D8(const unsigned long long P, const unsigned long long O)
1908{
1909 unsigned int outflank_h, outflank_v, outflank_d;
1910 unsigned long long flipped;
1911
1912 outflank_v = ((((((LODWORD(O) & 0x08080800u) << 1) + ((HIDWORD(O) & 0x00080808u) >> 3)) * 0x08040201u) >> 24) + 2)
1913 & (((((LODWORD(P) & 0x08080808u) << 1) + ((HIDWORD(P) & 0x00000808u) >> 3)) * 0x08040201u) >> 24);
1914 flipped = (outflank_v * 0x0003f1f0f0703010ULL) & 0x0008080808080800ULL;
1915
1916 outflank_h = OUTFLANK_3[(O >> 57) & 0x3f] & (P >> 56);
1917 flipped |= FLIPPED_3_H[outflank_h] & 0xff00000000000000ULL;
1918
1919 outflank_d = OUTFLANK_3[((HIDWORD(O) & 0x00142240u) * 0x01010101u) >> 25]
1920 & ((((HIDWORD(P) & 0x00142241u) + (LODWORD(P) & 0x80000000u)) * 0x01010101u) >> 24);
1921 flipped |= FLIPPED_3_H[outflank_d] & 0x0014224000000000ULL; // A5-D8-H4
1922
1923 return flipped;
1924}
1925
1933static unsigned long long flip_E8(const unsigned long long P, const unsigned long long O)
1934{
1935 unsigned int outflank_h, outflank_v, outflank_d;
1936 unsigned long long flipped;
1937
1938 outflank_v = (((((LODWORD(O) & 0x10101000u) + ((HIDWORD(O) & 0x00101010u) >> 4)) * 0x08040201u) >> 24) + 2)
1939 & ((((LODWORD(P) & 0x10101010u) + ((HIDWORD(P) & 0x00001010u) >> 4)) * 0x08040201u) >> 24);
1940 flipped = (outflank_v * 0x0007e3e1e0e06020ULL) & 0x0010101010101000ULL;
1941
1942 outflank_h = OUTFLANK_4[(O >> 57) & 0x3f] & (P >> 56);
1943 flipped |= FLIPPED_4_H[outflank_h] & 0xff00000000000000ULL;
1944
1945 outflank_d = OUTFLANK_4[((HIDWORD(O) & 0x00284402u) * 0x01010101u) >> 25]
1946 & ((((HIDWORD(P) & 0x00284482u) + (LODWORD(P) & 0x01000000u)) * 0x01010101u) >> 24);
1947 flipped |= FLIPPED_4_H[outflank_d] & 0x0028440200000000ULL; // A4-E8-H5
1948
1949 return flipped;
1950}
1951
1959static unsigned long long flip_F8(const unsigned long long P, const unsigned long long O)
1960{
1961 unsigned int outflank_h, outflank_v, outflank_d;
1962 unsigned long long flipped;
1963
1964 outflank_v = ((((((LODWORD(O) & 0x20202000u) >> 1) + ((HIDWORD(O) & 0x00202020u) >> 5)) * 0x08040201u) >> 24) + 2)
1965 & (((((LODWORD(P) & 0x20202020u) >> 1) + ((HIDWORD(P) & 0x00002020u) >> 5)) * 0x08040201u) >> 24);
1966 flipped = (outflank_v * 0x000fc7c3c1c0c040ULL) & 0x0020202020202000ULL;
1967
1968 outflank_h = OUTFLANK_5[(O >> 57) & 0x3f] & (P >> 56);
1969 flipped |= FLIPPED_5_H[outflank_h] & 0xff00000000000000ULL;
1970
1971 outflank_d = OUTFLANK_5[(((HIDWORD(O) & 0x00500804u) + (LODWORD(O) & 0x02000000u)) * 0x01010101u) >> 25]
1972 & ((((HIDWORD(P) & 0x00508804u) + (LODWORD(P) & 0x02010000u)) * 0x01010101u) >> 24);
1973 flipped |= FLIPPED_5_H[outflank_d] & 0x0050080402000000ULL; // A3-F8-H6
1974
1975 return flipped;
1976}
1977
1985static unsigned long long flip_G8(const unsigned long long P, const unsigned long long O)
1986{
1987 unsigned int outflank_h, outflank_v, outflank_d9;
1988 unsigned long long flipped;
1989
1990 outflank_v = ((((((LODWORD(O) & 0x40404000u) >> 2) + ((HIDWORD(O) & 0x00404040u) >> 6)) * 0x08040201u) >> 24) + 2)
1991 & (((((LODWORD(P) & 0x40404040u) >> 2) + ((HIDWORD(P) & 0x00004040u) >> 6)) * 0x08040201u) >> 24);
1992 flipped = (outflank_v * 0x001f8f8783818080ULL) & 0x0040404040404000ULL;
1993
1994 outflank_h = OUTFLANK_7[(O >> 56) & 0x3e] & (P >> 55);
1995 flipped |= (unsigned long long) ((-outflank_h) & 0x3e) << 56;
1996
1997 outflank_d9 = OUTFLANK_7[(((LODWORD(O) & 0x04020000u) + (HIDWORD(O) & 0x00201008u)) * 0x01010101u) >> 24]
1998 & ((((LODWORD(P) & 0x04020100u) + (HIDWORD(P) & 0x00001008u)) * 0x01010101u) >> 23);
1999 flipped |= (outflank_d9 * 0x001f0f0703010000ULL) & 0x0020100804020000ULL;
2000
2001 return flipped;
2002}
2003
2011static unsigned long long flip_H8(const unsigned long long P, const unsigned long long O)
2012{
2013 unsigned int outflank_h, outflank_v, outflank_d9;
2014 unsigned long long flipped;
2015
2016 outflank_v = ((((((LODWORD(O) & 0x80808000u) >> 3) + ((HIDWORD(O) & 0x00808080u) >> 7)) * 0x08040201u) >> 24) + 2)
2017 & (((((LODWORD(P) & 0x80808080u) >> 3) + ((HIDWORD(P) & 0x00008080u) >> 7)) * 0x08040201u) >> 24);
2018 flipped = (outflank_v * 0x003f1f0f07030100ULL) & 0x0080808080808000ULL;
2019
2020 outflank_h = OUTFLANK_7[(O >> 57) & 0x3f] & (P >> 56);
2021 flipped |= (unsigned long long) ((-outflank_h) & 0x3f) << 57;
2022
2023 outflank_d9 = OUTFLANK_7[(((LODWORD(O) & 0x08040200u) + (HIDWORD(O) & 0x00402010u)) * 0x01010101u) >> 25]
2024 & ((((LODWORD(P) & 0x08040201u) + (HIDWORD(P) & 0x00002010u)) * 0x01010101u) >> 24);
2025 flipped |= (outflank_d9 * 0x007e3e1e0e060200ULL) & 0x0040201008040200ULL;
2026
2027 return flipped;
2028}
2029
2037static unsigned long long flip_pass(const unsigned long long P, const unsigned long long O)
2038{
2039 (void) P; // useless code to shut-up compiler warning
2040 (void) O;
2041 return 0;
2042}
2043
2044
2065
static unsigned long long flip_A1(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:275
static unsigned long long flip_D3(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:765
static unsigned long long flip_E2(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:578
static unsigned long long flip_E7(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1725
static unsigned long long flip_F3(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:831
static unsigned long long flip_D5(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1241
static unsigned long long flip_pass(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:2037
static unsigned long long flip_G5(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1331
static unsigned long long flip_A2(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:477
static unsigned long long flip_B3(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:707
static unsigned long long flip_B4(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:946
static unsigned long long flip_E4(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1035
static unsigned long long flip_F7(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1751
static unsigned long long flip_C2(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:525
static unsigned long long flip_D8(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1907
static unsigned long long flip_G6(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1563
static const unsigned char OUTFLANK_2[64]
Definition flip_carry_32.c:62
static unsigned long long flip_A6(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1389
static const unsigned long long FLIPPED_2_V[130]
Definition flip_carry_32.c:186
static unsigned long long flip_A3(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:679
static const unsigned char OUTFLANK_7[64]
Definition flip_carry_32.c:97
static unsigned long long flip_B1(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:299
static unsigned long long flip_H6(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1592
static unsigned long long flip_B6(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1418
static unsigned long long flip_E1(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:376
static unsigned long long flip_A4(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:917
static unsigned long long flip_B5(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1182
unsigned long long(* flip[])(const unsigned long long, const unsigned long long)
Definition flip_carry_32.c:2046
static const unsigned long long FLIPPED_3_H[131]
Definition flip_carry_32.c:125
static const unsigned long long FLIPPED_5_H[137]
Definition flip_carry_32.c:165
static unsigned long long flip_B7(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1647
static unsigned long long flip_D7(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1699
static unsigned long long flip_C5(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1211
static unsigned long long flip_D6(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1475
static unsigned long long flip_C1(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:323
static const unsigned char OUTFLANK_3[64]
Definition flip_carry_32.c:69
static unsigned long long flip_H2(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:655
static unsigned long long flip_E3(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:798
static unsigned long long flip_E5(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1271
static unsigned long long flip_F2(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:605
static unsigned long long flip_C8(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1881
static unsigned long long flip_C3(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:735
static unsigned long long flip_G4(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1095
static const unsigned long long FLIPPED_4_V[133]
Definition flip_carry_32.c:226
static unsigned long long flip_D2(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:551
static unsigned long long flip_H3(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:889
static unsigned long long flip_H4(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1124
#define LODWORD(l)
Definition flip_carry_32.c:44
static unsigned long long flip_F8(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1959
static unsigned long long flip_D1(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:349
static unsigned long long flip_H1(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:453
static unsigned long long flip_F1(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:403
static const unsigned char OUTFLANK_5[64]
Definition flip_carry_32.c:83
static unsigned long long flip_A5(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1153
static unsigned long long flip_F6(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1535
static unsigned long long flip_B2(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:501
static unsigned long long flip_G1(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:429
static const unsigned char OUTFLANK_4[64]
Definition flip_carry_32.c:76
#define HIDWORD(l)
Definition flip_carry_32.c:45
static unsigned long long flip_F5(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1301
static unsigned long long flip_G3(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:861
static unsigned long long flip_G8(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1985
static const unsigned long long FLIPPED_3_V[131]
Definition flip_carry_32.c:206
static unsigned long long flip_C4(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:975
static const unsigned long long FLIPPED_2_H[130]
Definition flip_carry_32.c:105
static unsigned long long flip_H7(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1803
static unsigned long long flip_H8(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:2011
static unsigned long long flip_H5(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1360
static unsigned long long flip_G2(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:631
static unsigned long long flip_A8(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1829
static unsigned long long flip_B8(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1855
static unsigned long long flip_C6(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1447
static unsigned long long flip_C7(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1673
static unsigned long long flip_D4(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1005
static const unsigned long long FLIPPED_4_H[133]
Definition flip_carry_32.c:145
static unsigned long long flip_A7(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1621
static unsigned long long flip_F4(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1065
static unsigned long long flip_G7(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1777
static const unsigned long long FLIPPED_5_V[137]
Definition flip_carry_32.c:246
static unsigned long long flip_E8(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1933
static unsigned long long flip_E6(const unsigned long long P, const unsigned long long O)
Definition flip_carry_32.c:1505
uint64 P(uint64 mask, const uint64 flat)
Definition generate_flip.c:176