(Handler handler)
| 72 | } |
| 73 | |
| 74 | public static void createPrun(Handler handler) { |
| 75 | Edge3 e = new Edge3(); |
| 76 | Edge3 f = new Edge3(); |
| 77 | Edge3 g = new Edge3(); |
| 78 | |
| 79 | Arrays.fill(eprun, -1); |
| 80 | int depth = 0; |
| 81 | int done = 1; |
| 82 | setPruning(eprun, 0, 0); |
| 83 | |
| 84 | while (done != N_EPRUN) { |
| 85 | boolean inv = depth > 9; |
| 86 | int depm3 = depth % 3; |
| 87 | int dep1m3 = (depth + 1) % 3; |
| 88 | int find = inv ? 0x3 : depm3; |
| 89 | int chk = inv ? depm3 : 0x3; |
| 90 | |
| 91 | if (depth >= MAX_DEPTH - 1) { |
| 92 | break; |
| 93 | } |
| 94 | |
| 95 | for (int i_=0; i_<N_EPRUN; i_+=16) { |
| 96 | int val = eprun[i_ >> 4]; |
| 97 | if (!inv && val == -1) { |
| 98 | continue; |
| 99 | } |
| 100 | for (int i=i_, end=i_+16; i<end; i++, val>>=2) { |
| 101 | if ((val & 3) != find) { |
| 102 | continue; |
| 103 | } |
| 104 | int symcord1 = i / N_RAW; |
| 105 | int cord1 = sym2raw[symcord1]; |
| 106 | int cord2 = i % N_RAW; |
| 107 | e.set(cord1 * N_RAW + cord2); |
| 108 | |
| 109 | for (int m=0; m<17; m++) { |
| 110 | int cord1x = getmvrot(e.edge, m<<3, 4); |
| 111 | int symcord1x = raw2sym[cord1x]; |
| 112 | int symx = symcord1x & 0x7; |
| 113 | symcord1x >>= 3; |
| 114 | int cord2x = getmvrot(e.edge, m<<3|symx, 10) % N_RAW; |
| 115 | int idx = symcord1x * N_RAW + cord2x; |
| 116 | if (getPruning(eprun, idx) != chk) { |
| 117 | continue; |
| 118 | } |
| 119 | setPruning(eprun, inv ? i : idx, dep1m3); |
| 120 | done++; |
| 121 | if ((done % 448090) == 179236) { |
| 122 | Message msg = new Message(); |
| 123 | msg.what = 25; |
| 124 | msg.obj = done; |
| 125 | handler.sendMessage(msg); |
| 126 | } |
| 127 | if (inv) { |
| 128 | break; |
| 129 | } |
| 130 | char symState = symstate[symcord1x]; |
| 131 | if (symState == 1) { |
no test coverage detected